summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2010-05-19 08:58:23 +0000
committer Eric Hameleers <alien@slackware.com>2018-05-31 22:43:05 +0200
commitb76270bf9e6dd375e495fec92140a79a79415d27 (patch)
tree3dbed78b2279bf9f14207a16dc634b90995cbd40 /source
parent5a12e7c134274dba706667107d10d231517d3e05 (diff)
downloadcurrent-b76270bf9e6dd375e495fec92140a79a79415d27.tar.gz
current-b76270bf9e6dd375e495fec92140a79a79415d27.tar.xz
Slackware 13.1slackware-13.1
Wed May 19 08:58:23 UTC 2010 Slackware 13.1 x86_64 stable is released! Lots of thanks are due -- see the RELEASE_NOTES and the rest of the ChangeLog for credits. The ISOs are on their way to replication, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. We are taking pre-orders now at store.slackware.com, and offering a discount if you sign up for a subscription. Consider picking up a copy to help support the project. Thanks again to the Slackware community for testing, contributing, and generally holding us to a high level of quality. :-) Enjoy!
Diffstat (limited to 'source')
-rwxr-xr-xsource/a/aaa_base/aaa_base.SlackBuild15
-rw-r--r--source/a/aaa_base/slackware-version2
-rwxr-xr-xsource/a/aaa_elflibs/aaa_elflibs.SlackBuild17
-rw-r--r--source/a/aaa_elflibs/symlinks-to-tracked-libs11
-rwxr-xr-xsource/a/acpid/acpid.SlackBuild59
-rw-r--r--source/a/acpid/doinst.sh6
-rw-r--r--source/a/acpid/rc.acpid6
-rw-r--r--source/a/bash/bash-4.1-patches/bash41-00148
-rw-r--r--source/a/bash/bash-4.1-patches/bash41-00265
-rw-r--r--source/a/bash/bash-4.1-patches/bash41-00348
-rw-r--r--source/a/bash/bash-4.1-patches/bash41-00447
-rw-r--r--source/a/bash/bash-4.1-patches/bash41-00556
-rw-r--r--source/a/bash/bash-4.1-patches/bash41-00676
-rw-r--r--source/a/bash/bash-4.1-patches/bash41-00747
-rwxr-xr-xsource/a/bash/bash.SlackBuild131
-rw-r--r--source/a/bash/doinst.sh6
-rw-r--r--source/a/bash/patches/bash31-001104
-rw-r--r--source/a/bash/patches/bash31-002239
-rw-r--r--source/a/bash/patches/bash31-00347
-rw-r--r--source/a/bash/patches/bash31-00448
-rw-r--r--source/a/bash/patches/bash31-00554
-rw-r--r--source/a/bash/patches/bash31-00658
-rw-r--r--source/a/bash/patches/bash31-007121
-rw-r--r--source/a/bash/patches/bash31-00851
-rw-r--r--source/a/bash/patches/bash31-00966
-rw-r--r--source/a/bash/patches/bash31-01054
-rw-r--r--source/a/bash/patches/bash31-01147
-rw-r--r--source/a/bash/patches/bash31-01247
-rw-r--r--source/a/bash/patches/bash31-01344
-rw-r--r--source/a/bash/patches/bash31-014105
-rw-r--r--source/a/bash/patches/bash31-015106
-rw-r--r--source/a/bash/patches/bash31-01651
-rw-r--r--source/a/bash/patches/bash31-017131
-rw-r--r--source/a/coreutils/coreutils-dircolors.csh6
-rw-r--r--source/a/coreutils/coreutils-dircolors.sh47
-rwxr-xr-xsource/a/coreutils/coreutils.SlackBuild69
-rw-r--r--source/a/coreutils/coreutils.uname.diff183
-rw-r--r--source/a/cpufrequtils/cpufrequtils-007.tar.bz2.sign8
-rwxr-xr-xsource/a/cpufrequtils/cpufrequtils.SlackBuild108
-rw-r--r--source/a/cpufrequtils/slack-desc19
-rwxr-xr-xsource/a/cryptsetup/cryptsetup.SlackBuild106
-rwxr-xr-xsource/a/cups/cups.SlackBuild42
-rw-r--r--source/a/cups/cups.firefox.desktop.diff11
-rw-r--r--source/a/cups/doinst.sh6
-rw-r--r--source/a/cups/usb-backend-both-usblp-and-libusb.dpatch574
-rwxr-xr-xsource/a/cxxlibs/cxxlibs.SlackBuild16
-rw-r--r--source/a/dbus/dbus-1.2.x-allow_root_globally.diff22
-rwxr-xr-xsource/a/dbus/dbus.SlackBuild46
-rw-r--r--source/a/dcron/crontab.c.O_EXCL.diff11
-rw-r--r--source/a/dcron/crontab.root22
-rw-r--r--source/a/dcron/dcron-2.3.3.crontab.diff419
-rw-r--r--source/a/dcron/dcron-2.3.3.diff40
-rw-r--r--source/a/dcron/dcron-2.3.3.diff2477
-rw-r--r--source/a/dcron/dcron-2.3.3.diff311
-rw-r--r--source/a/dcron/dcron-2.3.3.lsm17
-rw-r--r--source/a/dcron/dcron-2.3.3.version.diff11
-rwxr-xr-xsource/a/dcron/dcron.SlackBuild108
-rw-r--r--source/a/dcron/dcron.fork.diff11
-rw-r--r--source/a/dcron/dcron.manpage.paths.diff65
-rw-r--r--source/a/dcron/dcron.tmpdir.diff11
-rw-r--r--source/a/dcron/defs.h.TMPDIR.diff11
-rw-r--r--source/a/dcron/doinst.sh5
-rw-r--r--source/a/dcron/run-parts2
-rw-r--r--source/a/device-mapper/64-device-mapper.rules37
-rwxr-xr-xsource/a/device-mapper/device-mapper.SlackBuild115
-rw-r--r--source/a/device-mapper/slack-desc20
-rwxr-xr-xsource/a/e2fsprogs/e2fsprogs.SlackBuild33
-rwxr-xr-xsource/a/eject/eject.SlackBuild21
-rw-r--r--source/a/eject/eject.spaces.diff51
-rwxr-xr-xsource/a/elvis/elvis.SlackBuild18
-rw-r--r--source/a/elvis/elvis.ref.c.getline.diff47
-rwxr-xr-xsource/a/etc/etc.SlackBuild17
-rwxr-xr-xsource/a/file/file.SlackBuild38
-rwxr-xr-xsource/a/gawk/gawk.SlackBuild71
-rwxr-xr-xsource/a/gettext/gettext-tools.SlackBuild18
-rwxr-xr-xsource/a/gettext/gettext.SlackBuild18
-rwxr-xr-xsource/a/gzip/gzip.SlackBuild40
-rwxr-xr-xsource/a/hdparm/hdparm.SlackBuild2
-rwxr-xr-xsource/a/inotify-tools/inotify-tools.SlackBuild31
-rwxr-xr-xsource/a/kbd/kbd.SlackBuild71
-rw-r--r--source/a/kbd/setconsolefont6
-rw-r--r--source/a/kbd/sources/kbd-1.15-po.patch31
-rw-r--r--source/a/kbd/sources/kbd-1.15-quiet_doc.patch34
-rw-r--r--source/a/kbd/sources/kbd-1.15-sparc.patch97
-rw-r--r--source/a/kbd/sources/kbd-1.15.2-po.patch14
-rw-r--r--source/a/kbd/sources/kbd-1.15.2.tar.bz2.sign8
-rw-r--r--source/a/kbd/sources/kbd-1.15.tar.bz2.sign8
-rwxr-xr-xsource/a/less/less.SlackBuild31
-rw-r--r--source/a/less/lesspipe.sh1
-rwxr-xr-xsource/a/lilo/lilo.SlackBuild18
-rw-r--r--source/a/lilo/lilo.use_major_minor_instead_lvm_name.diff47
-rw-r--r--source/a/lilo/slack.bmpbin15754 -> 14174 bytes
-rw-r--r--source/a/logrotate/doinst.sh13
-rwxr-xr-xsource/a/logrotate/logrotate.SlackBuild73
-rw-r--r--source/a/logrotate/logrotate.conf50
-rw-r--r--source/a/logrotate/logrotate.cron3
-rw-r--r--source/a/logrotate/logrotate.slackware.diff63
-rw-r--r--source/a/logrotate/slack-desc2
-rwxr-xr-xsource/a/lvm2/lvm2.SlackBuild69
-rw-r--r--source/a/mdadm/mdadm-2.6.4.tar.bz2.sign8
-rw-r--r--source/a/mdadm/mdadm-2.6.9.tar.bz2.sign8
-rwxr-xr-xsource/a/mdadm/mdadm.SlackBuild21
-rw-r--r--source/a/mdadm/mdadm.static.diff11
-rw-r--r--source/a/mdadm/mdadm.static.small.diff20
-rwxr-xr-xsource/a/minicom/minicom.SlackBuild37
-rw-r--r--source/a/mkinitrd/README.initrd17
-rw-r--r--source/a/mkinitrd/archive/busybox-1.7.2.no-gc-sections.diff11
-rw-r--r--source/a/mkinitrd/archive/busybox-1.7.2.remove_warning.diff20
-rw-r--r--source/a/mkinitrd/archive/busybox-1.7.2.tar.bz2.sign18
-rw-r--r--source/a/mkinitrd/archive/busybox-dot-config.1.11.2855
-rw-r--r--source/a/mkinitrd/archive/busybox-dot-config.1.12.0857
-rw-r--r--source/a/mkinitrd/archive/busybox-dot-config.1.12.1857
-rw-r--r--source/a/mkinitrd/archive/busybox-dot-config.1.7.2753
-rw-r--r--source/a/mkinitrd/busybox-1.12.1_inotify.diff11
-rw-r--r--source/a/mkinitrd/busybox-dot-config208
-rwxr-xr-xsource/a/mkinitrd/init262
-rw-r--r--source/a/mkinitrd/mkinitrd230
-rw-r--r--source/a/mkinitrd/mkinitrd.896
-rwxr-xr-xsource/a/mkinitrd/mkinitrd.SlackBuild28
-rw-r--r--source/a/mkinitrd/mkinitrd.conf.555
-rw-r--r--source/a/mkinitrd/mkinitrd.conf.sample8
-rw-r--r--source/a/mkinitrd/mkinitrd_command_generator.sh11
-rw-r--r--source/a/mkinitrd/mkinitrd_kernelcheck.diff15
-rw-r--r--source/a/module-init-tools/doinst.sh22
-rw-r--r--source/a/module-init-tools/modprobe.favor.etc.modprobe.d.diff27
-rw-r--r--source/a/module-init-tools/modprobe.ignore_some_suffixes.diff54
-rw-r--r--source/a/module-init-tools/modprobe.no_sys_check.diff51
-rw-r--r--source/a/module-init-tools/modprobe.quit.whining.about.modprobe.conf.diff15
-rwxr-xr-xsource/a/module-init-tools/module-init-tools.SlackBuild71
-rw-r--r--source/a/module-init-tools/slack-desc2
-rw-r--r--source/a/ntfs-3g/10-ntfs-3g-policy.fdi35
-rwxr-xr-xsource/a/ntfs-3g/ntfs-3g.SlackBuild47
-rwxr-xr-xsource/a/pciutils/pciutils.SlackBuild21
-rwxr-xr-xsource/a/pkgtools/pkgtools.SlackBuild6
-rw-r--r--source/a/pkgtools/scripts/explodepkg2
-rw-r--r--source/a/pkgtools/scripts/pkgtool12
-rw-r--r--source/a/pkgtools/scripts/upgradepkg16
-rw-r--r--source/a/rpm2tgz/patches/0001-fix-d-handling.patch26
-rw-r--r--source/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch34
-rw-r--r--source/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch29
-rw-r--r--source/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch29
-rw-r--r--source/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch47
-rw-r--r--source/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch45
-rw-r--r--source/a/rpm2tgz/rpm2targz117
-rwxr-xr-xsource/a/rpm2tgz/rpm2tgz.SlackBuild37
-rw-r--r--source/a/rpm2tgz/rpmoffset.c1
-rwxr-xr-xsource/a/sdparm/sdparm.SlackBuild47
-rwxr-xr-xsource/a/sed/sed.SlackBuild66
-rw-r--r--source/a/shadow/adduser13
-rw-r--r--source/a/shadow/doinst.sh17
-rw-r--r--source/a/shadow/login.defs387
-rw-r--r--source/a/shadow/shadow-4.0.3.x86_64.diff166
-rwxr-xr-xsource/a/shadow/shadow.SlackBuild199
-rw-r--r--source/a/shadow/shadow.gcc34.diff11
-rw-r--r--source/a/shadow/shadow.login.defs.diff67
-rw-r--r--source/a/shadow/shadow.newgrp.getlogin21
-rw-r--r--source/a/shadow/shadow.newgrp.nopam18
-rw-r--r--source/a/shadow/shadow.remove.obsolete.options.diff78
-rw-r--r--source/a/shadow/shadow.shadowconfig.diff49
-rw-r--r--source/a/shadow/useradd8
-rwxr-xr-xsource/a/smartmontools/smartmontools.SlackBuild43
-rw-r--r--source/a/syslinux/syslinux-3.52.tar.bz2.sign8
-rw-r--r--source/a/syslinux/syslinux-3.84.tar.bz2.sign8
-rwxr-xr-xsource/a/syslinux/syslinux.SlackBuild45
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.68
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.M4
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.S24
-rwxr-xr-xsource/a/sysvinit-scripts/sysvinit-scripts.SlackBuild4
-rw-r--r--source/a/tar/tar-1.22-support_txz.diff11
-rw-r--r--source/a/tar/tar-1.23-support_txz.diff11
-rwxr-xr-xsource/a/tar/tar.SlackBuild28
-rw-r--r--source/a/tar/tar.nolonezero.diff29
-rw-r--r--source/a/tar/tar.norecordsizespam.diff13
-rw-r--r--source/a/udev/config/rc.d/rc.udev.new100
-rw-r--r--source/a/udev/config/rules.d/59-non-libata-devices.rules44
-rw-r--r--source/a/udev/config/rules.d/65-permissions.rules11
-rw-r--r--source/a/udev/rule_generator.diff14
-rw-r--r--source/a/udev/udev-141.tar.bz2.sign8
-rw-r--r--source/a/udev/udev-153.tar.sign8
-rwxr-xr-xsource/a/udev/udev.SlackBuild71
-rw-r--r--source/a/usb_modeswitch/doinst.sh14
-rw-r--r--source/a/usb_modeswitch/slack-desc19
-rwxr-xr-xsource/a/usb_modeswitch/usb_modeswitch.SlackBuild122
-rwxr-xr-xsource/a/usbutils/usbutils.SlackBuild34
-rw-r--r--source/a/util-linux-ng/setserial-undef_TIOCGHAYESESP.diff13
-rwxr-xr-xsource/a/util-linux-ng/util-linux-ng.SlackBuild52
-rwxr-xr-xsource/a/xfsprogs/xfsprogs.SlackBuild35
-rwxr-xr-xsource/a/xz/xz.SlackBuild14
-rwxr-xr-xsource/ap/alsa-utils/alsa-utils.SlackBuild50
-rw-r--r--source/ap/alsa-utils/alsa-utils.alsaconf.diff50
-rwxr-xr-xsource/ap/ash/ash.SlackBuild18
-rw-r--r--source/ap/ash/patches/ash-hetio.patch2
-rwxr-xr-xsource/ap/cdrtools/cdrtools.SlackBuild79
-rw-r--r--source/ap/cdrtools/doinst.sh7
-rwxr-xr-xsource/ap/cupsddk/cupsddk.SlackBuild87
-rw-r--r--source/ap/cupsddk/slack-desc19
-rw-r--r--source/ap/diffutils/diffutils-sdiff-no-waitpid.patch9
-rwxr-xr-xsource/ap/diffutils/diffutils.SlackBuild53
-rwxr-xr-xsource/ap/foomatic-filters/foomatic-filters.SlackBuild28
-rw-r--r--source/ap/ghostscript/ghostscript-pdf2dsc.patch12
-rwxr-xr-xsource/ap/ghostscript/ghostscript.SlackBuild29
-rwxr-xr-xsource/ap/gphoto2/gphoto2.SlackBuild42
-rwxr-xr-xsource/ap/gutenprint/gutenprint.SlackBuild31
-rwxr-xr-xsource/ap/hplip/hplip.SlackBuild36
-rw-r--r--source/ap/hplip/hplip.prevent_segfault.diff23
-rwxr-xr-xsource/ap/jed/jed.SlackBuild27
-rw-r--r--source/ap/jed/jed.mouse.diff17
-rw-r--r--source/ap/jed/jed.multibyte.diff11
-rw-r--r--source/ap/linuxdoc-tools/ChangeLog.txt27
-rwxr-xr-xsource/ap/linuxdoc-tools/arm/build4
-rwxr-xr-xsource/ap/linuxdoc-tools/linuxdoc-tools.build146
-rwxr-xr-xsource/ap/linuxdoc-tools/postbuildfixes.sh8
-rw-r--r--source/ap/linuxdoc-tools/sources/docbook_4.5-4.diff1589
-rw-r--r--source/ap/linuxdoc-tools/sources/gtkdoc-1.13-fixref.patch69
-rw-r--r--source/ap/linuxdoc-tools/sources/linuxdoc-tools.lib64.diff10
-rwxr-xr-xsource/ap/linuxdoc-tools/sources/source.download50
-rwxr-xr-xsource/ap/linuxdoc-tools/trackbuild.linuxdoc-tools15
-rwxr-xr-xsource/ap/lm_sensors/lm_sensors.SlackBuild17
-rwxr-xr-xsource/ap/lsof/lsof.SlackBuild28
-rwxr-xr-xsource/ap/man-pages/man-pages.SlackBuild9
-rwxr-xr-xsource/ap/mc/mc.SlackBuild21
-rwxr-xr-xsource/ap/mpg123/mpg123.SlackBuild157
-rw-r--r--source/ap/mpg123/slack-desc19
-rwxr-xr-xsource/ap/mpg321/mpg321.SlackBuild77
-rw-r--r--source/ap/mpg321/slack-desc19
-rw-r--r--source/ap/mysql/mirror-url1
-rwxr-xr-xsource/ap/mysql/mysql-embedded.build26
-rwxr-xr-xsource/ap/mysql/mysql.SlackBuild85
-rwxr-xr-xsource/ap/nano/nano.SlackBuild29
-rw-r--r--source/ap/pm-utils/README.SLACKWARE42
-rwxr-xr-xsource/ap/pm-utils/pm-utils.SlackBuild65
-rwxr-xr-xsource/ap/powertop/powertop.SlackBuild101
-rw-r--r--source/ap/powertop/slack-desc19
-rwxr-xr-xsource/ap/radeontool/radeontool.SlackBuild39
-rw-r--r--source/ap/radeontool/radeontool.c.diff12
-rw-r--r--source/ap/radeontool/radeontool.info8
-rwxr-xr-xsource/ap/rpm/rpm.SlackBuild17
-rwxr-xr-xsource/ap/sox/sox.SlackBuild26
-rwxr-xr-xsource/ap/sqlite/sqlite.SlackBuild47
-rwxr-xr-xsource/ap/sudo/sudo.SlackBuild45
-rw-r--r--source/ap/sysstat/doinst.sh34
-rw-r--r--source/ap/sysstat/slack-desc10
-rwxr-xr-xsource/ap/sysstat/sysstat.SlackBuild111
-rw-r--r--source/ap/sysstat/sysstat.etc.sysstat.diff46
-rw-r--r--source/ap/sysstat/sysstat.prefix.usr.diff42
-rw-r--r--source/ap/sysstat/sysstat.var.run.diff28
-rw-r--r--source/ap/vim/patches/7.2.24653
-rw-r--r--source/ap/vim/patches/7.2.24786
-rw-r--r--source/ap/vim/patches/7.2.248158
-rw-r--r--source/ap/vim/patches/7.2.24947
-rw-r--r--source/ap/vim/patches/7.2.25055
-rw-r--r--source/ap/vim/patches/7.2.25171
-rw-r--r--source/ap/vim/patches/7.2.25251
-rw-r--r--source/ap/vim/patches/7.2.253143
-rw-r--r--source/ap/vim/patches/7.2.25452
-rw-r--r--source/ap/vim/patches/7.2.25571
-rw-r--r--source/ap/vim/patches/7.2.25659
-rw-r--r--source/ap/vim/patches/7.2.25761
-rw-r--r--source/ap/vim/patches/7.2.25874
-rw-r--r--source/ap/vim/patches/7.2.259160
-rw-r--r--source/ap/vim/patches/7.2.260155
-rw-r--r--source/ap/vim/patches/7.2.26183
-rw-r--r--source/ap/vim/patches/7.2.262189
-rw-r--r--source/ap/vim/patches/7.2.26387
-rw-r--r--source/ap/vim/patches/7.2.264168
-rw-r--r--source/ap/vim/patches/7.2.26556
-rw-r--r--source/ap/vim/patches/7.2.266244
-rw-r--r--source/ap/vim/patches/7.2.26747
-rw-r--r--source/ap/vim/patches/7.2.26880
-rw-r--r--source/ap/vim/patches/7.2.269261
-rw-r--r--source/ap/vim/patches/7.2.27072
-rw-r--r--source/ap/vim/patches/7.2.27192
-rw-r--r--source/ap/vim/patches/7.2.27282
-rw-r--r--source/ap/vim/patches/7.2.273130
-rw-r--r--source/ap/vim/patches/7.2.274130
-rw-r--r--source/ap/vim/patches/7.2.27595
-rw-r--r--source/ap/vim/patches/7.2.27663
-rw-r--r--source/ap/vim/patches/7.2.27766
-rw-r--r--source/ap/vim/patches/7.2.27874
-rw-r--r--source/ap/vim/patches/7.2.279120
-rw-r--r--source/ap/vim/patches/7.2.280251
-rw-r--r--source/ap/vim/patches/7.2.28181
-rw-r--r--source/ap/vim/patches/7.2.28247
-rw-r--r--source/ap/vim/patches/7.2.28373
-rw-r--r--source/ap/vim/patches/7.2.28452
-rw-r--r--source/ap/vim/patches/7.2.28556
-rw-r--r--source/ap/vim/patches/7.2.286227
-rw-r--r--source/ap/vim/patches/7.2.28754
-rw-r--r--source/ap/vim/patches/7.2.28852
-rw-r--r--source/ap/vim/patches/7.2.289120
-rw-r--r--source/ap/vim/patches/7.2.290157
-rw-r--r--source/ap/vim/patches/7.2.29153
-rw-r--r--source/ap/vim/patches/7.2.29255
-rw-r--r--source/ap/vim/patches/7.2.29366
-rw-r--r--source/ap/vim/patches/7.2.294285
-rw-r--r--source/ap/vim/patches/7.2.295142
-rw-r--r--source/ap/vim/patches/7.2.29653
-rw-r--r--source/ap/vim/patches/7.2.29770
-rw-r--r--source/ap/vim/patches/7.2.29848
-rw-r--r--source/ap/vim/patches/7.2.29954
-rw-r--r--source/ap/vim/patches/7.2.300201
-rw-r--r--source/ap/vim/patches/7.2.301777
-rw-r--r--source/ap/vim/patches/7.2.302140
-rw-r--r--source/ap/vim/patches/7.2.30370
-rw-r--r--source/ap/vim/patches/7.2.30458
-rw-r--r--source/ap/vim/patches/7.2.305105
-rw-r--r--source/ap/vim/patches/7.2.30648
-rw-r--r--source/ap/vim/patches/7.2.307181
-rw-r--r--source/ap/vim/patches/7.2.308182
-rw-r--r--source/ap/vim/patches/7.2.30948
-rw-r--r--source/ap/vim/patches/7.2.31063
-rw-r--r--source/ap/vim/patches/7.2.31152
-rw-r--r--source/ap/vim/patches/7.2.312312
-rw-r--r--source/ap/vim/patches/7.2.313117
-rw-r--r--source/ap/vim/patches/7.2.31456
-rw-r--r--source/ap/vim/patches/7.2.315134
-rw-r--r--source/ap/vim/patches/7.2.31683
-rw-r--r--source/ap/vim/patches/7.2.317148
-rw-r--r--source/ap/vim/patches/7.2.31891
-rw-r--r--source/ap/vim/patches/7.2.31963
-rw-r--r--source/ap/vim/patches/7.2.320199
-rw-r--r--source/ap/vim/patches/7.2.32159
-rw-r--r--source/ap/vim/patches/7.2.32249
-rw-r--r--source/ap/vim/patches/7.2.32395
-rw-r--r--source/ap/vim/patches/7.2.32466
-rw-r--r--source/ap/vim/patches/7.2.32552
-rw-r--r--source/ap/vim/patches/7.2.32654
-rw-r--r--source/ap/vim/patches/7.2.327323
-rw-r--r--source/ap/vim/patches/7.2.32852
-rw-r--r--source/ap/vim/patches/7.2.32948
-rw-r--r--source/ap/vim/patches/7.2.3301531
-rw-r--r--source/ap/vim/patches/7.2.33147
-rw-r--r--source/ap/vim/patches/7.2.332101
-rw-r--r--source/ap/vim/patches/7.2.333371
-rw-r--r--source/ap/vim/patches/7.2.334347
-rw-r--r--source/ap/vim/patches/7.2.335103
-rw-r--r--source/ap/vim/patches/7.2.336841
-rw-r--r--source/ap/vim/patches/7.2.337112
-rw-r--r--source/ap/vim/patches/7.2.338129
-rw-r--r--source/ap/vim/patches/7.2.33978
-rw-r--r--source/ap/vim/patches/7.2.34054
-rw-r--r--source/ap/vim/patches/7.2.34169
-rw-r--r--source/ap/vim/patches/7.2.34295
-rw-r--r--source/ap/vim/patches/7.2.34351
-rw-r--r--source/ap/vim/patches/7.2.34460
-rw-r--r--source/ap/vim/patches/7.2.34547
-rw-r--r--source/ap/vim/patches/7.2.346110
-rw-r--r--source/ap/vim/patches/7.2.347138
-rw-r--r--source/ap/vim/patches/7.2.348254
-rw-r--r--source/ap/vim/patches/7.2.34953
-rw-r--r--source/ap/vim/patches/7.2.35086
-rw-r--r--source/ap/vim/patches/7.2.35178
-rw-r--r--source/ap/vim/patches/7.2.35262
-rw-r--r--source/ap/vim/patches/7.2.353173
-rw-r--r--source/ap/vim/patches/7.2.35478
-rw-r--r--source/ap/vim/patches/7.2.35588
-rw-r--r--source/ap/vim/patches/7.2.35669
-rw-r--r--source/ap/vim/patches/7.2.35749
-rw-r--r--source/ap/vim/patches/7.2.35878
-rw-r--r--source/ap/vim/patches/7.2.35968
-rw-r--r--source/ap/vim/patches/7.2.36096
-rw-r--r--source/ap/vim/patches/7.2.361763
-rw-r--r--source/ap/vim/patches/7.2.36295
-rw-r--r--source/ap/vim/patches/7.2.36370
-rw-r--r--source/ap/vim/patches/7.2.36491
-rw-r--r--source/ap/vim/patches/7.2.36571
-rw-r--r--source/ap/vim/patches/7.2.366134
-rw-r--r--source/ap/vim/patches/7.2.36777
-rw-r--r--source/ap/vim/patches/7.2.36852
-rw-r--r--source/ap/vim/patches/7.2.36955
-rw-r--r--source/ap/vim/patches/7.2.370156
-rw-r--r--source/ap/vim/patches/7.2.371322
-rw-r--r--source/ap/vim/patches/7.2.372303
-rw-r--r--source/ap/vim/patches/7.2.37354
-rw-r--r--source/ap/vim/patches/7.2.374168
-rw-r--r--source/ap/vim/patches/7.2.37564
-rw-r--r--source/ap/vim/patches/7.2.37650
-rw-r--r--source/ap/vim/patches/7.2.37766
-rw-r--r--source/ap/vim/patches/7.2.37869
-rw-r--r--source/ap/vim/patches/7.2.37955
-rw-r--r--source/ap/vim/patches/7.2.380104
-rw-r--r--source/ap/vim/patches/7.2.381218
-rw-r--r--source/ap/vim/patches/7.2.38258
-rw-r--r--source/ap/vim/patches/7.2.383101
-rw-r--r--source/ap/vim/patches/7.2.38459
-rw-r--r--source/ap/vim/patches/7.2.38563
-rw-r--r--source/ap/vim/patches/7.2.38661
-rw-r--r--source/ap/vim/patches/7.2.387238
-rw-r--r--source/ap/vim/patches/7.2.38886
-rw-r--r--source/ap/vim/patches/7.2.389161
-rw-r--r--source/ap/vim/patches/7.2.39072
-rw-r--r--source/ap/vim/patches/7.2.391121
-rw-r--r--source/ap/vim/patches/7.2.392184
-rw-r--r--source/ap/vim/patches/7.2.393281
-rw-r--r--source/ap/vim/patches/7.2.39499
-rw-r--r--source/ap/vim/patches/7.2.39560
-rw-r--r--source/ap/vim/patches/7.2.39651
-rw-r--r--source/ap/vim/patches/7.2.39767
-rw-r--r--source/ap/vim/patches/7.2.398152
-rw-r--r--source/ap/vim/patches/7.2.39963
-rw-r--r--source/ap/vim/patches/7.2.400454
-rw-r--r--source/ap/vim/patches/7.2.40161
-rw-r--r--source/ap/vim/patches/7.2.40291
-rw-r--r--source/ap/vim/patches/7.2.40353
-rw-r--r--source/ap/vim/patches/7.2.40454
-rw-r--r--source/ap/vim/patches/7.2.40548
-rw-r--r--source/ap/vim/patches/7.2.406123
-rw-r--r--source/ap/vim/patches/7.2.40769
-rw-r--r--source/ap/vim/patches/7.2.40873
-rw-r--r--source/ap/vim/patches/7.2.40960
-rw-r--r--source/ap/vim/patches/7.2.41078
-rw-r--r--source/ap/vim/patches/7.2.41147
-rw-r--r--source/ap/vim/patches/7.2.41285
-rw-r--r--source/ap/vim/patches/7.2.413452
-rw-r--r--source/ap/vim/patches/7.2.41493
-rw-r--r--source/ap/vim/patches/7.2.41569
-rw-r--r--source/ap/vim/patches/7.2.41669
-rwxr-xr-xsource/ap/vim/vim-gvim.SlackBuild31
-rw-r--r--source/ap/vim/vim-runtime-syntax-20100510.diff7471
-rwxr-xr-xsource/ap/vim/vim.SlackBuild31
-rwxr-xr-xsource/ap/xfsdump/xfsdump.SlackBuild27
-rw-r--r--source/ap/xfsdump/xfsdump.destdir.diff42
-rwxr-xr-xsource/d/autoconf/autoconf.SlackBuild27
-rwxr-xr-xsource/d/automake/automake.SlackBuild14
-rw-r--r--source/d/binutils/binutils-2.20.51.0.8.tar.sign8
-rwxr-xr-xsource/d/binutils/binutils.SlackBuild41
-rw-r--r--source/d/binutils/release.binutils-2.18.50.0.91028
-rw-r--r--source/d/binutils/release.binutils-2.20.51.0.8491
-rwxr-xr-xsource/d/bison/bison.SlackBuild22
-rwxr-xr-xsource/d/clisp/clisp.SlackBuild29
-rwxr-xr-xsource/d/cmake/cmake.SlackBuild41
-rwxr-xr-xsource/d/cscope/cscope.SlackBuild29
-rwxr-xr-xsource/d/doxygen/doxygen.SlackBuild26
-rw-r--r--source/d/doxygen/doxygen.qt4.diff12
-rwxr-xr-xsource/d/gcc/gcc.SlackBuild139
-rwxr-xr-xsource/d/gdb/gdb.SlackBuild23
-rw-r--r--source/d/git/git-1.6.4.tar.sign8
-rw-r--r--source/d/git/git-1.7.1.tar.sign8
-rwxr-xr-xsource/d/git/git.SlackBuild23
-rwxr-xr-xsource/d/guile/guile.SlackBuild22
-rwxr-xr-xsource/d/intltool/intltool.SlackBuild34
-rwxr-xr-xsource/d/libtool/libtool.SlackBuild37
-rw-r--r--source/d/libtool/libtool.no.moved.warning.diff72
-rwxr-xr-xsource/d/m4/m4.SlackBuild29
-rw-r--r--source/d/mercurial/doinst.sh13
-rwxr-xr-xsource/d/mercurial/mercurial.SlackBuild48
-rwxr-xr-xsource/d/nasm/nasm.SlackBuild15
-rwxr-xr-xsource/d/oprofile/oprofile.SlackBuild55
-rw-r--r--source/d/oprofile/oprofile.qt4.diff3194
-rw-r--r--source/d/perl/doinst.sh13
-rwxr-xr-xsource/d/perl/perl.SlackBuild39
-rwxr-xr-xsource/d/python/python.SlackBuild15
-rwxr-xr-xsource/d/rcs/rcs.SlackBuild17
-rwxr-xr-xsource/d/ruby/ruby.SlackBuild47
-rw-r--r--source/d/ruby/ruby.x86_64.diff11
-rw-r--r--source/d/subversion/slack-desc2
-rwxr-xr-xsource/d/subversion/subversion.SlackBuild47
-rwxr-xr-xsource/e/emacs/emacs.SlackBuild65
-rw-r--r--source/installer/busybox-1.12.1_inotify.diff11
-rw-r--r--source/installer/busybox-dot-config212
-rw-r--r--source/installer/busybox.2.6.32.2.diff13
-rwxr-xr-xsource/installer/busybox.SlackBuild4
-rw-r--r--source/installer/dhcpcd/config.h.diff (renamed from source/n/dhcpcd/patches/config.h.diff)0
-rw-r--r--source/installer/dhcpcd/dhcpcd.sh.diff (renamed from source/n/dhcpcd/patches/dhcpcd.sh.diff)0
-rw-r--r--source/k/2.6.29.x-intel-crash-patch.diff37
-rw-r--r--source/k/README.TXT2
-rw-r--r--source/k/README_SECURITY.TXT11
-rw-r--r--source/k/README_SPEAKUP_PATCH.TXT15
-rw-r--r--source/k/config-generic-2.6.29.64178
-rw-r--r--source/k/config-generic-2.6.33.44699
-rw-r--r--source/k/config-huge-2.6.29.64179
-rw-r--r--source/k/config-huge-2.6.33.44698
-rw-r--r--source/k/config-speakup-2.6.29.64199
-rw-r--r--source/k/config-speakup-2.6.33.44718
-rwxr-xr-xsource/k/kernel-firmware/kernel-firmware.SlackBuild8
-rwxr-xr-xsource/k/kernel-generic/kernel-generic.SlackBuild2
-rwxr-xr-xsource/k/kernel-huge/kernel-huge.SlackBuild2
-rwxr-xr-xsource/k/kernel-modules/kernel-modules.SlackBuild2
-rw-r--r--source/k/linux-2.6.29.6-01-sendpage.diff11
-rw-r--r--source/k/linux-2.6.29.6-02-default-mmap_min_addr-4096.diff22
-rw-r--r--source/k/linux-2.6.29.6.tar.sign8
-rw-r--r--source/k/linux-2.6.33.4.tar.sign8
-rwxr-xr-xsource/kde/KDE.SlackBuild26
-rw-r--r--source/kde/KDE.options21
-rwxr-xr-xsource/kde/KDE_extra.SlackBuild54
-rwxr-xr-xsource/kde/amarok/amarok.SlackBuild51
-rw-r--r--source/kde/amarok/amarok.qtscript.optional.diff14
-rw-r--r--source/kde/amarok/local.options4
-rwxr-xr-xsource/kde/guidance-power-manager/guidance-power-manager.SlackBuild4
-rw-r--r--source/kde/guidance-power-manager/local.options1
-rw-r--r--source/kde/guidance-power-manager/slack-desc2
-rwxr-xr-xsource/kde/k3b/k3b.SlackBuild21
-rw-r--r--source/kde/k3b/k3b.internal.libsamplerate.diff26697
-rw-r--r--source/kde/k3b/local.options3
-rwxr-xr-xsource/kde/kaudiocreator/kaudiocreator.SlackBuild15
-rw-r--r--source/kde/kaudiocreator/local.options3
-rw-r--r--source/kde/kaudiocreator/slack-desc2
-rwxr-xr-xsource/kde/kdeaccessibility/kdeaccessibility.SlackBuild1
-rw-r--r--source/kde/kdeaccessibility/slack-desc2
-rwxr-xr-xsource/kde/kdeadmin/kdeadmin.SlackBuild6
-rw-r--r--source/kde/kdeadmin/knetworkconf.diff137
-rw-r--r--source/kde/kdeadmin/slack-desc2
-rwxr-xr-xsource/kde/kdeartwork/kdeartwork.SlackBuild2
-rw-r--r--source/kde/kdeartwork/slack-desc2
-rw-r--r--source/kde/kdebase-runtime/kdebase-runtime-text-render-969192.diff14
-rwxr-xr-xsource/kde/kdebase-runtime/kdebase-runtime.SlackBuild6
-rw-r--r--source/kde/kdebase-runtime/slack-desc2
-rw-r--r--source/kde/kdebase-workspace/kcmshell_root_privilege.patch43
-rwxr-xr-xsource/kde/kdebase-workspace/kdebase-workspace.SlackBuild13
-rw-r--r--source/kde/kdebase-workspace/kdebase-workspace.kdm.server.timeout.diff14
-rw-r--r--source/kde/kdebase-workspace/slack-desc6
-rwxr-xr-xsource/kde/kdebase-workspace/xinit/xinitrc.kde2
-rwxr-xr-xsource/kde/kdebase/kdebase.SlackBuild5
-rw-r--r--source/kde/kdebase/module_manager_include.diff19
-rw-r--r--source/kde/kdebase/slack-desc8
-rw-r--r--source/kde/kdebindings/kdebindings-len-ptr-rfloat.diff207
-rw-r--r--source/kde/kdebindings/kdebindings-ruby-env.h.diff139
-rw-r--r--source/kde/kdebindings/kdebindings-rubyconfig.h.diff20
-rwxr-xr-xsource/kde/kdebindings/kdebindings.SlackBuild18
-rw-r--r--source/kde/kdebindings/local.options (renamed from source/kde/kdebase-runtime/local.options)0
-rw-r--r--source/kde/kdebindings/slack-desc6
-rwxr-xr-xsource/kde/kdeedu/kdeedu.SlackBuild1
-rw-r--r--source/kde/kdeedu/slack-desc4
-rwxr-xr-xsource/kde/kdegames/kdegames.SlackBuild1
-rw-r--r--source/kde/kdegames/slack-desc4
-rwxr-xr-xsource/kde/kdegraphics/kdegraphics.SlackBuild5
-rw-r--r--source/kde/kdegraphics/kdegraphics.gwenview.jpeg8.diff13
-rw-r--r--source/kde/kdegraphics/local.options1
-rw-r--r--source/kde/kdegraphics/slack-desc6
-rw-r--r--source/kde/kdelibs/fixPopupForPlasmaboard.diff43
-rwxr-xr-xsource/kde/kdelibs/kdelibs.SlackBuild11
-rw-r--r--source/kde/kdelibs/kdesu-allow_NOPASS_in_suauth.patch135
-rw-r--r--source/kde/kdelibs/local.options1
-rw-r--r--source/kde/kdelibs/slack-desc2
-rwxr-xr-xsource/kde/kdemultimedia/kdemultimedia.SlackBuild1
-rw-r--r--source/kde/kdemultimedia/slack-desc4
-rwxr-xr-xsource/kde/kdenetwork/kdenetwork.SlackBuild5
-rw-r--r--source/kde/kdenetwork/kget.kde44.CVE-2010-1000-1511.diff212
-rw-r--r--source/kde/kdenetwork/kopete-r986796.diff396
-rw-r--r--source/kde/kdenetwork/slack-desc4
-rw-r--r--source/kde/kdepim-runtime/doinst.sh5
-rwxr-xr-xsource/kde/kdepim-runtime/kdepim-runtime.SlackBuild91
-rw-r--r--source/kde/kdepim-runtime/slack-desc19
-rw-r--r--source/kde/kdepim/kdepim-4.4.0-install-headers.patch127
-rwxr-xr-xsource/kde/kdepim/kdepim.SlackBuild6
-rw-r--r--source/kde/kdepim/slack-desc2
-rwxr-xr-xsource/kde/kdepimlibs/kdepimlibs.SlackBuild1
-rw-r--r--source/kde/kdepimlibs/slack-desc2
-rwxr-xr-xsource/kde/kdeplasma-addons/kdeplasma-addons.SlackBuild1
-rw-r--r--source/kde/kdeplasma-addons/slack-desc2
-rwxr-xr-xsource/kde/kdesdk/kdesdk.SlackBuild1
-rw-r--r--source/kde/kdesdk/slack-desc8
-rwxr-xr-xsource/kde/kdetoys/kdetoys.SlackBuild1
-rw-r--r--source/kde/kdetoys/slack-desc6
-rwxr-xr-xsource/kde/kdeutils/kdeutils.SlackBuild1
-rw-r--r--source/kde/kdeutils/slack-desc10
-rwxr-xr-xsource/kde/kdevelop/kdevelop.SlackBuild4
-rw-r--r--source/kde/kdevelop/local.options2
-rw-r--r--source/kde/kdevelop/slack-desc2
-rwxr-xr-xsource/kde/kdevplatform/kdevplatform.SlackBuild4
-rw-r--r--source/kde/kdevplatform/local.options2
-rw-r--r--source/kde/kdewebdev/include-tidy.patch13
-rwxr-xr-xsource/kde/kdewebdev/kdewebdev.SlackBuild5
-rw-r--r--source/kde/kdewebdev/slack-desc6
-rwxr-xr-xsource/kde/kdewebdev/tidy/tidy.SlackBuild17
-rwxr-xr-xsource/kde/kdewebdev/tidy/tidy.build18
-rwxr-xr-xsource/kde/koffice/koffice.SlackBuild4
-rw-r--r--source/kde/koffice/koffice.krita.png14.diff11
-rw-r--r--source/kde/koffice/local.options3
-rwxr-xr-xsource/kde/konq-plugins/konq-plugins.SlackBuild1
-rw-r--r--source/kde/konq-plugins/local.options1
-rw-r--r--source/kde/kopete-cryptography/doinst.sh5
-rwxr-xr-xsource/kde/kopete-cryptography/kopete-cryptography.SlackBuild91
-rw-r--r--source/kde/kopete-cryptography/local.options1
-rw-r--r--source/kde/kopete-cryptography/slack-desc19
-rwxr-xr-xsource/kde/ktorrent/ktorrent.SlackBuild3
-rw-r--r--source/kde/ktorrent/local.options2
-rw-r--r--source/kde/ktorrent/slack-desc4
-rwxr-xr-xsource/kde/mplayerthumbs/mplayerthumbs.SlackBuild121
-rw-r--r--source/kde/mplayerthumbs/slack-desc19
-rwxr-xr-xsource/kde/oxygen-icons/oxygen-icons.SlackBuild86
-rw-r--r--source/kde/oxygen-icons/slack-desc19
-rw-r--r--source/kde/polkit-kde-1/local.options2
-rwxr-xr-xsource/kde/polkit-kde-1/polkit-kde-1.SlackBuild93
-rw-r--r--source/kde/polkit-kde-1/slack-desc18
-rw-r--r--source/kde/polkit-qt-1/local.options2
-rwxr-xr-xsource/kde/polkit-qt-1/polkit-qt-1.SlackBuild90
-rw-r--r--source/kde/polkit-qt-1/slack-desc19
-rw-r--r--source/kde/skanlite/local.options2
-rwxr-xr-xsource/kde/skanlite/skanlite.SlackBuild3
-rwxr-xr-xsource/kdei/kde-l10n.SlackBuild114
-rwxr-xr-xsource/kdei/kde-l10n/kde-l10n.SlackBuild120
-rw-r--r--source/kdei/kde-l10n/languages58
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ar (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-ar)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-bg (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-bg)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-bn_IN (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-bn_IN)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ca (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-ca)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ca@valencia11
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-cs (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-cs)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-csb (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-csb)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-da (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-da)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-de (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-de)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-el (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-el)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-en_GB (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-en_GB)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-eo (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-eo)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-es (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-es)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-et (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-et)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-eu (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-eu)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-fi (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-fi)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-fr (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-fr)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-fy (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-fy)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ga (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-ga)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-gl (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-gl)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-gu (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-gu)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-he (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-he)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hi (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-hi)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hne11
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hr11
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hu (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-hu)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-id11
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-is (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-is)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-it (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-it)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ja (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-ja)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-kk (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-kk)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-km (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-km)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-kn (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-kn)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ko (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-ko)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ku (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-ku)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-lt (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-lt)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-lv (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-lv)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-mai (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-mai)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-mk (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-mk)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ml (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-ml)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-mr (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-mr)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nb (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-nb)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nds (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-nds)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nl (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-nl)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nn (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-nn)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pa (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-pa)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pl (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-pl)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pt (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-pt)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pt_BR (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-pt_BR)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ro (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-ro)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ru (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-ru)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-si11
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sk (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-sk)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sl (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-sl)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sr (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-sr)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sv (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-sv)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ta (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-ta)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-tg (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-tg)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-th (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-th)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-tr (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-tr)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-uk (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-uk)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-wa (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-wa)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_CN (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-zh_CN)0
-rw-r--r--source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_TW (renamed from source/kdei/slack-desc/slack-desc.kde-l10n-zh_TW)0
-rwxr-xr-xsource/kdei/koffice/koffice-l10n.SlackBuild4
-rw-r--r--source/kdei/koffice/languages27
-rw-r--r--source/kdei/koffice/slack-desc/slack-desc.koffice-l10n-ca@valencia11
-rw-r--r--source/kdei/koffice/slack-desc/slack-desc.koffice-l10n-hne11
-rw-r--r--source/kdei/languages56
-rwxr-xr-xsource/l/ConsoleKit/ConsoleKit.SlackBuild141
-rw-r--r--source/l/ConsoleKit/doinst.sh16
-rw-r--r--source/l/ConsoleKit/pam-foreground-compat.ck16
-rw-r--r--source/l/ConsoleKit/patches/consolekit-0.2.10-cleanup_console_tags.patch65
-rw-r--r--source/l/ConsoleKit/patches/consolekit-dbus-permissions.patch175
-rw-r--r--source/l/ConsoleKit/patches/consolekit-skipvalidation.patch12
-rw-r--r--source/l/ConsoleKit/slack-desc19
-rwxr-xr-xsource/l/PyQt/PyQt.SlackBuild41
-rw-r--r--source/l/PyQt/PyQt.info2
-rw-r--r--source/l/PyQt/PyQt.phonon.diff11
-rw-r--r--source/l/PyQt/slack-desc4
-rwxr-xr-xsource/l/QScintilla/QScintilla.SlackBuild21
-rw-r--r--source/l/QScintilla/QScintilla.info8
-rw-r--r--source/l/akonadi/README.html3
-rwxr-xr-xsource/l/akonadi/akonadi.SlackBuild18
-rw-r--r--source/l/akonadi/slack-desc2
-rwxr-xr-xsource/l/alsa-lib/alsa-lib.SlackBuild36
-rwxr-xr-xsource/l/apr-util/apr-util.SlackBuild31
-rwxr-xr-xsource/l/apr/apr.SlackBuild31
-rwxr-xr-xsource/l/atk/atk.SlackBuild21
-rwxr-xr-xsource/l/attica/attica.SlackBuild99
-rw-r--r--source/l/attica/slack-desc19
-rw-r--r--source/l/babl/babl-0.1.0-build-fixes.patch20
-rwxr-xr-xsource/l/babl/babl.SlackBuild6
-rwxr-xr-xsource/l/boost/boost.SlackBuild27
-rw-r--r--source/l/boost/boost.ifdef_placement.diff14
-rwxr-xr-xsource/l/cairo/cairo.SlackBuild23
-rw-r--r--source/l/cairo/cairo.libpng14.diff11
-rwxr-xr-xsource/l/dbus-glib/dbus-glib.SlackBuild16
-rwxr-xr-xsource/l/dbus-python/dbus-python.SlackBuild20
-rwxr-xr-xsource/l/desktop-file-utils/desktop-file-utils.SlackBuild30
-rw-r--r--source/l/desktop-file-utils/desktop-file-utils.quiet.warnings.diff18
-rwxr-xr-xsource/l/djvulibre/djvulibre.SlackBuild38
-rwxr-xr-xsource/l/ebook-tools/ebook-tools.SlackBuild113
-rw-r--r--source/l/ebook-tools/ebook-tools.paths.diff12
-rw-r--r--source/l/ebook-tools/slack-desc19
-rwxr-xr-xsource/l/eggdbus/eggdbus.SlackBuild123
-rw-r--r--source/l/eggdbus/slack-desc19
-rwxr-xr-xsource/l/eigen2/eigen2.SlackBuild22
-rwxr-xr-xsource/l/enchant/enchant.SlackBuild18
-rwxr-xr-xsource/l/exiv2/exiv2.SlackBuild16
-rwxr-xr-xsource/l/fftw/fftw.SlackBuild152
-rw-r--r--source/l/fftw/slack-desc19
-rwxr-xr-xsource/l/freetype/freetype.SlackBuild24
-rwxr-xr-xsource/l/fuse/fuse.SlackBuild51
-rwxr-xr-xsource/l/gd/gd.SlackBuild24
-rw-r--r--source/l/gd/gd.png14.diff65
-rw-r--r--source/l/gd/gdlib.pc2
-rwxr-xr-xsource/l/gegl/gegl.SlackBuild31
-rwxr-xr-xsource/l/giflib/giflib.SlackBuild109
-rw-r--r--source/l/giflib/slack-desc19
-rw-r--r--source/l/glib2/glib-CVE-2008-4316.diff62
-rwxr-xr-xsource/l/glib2/glib2.SlackBuild34
-rw-r--r--source/l/glibc/doinst.sh-glibc37
-rw-r--r--source/l/glibc/doinst.sh-glibc-solibs37
-rwxr-xr-xsource/l/glibc/glibc.SlackBuild38
-rwxr-xr-xsource/l/gmime/gmime.SlackBuild21
-rwxr-xr-xsource/l/gmp/gmp.SlackBuild28
-rwxr-xr-xsource/l/gnome-icon-theme/gnome-icon-theme.SlackBuild26
-rw-r--r--source/l/gnome-icon-theme/gnome-icon-theme.pkgconfig.path.diff18
-rwxr-xr-xsource/l/gst-plugins-base/gst-plugins-base.SlackBuild45
-rwxr-xr-xsource/l/gst-plugins-good/gst-plugins-good.SlackBuild129
-rw-r--r--source/l/gst-plugins-good/slack-desc19
-rwxr-xr-xsource/l/gstreamer/gstreamer.SlackBuild55
-rwxr-xr-xsource/l/gtk+2/gtk+2.SlackBuild68
-rw-r--r--source/l/gtk+2/gtk.nsplugin.diff11
-rw-r--r--source/l/gtk+2/gtk.png14.diff19
-rw-r--r--source/l/gtk+2/gtk.pnglz.diff8
-rw-r--r--source/l/gtk+2/gtk.xid.nowarningflood.diff12
-rwxr-xr-xsource/l/hal-info/hal-info.SlackBuild26
-rw-r--r--source/l/hal-info/patches/quirk-LG_X110-keyboard.patch46
-rw-r--r--source/l/hal-info/patches/quirk-acer_aspire_hotkey.patch25
-rw-r--r--source/l/hal/doinst.sh2
-rwxr-xr-xsource/l/hal/hal.SlackBuild105
-rw-r--r--source/l/hal/patches/10-keymap.fdi-restore_zap.diff5
-rw-r--r--source/l/hal/patches/allow_uid_gid_ntfs.diff20
-rw-r--r--source/l/hal/patches/check_udi_properly.diff41
-rw-r--r--source/l/hal/patches/fix_ioperm_arguments.patch40
-rw-r--r--source/l/hal/patches/fix_led_crash.diff26
-rw-r--r--source/l/hal/patches/fix_libusb_detection.diff65
-rw-r--r--source/l/hal/patches/fix_md_crash.diff45
-rw-r--r--source/l/hal/patches/fix_segfault-dbus_error_init.patch179
-rw-r--r--source/l/hal/patches/fix_segfault_in_LIBHAL_FREE_DBUS_ERROR.diff51
-rw-r--r--source/l/hal/patches/fix_segfault_in_mdraid.diff36
-rw-r--r--source/l/hal/patches/fixup_udi_strings.diff69
-rw-r--r--source/l/hal/patches/handle_input.touchpad_explicitly.diff75
-rw-r--r--source/l/hal/patches/hide_more_invalid_partitions.diff66
-rw-r--r--source/l/hal/patches/ignore_dupe_add_events.diff40
-rw-r--r--source/l/hal/patches/increase_HAL_PATH_MAX_to_4096.diff30
-rw-r--r--source/l/hal/patches/regen_fdi_cache_if_zero_size.diff24
-rw-r--r--source/l/hal/patches/set_X_keymap_properly.diff96
-rw-r--r--source/l/hal/patches/use_udevadm_not_udevinfo.patch36
-rw-r--r--source/l/hal/slack-desc6
-rwxr-xr-xsource/l/hicolor-icon-theme/hicolor-icon-theme.SlackBuild11
-rwxr-xr-xsource/l/hunspell/hunspell.SlackBuild121
-rw-r--r--source/l/hunspell/slack-desc19
-rwxr-xr-xsource/l/imlib/imlib.SlackBuild20
-rwxr-xr-xsource/l/jasper/jasper.SlackBuild36
-rw-r--r--source/l/jre/COPYRIGHT4
-rw-r--r--source/l/jre/README2
-rw-r--r--source/l/jre/THIRDPARTYLICENSEREADME.txt3855
-rw-r--r--source/l/jre/Welcome.html2
-rwxr-xr-xsource/l/jre/jre.SlackBuild6
-rw-r--r--source/l/jre/slack-desc2
-rwxr-xr-xsource/l/lcms/lcms.SlackBuild31
-rwxr-xr-xsource/l/lesstif/lesstif.SlackBuild34
-rw-r--r--source/l/lesstif/lesstif.gcc42.diff23
-rw-r--r--source/l/libaio/libaio-0.3.109.tar.sign8
-rwxr-xr-xsource/l/libaio/libaio.SlackBuild30
-rwxr-xr-xsource/l/libarchive/libarchive.SlackBuild35
-rw-r--r--source/l/libcap/libcap-2.16.tar.bz2.sign8
-rw-r--r--source/l/libcap/libcap-2.19.tar.bz2.sign8
-rwxr-xr-xsource/l/libcap/libcap.SlackBuild41
-rwxr-xr-xsource/l/libcdio/libcdio.SlackBuild2
-rwxr-xr-xsource/l/libdiscid/libdiscid.SlackBuild118
-rw-r--r--source/l/libdiscid/slack-desc19
-rwxr-xr-xsource/l/libexif/libexif.SlackBuild31
-rwxr-xr-xsource/l/libglade/libglade.SlackBuild34
-rwxr-xr-xsource/l/libgphoto2/libgphoto2.SlackBuild63
-rwxr-xr-xsource/l/libgsf/libgsf.SlackBuild36
-rwxr-xr-xsource/l/libgtkhtml/libgtkhtml.SlackBuild117
-rw-r--r--source/l/libgtkhtml/slack-desc19
-rwxr-xr-xsource/l/libiodbc/libiodbc.SlackBuild122
-rw-r--r--source/l/libiodbc/slack-desc19
-rw-r--r--source/l/libjpeg/jpeg-6b.diff59
-rwxr-xr-xsource/l/libjpeg/libjpeg.SlackBuild94
-rwxr-xr-xsource/l/liblastfm/liblastfm.SlackBuild93
-rw-r--r--source/l/liblastfm/slack-desc19
-rwxr-xr-xsource/l/libmng/libmng.SlackBuild26
-rwxr-xr-xsource/l/libmsn/libmsn.SlackBuild22
-rw-r--r--source/l/libmsn/slack-desc2
-rwxr-xr-xsource/l/libmtp/libmtp.SlackBuild32
-rw-r--r--source/l/libmtp/slack-desc2
-rwxr-xr-xsource/l/libnotify/libnotify.SlackBuild92
-rw-r--r--source/l/libnotify/slack-desc19
-rwxr-xr-xsource/l/libogg/libogg.SlackBuild23
-rwxr-xr-xsource/l/libpng/libpng.SlackBuild89
-rw-r--r--source/l/libpng/libpng.libs.diff18
-rw-r--r--source/l/libraw1394/libraw1394-2.0.5.tar.sign8
-rwxr-xr-xsource/l/libraw1394/libraw1394.SlackBuild38
-rw-r--r--source/l/libraw1394/libraw1394.info5
-rw-r--r--source/l/libraw1394/slack-desc2
-rwxr-xr-xsource/l/librsvg/librsvg.SlackBuild30
-rwxr-xr-xsource/l/libsamplerate/libsamplerate.SlackBuild73
-rw-r--r--source/l/libsamplerate/slack-desc19
-rwxr-xr-xsource/l/libspectre/libspectre.SlackBuild20
-rwxr-xr-xsource/l/libtheora/libtheora.SlackBuild22
-rwxr-xr-xsource/l/libtiff/libtiff.SlackBuild41
-rw-r--r--source/l/libtiff/tiff-3.8.2.goo-sec.diff661
-rw-r--r--source/l/libtiff/tiff-3.8.2.tiffsplit.commandline.overflow.diff22
-rwxr-xr-xsource/l/libungif/libungif.SlackBuild93
-rw-r--r--source/l/libungif/slack-desc19
-rwxr-xr-xsource/l/libusb/libusb.SlackBuild109
-rw-r--r--source/l/libusb/slack-desc6
-rwxr-xr-xsource/l/libvncserver/libvncserver.SlackBuild28
-rwxr-xr-xsource/l/libvorbis/libvorbis.SlackBuild19
-rwxr-xr-xsource/l/libwmf/libwmf.SlackBuild33
-rw-r--r--source/l/libwmf/libwmf.png14.diff11
-rwxr-xr-xsource/l/libwnck/libwnck.SlackBuild29
-rwxr-xr-xsource/l/libxklavier/libxklavier.SlackBuild32
-rwxr-xr-xsource/l/libxml2/libxml2.SlackBuild15
-rwxr-xr-xsource/l/libxslt/libxslt.SlackBuild17
-rwxr-xr-xsource/l/loudmouth/loudmouth.SlackBuild138
-rw-r--r--source/l/loudmouth/loudmouth.async_assertion.diff19
-rw-r--r--source/l/loudmouth/loudmouth.crtpath.diff11
-rw-r--r--source/l/loudmouth/loudmouth.gnutls.configure.ac.diff20
-rw-r--r--source/l/loudmouth/loudmouth.sasl-md5-digest-uri.diff22
-rw-r--r--source/l/loudmouth/loudmouth.stanzadrop.diff45
-rw-r--r--source/l/loudmouth/slack-desc19
-rwxr-xr-xsource/l/mpfr/mpfr.SlackBuild24
-rw-r--r--source/l/mpfr/patches/patch01184
-rw-r--r--source/l/mpfr/patches/patch0271
-rw-r--r--source/l/mpfr/patches/patch0375
-rwxr-xr-xsource/l/neon/neon.SlackBuild13
-rw-r--r--source/l/netpbm/Makefile.config649
-rw-r--r--source/l/netpbm/config.mk662
-rwxr-xr-xsource/l/netpbm/netpbm.SlackBuild34
-rwxr-xr-xsource/l/notify-python/notify-python.SlackBuild99
-rw-r--r--source/l/notify-python/slack-desc19
-rwxr-xr-xsource/l/pango/pango.SlackBuild27
-rwxr-xr-xsource/l/parted/parted.SlackBuild43
-rwxr-xr-xsource/l/parted/parted.SlackBuild.static52
-rw-r--r--source/l/parted/parted.configure.diff15
-rwxr-xr-xsource/l/pcre/pcre.SlackBuild41
-rwxr-xr-xsource/l/phonon/phonon.SlackBuild47
-rw-r--r--source/l/phonon/phonon.gstreamer.qt-4.5.1.diff431
-rw-r--r--source/l/phonon/slack-desc6
-rwxr-xr-xsource/l/pil/pil.SlackBuild44
-rwxr-xr-xsource/l/pilot-link/pilot-link.SlackBuild32
-rw-r--r--source/l/pilot-link/pilot-link.png14.diff96
-rw-r--r--source/l/polkit-gnome/pkga.desktop-NotShowInKDE.diff9
-rwxr-xr-xsource/l/polkit-gnome/polkit-gnome.SlackBuild103
-rw-r--r--source/l/polkit-gnome/slack-desc19
-rw-r--r--source/l/polkit/polkit-1-shadow.diff1030
-rwxr-xr-xsource/l/polkit/polkit.SlackBuild144
-rw-r--r--source/l/polkit/slack-desc19
-rwxr-xr-xsource/l/poppler-data/poppler-data.SlackBuild8
-rwxr-xr-xsource/l/poppler/poppler.SlackBuild26
-rwxr-xr-xsource/l/popt/popt.SlackBuild38
-rwxr-xr-xsource/l/pycairo/pycairo.SlackBuild46
-rw-r--r--source/l/pycairo/pycairo.info2
-rw-r--r--source/l/pycairo/pycairo.url2
-rwxr-xr-xsource/l/pycups/pycups.SlackBuild42
-rwxr-xr-xsource/l/pygobject/pygobject.SlackBuild46
-rw-r--r--source/l/pygobject/pygobject.info2
-rw-r--r--source/l/pygobject/pygobject.url2
-rwxr-xr-xsource/l/pygtk/pygtk.SlackBuild52
-rwxr-xr-xsource/l/qca/qca.SlackBuild12
-rw-r--r--source/l/qt/README10
-rwxr-xr-xsource/l/qt/qt.SlackBuild42
-rw-r--r--source/l/qt/slack-desc2
-rwxr-xr-xsource/l/qtscriptgenerator/qtscriptgenerator.SlackBuild19
-rw-r--r--source/l/qtscriptgenerator/qtscriptgenerator.gcc44.diff10
-rwxr-xr-xsource/l/raptor/raptor.SlackBuild30
-rwxr-xr-xsource/l/rasqal/rasqal.SlackBuild40
-rw-r--r--source/l/rasqal/rasqal.info5
-rw-r--r--source/l/rasqal/slack-desc2
-rwxr-xr-xsource/l/redland/redland.SlackBuild54
-rw-r--r--source/l/redland/redland.info5
-rw-r--r--source/l/sdl/SDL_mixer-1.2.8.usrlocal.diff11
-rw-r--r--source/l/sdl/SDL_mixer.usrlocal.diff11
-rwxr-xr-xsource/l/sdl/sdl.SlackBuild56
-rwxr-xr-xsource/l/shared-desktop-ontologies/shared-desktop-ontologies.SlackBuild107
-rw-r--r--source/l/shared-desktop-ontologies/slack-desc19
-rw-r--r--source/l/shared-mime-info/doinst.sh19
-rwxr-xr-xsource/l/shared-mime-info/shared-mime-info.SlackBuild45
-rwxr-xr-xsource/l/sip/sip.SlackBuild22
-rw-r--r--source/l/sip/sip.info2
-rw-r--r--source/l/sip/slack-desc2
-rwxr-xr-xsource/l/slang/slang.SlackBuild20
-rw-r--r--source/l/soprano/slack-desc2
-rwxr-xr-xsource/l/soprano/soprano.SlackBuild20
-rw-r--r--source/l/soprano/soprano.info1
-rwxr-xr-xsource/l/startup-notification/startup-notification.SlackBuild29
-rwxr-xr-xsource/l/strigi/strigi.SlackBuild31
-rw-r--r--source/l/system-config-printer/doinst.sh21
-rw-r--r--source/l/system-config-printer/slack-desc19
-rwxr-xr-xsource/l/system-config-printer/system-config-printer.SlackBuild128
-rwxr-xr-xsource/l/taglib-extras/taglib-extras.SlackBuild4
-rwxr-xr-xsource/l/taglib/taglib.SlackBuild24
-rwxr-xr-xsource/l/urwid/urwid.SlackBuild15
-rw-r--r--source/l/v4l-utils/slack-desc19
-rwxr-xr-xsource/l/v4l-utils/v4l-utils.SlackBuild97
-rw-r--r--source/l/virtuoso-ose/doinst.sh15
-rw-r--r--source/l/virtuoso-ose/slack-desc19
-rwxr-xr-xsource/l/virtuoso-ose/virtuoso-ose.SlackBuild115
-rwxr-xr-xsource/l/vte/vte.SlackBuild26
-rwxr-xr-xsource/l/wv2/wv2.SlackBuild46
-rwxr-xr-xsource/n/alpine/alpine.SlackBuild23
-rw-r--r--source/n/autofs/autofs-3.1.7.diff11
-rw-r--r--source/n/autofs/autofs-3.1.7.tar.bz2.sign8
-rw-r--r--source/n/autofs/autofs-5.0.5-fix-libxml2-workaround-configure.patch61
-rwxr-xr-xsource/n/autofs/autofs.SlackBuild100
-rw-r--r--source/n/autofs/autofs.gcc.fix.diff12
-rw-r--r--source/n/autofs/autofs.x86_64.diff11
-rw-r--r--source/n/autofs/doinst.sh26
-rwxr-xr-xsource/n/bind/bind.SlackBuild12
-rwxr-xr-xsource/n/bluez-hcidump/bluez-hcidump.SlackBuild34
-rw-r--r--source/n/bluez-hcidump/hci.c_for_bluez-4.61.patch21
-rw-r--r--source/n/bluez-hcidump/slack-desc6
-rwxr-xr-xsource/n/bluez-libs/bluez-libs.SlackBuild114
-rw-r--r--source/n/bluez-libs/slack-desc19
-rw-r--r--source/n/bluez-utils/60-bluetooth.rules35
-rw-r--r--source/n/bluez-utils/README.SLACKWARE18
-rw-r--r--source/n/bluez-utils/add-passkey.c394
-rw-r--r--source/n/bluez-utils/bluetooth.conf24
-rwxr-xr-xsource/n/bluez-utils/bluez-utils.SlackBuild188
-rw-r--r--source/n/bluez-utils/doinst.sh30
-rw-r--r--source/n/bluez-utils/rc.bluetooth114
-rw-r--r--source/n/bluez-utils/rc.bluetooth.conf33
-rw-r--r--source/n/bluez-utils/register-passkeys19
-rw-r--r--source/n/bluez-utils/slack-desc19
-rwxr-xr-xsource/n/bluez/bluez.SlackBuild196
-rw-r--r--source/n/bluez/config/bluetooth.modprobe3
-rw-r--r--source/n/bluez/config/bluetooth.sh7
-rw-r--r--source/n/bluez/config/rc.bluetooth30
-rw-r--r--source/n/bluez/doinst.sh29
-rw-r--r--source/n/bluez/passkey-agent.c418
-rw-r--r--source/n/bluez/patches/bluez-dbus-config.patch25
-rw-r--r--source/n/bluez/patches/bluez-run_udev_helper.patch12
-rw-r--r--source/n/bluez/patches/bluez-unbreak_dell_mouse.patch14
-rw-r--r--source/n/bluez/slack-desc19
-rwxr-xr-xsource/n/crda/crda.SlackBuild21
-rw-r--r--source/n/curl/cacert.pem361
-rwxr-xr-xsource/n/curl/curl.SlackBuild18
-rw-r--r--source/n/dhcp/dhclient-script.PATH.diff13
-rwxr-xr-xsource/n/dhcp/dhcp.SlackBuild132
-rw-r--r--source/n/dhcp/doinst.sh21
-rw-r--r--source/n/dhcpcd/50-ntp.conf.diff19
-rwxr-xr-xsource/n/dhcpcd/dhcpcd.SlackBuild101
-rw-r--r--source/n/dhcpcd/dhcpcd.vararg.diff30
-rw-r--r--source/n/dhcpcd/doinst.sh15
-rw-r--r--source/n/dhcpcd/patches/dhcpcd.8.in.diff12
-rwxr-xr-xsource/n/dirmngr/dirmngr.SlackBuild46
-rwxr-xr-xsource/n/dnsmasq/dnsmasq.SlackBuild31
-rw-r--r--source/n/dnsmasq/dnsmasq.leasedir.diff30
-rw-r--r--source/n/dnsmasq/doinst.sh16
-rwxr-xr-xsource/n/epic4/epic4.SlackBuild88
-rw-r--r--source/n/epic4/slack-desc19
-rwxr-xr-xsource/n/epic5/epic5.SlackBuild107
-rw-r--r--source/n/epic5/slack-desc19
-rwxr-xr-xsource/n/ethtool/ethtool.SlackBuild19
-rwxr-xr-xsource/n/fetchmail/fetchmail.SlackBuild23
-rwxr-xr-xsource/n/getmail/getmail.SlackBuild15
-rwxr-xr-xsource/n/gnupg/gnupg.SlackBuild25
-rw-r--r--source/n/gnupg2/gnupg-2.0.14-encode-s2k.patch65
-rwxr-xr-xsource/n/gnupg2/gnupg2.SlackBuild46
-rwxr-xr-xsource/n/gnutls/gnutls.SlackBuild58
-rwxr-xr-xsource/n/gpgme/gpgme.SlackBuild44
-rwxr-xr-xsource/n/httpd/httpd.SlackBuild20
-rw-r--r--source/n/iproute2/iproute2-2.6.33-fixup_dbpath_and_iptablespath.diff34
-rwxr-xr-xsource/n/iproute2/iproute2.SlackBuild55
-rw-r--r--source/n/iproute2/iproute2.dbpath.diff12
-rw-r--r--source/n/iproute2/iproute2.iptablespath.diff12
-rwxr-xr-xsource/n/iptables/iptables.SlackBuild24
-rwxr-xr-xsource/n/iputils/iputils.SlackBuild32
-rwxr-xr-xsource/n/ipw2200-fw/ipw2200-fw.SlackBuild8
-rwxr-xr-xsource/n/irssi/irssi.SlackBuild49
-rw-r--r--source/n/irssi/irssi.manpage_fix.diff (renamed from source/n/irssi/irsi-0.8.14.manpage_fix.diff)0
-rw-r--r--source/n/irssi/irssi.ssl_proxy.diff24
-rwxr-xr-xsource/n/iwlwifi-1000-ucode/iwlwifi-1000-ucode.SlackBuild57
-rw-r--r--source/n/iwlwifi-1000-ucode/slack-desc19
-rwxr-xr-xsource/n/iwlwifi-6000-ucode/iwlwifi-6000-ucode.SlackBuild57
-rw-r--r--source/n/iwlwifi-6000-ucode/slack-desc19
-rwxr-xr-xsource/n/lftp/lftp.SlackBuild30
-rwxr-xr-xsource/n/libassuan/libassuan.SlackBuild48
-rwxr-xr-xsource/n/libgcrypt/libgcrypt.SlackBuild56
-rwxr-xr-xsource/n/libgpg-error/libgpg-error.SlackBuild58
-rwxr-xr-xsource/n/libksba/libksba.SlackBuild46
-rwxr-xr-xsource/n/links/links.SlackBuild28
-rwxr-xr-xsource/n/lynx/lynx.SlackBuild67
-rw-r--r--source/n/lynx/lynx.cfg.diff9
-rw-r--r--source/n/lynx/lynx.path.diff27
-rwxr-xr-xsource/n/mcabber/mcabber.SlackBuild37
-rw-r--r--source/n/mtr/mtr-0.73.configure.error.diff20
-rwxr-xr-xsource/n/mtr/mtr.SlackBuild45
-rwxr-xr-xsource/n/ncftp/ncftp.SlackBuild30
-rwxr-xr-xsource/n/net-snmp/net-snmp.SlackBuild43
-rwxr-xr-xsource/n/netatalk/netatalk.SlackBuild24
-rw-r--r--source/n/netatalk/netatalk.afpdconf.diff (renamed from source/n/netatalk/netatalk-2.0.4-afpdconf.diff)0
-rw-r--r--source/n/netatalk/netatalk.without_xfs.diff (renamed from source/n/netatalk/netatalk-2.0.4-without_xfs.diff)0
-rwxr-xr-xsource/n/network-scripts/network-scripts.SlackBuild8
-rw-r--r--source/n/network-scripts/scripts/rc.inet16
-rw-r--r--source/n/nfs-utils/nfs-utils-1.1.4.tar.bz2.sign8
-rw-r--r--source/n/nfs-utils/nfs-utils-1.2.2.tar.bz2.sign8
-rwxr-xr-xsource/n/nfs-utils/nfs-utils.SlackBuild19
-rwxr-xr-xsource/n/nmap/nmap.SlackBuild29
-rw-r--r--source/n/nn/m-x86_64.h37
-rwxr-xr-xsource/n/nn/nn.SlackBuild33
-rw-r--r--source/n/nn/nn.diff39
-rwxr-xr-xsource/n/ntp/ntp.SlackBuild57
-rw-r--r--source/n/ntp/ntp.nano.diff17
-rw-r--r--source/n/ntp/rc.ntpd11
-rw-r--r--source/n/obex-data-server/doinst.sh16
-rwxr-xr-xsource/n/obex-data-server/obex-data-server.SlackBuild114
-rw-r--r--source/n/obex-data-server/slack-desc20
-rwxr-xr-xsource/n/obexfs/obexfs.SlackBuild106
-rw-r--r--source/n/obexfs/slack-desc19
-rwxr-xr-xsource/n/obexftp/obexftp.SlackBuild53
-rw-r--r--source/n/obexftp/ruby_rstringlen.diff15
-rwxr-xr-xsource/n/openldap-client/openldap-client.SlackBuild33
-rwxr-xr-xsource/n/openobex/openobex.SlackBuild34
-rwxr-xr-xsource/n/openssh/openssh.SlackBuild39
-rwxr-xr-xsource/n/openssl/openssl.SlackBuild64
-rw-r--r--source/n/openssl/openssl.no-extssl.diff27
-rwxr-xr-xsource/n/openvpn/openvpn.SlackBuild52
-rw-r--r--source/n/php/channels/pear.php.net.reg1
-rw-r--r--source/n/php/channels/pecl.php.net.reg1
-rw-r--r--source/n/php/mod_php.conf.example15
-rwxr-xr-xsource/n/php/php.SlackBuild44
-rw-r--r--source/n/php/php.gd_libpng-1.4.diff12
-rw-r--r--source/n/php/php.gmp5.diff11
-rwxr-xr-xsource/n/pinentry/pinentry.SlackBuild44
-rwxr-xr-xsource/n/ppp/ppp.SlackBuild18
-rwxr-xr-xsource/n/proftpd/proftpd.SlackBuild31
-rwxr-xr-xsource/n/pssh/pssh.SlackBuild16
-rw-r--r--source/n/pssh/slack-desc4
-rw-r--r--source/n/rdist/rdist-6.1.5-00.linux.diff23
-rw-r--r--source/n/rdist/rdist-6.1.5-01.links.diff74
-rw-r--r--source/n/rdist/rdist-6.1.5-03.hardlink.diff20
-rw-r--r--source/n/rdist/rdist-6.1.5-04.bison.diff (renamed from source/n/rdist/rdist-6.1.5-bison.diff)0
-rw-r--r--source/n/rdist/rdist-6.1.5-05.varargs.diff (renamed from source/n/rdist/rdist-6.1.5-varargs.diff)0
-rw-r--r--source/n/rdist/rdist-6.1.5-06.maxargs.diff11
-rw-r--r--source/n/rdist/rdist-6.1.5-07.lfs.diff137
-rw-r--r--source/n/rdist/rdist-6.1.5-08.cleanup.diff2082
-rw-r--r--source/n/rdist/rdist-6.1.5-09.svr4.diff10
-rw-r--r--source/n/rdist/rdist-6.1.5-10.ssh.diff9
-rw-r--r--source/n/rdist/rdist-6.1.5-11.mkstemp.diff23
-rw-r--r--source/n/rdist/rdist-6.1.5-12.stat64.diff80
-rw-r--r--source/n/rdist/rdist-6.1.5-14.fix-msgsndnotify-loop.diff32
-rw-r--r--source/n/rdist/rdist-6.1.5-cleanup.diff2082
-rw-r--r--source/n/rdist/rdist-6.1.5.diff107
-rw-r--r--source/n/rdist/rdist-eu-license.txt118
-rwxr-xr-xsource/n/rdist/rdist.SlackBuild128
-rwxr-xr-xsource/n/rsync/rsync.SlackBuild17
-rwxr-xr-xsource/n/rt2860-firmware/rt2860-firmware.SlackBuild60
-rw-r--r--source/n/rt2860-firmware/slack-desc19
-rwxr-xr-xsource/n/rt2870-firmware/rt2870-firmware.SlackBuild60
-rw-r--r--source/n/rt2870-firmware/slack-desc19
-rwxr-xr-xsource/n/samba/samba.SlackBuild38
-rw-r--r--source/n/samba/smb.conf.default2
-rw-r--r--source/n/samba/smb.conf.default.orig2
-rw-r--r--source/n/samba/smb.conf.diff4
-rwxr-xr-xsource/n/sendmail/SlackBuild-sendmail20
-rwxr-xr-xsource/n/sendmail/SlackBuild-sendmail-cf4
-rw-r--r--source/n/sendmail/site.config.m41
-rw-r--r--source/n/slrn/doinst.sh1
-rwxr-xr-xsource/n/slrn/slrn.SlackBuild22
-rwxr-xr-xsource/n/snownews/snownews.SlackBuild31
-rwxr-xr-xsource/n/stunnel/stunnel.SlackBuild40
-rw-r--r--source/n/tcpdump/libpcap.20-fix-any-intf.diff159
-rwxr-xr-xsource/n/tcpdump/tcpdump.SlackBuild24
-rw-r--r--source/n/tftp-hpa/tftp-hpa-0.48.tar.bz2.sign8
-rw-r--r--source/n/tftp-hpa/tftp-hpa-0.49.tar.bz2.sign8
-rwxr-xr-xsource/n/tftp-hpa/tftp-hpa.SlackBuild19
-rwxr-xr-xsource/n/traceroute/traceroute.SlackBuild52
-rw-r--r--source/n/traceroute/traceroute.no.domain.strip.diff30
-rw-r--r--source/n/traceroute/traceroute_1.4a12-5.diff1152
-rwxr-xr-xsource/n/vsftpd/vsftpd.SlackBuild35
-rw-r--r--source/n/vsftpd/vsftpd.conf.diff17
-rw-r--r--source/n/vsftpd/vsftpd.vsf_findlibs.sh.diff87
-rwxr-xr-xsource/n/wget/wget.SlackBuild32
-rwxr-xr-xsource/n/whois/whois.SlackBuild37
-rw-r--r--source/n/wireless-tools/scripts/rc.wireless7
-rwxr-xr-xsource/n/wireless-tools/wireless_tools.SlackBuild16
-rwxr-xr-xsource/n/wpa_supplicant/wpa_supplicant.SlackBuild50
-rw-r--r--source/n/yptools/yp-tools-2.12.tar.bz2.sign8
-rw-r--r--source/n/yptools/yp-tools-2.9.tar.bz2.sign8
-rw-r--r--source/n/yptools/ypbind-mt-1.19.1.tar.bz2.sign8
-rw-r--r--source/n/yptools/ypbind-mt-1.31.tar.bz2.sign8
-rw-r--r--source/n/yptools/ypserv-2.18.tar.bz2.sign8
-rw-r--r--source/n/yptools/ypserv-2.23.tar.bz2.sign8
-rwxr-xr-xsource/n/yptools/yptools.SlackBuild22
-rwxr-xr-xsource/t/tetex/tetex.SlackBuild30
-rw-r--r--source/t/tetex/tetex.afm2tfm.getline.diff38
-rw-r--r--source/t/tetex/tetex.cpascal.getline.posix.2008.diff17
-rw-r--r--source/t/tetex/tetex.leet.diff25
-rw-r--r--source/t/tetex/tetex.png14.diff33
-rwxr-xr-xsource/t/transfig/transfig.SlackBuild21
-rw-r--r--source/t/transfig/transfig.png14.nodither.diff11
-rwxr-xr-xsource/t/xfig/xfig.SlackBuild30
-rw-r--r--source/t/xfig/xfig.png14.nodither.diff11
-rwxr-xr-xsource/tcl/tcl/tcl.SlackBuild14
-rwxr-xr-xsource/tcl/tclx/tclx.SlackBuild15
-rwxr-xr-xsource/tcl/tix/tix.SlackBuild14
-rwxr-xr-xsource/tcl/tk/tk.SlackBuild14
-rwxr-xr-xsource/x/dejavu-fonts-ttf/dejavu-fonts-ttf.SlackBuild2
-rw-r--r--source/x/fontconfig/doinst.sh7
-rwxr-xr-xsource/x/fontconfig/fontconfig.SlackBuild65
-rw-r--r--source/x/fontconfig/fontconfig.dejavu.diff14
-rw-r--r--source/x/fontconfig/fontconfig.font.dir.list.diff21
-rwxr-xr-xsource/x/libdrm/libdrm.SlackBuild27
-rw-r--r--source/x/libdrm/libdrm.uint32_t.diff11
-rwxr-xr-xsource/x/mesa/mesa.SlackBuild49
-rw-r--r--source/x/mesa/mesa.url1
-rw-r--r--source/x/x11/build/compiz1
-rw-r--r--source/x/x11/build/font-adobe-100dpi1
-rw-r--r--source/x/x11/build/font-adobe-75dpi1
-rw-r--r--source/x/x11/build/font-adobe-utopia-100dpi1
-rw-r--r--source/x/x11/build/font-adobe-utopia-75dpi1
-rw-r--r--source/x/x11/build/font-adobe-utopia-type11
-rw-r--r--source/x/x11/build/font-arabic-misc1
-rw-r--r--source/x/x11/build/font-bh-100dpi1
-rw-r--r--source/x/x11/build/font-bh-75dpi1
-rw-r--r--source/x/x11/build/font-bh-lucidatypewriter-100dpi1
-rw-r--r--source/x/x11/build/font-bh-lucidatypewriter-75dpi1
-rw-r--r--source/x/x11/build/font-bh-ttf1
-rw-r--r--source/x/x11/build/font-bh-type11
-rw-r--r--source/x/x11/build/font-bitstream-100dpi1
-rw-r--r--source/x/x11/build/font-bitstream-75dpi1
-rw-r--r--source/x/x11/build/font-bitstream-speedo1
-rw-r--r--source/x/x11/build/font-bitstream-type11
-rw-r--r--source/x/x11/build/font-cronyx-cyrillic1
-rw-r--r--source/x/x11/build/font-cursor-misc1
-rw-r--r--source/x/x11/build/font-daewoo-misc1
-rw-r--r--source/x/x11/build/font-dec-misc1
-rw-r--r--source/x/x11/build/font-ibm-type11
-rw-r--r--source/x/x11/build/font-isas-misc1
-rw-r--r--source/x/x11/build/font-jis-misc1
-rw-r--r--source/x/x11/build/font-micro-misc1
-rw-r--r--source/x/x11/build/font-misc-cyrillic1
-rw-r--r--source/x/x11/build/font-misc-ethiopic1
-rw-r--r--source/x/x11/build/font-misc-meltho1
-rw-r--r--source/x/x11/build/font-misc-misc1
-rw-r--r--source/x/x11/build/font-mutt-misc1
-rw-r--r--source/x/x11/build/font-schumacher-misc1
-rw-r--r--source/x/x11/build/font-screen-cyrillic1
-rw-r--r--source/x/x11/build/font-sony-misc1
-rw-r--r--source/x/x11/build/font-sun-misc1
-rw-r--r--source/x/x11/build/font-winitzki-cyrillic1
-rw-r--r--source/x/x11/build/imake1
-rw-r--r--source/x/x11/build/libXScrnSaver1
-rw-r--r--source/x/x11/build/libXau1
-rw-r--r--source/x/x11/build/libXcomposite1
-rw-r--r--source/x/x11/build/libXcursor1
-rw-r--r--source/x/x11/build/libXdamage1
-rw-r--r--source/x/x11/build/libXdmcp1
-rw-r--r--source/x/x11/build/libXfixes1
-rw-r--r--source/x/x11/build/libXfontcache1
-rw-r--r--source/x/x11/build/libXft1
-rw-r--r--source/x/x11/build/libXinerama1
-rw-r--r--source/x/x11/build/libXmu1
-rw-r--r--source/x/x11/build/libXpm1
-rw-r--r--source/x/x11/build/libXrender1
-rw-r--r--source/x/x11/build/libXres1
-rw-r--r--source/x/x11/build/libXtst1
-rw-r--r--source/x/x11/build/libXv1
-rw-r--r--source/x/x11/build/libXvMC1
-rw-r--r--source/x/x11/build/libXxf86dga1
-rw-r--r--source/x/x11/build/libXxf86misc1
-rw-r--r--source/x/x11/build/libXxf86vm1
-rw-r--r--source/x/x11/build/libdmx1
-rw-r--r--source/x/x11/build/libfontenc1
-rw-r--r--source/x/x11/build/liblbxutil1
-rw-r--r--source/x/x11/build/libpthread-stubs1
-rw-r--r--source/x/x11/build/libxkbfile1
-rw-r--r--source/x/x11/build/listres1
-rw-r--r--source/x/x11/build/luit1
-rw-r--r--source/x/x11/build/makedepend1
-rw-r--r--source/x/x11/build/mkcomposecache1
-rw-r--r--source/x/x11/build/mkfontdir1
-rw-r--r--source/x/x11/build/recordproto1
-rw-r--r--source/x/x11/build/resourceproto1
-rw-r--r--source/x/x11/build/scrnsaverproto1
-rw-r--r--source/x/x11/build/smproxy1
-rw-r--r--source/x/x11/build/twm2
-rw-r--r--source/x/x11/build/videoproto1
-rw-r--r--source/x/x11/build/viewres1
-rw-r--r--source/x/x11/build/x11perf1
-rw-r--r--source/x/x11/build/xauth1
-rw-r--r--source/x/x11/build/xbacklight1
-rw-r--r--source/x/x11/build/xbiff1
-rw-r--r--source/x/x11/build/xbitmaps1
-rw-r--r--source/x/x11/build/xcalc1
-rw-r--r--source/x/x11/build/xclipboard1
-rw-r--r--source/x/x11/build/xclock1
-rw-r--r--source/x/x11/build/xcmiscproto1
-rw-r--r--source/x/x11/build/xcmsdb1
-rw-r--r--source/x/x11/build/xcompmgr1
-rw-r--r--source/x/x11/build/xcursor-themes1
-rw-r--r--source/x/x11/build/xcursorgen1
-rw-r--r--source/x/x11/build/xdriinfo1
-rw-r--r--source/x/x11/build/xev1
-rw-r--r--source/x/x11/build/xeyes1
-rw-r--r--source/x/x11/build/xf86-input-vmmouse (renamed from source/x/x11/build/appres)0
-rw-r--r--source/x/x11/build/xf86-video-apm (renamed from source/x/x11/build/bdftopcf)0
-rw-r--r--source/x/x11/build/xf86-video-ast (renamed from source/x/x11/build/bigreqsproto)0
-rw-r--r--source/x/x11/build/xf86-video-ati1
-rw-r--r--source/x/x11/build/xf86-video-cirrus (renamed from source/x/x11/build/bitmap)0
-rw-r--r--source/x/x11/build/xf86-video-glint (renamed from source/x/x11/build/compositeproto)0
-rw-r--r--source/x/x11/build/xf86-video-i128 (renamed from source/x/x11/build/damageproto)0
-rw-r--r--source/x/x11/build/xf86-video-i740 (renamed from source/x/x11/build/dmxproto)0
-rw-r--r--source/x/x11/build/xf86-video-mach64 (renamed from source/x/x11/build/editres)0
-rw-r--r--source/x/x11/build/xf86-video-mga (renamed from source/x/x11/build/encodings)0
-rw-r--r--source/x/x11/build/xf86-video-neomagic (renamed from source/x/x11/build/evieext)0
-rw-r--r--source/x/x11/build/xf86-video-nsc1
-rw-r--r--source/x/x11/build/xf86-video-openchrome1
-rw-r--r--source/x/x11/build/xf86-video-r128 (renamed from source/x/x11/build/fixesproto)0
-rw-r--r--source/x/x11/build/xf86-video-s3 (renamed from source/x/x11/build/font-alias)0
-rw-r--r--source/x/x11/build/xf86-video-s3virge (renamed from source/x/x11/build/font-util)0
-rw-r--r--source/x/x11/build/xf86-video-savage (renamed from source/x/x11/build/font-xfree86-type1)0
-rw-r--r--source/x/x11/build/xf86-video-sis (renamed from source/x/x11/build/fontcacheproto)0
-rw-r--r--source/x/x11/build/xf86-video-sisusb (renamed from source/x/x11/build/fontsproto)0
-rw-r--r--source/x/x11/build/xf86-video-tdfx (renamed from source/x/x11/build/iceauth)0
-rw-r--r--source/x/x11/build/xf86-video-v4l2
-rw-r--r--source/x/x11/build/xf86-video-vesa (renamed from source/x/x11/build/kbproto)0
-rw-r--r--source/x/x11/build/xf86-video-vmware (renamed from source/x/x11/build/lbxproxy)0
-rw-r--r--source/x/x11/build/xf86-video-voodoo (renamed from source/x/x11/build/libICE)0
-rw-r--r--source/x/x11/build/xf86bigfontproto1
-rw-r--r--source/x/x11/build/xf86dgaproto1
-rw-r--r--source/x/x11/build/xf86driproto1
-rw-r--r--source/x/x11/build/xf86miscproto1
-rw-r--r--source/x/x11/build/xf86vidmodeproto1
-rw-r--r--source/x/x11/build/xgamma1
-rw-r--r--source/x/x11/build/xhost1
-rw-r--r--source/x/x11/build/xineramaproto1
-rw-r--r--source/x/x11/build/xkbevd1
-rw-r--r--source/x/x11/build/xkbprint1
-rw-r--r--source/x/x11/build/xkbutils1
-rw-r--r--source/x/x11/build/xkill1
-rw-r--r--source/x/x11/build/xlogo1
-rw-r--r--source/x/x11/build/xlsatoms1
-rw-r--r--source/x/x11/build/xlsclients1
-rw-r--r--source/x/x11/build/xmag1
-rw-r--r--source/x/x11/build/xman1
-rw-r--r--source/x/x11/build/xmessage1
-rw-r--r--source/x/x11/build/xmodmap1
-rw-r--r--source/x/x11/build/xorg-cf-files1
-rw-r--r--source/x/x11/build/xorg-docs1
-rw-r--r--source/x/x11/build/xorg-sgml-doctools1
-rw-r--r--source/x/x11/build/xpr1
-rw-r--r--source/x/x11/build/xprop1
-rw-r--r--source/x/x11/build/xproxymanagementprotocol1
-rw-r--r--source/x/x11/build/xrdb1
-rw-r--r--source/x/x11/build/xrefresh1
-rw-r--r--source/x/x11/build/xset1
-rw-r--r--source/x/x11/build/xsetroot1
-rw-r--r--source/x/x11/build/xvidtune1
-rw-r--r--source/x/x11/build/xvinfo1
-rw-r--r--source/x/x11/build/xwud1
-rw-r--r--source/x/x11/configure/font-util12
-rw-r--r--source/x/x11/configure/xf86-input-vmmouse15
-rw-r--r--source/x/x11/configure/xf86-video-ati12
-rw-r--r--source/x/x11/configure/xf86-video-nv12
-rw-r--r--source/x/x11/configure/xorg-server5
-rw-r--r--source/x/x11/modularize3
-rw-r--r--source/x/x11/patch/compiz.patch3
-rw-r--r--source/x/x11/patch/compiz/compiz-0.7.8-kde42-crash.patch66
-rw-r--r--source/x/x11/patch/compiz/compiz-0.7.8-kde42-krunner.patch19
-rw-r--r--source/x/x11/patch/compiz/compiz-0.7.8-kde42.patch89
-rw-r--r--source/x/x11/patch/xcursorgen.patch1
-rw-r--r--source/x/x11/patch/xcursorgen/xcursorgen.png14.configure.kludge.diff61
-rw-r--r--source/x/x11/patch/xf86-input-synaptics.patch4
-rw-r--r--source/x/x11/patch/xf86-input-synaptics/xf86-input-synaptics.tap-to-click.diff11
-rw-r--r--source/x/x11/patch/xorg-server.patch1
-rw-r--r--source/x/x11/patch/xorg-server/xorg-server.fb.fbpict.c.mod.diff11
-rw-r--r--source/x/x11/patch/xscope.patch1
-rw-r--r--source/x/x11/patch/xscope/xscope-1.1-scope.c.diff11
-rw-r--r--source/x/x11/post-install/twm/xinitrc.twm4
-rw-r--r--source/x/x11/post-install/util-macros.post-install2
-rw-r--r--source/x/x11/post-install/xdm.post-install3
-rw-r--r--source/x/x11/post-install/xf86-input-synaptics.post-install2
-rw-r--r--source/x/x11/post-install/xf86-input-wacom.post-install4
-rw-r--r--source/x/x11/slack-desc/xf86-input-wacom19
-rw-r--r--source/x/x11/slack-desc/xf86-video-xgi19
-rw-r--r--source/x/x11/slack-desc/xf86-video-xgixp19
-rwxr-xr-xsource/x/x11/x11.SlackBuild39
-rwxr-xr-xsource/x/xdg-utils/xdg-utils.SlackBuild6
-rw-r--r--source/x/xf86-video-nouveau/this_is_NOT_a_driver.txt14
-rwxr-xr-xsource/x/xterm/xterm.SlackBuild20
-rwxr-xr-xsource/xap/MPlayer/MPlayer.SlackBuild23
-rw-r--r--source/xap/audacious-plugins/amidi-plug.fix-drct.diff11
-rwxr-xr-xsource/xap/audacious-plugins/audacious-plugins.SlackBuild31
-rw-r--r--source/xap/audacious-plugins/audacious-plugins.libmtp8.diff16
-rwxr-xr-xsource/xap/audacious/audacious.SlackBuild42
-rw-r--r--source/xap/audacious/audacious.handle_cmd_line_options.diff38
-rw-r--r--source/xap/audacious/doinst.sh4
-rw-r--r--source/xap/blackbox/blackbox-0.70.1-gcc-4.3.patch109
-rwxr-xr-xsource/xap/blackbox/blackbox.SlackBuild120
-rw-r--r--source/xap/blackbox/blackbox_0.65.0-5.diff12462
-rw-r--r--source/xap/blackbox/xinitrc.blackbox4
-rw-r--r--source/xap/blueman/blueman-open114
-rw-r--r--source/xap/blueman/blueman-use_blueman-open_for_obexfs.diff12
-rwxr-xr-xsource/xap/blueman/blueman.SlackBuild142
-rw-r--r--source/xap/blueman/doinst.sh23
-rw-r--r--source/xap/blueman/fix_on_off_loop.diff58
-rw-r--r--source/xap/blueman/no_hide_applet.diff30
-rw-r--r--source/xap/blueman/slack-desc19
-rwxr-xr-xsource/xap/electricsheep/electricsheep.SlackBuild16
-rwxr-xr-xsource/xap/fluxbox/fluxbox.SlackBuild22
-rw-r--r--source/xap/fluxbox/xinitrc.fluxbox4
-rw-r--r--source/xap/geeqie/doinst.sh7
-rwxr-xr-xsource/xap/geeqie/geeqie.SlackBuild121
-rw-r--r--source/xap/geeqie/slack-desc20
-rwxr-xr-xsource/xap/gimp/gimp.SlackBuild28
-rw-r--r--source/xap/gimp/gimp.png14.diff19
-rwxr-xr-xsource/xap/gkrellm/gkrellm.SlackBuild35
-rw-r--r--source/xap/gnuchess/eboard.assert.diff41
-rwxr-xr-xsource/xap/gnuchess/gnuchess.SlackBuild29
-rw-r--r--source/xap/gnuchess/gnuchess.getline.glibc.diff39
-rw-r--r--source/xap/gnuchess/xboard.buffer_overflow_fix.diff95
-rw-r--r--source/xap/gnuchess/xboard.infodir.diff11
-rwxr-xr-xsource/xap/gnuplot/gnuplot.SlackBuild21
-rw-r--r--source/xap/gqview/doinst.sh7
-rwxr-xr-xsource/xap/gqview/gqview.SlackBuild103
-rw-r--r--source/xap/gqview/slack-desc19
-rwxr-xr-xsource/xap/gucharmap/gucharmap.SlackBuild26
-rwxr-xr-xsource/xap/gv/gv.SlackBuild28
-rwxr-xr-xsource/xap/imagemagick/imagemagick.SlackBuild59
-rwxr-xr-xsource/xap/mozilla-firefox/mozilla-firefox.SlackBuild18
-rw-r--r--source/xap/mozilla-thunderbird/mimeTypes.rdf113
-rw-r--r--source/xap/mozilla-thunderbird/mozilla-thunderbird-firefox.diff11
-rwxr-xr-xsource/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild117
-rw-r--r--source/xap/mozilla-thunderbird/thunderbird.pngbin2980 -> 47617 bytes
-rwxr-xr-xsource/xap/pan/pan.SlackBuild22
-rw-r--r--source/xap/pan/pan.gcc44.diff50
-rw-r--r--source/xap/pan/pan.gmime2.4.diff1271
-rwxr-xr-xsource/xap/pidgin/pidgin.SlackBuild58
-rw-r--r--source/xap/sane/sane-frontends-1.0.14-sane_cap_always_settable.diff11
-rwxr-xr-xsource/xap/sane/sane.SlackBuild35
-rw-r--r--source/xap/seamonkey/pkgconfig/seamonkey-gtkmozembed.pc11
-rw-r--r--source/xap/seamonkey/pkgconfig/seamonkey-js.pc11
-rw-r--r--source/xap/seamonkey/pkgconfig/seamonkey-nspr.pc12
-rw-r--r--source/xap/seamonkey/pkgconfig/seamonkey-nss.pc11
-rw-r--r--source/xap/seamonkey/pkgconfig/seamonkey-plugin.pc10
-rw-r--r--source/xap/seamonkey/pkgconfig/seamonkey-xpcom.pc12
-rwxr-xr-xsource/xap/seamonkey/seamonkey.SlackBuild121
-rw-r--r--source/xap/seamonkey/seamonkey.moz_plugin_path.diff16
-rw-r--r--source/xap/seamonkey/slack-desc6
-rwxr-xr-xsource/xap/windowmaker/windowmaker.SlackBuild37
-rw-r--r--source/xap/windowmaker/windowmaker.png.1.4.0.diff11
-rw-r--r--source/xap/windowmaker/xinitrc.wmaker4
-rwxr-xr-xsource/xap/xchat/xchat.SlackBuild18
-rw-r--r--source/xap/xfce/patches/exo_quoting_fix.diff66
-rw-r--r--source/xap/xfce/patches/launcher-plugin-migrate-icon-cat.diff48
-rw-r--r--source/xap/xfce/patches/migrate-itheme-smartly.diff92
-rw-r--r--source/xap/xfce/patches/terminal-0.4.0-fixup_docdir.diff132
-rw-r--r--source/xap/xfce/patches/terminal.gtk.2.18.fix.diff101
-rw-r--r--source/xap/xfce/patches/thunar-1.0.1-png14.diff11
-rw-r--r--source/xap/xfce/patches/thunar-fix_umask_properly.diff52
-rw-r--r--source/xap/xfce/patches/xfce-utils.xinitrc.consolekit.diff11
-rw-r--r--source/xap/xfce/patches/xfce4-settings.libxklavier5.diff11
-rwxr-xr-xsource/xap/xfce/xfce.SlackBuild65
-rw-r--r--source/xap/xfce4-notifyd/doinst.sh10
-rw-r--r--source/xap/xfce4-notifyd/slack-desc19
-rwxr-xr-xsource/xap/xfce4-notifyd/xfce4-notifyd.SlackBuild103
-rwxr-xr-xsource/xap/xfce4-power-manager/xfce4-power-manager.SlackBuild57
-rw-r--r--source/xap/xine-lib/xine-lib-1.1.17.ff.diff1044
-rwxr-xr-xsource/xap/xine-lib/xine-lib.SlackBuild23
-rwxr-xr-xsource/xap/xine-ui/xine-ui.SlackBuild19
-rw-r--r--source/xap/xine-ui/xine-ui.png14.diff11
-rwxr-xr-xsource/xap/xmms/xmms.SlackBuild28
-rw-r--r--source/xap/xmms/xmms.pngbin0 -> 2475 bytes
-rwxr-xr-xsource/xap/xpaint/xpaint.SlackBuild33
-rw-r--r--source/xap/xpaint/xpaint_2.7.8.1-1.2.diff47
-rw-r--r--source/xap/xpaint/xpaint_xaw3d_no_scroll_mode.diff11
-rw-r--r--source/xap/xpdf/VendorP.h.buggy.diff19
-rw-r--r--source/xap/xpdf/doinst.sh19
-rw-r--r--source/xap/xpdf/lang/xpdf-arabic.diff (renamed from source/xap/xpdf/xpdf-arabic.diff)0
-rw-r--r--source/xap/xpdf/lang/xpdf-chinese-simplified.diff (renamed from source/xap/xpdf/xpdf-chinese-simplified.diff)0
-rw-r--r--source/xap/xpdf/lang/xpdf-chinese-traditional.diff (renamed from source/xap/xpdf/xpdf-chinese-traditional.diff)0
-rw-r--r--source/xap/xpdf/lang/xpdf-cyrillic.diff (renamed from source/xap/xpdf/xpdf-cyrillic.diff)0
-rw-r--r--source/xap/xpdf/lang/xpdf-greek.diff (renamed from source/xap/xpdf/xpdf-greek.diff)0
-rw-r--r--source/xap/xpdf/lang/xpdf-hebrew.diff (renamed from source/xap/xpdf/xpdf-hebrew.diff)0
-rw-r--r--source/xap/xpdf/lang/xpdf-japanese.diff (renamed from source/xap/xpdf/xpdf-japanese.diff)0
-rw-r--r--source/xap/xpdf/lang/xpdf-korean.diff (renamed from source/xap/xpdf/xpdf-korean.diff)0
-rw-r--r--source/xap/xpdf/lang/xpdf-latin2.diff (renamed from source/xap/xpdf/xpdf-latin2.diff)0
-rw-r--r--source/xap/xpdf/lang/xpdf-thai.diff (renamed from source/xap/xpdf/xpdf-thai.diff)0
-rw-r--r--source/xap/xpdf/lang/xpdf-turkish.diff (renamed from source/xap/xpdf/xpdf-turkish.diff)0
-rw-r--r--source/xap/xpdf/patches/xpdf-3.02pl1.patch (renamed from source/xap/xpdf/xpdf-3.02pl1.patch)0
-rw-r--r--source/xap/xpdf/patches/xpdf-3.02pl2.patch (renamed from source/xap/xpdf/xpdf-3.02pl2.patch)0
-rw-r--r--source/xap/xpdf/patches/xpdf-3.02pl3.patch (renamed from source/xap/xpdf/xpdf-3.02pl3.patch)0
-rw-r--r--source/xap/xpdf/patches/xpdf-3.02pl4.patch282
-rw-r--r--source/xap/xpdf/patches/xpdf-resizefix.diff (renamed from source/xap/xpdf/xpdf-resizefix.diff)0
-rw-r--r--source/xap/xpdf/patches/xpdf_3.02-1.3.diff (renamed from source/xap/xpdf/xpdf_3.02-1.3.diff)0
-rw-r--r--source/xap/xpdf/patches/xpdfrc.diff (renamed from source/xap/xpdf/xpdfrc.diff)0
-rwxr-xr-xsource/xap/xpdf/xpdf.SlackBuild124
-rw-r--r--source/xap/xpdf/xpdf.desktop6
-rwxr-xr-xsource/xap/xsane/xsane.SlackBuild15
-rwxr-xr-xsource/xap/xscreensaver/xscreensaver.SlackBuild22
-rw-r--r--source/xap/xv/xv-3.10a-enhancements.20070520-20081216.diff293
-rw-r--r--source/xap/xv/xv-3.10a-jumbo-README.txt271
-rw-r--r--source/xap/xv/xv-3.10a-jumbo-additions.diff18743
-rw-r--r--source/xap/xv/xv-3.10a-jumbo-enh-patch-20050501.txt28167
-rw-r--r--source/xap/xv/xv-3.10a-jumbo-fix-enh-patch-20070520.txt42401
-rw-r--r--source/xap/xv/xv-3.10a-jumbo-fix-patch-20050410.txt28743
-rwxr-xr-xsource/xap/xv/xv.SlackBuild27
-rw-r--r--source/xap/xv/xv.jasper.diff20
-rw-r--r--source/xap/xv/xv.prefix.diff16
-rw-r--r--source/xap/xv/xv.prefix_x86_64.diff18
-rw-r--r--source/y/bsd-games/bsd-games-login-fortune.sh8
-rwxr-xr-xsource/y/bsd-games/bsd-games.SlackBuild16
-rw-r--r--source/y/bsd-games/bsd-games.getline.diff251
1415 files changed, 142307 insertions, 133300 deletions
diff --git a/source/a/aaa_base/aaa_base.SlackBuild b/source/a/aaa_base/aaa_base.SlackBuild
index 3d1a73051..d8c06b4af 100755
--- a/source/a/aaa_base/aaa_base.SlackBuild
+++ b/source/a/aaa_base/aaa_base.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,10 +20,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=13.0
-ARCH=${ARCH:-x86_64}
+VERSION=13.1
BUILD=${BUILD:-2}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-aaa_base
diff --git a/source/a/aaa_base/slackware-version b/source/a/aaa_base/slackware-version
index 0c779cf82..11bc56a49 100644
--- a/source/a/aaa_base/slackware-version
+++ b/source/a/aaa_base/slackware-version
@@ -1 +1 @@
-Slackware 13.0.0.0.0
+Slackware 13.1.0
diff --git a/source/a/aaa_elflibs/aaa_elflibs.SlackBuild b/source/a/aaa_elflibs/aaa_elflibs.SlackBuild
index fd5ade86f..10bd02ce0 100755
--- a/source/a/aaa_elflibs/aaa_elflibs.SlackBuild
+++ b/source/a/aaa_elflibs/aaa_elflibs.SlackBuild
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,9 +21,18 @@
PKGNAM=aaa_elflibs
-VERSION=${VERSION:-13.0}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-13.1}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
diff --git a/source/a/aaa_elflibs/symlinks-to-tracked-libs b/source/a/aaa_elflibs/symlinks-to-tracked-libs
index b8c2c758a..29c8bcc11 100644
--- a/source/a/aaa_elflibs/symlinks-to-tracked-libs
+++ b/source/a/aaa_elflibs/symlinks-to-tracked-libs
@@ -8,6 +8,7 @@
/lib/libgpm.so.1
/lib/libncurses.so.5
/lib/libncursesw.so.5
+/lib/libpopt.so.0
/lib/libsysfs.so.2
/lib/libtermcap.so.2
/usr/lib/libasound.so.2
@@ -24,15 +25,21 @@
/usr/lib/libglib-2.0.so.0
/usr/lib/libgmodule-2.0.so.0
/usr/lib/libgmp.so.3
+/usr/lib/libgmp.so.10
/usr/lib/libgmpxx.so.3
+/usr/lib/libgmpxx.so.4
/usr/lib/libgobject-2.0.so.0
/usr/lib/libgthread-2.0.so.0
/usr/lib/libhistory.so.4
/usr/lib/libhistory.so.5
/usr/lib/libidn.so.11
/usr/lib/libjpeg.so.62
+/usr/lib/libjpeg.so.8
/usr/lib/liblber-2.3.so.0
+/usr/lib/liblber-2.4.so.2
/usr/lib/libldap-2.3.so.0
+/usr/lib/libldap-2.4.so.2
+/usr/lib/libltdl.so.3
/usr/lib/libmenu.so.5
/usr/lib/libmenuw.so.5
/usr/lib/libmm.so.14
@@ -42,14 +49,16 @@
/usr/lib/libpcre.so.0
/usr/lib/libpcreposix.so.0
/usr/lib/libpng.so.3
+/usr/lib/libpng.so.14
/usr/lib/libpng12.so.0
-/usr/lib/libpopt.so.0
+/usr/lib/libpng14.so.14
/usr/lib/libreadline.so.4
/usr/lib/libreadline.so.5
/usr/lib/libslang.so.1
/usr/lib/libslang.so.2
/usr/lib/libtiff.so.3
/usr/lib/libusb-0.1.so.4
+/usr/lib/libusb-1.0.so.0
/usr/lib/libvga.so.1
/usr/lib/libvgagl.so.1
/usr/lib/libz.so.1
diff --git a/source/a/acpid/acpid.SlackBuild b/source/a/acpid/acpid.SlackBuild
index 3010e0136..cb4831385 100755
--- a/source/a/acpid/acpid.SlackBuild
+++ b/source/a/acpid/acpid.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,9 +20,20 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.0.8
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo acpid-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j8}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -42,33 +53,37 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-make || exit 1
-strip acpid acpi_listen
-mkdir -p $PKG/usr/sbin
-cat acpid > $PKG/usr/sbin/acpid
-chmod 755 $PKG/usr/sbin/acpid
-mkdir -p $PKG/usr/bin
-cat acpi_listen > $PKG/usr/bin/acpi_listen
-chmod 755 $PKG/usr/bin/acpi_listen
-mkdir -p $PKG/usr/man/man8
-cat acpid.8 | gzip -9c > $PKG/usr/man/man8/acpid.8.gz
-cat acpi_listen.8 | gzip -9c > $PKG/usr/man/man8/acpi_listen.8.gz
-mkdir -p $PKG/usr/doc/acpid-$VERSION
-cp -a Changelog README \
- $PKG/usr/doc/acpid-$VERSION
-cp -a samples $PKG/usr/doc/acpid-$VERSION
+make install \
+ OPT="-O2" \
+ PREFIX=/usr \
+ MANDIR=/usr/man \
+ DOCDIR=/usr/doc/acpid-$VERSION \
+ DESTDIR=$PKG \
+ || exit 1
+
+strip --strip-unneeded $PKG/usr/bin/acpi_listen $PKG/usr/sbin/acpid
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/etc/acpi/events
zcat $CWD/acpi_handler.sh.gz > $PKG/etc/acpi/acpi_handler.sh.new
-chmod 755 $PKG/etc/acpi/acpi_handler.sh.new
+chmod 0755 $PKG/etc/acpi/acpi_handler.sh.new
zcat $CWD/default.gz > $PKG/etc/acpi/events/default
+
mkdir -p $PKG/etc/rc.d
zcat $CWD/rc.acpid.gz > $PKG/etc/rc.d/rc.acpid
-chmod 755 $PKG/etc/rc.d/rc.acpid
+chmod 0755 $PKG/etc/rc.d/rc.acpid
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
-# Build the package:
cd $PKG
/sbin/makepkg -l y -c n $TMP/acpid-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/acpid/doinst.sh b/source/a/acpid/doinst.sh
index c090b9fe5..dfc78d656 100644
--- a/source/a/acpid/doinst.sh
+++ b/source/a/acpid/doinst.sh
@@ -1,11 +1,11 @@
-#!/bin/sh
config() {
NEW="$1"
- OLD="`dirname $NEW`/`basename $NEW .new`"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
# If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
- elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
rm $NEW
fi
# Otherwise, we leave the .new copy for the admin to consider...
diff --git a/source/a/acpid/rc.acpid b/source/a/acpid/rc.acpid
index 32486d17c..d6b74e881 100644
--- a/source/a/acpid/rc.acpid
+++ b/source/a/acpid/rc.acpid
@@ -11,7 +11,11 @@ acpid_start() {
# Stop acpid:
acpid_stop() {
- killall acpid
+ if [ -r /var/run/acpid.pid ]; then
+ kill $(cat /var/run/acpid.pid)
+ else
+ killall acpid
+ fi
}
# Restart acpid:
diff --git a/source/a/bash/bash-4.1-patches/bash41-001 b/source/a/bash/bash-4.1-patches/bash41-001
new file mode 100644
index 000000000..758e1fa40
--- /dev/null
+++ b/source/a/bash/bash-4.1-patches/bash41-001
@@ -0,0 +1,48 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.1
+Patch-ID: bash41-001
+
+Bug-Reported-by: Yann Rouillard <yann@pleiades.fr.eu.org>
+Bug-Reference-ID: <4B44A410.4070107@pleiades.fr.eu.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2010-01/msg00018.html
+
+Bug-Description:
+
+A prototype for vsnprintf was incorrect, and caused compilation failures
+on systems that did not have a suitable vsnprintf, but had a declaration in
+one of the system header files.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.1-patched/builtins/printf.def 2009-11-20 15:31:23.000000000 -0500
+--- builtins/printf.def 2010-01-07 08:50:06.000000000 -0500
+***************
+*** 173,177 ****
+
+ #if !HAVE_VSNPRINTF
+! extern int vsnprintf __P((char *, size_t, const char *, ...)) __attribute__((__format__ (printf, 3, 4)));
+ #endif
+
+--- 173,177 ----
+
+ #if !HAVE_VSNPRINTF
+! extern int vsnprintf __P((char *, size_t, const char *, va_list)) __attribute__((__format__ (printf, 3, 0)));
+ #endif
+
+*** ../bash-4.1-patched/patchlevel.h 2009-10-01 16:39:22.000000000 -0400
+--- patchlevel.h 2010-01-14 09:38:08.000000000 -0500
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 0
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 1
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash-4.1-patches/bash41-002 b/source/a/bash/bash-4.1-patches/bash41-002
new file mode 100644
index 000000000..a1151985c
--- /dev/null
+++ b/source/a/bash/bash-4.1-patches/bash41-002
@@ -0,0 +1,65 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.1
+Patch-ID: bash41-002
+
+Bug-Reported-by: guillaume.outters@free.fr
+Bug-Reference-ID: <20100105230441.70D171AA7F52@asterix.local>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2010-01/msg00017.html
+
+Bug-Description:
+
+Bash-4.1/Readline-6.1 introduced a hook function that allows applications
+to rewrite or modify filenames read from the file system before comparing
+them with a word to be completed. The converted filename, if it matches,
+needs to be inserted into the line buffer, replacing the original contents.
+
+This fixes a completion bug on Mac OS X involving filenames containing
+UTF-8 characters.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.1-patched/lib/readline/complete.c 2009-11-29 18:39:30.000000000 -0500
+--- lib/readline/complete.c 2010-01-06 08:30:23.000000000 -0500
+***************
+*** 2139,2143 ****
+ if (filename_len == 0)
+ {
+! if (_rl_match_hidden_files == 0 && HIDDEN_FILE (entry->d_name))
+ continue;
+
+--- 2139,2143 ----
+ if (filename_len == 0)
+ {
+! if (_rl_match_hidden_files == 0 && HIDDEN_FILE (convfn))
+ continue;
+
+***************
+*** 2220,2224 ****
+ }
+
+! strcpy (temp + dirlen, entry->d_name);
+ }
+ else
+--- 2220,2224 ----
+ }
+
+! strcpy (temp + dirlen, convfn);
+ }
+ else
+*** ../bash-4.1-patched/patchlevel.h 2009-10-01 16:39:22.000000000 -0400
+--- patchlevel.h 2010-01-14 09:38:08.000000000 -0500
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 1
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 2
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash-4.1-patches/bash41-003 b/source/a/bash/bash-4.1-patches/bash41-003
new file mode 100644
index 000000000..479fdcd9d
--- /dev/null
+++ b/source/a/bash/bash-4.1-patches/bash41-003
@@ -0,0 +1,48 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.1
+Patch-ID: bash41-003
+
+Bug-Reported-by: coyote@wariat.org.pl
+Bug-Reference-ID: <4b64a1f8.06e2660a.60af.4bfb@mx.google.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2010-01/msg00135.html
+
+Bug-Description:
+
+If command completion is attempted on a word with a quoted globbing
+character (e.g., `*' or `?'), bash can reference a NULL pointer and
+dump core.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.1-patched/bashline.c 2009-10-24 14:10:19.000000000 -0400
+--- bashline.c 2010-01-30 21:53:49.000000000 -0500
+***************
+*** 1681,1685 ****
+ characters in the common prefix are bad) will ever be returned on
+ regular completion. */
+! if (glob_pattern_p (hint))
+ {
+ if (state == 0)
+--- 1681,1685 ----
+ characters in the common prefix are bad) will ever be returned on
+ regular completion. */
+! if (globpat)
+ {
+ if (state == 0)
+*** ../bash-4.1-patched/patchlevel.h 2009-10-01 16:39:22.000000000 -0400
+--- patchlevel.h 2010-01-14 09:38:08.000000000 -0500
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 2
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 3
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash-4.1-patches/bash41-004 b/source/a/bash/bash-4.1-patches/bash41-004
new file mode 100644
index 000000000..33f79bb7c
--- /dev/null
+++ b/source/a/bash/bash-4.1-patches/bash41-004
@@ -0,0 +1,47 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.1
+Patch-ID: bash41-004
+
+Bug-Reported-by: Crestez Dan Leonard <cdleonard@gmail.com>
+Bug-Reference-ID: <1265592839.30682.21.camel@deskbox>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2010-02/msg00034.html
+
+Bug-Description:
+
+When running in Posix mode and executing a shell function without local
+variables, bash will not propagate a variable in a special builtin's temporary
+environment to have global scope.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.1-patched/variables.c 2009-11-03 14:13:58.000000000 -0500
+--- variables.c 2010-02-08 17:36:18.000000000 -0500
+***************
+*** 3809,3812 ****
+--- 3809,3817 ----
+ if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate)))
+ {
++ /* Make sure we have a hash table to store the variable in while it is
++ being propagated down to the global variables table. Create one if
++ we have to */
++ if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0)
++ shell_variables->table = hash_create (0);
+ /* XXX - should we set v->context here? */
+ v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
+*** ../bash-4.1-patched/patchlevel.h 2009-10-01 16:39:22.000000000 -0400
+--- patchlevel.h 2010-01-14 09:38:08.000000000 -0500
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 3
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 4
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash-4.1-patches/bash41-005 b/source/a/bash/bash-4.1-patches/bash41-005
new file mode 100644
index 000000000..8a2fec8a3
--- /dev/null
+++ b/source/a/bash/bash-4.1-patches/bash41-005
@@ -0,0 +1,56 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.1
+Patch-ID: bash41-005
+
+Bug-Reported-by: werner@suse.de
+Bug-Reference-ID: <201002251238.o1PCcYcg016893@boole.suse.de>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2010-02/msg00132.html
+
+Bug-Description:
+
+When the `read' builtin times out after the timeout specified with -t is
+exceeded, it does not reset the flags that tell signal handlers to process
+signals immediately instead of deferring their handling. This can result
+in unsafe functions being called from signal handlers, which can cause bash
+to hang or dump core.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.1-patched/builtins/read.def 2009-10-08 11:35:46.000000000 -0400
+--- builtins/read.def 2010-03-17 17:35:39.000000000 -0400
+***************
+*** 616,621 ****
+ zsyncfd (fd);
+
+- interrupt_immediately--;
+- terminate_immediately--;
+ discard_unwind_frame ("read_builtin");
+
+--- 616,619 ----
+***************
+*** 624,627 ****
+--- 622,628 ----
+ assign_vars:
+
++ interrupt_immediately--;
++ terminate_immediately--;
++
+ #if defined (ARRAY_VARS)
+ /* If -a was given, take the string read, break it into a list of words,
+*** ../bash-4.1-patched/patchlevel.h 2009-10-01 16:39:22.000000000 -0400
+--- patchlevel.h 2010-01-14 09:38:08.000000000 -0500
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 4
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 5
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash-4.1-patches/bash41-006 b/source/a/bash/bash-4.1-patches/bash41-006
new file mode 100644
index 000000000..d6553b8bb
--- /dev/null
+++ b/source/a/bash/bash-4.1-patches/bash41-006
@@ -0,0 +1,76 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.1
+Patch-ID: bash41-006
+
+Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID: <201003210155.56618.vapier@gentoo.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2010-03/msg00063.html
+
+Bug-Description:
+
+Bash did not correctly print/reproduce here documents attached to commands
+inside compound commands such as for and while. This affected the
+execution of such commands inside a shell function when the function
+definition is saved and later restored using `.' or `eval'.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.1-patched/print_cmd.c 2009-09-16 15:32:26.000000000 -0400
+--- print_cmd.c 2010-03-22 21:15:30.000000000 -0400
+***************
+*** 114,117 ****
+--- 114,123 ----
+ #define CHECK_XTRACE_FP xtrace_fp = (xtrace_fp ? xtrace_fp : stderr)
+
++ #define PRINT_DEFERRED_HEREDOCS(x) \
++ do { \
++ if (deferred_heredocs) \
++ print_deferred_heredocs (x); \
++ } while (0)
++
+ /* Non-zero means the stuff being printed is inside of a function def. */
+ static int inside_function_def;
+***************
+*** 561,571 ****
+ {
+ print_for_command_head (for_command);
+-
+ cprintf (";");
+ newline ("do\n");
+ indentation += indentation_amount;
+ make_command_string_internal (for_command->action);
+ semicolon ();
+ indentation -= indentation_amount;
+ newline ("done");
+ }
+--- 566,578 ----
+ {
+ print_for_command_head (for_command);
+ cprintf (";");
+ newline ("do\n");
++
+ indentation += indentation_amount;
+ make_command_string_internal (for_command->action);
++ PRINT_DEFERRED_HEREDOCS ("");
+ semicolon ();
+ indentation -= indentation_amount;
++
+ newline ("done");
+ }
+*** ../bash-4.1-patched/patchlevel.h 2009-10-01 16:39:22.000000000 -0400
+--- patchlevel.h 2010-01-14 09:38:08.000000000 -0500
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 5
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 6
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash-4.1-patches/bash41-007 b/source/a/bash/bash-4.1-patches/bash41-007
new file mode 100644
index 000000000..07b4796c4
--- /dev/null
+++ b/source/a/bash/bash-4.1-patches/bash41-007
@@ -0,0 +1,47 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.1
+Patch-ID: bash41-007
+
+Bug-Reported-by: Rob Robason <rob@robason.net>
+Bug-Reference-ID: <1269513145.22336.9.camel@home.robason.homelinux.net>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2010-03/msg00089.html
+
+Bug-Description:
+
+A typo caused bash to not honor a precision specification in a printf
+format.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.1-patched/builtins/printf.def 2010-01-18 10:50:22.000000000 -0500
+--- builtins/printf.def 2010-03-25 09:40:56.000000000 -0400
+***************
+*** 118,122 ****
+ nw = vflag ? vbprintf (f, fieldwidth, func) : printf (f, fieldwidth, func); \
+ else if (have_precision) \
+! nw = vflag ? vbprintf (f, precision, func) : printf (f, fieldwidth, func); \
+ else \
+ nw = vflag ? vbprintf (f, func) : printf (f, func); \
+--- 118,122 ----
+ nw = vflag ? vbprintf (f, fieldwidth, func) : printf (f, fieldwidth, func); \
+ else if (have_precision) \
+! nw = vflag ? vbprintf (f, precision, func) : printf (f, precision, func); \
+ else \
+ nw = vflag ? vbprintf (f, func) : printf (f, func); \
+*** ../bash-4.1-patched/patchlevel.h 2009-10-01 16:39:22.000000000 -0400
+--- patchlevel.h 2010-01-14 09:38:08.000000000 -0500
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 6
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 7
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash.SlackBuild b/source/a/bash/bash.SlackBuild
index 04c8ff953..32ce9a40d 100755
--- a/source/a/bash/bash.SlackBuild
+++ b/source/a/bash/bash.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,14 +20,26 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=3.1
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
+# Set initial variables:
+CWD=`pwd`
+if [ "$TMP" = "" ]; then
+ TMP=/tmp
+fi
PKG=$TMP/package-bash
+VERSION=${VERSION:-$(echo bash-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i486" ]; then
@@ -36,52 +48,98 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP # location to build the source
+fi
rm -rf $PKG
-mkdir -p $TMP $PKG
+mkdir -p $PKG
# Determine bash patchlevel:
-PATCHLEVEL=`( cd $CWD/patches ; /bin/ls *gz | tail -1 | cut -f 2 -d - | cut -f 1 -d . 2> /dev/null )`
+PATCHLEVEL="$( cd $CWD/bash-${VERSION}-patches ; /bin/ls bash4?-??? | tail -1 | cut -f 2 -d - 2> /dev/null )"
if [ "$PATCHLEVEL" = "" ]; then
PATCHLEVEL=0
fi
cd $TMP
rm -rf bash-$VERSION
-tar xzvf $CWD/bash-$VERSION.tar.gz || exit 1
-cd bash-$VERSION
+tar xvf $CWD/bash-$VERSION.tar.?z* || exit 1
+cd bash-$VERSION || exit 1
chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-for patch in $CWD/patches/bash* ; do
- zcat $patch | patch -p0 --verbose || exit 1
-done
+find . -perm 664 | xargs chmod 644
+find . -perm 775 | xargs chmod 755
+
+if [ -d $CWD/bash-${VERSION}-patches ]; then
+ ( cd $CWD/bash-${VERSION}-patches ; cat bash4?-??? ) | patch -p0 --verbose || exit 1
+fi
+
CFLAGS="$SLKCFLAGS" \
-./configure --prefix=/usr $ARCH-slackware-linux
-make -j3 || exit 1
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --build=$ARCH-slackware-linux
+make -j4 || make || exit 1
make install DESTDIR=$PKG
+mv $PKG/usr/share/doc $PKG/usr
mkdir -p $PKG/bin
-mv $PKG/usr/bin/bash $PKG/bin/bash2.new
-strip --strip-unneeded $PKG/bin/bash2.new
+mv $PKG/usr/bin/bash $PKG/bin/bash4.new
# We don't include the "bashbug" script.
rm -rf $PKG/usr/bin $PKG/usr/man/man1/bashbug.1
-gzip -9 $PKG/usr/man/man1/*
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# bash.1 is already installed by "make install"
+( cd doc
+ for page in builtins.1 rbash.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
+ done
+)
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
mkdir -p $PKG/usr/doc/bash-$VERSION
cp -a AUTHORS CHANGES COMPAT COPYING INSTALL MANIFEST NEWS NOTES \
- README Y2K doc/FAQ doc/INTRO $PKG/usr/doc/bash-$VERSION
-cd doc
-groff -ms -Tascii article.ms > $PKG/usr/doc/bash-$VERSION/article.txt
-# bash.1 is already installed by "make install"
-for page in builtins.1 rbash.1 ; do
- cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
-done
-rm -f $PKG/usr/info/dir
-gzip -9 $PKG/usr/info/*
+ README Y2K doc/FAQ doc/INTRO \
+ $PKG/usr/doc/bash-$VERSION
+( cd doc ; groff -ms -Tascii article.ms > $PKG/usr/doc/bash-$VERSION/article.txt )
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
@@ -90,8 +148,3 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
makepkg -l y -c n $TMP/bash-$VERSION.$PATCHLEVEL-$ARCH-$BUILD.txz
-# Clean up the extra stuff:
-if [ "$1" = "--cleanup" ]; then
- rm -rf $TMP/bash-$VERSION
- rm -rf $PKG
-fi
diff --git a/source/a/bash/doinst.sh b/source/a/bash/doinst.sh
index 21760838d..867958fb8 100644
--- a/source/a/bash/doinst.sh
+++ b/source/a/bash/doinst.sh
@@ -1,7 +1,7 @@
if [ -r bin/bash ]; then
mv bin/bash bin/bash.old
fi
-mv bin/bash2.new bin/bash
+mv bin/bash4.new bin/bash
if [ -f bin/bash.old ]; then
rm -f bin/bash.old
fi
@@ -9,10 +9,10 @@ if [ ! -r etc/shells ]; then
touch etc/shells
chmod 644 etc/shells
fi
-if fgrep "/bin/bash" etc/shells 1> /dev/null 2> /dev/null ; then
+if grep -wq /bin/bash etc/shells ; then
true
else
- echo "/bin/bash" >> etc/shells
+ echo /bin/bash >> etc/shells
fi
( cd usr/bin ; rm -rf bash )
( cd usr/bin ; ln -sf /bin/bash bash )
diff --git a/source/a/bash/patches/bash31-001 b/source/a/bash/patches/bash31-001
deleted file mode 100644
index 4a10a02c1..000000000
--- a/source/a/bash/patches/bash31-001
+++ /dev/null
@@ -1,104 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-001
-
-Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
-Bug-Reference-ID: <20051212015924.GA820@toucan.gentoo.org> <20051214034438.GK1863@toucan.gentoo.org>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00030.html http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00041.html
-
-Bug-Description:
-
-There are parsing problems with compound assignments in several contexts,
-including as arguments to builtins like `local', `eval', and `let', and
-as multiple assignments in a single command.
-
-Patch:
-
-*** ../bash-3.1/parse.y Fri Nov 11 23:14:18 2005
---- parse.y Fri Dec 16 20:43:07 2005
-***************
-*** 3696,3700 ****
- b = builtin_address_internal (token, 0);
- if (b && (b->flags & ASSIGNMENT_BUILTIN))
-! parser_state |= PST_ASSIGNOK;
- }
-
---- 3696,3702 ----
- b = builtin_address_internal (token, 0);
- if (b && (b->flags & ASSIGNMENT_BUILTIN))
-! parser_state |= PST_ASSIGNOK;
-! else if (STREQ (token, "eval") || STREQ (token, "let"))
-! parser_state |= PST_ASSIGNOK;
- }
-
-***************
-*** 4687,4691 ****
- {
- WORD_LIST *wl, *rl;
-! int tok, orig_line_number, orig_token_size;
- char *saved_token, *ret;
-
---- 4689,4693 ----
- {
- WORD_LIST *wl, *rl;
-! int tok, orig_line_number, orig_token_size, orig_last_token, assignok;
- char *saved_token, *ret;
-
-***************
-*** 4693,4696 ****
---- 4695,4699 ----
- orig_token_size = token_buffer_size;
- orig_line_number = line_number;
-+ orig_last_token = last_read_token;
-
- last_read_token = WORD; /* WORD to allow reserved words here */
-***************
-*** 4699,4702 ****
---- 4702,4707 ----
- token_buffer_size = 0;
-
-+ assignok = parser_state&PST_ASSIGNOK; /* XXX */
-+
- wl = (WORD_LIST *)NULL; /* ( */
- parser_state |= PST_COMPASSIGN;
-***************
-*** 4741,4745 ****
- }
-
-! last_read_token = WORD;
- if (wl)
- {
---- 4746,4750 ----
- }
-
-! last_read_token = orig_last_token; /* XXX - was WORD? */
- if (wl)
- {
-***************
-*** 4753,4756 ****
---- 4758,4765 ----
- if (retlenp)
- *retlenp = (ret && *ret) ? strlen (ret) : 0;
-+
-+ if (assignok)
-+ parser_state |= PST_ASSIGNOK;
-+
- return ret;
- }
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 0
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 1
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-002 b/source/a/bash/patches/bash31-002
deleted file mode 100644
index fac9a99af..000000000
--- a/source/a/bash/patches/bash31-002
+++ /dev/null
@@ -1,239 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-002
-
-Bug-Reported-by: vapier@gentoo.org
-Bug-Reference-ID: <20051210223218.GD3324@toucan.gentoo.org>
-Bug-Reference-URL:http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00021.html
-
-Bug-Description:
-
-This corrects several omissions in the bash documentation: It adds the new
-options to `ulimit', the exact expansions for `case' patterns, clarification
-of the language concerning the return value of `[[', and updated version
-information.
-
-Patch:
-
-*** ../bash-3.1/doc/bash.1 Wed Oct 12 11:40:52 2005
---- doc/bash.1 Wed Dec 28 19:58:54 2005
-***************
-*** 7,16 ****
- .\" chet@po.cwru.edu
- .\"
-! .\" Last Change: Sat Aug 27 13:28:44 EDT 2005
- .\"
- .\" bash_builtins, strip all but Built-Ins section
- .if \n(zZ=1 .ig zZ
- .if \n(zY=1 .ig zY
-! .TH BASH 1 "2005 Aug 27" "GNU Bash-3.1-beta1"
- .\"
- .\" There's some problem with having a `@'
---- 7,16 ----
- .\" chet@po.cwru.edu
- .\"
-! .\" Last Change: Wed Dec 28 19:58:45 EST 2005
- .\"
- .\" bash_builtins, strip all but Built-Ins section
- .if \n(zZ=1 .ig zZ
- .if \n(zY=1 .ig zY
-! .TH BASH 1 "2005 Dec 28" "GNU Bash-3.1"
- .\"
- .\" There's some problem with having a `@'
-***************
-*** 678,683 ****
- is enabled, the match is performed without regard to the case
- of alphabetic characters.
-! The return value is 0 if the string matches or does not match
-! the pattern, respectively, and 1 otherwise.
- Any part of the pattern may be quoted to force it to be matched as a
- string.
---- 678,683 ----
- is enabled, the match is performed without regard to the case
- of alphabetic characters.
-! The return value is 0 if the string matches (\fB==\fP) or does not match
-! (\fB!=\fP) the pattern, and 1 otherwise.
- Any part of the pattern may be quoted to force it to be matched as a
- string.
-***************
-*** 808,811 ****
---- 808,817 ----
- .B Pathname Expansion
- below).
-+ The \fIword\fP is expanded using tilde
-+ expansion, parameter and variable expansion, arithmetic substituion,
-+ command substitution, process substitution and quote removal.
-+ Each \fIpattern\fP examined is expanded using tilde
-+ expansion, parameter and variable expansion, arithmetic substituion,
-+ command substitution, and process substitution.
- If the shell option
- .B nocasematch
-***************
-*** 8485,8489 ****
- none are found.
- .TP
-! \fBulimit\fP [\fB\-SHacdflmnpstuv\fP [\fIlimit\fP]]
- Provides control over the resources available to the shell and to
- processes started by it, on systems that allow such control.
---- 8485,8489 ----
- none are found.
- .TP
-! \fBulimit\fP [\fB\-SHacdfilmnpqstuvx\fP [\fIlimit\fP]]
- Provides control over the resources available to the shell and to
- processes started by it, on systems that allow such control.
-***************
-*** 8524,8527 ****
---- 8524,8530 ----
- The maximum size of files created by the shell
- .TP
-+ .B \-i
-+ The maximum number of pending signals
-+ .TP
- .B \-l
- The maximum size that may be locked into memory
-***************
-*** 8537,8540 ****
---- 8540,8546 ----
- The pipe size in 512-byte blocks (this may not be set)
- .TP
-+ .B \-q
-+ The maximum number of bytes in POSIX message queues
-+ .TP
- .B \-s
- The maximum stack size
-***************
-*** 8548,8551 ****
---- 8554,8560 ----
- .B \-v
- The maximum amount of virtual memory available to the shell
-+ .TP
-+ .B \-x
-+ The maximum number of file locks
- .PD
- .PP
-*** ../bash-3.1/doc/bashref.texi Mon Oct 3 15:07:21 2005
---- doc/bashref.texi Fri Dec 30 10:50:39 2005
-***************
-*** 962,967 ****
- is enabled, the match is performed without regard to the case
- of alphabetic characters.
-! The return value is 0 if the string matches or does not match
-! the pattern, respectively, and 1 otherwise.
- Any part of the pattern may be quoted to force it to be matched as a
- string.
---- 962,967 ----
- is enabled, the match is performed without regard to the case
- of alphabetic characters.
-! The return value is 0 if the string matches (@samp{==}) or does not
-! match (@samp{!=})the pattern, and 1 otherwise.
- Any part of the pattern may be quoted to force it to be matched as a
- string.
-***************
-*** 2599,2603 ****
- or inconvenient to obtain with separate utilities.
-
-! This section briefly the builtins which Bash inherits from
- the Bourne Shell, as well as the builtin commands which are unique
- to or have been extended in Bash.
---- 2597,2601 ----
- or inconvenient to obtain with separate utilities.
-
-! This section briefly describes the builtins which Bash inherits from
- the Bourne Shell, as well as the builtin commands which are unique
- to or have been extended in Bash.
-***************
-*** 3834,3838 ****
- @btindex ulimit
- @example
-! ulimit [-acdflmnpstuvSH] [@var{limit}]
- @end example
- @code{ulimit} provides control over the resources available to processes
---- 3834,3838 ----
- @btindex ulimit
- @example
-! ulimit [-acdfilmnpqstuvxSH] [@var{limit}]
- @end example
- @code{ulimit} provides control over the resources available to processes
-***************
-*** 3858,3861 ****
---- 3858,3864 ----
- The maximum size of files created by the shell.
-
-+ @item -i
-+ The maximum number of pending signals.
-+
- @item -l
- The maximum size that may be locked into memory.
-***************
-*** 3870,3873 ****
---- 3873,3879 ----
- The pipe buffer size.
-
-+ @item -q
-+ The maximum number of bytes in POSIX message queues.
-+
- @item -s
- The maximum stack size.
-***************
-*** 3882,3885 ****
---- 3888,3894 ----
- The maximum amount of virtual memory available to the process.
-
-+ @item -x
-+ The maximum number of file locks.
-+
- @end table
-
-***************
-*** 4090,4095 ****
-
- @item -x
-! Print a trace of simple commands, \fBfor\fP commands, \fBcase\fP
-! commands, \fBselect\fP commands, and arithmetic \fBfor\fP commands
- and their arguments or associated word lists after they are
- expanded and before they are executed. The value of the @env{PS4}
---- 4103,4108 ----
-
- @item -x
-! Print a trace of simple commands, @code{for} commands, @code{case}
-! commands, @code{select} commands, and arithmetic @code{for} commands
- and their arguments or associated word lists after they are
- expanded and before they are executed. The value of the @env{PS4}
-*** ../bash-3.1/doc/version.texi Tue Sep 20 14:52:56 2005
---- doc/version.texi Fri Dec 30 10:50:58 2005
-***************
-*** 3,10 ****
- @end ignore
-
-! @set LASTCHANGE Mon Sep 5 11:47:04 EDT 2005
-
-! @set EDITION 3.1-beta1
-! @set VERSION 3.1-beta1
-! @set UPDATED 5 September 2005
-! @set UPDATED-MONTH September 2005
---- 3,10 ----
- @end ignore
-
-! @set LASTCHANGE Fri Dec 30 10:50:51 EST 2005
-
-! @set EDITION 3.1
-! @set VERSION 3.1
-! @set UPDATED 30 December 2005
-! @set UPDATED-MONTH December 2005
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 1
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 2
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-003 b/source/a/bash/patches/bash31-003
deleted file mode 100644
index cd36dc83e..000000000
--- a/source/a/bash/patches/bash31-003
+++ /dev/null
@@ -1,47 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-003
-
-Bug-Reported-by: Adam Buraczewski <adamb@nor.pl>
-Bug-Reference-ID: <200512210950.jBL9o4C2008608@localhost.localdomain>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00055.html
-
-Bug-Description:
-
-A missing #define guard causes bash to not compile when readline is not
-configured in, either as the result of explicit disabling or when the
-`--enable-minimal-config' option is given to configure.
-
-Patch:
-
-*** ../bash-3.1/variables.c Sat Nov 12 21:22:37 2005
---- variables.c Mon Dec 26 13:34:03 2005
-***************
-*** 861,867 ****
---- 863,871 ----
- char val[INT_STRLEN_BOUND(int) + 1], *v;
-
-+ #if defined (READLINE)
- /* If we are currently assigning to LINES or COLUMNS, don't do anything. */
- if (winsize_assignment)
- return;
-+ #endif
-
- v = inttostr (lines, val, sizeof (val));
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 2
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 3
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-004 b/source/a/bash/patches/bash31-004
deleted file mode 100644
index 4f9d578ef..000000000
--- a/source/a/bash/patches/bash31-004
+++ /dev/null
@@ -1,48 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-004
-
-Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
-Bug-Reference-ID: <20051223172359.GF14579@toucan.gentoo.org>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00062.html
-
-Bug-Description:
-
-A local array variable declared at function scope that shadows a variable
-of the same name declared in a previous scope did not create a separate
-variable instance, but used the previous one.
-
-Patch:
-
-*** ../bash-3.1/subst.c Mon Oct 24 09:51:13 2005
---- subst.c Fri Dec 30 12:11:53 2005
-***************
-*** 2188,2192 ****
- {
- v = find_variable (name);
-! if (v == 0 || array_p (v) == 0)
- v = make_local_array_variable (name);
- v = assign_array_var_from_string (v, value, flags);
---- 2188,2192 ----
- {
- v = find_variable (name);
-! if (v == 0 || array_p (v) == 0 || v->context != variable_context)
- v = make_local_array_variable (name);
- v = assign_array_var_from_string (v, value, flags);
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 3
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 4
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-005 b/source/a/bash/patches/bash31-005
deleted file mode 100644
index b6d5cdca8..000000000
--- a/source/a/bash/patches/bash31-005
+++ /dev/null
@@ -1,54 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-005
-
-Bug-Reported-by:
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-When tilde expansion fails, POSIX leaves it unspecified whether or not the
-word undergoes the additional word expansions. Bash-3.1 as distributed
-skipped the rest of the expansions; this patch restores the bash-3.0 behavior.
-
-This means that something like
- USER=ratbert
- echo ~$USER
-
-will echo `~ratbert' rather than `~$USER'.
-
-Patch:
-
-*** ../bash-3.1/subst.c Mon Oct 24 09:51:13 2005
---- subst.c Fri Dec 30 12:11:53 2005
-***************
-*** 6796,6799 ****
---- 6823,6832 ----
- {
- temp1 = bash_tilde_expand (temp, tflag);
-+ if (temp1 && *temp1 == '~' && STREQ (temp, temp1))
-+ {
-+ FREE (temp);
-+ FREE (temp1);
-+ goto add_character; /* tilde expansion failed */
-+ }
- free (temp);
- temp = temp1;
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 4
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 5
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-006 b/source/a/bash/patches/bash31-006
deleted file mode 100644
index 8d7499381..000000000
--- a/source/a/bash/patches/bash31-006
+++ /dev/null
@@ -1,58 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-006
-
-Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
-Bug-Reference-ID: <200601120613.11907.vapier@gentoo.org>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00045.html
-
-Bug-Description:
-
-Under some circumstances, Bash can use an incorrect setting for the flag
-that indicates whether or not the terminal can auto-wrap, resulting in line-
-wrapping errors.
-
-Patch:
-
-*** ../bash-3.1/lib/readline/terminal.c Sat Nov 12 20:46:54 2005
---- lib/readline/terminal.c Tue Jan 31 10:57:54 2006
-***************
-*** 123,127 ****
-
- /* Non-zero means the terminal can auto-wrap lines. */
-! int _rl_term_autowrap;
-
- /* Non-zero means that this terminal has a meta key. */
---- 126,130 ----
-
- /* Non-zero means the terminal can auto-wrap lines. */
-! int _rl_term_autowrap = -1;
-
- /* Non-zero means that this terminal has a meta key. */
-***************
-*** 275,278 ****
---- 278,284 ----
- int rows, cols;
- {
-+ if (_rl_term_autowrap == -1)
-+ _rl_init_terminal_io (rl_terminal_name);
-+
- if (rows > 0)
- _rl_screenheight = rows;
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 5
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 6
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-007 b/source/a/bash/patches/bash31-007
deleted file mode 100644
index 6233786c4..000000000
--- a/source/a/bash/patches/bash31-007
+++ /dev/null
@@ -1,121 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-007
-
-Bug-Reported-by: Tim Waugh <twaugh@redhat.com>, Laird Breyer <laird@lbreyer.com>
-Bug-Reference-ID: <20060105174434.GY16000@redhat.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00009.html
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=347695
-
-Bug-Description:
-
-When the number of saved jobs exceeds the initial size of the jobs array
-(4096 slots), the array must be compacted and reallocated. An error in
-the code to do that could cause a segmentation fault.
-
-Patch:
-
-*** ../bash-3.1/jobs.c Fri Nov 11 23:13:27 2005
---- jobs.c Wed Feb 1 13:55:38 2006
-***************
-*** 845,851 ****
- {
- sigset_t set, oset;
-! int nsize, i, j;
- JOB **nlist;
-
- nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS);
- nsize *= JOB_SLOTS;
---- 888,895 ----
- {
- sigset_t set, oset;
-! int nsize, i, j, ncur, nprev;
- JOB **nlist;
-
-+ ncur = nprev = NO_JOB;
- nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS);
- nsize *= JOB_SLOTS;
-***************
-*** 855,869 ****
-
- BLOCK_CHILD (set, oset);
-! nlist = (JOB **) xmalloc (nsize * sizeof (JOB *));
- for (i = j = 0; i < js.j_jobslots; i++)
- if (jobs[i])
-! nlist[j++] = jobs[i];
-
- js.j_firstj = 0;
-! js.j_lastj = (j > 0) ? j - 1: 0;
- js.j_jobslots = nsize;
-
-! free (jobs);
-! jobs = nlist;
-
- UNBLOCK_CHILD (oset);
---- 899,947 ----
-
- BLOCK_CHILD (set, oset);
-! nlist = (js.j_jobslots == nsize) ? jobs : (JOB **) xmalloc (nsize * sizeof (JOB *));
-!
- for (i = j = 0; i < js.j_jobslots; i++)
- if (jobs[i])
-! {
-! if (i == js.j_current)
-! ncur = j;
-! if (i == js.j_previous)
-! nprev = j;
-! nlist[j++] = jobs[i];
-! }
-!
-! #if defined (DEBUG)
-! itrace ("realloc_jobs_list: resize jobs list from %d to %d", js.j_jobslots, nsize);
-! itrace ("realloc_jobs_list: j_lastj changed from %d to %d", js.j_lastj, (j > 0) ? j - 1 : 0);
-! itrace ("realloc_jobs_list: j_njobs changed from %d to %d", js.j_njobs, (j > 0) ? j - 1 : 0);
-! #endif
-
- js.j_firstj = 0;
-! js.j_lastj = (j > 0) ? j - 1 : 0;
-! js.j_njobs = j;
- js.j_jobslots = nsize;
-
-! /* Zero out remaining slots in new jobs list */
-! for ( ; j < nsize; j++)
-! nlist[j] = (JOB *)NULL;
-!
-! if (jobs != nlist)
-! {
-! free (jobs);
-! jobs = nlist;
-! }
-!
-! if (ncur != NO_JOB)
-! js.j_current = ncur;
-! if (nprev != NO_JOB)
-! js.j_previous = nprev;
-!
-! /* Need to reset these */
-! if (js.j_current == NO_JOB || js.j_previous == NO_JOB || js.j_current > js.j_lastj || js.j_previous > js.j_lastj)
-! reset_current ();
-!
-! #ifdef DEBUG
-! itrace ("realloc_jobs_list: reset js.j_current (%d) and js.j_previous (%d)", js.j_current, js.j_previous);
-! #endif
-
- UNBLOCK_CHILD (oset);
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 6
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 7
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-008 b/source/a/bash/patches/bash31-008
deleted file mode 100644
index 3427b64e0..000000000
--- a/source/a/bash/patches/bash31-008
+++ /dev/null
@@ -1,51 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-008
-
-Bug-Reported-by: Ingemar Nilsson <init@kth.se>
-Bug-Reference-ID: <43C38D35.7020404@kth.se>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00044.html
-
-Bug-Description:
-
-In some cases, bash inappropriately allows SIGINT from the terminal to
-reach background processes.
-
-Patch:
-
-*** ../bash-3.1/jobs.c Fri Nov 11 23:13:27 2005
---- jobs.c Wed Feb 1 13:55:38 2006
-***************
-*** 2199,2203 ****
- wait_sigint_received = 0;
- if (job_control == 0)
-! old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
-
- termination_state = last_command_exit_value;
---- 2298,2306 ----
- wait_sigint_received = 0;
- if (job_control == 0)
-! {
-! old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
-! if (old_sigint_handler == SIG_IGN)
-! set_signal_handler (SIGINT, old_sigint_handler);
-! }
-
- termination_state = last_command_exit_value;
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 7
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 8
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-009 b/source/a/bash/patches/bash31-009
deleted file mode 100644
index 8ef229585..000000000
--- a/source/a/bash/patches/bash31-009
+++ /dev/null
@@ -1,66 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-009
-
-Bug-Reported-by: Joshua Neuheisel <jneuheisel@gmail.com>
-Bug-Reference-ID: <25d873330601140820v4ad8efd2t8bf683b073c138b3@mail.gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00062.html
-
-Bug-Description:
-
-Under some circumstances, background (asynchronous) jobs can set the terminal
-process group incorrectly. This can cause a foreground process (including
-the foreground shell) to get read errors and exit.
-
-Patch:
-
-*** ../bash-3.1/jobs.c Fri Nov 11 23:13:27 2005
---- jobs.c Wed Feb 1 13:55:38 2006
-***************
-*** 620,625 ****
- * the parent gives it away.
- *
- */
-! if (job_control && newjob->pgrp)
- give_terminal_to (newjob->pgrp, 0);
- }
---- 634,642 ----
- * the parent gives it away.
- *
-+ * Don't give the terminal away if this shell is an asynchronous
-+ * subshell.
-+ *
- */
-! if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0)
- give_terminal_to (newjob->pgrp, 0);
- }
-***************
-*** 1656,1660 ****
- shell's process group (we could be in the middle of a
- pipeline, for example). */
-! if (async_p == 0 && pipeline_pgrp != shell_pgrp)
- give_terminal_to (pipeline_pgrp, 0);
-
---- 1743,1747 ----
- shell's process group (we could be in the middle of a
- pipeline, for example). */
-! if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0))
- give_terminal_to (pipeline_pgrp, 0);
-
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 8
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 9
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-010 b/source/a/bash/patches/bash31-010
deleted file mode 100644
index 066a3242d..000000000
--- a/source/a/bash/patches/bash31-010
+++ /dev/null
@@ -1,54 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-010
-
-Bug-Reported-by: vw@vonwolff.de
-Bug-Reference-ID: <20060123135234.1AC2F1D596@wst07.vonwolff.de>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00090.html
-
-Bug-Description:
-
-There is a difference in behavior between bash-3.0 and bash-3.1 involving
-parsing of single- and double-quoted strings occurring in old-style
-command substitution. The difference has to do with how backslashes are
-processed. This patch restores a measure of backwards compatibility while
-the question of POSIX conformance and ultimately correct behavior is discussed.
-
-Patch:
-
-*** ../bash-3.1/parse.y Fri Nov 11 23:14:18 2005
---- parse.y Wed Jan 25 14:55:18 2006
-***************
-*** 2899,2903 ****
- else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0)
- {
-! nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags);
- goto add_nestret;
- }
---- 2901,2909 ----
- else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0)
- {
-! /* Add P_ALLOWESC so backslash quotes the next character and
-! shell_getc does the right thing with \<newline>. We do this for
-! a measure of backwards compatibility -- it's not strictly the
-! right POSIX thing. */
-! nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags|P_ALLOWESC);
- goto add_nestret;
- }
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 9
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 10
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-011 b/source/a/bash/patches/bash31-011
deleted file mode 100644
index 025b83907..000000000
--- a/source/a/bash/patches/bash31-011
+++ /dev/null
@@ -1,47 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-011
-
-Bug-Reported-by: Mike Stroyan <mike.stroyan@hp.com>
-Bug-Reference-ID: <E1EvwxP-0004LD-GC@localhost.localdomain>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00033.html
-
-Bug-Description:
-
-A change in bash-3.1 caused the single quotes to be stripped from ANSI-C
-quoting inside double-quoted command substitutions.
-
-Patch:
-
-*** ../bash-3.1/parse.y Fri Nov 11 23:14:18 2005
---- parse.y Wed Jan 25 14:55:18 2006
-***************
-*** 2908,2912 ****
- count--;
- if (ch == '(') /* ) */
-! nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags);
- else if (ch == '{') /* } */
- nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags);
---- 2914,2918 ----
- count--;
- if (ch == '(') /* ) */
-! nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags & ~P_DQUOTE);
- else if (ch == '{') /* } */
- nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags);
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 10
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 11
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-012 b/source/a/bash/patches/bash31-012
deleted file mode 100644
index b0ddb3a48..000000000
--- a/source/a/bash/patches/bash31-012
+++ /dev/null
@@ -1,47 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-012
-
-Bug-Reported-by: Alexander Kshevetskiy <alex@dgap.mipt.ru>
-Bug-Reference-ID: <308374997.20060124175849@dgap.mipt.ru>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00097.html
-
-Bug-Description:
-
-There is a parsing problem involving parentheses in assignment statements
-that causes words to be terminated prematurely.
-
-Patch:
-
-*** ../bash-3.1/parse.y Fri Nov 11 23:14:18 2005
---- parse.y Wed Jan 25 14:55:18 2006
-***************
-*** 3579,3583 ****
- all_digit_token = 0;
- compound_assignment = 1;
-! #if 0
- goto next_character;
- #else
---- 3584,3588 ----
- all_digit_token = 0;
- compound_assignment = 1;
-! #if 1
- goto next_character;
- #else
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 11
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 12
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-013 b/source/a/bash/patches/bash31-013
deleted file mode 100644
index 93c7c8fc8..000000000
--- a/source/a/bash/patches/bash31-013
+++ /dev/null
@@ -1,44 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-013
-
-Bug-Reported-by: Bob Rossi <bob@brasko.net>
-Bug-Reference-ID: <43F60606.80708@case.edu>
-Bug-Reference-URL:
-
-Bug-Description:
-
-In some cases, readline will reference freed memory when attempting to
-display a portion of the prompt.
-
-Patch:
-
-*** ../bash-3.1-patched/lib/readline/readline.c Mon Jul 4 22:29:35 2005
---- lib/readline/readline.c Fri Feb 17 22:54:22 2006
-***************
-*** 282,287 ****
---- 282,288 ----
- {
- FREE (rl_prompt);
- rl_prompt = prompt ? savestring (prompt) : (char *)NULL;
-+ rl_display_prompt = rl_prompt ? rl_prompt : "";
-
- rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
- return 0;
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 12
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 13
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-014 b/source/a/bash/patches/bash31-014
deleted file mode 100644
index 82ff9b408..000000000
--- a/source/a/bash/patches/bash31-014
+++ /dev/null
@@ -1,105 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-014
-
-Bug-Reported-by: Mike Stroyan <mike.stroyan@hp.com>
-Bug-Reference-ID: <20060203191607.GC27614@localhost>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00004.html
-
-Bug-Description:
-
-The displayed search prompt is corrupted when using non-incremental
-searches in vi and emacs mode if the prompt contains non-printing
-characters or spans multiple lines. The prompt is expanded more than
-once; the second time without the escape sequences that protect non-
-printing characters from the length calculations.
-
-Patch:
-
-*** ../bash-3.1-patched/lib/readline/display.c Wed Nov 30 14:05:02 2005
---- lib/readline/display.c Sat Feb 18 12:14:58 2006
-***************
-*** 1983,1993 ****
- int pchar;
- {
- int len;
-! char *pmt;
-
- rl_save_prompt ();
-
-! if (saved_local_prompt == 0)
- {
- len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
- pmt = (char *)xmalloc (len + 2);
---- 1998,2012 ----
- int pchar;
- {
- int len;
-! char *pmt, *p;
-
- rl_save_prompt ();
-
-! /* We've saved the prompt, and can do anything with the various prompt
-! strings we need before they're restored. We want the unexpanded
-! portion of the prompt string after any final newline. */
-! p = rl_prompt ? strrchr (rl_prompt, '\n') : 0;
-! if (p == 0)
- {
- len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
- pmt = (char *)xmalloc (len + 2);
-***************
-*** 1998,2016 ****
- }
- else
- {
-! len = *saved_local_prompt ? strlen (saved_local_prompt) : 0;
- pmt = (char *)xmalloc (len + 2);
- if (len)
-! strcpy (pmt, saved_local_prompt);
- pmt[len] = pchar;
- pmt[len+1] = '\0';
-! local_prompt = savestring (pmt);
-! prompt_last_invisible = saved_last_invisible;
-! prompt_visible_length = saved_visible_length + 1;
-! }
-
- prompt_physical_chars = saved_physical_chars + 1;
--
- return pmt;
- }
-
---- 2017,2033 ----
- }
- else
- {
-! p++;
-! len = strlen (p);
- pmt = (char *)xmalloc (len + 2);
- if (len)
-! strcpy (pmt, p);
- pmt[len] = pchar;
- pmt[len+1] = '\0';
-! }
-
-+ /* will be overwritten by expand_prompt, called from rl_message */
- prompt_physical_chars = saved_physical_chars + 1;
- return pmt;
- }
-
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 13
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 14
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-015 b/source/a/bash/patches/bash31-015
deleted file mode 100644
index deb9eed58..000000000
--- a/source/a/bash/patches/bash31-015
+++ /dev/null
@@ -1,106 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-015
-
-Bug-Reported-by: Benoit Vila
-Bug-Reference-ID: <43FCA614.1090108@free.fr>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00058.html
-
-Bug-Description:
-
-A problem with the extended globbing code prevented dots from matching
-filenames when used in some extended matching patterns.
-
-Patch:
-
-*** ../bash-3.1-patched/lib/glob/sm_loop.c Sun Oct 16 21:21:04 2005
---- lib/glob/sm_loop.c Mon Feb 27 17:18:43 2006
-***************
-*** 639,643 ****
- CHAR *pnext; /* pointer to next sub-pattern */
- CHAR *srest; /* pointer to rest of string */
-! int m1, m2;
-
- #if DEBUG_MATCHING
---- 638,642 ----
- CHAR *pnext; /* pointer to next sub-pattern */
- CHAR *srest; /* pointer to rest of string */
-! int m1, m2, xflags; /* xflags = flags passed to recursive matches */
-
- #if DEBUG_MATCHING
-***************
-*** 645,648 ****
---- 644,648 ----
- fprintf(stderr, "extmatch: s = %s; se = %s\n", s, se);
- fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe);
-+ fprintf(stderr, "extmatch: flags = %d\n", flags);
- #endif
-
-***************
-*** 678,683 ****
- multiple matches of the pattern. */
- if (m1)
-! m2 = (GMATCH (srest, se, prest, pe, flags) == 0) ||
-! (s != srest && GMATCH (srest, se, p - 1, pe, flags) == 0);
- if (m1 && m2)
- return (0);
---- 678,687 ----
- multiple matches of the pattern. */
- if (m1)
-! {
-! /* if srest > s, we are not at start of string */
-! xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
-! m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) ||
-! (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0);
-! }
- if (m1 && m2)
- return (0);
-***************
-*** 705,710 ****
- for ( ; srest <= se; srest++)
- {
- if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 &&
-! GMATCH (srest, se, prest, pe, flags) == 0)
- return (0);
- }
---- 709,716 ----
- for ( ; srest <= se; srest++)
- {
-+ /* if srest > s, we are not at start of string */
-+ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
- if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 &&
-! GMATCH (srest, se, prest, pe, xflags) == 0)
- return (0);
- }
-***************
-*** 727,731 ****
- break;
- }
-! if (m1 == 0 && GMATCH (srest, se, prest, pe, flags) == 0)
- return (0);
- }
---- 733,739 ----
- break;
- }
-! /* if srest > s, we are not at start of string */
-! xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
-! if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0)
- return (0);
- }
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 14
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 15
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-016 b/source/a/bash/patches/bash31-016
deleted file mode 100644
index fa0ffe1c7..000000000
--- a/source/a/bash/patches/bash31-016
+++ /dev/null
@@ -1,51 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-016
-
-Bug-Reported-by: Nikita Danilov <nikita@clusterfs.com>
-Bug-Reference-ID: <17397.51015.769854.541057@gargle.gargle.HOWL>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00064.html
-
-Bug-Description:
-
-Bash will dump core when attempting to perform globbing in directories with
-very large numbers of files.
-
-Patch:
-
-*** ../bash-3.1-patched/lib/glob/glob.c Thu Mar 24 12:42:27 2005
---- lib/glob/glob.c Fri Mar 3 16:54:12 2006
-***************
-*** 361,364 ****
---- 361,365 ----
-
- firstmalloc = 0;
-+ nalloca = 0;
-
- /* If PAT is empty, skip the loop, but return one (empty) filename. */
-***************
-*** 547,550 ****
---- 551,556 ----
- tmplink = lastlink;
- }
-+ else
-+ tmplink = 0;
- free (lastlink->name);
- lastlink = lastlink->next;
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 15
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 16
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-017 b/source/a/bash/patches/bash31-017
deleted file mode 100644
index 84f891551..000000000
--- a/source/a/bash/patches/bash31-017
+++ /dev/null
@@ -1,131 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.1
-Patch-ID: bash31-017
-
-Bug-Reported-by: syphir@syphir.sytes.net
-Bug-Reference-ID: <442421F5.3010105@syphir.sytes.net>
-Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=358831
-
-Bug-Description:
-
-Array expansion fails with an arithmetic syntax error when the subscript
-appears within double quotes. For example: ${a["4"]}.
-
-Patch:
-
-*** ../bash-3.1-patched/subst.c Wed Apr 12 08:47:08 2006
---- subst.c Wed Apr 12 08:49:02 2006
-***************
-*** 2576,2579 ****
---- 2576,2586 ----
- }
-
-+ char *
-+ expand_arith_string (string, quoted)
-+ char *string;
-+ {
-+ return (expand_string_if_necessary (string, quoted, expand_string));
-+ }
-+
- #if defined (COND_COMMAND)
- /* Just remove backslashes in STRING. Returns a new string. */
-***************
-*** 5249,5253 ****
- t = (char *)0;
-
-! temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string);
- *e1p = evalexp (temp1, &expok);
- free (temp1);
---- 5256,5260 ----
- t = (char *)0;
-
-! temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES);
- *e1p = evalexp (temp1, &expok);
- free (temp1);
-***************
-*** 5294,5298 ****
- t++;
- temp2 = savestring (t);
-! temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
- free (temp2);
- t[-1] = ':';
---- 5301,5305 ----
- t++;
- temp2 = savestring (t);
-! temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
- free (temp2);
- t[-1] = ':';
-***************
-*** 6436,6440 ****
-
- /* Expand variables found inside the expression. */
-! temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
- free (temp2);
-
---- 6443,6447 ----
-
- /* Expand variables found inside the expression. */
-! temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
- free (temp2);
-
-***************
-*** 6478,6482 ****
-
- /* Do initial variable expansion. */
-! temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string);
-
- goto arithsub;
---- 6485,6489 ----
-
- /* Do initial variable expansion. */
-! temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES);
-
- goto arithsub;
-*** ../bash-3.1-patched/subst.h Sun Nov 7 15:12:28 2004
---- subst.h Mon Mar 27 09:10:38 2006
-***************
-*** 152,155 ****
---- 152,158 ----
- extern char *expand_assignment_string_to_string __P((char *, int));
-
-+ /* Expand an arithmetic expression string */
-+ extern char *expand_arith_string __P((char *, int));
-+
- /* De-quoted quoted characters in STRING. */
- extern char *dequote_string __P((char *));
-*** ../bash-3.1-patched/arrayfunc.c Mon Jul 4 20:25:58 2005
---- arrayfunc.c Mon Mar 27 09:10:47 2006
-***************
-*** 593,601 ****
- strncpy (exp, s, len - 1);
- exp[len - 1] = '\0';
-! #if 0
-! t = expand_string_to_string (exp, 0);
-! #else
-! t = expand_string_to_string (exp, Q_DOUBLE_QUOTES);
-! #endif
- this_command_name = (char *)NULL;
- val = evalexp (t, &expok);
---- 591,595 ----
- strncpy (exp, s, len - 1);
- exp[len - 1] = '\0';
-! t = expand_arith_string (exp, 0);
- this_command_name = (char *)NULL;
- val = evalexp (t, &expok);
-*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
---- patchlevel.h Wed Dec 7 13:48:42 2005
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 16
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 17
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/coreutils/coreutils-dircolors.csh b/source/a/coreutils/coreutils-dircolors.csh
index 38d73ca2a..d7234c855 100644
--- a/source/a/coreutils/coreutils-dircolors.csh
+++ b/source/a/coreutils/coreutils-dircolors.csh
@@ -18,8 +18,8 @@ setenv COLOR auto
# simply setting the LS_OPTIONS variable using the information
# already given above:
setenv LS_OPTIONS " $OPTIONS --color=$COLOR "
-unset COLOR
-unset OPTIONS
+unsetenv COLOR
+unsetenv OPTIONS
# Set up aliases to use color ls by default. A few additional
# aliases like 'dir', 'vdir', etc, are some ancient artifacts
@@ -30,7 +30,7 @@ alias dir '/bin/ls $LS_OPTIONS --format=vertical';
alias vdir '/bin/ls $LS_OPTIONS --format=long';
alias d dir;
alias v vdir;
-unset noglob;
+unsetenv noglob;
# Set up the LS_COLORS environment:
[ -f $HOME/.dir_colors ]
diff --git a/source/a/coreutils/coreutils-dircolors.sh b/source/a/coreutils/coreutils-dircolors.sh
index 728ea7452..fc848c6fc 100644
--- a/source/a/coreutils/coreutils-dircolors.sh
+++ b/source/a/coreutils/coreutils-dircolors.sh
@@ -6,13 +6,7 @@
# -F = show '/' for dirs, '*' for executables, etc.
# -T 0 = don't trust tab spacing when formatting ls output.
# -b = better support for special characters
-if [ "$SHELL" != "/bin/zsh" ]; then
- # Edit options below for all sh-like shells except zsh:
- OPTIONS="-F -b -T 0"
-else
- # If you use zsh, edit the options below instead:
- OPTIONS=( -F -b -T 0 )
-fi
+OPTIONS="-F -b -T 0"
# COLOR needs one of these arguments:
# 'auto' colorizes output to ttys, but not pipes.
@@ -20,14 +14,11 @@ fi
# 'never' shuts colorization off.
COLOR=auto
+
# This section shouldn't require any user adjustment since it is
# simply setting the LS_OPTIONS variable using the information
# already given above:
-if [ "$SHELL" = "/bin/zsh" ]; then
- LS_OPTIONS=( $OPTIONS --color=$COLOR );
-else
- LS_OPTIONS=" $OPTIONS --color=$COLOR ";
-fi
+LS_OPTIONS="$OPTIONS --color=$COLOR";
export LS_OPTIONS;
unset COLOR
unset OPTIONS
@@ -36,23 +27,21 @@ unset OPTIONS
# aliases like 'dir', 'vdir', etc, are some ancient artifacts
# from 1992 or so... possibly they should be disabled, but maybe
# someone out there is actually using them? :-)
-# Assume shell aliases are supported. Ash is going to freak out
-# when it sees zsh syntax anyway, so whatever.
-alias ls='/bin/ls $LS_OPTIONS';
-alias dir='/bin/ls $LS_OPTIONS --format=vertical';
-alias vdir='/bin/ls $LS_OPTIONS --format=long';
-alias d=dir;
-alias v=vdir;
-
-# Just for fun, here are the old sh/ash style shell functions.
-# this script isn't currently working with ash (and makes some noisy
-# error messages), but perhaps these will still be of use to
-# someone...
-#ls () { /bin/ls $LS_OPTIONS "$@" ; };
-#dir () { /bin/ls $LS_OPTIONS --format=vertical "$@" ; };
-#vdir () { /bin/ls $LS_OPTIONS --format=long "$@" ; };
-#d () { dir "$@" ; };
-#v () { vdir "$@" ; };
+# Assume shell aliases are supported.
+if [ "$SHELL" = "/bin/zsh" ] ; then
+ # By default, zsh doesn't split parameters into separate words
+ # when it encounters whitespace. The '=' flag will fix this.
+ # see zshexpn(1) man-page regarding SH_WORD_SPLIT.
+ alias ls='/bin/ls ${=LS_OPTIONS}'
+ alias dir='/bin/ls ${=LS_OPTIONS} --format=vertical'
+ alias vdir='/bin/ls ${=LS_OPTIONS} --format=long'
+else
+ alias ls='/bin/ls $LS_OPTIONS'
+ alias dir='/bin/ls $LS_OPTIONS --format=vertical'
+ alias vdir='/bin/ls $LS_OPTIONS --format=long'
+fi
+alias d=dir
+alias v=vdir
# Set up the LS_COLORS environment:
if [ -f $HOME/.dir_colors ]; then
diff --git a/source/a/coreutils/coreutils.SlackBuild b/source/a/coreutils/coreutils.SlackBuild
index bc0434277..3d31bf9fb 100755
--- a/source/a/coreutils/coreutils.SlackBuild
+++ b/source/a/coreutils/coreutils.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,47 +20,64 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=coreutils
-VERSION=${VERSION:-7.4}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+PKGNAM=coreutils
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
+BUILD=${BUILD:-3}
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
elif [ "$ARCH" = "arm" ]; then
SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "armel" ]; then
SLKCFLAGS="-O2 -march=armv4t"
+ LIBDIRSUFFIX=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-if [ -r $CWD/$PRGNAM-$VERSION.tar.gz ]; then
- tar xf $CWD/$PRGNAM-$VERSION.tar.gz || exit 1
-elif [ -r $CWD/$PRGNAM-$VERSION.tar.bz2 ]; then
- tar xf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-elif [ -r $CWD/$PRGNAM-$VERSION.tar.xz ]; then
- tar xf $CWD/$PRGNAM-$VERSION.tar.xz || exit 1
-elif [ -r $CWD/$PRGNAM-$VERSION.tar.lzma ]; then
- tar xf $CWD/$PRGNAM-$VERSION.tar.lzma || exit 1
+rm -rf $PKGNAM-$VERSION
+if [ -r $CWD/$PKGNAM-$VERSION.tar.gz ]; then
+ tar xf $CWD/$PKGNAM-$VERSION.tar.gz || exit 1
+elif [ -r $CWD/$PKGNAM-$VERSION.tar.bz2 ]; then
+ tar xf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+elif [ -r $CWD/$PKGNAM-$VERSION.tar.xz ]; then
+ tar xf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
+elif [ -r $CWD/$PKGNAM-$VERSION.tar.lzma ]; then
+ tar xf $CWD/$PKGNAM-$VERSION.tar.lzma || exit 1
else
exit 1
fi
-cd $PRGNAM-$VERSION
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -68,8 +85,8 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Patch in the uname for Linux enhancements
-zcat $CWD/$PRGNAM.uname.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+# Patch uname to correctly display CPU information:
+zcat $CWD/$PKGNAM.uname.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
# Compilation with glibc version later than 2.3.2 needs the environment
# variable DEFAULT_POSIX2_VERSION set to 199209.
@@ -87,6 +104,8 @@ DEFAULT_POSIX2_VERSION=199209 \
--mandir=/usr/man \
--infodir=/usr/info \
--sysconfdir=/etc \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --without-gmp \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
@@ -153,10 +172,18 @@ done
rm -f $PKG/usr/info/dir
gzip -9 $PKG/usr/info/*
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
ABOUT-NLS AUTHORS COPYING* NEWS README THANKS THANKS-to-translators TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
@@ -164,5 +191,5 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
# Build the package:
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/coreutils/coreutils.uname.diff b/source/a/coreutils/coreutils.uname.diff
index bd39221c1..699110318 100644
--- a/source/a/coreutils/coreutils.uname.diff
+++ b/source/a/coreutils/coreutils.uname.diff
@@ -1,15 +1,6 @@
-Submitted By: Jim Gifford <jim at linuxfromscratch dot org>
-Date: 2006-08-24
-Initial Package Version: 5.97
-Upstream Status: Not Accepted
-Origin: Gentoo - http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/coreutils
-Description: Display CPU Information from /proc/cpuinfo or /proc/sysinfo
-
-Original Patch by - Matthew Burgess and Scot McPherson
-
-diff -Nur coreutils-7.1.orig/src/uname.c coreutils-7.1/src/uname.c
---- coreutils-7.1/src/uname.c 2008-09-18 02:06:57.000000000 -0500
-+++ coreutils-7.1/src/uname.c 2009-02-22 21:23:02.209219703 -0600
+diff -Nur coreutils-7.6.orig/src/uname.c coreutils-7.6/src/uname.c
+--- coreutils-7.6.orig/src/uname.c 2009-09-01 06:01:16.000000000 -0500
++++ coreutils-7.6/src/uname.c 2009-09-15 08:55:26.239452858 -0500
@@ -50,6 +50,11 @@
# include <mach-o/arch.h>
#endif
@@ -41,87 +32,87 @@ diff -Nur coreutils-7.1.orig/src/uname.c coreutils-7.1/src/uname.c
+
+static void __eat_cpuinfo_space(char *buf)
+{
-+ /* first eat trailing space */
-+ char *tmp = buf + strlen(buf) - 1;
-+ while (tmp > buf && isspace(*tmp))
-+ *tmp-- = '\0';
-+ /* then eat leading space */
-+ tmp = buf;
-+ while (*tmp && isspace(*tmp))
-+ tmp++;
-+ if (tmp != buf)
-+ memmove(buf, tmp, strlen(tmp)+1);
++ /* first eat trailing space */
++ char *tmp = buf + strlen(buf) - 1;
++ while (tmp > buf && isspace(*tmp))
++ *tmp-- = '\0';
++ /* then eat leading space */
++ tmp = buf;
++ while (*tmp && isspace(*tmp))
++ tmp++;
++ if (tmp != buf)
++ memmove(buf, tmp, strlen(tmp)+1);
+}
+
+static int __linux_procinfo (int x, char *fstr, size_t s)
+{
-+ FILE *fp;
++ FILE *fp;
+
-+ char *procinfo_keys[] = {
-+ /* --processor --hardware-platform */
-+ #if defined(__alpha__)
-+ "cpu model", "system type"
-+ #elif defined(__arm__)
-+ "Processor", "Hardware"
-+ #elif defined(bfin)
-+ "CPU", "BOARD Name"
-+ #elif defined(__cris__)
-+ "cpu", "cpu model"
-+ #elif defined(__frv__)
-+ "CPU-Core", "System"
-+ #elif defined(__i386__) || defined(__x86_64__)
-+ "model name", "vendor_id"
-+ #elif defined(__ia64__)
-+ "family", "vendor"
-+ #elif defined(__hppa__)
-+ "cpu", "model"
-+ #elif defined(__m68k__)
-+ "CPU", "MMU"
-+ #elif defined(__mips__)
-+ "cpu model", "system type"
-+ #elif defined(__powerpc__) || defined(__powerpc64__)
-+ "cpu", "machine"
-+ #elif defined(__s390__) || defined(__s390x__)
-+ "Type", "Manufacturer"
-+ #elif defined(__sh__)
-+ "cpu type", "machine"
-+ #elif defined(sparc) || defined(__sparc__)
-+ "type", "cpu"
-+ #elif defined(__vax__)
-+ "cpu type", "cpu"
-+ #else
-+ "unknown", "unknown"
-+ #endif
-+ };
++ char *procinfo_keys[] = {
++ /* --processor --hardware-platform */
++ #if defined(__alpha__)
++ "cpu model", "system type"
++ #elif defined(__arm__)
++ "Processor", "Hardware"
++ #elif defined(bfin)
++ "CPU", "BOARD Name"
++ #elif defined(__cris__)
++ "cpu", "cpu model"
++ #elif defined(__frv__)
++ "CPU-Core", "System"
++ #elif defined(__i386__) || defined(__x86_64__)
++ "model name", "vendor_id"
++ #elif defined(__ia64__)
++ "family", "vendor"
++ #elif defined(__hppa__)
++ "cpu", "model"
++ #elif defined(__m68k__)
++ "CPU", "MMU"
++ #elif defined(__mips__)
++ "cpu model", "system type"
++ #elif defined(__powerpc__) || defined(__powerpc64__)
++ "cpu", "machine"
++ #elif defined(__s390__) || defined(__s390x__)
++ "Type", "Manufacturer"
++ #elif defined(__sh__)
++ "cpu type", "machine"
++ #elif defined(sparc) || defined(__sparc__)
++ "type", "cpu"
++ #elif defined(__vax__)
++ "cpu type", "cpu"
++ #else
++ "unknown", "unknown"
++ #endif
++ };
+
-+ if ((fp = fopen(CPUINFO_FILE, "r")) != NULL) {
-+ char key[65], value[257], eol, *ret = NULL;
++ if ((fp = fopen(CPUINFO_FILE, "r")) != NULL) {
++ char key[65], value[257], eol, *ret = NULL;
+
-+ while (fscanf(fp, CPUINFO_FORMAT, key, value, &eol) != EOF) {
-+ __eat_cpuinfo_space(key);
-+ if (!strcmp(key, procinfo_keys[x])) {
-+ __eat_cpuinfo_space(value);
-+ ret = value;
-+ break;
-+ }
-+ if (eol != '\n') {
-+ /* we need two fscanf's here in case the previous
-+ * length limit caused us to read right up to the
-+ * newline ... doing "%*[^\n]\n" wont eat the newline
-+ */
-+ fscanf(fp, "%*[^\n]");
-+ fscanf(fp, "\n");
-+ }
-+ }
-+ fclose(fp);
++ while (fscanf(fp, CPUINFO_FORMAT, key, value, &eol) != EOF) {
++ __eat_cpuinfo_space(key);
++ if (!strcmp(key, procinfo_keys[x])) {
++ __eat_cpuinfo_space(value);
++ ret = value;
++ break;
++ }
++ if (eol != '\n') {
++ /* we need two fscanf's here in case the previous
++ * length limit caused us to read right up to the
++ * newline ... doing "%*[^\n]\n" wont eat the newline
++ */
++ fscanf(fp, "%*[^\n]");
++ fscanf(fp, "\n");
++ }
++ }
++ fclose(fp);
+
-+ if (ret) {
-+ strncpy(fstr, ret, s);
-+ return 0;
-+ }
-+ }
++ if (ret) {
++ strncpy(fstr, ret, s);
++ return 0;
++ }
++ }
+
-+ return -1;
++ return -1;
+}
+
+#endif
@@ -136,26 +127,26 @@ diff -Nur coreutils-7.1.orig/src/uname.c coreutils-7.1/src/uname.c
-#if HAVE_SYSINFO && defined SI_ARCHITECTURE
+#if ( HAVE_SYSINFO && defined SI_ARCHITECTURE ) || defined(USE_PROCINFO)
{
- static char processor[257];
+ static char processor[257];
+#if defined(USE_PROCINFO)
-+ if (0 <= __linux_procinfo (PROCINFO_PROCESSOR, processor, sizeof processor))
++ if (0 <= __linux_procinfo (PROCINFO_PROCESSOR, processor, sizeof processor))
+#else
- if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
+ if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
+#endif
- element = processor;
+ element = processor;
}
#endif
@@ -358,9 +467,13 @@
if (element == unknown)
- {
- static char hardware_platform[257];
+ {
+ static char hardware_platform[257];
+#if defined(USE_PROCINFO)
-+ if (0 <= __linux_procinfo (PROCINFO_HARDWARE_PLATFORM, hardware_platform, sizeof hardware_platform))
++ if (0 <= __linux_procinfo (PROCINFO_HARDWARE_PLATFORM, hardware_platform, sizeof hardware_platform))
+#else
- size_t s = sizeof hardware_platform;
- static int mib[] = { CTL_HW, UNAME_HARDWARE_PLATFORM };
- if (sysctl (mib, 2, hardware_platform, &s, 0, 0) >= 0)
+ size_t s = sizeof hardware_platform;
+ static int mib[] = { CTL_HW, UNAME_HARDWARE_PLATFORM };
+ if (sysctl (mib, 2, hardware_platform, &s, 0, 0) >= 0)
+#endif
- element = hardware_platform;
- }
+ element = hardware_platform;
+ }
#endif
diff --git a/source/a/cpufrequtils/cpufrequtils-007.tar.bz2.sign b/source/a/cpufrequtils/cpufrequtils-007.tar.bz2.sign
new file mode 100644
index 000000000..0f1c2d05a
--- /dev/null
+++ b/source/a/cpufrequtils/cpufrequtils-007.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBLUe7ryGugalF9Dw4RAjeTAJ0ZRX3DI6onTBY5uGhNP9xgOrI6TACfcVoa
++S69xcWuAKSnsqVPuZWZhDM=
+=gD0S
+-----END PGP SIGNATURE-----
diff --git a/source/a/cpufrequtils/cpufrequtils.SlackBuild b/source/a/cpufrequtils/cpufrequtils.SlackBuild
new file mode 100755
index 000000000..329ab4d3d
--- /dev/null
+++ b/source/a/cpufrequtils/cpufrequtils.SlackBuild
@@ -0,0 +1,108 @@
+#!/bin/sh
+
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=cpufrequtils
+VERSION=${VERSION:-$(echo $(basename $(echo $PKGNAM-*.tar.bz2 | cut -f 2 -d -) .tar.bz2) | cut -f 2 -d -)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Build and install:
+make libdir=/usr/lib${LIBDIRSUFFIX}
+make install libdir=/usr/lib${LIBDIRSUFFIX} DESTDIR=$PKG
+
+# Don't ship these:
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.{a,la}
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS COPYING* README* \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/cpufrequtils/slack-desc b/source/a/cpufrequtils/slack-desc
new file mode 100644
index 000000000..2e4b1ac36
--- /dev/null
+++ b/source/a/cpufrequtils/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+cpufrequtils: cpufrequtils (Kernel CPUfreq utilities)
+cpufrequtils:
+cpufrequtils: The cpufrequtils package makes access to the Linux kernel CPUfreq
+cpufrequtils: subsystem easier for users and cpufreq userspace tools. It contains
+cpufrequtils: a library used by other programs (libcpufreq), and command line tools
+cpufrequtils: to determine current CPUfreq settings and to modify them.
+cpufrequtils:
+cpufrequtils: Dominik Brodowski is the cpufrequtils maintainer.
+cpufrequtils: The cpufrequtils page is hosted on kernel.org:
+cpufrequtils: http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufreq.html
+cpufrequtils:
diff --git a/source/a/cryptsetup/cryptsetup.SlackBuild b/source/a/cryptsetup/cryptsetup.SlackBuild
index 7a7f3a8ba..35b674aee 100755
--- a/source/a/cryptsetup/cryptsetup.SlackBuild
+++ b/source/a/cryptsetup/cryptsetup.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
-# Copyright (c) 2007, 2009 Eric Hameleers <alien@slackware.com>
-# Copyright (c) 2007, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright (c) 2007, 2009, 2010 Eric Hameleers <alien@slackware.com>
+# Copyright (c) 2007, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -28,15 +28,23 @@
# By: Eric Hameleers <alien@slackware.com>
# For: cryptsetup
# Descr: Utility for setting up encrypted filesystems
-# URL: http://luks.endorphin.org/dm-crypt
+# URL: http://code.google.com/p/cryptsetup/
#
# -----------------------------------------------------------------------------
-PRGNAM=cryptsetup
-VERSION=${VERSION:-1.0.7}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
-
+PKGNAM=cryptsetup
+VERSION=${VERSION:-1.1.0}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -47,6 +55,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -67,7 +78,6 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-echo Building ...
LDFLAGS="$SLKLDFLAGS" \
CFLAGS="$SLKCFLAGS" \
./configure \
@@ -76,60 +86,40 @@ CFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--sysconfdir=/etc \
--mandir=/usr/man \
- --enable-libgcrypt \
- --enable-libdevmapper \
- --program-prefix= \
- --program-suffix= \
+ --docdir=/usr/doc/cryptsetup-$VERSION \
--build=$ARCH-slackware-linux
make
make DESTDIR=$PKG install
-#
-# Next, make the static version that we will use for mkinitrd:
-#
-
-make clean
-echo Building ...
-LDFLAGS="$SLKLDFLAGS" \
-CFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --localstatedir=/var \
- --sysconfdir=/etc \
- --mandir=/usr/man \
- --enable-libgcrypt \
- --enable-libdevmapper \
- --enable-static \
- --disable-shared \
- --disable-shared-library \
- --program-prefix= \
- --program-suffix= \
- --build=$ARCH-slackware-linux
-make
-
-# I have to do one old-school thing to leave a mark here:
+# Move the shared library to $PKG/lib${LIBDIRSUFFIX}:
+mkdir -p $PKG/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ for file in lib*.so.?.* ; do
+ mv $file ../../lib${LIBDIRSUFFIX}
+ ln -sf ../../lib${LIBDIRSUFFIX}/$file .
+ done
+ cp -a lib*.so.? ../../lib${LIBDIRSUFFIX}
+)
+
+# Move the cryptsetup binary to $PKG/sbin:
mkdir -p $PKG/sbin
-cat src/cryptsetup > $PKG/sbin/cryptsetup.static
-chmod 755 $PKG/sbin/cryptsetup.static
-
-mv $PKG/usr/sbin/cryptsetup $PKG/usr/sbin/cryptsetup.dynamic
-# Replace with a link:
-( cd $PKG/usr/sbin ; ln -sf cryptsetup.dynamic cryptsetup )
-# In /sbin, use the static version as /usr *might* not be mounted yet.
-# However, note that some cryptsetup operations cause the static
-# version to segfault, so for things like formatting you'll want
-# to use the dynamic one. That's what should be in the $PATH first.
-( cd $PKG/sbin ; ln -sf cryptsetup.static cryptsetup )
-
-# Remove unneeded empty directory:
-#rmdir $PKG/usr/lib/cryptsetup
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+( cd $PKG/usr/sbin
+ mv cryptsetup ../../sbin
+ ln -sf ../../sbin/cryptsetup .
+)
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
- AUTHORS COPYING* ChangeLog INSTALL NEWS README TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
-chmod -R a-w $PKG/usr/doc/$PRGNAM-$VERSION/*
+ AUTHORS COPYING* INSTALL NEWS README TODO \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \; || true
@@ -140,5 +130,5 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.txz
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-${VERSION}-${ARCH}-${BUILD}.txz
diff --git a/source/a/cups/cups.SlackBuild b/source/a/cups/cups.SlackBuild
index 5ae070951..1c285c63a 100755
--- a/source/a/cups/cups.SlackBuild
+++ b/source/a/cups/cups.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,18 @@
# CUPS build script by volkerdi@slackware.com.
-VERSION=1.3.11
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-1}
+VERSION=1.4.3
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
@@ -33,6 +41,8 @@ else
LIBDIRSUFFIX=""
fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-cups
@@ -45,7 +55,8 @@ rm -rf cups-$VERSION
tar xvf $CWD/cups-$VERSION-source.tar.?z* || exit 1
cd cups-$VERSION
-zcat $CWD/cups.firefox.desktop.diff.gz | patch -p1 --verbose || exit 1
+# Fix the USB backend to use either usblp or libusb:
+zcat $CWD/usb-backend-both-usblp-and-libusb.dpatch.gz | patch -p1 --verbose || exit 1
sed -i.orig -e 's#$exec_prefix/lib/cups#$libdir/cups#g' configure
./configure \
@@ -74,6 +85,17 @@ chmod 644 $PKG/etc/rc.d/rc.cups.new
# Clear out the additions:
rm -rf $PKG/etc/init.d $PKG/etc/rc{0,2,3,5}.d
+### OBSOLETE. The USB backend is patched to support usblp again. ###
+## From 1.4.x, CUPS no longer uses usblp, and having the module loaded
+## will interfere with USB printers. So, we will add a blacklist rule
+## so that the module is not loaded:
+#mkdir -p $PKG/etc/modprobe.d
+#cat << EOF > $PKG/etc/modprobe.d/cups.blacklist.usblp.conf.new
+## Do not load the kernel usblp module, since it interferes with
+## versions of CUPS 1.4.0 and newer:
+#blacklist usblp
+#EOF
+
# I'm not sure if overwriting this blindly could have ill effects,
# but it never hurts to play it safe. According to the dbus-daemon
# manpage, only files ending in .conf will be used, so there won't
@@ -110,6 +132,14 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG/usr/doc
ln -sf cups-$VERSION cups )
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES.txt ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGES.txt | head -n 1000 > $DOCSDIR/CHANGES.txt
+ touch -r CHANGES.txt $DOCSDIR/CHANGES.txt
+fi
+
# I'm sorry, but PDF files are almost as bloated and annoying as
# MS Word documents. We'll retain the HTML files in /usr/doc.
( cd $PKG/usr/doc
diff --git a/source/a/cups/cups.firefox.desktop.diff b/source/a/cups/cups.firefox.desktop.diff
deleted file mode 100644
index 96affd5a3..000000000
--- a/source/a/cups/cups.firefox.desktop.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -u -r --new-file cups-1.3.11.orig/desktop/cups.desktop cups-1.3.11/desktop/cups.desktop
---- cups-1.3.11.orig/desktop/cups.desktop 2008-09-05 19:30:39.000000000 -0500
-+++ cups-1.3.11/desktop/cups.desktop 2009-08-21 20:18:23.604682681 -0500
-@@ -1,6 +1,6 @@
- [Desktop Entry]
- Categories=System;Printing;HardwareSettings;X-Red-Hat-Base;
--Exec=htmlview http://localhost:631/
-+Exec=firefox http://localhost:631/
- Icon=cups
- StartupNotify=false
- Terminal=false
diff --git a/source/a/cups/doinst.sh b/source/a/cups/doinst.sh
index 3f56dab3f..6807cc3ac 100644
--- a/source/a/cups/doinst.sh
+++ b/source/a/cups/doinst.sh
@@ -14,6 +14,12 @@ for file in etc/cups/*.new ; do
done
config etc/dbus-1/system.d/cups.conf.new
+# This file will just have to go. It appeared for a while during a -current
+# devel period and has never been part of a stable release.
+#config etc/modprobe.d/cups.blacklist.usblp.conf.new
+rm -f etc/modprobe.d/cups.blacklist.usblp.conf.new
+rm -f etc/modprobe.d/cups.blacklist.usblp.conf
+
# Leave any new rc.cups with the same permissions as the old one:
# This is a kludge, but it's because there's no --reference option
# on busybox's 'chmod':
diff --git a/source/a/cups/usb-backend-both-usblp-and-libusb.dpatch b/source/a/cups/usb-backend-both-usblp-and-libusb.dpatch
new file mode 100644
index 000000000..88ae9d077
--- /dev/null
+++ b/source/a/cups/usb-backend-both-usblp-and-libusb.dpatch
@@ -0,0 +1,574 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## usb-backend-both-usblp-and-libusb.dpatch by <till.kamppeter@gmail.com>
+##
+## DP: http://www.cups.org/str.php?L3357
+
+@DPATCH@
+diff -urNad cups-1.4.3~/backend/Makefile cups-1.4.3/backend/Makefile
+--- cups-1.4.3~/backend/Makefile 2010-04-09 15:56:03.735720821 +0200
++++ cups-1.4.3/backend/Makefile 2010-04-09 15:56:04.335705387 +0200
+@@ -267,7 +267,7 @@
+ echo Linking $@...
+ $(CC) $(LDFLAGS) -o usb usb.o libbackend.a $(LIBUSB) \
+ $(BACKLIBS) $(LIBS)
+-usb.o: usb.c usb-darwin.c usb-libusb.c usb-unix.c
++usb.o: usb.c usb-darwin.c usb-hybrid.c usb-libusb.c usb-unix.c
+
+
+ #
+diff -urNad cups-1.4.3~/backend/ieee1284.c cups-1.4.3/backend/ieee1284.c
+--- cups-1.4.3~/backend/ieee1284.c 2009-12-08 03:13:42.000000000 +0100
++++ cups-1.4.3/backend/ieee1284.c 2010-04-09 15:56:04.335705387 +0200
+@@ -255,6 +255,7 @@
+ cups_option_t *values; /* Keys and values in device ID */
+ const char *mfg, /* Manufacturer */
+ *mdl, /* Model */
++ *des, /* Description */
+ *sern; /* Serial number */
+ char temp[256], /* Temporary manufacturer string */
+ *tempptr; /* Pointer into temp string */
+@@ -285,10 +286,20 @@
+ }
+ else
+ {
+- strlcpy(temp, make_model, sizeof(temp));
++ /*
++ * No manufacturer? Use the model string or description...
++ */
++
++ if (mdl)
++ _ppdNormalizeMakeAndModel(mdl, temp, sizeof(temp));
++ else if ((des = cupsGetOption("DESCRIPTION", num_values, values)) != NULL ||
++ (des = cupsGetOption("DES", num_values, values)) != NULL)
++ _ppdNormalizeMakeAndModel(des, temp, sizeof(temp));
++ else
++ strlcpy(temp, "Unknown", sizeof(temp));
+
+ if ((tempptr = strchr(temp, ' ')) != NULL)
+- *tempptr = '\0';
++ *tempptr = '\0';
+
+ mfg = temp;
+ }
+diff -urNad cups-1.4.3~/backend/usb-hybrid.c cups-1.4.3/backend/usb-hybrid.c
+--- cups-1.4.3~/backend/usb-hybrid.c 1970-01-01 01:00:00.000000000 +0100
++++ cups-1.4.3/backend/usb-hybrid.c 2010-04-09 15:56:04.345707078 +0200
+@@ -0,0 +1,87 @@
++/*
++ * "$Id: usb-hybrid.c 8807 2009-08-31 18:45:43Z mike $"
++ *
++ * USB port backend for the Common UNIX Printing System (CUPS).
++ *
++ * This file is included from "usb.c" when compiled on Linux.
++ *
++ * Copyright 2007-2008 by Apple Inc.
++ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
++ *
++ * These coded instructions, statements, and computer programs are the
++ * property of Apple Inc. and are protected by Federal copyright
++ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
++ * "LICENSE" which should have been included with this file. If this
++ * file is missing or damaged, see the license at "http://www.cups.org/".
++ *
++ * This file is subject to the Apple OS-Developed Software exception.
++ *
++ * Contents:
++ *
++ * print_device() - Print a file to a USB device.
++ * list_devices() - List all USB devices.
++ */
++
++/*
++ * Include necessary headers.
++ */
++
++#include <sys/select.h>
++
++/*
++ * Include the two USB implementations used under Linux ...
++ */
++
++#include "usb-libusb.c"
++#include "usb-unix.c"
++
++/*
++ * 'print_device()' - Print a file to a USB device.
++ */
++
++int /* O - Exit status */
++print_device(const char *uri, /* I - Device URI */
++ const char *hostname, /* I - Hostname/manufacturer */
++ const char *resource, /* I - Resource/modelname */
++ char *options, /* I - Device options/serial number */
++ int print_fd, /* I - File descriptor to print */
++ int copies, /* I - Copies to print */
++ int argc, /* I - Number of command-line arguments (6 or 7) */
++ char *argv[]) /* I - Command-line arguments */
++{
++ int result;
++ for(;;)
++ {
++ result = print_device_unix(uri, hostname, resource, options, print_fd,
++ copies, argc, argv);
++ if (result == -1)
++ {
++ result = print_device_libusb(uri, hostname, resource, options, print_fd,
++ copies, argc, argv);
++ if (result == -1)
++ sleep(5);
++ else
++ return(result);
++ }
++ else
++ return(result);
++ }
++}
++
++/*
++ * 'list_devices()' - List all USB devices.
++ */
++
++void
++list_devices(void)
++{
++ /* Try both discovery methods, each device will appear only under one
++ of them */
++ list_devices_libusb();
++ list_devices_unix();
++}
++
++
++/*
++ * End of "$Id: usb-hybrid.c 8807 2009-08-31 18:45:43Z mike $".
++ */
+diff -urNad cups-1.4.3~/backend/usb-libusb.c cups-1.4.3/backend/usb-libusb.c
+--- cups-1.4.3~/backend/usb-libusb.c 2009-09-11 22:03:31.000000000 +0200
++++ cups-1.4.3/backend/usb-libusb.c 2010-04-09 15:56:04.345707078 +0200
+@@ -13,16 +13,16 @@
+ *
+ * Contents:
+ *
+- * list_devices() - List the available printers.
+- * print_device() - Print a file to a USB device.
++ * list_devices_libusb() - List the available printers.
++ * print_device_libusb() - Print a file to a USB device.
+ * close_device() - Close the connection to the USB printer.
+ * find_device() - Find or enumerate USB printers.
+ * get_device_id() - Get the IEEE-1284 device ID for the printer.
+ * list_cb() - List USB printers for discovery.
+ * make_device_uri() - Create a device URI for a USB printer.
+- * open_device() - Open a connection to the USB printer.
++ * open_device_libusb() - Open a connection to the USB printer.
+ * print_cb() - Find a USB printer for printing.
+- * side_cb() - Handle side-channel requests.
++ * side_cb_libusb() - Handle side-channel requests.
+ */
+
+ /*
+@@ -65,30 +65,30 @@
+ static char *make_device_uri(usb_printer_t *printer,
+ const char *device_id,
+ char *uri, size_t uri_size);
+-static int open_device(usb_printer_t *printer, int verbose);
++static int open_device_libusb(usb_printer_t *printer, int verbose);
+ static int print_cb(usb_printer_t *printer, const char *device_uri,
+ const char *device_id, const void *data);
+-static ssize_t side_cb(usb_printer_t *printer, int print_fd);
++static ssize_t side_cb_libusb(usb_printer_t *printer, int print_fd);
+
+
+ /*
+- * 'list_devices()' - List the available printers.
++ * 'list_devices_libusb()' - List the available printers.
+ */
+
+ void
+-list_devices(void)
++list_devices_libusb(void)
+ {
+- fputs("DEBUG: list_devices\n", stderr);
++ fputs("DEBUG: list_devices_libusb\n", stderr);
+ find_device(list_cb, NULL);
+ }
+
+
+ /*
+- * 'print_device()' - Print a file to a USB device.
++ * 'print_device_libusb()' - Print a file to a USB device.
+ */
+
+ int /* O - Exit status */
+-print_device(const char *uri, /* I - Device URI */
++print_device_libusb(const char *uri, /* I - Device URI */
+ const char *hostname, /* I - Hostname/manufacturer */
+ const char *resource, /* I - Resource/modelname */
+ char *options, /* I - Device options/serial number */
+@@ -105,19 +105,23 @@
+ struct pollfd pfds[2]; /* Poll descriptors */
+
+
+- fputs("DEBUG: print_device\n", stderr);
++ fputs("DEBUG: print_device_libusb\n", stderr);
+
+ /*
+ * Connect to the printer...
+ */
+
++#if defined(__linux) || defined(__sun) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__)
++ if ((printer = find_device(print_cb, uri)) == NULL)
++ return(-1);
++#else
+ while ((printer = find_device(print_cb, uri)) == NULL)
+ {
+ _cupsLangPuts(stderr,
+ _("INFO: Waiting for printer to become available...\n"));
+ sleep(5);
+ }
+-
++#endif
+
+ /*
+ * If we are printing data from a print driver on stdin, ignore SIGTERM
+@@ -189,7 +193,7 @@
+
+ if (pfds[1].revents & (POLLIN | POLLHUP))
+ {
+- if ((bytes = side_cb(printer, print_fd)) < 0)
++ if ((bytes = side_cb_libusb(printer, print_fd)) < 0)
+ pfds[1].events = 0; /* Filter has gone away... */
+ else
+ tbytes += bytes;
+@@ -359,7 +363,7 @@
+ printer.iface = iface;
+ printer.handle = NULL;
+
+- if (!open_device(&printer, data != NULL))
++ if (!open_device_libusb(&printer, data != NULL))
+ {
+ if (!get_device_id(&printer, device_id, sizeof(device_id)))
+ {
+@@ -583,6 +587,14 @@
+ mfg = tempmfg;
+ }
+
++ if (!strncasecmp(mdl, mfg, strlen(mfg)))
++ {
++ mdl += strlen(mfg);
++
++ while (isspace(*mdl & 255))
++ mdl ++;
++ }
++
+ /*
+ * Generate the device URI from the manufacturer, model, serial number,
+ * and interface number...
+@@ -611,11 +623,11 @@
+
+
+ /*
+- * 'open_device()' - Open a connection to the USB printer.
++ * 'open_device_libusb()' - Open a connection to the USB printer.
+ */
+
+ static int /* O - 0 on success, -1 on error */
+-open_device(usb_printer_t *printer, /* I - Printer */
++open_device_libusb(usb_printer_t *printer, /* I - Printer */
+ int verbose) /* I - Update connecting-to-device state? */
+ {
+ int number; /* Configuration/interface/altset numbers */
+@@ -733,16 +745,73 @@
+ const char *device_id, /* I - IEEE-1284 device ID */
+ const void *data) /* I - User data (make, model, S/N) */
+ {
+- return (!strcmp((char *)data, device_uri));
++ char *uri = (char *)data,
++ *str1,
++ *str2,
++ buf[255],
++ requested_uri[1024];
++
++ /* Work on a copy of uri */
++ strncpy(requested_uri, uri, sizeof(requested_uri));
++ requested_uri[sizeof(requested_uri) - 1] = '\0';
++
++ /*
++ * libusb-discovered URIs can have an "interface" specification and this
++ * never happens for usblp-discovered URIs, so remove the "interface"
++ * specification from the URI which we are checking currently. This way a
++ * queue for a usblp-discovered printer can now be accessed via libusb
++ */
++ if (((str1 = strstr(requested_uri, "interface=")) == NULL) &&
++ ((str2 = strstr(device_uri, "interface=")) != NULL))
++ {
++ *(str2 - 1) = '\0';
++ }
++
++ /*
++ * Old URI with "serial=?". Cut this part off and consider this as
++ * an URI without serial number
++ */
++ if ((str1 = strstr(requested_uri, "serial=?")) != NULL)
++ *(str1 - 1) = '\0';
++
++ /*
++ * Old URI without serial number. Match it also with URIs with serial
++ * number
++ */
++ if (((str1 = strstr(requested_uri, "serial=")) == NULL) &&
++ ((str2 = strstr(device_uri, "serial=")) != NULL))
++ *(str2 - 1) = '\0';
++
++ /*
++ * libusb-discovered URIs can have a "serial" specification when the
++ * usblp-discovered URI for the same printer does not have one, as
++ * with libusb we can discover serial numbers also with other methods
++ * than only via the device ID. Therefore we accept also a
++ * usblp-discovered printer without serial number as a match. This we
++ * do by removing the serial number from the queue's (libusb-discovered)
++ * URI before comparing. Also warn the user because of the incapability
++ * of the usblp-based access to distinguish printers by the serial
++ * number.
++ */
++ if (((str1 = strstr(requested_uri, "serial=")) == NULL) &&
++ ((str2 = strstr(device_uri, "serial=")) != NULL))
++ {
++ *(str2 - 1) = '\0';
++ if (backendGetMakeModel(device_id, buf, sizeof(buf)) == 0)
++ fprintf(stderr, "WARNING: If you have more than one %s printer connected to this machine, please make sure that the \"usblp\" kernel module is always unloaded (and blacklisted) and re-create the queues for these printers. Otherwise CUPS will not be able to distinguish them.\n",
++ buf);
++ }
++
++ return (!strcmp(requested_uri, device_uri));
+ }
+
+
+ /*
+- * 'side_cb()' - Handle side-channel requests.
++ * 'side_cb_libusb()' - Handle side-channel requests.
+ */
+
+ static ssize_t /* O - Number of bytes written */
+-side_cb(usb_printer_t *printer, /* I - Printer */
++side_cb_libusb(usb_printer_t *printer, /* I - Printer */
+ int print_fd) /* I - File to print */
+ {
+ ssize_t bytes, /* Bytes read/written */
+diff -urNad cups-1.4.3~/backend/usb-unix.c cups-1.4.3/backend/usb-unix.c
+--- cups-1.4.3~/backend/usb-unix.c 2009-12-08 03:13:42.000000000 +0100
++++ cups-1.4.3/backend/usb-unix.c 2010-04-09 15:56:30.799666933 +0200
+@@ -18,10 +18,10 @@
+ *
+ * Contents:
+ *
+- * print_device() - Print a file to a USB device.
+- * list_devices() - List all USB devices.
+- * open_device() - Open a USB device...
+- * side_cb() - Handle side-channel requests...
++ * print_device_unix() - Print a file to a USB device.
++ * list_devices_unix() - List all USB devices.
++ * open_device_unix() - Open a USB device...
++ * side_cb_unix() - Handle side-channel requests...
+ */
+
+ /*
+@@ -35,17 +35,17 @@
+ * Local functions...
+ */
+
+-static int open_device(const char *uri, int *use_bc);
+-static int side_cb(int print_fd, int device_fd, int snmp_fd,
++static int open_device_unix(const char *uri, int *use_bc);
++static int side_cb_unix(int print_fd, int device_fd, int snmp_fd,
+ http_addr_t *addr, int use_bc);
+
+
+ /*
+- * 'print_device()' - Print a file to a USB device.
++ * 'print_device_unix()' - Print a file to a USB device.
+ */
+
+ int /* O - Exit status */
+-print_device(const char *uri, /* I - Device URI */
++print_device_unix(const char *uri, /* I - Device URI */
+ const char *hostname, /* I - Hostname/manufacturer */
+ const char *resource, /* I - Resource/modelname */
+ char *options, /* I - Device options/serial number */
+@@ -102,7 +102,7 @@
+ strncasecmp(hostname, "Minolta", 7);
+ #endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ */
+
+- if ((device_fd = open_device(uri, &use_bc)) == -1)
++ if ((device_fd = open_device_unix(uri, &use_bc)) == -1)
+ {
+ if (getenv("CLASS") != NULL)
+ {
+@@ -132,6 +132,10 @@
+ _("INFO: Printer busy; will retry in 10 seconds...\n"));
+ sleep(10);
+ }
++#ifdef HAVE_USB_H
++ else
++ return (-1);
++#else
+ else if (errno == ENXIO || errno == EIO || errno == ENOENT ||
+ errno == ENODEV)
+ {
+@@ -147,6 +151,7 @@
+ resource, strerror(errno));
+ return (CUPS_BACKEND_FAILED);
+ }
++#endif
+ }
+ }
+ while (device_fd < 0);
+@@ -190,7 +195,7 @@
+ tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, NULL);
+
+ #else
+- tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, side_cb);
++ tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, side_cb_unix);
+ #endif /* __sun */
+
+ if (print_fd != 0 && tbytes >= 0)
+@@ -214,11 +219,11 @@
+
+
+ /*
+- * 'list_devices()' - List all USB devices.
++ * 'list_devices_unix()' - List all USB devices.
+ */
+
+ void
+-list_devices(void)
++list_devices_unix(void)
+ {
+ #ifdef __linux
+ int i; /* Looping var */
+@@ -320,11 +325,11 @@
+
+
+ /*
+- * 'open_device()' - Open a USB device...
++ * 'open_device_unix()' - Open a USB device...
+ */
+
+ static int /* O - File descriptor or -1 on error */
+-open_device(const char *uri, /* I - Device URI */
++open_device_unix(const char *uri, /* I - Device URI */
+ int *use_bc) /* O - Set to 0 for unidirectional */
+ {
+ int fd; /* File descriptor */
+@@ -357,9 +362,12 @@
+ char device[255], /* Device filename */
+ device_id[1024], /* Device ID string */
+ make_model[1024], /* Make and model */
+- device_uri[1024]; /* Device URI string */
+-
++ device_uri[1024], /* Device URI string */
++ requested_uri[1024], /* Device URI string */
++ *str1,
++ *str2;
+
++
+ /*
+ * Find the correct USB device...
+ */
+@@ -407,7 +415,55 @@
+ device_uri[0] = '\0';
+ }
+
+- if (!strcmp(uri, device_uri))
++ /* Work on a copy of uri */
++ strncpy(requested_uri, uri, sizeof(requested_uri));
++ requested_uri[sizeof(requested_uri) - 1] = '\0';
++
++ /*
++ * libusb-discovered URIs can have an "interface" specification and this
++ * never happens for usblp-discovered URIs, so remove the "interface"
++ * specification from the URI of the print queue. This way a queue for
++ * a libusb-discovered printer can now be accessed via the usblip kernel
++ * module
++ */
++ if ((str1 = strstr(requested_uri, "interface=")) != NULL)
++ *(str1 - 1) = '\0';
++
++ /*
++ * Old URI with "serial=?". Cut this part off and consider this as
++ * an URI without serial number
++ */
++ if ((str1 = strstr(requested_uri, "serial=?")) != NULL)
++ *(str1 - 1) = '\0';
++
++ /*
++ * Old URI without serial number. Match it also with URIs with serial
++ * number
++ */
++ if (((str1 = strstr(requested_uri, "serial=")) == NULL) &&
++ ((str2 = strstr(device_uri, "serial=")) != NULL))
++ *(str2 - 1) = '\0';
++
++ /*
++ * libusb-discovered URIs can have a "serial" specification when the
++ * usblp-discovered URI for the same printer does not have one, as
++ * with libusb we can discover serial numbers also with other methods
++ * than only via the device ID. Therefore we accept also a
++ * usblp-discovered printer without serial number as a match. This we
++ * do by removing the serial number from the queue's (libusb-discovered)
++ * URI before comparing. Also warn the user because of the incapability
++ * of the usblp-based access to distinguish printers by the serial
++ * number.
++ */
++ if (((str1 = strstr(requested_uri, "serial=")) != NULL) &&
++ ((str2 = strstr(device_uri, "serial=")) == NULL))
++ {
++ *(str1 - 1) = '\0';
++ fprintf(stderr, "WARNING: If you have more than one %s printer connected to this machine, please unload (and blacklist) the \"usblp\" kernel module as otherwise CUPS will not be able to distinguish your printers.\n",
++ make_model);
++ }
++
++ if (!strcmp(requested_uri, device_uri))
+ {
+ /*
+ * Yes, return this file descriptor...
+@@ -433,10 +489,14 @@
+ */
+
+ if (busy)
++ {
+ _cupsLangPuts(stderr,
+ _("INFO: Printer busy; will retry in 5 seconds...\n"));
+
+- sleep(5);
++ sleep(5);
++ }
++ else
++ return -1;
+ }
+ }
+ #elif defined(__sun) && defined(ECPPIOC_GETDEVID)
+@@ -557,11 +617,11 @@
+
+
+ /*
+- * 'side_cb()' - Handle side-channel requests...
++ * 'side_cb_unix()' - Handle side-channel requests...
+ */
+
+ static int /* O - 0 on success, -1 on error */
+-side_cb(int print_fd, /* I - Print file */
++side_cb_unix(int print_fd, /* I - Print file */
+ int device_fd, /* I - Device file */
+ int snmp_fd, /* I - SNMP socket (unused) */
+ http_addr_t *addr, /* I - Device address (unused) */
+diff -urNad cups-1.4.3~/backend/usb.c cups-1.4.3/backend/usb.c
+--- cups-1.4.3~/backend/usb.c 2008-06-24 03:28:36.000000000 +0200
++++ cups-1.4.3/backend/usb.c 2010-04-09 15:56:04.345707078 +0200
+@@ -56,7 +56,7 @@
+ */
+
+ #ifdef HAVE_USB_H
+-# include "usb-libusb.c"
++# include "usb-hybrid.c"
+ #elif defined(__APPLE__)
+ # include "usb-darwin.c"
+ #elif defined(__linux) || defined(__sun) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__)
diff --git a/source/a/cxxlibs/cxxlibs.SlackBuild b/source/a/cxxlibs/cxxlibs.SlackBuild
index 025a64949..19f8042ed 100755
--- a/source/a/cxxlibs/cxxlibs.SlackBuild
+++ b/source/a/cxxlibs/cxxlibs.SlackBuild
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,18 @@
PKGNAM=cxxlibs
-VERSION=${VERSION:-6.0.10}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-6.0.13}
+BUILD=${BUILD:-2}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
diff --git a/source/a/dbus/dbus-1.2.x-allow_root_globally.diff b/source/a/dbus/dbus-1.2.x-allow_root_globally.diff
new file mode 100644
index 000000000..913a9d2b1
--- /dev/null
+++ b/source/a/dbus/dbus-1.2.x-allow_root_globally.diff
@@ -0,0 +1,22 @@
+Allow root to do anything via dbus method calls, since users expect root
+ to be, well, root. This removes the insanity of adding root to all sorts
+ of system groups in /etc/group. --rworkman 20091031
+
+diff -Nur dbus-1.2.16.orig/bus/system.conf.in dbus-1.2.16/bus/system.conf.in
+--- dbus-1.2.16.orig/bus/system.conf.in 2009-07-13 05:14:40.000000000 -0500
++++ dbus-1.2.16/bus/system.conf.in 2009-10-31 00:47:34.338981143 -0500
+@@ -70,6 +70,14 @@
+ send_member="UpdateActivationEnvironment"/>
+ </policy>
+
++ <!-- Allow root to do anything over the messagebus.
++ Don't whine about "security" - anyone with root privileges
++ can edit this file anyway, so -ENOHOLE here. -->
++ <policy user="root">
++ <allow send_destination="*"/>
++ <allow send_interface="*"/>
++ </policy>
++
+ <!-- Config files are placed here that among other things, punch
+ holes in the above policy for specific services. -->
+ <includedir>system.d</includedir>
diff --git a/source/a/dbus/dbus.SlackBuild b/source/a/dbus/dbus.SlackBuild
index c761ce54c..533ccd897 100755
--- a/source/a/dbus/dbus.SlackBuild
+++ b/source/a/dbus/dbus.SlackBuild
@@ -1,6 +1,7 @@
#!/bin/sh
-# Copyright 2007, 2008 Robby Workman <http://rlworkman.net>
-# Copyright 2007, 2008, 2009 Patrick Volkerding, Sebeka, MN, USA
+
+# Copyright 2007-2010 Robby Workman, Northport, Alabama, USA
+# Copyright 2007-2010 Patrick Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,16 +21,25 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=dbus
-VERSION=1.2.14
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+PKGNAM=dbus
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
+BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -40,14 +50,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.xz || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -55,6 +68,8 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+zcat $CWD/dbus-1.2.x-allow_root_globally.diff.gz | patch -p1 --verbose || exit 1
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -64,9 +79,10 @@ CXXFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--mandir=/usr/man \
--infodir=/usr/info \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
--enable-shared=yes \
--enable-static=no \
+ --enable-inotify \
--with-system-pid-file=/var/run/dbus/dbus.pid \
--with-system-socket=/var/run/dbus/system_bus_socket \
--with-init-scripts=slackware \
@@ -96,16 +112,16 @@ mv $PKG/etc/dbus-1/system.conf $PKG/etc/dbus-1/system.conf.new
chown messagebus $PKG/var/lib/dbus
# Add documentation
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING HACKING INSTALL NEWS README doc/*.{txt,html,dtd} \
- $PKG/usr/doc/$PRGNAM-$VERSION
-find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;
+ $PKG/usr/doc/$PKGNAM-$VERSION
+find $PKG/usr/doc/$PKGNAM-$VERSION -type f -exec chmod 644 {} \;
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/dcron/crontab.c.O_EXCL.diff b/source/a/dcron/crontab.c.O_EXCL.diff
new file mode 100644
index 000000000..7acd5ce29
--- /dev/null
+++ b/source/a/dcron/crontab.c.O_EXCL.diff
@@ -0,0 +1,11 @@
+--- ./crontab.c.orig 2010-01-18 09:27:31.000000000 -0600
++++ ./crontab.c 2010-02-11 16:38:03.000000000 -0600
+@@ -199,7 +199,7 @@
+ * Read from repFd, write to fd for "$CDir/$USER.new"
+ */
+ snprintf(path, sizeof(path), "%s.new", pas->pw_name);
+- if ((fd = open(path, O_CREAT|O_TRUNC|O_EXCL|O_APPEND|O_WRONLY, 0600)) >= 0) {
++ if ((fd = open(path, O_CREAT|O_TRUNC|O_APPEND|O_WRONLY, 0600)) >= 0) {
+ while ((n = read(repFd, buf, sizeof(buf))) > 0) {
+ write(fd, buf, n);
+ }
diff --git a/source/a/dcron/crontab.root b/source/a/dcron/crontab.root
new file mode 100644
index 000000000..b5b425628
--- /dev/null
+++ b/source/a/dcron/crontab.root
@@ -0,0 +1,22 @@
+# If you don't want the output of a cron job mailed to you, you have to direct
+# any output to /dev/null. We'll do this here since these jobs should run
+# properly on a newly installed system, but if they don't the average newbie
+# might get quite perplexed about getting strange mail every 5 minutes. :^)
+#
+# Run the hourly, daily, weekly, and monthly cron jobs.
+# Jobs that need different timing may be entered into the crontab as before,
+# but most really don't need greater granularity than this. If the exact
+# times of the hourly, daily, weekly, and monthly cron jobs do not suit your
+# needs, feel free to adjust them.
+#
+# Run hourly cron jobs at 47 minutes after the hour:
+47 * * * * /usr/bin/run-parts /etc/cron.hourly 1> /dev/null
+#
+# Run daily cron jobs at 4:40 every day:
+40 4 * * * /usr/bin/run-parts /etc/cron.daily 1> /dev/null
+#
+# Run weekly cron jobs at 4:30 on the first day of the week:
+30 4 * * 0 /usr/bin/run-parts /etc/cron.weekly 1> /dev/null
+#
+# Run monthly cron jobs at 4:20 on the first day of the month:
+20 4 1 * * /usr/bin/run-parts /etc/cron.monthly 1> /dev/null
diff --git a/source/a/dcron/dcron-2.3.3.crontab.diff4 b/source/a/dcron/dcron-2.3.3.crontab.diff4
deleted file mode 100644
index 30d0501a0..000000000
--- a/source/a/dcron/dcron-2.3.3.crontab.diff4
+++ /dev/null
@@ -1,19 +0,0 @@
---- ./crontab.c.orig Wed Feb 20 14:31:32 2002
-+++ ./crontab.c Wed Feb 20 14:33:13 2002
-@@ -197,14 +197,14 @@
- int n;
-
- snprintf(path, sizeof(path), "%s.new", pas->pw_name);
-- if ((fd = open(path, O_CREAT|O_TRUNC|O_EXCL|O_APPEND|O_WRONLY, 0600)) >= 0) {
-+ if ((fd = open(path, O_CREAT|O_TRUNC|O_APPEND|O_WRONLY, 0600)) >= 0) {
- while ((n = read(repFd, buf, sizeof(buf))) > 0) {
- write(fd, buf, n);
- }
- close(fd);
- rename(path, pas->pw_name);
- } else {
-- fprintf(stderr, "unable to create %s/%s\n", CDir, buf);
-+ fprintf(stderr, "unable to create %s/%s\n", CDir, path);
- }
- close(repFd);
- }
diff --git a/source/a/dcron/dcron-2.3.3.diff b/source/a/dcron/dcron-2.3.3.diff
deleted file mode 100644
index 22806de3e..000000000
--- a/source/a/dcron/dcron-2.3.3.diff
+++ /dev/null
@@ -1,40 +0,0 @@
---- ./defs.h.orig Fri Sep 5 14:44:32 1997
-+++ ./defs.h Thu Aug 26 16:56:10 1999
-@@ -29,7 +29,7 @@
- #define CRONTABS "/var/spool/cron/crontabs"
- #endif
- #ifndef TMPDIR
--#define TMPDIR "/tmp"
-+#define TMPDIR "/var/spool/cron"
- #endif
- #ifndef OPEN_MAX
- #define OPEN_MAX 256
---- ./subs.c.orig Mon Feb 16 13:35:10 1998
-+++ ./subs.c Thu Aug 26 16:57:21 1999
-@@ -15,7 +15,7 @@
- Prototype int ChangeUser(const char *user, short dochdir);
- Prototype void vlog(int level, int fd, const char *ctl, va_list va);
- Prototype int slog(char *buf, size_t sz, const char *ctl, va_list va, short useDate);
--Prototype char *strdup(const char *);
-+Prototype char *xx_strdup(const char *);
-
- void
- log9(const char *ctl, ...)
-@@ -80,7 +80,7 @@
-
- buf[0] = 0;
- if (useDate)
-- strftime(buf, 128, "%d-%b-%y %H:%M ", tp);
-+ strftime(buf, 128, "%d-%b-%Y %H:%M ", tp);
- vsnprintf(buf + strlen(buf), sz - strlen(buf), ctl, va);
- return(strlen(buf));
- }
-@@ -132,7 +132,7 @@
- }
-
- char *
--strdup(const char *str)
-+xx_strdup(const char *str)
- {
- char *ptr = malloc(strlen(str) + 1);
-
diff --git a/source/a/dcron/dcron-2.3.3.diff2 b/source/a/dcron/dcron-2.3.3.diff2
deleted file mode 100644
index 8eb8242c5..000000000
--- a/source/a/dcron/dcron-2.3.3.diff2
+++ /dev/null
@@ -1,477 +0,0 @@
---- ./CHANGES:1.1 Fri Jan 7 18:15:59 2000
-+++ ./CHANGES Thu Apr 20 12:10:36 2000
-@@ -1,3 +1,15 @@
-+20/03/00 - TEMHOTA <temnota@kmv.ru>
-+ Adding SIGHUP signal handler. crond die when init send to it SIGHUP.
-+ Rewrtited all loging code. Added logging through syslog and normal
-+ logging to file.
-+
-+ Technical details:
-+ + logging through syslog used facility LOG_CRON
-+ + log_err - now *always* write message to logger (if selected logging
-+ through syslog - message send as LOG_ERR).
-+ + log9 - sends message hrough syslog loglevel LOG_WARNING
-+ + for all other log levels - default syslog loglevel LOG_NOTICE
-+
- 02/16/98 - Jordan Mendelson (jordy@wserv.com)
-
- Numerous people have reported a problem with logging. I'm sorry
---- ./Makefile:1.1 Fri Jan 7 18:15:59 2000
-+++ ./Makefile Thu Apr 20 12:24:40 2000
-@@ -27,7 +27,7 @@
- rm -f crond crontab
-
- cleano:
-- rm -f *.o dcron.tgz $(PROTOS)
-+ rm -f *.o dcron.tgz $(PROTOS) *~
-
- install: crond crontab
- install -o root -g root -m 0755 crond /usr/sbin
---- ./crontab.c:1.1 Fri Jan 7 18:15:59 2000
-+++ ./crontab.c Sun Mar 19 15:03:36 2000
-@@ -15,6 +15,9 @@
- char *CDir = CRONTABS;
- int UserId;
- short LogLevel = 9;
-+short DebugOpt = 0;
-+short LoggerOpt = 0;
-+char *LogFile = LOG_FILE;
-
- void EditFile(const char *user, const char *file);
- int GetReplaceStream(const char *user, const char *file);
-@@ -136,7 +139,7 @@
- */
-
- if (chdir(CDir) < 0) {
-- fprintf(stderr, "cannot change diir to %s: %s\n", CDir, strerror(errno));
-+ fprintf(stderr, "cannot change dir to %s: %s\n", CDir, strerror(errno));
- exit(1);
- }
-
---- ./defs.h:1.1 Fri Jan 7 18:15:59 2000
-+++ ./defs.h Sun Mar 19 15:03:36 2000
-@@ -17,6 +17,9 @@
- #include <pwd.h>
- #include <unistd.h>
- #include <grp.h>
-+#include <syslog.h>
-+#include <signal.h>
-+#include <getopt.h>
- #include <sys/ioctl.h>
- #include <sys/wait.h>
- #include <sys/stat.h>
-@@ -30,6 +33,9 @@
- #endif
- #ifndef TMPDIR
- #define TMPDIR "/var/spool/cron"
-+#endif
-+#ifndef LOG_FILE
-+#define LOG_FILE "/var/log/cron"
- #endif
- #ifndef OPEN_MAX
- #define OPEN_MAX 256
---- ./job.c:1.1 Fri Jan 7 18:15:59 2000
-+++ ./job.c Thu Apr 20 12:10:36 2000
-@@ -16,7 +16,7 @@
- {
- char mailFile[128];
- int mailFd;
--
-+
- line->cl_Pid = 0;
- line->cl_MailFlag = 0;
-
-@@ -57,14 +57,6 @@
- log(5, "Child Running %s\n", line->cl_Shell);
-
- /*
-- * Setup close-on-exec descriptor in case exec fails
-- */
--
-- dup2(2, 8);
-- fcntl(8, F_SETFD, 1);
-- fclose(stderr);
--
-- /*
- * stdin is already /dev/null, setup stdout and stderr
- */
-
-@@ -73,13 +65,13 @@
- dup2(mailFd, 2);
- close(mailFd);
- } else {
-- logfd(8, "unable to create mail file user %s file %s, output to /dev/null\n",
-+ log_err("unable to create mail file user %s file %s, output to /dev/null\n",
- file->cf_User,
- mailFile
- );
- }
- execl("/bin/sh", "/bin/sh", "-c", line->cl_Shell, NULL, NULL);
-- logfd(8, "unable to exec, user %s cmd /bin/sh -c %s\n",
-+ log_err("unable to exec, user %s cmd /bin/sh -c %s\n",
- file->cf_User,
- line->cl_Shell
- );
-@@ -89,7 +81,7 @@
- /*
- * PARENT, FORK FAILED
- */
-- log9("couldn't fork, user %s\n", file->cf_User);
-+ log_err("couldn't fork, user %s\n", file->cf_User);
- line->cl_Pid = 0;
- remove(mailFile);
- } else {
-@@ -158,6 +150,7 @@
- if (mailFd < 0) {
- return;
- }
-+
- if (fstat(mailFd, &sbuf) < 0 ||
- sbuf.st_uid != DaemonUid ||
- sbuf.st_nlink != 0 ||
-@@ -182,15 +175,6 @@
- exit(0);
-
- /*
-- * create close-on-exec log descriptor in case exec fails
-- */
--
-- dup2(2, 8);
-- fcntl(8, F_SETFD, 1);
--
-- fclose(stderr);
--
-- /*
- * run sendmail with mail file as standard input, only if
- * mail file exists!
- */
-@@ -200,7 +184,7 @@
- close(mailFd);
-
- execl(SENDMAIL, SENDMAIL, SENDMAIL_ARGS, NULL, NULL);
-- logfd(8, "unable to exec %s %s, user %s, output to sink null",
-+ log_err("unable to exec %s %s, user %s, output to sink null",
- SENDMAIL,
- SENDMAIL_ARGS,
- file->cf_User
-@@ -210,7 +194,7 @@
- /*
- * PARENT, FORK FAILED
- */
-- log9("unable to fork, user %s", file->cf_User);
-+ log_err("unable to fork, user %s", file->cf_User);
- line->cl_Pid = 0;
- } else {
- /*
---- ./main.c:1.1 Fri Jan 7 18:15:59 2000
-+++ ./main.c Sun Mar 19 15:03:36 2000
-@@ -15,14 +15,18 @@
- Prototype short DebugOpt;
- Prototype short LogLevel;
- Prototype short ForegroundOpt;
--Prototype char *CDir;
--Prototype int DaemonUid;
-+Prototype short LoggerOpt;
-+Prototype char *CDir;
-+Prototype char *LogFile;
-+Prototype uid_t DaemonUid;
-
- short DebugOpt;
- short LogLevel = 8;
--short ForegroundOpt;
-+short ForegroundOpt = 0;
-+short LoggerOpt;
- char *CDir = CRONTABS;
--int DaemonUid;
-+char *LogFile = LOG_FILE;
-+uid_t DaemonUid;
-
- int
- main(int ac, char **av)
-@@ -35,48 +39,49 @@
-
- DaemonUid = getuid();
-
-- for (i = 1; i < ac; ++i) {
-- char *ptr = av[i];
-+ opterr = 0; /* disable getopt 'errors' message.*/
-
-- if (*ptr == '-') {
-- ptr += 2;
--
-- switch(ptr[-1]) {
-+ while ((i = getopt(ac,av,"d:l:L:fbSc:")) != EOF){
-+
-+ switch (i){
- case 'l':
-- LogLevel = (*ptr) ? strtol(ptr, NULL, 0) : 1;
-- continue;
-+ LogLevel = atoi(optarg);
-+ break;
- case 'd':
-- DebugOpt = (*ptr) ? strtol(ptr, NULL, 0) : 1;
-+ DebugOpt = atoi(optarg);
- LogLevel = 0;
- /* fall through */
-+ break;
- case 'f':
- ForegroundOpt = 1;
-- continue;
-+ break;
- case 'b':
- ForegroundOpt = 0;
-- continue;
-+ break;
-+ case 'S': /* select logging to syslog */
-+ LoggerOpt = 0;
-+ break;
-+ case 'L': /* select internal file logger */
-+ LoggerOpt = 1;
-+ if (*optarg != 0) LogFile = optarg;
-+ break;
- case 'c':
-- CDir = (*ptr) ? ptr : av[++i];
-- continue;
-+ if (*optarg != 0) CDir = optarg;
-+ break;
- default:
-+ /*
-+ * parse error
-+ */
-+ printf("dcron " VERSION "\n");
-+ printf("dcron -d [#] -l [#] -S -L logfile -f -b -c dir\n");
-+ printf("-d num\tdebug level\n-l num\tlog level (8 - default)\n-S\tlog to syslod (defualt)\n");
-+ printf("-L file\tlog to file\n-f\trun in fordeground\n");
-+ printf("-b\trun in background (default)\n-c dir\tworking dir\n");
-+ exit(1);
- break;
-- }
-- }
-- break; /* error */
-- }
--
-- /*
-- * check for parse error
-- */
--
-- if (i != ac) {
-- if (i > ac)
-- puts("expected argument for option");
-- printf("dcron " VERSION "\n");
-- printf("dcron -d[#] -l[#] -f -b -c dir\n");
-- exit(1);
-+ }
- }
--
-+
- /*
- * change directory
- */
-@@ -87,14 +92,15 @@
- }
-
- /*
-- * close stdin and stdout (stderr normally redirected by caller).
-- * close unused descriptors
-+ * close stdin and stdout, stderr.
-+ * close unused descriptors - don't need.
- * optional detach from controlling terminal
- */
-
- fclose(stdin);
- fclose(stdout);
--
-+ fclose(stderr);
-+
- i = open("/dev/null", O_RDWR);
- if (i < 0) {
- perror("open: /dev/null:");
-@@ -102,15 +108,14 @@
- }
- dup2(i, 0);
- dup2(i, 1);
-+ dup2(i, 2);
-
-- for (i = 3; i < OPEN_MAX; ++i) {
-- close(i);
-- }
--
- if (ForegroundOpt == 0) {
- int fd;
- int pid;
--
-+ if (setsid() < 0)
-+ perror("setsid");
-+
- if ((fd = open("/dev/tty", O_RDWR)) >= 0) {
- ioctl(fd, TIOCNOTTY, 0);
- close(fd);
-@@ -125,13 +130,17 @@
- if (pid > 0)
- exit(0);
- }
--
-+
-+ (void)startlogger(); /* need if syslog mode selected */
-+ (void)initsignals(); /* set some signal handlers */
-+
- /*
- * main loop - synchronize to 1 second after the minute, minimum sleep
- * of 1 second.
- */
-+
-+ log(9,"%s " VERSION " dillon, started, log level %d\n", av[0], LogLevel);
-
-- log9("%s " VERSION " dillon, started\n", av[0]);
- SynchronizeDir(".");
-
- {
---- ./subs.c:1.1 Fri Jan 7 18:15:59 2000
-+++ ./subs.c Sun Mar 19 15:03:36 2000
-@@ -10,43 +10,62 @@
-
- Prototype void log(int level, const char *ctl, ...);
- Prototype void log9(const char *ctl, ...);
--Prototype void logfd(int fd, const char *ctl, ...);
-+Prototype void log_err(const char *ctl, ...);
- Prototype void fdprintf(int fd, const char *ctl, ...);
--Prototype int ChangeUser(const char *user, short dochdir);
--Prototype void vlog(int level, int fd, const char *ctl, va_list va);
--Prototype int slog(char *buf, size_t sz, const char *ctl, va_list va, short useDate);
-+Prototype void vlog(int level, int MLOG_LEVEL, const char *ctl, va_list va);
-+Prototype int ChangeUser(const char *user, short dochdir);
- Prototype char *xx_strdup(const char *);
-+Prototype void startlogger(void);
-+Prototype void initsignals(void);
-
-+/*
-+ set log_level=9 and log messages
-+*/
-+
- void
- log9(const char *ctl, ...)
- {
- va_list va;
-
- va_start(va, ctl);
-- vlog(9, 2, ctl, va);
-+ vlog(9, LOG_WARNING, ctl, va);
- va_end(va);
- }
-
-+/*
-+ normal logger call point.
-+*/
-+
- void
- log(int level, const char *ctl, ...)
- {
- va_list va;
-
- va_start(va, ctl);
-- vlog(level, 2, ctl, va);
-+ vlog(level, LOG_NOTICE, ctl, va);
- va_end(va);
- }
-
-+/*
-+ Original: void
-+ logfd(int fd, const char *ctl, ...)
-+ Updated to: log_error (used by jobs.c)
-+*/
-+
- void
--logfd(int fd, const char *ctl, ...)
-+log_err(const char *ctl, ...)
- {
- va_list va;
-
- va_start(va, ctl);
-- vlog(9, fd, ctl, va);
-+ vlog(20, LOG_ERR, ctl, va);
- va_end(va);
- }
-
-+/*
-+ used by jobs.c (write to temp file..)
-+*/
-+
- void
- fdprintf(int fd, const char *ctl, ...)
- {
-@@ -60,32 +79,28 @@
- }
-
- void
--vlog(int level, int fd, const char *ctl, va_list va)
-+vlog(int level, int MLOG_LEVEL, const char *ctl, va_list va)
- {
- char buf[1024];
-- short n;
-- static short useDate = 1;
-+ int logfd;
-
- if (level >= LogLevel) {
-- write(fd, buf, n = slog(buf, sizeof(buf), ctl, va, useDate));
-- useDate = (n && buf[n-1] == '\n');
-+
-+ vsnprintf(buf,sizeof(buf), ctl, va);
-+ if (DebugOpt) fprintf(stderr,"%s",buf);
-+ else
-+ if (LoggerOpt == 0) syslog(MLOG_LEVEL, "%s",buf );
-+ else {
-+ if ((logfd = open(LogFile,O_WRONLY|O_CREAT|O_APPEND,600)) >= 0){
-+ write(logfd, buf, strlen(buf));
-+ close(logfd);
-+ } else
-+ fprintf(stderr,"Can't open log file. Err: %s",strerror(errno));
-+ }
- }
- }
-
- int
--slog(char *buf, size_t sz, const char *ctl, va_list va, short useDate)
--{
-- time_t t = time(NULL);
-- struct tm *tp = localtime(&t);
--
-- buf[0] = 0;
-- if (useDate)
-- strftime(buf, 128, "%d-%b-%Y %H:%M ", tp);
-- vsnprintf(buf + strlen(buf), sz - strlen(buf), ctl, va);
-- return(strlen(buf));
--}
--
--int
- ChangeUser(const char *user, short dochdir)
- {
- struct passwd *pas;
-@@ -141,3 +156,28 @@
- return(ptr);
- }
-
-+
-+void
-+startlogger(void){
-+int logfd;
-+
-+ if (LoggerOpt == 0)
-+ openlog("crond",LOG_CONS|LOG_PID,LOG_CRON);
-+
-+ else { /* test logfile */
-+ if ((logfd = open(LogFile,O_WRONLY|O_CREAT|O_APPEND,600)) >= 0)
-+ close(logfd);
-+ else
-+ printf("Failed to open log file '%s' reason: %s",LogFile,strerror(errno));
-+ }
-+}
-+
-+
-+void
-+initsignals(void){
-+
-+ signal(SIGHUP,SIG_IGN); /* hmm.. but, if kill -HUP original
-+ * version - his died. ;(
-+ */
-+
-+}
diff --git a/source/a/dcron/dcron-2.3.3.diff3 b/source/a/dcron/dcron-2.3.3.diff3
deleted file mode 100644
index 25c72fc96..000000000
--- a/source/a/dcron/dcron-2.3.3.diff3
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./defs.h.orig Wed May 30 14:13:05 2001
-+++ ./defs.h Wed May 30 14:13:13 2001
-@@ -41,7 +41,7 @@
- #define OPEN_MAX 256
- #endif
- #ifndef SENDMAIL
--#define SENDMAIL "/usr/lib/sendmail"
-+#define SENDMAIL "/usr/sbin/sendmail"
- #endif
- #ifndef SENDMAIL_ARGS
- #define SENDMAIL_ARGS "-t", "-oem", "-i"
diff --git a/source/a/dcron/dcron-2.3.3.lsm b/source/a/dcron/dcron-2.3.3.lsm
deleted file mode 100644
index 5c161b50a..000000000
--- a/source/a/dcron/dcron-2.3.3.lsm
+++ /dev/null
@@ -1,17 +0,0 @@
-Begin3
-Title: DCron - yet another cron
-Version: 2.3.3
-Entered-date: 17Feb98
-Description: A multi-user cron written from scratch by the author,
- similar to vixie-cron but with significant differences.
- Attention paid less to feature creep and more to usability
- and reliability
-Keywords: cron crontab dcron
-Author: dillon@apollo.west.oic.com (Matthew Dillon)
-Maintained-by: dillon@apollo.west.oic.com (Matthew Dillon)
-Primary-site: sunsite.unc.edu /pub/Linux/system/daemons/cron
-Alternate-site:
-Original-site:
-Platforms:
-Copying-policy: GPL
-End
diff --git a/source/a/dcron/dcron-2.3.3.version.diff b/source/a/dcron/dcron-2.3.3.version.diff
deleted file mode 100644
index 1b65a0c98..000000000
--- a/source/a/dcron/dcron-2.3.3.version.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./defs.h.orig Tue Apr 9 01:07:07 2002
-+++ ./defs.h Tue Apr 9 01:07:15 2002
-@@ -51,7 +51,7 @@
- #endif
-
-
--#define VERSION "2.3.2"
-+#define VERSION "2.3.3"
-
- typedef struct CronFile {
- struct CronFile *cf_Next;
diff --git a/source/a/dcron/dcron.SlackBuild b/source/a/dcron/dcron.SlackBuild
index c9bb62ff3..f67f869ff 100755
--- a/source/a/dcron/dcron.SlackBuild
+++ b/source/a/dcron/dcron.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -9,7 +9,7 @@
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
@@ -20,57 +20,99 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.3.3
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-6}
+VERSION=${VERSION:-$(echo dcron-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-dcron
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
rm -rf $PKG
mkdir -p $TMP $PKG
-
-# Explode the package framework:
-cd $PKG
-explodepkg $CWD/_dcron.tar.gz
-
cd $TMP
-rm -rf dcron-$VERSION
-tar xzvf $CWD/dcron-$VERSION.tar.gz
+rm -rf dcron
+tar xvf $CWD/dcron-$VERSION.tar.?z* || exit 1
cd dcron-$VERSION
-mkdir -p $PKG/usr/doc/dcron-$VERSION
-cp -a CHANGES README dcron-$VERSION.lsm $PKG/usr/doc/dcron-2.3.3
-chown root:root $PKG/usr/doc/dcron-$VERSION/*
-chmod 644 $PKG/usr/doc/dcron-$VERSION/*
-zcat $CWD/dcron-$VERSION.diff.gz | patch -p1 -E --verbose --backup || exit
-# Added signal handling/logging patch from TEMHOTA <temnota@kmv.ru>:
-zcat $CWD/dcron-$VERSION.diff2.gz | patch -p1 -E --verbose --backup || exit
-# Use /usr/sbin/sendmail, not /usr/lib/sendmail. Fixes cron working
-# with Postfix. Suggested by Big Brother.
-zcat $CWD/dcron-$VERSION.diff3.gz | patch -p1 -E --verbose --backup || exit
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Define TMPDIR as /var/spool/cron instead of /tmp
+zcat $CWD/defs.h.TMPDIR.diff.gz | patch -p1 || exit 1
+
# Fix problem where user creates /var/spool/cron/crontabs/<user>.new
# using 'crontab -', exits with control-c, and then crontab refuses to
-# overwrite the junk file:
-zcat $CWD/dcron-$VERSION.crontab.diff4.gz | patch -p1 -E --verbose --backup || exit
-# Dcron reports wrong version:
-zcat $CWD/dcron-2.3.3.version.diff.gz | patch -p1 || exit
-# Keep dcron from improperly forking in some circumstances.
-# Thanks to Henrik Carlqvist for the patch.
-zcat $CWD/dcron.fork.diff.gz | patch -p1
-make
-strip crond crontab
+# overwrite the junk file. It would be better if dcron would wipe
+# the junk file in the event it were not closed correctly, but oh well.
+zcat $CWD/patches/crontab.c.O_EXCL.diff.gz | patch -p1 || exit 1
+
+# Get the directory names under /var/spool/ right in the manpages:
+zcat $CWD/dcron.manpage.paths.diff.gz | patch -p1 --verbose || exit 1
+
+CFLAGS+="$SLKCFLAGS" make || exit 1
+strip --strip-unneeded crond crontab
+
+mkdir -p $PKG/usr/{bin,sbin}
cat crond > $PKG/usr/sbin/crond
cat crontab > $PKG/usr/bin/crontab
zcat $CWD/run-parts.gz > $PKG/usr/bin/run-parts
+chmod 0755 $PKG/usr/sbin/crond
+chmod 4711 $PKG/usr/bin/crontab
+chmod 0755 $PKG/usr/bin/run-parts
+
+mkdir -p $PKG/usr/man/man{1,8}
cat crontab.1 | gzip -9c > $PKG/usr/man/man1/crontab.1.gz
cat crond.8 | gzip -9c > $PKG/usr/man/man8/crond.8.gz
cat $CWD/run-parts.8.gz > $PKG/usr/man/man8/run-parts.8.gz
+# Create some other stuff we need
+mkdir -p $PKG/etc/cron.{hourly,daily,weekly,monthly}
+mkdir -p $PKG/var/spool/cron/crontabs
+mkdir -p $PKG/var/spool/cron/cronstamps
+chmod 0751 $PKG/var/spool/cron
+chmod 0750 $PKG/var/spool/cron/crontabs $PKG/var/spool/cron/cronstamps
+zcat $CWD/crontab.root > $PKG/var/spool/cron/crontabs/root.new
+chmod 0600 $PKG/var/spool/cron/crontabs/root.new
+# dcron will whine about "unable to scan" this directory, so we'll create it
+mkdir -p $PKG/etc/cron.d
+
+mkdir -p $PKG/usr/doc/dcron-$VERSION
+cp -a \
+ CHANGELOG README \
+ extra \
+ $PKG/usr/doc/dcron-$VERSION
+chown -R root:root $PKG/usr/doc/dcron-$VERSION/*
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
-# Build the package:
cd $PKG
-makepkg -l y -c n $TMP/dcron-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/dcron-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/dcron/dcron.fork.diff b/source/a/dcron/dcron.fork.diff
deleted file mode 100644
index b3aefc054..000000000
--- a/source/a/dcron/dcron.fork.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./job.c.orig 2005-09-11 16:36:43.000000000 -0700
-+++ ./job.c 2005-09-11 16:37:51.000000000 -0700
-@@ -51,7 +51,7 @@
- */
-
- if (ChangeUser(file->cf_User, 1) < 0)
-- return;
-+ exit(0);
-
- if (DebugOpt)
- log(5, "Child Running %s\n", line->cl_Shell);
diff --git a/source/a/dcron/dcron.manpage.paths.diff b/source/a/dcron/dcron.manpage.paths.diff
new file mode 100644
index 000000000..afd9c3d16
--- /dev/null
+++ b/source/a/dcron/dcron.manpage.paths.diff
@@ -0,0 +1,65 @@
+--- ./crond.8.orig 2010-01-18 09:29:25.000000000 -0600
++++ ./crond.8 2010-02-11 17:22:36.000000000 -0600
+@@ -17,13 +17,13 @@
+ .RE
+ .TP
+ .B -c dir
+-directory of per-user crontabs (defaults to /var/spool/cron)
++directory of per-user crontabs (defaults to /var/spool/cron/crontabs)
+ .RS
+ .RE
+ .TP
+ .B -t dir
+ directory of timestamps for \@freq and FREQ=\&... jobs (defaults to
+-/var/spool/cronstamps)
++/var/spool/cron/cronstamps)
+ .RS
+ .RE
+ .TP
+@@ -172,7 +172,7 @@
+ \f[B]crontab\f[] notifies \f[B]crond\f[] that a user's crontab file
+ has been modified (or created or deleted) through the
+ \[lq]cron.update\[rq] file, which resides in the per-user crontabs
+-directory (usually /var/spool/cron).
++directory (usually /var/spool/cron/crontabs).
+ \f[B]crontab\f[] appends the filename of the modified crontab file
+ to \[lq]cron.update\[rq]; and \f[B]crond\f[] inspects this file to
+ determine when to reparse or otherwise update its internal list of
+@@ -180,7 +180,7 @@
+ .PP
+ Whenever a \[lq]cron.update\[rq] file is seen, \f[B]crond\f[] also
+ re-reads timestamp files from its timestamp directory (usually
+-/var/spool/cronstamps).
++/var/spool/cron/cronstamps).
+ Normally these will just mirror \f[B]crond\f[]'s own internal
+ representations, but this mechanism could be used to manually
+ notify \f[B]crond\f[] that you've externally updated the
+@@ -210,7 +210,7 @@
+ crontab to /etc/cron.d/foo.
+ .PP
+ The superuser has a per-user crontab along with other users.
+-It usually resides at /var/spool/cron/root.
++It usually resides at /var/spool/cron/crontabs/root.
+ .PP
+ Users can only have a crontab if they have an entry in /etc/passwd;
+ however they do not need to have login shell privileges.
+--- ./crontab.1.orig 2010-01-18 09:29:25.000000000 -0600
++++ ./crontab.1 2010-02-11 17:23:13.000000000 -0600
+@@ -45,7 +45,7 @@
+ different user and/or crontab directory.
+ .PP
+ The superuser also has his or her own per-user crontab, saved as
+-/var/spool/cron/root.
++/var/spool/cron/crontabs/root.
+ .PP
+ Unlike other cron daemons, this crond/crontab package doesn't try
+ to do everything under the sun.
+@@ -117,7 +117,7 @@
+ The formats \@hourly, \@daily, \@weekly, \@monthly, and \@yearly
+ need to update timestamp files when their jobs have been run.
+ The timestamp files are saved as
+-/var/spool/cronstamps/user.jobname.
++/var/spool/cron/cronstamps/user.jobname.
+ So for all of these formats, the cron command needs a jobname,
+ given by prefixing the command with \f[B]ID=jobname\f[].
+ (This syntax was chosen to maximize the chance that our crontab
diff --git a/source/a/dcron/dcron.tmpdir.diff b/source/a/dcron/dcron.tmpdir.diff
deleted file mode 100644
index 3946fedeb..000000000
--- a/source/a/dcron/dcron.tmpdir.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- defs.h.orig Mon May 2 10:27:40 1994
-+++ defs.h Sun Apr 4 22:09:00 1999
-@@ -29,7 +29,7 @@
- #define CRONTABS "/var/spool/cron/crontabs"
- #endif
- #ifndef TMPDIR
--#define TMPDIR "/tmp"
-+#define TMPDIR "/var/spool/cron"
- #endif
- #ifndef OPEN_MAX
- #define OPEN_MAX 256
diff --git a/source/a/dcron/defs.h.TMPDIR.diff b/source/a/dcron/defs.h.TMPDIR.diff
new file mode 100644
index 000000000..6263843b2
--- /dev/null
+++ b/source/a/dcron/defs.h.TMPDIR.diff
@@ -0,0 +1,11 @@
+--- ./defs.h.orig 2010-01-15 20:17:04.000000000 -0600
++++ ./defs.h 2010-02-11 16:39:33.000000000 -0600
+@@ -73,7 +73,7 @@
+ #define CRONUPDATE "cron.update"
+ #endif
+ #ifndef TMPDIR
+-#define TMPDIR "/tmp"
++#define TMPDIR "/var/spool/cron"
+ #endif
+
+ #ifndef SENDMAIL
diff --git a/source/a/dcron/doinst.sh b/source/a/dcron/doinst.sh
new file mode 100644
index 000000000..ce8dc7f3b
--- /dev/null
+++ b/source/a/dcron/doinst.sh
@@ -0,0 +1,5 @@
+if [ ! -r var/spool/cron/crontabs/root ]; then
+ mv var/spool/cron/crontabs/root.new var/spool/cron/crontabs/root
+else
+ rm -f var/spool/cron/crontabs/root.new
+fi
diff --git a/source/a/dcron/run-parts b/source/a/dcron/run-parts
index dd6b59b3e..247d8c6e1 100644
--- a/source/a/dcron/run-parts
+++ b/source/a/dcron/run-parts
@@ -29,7 +29,7 @@ for SCRIPT in $1/* ; do
# Determine if this file should be skipped by suffix:
SKIP=false
for SUFFIX in $IGNORE_SUFFIXES ; do
- if [ ! "`basename $SCRIPT $SUFFIX`" = "`basename $SCRIPT`" ]; then
+ if [ ! "$(basename $SCRIPT $SUFFIX)" = "$(basename $SCRIPT)" ]; then
SKIP=true
break
fi
diff --git a/source/a/device-mapper/64-device-mapper.rules b/source/a/device-mapper/64-device-mapper.rules
deleted file mode 100644
index 7e9a235db..000000000
--- a/source/a/device-mapper/64-device-mapper.rules
+++ /dev/null
@@ -1,37 +0,0 @@
-# device mapper links hook into "change" events, when the dm table
-# becomes available; some table-types must be ignored
-
-KERNEL=="device-mapper", NAME="mapper/control"
-
-KERNEL!="dm-*", GOTO="device_mapper_end"
-ACTION!="add|change", GOTO="device_mapper_end"
-
-# lookup device name
-# use dmsetup, until devmap_name is provided by sys-fs/device-mapper
-PROGRAM=="/sbin/dmsetup -j %M -m %m --noopencount --noheadings -c -o name info",
- ENV{DM_NAME}="%c"
-
-# do not do anything if dmsetup does not provide a name
-ENV{DM_NAME}=="", NAME="", OPTIONS="ignore_device"
-
-# ignore luks crypt devices while not fully up
-ENV{DM_NAME}=="temporary-cryptsetup-*", NAME="", OPTIONS="ignore_device"
-
-# use queried name
-ENV{DM_NAME}=="?*", NAME="mapper/$env{DM_NAME}"
-
-SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}"
-SYMLINK+="disk/by-name/$env{DM_NAME}"
-
-PROGRAM!="/sbin/dmsetup status -j %M -m %m", GOTO="device_mapper_end"
-ENV{DM_TYPE}="%c{3}"
-
-ENV{DM_TYPE}=="|*error*", GOTO="device_mapper_end"
-
-IMPORT{program}="vol_id --export $tempnode"
-OPTIONS="link_priority=50"
-ENV{DM_TYPE}=="*snapshot-origin*", OPTIONS="link_priority=60"
-ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
-ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
-
-LABEL="device_mapper_end"
diff --git a/source/a/device-mapper/device-mapper.SlackBuild b/source/a/device-mapper/device-mapper.SlackBuild
deleted file mode 100755
index d770deed7..000000000
--- a/source/a/device-mapper/device-mapper.SlackBuild
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/bin/sh
-
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-VERSION=1.02.28
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-1}
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-device-mapper
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-fi
-
-rm -rf $PKG
-mkdir -p $TMP $PKG
-cd $TMP
-rm -rf device-mapper.$VERSION
-tar xvf $CWD/device-mapper.$VERSION.tar.bz2 || exit 1
-cd device-mapper.$VERSION
-
-chown -R root.root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-./configure \
- --libdir=/lib${LIBDIRSUFFIX} \
- --mandir=/usr/man \
- --enable-static_link \
- --enable-pkgconfig \
- --enable-dmeventd \
- --disable-selinux \
- --with-device-uid=0 \
- --with-device-gid=6 \
- --with-device-mode=0660 \
- --build=$ARCH-slackware-linux
- # I tried adding --enable-compat but that failed to compile
-
-make $NUMJOBS || make || exit 1
-make install DESTDIR=$PKG || exit 1
-
-# On x86_64 the pkgconfig files are installed to the wrong directory, but
-# the .pc content is correct, so we just move them over:
-if [ ! -d $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig ]; then
- mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}
- mv $PKG/usr/lib/pkgconfig $PKG/usr/lib${LIBDIRSUFFIX}/
- rmdir $PKG/usr/lib || exit 1
-fi
-
-mkdir -p $PKG/lib/udev/rules.d
-cat $CWD/64-device-mapper.rules > $PKG/lib/udev/rules.d/64-device-mapper.rules
-
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-)
-
-mkdir -p $PKG/usr/doc/device-mapper.$VERSION
-cp -a \
- COPYING* INSTALL INTRO README* VERSION WHATS_NEW \
- $PKG/usr/doc/device-mapper.$VERSION
-
-# Compress and if needed symlink the man pages:
-if [ -d $PKG/usr/man ]; then
- ( cd $PKG/usr/man
- for manpagedir in $(find . -type d -name "man*") ; do
- ( cd $manpagedir
- for eachpage in $( find . -type l -maxdepth 1) ; do
- ln -s $( readlink $eachpage ).gz $eachpage.gz
- rm $eachpage
- done
- gzip -9 *.?
- )
- done
- )
-fi
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-makepkg -l y -c n $TMP/device-mapper-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/a/device-mapper/slack-desc b/source/a/device-mapper/slack-desc
deleted file mode 100644
index 2708a39fb..000000000
--- a/source/a/device-mapper/slack-desc
+++ /dev/null
@@ -1,20 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|' on
-# the right side marks the last column you can put a character in. You must make
-# exactly 11 lines for the formatting to be correct. It's also customary to
-# leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-device-mapper: device-mapper (device-mapper for logical volume management)
-device-mapper:
-device-mapper: The goal of device-mapper is to support volume management. The
-device-mapper: driver enables the definition of new block devices composed of
-device-mapper: ranges of sectors of existing devices. This can be used to define
-device-mapper: disk partitions or logical volumes.
-device-mapper:
-device-mapper: device-mapper is required by LVM2, the Logical Volume Manager.
-device-mapper:
-device-mapper:
-device-mapper:
-
diff --git a/source/a/e2fsprogs/e2fsprogs.SlackBuild b/source/a/e2fsprogs/e2fsprogs.SlackBuild
index c57cea4f3..c79c29eb7 100755
--- a/source/a/e2fsprogs/e2fsprogs.SlackBuild
+++ b/source/a/e2fsprogs/e2fsprogs.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,11 +20,21 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-1.41.8}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo e2fsprogs*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -34,6 +44,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -53,11 +66,7 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Disable --uuidd builds the same functionality into libuuid.*.
-# It's better that way.
-# Keep the included libblkid and libuuid for now, but we'll be using the
-# system-wide one from util-linux-ng sooner or later...
-# fsck.* will also be moving to u-l-ng
+# Disable libblkid and libuuid, as we'll be using the ones in u-l-ng
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix= \
@@ -69,8 +78,8 @@ CFLAGS="$SLKCFLAGS" \
--infodir=/usr/info \
--docdir=/usr/doc/e2fsprogs-$VERSION \
--enable-elf-shlibs \
- --enable-libblkid \
- --enable-libuuid \
+ --disable-libblkid \
+ --disable-libuuid \
--disable-uuidd \
--build=$ARCH-slackware-linux
@@ -99,6 +108,7 @@ mv $PKG/lib${LIBDIRSUFFIX}/pkgconfig $PKG/lib${LIBDIRSUFFIX}/*.so \
ln -sf /lib${LIBDIRSUFFIX}/$(readlink $i) $i ;
done
)
+# findfs is intentionally left out here - we use the one in util-linux-ng
( cd $PKG/sbin
rm -f \
mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev \
@@ -108,7 +118,6 @@ mv $PKG/lib${LIBDIRSUFFIX}/pkgconfig $PKG/lib${LIBDIRSUFFIX}/*.so \
ln -sf mke2fs mkfs.ext4
ln -sf mke2fs mkfs.ext4dev
ln -sf tune2fs e2label
- ln -sf tune2fs findfs
cat << EOF > fsck.ext2
#!/bin/sh
exec /sbin/e2fsck -C 0 \$*
diff --git a/source/a/eject/eject.SlackBuild b/source/a/eject/eject.SlackBuild
index 56d1e79fc..c637ef553 100755
--- a/source/a/eject/eject.SlackBuild
+++ b/source/a/eject/eject.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,9 +23,17 @@
PKGNAM=eject
VERSION=${VERSION:-2.1.5}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
-
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -39,6 +47,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
cd $TMP
@@ -46,6 +56,9 @@ rm -rf ${PKGNAM}
tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2
cd ${PKGNAM}
+# Patch a problem with spaces in the pathname:
+zcat $CWD/eject.spaces.diff.gz | patch -p0 --verbose || exit 1
+
# Make sure ownerships and permissions are sane:
chown -R root:root .
find . \
diff --git a/source/a/eject/eject.spaces.diff b/source/a/eject/eject.spaces.diff
new file mode 100644
index 000000000..2935b24bb
--- /dev/null
+++ b/source/a/eject/eject.spaces.diff
@@ -0,0 +1,51 @@
+--- eject.c 15 Jul 2006 23:28:28 -0000 1.10
++++ eject.c 2007-02-14 13:57:52.000000000 +0100
+@@ -379,6 +379,30 @@ static int FileExists(const char *name,
+
+
+ /*
++ * Linux mangles spaces in mount points by changing them to an octal string
++ * of '\040'. So lets scan the mount point and fix it up by replacing all
++ * occurrences off '\0##' with the ASCII value of 0##. Requires a writable
++ * string as input as we mangle in place. Some of this was taken from the
++ * util-linux package.
++ */
++#define octalify(a) ((a) & 7)
++#define tooctal(s) (64*octalify(s[1]) + 8*octalify(s[2]) + octalify(s[3]))
++#define isoctal(a) (((a) & ~7) == '0')
++static char *DeMangleMount(char *s)
++{
++ char *tmp = s;
++ while ((tmp = strchr(tmp, '\\')) != NULL) {
++ if (tmp[1] == '0' && isoctal(tmp[2]) && isoctal(tmp[3])) {
++ tmp[0] = tooctal(tmp);
++ memmove(tmp+1, tmp+4, strlen(tmp)-3);
++ }
++ ++tmp;
++ }
++ return s;
++}
++
++
++/*
+ * Given name, such as foo, see if any of the following exist:
+ *
+ * foo (if foo starts with '.' or '/')
+@@ -890,6 +914,8 @@ static int MountedDevice(const char *nam
+ if (rc >= 2) {
+ int mtabmaj, mtabmin;
+ GetMajorMinor(s1, &mtabmaj, &mtabmin);
++ DeMangleMount(s1);
++ DeMangleMount(s2);
+ if (((strcmp(s1, name) == 0) || (strcmp(s2, name) == 0)) ||
+ ((maj != -1) && (maj == mtabmaj) && (min == mtabmin))) {
+ FCLOSE(fp);
+@@ -935,6 +961,8 @@ static int MountableDevice(const char *n
+
+ while (fgets(line, sizeof(line), fp) != 0) {
+ rc = sscanf(line, "%1023s %1023s", s1, s2);
++ DeMangleMount(s1);
++ DeMangleMount(s2);
+ if (rc >= 2 && s1[0] != '#' && strcmp(s2, name) == 0) {
+ FCLOSE(fp);
+ *deviceName = strdup(s1);
diff --git a/source/a/elvis/elvis.SlackBuild b/source/a/elvis/elvis.SlackBuild
index 3bb83ba70..14f3cc926 100755
--- a/source/a/elvis/elvis.SlackBuild
+++ b/source/a/elvis/elvis.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,9 +21,18 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
VERSION=2.2_0
-ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-2}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-elvis
@@ -34,6 +43,11 @@ cd $TMP
rm -rf elvis-$VERSION
tar xjvf $CWD/elvis-$VERSION.tar.bz2
cd elvis-$VERSION
+
+# Fix redefined getline() with glibc > 2.9 by changing the
+# local function to elv_getline():
+zcat $CWD/elvis.ref.c.getline.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
# Time for a kludge (i.e. don't suggest this kind of thing be
# done as a rule... I don't know why I'm crazy today).
diff --git a/source/a/elvis/elvis.ref.c.getline.diff b/source/a/elvis/elvis.ref.c.getline.diff
new file mode 100644
index 000000000..957c2d231
--- /dev/null
+++ b/source/a/elvis/elvis.ref.c.getline.diff
@@ -0,0 +1,47 @@
+--- ./ref.c.orig 2003-10-20 21:32:25.000000000 -0500
++++ ./ref.c 2010-01-27 12:27:06.000000000 -0600
+@@ -42,7 +42,7 @@
+
+ #if USE_PROTOTYPES
+ static void usage(char *argv0);
+-static char *getline(FILE *fp);
++static char *elv_getline(FILE *fp);
+ static void store(char *line, char **list);
+ static LINECLS classify(char *line, LINECLS prev);
+ static void lookup(TAG *tag);
+@@ -171,7 +171,7 @@
+ /* This function reads a single line, and replaces the terminating newline with
+ * a '\0' byte. The string will be in a static buffer. Returns NULL at EOF.
+ */
+-static char *getline(fp)
++static char *elv_getline(fp)
+ FILE *fp;
+ {
+ int ch;
+@@ -348,7 +348,7 @@
+ }
+
+ /* for each line... */
+- for (lnum = 1, lc = LC_COMPLETE; (line = getline(fp)) != NULL; lnum++)
++ for (lnum = 1, lc = LC_COMPLETE; (line = elv_getline(fp)) != NULL; lnum++)
+ {
+ /* is this the tag definition? */
+ if (taglnum > 0 ? taglnum == lnum : !strncmp(tagline, line, len))
+@@ -377,7 +377,7 @@
+ {
+ if (strchr(line, '(') != NULL)
+ {
+- while ((line = getline(fp)) != NULL
++ while ((line = elv_getline(fp)) != NULL
+ && *line
+ && ((*line != '#' && *line != '{')
+ || line[strlen(line) - 1] == '\\'))
+@@ -387,7 +387,7 @@
+ }
+ else if ((lc = classify(line, lc)) == LC_PARTIAL)
+ {
+- while ((line = getline(fp)) != NULL
++ while ((line = elv_getline(fp)) != NULL
+ && (lc = classify(line, lc)) == LC_PARTIAL)
+ {
+ puts(line);
diff --git a/source/a/etc/etc.SlackBuild b/source/a/etc/etc.SlackBuild
index 6c708883b..d4508f2b5 100755
--- a/source/a/etc/etc.SlackBuild
+++ b/source/a/etc/etc.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,9 +20,18 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=13.0
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=13.013
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
diff --git a/source/a/file/file.SlackBuild b/source/a/file/file.SlackBuild
index aaa0ca41f..04c47856b 100755
--- a/source/a/file/file.SlackBuild
+++ b/source/a/file/file.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005-2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,12 +20,21 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=5.03
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo file-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j7}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -35,24 +44,21 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-file
+
rm -rf $PKG
mkdir -p $TMP $PKG
-
cd $TMP
rm -rf file-$VERSION
tar xvf $CWD/file-$VERSION.tar.?z* || exit 1
cd file-$VERSION || exit 1
-
-# Make the default data directory /etc/file like it has always been:
-zcat $CWD/file.etc.file.diff.gz | patch -p1 --verbose || exit 1
-# This is needed after the patch above:
-autoreconf || exit 1
-
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -60,6 +66,11 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Make the default data directory /etc/file like it has always been:
+zcat $CWD/file.etc.file.diff.gz | patch -p1 --verbose || exit 1
+# This is needed after the patch above:
+autoreconf || exit 1
+
# Don't spew warnings about using the flat text files
zcat $CWD/file.quiet.diff.gz | patch -p1 -E --verbose || exit 1
# I don't know what this one does
@@ -82,9 +93,16 @@ CFLAGS="$SLKCFLAGS" \
--disable-static \
--build=$ARCH-slackware-linux
+# The generated $TMP/file-$VERSION/libtool is buggy. I don't know if this is supposed
+# to work, but it certainly does, so... :-)
+cat $(which libtool) > libtool
+
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
+# Seems --disable-static has been ignored lately:
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libmagic.a
+
# Is file really this much of a processing bottleneck? Doubtful.
#
# NOTE: Benchmarked flat files vs. .mgc June 2009, found no measurable
diff --git a/source/a/gawk/gawk.SlackBuild b/source/a/gawk/gawk.SlackBuild
index e65e5aaf7..157f7ce9b 100755
--- a/source/a/gawk/gawk.SlackBuild
+++ b/source/a/gawk/gawk.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,22 +20,34 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=3.1.6
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=gawk
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-gawk
-if [ "$ARCH" = "i386" ]; then
- SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
-elif [ "$ARCH" = "i486" ]; then
+if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
@@ -43,57 +55,82 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf gawk-$VERSION
-tar xjvf $CWD/gawk-$VERSION.tar.bz2
+tar xvf $CWD/gawk-$VERSION.tar.xz
cd gawk-$VERSION
chown -R root:root .
+
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--mandir=/usr/man \
--infodir=/usr/info \
- $ARCH-slackware-linux
+ --build=$ARCH-slackware-linux
-make -j3 || exit 1
+make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
)
+
( cd $PKG/usr/bin
ln -sf gawk-$VERSION gawk
ln -sf pgawk-$VERSION pgawk
)
+
mkdir -p $PKG/bin
mv $PKG/usr/bin/gawk* $PKG/bin
mv $PKG/usr/bin/awk $PKG/bin
+
( cd $PKG/usr/bin
ln -sf ../../bin/awk .
ln -sf ../../bin/gawk .
ln -sf ../../bin/gawk-$VERSION .
)
+
( cd $PKG/usr/info
rm dir
gzip -9 *
)
+
( cd $PKG/usr/man/man1
rm -f pgawk.1
gzip -9 *
ln -sf gawk.1.gz awk.1.gz
ln -sf gawk.1.gz pgawk.1.gz
)
+
mkdir -p $PKG/usr/doc/gawk-$VERSION
cp -a \
- ABOUT-NLS AUTHORS COPYING FUTURES INSTALL LIMITATIONS NEWS POSIX.STD \
- PROBLEMS README README_d \
+ ABOUT-NLS AUTHORS COPYING* FUTURES INSTALL LIMITATIONS NEWS POSIX.STD \
+ PROBLEMS README* \
$PKG/usr/doc/gawk-$VERSION
-find $PKG/usr/doc/gawk-$VERSION -type d -exec chmod 755 {} \;
-find $PKG/usr/doc/gawk-$VERSION -type f -exec chmod 644 {} \;
+
+# We don't need to run the GPL:
+chmod 644 $PKG/usr/doc/gawk-$VERSION/COPYING*
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
# Build the package:
cd $PKG
-makepkg -l y -c n $TMP/gawk-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/gawk-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/gettext/gettext-tools.SlackBuild b/source/a/gettext/gettext-tools.SlackBuild
index 945032c69..134066195 100755
--- a/source/a/gettext/gettext-tools.SlackBuild
+++ b/source/a/gettext/gettext-tools.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2008 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,8 +21,17 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
VERSION=0.17
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-4}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -40,6 +49,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
diff --git a/source/a/gettext/gettext.SlackBuild b/source/a/gettext/gettext.SlackBuild
index bdc269c50..89de611ef 100755
--- a/source/a/gettext/gettext.SlackBuild
+++ b/source/a/gettext/gettext.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,8 +21,17 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
VERSION=0.17
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -40,6 +49,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
diff --git a/source/a/gzip/gzip.SlackBuild b/source/a/gzip/gzip.SlackBuild
index c2719ebd3..d5133fd5b 100755
--- a/source/a/gzip/gzip.SlackBuild
+++ b/source/a/gzip/gzip.SlackBuild
@@ -1,5 +1,6 @@
#!/bin/sh
-# Copyright 2006-2009 Patrick J. Volkerding, Sebeka, MN, USA
+
+# Copyright 2006-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,10 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PKGNAM=gzip
-VERSION=${VERSION:-1.3.12}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-1.4}
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
@@ -36,6 +48,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
@@ -43,7 +57,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.xz || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
@@ -68,7 +82,7 @@ CFLAGS="$SLKCFLAGS" \
--build=$ARCH-slackware-linux
# Build and install:
-make -j4 || exit 1
+make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
# The ncompress package already has this:
@@ -76,8 +90,10 @@ rm -f $PKG/bin/uncompress
# Strip binaries:
( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
)
# Fix locations:
@@ -138,9 +154,17 @@ cp -a \
AUTHORS COPYING INSTALL NEWS README README-alpha THANKS TODO \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $TMP/package-${PKGNAM}
-makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.tgz
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.tgz
diff --git a/source/a/hdparm/hdparm.SlackBuild b/source/a/hdparm/hdparm.SlackBuild
index 293b1cf87..fbb2a2f71 100755
--- a/source/a/hdparm/hdparm.SlackBuild
+++ b/source/a/hdparm/hdparm.SlackBuild
@@ -20,7 +20,7 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-9.3}
+VERSION=${VERSION:-9.27}
ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j7}
diff --git a/source/a/inotify-tools/inotify-tools.SlackBuild b/source/a/inotify-tools/inotify-tools.SlackBuild
index 82e807fce..c115b4e04 100755
--- a/source/a/inotify-tools/inotify-tools.SlackBuild
+++ b/source/a/inotify-tools/inotify-tools.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PKGNAM=inotify-tools
-VERSION=${VERSION:-3.13}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
@@ -40,11 +49,14 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
@@ -95,13 +107,20 @@ fi
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-${VERSION}
cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README \
+ AUTHORS COPYING* INSTALL NEWS README* \
$PKG/usr/doc/${PKGNAM}-${VERSION}
# Get rid of html api documentation:
rm -rf $PKG/usr/doc/${PKGNAM}-${VERSION}/html
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
-#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
diff --git a/source/a/kbd/kbd.SlackBuild b/source/a/kbd/kbd.SlackBuild
index 7ac0b142f..ddcd96703 100755
--- a/source/a/kbd/kbd.SlackBuild
+++ b/source/a/kbd/kbd.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,9 +21,18 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PKGNAM=kbd
-VERSION=1.15
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+VERSION=1.15.2
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:--j4}
@@ -40,7 +49,7 @@ cd $TMP
# Extract source:
rm -rf $PKGNAM-$VERSION
-tar xvf $CWD/sources/$PKGNAM-$VERSION.tar.bz2
+tar xvf $CWD/sources/$PKGNAM-$VERSION.tar.bz2 || exit 1
cd $PKGNAM-$VERSION
# Make sure ownerships and permissions are sane:
@@ -59,12 +68,10 @@ find . -perm 555 -exec chmod 755 {} \;
# Apply patches:
# These are taken from Fedora's SRPM:
-zcat $CWD/sources/kbd-1.15-po.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/sources/kbd-1.15.2-po.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/sources/kbd-1.15-keycodes-man.patch | patch -p1 --verbose || exit 1
-zcat $CWD/sources/kbd-1.15-sparc.patch | patch -p1 --verbose || exit 1
zcat $CWD/sources/kbd-1.15-unicode_start.patch | patch -p1 --verbose || exit 1
zcat $CWD/sources/kbd-1.15-resizecon-x86_64.patch | patch -p1 --verbose || exit 1
-zcat $CWD/sources/kbd-1.15-quiet_doc.patch | patch -p1 --verbose || exit 1
# This is from Fedora's spec file:
# 7-bit maps are obsolete; so are non-euro maps
@@ -122,10 +129,18 @@ install -vpm755 $CWD/setconsolefont $PKG/usr/bin/
# Copy docs:
mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
- ChangeLog COPYING README doc/* \
+ COPYING* README* doc/* \
$PKG/usr/doc/$PKGNAM-$VERSION
rm -f $PKG/usr/doc/$PKGNAM-$VERSION/kbd.FAQ.sgml
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
# Additional keymaps:
# This is the keymap for Speakup (http://linux-speakup.org) users:
cat $CWD/sources/speakupmap.map.gz > $PKG/usr/share/kbd/keymaps/i386/qwerty/speakupmap.map.gz
@@ -136,7 +151,9 @@ tar xvf $CWD/sources/speakup-jfw.tar.gz
cat readme > $PKG/usr/share/kbd/keymaps/i386/qwerty/speakup-jfw.readme )
# Create the default run control script which will set the
-# console font to the default:
+# console font to the "default"... though this might not be
+# the same state as if setfont were not used at all.
+# For that reason, default the script to non-executable.
mkdir -pm755 $PKG/etc/rc.d
cat << EOF > $PKG/etc/rc.d/rc.font.new
#!/bin/sh
@@ -146,16 +163,38 @@ cat << EOF > $PKG/etc/rc.d/rc.font.new
#
setfont -v
EOF
-chmod 755 $PKG/etc/rc.d/rc.font.new
+chmod 644 $PKG/etc/rc.d/rc.font.new
# Create package post-install script:
mkdir -p $PKG/install
cat << EOF > $PKG/install/doinst.sh
-#if [ -r etc/rc.d/rc.font ]; then
-# rm -f etc/rc.d/rc.font.new
-#else
-# mv etc/rc.d/rc.font.new etc/rc.d/rc.font
-#fi
+
+config() {
+ NEW="\$1"
+ OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r \$OLD ]; then
+ mv \$NEW \$OLD
+ elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm \$NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+# Leave any new rc.font with the same permissions as the old one:
+# This is a kludge, but it's because there's no --reference option
+# on busybox's 'chmod':
+if [ -e etc/rc.d/rc.font ]; then
+ if [ -x etc/rc.d/rc.font ]; then
+ chmod 755 etc/rc.d/rc.font.new
+ else
+ chmod 644 etc/rc.d/rc.font.new
+ fi
+fi
+# Then config() it:
+config etc/rc.d/rc.font.new
+
EOF
# Compress man pages:
diff --git a/source/a/kbd/setconsolefont b/source/a/kbd/setconsolefont
index d4cfb875a..fe56a34f6 100644
--- a/source/a/kbd/setconsolefont
+++ b/source/a/kbd/setconsolefont
@@ -5,6 +5,8 @@
# Run 'setfont' in a chroot. This makes setfont work
# correctly in the installer.
+# 2010-04-28, add LatKaCyrHeb-14.psfu.gz <volkerdi>
+
if [ "$TMP" = "" ]; then
TMP=/var/log/setup/tmp
fi
@@ -78,6 +80,7 @@ screen font. You'll be able to try as many of these as you like." 21 65 12 \
"LatArCyrHeb-16+.psfu.gz" "" \
"LatArCyrHeb-16.psfu.gz" "" \
"LatArCyrHeb-19.psfu.gz" "" \
+"LatKaCyrHeb-14.psfu.gz" "" \
"Mik_8x16.gz" "" \
"UniCyrExt_8x16.psf.gz" "" \
"UniCyr_8x14.psf.gz" "" \
@@ -296,7 +299,8 @@ Cyr_a8x14.psfu.gz Cyr_a8x16.psfu.gz Cyr_a8x8.psfu.gz Goha-12.psfu.gz
Goha-14.psfu.gz Goha-16.psfu.gz GohaClassic-12.psfu.gz GohaClassic-14.psfu.gz
GohaClassic-16.psfu.gz Lat2-Terminus16.psfu.gz LatArCyrHeb-08.psfu.gz
LatArCyrHeb-14.psfu.gz LatArCyrHeb-16+.psfu.gz LatArCyrHeb-16.psfu.gz
-LatArCyrHeb-19.psfu.gz Mik_8x16.gz UniCyrExt_8x16.psf.gz UniCyr_8x14.psf.gz
+LatArCyrHeb-19.psfu.gz LatKaCyrHeb-14.psfu.gz
+Mik_8x16.gz UniCyrExt_8x16.psf.gz UniCyr_8x14.psf.gz
UniCyr_8x16.psf.gz UniCyr_8x8.psf.gz alt-8x14.gz alt-8x16.gz alt-8x8.gz
altc-8x16.gz aply16.psf.gz arm8.fnt.gz b.fnt.gz c.fnt.gz cp1250.psfu.gz
cp850-8x14.psfu.gz cp850-8x16.psfu.gz cp850-8x8.psfu.gz cp857.08.gz cp857.14.gz
diff --git a/source/a/kbd/sources/kbd-1.15-po.patch b/source/a/kbd/sources/kbd-1.15-po.patch
deleted file mode 100644
index 0221f60c9..000000000
--- a/source/a/kbd/sources/kbd-1.15-po.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff -up kbd-1.15/po/Makefile.in_old kbd-1.15/po/Makefile.in
---- kbd-1.15/po/Makefile.in_old 2008-10-23 21:03:59.000000000 +0200
-+++ kbd-1.15/po/Makefile.in 2008-12-09 15:35:58.000000000 +0100
-@@ -4,10 +4,10 @@ srcdir = @srcdir@
-
- prefix = @prefix@
- datarootdir = @datarootdir@
--datadir = @datadir@
--localedir = $(DESTDIR)$(datadir)/locale
--gnulocaledir = $(DESTDIR)$(datadir)/locale
--gettextsrcdir = $(DESTDIR)$(datadir)/gettext/po
-+datadir = $(DESTDIR)@datadir@
-+localedir = $(DESTDIR)@localedir@
-+gnulocaledir = $(DESTDIR)@localedir@
-+gettextsrcdir = $(datadir)/gettext/po
-
- FOREIGN = @FOREIGN@
- HAVE_XGETTEXT = @HAVE_XGETTEXT@
-@@ -36,10 +36,10 @@ INCLUDES = -I.. -I$(INTL)
- COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-
- # Enter here all .po files
--POFILES = cs.po da.po de.po el.po es.po fr.po gr.po nl.po pl.po \
-+POFILES = cs.po da.po de.po el.po es.po fr.po nl.po pl.po \
- ro.po ru.po sv.po tr.po
- # the same but with .gmo
--GMOFILES = cs.gmo da.gmo de.gmo el.gmo es.gmo fr.gmo gr.gmo nl.gmo \
-+GMOFILES = cs.gmo da.gmo de.gmo el.gmo es.gmo fr.gmo nl.gmo \
- pl.gmo ro.gmo ru.gmo sv.gmo tr.gmo
-
- CATALOGS = $(GMOFILES)
diff --git a/source/a/kbd/sources/kbd-1.15-quiet_doc.patch b/source/a/kbd/sources/kbd-1.15-quiet_doc.patch
deleted file mode 100644
index eca867b85..000000000
--- a/source/a/kbd/sources/kbd-1.15-quiet_doc.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -up kbd-1.15/man/man1/loadkeys.1.in_old kbd-1.15/man/man1/loadkeys.1.in
---- kbd-1.15/man/man1/loadkeys.1.in_old 2008-10-23 21:03:59.000000000 +0200
-+++ kbd-1.15/man/man1/loadkeys.1.in 2009-03-05 13:11:08.000000000 +0100
-@@ -19,6 +19,8 @@ loadkeys \- load keyboard translation ta
- ] [
- .I -m --mktable
- ] [
-+.I -q --quiet
-+] [
- .I -s --clearstrings
- ] [
- .I -v --verbose
-@@ -148,6 +150,10 @@ command (and does not modify the current
- .B loadkeys
- prints its version number and a short usage message to the programs
- standard error output and exits.
-+.TP
-+.B \-q \-\-quiet
-+.B loadkeys
-+suppresses all normal output.
- .SH WARNING
- Note that anyone having read access to
- .B /dev/console
-diff -up kbd-1.15/src/loadkeys.c_old kbd-1.15/src/loadkeys.c
---- kbd-1.15/src/loadkeys.c_old 2008-10-23 21:03:59.000000000 +0200
-+++ kbd-1.15/src/loadkeys.c 2009-03-05 13:09:00.000000000 +0100
-@@ -1966,6 +1966,7 @@ usage(void) {
- " -d --default load \"%s\"\n"
- " -h --help display this help text\n"
- " -m --mktable output a \"defkeymap.c\" to stdout\n"
-+" -q --quiet suppress all normal output\n"
- " -s --clearstrings clear kernel string table\n"
- " -u --unicode implicit conversion to Unicode\n"
- " -v --verbose report the changes\n"), PACKAGE_VERSION, DEFMAP);
diff --git a/source/a/kbd/sources/kbd-1.15-sparc.patch b/source/a/kbd/sources/kbd-1.15-sparc.patch
deleted file mode 100644
index a858a253a..000000000
--- a/source/a/kbd/sources/kbd-1.15-sparc.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-diff -up kbd-1.15/man/man8/kbdrate.8_old kbd-1.15/man/man8/kbdrate.8
---- kbd-1.15/man/man8/kbdrate.8_old 2008-12-10 14:20:33.000000000 +0100
-+++ kbd-1.15/man/man8/kbdrate.8 2008-12-10 14:41:10.000000000 +0100
-@@ -22,7 +22,7 @@ Using
- without any options will reset the repeat rate to 10.9 characters per second (cps)
- and the delay to 250 milliseconds (ms) for Intel- and M68K-based systems.
- These are the IBM defaults. On SPARC-based systems it will reset the repeat rate
--to 5 cps and the delay to 200 ms.
-+to 20 cps and the delay to 200 ms.
-
- .SH OPTIONS
- .TP
-@@ -69,3 +69,5 @@ When these ioctls fail an ioport interfa
- .I /etc/rc.local
- .br
- .I /dev/port
-+.br
-+.I /dev/kbd
-diff -up kbd-1.15/src/kbdrate.c_old kbd-1.15/src/kbdrate.c
---- kbd-1.15/src/kbdrate.c_old 2008-12-10 14:00:25.000000000 +0100
-+++ kbd-1.15/src/kbdrate.c 2008-12-10 14:20:11.000000000 +0100
-@@ -77,7 +77,6 @@ beats rebuilding the kernel!
-
- #ifdef __sparc__
- #include <asm/param.h>
--#include <asm/kbio.h>
- #endif
-
- #ifndef KDKBDREP
-@@ -109,11 +108,15 @@ static int valid_delays[] = { 250, 500,
-
- static int
- KDKBDREP_ioctl_ok(double rate, int delay, int silent) {
-+#if defined(KDKBDREP) && !defined(__sparc__)
- /*
- * This ioctl is defined in <linux/kd.h> but is not
- * implemented anywhere - must be in some m68k patches.
-+ * We cannot blindly try unimplemented ioctls on sparc64 -
-+ * the 32<->64bit transition layer does not like it.
- * Since 2.4.9 also on i386.
-- */
-+ */
-+
- struct my_kbd_repeat kbdrep_s;
-
- /* don't change, just test */
-@@ -177,6 +180,9 @@ KDKBDREP_ioctl_ok(double rate, int delay
- rate, kbdrep_s.delay );
-
- return 1; /* success! */
-+#else /* no KDKBDREP or __sparc__ */
-+ return 0;
-+#endif /* KDKBDREP */
- }
-
- static int
-@@ -221,7 +227,7 @@ sigalrmhandler( int sig ) {
- int
- main( int argc, char **argv ) {
- #ifdef __sparc__
-- double rate = 5.0; /* Default rate */
-+ double rate = 20.0; /* Default rate */
- int delay = 200; /* Default delay */
- #else
- double rate = 10.9; /* Default rate */
-@@ -272,7 +278,9 @@ main( int argc, char **argv ) {
-
-
- /* The ioport way */
-+ /* The ioport way - will crash on sparc */
-
-+#ifndef __sparc__
- for (i = 0; i < RATE_COUNT; i++)
- if (rate * 10 >= valid_rates[i]) {
- value &= 0x60;
-@@ -335,5 +343,7 @@ main( int argc, char **argv ) {
- valid_rates[value & 0x1f] / 10.0,
- valid_delays[ (value & 0x60) >> 5 ] );
-
-+#endif
-+
- return 0;
- }
-diff -up kbd-1.15/src/setleds.c_old kbd-1.15/src/setleds.c
---- kbd-1.15/src/setleds.c_old 2008-12-10 14:00:02.000000000 +0100
-+++ kbd-1.15/src/setleds.c 2008-12-10 14:00:16.000000000 +0100
-@@ -14,10 +14,6 @@
- #include "nls.h"
- #include "version.h"
-
--#ifdef __sparc__
--#include <asm/kbio.h>
--#endif
--
- static void
- usage(void)
- {
diff --git a/source/a/kbd/sources/kbd-1.15.2-po.patch b/source/a/kbd/sources/kbd-1.15.2-po.patch
new file mode 100644
index 000000000..a32a793f4
--- /dev/null
+++ b/source/a/kbd/sources/kbd-1.15.2-po.patch
@@ -0,0 +1,14 @@
+--- ./po/Makefile.in.in.orig 2010-04-10 16:34:12.000000000 -0500
++++ ./po/Makefile.in.in 2010-04-29 00:19:10.000000000 -0500
+@@ -22,8 +22,9 @@
+
+ prefix = @prefix@
+ exec_prefix = @exec_prefix@
+-datadir = @datadir@
+-localedir = $(datadir)/locale
++datadir = @datadir@
++localedir = @localedir@
++gnulocaledir = @localedir@
+ gettextsrcdir = $(datadir)/gettext/po
+
+ INSTALL = @INSTALL@
diff --git a/source/a/kbd/sources/kbd-1.15.2.tar.bz2.sign b/source/a/kbd/sources/kbd-1.15.2.tar.bz2.sign
new file mode 100644
index 000000000..39f3c0228
--- /dev/null
+++ b/source/a/kbd/sources/kbd-1.15.2.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBLwPHZyGugalF9Dw4RAhiyAJ9DdLbizzsoJi87OjQ8VzyNsRnr2QCeJ9zg
+MOKY0UbkCZyUALLyzxF2bKE=
+=Ou46
+-----END PGP SIGNATURE-----
diff --git a/source/a/kbd/sources/kbd-1.15.tar.bz2.sign b/source/a/kbd/sources/kbd-1.15.tar.bz2.sign
deleted file mode 100644
index 39388b383..000000000
--- a/source/a/kbd/sources/kbd-1.15.tar.bz2.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBJj684yGugalF9Dw4RAqQuAJ9fBsk3RWp6BT4UWHjceFn5YuEBygCff3dW
-qo/ACrIhyBx/eiZEpao8N4o=
-=0zxS
------END PGP SIGNATURE-----
diff --git a/source/a/less/less.SlackBuild b/source/a/less/less.SlackBuild
index 643359571..49a15eed4 100755
--- a/source/a/less/less.SlackBuild
+++ b/source/a/less/less.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,19 +21,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-less
+VERSION=${VERSION:-$(echo less-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
-VERSION=${VERSION:-418}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
-if [ "$ARCH" = "i386" ]; then
- SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
-elif [ "$ARCH" = "i486" ]; then
+if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
@@ -45,14 +48,20 @@ elif [ "$ARCH" = "arm" ]; then
elif [ "$ARCH" = "armel" ]; then
SLKCFLAGS="-O2 -march=armv4t"
LIBDIRSUFFIX=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-less
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf less-$VERSION
-tar xvf $CWD/less-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/less-$VERSION.tar.?z* || exit 1
cd less-$VERSION
zcat $CWD/less.sysconfdir.diff.gz | patch -p1 --verbose || exit 1
diff --git a/source/a/less/lesspipe.sh b/source/a/less/lesspipe.sh
index 2d660522d..7850a488f 100644
--- a/source/a/less/lesspipe.sh
+++ b/source/a/less/lesspipe.sh
@@ -45,6 +45,7 @@ lesspipe() {
*.1.gz|*.2.gz|*.3.gz|*.4.gz|*.5.gz|*.6.gz|*.7.gz|*.8.gz|*.9.gz|*.n.gz|*.man.gz) # compressed *roff src?
if gzip -dc "$1" | file - | grep roff 1> /dev/null ; then
gzip -dc "$1" | nroff -S -mandoc -
+ else gzip -dc "$1" 2>/dev/null
fi ;;
*.1.bz2|*.2.bz2|*.3.bz2|*.4.bz2|*.5.bz2|*.6.bz2|*.7.bz2|*.8.bz2|*.9.bz2|*.n.bz2|*.man.bz2) # compressed *roff src?
if bzip2 -dc "$1" | file - | grep roff 1> /dev/null ; then
diff --git a/source/a/lilo/lilo.SlackBuild b/source/a/lilo/lilo.SlackBuild
index 197f33843..e33c8778b 100755
--- a/source/a/lilo/lilo.SlackBuild
+++ b/source/a/lilo/lilo.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,8 +22,17 @@
VERSION=${VERSION:-22.8}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-14}
+BUILD=${BUILD:-15}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -38,6 +47,9 @@ tar xvf $CWD/lilo-$VERSION.src.tar.gz || exit 1
cd lilo-$VERSION
chown -R root:root .
+# This is needed for LVM+udev+devtmpfs
+zcat $CWD/lilo.use_major_minor_instead_lvm_name.diff.gz | patch -p1 --verbose || exit 1
+
make || exit 1
make install ROOT=$PKG
diff --git a/source/a/lilo/lilo.use_major_minor_instead_lvm_name.diff b/source/a/lilo/lilo.use_major_minor_instead_lvm_name.diff
new file mode 100644
index 000000000..860347ebb
--- /dev/null
+++ b/source/a/lilo/lilo.use_major_minor_instead_lvm_name.diff
@@ -0,0 +1,47 @@
+--- lilo-22.8/geometry.c 2006-12-17 01:46:17.000000000 -0200
++++ lilo-22.8-new/geometry.c 2009-12-18 02:09:54.000000000 -0200
+@@ -903,24 +903,17 @@
+ void *next = NULL;
+ char dmdev[PATH_MAX+1];
+ char buf[PATH_MAX+1];
+- char *slash;
+ int result;
+
+ dev_open(&dev, device, -1);
+ strncpy(dmdev, dev.name, PATH_MAX);
+ dmdev[PATH_MAX] = 0;
++
+ do {
+ memset(buf, 0, PATH_MAX + 1);
+ if ((result = readlink(dmdev, buf, PATH_MAX)) < 0 && errno != EINVAL)
+ die("device-mapper: readlink(\"%s\") failed with: %s",buf,
+ strerror(errno));
+- if (result >= 0) {
+- if (buf[0] != '/' && (slash = strrchr(dmdev, '/')) != NULL)
+- slash++;
+- else
+- slash = dmdev;
+- strncpy(slash, buf, PATH_MAX - (slash-dmdev));
+- }
+ if (realpath(dmdev, buf) == NULL)
+ die("device-mapper: realpath(\"%s\") failed with: %s",dmdev,
+ strerror(errno));
+@@ -930,13 +923,11 @@
+
+ if (!(dmt = dm_task_create(DM_DEVICE_TABLE)))
+ die("device-mapper: dm_task_create(DM_DEVICE_TABLE) failed");
+- slash = strrchr(dmdev, '/');
+- if (slash)
+- slash++;
+- else
+- slash = dmdev;
+- if (!dm_task_set_name(dmt, slash))
+- die("device-mapper: dm_task_set_name(\"%s\") failed",dmdev);
++ // Using device name is flawed. Better to use device major and minor
++ if (!dm_task_set_major(dmt, MAJOR(device)))
++ die("device-mapper: dm_task_set_major(DM_DEVICE_TABLE) failed");
++ if (!dm_task_set_minor(dmt, MINOR(device)))
++ die("device-mapper: dm_task_set_minor(DM_DEVICE_TABLE) failed");
+ if (!dm_task_run(dmt))
+ die("device-mapper: dm_task_run(DM_DEVICE_TABLE) failed");
+
diff --git a/source/a/lilo/slack.bmp b/source/a/lilo/slack.bmp
index 3dd5652a8..229299163 100644
--- a/source/a/lilo/slack.bmp
+++ b/source/a/lilo/slack.bmp
Binary files differ
diff --git a/source/a/logrotate/doinst.sh b/source/a/logrotate/doinst.sh
new file mode 100644
index 000000000..ea006ffac
--- /dev/null
+++ b/source/a/logrotate/doinst.sh
@@ -0,0 +1,13 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/logrotate.conf.new
+
diff --git a/source/a/logrotate/logrotate.SlackBuild b/source/a/logrotate/logrotate.SlackBuild
index 6b6284b7c..76cc34abe 100755
--- a/source/a/logrotate/logrotate.SlackBuild
+++ b/source/a/logrotate/logrotate.SlackBuild
@@ -20,25 +20,42 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-VERSION=${VERSION:-3.7.4}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-3.7.8}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-logrotate
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
rm -rf $PKG
mkdir -p $TMP $PKG
-
-# Explode the package framework:
-cd $PKG
-explodepkg $CWD/_logrotate.tar.gz
-
cd $TMP
rm -rf logrotate-$VERSION
-tar xzvf $CWD/logrotate-$VERSION.tar.gz
+tar xvf $CWD/logrotate-$VERSION.tar.?z* || exit 1
cd logrotate-$VERSION
chown -R root:root .
find . \
@@ -47,25 +64,43 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-zcat $CWD/logrotate.slackware.diff.gz | patch -p1
+# Fixup a few things:
+zcat $CWD/logrotate.slackware.diff.gz | patch -p1 || exit 1
+
make clean
-make || exit 1
+make EXTRA_CFLAGS="$SLKCFLAGS" || exit 1
strip logrotate
+
+mkdir -p $PKG/usr/sbin
cat logrotate > $PKG/usr/sbin/logrotate
+chmod 0755 $PKG/usr/sbin/logrotate
+
+mkdir -p $PKG/usr/man/man8
cat logrotate.8 | gzip -9c > $PKG/usr/man/man8/logrotate.8.gz
+
+# Create the logrotate.d directory and install the config file
+mkdir -p $PKG/etc/logrotate.d
+zcat $CWD/logrotate.conf.gz > $PKG/etc/logrotate.conf.new
+
+# Make logrotate run from cron every day
+mkdir -p $PKG/etc/cron.daily
+zcat $CWD/logrotate.cron.gz > $PKG/etc/cron.daily/logrotate
+chmod 0755 $PKG/etc/cron.daily/logrotate
+
+# Create the state directory
+mkdir -p $PKG/var/lib/logrotate
+
mkdir -p $PKG/usr/doc/logrotate-$VERSION
cp -a \
CHANGES COPYING READM* \
- $PKG/usr/doc/logrotate-$VERSION
+ $PKG/usr/doc/logrotate-$VERSION
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
-# Build the package:
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
cd $PKG
-makepkg -l y -c n $TMP/logrotate-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/logrotate-$VERSION-$ARCH-$BUILD.txz
-# Clean up the extra stuff:
-if [ "$1" = "--cleanup" ]; then
- rm -rf $TMP/logrotate-$VERSION
- rm -rf $PKG
-fi
diff --git a/source/a/logrotate/logrotate.conf b/source/a/logrotate/logrotate.conf
new file mode 100644
index 000000000..27b03e134
--- /dev/null
+++ b/source/a/logrotate/logrotate.conf
@@ -0,0 +1,50 @@
+# /etc/logrotate.conf
+#
+# logrotate is designed to ease administration of systems that generate large
+# numbers of log files. It allows automatic rotation, compression, removal, and
+# mailing of log files. Each log file may be handled daily, weekly, monthly, or
+# when it grows too large.
+#
+# logrotate is normally run daily from root's crontab.
+#
+# For more details, see "man logrotate".
+
+# rotate log files weekly:
+weekly
+
+# keep 4 weeks worth of backlogs:
+rotate 4
+
+# create new (empty) log files after rotating old ones:
+create
+
+# uncomment if you want to use the date as a suffix of the rotated file
+#dateext
+
+# uncomment this if you want your log files compressed:
+#compress
+
+# some packages install log rotation information in this directory:
+include /etc/logrotate.d
+
+# Rotate /var/log/wtmp:
+/var/log/wtmp {
+ monthly
+ create 0664 root utmp
+ minsize 1M
+ rotate 1
+}
+
+# Rotate /var/log/btmp:
+/var/log/btmp {
+ monthly
+ create 0600 root root
+ rotate 1
+}
+
+# Note that /var/log/lastlog is not rotated. This is intentional, and it should
+# not be. The lastlog file is a database, and is also a sparse file that takes
+# up much less space on the drive than it appears.
+
+# system-specific logs may be also be configured below:
+
diff --git a/source/a/logrotate/logrotate.cron b/source/a/logrotate/logrotate.cron
new file mode 100644
index 000000000..f91b3adda
--- /dev/null
+++ b/source/a/logrotate/logrotate.cron
@@ -0,0 +1,3 @@
+#!/bin/sh
+/usr/sbin/logrotate /etc/logrotate.conf
+[ $? != 0 ] && /usr/bin/logger -t logrotate "ALERT - exited abnormally."
diff --git a/source/a/logrotate/logrotate.slackware.diff b/source/a/logrotate/logrotate.slackware.diff
index 77b8aad6b..e9126cee3 100644
--- a/source/a/logrotate/logrotate.slackware.diff
+++ b/source/a/logrotate/logrotate.slackware.diff
@@ -1,44 +1,55 @@
-diff -u -r --new-file logrotate-3.7.4.orig/config.c logrotate-3.7.4/config.c
---- logrotate-3.7.4.orig/config.c 2006-07-24 07:08:04.000000000 -0500
-+++ logrotate-3.7.4/config.c 2006-09-21 01:07:50.000000000 -0500
-@@ -29,7 +29,7 @@
+diff -Nur logrotate-3.7.8.orig/Makefile logrotate-3.7.8/Makefile
+--- logrotate-3.7.8.orig/Makefile 2008-05-19 05:25:54.000000000 -0500
++++ logrotate-3.7.8/Makefile 2009-05-09 23:25:12.060201375 -0500
+@@ -1,7 +1,7 @@
+ VERSION = $(shell awk '/Version:/ { print $$2 }' logrotate.spec)
+ OS_NAME = $(shell uname -s)
+ LFS = $(shell echo `getconf LFS_CFLAGS 2>/dev/null`)
+-CFLAGS = -Wall -D_GNU_SOURCE -D$(OS_NAME) -DVERSION=\"$(VERSION)\" $(RPM_OPT_FLAGS) $(LFS)
++CFLAGS = -Wall $(EXTRA_CFLAGS) -D_GNU_SOURCE -D$(OS_NAME) -DVERSION=\"$(VERSION)\" $(RPM_OPT_FLAGS) $(LFS)
+ PROG = logrotate
+ MAN = logrotate.8
+ LOADLIBES = -lpopt
+diff -Nur logrotate-3.7.8.orig/config.c logrotate-3.7.8/config.c
+--- logrotate-3.7.8.orig/config.c 2008-06-02 05:26:14.000000000 -0500
++++ logrotate-3.7.8/config.c 2009-05-09 23:53:36.748287318 -0500
+@@ -33,8 +33,9 @@
#define isblank(c) ( (c) == ' ' || (c) == '\t' ) ? 1 : 0
#endif
-static char *defTabooExts[] = { ".rpmsave", ".rpmorig", "~", ",v",
-+static char *defTabooExts[] = { ".new", ".rpmsave", ".rpmorig", "~", ",v",
- ".rpmnew", ".swp"
+- ".rpmnew", ".swp", ".cfsaved", ".rhn-cfg-tmp-*"
++static char *defTabooExts[] = { ".new", ".orig", ".old", ".bak",
++ ".rpmsave", ".rpmorig", "~", ",v", ".rpmnew", ".swp", ".cfsaved",
++ ".rhn-cfg-tmp-*"
};
static int defTabooCount = sizeof(defTabooExts) / sizeof(char *);
-diff -u -r --new-file logrotate-3.7.4.orig/config.h logrotate-3.7.4/config.h
---- logrotate-3.7.4.orig/config.h 2005-11-12 13:07:56.000000000 -0600
-+++ logrotate-3.7.4/config.h 2006-09-21 01:08:02.000000000 -0500
-@@ -36,5 +36,5 @@
- #endif
- #ifndef STATEFILE
--#define STATEFILE "/var/lib/logrotate.status"
+diff -Nur logrotate-3.7.8.orig/config.h logrotate-3.7.8/config.h
+--- logrotate-3.7.8.orig/config.h 2005-11-12 13:07:56.000000000 -0600
++++ logrotate-3.7.8/config.h 2009-05-09 23:58:17.040241145 -0500
+@@ -13,7 +13,7 @@
+ #define DEFAULT_MAIL_COMMAND "/usr/bin/mailx"
+ #define COMPRESS_COMMAND "/usr/local/bin/gzip"
+ #define UNCOMPRESS_COMMAND "/usr/local/bin/gunzip"
+-#define STATEFILE "/var/log/logrotate.status"
+#define STATEFILE "/var/lib/logrotate/status"
#endif
-diff -u -r --new-file logrotate-3.7.4.orig/logrotate.8 logrotate-3.7.4/logrotate.8
---- logrotate-3.7.4.orig/logrotate.8 2006-05-17 09:46:51.000000000 -0500
-+++ logrotate-3.7.4/logrotate.8 2006-09-21 01:07:14.000000000 -0500
-@@ -1,4 +1,4 @@
--.TH LOGROTATE 8 "Wed Nov 5 2002" "Red Hat Linux" "System Administrator's Manual"
-+.TH LOGROTATE 8 "Wed Nov 5 2002" "Linux" "System Administrator's Manual"
- .SH NAME
- logrotate \- rotates, compresses, and mails system logs
- .SH SYNOPSIS
-@@ -410,7 +410,7 @@
+
+ /*
+diff -Nur logrotate-3.7.8.orig/logrotate.8 logrotate-3.7.8/logrotate.8
+--- logrotate-3.7.8.orig/logrotate.8 2008-12-06 08:05:40.000000000 -0600
++++ logrotate-3.7.8/logrotate.8 2009-05-09 23:56:45.137687740 -0500
+@@ -442,7 +442,7 @@
for information on the taboo extensions). If a + precedes the list of
extensions, the current taboo extension list is augmented, otherwise it
is replaced. At startup, the taboo extension list
--contains .rpmorig, .rpmsave, ,v, .swp, .rpmnew, and ~.
-+contains .new, .rpmorig, .rpmsave, ,v, .swp, .rpmnew, and ~.
+-contains .rpmorig, .rpmsave, ,v, .swp, .rpmnew, ~, .cfsaved and .rhn-cfg-tmp-*.
++contains .new, .orig, .bak, .old, .rpmorig, .rpmsave, ,v, .swp, .rpmnew, ~, .cfsaved and .rhn-cfg-tmp-*.
.TP
\fBweekly\fR
-@@ -427,7 +427,7 @@
+@@ -459,7 +459,7 @@
.SH FILES
.PD 0
.TP 27
diff --git a/source/a/logrotate/slack-desc b/source/a/logrotate/slack-desc
index 2a1c76a5d..e0fafdb5b 100644
--- a/source/a/logrotate/slack-desc
+++ b/source/a/logrotate/slack-desc
@@ -5,7 +5,7 @@
# exactly 11 lines for the formatting to be correct. It's also customary to
# leave one space after the ':'.
- |-----handy-ruler------------------------------------------------------|
+ |-----handy-ruler------------------------------------------------------|
logrotate: logrotate (system log rotation tool)
logrotate:
logrotate: The logrotate utility is designed to simplify the administration
diff --git a/source/a/lvm2/lvm2.SlackBuild b/source/a/lvm2/lvm2.SlackBuild
index f0f630d89..5199f9c7d 100755
--- a/source/a/lvm2/lvm2.SlackBuild
+++ b/source/a/lvm2/lvm2.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.02.40
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=$(echo LVM2.*.tar.?z* | cut -f 2- -d . | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-lvm2
@@ -39,13 +49,16 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $PKG
cd $TMP
rm -rf LVM2.$VERSION
-tar xvf $CWD/LVM2.$VERSION.tar.bz2
+tar xvf $CWD/LVM2.$VERSION.tar.xz
cd LVM2.$VERSION || exit 1
chown -R root:root .
@@ -55,23 +68,59 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# uid 0 = root
+# gid 6 = disk
CFLAGS="$SLKCFLAGS" \
./configure \
--disable-readline \
--enable-cmdlib \
--enable-dmeventd \
- --libdir=/lib${LIBDIRSUFFIX} \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --with-usrlibdir=/usr/lib${LIBDIRSUFFIX} \
--mandir=/usr/man \
--enable-static_link \
- --with-lvm1=internal
+ --with-lvm1=internal \
+ --enable-pkgconfig \
+ --enable-udev_sync \
+ --enable-udev_rules \
+ --with-udev-prefix="" \
+ --with-device-uid=0 \
+ --with-device-gid=6 \
+ --with-device-mode=0664 \
+ --build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
+
mv $PKG/etc/lvm/lvm.conf $PKG/etc/lvm/lvm.conf.new
+if [ -d $PKG/usr/share/man ]; then # --mandir was ignored
+ mv $PKG/usr/share/man $PKG/usr
+ rmdir $PKG/usr/share
+fi
+
+# Move the binary and shared library to /sbin and /lib{,64}:
+mkdir -p $PKG/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ for file in lib*.so.?.* ; do
+ mv $file ../../lib${LIBDIRSUFFIX}
+ ln -sf ../../lib${LIBDIRSUFFIX}/$file .
+ done
+ cp -a lib*.so.? ../../lib${LIBDIRSUFFIX}
+)
+# The Makefile is DIW.
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ find . -name "*.so" -type l | cut -b3- | while read file ; do
+ rm -f $file
+ ln -sf ${file}.?.* $file
+ done
+)
+
( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
)
mkdir -p $PKG/usr/doc/LVM2.$VERSION
@@ -99,5 +148,5 @@ zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-makepkg -l y -c n $TMP/lvm2-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/lvm2-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/mdadm/mdadm-2.6.4.tar.bz2.sign b/source/a/mdadm/mdadm-2.6.4.tar.bz2.sign
deleted file mode 100644
index 36b614805..000000000
--- a/source/a/mdadm/mdadm-2.6.4.tar.bz2.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.7 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBHGC8JyGugalF9Dw4RArGIAJ9W38h+Mb/c62Ia6kn+TiDfd8ZxJQCfXEY8
-FdGihwdJnxz8cK3+VC4rmZs=
-=+YBi
------END PGP SIGNATURE-----
diff --git a/source/a/mdadm/mdadm-2.6.9.tar.bz2.sign b/source/a/mdadm/mdadm-2.6.9.tar.bz2.sign
new file mode 100644
index 000000000..95c6050d4
--- /dev/null
+++ b/source/a/mdadm/mdadm-2.6.9.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBJtgO9yGugalF9Dw4RAjdkAJ9yrZow4cgdSuoqFbXROoDzH9EyTwCfSVY5
+Ew7L5NKxUJZbZVXseX82eT0=
+=X/Wg
+-----END PGP SIGNATURE-----
diff --git a/source/a/mdadm/mdadm.SlackBuild b/source/a/mdadm/mdadm.SlackBuild
index 45cc83b31..4e59b7030 100755
--- a/source/a/mdadm/mdadm.SlackBuild
+++ b/source/a/mdadm/mdadm.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.6.4
-ARCH=${ARCH:-x86_64}
+VERSION=2.6.9
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-mdadm
@@ -33,11 +42,11 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf mdadm-$VERSION
-tar xjvf $CWD/mdadm-$VERSION.tar.bz2
+tar xjvf $CWD/mdadm-$VERSION.tar.bz2 || exit 1
cd mdadm-$VERSION
-# Build this static... it's small enough.
-zcat $CWD/mdadm.static.small.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+# Build this static:
+zcat $CWD/mdadm.static.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
chown -R root:root .
find . \
diff --git a/source/a/mdadm/mdadm.static.diff b/source/a/mdadm/mdadm.static.diff
new file mode 100644
index 000000000..ae8a46421
--- /dev/null
+++ b/source/a/mdadm/mdadm.static.diff
@@ -0,0 +1,11 @@
+--- ./Makefile.orig 2009-03-10 01:01:17.000000000 -0500
++++ ./Makefile 2010-05-16 20:56:33.000000000 -0500
+@@ -55,7 +55,7 @@
+ CFLAGS = $(CWFLAGS) $(CXFLAGS) -DSendmail=\""$(MAILCMD)"\" $(CONFFILEFLAGS)
+
+ # If you want a static binary, you might uncomment these
+-# LDFLAGS = -static
++LDFLAGS = -static
+ # STRIP = -s
+
+ INSTALL = /usr/bin/install
diff --git a/source/a/mdadm/mdadm.static.small.diff b/source/a/mdadm/mdadm.static.small.diff
deleted file mode 100644
index 6be02fda5..000000000
--- a/source/a/mdadm/mdadm.static.small.diff
+++ /dev/null
@@ -1,20 +0,0 @@
---- ./Makefile.orig 2006-06-15 19:21:52.000000000 -0500
-+++ ./Makefile 2006-06-25 00:28:24.000000000 -0500
-@@ -39,7 +39,7 @@
-
- CC = $(CROSS_COMPILE)gcc
- CXFLAGS = -ggdb
--CWFLAGS = -Wall -Werror -Wstrict-prototypes
-+CWFLAGS = -Wall -Werror -Wstrict-prototypes -Os
-
- ifdef DEBIAN
- CPPFLAGS= -DDEBIAN
-@@ -55,7 +55,7 @@
- CFLAGS = $(CWFLAGS) $(CXFLAGS) -DSendmail=\""$(MAILCMD)"\" $(CONFFILEFLAGS)
-
- # If you want a static binary, you might uncomment these
--# LDFLAGS = -static
-+LDFLAGS = -static
- # STRIP = -s
-
- INSTALL = /usr/bin/install
diff --git a/source/a/minicom/minicom.SlackBuild b/source/a/minicom/minicom.SlackBuild
index c9249f64b..91e7baa9b 100755
--- a/source/a/minicom/minicom.SlackBuild
+++ b/source/a/minicom/minicom.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,8 +22,17 @@
VERSION=2.1
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-4}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -35,6 +44,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
@@ -43,19 +54,28 @@ mkdir -p $TMP $PKG
# minicom
cd $TMP
rm -rf minicom-$VERSION
-tar xzvf $CWD/minicom-$VERSION.tar.gz
+tar xzvf $CWD/minicom-$VERSION.tar.gz || exit 1
cd minicom-$VERSION
+
+# The following command renames the internal implementation of getline
+# to g_getline as newer versions of Glibc provide an incompatible version:
+sed -i -e "s/getline/g_&/" $(grep -lr getline *)
+
chown -R root:root .
find . -perm 777 -exec chmod 755 {} \;
find . -perm 664 -exec chmod 644 {} \;
# Fix re-declaration of BC in termcap.h
zcat $CWD/wintcap.diff.gz | patch -p1 --verbose || exit 1
+
+## Forget it... it just doesn't help.
+## Remove the autoconf program for this sorry old turd or abandon all hope.
+#touch configure
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--sysconfdir=/etc
-make -j3
-make install DESTDIR=$PKG
+make -j3 || exit 1
+make install DESTDIR=$PKG || exit 1
mkdir -p $PKG/etc
zcat $CWD/minicom.users.gz > $PKG/etc/minicom.users.new
zcat $CWD/minirc.dfl.gz > $PKG/etc/minirc.dfl.new
@@ -70,16 +90,17 @@ cp -a \
# If autoconf causes failure here (which it probably will),
# remove it temporarily and the build should work fine...
cd $TMP
-tar xzvf $CWD/lrzsz_0.12.21.orig.tar.gz
+tar xzvf $CWD/lrzsz_0.12.21.orig.tar.gz || exit 1
cd lrzsz-990823
# Make x86_64 a valid machine type (thanks to Fred Emmott)
zcat $CWD/config.sub-x86_64.diff.gz | patch -p1 --verbose || exit 1
zcat $CWD/lrzsz_0.12.21-4.diff.gz | patch -p1 --verbose || exit 1
chown -R root:root .
+#touch configure
./configure \
--prefix=/usr \
$ARCH-slackware-linux
-make -j3
+make -j3 || exit 1
cd src
cat lrz > $PKG/usr/bin/lrz
cat lsz > $PKG/usr/bin/lsz
diff --git a/source/a/mkinitrd/README.initrd b/source/a/mkinitrd/README.initrd
index f027fa276..86d77539b 100644
--- a/source/a/mkinitrd/README.initrd
+++ b/source/a/mkinitrd/README.initrd
@@ -22,7 +22,7 @@ and before the main root filesystem is mounted.
The usual reason to use an initrd is because you need to load kernel
modules before mounting the root partition. Usually these modules are
-required to support the filesystem used by the root partition (ext3,
+required to support the filesystem used by the root partition (ext3, ext4,
reiserfs, xfs), or perhaps the controller that the hard drive is attached
to (SCSI, RAID, etc). Essentially, there are so many different options
available in modern Linux kernels that it isn't practical to try to ship
@@ -52,7 +52,7 @@ Now you'll want to run "mkinitrd". I'm using reiserfs for my root
filesystem, and since it's an IDE system the reiserfs module will be
the only one I need to load:
- mkinitrd -c -k 2.6.29.5 -m reiserfs
+ mkinitrd -c -k 2.6.32.3 -m reiserfs
This should do two things. First, it will create a directory
/boot/initrd-tree containing the initrd's filesystem. Then it will
@@ -61,11 +61,10 @@ you could make some additional changes in /boot/initrd-tree/ and
then run mkinitrd again without options to rebuild the image. That's
optional, though, and only advanced users will need to think about that.
-Here's another example: Build an initrd image using Linux 2.6.29.5
-kernel modules for a system with an ext3 root partition on /dev/hdb3.
-Note that you need the mbcache, jbd, and ext3 modules to use ext3:
+Here's another example: Build an initrd image using Linux 2.6.32.3
+kernel modules for a system with an ext4 root partition on /dev/sdb3:
- mkinitrd -c -k 2.6.29.5 -m mbcache:jbd:ext3 -f ext3 -r /dev/hdb3
+ mkinitrd -c -k 2.6.32.3 -m ext4 -f ext4 -r /dev/sdb3
4. Now that I've built an initrd, how do I use it?
@@ -77,10 +76,10 @@ initrd. Here's an example section of lilo.conf showing how this is
done:
# Linux bootable partition config begins
-image = /boot/vmlinuz-generic-2.6.29.5
+image = /boot/vmlinuz-generic-2.6.32.3
initrd = /boot/initrd.gz
- root = /dev/hda6
- label = Lnx26295
+ root = /dev/sdb3
+ label = Lnx26323
read-only
# Linux bootable partition config ends
diff --git a/source/a/mkinitrd/archive/busybox-1.7.2.no-gc-sections.diff b/source/a/mkinitrd/archive/busybox-1.7.2.no-gc-sections.diff
deleted file mode 100644
index e4f64367c..000000000
--- a/source/a/mkinitrd/archive/busybox-1.7.2.no-gc-sections.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./Makefile.orig 2007-09-29 18:54:25.000000000 -0500
-+++ ./Makefile 2007-11-27 15:35:42.000000000 -0600
-@@ -570,7 +570,7 @@
- quiet_cmd_busybox__ ?= LINK $@
- cmd_busybox__ ?= $(srctree)/scripts/trylink $(CC) $(LDFLAGS) \
- -o $@ -Wl,-Map -Wl,$@.map \
-- -Wl,--warn-common -Wl,--sort-common -Wl,--gc-sections \
-+ -Wl,--warn-common -Wl,--sort-common \
- -Wl,--start-group $(busybox-all) -Wl,--end-group \
- $(LDLIBS)
-
diff --git a/source/a/mkinitrd/archive/busybox-1.7.2.remove_warning.diff b/source/a/mkinitrd/archive/busybox-1.7.2.remove_warning.diff
deleted file mode 100644
index 99257fc76..000000000
--- a/source/a/mkinitrd/archive/busybox-1.7.2.remove_warning.diff
+++ /dev/null
@@ -1,20 +0,0 @@
---- ./applets/applets.c.orig 2007-09-16 13:48:10.000000000 -0500
-+++ ./applets/applets.c 2007-10-04 22:07:47.000000000 -0500
-@@ -16,7 +16,7 @@
- #include "busybox.h"
-
- /* Apparently uclibc defines __GLIBC__ (compat trick?). Oh well. */
--#if ENABLE_STATIC && defined(__GLIBC__) && !defined(__UCLIBC__)
-+/* #if ENABLE_STATIC && defined(__GLIBC__) && !defined(__UCLIBC__)
- #warning Static linking against glibc produces buggy executables
- #warning (glibc does not cope well with ld --gc-sections).
- #warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
-@@ -24,7 +24,7 @@
- #warning If you still want to do it, remove -Wl,--gc-sections
- #warning from top-level Makefile and remove this warning.
- #error Aborting compilation.
--#endif
-+#endif */
-
-
- /* Declare <applet>_main() */
diff --git a/source/a/mkinitrd/archive/busybox-1.7.2.tar.bz2.sign b/source/a/mkinitrd/archive/busybox-1.7.2.tar.bz2.sign
deleted file mode 100644
index 19ac2fabe..000000000
--- a/source/a/mkinitrd/archive/busybox-1.7.2.tar.bz2.sign
+++ /dev/null
@@ -1,18 +0,0 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-busybox-1.7.2.tar.bz2 released Sun, 30 Sep 2007 01:02:10 +0100
-
-MD5: c91ec9756e2000073a9dd8fa9fc3f89e busybox-1.7.2.tar.bz2
-SHA1: d9c618a7b104af4e70d623b1b6f3bc454405e12b busybox-1.7.2.tar.bz2
-
-To verify this signature, you can obtain my public key
-from http://busybox.net/~vda/vda_pubkey.gpg
-
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.2.2 (GNU/Linux)
-
-iD8DBQFG/ueHR7cMVazJllsRAuBAAJ9r7SuXFQJCm/k0KZp39oDMsqBy7ACffZ9t
-r/kwDWTYEr7doIKcNINt+p0=
-=GHTs
------END PGP SIGNATURE-----
diff --git a/source/a/mkinitrd/archive/busybox-dot-config.1.11.2 b/source/a/mkinitrd/archive/busybox-dot-config.1.11.2
deleted file mode 100644
index 012350efa..000000000
--- a/source/a/mkinitrd/archive/busybox-dot-config.1.11.2
+++ /dev/null
@@ -1,855 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Busybox version: 1.11.2
-# Tue Sep 23 23:25:46 2008
-#
-CONFIG_HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-CONFIG_DESKTOP=y
-# CONFIG_FEATURE_ASSUME_UNICODE is not set
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-CONFIG_FEATURE_VERBOSE_USAGE=y
-CONFIG_FEATURE_COMPRESS_USAGE=y
-CONFIG_FEATURE_INSTALLER=y
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_PIDFILE=y
-CONFIG_FEATURE_SUID=y
-CONFIG_FEATURE_SUID_CONFIG=y
-CONFIG_FEATURE_SUID_CONFIG_QUIET=y
-# CONFIG_SELINUX is not set
-# CONFIG_FEATURE_PREFER_APPLETS is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-CONFIG_FEATURE_SYSLOG=y
-CONFIG_FEATURE_HAVE_RPC=y
-
-#
-# Build Options
-#
-CONFIG_STATIC=y
-# CONFIG_PIE is not set
-# CONFIG_NOMMU is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_INDIVIDUAL is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-CONFIG_CROSS_COMPILER_PREFIX=""
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_WERROR is not set
-CONFIG_NO_DEBUG_LIB=y
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_INCLUDE_SUSv2=y
-
-#
-# Installation Options
-#
-CONFIG_INSTALL_NO_USR=y
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
-# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
-# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
-CONFIG_PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_PASSWORD_MINLEN=6
-CONFIG_MD5_SIZE_VS_SPEED=2
-# CONFIG_FEATURE_FAST_TOP is not set
-# CONFIG_FEATURE_ETC_NETWORKS is not set
-CONFIG_FEATURE_EDITING=y
-CONFIG_FEATURE_EDITING_MAX_LEN=1024
-CONFIG_FEATURE_EDITING_VI=y
-CONFIG_FEATURE_EDITING_HISTORY=64
-# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
-CONFIG_FEATURE_TAB_COMPLETION=y
-# CONFIG_FEATURE_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
-CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
-CONFIG_FEATURE_COPYBUF_KB=4
-CONFIG_MONOTONIC_SYSCALL=y
-CONFIG_IOCTL_HEX2STR_ERROR=y
-# CONFIG_FEATURE_HWIB is not set
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-CONFIG_FEATURE_AR_LONG_FILENAMES=y
-CONFIG_BUNZIP2=y
-CONFIG_BZIP2=y
-CONFIG_CPIO=y
-CONFIG_FEATURE_CPIO_O=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
-CONFIG_GZIP=y
-CONFIG_RPM2CPIO=y
-# CONFIG_RPM is not set
-# CONFIG_FEATURE_RPM_BZ2 is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_GZIP=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_LZMA=y
-CONFIG_FEATURE_TAR_COMPRESS=y
-CONFIG_FEATURE_TAR_AUTODETECT=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
-# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-CONFIG_FEATURE_TAR_LONG_OPTIONS=y
-CONFIG_FEATURE_TAR_UNAME_GNAME=y
-CONFIG_UNCOMPRESS=y
-CONFIG_UNLZMA=y
-CONFIG_FEATURE_LZMA_FAST=y
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-CONFIG_CAL=y
-CONFIG_CAT=y
-CONFIG_CATV=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-CONFIG_CKSUM=y
-CONFIG_COMM=y
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-CONFIG_FEATURE_DD_IBS_OBS=y
-CONFIG_DF=y
-CONFIG_FEATURE_DF_INODE=y
-CONFIG_DIRNAME=y
-CONFIG_DOS2UNIX=y
-CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPAND=y
-CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
-CONFIG_EXPR=y
-CONFIG_EXPR_MATH_SUPPORT_64=y
-CONFIG_FALSE=y
-CONFIG_FOLD=y
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-CONFIG_HOSTID=y
-CONFIG_ID=y
-CONFIG_INSTALL=y
-CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
-CONFIG_LENGTH=y
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_FEATURE_MV_LONG_OPTIONS=y
-CONFIG_NICE=y
-CONFIG_NOHUP=y
-CONFIG_OD=y
-CONFIG_PRINTENV=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
-CONFIG_SEQ=y
-CONFIG_SHA1SUM=y
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-CONFIG_SPLIT=y
-CONFIG_FEATURE_SPLIT_FANCY=y
-CONFIG_STAT=y
-CONFIG_FEATURE_STAT_FORMAT=y
-CONFIG_STTY=y
-CONFIG_SUM=y
-CONFIG_SYNC=y
-CONFIG_TAC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-CONFIG_TEST=y
-CONFIG_FEATURE_TEST_64=y
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-CONFIG_FEATURE_TR_EQUIV=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNEXPAND=y
-CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-CONFIG_UUDECODE=y
-CONFIG_UUENCODE=y
-CONFIG_WC=y
-CONFIG_FEATURE_WC_LARGE=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-CONFIG_FEATURE_PRESERVE_HARDLINKS=y
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_KBD_MODE=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_RESIZE=y
-CONFIG_FEATURE_RESIZE_PRINT=y
-CONFIG_SETCONSOLE=y
-CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
-CONFIG_SETKEYCODES=y
-CONFIG_SETLOGCONS=y
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-CONFIG_PIPE_PROGRESS=y
-CONFIG_RUN_PARTS=y
-CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
-CONFIG_FEATURE_RUN_PARTS_FANCY=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-CONFIG_CMP=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-CONFIG_FEATURE_DIFF_MINIMAL=y
-CONFIG_ED=y
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_MAX_LEN=1024
-CONFIG_FEATURE_VI_8BIT=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_FEATURE_VI_READONLY=y
-CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_FEATURE_VI_SET=y
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-CONFIG_FEATURE_ALLOW_EXEC=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_MAXDEPTH=y
-CONFIG_FEATURE_FIND_NEWER=y
-CONFIG_FEATURE_FIND_INUM=y
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_FEATURE_FIND_USER=y
-CONFIG_FEATURE_FIND_GROUP=y
-CONFIG_FEATURE_FIND_NOT=y
-CONFIG_FEATURE_FIND_DEPTH=y
-CONFIG_FEATURE_FIND_PAREN=y
-CONFIG_FEATURE_FIND_SIZE=y
-CONFIG_FEATURE_FIND_PRUNE=y
-# CONFIG_FEATURE_FIND_DELETE is not set
-CONFIG_FEATURE_FIND_PATH=y
-CONFIG_FEATURE_FIND_REGEX=y
-# CONFIG_FEATURE_FIND_CONTEXT is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-CONFIG_INIT=y
-# CONFIG_DEBUG_INIT is not set
-CONFIG_FEATURE_USE_INITTAB=y
-CONFIG_FEATURE_KILL_REMOVED=y
-CONFIG_FEATURE_KILL_DELAY=10
-CONFIG_FEATURE_INIT_SCTTY=y
-CONFIG_FEATURE_INIT_SYSLOG=y
-CONFIG_FEATURE_EXTRA_QUIET=y
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-CONFIG_HALT=y
-CONFIG_MESG=y
-
-#
-# Login/Password Management Utilities
-#
-CONFIG_FEATURE_SHADOWPASSWDS=y
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_USE_BB_SHADOW is not set
-CONFIG_USE_BB_CRYPT=y
-CONFIG_ADDGROUP=y
-CONFIG_FEATURE_ADDUSER_TO_GROUP=y
-CONFIG_DELGROUP=y
-CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
-CONFIG_FEATURE_CHECK_NAMES=y
-CONFIG_ADDUSER=y
-# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
-CONFIG_DELUSER=y
-CONFIG_GETTY=y
-CONFIG_FEATURE_UTMP=y
-CONFIG_FEATURE_WTMP=y
-CONFIG_LOGIN=y
-# CONFIG_PAM is not set
-CONFIG_LOGIN_SCRIPTS=y
-CONFIG_FEATURE_NOLOGIN=y
-# CONFIG_FEATURE_SECURETTY is not set
-CONFIG_PASSWD=y
-CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
-CONFIG_CRYPTPW=y
-CONFIG_CHPASSWD=y
-CONFIG_SU=y
-CONFIG_FEATURE_SU_SYSLOG=y
-CONFIG_FEATURE_SU_CHECKS_SHELLS=y
-CONFIG_SULOGIN=y
-CONFIG_VLOCK=y
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_FSCK=y
-CONFIG_LSATTR=y
-
-#
-# Linux Module Utilities
-#
-CONFIG_DEPMOD=y
-# CONFIG_FEATURE_DEPMOD_PRUNE_FANCY is not set
-CONFIG_FEATURE_DEPMOD_ALIAS=y
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
-CONFIG_FEATURE_MODPROBE_BLACKLIST=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
-CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
-CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FEATURE_DMESG_PRETTY=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-CONFIG_FDFLUSH=y
-CONFIG_FDFORMAT=y
-CONFIG_FDISK=y
-CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-CONFIG_FEATURE_OSF_LABEL=y
-CONFIG_FEATURE_FDISK_ADVANCED=y
-# CONFIG_FINDFS is not set
-CONFIG_FREERAMDISK=y
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-CONFIG_GETOPT=y
-CONFIG_HEXDUMP=y
-CONFIG_FEATURE_HEXDUMP_REVERSE=y
-CONFIG_HD=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-CONFIG_IPCRM=y
-CONFIG_IPCS=y
-CONFIG_LOSETUP=y
-CONFIG_MDEV=y
-CONFIG_FEATURE_MDEV_CONF=y
-CONFIG_FEATURE_MDEV_RENAME=y
-CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
-CONFIG_FEATURE_MDEV_EXEC=y
-CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
-CONFIG_MKSWAP=y
-CONFIG_FEATURE_MKSWAP_V0=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_VOLUMEID=y
-CONFIG_FEATURE_VOLUMEID_EXT=y
-CONFIG_FEATURE_VOLUMEID_REISERFS=y
-CONFIG_FEATURE_VOLUMEID_FAT=y
-CONFIG_FEATURE_VOLUMEID_HFS=y
-CONFIG_FEATURE_VOLUMEID_JFS=y
-CONFIG_FEATURE_VOLUMEID_XFS=y
-CONFIG_FEATURE_VOLUMEID_NTFS=y
-CONFIG_FEATURE_VOLUMEID_ISO9660=y
-CONFIG_FEATURE_VOLUMEID_UDF=y
-CONFIG_FEATURE_VOLUMEID_LUKS=y
-CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
-CONFIG_FEATURE_VOLUMEID_CRAMFS=y
-CONFIG_FEATURE_VOLUMEID_ROMFS=y
-CONFIG_FEATURE_VOLUMEID_SYSV=y
-# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
-CONFIG_FEATURE_VOLUMEID_LINUXRAID=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_FAKE=y
-# CONFIG_FEATURE_MOUNT_VERBOSE is not set
-CONFIG_FEATURE_MOUNT_HELPERS=y
-CONFIG_FEATURE_MOUNT_LABEL=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_FEATURE_MOUNT_CIFS=y
-CONFIG_FEATURE_MOUNT_FLAGS=y
-CONFIG_FEATURE_MOUNT_FSTAB=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-CONFIG_READPROFILE=y
-CONFIG_RTCWAKE=y
-CONFIG_SCRIPT=y
-CONFIG_SETARCH=y
-CONFIG_SWAPONOFF=y
-CONFIG_FEATURE_SWAPON_PRI=y
-CONFIG_SWITCH_ROOT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_UMOUNT_ALL=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-CONFIG_FEATURE_MTAB_SUPPORT=y
-
-#
-# Miscellaneous Utilities
-#
-CONFIG_ADJTIMEX=y
-CONFIG_BBCONFIG=y
-CONFIG_CHAT=y
-CONFIG_FEATURE_CHAT_NOFAIL=y
-# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
-CONFIG_FEATURE_CHAT_IMPLICIT_CR=y
-# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
-# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
-# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
-# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
-CONFIG_CHRT=y
-CONFIG_CROND=y
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_CRONTAB=y
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-CONFIG_EJECT=y
-CONFIG_FEATURE_EJECT_SCSI=y
-CONFIG_FBSPLASH=y
-CONFIG_INOTIFYD=y
-CONFIG_LAST=y
-CONFIG_FEATURE_LAST_SMALL=y
-# CONFIG_FEATURE_LAST_FANCY is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_MAXLINES=9999999
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-CONFIG_FEATURE_LESS_FLAGCS=y
-CONFIG_FEATURE_LESS_MARKS=y
-CONFIG_FEATURE_LESS_REGEXP=y
-CONFIG_HDPARM=y
-CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
-CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
-CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
-CONFIG_MAKEDEVS=y
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-CONFIG_FEATURE_MAKEDEVS_TABLE=y
-# CONFIG_MAN is not set
-# CONFIG_MICROCOM is not set
-CONFIG_MOUNTPOINT=y
-CONFIG_MT=y
-CONFIG_RAIDAUTORUN=y
-CONFIG_READAHEAD=y
-CONFIG_RUNLEVEL=y
-CONFIG_RX=y
-CONFIG_SETSID=y
-CONFIG_STRINGS=y
-CONFIG_TASKSET=y
-CONFIG_FEATURE_TASKSET_FANCY=y
-CONFIG_TIME=y
-CONFIG_TTYSIZE=y
-CONFIG_WATCHDOG=y
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
-# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
-CONFIG_ARP=y
-CONFIG_ARPING=y
-CONFIG_BRCTL=y
-# CONFIG_FEATURE_BRCTL_FANCY is not set
-# CONFIG_FEATURE_BRCTL_SHOW is not set
-CONFIG_DNSD=y
-CONFIG_ETHER_WAKE=y
-CONFIG_FAKEIDENTD=y
-CONFIG_FTPGET=y
-CONFIG_FTPPUT=y
-CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_RANGES is not set
-# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
-# CONFIG_FEATURE_HTTPD_PROXY is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-CONFIG_FEATURE_IFCONFIG_SLIP=y
-CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-CONFIG_IFENSLAVE=y
-CONFIG_IFUPDOWN=y
-CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
-CONFIG_FEATURE_IFUPDOWN_IP=y
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-CONFIG_FEATURE_IP_RULE=y
-CONFIG_FEATURE_IP_SHORT_FORMS=y
-# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
-CONFIG_IPADDR=y
-CONFIG_IPLINK=y
-CONFIG_IPROUTE=y
-CONFIG_IPTUNNEL=y
-CONFIG_IPRULE=y
-CONFIG_IPCALC=y
-CONFIG_FEATURE_IPCALC_FANCY=y
-CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
-CONFIG_NAMEIF=y
-# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
-CONFIG_NC=y
-CONFIG_NC_SERVER=y
-CONFIG_NC_EXTRA=y
-CONFIG_NETSTAT=y
-# CONFIG_FEATURE_NETSTAT_WIDE is not set
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PSCAN=y
-CONFIG_ROUTE=y
-# CONFIG_SENDMAIL is not set
-# CONFIG_FETCHMAIL is not set
-CONFIG_SLATTACH=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-CONFIG_TELNETD=y
-CONFIG_FEATURE_TELNETD_STANDALONE=y
-CONFIG_TFTP=y
-# CONFIG_TFTPD is not set
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-CONFIG_FEATURE_TFTP_BLOCKSIZE=y
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-# CONFIG_APP_UDHCPD is not set
-# CONFIG_APP_DHCPRELAY is not set
-# CONFIG_APP_DUMPLEASES is not set
-# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
-CONFIG_DHCPD_LEASES_FILE=""
-# CONFIG_APP_UDHCPC is not set
-# CONFIG_FEATURE_UDHCPC_ARPING is not set
-# CONFIG_FEATURE_UDHCP_PORT is not set
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_FEATURE_RFC3397 is not set
-CONFIG_DHCPC_DEFAULT_SCRIPT=""
-CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=
-CONFIG_VCONFIG=y
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-CONFIG_ZCIP=y
-CONFIG_TCPSVD=y
-CONFIG_UDPSVD=y
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_KILLALL5=y
-CONFIG_NMETER=y
-CONFIG_PGREP=y
-CONFIG_PIDOF=y
-CONFIG_FEATURE_PIDOF_SINGLE=y
-CONFIG_FEATURE_PIDOF_OMIT=y
-CONFIG_PKILL=y
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_FEATURE_PS_TIME=y
-# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
-CONFIG_FEATURE_TOP_DECIMALS=y
-CONFIG_FEATURE_TOPMEM=y
-CONFIG_UPTIME=y
-CONFIG_WATCH=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_BASH_COMPAT=y
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_READ_NCHARS=y
-CONFIG_ASH_READ_TIMEOUT=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-CONFIG_ASH_MATH_SUPPORT_64=y
-CONFIG_ASH_GETOPTS=y
-CONFIG_ASH_BUILTIN_ECHO=y
-CONFIG_ASH_BUILTIN_PRINTF=y
-CONFIG_ASH_BUILTIN_TEST=y
-CONFIG_ASH_CMDCMD=y
-CONFIG_ASH_MAIL=y
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-CONFIG_ASH_RANDOM_SUPPORT=y
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_HUSH_HELP is not set
-# CONFIG_HUSH_INTERACTIVE is not set
-# CONFIG_HUSH_JOB is not set
-# CONFIG_HUSH_TICK is not set
-# CONFIG_HUSH_IF is not set
-# CONFIG_HUSH_LOOPS is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE is not set
-# CONFIG_FEATURE_SH_NOFORK is not set
-CONFIG_CTTYHACK=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-# CONFIG_FEATURE_SYSLOGD_DUP is not set
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Runit Utilities
-#
-CONFIG_RUNSV=y
-CONFIG_RUNSVDIR=y
-CONFIG_SV=y
-CONFIG_SVLOGD=y
-CONFIG_CHPST=y
-CONFIG_SETUIDGID=y
-CONFIG_ENVUIDGID=y
-CONFIG_ENVDIR=y
-CONFIG_SOFTLIMIT=y
-# CONFIG_CHCON is not set
-# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
-# CONFIG_GETENFORCE is not set
-# CONFIG_GETSEBOOL is not set
-# CONFIG_LOAD_POLICY is not set
-# CONFIG_MATCHPATHCON is not set
-# CONFIG_RESTORECON is not set
-# CONFIG_RUNCON is not set
-# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
-# CONFIG_SELINUXENABLED is not set
-# CONFIG_SETENFORCE is not set
-# CONFIG_SETFILES is not set
-# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
-# CONFIG_SETSEBOOL is not set
-# CONFIG_SESTATUS is not set
-
-#
-# Print Utilities
-#
-# CONFIG_LPD is not set
-CONFIG_LPR=y
-# CONFIG_LPQ is not set
diff --git a/source/a/mkinitrd/archive/busybox-dot-config.1.12.0 b/source/a/mkinitrd/archive/busybox-dot-config.1.12.0
deleted file mode 100644
index b462fe9a1..000000000
--- a/source/a/mkinitrd/archive/busybox-dot-config.1.12.0
+++ /dev/null
@@ -1,857 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Busybox version: 1.12.0
-# Thu Sep 25 12:38:54 2008
-#
-CONFIG_HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-CONFIG_DESKTOP=y
-# CONFIG_EXTRA_COMPAT is not set
-# CONFIG_FEATURE_ASSUME_UNICODE is not set
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-CONFIG_FEATURE_VERBOSE_USAGE=y
-CONFIG_FEATURE_COMPRESS_USAGE=y
-CONFIG_FEATURE_INSTALLER=y
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_PIDFILE=y
-CONFIG_FEATURE_SUID=y
-CONFIG_FEATURE_SUID_CONFIG=y
-CONFIG_FEATURE_SUID_CONFIG_QUIET=y
-# CONFIG_SELINUX is not set
-# CONFIG_FEATURE_PREFER_APPLETS is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-CONFIG_FEATURE_SYSLOG=y
-CONFIG_FEATURE_HAVE_RPC=y
-
-#
-# Build Options
-#
-CONFIG_STATIC=y
-# CONFIG_PIE is not set
-# CONFIG_NOMMU is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_INDIVIDUAL is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-CONFIG_CROSS_COMPILER_PREFIX=""
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_WERROR is not set
-CONFIG_NO_DEBUG_LIB=y
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_INCLUDE_SUSv2=y
-# CONFIG_PARSE is not set
-
-#
-# Installation Options
-#
-CONFIG_INSTALL_NO_USR=y
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
-# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
-# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
-CONFIG_PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_PASSWORD_MINLEN=6
-CONFIG_MD5_SIZE_VS_SPEED=2
-# CONFIG_FEATURE_FAST_TOP is not set
-# CONFIG_FEATURE_ETC_NETWORKS is not set
-CONFIG_FEATURE_EDITING=y
-CONFIG_FEATURE_EDITING_MAX_LEN=1024
-CONFIG_FEATURE_EDITING_VI=y
-CONFIG_FEATURE_EDITING_HISTORY=64
-# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
-CONFIG_FEATURE_TAB_COMPLETION=y
-# CONFIG_FEATURE_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
-CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
-CONFIG_FEATURE_COPYBUF_KB=4
-CONFIG_MONOTONIC_SYSCALL=y
-CONFIG_IOCTL_HEX2STR_ERROR=y
-# CONFIG_FEATURE_HWIB is not set
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-# CONFIG_FEATURE_SEAMLESS_LZMA is not set
-CONFIG_FEATURE_SEAMLESS_BZ2=y
-CONFIG_FEATURE_SEAMLESS_GZ=y
-CONFIG_FEATURE_SEAMLESS_Z=y
-CONFIG_AR=y
-CONFIG_FEATURE_AR_LONG_FILENAMES=y
-CONFIG_BUNZIP2=y
-CONFIG_BZIP2=y
-CONFIG_CPIO=y
-CONFIG_FEATURE_CPIO_O=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-CONFIG_GZIP=y
-CONFIG_RPM2CPIO=y
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_AUTODETECT=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
-# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-CONFIG_FEATURE_TAR_LONG_OPTIONS=y
-CONFIG_FEATURE_TAR_UNAME_GNAME=y
-CONFIG_UNCOMPRESS=y
-CONFIG_UNLZMA=y
-CONFIG_FEATURE_LZMA_FAST=y
-CONFIG_UNZIP=y
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-CONFIG_CAL=y
-CONFIG_CAT=y
-CONFIG_CATV=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-CONFIG_CKSUM=y
-CONFIG_COMM=y
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-CONFIG_FEATURE_DD_IBS_OBS=y
-CONFIG_DF=y
-CONFIG_FEATURE_DF_INODE=y
-CONFIG_DIRNAME=y
-CONFIG_DOS2UNIX=y
-CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPAND=y
-CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
-CONFIG_EXPR=y
-CONFIG_EXPR_MATH_SUPPORT_64=y
-CONFIG_FALSE=y
-CONFIG_FOLD=y
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-CONFIG_HOSTID=y
-CONFIG_ID=y
-CONFIG_INSTALL=y
-CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
-CONFIG_LENGTH=y
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_FEATURE_MV_LONG_OPTIONS=y
-CONFIG_NICE=y
-CONFIG_NOHUP=y
-CONFIG_OD=y
-CONFIG_PRINTENV=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
-CONFIG_SEQ=y
-CONFIG_SHA1SUM=y
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-# CONFIG_FEATURE_FLOAT_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-CONFIG_SPLIT=y
-CONFIG_FEATURE_SPLIT_FANCY=y
-CONFIG_STAT=y
-CONFIG_FEATURE_STAT_FORMAT=y
-CONFIG_STTY=y
-CONFIG_SUM=y
-CONFIG_SYNC=y
-CONFIG_TAC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-CONFIG_TEST=y
-CONFIG_FEATURE_TEST_64=y
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-CONFIG_FEATURE_TR_EQUIV=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNEXPAND=y
-CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-CONFIG_UUDECODE=y
-CONFIG_UUENCODE=y
-CONFIG_WC=y
-CONFIG_FEATURE_WC_LARGE=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-CONFIG_FEATURE_PRESERVE_HARDLINKS=y
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_KBD_MODE=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_RESIZE=y
-CONFIG_FEATURE_RESIZE_PRINT=y
-CONFIG_SETCONSOLE=y
-CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
-CONFIG_SETFONT=y
-CONFIG_SETKEYCODES=y
-CONFIG_SETLOGCONS=y
-CONFIG_SHOWKEY=y
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-CONFIG_PIPE_PROGRESS=y
-CONFIG_RUN_PARTS=y
-CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
-CONFIG_FEATURE_RUN_PARTS_FANCY=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-CONFIG_CMP=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-CONFIG_FEATURE_DIFF_MINIMAL=y
-CONFIG_ED=y
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_MAX_LEN=1024
-CONFIG_FEATURE_VI_8BIT=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_FEATURE_VI_READONLY=y
-CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_FEATURE_VI_SET=y
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-CONFIG_FEATURE_ALLOW_EXEC=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_MAXDEPTH=y
-CONFIG_FEATURE_FIND_NEWER=y
-CONFIG_FEATURE_FIND_INUM=y
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_FEATURE_FIND_USER=y
-CONFIG_FEATURE_FIND_GROUP=y
-CONFIG_FEATURE_FIND_NOT=y
-CONFIG_FEATURE_FIND_DEPTH=y
-CONFIG_FEATURE_FIND_PAREN=y
-CONFIG_FEATURE_FIND_SIZE=y
-CONFIG_FEATURE_FIND_PRUNE=y
-# CONFIG_FEATURE_FIND_DELETE is not set
-CONFIG_FEATURE_FIND_PATH=y
-CONFIG_FEATURE_FIND_REGEX=y
-# CONFIG_FEATURE_FIND_CONTEXT is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-CONFIG_INIT=y
-# CONFIG_DEBUG_INIT is not set
-CONFIG_FEATURE_USE_INITTAB=y
-CONFIG_FEATURE_KILL_REMOVED=y
-CONFIG_FEATURE_KILL_DELAY=10
-CONFIG_FEATURE_INIT_SCTTY=y
-CONFIG_FEATURE_INIT_SYSLOG=y
-CONFIG_FEATURE_EXTRA_QUIET=y
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-CONFIG_HALT=y
-CONFIG_MESG=y
-
-#
-# Login/Password Management Utilities
-#
-CONFIG_FEATURE_SHADOWPASSWDS=y
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_USE_BB_SHADOW is not set
-CONFIG_USE_BB_CRYPT=y
-CONFIG_ADDGROUP=y
-CONFIG_FEATURE_ADDUSER_TO_GROUP=y
-CONFIG_DELGROUP=y
-CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
-CONFIG_FEATURE_CHECK_NAMES=y
-CONFIG_ADDUSER=y
-# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
-CONFIG_DELUSER=y
-CONFIG_GETTY=y
-CONFIG_FEATURE_UTMP=y
-CONFIG_FEATURE_WTMP=y
-CONFIG_LOGIN=y
-# CONFIG_PAM is not set
-CONFIG_LOGIN_SCRIPTS=y
-CONFIG_FEATURE_NOLOGIN=y
-# CONFIG_FEATURE_SECURETTY is not set
-CONFIG_PASSWD=y
-CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
-CONFIG_CRYPTPW=y
-CONFIG_CHPASSWD=y
-CONFIG_SU=y
-CONFIG_FEATURE_SU_SYSLOG=y
-CONFIG_FEATURE_SU_CHECKS_SHELLS=y
-CONFIG_SULOGIN=y
-CONFIG_VLOCK=y
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_FSCK=y
-CONFIG_LSATTR=y
-
-#
-# Linux Module Utilities
-#
-# CONFIG_MODPROBE_SMALL is not set
-# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
-# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
-CONFIG_DEPMOD=y
-# CONFIG_FEATURE_DEPMOD_PRUNE_FANCY is not set
-CONFIG_FEATURE_DEPMOD_ALIAS=y
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
-CONFIG_FEATURE_MODPROBE_BLACKLIST=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
-CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
-CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FEATURE_DMESG_PRETTY=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-CONFIG_FDFLUSH=y
-CONFIG_FDFORMAT=y
-CONFIG_FDISK=y
-CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-CONFIG_FEATURE_OSF_LABEL=y
-CONFIG_FEATURE_FDISK_ADVANCED=y
-# CONFIG_FINDFS is not set
-CONFIG_FREERAMDISK=y
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-CONFIG_GETOPT=y
-CONFIG_HEXDUMP=y
-CONFIG_FEATURE_HEXDUMP_REVERSE=y
-CONFIG_HD=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-CONFIG_IPCRM=y
-CONFIG_IPCS=y
-CONFIG_LOSETUP=y
-CONFIG_MDEV=y
-CONFIG_FEATURE_MDEV_CONF=y
-CONFIG_FEATURE_MDEV_RENAME=y
-CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
-CONFIG_FEATURE_MDEV_EXEC=y
-CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
-CONFIG_MKSWAP=y
-CONFIG_FEATURE_MKSWAP_V0=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_VOLUMEID=y
-CONFIG_FEATURE_VOLUMEID_EXT=y
-CONFIG_FEATURE_VOLUMEID_REISERFS=y
-CONFIG_FEATURE_VOLUMEID_FAT=y
-CONFIG_FEATURE_VOLUMEID_HFS=y
-CONFIG_FEATURE_VOLUMEID_JFS=y
-CONFIG_FEATURE_VOLUMEID_XFS=y
-CONFIG_FEATURE_VOLUMEID_NTFS=y
-CONFIG_FEATURE_VOLUMEID_ISO9660=y
-CONFIG_FEATURE_VOLUMEID_UDF=y
-CONFIG_FEATURE_VOLUMEID_LUKS=y
-CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
-CONFIG_FEATURE_VOLUMEID_CRAMFS=y
-CONFIG_FEATURE_VOLUMEID_ROMFS=y
-CONFIG_FEATURE_VOLUMEID_SYSV=y
-# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
-CONFIG_FEATURE_VOLUMEID_LINUXRAID=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_FAKE=y
-# CONFIG_FEATURE_MOUNT_VERBOSE is not set
-CONFIG_FEATURE_MOUNT_HELPERS=y
-CONFIG_FEATURE_MOUNT_LABEL=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_FEATURE_MOUNT_CIFS=y
-CONFIG_FEATURE_MOUNT_FLAGS=y
-CONFIG_FEATURE_MOUNT_FSTAB=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-CONFIG_RDEV=y
-CONFIG_READPROFILE=y
-CONFIG_RTCWAKE=y
-CONFIG_SCRIPT=y
-CONFIG_SETARCH=y
-CONFIG_SWAPONOFF=y
-CONFIG_FEATURE_SWAPON_PRI=y
-CONFIG_SWITCH_ROOT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_UMOUNT_ALL=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-CONFIG_FEATURE_MTAB_SUPPORT=y
-
-#
-# Miscellaneous Utilities
-#
-CONFIG_ADJTIMEX=y
-CONFIG_BBCONFIG=y
-CONFIG_CHAT=y
-CONFIG_FEATURE_CHAT_NOFAIL=y
-# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
-CONFIG_FEATURE_CHAT_IMPLICIT_CR=y
-# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
-# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
-# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
-# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
-CONFIG_CHRT=y
-CONFIG_CROND=y
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_CRONTAB=y
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-CONFIG_EJECT=y
-CONFIG_FEATURE_EJECT_SCSI=y
-CONFIG_FBSPLASH=y
-CONFIG_INOTIFYD=y
-CONFIG_LAST=y
-CONFIG_FEATURE_LAST_SMALL=y
-# CONFIG_FEATURE_LAST_FANCY is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_MAXLINES=9999999
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-CONFIG_FEATURE_LESS_FLAGCS=y
-CONFIG_FEATURE_LESS_MARKS=y
-CONFIG_FEATURE_LESS_REGEXP=y
-CONFIG_HDPARM=y
-CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
-CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
-CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
-CONFIG_MAKEDEVS=y
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-CONFIG_FEATURE_MAKEDEVS_TABLE=y
-# CONFIG_MAN is not set
-# CONFIG_MICROCOM is not set
-CONFIG_MOUNTPOINT=y
-CONFIG_MT=y
-CONFIG_RAIDAUTORUN=y
-CONFIG_READAHEAD=y
-CONFIG_RUNLEVEL=y
-CONFIG_RX=y
-CONFIG_SETSID=y
-CONFIG_STRINGS=y
-CONFIG_TASKSET=y
-CONFIG_FEATURE_TASKSET_FANCY=y
-CONFIG_TIME=y
-CONFIG_TTYSIZE=y
-CONFIG_WATCHDOG=y
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
-# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
-CONFIG_ARP=y
-CONFIG_ARPING=y
-CONFIG_BRCTL=y
-# CONFIG_FEATURE_BRCTL_FANCY is not set
-# CONFIG_FEATURE_BRCTL_SHOW is not set
-CONFIG_DNSD=y
-CONFIG_ETHER_WAKE=y
-CONFIG_FAKEIDENTD=y
-CONFIG_FTPGET=y
-CONFIG_FTPPUT=y
-CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_RANGES is not set
-# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
-# CONFIG_FEATURE_HTTPD_PROXY is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-CONFIG_FEATURE_IFCONFIG_SLIP=y
-CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-CONFIG_IFENSLAVE=y
-CONFIG_IFUPDOWN=y
-CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
-CONFIG_FEATURE_IFUPDOWN_IP=y
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-CONFIG_FEATURE_IP_RULE=y
-CONFIG_FEATURE_IP_SHORT_FORMS=y
-# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
-CONFIG_IPADDR=y
-CONFIG_IPLINK=y
-CONFIG_IPROUTE=y
-CONFIG_IPTUNNEL=y
-CONFIG_IPRULE=y
-CONFIG_IPCALC=y
-CONFIG_FEATURE_IPCALC_FANCY=y
-CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
-CONFIG_NAMEIF=y
-# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
-CONFIG_NC=y
-CONFIG_NC_SERVER=y
-CONFIG_NC_EXTRA=y
-CONFIG_NETSTAT=y
-# CONFIG_FEATURE_NETSTAT_WIDE is not set
-CONFIG_FEATURE_NETSTAT_PRG=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PSCAN=y
-CONFIG_ROUTE=y
-# CONFIG_SENDMAIL is not set
-# CONFIG_FETCHMAIL is not set
-CONFIG_SLATTACH=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-CONFIG_TELNETD=y
-CONFIG_FEATURE_TELNETD_STANDALONE=y
-CONFIG_TFTP=y
-# CONFIG_TFTPD is not set
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-CONFIG_FEATURE_TFTP_BLOCKSIZE=y
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-# CONFIG_APP_UDHCPD is not set
-# CONFIG_APP_DHCPRELAY is not set
-# CONFIG_APP_DUMPLEASES is not set
-# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
-CONFIG_DHCPD_LEASES_FILE=""
-# CONFIG_APP_UDHCPC is not set
-# CONFIG_FEATURE_UDHCPC_ARPING is not set
-# CONFIG_FEATURE_UDHCP_PORT is not set
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_FEATURE_RFC3397 is not set
-CONFIG_DHCPC_DEFAULT_SCRIPT=""
-CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=
-CONFIG_VCONFIG=y
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-CONFIG_ZCIP=y
-CONFIG_TCPSVD=y
-CONFIG_UDPSVD=y
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_KILLALL5=y
-CONFIG_NMETER=y
-CONFIG_PGREP=y
-CONFIG_PIDOF=y
-CONFIG_FEATURE_PIDOF_SINGLE=y
-CONFIG_FEATURE_PIDOF_OMIT=y
-CONFIG_PKILL=y
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_FEATURE_PS_TIME=y
-# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
-CONFIG_FEATURE_TOP_DECIMALS=y
-CONFIG_FEATURE_TOPMEM=y
-CONFIG_UPTIME=y
-CONFIG_WATCH=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_BASH_COMPAT=y
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_READ_NCHARS=y
-CONFIG_ASH_READ_TIMEOUT=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-CONFIG_ASH_MATH_SUPPORT_64=y
-CONFIG_ASH_GETOPTS=y
-CONFIG_ASH_BUILTIN_ECHO=y
-CONFIG_ASH_BUILTIN_PRINTF=y
-CONFIG_ASH_BUILTIN_TEST=y
-CONFIG_ASH_CMDCMD=y
-CONFIG_ASH_MAIL=y
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-CONFIG_ASH_RANDOM_SUPPORT=y
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_HUSH_HELP is not set
-# CONFIG_HUSH_INTERACTIVE is not set
-# CONFIG_HUSH_JOB is not set
-# CONFIG_HUSH_TICK is not set
-# CONFIG_HUSH_IF is not set
-# CONFIG_HUSH_LOOPS is not set
-# CONFIG_HUSH_CASE is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE is not set
-# CONFIG_FEATURE_SH_NOFORK is not set
-CONFIG_CTTYHACK=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-# CONFIG_FEATURE_SYSLOGD_DUP is not set
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Runit Utilities
-#
-CONFIG_RUNSV=y
-CONFIG_RUNSVDIR=y
-CONFIG_SV=y
-CONFIG_SVLOGD=y
-CONFIG_CHPST=y
-CONFIG_SETUIDGID=y
-CONFIG_ENVUIDGID=y
-CONFIG_ENVDIR=y
-CONFIG_SOFTLIMIT=y
-# CONFIG_CHCON is not set
-# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
-# CONFIG_GETENFORCE is not set
-# CONFIG_GETSEBOOL is not set
-# CONFIG_LOAD_POLICY is not set
-# CONFIG_MATCHPATHCON is not set
-# CONFIG_RESTORECON is not set
-# CONFIG_RUNCON is not set
-# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
-# CONFIG_SELINUXENABLED is not set
-# CONFIG_SETENFORCE is not set
-# CONFIG_SETFILES is not set
-# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
-# CONFIG_SETSEBOOL is not set
-# CONFIG_SESTATUS is not set
-
-#
-# Print Utilities
-#
-# CONFIG_LPD is not set
-CONFIG_LPR=y
-# CONFIG_LPQ is not set
diff --git a/source/a/mkinitrd/archive/busybox-dot-config.1.12.1 b/source/a/mkinitrd/archive/busybox-dot-config.1.12.1
deleted file mode 100644
index 5987e0503..000000000
--- a/source/a/mkinitrd/archive/busybox-dot-config.1.12.1
+++ /dev/null
@@ -1,857 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Busybox version: 1.12.1
-# Fri Nov 7 10:20:30 2008
-#
-CONFIG_HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-CONFIG_DESKTOP=y
-# CONFIG_EXTRA_COMPAT is not set
-# CONFIG_FEATURE_ASSUME_UNICODE is not set
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-CONFIG_FEATURE_VERBOSE_USAGE=y
-CONFIG_FEATURE_COMPRESS_USAGE=y
-CONFIG_FEATURE_INSTALLER=y
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_PIDFILE=y
-CONFIG_FEATURE_SUID=y
-CONFIG_FEATURE_SUID_CONFIG=y
-CONFIG_FEATURE_SUID_CONFIG_QUIET=y
-# CONFIG_SELINUX is not set
-# CONFIG_FEATURE_PREFER_APPLETS is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-CONFIG_FEATURE_SYSLOG=y
-CONFIG_FEATURE_HAVE_RPC=y
-
-#
-# Build Options
-#
-CONFIG_STATIC=y
-# CONFIG_PIE is not set
-# CONFIG_NOMMU is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_INDIVIDUAL is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-CONFIG_CROSS_COMPILER_PREFIX=""
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_WERROR is not set
-CONFIG_NO_DEBUG_LIB=y
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_INCLUDE_SUSv2=y
-# CONFIG_PARSE is not set
-
-#
-# Installation Options
-#
-CONFIG_INSTALL_NO_USR=y
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
-# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
-# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
-CONFIG_PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_PASSWORD_MINLEN=6
-CONFIG_MD5_SIZE_VS_SPEED=2
-# CONFIG_FEATURE_FAST_TOP is not set
-# CONFIG_FEATURE_ETC_NETWORKS is not set
-CONFIG_FEATURE_EDITING=y
-CONFIG_FEATURE_EDITING_MAX_LEN=1024
-CONFIG_FEATURE_EDITING_VI=y
-CONFIG_FEATURE_EDITING_HISTORY=64
-# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
-CONFIG_FEATURE_TAB_COMPLETION=y
-# CONFIG_FEATURE_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
-CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
-CONFIG_FEATURE_COPYBUF_KB=4
-CONFIG_MONOTONIC_SYSCALL=y
-CONFIG_IOCTL_HEX2STR_ERROR=y
-# CONFIG_FEATURE_HWIB is not set
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-# CONFIG_FEATURE_SEAMLESS_LZMA is not set
-CONFIG_FEATURE_SEAMLESS_BZ2=y
-CONFIG_FEATURE_SEAMLESS_GZ=y
-CONFIG_FEATURE_SEAMLESS_Z=y
-CONFIG_AR=y
-CONFIG_FEATURE_AR_LONG_FILENAMES=y
-CONFIG_BUNZIP2=y
-CONFIG_BZIP2=y
-CONFIG_CPIO=y
-CONFIG_FEATURE_CPIO_O=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-CONFIG_GZIP=y
-CONFIG_RPM2CPIO=y
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_AUTODETECT=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
-# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-CONFIG_FEATURE_TAR_LONG_OPTIONS=y
-CONFIG_FEATURE_TAR_UNAME_GNAME=y
-CONFIG_UNCOMPRESS=y
-CONFIG_UNLZMA=y
-CONFIG_FEATURE_LZMA_FAST=y
-CONFIG_UNZIP=y
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-CONFIG_CAL=y
-CONFIG_CAT=y
-CONFIG_CATV=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-CONFIG_CKSUM=y
-CONFIG_COMM=y
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-CONFIG_FEATURE_DD_IBS_OBS=y
-CONFIG_DF=y
-CONFIG_FEATURE_DF_INODE=y
-CONFIG_DIRNAME=y
-CONFIG_DOS2UNIX=y
-CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPAND=y
-CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
-CONFIG_EXPR=y
-CONFIG_EXPR_MATH_SUPPORT_64=y
-CONFIG_FALSE=y
-CONFIG_FOLD=y
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-CONFIG_HOSTID=y
-CONFIG_ID=y
-CONFIG_INSTALL=y
-CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
-CONFIG_LENGTH=y
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_FEATURE_MV_LONG_OPTIONS=y
-CONFIG_NICE=y
-CONFIG_NOHUP=y
-CONFIG_OD=y
-CONFIG_PRINTENV=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
-CONFIG_SEQ=y
-CONFIG_SHA1SUM=y
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-# CONFIG_FEATURE_FLOAT_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-CONFIG_SPLIT=y
-CONFIG_FEATURE_SPLIT_FANCY=y
-CONFIG_STAT=y
-CONFIG_FEATURE_STAT_FORMAT=y
-CONFIG_STTY=y
-CONFIG_SUM=y
-CONFIG_SYNC=y
-CONFIG_TAC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-CONFIG_TEST=y
-CONFIG_FEATURE_TEST_64=y
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-CONFIG_FEATURE_TR_EQUIV=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNEXPAND=y
-CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-CONFIG_UUDECODE=y
-CONFIG_UUENCODE=y
-CONFIG_WC=y
-CONFIG_FEATURE_WC_LARGE=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-CONFIG_FEATURE_PRESERVE_HARDLINKS=y
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_KBD_MODE=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_RESIZE=y
-CONFIG_FEATURE_RESIZE_PRINT=y
-CONFIG_SETCONSOLE=y
-CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
-CONFIG_SETFONT=y
-CONFIG_SETKEYCODES=y
-CONFIG_SETLOGCONS=y
-CONFIG_SHOWKEY=y
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-CONFIG_PIPE_PROGRESS=y
-CONFIG_RUN_PARTS=y
-CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
-CONFIG_FEATURE_RUN_PARTS_FANCY=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-CONFIG_CMP=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-CONFIG_FEATURE_DIFF_MINIMAL=y
-CONFIG_ED=y
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_MAX_LEN=1024
-CONFIG_FEATURE_VI_8BIT=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_FEATURE_VI_READONLY=y
-CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_FEATURE_VI_SET=y
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-CONFIG_FEATURE_ALLOW_EXEC=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_MAXDEPTH=y
-CONFIG_FEATURE_FIND_NEWER=y
-CONFIG_FEATURE_FIND_INUM=y
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_FEATURE_FIND_USER=y
-CONFIG_FEATURE_FIND_GROUP=y
-CONFIG_FEATURE_FIND_NOT=y
-CONFIG_FEATURE_FIND_DEPTH=y
-CONFIG_FEATURE_FIND_PAREN=y
-CONFIG_FEATURE_FIND_SIZE=y
-CONFIG_FEATURE_FIND_PRUNE=y
-# CONFIG_FEATURE_FIND_DELETE is not set
-CONFIG_FEATURE_FIND_PATH=y
-CONFIG_FEATURE_FIND_REGEX=y
-# CONFIG_FEATURE_FIND_CONTEXT is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-CONFIG_INIT=y
-# CONFIG_DEBUG_INIT is not set
-CONFIG_FEATURE_USE_INITTAB=y
-CONFIG_FEATURE_KILL_REMOVED=y
-CONFIG_FEATURE_KILL_DELAY=10
-CONFIG_FEATURE_INIT_SCTTY=y
-CONFIG_FEATURE_INIT_SYSLOG=y
-CONFIG_FEATURE_EXTRA_QUIET=y
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-CONFIG_HALT=y
-CONFIG_MESG=y
-
-#
-# Login/Password Management Utilities
-#
-CONFIG_FEATURE_SHADOWPASSWDS=y
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_USE_BB_SHADOW is not set
-CONFIG_USE_BB_CRYPT=y
-CONFIG_ADDGROUP=y
-CONFIG_FEATURE_ADDUSER_TO_GROUP=y
-CONFIG_DELGROUP=y
-CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
-CONFIG_FEATURE_CHECK_NAMES=y
-CONFIG_ADDUSER=y
-# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
-CONFIG_DELUSER=y
-CONFIG_GETTY=y
-CONFIG_FEATURE_UTMP=y
-CONFIG_FEATURE_WTMP=y
-CONFIG_LOGIN=y
-# CONFIG_PAM is not set
-CONFIG_LOGIN_SCRIPTS=y
-CONFIG_FEATURE_NOLOGIN=y
-# CONFIG_FEATURE_SECURETTY is not set
-CONFIG_PASSWD=y
-CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
-CONFIG_CRYPTPW=y
-CONFIG_CHPASSWD=y
-CONFIG_SU=y
-CONFIG_FEATURE_SU_SYSLOG=y
-CONFIG_FEATURE_SU_CHECKS_SHELLS=y
-CONFIG_SULOGIN=y
-CONFIG_VLOCK=y
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_FSCK=y
-CONFIG_LSATTR=y
-
-#
-# Linux Module Utilities
-#
-# CONFIG_MODPROBE_SMALL is not set
-# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
-# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
-CONFIG_DEPMOD=y
-# CONFIG_FEATURE_DEPMOD_PRUNE_FANCY is not set
-CONFIG_FEATURE_DEPMOD_ALIAS=y
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
-CONFIG_FEATURE_MODPROBE_BLACKLIST=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
-CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
-CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FEATURE_DMESG_PRETTY=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-CONFIG_FDFLUSH=y
-CONFIG_FDFORMAT=y
-CONFIG_FDISK=y
-CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-CONFIG_FEATURE_OSF_LABEL=y
-CONFIG_FEATURE_FDISK_ADVANCED=y
-CONFIG_FINDFS=y
-CONFIG_FREERAMDISK=y
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-CONFIG_GETOPT=y
-CONFIG_HEXDUMP=y
-CONFIG_FEATURE_HEXDUMP_REVERSE=y
-CONFIG_HD=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-CONFIG_IPCRM=y
-CONFIG_IPCS=y
-CONFIG_LOSETUP=y
-CONFIG_MDEV=y
-CONFIG_FEATURE_MDEV_CONF=y
-CONFIG_FEATURE_MDEV_RENAME=y
-CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
-CONFIG_FEATURE_MDEV_EXEC=y
-CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
-CONFIG_MKSWAP=y
-CONFIG_FEATURE_MKSWAP_V0=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_VOLUMEID=y
-CONFIG_FEATURE_VOLUMEID_EXT=y
-CONFIG_FEATURE_VOLUMEID_REISERFS=y
-CONFIG_FEATURE_VOLUMEID_FAT=y
-CONFIG_FEATURE_VOLUMEID_HFS=y
-CONFIG_FEATURE_VOLUMEID_JFS=y
-CONFIG_FEATURE_VOLUMEID_XFS=y
-CONFIG_FEATURE_VOLUMEID_NTFS=y
-CONFIG_FEATURE_VOLUMEID_ISO9660=y
-CONFIG_FEATURE_VOLUMEID_UDF=y
-CONFIG_FEATURE_VOLUMEID_LUKS=y
-CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
-CONFIG_FEATURE_VOLUMEID_CRAMFS=y
-CONFIG_FEATURE_VOLUMEID_ROMFS=y
-CONFIG_FEATURE_VOLUMEID_SYSV=y
-# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
-CONFIG_FEATURE_VOLUMEID_LINUXRAID=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_FAKE=y
-# CONFIG_FEATURE_MOUNT_VERBOSE is not set
-CONFIG_FEATURE_MOUNT_HELPERS=y
-CONFIG_FEATURE_MOUNT_LABEL=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_FEATURE_MOUNT_CIFS=y
-CONFIG_FEATURE_MOUNT_FLAGS=y
-CONFIG_FEATURE_MOUNT_FSTAB=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-CONFIG_RDEV=y
-CONFIG_READPROFILE=y
-CONFIG_RTCWAKE=y
-CONFIG_SCRIPT=y
-CONFIG_SETARCH=y
-CONFIG_SWAPONOFF=y
-CONFIG_FEATURE_SWAPON_PRI=y
-CONFIG_SWITCH_ROOT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_UMOUNT_ALL=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-CONFIG_FEATURE_MTAB_SUPPORT=y
-
-#
-# Miscellaneous Utilities
-#
-CONFIG_ADJTIMEX=y
-CONFIG_BBCONFIG=y
-CONFIG_CHAT=y
-CONFIG_FEATURE_CHAT_NOFAIL=y
-# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
-CONFIG_FEATURE_CHAT_IMPLICIT_CR=y
-# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
-# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
-# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
-# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
-CONFIG_CHRT=y
-CONFIG_CROND=y
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_CRONTAB=y
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-CONFIG_EJECT=y
-CONFIG_FEATURE_EJECT_SCSI=y
-CONFIG_FBSPLASH=y
-CONFIG_INOTIFYD=y
-CONFIG_LAST=y
-CONFIG_FEATURE_LAST_SMALL=y
-# CONFIG_FEATURE_LAST_FANCY is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_MAXLINES=9999999
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-CONFIG_FEATURE_LESS_FLAGCS=y
-CONFIG_FEATURE_LESS_MARKS=y
-CONFIG_FEATURE_LESS_REGEXP=y
-CONFIG_HDPARM=y
-CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
-CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
-CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
-CONFIG_MAKEDEVS=y
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-CONFIG_FEATURE_MAKEDEVS_TABLE=y
-# CONFIG_MAN is not set
-# CONFIG_MICROCOM is not set
-CONFIG_MOUNTPOINT=y
-CONFIG_MT=y
-CONFIG_RAIDAUTORUN=y
-CONFIG_READAHEAD=y
-CONFIG_RUNLEVEL=y
-CONFIG_RX=y
-CONFIG_SETSID=y
-CONFIG_STRINGS=y
-CONFIG_TASKSET=y
-CONFIG_FEATURE_TASKSET_FANCY=y
-CONFIG_TIME=y
-CONFIG_TTYSIZE=y
-CONFIG_WATCHDOG=y
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
-# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
-CONFIG_ARP=y
-CONFIG_ARPING=y
-CONFIG_BRCTL=y
-# CONFIG_FEATURE_BRCTL_FANCY is not set
-# CONFIG_FEATURE_BRCTL_SHOW is not set
-CONFIG_DNSD=y
-CONFIG_ETHER_WAKE=y
-CONFIG_FAKEIDENTD=y
-CONFIG_FTPGET=y
-CONFIG_FTPPUT=y
-CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_RANGES is not set
-# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
-# CONFIG_FEATURE_HTTPD_PROXY is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-CONFIG_FEATURE_IFCONFIG_SLIP=y
-CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-CONFIG_IFENSLAVE=y
-CONFIG_IFUPDOWN=y
-CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
-CONFIG_FEATURE_IFUPDOWN_IP=y
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-CONFIG_FEATURE_IP_RULE=y
-CONFIG_FEATURE_IP_SHORT_FORMS=y
-# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
-CONFIG_IPADDR=y
-CONFIG_IPLINK=y
-CONFIG_IPROUTE=y
-CONFIG_IPTUNNEL=y
-CONFIG_IPRULE=y
-CONFIG_IPCALC=y
-CONFIG_FEATURE_IPCALC_FANCY=y
-CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
-CONFIG_NAMEIF=y
-# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
-CONFIG_NC=y
-CONFIG_NC_SERVER=y
-CONFIG_NC_EXTRA=y
-CONFIG_NETSTAT=y
-# CONFIG_FEATURE_NETSTAT_WIDE is not set
-CONFIG_FEATURE_NETSTAT_PRG=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PSCAN=y
-CONFIG_ROUTE=y
-# CONFIG_SENDMAIL is not set
-# CONFIG_FETCHMAIL is not set
-CONFIG_SLATTACH=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-CONFIG_TELNETD=y
-CONFIG_FEATURE_TELNETD_STANDALONE=y
-CONFIG_TFTP=y
-# CONFIG_TFTPD is not set
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-CONFIG_FEATURE_TFTP_BLOCKSIZE=y
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-# CONFIG_APP_UDHCPD is not set
-# CONFIG_APP_DHCPRELAY is not set
-# CONFIG_APP_DUMPLEASES is not set
-# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
-CONFIG_DHCPD_LEASES_FILE=""
-# CONFIG_APP_UDHCPC is not set
-# CONFIG_FEATURE_UDHCPC_ARPING is not set
-# CONFIG_FEATURE_UDHCP_PORT is not set
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_FEATURE_RFC3397 is not set
-CONFIG_DHCPC_DEFAULT_SCRIPT=""
-CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=
-CONFIG_VCONFIG=y
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-CONFIG_ZCIP=y
-CONFIG_TCPSVD=y
-CONFIG_UDPSVD=y
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_KILLALL5=y
-CONFIG_NMETER=y
-CONFIG_PGREP=y
-CONFIG_PIDOF=y
-CONFIG_FEATURE_PIDOF_SINGLE=y
-CONFIG_FEATURE_PIDOF_OMIT=y
-CONFIG_PKILL=y
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_FEATURE_PS_TIME=y
-# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
-CONFIG_FEATURE_TOP_DECIMALS=y
-CONFIG_FEATURE_TOPMEM=y
-CONFIG_UPTIME=y
-CONFIG_WATCH=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_BASH_COMPAT=y
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_READ_NCHARS=y
-CONFIG_ASH_READ_TIMEOUT=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-CONFIG_ASH_MATH_SUPPORT_64=y
-CONFIG_ASH_GETOPTS=y
-CONFIG_ASH_BUILTIN_ECHO=y
-CONFIG_ASH_BUILTIN_PRINTF=y
-CONFIG_ASH_BUILTIN_TEST=y
-CONFIG_ASH_CMDCMD=y
-CONFIG_ASH_MAIL=y
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-CONFIG_ASH_RANDOM_SUPPORT=y
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_HUSH_HELP is not set
-# CONFIG_HUSH_INTERACTIVE is not set
-# CONFIG_HUSH_JOB is not set
-# CONFIG_HUSH_TICK is not set
-# CONFIG_HUSH_IF is not set
-# CONFIG_HUSH_LOOPS is not set
-# CONFIG_HUSH_CASE is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE is not set
-# CONFIG_FEATURE_SH_NOFORK is not set
-CONFIG_CTTYHACK=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-# CONFIG_FEATURE_SYSLOGD_DUP is not set
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Runit Utilities
-#
-CONFIG_RUNSV=y
-CONFIG_RUNSVDIR=y
-CONFIG_SV=y
-CONFIG_SVLOGD=y
-CONFIG_CHPST=y
-CONFIG_SETUIDGID=y
-CONFIG_ENVUIDGID=y
-CONFIG_ENVDIR=y
-CONFIG_SOFTLIMIT=y
-# CONFIG_CHCON is not set
-# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
-# CONFIG_GETENFORCE is not set
-# CONFIG_GETSEBOOL is not set
-# CONFIG_LOAD_POLICY is not set
-# CONFIG_MATCHPATHCON is not set
-# CONFIG_RESTORECON is not set
-# CONFIG_RUNCON is not set
-# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
-# CONFIG_SELINUXENABLED is not set
-# CONFIG_SETENFORCE is not set
-# CONFIG_SETFILES is not set
-# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
-# CONFIG_SETSEBOOL is not set
-# CONFIG_SESTATUS is not set
-
-#
-# Print Utilities
-#
-# CONFIG_LPD is not set
-CONFIG_LPR=y
-# CONFIG_LPQ is not set
diff --git a/source/a/mkinitrd/archive/busybox-dot-config.1.7.2 b/source/a/mkinitrd/archive/busybox-dot-config.1.7.2
deleted file mode 100644
index 5b9c00b45..000000000
--- a/source/a/mkinitrd/archive/busybox-dot-config.1.7.2
+++ /dev/null
@@ -1,753 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Busybox version: 1.7.2
-# Thu Oct 4 22:03:29 2007
-#
-CONFIG_HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-CONFIG_NITPICK=y
-CONFIG_DESKTOP=y
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-CONFIG_FEATURE_VERBOSE_USAGE=y
-CONFIG_FEATURE_COMPRESS_USAGE=y
-CONFIG_FEATURE_INSTALLER=y
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_PIDFILE=y
-CONFIG_FEATURE_SUID=y
-CONFIG_FEATURE_SUID_CONFIG=y
-CONFIG_FEATURE_SUID_CONFIG_QUIET=y
-# CONFIG_SELINUX is not set
-# CONFIG_FEATURE_PREFER_APPLETS is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-CONFIG_FEATURE_SYSLOG=y
-CONFIG_FEATURE_HAVE_RPC=y
-
-#
-# Build Options
-#
-CONFIG_STATIC=y
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-CONFIG_BUILD_AT_ONCE=y
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_WERROR is not set
-CONFIG_NO_DEBUG_LIB=y
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_INCLUDE_SUSv2=y
-
-#
-# Installation Options
-#
-CONFIG_INSTALL_NO_USR=y
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-CONFIG_PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_PASSWORD_MINLEN=6
-CONFIG_MD5_SIZE_VS_SPEED=2
-# CONFIG_FEATURE_FAST_TOP is not set
-# CONFIG_FEATURE_ETC_NETWORKS is not set
-CONFIG_FEATURE_EDITING=y
-CONFIG_FEATURE_EDITING_MAX_LEN=1024
-CONFIG_FEATURE_EDITING_FANCY_KEYS=y
-CONFIG_FEATURE_EDITING_VI=y
-CONFIG_FEATURE_EDITING_HISTORY=64
-# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
-CONFIG_FEATURE_TAB_COMPLETION=y
-# CONFIG_FEATURE_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
-CONFIG_MONOTONIC_SYSCALL=y
-CONFIG_IOCTL_HEX2STR_ERROR=y
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-CONFIG_FEATURE_AR_LONG_FILENAMES=y
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
-CONFIG_GZIP=y
-CONFIG_RPM2CPIO=y
-# CONFIG_RPM is not set
-# CONFIG_FEATURE_RPM_BZ2 is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_LZMA=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-CONFIG_FEATURE_TAR_COMPRESS=y
-CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
-# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-CONFIG_FEATURE_TAR_LONG_OPTIONS=y
-CONFIG_UNCOMPRESS=y
-CONFIG_UNLZMA=y
-CONFIG_FEATURE_LZMA_FAST=y
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-CONFIG_FEATURE_UNARCHIVE_TAPE=y
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-CONFIG_CAL=y
-CONFIG_CAT=y
-CONFIG_CATV=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-CONFIG_CKSUM=y
-CONFIG_COMM=y
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-CONFIG_FEATURE_DD_IBS_OBS=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-CONFIG_DOS2UNIX=y
-CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPAND=y
-CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
-CONFIG_EXPR=y
-CONFIG_EXPR_MATH_SUPPORT_64=y
-CONFIG_FALSE=y
-CONFIG_FOLD=y
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-CONFIG_HOSTID=y
-CONFIG_ID=y
-CONFIG_INSTALL=y
-CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
-CONFIG_LENGTH=y
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_FEATURE_MV_LONG_OPTIONS=y
-CONFIG_NICE=y
-CONFIG_NOHUP=y
-CONFIG_OD=y
-CONFIG_PRINTENV=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-CONFIG_SHA1SUM=y
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-CONFIG_SPLIT=y
-CONFIG_FEATURE_SPLIT_FANCY=y
-CONFIG_STAT=y
-CONFIG_FEATURE_STAT_FORMAT=y
-CONFIG_STTY=y
-CONFIG_SUM=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-CONFIG_TEST=y
-CONFIG_FEATURE_TEST_64=y
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-CONFIG_FEATURE_TR_EQUIV=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNEXPAND=y
-CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-CONFIG_UUDECODE=y
-CONFIG_UUENCODE=y
-CONFIG_WC=y
-CONFIG_FEATURE_WC_LARGE=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-CONFIG_FEATURE_PRESERVE_HARDLINKS=y
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_RESIZE=y
-CONFIG_FEATURE_RESIZE_PRINT=y
-CONFIG_SETCONSOLE=y
-CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
-CONFIG_SETKEYCODES=y
-CONFIG_SETLOGCONS=y
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-CONFIG_PIPE_PROGRESS=y
-CONFIG_RUN_PARTS=y
-CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
-CONFIG_FEATURE_RUN_PARTS_FANCY=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-CONFIG_CMP=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-CONFIG_FEATURE_DIFF_MINIMAL=y
-CONFIG_ED=y
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_MAX_LEN=1024
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_FEATURE_VI_READONLY=y
-CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_FEATURE_VI_SET=y
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-CONFIG_FEATURE_ALLOW_EXEC=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_MAXDEPTH=y
-CONFIG_FEATURE_FIND_NEWER=y
-CONFIG_FEATURE_FIND_INUM=y
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_FEATURE_FIND_USER=y
-CONFIG_FEATURE_FIND_GROUP=y
-CONFIG_FEATURE_FIND_NOT=y
-CONFIG_FEATURE_FIND_DEPTH=y
-CONFIG_FEATURE_FIND_PAREN=y
-CONFIG_FEATURE_FIND_SIZE=y
-CONFIG_FEATURE_FIND_PRUNE=y
-# CONFIG_FEATURE_FIND_DELETE is not set
-CONFIG_FEATURE_FIND_PATH=y
-CONFIG_FEATURE_FIND_REGEX=y
-# CONFIG_FEATURE_FIND_CONTEXT is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-CONFIG_INIT=y
-# CONFIG_DEBUG_INIT is not set
-CONFIG_FEATURE_USE_INITTAB=y
-CONFIG_FEATURE_INIT_SCTTY=y
-CONFIG_FEATURE_INIT_SYSLOG=y
-CONFIG_FEATURE_EXTRA_QUIET=y
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-CONFIG_HALT=y
-CONFIG_MESG=y
-
-#
-# Login/Password Management Utilities
-#
-CONFIG_FEATURE_SHADOWPASSWDS=y
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-CONFIG_ADDGROUP=y
-CONFIG_FEATURE_ADDUSER_TO_GROUP=y
-CONFIG_DELGROUP=y
-CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
-CONFIG_ADDUSER=y
-CONFIG_DELUSER=y
-CONFIG_GETTY=y
-CONFIG_FEATURE_UTMP=y
-CONFIG_FEATURE_WTMP=y
-CONFIG_LOGIN=y
-# CONFIG_PAM is not set
-CONFIG_LOGIN_SCRIPTS=y
-CONFIG_FEATURE_NOLOGIN=y
-# CONFIG_FEATURE_SECURETTY is not set
-CONFIG_PASSWD=y
-CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
-CONFIG_CRYPTPW=y
-CONFIG_CHPASSWD=y
-CONFIG_SU=y
-CONFIG_FEATURE_SU_SYSLOG=y
-CONFIG_FEATURE_SU_CHECKS_SHELLS=y
-CONFIG_SULOGIN=y
-CONFIG_VLOCK=y
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_FSCK=y
-CONFIG_LSATTR=y
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FEATURE_DMESG_PRETTY=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-CONFIG_FDFLUSH=y
-CONFIG_FDFORMAT=y
-CONFIG_FDISK=y
-CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-CONFIG_FEATURE_OSF_LABEL=y
-CONFIG_FEATURE_FDISK_ADVANCED=y
-CONFIG_FREERAMDISK=y
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-CONFIG_GETOPT=y
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-CONFIG_IPCRM=y
-CONFIG_IPCS=y
-CONFIG_LOSETUP=y
-CONFIG_MDEV=y
-CONFIG_FEATURE_MDEV_CONF=y
-CONFIG_FEATURE_MDEV_EXEC=y
-CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
-CONFIG_MKSWAP=y
-CONFIG_FEATURE_MKSWAP_V0=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_FEATURE_MOUNT_CIFS=y
-CONFIG_FEATURE_MOUNT_FLAGS=y
-CONFIG_FEATURE_MOUNT_FSTAB=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-CONFIG_READPROFILE=y
-CONFIG_SETARCH=y
-CONFIG_SWAPONOFF=y
-CONFIG_SWITCH_ROOT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_UMOUNT_ALL=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-CONFIG_FEATURE_MTAB_SUPPORT=y
-
-#
-# Miscellaneous Utilities
-#
-CONFIG_ADJTIMEX=y
-CONFIG_BBCONFIG=y
-CONFIG_CHRT=y
-CONFIG_CROND=y
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_CRONTAB=y
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-CONFIG_EJECT=y
-CONFIG_LAST=y
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_MAXLINES=9999999
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-CONFIG_FEATURE_LESS_FLAGCS=y
-CONFIG_FEATURE_LESS_MARKS=y
-CONFIG_FEATURE_LESS_REGEXP=y
-CONFIG_HDPARM=y
-CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
-CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
-CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
-CONFIG_MAKEDEVS=y
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-CONFIG_FEATURE_MAKEDEVS_TABLE=y
-CONFIG_MOUNTPOINT=y
-CONFIG_MT=y
-CONFIG_RAIDAUTORUN=y
-CONFIG_READAHEAD=y
-CONFIG_RUNLEVEL=y
-CONFIG_RX=y
-CONFIG_STRINGS=y
-CONFIG_SETSID=y
-CONFIG_TASKSET=y
-CONFIG_FEATURE_TASKSET_FANCY=y
-CONFIG_TIME=y
-CONFIG_TTYSIZE=y
-CONFIG_WATCHDOG=y
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
-CONFIG_ARP=y
-CONFIG_ARPING=y
-CONFIG_DNSD=y
-CONFIG_ETHER_WAKE=y
-CONFIG_FAKEIDENTD=y
-CONFIG_FTPGET=y
-CONFIG_FTPPUT=y
-CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-CONFIG_FEATURE_IFCONFIG_SLIP=y
-CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-CONFIG_IFUPDOWN=y
-CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
-CONFIG_FEATURE_IFUPDOWN_IP=y
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-CONFIG_FEATURE_IP_RULE=y
-CONFIG_FEATURE_IP_SHORT_FORMS=y
-CONFIG_IPADDR=y
-CONFIG_IPLINK=y
-CONFIG_IPROUTE=y
-CONFIG_IPTUNNEL=y
-CONFIG_IPRULE=y
-CONFIG_IPCALC=y
-CONFIG_FEATURE_IPCALC_FANCY=y
-CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
-CONFIG_NAMEIF=y
-CONFIG_NC=y
-CONFIG_NC_SERVER=y
-CONFIG_NC_EXTRA=y
-CONFIG_NETSTAT=y
-# CONFIG_FEATURE_NETSTAT_WIDE is not set
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_PING6=y
-CONFIG_PSCAN=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_ROUTE=y
-CONFIG_SLATTACH=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-CONFIG_TELNETD=y
-CONFIG_FEATURE_TELNETD_STANDALONE=y
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-CONFIG_FEATURE_TFTP_BLOCKSIZE=y
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-# CONFIG_APP_UDHCPD is not set
-# CONFIG_APP_DHCPRELAY is not set
-# CONFIG_APP_DUMPLEASES is not set
-# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
-# CONFIG_APP_UDHCPC is not set
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_FEATURE_RFC3397 is not set
-CONFIG_VCONFIG=y
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-CONFIG_ZCIP=y
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_KILLALL5=y
-CONFIG_NMETER=y
-CONFIG_PIDOF=y
-CONFIG_FEATURE_PIDOF_SINGLE=y
-CONFIG_FEATURE_PIDOF_OMIT=y
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
-CONFIG_FEATURE_TOP_DECIMALS=y
-CONFIG_UPTIME=y
-CONFIG_WATCH=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_READ_NCHARS=y
-CONFIG_ASH_READ_TIMEOUT=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-CONFIG_ASH_MATH_SUPPORT_64=y
-CONFIG_ASH_GETOPTS=y
-CONFIG_ASH_BUILTIN_ECHO=y
-CONFIG_ASH_BUILTIN_TEST=y
-CONFIG_ASH_CMDCMD=y
-CONFIG_ASH_MAIL=y
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-CONFIG_ASH_RANDOM_SUPPORT=y
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_HUSH_HELP is not set
-# CONFIG_HUSH_INTERACTIVE is not set
-# CONFIG_HUSH_JOB is not set
-# CONFIG_HUSH_TICK is not set
-# CONFIG_HUSH_IF is not set
-# CONFIG_HUSH_LOOPS is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE is not set
-CONFIG_CTTYHACK=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Runit Utilities
-#
-CONFIG_RUNSV=y
-CONFIG_RUNSVDIR=y
-CONFIG_SV=y
-CONFIG_SVLOGD=y
-CONFIG_CHPST=y
-CONFIG_SETUIDGID=y
-CONFIG_ENVUIDGID=y
-CONFIG_ENVDIR=y
-CONFIG_SOFTLIMIT=y
-# CONFIG_CHCON is not set
-# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
-# CONFIG_GETENFORCE is not set
-# CONFIG_GETSEBOOL is not set
-# CONFIG_LOAD_POLICY is not set
-# CONFIG_MATCHPATHCON is not set
-# CONFIG_RESTORECON is not set
-# CONFIG_RUNCON is not set
-# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
-# CONFIG_SELINUXENABLED is not set
-# CONFIG_SETENFORCE is not set
-# CONFIG_SETFILES is not set
-# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
-
-#
-# ipsvd utilities
-#
-CONFIG_TCPSVD=y
-CONFIG_UDPSVD=y
diff --git a/source/a/mkinitrd/busybox-1.12.1_inotify.diff b/source/a/mkinitrd/busybox-1.12.1_inotify.diff
deleted file mode 100644
index 151d16ce9..000000000
--- a/source/a/mkinitrd/busybox-1.12.1_inotify.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- busybox-1.12.1.orig/miscutils/inotifyd.c 2008-11-07 01:39:21.000000000 +0000
-+++ busybox-1.12.1/miscutils/inotifyd.c 2008-11-07 01:37:05.000000000 +0000
-@@ -28,7 +28,7 @@
- */
-
- #include "libbb.h"
--#include <linux/inotify.h>
-+#include <sys/inotify.h>
-
- static volatile smallint signalled;
-
diff --git a/source/a/mkinitrd/busybox-dot-config b/source/a/mkinitrd/busybox-dot-config
index 5987e0503..65e298b5f 100644
--- a/source/a/mkinitrd/busybox-dot-config
+++ b/source/a/mkinitrd/busybox-dot-config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Busybox version: 1.12.1
-# Fri Nov 7 10:20:30 2008
+# Busybox version: 1.15.3
+# Thu Dec 17 17:50:16 2009
#
CONFIG_HAVE_DOT_CONFIG=y
@@ -14,7 +14,6 @@ CONFIG_HAVE_DOT_CONFIG=y
#
CONFIG_DESKTOP=y
# CONFIG_EXTRA_COMPAT is not set
-# CONFIG_FEATURE_ASSUME_UNICODE is not set
CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
@@ -23,7 +22,9 @@ CONFIG_FEATURE_VERBOSE_USAGE=y
CONFIG_FEATURE_COMPRESS_USAGE=y
CONFIG_FEATURE_INSTALLER=y
CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
+# CONFIG_FEATURE_ASSUME_UNICODE is not set
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_LONG_OPTS=y
CONFIG_FEATURE_DEVPTS=y
# CONFIG_FEATURE_CLEAN_UP is not set
CONFIG_FEATURE_PIDFILE=y
@@ -39,7 +40,7 @@ CONFIG_FEATURE_HAVE_RPC=y
#
# Build Options
#
-CONFIG_STATIC=y
+# CONFIG_STATIC is not set
# CONFIG_PIE is not set
# CONFIG_NOMMU is not set
# CONFIG_BUILD_LIBBUSYBOX is not set
@@ -47,6 +48,7 @@ CONFIG_STATIC=y
# CONFIG_FEATURE_SHARED_BUSYBOX is not set
CONFIG_LFS=y
CONFIG_CROSS_COMPILER_PREFIX=""
+CONFIG_EXTRA_CFLAGS=""
#
# Debugging Options
@@ -58,7 +60,6 @@ CONFIG_NO_DEBUG_LIB=y
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set
CONFIG_INCLUDE_SUSv2=y
-# CONFIG_PARSE is not set
#
# Installation Options
@@ -71,7 +72,7 @@ CONFIG_INSTALL_APPLET_SYMLINKS=y
# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
-CONFIG_PREFIX="./_install"
+CONFIG_PREFIX="/tmp/package-mkinitrd/usr/share/mkinitrd/initrd-tree"
#
# Busybox Library Tuning
@@ -88,6 +89,8 @@ CONFIG_FEATURE_EDITING_HISTORY=64
CONFIG_FEATURE_TAB_COMPLETION=y
# CONFIG_FEATURE_USERNAME_COMPLETION is not set
CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_FEATURE_EDITING_ASK_TERMINAL=y
+# CONFIG_FEATURE_NON_POSIX_CP is not set
CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
CONFIG_FEATURE_COPYBUF_KB=4
CONFIG_MONOTONIC_SYSCALL=y
@@ -111,11 +114,14 @@ CONFIG_BUNZIP2=y
CONFIG_BZIP2=y
CONFIG_CPIO=y
CONFIG_FEATURE_CPIO_O=y
+CONFIG_FEATURE_CPIO_P=y
# CONFIG_DPKG is not set
# CONFIG_DPKG_DEB is not set
# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
CONFIG_GUNZIP=y
CONFIG_GZIP=y
+CONFIG_LZOP=y
+CONFIG_LZOP_COMPR_HIGH=y
CONFIG_RPM2CPIO=y
# CONFIG_RPM is not set
CONFIG_TAR=y
@@ -153,7 +159,7 @@ CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
CONFIG_FEATURE_DD_IBS_OBS=y
CONFIG_DF=y
-CONFIG_FEATURE_DF_INODE=y
+CONFIG_FEATURE_DF_FANCY=y
CONFIG_DIRNAME=y
CONFIG_DOS2UNIX=y
CONFIG_UNIX2DOS=y
@@ -169,6 +175,7 @@ CONFIG_EXPR=y
CONFIG_EXPR_MATH_SUPPORT_64=y
CONFIG_FALSE=y
CONFIG_FOLD=y
+CONFIG_FSYNC=y
CONFIG_HEAD=y
CONFIG_FEATURE_FANCY_HEAD=y
CONFIG_HOSTID=y
@@ -208,6 +215,8 @@ CONFIG_RMDIR=y
# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
CONFIG_SEQ=y
CONFIG_SHA1SUM=y
+CONFIG_SHA256SUM=y
+CONFIG_SHA512SUM=y
CONFIG_SLEEP=y
CONFIG_FEATURE_FANCY_SLEEP=y
# CONFIG_FEATURE_FLOAT_SLEEP is not set
@@ -283,6 +292,8 @@ CONFIG_FEATURE_RESIZE_PRINT=y
CONFIG_SETCONSOLE=y
CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
CONFIG_SETFONT=y
+CONFIG_FEATURE_SETFONT_TEXTUAL_MAP=y
+CONFIG_DEFAULT_SETFONT_DIR="/usr/share/kbd/consolefonts"
CONFIG_SETKEYCODES=y
CONFIG_SETLOGCONS=y
CONFIG_SHOWKEY=y
@@ -304,7 +315,7 @@ CONFIG_WHICH=y
# Editors
#
CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
+CONFIG_FEATURE_AWK_LIBM=y
CONFIG_CMP=y
CONFIG_DIFF=y
CONFIG_FEATURE_DIFF_BINARY=y
@@ -367,7 +378,6 @@ CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
# Init Utilities
#
CONFIG_INIT=y
-# CONFIG_DEBUG_INIT is not set
CONFIG_FEATURE_USE_INITTAB=y
CONFIG_FEATURE_KILL_REMOVED=y
CONFIG_FEATURE_KILL_DELAY=10
@@ -377,6 +387,8 @@ CONFIG_FEATURE_EXTRA_QUIET=y
# CONFIG_FEATURE_INIT_COREDUMPS is not set
# CONFIG_FEATURE_INITRD is not set
CONFIG_HALT=y
+# CONFIG_FEATURE_CALL_TELINIT is not set
+CONFIG_TELINIT_PATH=""
CONFIG_MESG=y
#
@@ -386,13 +398,17 @@ CONFIG_FEATURE_SHADOWPASSWDS=y
# CONFIG_USE_BB_PWD_GRP is not set
# CONFIG_USE_BB_SHADOW is not set
CONFIG_USE_BB_CRYPT=y
+CONFIG_USE_BB_CRYPT_SHA=y
CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS=y
CONFIG_FEATURE_ADDUSER_TO_GROUP=y
CONFIG_DELGROUP=y
CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
CONFIG_FEATURE_CHECK_NAMES=y
CONFIG_ADDUSER=y
# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
+CONFIG_FIRST_SYSTEM_ID=1000
+CONFIG_LAST_SYSTEM_ID=12000
CONFIG_DELUSER=y
CONFIG_GETTY=y
CONFIG_FEATURE_UTMP=y
@@ -425,36 +441,35 @@ CONFIG_LSATTR=y
# CONFIG_MODPROBE_SMALL is not set
# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
-CONFIG_DEPMOD=y
-# CONFIG_FEATURE_DEPMOD_PRUNE_FANCY is not set
-CONFIG_FEATURE_DEPMOD_ALIAS=y
CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
CONFIG_RMMOD=y
CONFIG_LSMOD=y
CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
CONFIG_FEATURE_MODPROBE_BLACKLIST=y
+CONFIG_DEPMOD=y
#
# Options common to multiple modutils
#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_MODUTILS_ALIAS=y
+CONFIG_FEATURE_MODUTILS_SYMBOLS=y
CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
#
# Linux System Utilities
#
+CONFIG_ACPID=y
+CONFIG_FEATURE_ACPID_COMPAT=y
+CONFIG_BLKID=y
CONFIG_DMESG=y
CONFIG_FEATURE_DMESG_PRETTY=y
CONFIG_FBSET=y
@@ -479,7 +494,9 @@ CONFIG_MKFS_MINIX=y
# Minix filesystem support
#
CONFIG_FEATURE_MINIX2=y
+CONFIG_MKFS_VFAT=y
CONFIG_GETOPT=y
+CONFIG_FEATURE_GETOPT_LONG=y
CONFIG_HEXDUMP=y
CONFIG_FEATURE_HEXDUMP_REVERSE=y
CONFIG_HD=y
@@ -496,7 +513,7 @@ CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
CONFIG_FEATURE_MDEV_EXEC=y
CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
CONFIG_MKSWAP=y
-CONFIG_FEATURE_MKSWAP_V0=y
+CONFIG_FEATURE_MKSWAP_UUID=y
CONFIG_MORE=y
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_VOLUMEID=y
@@ -531,6 +548,7 @@ CONFIG_RDEV=y
CONFIG_READPROFILE=y
CONFIG_RTCWAKE=y
CONFIG_SCRIPT=y
+CONFIG_SCRIPTREPLAY=y
CONFIG_SETARCH=y
CONFIG_SWAPONOFF=y
CONFIG_FEATURE_SWAPON_PRI=y
@@ -549,6 +567,9 @@ CONFIG_FEATURE_MTAB_SUPPORT=y
#
CONFIG_ADJTIMEX=y
CONFIG_BBCONFIG=y
+CONFIG_BEEP=y
+CONFIG_FEATURE_BEEP_FREQ=4000
+CONFIG_FEATURE_BEEP_LENGTH_MS=30
CONFIG_CHAT=y
CONFIG_FEATURE_CHAT_NOFAIL=y
# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
@@ -559,18 +580,25 @@ CONFIG_FEATURE_CHAT_IMPLICIT_CR=y
# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
CONFIG_CHRT=y
CONFIG_CROND=y
-# CONFIG_DEBUG_CROND_OPTION is not set
+CONFIG_FEATURE_CROND_D=y
# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_FEATURE_CROND_DIR="/var/spool/cron"
CONFIG_CRONTAB=y
CONFIG_DC=y
+CONFIG_FEATURE_DC_LIBM=y
# CONFIG_DEVFSD is not set
# CONFIG_DEVFSD_MODLOAD is not set
# CONFIG_DEVFSD_FG_NP is not set
# CONFIG_DEVFSD_VERBOSE is not set
# CONFIG_FEATURE_DEVFS is not set
+CONFIG_DEVMEM=y
CONFIG_EJECT=y
CONFIG_FEATURE_EJECT_SCSI=y
CONFIG_FBSPLASH=y
+CONFIG_FLASH_LOCK=y
+CONFIG_FLASH_UNLOCK=y
+CONFIG_FLASH_ERASEALL=y
+CONFIG_IONICE=y
CONFIG_INOTIFYD=y
CONFIG_LAST=y
CONFIG_FEATURE_LAST_SMALL=y
@@ -579,9 +607,11 @@ CONFIG_LESS=y
CONFIG_FEATURE_LESS_MAXLINES=9999999
CONFIG_FEATURE_LESS_BRACKETS=y
CONFIG_FEATURE_LESS_FLAGS=y
-CONFIG_FEATURE_LESS_FLAGCS=y
CONFIG_FEATURE_LESS_MARKS=y
CONFIG_FEATURE_LESS_REGEXP=y
+CONFIG_FEATURE_LESS_WINCH=y
+CONFIG_FEATURE_LESS_DASHCMD=y
+CONFIG_FEATURE_LESS_LINENUMS=y
CONFIG_HDPARM=y
CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
@@ -605,13 +635,16 @@ CONFIG_STRINGS=y
CONFIG_TASKSET=y
CONFIG_FEATURE_TASKSET_FANCY=y
CONFIG_TIME=y
+CONFIG_TIMEOUT=y
CONFIG_TTYSIZE=y
+CONFIG_VOLNAME=y
CONFIG_WATCHDOG=y
#
# Networking Utilities
#
CONFIG_FEATURE_IPV6=y
+CONFIG_FEATURE_UNIX_LOCAL=y
CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
CONFIG_ARP=y
@@ -622,6 +655,8 @@ CONFIG_BRCTL=y
CONFIG_DNSD=y
CONFIG_ETHER_WAKE=y
CONFIG_FAKEIDENTD=y
+CONFIG_FTPD=y
+CONFIG_FEATURE_FTP_WRITE=y
CONFIG_FTPGET=y
CONFIG_FTPPUT=y
CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
@@ -629,11 +664,9 @@ CONFIG_HOSTNAME=y
# CONFIG_HTTPD is not set
# CONFIG_FEATURE_HTTPD_RANGES is not set
# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
# CONFIG_FEATURE_HTTPD_SETUID is not set
# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
# CONFIG_FEATURE_HTTPD_CGI is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
@@ -647,6 +680,7 @@ CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
CONFIG_FEATURE_IFCONFIG_HW=y
CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
CONFIG_IFENSLAVE=y
+CONFIG_IFPLUGD=y
CONFIG_IFUPDOWN=y
CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
CONFIG_FEATURE_IFUPDOWN_IP=y
@@ -693,8 +727,6 @@ CONFIG_PING6=y
CONFIG_FEATURE_FANCY_PING=y
CONFIG_PSCAN=y
CONFIG_ROUTE=y
-# CONFIG_SENDMAIL is not set
-# CONFIG_FETCHMAIL is not set
CONFIG_SLATTACH=y
CONFIG_TELNET=y
CONFIG_FEATURE_TELNET_TTYPE=y
@@ -706,7 +738,7 @@ CONFIG_TFTP=y
CONFIG_FEATURE_TFTP_GET=y
CONFIG_FEATURE_TFTP_PUT=y
CONFIG_FEATURE_TFTP_BLOCKSIZE=y
-# CONFIG_DEBUG_TFTP is not set
+CONFIG_TFTP_DEBUG=y
CONFIG_TRACEROUTE=y
# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
@@ -719,10 +751,11 @@ CONFIG_DHCPD_LEASES_FILE=""
# CONFIG_APP_UDHCPC is not set
# CONFIG_FEATURE_UDHCPC_ARPING is not set
# CONFIG_FEATURE_UDHCP_PORT is not set
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_FEATURE_RFC3397 is not set
-CONFIG_DHCPC_DEFAULT_SCRIPT=""
-CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=
+CONFIG_UDHCP_DEBUG=0
+# CONFIG_FEATURE_UDHCP_RFC3397 is not set
+CONFIG_UDHCPC_DEFAULT_SCRIPT=""
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
CONFIG_VCONFIG=y
CONFIG_WGET=y
CONFIG_FEATURE_WGET_STATUSBAR=y
@@ -730,9 +763,29 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
CONFIG_ZCIP=y
CONFIG_TCPSVD=y
+CONFIG_TUNCTL=y
+CONFIG_FEATURE_TUNCTL_UG=y
CONFIG_UDPSVD=y
#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+CONFIG_LPR=y
+# CONFIG_LPQ is not set
+
+#
+# Mail Utilities
+#
+CONFIG_MAKEMIME=y
+CONFIG_FEATURE_MIME_CHARSET="us-ascii"
+CONFIG_POPMAILDIR=y
+CONFIG_FEATURE_POPMAILDIR_DELIVERY=y
+CONFIG_REFORMIME=y
+CONFIG_FEATURE_REFORMIME_COMPAT=y
+# CONFIG_SENDMAIL is not set
+
+#
# Process Utilities
#
CONFIG_FREE=y
@@ -749,36 +802,62 @@ CONFIG_PKILL=y
CONFIG_PS=y
CONFIG_FEATURE_PS_WIDE=y
CONFIG_FEATURE_PS_TIME=y
+CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y
# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
CONFIG_RENICE=y
CONFIG_BB_SYSCTL=y
CONFIG_TOP=y
CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+CONFIG_FEATURE_TOP_SMP_CPU=y
CONFIG_FEATURE_TOP_DECIMALS=y
+CONFIG_FEATURE_TOP_SMP_PROCESS=y
CONFIG_FEATURE_TOPMEM=y
CONFIG_UPTIME=y
CONFIG_WATCH=y
#
+# Runit Utilities
+#
+CONFIG_RUNSV=y
+CONFIG_RUNSVDIR=y
+CONFIG_FEATURE_RUNSVDIR_LOG=y
+CONFIG_SV=y
+CONFIG_SV_DEFAULT_SERVICE_DIR="/var/service"
+CONFIG_SVLOGD=y
+CONFIG_CHPST=y
+CONFIG_SETUIDGID=y
+CONFIG_ENVUIDGID=y
+CONFIG_ENVDIR=y
+CONFIG_SOFTLIMIT=y
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_SETSEBOOL is not set
+# CONFIG_SESTATUS is not set
+
+#
# Shells
#
CONFIG_FEATURE_SH_IS_ASH=y
# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
# CONFIG_FEATURE_SH_IS_NONE is not set
CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
CONFIG_ASH_BASH_COMPAT=y
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_READ_NCHARS=y
CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-CONFIG_ASH_MATH_SUPPORT_64=y
CONFIG_ASH_GETOPTS=y
CONFIG_ASH_BUILTIN_ECHO=y
CONFIG_ASH_BUILTIN_PRINTF=y
@@ -789,6 +868,7 @@ CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
CONFIG_ASH_RANDOM_SUPPORT=y
CONFIG_ASH_EXPAND_PRMT=y
# CONFIG_HUSH is not set
+# CONFIG_HUSH_BASH_COMPAT is not set
# CONFIG_HUSH_HELP is not set
# CONFIG_HUSH_INTERACTIVE is not set
# CONFIG_HUSH_JOB is not set
@@ -796,12 +876,13 @@ CONFIG_ASH_EXPAND_PRMT=y
# CONFIG_HUSH_IF is not set
# CONFIG_HUSH_LOOPS is not set
# CONFIG_HUSH_CASE is not set
+# CONFIG_HUSH_FUNCTIONS is not set
+# CONFIG_HUSH_LOCAL is not set
+# CONFIG_HUSH_EXPORT_N is not set
# CONFIG_LASH is not set
# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
+CONFIG_SH_MATH_SUPPORT=y
+CONFIG_SH_MATH_SUPPORT_64=y
CONFIG_FEATURE_SH_EXTRA_QUIET=y
# CONFIG_FEATURE_SH_STANDALONE is not set
# CONFIG_FEATURE_SH_NOFORK is not set
@@ -820,38 +901,3 @@ CONFIG_LOGREAD=y
CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
CONFIG_KLOGD=y
CONFIG_LOGGER=y
-
-#
-# Runit Utilities
-#
-CONFIG_RUNSV=y
-CONFIG_RUNSVDIR=y
-CONFIG_SV=y
-CONFIG_SVLOGD=y
-CONFIG_CHPST=y
-CONFIG_SETUIDGID=y
-CONFIG_ENVUIDGID=y
-CONFIG_ENVDIR=y
-CONFIG_SOFTLIMIT=y
-# CONFIG_CHCON is not set
-# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
-# CONFIG_GETENFORCE is not set
-# CONFIG_GETSEBOOL is not set
-# CONFIG_LOAD_POLICY is not set
-# CONFIG_MATCHPATHCON is not set
-# CONFIG_RESTORECON is not set
-# CONFIG_RUNCON is not set
-# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
-# CONFIG_SELINUXENABLED is not set
-# CONFIG_SETENFORCE is not set
-# CONFIG_SETFILES is not set
-# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
-# CONFIG_SETSEBOOL is not set
-# CONFIG_SESTATUS is not set
-
-#
-# Print Utilities
-#
-# CONFIG_LPD is not set
-CONFIG_LPR=y
-# CONFIG_LPQ is not set
diff --git a/source/a/mkinitrd/init b/source/a/mkinitrd/init
index 0559932e9..a6f1091e8 100755
--- a/source/a/mkinitrd/init
+++ b/source/a/mkinitrd/init
@@ -4,7 +4,7 @@
# This requires that your kernel supports initramfs!!!
#
# Copyright 2004 Slackware Linux, Inc., Concord, CA, USA
-# Copyright 2007, 2008 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -33,95 +33,131 @@
#
# Config files used by this script:
#
-# /rootdev Contains the name of the root device, such as: /dev/hda1
+# /rootdev Contains the name of the root device, such as: /dev/hda1
#
-# /rootfs Contains the root filesystem type, such as: xfs
+# /rootfs Contains the root filesystem type, such as: xfs
#
# /initrd-name Contains the name of the initrd file.
#
+# /resumedev Contains the name of the device to resume from hibernation.
+#
+# /luksdev Contains colon separated list of luks encrypted devices to
+# be unlocked.
+#
+# /lukskey Contains the path to a LUKS key-file for automatic unlock
+# Format: LABEL=<partition_label>:/path/to/file
+# UUID=<partition_uuid>:/path/to/file
+#
+# /wait-for-root Contains a number - the init script will wait this amount
+# of seconds before creating device nodes.
+#
+# /keymap Contains the name for a custom keyboard map
+#
# Optional:
-# /load_kernel_modules A script that uses insmod to load the desired
-# modules. If this file is not present, all the modules
-# in /lib/modules/`uname -r`/ will be loaded in the usual
-# sorted order. If you need to load the modules in a
-# certain order, or if the modules need extra options,
-# then use a load_kernel_modules script.
-#
-# There's an example in here. To actually use it, you'll
-# need to make it executable:
-#
-# chmod 755 load_kernel_modules
-
-INITRD=`cat /initrd-name`
-ROOTDEV=`cat /rootdev`
-ROOTFS=`cat /rootfs`
-LUKSDEV=`cat /luksdev`
-RESUMEDEV=`cat /resumedev`
-WAIT=`cat /wait-for-root`
-KEYMAP=`cat /keymap`
+#
+# /load_kernel_modules
+# A script that uses insmod to load the desired
+# modules. If this file is not present, all the modules
+# in /lib/modules/$(uname -r)/ will be loaded in the usual
+# sorted order. If you need to load the modules in a
+# certain order, or if the modules need extra options,
+# then use a load_kernel_modules script.
+#
+# There's an example in here. To actually use it, you'll
+# need to make it executable:
+#
+# chmod 755 load_kernel_modules
+
+INITRD=$(cat /initrd-name)
+ROOTDEV=$(cat /rootdev)
+ROOTFS=$(cat /rootfs)
+LUKSDEV=$(cat /luksdev)
+LUKSKEY=$(cat /lukskey)
+RESUMEDEV=$(cat /resumedev)
+WAIT=$(cat /wait-for-root)
+KEYMAP=$(cat /keymap)
+INIT=/sbin/init
+
+PATH="/sbin:/bin:/usr/sbin:/usr/bin"
# Mount /proc and /sys:
mount -n proc /proc -t proc
mount -n sysfs /sys -t sysfs
+if grep devtmpfs /proc/filesystems 1>/dev/null 2>/dev/null ; then
+ DEVTMPFS=1
+ mount -n devtmpfs /dev -t devtmpfs
+fi
+
# Parse command line
-for ARG in `cat /proc/cmdline`; do
+for ARG in $(cat /proc/cmdline); do
case $ARG in
- rescue)
- RESCUE=1
- ;;
- root=/dev/*)
- ROOTDEV=`echo $ARG | cut -f2 -d=`
+ 0|1|2|3|4|5|6|S|s|single)
+ RUNLEVEL=$ARG
;;
- rootfs=*)
- ROOTFS=`echo $ARG | cut -f2 -d=`
+ init=*)
+ INIT=$(echo $ARG | cut -f2 -d=)
;;
luksdev=/dev/*)
- LUKSDEV=`echo $ARG | cut -f2 -d=`
+ LUKSDEV=$(echo $ARG | cut -f2 -d=)
;;
- waitforroot=*)
- WAIT=`echo $ARG | cut -f2 -d=`
+ lukskey=*)
+ LUKSKEY=$(echo $ARG | cut -f2- -d=)
;;
- root=LABEL=*)
- ROOTDEV=`echo $ARG | cut -f2- -d=`
+ rescue)
+ RESCUE=1
;;
resume=*)
- RESUMEDEV=`echo $ARG | cut -f2 -d=`
+ RESUMEDEV=$(echo $ARG | cut -f2 -d=)
;;
- 0|1|2|3|4|5|6)
- RUNLEVEL=$ARG
+ root=/dev/*)
+ ROOTDEV=$(echo $ARG | cut -f2 -d=)
+ ;;
+ root=LABEL=*)
+ ROOTDEV=$(echo $ARG | cut -f2- -d=)
+ ;;
+ root=UUID=*)
+ ROOTDEV=$(echo $ARG | cut -f2- -d=)
+ ;;
+ rootfs=*)
+ ROOTFS=$(echo $ARG | cut -f2 -d=)
+ ;;
+ waitforroot=*)
+ WAIT=$(echo $ARG | cut -f2 -d=)
;;
esac
done
# Load kernel modules:
-if [ ! -d /lib/modules/`uname -r` ]; then
- echo "No kernel modules found for Linux `uname -r`."
+if [ ! -d /lib/modules/$(uname -r) ]; then
+ echo "No kernel modules found for Linux $(uname -r)."
elif [ -x ./load_kernel_modules ]; then # use load_kernel_modules script:
echo "${INITRD}: Loading kernel modules from initrd image:"
. ./load_kernel_modules
else # load modules (if any) in order:
- if ls /lib/modules/`uname -r`/*.*o 1> /dev/null 2> /dev/null ; then
+ if ls /lib/modules/$(uname -r)/*.*o 1> /dev/null 2> /dev/null ; then
echo "${INITRD}: Loading kernel modules from initrd image:"
- for module in /lib/modules/`uname -r`/*.*o ; do
- insmod $module
+ for module in /lib/modules/$(uname -r)/*.*o ; do
+ /sbin/insmod $module
done
unset module
fi
fi
-# Sometimes the devices needs extra time to be available.
-# root on USB are good example of that.
+# Sometimes the devices need extra time to be available.
+# A root filesystem on USB is a good example of that.
sleep $WAIT
# If udevd is available, use it to generate block devices
# else use mdev to read sysfs and generate the needed devices
if [ -x /sbin/udevd -a -x /sbin/udevadm ]; then
/sbin/udevd --daemon
- /sbin/udevadm trigger --subsystem-match=block
+ /sbin/udevadm control --property=STARTUP=1
+ /sbin/udevadm trigger --subsystem-match=block --action=add
/sbin/udevadm settle --timeout=10
+ /sbin/udevadm control --property=STARTUP=
else
- mdev -s
+ [ "$DEVTMPFS" != "1" ] && mdev -s
fi
# Load a custom keyboard mapping:
@@ -136,62 +172,106 @@ if [ "$RESCUE" = "" ]; then
/sbin/mdadm -E -s >/etc/mdadm.conf
/sbin/mdadm -A -s
fi
-
- # Find root device if a label was given:
- if echo $ROOTDEV | grep -q "LABEL=" ; then
- ROOTDEV=`findfs $ROOTDEV`
- fi
- # Make encrypted root partition available:
- # The useable device will be under /dev/mapper/
- # Three scenarios for the commandline exist:
- # 1- ROOTDEV is on a LUKS volume, and LUKSDEV is a real block device
- # 2- ROOTDEV is on a LVM volume, and LUKSDEV is a real block device
- # 3- ROOTDEV is on a LUKS volume, and LUKSDEV is on a LVM volume
- # Case (3) will have to wait until we initialize the LVM.
- # Test if ROOTDEV is "/dev/someting" or just "something" - the first means
- # ROOTDEV is on a LVM volume (scenario 2); we don't need to rewrite ROOTDEV.
- # The second means that ROOTDEV is on a LUKS volume (scenario 1).
- CRYPTDEV=""
+ # Unlock any encrypted partitions necessary to access the
+ # root filesystem, such as encrypted LVM Physical volumes, disk
+ # partitions or mdadm arrays.
+ # Unavailable devices such as LVM Logical Volumes will need to be
+ # deferred until they become available after the vgscan.
+
if [ -x /sbin/cryptsetup ]; then
- # If we find a LUKS device now, it is on a real block device:
- if /sbin/cryptsetup isLuks ${LUKSDEV} 1>/dev/null 2>/dev/null ; then
- CRYPTDEV=$(basename $ROOTDEV)
- echo "Unlocking LUKS crypt volume '${CRYPTDEV}' on device '$LUKSDEV':"
- /sbin/cryptsetup luksOpen ${LUKSDEV} $CRYPTDEV </dev/systty >/dev/systty 2>&1
- if [ "$CRYPTDEV" == "$ROOTDEV" ]; then # scenario 1
- ROOTDEV="/dev/mapper/${CRYPTDEV}"
+
+ # Determine if we have to use a LUKS keyfile:
+ if [ ! -z "$LUKSKEY" ]; then
+ mkdir /mountkey
+ KEYPART=$(echo $LUKSKEY |cut -f1 -d:)
+ LUKSPATH="/mountkey$(echo $LUKSKEY |cut -f2 -d:)"
+ # Catch possible mount failure:
+ if blkid -t TYPE=vfat $KEYPART 1>/dev/null 2>&1 ; then
+ MOUNTOPTS="-t vfat -o shortname=mixed"
+ else
+ MOUNTOPTS="-t auto"
+ fi
+ mount $MOUNTOPTS $(findfs $KEYPART) /mountkey 2>/dev/null
+ # Check if we can actually use this file:
+ if [ ! -f $LUKSPATH ]; then
+ LUKSKEY=""
+ else
+ echo ">>> Using LUKS key file: '$LUKSKEY'"
+ LUKSKEY="-d $LUKSPATH"
fi
fi
+
+ LUKSLIST_DEFERRED=""
+ LUKSLIST=$(echo $LUKSDEV | tr -s ':' ' ')
+ for LUKSDEV in $LUKSLIST ; do
+ if /sbin/cryptsetup isLuks ${LUKSDEV} 1>/dev/null 2>/dev/null ; then
+ if echo $ROOTDEV | grep -q "LABEL=" || echo $ROOTDEV | grep -q "UUID=" ; then
+ CRYPTDEV="luks$(basename $LUKSDEV)"
+ elif [ "x$ROOTDEV" = "x$(basename $ROOTDEV)" ]; then
+ CRYPTDEV="$ROOTDEV"
+ else
+ CRYPTDEV="luks$(basename $LUKSDEV)"
+ fi
+ echo "Unlocking LUKS encrypted device '${LUKSDEV}' as luks mapped device '$CRYPTDEV':"
+ /sbin/cryptsetup ${LUKSKEY} luksOpen ${LUKSDEV} ${CRYPTDEV} </dev/tty0 >/dev/tty0 2>&1
+ if [ "$ROOTDEV" = "$LUKSDEV" -o "$ROOTDEV" = "$CRYPTDEV" ] ; then
+ ROOTDEV="/dev/mapper/$CRYPTDEV"
+ fi
+ else
+ LUKSLIST_DEFERRED="${LUKSLIST_DEFERRED} ${LUKSDEV}"
+ fi
+ done
fi
# Initialize LVM:
- if [ -x /sbin/vgscan ]; then
- /sbin/vgscan --mknodes --ignorelockingfailure
- sleep 10
+ if [ -x /sbin/vgchange ]; then
/sbin/vgchange -ay --ignorelockingfailure
fi
- # Make encrypted root partition available (scenario 3):
- # We have to handle cases here where the LUKS volume is created on a LV
- if [ -x /sbin/cryptsetup ]; then
- if /sbin/cryptsetup isLuks ${LUKSDEV} 1>/dev/null 2>/dev/null ; then
- # Only act if we could not open the LUKS device before (i.e. is on a LV):
- if [ "x$CRYPTDEV" == "x" ]; then
- echo "Unlocking LUKS crypt volume '${ROOTDEV}' on device '$LUKSDEV':"
- /sbin/cryptsetup luksOpen ${LUKSDEV} $ROOTDEV </dev/systty >/dev/systty 2>&1
- ROOTDEV="/dev/mapper/${ROOTDEV}"
+ # Unlock any LUKS encrypted devices that were deferred above but have now
+ # become available due to the vgscan (i.e. filesystems on LVM Logical Volumes)
+
+ if [ -x /sbin/cryptsetup -a -n "${LUKSLIST_DEFERRED}" ]; then
+ for LUKSDEV in ${LUKSLIST_DEFERRED} ; do
+ if /sbin/cryptsetup isLuks ${LUKSDEV} 1>/dev/null 2>/dev/null ; then
+ if echo $ROOTDEV | grep -q "LABEL=" || echo $ROOTDEV | grep -q "UUID=" ; then
+ CRYPTDEV="luks$(basename $LUKSDEV)"
+ elif [ "x$ROOTDEV" = "x$(basename $ROOTDEV)" ]; then
+ CRYPTDEV="$ROOTDEV"
+ else
+ CRYPTDEV="luks$(basename $LUKSDEV)"
+ fi
+ echo "Unlocking LUKS encrypted device '${LUKSDEV}' as luks mapped device '$CRYPTDEV':"
+ /sbin/cryptsetup ${LUKSKEY} luksOpen ${LUKSDEV} ${CRYPTDEV} </dev/tty0 >/dev/tty0 2>&1
+ if [ "$ROOTDEV" = "$LUKSDEV" -o "$ROOTDEV" = "$CRYPTDEV" ] ; then
+ ROOTDEV="/dev/mapper/$CRYPTDEV"
+ fi
+ else
+ echo "LUKS device '${LUKSDEV}' unavailable for unlocking!"
fi
- fi
+ done
fi
+ # Find root device if a label or UUID was given:
+ if echo $ROOTDEV | grep -q "LABEL=" || \
+ echo $ROOTDEV | grep -q "UUID=" ; then
+ ROOTDEV=$(findfs $ROOTDEV)
+ fi
+
+ # Clean up after LUKS unlock using a keyfile:
+ if grep -q mountkey /proc/mounts 2>/dev/null ; then
+ umount -l /mountkey
+ rmdir /mountkey 2>/dev/null
+ fi
+
# Resume state from swap
if [ "$RESUMEDEV" != "" ]; then
if ls -l $RESUMEDEV | grep -q "^l" ; then
- RESUMEDEV=`ls -l $RESUMEDEV | awk '{ print $NF }'`
+ RESUMEDEV=$(ls -l $RESUMEDEV | awk '{ print $NF }')
fi
echo "Trying to resume from $RESUMEDEV"
- RESMAJMIN=`ls -l $RESUMEDEV | tr , : | awk '{ print $5$6 }'`
+ RESMAJMIN=$(ls -l $RESUMEDEV | tr , : | awk '{ print $5$6 }')
echo $RESMAJMIN > /sys/power/resume
fi
@@ -206,6 +286,7 @@ if [ "$RESCUE" = "" ]; then
/bin/sh
fi
else
+ echo
echo "RESCUE mode"
echo
echo " You can try to fix or rescue your system now. If you want"
@@ -219,12 +300,13 @@ else
/bin/sh
fi
-if ps axc | grep -q udevd ; then
- killall udevd
+if pgrep udevd >/dev/null ; then
+ pkill udevd
fi
unset ERR
-umount /proc
-umount /sys
+mount -o move /proc /mnt/proc
+mount -o move /sys /mnt/sys
+[ "$DEVTMPFS" = "1" ] && mount -o move /dev /mnt/dev
echo "${INITRD}: exiting"
-exec switch_root /mnt /sbin/init $RUNLEVEL
+exec switch_root /mnt $INIT $RUNLEVEL
diff --git a/source/a/mkinitrd/mkinitrd b/source/a/mkinitrd/mkinitrd
index 8f77725fe..4cd97296b 100644
--- a/source/a/mkinitrd/mkinitrd
+++ b/source/a/mkinitrd/mkinitrd
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2004 Slackware Linux, Inc., Concord, CA, USA
# Copyright 2004 Patrick J. Volkerding, Concord, CA, USA
-# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,24 +22,28 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Modified by Robby Workman <rworkman@slackware.com> 26 November 2007
-# to add support for mkinitrd.conf - No additional license terms added
+# to add support for mkinitrd.conf - No additional license terms added
# Modified by Alan Hicks <alan@slackware.com> 27 November 2007 to enable
-# passing arguments to kernel modules - No additional license terms added
-# volkerdi - feel free to remove these :)
+# passing arguments to kernel modules - No additional license terms added
+# volkerdi - feel free to remove these :)
# Modified by Eric Hameleers <alien@slackware.com> 3 April 2008
-# to add support custom keymaps - No additional license terms added
+# to add support custom keymaps - No additional license terms added
# Modified by Patrick Volkerding <volkerdi@slackware.com> 17 Dec 2008
-# Added support to bail out if kernel modules are requested for a kernel
-# version that is not installed (thanks to Eric Hameleers), be more
-# verbose about showing modules added to the initrd (thanks to
-# Ellington Santos), and if "mount" returns /dev/root as the root device,
-# use readlink to resolve the device pointed to by the /dev/root
-# symlink, changed modprobe to use --ignore-install to avoid catching
-# custom "install" lines and causing /sbin/modprobe to be copied to the
-# initrd (thanks to Ken Milmore).
-# Of course, license terms remain unchanged.
-
-MKINITRD_VERSION=1.3.4
+# Added support to bail out if kernel modules are requested for a kernel
+# version that is not installed (thanks to Eric Hameleers), be more
+# verbose about showing modules added to the initrd (thanks to
+# Ellington Santos), and if "mount" returns /dev/root as the root device,
+# use readlink to resolve the device pointed to by the /dev/root
+# symlink, changed modprobe to use --ignore-install to avoid catching
+# custom "install" lines and causing /sbin/modprobe to be copied to the
+# initrd (thanks to Ken Milmore).
+# Of course, license terms remain unchanged.
+# Modified by Eric Hameleers <alien@slackware.com> 3 March 2010
+# Add lukskey option (-K). Automatically add kernel modules listed in
+# load-kernel-modules if that file is executable.
+# Yada yada yada.
+
+MKINITRD_VERSION=1.4.5
print_usage() {
cat << EOF
@@ -70,22 +74,22 @@ initrd, and the script is easy to modify. Be creative. :-)
-o Output image (default /boot/initrd.gz)
-r Root partition device (must be used with -f)
-s Initrd source tree (default /boot/initrd-tree/)
+ -u Include udev in the initrd
-w Time to wait until all disks are detected
- -C Use cryptsetup to unlock the underlying device of an
- encrypted root filesystem (must be used with '-r' parameter).
- Two scenarios are possible. (1) root filesystem was created on the
- encrypted disk/LVM partition, example:
- -C /dev/sda2 -r cryptroot
- where /dev/sda2 is the encrypted partition and
- the actual root device name in /etc/fstab is:
- /dev/mapper/cryptroot
- (2) the encrypted partition contains a LVM volume which holds the
- root filesystem, example:
- -C /dev/sda2 -r /dev/vg/root
- where /dev/sda2 is the encrypted partition and
- the actual root device name in /etc/fstab is:
- /dev/vg/root
+ -C A colon (:) delimited list of luks encrypted block devices to be
+ unlocked by the initrd using cryptsetup. All devices that must
+ be unlocked in order to access the root filesystem must be
+ specified. (Use with '-r' parameter).
-L Add support for LVM partitions
+ -K Use a USB key (fat-formatted) to unlock the root LUKS volume
+ The parameter value is filename of a keyfile, as well as the label
+ (or uuid) of the partition this file is on. This way, you can unlock
+ your computer automatically if you have a USB stick with your LUKS
+ key inserted at boot. A passphrase will still be asked if the LUKS
+ key can not be found.
+ For example, if your USB thumb drive has a FAT partition with label
+ "TRAVELSTICK" and the actual keyfile is called "/keys/alien.luks",
+ then you need to pass: -K LABEL=TRAVELSTICK:/keys/alien.luks
-R Add support for RAID partitions
-V Display version number
@@ -93,10 +97,10 @@ A simple example: Build an initrd for a reiserfs root partition:
mkinitrd -c -m reiserfs
-Another example: Build an initrd image using Linux 2.6.29.3-smp kernel
+Another example: Build an initrd image using Linux 2.6.29.6-smp kernel
modules for a system with an ext3 root partition on /dev/hdb3:
- mkinitrd -c -k 2.6.29.3-smp -m mbcache:jbd:ext3 -f ext3 -r /dev/hdb3
+ mkinitrd -c -k 2.6.29.6-smp -m mbcache:jbd:ext3 -f ext3 -r /dev/hdb3
Note that if you are already logged in with /dev/hdb3 as your /
partition, and it is running ext3, this command works just the same:
@@ -151,11 +155,21 @@ build_initrd_image() {
fi
fi
done
+ # Use the output image name written in the initrd-tree if present:
+ if [ ! -z "$(cat $SOURCE_TREE/initrd-name)" ]; then
+ OUTPUT_IMAGE=$(cat $SOURCE_TREE/initrd-name)
+ if [ "$OUTPUT_IMAGE" = "$(basename $OUTPUT_IMAGE)" ]; then
+ OUTPUT_IMAGE=/boot/$OUTPUT_IMAGE
+ fi
+ mkdir -p $(dirname $OUTPUT_IMAGE)
+ fi
# Wrap the initrd as an initramfs image and move it into place:
( cd $SOURCE_TREE
rm -f $OUTPUT_IMAGE
find . | cpio -o -H newc | gzip -9c > $OUTPUT_IMAGE
)
+ echo "$OUTPUT_IMAGE created."
+ echo "Be sure to run lilo again if you use it."
}
badconf_file() {
@@ -166,6 +180,44 @@ badconf_file() {
exit 1
}
+
+unify_libs() {
+ awk '/=. \// { print $3 }' | sort -u
+}
+
+copy_libs() {
+ # First copy the essential glibc files:
+ find /lib* -name "ld-*so*" -o -name "libnss_files*so*" -o -name "libnss_compat*so*" | xargs -I'{}' cp -P --parents '{}' $SOURCE_TREE/
+
+ # Then copy all remaining libs our initrd files link against:
+ COUNT=1
+ PRFX=$(tempfile --prefix ldd-)
+ TMPFILE=${PRFX}${COUNT}
+
+ find $SOURCE_TREE -type f -exec ldd {} 2>/dev/null \; | unify_libs > $TMPFILE
+ while [ "$COUNT" != "0" ]; do
+ COUNT=$((COUNT+1))
+ for i in $(cat $TMPFILE) ; do
+ ldd $i 2>/dev/null
+ done | unify_libs > ${PRFX}${COUNT}
+ TMPFILE=${PRFX}${COUNT}
+ [ $(cat $TMPFILE | wc -l) -eq 0 ] && COUNT=0
+ done
+
+ for i in $(cat ${PRFX}* | sort -u) ; do
+ cp -P --parents ${i}* $SOURCE_TREE
+ done
+
+ (
+ cd $SOURCE_TREE
+ for i in $(find -L . -type l -exec readlink -m /{} \; 2>/dev/null ) ; do
+ cp -P --parents ${i} $SOURCE_TREE
+ done
+ )
+
+ rm ${PRFX}*
+}
+
# If --help is given, print_usage and exit:
if echo $* | grep -wq '\--help' ; then
print_usage
@@ -181,11 +233,13 @@ fi
# Default values if these aren't previously set.
# Might be set from config file or by -s and -o options too.
SOURCE_TREE=${SOURCE_TREE:-/boot/initrd-tree}
-OUTPUT_IMAGE=${OUTPUT_IMAGE:-/boot/initrd.gz}
+OUTPUT_IMAGE=${OUTPUT_IMAGE:-""}
KERNEL_VERSION=${KERNEL_VERSION:-"$(uname -r)"}
# Default actions without options:
if [ -z "$1" ]; then
+ # We need a sensible default for this special case:
+ OUTPUT_IMAGE=${OUTPUT_IMAGE:-/boot/initrd.gz}
# If the output tree doesn't exist, create it and then exit:
if [ ! -d $SOURCE_TREE ]; then
echo "Nothing found at location $SOURCE_TREE, so we will create an"
@@ -204,8 +258,6 @@ if [ -z "$1" ]; then
# If the source tree does exist, the default is to build the initrd
# image from it and then exit:
build_initrd_image
- echo "$OUTPUT_IMAGE created."
- echo "Be sure to run lilo again if you use it."
exit 0
fi
fi # default no-option actions
@@ -264,6 +316,10 @@ while [ ! -z "$1" ]; do
SOURCE_TREE="$2"
shift 2
;;
+ -u)
+ UDEV=1
+ shift
+ ;;
-w)
WAIT="$2"
shift 2
@@ -273,6 +329,10 @@ while [ ! -z "$1" ]; do
LUKSDEV="$2"
shift 2
;;
+ -K)
+ LUKSKEY="$2"
+ shift 2
+ ;;
-L)
LVM=1
shift
@@ -306,13 +366,13 @@ fi
# If $ROOTDEV and $ROOTFS are not set, assume we want the
# values for the currently mounted /
# (unless we find that values are already set in the initrd-tree):
-if [ -z "$ROOTDEV" -a -z "$(cat $SOURCE_TREE/rootdev 2> /dev/null)" ]; then
+if [ -z "$ROOTDEV" -a -z "$(cat $SOURCE_TREE/rootdev 2>/dev/null)" ]; then
ROOTDEV=$(mount | grep ' on / ' | cut -f 1 -d ' ')
if [ "$ROOTDEV" = "/dev/root" ]; then # find real root device
ROOTDEV="/dev/$(readlink /dev/root)"
fi
fi
-if [ -z "$ROOTFS" -a -z "$(cat $SOURCE_TREE/rootfs 2> /dev/null)" ]; then
+if [ -z "$ROOTFS" -a -z "$(cat $SOURCE_TREE/rootfs 2>/dev/null)" ]; then
ROOTFS=$(mount | grep ' on / ' | cut -f 5 -d ' ')
fi
# If needed, write them in the initrd-tree:
@@ -333,9 +393,12 @@ if [ ! -z "$WAIT" ]; then
echo $WAIT > $SOURCE_TREE/wait-for-root
fi
-# Useful to know which initrd is running:
-INITRD_NAME=$(basename $OUTPUT_IMAGE)
-echo $INITRD_NAME > $SOURCE_TREE/initrd-name
+# If no OUTPUT_IMAGE was specified, read it from the SOURCE_TREE if possible:
+OUTPUT_IMAGE=${OUTPUT_IMAGE:-"$(cat $SOURCE_TREE/initrd-name)"}
+# If we still have no value, apply the default:
+OUTPUT_IMAGE=${OUTPUT_IMAGE:-"/boot/initrd.gz"}
+# Finally, write the image name into the SOURCE_TREE:
+echo "$OUTPUT_IMAGE" > $SOURCE_TREE/initrd-name
# Fill /resumedev with the swap partition holding the hibernation image
if [ ! -z "$RESUMEDEV" ]; then
@@ -353,49 +416,73 @@ if [ ! -z "$LUKSDEV" ]; then
CRYPT=1
fi
+# If LUKSKEY was set in the config file, then give it a warm welcome:
+if [ ! -z "$LUKSKEY" ]; then
+ # $SOURCE_TREE/wait-for-root may have been configured earlier in the script,
+ # but we require at least 5 seconds for the USB stick to settle
+ # after insertion :
+ if [ ! -s $SOURCE_TREE/wait-for-root ] || [ $(cat $SOURCE_TREE/wait-for-root) -lt 5 ]; then
+ echo 5 > $SOURCE_TREE/wait-for-root
+ fi
+
+ # Several extra modules are needed to support a vfat formatted USB stick...
+ # assuming here we are using a western codepage.
+ # This possibly adds doublures, but we clean up the MODULE_LIST further down!
+ MODULE_LIST="${MODULE_LIST}:ehci-hcd:uhci-hcd:usb-storage:hid:usbhid:fat:nls_cp437:nls_iso8859-1:msdos:vfat"
+
+ # Finally, write the lukskey to the initrd-tree:
+ echo $LUKSKEY > $SOURCE_TREE/lukskey
+fi
+
# Include RAID support in initrd
if [ ! -z "$RAID" ]; then
if [ -r /sbin/mdadm ]; then
mkdir -p $SOURCE_TREE/sbin
cp /sbin/mdadm $SOURCE_TREE/sbin/mdadm
- chmod 755 $SOURCE_TREE/sbin/mdadm
+ chmod 0755 $SOURCE_TREE/sbin/mdadm
else
echo "ERROR: mdadm binary is missing, RAID support not installed"
fi
fi
+# Include udev in initrd
+if [ ! -z "$UDEV" ]; then
+ cp /sbin/udev* $SOURCE_TREE/sbin/
+ cp -a /lib/udev $SOURCE_TREE/lib/
+fi
+
# Include LVM support in initrd
if [ ! -z "$LVM" ]; then
- if [ -f /sbin/lvm.static ]; then
+ if [ -f /sbin/lvm ]; then
mkdir -p $SOURCE_TREE/sbin
- cp /sbin/lvm.static $SOURCE_TREE/sbin/lvm.static
- cp /sbin/dmsetup.static $SOURCE_TREE/sbin/dmsetup.static
+ cp /sbin/lvm $SOURCE_TREE/sbin/lvm
+ cp /sbin/dmsetup $SOURCE_TREE/sbin/dmsetup
+ find /lib* -name "libdevmapper*so*" | xargs -I'{}' cp -P --parents '{}' $SOURCE_TREE/
( cd $SOURCE_TREE/sbin
- ln -s lvm.static vgchange 2>/dev/null
- ln -s lvm.static vgscan 2>/dev/null )
+ ln -s lvm vgchange 2>/dev/null
+ ln -s lvm vgscan 2>/dev/null )
if [ -z "${MODULE_LIST}" ] ; then
MODULE_LIST="dm-mod"
elif ! echo ${MODULE_LIST} | grep -q dm-mod ; then
MODULE_LIST="$MODULE_LIST:dm-mod"
fi
else
- echo "LVM static binary is missing, LVM support isn't installed"
+ echo "LVM binary is missing, LVM support isn't installed"
fi
fi
# Include cryptsetup (LUKS) support in initrd
if [ ! -z "$CRYPT" ]; then
- if [ -e /sbin/cryptsetup.static ]; then
+ if [ -e /usr/sbin/cryptsetup ]; then
mkdir -p $SOURCE_TREE/sbin
- cp /sbin/cryptsetup.static $SOURCE_TREE/sbin/cryptsetup.static
- ( cd $SOURCE_TREE/sbin
- ln -s cryptsetup.static cryptsetup 2>/dev/null
- )
- cat << EOF > $SOURCE_TREE/sbin/udevadm
+ cp /usr/sbin/cryptsetup $SOURCE_TREE/sbin/cryptsetup
+ if [ ! -e $SOURCE_TREE/sbin/udevadm ]; then
+ cat << EOF > $SOURCE_TREE/sbin/udevadm
#!/bin/sh
sleep 3
EOF
- chmod 0755 $SOURCE_TREE/sbin/udevadm
+ chmod 0755 $SOURCE_TREE/sbin/udevadm
+ fi
if [ -z "${MODULE_LIST}" ] ; then
MODULE_LIST="dm-mod"
@@ -405,7 +492,7 @@ EOF
# Write the underlying luks device to the initrd-tree:
echo $LUKSDEV > $SOURCE_TREE/luksdev
else
- echo "Cryptsetup static binary is missing, CRYPT support isn't installed"
+ echo "Cryptsetup binary is missing, CRYPT support isn't installed"
fi
fi
@@ -414,7 +501,14 @@ if [ ! -d $SOURCE_TREE/lib/modules/$KERNEL_VERSION ]; then
mkdir -p $SOURCE_TREE/lib/modules/$KERNEL_VERSION
fi
-# If a module list was given, copy the modules into place:
+# If an executable $SOURCE_TREE/load_kernel_modules already exists, then
+# we assume you will want to load the kernel modules mentioned in there.
+# This means, you do not have to explicitly add those on the commandline:
+if [ -x $SOURCE_TREE/load_kernel_modules ]; then
+ MODULE_LIST="${MODULE_LIST}:$(cat $SOURCE_TREE/load_kernel_modules |grep "^insmod" |rev |cut -d/ -f1 |rev |cut -d. -f1)"
+fi
+
+# If the module list is not empty, copy the modules into place:
if [ ! -z "$MODULE_LIST" ]; then
if grep -q "#insmod /lib/modules/2.6.18.8-smp/reiserfs.ko" $SOURCE_TREE/load_kernel_modules ; then
rm -f $SOURCE_TREE/load_kernel_modules
@@ -426,6 +520,12 @@ if [ ! -z "$MODULE_LIST" ]; then
echo >> $SOURCE_TREE/load_kernel_modules
fi
+ # Sanitize the modules list first, before any further processing.
+ # The awk command eliminates doubles without changing the order:
+ MODULE_LIST=$(echo $MODULE_LIST |tr -s ':' '\n' |awk '!x[$0]++' |tr '\n' ' ')
+ MODULE_LIST=$(echo $MODULE_LIST | tr ' ' ':')
+ MODULE_LIST=$(echo ${MODULE_LIST%:}) # Weed out a trailing ':'
+
# Count number of modules
# This INDEX number gives us an easy way to find individual
# modules and their arguments, as well as tells us how many
@@ -433,6 +533,8 @@ if [ ! -z "$MODULE_LIST" ]; then
if ! echo $MODULE_LIST | grep ':' > /dev/null ; then # only 1 module specified
INDEX=1
else
+ # Trim excess ':' which will screw this routine:
+ MODULE_LIST=$(echo $MODULE_LIST | tr -s ':')
INDEX=1
while [ ! "$(echo "$MODULE_LIST" | cut -f $INDEX -d ':' )" = "" ]; do
INDEX=$(expr $INDEX + 1)
@@ -458,7 +560,7 @@ while [ $i -ne $INDEX ]; do
fi
# Get MODULE deps and prepare insmod lines
- /sbin/modprobe --set-version $KERNEL_VERSION --show-depends --ignore-install $MODULE 2> /dev/null \
+ /sbin/modprobe --set-version $KERNEL_VERSION --show-depends --ignore-install $MODULE 2>/dev/null \
| grep "^insmod " | cut -f 2 -d ' ' | while read SRCMOD; do
if ! grep -q "$SRCMOD" $SOURCE_TREE/load_kernel_modules 2>/dev/null ; then
@@ -477,10 +579,13 @@ while [ $i -ne $INDEX ]; do
echo "$LINE" >> $SOURCE_TREE/load_kernel_modules
fi
- if cp -a --parents $SRCMOD $SOURCE_TREE 2> /dev/null; then
- echo "OK: $SRCMOD added."
- else
- echo "WARNING: Could not find module \"$SRCMOD\""
+ if [ ! -f ${SOURCE_TREE}${SRCMOD} ]; then
+ # We did not yet copy this module into the initrd-tree
+ if cp -a --parents $SRCMOD $SOURCE_TREE 2>/dev/null; then
+ echo "OK: $SRCMOD added."
+ else
+ echo "WARNING: Could not find module \"$SRCMOD\""
+ fi
fi
done
@@ -489,6 +594,9 @@ done
fi
+# Copy needed libraries
+copy_libs
+
# And finally, build the initrd:
build_initrd_image
diff --git a/source/a/mkinitrd/mkinitrd.8 b/source/a/mkinitrd/mkinitrd.8
index 5fa957218..be4e9d42d 100644
--- a/source/a/mkinitrd/mkinitrd.8
+++ b/source/a/mkinitrd/mkinitrd.8
@@ -7,7 +7,7 @@
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
.el .TP "\\$1"
..
-.TH MKINITRD 8 "04 March 2008" "Slackware Version 12.1"
+.TH MKINITRD 8 "27 March 2010" "Slackware Version 13.1"
.SH NAME
mkinitrd \- create or rebuilt an initrd (initial ramdisk) using initramfs (simple cpio+gzip).
.SH SYNOPSIS
@@ -40,7 +40,16 @@ mkinitrd \- create or rebuilt an initrd (initial ramdisk) using initramfs (simpl
.B \-s source_tree
]
[
-.B \-C crypt_device
+.B \-u
+]
+[
+.B \-w wait_time
+]
+[
+.B \-C device1:device2:device3...
+]
+[
+.B \-K luks_keyfile
]
[
.B \-L
@@ -117,29 +126,50 @@ together with the \-f option in order to be beneficial.
.B \-s source tree
The directory to use as the source for the initrd. (default: /boot/initrd-tree/)
.TP
+.B \-u
+Include udev in the initrd.
+.TP
.B \-w
The -w option specifies how long to wait in seconds before assuming that all the
drives are spun up and ready to go.
.TP
-.B \-C
-Use cryptsetup to enable the underlying device of an encrypted root partition.
-Requires '-r' parameter. Two scenarios are possible.
-.br
-(1) root filesystem was created on the encrypted disk/LVM partition, example:
+.B \-C device list
+A colon (:) delimited list of luks encrypted block devices to be unlocked by
+the initrd using cryptsetup. All devices that must be unlocked in order to
+access the root filesystem must be specified. e.g.
- -C /dev/sda2 -r cryptroot
+ -C /dev/sda2:/dev/sda3
-where /dev/sda2 is the encrypted partition and the actual root device name in /etc/fstab is:
+Each unlocked device will be assigned an automatically generated luks device
+name of the form luks<device> where '<device>' will be the basename of the
+encrypted device. e.g.
- /dev/mapper/cryptroot
+ /dev/mapper/lukssda2
-(2) the encrypted partition contains a LVM volume which holds the root filesystem, example:
+As a convenience to users, where -r specifies one of the device names listed
+on the -C option it will be automatically adjusted to use the correct luks
+device name. i.e.
- -C /dev/sda2 -r /dev/vg/root
+ "-C /dev/sda2 -r /dev/sda2" and
+ "-C /dev/sda2 -r /dev/mapper/lukssda2"
-where /dev/sda2 is the encrypted partition and the actual root device name in /etc/fstab is:
+are equivalent.
+.br
+(Use with '-r' option).
+.TP
+.B \-K luks_keyfile
+When using cryptsetup to encrypt your partition, you can use a keyfile instead
+of a passphrase to unlock the LUKS volume. The LUKSKEY variable holds the
+filename of a keyfile, as well as the label (or uuid) of the partition this
+file is on. This way, you can unlock your computer automatically if you have a
+USB stick with your LUKS key inserted at boot. A passphrase will still be asked
+if the LUKS key can not be found.
+.br
+For example, if your USB thumb drive has a FAT partition with label
+"TRAVELSTICK" and the actual keyfile is called "/keys/alien.luks", then
+you need to set:
- /dev/vg/root
+ -K LABEL=TRAVELSTICK:/keys/alien.luks
.TP
.B \-L
This option adds LVM support to the initrd, if the tools are
@@ -156,10 +186,33 @@ A simple example: Build an initrd for a reiserfs root partition:
mkinitrd -c -m reiserfs
-Another example: Build an initrd image using Linux 2.6.24.5 kernel
-modules for a system with an ext3 root partition on /dev/hdb3:
+Another example: Build an initrd image using Linux 2.6.33.1 kernel
+modules for a system with an ext3 root partition on /dev/sdb3:
+
+ mkinitrd -c -k 2.6.33.1 -m ext3 -f ext3 -r /dev/sdb3
+
+An example of a single encrypted partition setup:
+.br
+As a user convenience, the value for the "-r" option may also be specified as
+"/dev/sda2" in this example:
+
+ mkinitrd -c -k 2.6.33.1 \\
+ -m ext4:ehci-hcd:uhci-hcd:usbhid \\
+ -f ext4 -r /dev/mapper/lukssda2 \\
+ -C /dev/sda2 \\
+ -l uk
+
+Finally, A more complex example:
+.br
+This one is for a LVM Volume Group (rootvg) comprising of two LVM Physical
+Volumes, each of which is on a LUKS encrypted partition that will need to be
+unlocked before the root filesystem (/dev/rootvg/lvroot) can be accessed.
- mkinitrd -c -k 2.6.24.5 -m ext3 -f ext3 -r /dev/hdb3
+ mkinitrd -c -k 2.6.29.6 \\
+ -m ext4:ehci-hcd:uhci-hcd:usbhid \\
+ -f ext4 -r /dev/rootvg/lvroot \\
+ -L -C /dev/sda2:/dev/sdb2 \\
+ -l uk
If run without options, mkinitrd will rebuild an initrd image using
the contents of the $SOURCE_TREE directory, or, if that directory
@@ -174,13 +227,16 @@ line to /etc/lilo.conf. Here's a section of lilo.conf that shows
how to set this up:
# Linux bootable partition config begins
- image = /boot/vmlinuz-generic-2.6.24.5
+ image = /boot/vmlinuz-generic-2.6.33.1
initrd = /boot/initrd.gz
- root = /dev/hda6
- label = Linux26245
+ root = /dev/sda3
+ label = Linux26331
read-only
# Linux bootable partition config ends
+Note that the line "root = /dev/sda3" is not needed if the root device
+has been configured in the initrd image.
+
Once you've created the initrd and editing /etc/lilo.conf, you will
need to run 'lilo' to write out the changed boot block. The next
time you reboot the initrd should be loaded along with the kernel.
diff --git a/source/a/mkinitrd/mkinitrd.SlackBuild b/source/a/mkinitrd/mkinitrd.SlackBuild
index 10e70b997..7beba6c63 100755
--- a/source/a/mkinitrd/mkinitrd.SlackBuild
+++ b/source/a/mkinitrd/mkinitrd.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,16 +21,32 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.3.4
-BB=1.12.1
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-1.4.5}
+BB=1.15.3
NUMJOBS=${NUMJOBS:--j7}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-mkinitrd
+# Write a warning to stdout if the mkinitrd script has a different version:
+eval $( grep "^MKINITRD_VERSION=" $CWD/mkinitrd )
+if [ "$VERSION" != "$MKINITRD_VERSION" ]; then
+ echo "The version of this package ($VERSION) is not equal to the version of the mkinitrd script ($MKINITRD_VERSION)."
+ sleep 5
+fi
+
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
@@ -41,7 +57,7 @@ cd busybox-$BB
#zcat $CWD/busybox-${BB}.remove_warning.diff.gz | patch -p1 --verbose || exit 1
#zcat $CWD/busybox-${BB}.no-gc-sections.diff.gz | patch -p1 --verbose || exit 1
# Needed with 2.6.27 kernel:
-zcat $CWD/busybox-1.12.1_inotify.diff.gz | patch -p1 --verbose || exit 1
+#zcat $CWD/busybox-1.12.1_inotify.diff.gz | patch -p1 --verbose || exit 1
chown -R root:root .
sed -e \
diff --git a/source/a/mkinitrd/mkinitrd.conf.5 b/source/a/mkinitrd/mkinitrd.conf.5
index 5890e2462..7b316d0f1 100644
--- a/source/a/mkinitrd/mkinitrd.conf.5
+++ b/source/a/mkinitrd/mkinitrd.conf.5
@@ -1,7 +1,7 @@
.\" mkinitrd.5 Robby Workman <rworkman@slackware.com>
-.\" 25 November 2007 "
+.\" 19 December 2009 "
-.TH MKINITRD.CONF 5 "05 Februrary 2008" "Slackware 12.1"
+.TH MKINITRD.CONF 5 "27 March 2010" "Slackware 13.1"
.SH NAME
.B mkinitrd.conf(5)
.SH SYNOPSIS
@@ -89,21 +89,44 @@ Example: MODULE_LIST="module1:module2 option=1:module3"
.TP 5
.I LUKSDEV
-When using cryptsetup with an encrypted root partition, use this variable to
-define the *actual* device name of the encrypted root partition and define the
-*mapped* device name as ROOTDEV.
+Contains a colon (:) delimited list of luks encrypted block devices to be
+unlocked by the initrd using cryptsetup. All devices that must be unlocked
+in order to access the root filesystem must be specified.
.br
-For example, if your actual root device name in /etc/fstab is:
-.br
-.I /dev/mapper/cryptroot
-on
-.I /dev/sda2
+Example: LUKSDEV="/dev/sda2:/dev/sda3"
+
+Each unlocked device will be assigned an automatically generated luks device
+name of the form luks<device> where '<device>' will be the basename of the
+encrypted device. e.g.
+
+ /dev/mapper/lukssda2
-Then you'll need to set:
+As a convenience to users, if
+.I ROOTDEV
+(see below) specifies one of the device names listed in the
+.I LUKSDEV
+option, then it will be automatically adjusted to use the correct luks
+device name. i.e. when specifying
+.I "LUKSDEV=/dev/sda2"
+then
+.I "ROOTDEV=/dev/sda2"
+and
+.I "ROOTDEV=/dev/mapper/lukssda2"
+are equivalent.
+.TP 5
+.I LUKSKEY
+When using cryptsetup to encrypt your partition, you can use a keyfile instead
+of a passphrase to unlock the LUKS volume. The LUKSKEY variable holds the
+filename of a keyfile, as well as the label (or uuid) of the partition this
+file is on. This way, you can unlock your computer automatically if you have a
+USB stick with your LUKS key inserted at boot. A passphrase will still be asked
+if the LUKS key can not be found.
.br
-LUKSDEV="/dev/sda2"
+For example, if your USB thumb drive has a FAT partition with label
+"TRAVELSTICK" and the actual keyfile is called "/keys/alien.luks", then
+you need to set:
.br
-ROOTDEV="cryptroot"
+LUKSKEY="LABEL=TRAVELSTICK:/keys/alien.luks"
.TP 5
.I ROOTDEV
@@ -146,6 +169,12 @@ LVM="0" # Do not add LVM support to initrd
LVM="1" # Add LVM support to initrd
.TP 5
+.I UDEV
+Use UDEV in the initrd.
+.br
+Example: UDEV="1"
+
+.TP 5
.I WAIT
This defines the time to wait, in seconds, until all disks are detected.
.br
diff --git a/source/a/mkinitrd/mkinitrd.conf.sample b/source/a/mkinitrd/mkinitrd.conf.sample
index 29e56f5f0..4838354b5 100644
--- a/source/a/mkinitrd/mkinitrd.conf.sample
+++ b/source/a/mkinitrd/mkinitrd.conf.sample
@@ -7,10 +7,12 @@
#KERNEL_VERSION="$(uname -r)"
#KEYMAP="us"
#MODULE_LIST="ext3"
-#LUKSDEV="/dev/hda1"
-#ROOTDEV="/dev/hda1"
+#LUKSDEV="/dev/sda2"
+#LUKSKEY="LABEL=TRAVELSTICK:/keys/alienbob.luks"
+#ROOTDEV="/dev/sda1"
#ROOTFS="ext3"
-#RESUMEDEV="/dev/hda2"
+#RESUMEDEV="/dev/sda2"
#RAID="0"
#LVM="0"
+#UDEV="1"
#WAIT="1"
diff --git a/source/a/mkinitrd/mkinitrd_command_generator.sh b/source/a/mkinitrd/mkinitrd_command_generator.sh
index d3cdfb731..b26d9109c 100644
--- a/source/a/mkinitrd/mkinitrd_command_generator.sh
+++ b/source/a/mkinitrd/mkinitrd_command_generator.sh
@@ -47,6 +47,7 @@ FSTAB=${FSTAB:-"/etc/fstab"} # so we can test with alternate fstab files
SOURCE_TREE=${SOURCE_TREE:-"/boot/initrd-tree"}
CLEAR_TREE=${CLEAR_TREE:-1}
KEYMAP=${KEYMAP:-"us"}
+UDEV=${UDEV:-0}
WAIT=${WAIT:-1}
# A basic explanation of the commandline parameters:
@@ -532,6 +533,7 @@ configurations are optional and you can stick to the defaults." 11 72 3 \
"KEYMAP" "Select keyboard layout (default: US)" \
$([ $USING_LUKS = 1 ] && echo on || echo off) \
"RESUMEDEV" "Select device for 'suspend-to-disk' feature" off \
+"UDEV" "Use UDEV in the initrd for device configuration" off \
"WAIT" "Add delay to allow detection of slow disks at boot" off)
if [ "$?" != "0" ]; then
exit 1
@@ -702,6 +704,10 @@ through the whole list of choices." \
[ -n "$KEYMAP" ] && KEYMAP=$(basename $KEYMAP .map)
fi
+ if echo $EXTRA | grep -q UDEV ; then
+ UDEV=1
+ fi
+
if echo $EXTRA | grep -q RESUMEDEV ; then
# Print information about swap partitions:
FREERAM=$(free -k | grep "^Mem:" | tr -s ' ' | cut -d' ' -f2)
@@ -772,6 +778,10 @@ if [ -n "$KEYMAP" -a "$KEYMAP" != "us" ]; then
# Add non-us keyboard mapping:
MKINIT="$MKINIT -l $KEYMAP"
fi
+if [ $UDEV -eq 1 ]; then
+ # Add UDEV support:
+ MKINIT="$MKINIT -u"
+fi
if [ -n "$WAIT" -a $WAIT -ne 1 ]; then
# Add non-default wait time:
MKINIT="$MKINIT -w $WAIT"
@@ -815,6 +825,7 @@ elif [ "$EMIT" = "conf" ]; then
RESUMEDEV="$RESUMEDEV"
RAID="$USING_RAID"
LVM="$USING_LVM"
+ UDEV="$UDEV"
WAIT="$WAIT"
EOT
fi
diff --git a/source/a/mkinitrd/mkinitrd_kernelcheck.diff b/source/a/mkinitrd/mkinitrd_kernelcheck.diff
deleted file mode 100644
index e1302f54e..000000000
--- a/source/a/mkinitrd/mkinitrd_kernelcheck.diff
+++ /dev/null
@@ -1,15 +0,0 @@
---- mkinitrd.orig 2008-11-30 15:35:58.000000000 +0100
-+++ mkinitrd 2008-12-11 11:16:37.000000000 +0100
-@@ -277,6 +277,12 @@
- esac
- done
-
-+# If kernel modules are needed but the kernel version is absent, exit now:
-+if [ ! -d /lib/modules/$KERNEL_VERSION ]; then
-+ echo "No modules tree found for kernel \"$KERNEL_VERSION\""
-+ exit 1
-+fi
-+
- # If clearing source tree was requested, do that first
- if [ "$CLEAR_TREE" = "1" ]; then
- clear_source_tree
diff --git a/source/a/module-init-tools/doinst.sh b/source/a/module-init-tools/doinst.sh
deleted file mode 100644
index 41ff1d753..000000000
--- a/source/a/module-init-tools/doinst.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-config() {
- NEW="$1"
- OLD="$(dirname $NEW)/$(basename $NEW .new)"
- # If there's no config file by that name, mv it over:
- if [ ! -r $OLD ]; then
- mv $NEW $OLD
- elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
- rm $NEW
- fi
- # Otherwise, we leave the .new copy for the admin to consider...
-}
-config etc/modprobe.conf.new
-
-# Retain legacy behavior by tossing a symlink in /etc/modprobe.d/:
-# Note that the plan is to eliminate /etc/modprobe.conf and
-# /etc/modules.conf in the long run, so you may wish to remove the
-# link and move your actual file into /etc/modprobe.d/ if you want
-# to keep it instead of going with smaller chunks in there...
-if [ -r etc/modprobe.conf ]; then
- ( cd etc/modprobe.d ; ln -s ../modprobe.conf . 2> /dev/null )
-fi
-
diff --git a/source/a/module-init-tools/modprobe.favor.etc.modprobe.d.diff b/source/a/module-init-tools/modprobe.favor.etc.modprobe.d.diff
deleted file mode 100644
index 1565d93a6..000000000
--- a/source/a/module-init-tools/modprobe.favor.etc.modprobe.d.diff
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -Nur module-init-tools-3.6.old/doc/modprobe.conf.sgml module-init-tools-3.6.new/doc/modprobe.conf.sgml
---- module-init-tools-3.6.old/doc/modprobe.conf.sgml 2009-02-04 01:45:24.000000000 -0600
-+++ module-init-tools-3.6.new/doc/modprobe.conf.sgml 2009-02-08 01:42:05.097637263 -0600
-@@ -35,7 +35,9 @@
- <para>Because the <command>modprobe</command> command can add or
- remove extra more than one module, due to module dependencies,
- we need a method of specifying what options are to be used with
-- those modules. <filename>/etc/modprobe.conf</filename> (or, if that does not exist, all files under the <filename>/etc/modprobe.d</filename> directory) specifies
-+ those modules. All of the files under the <filename>/etc/modprobe.d/</filename>
-+ directory are used, or if that directory does not exist, the
-+ <filename>/etc/modprobe.conf</filename> file specifies
- those options, as required. It can also be used to create
- convenient aliases: alternate names for a module. Finally, it
- can override the normal <command>modprobe</command> behavior
-diff -Nur module-init-tools-3.6.old/modprobe.c module-init-tools-3.6.new/modprobe.c
---- module-init-tools-3.6.old/modprobe.c 2009-02-04 01:45:24.000000000 -0600
-+++ module-init-tools-3.6.new/modprobe.c 2009-02-08 01:42:05.099636402 -0600
-@@ -1366,8 +1366,8 @@
-
- static const char *default_configs[] =
- {
-- "/etc/modprobe.conf",
- "/etc/modprobe.d",
-+ "/etc/modprobe.conf",
- };
-
- static void read_toplevel_config(const char *filename,
diff --git a/source/a/module-init-tools/modprobe.ignore_some_suffixes.diff b/source/a/module-init-tools/modprobe.ignore_some_suffixes.diff
index 24967f0b2..a65fba0ad 100644
--- a/source/a/module-init-tools/modprobe.ignore_some_suffixes.diff
+++ b/source/a/module-init-tools/modprobe.ignore_some_suffixes.diff
@@ -1,43 +1,41 @@
-diff -Nur module-init-tools-3.6.old/modprobe.c module-init-tools-3.6.new/modprobe.c
---- module-init-tools-3.6.old/modprobe.c 2009-02-04 01:45:24.000000000 -0600
-+++ module-init-tools-3.6.new/modprobe.c 2009-02-08 01:40:24.143637295 -0600
+diff -Nur module-init-tools-3.11.orig/modprobe.c module-init-tools-3.11.new/modprobe.c
+--- module-init-tools-3.11.orig/modprobe.c 2009-10-15 04:59:28.000000000 -0500
++++ module-init-tools-3.11.new/modprobe.c 2009-10-15 08:14:12.108359199 -0500
@@ -38,6 +38,7 @@
#include <asm/unistd.h>
#include <sys/wait.h>
#include <syslog.h>
+#include <regex.h>
- #define streq(a,b) (strcmp((a),(b)) == 0)
- #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-@@ -1275,6 +1276,20 @@
- return 1;
+ #include "util.h"
+ #include "elfops.h"
+@@ -861,6 +862,20 @@
+ options, commands, aliases, blacklist);
}
+/* Let's exclude a few file extensions */
+static int valid_file_name(const char *filename)
+{
-+ static regex_t *re = NULL;
++ static regex_t *re = NULL;
+
-+ if (!re) {
-+ re = NOFAIL(malloc(sizeof(regex_t)));
-+ if (regcomp(re, "(^(\\.|\\.\\.)|\\.(new|orig|bak)$)",
-+ REG_EXTENDED|REG_NOSUB) != 0)
-+ fatal("regcomp failed: %s\n", strerror(errno));
-+ }
-+ return regexec(re, filename, 0, NULL, 0);
++ if (!re) {
++ re = NOFAIL(malloc(sizeof(regex_t)));
++ if (regcomp(re, "(^(\\.|\\.\\.)|\\.(new|orig|bak)$)",
++ REG_EXTENDED|REG_NOSUB) != 0)
++ fatal("regcomp failed: %s\n", strerror(errno));
++ }
++ return regexec(re, filename, 0, NULL, 0);
+}
+
- /* Simple format, ignore lines starting with #, one command per line.
- Returns true or false. */
- static int read_config(const char *filename,
-@@ -1294,7 +1309,10 @@
- if (dir) {
- struct dirent *i;
+ static int parse_config_scan(const char *filename,
+ const char *name,
+ int dump_only,
+@@ -887,6 +902,8 @@
while ((i = readdir(dir)) != NULL) {
-+ /* Removed this line:
- if (!streq(i->d_name,".") && !streq(i->d_name,"..")
-+ and replaced with this one: */
-+ if (valid_file_name(i->d_name)
- && config_filter(i->d_name)) {
- char sub[strlen(filename) + 1
- + strlen(i->d_name) + 1];
+ size_t len;
+
++ if (!valid_file_name(i->d_name))
++ continue;
+ if (i->d_name[0] == '.')
+ continue;
+ if (!config_filter(i->d_name))
diff --git a/source/a/module-init-tools/modprobe.no_sys_check.diff b/source/a/module-init-tools/modprobe.no_sys_check.diff
deleted file mode 100644
index 90e9a7d19..000000000
--- a/source/a/module-init-tools/modprobe.no_sys_check.diff
+++ /dev/null
@@ -1,51 +0,0 @@
-http://bugs.gentoo.org/258442
-
-From 1a55ee5297b883ea4b43cdf74ad890873ebe966c Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Fri, 13 Feb 2009 02:21:10 -0500
-Subject: [PATCH] modprobe: remove pointless /sys requirement
-
-When modprobe was converted from parsing /proc to parsing /sys, it was not
-a straight conversion. Instead, a "sanity" check was added early on where
-modprobe would simply abort doing anything useful if /sys isn't mounted.
-Unfortunately, this makes modprobe fairly unusable. Considering the
-kernel itself can invoke modprobe before userspace gets a chance to start
-the init process (and actually mount /sys), we end up with a chicken and
-egg issue. Which gets even worse when the kernel keeps running modprobe
-over and over and the boot output fills up with:
-modprobe: FATAL: /sys is not mounted.
-modprobe: FATAL: /sys is not mounted.
-modprobe: FATAL: /sys is not mounted.
-modprobe: FATAL: /sys is not mounted.
-modprobe: FATAL: /sys is not mounted.
-modprobe: FATAL: /sys is not mounted.
-
-Since modprobe itself is already written to handle the case where it
-cannot figure out whether a given module is loaded (and so was able to run
-perfectly fine without /proc being mounted), the check is wholly useless.
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- modprobe.c | 5 -----
- 1 files changed, 0 insertions(+), 5 deletions(-)
-
-diff --git a/modprobe.c b/modprobe.c
-index 022004c..110204b 100644
---- a/modprobe.c
-+++ b/modprobe.c
-@@ -1522,11 +1522,6 @@ static void handle_module(const char *modname,
- const char *cmdline_opts,
- int flags)
- {
-- struct stat finfo;
--
-- if (stat("/sys/module", &finfo) < 0)
-- fatal("/sys is not mounted.\n");
--
- if (list_empty(todo_list)) {
- const char *command;
-
---
-1.6.1.3
-
-
diff --git a/source/a/module-init-tools/modprobe.quit.whining.about.modprobe.conf.diff b/source/a/module-init-tools/modprobe.quit.whining.about.modprobe.conf.diff
new file mode 100644
index 000000000..640ab3086
--- /dev/null
+++ b/source/a/module-init-tools/modprobe.quit.whining.about.modprobe.conf.diff
@@ -0,0 +1,15 @@
+--- ./modprobe.c.orig 2010-02-06 13:56:19.000000000 -0600
++++ ./modprobe.c 2010-02-06 14:00:49.000000000 -0600
+@@ -971,10 +971,8 @@
+ }
+
+ /* deprecated config file */
+- if (parse_config_file("/etc/modprobe.conf", name, dump_only, removing,
+- options, commands, aliases, blacklist) > 0)
+- warn("Deprecated config file /etc/modprobe.conf, "
+- "all config files belong into /etc/modprobe.d/.\n");
++ parse_config_file("/etc/modprobe.conf", name, dump_only, removing,
++ options, commands, aliases, blacklist);
+
+ /* default config */
+ parse_config_scan("/etc/modprobe.d", name, dump_only, removing,
diff --git a/source/a/module-init-tools/module-init-tools.SlackBuild b/source/a/module-init-tools/module-init-tools.SlackBuild
index d69b43bc2..9b390d11a 100755
--- a/source/a/module-init-tools/module-init-tools.SlackBuild
+++ b/source/a/module-init-tools/module-init-tools.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=3.6
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo module-init-tools-*.tar.?z* | cut -d - -f 4 | rev | cut -f 3- -d . | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j7}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-module-init-tools
@@ -36,7 +45,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf module-init-tools-$VERSION
-tar xvf $CWD/module-init-tools-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/module-init-tools-$VERSION.tar.?z* || exit 1
cd module-init-tools-$VERSION || exit 1
chown -R root:root .
find . \
@@ -45,20 +54,14 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Look for /etc/modprobe.d/ first rather than bailing on the idea if
-# /etc/modprobe.conf exists. IMHO, this is a better default behavior
-# because it allows /etc/modprobe.conf to remain behind if something
-# still looks there, and allows a smoother transition towards using
-# /etc/modprobe.d/ instead.
-zcat $CWD/modprobe.favor.etc.modprobe.d.diff.gz | patch -p1 --verbose || exit 1
-
# Exclude *.{old,new,bak} files (and a few others that obviously aren't
# valid for this... Thanks to Marco d'Itri for the patch that it's based on
-zcat $CWD/modprobe.ignore_some_suffixes.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/modprobe.ignore_some_suffixes.diff.gz | patch -p1 || exit 1
-# We get (pointless) errors in early stages of the boot if modprobe checks for
-# a mounted /sys before it actually gets mounted:
-zcat $CWD/modprobe.no_sys_check.diff.gz | patch -p1 --verbose || exit 1
+# Using modprobe.conf still works, so don't whine about it,
+# especially since there's nothing in /etc/modprobe.conf
+# except for comments explaining not to use it.
+zcat $CWD/modprobe.quit.whining.about.modprobe.conf.diff.gz | patch -p1 || exit 1
# Using --bindir=/sbin to make lsmod go there too
CFLAGS= \
@@ -73,49 +76,37 @@ CFLAGS= \
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-# We don't need this
-rm -f $PKG/sbin/generate-modprobe.conf
+# Create the config directory just in case
+mkdir -p $PKG/etc/modprobe.d/
-# Links lsmod into /bin
+# Link lsmod into /bin
mkdir -p $PKG/bin
( cd $PKG/bin ; ln -sf /sbin/lsmod . )
-# Add manpage symlink for modprobe.d
-( cd $PKG/usr/man/man5
- if [ -f modprobe.conf.5 -a ! -e modprobe.d.5 ]; then
- ln -sf modprobe.conf.5 modprobe.d.5
- fi
-)
-
# Compress manpages
( cd $PKG/usr/man
find . -type f -exec gzip -9 {} \;
for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
)
-mkdir -p $PKG/etc/modprobe.d/
-cat << EOF > $PKG/etc/modprobe.conf.new
-# /etc/modprobe.conf (old location for Linux 2.6+ config)
-#
-# The use of this config file is deprecated.
-# Instead, create files in the /etc/modprobe.d/ directory
-# containing modprobe options.
-#
-# For more information, see "man modprobe.conf".
-EOF
-
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
mkdir -p $PKG/usr/doc/module-init-tools-$VERSION
-# Most of these are out of date
cp -a \
- AUTHORS CODING COPYING FAQ HACKING INSTALL NEWS README TODO \
+ AUTHORS CODING COPYING FAQ README TODO \
$PKG/usr/doc/module-init-tools-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
-zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $TMP/module-init-tools-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/module-init-tools/slack-desc b/source/a/module-init-tools/slack-desc
index 2f0ca3316..99d071b0e 100644
--- a/source/a/module-init-tools/slack-desc
+++ b/source/a/module-init-tools/slack-desc
@@ -5,7 +5,7 @@
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
- |-----handy-ruler------------------------------------------------------|
+ |-----handy-ruler-------------------------------------------------------|
module-init-tools: module-init-tools (kernel module utilities)
module-init-tools:
module-init-tools: Utilities to load and unload kernel modules. These are used on Linux
diff --git a/source/a/ntfs-3g/10-ntfs-3g-policy.fdi b/source/a/ntfs-3g/10-ntfs-3g-policy.fdi
index baaf81591..8b837d101 100644
--- a/source/a/ntfs-3g/10-ntfs-3g-policy.fdi
+++ b/source/a/ntfs-3g/10-ntfs-3g-policy.fdi
@@ -1,13 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!-- Theoretically, this file should ship with ntfs-3g -->
+
<deviceinfo version="0.2">
<device>
- <match key="volume.fstype" string="ntfs">
- <match key="@block.storage_device:storage.hotpluggable" bool="true">
- <merge key="volume.fstype" type="string">ntfs-3g</merge>
- <merge key="volume.policy.mount_filesystem" type="string">ntfs-3g</merge>
- <append key="volume.mount.valid_options" type="strlist">locale=</append>
+ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
+ <match key="volume.fstype" string="ntfs">
+
+ <!-- "Register" ntfs-3g as a valid alternative handler -->
+ <append key="volume.fstype.alternative" type="strlist">ntfs-3g</append>
+
+ <!-- "Register" ntfs-3g as the preferred alternative handler -->
+ <merge key="volume.fstype.alternative.preferred" type="string">ntfs-3g</merge>
+
+ <!-- Set valid mount options -->
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">ro</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">sync</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">dirsync</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">noatime</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">nodiratime</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">noexec</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">quiet</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">remount</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">exec</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">locale=</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">uid=</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">gid=</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">umask=</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">dmask=</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">fmask=</append>
+ <append key="volume.mount.ntfs-3g.valid_options" type="strlist">utf8</append>
+
</match>
</match>
</device>
</deviceinfo>
+
diff --git a/source/a/ntfs-3g/ntfs-3g.SlackBuild b/source/a/ntfs-3g/ntfs-3g.SlackBuild
index 2883d4fbf..93612e0c3 100755
--- a/source/a/ntfs-3g/ntfs-3g.SlackBuild
+++ b/source/a/ntfs-3g/ntfs-3g.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for ntfs-3g
-# Copyright (c) 2008, Antonio Hernandez Blas <hba.nihilismus@gmail.com>
+# Copyright 2008 Antonio Hernandez Blas <hba.nihilismus@gmail.com>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -25,13 +25,22 @@
# Modified by Patrick Volkerding <volkerdi@slackware.com>
# Modified by Eric Hameleers <alien@slackware.com>
-PRGNAM=ntfs-3g
-VERSION=${VERSION:-2009.4.4}
-ARCH=${ARCH:-x86_64}
+PKGNAM=ntfs-3g
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -41,18 +50,21 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP || exit 1
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -68,7 +80,7 @@ CXXFLAGS="$SLKCFLAGS" \
--mandir=/usr/man \
--bindir=/bin \
--sbindir=/sbin \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
--with-fuse=internal \
--disable-ldconfig \
--enable-static=no \
@@ -78,7 +90,8 @@ CXXFLAGS="$SLKCFLAGS" \
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-# Add the HAL fdi file so that automount uses "ntfs-3g" as filesystem type
+# Add the HAL fdi file so that automount uses ntfs-3g for mounting
+# This should work with the "volume.fstype.alternative.*" in hal-0.5.12+
mkdir -p $PKG/usr/share/hal/fdi/policy/10osvendor
cat $CWD/10-ntfs-3g-policy.fdi \
> $PKG/usr/share/hal/fdi/policy/10osvendor/10-ntfs-3g-policy.fdi
@@ -92,14 +105,22 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
)
rm -rf $PKG/usr/share/doc
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING* CREDITS INSTALL NEWS README* \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/pciutils/pciutils.SlackBuild b/source/a/pciutils/pciutils.SlackBuild
index 183c7adde..b3425b6a9 100755
--- a/source/a/pciutils/pciutils.SlackBuild
+++ b/source/a/pciutils/pciutils.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-3.1.3}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo pciutils-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-pciutils
@@ -46,7 +55,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf pciutils-$VERSION
-tar xvf $CWD/pciutils-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/pciutils-$VERSION.tar.?z* || exit 1
cd pciutils-$VERSION
chown -R root:root .
@@ -64,7 +73,7 @@ sh update-pciids.sh
zcat $CWD/pciutils.ids.dest.diff.gz | patch -p1 --verbose || exit 1
mkdir -p $PKG/usr/sbin
cat update-pciids.sh > $PKG/usr/sbin/update-pciids
-chmod 755 $PKG/usr/sbin/update-pciids
+chmod 0755 $PKG/usr/sbin/update-pciids
make \
PREFIX=/usr \
@@ -81,7 +90,7 @@ make install install-lib \
MANDIR=/usr/man \
DESTDIR=$PKG
-# Do not compress pci.ids - hal-0.5.11 needs it uncompressed
+# Do not compress pci.ids - hal needs it uncompressed
( cd $PKG/usr/share ; gzip -d pci.ids.gz )
# Remove the update-pciids script that 'make install' placed
rm -f $PKG/sbin/update-pciids
diff --git a/source/a/pkgtools/pkgtools.SlackBuild b/source/a/pkgtools/pkgtools.SlackBuild
index da70e19f0..46235e16e 100755
--- a/source/a/pkgtools/pkgtools.SlackBuild
+++ b/source/a/pkgtools/pkgtools.SlackBuild
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2005, 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005, 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -27,9 +27,9 @@ fi
PKG=$TMP/package-pkgtools
# *** UPDATE THESE WITH EACH BUILD:
-VERSION=13.0
+VERSION=13.1
ARCH=${ARCH:-noarch}
-BUILD=3
+BUILD=1
if [ ! -d $TMP ]; then
mkdir -p $TMP # location to build the source
diff --git a/source/a/pkgtools/scripts/explodepkg b/source/a/pkgtools/scripts/explodepkg
index a113b085d..110ebf069 100644
--- a/source/a/pkgtools/scripts/explodepkg
+++ b/source/a/pkgtools/scripts/explodepkg
@@ -46,7 +46,7 @@ Explodes a Slackware compatible software package
(or any tar+{gzip,bzip2,lzma,xz archive) in the current directory.
Equivalent to (for each package listed):
- ( umask 000 ; cat package_name | COMPRESSOR -dc | tar xzvf package_name )
+ ( umask 000 ; cat package_name | COMPRESSOR -dc | tar xvf package_name )
Note: This should only be used for debugging or examining packages, not for
installing them. It doesn't execute installation scripts or update the package
diff --git a/source/a/pkgtools/scripts/pkgtool b/source/a/pkgtools/scripts/pkgtool
index 6191e36e7..c0a2a9730 100644
--- a/source/a/pkgtools/scripts/pkgtool
+++ b/source/a/pkgtools/scripts/pkgtool
@@ -4,7 +4,7 @@
# 1998, 1999 Patrick Volkerding, Moorhead, MN USA
# Copyright 2001, 2004 Slackware Linux, Inc., Concord, CA USA
# All rights reserved.
-# Copyright 2007, 2009 Patrick Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2009, 2010 Patrick Volkerding, Sebeka, MN, USA
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
@@ -81,11 +81,11 @@ if [ -L /bin/chmod -a -L /bin/chown ]; then # probably on the bootdisk using bus
echo "You can't run pkgtool from the rootdisk until you've mounted your Linux"
echo "partitions beneath /mnt. Here are some examples of this:"
echo
- echo "If your root partition is /dev/hda1, and is using ext2fs, you would type:"
- echo "mount /dev/hda1 /mnt -t ext2"
+ echo "If your root partition is /dev/sda1, and is using ext2fs, you would type:"
+ echo "mount /dev/sda1 /mnt -t ext2"
echo
- echo "Then, supposing your /usr partition is /dev/hda2, you must do this:"
- echo "mount /dev/hda2 /mnt/usr -t ext2"
+ echo "Then, supposing your /usr partition is /dev/sda2, you must do this:"
+ echo "mount /dev/sda2 /mnt/usr -t ext2"
echo
echo "Please mount your Linux partitions and then run pkgtool again."
echo
@@ -210,7 +210,7 @@ else # there were no arguments, so we'll get the needed information from the
CMD_START="true"
rm -f $TMP/SeT*
while [ 0 ]; do
- dialog --title "Slackware Package Tool (pkgtool version 13.0)" \
+ dialog --title "Slackware Package Tool (pkgtool version 13.1)" \
--menu "\nWelcome to the Slackware package tool.\n\
\nWhich option would you like?\n" 17 75 7 \
"Current" "Install packages from the current directory" \
diff --git a/source/a/pkgtools/scripts/upgradepkg b/source/a/pkgtools/scripts/upgradepkg
index cc3250dae..6b0c2abb4 100644
--- a/source/a/pkgtools/scripts/upgradepkg
+++ b/source/a/pkgtools/scripts/upgradepkg
@@ -245,7 +245,7 @@ if [ ! -r $ROOT/var/log/packages/$OLD ]; then
+==============================================================================
EOF
- installpkg $INCOMINGDIR/$NNAME
+ /sbin/installpkg $INCOMINGDIR/$NNAME
fi
fi
shift 1
@@ -323,11 +323,11 @@ EOF
# Next, the new package is pre-installed:
if [ "$VERBOSE" = "verbose" ]; then
- installpkg $INCOMINGDIR/$NNAME
+ /sbin/installpkg $INCOMINGDIR/$NNAME
RETCODE=$?
else
echo "Pre-installing package $NEW..."
- installpkg $INCOMINGDIR/$NNAME 1> /dev/null
+ /sbin/installpkg $INCOMINGDIR/$NNAME 1> /dev/null
RETCODE=$?
fi
# Make sure that worked:
@@ -347,9 +347,9 @@ if [ -d "$ROOT" ]; then
( cd $ROOT/var/log/packages
for rempkg in *-$TIMESTAMP ; do
if [ "$VERBOSE" = "verbose" ]; then
- ROOT=$ROOT removepkg $rempkg
+ ROOT=$ROOT /sbin/removepkg $rempkg
else
- ROOT=$ROOT removepkg $rempkg | grep -v "Skipping\." | grep -v "Removing files:"
+ ROOT=$ROOT /sbin/removepkg $rempkg | grep -v "Skipping\." | grep -v "Removing files:"
fi
done
)
@@ -357,9 +357,9 @@ else
( cd /var/log/packages
for rempkg in *-$TIMESTAMP ; do
if [ "$VERBOSE" = "verbose" ]; then
- removepkg $rempkg
+ /sbin/removepkg $rempkg
else
- removepkg $rempkg | grep -v "Skipping\." | grep -v "Removing files:"
+ /sbin/removepkg $rempkg | grep -v "Skipping\." | grep -v "Removing files:"
fi
done
)
@@ -370,7 +370,7 @@ echo
# Seriously, the reinstalling of a package can be crucial if any files
# shift location, so we should always reinstall as the final step:
if [ ! "$NOT_PARANOID" = "true" ]; then
- installpkg $INCOMINGDIR/$NNAME
+ /sbin/installpkg $INCOMINGDIR/$NNAME
fi
echo "Package $OLD upgraded with new package $INCOMINGDIR/$NNAME."
diff --git a/source/a/rpm2tgz/patches/0001-fix-d-handling.patch b/source/a/rpm2tgz/patches/0001-fix-d-handling.patch
new file mode 100644
index 000000000..ca15a98fd
--- /dev/null
+++ b/source/a/rpm2tgz/patches/0001-fix-d-handling.patch
@@ -0,0 +1,26 @@
+From 976ac157b878ecc260d54e3b5a1f3cd4403259df Mon Sep 17 00:00:00 2001
+From: Igor Murzov <igor@gplsoft.org>
+Date: Sun, 18 Apr 2010 21:13:02 +0400
+Subject: [PATCH 1/6] fix -d handling
+
+this option also requires get_meta_data() call
+to set $PRGNAM properly
+---
+ rpm2tgz | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/rpm2tgz b/rpm2tgz
+index 5c91c64..f5f206c 100755
+--- a/rpm2tgz
++++ b/rpm2tgz
+@@ -202,6 +202,7 @@ for i in $* ; do
+
+ # Save the rpm's summary and description as the slack-desc
+ if [ "$DESC" = "true" ]; then
++ get_meta_data $i
+ mkdir -p $TMPDIR/install
+ rpm -qp --qf %{SUMMARY} $i | sed -l 70 -r "s/^(.*)/$PRGNAM: $PRGNAM - \1\n/" > $TMPDIR/install/slack-desc
+ rpm -qp --qf %{DESCRIPTION} $i | sed -l 70 -r "s/^/$PRGNAM: /" >> $TMPDIR/install/slack-desc
+--
+1.7.0.2
+
diff --git a/source/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch b/source/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch
new file mode 100644
index 000000000..92a9cb259
--- /dev/null
+++ b/source/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch
@@ -0,0 +1,34 @@
+From e2a9bf836465dbb138ee83ccbe41b385e4648014 Mon Sep 17 00:00:00 2001
+From: Igor Murzov <igor@gplsoft.org>
+Date: Sun, 18 Apr 2010 22:02:45 +0400
+Subject: [PATCH 2/6] fix spurious path to rpm file with -n option
+
+there is no need to prepend $CWD to the path to file,
+as it produce wrong path in the case, when path to file
+is not relative to the current working directory
+---
+ rpm2tgz | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/rpm2tgz b/rpm2tgz
+index f5f206c..c41f456 100755
+--- a/rpm2tgz
++++ b/rpm2tgz
+@@ -213,11 +213,12 @@ for i in $* ; do
+ # makepkg to produce the .tgz:
+ if [ "$(basename $0)" = "rpm2tgz" ]; then
+ (
+- cd $TMPDIR
+ if [ "$META_NAME" = "true" ]; then
+- get_meta_data $CWD/$i
++ get_meta_data $i
++ cd $TMPDIR
+ makepkg -l y -c n $CWD/$PRGNAM-$VERSION-$ARCH-${BUILD}.tgz
+ else
++ cd $TMPDIR
+ makepkg -l y -c n $CWD/$(basename $i .rpm).tgz
+ fi
+ )
+--
+1.7.0.2
+
diff --git a/source/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch b/source/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch
new file mode 100644
index 000000000..07d20286a
--- /dev/null
+++ b/source/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch
@@ -0,0 +1,29 @@
+From c57c0a39b6745203ebec36f37318ea3b0b4820f9 Mon Sep 17 00:00:00 2001
+From: Igor Murzov <igor@gplsoft.org>
+Date: Sun, 18 Apr 2010 22:06:56 +0400
+Subject: [PATCH 3/6] allow every user to use rpm2tgz
+
+---
+ rpm2tgz | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/rpm2tgz b/rpm2tgz
+index c41f456..4818b74 100755
+--- a/rpm2tgz
++++ b/rpm2tgz
+@@ -216,10 +216,10 @@ for i in $* ; do
+ if [ "$META_NAME" = "true" ]; then
+ get_meta_data $i
+ cd $TMPDIR
+- makepkg -l y -c n $CWD/$PRGNAM-$VERSION-$ARCH-${BUILD}.tgz
++ /sbin/makepkg -l y -c n $CWD/$PRGNAM-$VERSION-$ARCH-${BUILD}.tgz
+ else
+ cd $TMPDIR
+- makepkg -l y -c n $CWD/$(basename $i .rpm).tgz
++ /sbin/makepkg -l y -c n $CWD/$(basename $i .rpm).tgz
+ fi
+ )
+ else
+--
+1.7.0.2
+
diff --git a/source/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch b/source/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch
new file mode 100644
index 000000000..836b36e5a
--- /dev/null
+++ b/source/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch
@@ -0,0 +1,29 @@
+From 531b6f6c429678f69f2c90280a1e706eed6dcfbc Mon Sep 17 00:00:00 2001
+From: Igor Murzov <igor@gplsoft.org>
+Date: Sun, 18 Apr 2010 22:56:56 +0400
+Subject: [PATCH 4/6] produce more compliant slack-desc
+
+slackware uses slightly different format for slack-desc files
+from that which is used by rpm2tgz;
+also remove all -l 70 options as it is only usable with l command
+---
+ rpm2tgz | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+diff --git a/rpm2tgz b/rpm2tgz
+index 4818b74..cc25407 100755
+--- a/rpm2tgz
++++ b/rpm2tgz
+@@ -204,8 +204,7 @@ for i in $* ; do
+ if [ "$DESC" = "true" ]; then
+ get_meta_data $i
+ mkdir -p $TMPDIR/install
+- rpm -qp --qf %{SUMMARY} $i | sed -l 70 -r "s/^(.*)/$PRGNAM: $PRGNAM - \1\n/" > $TMPDIR/install/slack-desc
+- rpm -qp --qf %{DESCRIPTION} $i | sed -l 70 -r "s/^/$PRGNAM: /" >> $TMPDIR/install/slack-desc
++ rpm -qp --qf '%{NAME} (%{SUMMARY})\n\n%{DESCRIPTION}\n\n %{URL}\n' $i | head -n 11 | sed -r "s/^/$PRGNAM: /" > $TMPDIR/install/slack-desc
+ fi
+
+ # If this program was called as "rpm2targz", then repack as a plain
+--
+1.7.0.2
+
diff --git a/source/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch b/source/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch
new file mode 100644
index 000000000..b4849c298
--- /dev/null
+++ b/source/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch
@@ -0,0 +1,47 @@
+From 49c80142bf0f0ead2bcff8b03a39aa98e38f2dd9 Mon Sep 17 00:00:00 2001
+From: Igor Murzov <igor@gplsoft.org>
+Date: Sun, 18 Apr 2010 23:11:55 +0400
+Subject: [PATCH 5/6] gzip man & info pages
+
+we don't want to repack package just to fix not gzipped man pages
+---
+ rpm2tgz | 23 +++++++++++++++++++++++
+ 1 files changed, 23 insertions(+), 0 deletions(-)
+
+diff --git a/rpm2tgz b/rpm2tgz
+index cc25407..32c450b 100755
+--- a/rpm2tgz
++++ b/rpm2tgz
+@@ -206,6 +206,29 @@ for i in $* ; do
+ mkdir -p $TMPDIR/install
+ rpm -qp --qf '%{NAME} (%{SUMMARY})\n\n%{DESCRIPTION}\n\n %{URL}\n' $i | head -n 11 | sed -r "s/^/$PRGNAM: /" > $TMPDIR/install/slack-desc
+ fi
++
++ # Compress and link manpages, if any:
++ if [ -d $TMPDIR/usr/man ]; then
++ ( cd $TMPDIR/usr/man
++ for manpagedir in $(find . -type d -name "man*") ; do
++ ( cd $manpagedir
++ for eachpage in $(find . -type l -maxdepth 1) ; do
++ ln -s $( readlink $eachpage ).gz $eachpage.gz
++ rm $eachpage
++ done
++ gzip -9 *.?
++ )
++ done
++ )
++ fi
++
++ # Compress info files, if any:
++ if [ -d $TMPDIR/usr/info ]; then
++ ( cd $TMPDIR/usr/info
++ rm -f dir
++ gzip -9 *
++ )
++ fi
+
+ # If this program was called as "rpm2targz", then repack as a plain
+ # tar+gz archive. If it was called as "rpm2tgz", use Slackware's
+--
+1.7.0.2
+
diff --git a/source/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch b/source/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch
new file mode 100644
index 000000000..5d86972f0
--- /dev/null
+++ b/source/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch
@@ -0,0 +1,45 @@
+From 60b1b269e13d6ac5f167c898f92d1c33a4caf779 Mon Sep 17 00:00:00 2001
+From: Igor Murzov <igor@gplsoft.org>
+Date: Sun, 18 Apr 2010 23:19:05 +0400
+Subject: [PATCH 6/6] should we use .txz format in slackware-current?
+
+yes, everyone loves xz
+---
+ rpm2tgz | 10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/rpm2tgz b/rpm2tgz
+index 32c450b..4dd3756 100755
+--- a/rpm2tgz
++++ b/rpm2tgz
+@@ -231,22 +231,22 @@ for i in $* ; do
+ fi
+
+ # If this program was called as "rpm2targz", then repack as a plain
+- # tar+gz archive. If it was called as "rpm2tgz", use Slackware's
+- # makepkg to produce the .tgz:
++ # tar+xz archive. If it was called as "rpm2tgz", use Slackware's
++ # makepkg to produce the .txz:
+ if [ "$(basename $0)" = "rpm2tgz" ]; then
+ (
+ if [ "$META_NAME" = "true" ]; then
+ get_meta_data $i
+ cd $TMPDIR
+- /sbin/makepkg -l y -c n $CWD/$PRGNAM-$VERSION-$ARCH-${BUILD}.tgz
++ /sbin/makepkg -l y -c n $CWD/$PRGNAM-$VERSION-$ARCH-${BUILD}.txz
+ else
+ cd $TMPDIR
+- /sbin/makepkg -l y -c n $CWD/$(basename $i .rpm).tgz
++ /sbin/makepkg -l y -c n $CWD/$(basename $i .rpm).txz
+ fi
+ )
+ else
+ ( cd $TMPDIR ; tar cf - . ) > $(basename $i .rpm).tar
+- gzip -9 $(basename $i .rpm).tar
++ xz -9 $(basename $i .rpm).tar
+ fi
+
+ # Remove temporary directory:
+--
+1.7.0.2
+
diff --git a/source/a/rpm2tgz/rpm2targz b/source/a/rpm2tgz/rpm2targz
index 484e5ad05..5c91c64a4 100644
--- a/source/a/rpm2tgz/rpm2targz
+++ b/source/a/rpm2tgz/rpm2targz
@@ -22,22 +22,35 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-if [ "$1" = "" ]; then
+CWD=$(pwd)
+
+# Breaking the help out into it's own deal
+usage() {
echo "$0: Converts RPM format to standard GNU tar + GNU zip format."
echo " (view converted packages with \"less\", install and remove"
echo " with \"installpkg\", \"removepkg\", \"pkgtool\", or manually"
echo " with \"tar\")"
echo
- echo "Usage: $0 <file.rpm>"
if [ "$(basename $0)" = "rpm2tgz" ]; then
+ echo "Usage: $0 [OPTION] <file.rpm>"
echo " (Outputs \"file.tgz\")"
+ echo
+ echo " -s extract the install scripts to /usr/doc/\$PRGNAM-\$VERSION/"
+ echo " for review."
+ echo " -S extracts the install scripts to be executed on package installation"
+ echo " (only pre-install and post-install scripts used)"
+ echo " USE WITH CAUTION! "
+ echo " -n name the output package using the rpm's metadata"
+ echo " -r extract what the rpm's \"requires\" (dependencies)"
+ echo " as documention to /usr/doc/\$PRGNAM-\$VERSION/"
+ echo " -d attempt a wellformed slack-desc from the rpm meta data"
+ echo
else
+ echo "Usage: $0 <file.rpm>"
echo " (Outputs \"file.tar.gz\")"
fi
exit 1;
-fi
-
-CWD=$(pwd)
+}
# Create a new temporary directory with a secure filename:
make_temp_dir() {
@@ -67,6 +80,51 @@ make_temp_dir() {
fi
}
+# Get the meta data off of the rpm
+get_meta_data() {
+ RPM=$1
+ PRGNAM=$(rpm -qp --qf %{NAME} $RPM )
+ ARCH=$(rpm -qp --qf %{ARCH} $RPM )
+ VERSION=$(rpm -qp --qf %{VERSION} $RPM )
+ BUILD=$(rpm -qp --qf %{RELEASE} $RPM )
+}
+
+if [ "$1" = "" ]; then
+ usage
+fi
+
+ARGS=$(getopt "hsSndr" $* )
+set -- ${ARGS}
+for i; do
+ case "$1" in
+ -s)
+ DOC_SCRIPTS="true"
+ shift
+ ;;
+ -S)
+ INSTALL_SCRIPTS="true"
+ shift
+ ;;
+ -r)
+ DOC_REQUIRES="true"
+ shift
+ ;;
+ -d)
+ DESC="true"
+ shift
+ ;;
+ -n)
+ META_NAME="true"
+ shift
+ ;;
+ --)
+ shift
+ break
+ ;;
+ esac
+done
+
+
for i in $* ; do
# Determine if this is a source or binary RPM.
@@ -78,7 +136,7 @@ for i in $* ; do
isSource=0
fi
else # use file. This works fine on Slackware, and is the default.
- if file $i | grep RPM | grep " src " 1> /dev/null 2> /dev/null ; then
+ if file $i | grep RPM | grep -w src 1> /dev/null 2> /dev/null ; then
isSource=1
else
isSource=0
@@ -112,11 +170,56 @@ for i in $* ; do
find . -type d -perm 700 -exec chmod 755 {} \;
)
+ # Save the scripts in the rpm as documentation
+ if [ "$DOC_SCRIPTS" = "true" ]; then
+ get_meta_data $i
+ mkdir -p $TMPDIR/usr/doc/$PRGNAM-$VERSION/
+ for state in PREIN POSTIN PREUN POSTUN ; do
+ if [ "$(rpm -qp --qf %{$state} $i )" != '(none)' ] ; then
+ rpm -qp --qf %{$state} $i > $TMPDIR/usr/doc/$PRGNAM-$VERSION/$state.script
+ fi
+ done
+ fi
+
+ # Save the scripts in the rpm to be installed
+ if [ "$INSTALL_SCRIPTS" = "true" ]; then
+ mkdir -p $TMPDIR/install
+ echo '#!/bin/sh' > $TMPDIR/install/doinst.sh
+ for state in PREIN POSTIN ; do
+ if [ "$(rpm -qp --qf %{$state} $i )" != '(none)' ] ; then
+ rpm -qp --qf %{$state} $i > $TMPDIR/install/doinst.sh
+ echo "" >> $TMPDIR/install/doinst.sh
+ fi
+ done
+ fi
+
+ # Save the rpm's requires (dependencies) as documentation
+ if [ "$DOC_REQUIRES" = "true" ]; then
+ get_meta_data $i
+ mkdir -p $TMPDIR/usr/doc/$PRGNAM-$VERSION/
+ rpm -qp --qf %{REQUIRES} $i > $TMPDIR/usr/doc/$PRGNAM-$VERSION/README-$PRGNAM-rpm-dependencies.txt
+ fi
+
+ # Save the rpm's summary and description as the slack-desc
+ if [ "$DESC" = "true" ]; then
+ mkdir -p $TMPDIR/install
+ rpm -qp --qf %{SUMMARY} $i | sed -l 70 -r "s/^(.*)/$PRGNAM: $PRGNAM - \1\n/" > $TMPDIR/install/slack-desc
+ rpm -qp --qf %{DESCRIPTION} $i | sed -l 70 -r "s/^/$PRGNAM: /" >> $TMPDIR/install/slack-desc
+ fi
+
# If this program was called as "rpm2targz", then repack as a plain
# tar+gz archive. If it was called as "rpm2tgz", use Slackware's
# makepkg to produce the .tgz:
if [ "$(basename $0)" = "rpm2tgz" ]; then
- ( cd $TMPDIR ; makepkg -l y -c n $CWD/$(basename $i .rpm).tgz )
+ (
+ cd $TMPDIR
+ if [ "$META_NAME" = "true" ]; then
+ get_meta_data $CWD/$i
+ makepkg -l y -c n $CWD/$PRGNAM-$VERSION-$ARCH-${BUILD}.tgz
+ else
+ makepkg -l y -c n $CWD/$(basename $i .rpm).tgz
+ fi
+ )
else
( cd $TMPDIR ; tar cf - . ) > $(basename $i .rpm).tar
gzip -9 $(basename $i .rpm).tar
diff --git a/source/a/rpm2tgz/rpm2tgz.SlackBuild b/source/a/rpm2tgz/rpm2tgz.SlackBuild
index abfe3298a..c6d766093 100755
--- a/source/a/rpm2tgz/rpm2tgz.SlackBuild
+++ b/source/a/rpm2tgz/rpm2tgz.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,13 +20,22 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.1
-ARCH=${ARCH:-x86_64}
+VERSION=1.2.1
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-bin
+PKG=$TMP/package-rpm2tgz
rm -rf $PKG
mkdir -p $TMP $PKG
@@ -38,8 +47,26 @@ cd $TMP
mkdir -p $PKG/usr/bin
cc -o $PKG/usr/bin/rpmoffset $CWD/rpmoffset.c
cat $CWD/rpm2targz > $PKG/usr/bin/rpm2targz
-chmod 755 $PKG/usr/bin/{rpmoffset,rpm2targz}
+
+# Apply some patches:
+( cd $PKG/usr/bin
+ # These are all against "rpm2tgz", so mv it until we are done patching:
+ mv rpm2targz rpm2tgz
+ zcat $CWD/patches/0001-fix-d-handling.patch.gz | patch -p1 || exit 1
+ zcat $CWD/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gz | patch -p1 || exit 1
+ zcat $CWD/patches/0003-allow-every-user-to-use-rpm2tgz.patch.gz | patch -p1 || exit 1
+ zcat $CWD/patches/0004-produce-more-compliant-slack-desc.patch.gz | patch -p1 || exit 1
+ # Not applied. Rationale: We do not want to alter the files in the RPM.
+ #zcat $CWD/patches/0005-gzip-man-info-pages.patch.gz | patch -p1 || exit 1
+ # Not applied. Rationale: .tgz works with all versions of Slackware.
+ # Translated RPMs may be targeting systems with no .txz support.
+ #zcat $CWD/patches/0006-should-we-use-.txz-format-in-slackware-current.patch.gz | patch -p1 || exit 1
+ # mv the script back:
+ mv rpm2tgz rpm2targz
+) || exit 1
+
( cd $PKG/usr/bin ; ln -sf rpm2targz rpm2tgz )
+chmod 755 $PKG/usr/bin/{rpmoffset,rpm2targz}
mkdir -p $PKG/usr/doc/rpm2targz
cp -a $CWD/rpm2targz.README $PKG/usr/doc/rpm2targz/rpm2targz.README
chown root:root $PKG/usr/doc/rpm2targz/rpm2targz.README
diff --git a/source/a/rpm2tgz/rpmoffset.c b/source/a/rpm2tgz/rpmoffset.c
index 57af397c6..fd09e623b 100644
--- a/source/a/rpm2tgz/rpmoffset.c
+++ b/source/a/rpm2tgz/rpmoffset.c
@@ -5,6 +5,7 @@
/* Wouldn't it be a lot more sane if we could just untar these things? */
#include <stdlib.h>
+#include <stdio.h>
/* These offsets keep getting bigger, so we're going to just bite a 2MB */
/* chunk of RAM right away so that we have enough. Yeah, horrible */
diff --git a/source/a/sdparm/sdparm.SlackBuild b/source/a/sdparm/sdparm.SlackBuild
index e00a93568..c0d155ef3 100755
--- a/source/a/sdparm/sdparm.SlackBuild
+++ b/source/a/sdparm/sdparm.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,16 +22,24 @@
PKGNAM=sdparm
-VERSION=${VERSION:-1.01}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
-
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-"-j6"}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -39,11 +47,15 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2"
+else
+ SLKCFLAGS="-O2"
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
@@ -68,13 +80,15 @@ CFLAGS="$SLKCFLAGS" \
--build=$ARCH-slackware-linux
# Build and install:
-make -j4 || exit 1
+make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
# Strip binaries:
( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
)
# Compress and link manpages, if any:
@@ -96,12 +110,19 @@ fi
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
AUTHORS COPYING CREDITS INSTALL NEWS README notes.txt \
- doc/sdparm.html \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/sed/sed.SlackBuild b/source/a/sed/sed.SlackBuild
index 8dedfc4b4..7684a10dc 100755
--- a/source/a/sed/sed.SlackBuild
+++ b/source/a/sed/sed.SlackBuild
@@ -21,22 +21,35 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=4.1.5
-ARCH=${ARCH:-x86_64}
+VERSION=4.2.1
BUILD=${BUILD:-1}
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-sed
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
fi
rm -rf $PKG
@@ -44,34 +57,61 @@ mkdir -p $PKG $PKG
cd $TMP
rm -rf sed-$VERSION
-tar xzvf $CWD/sed-$VERSION.tar.gz
+tar xvf $CWD/sed-$VERSION.tar.?z* || exit 1
cd sed-$VERSION
chown -R root:root .
find . -perm 777 -exec chmod 755 {} \;
find . -perm 664 -exec chmod 644 {} \;
+
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
- $ARCH-slackware-linux
-make -j5
-make install DESTDIR=$PKG
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/sed-$VERSION \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
mkdir -p $PKG/bin
mv $PKG/usr/bin/sed $PKG/bin
( cd $PKG/usr/bin ; ln -sf /bin/sed . )
+
( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
)
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+
mkdir -p $PKG/usr/doc/sed-$VERSION
cp -a \
- ANNOUNCE AUTHORS BUGS COPYING* INSTALL NEWS README README.boot THANKS TODO \
+ AUTHORS BUGS COPYING* INSTALL NEWS README* THANKS \
$PKG/usr/doc/sed-$VERSION
-gzip -9 $PKG/usr/man/man?/*.?
-rm -f $PKG/usr/info/dir
-gzip -9 $PKG/usr/info/*
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-makepkg -l y -c n $TMP/sed-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/sed-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/shadow/adduser b/source/a/shadow/adduser
index 02385e33c..038a0a949 100644
--- a/source/a/shadow/adduser
+++ b/source/a/shadow/adduser
@@ -1,8 +1,8 @@
#!/bin/bash
#
# Copyright 1995 Hrvoje Dogan, Croatia.
-# Copyright 2002, 2003, 2004, 2008, 2009 Stuart Winter, Surrey, England, UK.
-# Copyright 2004, 2008, 2009 Slackware Linux, Inc., Concord, CA, USA
+# Copyright 2002-2004, 2008, 2009, 2010 Stuart Winter, Surrey, England, UK.
+# Copyright 2004, 2008-2010 Slackware Linux, Inc., Concord, CA, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -29,12 +29,15 @@
# Author : Stuart Winter <mozes@slackware.com>
# Based on the original Slackware adduser by Hrvoje Dogan
# with modifications by Patrick Volkerding
-# Version: 1.12
+# Version: 1.13
##########################################################################
# Usage..: adduser [<new_user_name>]
##########################################################################
# History #
###########
+# v1.13 - 13/01/10
+# * Fix bug that removed underscore characters from group names.
+# Thanks to mRgOBLIN for the report and Jim Hawkins for the fix. <sw>
# v1.12 - 21/07/09
# * Adjusted the search of /etc/passwd to exclude the NIS inclusion
# string. Thanks to Dominik L. Borkowski.
@@ -282,8 +285,8 @@ while [ ! -z "$needinput" ]; do
history -c
history -s "$AGID"
echo "Press ENTER to continue without adding any additional groups"
- echo "Or press the UP arrow to add/select/edit additional groups"
- AGID="$(get_input ": " | tr -d '[:punct:]' | tr -s ' ' | sed 's?^ $??g' )"
+ echo "Or press the UP arrow key to add/select/edit additional groups"
+ AGID="$(get_input ": " | sed 's/[^A-Za-z0-9 _]//g;s/ */ /g;s/^ $//g' )"
if [ ! -z "$AGID" ]; then
check_group "$AGID" # check all groups at once (treated as N # of params)
if [ $? -gt 0 ]; then
diff --git a/source/a/shadow/doinst.sh b/source/a/shadow/doinst.sh
new file mode 100644
index 000000000..88fefb3af
--- /dev/null
+++ b/source/a/shadow/doinst.sh
@@ -0,0 +1,17 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/login.access.new
+config etc/login.defs.new
+config var/log/faillog.new
+rm -f var/log/faillog.new
+
diff --git a/source/a/shadow/login.defs b/source/a/shadow/login.defs
new file mode 100644
index 000000000..dde37c97b
--- /dev/null
+++ b/source/a/shadow/login.defs
@@ -0,0 +1,387 @@
+#
+# /etc/login.defs - Configuration control definitions for the shadow package.
+#
+# $Id: login.defs 3038 2009-07-23 20:41:35Z nekral-guest $
+#
+
+#
+# Delay in seconds before being allowed another attempt after a login failure
+#
+FAIL_DELAY 3
+
+#
+# Enable logging and display of /var/log/faillog login failure info.
+#
+FAILLOG_ENAB yes
+
+#
+# Enable display of unknown usernames when login failures are recorded.
+#
+LOG_UNKFAIL_ENAB no
+
+#
+# Enable logging of successful logins
+#
+LOG_OK_LOGINS no
+
+#
+# Enable logging and display of /var/log/lastlog login time info.
+#
+LASTLOG_ENAB yes
+
+#
+# Enable checking and display of mailbox status upon login.
+#
+# Disable if the shell startup files already check for mail
+# ("mailx -e" or equivalent).
+#
+MAIL_CHECK_ENAB yes
+
+#
+# Enable additional checks upon password changes.
+#
+OBSCURE_CHECKS_ENAB yes
+
+#
+# Enable checking of time restrictions specified in /etc/porttime.
+#
+PORTTIME_CHECKS_ENAB yes
+
+#
+# Enable setting of ulimit, umask, and niceness from passwd gecos field.
+#
+QUOTAS_ENAB yes
+
+#
+# Enable "syslog" logging of su activity - in addition to sulog file logging.
+# SYSLOG_SG_ENAB does the same for newgrp and sg.
+#
+SYSLOG_SU_ENAB yes
+SYSLOG_SG_ENAB yes
+
+#
+# If defined, either full pathname of a file containing device names or
+# a ":" delimited list of device names. Root logins will be allowed only
+# upon these devices.
+#
+CONSOLE /etc/securetty
+#CONSOLE console:tty01:tty02:tty03:tty04
+
+#
+# If defined, all su activity is logged to this file.
+#
+#SULOG_FILE /var/log/sulog
+
+#
+# If defined, ":" delimited list of "message of the day" files to
+# be displayed upon login.
+#
+MOTD_FILE /etc/motd
+#MOTD_FILE /etc/motd:/usr/lib/news/news-motd
+
+#
+# If defined, this file will be output before each login prompt.
+#
+#ISSUE_FILE /etc/issue
+
+#
+# If defined, file which maps tty line to TERM environment parameter.
+# Each line of the file is in a format something like "vt100 tty01".
+#
+#TTYTYPE_FILE /etc/ttytype
+
+#
+# If defined, login failures will be logged here in a utmp format.
+# last, when invoked as lastb, will read /var/log/btmp, so...
+#
+FTMP_FILE /var/log/btmp
+
+#
+# If defined, name of file whose presence which will inhibit non-root
+# logins. The contents of this file should be a message indicating
+# why logins are inhibited.
+#
+NOLOGINS_FILE /etc/nologin
+
+#
+# If defined, the command name to display when running "su -". For
+# example, if this is defined as "su" then a "ps" will display the
+# command is "-su". If not defined, then "ps" would display the
+# name of the shell actually being run, e.g. something like "-sh".
+#
+SU_NAME su
+
+#
+# *REQUIRED*
+# Directory where mailboxes reside, _or_ name of file, relative to the
+# home directory. If you _do_ define both, MAIL_DIR takes precedence.
+#
+MAIL_DIR /var/spool/mail
+#MAIL_FILE .mail
+
+#
+# If defined, file which inhibits all the usual chatter during the login
+# sequence. If a full pathname, then hushed mode will be enabled if the
+# user's name or shell are found in the file. If not a full pathname, then
+# hushed mode will be enabled if the file exists in the user's home directory.
+#
+HUSHLOGIN_FILE .hushlogin
+#HUSHLOGIN_FILE /etc/hushlogins
+
+#
+# If defined, either a TZ environment parameter spec or the
+# fully-rooted pathname of a file containing such a spec.
+#
+#ENV_TZ TZ=CST6CDT
+#ENV_TZ /etc/tzname
+
+#
+# If defined, an HZ environment parameter spec.
+#
+# for Linux/x86
+ENV_HZ HZ=100
+# For Linux/Alpha...
+#ENV_HZ HZ=1024
+
+#
+# *REQUIRED* The default PATH settings, for superuser and normal users.
+#
+# (they are minimal, add the rest in the shell startup files)
+ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin
+ENV_PATH PATH=/usr/local/bin:/bin:/usr/bin
+
+#
+# Terminal permissions
+#
+# TTYGROUP Login tty will be assigned this group ownership.
+# TTYPERM Login tty will be set to this permission.
+#
+# If you have a "write" program which is "setgid" to a special group
+# which owns the terminals, define TTYGROUP to the group number and
+# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign
+# TTYPERM to either 622 or 600.
+#
+TTYGROUP tty
+TTYPERM 0620
+
+#
+# Login configuration initializations:
+#
+# ERASECHAR Terminal ERASE character ('\010' = backspace).
+# KILLCHAR Terminal KILL character ('\025' = CTRL/U).
+# ULIMIT Default "ulimit" value.
+#
+# The ERASECHAR and KILLCHAR are used only on System V machines.
+# The ULIMIT is used only if the system supports it.
+# (now it works with setrlimit too; ulimit is in 512-byte units)
+#
+# Prefix these values with "0" to get octal, "0x" to get hexadecimal.
+#
+ERASECHAR 0177
+KILLCHAR 025
+#ULIMIT 2097152
+
+# Default initial "umask" value.
+# UMASK is also used by useradd and newusers to set the mode of new home
+# directories.
+# 022 is the default value, but 027, or even 077, could be considered
+# better for privacy. There is no One True Answer here: each sysadmin
+# must make up her mind.
+UMASK 022
+
+#
+# Password aging controls:
+#
+# PASS_MAX_DAYS Maximum number of days a password may be used.
+# PASS_MIN_DAYS Minimum number of days allowed between password changes.
+# PASS_MIN_LEN Minimum acceptable password length.
+# PASS_WARN_AGE Number of days warning given before a password expires.
+#
+PASS_MAX_DAYS 99999
+PASS_MIN_DAYS 0
+PASS_MIN_LEN 5
+PASS_WARN_AGE 7
+
+#
+# If "yes", the user must be listed as a member of the first gid 0 group
+# in /etc/group (called "root" on most Linux systems) to be able to "su"
+# to uid 0 accounts. If the group doesn't exist or is empty, no one
+# will be able to "su" to uid 0.
+#
+SU_WHEEL_ONLY no
+
+#
+# If compiled with cracklib support, where are the dictionaries
+#
+#CRACKLIB_DICTPATH /var/cache/cracklib/cracklib_dict
+
+#
+# Min/max values for automatic uid selection in useradd
+#
+UID_MIN 1000
+UID_MAX 60000
+# System accounts
+SYS_UID_MIN 101
+SYS_UID_MAX 999
+
+#
+# Min/max values for automatic gid selection in groupadd
+#
+GID_MIN 1000
+GID_MAX 60000
+# System accounts
+SYS_GID_MIN 101
+SYS_GID_MAX 999
+
+#
+# Max number of login retries if password is bad
+#
+LOGIN_RETRIES 5
+
+#
+# Max time in seconds for login
+#
+LOGIN_TIMEOUT 60
+
+#
+# Maximum number of attempts to change password if rejected (too easy)
+#
+PASS_CHANGE_TRIES 5
+
+#
+# Warn about weak passwords (but still allow them) if you are root.
+#
+PASS_ALWAYS_WARN yes
+
+#
+# Number of significant characters in the password for crypt().
+# Default is 8, don't change unless your crypt() is better.
+# Ignored if MD5_CRYPT_ENAB set to "yes".
+#
+#PASS_MAX_LEN 8
+
+#
+# Require password before chfn/chsh can make any changes.
+#
+CHFN_AUTH yes
+
+#
+# Which fields may be changed by regular users using chfn - use
+# any combination of letters "frwh" (full name, room number, work
+# phone, home phone). If not defined, no changes are allowed.
+# For backward compatibility, "yes" = "rwh" and "no" = "frwh".
+#
+CHFN_RESTRICT frwh
+
+#
+# Password prompt (%s will be replaced by user name).
+#
+# XXX - it doesn't work correctly yet, for now leave it commented out
+# to use the default which is just "Password: ".
+#LOGIN_STRING "%s's Password: "
+
+#
+# Only works if compiled with MD5_CRYPT defined:
+# If set to "yes", new passwords will be encrypted using the MD5-based
+# algorithm compatible with the one used by recent releases of FreeBSD.
+# It supports passwords of unlimited length and longer salt strings.
+# Set to "no" if you need to copy encrypted passwords to other systems
+# which don't understand the new algorithm. Default is "no".
+#
+# This variable is deprecated. You should use ENCRYPT_METHOD.
+#
+#MD5_CRYPT_ENAB no
+
+#
+# Only works if compiled with ENCRYPTMETHOD_SELECT defined:
+# If set to MD5 , MD5-based algorithm will be used for encrypting password
+# If set to SHA256, SHA256-based algorithm will be used for encrypting password
+# If set to SHA512, SHA512-based algorithm will be used for encrypting password
+# If set to DES, DES-based algorithm will be used for encrypting password (default)
+# Overrides the MD5_CRYPT_ENAB option
+#
+ENCRYPT_METHOD MD5
+
+#
+# Only works if ENCRYPT_METHOD is set to SHA256 or SHA512.
+#
+# Define the number of SHA rounds.
+# With a lot of rounds, it is more difficult to brute forcing the password.
+# But note also that it more CPU resources will be needed to authenticate
+# users.
+#
+# If not specified, the libc will choose the default number of rounds (5000).
+# The values must be inside the 1000-999999999 range.
+# If only one of the MIN or MAX values is set, then this value will be used.
+# If MIN > MAX, the highest value will be used.
+#
+# SHA_CRYPT_MIN_ROUNDS 5000
+# SHA_CRYPT_MAX_ROUNDS 5000
+
+#
+# List of groups to add to the user's supplementary group set
+# when logging in on the console (as determined by the CONSOLE
+# setting). Default is none.
+#
+# Use with caution - it is possible for users to gain permanent
+# access to these groups, even when not logged in on the console.
+# How to do it is left as an exercise for the reader...
+#
+# Most of these groups are self-explanatory.
+#
+# Note that users are added to these default groups only when
+# logging into a shell with /bin/login, not when using a login
+# manager such as kdm. In that case, users who should have
+# hardware access must be added to the appropriate groups
+# when the user is added with adduser or useradd, or by editing
+# /etc/group directly, preferably using "vigr"
+#
+CONSOLE_GROUPS floppy:audio:cdrom:video:scanner
+
+#
+# Should login be allowed if we can't cd to the home directory?
+# Default in no.
+#
+DEFAULT_HOME yes
+
+#
+# If this file exists and is readable, login environment will be
+# read from it. Every line should be in the form name=value.
+#
+ENVIRON_FILE /etc/environment
+
+#
+# If defined, this command is run when removing a user.
+# It should remove any at/cron/print jobs etc. owned by
+# the user to be removed (passed as the first argument).
+#
+#USERDEL_CMD /usr/sbin/userdel_local
+
+#
+# Enable setting of the umask group bits to be the same as owner bits
+# (examples: 022 -> 002, 077 -> 007) for non-root users, if the uid is
+# the same as gid, and username is the same as the primary group name.
+#
+# This also enables userdel to remove user groups if no members exist.
+#
+USERGROUPS_ENAB yes
+
+#
+# If set to a non-nul number, the shadow utilities will make sure that
+# groups never have more than this number of users on one line.
+# This permit to support split groups (groups split into multiple lines,
+# with the same group ID, to avoid limitation of the line length in the
+# group file).
+#
+# 0 is the default value and disables this feature.
+#
+#MAX_MEMBERS_PER_GROUP 0
+
+#
+# If useradd should create home directories for users by default (non
+# system users only)
+# This option is overridden with the -M or -m flags on the useradd command
+# line.
+#
+#CREATE_HOME yes
+
diff --git a/source/a/shadow/shadow-4.0.3.x86_64.diff b/source/a/shadow/shadow-4.0.3.x86_64.diff
deleted file mode 100644
index 15d16c7c8..000000000
--- a/source/a/shadow/shadow-4.0.3.x86_64.diff
+++ /dev/null
@@ -1,166 +0,0 @@
---- shadow-4.0.3/libmisc/failure.h.orig 2004-01-02 18:47:01.000000000 -0800
-+++ shadow-4.0.3/libmisc/failure.h 2004-01-02 18:52:38.000000000 -0800
-@@ -4,7 +4,12 @@
-
- #include "defines.h"
- #include "faillog.h"
-+
-+#if HAVE_UTMPX_H
-+#include <utmpx.h>
-+#else
- #include <utmp.h>
-+#endif
-
- /*
- * failure - make failure entry
-@@ -38,7 +43,11 @@
- * failtmp updates the (struct utmp) formatted failure log which
- * maintains a record of all login failures.
- */
-+#if HAVE_UTMPX_H
-+extern void failtmp(const struct utmpx *);
-+#else
- extern void failtmp(const struct utmp *);
-+#endif
-
- #endif
-
---- shadow-4.0.3/libmisc/failure.c.orig 2004-01-02 18:47:06.000000000 -0800
-+++ shadow-4.0.3/libmisc/failure.c 2004-01-02 18:53:37.000000000 -0800
-@@ -39,7 +39,11 @@
- #include "getdef.h"
- #include "failure.h"
-
-+#if HAVE_UTMPX_H
-+#include <utmpx.h>
-+#else
- #include <utmp.h>
-+#endif
-
- #define YEAR (365L*DAY)
-
-@@ -248,7 +252,11 @@
- */
-
- void
-+#if HAVE_UTMPX_H
-+failtmp(const struct utmpx *failent)
-+#else
- failtmp(const struct utmp *failent)
-+#endif
- {
- char *ftmp;
- int fd;
---- shadow-4.0.3/libmisc/log.c.orig 2004-01-02 18:58:04.000000000 -0800
-+++ shadow-4.0.3/libmisc/log.c 2004-01-02 18:58:51.000000000 -0800
-@@ -57,6 +57,7 @@
- int fd;
- off_t offset;
- struct lastlog newlog;
-+ time_t ll_time;
-
- /*
- * If the file does not exist, don't create it.
-@@ -88,7 +89,8 @@
- if (ll)
- *ll = newlog;
-
-- time(&newlog.ll_time);
-+ ll_time = newlog.ll_time;
-+ time(&ll_time);
- strncpy(newlog.ll_line, line, sizeof newlog.ll_line);
- #if HAVE_LL_HOST
- strncpy(newlog.ll_host, host, sizeof newlog.ll_host);
---- shadow-4.0.3/libmisc/utmp.c.orig 2004-01-02 18:59:04.000000000 -0800
-+++ shadow-4.0.3/libmisc/utmp.c 2004-01-02 19:05:34.000000000 -0800
-@@ -79,6 +79,8 @@
- {
- char *line;
- struct utmp *ut;
-+ time_t uttime;
-+
- pid_t pid = getpid();
-
- setutent();
-@@ -111,7 +113,8 @@
- /* XXX - assumes /dev/tty?? */
- strncpy(utent.ut_id, utent.ut_line + 3, sizeof utent.ut_id);
- strcpy(utent.ut_user, "LOGIN");
-- time(&utent.ut_time);
-+ time(&uttime);
-+ utent.ut_time = uttime;
- }
- }
-
-@@ -284,9 +287,14 @@
- void
- setutmp(const char *name, const char *line, const char *host)
- {
-+ time_t uttime;
-+
- utent.ut_type = USER_PROCESS;
- strncpy(utent.ut_user, name, sizeof utent.ut_user);
-- time(&utent.ut_time);
-+
-+ time(&uttime);
-+ utent.ut_time = uttime;
-+
- /* other fields already filled in by checkutmp above */
- setutent();
- pututline(&utent);
---- shadow-4.0.3/src/lastlog.c.orig 2004-01-02 18:06:09.000000000 -0800
-+++ shadow-4.0.3/src/lastlog.c 2004-01-02 18:29:57.000000000 -0800
-@@ -167,6 +167,7 @@
- static int once;
- char *cp;
- struct tm *tm;
-+ time_t ll_time;
-
- #ifdef HAVE_STRFTIME
- char ptime[80];
-@@ -184,7 +185,9 @@
- #endif
- once++;
- }
-- tm = localtime (&lastlog.ll_time);
-+ ll_time = lastlog.ll_time;
-+ tm = localtime (&ll_time);
-+
- #ifdef HAVE_STRFTIME
- strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm);
- cp = ptime;
---- shadow-4.0.3/src/login.c.orig 2004-01-02 18:33:13.000000000 -0800
-+++ shadow-4.0.3/src/login.c 2004-01-02 18:40:17.000000000 -0800
-@@ -1019,8 +1019,12 @@
- const char *failent_user;
-
- #if HAVE_UTMPX_H
-+ struct timeval ut_tv;
-+ ut_tv.tv_sec = failent.ut_tv.tv_sec;
-+ ut_tv.tv_usec = failent.ut_tv.tv_usec;
-+
- failent = utxent;
-- gettimeofday (&(failent.ut_tv), NULL);
-+ gettimeofday (&ut_tv, NULL);
- #else
- failent = utent;
- time (&failent.ut_time);
-@@ -1271,15 +1275,16 @@
- }
- if (getdef_bool ("LASTLOG_ENAB")
- && lastlog.ll_time != 0) {
-+ time_t ll_time= lastlog.ll_time;
- #ifdef HAVE_STRFTIME
- strftime (ptime, sizeof (ptime),
- "%a %b %e %H:%M:%S %z %Y",
-- localtime (&lastlog.ll_time));
-+ localtime (&ll_time));
- printf (_("Last login: %s on %s"),
- ptime, lastlog.ll_line);
- #else
- printf (_("Last login: %.19s on %s"),
-- ctime (&lastlog.ll_time),
-+ ctime (&ll_time),
- lastlog.ll_line);
- #endif
- #ifdef HAVE_LL_HOST /* SVR4 || __linux__ || SUN4 */
diff --git a/source/a/shadow/shadow.SlackBuild b/source/a/shadow/shadow.SlackBuild
index 2f0e11786..77e34089c 100755
--- a/source/a/shadow/shadow.SlackBuild
+++ b/source/a/shadow/shadow.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,24 +20,40 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=4.0.3
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-18}
+VERSION=4.1.4.2
+BUILD=${BUILD:-3}
+
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-shadow
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
rm -rf $PKG
mkdir -p $TMP $PKG
-
-# Explode the package framework:
-cd $PKG
-explodepkg $CWD/_shadow.tar.gz
-
cd $TMP
rm -rf shadow-$VERSION
-tar xjvf $CWD/shadow-$VERSION.tar.bz2
+tar xvf $CWD/shadow-$VERSION.tar.?z* || exit 1
cd shadow-$VERSION
chown -R root:root .
@@ -47,110 +63,91 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-zcat $CWD/shadow.shadowconfig.diff.gz | patch -p1 --verbose --backup || exit 1
-zcat $CWD/shadow.newgrp.nopam.gz | patch -p0 --verbose --backup || exit 1
-zcat $CWD/shadow.login.defs.diff.gz | patch -p0 --verbose --backup || exit 1
-zcat $CWD/shadow.newgrp.getlogin.gz | patch -p1 --verbose --backup || exit 1
-zcat $CWD/shadow.gcc34.diff.gz | patch -p1 --verbose --backup || exit 1
-zcat $CWD/shadow.remove.obsolete.options.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
-if [ "$ARCH" = "x86_64" ]; then
- zcat $CWD/shadow-4.0.3.x86_64.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
-fi
-
+CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/shadow-$VERSION \
--disable-shared \
- --disable-desrpc \
+ --without-libcrack \
--build=$ARCH-slackware-linux
-make -j6 || exit 1
-cat etc/login.defs.linux > $PKG/etc/login.defs.new
-cat etc/login.access > $PKG/etc/login.access.new
+# --enable-utmpx # defaults to 'no'
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Fix user group = 100:
+zcat $CWD/useradd.gz > $PKG/etc/default/useradd
+
+# /bin/groups is provided by coreutils.
+rm -f $PKG/bin/groups
+find $PKG -name groups.1 -exec rm {} \;
+
+# Install a login.defs with unsurprising defaults:
+rm -f $PKG/etc/login.defs
+zcat $CWD/login.defs.gz > $PKG/etc/login.defs.new
+
+mv $PKG/etc/login.access $PKG/etc/login.access.new
+
+# I don't think this works well enough to recommend it.
+#mv $PKG/etc/limits $PKG/etc/limits.new
+rm -f $PKG/etc/limits
+
+# Add the friendly 'adduser' script:
cat $CWD/adduser > $PKG/usr/sbin/adduser
+chmod 0755 $PKG/usr/sbin/adduser
+
+# Add sulogin to the package:
+cp -a src/sulogin $PKG/sbin
+( cd $PKG/bin ; ln -s ../sbin/sulogin )
+
+# Add the empty faillog log file:
+mkdir -p $PKG/var/log
+touch $PKG/var/log/faillog.new
+
+# Put some stuff back in "old" locations and make symlinks for compat
+( cd $PKG/usr/bin
+ mv faillog ../sbin
+ mv lastlog ../sbin
+ ln -s ../sbin/faillog
+ ln -s ../sbin/lastlog
+)
+
+# Fixup a few permissions:
+chmod 4711 $PKG/bin/su
+chmod 4711 $PKG/usr/bin/*
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
-# These things aren't needed when using glibc, as it
-# supplies its own shadow functions:
-#cat lib/libshadow.a > $PKG/usr/lib/libshadow.a
-#cp -a lib/pwauth.h $PKG/usr/include/shadow/pwauth.h
-#cp -a lib/shadow_.h $PKG/usr/include/shadow/shadow.h
-#chmod 644 $PKG/usr/include/shadow/*
-#chown root.root $PKG/usr/include/shadow/*
-
-cd po
-for file in *.gmo ; do
- mkdir -p $PKG/usr/share/locale/$(basename $file .gmo)/LC_MESSAGES
- cat $file > $PKG/usr/share/locale/$(basename $file .gmo)/LC_MESSAGES/shadow.mo
-done
-cd ../src
-cat login > $PKG/bin/login
-cat su > $PKG/bin/su
-cat sulogin > $PKG/sbin/sulogin
-cat ../debian/shadowconfig.sh > $PKG/usr/sbin/shadowconfig
-for file in chpasswd dpasswd faillog groupadd groupdel groupmod grpck \
-lastlog logoutd mkpasswd newusers pwck useradd userdel usermod \
-pwconv pwunconv grpconv grpunconv vipw ; do
- cat $file > $PKG/usr/sbin/$file
-done
-for file in chage chfn chsh expiry gpasswd newgrp passwd ; do
- cat $file > $PKG/usr/bin/$file
-done
-cd ..
-cp contrib/adduser.sh /sbin/adduser
mkdir -p $PKG/usr/doc/shadow-$VERSION
cp -a \
- ABOUT-NLS ChangeLog NEWS README TODO doc/* \
+ COPYING ChangeLog NEWS README TODO doc/{README*,HOWTO,WISHLIST,*.txt} \
$PKG/usr/doc/shadow-$VERSION
-chmod 644 $PKG/usr/doc/shadow-$VERSION/*
-
-install_man_pages() {
-for file in chage.1 chfn.1 chsh.1 gpasswd.1 groups.1 login.1 newgrp.1 \
-passwd.1 su.1 ; do
- if [ -r $file ]; then
- mkdir -p $1/man1
- gzip -9c $file > $1/man1/$file.gz
- fi
-done
-for file in pw_auth.3 shadow.3 ; do
- if [ -r $file ]; then
- mkdir -p $1/man3
- gzip -9c $file > $1/man3/$file.gz
- fi
-done
-for file in faillog.5 limits.5 login.access.5 login.defs.5 passwd.5 \
-porttime.5 shadow.5 suauth.5 ; do
- if [ -r $file ]; then
- mkdir -p $1/man5
- gzip -9c $file > $1/man5/$file.gz
- fi
-done
-for file in chpasswd.8 dpasswd.8 faillog.8 groupadd.8 groupdel.8 groupmod.8 \
-grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 pwauth.8 pwck.8 pwconv.8 \
-shadowconfig.8 sulogin.8 useradd.8 userdel.8 usermod.8 vipw.8 ; do
- if [ -r $file ]; then
- mkdir -p $1/man8
- gzip -9c $file > $1/man8/$file.gz
- fi
-done
-}
-
-cd man
- install_man_pages $PKG/usr/man
- for dir in * ; do
- if [ -d $dir ] ; then
- ( cd $dir ; install_man_pages $PKG/usr/man/$dir )
- fi
- done
-cd ..
+#chmod 0644 $PKG/usr/doc/shadow-$VERSION/*
+
+# The entire ChangeLog is excessive for most users:
+cat $PKG/usr/doc/shadow-$VERSION/ChangeLog | head -n 2000 > $PKG/usr/doc/shadow-$VERSION/CL
+mv $PKG/usr/doc/shadow-$VERSION/CL $PKG/usr/doc/shadow-$VERSION/ChangeLog
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
-# Build the package:
cd $PKG
-makepkg -l y -c n $TMP/shadow-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/shadow-$VERSION-$ARCH-$BUILD.txz
-# Clean up the extra stuff:
-if [ "$1" = "--cleanup" ]; then
- rm -rf $TMP/shadow-$VERSION
- rm -rf $PKG
-fi
diff --git a/source/a/shadow/shadow.gcc34.diff b/source/a/shadow/shadow.gcc34.diff
deleted file mode 100644
index 71dff4c85..000000000
--- a/source/a/shadow/shadow.gcc34.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./libmisc/xmalloc.c.orig 1998-12-28 14:34:56.000000000 -0600
-+++ ./libmisc/xmalloc.c 2006-08-12 19:02:51.000000000 -0500
-@@ -16,8 +16,6 @@
-
- #include "defines.h"
-
--extern char *malloc();
--
- char *
- xmalloc(size_t size)
- {
diff --git a/source/a/shadow/shadow.login.defs.diff b/source/a/shadow/shadow.login.defs.diff
deleted file mode 100644
index bfed463ae..000000000
--- a/source/a/shadow/shadow.login.defs.diff
+++ /dev/null
@@ -1,67 +0,0 @@
---- ./etc/login.defs.linux.orig 2000-08-26 13:27:10.000000000 -0500
-+++ ./etc/login.defs.linux 2008-03-24 15:10:09.000000000 -0500
-@@ -170,8 +170,8 @@
- # *REQUIRED* The default PATH settings, for superuser and normal users.
- #
- # (they are minimal, add the rest in the shell startup files)
--ENV_SUPATH PATH=/sbin:/bin:/usr/sbin:/usr/bin
--ENV_PATH PATH=/bin:/usr/bin
-+ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin
-+ENV_PATH PATH=/usr/local/bin:/bin:/usr/bin
-
- #
- # Terminal permissions
-@@ -185,7 +185,7 @@
- # TTYPERM to either 622 or 600.
- #
- TTYGROUP tty
--TTYPERM 0600
-+TTYPERM 0620
-
- #
- # Login configuration initializations:
-@@ -230,7 +230,7 @@
- #
- # If compiled with cracklib support, where are the dictionaries
- #
--CRACKLIB_DICTPATH /var/cache/cracklib/cracklib_dict
-+#CRACKLIB_DICTPATH /var/cache/cracklib/cracklib_dict
-
- #
- # Min/max values for automatic uid selection in useradd
-@@ -282,7 +282,7 @@
- # phone, home phone). If not defined, no changes are allowed.
- # For backward compatibility, "yes" = "rwh" and "no" = "frwh".
- #
--CHFN_RESTRICT rwh
-+CHFN_RESTRICT frwh
-
- #
- # Password prompt (%s will be replaced by user name).
-@@ -299,7 +299,7 @@
- # Set to "no" if you need to copy encrypted passwords to other systems
- # which don't understand the new algorithm. Default is "no".
- #
--#MD5_CRYPT_ENAB no
-+MD5_CRYPT_ENAB yes
-
- #
- # List of groups to add to the user's supplementary group set
-@@ -310,7 +310,16 @@
- # access to these groups, even when not logged in on the console.
- # How to do it is left as an exercise for the reader...
- #
--#CONSOLE_GROUPS floppy:audio:cdrom
-+# Most of these groups are self-explanatory.
-+#
-+# Note that users are added to these default groups only when
-+# logging into a shell with /bin/login, not when using a login
-+# manager such as kdm. In that case, users who should have
-+# hardware access must be added to the appropriate groups
-+# when the user is added with adduser or useradd, or by editing
-+# /etc/group directly.
-+#
-+CONSOLE_GROUPS floppy:audio:cdrom:video
-
- #
- # Should login be allowed if we can't cd to the home directory?
diff --git a/source/a/shadow/shadow.newgrp.getlogin b/source/a/shadow/shadow.newgrp.getlogin
deleted file mode 100644
index 5d032f15c..000000000
--- a/source/a/shadow/shadow.newgrp.getlogin
+++ /dev/null
@@ -1,21 +0,0 @@
---- ./src/newgrp.c.orig 2003-05-31 21:19:39.000000000 -0700
-+++ ./src/newgrp.c 2003-05-31 21:21:32.000000000 -0700
-@@ -76,6 +76,7 @@
- gid_t gid;
- char *cp;
- const char *cpasswd, *name, *prog;
-+ char *loginname = NULL;
- char *group = NULL;
- char *command = NULL;
- char **envp = environ;
-@@ -386,7 +387,9 @@
- SYSLOG ((LOG_INFO, "user `%s' switched to group `%s'",
- name, group));
- if (getdef_bool ("SYSLOG_SG_ENAB")) {
-- char *loginname = xstrdup (getlogin ());
-+ char *user = getlogin ();
-+ if (user != NULL)
-+ loginname = xstrdup (user);
- char *tty = xstrdup (ttyname (0));
-
- if (loginname == NULL)
diff --git a/source/a/shadow/shadow.newgrp.nopam b/source/a/shadow/shadow.newgrp.nopam
deleted file mode 100644
index 7920dde00..000000000
--- a/source/a/shadow/shadow.newgrp.nopam
+++ /dev/null
@@ -1,18 +0,0 @@
---- src/newgrp.c.orig 2002-10-12 14:15:34.000000000 +0100
-+++ src/newgrp.c 2002-10-12 14:15:42.000000000 +0100
-@@ -398,6 +398,7 @@
- SYSLOG ((LOG_INFO,
- "user `%s' (login `%s' on %s) switched to group `%s'",
- name, loginname, tty, group));
-+#ifdef USE_PAM
- if (getdef_bool ("CLOSE_SESSIONS")) {
- /*
- * We want to fork and exec the new shell in the child, leaving the
-@@ -450,6 +451,7 @@
- signal (SIGTTIN, SIG_DFL);
- signal (SIGTTOU, SIG_DFL);
- }
-+#endif // USE_PAM
- }
- #endif /* USE_SYSLOG */
-
diff --git a/source/a/shadow/shadow.remove.obsolete.options.diff b/source/a/shadow/shadow.remove.obsolete.options.diff
deleted file mode 100644
index 100fe2a88..000000000
--- a/source/a/shadow/shadow.remove.obsolete.options.diff
+++ /dev/null
@@ -1,78 +0,0 @@
---- ./man/passwd.1.orig 2002-03-13 11:52:15.000000000 -0600
-+++ ./man/passwd.1 2006-08-20 18:29:58.000000000 -0500
-@@ -29,26 +29,17 @@
- .SH NAME
- passwd \- change user password
- .SH SYNOPSIS
--\fBpasswd\fR [\fB-f\fR|\fB-s\fR] [\fIname\fR]
--.br
--\fBpasswd\fR [\fB-g\fR] [\fB-r\fR|\fB-R\fR] \fIgroup\fR
-+\fBpasswd\fR [\fIname\fR]
- .br
- \fBpasswd\fR [\fB-x \fImax\fR] [\fB-n \fImin\fR]
- [\fB-w \fIwarn\fR] [\fB-i \fIinact\fR] \fIlogin\fR
- .br
- \fBpasswd\fR {\fB-l\fR|\fB-u\fR|\fB-d\fR|\fB-S\fR|\fB-e\fR} \fIlogin\fR
- .SH DESCRIPTION
--\fBpasswd\fR changes passwords for user and group accounts.
-+\fBpasswd\fR changes passwords for user accounts.
- A normal user may only change the password for his/her own account,
- the super user may change the password for any account.
--The administrator of a group may change the password for the group.
--\fBpasswd\fR also changes account information, such as the full name
--of the user, user's login shell, or password expiry date and interval.
--.PP
--The \fB-s\fR option makes passwd call chsh to change the user's shell. The
--\fB-f\fR option makes passwd call chfn to change the user's gecos
--information. These two options are only meant for compatiblity, since the
--other programs can be called directly.
-+.PP
- .SS Password Changes
- The user is first prompted for his/her old password, if one is present.
- This password is then encrypted and compared against the
-@@ -86,17 +77,6 @@
- against the first.
- Both entries are required to match in order for the password
- to be changed.
--.SS Group passwords
--When the \fB-g\fR option is used, the password for the named
--group is changed.
--The user must either be the super user, or a group administrator
--for the named group.
--The current group password is not prompted for.
--The \fB-r\fR option is used with the \fB-g\fR option to remove
--the current password from the named group.
--This allows group access to all members.
--The \fB-R\fR option is used with the \fB-g\fR option to restrict
--the named group for all users.
- .SS Password expiry information
- The password aging information may be changed by the super
- user with the \fB-x\fR, \fB-n\fR, \fB-w\fR, and \fB-i\fR options.
-@@ -191,6 +171,9 @@
- .br
- /etc/shadow \- encrypted user passwords
- .SH "SEE ALSO"
-+.BR chfn (1),
-+.BR chsh (1),
-+.BR gpasswd (1),
- .BR group (5),
- .BR passwd (5)
- .SH AUTHOR
---- ./src/passwd.c.orig 2002-01-05 09:41:43.000000000 -0600
-+++ ./src/passwd.c 2006-08-20 18:31:50.000000000 -0500
-@@ -955,6 +955,7 @@
- * Please run these programs directly. --marekm
- */
-
-+#ifdef I_LIKE_OBSOLETE_OPTIONS
- if (argc > 1 && argv[1][0] == '-' && strchr ("gfs", argv[1][1])) {
- char buf[200];
-
-@@ -980,6 +981,7 @@
- closelog ();
- exit (E_FAILURE);
- }
-+#endif
-
- /*
- * The remaining arguments will be processed one by one and executed
diff --git a/source/a/shadow/shadow.shadowconfig.diff b/source/a/shadow/shadow.shadowconfig.diff
deleted file mode 100644
index 7dc9286e7..000000000
--- a/source/a/shadow/shadow.shadowconfig.diff
+++ /dev/null
@@ -1,49 +0,0 @@
---- ./debian/shadowconfig.sh.orig 2001-05-29 23:20:22.000000000 -0700
-+++ ./debian/shadowconfig.sh 2003-06-23 16:35:38.000000000 -0700
-@@ -1,23 +1,28 @@
- #!/bin/bash
--# turn shadow passwords on or off on a Debian system
-+#
-+# 'shadowconfig on' will turn shadow passwords on;
-+# 'shadowconfig off' will turn shadow passwords off.
-+#
-+# shadowconfig will print an error message and exit with
-+# a nonzero code if it finds anything awry. If that happens,
-+# you should correct the error and run it again.
-+#
-+# Turning shadow passwords on when they are already on, or
-+# off when they are already off, is harmless.
-+#
-+# Be aware that account expiration dates are only supported
-+# by shadow passwords -- these dates will be lost when converting
-+# from shadow to non-shadow passwords. If you need to save this
-+# information, back up your /etc/shadow before turning off
-+# shadow passwords.
-+#
-
--set -e
-
--permfix () {
-- [ -f $1 ] || return 0
-- chown root:shadow $1
-- chmod 2755 $1
--}
--export -f permfix
-+set -e
-
- shadowon () {
- bash<<- EOF
- set -e
--
-- permfix /usr/X11R6/bin/xlock
-- permfix /usr/X11R6/bin/xtrlock
-- permfix /bin/vlock
--
- pwck -q
- grpck
- pwconv
-@@ -65,3 +70,4 @@
- echo Usage: $0 on \| off
- ;;
- esac
-+
diff --git a/source/a/shadow/useradd b/source/a/shadow/useradd
new file mode 100644
index 000000000..f3205e496
--- /dev/null
+++ b/source/a/shadow/useradd
@@ -0,0 +1,8 @@
+# useradd defaults file
+GROUP=100
+HOME=/home
+INACTIVE=-1
+EXPIRE=
+SHELL=/bin/bash
+SKEL=/etc/skel
+CREATE_MAIL_SPOOL=yes
diff --git a/source/a/smartmontools/smartmontools.SlackBuild b/source/a/smartmontools/smartmontools.SlackBuild
index fd4fcf35b..5ebed962e 100755
--- a/source/a/smartmontools/smartmontools.SlackBuild
+++ b/source/a/smartmontools/smartmontools.SlackBuild
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=5.38
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo smartmontools-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
else
@@ -40,39 +49,47 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf smartmontools-$VERSION
-tar xvf $CWD/smartmontools-$VERSION.tar.*
+tar xvf $CWD/smartmontools-$VERSION.tar.?z* || exit 1
cd smartmontools-$VERSION
chown -R root:root .
+
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--mandir=/usr/man \
--sysconfdir=/etc \
- $ARCH-slackware-linux
-make
-make install DESTDIR=$PKG
+ --build=$ARCH-slackware-linux
+
+make || exit 1
+make install DESTDIR=$PKG || exit 1
+
# Not used on Slackware:
rm -rf $PKG/etc/rc.d
+
mv $PKG/etc/smartd.conf $PKG/etc/smartd.conf.new
gzip -9 $PKG/usr/man/man?/*.?
mv $PKG/usr/share/doc $PKG/usr
rmdir $PKG/usr/share
-rm -f $PKG/usr/doc/smartmontools-$VERSION/CHANGELOG \
- $PKG/usr/doc/smartmontools-$VERSION/smartd.conf
+rm -f $PKG/usr/doc/smartmontools-$VERSION/smartd.conf
+
( cd $PKG
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
+
mkdir -p $PKG/install
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
+# If there's a CHANGELOG, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGELOG ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGELOG | head -n 1000 > $DOCSDIR/CHANGELOG
+ touch -r CHANGELOG $DOCSDIR/CHANGELOG
+fi
+
# Build the package:
cd $PKG
makepkg -l y -c n $TMP/smartmontools-$VERSION-$ARCH-$BUILD.txz
-# Clean up the extra stuff:
-if [ "$1" = "--cleanup" ]; then
- rm -rf $TMP/smartmontools-$VERSION
- rm -rf $PKG
-fi
diff --git a/source/a/syslinux/syslinux-3.52.tar.bz2.sign b/source/a/syslinux/syslinux-3.52.tar.bz2.sign
deleted file mode 100644
index 1d319cd30..000000000
--- a/source/a/syslinux/syslinux-3.52.tar.bz2.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.7 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBG+aOayGugalF9Dw4RAtvoAJ93vpkYgJsPYBI95vXW1/qLIQC2lwCcCOPf
-NhphOdhGCaUwMdqZH9tahC0=
-=OS5y
------END PGP SIGNATURE-----
diff --git a/source/a/syslinux/syslinux-3.84.tar.bz2.sign b/source/a/syslinux/syslinux-3.84.tar.bz2.sign
new file mode 100644
index 000000000..987a8ed9b
--- /dev/null
+++ b/source/a/syslinux/syslinux-3.84.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBLLBRQyGugalF9Dw4RAmsiAJ9geAzuilvLYCEc03sP1mJLG77UaQCeJlV+
+TgEccKCkyIkwwpBYDHesUjA=
+=1AUa
+-----END PGP SIGNATURE-----
diff --git a/source/a/syslinux/syslinux.SlackBuild b/source/a/syslinux/syslinux.SlackBuild
index e084f96f5..1e7baad75 100755
--- a/source/a/syslinux/syslinux.SlackBuild
+++ b/source/a/syslinux/syslinux.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,9 +22,18 @@
PKGNAM=syslinux
-VERSION=${VERSION:-3.52}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-3.84}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -48,18 +57,13 @@ find . \
# Build:
make -j4 || exit 1
-make install-all INSTALLROOT=/tmp/package-syslinux
-make mkdiskimage
-make libsyslinux.a
-cp -a unix/syslinux-nomtools mkdiskimage $PKG/usr/bin
-chmod 755 $PKG/usr/bin/*
+# Without -i, the following fails trying to install w32 junk:
+make -i install INSTALLROOT=/tmp/package-syslinux
-mkdir -p $PKG/usr/lib
-cp -a libsyslinux.a $PKG/usr/lib
-mkdir -p $PKG/usr/include
-cp -a syslinux.h $PKG/usr/include
+cp -a linux/syslinux-nomtools $PKG/usr/bin
+chmod 755 $PKG/usr/bin/*
-rm -rf $PKG/usr/lib/syslinux/com32
+rm -rf $PKG/usr/share/syslinux/com32
# Compress and link manpages, if any:
if [ -d $PKG/usr/man ]; then
@@ -77,14 +81,17 @@ if [ -d $PKG/usr/man ]; then
fi
# Add a documentation directory:
-mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION/{cmenu,com32}
cp -a \
BUGS COPYING NEWS README* TODO \
- distrib.doc isolinux.doc pxelinux.doc syslinux.doc \
- com32/LICENSE \
- memdisk/memdisk.doc \
- menu \
+ doc \
$PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a com32/LICENCE $PKG/usr/doc/${PKGNAM}-$VERSION/com32
+( cd com32/cmenu
+ cp -a \
+ CHANGES HISTORY MANUAL MENU_FORMAT README TODO \
+ $PKG/usr/doc/${PKGNAM}-$VERSION/cmenu
+)
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/a/sysvinit-scripts/scripts/rc.6 b/source/a/sysvinit-scripts/scripts/rc.6
index 2d5028e35..e49160161 100644
--- a/source/a/sysvinit-scripts/scripts/rc.6
+++ b/source/a/sysvinit-scripts/scripts/rc.6
@@ -202,21 +202,21 @@ echo "Remounting root filesystem read-only."
/bin/sync
# Close any volumes opened by cryptsetup:
-if [ -f /etc/crypttab -a -x /sbin/cryptsetup.static ]; then
+if [ -f /etc/crypttab -a -x /sbin/cryptsetup ]; then
cat /etc/crypttab | grep -v "^#" | grep -v "^$" | while read line; do
# NOTE: we only support LUKS formatted volumes (except for swap)!
LUKS=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f1 -d' ')
DEV=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f2 -d' ')
OPTS=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f4 -d' ')
- if /sbin/cryptsetup.static isLuks $DEV 2>/dev/null ; then
+ if /sbin/cryptsetup isLuks $DEV 2>/dev/null ; then
echo "Locking LUKS crypt volume '${LUKS}':"
- /sbin/cryptsetup.static luksClose ${LUKS}
+ /sbin/cryptsetup luksClose ${LUKS}
elif echo $OPTS | grep -wq swap ; then
# If any of the volumes was used as encrypted swap,
# then run mkswap on the underlying device -
# in case other Linux installations on this computer should use it:
echo "Erasing encrypted swap '${LUKS}' and restoring normal swap on ${DEV}:"
- /sbin/cryptsetup.static remove ${LUKS}
+ /sbin/cryptsetup remove ${LUKS}
mkswap $DEV
fi
done
diff --git a/source/a/sysvinit-scripts/scripts/rc.M b/source/a/sysvinit-scripts/scripts/rc.M
index fe2c9b6f0..ccdcb6f30 100644
--- a/source/a/sysvinit-scripts/scripts/rc.M
+++ b/source/a/sysvinit-scripts/scripts/rc.M
@@ -74,7 +74,7 @@ fi
# If we are returning from single-user mode we will need to restart
# udevd on systems that use udev:
-if grep -wq sysfs /proc/mounts && grep -wq tmpfs /proc/filesystems ; then
+if grep -wq sysfs /proc/mounts && grep -q tmpfs /proc/filesystems ; then
if ! grep -wq nohotplug /proc/cmdline ; then
if [ -x /etc/rc.d/rc.udev ]; then
/bin/sh /etc/rc.d/rc.udev start
@@ -217,7 +217,7 @@ fi
# If we're using udev, make /dev/cdrom and any other optical drive symlinks
# if some udev rule hasn't made them already:
-if grep -wq sysfs /proc/mounts && grep -wq tmpfs /proc/filesystems; then
+if grep -wq sysfs /proc/mounts && grep -q tmpfs /proc/filesystems; then
if ! grep -wq nohotplug /proc/cmdline ; then
if [ -x /lib/udev/rc.optical-symlinks -a -x /etc/rc.d/rc.udev ]; then
/bin/sh /lib/udev/rc.optical-symlinks
diff --git a/source/a/sysvinit-scripts/scripts/rc.S b/source/a/sysvinit-scripts/scripts/rc.S
index a0072d286..7c5c43edb 100644
--- a/source/a/sysvinit-scripts/scripts/rc.S
+++ b/source/a/sysvinit-scripts/scripts/rc.S
@@ -7,8 +7,8 @@
PATH=/sbin:/usr/sbin:/bin:/usr/bin
-# Mount /proc right away:
-/sbin/mount -v proc /proc -n -t proc
+# Try to mount /proc:
+/sbin/mount -v proc /proc -n -t proc 2> /dev/null
# Mount sysfs next, if the kernel supports it:
if [ -d /sys ]; then
@@ -29,7 +29,7 @@ fi
# promise to list all of them), and make any additional device nodes that you
# need in the /dev directory. Even USB and IEEE1394 devices will need to have
# the modules loaded by hand if udev is not used with a 2.6 kernel. So use it. :-)
-if grep -wq sysfs /proc/mounts && grep -wq tmpfs /proc/filesystems ; then
+if grep -wq sysfs /proc/mounts && grep -q tmpfs /proc/filesystems ; then
if ! grep -wq nohotplug /proc/cmdline ; then
if [ -x /etc/rc.d/rc.udev ]; then
/bin/sh /etc/rc.d/rc.udev start
@@ -59,7 +59,7 @@ if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
fi
# Open any volumes created by cryptsetup:
-if [ -f /etc/crypttab -a -x /sbin/cryptsetup.static ]; then
+if [ -f /etc/crypttab -a -x /sbin/cryptsetup ]; then
# First, check for device-mapper support.
if ! grep -wq device-mapper /proc/devices ; then
# If device-mapper exists as a module, try to load it.
@@ -77,19 +77,19 @@ if [ -f /etc/crypttab -a -x /sbin/cryptsetup.static ]; then
if echo $OPTS | grep -wq ro ; then LUKSOPTS="${LUKSOPTS} --readonly" ; fi
# Skip LUKS volumes that were already unlocked (in the initrd):
- /sbin/cryptsetup.static status $LUKS 1>/dev/null 2>/dev/null && continue
- if /sbin/cryptsetup.static isLuks $DEV 2>/dev/null ; then
+ /sbin/cryptsetup status $LUKS 1>/dev/null 2>/dev/null && continue
+ if /sbin/cryptsetup isLuks $DEV 2>/dev/null ; then
echo "Unlocking LUKS crypt volume '${LUKS}' on device '$DEV':"
if [ -n "${PASS}" ]; then
if [ -f ${PASS} ]; then
- /sbin/cryptsetup.static ${LUKSOPTS} --key-file=${PASS} luksOpen $DEV $LUKS
+ /sbin/cryptsetup ${LUKSOPTS} --key-file=${PASS} luksOpen $DEV $LUKS
elif [ "${PASS}" != "none" ]; then
# A password field of 'none' indicates a line for swap:
- echo "${PASS}" | /sbin/cryptsetup.static ${LUKSOPTS} luksOpen $DEV $LUKS
+ echo "${PASS}" | /sbin/cryptsetup ${LUKSOPTS} luksOpen $DEV $LUKS
fi
else
for i in seq 1 3 ; do
- /sbin/cryptsetup.static ${LUKSOPTS} luksOpen $DEV $LUKS </dev/tty0 >/dev/tty0 2>&1
+ /sbin/cryptsetup ${LUKSOPTS} luksOpen $DEV $LUKS </dev/tty0 >/dev/tty0 2>&1
[ $? -eq 0 ] && break
done
fi
@@ -97,14 +97,14 @@ if [ -f /etc/crypttab -a -x /sbin/cryptsetup.static ]; then
# If any of the volumes is to be used as encrypted swap,
# then encrypt it using a random key and run mkswap:
echo "Creating encrypted swap on device '$DEV' mapped to '${LUKS}':"
- /sbin/cryptsetup.static --cipher=aes --key-file=/dev/urandom --key-size=256 create $LUKS $DEV
+ /sbin/cryptsetup --cipher=aes --key-file=/dev/urandom --key-size=256 create $LUKS $DEV
mkswap /dev/mapper/$LUKS
fi
done
fi
# Enable swapping:
-/sbin/swapon -a
+/sbin/swapon -a 2> /dev/null
# Start FUSE, if requested:
if [ -x /etc/rc.d/rc.fuse ]; then
@@ -322,7 +322,7 @@ fi
# Enable swapping again. This is needed in case a swapfile is used,
# as it can't be enabled until the filesystem it resides on has been
# mounted read-write.
-/sbin/swapon -a
+/sbin/swapon -a 2> /dev/null
# Clean up some temporary files:
rm -f /var/run/* /var/run/*/* /var/run/*/*/* /etc/nologin \
diff --git a/source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild b/source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild
index 4b9eba043..537d8be98 100755
--- a/source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild
+++ b/source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,7 +23,7 @@
VERSION=${VERSION:-1.2}
ARCH=noarch
-BUILD=${BUILD:-30}
+BUILD=${BUILD:-32}
CWD=$(pwd)
TMP=${TMP:-/tmp}
diff --git a/source/a/tar/tar-1.22-support_txz.diff b/source/a/tar/tar-1.22-support_txz.diff
deleted file mode 100644
index 5104f5639..000000000
--- a/source/a/tar/tar-1.22-support_txz.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nur tar-1.22.orig/src/suffix.c tar-1.22/src/suffix.c
---- tar-1.22.orig/src/suffix.c 2009-03-05 01:04:13.000000000 -0600
-+++ tar-1.22/src/suffix.c 2009-05-06 15:59:10.695985191 -0500
-@@ -41,6 +41,7 @@
- { S(tlz, lzma) },
- { S(lzo, lzop) },
- { S(xz, xz) },
-+ { S(txz, xz) },
- #undef S
- };
-
diff --git a/source/a/tar/tar-1.23-support_txz.diff b/source/a/tar/tar-1.23-support_txz.diff
new file mode 100644
index 000000000..efd720b55
--- /dev/null
+++ b/source/a/tar/tar-1.23-support_txz.diff
@@ -0,0 +1,11 @@
+diff -Nur tar-1.23.orig/src/suffix.c tar-1.23/src/suffix.c
+--- tar-1.23.orig/src/suffix.c 2010-03-09 06:52:41.000000000 -0600
++++ tar-1.23/src/suffix.c 2010-03-10 15:34:22.417696189 -0600
+@@ -43,6 +43,7 @@
+ { S(tlz, LZMA) },
+ { S(lzo, LZOP) },
+ { S(xz, XZ) },
++ { S(txz, XZ) },
+ #undef S
+ #undef __CAT2__
+ };
diff --git a/source/a/tar/tar.SlackBuild b/source/a/tar/tar.SlackBuild
index 43181ccbe..21484f4cc 100755
--- a/source/a/tar/tar.SlackBuild
+++ b/source/a/tar/tar.SlackBuild
@@ -22,12 +22,20 @@
# Slackware build script for tar
-VERSION=1.22
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=1.23
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j7}
+# Automatically determine architecture for build & packaging:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-tar
@@ -41,6 +49,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
# This old version is the only one that won't clobber symlinks, e.g.:
@@ -58,7 +68,7 @@ tar xvf $CWD/tar-1.13.tar.gz || exit 1
cd tar-1.13 || exit 1
zcat $CWD/tar-1.13.bzip2.diff.gz | patch -p1 --verbose || exit 1
# The original config.{guess,sub} do not work on x86_64
-cp -p /usr/share/libtool/config.{guess,sub} .
+cp -p /usr/share/libtool/config/config.{guess,sub} .
chown -R root:root .
CFLAGS="$SLKCFLAGS" \
./configure \
@@ -73,7 +83,7 @@ chmod 0755 $PKG/bin/tar-1.13
cd $TMP
rm -rf tar-$VERSION
-tar xvf $CWD/tar-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/tar-$VERSION.tar.xz || exit 1
cd tar-$VERSION || exit 1
chown -R root:root .
find . \
@@ -89,7 +99,7 @@ zcat $CWD/tar.norecordsizespam.diff.gz | patch -p1 --verbose || exit 1
zcat $CWD/tar.nolonezero.diff.gz | patch -p1 --verbose || exit 1
# Add support for *.txz files (our packages)
-zcat $CWD/tar-1.22-support_txz.diff.gz | patch -p1 --verbose || exit1
+zcat $CWD/tar-1.23-support_txz.diff.gz | patch -p1 --verbose || exit1
CFLAGS="$SLKCFLAGS" \
./configure \
@@ -103,8 +113,10 @@ make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
)
mv $PKG/usr/bin/tar $PKG/bin
diff --git a/source/a/tar/tar.nolonezero.diff b/source/a/tar/tar.nolonezero.diff
index 3c6f6f97b..0209c692a 100644
--- a/source/a/tar/tar.nolonezero.diff
+++ b/source/a/tar/tar.nolonezero.diff
@@ -1,24 +1,25 @@
---- ./src/list.c.orig 2004-05-10 04:49:09.000000000 -0700
-+++ ./src/list.c 2004-06-06 13:13:23.000000000 -0700
+diff -Nur tar-1.23.orig//src/list.c tar-1.23//src/list.c
+--- tar-1.23.orig//src/list.c 2010-01-26 05:28:09.000000000 -0600
++++ tar-1.23//src/list.c 2010-03-15 23:46:19.841670026 -0500
@@ -138,6 +138,14 @@
if (!ignore_zeros_option)
{
+
-+ /*
-+ * According to POSIX tar specs, this is wrong, but on the web
-+ * there are some tar specs that can trigger this, and some tar
-+ * implementations create tars according to that spec. For now,
-+ * let's not be pedantic about issuing the warning.
-+ */
-+#if 0
++ /*
++ * According to POSIX tar specs, this is wrong, but on the web
++ * there are some tar specs that can trigger this, and some tar
++ * implementations create tars according to that spec. For now,
++ * let's not be pedantic about issuing the warning.
++ */
++#if 0
char buf[UINTMAX_STRSIZE_BOUND];
- status = read_header (false);
-@@ -145,6 +153,7 @@
- break;
- WARN ((0, 0, _("A lone zero block at %s"),
- STRINGIFY_BIGINT (current_block_ordinal (), buf)));
+ status = read_header (&current_header, &current_stat_info,
+@@ -147,6 +155,7 @@
+ WARNOPT (WARN_ALONE_ZERO_BLOCK,
+ (0, 0, _("A lone zero block at %s"),
+ STRINGIFY_BIGINT (current_block_ordinal (), buf)));
+#endif
break;
}
diff --git a/source/a/tar/tar.norecordsizespam.diff b/source/a/tar/tar.norecordsizespam.diff
index b7d1b7a9f..0a1f4e1df 100644
--- a/source/a/tar/tar.norecordsizespam.diff
+++ b/source/a/tar/tar.norecordsizespam.diff
@@ -1,15 +1,16 @@
---- ./src/buffer.c.orig 2009-03-05 01:04:13.000000000 -0600
-+++ ./src/buffer.c 2009-03-09 20:17:50.000000000 -0500
-@@ -688,7 +688,7 @@
+diff -Nur tar-1.23.orig//src/buffer.c tar-1.23/src/buffer.c
+--- tar-1.23.orig//src/buffer.c 2010-03-09 06:52:41.000000000 -0600
++++ tar-1.23/src/buffer.c 2010-03-15 23:47:30.122668444 -0500
+@@ -734,7 +734,7 @@
more = record_start->buffer + status;
left = record_size - status;
- if (left && left % BLOCKSIZE == 0
+ /* if (left && left % BLOCKSIZE == 0
&& verbose_option
- && record_start_block == 0 && status != 0)
- {
-@@ -698,7 +698,7 @@
+ && record_start_block == 0 && status != 0
+ && archive_is_dev ())
+@@ -745,7 +745,7 @@
"Record size = %lu blocks",
rsize),
rsize));
diff --git a/source/a/udev/config/rc.d/rc.udev.new b/source/a/udev/config/rc.d/rc.udev.new
index 8c238b0dd..40f38d1de 100644
--- a/source/a/udev/config/rc.d/rc.udev.new
+++ b/source/a/udev/config/rc.d/rc.udev.new
@@ -11,6 +11,18 @@ OPT=""
# remove trailing slash from udev_root
UDEV_ROOT=$(echo "${udev_root}" |sed 's/\/*$//')
+check_mounted() {
+ grep -E -q "^[^[:space:]]+ $1 $2" /proc/mounts
+ return $?
+}
+
+mount_devpts() {
+ if ! check_mounted $UDEV_ROOT/pts devpts ; then
+ mkdir $UDEV_ROOT/pts 2> /dev/null
+ mount -n -o mode=0620,gid=5 -t devpts devpts $UDEV_ROOT/pts
+ fi
+}
+
case "$1" in
start)
# Sanity check #1, udev requires that the kernel support tmpfs:
@@ -23,8 +35,8 @@ case "$1" in
# Sanity check #2, make sure that a 2.6.x kernel is new enough:
if [ "$(uname -r | cut -f 1,2 -d .)" = "2.6" ]; then
- if [ "$(uname -r | cut -f 3 -d . | sed 's/[^[:digit:]].*//')" -lt "15" ]; then
- echo "Sorry, but you need a 2.6.15+ kernel to use udev."
+ if [ "$(uname -r | cut -f 3 -d . | sed 's/[^[:digit:]].*//')" -lt "27" ]; then
+ echo "Sorry, but you need a 2.6.27+ kernel to use udev."
echo "Your kernel version is only $(uname -r)."
echo
echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
@@ -48,45 +60,59 @@ case "$1" in
echo "" > /proc/sys/kernel/hotplug
fi
- # if udevd is already running, rc.udev start will try to re-run
- # failed events. Else, it will start udevd.
- if ps axc | grep -q udevd ; then
- OPT="--type=failed $OPT"
- ( cd ${UDEV_ROOT}/.udev
- for TMPFILE in tmp-rules-*.rules ; do
- mv $TMPFILE /etc/udev/rules.d/${TMPFILE/tmp-rules--/} 2>/dev/null
- done
- )
- else
- # Mount tmpfs on $UDEV_ROOT:
- if ! grep -E -q "^[^[:space:]]+ $UDEV_ROOT tmpfs" /proc/mounts; then
+ if grep -qw devtmpfs /proc/filesystems ; then
+ if ! check_mounted $UDEV_ROOT devtmpfs ; then
# umount shm if needed
- if grep -E -q "^[^[:space:]]+ $UDEV_ROOT/shm tmpfs" /proc/mounts; then
- umount -l $UDEV_ROOT/shm
- fi
+ check_mounted $UDEV_ROOT/shm tmpfs && umount -l $UDEV_ROOT/shm
# Umount pts if needed, we will remount it later:
- if grep -E -q "^[^[:space:]]+ $UDEV_ROOT/pts devpts" /proc/mounts; then
- umount -l $UDEV_ROOT/pts
+ check_mounted $UDEV_ROOT/pts devpts && umount -l $UDEV_ROOT/pts
+
+ # Mount tmpfs on $UDEV_ROOT:
+ mount -n -t devtmpfs devtmpfs $UDEV_ROOT
+ fi
+ else
+ # Mount tmpfs on $UDEV_ROOT:
+ if ! check_mounted $UDEV_ROOT tmpfs ; then
+ # umount shm if needed
+ check_mounted $UDEV_ROOT/shm tmpfs && umount -l $UDEV_ROOT/shm
+
+ # Umount pts if needed, we will remount it later:
+ check_mounted $UDEV_ROOT/pts devpts && umount -l $UDEV_ROOT/pts
+
+ # Mount tmpfs on $UDEV_ROOT:
+ # the -n is because we don't want $UDEV_ROOT umounted when
+ # someone (rc.[06]) calls umount -a
+ mount -n -o mode=0755 -t tmpfs tmpfs $UDEV_ROOT
+
fi
+ fi
+ # Mount devpts
+ mount_devpts
- # Mount tmpfs on $UDEV_ROOT:
- # the -n is because we don't want $UDEV_ROOT umounted when
- # someone (rc.[06]) calls umount -a
- mount -n -o mode=0755 -t tmpfs tmpfs $UDEV_ROOT
+ # Start udevd.
+ /sbin/udevd --daemon 2>/dev/null
- # Remount pts:
- mkdir $UDEV_ROOT/pts 2> /dev/null
- mount -n -o mode=0620,gid=5 -t devpts devpts $UDEV_ROOT/pts
- fi
+ # If udevd was already running, then it will return !=0 exit code,
+ # so we'll try to re-run failed events
+ if [ $? != 0 ]; then
+ OPT="--type=failed $OPT"
+ ( cd ${UDEV_ROOT}/.udev
+ for TMPFILE in tmp-rules-*.rules ; do
+ mv $TMPFILE /etc/udev/rules.d/${TMPFILE/tmp-rules--/} 2>/dev/null
+ done
+ )
+ else # udev is just now being started, so we'll do some initial setup:
- # Add the static nodes to $UDEV_ROOT:
- cp --preserve=all --recursive --remove-destination /lib/udev/devices/* $UDEV_ROOT
+ # Set STARTUP=1 in the environment
+ /sbin/udevadm control --property=STARTUP=1
- # Start udevd:
- echo "Starting udevd: /sbin/udevd --daemon"
- /sbin/udevd --daemon
+ # Set OPT="--action=add" to generate add events on coldplug
+ OPT="--action=add"
+ # Add the static nodes to $UDEV_ROOT:
+ cp --preserve=all --recursive --remove-destination /lib/udev/devices/* $UDEV_ROOT
+
# Create rootdev rules
DEVICENUMBER=$( /bin/stat -c %d / )
MAJORNUMBER=$(($DEVICENUMBER / 256))
@@ -99,9 +125,15 @@ case "$1" in
echo "Triggering udev events: /sbin/udevadm trigger $OPT"
# Call udevtrigger and udevsettle to do the device configuration:
/sbin/udevadm trigger $OPT && /sbin/udevadm settle --timeout=120
+ # Unset STARTUP=1 in the environment
+ /sbin/udevadm control --property=STARTUP=
;;
stop)
+ echo "Stopping udevd is STRONGLY discouraged and not supported."
+ echo "If you are sure you want to do this, use 'force-stop' instead."
+ ;;
+ force-stop)
echo "Stopping udevd"
if [ -e /proc/sys/kernel/hotplug ]; then
echo /sbin/hotplug > /proc/sys/kernel/hotplug
@@ -109,6 +141,10 @@ case "$1" in
killall udevd
;;
restart)
+ echo "Restarting udevd is STRONGLY discouraged and not supported."
+ echo "If you are sure you want to do this, use 'force-restart' instead."
+ ;;
+ force-restart)
echo "Restarting udevd"
killall udevd
sleep 5
diff --git a/source/a/udev/config/rules.d/59-non-libata-devices.rules b/source/a/udev/config/rules.d/59-non-libata-devices.rules
new file mode 100644
index 000000000..4b1238a43
--- /dev/null
+++ b/source/a/udev/config/rules.d/59-non-libata-devices.rules
@@ -0,0 +1,44 @@
+# Support for the deprecated IDE devices has been removed from the
+# default set of rules shipped with udev, but some administrators
+# might want (or need) the old ata drivers and thus build a custom
+# kernel, so we'll carry these on our own for now...
+
+#############################################################################
+
+# Old 50-udev-default.rules
+
+# floppy
+KERNEL=="hd*", SUBSYSTEMS=="ide", ATTRS{media}=="floppy"
+
+# cdrom
+SUBSYSTEM=="block", KERNEL=="hd*", SUBSYSTEMS=="ide", ATTRS{media}=="cdrom", GROUP="cdrom"
+
+#############################################################################
+
+# Old 60-persistent-storage.rules
+
+# never access non-cdrom removable ide devices, the drivers are causing event loops on open()
+KERNEL=="hd*[!0-9]", ATTR{removable}=="1", SUBSYSTEMS=="ide", ATTRS{media}=="disk|floppy", GOTO="old_persistent_storage_end"
+KERNEL=="hd*[0-9]", ATTRS{removable}=="1", GOTO="old_persistent_storage_end"
+
+# by-id (hardware serial number)
+KERNEL=="hd*[!0-9]", IMPORT{program}="ata_id --export $tempnode"
+KERNEL=="hd*[!0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/ata-$env{ID_SERIAL}"
+KERNEL=="hd*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/ata-$env{ID_SERIAL}-part%n"
+
+LABEL="old_persistent_storage_end"
+
+#############################################################################
+
+# Old ide stuff from our custom 65-permissions.rules
+
+# permissions for IDE floppy devices
+KERNEL=="hd*[!0-9]", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", SYMLINK+="floppy floppy-%k"
+KERNEL=="hd*[0-9]", ATTRS{media}=="floppy", ATTRS{removable}=="1", SYMLINK+="floppy-%k"
+
+# put all removable devices in group "plugdev"
+KERNEL=="hd*[!0-9]", ATTR{removable}=="1", GROUP="plugdev"
+KERNEL=="hd*[0-9]", ATTRS{removable}=="1", GROUP="plugdev"
+
+#############################################################################
+
diff --git a/source/a/udev/config/rules.d/65-permissions.rules b/source/a/udev/config/rules.d/65-permissions.rules
index b0cfb2590..6f82b0f36 100644
--- a/source/a/udev/config/rules.d/65-permissions.rules
+++ b/source/a/udev/config/rules.d/65-permissions.rules
@@ -12,15 +12,7 @@
# all disks with group disk
KERNEL!="fd*", SUBSYSTEM=="block", GROUP="disk"
-# permissions for IDE floppy devices
-KERNEL=="hd*[!0-9]", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", \
- SYMLINK+="floppy floppy-%k", OPTIONS+="ignore_remove"
-KERNEL=="hd*[0-9]", ATTRS{media}=="floppy", ATTRS{removable}=="1", \
- SYMLINK+="floppy-%k", OPTIONS+="ignore_remove"
-
# put all removable devices in group "plugdev"
-KERNEL=="hd*[!0-9]", ATTR{removable}=="1", GROUP="plugdev"
-KERNEL=="hd*[0-9]", ATTRS{removable}=="1", GROUP="plugdev"
KERNEL=="sd*[!0-9]", ATTR{removable}=="1", GROUP="plugdev"
KERNEL=="sd*[0-9]", ATTRS{removable}=="1", GROUP="plugdev"
@@ -44,9 +36,6 @@ SUBSYSTEMS=="scsi", KERNEL=="s[gt][0-9]*", ATTRS{type}=="5", \
# Make DRI video devices usable by anyone in group "video":
KERNEL=="card[0-9]*",GROUP:="video"
-# alsa devices
-SUBSYSTEM=="sound", GROUP="audio"
-
# Make the real time clock readable by all, and writable by root:
KERNEL=="rtc|rtc0", MODE="0644"
diff --git a/source/a/udev/rule_generator.diff b/source/a/udev/rule_generator.diff
index 0ff218a6c..f3f67516d 100644
--- a/source/a/udev/rule_generator.diff
+++ b/source/a/udev/rule_generator.diff
@@ -1,6 +1,6 @@
-diff -Naur udev-114/extras/rule_generator/write_cd_rules udev-114slk/extras/rule_generator/write_cd_rules
---- udev-114/extras/rule_generator/write_cd_rules 2007-08-05 09:08:47.000000000 -0300
-+++ udev-114slk/extras/rule_generator/write_cd_rules 2007-08-22 20:17:24.000000000 -0300
+diff -Naur udev.orig/extras/rule_generator/write_cd_rules udev/extras/rule_generator/write_cd_rules
+--- udev.orig/extras/rule_generator/write_cd_rules 2009-05-19 00:24:39.000000000 -0300
++++ udev/extras/rule_generator/write_cd_rules 2009-05-19 01:02:17.000000000 -0300
@@ -3,7 +3,8 @@
# This script is run if an optical drive lacks a rule for persistent naming.
#
@@ -11,13 +11,13 @@ diff -Naur udev-114/extras/rule_generator/write_cd_rules udev-114slk/extras/rule
#
# (C) 2006 Marco d'Itri <md@Linux.IT>
#
-@@ -97,18 +98,59 @@
+@@ -96,18 +97,57 @@
choose_rules_file
link_num=$(find_next_available 'cdrom[0-9]*')
+[ "$link_num" = "" ] && link_num=0
- match="ENV{ID_CDROM}==\"?*\", $RULE"
+ match="SUBSYSTEM==\"block\", ENV{ID_CDROM}==\"?*\", $RULE"
comment="$ID_MODEL ($ID_PATH)"
-
@@ -73,8 +73,6 @@ diff -Naur udev-114/extras/rule_generator/write_cd_rules udev-114slk/extras/rule
+ fi
+ fi
+ fi
-+
-+
+ echo >> $RULES_FILE
unlock_rules_file
-
diff --git a/source/a/udev/udev-141.tar.bz2.sign b/source/a/udev/udev-141.tar.bz2.sign
deleted file mode 100644
index a30826919..000000000
--- a/source/a/udev/udev-141.tar.bz2.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBJ3TgkyGugalF9Dw4RAtJCAJ4+ns9bz4ZIu+3ecfra/BWrn3euqwCeOFQZ
-6A7UqbHlTlD48sOk249ZATA=
-=AY1A
------END PGP SIGNATURE-----
diff --git a/source/a/udev/udev-153.tar.sign b/source/a/udev/udev-153.tar.sign
new file mode 100644
index 000000000..193f3a0e7
--- /dev/null
+++ b/source/a/udev/udev-153.tar.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBLzqFNyGugalF9Dw4RApGYAKCVo2YvsfeOD/ozq/rsURNM/AoxrwCcCJl1
+YD0LnOVyqilDyMQdOk2VA7o=
+=hHbP
+-----END PGP SIGNATURE-----
diff --git a/source/a/udev/udev.SlackBuild b/source/a/udev/udev.SlackBuild
index 0c6327486..e891fca35 100755
--- a/source/a/udev/udev.SlackBuild
+++ b/source/a/udev/udev.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,13 +20,21 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-VERSION=${VERSION:-141}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+VERSION=${VERSION:-$(echo udev-*.tar.* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
else
@@ -41,7 +49,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG/lib/udev
cd $TMP
rm -rf udev-$VERSION
-tar xvf $CWD/udev-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/udev-$VERSION.tar.xz || exit 1
cd udev-$VERSION || exit 1
chown -R root:root .
find . \
@@ -50,31 +58,31 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-zcat $CWD/rule_generator.diff.gz | patch -p1 --verbose || exit 1
+# Fixup the rule generator for our use
+zcat $CWD/rule_generator.diff.gz | patch -p1 || exit 1
+# static libudev is needed for lvm2
./configure \
+ --enable-static \
--prefix=/usr \
- --exec-prefix=/ \
--sysconfdir=/etc \
+ --sbindir=/sbin \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --with-rootlibdir=/lib${LIBDIRSUFFIX} \
+ --libexecdir=/lib/udev \
+ --disable-introspection \
--mandir=/usr/man \
- --with-libdir-name=lib${LIBDIRSUFFIX} \
+ --docdir=/usr/doc/udev-$VERSION \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
- xargs strip --strip-unneeded 2> /dev/null || true
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
- xargs strip --strip-unneeded 2> /dev/null
-)
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-# scsi_id and vol_id are needed by multipath
-( cd $PKG/sbin
- ln -s ../lib/udev/scsi_id scsi_id
- ln -s ../lib/udev/vol_id vol_id
-)
+# scsi_id is needed by multipath
+( cd $PKG/sbin ; ln -s ../lib/udev/scsi_id scsi_id )
mkdir -p \
$PKG/etc/modprobe.d \
@@ -84,15 +92,10 @@ mkdir -p \
# Yes, these will clobber existing config files.
cp -a $CWD/config/udev.conf $PKG/etc/udev/udev.conf
+
# Copy Slackware custom rules
cp -a $CWD/config/rules.d/* $PKG/lib/udev/rules.d/
-# Copy some files from upstream
-cp -a rules/packages/40-alsa.rules $PKG/lib/udev/rules.d/
-cp -a rules/packages/40-isdn.rules $PKG/lib/udev/rules.d/
-cp -a rules/packages/40-zaptel.rules $PKG/lib/udev/rules.d/
-cp -a rules/packages/40-infiniband.rules $PKG/lib/udev/rules.d/
-#cp -a rules/packages/40-pilot-links.rules $PKG/etc/udev/rules.d/
-#cp -a rules/packages/64-md-raid.rules $PKG/etc/udev/rules.d/
+
# Now the init script and module-init-tools stuff
cp -a $CWD/config/rc.d/rc.udev.new $PKG/etc/rc.d/rc.udev.new
cp -a $CWD/config/modprobe.d/* $PKG/etc/modprobe.d
@@ -100,7 +103,7 @@ cp -a $CWD/config/modprobe.d/* $PKG/etc/modprobe.d
chown -R root:root $PKG/etc
find $PKG/etc -type f -exec chmod 644 {} \;
find $PKG/etc -type d -exec chmod 755 {} \;
-chmod 755 $PKG/etc/rc.d/rc.udev.new
+chmod 0755 $PKG/etc/rc.d/rc.udev.new
# Add extra device nodes to the package that udev doesn't make:
tar xvf $CWD/udev-fixed-devices.tar.gz -C $PKG
@@ -112,11 +115,21 @@ done
chown -R root:root $PKG/lib/udev
chmod 755 $PKG/lib/udev/*
+# Move the pkgconfig file to where we expect it
+mv $PKG/usr/share/pkgconfig/* $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig
+rmdir $PKG/usr/share/pkgconfig
+
+# Kill the ConsoleKit stuff
+rm -rf $PKG/usr/lib/ConsoleKit ; rmdir $PKG/usr/lib 2>/dev/null
+
mkdir -p $PKG/usr/doc/udev-$VERSION
cp -a \
- COPYING* FAQ README* TODO RELEASE-NOTES docs \
+ COPYING* README* TODO \
$PKG/usr/doc/udev-$VERSION
+# Don't package the API docs:
+rm -rf $PKG/usr/share/gtk-doc ; rmdir $PKG/usr/share 2>/dev/null
+
# Compress and fix manpage symlinks:
if [ -d $PKG/usr/man ]; then
( cd $PKG/usr/man
diff --git a/source/a/usb_modeswitch/doinst.sh b/source/a/usb_modeswitch/doinst.sh
new file mode 100644
index 000000000..1ed6e1740
--- /dev/null
+++ b/source/a/usb_modeswitch/doinst.sh
@@ -0,0 +1,14 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/usb_modeswitch.conf.new
+
diff --git a/source/a/usb_modeswitch/slack-desc b/source/a/usb_modeswitch/slack-desc
new file mode 100644
index 000000000..9581428b2
--- /dev/null
+++ b/source/a/usb_modeswitch/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+usb_modeswitch: usb_modeswitch (mode switching tool for multiple mode USB devices)
+usb_modeswitch:
+usb_modeswitch: USB-ModeSwitch is (surprise!) a small mode switching tool for
+usb_modeswitch: controlling "flip flop" (multiple device) USB gear. These devices
+usb_modeswitch: initially appear to be USB storage, typically containing the MS
+usb_modeswitch: Windows drivers for whatever the real purpose of the device is, such
+usb_modeswitch: as a wireless USB modem. To use these devices with Linux, they need
+usb_modeswitch: to be told to switch out of storage mode, which is the purpose of the
+usb_modeswitch: USB-ModeSwitch utility.
+usb_modeswitch:
+usb_modeswitch: Homepage: http://www.draisberghof.de/usb_modeswitch
diff --git a/source/a/usb_modeswitch/usb_modeswitch.SlackBuild b/source/a/usb_modeswitch/usb_modeswitch.SlackBuild
new file mode 100755
index 000000000..f4e6569ef
--- /dev/null
+++ b/source/a/usb_modeswitch/usb_modeswitch.SlackBuild
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# Slackware build script for usb_modeswitch.
+
+# Copyright 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2010 David Somero, Athens, TN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=usb_modeswitch
+VERSION=${VERSION:-1.1.2}
+DATAVER=${DATAVER:-20100418}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# Upstream is playing guess the program name.
+SRCPKGNAM=$(echo $PKGNAM | tr _ -)
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $SRCPKGNAM-$VERSION
+tar xvf $CWD/$SRCPKGNAM-$VERSION.tar.?z* || exit 1
+cd $SRCPKGNAM-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+make clean
+gcc $SLKCFLAGS $LDFLAGS -lusb -Wall -o usb_modeswitch usb_modeswitch.c || exit 1
+
+install -D -s -m 0755 usb_modeswitch $PKG/usr/sbin/usb_modeswitch
+install -D -m 0755 usb_modeswitch.tcl $PKG/lib/udev/usb_modeswitch
+install -D -m 0644 usb_modeswitch.conf $PKG/etc/usb_modeswitch.conf.new
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ COPYING* README* \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+# Now, install the data pack:
+cd $TMP
+rm -rf usb-modeswitch-data-${DATAVER}
+tar xvf $CWD/usb-modeswitch-data-${DATAVER}.tar.?z* || exit 1
+cd usb-modeswitch-data-${DATAVER} || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+install -D -m 0644 40-usb_modeswitch.rules $PKG/lib/udev/rules.d/40-usb_modeswitch.rules
+mkdir -p $PKG/etc
+cp -a usb_modeswitch.d $PKG/etc
+mkdir -p $PKG/usr/doc/usb-modeswitch-data-${DATAVER}
+cat ChangeLog | head -n 1000 > $PKG/usr/doc/usb-modeswitch-data-${DATAVER}/ChangeLog
+touch -r ChangeLog $PKG/usr/doc/usb-modeswitch-data-${DATAVER}/ChangeLog
+cp -a \
+ COPYING* README* \
+ $PKG/usr/doc/usb-modeswitch-data-${DATAVER}
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/usbutils/usbutils.SlackBuild b/source/a/usbutils/usbutils.SlackBuild
index dcb14b466..7263b8647 100755
--- a/source/a/usbutils/usbutils.SlackBuild
+++ b/source/a/usbutils/usbutils.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-0.82}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo usbutils-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j7}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-usbutils
@@ -40,6 +49,9 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -88,6 +100,10 @@ mv $PKG/sbin/update-usbids.sh $PKG/usr/sbin/update-usbids.sh
# upstream name available there too...
( cd $PKG/sbin ; ln -sf /usr/sbin/update-usbids.sh . )
+# Move the pkgconfig directory to @libdir@ instead of @datadir@
+mkdir $PKG/usr/lib${LIBDIRSUFFIX}
+mv $PKG/usr/share/pkgconfig $PKG/usr/lib${LIBDIRSUFFIX}
+
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -108,9 +124,17 @@ fi
mkdir -p $PKG/usr/doc/usbutils-$VERSION
cp -a \
- AUTHORS COPYING ChangeLog NEWS README \
+ AUTHORS COPYING NEWS README \
$PKG/usr/doc/usbutils-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/a/util-linux-ng/setserial-undef_TIOCGHAYESESP.diff b/source/a/util-linux-ng/setserial-undef_TIOCGHAYESESP.diff
new file mode 100644
index 000000000..97f078437
--- /dev/null
+++ b/source/a/util-linux-ng/setserial-undef_TIOCGHAYESESP.diff
@@ -0,0 +1,13 @@
+diff -Nur setserial-2.17.orig/setserial.c setserial-2.17/setserial.c
+--- setserial-2.17.orig/setserial.c 2000-01-27 09:40:52.000000000 -0600
++++ setserial-2.17/setserial.c 2010-03-29 23:05:27.093878048 -0500
+@@ -26,6 +26,9 @@
+
+ #include "version.h"
+
++/* http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=f53a2ade0bb9f2a81f473e6469155172a96b7c38 */
++#undef TIOCGHAYESESP
++
+ static char version_str[] = "setserial version " SETSERIAL_VERSION ", "
+ SETSERIAL_DATE;
+
diff --git a/source/a/util-linux-ng/util-linux-ng.SlackBuild b/source/a/util-linux-ng/util-linux-ng.SlackBuild
index 2c2ea55e5..386487aba 100755
--- a/source/a/util-linux-ng/util-linux-ng.SlackBuild
+++ b/source/a/util-linux-ng/util-linux-ng.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,14 +22,23 @@
# Slackware build script for util-linux-ng
-VERSION=${VERSION:-2.14.2}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo util-linux-ng*.tar.?z* | cut -d - -f 4 | rev | cut -f 3- -d . | rev)}
+BUILD=${BUILD:-1}
ADJTIMEXVERS=1.23
SETSERIALVERS=2.17
ZIPTOOLVERS=1.4.0
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -39,17 +48,20 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-util-linux-ng
+
rm -rf $PKG
mkdir -p $TMP $PKG
-
cd $TMP || exit 1
rm -rf util-linux-ng-$VERSION
-tar xvf $CWD/util-linux-ng-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/util-linux-ng-$VERSION.tar.xz || exit 1
cd util-linux-ng-$VERSION || exit 1
chown -R root.root .
find . \
@@ -84,6 +96,7 @@ CFLAGS="$SLKCFLAGS" \
--mandir=/usr/man \
--infodir=/usr/info \
--docdir=/usr/doc/util-linux-ng-$VERSION \
+ --disable-static \
--enable-arch \
--enable-agetty \
--disable-init \
@@ -99,12 +112,24 @@ CFLAGS="$SLKCFLAGS" \
--enable-wall \
--enable-write \
--enable-use-tty-group \
+ --enable-libblkid \
+ --enable-libuuid \
+ --disable-uuidd \
--build=$ARCH-slackware-linux \
- --host=$ARCH-slackware-linux \
|| exit 1
make || exit 1
-make install DESTDIR=$PKG
+make install DESTDIR=$PKG || make install DESTDIR=$PKG
+
+# Move the libblkid and libuuid libraries to /lib${LIBSUFFIX}
+mkdir -p $PKG/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ mv libblkid.so.1* $PKG/lib${LIBDIRSUFFIX}
+ mv libuuid.so.1* $PKG/lib${LIBDIRSUFFIX}
+ rm -f libblkid.so libuuid.so
+ ln -sf /lib${LIBDIRSUFFIX}/libblkid.so.1 libblkid.so
+ ln -sf /lib${LIBDIRSUFFIX}/libuuid.so.1 libuuid.so
+)
# Moving things around that have been in the same place
# for 15 years is, IMHO, not a wise idea AT ALL.
@@ -124,12 +149,11 @@ fi
cat ./sys-utils/rdev > $PKG/sbin/rdev
chown root:root $PKG/sbin/rdev
chmod 755 $PKG/sbin/rdev
-#cat ./sys-utils/rdev.8 | gzip -9c > $PKG/usr/man/man8/rdev.8.gz
# Build ziptool
cd $TMP || exit 1
rm -rf ziptool-$ZIPTOOLVERS
-tar xvf $CWD/ziptool-$ZIPTOOLVERS.tar.bz2 || exit 1
+tar xvf $CWD/ziptool-$ZIPTOOLVERS.tar.xz || exit 1
cd ziptool-$ZIPTOOLVERS || exit 1
zcat $CWD/ziptool-fix_build.patch.gz | patch -p1 || exit 1
mkdir scsi
@@ -159,7 +183,7 @@ cat strings.1 | gzip -9c > $PKG/usr/man/man1/strings.1.gz
# installing just the A series will not have a hostname (null):
cd $TMP || exit 1
rm -rf net-tools-1.60
-tar xvf $CWD/net-tools-1.60.tar.bz2
+tar xvf $CWD/net-tools-1.60.tar.xz
cd net-tools-1.60
zcat $CWD/net-tools_1.60-19.diff.gz | patch -p1 || exit
zcat $CWD/net-tools.diff.gz | patch -p1 || exit
@@ -205,8 +229,9 @@ tar xvf $CWD/setserial-$SETSERIALVERS.tar.gz || exit 1
cd setserial-$SETSERIALVERS || exit 1
chown -R root:root .
zcat $CWD/setserial-rc.serial.diff.gz | patch -E -p1 --verbose || exit 1
+zcat $CWD/setserial-undef_TIOCGHAYESESP.diff.gz | patch -E -p1 --verbose || exit 1
# The original config.{guess,sub} do not work on x86_64
-cp -p /usr/share/libtool/config.{guess,sub} .
+cp -p /usr/share/libtool/config/config.{guess,sub} .
./configure --prefix=/usr || exit 1
make || exit 1
strip setserial
@@ -272,7 +297,8 @@ rm $PKG/usr/info/dir
gzip -9 $PKG/usr/info/*
mkdir -p $PKG/usr/doc/util-linux-ng-$VERSION
-cp ABOUT-NLS AUTHORS COPYING DEPRECATED NEWS README* TODO docs/* \
+cp -a AUTHORS COPYING DEPRECATED NEWS README* TODO \
+ docs/v${VERSION}-ReleaseNotes \
$PKG/usr/doc/util-linux-ng-$VERSION
mkdir $PKG/install
diff --git a/source/a/xfsprogs/xfsprogs.SlackBuild b/source/a/xfsprogs/xfsprogs.SlackBuild
index 7ef1c07c6..cf832cfb9 100755
--- a/source/a/xfsprogs/xfsprogs.SlackBuild
+++ b/source/a/xfsprogs/xfsprogs.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=3.0.1
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo xfsprogs-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-xfsprogs
@@ -40,6 +49,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -85,11 +97,28 @@ mv $PKG/usr/doc/xfsprogs $PKG/usr/doc/xfsprogs-$VERSION
cp -a README doc/COPYING doc/CREDITS doc/PORTING \
$PKG/usr/doc/xfsprogs-$VERSION
+rm -f $PKG/usr/doc/xfsprogs-$VERSION/CHANGES.gz
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r doc/CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat doc/CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r doc/CHANGES $DOCSDIR/CHANGES
+fi
+
+# The install location for many binaries changed with the update to 3.1.1,
+# but it seems like the wrong place to put most of this stuff:
+mkdir -p $PKG/usr/sbin
+mv $PKG/sbin/xfs_* $PKG/usr/sbin
+mv $PKG/usr/sbin/xfs_repair $PKG/sbin
+
# Remove bogus files:
rm -f $PKG/lib${LIBDIRSUFFIX}/*.a $PKG/lib${LIBDIRSUFFIX}/*.so \
$PKG/lib${LIBDIRSUFFIX}/*.la $PKG/usr/lib${LIBDIRSUFFIX}/*.la
# Make /usr/lib/libhandle.so a symlink to /lib/libhandle.so.1:
if [ -f $PKG/lib${LIBDIRSUFFIX}/libhandle.so.1 ]; then
+ mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}
( cd $PKG/usr/lib${LIBDIRSUFFIX}
rm -f libhandle.so
ln -sf /lib${LIBDIRSUFFIX}/libhandle.so.1 libhandle.so
diff --git a/source/a/xz/xz.SlackBuild b/source/a/xz/xz.SlackBuild
index 240334178..205a12ef6 100755
--- a/source/a/xz/xz.SlackBuild
+++ b/source/a/xz/xz.SlackBuild
@@ -22,10 +22,19 @@
# SUCH DAMAGE.
PRGNAM=xz
-VERSION=${VERSION:-4.999.8beta}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-4.999.9beta}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
case "$ARCH" in
i486) SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -75,6 +84,7 @@ CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
+ --docdir=/usr/doc/xz-$VERSION \
--sysconfdir=/etc \
--mandir=/usr/man \
--enable-shared \
diff --git a/source/ap/alsa-utils/alsa-utils.SlackBuild b/source/ap/alsa-utils/alsa-utils.SlackBuild
index c918ba526..14398aab0 100755
--- a/source/ap/alsa-utils/alsa-utils.SlackBuild
+++ b/source/ap/alsa-utils/alsa-utils.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,33 +21,47 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.0.18
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo alsa-utils-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-alsa-utils
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "arm" ]; then
+ SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "armel" ]; then
+ SLKCFLAGS="-O2 -march=armv4t"
+ LIBDIRSUFFIX=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-alsa-utils
-
rm -rf $PKG
mkdir -p $TMP $PKG
-
cd $TMP
rm -rf alsa-utils-$VERSION
-tar xvf $CWD/alsa-utils-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/alsa-utils-$VERSION.tar.?z* || exit 1
cd alsa-utils-$VERSION || exit 1
zcat $CWD/alsa-utils.alsaconf.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit
@@ -92,12 +106,20 @@ fi
mkdir -p $PKG/usr/doc/alsa-utils-$VERSION
cp -a \
- COPYING ChangeLog INSTALL TODO \
+ COPYING INSTALL TODO \
seq/aconnect/README.aconnect \
seq/aseqnet/README.aseqnet \
$PKG/usr/doc/alsa-utils-$VERSION
cp -a alsamixer/README $PKG/usr/doc/alsa-utils-$VERSION/README.alsamixer
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/ap/alsa-utils/alsa-utils.alsaconf.diff b/source/ap/alsa-utils/alsa-utils.alsaconf.diff
index c20bf72e7..92e05b832 100644
--- a/source/ap/alsa-utils/alsa-utils.alsaconf.diff
+++ b/source/ap/alsa-utils/alsa-utils.alsaconf.diff
@@ -1,27 +1,6 @@
---- ./alsaconf/alsaconf.in.orig 2007-05-31 03:07:21.000000000 -0500
-+++ ./alsaconf/alsaconf.in 2007-06-05 19:01:03.000000000 -0500
-@@ -50,7 +50,9 @@
- }
-
- # Check for GNU/Linux distributions
--if [ -f /etc/SuSE-release ]; then
-+if [ -f /etc/slackware-version ]; then
-+ distribution="slackware"
-+elif [ -f /etc/SuSE-release ]; then
- distribution="suse"
- suse_version=$(grep 'VERSION = ' /etc/SuSE-release | sed -e s/'VERSION = '//)
- elif [ -f /etc/UnitedLinux-release ]; then
-@@ -490,6 +492,8 @@
-
- if [ "$distribution" = "debian" ]; then
- rcalsasound=/etc/init.d/alsa
-+elif [ -x /etc/rc.d/rc.alsa ]; then
-+ rcalsasound=/etc/rc.d/rc.alsa
- elif [ -x /etc/init.d/alsasound ]; then
- rcalsasound=/etc/init.d/alsasound
- elif [ -x /usr/sbin/rcalsasound ]; then
---- ./alsaconf/alsaconf.8.orig 2007-05-31 03:07:21.000000000 -0500
-+++ ./alsaconf/alsaconf.8 2007-06-05 19:01:03.000000000 -0500
+diff -Nur alsa-utils-1.0.21.orig/alsaconf/alsaconf.8 alsa-utils-1.0.21/alsaconf/alsaconf.8
+--- alsa-utils-1.0.21.orig/alsaconf/alsaconf.8 2009-08-31 10:13:36.000000000 -0500
++++ alsa-utils-1.0.21/alsaconf/alsaconf.8 2009-11-11 23:45:11.943377777 -0600
@@ -16,8 +16,6 @@
This manual page documents briefly the
.B alsaconf
@@ -52,3 +31,26 @@
-This manual page was written by Jordi Mallach <jordi@debian.org>,
-for the Debian system (but may be used by others).
+This manual page was written by Jordi Mallach <jordi@debian.org>.
+diff -Nur alsa-utils-1.0.21.orig/alsaconf/alsaconf.in alsa-utils-1.0.21/alsaconf/alsaconf.in
+--- alsa-utils-1.0.21.orig/alsaconf/alsaconf.in 2009-08-31 10:13:36.000000000 -0500
++++ alsa-utils-1.0.21/alsaconf/alsaconf.in 2009-11-11 23:44:21.081360666 -0600
+@@ -50,7 +50,9 @@
+ }
+
+ # Check for GNU/Linux distributions
+-if [ -f /etc/SuSE-release ]; then
++if [ -f /etc/slackware-version ]; then
++ distribution="slackware"
++elif [ -f /etc/SuSE-release ]; then
+ distribution="suse"
+ suse_version=$(grep 'VERSION = ' /etc/SuSE-release | sed -e s/'VERSION = '//)
+ elif [ -f /etc/UnitedLinux-release ]; then
+@@ -305,7 +307,7 @@
+ elif [ "$kernel" = "new" ]; then
+ cfgfile="/etc/modprobe.conf"
+ if [ -d /etc/modprobe.d ]; then
+- cfgout="/etc/modprobe.d/50-sound.conf"
++ cfgout="/etc/modprobe.d/sound.conf"
+ cfgoldout="/etc/modprobe.d/sound"
+ if [ ! -f $cfgout ]; then
+ modver=$(modprobe -V | sed -e's/^module-init-tools version //')
diff --git a/source/ap/ash/ash.SlackBuild b/source/ap/ash/ash.SlackBuild
index deaad12d1..f83113c25 100755
--- a/source/ap/ash/ash.SlackBuild
+++ b/source/ap/ash/ash.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,8 +21,17 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
VERSION=0.4.0
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -32,7 +41,8 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-tar xzvf $CWD/ash-$VERSION.tar.gz
+rm -rf ash-$VERSION
+tar xzvf $CWD/ash-$VERSION.tar.gz || exit 1
cd ash-$VERSION
chown -R root:root .
( cd $CWD/patches
diff --git a/source/ap/ash/patches/ash-hetio.patch b/source/ap/ash/patches/ash-hetio.patch
index c416cde53..a6800897b 100644
--- a/source/ap/ash/patches/ash-hetio.patch
+++ b/source/ap/ash/patches/ash-hetio.patch
@@ -177,7 +177,7 @@ diff -urN ash-0.4.0/hetio.c ash-0.4.0-/hetio.c
+ out1str("\b \b");
+ --*cursor;
+ memmove(parsenextc + *cursor, parsenextc + *cursor + 1,
-+ BUFSIZ - *cursor + 1);
++ BUFSIZ - (*cursor + 1));
+
+ for (j = *cursor; j < (BUFSIZ - 1); j++) {
+ if (!*(parsenextc + j))
diff --git a/source/ap/cdrtools/cdrtools.SlackBuild b/source/ap/cdrtools/cdrtools.SlackBuild
index 49aa08c08..b72c8a13e 100755
--- a/source/ap/cdrtools/cdrtools.SlackBuild
+++ b/source/ap/cdrtools/cdrtools.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.01.01a57
+VERSION=${VERSION:-$(echo cdrtools-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
+BUILD=${BUILD:-1}
+
ZISOFSTOOLS=1.0.8
-ARCH=${ARCH:-x86_64}
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-3}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -46,21 +55,29 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-INS_BASE=/usr make -e $NUMJOBS || exit 1
+make -e $NUMJOBS INS_BASE=/usr || exit 1
# Without this second run, cdda2wav is skipped...
-INS_BASE=/usr make -e || exit 1
-INS_BASE=$PKG/usr make -e install || exit 1
+make -e INS_BASE=/usr || exit 1
+make -e install INS_BASE=/usr DEST_DIR=$PKG || exit 1
+
+# I don't know why this couldn't be "/etc/cdrtools" or something, but since
+# getty uses it already I'm not going to argue the point.
+mv $PKG/etc/default/cdrecord $PKG/etc/default/cdrecord.new
+
+# These don't need to be in the package, IMHO.
+rm -rf $PKG/usr/include \
+ $PKG/usr/lib/profiled \
+ $PKG/usr/lib/*.a \
+ $PKG/usr/man/man5
+
+# Next big hole? ;) (don't ship rscsi)
+rm -r $PKG/usr/sbin
+rm -f $PKG/etc/default/rscsi $PKG/usr/man/man1/rscsi.1
# Remove dupes:
rm -rf $PKG/usr/share/doc
rmdir $PKG/usr/share
-# I don't know why this couldn't be "/etc/cdrtools" or something, but since
-# getty uses it already I'm not going to argue the point.
-mkdir -p $PKG/etc/default
-cat cdrecord/cdrecord.dfl > $PKG/etc/default/cdrecord.new
-cat rscsi/rscsi.dfl > $PKG/etc/default/rscsi.new
-
mkdir -p $PKG/usr/doc/cdrtools-$VERSION
cp -a \
ABOUT AN-* BUILD CDDL* COMPILE CONTRIBUTING COPYING* Changelog \
@@ -68,7 +85,6 @@ cp -a \
$PKG/usr/doc/cdrtools-$VERSION
chown -R root:root $PKG/usr/doc/cdrtools-$VERSION/*
find $PKG/usr/doc/cdrtools-$VERSION -type f -exec chmod 644 {} \;
-
(
cd mkisofs
mkdir -p $PKG/usr/doc/cdrtools-$VERSION/mkisofs
@@ -87,23 +103,11 @@ find $PKG/usr/doc/cdrtools-$VERSION -type f -exec chmod 644 {} \;
chown root:root $PKG/usr/doc/cdrtools-$VERSION/cdda2wav/*
chmod 644 $PKG/usr/doc/cdrtools-$VERSION/cdda2wav/*
)
-
-# These don't need to be in the package, IMHO.
-rm -rf $PKG/usr/include $PKG/usr/man/man5 $PKG/usr/man/man1/cdda2ogg.1 $PKG/usr/lib/profiled $PKG/usr/lib/*.a
-
-# Fix permissions:
-cd $PKG
-find . -type d -exec chmod 755 {} \;
-chown root:root -R $PKG
-find $PKG/usr/man -type f -exec chmod 644 {} \;
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-chmod 755 $PKG/usr/bin/*
-
-( cd $PKG/usr/bin ; ln -sf mkisofs mkhybrid )
-
-# Next big hole? ;)
-rm -r $PKG/usr/sbin
-rm -f $PKG/usr/doc/cdrtools-$VERSION/README.rscsi
+# The entire ChangeLog is excessive for most users:
+cat $PKG/usr/doc/cdrtools-$VERSION/Changelog | head -n 1000 > $PKG/usr/doc/cdrtools-$VERSION/CL
+mv $PKG/usr/doc/cdrtools-$VERSION/CL $PKG/usr/doc/cdrtools-$VERSION/Changelog
+cat $PKG/usr/doc/cdrtools-$VERSION/mkisofs/ChangeLog | head -n 1000 > $PKG/usr/doc/cdrtools-$VERSION/mkisofs/CL
+mv $PKG/usr/doc/cdrtools-$VERSION/mkisofs/CL $PKG/usr/doc/cdrtools-$VERSION/mkisofs/ChangeLog
mkdir -p $PKG/install
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
@@ -120,16 +124,25 @@ find . \
-exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-./configure --prefix=/usr
+CFLAGS="-O2" ./configure --prefix=/usr --build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
cat mkzftree > $PKG/usr/bin/mkzftree
-chmod 755 $PKG/usr/bin/mkzftree
+chmod 0755 $PKG/usr/bin/mkzftree
cat mkzftree.1 | gzip -9c > $PKG/usr/man/man1/mkzftree.1.gz
mkdir -p $PKG/usr/doc/zisofs-tools-$ZISOFSTOOLS
cp -a \
CHANGES COPYING INSTALL README zisofs.magic \
$PKG/usr/doc/zisofs-tools-$ZISOFSTOOLS
+# Fix permissions:
+cd $PKG
+find . -type d -exec chmod 755 {} \;
+chown root:root -R $PKG
+find $PKG/usr/man -type f -exec chmod 644 {} \;
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+find $PKG/usr/doc/cdrtools-$VERSION -type f -exec chmod 0644 {} \;
+chmod 0755 $PKG/usr/bin/*
+
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
diff --git a/source/ap/cdrtools/doinst.sh b/source/ap/cdrtools/doinst.sh
index 78d62faa9..8d3d56273 100644
--- a/source/ap/cdrtools/doinst.sh
+++ b/source/ap/cdrtools/doinst.sh
@@ -1,14 +1,13 @@
-#!/bin/sh
config() {
NEW="$1"
- OLD="`dirname $NEW`/`basename $NEW .new`"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
# If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
- elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
rm $NEW
fi
# Otherwise, we leave the .new copy for the admin to consider...
}
config etc/default/cdrecord.new
-config etc/default/rscsi.new
+
diff --git a/source/ap/cupsddk/cupsddk.SlackBuild b/source/ap/cupsddk/cupsddk.SlackBuild
deleted file mode 100755
index 48157ffc9..000000000
--- a/source/ap/cupsddk/cupsddk.SlackBuild
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/sh
-
-# Copyright 2009 Robby Workman, Northport, AL, USA
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Slackware build script for cupsddk
-
-
-VERSION=${VERSION:-1.2.3}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
-
-NUMJOBS=${NUMJOBS:--j6}
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-cupsddk
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-fi
-
-rm -rf $PKG
-mkdir -p $TMP $PKG
-cd $TMP || exit 1
-rm -rf cupsddk-$VERSION
-tar xvf $CWD/cupsddk-${VERSION}-source.tar.bz2 || exit 1
-cd cupsddk-$VERSION || exit 1
-chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --with-docdir=/usr/doc/cupsddk-$VERSION \
- --build=$ARCH-slackware-linux
-
-make $NUMJOBS || make || exit 1
-make install BUILDROOT=$PKG || exit 1
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" \
- | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-
-cp -a \
- *.txt doc/*.html doc/images \
- $PKG/usr/doc/cupsddk-$VERSION
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/cupsddk-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/ap/cupsddk/slack-desc b/source/ap/cupsddk/slack-desc
deleted file mode 100644
index e4afd3522..000000000
--- a/source/ap/cupsddk/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|' on
-# the right side marks the last column you can put a character in. You must make
-# exactly 11 lines for the formatting to be correct. It's also customary to
-# leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-cupsddk: cupsddk (CUPS Driver Development Kit)
-cupsddk:
-cupsddk: The CUPS Driver Development Kit (DDK) provides a suite of standard
-cupsddk: drivers, a PPD file compiler, and other utilities that can be used
-cupsddk: to develop printer drivers for CUPS and other printing environments.
-cupsddk: CUPS provides a portable printing layer for UNIX®-based operatin
-cupsddk: systems. The CUPS DDK provides the means for mass-producing PPD
-cupsddk: files and drivers/filters for CUPS-based printer drivers.
-cupsddk:
-cupsddk:
-cupsddk:
diff --git a/source/ap/diffutils/diffutils-sdiff-no-waitpid.patch b/source/ap/diffutils/diffutils-sdiff-no-waitpid.patch
index a41b11648..c8eefb44b 100644
--- a/source/ap/diffutils/diffutils-sdiff-no-waitpid.patch
+++ b/source/ap/diffutils/diffutils-sdiff-no-waitpid.patch
@@ -1,6 +1,7 @@
---- diffutils-2.8.4/src/sdiff.c.orig 2002-06-17 00:55:42.000000000 -0500
-+++ diffutils-2.8.4/src/sdiff.c 2003-01-08 03:04:02.000000000 -0600
-@@ -692,7 +692,7 @@
+diff -Nur diffutils-2.9.orig/src/sdiff.c diffutils-2.9.new/src/sdiff.c
+--- diffutils-2.9.orig/src/sdiff.c 2010-02-11 03:39:17.000000000 -0600
++++ diffutils-2.9.new/src/sdiff.c 2010-02-14 02:28:19.077953690 -0600
+@@ -715,7 +715,7 @@
ck_fclose (out);
{
@@ -9,7 +10,7 @@
int werrno = 0;
#if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK)
-@@ -701,11 +701,6 @@
+@@ -724,11 +724,6 @@
werrno = errno;
#else
ck_fclose (diffout);
diff --git a/source/ap/diffutils/diffutils.SlackBuild b/source/ap/diffutils/diffutils.SlackBuild
index 50ac985d3..f338b71da 100755
--- a/source/ap/diffutils/diffutils.SlackBuild
+++ b/source/ap/diffutils/diffutils.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,13 +21,23 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.8.1
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+PKGNAM=diffutils
+VERSION=3.0
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-diffutils
+PKG=$TMP/package-${PKGNAM}
if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
@@ -37,15 +47,17 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf diffutils-$VERSION
-tar xzvf $CWD/diffutils-$VERSION.tar.gz
-cd diffutils-$VERSION
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.xz
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
@@ -61,17 +73,17 @@ touch man/sdiff.1
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
--program-prefix="" \
--program-suffix="" \
- $ARCH-slackware-linux
+ --build=$ARCH-slackware-linux
make || exit 1
make install DESTDIR=$PKG || exit 1
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-)
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
# Compress and if needed symlink the man pages:
if [ -d $PKG/usr/man ]; then
@@ -96,15 +108,22 @@ if [ -d $PKG/usr/info ]; then
)
fi
-mkdir -p $PKG/usr/doc/diffutils-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
- ABOUT-NLS AUTHORS COPYING INSTALLME NEWS README THANKS \
- $PKG/usr/doc/diffutils-$VERSION
+ AUTHORS COPYING NEWS README THANKS TODO \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
-makepkg -l y -c n $TMP/diffutils-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/ap/foomatic-filters/foomatic-filters.SlackBuild b/source/ap/foomatic-filters/foomatic-filters.SlackBuild
index fbf949039..9454f6754 100755
--- a/source/ap/foomatic-filters/foomatic-filters.SlackBuild
+++ b/source/ap/foomatic-filters/foomatic-filters.SlackBuild
@@ -22,10 +22,19 @@
PKGNAM=foomatic-filters
-VERSION=${VERSION:-4.0.2}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -37,6 +46,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -48,7 +60,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.gz || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION || exit 1
# Make sure ownerships and permissions are sane:
@@ -111,9 +123,17 @@ fi
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- COPYING ChangeLog README STANDARD_installation TODO USAGE \
+ COPYING README STANDARD_installation TODO USAGE \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/ap/ghostscript/ghostscript-pdf2dsc.patch b/source/ap/ghostscript/ghostscript-pdf2dsc.patch
new file mode 100644
index 000000000..31b6b5440
--- /dev/null
+++ b/source/ap/ghostscript/ghostscript-pdf2dsc.patch
@@ -0,0 +1,12 @@
+diff -up ghostscript-8.71/lib/pdf2dsc.ps.pdf2dsc ghostscript-8.71/lib/pdf2dsc.ps
+--- ghostscript-8.71/lib/pdf2dsc.ps.pdf2dsc 2010-02-20 15:50:51.287734970 +0000
++++ ghostscript-8.71/lib/pdf2dsc.ps 2010-02-20 15:51:02.902609964 +0000
+@@ -116,7 +116,7 @@ systemdict /.setsafe known { .setsafe }
+ DSCfile PDFname write==only
+ ( \(r\) file { DELAYSAFER { .setsafe } if } stopped pop\n) puts
+ ( pdfopen begin\n) puts
+- ( copy_trailer_attrs\n) puts
++ ( process_trailer_attrs\n) puts
+ (%%EndSetup\n) puts
+
+ /.hasPageLabels false def % see "Page Labels" in the PDF Reference
diff --git a/source/ap/ghostscript/ghostscript.SlackBuild b/source/ap/ghostscript/ghostscript.SlackBuild
index b0bb34ba3..a17d34286 100755
--- a/source/ap/ghostscript/ghostscript.SlackBuild
+++ b/source/ap/ghostscript/ghostscript.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,18 @@
PKGNAM=ghostscript
-VERSION=${VERSION:-8.70}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
-
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -42,6 +50,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
@@ -49,6 +60,8 @@ rm -rf ${PKGNAM}-${VERSION}
tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
+zcat $CWD/ghostscript-pdf2dsc.patch.gz | patch -p1 --verbose || exit 1
+
## Regenerate ./configure:
#sh autogen.sh
@@ -74,9 +87,9 @@ find . \
--program-prefix= \
--program-suffix= \
--build=$ARCH-slackware-linux
- make
- make install
- make install DESTDIR=$PKG
+ make || exit 1
+ make install || exit 1
+ make install DESTDIR=$PKG || exit 1
) || exit 1
# Configure:
diff --git a/source/ap/gphoto2/gphoto2.SlackBuild b/source/ap/gphoto2/gphoto2.SlackBuild
index 9670b082f..31575b6ff 100755
--- a/source/ap/gphoto2/gphoto2.SlackBuild
+++ b/source/ap/gphoto2/gphoto2.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,15 +21,25 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=gphoto2
-VERSION=2.4.5
-ARCH=${ARCH:-x86_64}
+PKGNAM=gphoto2
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -37,14 +47,16 @@ elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root.root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -85,14 +97,22 @@ if [ -d $PKG/usr/man ]; then
)
fi
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING* INSTALL NEWS README TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/ap/gutenprint/gutenprint.SlackBuild b/source/ap/gutenprint/gutenprint.SlackBuild
index 94fb1cbc0..e713eefbc 100755
--- a/source/ap/gutenprint/gutenprint.SlackBuild
+++ b/source/ap/gutenprint/gutenprint.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,9 +21,18 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=5.2.4
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-$(echo gutenprint-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -100,10 +112,15 @@ cp -a \
mv $PKG/usr/share/gutenprint/doc/* $PKG/usr/doc/gutenprint-${VERSION}
rmdir $PKG/usr/share/gutenprint/doc
-# If you want 1MB of ChangeLog, it's in the source...
-rm -f $PKG/usr/doc/gutenprint-${VERSION}/ChangeLog
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
-# Big... again, it's in the source if you want it.
+# Big... it's in the source if you want it.
rm -f $PKG/usr/share/gutenprint/samples/profile.jpg
rm -f $PKG/usr/doc/gutenprint-${VERSION}/*.pdf
diff --git a/source/ap/hplip/hplip.SlackBuild b/source/ap/hplip/hplip.SlackBuild
index 64462a78e..fd944d226 100755
--- a/source/ap/hplip/hplip.SlackBuild
+++ b/source/ap/hplip/hplip.SlackBuild
@@ -2,8 +2,8 @@
# Slackware build script for hplip
-# Copyright 2006-2009 Robby Workman, Northport, Alabama, USA
-# Copyright 2006-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006-2010 Robby Workman, Northport, Alabama, USA
+# Copyright 2006-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,13 +23,22 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=hplip
-VERSION=${VERSION:-3.9.4b}
-ARCH=${ARCH:-x86_64}
+PKGNAM=hplip
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -39,19 +48,22 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
@@ -60,9 +72,6 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Fix a segfault bug
-zcat $CWD/hplip.prevent_segfault.diff.gz | patch -p1 || exit 1
-
# Fix udev rules for current versions of udev
sed -i 's/SYSFS/ATTR/g' data/rules/*.rules
# Fix ownership in udev rules file
@@ -81,6 +90,7 @@ CXXFLAGS="$SLKCFLAGS" \
--with-docdir=/usr/doc/hplip-$VERSION \
--with-hpppddir=/usr/share/cups/model/HP \
--with-drvdir=/usr/share/cups/drv/hp \
+ --enable-hpijs-install \
--enable-shadow-build \
--enable-scan-build \
--enable-gui-build \
@@ -108,5 +118,5 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/ap/hplip/hplip.prevent_segfault.diff b/source/ap/hplip/hplip.prevent_segfault.diff
deleted file mode 100644
index 1021a2e65..000000000
--- a/source/ap/hplip/hplip.prevent_segfault.diff
+++ /dev/null
@@ -1,23 +0,0 @@
-Thanks to Tim Waugh <twaugh redhat com> for the patch
-Prevent crash when DEVICE_URI/PRINTER environment variables are not
- set (https://bugzilla.redhat.com/show_bug.cgi?id=479808 comment 6)
-
-diff -Nur hplip-3.9.4b.old/prnt/hpijs/hpijs.cpp hplip-3.9.4b.new/prnt/hpijs/hpijs.cpp
---- hplip-3.9.4b.old/prnt/hpijs/hpijs.cpp 2009-04-29 15:36:54.000000000 -0500
-+++ hplip-3.9.4b.new/prnt/hpijs/hpijs.cpp 2009-06-09 00:41:44.684172840 -0500
-@@ -218,8 +218,14 @@
- // call dbus here
- const char *user_name = " ";
- const char *title = " ";
-+ char *device_uri = getenv ("DEVICE_URI");
-+ char *printer = getenv("PRINTER");
- int job_id = 0;
-- SendDbusMessage (getenv ("DEVICE_URI"), getenv("PRINTER"),
-+ if (!device_uri)
-+ device_uri = "";
-+ if (!printer)
-+ printer = "";
-+ SendDbusMessage (device_uri, printer,
- EVENT_PRINT_FAILED_MISSING_PLUGIN,
- user_name, job_id, title);
- BUG("unable to set device=%s, err=%d\n", svalue, r);
diff --git a/source/ap/jed/jed.SlackBuild b/source/ap/jed/jed.SlackBuild
index 68c851ff8..d6da7b486 100755
--- a/source/ap/jed/jed.SlackBuild
+++ b/source/ap/jed/jed.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,11 +20,21 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=0.99-18
-PKGVER=0.99_18
-ARCH=${ARCH:-x86_64}
+VERSION=0.99-19
+PKGVER=0.99_19
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-3}
if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
@@ -34,6 +44,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
@@ -45,8 +57,6 @@ cd $TMP
rm -rf jed-$VERSION
tar xvf $CWD/jed-$VERSION.tar.bz2 || exit 1
cd jed-$VERSION
-zcat $CWD/jed.mouse.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
-zcat $CWD/jed.multibyte.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
chown -R root:root .
find . \
@@ -59,13 +69,14 @@ JED_ROOT=/usr/share/jed \
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
+ --mandir=/usr/man \
--with-slang=/usr \
--build=$ARCH-slackware-linux
make clean
make all rgrep $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-cp src/objs/rgrep $PKG/usr/bin
+cp src/*objs/rgrep $PKG/usr/bin
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
diff --git a/source/ap/jed/jed.mouse.diff b/source/ap/jed/jed.mouse.diff
deleted file mode 100644
index 4ff607169..000000000
--- a/source/ap/jed/jed.mouse.diff
+++ /dev/null
@@ -1,17 +0,0 @@
---- ./src/Makefile.in.orig 2006-02-15 21:09:50.000000000 -0600
-+++ ./src/Makefile.in 2006-06-25 23:10:19.000000000 -0500
-@@ -52,10 +52,10 @@
- #---------------------------------------------------------------------------
- # 1. Linux GPM Mouse support
- # Uncomment next FOUR lines for GPM mouse support
--#MOUSEFLAGS = -DUSE_GPM_MOUSE
--#MOUSELIB = -lgpm
--#GPMMOUSEO = gpmmouse.o
--#OBJGPMMOUSEO = $(OBJDIR)/$(GPMMOUSEO)
-+MOUSEFLAGS = -DUSE_GPM_MOUSE
-+MOUSELIB = -lgpm
-+GPMMOUSEO = gpmmouse.o
-+OBJGPMMOUSEO = $(OBJDIR)/$(GPMMOUSEO)
-
-
- # 2. XFree86 XRENDERFONT (Anti-aliased font) support for XJED
diff --git a/source/ap/jed/jed.multibyte.diff b/source/ap/jed/jed.multibyte.diff
deleted file mode 100644
index 266fece72..000000000
--- a/source/ap/jed/jed.multibyte.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./src/misc.c.orig 2006-03-04 01:55:05.000000000 -0600
-+++ ./src/misc.c 2006-06-25 23:14:32.000000000 -0500
-@@ -741,7 +741,7 @@
-
- void jed_ungetkey_wchar (SLwchar_Type wc)
- {
-- SLuchar_Type *b, buf[SLUTF8_MAX_MBLEN];
-+ SLuchar_Type *b, buf[JED_MAX_MULTIBYTE_SIZE];
-
- if (NULL == (b = jed_wchar_to_multibyte (wc, buf)))
- return;
diff --git a/source/ap/linuxdoc-tools/ChangeLog.txt b/source/ap/linuxdoc-tools/ChangeLog.txt
index 86f1eb7f8..ef6c0a2c2 100644
--- a/source/ap/linuxdoc-tools/ChangeLog.txt
+++ b/source/ap/linuxdoc-tools/ChangeLog.txt
@@ -1,3 +1,30 @@
+Wed Feb 10 10:02:16 GMT 2010
+ Stuart Winter <mozes@slackware.com>
+ linuxdoc-tools 0.9.66, build 2.
+ * Applied an upstream patch to gtk-doc-1.13, fixing problems
+ with gtkdoc-fixxref.
+ * Updated build script to work with the new rpm2tgz which now
+ packages all src RPM contents into the root of the tar archive
+ rather than a sub directory.
+
+Tue Jan 12 20:42:57 GMT 2010
+ Stuart Winter <mozes@slackware.com>
+ linuxdoc-tools 0.9.66, build 1.
+ * Upgraded to linuxdoc-tools 0.9.66
+ * Upgraded to gnome-doc-utils 0.19.1
+ * Upgraded to gtk-doc 1.13
+ * Upgraded to AsciiDoc 8.5.2.
+ * Upgraded to docbook-xsl 1.75.2.
+ * Upgraded to docbook-xsl-doc 1.75.2.
+
+Tue Nov 10 18:28:49 GMT 2009
+ Stuart Winter <mozes@slackware.com>
+ linuxdoc-tools-0.9.65, build 1.
+ * Upgraded to linuxdoc-tools 0.9.65
+ * Upgraded to gnome-doc-utils-0.18.0
+ * Upgraded to xmlto-0.0.23
+ * Upgraded to asciidoc-8.5.1
+
Sun Aug 2 19:07:43 BST 2009
Stuart Winter <mozes@slackware.com>
linuxdoc-tools-0.9.56, build 5.
diff --git a/source/ap/linuxdoc-tools/arm/build b/source/ap/linuxdoc-tools/arm/build
index d59da3271..3f29e62ca 100755
--- a/source/ap/linuxdoc-tools/arm/build
+++ b/source/ap/linuxdoc-tools/arm/build
@@ -9,9 +9,9 @@ source /usr/share/slackdev/buildkit.sh
# Package metadata:
export PKGNAM=linuxdoc-tools
-export VERSION=${VERSION:-0.9.56}
+export VERSION=${VERSION:-0.9.66}
export PKGARCH=${PKGARCH:-arm}
-export BUILD=${BUILD:-1}
+export BUILD=${BUILD:-2}
export PKGSERIES=${PKGSERIES:-ap}
export SLACKPACKAGE=$PKGNAM-$VERSION-$PKGARCH-$BUILD.tgz
export PKGEXT=${PKGEXT:-tgz}
diff --git a/source/ap/linuxdoc-tools/linuxdoc-tools.build b/source/ap/linuxdoc-tools/linuxdoc-tools.build
index 8d28ea332..cd95c0f08 100755
--- a/source/ap/linuxdoc-tools/linuxdoc-tools.build
+++ b/source/ap/linuxdoc-tools/linuxdoc-tools.build
@@ -14,22 +14,22 @@
###############################################################################
# Version of LDT (which is also the .t?z package version)
-LINUXDOCTOOLSVER=0.9.56
+LINUXDOCTOOLSVER=$PKGVERSION
# Bundled package versions:
SGMLDTD3VER=3.1
SGMLDTD4VER=4.5
XMLDTDVER=4.5
-XSLSTYLESHEETSVER=1.75.1
+XSLSTYLESHEETSVER=1.75.2
DSSSLSTYLESHEETSVER=1.79
SGMLCOMMONVER=0.6.3
OPENJADEVER=1.3.3-pre1
OPENSPVER=1.5.2
-GNOMEDOCUTILSVER=0.17.2
-GTKDOCVER=1.11
+GNOMEDOCUTILSVER=0.19.1
+GTKDOCVER=1.13
SGMLSPLVER=1.03ii
-XMLTOVER=0.0.22
-ASCIIDOCVER=8.4.5
+XMLTOVER=0.0.23
+ASCIIDOCVER=8.5.2
DOCBOOKUTILSVER=0.6.14
# Determine the general CFLAGS for the known architectures:
@@ -61,8 +61,8 @@ esac
# Extract source:
cd $TMP
-tar xvf $CWD/sources/asciidoc-$ASCIIDOCVER.tar.gz || exit 1
-cd asciidoc-$ASCIIDOCVER
+tar xvf $CWD/sources/asciidoc-$ASCIIDOCVER.tar.*z*
+cd asciidoc-$ASCIIDOCVER || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -92,12 +92,12 @@ cp -fav \
# Extract source. We're using a source RPM since it contains a number of
# patches that we need:
cd $TMP
+mkdir sgml-common && cd sgml-common
rpm2tgz $CWD/sources/sgml-common-${SGMLCOMMONVER}*.src.rpm
-tar xvf sgml-common-*src.tgz
-cd sgml-common-$SGMLCOMMONVER-* || exit 1
+tar xvf sgml-common-*src.tgz || exit 1
# The real source archive is stored inside the source RPM, you see:
-tar xvf sgml-common-$SGMLCOMMONVER.tgz || exit 1
-cd sgml-common-$SGMLCOMMONVER
+tar xvf sgml-common-$SGMLCOMMONVER.tgz
+cd sgml-common-$SGMLCOMMONVER || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -138,7 +138,7 @@ install-catalog --add /etc/sgml/sgml-docbook.cat \
# Copy docs:
mkdir -vpm755 /usr/doc/sgml-common-$SGMLCOMMONVER
cp -fav \
- COPYING AUTHORS INSTALL NEWS README ChangeLog ../sgml-common-CHANGES \
+ COPYING AUTHORS INSTALL NEWS README ChangeLog \
/usr/doc/sgml-common-$SGMLCOMMONVER
####################### Install docbooks ############################
@@ -151,12 +151,7 @@ cd sgml-dtd
# but they version number the archive with the latest version.
tar xvf $CWD/sources/docbook_*orig*.tar.gz
cd docbook* || exit 1
-zcat $CWD/sources/docbook_*.diff.gz | patch -p1 || exit 1
-# Don't apply the patches because whilst I know that the problem we have
-# on Slackware does not exist on Debian, I want to keep the Slackware
-# build in line with Linux From Scratch, since their documentation is
-# excellent.
-#for i in debian/patches/*.dpatch ; do patch --verbose -p1 < $i ; done
+chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
@@ -169,6 +164,7 @@ find . \
###############
( cd docbook-$SGMLDTD3VER
+ pwd
# Remove the ENT definitions from the catalog file:
sed -i -e '/ISO 8879/d' docbook.cat
@@ -213,6 +209,7 @@ EOF
( cd docbook-$SGMLDTD4VER
+ pwd
# Remove the ENT definitions from the catalog file:
sed -i -e '/ISO 8879/d' -e '/gml/d' docbook.cat
@@ -246,7 +243,7 @@ EOF
# Copy docs:
mkdir -vpm755 /usr/doc/sgml-dtd4-$SGMLDTD4VER
cp -fav \
- ChangeLog README \
+ README \
/usr/doc/sgml-dtd4-$SGMLDTD4VER/
)
@@ -255,11 +252,11 @@ EOF
# Extract source:
cd $TMP
+mkdir opensp && cd opensp
rpm2tgz $CWD/sources/opensp-${OPENSPVER}*.src.rpm
tar xvf opensp*src.tgz
-cd opensp-${OPENSPVER}* || exit 1
-tar xvf OpenSP-$OPENSPVER.tar.gz || exit 1
-cd OpenSP-$OPENSPVER
+tar xvf OpenSP-$OPENSPVER.tar.gz
+cd OpenSP-$OPENSPVER || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -275,7 +272,8 @@ patch --verbose -p1 < ../opensp-sigsegv.patch || exit 1
# Configure without optimisation. OpenSP & OpenJade
# are sensitive to optimisations, resulting in segfaults,
-# particularly on the ARM platform.
+# particularly on the ARM platform. Apparently -O1 will work but
+# let's just leave it as is.
#
# This is configured not to build the documentation. If anybody really needs
# it, let me know and I'll adjust the build script - it's just a PITA to
@@ -306,24 +304,31 @@ make install DESTDIR=/ || exit 1
# Rename sx to sgml2xml & create symlinks:
mv -f /usr/bin/osx /usr/bin/osgml2xml
( cd /usr/bin ; ln -vfs osgml2xml osx )
-mv -f /usr/man/man1/osx.1 /usr/man/man1/osgml2xml.1
-( cd /usr/man/man1 ; ln -vfs osgml2xml.1 osx.1 )
# Create symlinks to binaries:
( cd /usr/bin
for file in nsgmls sgmlnorm spam spent sgml2xml ; do
- rm -f $file
+ rm -fv $file
ln -vfs o$file $file
done
)
# Fix man pages:
-( cd /usr/man/man1
- for file in nsgmls sgmlnorm spam spent sgml2xml ; do
- rm -f ${file}.1*
- ln -vfs o${file}.1 ${file}.1
- done
-)
+# Sorry, but OpenSP needs xmlto installed to create its man pages and documentation.
+# Due to build dependency order, we build xmlto later on. I did try and move xmlto earlier
+# in the build but didn't get the build order correct. If anybody REALLY misses this documentation,
+# email mozes@slackware.com and I'll have another go at adjusting the build order.
+#
+# Building man pages has been disabled with ./configure --disable-doc-build.
+#
+#( cd /usr/man/man1
+# mv -fv osx.1 osgml2xml.1
+# ln -vfs osgml2xml.1 osx.1
+# for file in nsgmls sgmlnorm spam spent sgml2xml ; do
+# rm -f ${file}.1*
+# ln -vfs o${file}.1 ${file}.1
+# done
+#)
# Rename docs directory:
mv -fv /usr/doc/OpenSP /usr/doc/OpenSP-$OPENSPVER
@@ -334,7 +339,7 @@ mv -fv /usr/doc/OpenSP /usr/doc/OpenSP-$OPENSPVER
# Extract source:
cd $TMP
-tar xvf $CWD/sources/openjade-${OPENJADEVER}.tar.gz
+tar xvf $CWD/sources/openjade-${OPENJADEVER}.tar.*z*
cd openjade-${OPENJADEVER} || exit 1
chown -R root:root .
find . \
@@ -394,13 +399,9 @@ echo "SYSTEM \"http://www.oasis-open.org/docbook/xml/${XMLDTDVER}/docbookx.dtd\"
mkdir -vpm755 /usr/doc/openjade-$OPENJADEVER
cp -fav \
COPYING NEWS README VERSION \
- doc/* dsssl/README.jadetex pubtext jadedoc unicode \
+ doc/* dsssl/README.jadetex pubtext jadedoc \
/usr/doc/openjade-$OPENJADEVER
-# The original package has this file, but it has most of the world's
-# documentation too; we'll leave it in for the time being but I don't like it.
-#rm -f /usr/doc/openjade-$OPENJADEVER/doc/Makefile
-
####################### Build dsssl-stylesheets ####################
# Extract source:
@@ -409,7 +410,7 @@ mkdir docbook-dsssl-$DSSSLSTYLESHEETSVER
cd docbook-dsssl-$DSSSLSTYLESHEETSVER
tar xvf $CWD/sources/docbook-dsssl-$DSSSLSTYLESHEETSVER.tar.bz2 || exit 1
tar xvf $CWD/sources/docbook-dsssl-doc-$DSSSLSTYLESHEETSVER.tar.bz2 || exit 1
-cd docbook-dsssl-$DSSSLSTYLESHEETSVER
+cd docbook-dsssl-$DSSSLSTYLESHEETSVER || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -448,11 +449,11 @@ cp -fav \
# Extract source:
cd $TMP
+mkdir docbook-utils && cd docbook-utils
rpm2tgz $CWD/sources/docbook-utils-${DOCBOOKUTILSVER}*.src.rpm
tar xvf docbook-utils-*src.tgz
-cd docbook-utils-${DOCBOOKUTILSVER}* || exit 1
-tar xvf docbook-utils-$DOCBOOKUTILSVER.tar.gz || exit 1
-cd docbook-utils-$DOCBOOKUTILSVER
+tar xvf docbook-utils-$DOCBOOKUTILSVER.tar.gz
+cd docbook-utils-$DOCBOOKUTILSVER || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -462,6 +463,8 @@ find . \
# Apply patches:
for i in \
+ docbook-utils-rtfmanpage.patch \
+ docbook-utils-sgmlinclude.patch \
docbook-utils-2ndspaces.patch \
docbook-utils-grepnocolors.patch \
docbook-utils-spaces.patch \
@@ -657,17 +660,15 @@ cp -favv \
# Extract source:
cd $TMP
-mkdir docbook-xsl-$XSLSTYLESHEETSVER
-cd docbook-xsl-$XSLSTYLESHEETSVER
+mkdir docbook-style-xsl && cd docbook-style-xsl
rpm2tgz $CWD/sources/docbook-style-xsl-${XSLSTYLESHEETSVER}*.src.rpm
tar xvf docbook-style-xsl*.tgz
-cd docbook-style-xsl-$XSLSTYLESHEETSVER* || exit 1
tar xvf docbook-xsl-$XSLSTYLESHEETSVER.tar.bz2
# This unpacks atop of the main tree:
tar xvf docbook-xsl-doc-$XSLSTYLESHEETSVER.tar.bz2
# Enter unpacked sources:
-cd docbook-xsl-$XSLSTYLESHEETSVER
+cd docbook-xsl-$XSLSTYLESHEETSVER || exit 1
chown -R root:root .
find . \
@@ -730,8 +731,8 @@ cp -fav doc/* README* RELEASE-NOTES* NEWS* \
# Extract source:
cd $TMP
-tar xvf $CWD/sources/xmlto-$XMLTOVER.tar.bz2 || exit 1
-cd xmlto-$XMLTOVER
+tar xvf $CWD/sources/xmlto-$XMLTOVER.tar.*z*
+cd xmlto-$XMLTOVER || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -796,11 +797,10 @@ cp -fav \
# Extract source:
cd $TMP
-#rpm2tgz $CWD/sources/linuxdoc-tools-${LINUXDOCTOOLSVER}*.src.rpm
-#tar xvf linuxdoc-tools-$LINUXDOCTOOLSVER*.tgz
-#cd linuxdoc-tools-$LINUXDOCTOOLSVER* || exit 1
-#tar xvf linuxdoc-tools_$LINUXDOCTOOLSVER.tar.gz
-tar xvf $CWD/sources/linuxdoc-tools_$LINUXDOCTOOLSVER*.tar.gz
+mkdir linuxdoc-tools && cd linuxdoc-tools
+rpm2tgz $CWD/sources/linuxdoc-tools-${LINUXDOCTOOLSVER}*.src.rpm
+tar xvf linuxdoc-tools*.src.tgz
+tar xvf linuxdoc-tools_$LINUXDOCTOOLSVER.tar.gz
cd linuxdoc-tools-$LINUXDOCTOOLSVER || exit 1
chown -R root:root .
@@ -810,14 +810,18 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Remove Tex from the $PATH so that we don't build formats of the linuxdoc-tools
+# guide which don't work with tetex-3. These do work with texlive, but Slackware doesn't
+# ship that, and just how many alternate versions of the documentation do we need anyway? :-)
+OPATH=$PATH
+export PATH=$( echo $PATH | sed -e 's?:/usr/share/texmf/bin??g' -e 's?/usr/share/texmf/bin:??g' )
+
# Apply patches (these are included in the source rpm):
-#for i in \
-# linuxdoc-tools-0.9.13-letter.patch \
-# linuxdoc-tools-0.9.20-lib64.patch ; do
-# patch --verbose -p1 < ../$i
-#done || exit 1
-# Add lib64 in Perl's path on a 64bit machine:
-patch --verbose -p1 < $CWD/sources/linuxdoc-tools.lib64.diff || exit 1
+for i in \
+ linuxdoc-tools-0.9.13-letter.patch \
+ linuxdoc-tools-0.9.20-lib64.patch ; do
+ patch --verbose -p1 < ../$i
+done || exit 1
# Find out what our Vendor perl directory is:
eval $(perl '-V:installvendorlib')
@@ -835,9 +839,9 @@ mkdir -p $PKG/$installvendorlib
# --with-texdir=/usr/share/texmf/tex/latex/ \
# Adjust doc dir location:
-sed -i 's?share/doc/linuxdoc-tools?doc/linuxdoc-tools-'"$$LINUXDOCTOOLSVER"'?g' Makefile
+sed -i 's?share/doc/linuxdoc-tools?doc/linuxdoc-tools-'"$LINUXDOCTOOLSVER"'?g' Makefile
-#( cd entity-map && autoconf && ./configure )
+( cd entity-map && autoconf && ./configure --prefix=/usr )
# Build serial. This does build in parallel but
# I find linuxdoc-tools to be fragile between versions:
@@ -857,8 +861,8 @@ make install \
# Install shell scripts for sgml2{txt,latex,info}
for i in txt latex info; do \
- install -vpm755 debian/addition/sgml2$$i \
- /usr/bin/sgml2$$i; \
+ install -vpm755 debian/addition/sgml2$i \
+ /usr/bin/sgml2$i; \
done
# Install info page:
@@ -869,12 +873,15 @@ cat debian/linuxdoc-tools.info-base doc/guide.info > /usr/info/linuxdoc-sgml.inf
# 'linuxdoc-tools', let's put our changelog into here:
install -vpm644 $CWD/ChangeLog.txt /usr/doc/linuxdoc-tools-$LINUXDOCTOOLSVER/Slackware-ChangeLog.txt
+# Restore $PATH:
+export PATH=$OPATH
+
####################### Build gnome-doc-utils #######################
# Extract source:
cd $TMP
-tar xvf $CWD/sources/gnome-doc-utils-$GNOMEDOCUTILSVER.tar.bz2
-cd gnome-doc-utils-*
+tar xvf $CWD/sources/gnome-doc-utils-$GNOMEDOCUTILSVER.tar.*z*
+cd gnome-doc-utils-* || exit 1
chown -R root:root .
find . \
@@ -892,6 +899,7 @@ CFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--mandir=/usr/man \
--disable-scrollkeeper \
+ --enable-build-utils \
--build=$ARCH-slackware-linux$HOSTTARGET || exit 1
# No parallel build here because it doesn't work:
@@ -919,6 +927,9 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Apply an upstreamed fix for gtk-doc-1.13:
+bzcat $CWD/sources/gtkdoc-1.13-fixref.patch.bz2 | patch --verbose -p1 || exit 1
+
# Configure:
./configure \
--prefix=/usr \
@@ -944,3 +955,4 @@ cp -fav \
rm -rf /install
mkdir -vpm755 /install
install -vpm644 $CWD/slack-desc /install
+#EOF
diff --git a/source/ap/linuxdoc-tools/postbuildfixes.sh b/source/ap/linuxdoc-tools/postbuildfixes.sh
index b9e305eec..8781faf7d 100755
--- a/source/ap/linuxdoc-tools/postbuildfixes.sh
+++ b/source/ap/linuxdoc-tools/postbuildfixes.sh
@@ -1,9 +1,9 @@
#!/bin/bash
-# Once altertrack has determined what the contents of the package
+# Once slacktrack has determined what the contents of the package
# should be, it copies them into $SLACKTRACKFAKEROOT
# From here we can make modifications to the package's contents
-# immediately prior to the invocation of makepkg: altertrack will
+# immediately prior to the invocation of makepkg: slacktrack will
# do nothing else with the contents of the package after the execution
# of this script.
@@ -20,8 +20,8 @@ fi
# Incase you had CUPS running:
rm -rf etc/cups etc/printcap
-# crond:
-rm -rf var/spool/cron
+# crond & mail (just incase you got a delivery!)
+rm -rf var/spool/{cron,mail}
rmdir var/spool
# perllocal.pod files don't belong in packages.
diff --git a/source/ap/linuxdoc-tools/sources/docbook_4.5-4.diff b/source/ap/linuxdoc-tools/sources/docbook_4.5-4.diff
deleted file mode 100644
index 1993d3f62..000000000
--- a/source/ap/linuxdoc-tools/sources/docbook_4.5-4.diff
+++ /dev/null
@@ -1,1589 +0,0 @@
---- docbook-4.5.orig/debian/patches/00list
-+++ docbook-4.5/debian/patches/00list
-@@ -0,0 +1,4 @@
-+01_remove_entity_sets_and_dcl_from_catalogs
-+10_fix_101779_mention_artheader_to_articleinfo_change
-+11_fix_dbpoolx_mod_header_comment_pubid
-+12_fix_256119_and_turn_on_sgml_mode
---- docbook-4.5.orig/debian/patches/01_remove_entity_sets_and_dcl_from_catalogs.dpatch
-+++ docbook-4.5/debian/patches/01_remove_entity_sets_and_dcl_from_catalogs.dpatch
-@@ -0,0 +1,567 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## 01_remove_entity_sets_and_dcl_from_catalogs.dpatch by
-+## Mark Eichin <eichin@kitten.gen.ma.us> and Adam Di Carlo <aph@debian.org>.
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: This patch:
-+## DP: * removes all SGML declarations from the catalogs, for more info, see
-+## DP: debian/README.docbook.dcl
-+## DP: * removes the ISO entity pointers since they are supplied by sgml-data
-+## DP: * removes Public-IDs for DocBook XML
-+## DP: * forces Public-ID rather than the System-ID in DTD declarations
-+## DP: (closes: <URL:http://bugs.debian.org/97330>)
-+## DP:
-+## DP: <URL:http://packages.debian.org/changelogs/pool/main/d/docbook/current/changelog#versionversion4.4-1>
-+## DP: <URL:http://packages.debian.org/changelogs/pool/main/d/docbook/current/changelog#versionversion4.1-5>
-+## DP: <URL:http://packages.debian.org/changelogs/pool/main/d/docbook/current/changelog#versionversion4.1-2>
-+## DP: <URL:http://packages.debian.org/changelogs/pool/main/d/docbook/current/changelog#versionversion3.0-4>
-+
-+@DPATCH@
-+diff -urNad docbook-4.5~/docbook-2.4.1/docbook.cat docbook-4.5/docbook-2.4.1/docbook.cat
-+--- docbook-4.5~/docbook-2.4.1/docbook.cat 1996-04-16 08:53:16.000000000 +0200
-++++ docbook-4.5/docbook-2.4.1/docbook.cat 2007-03-09 16:39:46.000000000 +0100
-+@@ -27,8 +27,13 @@
-+ -- ...................................................................... --
-+ -- SGML declaration associated with DocBook ............................. --
-+
-+-SGMLDECL "docbook.dcl"
-+-DTDDECL "-//Davenport//DTD DocBook V2.4.1//EN" "docbook.dcl"
-++-- disabled, see README.docbook.dcl --
-++-- SGMLDECL "docbook.dcl" --
-++-- DTDDECL "-//Davenport//DTD DocBook V2.4.1//EN" "docbook.dcl" --
-++
-++ -- ...................................................................... --
-++ -- Prefer PUBID to SYSID ................................................ --
-++OVERRIDE YES
-+
-+ -- ...................................................................... --
-+ -- DocBook driver file .................................................. --
-+@@ -43,28 +48,5 @@
-+ PUBLIC "-//Davenport//ELEMENTS DocBook Document Hierarchy V2.4.1//EN" "dbhier.mod"
-+ PUBLIC "-//Davenport//ELEMENTS DocBook Additional General Entities//EN" "dbgenent.mod"
-+
-+- -- ...................................................................... --
-+- -- ISO entity sets ...................................................... --
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN" "iso-dia.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" "iso-num.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN" "iso-pub.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN" "iso-tech.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN" "iso-lat1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN" "iso-lat2.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN" "iso-grk1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN" "iso-grk2.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN" "iso-grk3.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" "iso-grk4.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" "iso-amsa.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" "iso-amsb.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" "iso-amsc.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" "iso-amsn.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" "iso-amso.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" "iso-amsr.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN" "iso-box.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN" "iso-cyr1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" "iso-cyr2.gml"
-+-
-+ -- End of DocBook catalog data V2.4.1 ................................... --
-+ -- ...................................................................... --
-+diff -urNad docbook-4.5~/docbook-3.0/docbook.cat docbook-4.5/docbook-3.0/docbook.cat
-+--- docbook-4.5~/docbook-3.0/docbook.cat 1996-12-10 16:35:22.000000000 +0100
-++++ docbook-4.5/docbook-3.0/docbook.cat 2007-03-09 16:44:17.000000000 +0100
-+@@ -27,7 +27,12 @@
-+ -- ...................................................................... --
-+ -- SGML declaration associated with DocBook ............................. --
-+
-+-DTDDECL "-//Davenport//DTD DocBook V3.0//EN" "docbook.dcl"
-++-- disabled, see README.docbook.dcl --
-++-- DTDDECL "-//Davenport//DTD DocBook V3.0//EN" "docbook.dcl" --
-++
-++ -- ...................................................................... --
-++ -- Prefer PUBID to SYSID ................................................ --
-++OVERRIDE YES
-+
-+ -- ...................................................................... --
-+ -- DocBook driver file .................................................. --
-+@@ -42,28 +47,5 @@
-+ PUBLIC "-//Davenport//ELEMENTS DocBook Document Hierarchy V3.0//EN" "dbhier.mod"
-+ PUBLIC "-//Davenport//ENTITIES DocBook Additional General Entities V3.0//EN" "dbgenent.mod"
-+
-+- -- ...................................................................... --
-+- -- ISO entity sets ...................................................... --
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN" "iso-dia.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" "iso-num.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN" "iso-pub.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN" "iso-tech.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN" "iso-lat1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN" "iso-lat2.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN" "iso-grk1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN" "iso-grk2.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN" "iso-grk3.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" "iso-grk4.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" "iso-amsa.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" "iso-amsb.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" "iso-amsc.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" "iso-amsn.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" "iso-amso.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" "iso-amsr.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN" "iso-box.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN" "iso-cyr1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" "iso-cyr2.gml"
-+-
-+ -- End of catalog data for DocBook V3.0 ................................. --
-+ -- ...................................................................... --
-+diff -urNad docbook-4.5~/docbook-3.1/docbook.cat docbook-4.5/docbook-3.1/docbook.cat
-+--- docbook-4.5~/docbook-3.1/docbook.cat 1999-02-02 06:53:32.000000000 +0100
-++++ docbook-4.5/docbook-3.1/docbook.cat 2007-03-09 16:44:12.000000000 +0100
-+@@ -19,7 +19,12 @@
-+ -- ...................................................................... --
-+ -- SGML declaration associated with DocBook ............................. --
-+
-+-DTDDECL "-//OASIS//DTD DocBook V3.1//EN" "docbook.dcl"
-++-- disabled, see README.docbook.dcl --
-++-- DTDDECL "-//OASIS//DTD DocBook V3.1//EN" "docbook.dcl" --
-++
-++ -- ...................................................................... --
-++ -- Prefer PUBID to SYSID ................................................ --
-++OVERRIDE YES
-+
-+ -- ...................................................................... --
-+ -- DocBook driver file .................................................. --
-+@@ -36,28 +41,5 @@
-+ PUBLIC "-//OASIS//ENTITIES DocBook Notations V3.1//EN" "dbnotn.mod"
-+ PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V3.1//EN" "dbcent.mod"
-+
-+- -- ...................................................................... --
-+- -- ISO entity sets ...................................................... --
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN" "iso-dia.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" "iso-num.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN" "iso-pub.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN" "iso-tech.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN" "iso-lat1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN" "iso-lat2.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN" "iso-grk1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN" "iso-grk2.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN" "iso-grk3.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" "iso-grk4.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" "iso-amsa.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" "iso-amsb.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" "iso-amsc.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" "iso-amsn.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" "iso-amso.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" "iso-amsr.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN" "iso-box.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN" "iso-cyr1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" "iso-cyr2.gml"
-+-
-+ -- End of catalog data for DocBook V3.1 ................................. --
-+ -- ...................................................................... --
-+diff -urNad docbook-4.5~/docbook-4.0/docbook.cat docbook-4.5/docbook-4.0/docbook.cat
-+--- docbook-4.5~/docbook-4.0/docbook.cat 2000-05-18 21:27:28.000000000 +0200
-++++ docbook-4.5/docbook-4.0/docbook.cat 2007-03-09 16:45:08.000000000 +0100
-+@@ -19,7 +19,12 @@
-+ -- ...................................................................... --
-+ -- SGML declaration associated with DocBook ............................. --
-+
-+-DTDDECL "-//OASIS//DTD DocBook V4.0//EN" "docbook.dcl"
-++-- disabled, see README.docbook.dcl --
-++-- DTDDECL "-//OASIS//DTD DocBook V4.0//EN" "docbook.dcl" --
-++
-++ -- ...................................................................... --
-++ -- Prefer PUBID to SYSID ................................................ --
-++OVERRIDE YES
-+
-+ -- ...................................................................... --
-+ -- DocBook driver file .................................................. --
-+@@ -36,28 +41,5 @@
-+ PUBLIC "-//OASIS//ENTITIES DocBook Notations V4.0//EN" "dbnotn.mod"
-+ PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.0//EN" "dbcent.mod"
-+
-+- -- ...................................................................... --
-+- -- ISO entity sets ...................................................... --
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN" "iso-dia.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" "iso-num.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN" "iso-pub.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN" "iso-tech.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN" "iso-lat1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN" "iso-lat2.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN" "iso-grk1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN" "iso-grk2.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN" "iso-grk3.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" "iso-grk4.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" "iso-amsa.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" "iso-amsb.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" "iso-amsc.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" "iso-amsn.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" "iso-amso.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" "iso-amsr.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN" "iso-box.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN" "iso-cyr1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" "iso-cyr2.gml"
-+-
-+ -- End of catalog data for DocBook V4.0 ................................. --
-+ -- ...................................................................... --
-+diff -urNad docbook-4.5~/docbook-4.1/docbook.cat docbook-4.5/docbook-4.1/docbook.cat
-+--- docbook-4.5~/docbook-4.1/docbook.cat 2000-06-19 16:50:28.000000000 +0200
-++++ docbook-4.5/docbook-4.1/docbook.cat 2007-03-09 16:53:00.000000000 +0100
-+@@ -19,7 +19,12 @@
-+ -- ...................................................................... --
-+ -- SGML declaration associated with DocBook ............................. --
-+
-+-DTDDECL "-//OASIS//DTD DocBook V4.1//EN" "docbook.dcl"
-++-- disabled, see README.docbook.dcl --
-++-- DTDDECL "-//OASIS//DTD DocBook V4.1//EN" "docbook.dcl" --
-++
-++ -- ...................................................................... --
-++ -- Prefer PUBID to SYSID ................................................ --
-++OVERRIDE YES
-+
-+ -- ...................................................................... --
-+ -- DocBook driver file .................................................. --
-+@@ -36,28 +41,5 @@
-+ PUBLIC "-//OASIS//ENTITIES DocBook Notations V4.1//EN" "dbnotn.mod"
-+ PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.1//EN" "dbcent.mod"
-+
-+- -- ...................................................................... --
-+- -- ISO entity sets ...................................................... --
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN" "iso-dia.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" "iso-num.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN" "iso-pub.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN" "iso-tech.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN" "iso-lat1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN" "iso-lat2.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN" "iso-grk1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN" "iso-grk2.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN" "iso-grk3.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" "iso-grk4.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" "iso-amsa.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" "iso-amsb.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" "iso-amsc.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" "iso-amsn.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" "iso-amso.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" "iso-amsr.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN" "iso-box.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN" "iso-cyr1.gml"
-+-PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" "iso-cyr2.gml"
-+-
-+ -- End of catalog data for DocBook V4.1 ................................. --
-+ -- ...................................................................... --
-+diff -urNad docbook-4.5~/docbook-4.2/docbook.cat docbook-4.5/docbook-4.2/docbook.cat
-+--- docbook-4.5~/docbook-4.2/docbook.cat 2002-07-17 18:14:28.000000000 +0200
-++++ docbook-4.5/docbook-4.2/docbook.cat 2007-03-09 16:42:30.000000000 +0100
-+@@ -22,9 +22,6 @@
-+ PUBLIC "-//OASIS//DTD DocBook V4.2//EN"
-+ "docbook.dtd"
-+
-+-PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-+- "docbookx.dtd"
-+-
-+ -- ...................................................................... --
-+ -- DocBook modules ...................................................... --
-+
-+@@ -49,65 +46,5 @@
-+ PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.2//EN"
-+ "dbcentx.mod"
-+
-+- -- ...................................................................... --
-+- -- ISO entity sets ...................................................... --
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN"
-+- "iso-dia.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN"
-+- "iso-num.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN"
-+- "iso-pub.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN"
-+- "iso-tech.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN"
-+- "iso-lat1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN"
-+- "iso-lat2.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN"
-+- "iso-grk1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN"
-+- "iso-grk2.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN"
-+- "iso-grk3.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN"
-+- "iso-grk4.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN"
-+- "iso-amsa.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN"
-+- "iso-amsb.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN"
-+- "iso-amsc.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN"
-+- "iso-amsn.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN"
-+- "iso-amso.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN"
-+- "iso-amsr.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN"
-+- "iso-box.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN"
-+- "iso-cyr1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN"
-+- "iso-cyr2.gml"
-+-
-+ -- End of catalog data for DocBook V4.2 ................................. --
-+ -- ...................................................................... --
-+diff -urNad docbook-4.5~/docbook-4.3/docbook.cat docbook-4.5/docbook-4.3/docbook.cat
-+--- docbook-4.5~/docbook-4.3/docbook.cat 2004-03-31 13:44:16.000000000 +0200
-++++ docbook-4.5/docbook-4.3/docbook.cat 2007-03-09 16:53:47.000000000 +0100
-+@@ -22,9 +22,6 @@
-+ PUBLIC "-//OASIS//DTD DocBook V4.3//EN"
-+ "docbook.dtd"
-+
-+-PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-+- "docbookx.dtd"
-+-
-+ -- ...................................................................... --
-+ -- DocBook modules ...................................................... --
-+
-+@@ -49,65 +46,5 @@
-+ PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.3//EN"
-+ "dbcentx.mod"
-+
-+- -- ...................................................................... --
-+- -- ISO entity sets ...................................................... --
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN"
-+- "iso-dia.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN"
-+- "iso-num.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN"
-+- "iso-pub.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN"
-+- "iso-tech.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN"
-+- "iso-lat1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN"
-+- "iso-lat2.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN"
-+- "iso-grk1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN"
-+- "iso-grk2.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN"
-+- "iso-grk3.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN"
-+- "iso-grk4.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN"
-+- "iso-amsa.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN"
-+- "iso-amsb.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN"
-+- "iso-amsc.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN"
-+- "iso-amsn.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN"
-+- "iso-amso.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN"
-+- "iso-amsr.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN"
-+- "iso-box.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN"
-+- "iso-cyr1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN"
-+- "iso-cyr2.gml"
-+-
-+ -- End of catalog data for DocBook V4.3 ................................. --
-+ -- ...................................................................... --
-+diff -urNad docbook-4.5~/docbook-4.4/docbook.cat docbook-4.5/docbook-4.4/docbook.cat
-+--- docbook-4.5~/docbook-4.4/docbook.cat 2005-01-27 14:59:49.000000000 +0100
-++++ docbook-4.5/docbook-4.4/docbook.cat 2007-03-09 16:54:12.000000000 +0100
-+@@ -22,9 +22,6 @@
-+ PUBLIC "-//OASIS//DTD DocBook V4.4//EN"
-+ "docbook.dtd"
-+
-+-PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
-+- "docbookx.dtd"
-+-
-+ -- ...................................................................... --
-+ -- DocBook modules ...................................................... --
-+
-+@@ -52,65 +49,5 @@
-+ PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.4//EN"
-+ "dbcentx.mod"
-+
-+- -- ...................................................................... --
-+- -- ISO entity sets ...................................................... --
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN"
-+- "iso-dia.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN"
-+- "iso-num.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN"
-+- "iso-pub.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN"
-+- "iso-tech.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN"
-+- "iso-lat1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN"
-+- "iso-lat2.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN"
-+- "iso-grk1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN"
-+- "iso-grk2.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN"
-+- "iso-grk3.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN"
-+- "iso-grk4.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN"
-+- "iso-amsa.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN"
-+- "iso-amsb.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN"
-+- "iso-amsc.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN"
-+- "iso-amsn.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN"
-+- "iso-amso.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN"
-+- "iso-amsr.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN"
-+- "iso-box.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN"
-+- "iso-cyr1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN"
-+- "iso-cyr2.gml"
-+-
-+ -- End of catalog data for DocBook V4.4 ................................. --
-+ -- ...................................................................... --
-+diff -urNad docbook-4.5~/docbook-4.5/docbook.cat docbook-4.5/docbook-4.5/docbook.cat
-+--- docbook-4.5~/docbook-4.5/docbook.cat 2006-10-03 15:27:50.000000000 +0200
-++++ docbook-4.5/docbook-4.5/docbook.cat 2007-03-09 16:54:41.000000000 +0100
-+@@ -22,9 +22,6 @@
-+ PUBLIC "-//OASIS//DTD DocBook V4.5//EN"
-+ "docbook.dtd"
-+
-+-PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-+- "docbookx.dtd"
-+-
-+ -- ...................................................................... --
-+ -- DocBook modules ...................................................... --
-+
-+@@ -52,65 +49,5 @@
-+ PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.5//EN"
-+ "dbcentx.mod"
-+
-+- -- ...................................................................... --
-+- -- ISO entity sets ...................................................... --
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN"
-+- "iso-dia.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN"
-+- "iso-num.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN"
-+- "iso-pub.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN"
-+- "iso-tech.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN"
-+- "iso-lat1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN"
-+- "iso-lat2.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN"
-+- "iso-grk1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN"
-+- "iso-grk2.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN"
-+- "iso-grk3.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN"
-+- "iso-grk4.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN"
-+- "iso-amsa.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN"
-+- "iso-amsb.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN"
-+- "iso-amsc.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN"
-+- "iso-amsn.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN"
-+- "iso-amso.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN"
-+- "iso-amsr.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN"
-+- "iso-box.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN"
-+- "iso-cyr1.gml"
-+-
-+-PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN"
-+- "iso-cyr2.gml"
-+-
-+ -- End of catalog data for DocBook V4.5 ................................. --
-+ -- ...................................................................... --
---- docbook-4.5.orig/debian/patches/11_fix_dbpoolx_mod_header_comment_pubid.dpatch
-+++ docbook-4.5/debian/patches/11_fix_dbpoolx_mod_header_comment_pubid.dpatch
-@@ -0,0 +1,60 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## 11_fix_dbpoolx_mod_header_comment_pubid.dpatch by Adam Di Carlo <aph@debian.org>
-+## and Daniel Leidert (dale) <daniel.leidert@wgdd.de>.
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: The header in dbpoolx.mod references a wrong Public-ID. This patch
-+## DP: simply fixes the header comment.
-+## DP:
-+## DP: Reported upstream:
-+## DP: <URL:http://sourceforge.net/tracker/index.php?func=detail&aid=1679712&group_id=21935&atid=384107>
-+
-+@DPATCH@
-+diff -urNad docbook-4.5~/docbook-4.2/dbpoolx.mod docbook-4.5/docbook-4.2/dbpoolx.mod
-+--- docbook-4.5~/docbook-4.2/dbpoolx.mod 2002-07-17 18:14:25.000000000 +0200
-++++ docbook-4.5/docbook-4.2/dbpoolx.mod 2007-03-10 08:31:23.000000000 +0100
-+@@ -50,7 +50,7 @@
-+ declaration that uses the public identifier shown below:
-+
-+ <!ENTITY % dbpool PUBLIC
-+- "-//OASIS//ELEMENTS DocBook XML Information Pool V4.2//EN"
-++ "-//OASIS//ELEMENTS DocBook Information Pool V4.2//EN"
-+ "dbpoolx.mod">
-+ %dbpool;
-+
-+diff -urNad docbook-4.5~/docbook-4.3/dbpoolx.mod docbook-4.5/docbook-4.3/dbpoolx.mod
-+--- docbook-4.5~/docbook-4.3/dbpoolx.mod 2004-03-31 13:43:24.000000000 +0200
-++++ docbook-4.5/docbook-4.3/dbpoolx.mod 2007-03-10 08:31:49.000000000 +0100
-+@@ -50,7 +50,7 @@
-+ declaration that uses the public identifier shown below:
-+
-+ <!ENTITY % dbpool PUBLIC
-+- "-//OASIS//ELEMENTS DocBook XML Information Pool V4.3//EN"
-++ "-//OASIS//ELEMENTS DocBook Information Pool V4.3//EN"
-+ "dbpoolx.mod">
-+ %dbpool;
-+
-+diff -urNad docbook-4.5~/docbook-4.4/dbpoolx.mod docbook-4.5/docbook-4.4/dbpoolx.mod
-+--- docbook-4.5~/docbook-4.4/dbpoolx.mod 2005-01-27 14:59:45.000000000 +0100
-++++ docbook-4.5/docbook-4.4/dbpoolx.mod 2007-03-10 08:32:00.000000000 +0100
-+@@ -50,7 +50,7 @@
-+ declaration that uses the public identifier shown below:
-+
-+ <!ENTITY % dbpool PUBLIC
-+- "-//OASIS//ELEMENTS DocBook XML Information Pool V4.4//EN"
-++ "-//OASIS//ELEMENTS DocBook Information Pool V4.4//EN"
-+ "dbpoolx.mod">
-+ %dbpool;
-+
-+diff -urNad docbook-4.5~/docbook-4.5/dbpoolx.mod docbook-4.5/docbook-4.5/dbpoolx.mod
-+--- docbook-4.5~/docbook-4.5/dbpoolx.mod 2006-10-03 15:27:50.000000000 +0200
-++++ docbook-4.5/docbook-4.5/dbpoolx.mod 2007-03-10 08:32:10.000000000 +0100
-+@@ -50,7 +50,7 @@
-+ declaration that uses the public identifier shown below:
-+
-+ <!ENTITY % dbpool PUBLIC
-+- "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN"
-++ "-//OASIS//ELEMENTS DocBook Information Pool V4.5//EN"
-+ "dbpoolx.mod">
-+ %dbpool;
-+
---- docbook-4.5.orig/debian/patches/12_fix_256119_and_turn_on_sgml_mode.dpatch
-+++ docbook-4.5/debian/patches/12_fix_256119_and_turn_on_sgml_mode.dpatch
-@@ -0,0 +1,117 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## 12_fix_256119_and_turn_on_sgml_mode.dpatch by Daniel Leidert (dale) <daniel.leidert@wgdd.de>
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: Fixes broken element declarations by adding the tag omission characters
-+## DP: for SGML and enable SGML features
-+## DP: (closes: <URL:http://bugs.debian.org/256119>).
-+## DP:
-+## DP: <URL:http://packages.debian.org/changelogs/pool/main/d/docbook/current/changelog#versionversion4.4-1>
-+
-+@DPATCH@
-+diff -urNad docbook-4.5~/docbook-4.3/dbpoolx.mod docbook-4.5/docbook-4.3/dbpoolx.mod
-+--- docbook-4.5~/docbook-4.3/dbpoolx.mod 2007-03-10 09:01:12.000000000 +0100
-++++ docbook-4.5/docbook-4.3/dbpoolx.mod 2007-03-10 09:01:13.000000000 +0100
-+@@ -633,6 +633,9 @@
-+
-+ <!-- xml:base: base URI -->
-+
-++<![%sgml.features;[
-++<!ENTITY % xml-base.attrib "">
-++]]>
-+ <!ENTITY % xml-base.attrib
-+ "xml:base CDATA #IMPLIED">
-+
-+diff -urNad docbook-4.5~/docbook-4.3/docbookx.dtd docbook-4.5/docbook-4.3/docbookx.dtd
-+--- docbook-4.5~/docbook-4.3/docbookx.dtd 2004-03-31 13:43:20.000000000 +0200
-++++ docbook-4.5/docbook-4.3/docbookx.dtd 2007-03-10 09:01:13.000000000 +0100
-+@@ -59,7 +59,7 @@
-+ <!-- ...................................................................... -->
-+ <!-- Enable SGML features ................................................. -->
-+
-+-<!ENTITY % sgml.features "IGNORE">
-++<!ENTITY % sgml.features "INCLUDE">
-+ <![%sgml.features;[
-+ <!ENTITY % xml.features "IGNORE">
-+ ]]>
-+diff -urNad docbook-4.5~/docbook-4.3/htmltblx.mod docbook-4.5/docbook-4.3/htmltblx.mod
-+--- docbook-4.5~/docbook-4.3/htmltblx.mod 2004-03-31 13:43:24.000000000 +0200
-++++ docbook-4.5/docbook-4.3/htmltblx.mod 2007-03-10 09:01:13.000000000 +0100
-+@@ -63,6 +63,9 @@
-+ >
-+
-+ <!-- Does not contain lang or dir because they are in %common.attribs -->
-++<![%sgml.features;[
-++<!ENTITY % i18n "">
-++]]>
-+ <!ENTITY % i18n
-+ "xml:lang NMTOKEN #IMPLIED"
-+ >
-+@@ -92,11 +95,11 @@
-+ "valign (top|middle|bottom|baseline) #IMPLIED"
-+ >
-+
-+-<!ELEMENT colgroup (col)*>
-+-<!ELEMENT col EMPTY>
-+-<!ELEMENT tr (th|td)+>
-+-<!ELEMENT th (%para.char.mix; | %tabentry.mix;)*>
-+-<!ELEMENT td (%para.char.mix; | %tabentry.mix;)*>
-++<!ELEMENT colgroup %ho; (col)*>
-++<!ELEMENT col %ho; EMPTY>
-++<!ELEMENT tr %ho; (th|td)+>
-++<!ELEMENT th %ho; (%para.char.mix; | %tabentry.mix;)*>
-++<!ELEMENT td %ho; (%para.char.mix; | %tabentry.mix;)*>
-+
-+ <!ATTLIST colgroup
-+ %attrs;
-+@@ -206,7 +209,7 @@
-+ summary CDATA #IMPLIED
-+ width CDATA #IMPLIED
-+ border CDATA #IMPLIED
-+- rules (none | groups | rows | cols | all) #IMPLIED
-++ rules CDATA #IMPLIED
-+ cellspacing CDATA #IMPLIED
-+ cellpadding CDATA #IMPLIED
-+ align (left|center|right) #IMPLIED
-+diff -urNad docbook-4.5~/docbook-4.4/docbookx.dtd docbook-4.5/docbook-4.4/docbookx.dtd
-+--- docbook-4.5~/docbook-4.4/docbookx.dtd 2005-01-27 14:59:45.000000000 +0100
-++++ docbook-4.5/docbook-4.4/docbookx.dtd 2007-03-10 09:01:13.000000000 +0100
-+@@ -61,7 +61,7 @@
-+ <!-- ...................................................................... -->
-+ <!-- Enable SGML features ................................................. -->
-+
-+-<!ENTITY % sgml.features "IGNORE">
-++<!ENTITY % sgml.features "INCLUDE">
-+ <![%sgml.features;[
-+ <!ENTITY % xml.features "IGNORE">
-+ ]]>
-+diff -urNad docbook-4.5~/docbook-4.4/htmltblx.mod docbook-4.5/docbook-4.4/htmltblx.mod
-+--- docbook-4.5~/docbook-4.4/htmltblx.mod 2005-01-27 14:59:45.000000000 +0100
-++++ docbook-4.5/docbook-4.4/htmltblx.mod 2007-03-10 09:01:13.000000000 +0100
-+@@ -63,6 +63,9 @@
-+ >
-+
-+ <!-- Does not contain lang or dir because they are in %common.attribs -->
-++<![%sgml.features;[
-++<!ENTITY % i18n "">
-++]]>
-+ <!ENTITY % i18n
-+ "xml:lang NMTOKEN #IMPLIED"
-+ >
-+@@ -92,11 +95,11 @@
-+ "valign (top|middle|bottom|baseline) #IMPLIED"
-+ >
-+
-+-<!ELEMENT colgroup (col)*>
-+-<!ELEMENT col EMPTY>
-+-<!ELEMENT tr (th|td)+>
-+-<!ELEMENT th (%para.char.mix; | %tabentry.mix; | table | informaltable)*>
-+-<!ELEMENT td (%para.char.mix; | %tabentry.mix; | table | informaltable)*>
-++<!ELEMENT colgroup %ho; (col)*>
-++<!ELEMENT col %ho; EMPTY>
-++<!ELEMENT tr %ho; (th|td)+>
-++<!ELEMENT th %ho; (%para.char.mix; | %tabentry.mix; | table | informaltable)*>
-++<!ELEMENT td %ho; (%para.char.mix; | %tabentry.mix; | table | informaltable)*>
-+
-+ <!ATTLIST colgroup
-+ %attrs;
---- docbook-4.5.orig/debian/patches/10_fix_101779_mention_artheader_to_articleinfo_change.dpatch
-+++ docbook-4.5/debian/patches/10_fix_101779_mention_artheader_to_articleinfo_change.dpatch
-@@ -0,0 +1,33 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## 10_fix_101779_mention_artheader_to_articleinfo_change.dpatch by
-+## Adam Di Carlo <aph@debian.org>.
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: The removal of ArtHeader in 4.0 is not documented in ChangeLog. This
-+## DP: patch fixes it (closes: <URL:http://bugs.debian.org/bug=101779>).
-+## DP:
-+## DP: <URL:http://packages.debian.org/changelogs/pool/main/d/docbook/current/changelog#versionversion4.1-5>
-+
-+@DPATCH@
-+diff -urNad docbook-4.5~/ChangeLog.upstream docbook-4.5/ChangeLog.upstream
-+--- docbook-4.5~/ChangeLog.upstream 2007-03-09 14:36:17.000000000 +0100
-++++ docbook-4.5/ChangeLog.upstream 2007-03-14 19:35:01.000000000 +0100
-+@@ -475,6 +475,7 @@
-+ - Added synopsis markup for modern programming languages (e.g, object
-+ oriented languages like Java, C++, and IDL)
-+ - Renamed DocInfo to PrefaceInfo, ChapterInfo, AppendixInfo, etc.
-++ (and ArtHeader to ArticleInfo)
-+
-+ Other:
-+
-+diff -urNad docbook-4.5~/docbook-4.1/40chg.txt docbook-4.5/docbook-4.1/40chg.txt
-+--- docbook-4.5~/docbook-4.1/40chg.txt 2000-06-19 16:50:28.000000000 +0200
-++++ docbook-4.5/docbook-4.1/40chg.txt 2007-03-14 19:34:21.000000000 +0100
-+@@ -29,6 +29,7 @@
-+ - Added synopsis markup for modern programming languages (e.g, object
-+ oriented languages like Java, C++, and IDL)
-+ - Renamed DocInfo to PrefaceInfo, ChapterInfo, AppendixInfo, etc.
-++ (and ArtHeader to ArticleInfo)
-+ - Comment was renamed Remark
-+ - InterfaceDefinition was removed
-+
---- docbook-4.5.orig/debian/examples/docbk.sgml
-+++ docbook-4.5/debian/examples/docbk.sgml
-@@ -0,0 +1,2 @@
-+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook//EN">
-+<book></book>
---- docbook-4.5.orig/debian/examples/docbk42.sgml
-+++ docbook-4.5/debian/examples/docbk42.sgml
-@@ -0,0 +1,2 @@
-+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.2//EN">
-+<book></book>
---- docbook-4.5.orig/debian/examples/docbk43.sgml
-+++ docbook-4.5/debian/examples/docbk43.sgml
-@@ -0,0 +1,2 @@
-+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.3//EN">
-+<book></book>
---- docbook-4.5.orig/debian/examples/docbk44.sgml
-+++ docbook-4.5/debian/examples/docbk44.sgml
-@@ -0,0 +1,2 @@
-+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.4//EN">
-+<book></book>
---- docbook-4.5.orig/debian/examples/docbk45.sgml
-+++ docbook-4.5/debian/examples/docbk45.sgml
-@@ -0,0 +1,2 @@
-+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.5//EN">
-+<book></book>
---- docbook-4.5.orig/debian/examples/Makefile
-+++ docbook-4.5/debian/examples/Makefile
-@@ -0,0 +1,22 @@
-+SRCS := $(wildcard *.sgml)
-+NSGMLS := $(shell if command -v onsgmls 2>/dev/null; then \
-+ : ;\
-+ elif command -v nsgmls 2>/dev/null; then \
-+ : ;\
-+ else \
-+ echo "false" ;\
-+ echo "warning: no nsgmls found" >&2 ;\
-+ fi)
-+
-+NSGMLSARGS=
-+
-+.PHONY: validate
-+validate: $(addsuffix .nsgmls,$(SRCS))
-+
-+%.nsgmls : %
-+ $(NSGMLS) -E1 -wall $(NSGMLSARGS) -gues $<
-+
-+.PHONY: clean
-+clean:
-+ rm -f *.html *~
-+
---- docbook-4.5.orig/debian/control
-+++ docbook-4.5/debian/control
-@@ -0,0 +1,33 @@
-+Source: docbook
-+Section: text
-+Priority: optional
-+Maintainer: Debian XML/SGML Group <debian-xml-sgml-pkgs@lists.alioth.debian.org>
-+Uploaders: Adam Di Carlo <aph@debian.org>, Daniel Leidert (dale) <daniel.leidert@wgdd.de>
-+Build-Depends: debhelper (>= 4.1.31), dpatch
-+Standards-Version: 3.7.2
-+Homepage: http://www.oasis-open.org/docbook/sgml/
-+XS-Vcs-Browser: http://svn.debian.org/wsvn/debian-xml-sgml/packages/docbook/trunk/
-+XS-Vcs-Svn: svn://svn.debian.org/svn/debian-xml-sgml/packages/docbook/
-+
-+Package: docbook
-+Architecture: all
-+Depends: sgml-data (>= 1.5.0), ${misc:Depends}
-+Conflicts: docbook-xml (<= 4.4-4)
-+Suggests: psgml, docbook-dsssl, docbook-xml, docbook-defguide
-+Description: standard SGML representation system for technical documents
-+ DocBook is an SGML document type definition (DTD) that is well-suited
-+ to books, articles, or reference documentation about technical
-+ matters, systems, or software (although it is by no means limited to
-+ these applications). It has emerged as an open and standard DTD in the
-+ software industry, and is used as the documentation system of choice
-+ for many free software projects.
-+ .
-+ This package contains the SGML DTD for DocBook, which describes
-+ the formal structure for documents following this format. If you
-+ wish to author DocBook documents using XML rather than SGML, use the
-+ 'docbook-xml' package. You will need other packages in order to edit
-+ (psgml), validate (opensp) or format (docbook-xsl, docbook-dsssl)
-+ DocBook documents.
-+ .
-+ This package includes the 2.4.1, 3.0, 3.1, 4.0, 4.1, 4.2, 4.3, 4.4 and
-+ 4.5 versions of the DocBook SGML DTD.
---- docbook-4.5.orig/debian/compat
-+++ docbook-4.5/debian/compat
-@@ -0,0 +1 @@
-+4
---- docbook-4.5.orig/debian/watch
-+++ docbook-4.5/debian/watch
-@@ -0,0 +1,4 @@
-+# See uscan(1) for format
-+
-+version=3
-+http://www.oasis-open.org/docbook/sgml/4\.([\d]+)/docbook-([\d\.]+).zip
---- docbook-4.5.orig/debian/docbook.examples
-+++ docbook-4.5/debian/docbook.examples
-@@ -0,0 +1 @@
-+debian/examples/*
---- docbook-4.5.orig/debian/changelog
-+++ docbook-4.5/debian/changelog
-@@ -0,0 +1,362 @@
-+docbook (4.5-4) unstable; urgency=low
-+
-+ * debian/control: Homepage field transition.
-+ (Suggests): Added docbook-defguide.
-+ * debian/docbook.postinst: Removed. Contains only pre-etch legacy stuff.
-+ * debian/README.Debian: Removed or replaced references to non-existing
-+ packages.
-+ * debian/watch: Added watch file.
-+
-+ -- Daniel Leidert (dale) <daniel.leidert@wgdd.de> Wed, 26 Sep 2007 21:21:26 +0200
-+
-+docbook (4.5-3) unstable; urgency=medium
-+
-+ * debian/control (Maintainer, Uploaders): Set the Debian XML/SGML team as
-+ maintainer.
-+ * debian/docbook.examples: Fixed examples location: will re-add them back
-+ to the package.
-+ * debian/rules: Removed bashisms (closes: #422114). Thanks to Sebastian
-+ Dröge for the report.
-+
-+ -- Daniel Leidert (dale) <daniel.leidert@wgdd.de> Thu, 03 May 2007 19:46:21 +0200
-+
-+docbook (4.5-2) unstable; urgency=low
-+
-+ * Upload to unstable.
-+
-+ [ Daniel Leidert ]
-+ * debian/rules (get-orig-source): Make the target compatible with the "Best
-+ Packaging Practices" reference.
-+
-+ -- Daniel Leidert (dale) <daniel.leidert@wgdd.de> Sat, 14 Apr 2007 19:49:00 +0200
-+
-+docbook (4.5-1) experimental; urgency=low
-+
-+ * New upstream release DocBook SGML 4.5 added (closes: #413166).
-+
-+ [ Daniel Leidert ]
-+ * catalog: Made latest DocBook SGML 4.5 the default (closes: #413304).
-+ * debian/control: Added XS-Vcs-Browser and XS-Vcs-Svn fields.
-+ (Build-Depends-Indep): Fixed debhelper build dependency to be listed in
-+ Build-Depends.
-+ (Build-Depends): Added dpatch.
-+ (Uploaders): Added the Debian XML/SGML group and myself (closes: #358522).
-+ (Standards-Version): Bump to latest standards version 3.7.2.
-+ (Description): Added newly added DocBook version.
-+ * debian/copyright: Updated the packaging and copyright information.
-+ * debian/rules: Added get-orig-source and dpatch targets. Cleaned the file a
-+ lot. The installation of files was moved from the external
-+ install_docbook.sh script to dh_install calls. The .links, .install and
-+ .sgmlcatalogs debhelper files are created by debian/rules itself (atm I
-+ don't remove them in the clean target).
-+ (binary-indep): Fixed the dh_installdocs call to include Adams
-+ README.docbook.dcl, that was not included in the package.
-+ (debian/docbook.install, debian/docbook.links): Made the dbgenent.mod
-+ files config-files.
-+ * debian/patches/00list: Added. Moved all existing changes to dpatch patches
-+ and enabled them here.
-+ * debian/patches/01_remove_entity_sets_and_dcl_from_catalogs.dpatch: Added.
-+ * debian/patches/10_fix_101779_mention_artheader_to_articleinfo_change.dpatch:
-+ Added.
-+ * debian/patches/11_fix_dbpoolx_mod_header_comment_pubid.dpatch: Added.
-+ * debian/patches/12_fix_256119_and_turn_on_sgml_mode.dpatch: Added.
-+ * debian/examples/docbk*.sgml: Added two new examples for DocBook 4.5 and
-+ added the missing newlines to the existing examples.
-+ * debian/docbook.examples: Added.
-+ * debian/postinst: Renamed to docbook.postinst.
-+ * debian/README.debian: Renamed to README.Debian.
-+ * debian/install_docbook.sh: Removed. See debian/rules changes.
-+ * debian/TODO: Removed (implemented the only item).
-+ * debian/watch: Removed (empty).
-+
-+ -- Daniel Leidert (dale) <daniel.leidert@wgdd.de> Sat, 10 Mar 2007 09:32:33 +0100
-+
-+docbook (4.4-1) unstable; urgency=low
-+
-+ * acknowledge NMU; closes: #301786
-+ * new upstream version; closes: #339774
-+ * docbook4{3,4}/docbookx.dtd: turn on SGML mode
-+ * docbook4{3,4}: sync with dbpoolx.mod and htmltblx.mod from
-+ docbook-xml; closes: #256119
-+ * conflict with docbook-xml prior to 4.4-5, otherwise the 4.3 and 4.4
-+ DTDs don't work
-+ * docbook4.3 catalog: don't provide "-//OASIS//DTD DocBook XML V4.3//EN"
-+ * add really basic docbook 4.2, 4.3, and 4.4 books to test with
-+
-+ -- Adam Di Carlo <aph@debian.org> Thu, 25 May 2006 19:09:05 -0400
-+
-+docbook (4.3-1.1) unstable; urgency=high
-+
-+ * Non-maintainer upload.
-+ * High-urgency upload for sarge-targetted RC bugfix.
-+ * Drop use of symlinks for finding dangling links, as we can do the
-+ same using a find command; thanks to Joey Hess for the patch.
-+ Closes: #301786.
-+
-+ -- Steve Langasek <vorlon@debian.org> Wed, 6 Apr 2005 11:24:24 -0700
-+
-+docbook (4.3-1) unstable; urgency=low
-+
-+ * new upstream version; closes: #243666
-+ * make the usual array of minor corrections in upstream catalogs
-+ * minor package description changes
-+ * postinst legacy remove is more conditional and more robust; hopefully,
-+ closes: #242833
-+ * really don't register "-//OASIS//DTD DocBook XML V4.2//EN" in
-+ catalog.xml
-+
-+ -- Adam Di Carlo <aph@debian.org> Tue, 15 Jun 2004 22:15:02 -0400
-+
-+docbook (4.2-3) unstable; urgency=low
-+
-+ * stop providing "-//OASIS//DTD DocBook XML V4.2//EN", that is in the
-+ docbook-xml package
-+ * policy compliance updated to 3.5.8, no changes needed
-+ * debhelper 4 compat mode
-+ * use new dh_installcatalog, it simplifies our maintainer scripts
-+ * remove build-depends on M4, we don't need to process maintainer
-+ scripts anymore
-+ * remove suggests on sp or jade or docbook-xml, add suggests for
-+ docbook-dsssl and docbook-doc
-+ * improve the package synopsis and description, add the Homepage
-+ * stop using sgml-catalog-check.pl from sgml-data during build, the
-+ /usr/share/sgml symlinking is no longer needed (SGML Policy update
-+ pending)
-+
-+ -- Adam Di Carlo <aph@debian.org> Tue, 25 Feb 2003 02:18:52 -0500
-+
-+docbook (4.2-2) unstable; urgency=low
-+
-+ * SGML catalogs should be named 'catalog' according to policy; retain
-+ the 'docbook.cat' as a symlink in case anyone is using that directly
-+
-+ -- Adam Di Carlo <aph@debian.org> Mon, 20 Jan 2003 04:44:52 -0500
-+
-+docbook (4.2-1) unstable; urgency=low
-+
-+ * new upstream version, closes: #155105
-+ * latest DocBook version bumped to 4.2
-+
-+ -- Adam Di Carlo <aph@debian.org> Wed, 7 Aug 2002 01:12:49 -0400
-+
-+docbook (4.1.99really4.2.cr1-2) unstable; urgency=low
-+
-+ * oops, remove ISO entity sets from docbook 4.2cr1 catalog
-+ * minor typo in generalized.cat fixed
-+
-+ -- Adam Di Carlo <aph@debian.org> Sun, 31 Mar 2002 01:40:26 -0500
-+
-+docbook (4.1.99really4.2.cr1-1) unstable; urgency=low
-+
-+ * new upstream version, pre-release of docbook 4.2;
-+ note that docbook 4.1 is still considered the latest version and
-+ latest 4.x version until 4.2 is actually released
-+ * policy checked up to 3.5.6, no changes required
-+ * disable DTDDECL in generalized.cat, I think this just slipped through
-+ * debian/rules: some housekeeping
-+
-+ -- Adam Di Carlo <aph@debian.org> Sun, 31 Mar 2002 01:28:04 -0500
-+
-+docbook (4.1-6) unstable; urgency=low
-+
-+ * another cut at the package description, hopefully it satisfies the
-+ user; closes: #112021
-+ * debian/rules: installing *everything* as documentation was not my
-+ intention in the last release, fix that
-+ * require sgml-data 1.5.3 or better, which calls an element an element
-+ when making the creepy symlinks; closes: #51043
-+
-+ -- Adam Di Carlo <aph@debian.org> Tue, 2 Oct 2001 03:06:21 -0400
-+
-+docbook (4.1-5) unstable; urgency=low
-+
-+ * all docbook catalog files now have "OVERRIDE YES", which forces the
-+ PUBID rather than the SYSID in DTD declarations; closes: #97330
-+ * correct upstream 40chg.txt to notate the change from ArtHeader to
-+ ArticleInfo; closes: #101779
-+ * README.Debian rewritten; closes: #106379
-+ * it's apparently not nice to call dh_installdocs more than once per
-+ package, so stop doing that; closes#98440
-+
-+ -- Adam Di Carlo <aph@debian.org> Tue, 2 Oct 2001 01:49:30 -0400
-+
-+docbook (4.1-4) unstable; urgency=low
-+
-+ * debian/rules: re-work fix for files in debian not preserving execute
-+ bit
-+ closes: #90627
-+
-+ -- Adam Di Carlo <aph@debian.org> Sun, 8 Apr 2001 14:37:42 -0400
-+
-+docbook (4.1-3) unstable; urgency=low
-+
-+ * debian/control: build-depends-indep includes m4
-+ * debian/rules: cope with my local CVS not preserving executable bit,
-+ making the source unbuildable
-+ closes: #90627
-+
-+ -- Adam Di Carlo <aph@debian.org> Thu, 22 Mar 2001 02:23:56 -0500
-+
-+docbook (4.1-2) unstable; urgency=low
-+
-+ * disable docbook.dcl as DTDDECL, otherwise lots of otherwise valid SGML
-+ files will break (when using DTDDECL comprehending processors like
-+ OpenJade, anyhow). For more info, see README.docbook.dcl.
-+ * include docbook 4.0
-+ closes: #68666
-+
-+ -- Adam Di Carlo <aph@debian.org> Wed, 21 Mar 2001 03:37:38 -0500
-+
-+docbook (4.1-1) unstable; urgency=low
-+
-+ * new maintainer, with permission from Mark Eichin
-+ closes: #19682, #19683, #36956, #47375, #50243, #51032, #68033
-+ closes: #87325, #88679
-+ * debian/control: require new sgml-base and sgml-data; suggest
-+ docbook-xml; fix a grammar error in the description
-+ * transition to new SGML standard system, /usr/share/sgml, and delegated
-+ catalogs
-+ closes: #90034
-+ * rework the maintainer scripts accordingly; use m4 to dynamically set
-+ some variables; move the removal work from postrm to prerm; don't
-+ bother scrubbing legacy junk in prerm, since postinst configure
-+ already ran, what's the point?
-+ * provide new catalog entries for just referring to DocBook, generalized
-+ to mean the last recommended DocBook, or the latest DocBook v4, or the
-+ latest DocBook v3.
-+ * delegated catalogs have proper DTDDECLs
-+ closes: #63046 (again)
-+ * debian/rules: stop using debstd
-+ closes: #90122
-+ * already fixed in earlier versions
-+ closes: #90125
-+ * debian/control: add Build-Depends-Indep; update standards to 3.5.2
-+ * debian/copyright: update maintainership info and add coverage of the
-+ debian integration scripts
-+
-+ -- Adam Di Carlo <aph@debian.org> Mon, 19 Mar 2001 01:56:38 -0500
-+
-+docbook (4.1-0.2) unstable; urgency=low
-+
-+ * non-maintainer upload
-+ * sgml-data/sgml-catalog-check.pl location moved
-+ closes: #88679
-+ * debian/postrm: fix some of the legacy FPI removal logic
-+ closes: #87325
-+ * debian/postinst: analogous fix, and remove some scrubbing of the SGML
-+ catalog which really seemed overreaching (such as fudging with
-+ SGMLDECL, and stuff which really ought to be handled by
-+ install-sgmlcatalog)
-+
-+ -- Adam Di Carlo <aph@debian.org> Sat, 17 Mar 2001 16:54:59 -0500
-+
-+docbook (4.1-0.1) unstable; urgency=low
-+
-+ * NMU because Mark lacks time.
-+ * New upstream release (Closes: #68033).
-+ * Do not include 4.0 DTD because 4.1 has no user-level changes from
-+ 4.0.
-+ * Install doc files into /usr/share/doc/ as per policy (Closes:
-+ #50243, #51032).
-+ * Uncommented DTDDECL entries from the catalog (Closes: #63046).
-+ * Updated download location and copyright notice.
-+ * Commented out obsolete line in debian/watch.
-+
-+ -- Yann Dirson <dirson@debian.org> Tue, 1 Aug 2000 01:01:59 +0200
-+
-+docbook (3.1-2) unstable; urgency=low
-+
-+ * debian/control: fix Maintainer realname for consistency.
-+
-+ -- Mark W. Eichin <eichin@thok.org> Wed, 3 Nov 1999 16:14:46 -0500
-+
-+docbook (3.1-1) unstable; urgency=low
-+
-+ * Thanks for all the work; closing the bugs for real and updating my
-+ email addresses. closes: #19682, #19683, #36956, #47375.
-+
-+ -- Mark W. Eichin <eichin@thok.org> Wed, 3 Nov 1999 00:43:12 -0500
-+
-+docbook (3.1-0.4) unstable; urgency=low
-+
-+ * NMU so it can be removed when install-sgmlcatalog isn't present.
-+ (Closes: #47375).
-+
-+ -- J.H.M. Dassen (Ray) <jdassen@debian.org> Sat, 30 Oct 1999 14:31:46 +0200
-+
-+docbook (3.1-0.3) unstable; urgency=low
-+
-+ * non-maintainer release, blessed by Mark Eichin
-+ * at the suggestion of Norm Walsh, retain DTD and entity file name
-+ (closes Bug#36956) -- he also suggests that we don't split entities
-+ into a separate dir, which is a reasonable thought, but I leave it to
-+ others to file a bug if they agree with Norm.
-+
-+ -- Adam Di Carlo <aph@debian.org> Sat, 22 May 1999 16:43:06 -0400
-+
-+docbook (3.1-0.2) unstable; urgency=low
-+
-+ * non-maintainer release
-+ * docbook.cat: fix problems with some system identifiers, bugs I
-+ introduced
-+ * use script from sgml-data to create nice SGML links (completes closing
-+ of Bug#19682)
-+
-+ -- Adam Di Carlo <aph@debian.org> Fri, 26 Mar 1999 04:25:09 -0500
-+
-+docbook (3.1-0.1) unstable; urgency=low
-+
-+ * non-maintainer release
-+ * new upstream version (blessed by Mark Eichin)
-+ * deliver docbook 2.4.1, 3.0, and 3.1 DTDs (closes Bug#19683)
-+ * put DTDs, entities, and declarations in standard locations under
-+ /usr/lib/sgml; make symlinks under there too in compliance with the
-+ sgml-base subpolicy (closes Bug#19682)
-+ * debian/control: bump standards version to 2.5.0, reconcile priority to
-+ what it is in the archive, update description
-+ * debian/rules: some modularization
-+ * debian/copyright: updated
-+ * README.debian: adding some pointer on other packages and the home page
-+
-+ -- Adam Di Carlo <aph@debian.org> Fri, 26 Mar 1999 01:36:31 -0500
-+
-+docbook (3.0-5) unstable; urgency=low
-+
-+ * debian/rules: use install -m 0644 so text files don't get installed
-+ gratuitously executable (lintian).
-+
-+ -- Mark Eichin <eichin@kitten.gen.ma.us> Wed, 29 Apr 1998 05:39:56 -0400
-+
-+docbook (3.0-4) unstable; urgency=low
-+
-+ * docbook.cat: comment out DTDDECL to avoid warnings from jade. Removed
-+ ISO entity pointers, since they are now supplied by sgml-data.
-+
-+ -- Mark Eichin <eichin@kitten.gen.ma.us> Tue, 7 Apr 1998 02:39:48 -0400
-+
-+docbook (3.0-3) unstable; urgency=low
-+
-+ * debian/postinst, debian/postrm: use sgml-base like jade does.
-+ * debian/control: depend on sgml-base now.
-+
-+ -- Mark W. Eichin <eichin@kitten.gen.ma.us> Tue, 4 Nov 1997 18:18:18 -0500
-+
-+docbook (3.0-2) unstable; urgency=low
-+
-+ * debian/{postinst, postrm}: change md5sum markers to make them easier
-+ to find later (and consistent with jade); add cleanup of older form.
-+
-+ -- Mark W. Eichin <eichin@kitten.gen.ma.us> Tue, 1 Jul 1997 01:08:31 -0400
-+
-+docbook (3.0-1) unstable; urgency=low
-+
-+ * Initial Release.
-+ * docbook.cat: point to davenport subdir.
-+ * rules: install everything, under binary-indep.
-+ * debian/{postinst, postrm}: use md5sum markers to add/remove catalog
-+ entries. Also nuke SGMLDECL line (by wrapping it in an sgml -- comment
-+ --.)
-+
-+ -- Mark Eichin <eichin@kitten.gen.ma.us> Mon, 30 Jun 1997 14:11:38 -0400
-+
-+
---- docbook-4.5.orig/debian/copyright
-+++ docbook-4.5/debian/copyright
-@@ -0,0 +1,39 @@
-+This package was debianized by Mark Eichin <eichin@thok.org> on Mon,
-+30 Jun 1997 14:11:38 -0400. It is currently maintained by Adam Di
-+Carlo <aph@debian.org> and the Debian XML/SGML group
-+<debian-xml-sgml-devel@lists.alioth.debian.org>. No changes were made
-+to the upstream version of these materials, although the provided SGML
-+Open catalogs were trimmed or enhanced to suit Debian's SGML
-+infrastructure. All Debian integration scripts and packages are under
-+the GPL v2 or better, a copy of which can be found on Debian systems
-+in '/usr/share/common-licenses/GPL'.
-+
-+Download:
-+
-+ The original upstream materials may be downloaded from
-+ <URL:http://www.oasis-open.org/docbook/sgml/>. This process is
-+ transparent via the `get-orig-source' target in debian/rules.
-+
-+Copyright:
-+
-+ Copyright 1992-2006 HaL Computer Systems, Inc.,
-+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
-+ Corporation, orman Walsh, un Microsystems, Inc., and the
-+ Organization for the Advancement of Structured Information
-+ Standards (OASIS).
-+
-+License and Warranty:
-+
-+ Permission to use, copy, modify and distribute the DocBook DTD and
-+ its accompanying documentation for any purpose and without fee is
-+ hereby granted in perpetuity, provided that the above copyright
-+ notice and this paragraph appear in all copies. The copyright
-+ holders make no representation about the suitability of the DTD for
-+ any purpose. It is provided "as is" without expressed or implied
-+ warranty.
-+
-+ If you modify the DocBook DTD in any way, except for declaring and
-+ referencing additional sets of general entities and declaring
-+ additional notations, label your DTD as a variant of DocBook. See
-+ the maintenance documentation for more information.
-+
---- docbook-4.5.orig/debian/rules
-+++ docbook-4.5/debian/rules
-@@ -0,0 +1,121 @@
-+#!/usr/bin/make -f
-+# Made with the aid of debmake, by Christoph Lameter,
-+# based on the sample debian/rules file for GNU hello by Ian Jackson.
-+
-+PACKAGE := docbook
-+
-+include /usr/share/dpatch/dpatch.make
-+
-+
-+debian/docbook.install:
-+ set -ex ; \
-+ touch $@ ; \
-+ for db in docbook-* ; do \
-+ dbver=`echo $${db} | sed -e 's/docbook-//g'` ; \
-+ for file in $${db}/*.dcl $${db}/*.dtd $${db}/*.mod ; do \
-+ if [ $${file} != $${db}/dbgenent.mod ] ; then \
-+ echo "$${file} usr/share/sgml/docbook/dtd/$${dbver}" >> $@ ; \
-+ else \
-+ echo "$${file} etc/sgml/docbook/$${dbver}" >> $@ ; \
-+ fi ; \
-+ done ; \
-+ done
-+
-+debian/docbook.links:
-+ set -ex ; \
-+ touch $@ ; \
-+ for db in docbook-* ; do \
-+ dbver=`echo $${db} | sed -e 's/docbook-//g'` ; \
-+ [ -f $${db}/dbgenent.mod ] && \
-+ echo -n "etc/sgml/docbook/$${dbver}/dbgenent.mod " >> $@ && \
-+ echo "usr/share/sgml/docbook/dtd/$${dbver}/dbgenent.mod" >> $@ ; \
-+ [ -f $${db}/docbook.cat ] && \
-+ echo "usr/share/sgml/docbook/dtd/$${dbver}/catalog usr/share/sgml/docbook/dtd/$${dbver}/docbook.cat" >> $@ ; \
-+ done
-+
-+debian/docbook.sgmlcatalogs:
-+ set -ex ; \
-+ touch $@ ; \
-+ echo "catalog /usr/share/sgml/docbook/dtd/catalog" > $@ ; \
-+ for db in docbook-* ; do \
-+ dbver=`echo $${db} | sed -e 's/docbook-//g'` ; \
-+ [ -f $${db}/docbook.cat ] && \
-+ echo "$${db}/docbook.cat /usr/share/sgml/docbook/dtd/$${dbver}/catalog" >> $@ ; \
-+ done
-+
-+build: patch-stamp build-stamp
-+
-+build-stamp: debian/docbook.install debian/docbook.links debian/docbook.sgmlcatalogs
-+ dh_testdir
-+ touch build-stamp
-+
-+clean: unpatch
-+ dh_testdir
-+ dh_testroot
-+ rm -f build-stamp patch-stamp
-+ rm -f debian/docbook.install \
-+ debian/docbook.links \
-+ debian/docbook.sgmlcatalogs
-+ dh_clean
-+
-+install: build
-+ dh_testdir
-+ dh_testroot
-+ dh_clean -k
-+ dh_installdirs
-+
-+binary-indep: build
-+ dh_testdir
-+ dh_testroot
-+ dh_installchangelogs ChangeLog.upstream
-+ dh_install
-+ dh_installdocs debian/README.docbook.dcl
-+ dh_installexamples
-+ dh_installcatalogs
-+ dh_link
-+ find $(CURDIR)/debian/$(PACKAGE) -type l -follow >/dev/null # exits 1 on broken links
-+ dh_compress
-+ dh_fixperms
-+ dh_installdeb
-+ dh_gencontrol
-+ dh_md5sums
-+ dh_builddeb
-+
-+binary-arch: build
-+
-+binary: binary-indep binary-arch
-+
-+.PHONY: build clean binary binary-arch binary-indep
-+
-+# This following code is used to create the .orig.tar.gz tarball.
-+# Use it to prepare it for a new release.
-+
-+version=$(shell dpkg-parsechangelog | sed -n -e 's/^Version: \(.*\)-[^-]*/\1/p')
-+
-+.PHONY: get-orig-source
-+get-orig-source:
-+ set -ex ; \
-+ TMPDIR=`mktemp -d docbook-$(version).orig` ; \
-+ touch "$$TMPDIR"/ChangeLog.upstream ; \
-+ for db in 4.5 4.4 4.3 4.2 ; do \
-+ mkdir -p "$$TMPDIR"/docbook-$${db} ; \
-+ dbzip=docbook-$${db}.zip ; \
-+ wget -P "$$TMPDIR" http://www.oasis-open.org/docbook/sgml/$${db}/"$$dbzip" ; \
-+ unzip -d "$$TMPDIR"/docbook-$${db} "$$TMPDIR"/"$$dbzip" ; \
-+ rm -f "$$TMPDIR"/"$$dbzip" ; \
-+ [ -f "$$TMPDIR"/docbook-$${db}/ChangeLog ] && \
-+ cat "$$TMPDIR"/docbook-$${db}/ChangeLog >> "$$TMPDIR"/ChangeLog.upstream ; \
-+ done; \
-+ for db in 4.1 4.0 3.1 3.0 2.4.1 ; do \
-+ mkdir -p "$$TMPDIR"/docbook-$${db} ; \
-+ dbver=`echo $${db} | sed -e 's/\.//g'` ; \
-+ dbzip=docbk"$$dbver".zip ; \
-+ wget -P "$$TMPDIR" http://www.oasis-open.org/docbook/sgml/$${db}/"$$dbzip" ; \
-+ unzip -d "$$TMPDIR"/docbook-$${db} "$$TMPDIR"/"$$dbzip" ; \
-+ rm -f "$$TMPDIR"/"$$dbzip" ; \
-+ cat "$$TMPDIR"/docbook-$${db}/"$$dbver"chg.txt >> "$$TMPDIR"/ChangeLog.upstream ; \
-+ done ; \
-+ find "$$TMPDIR" -type f ! -perm 644 -exec chmod 644 "{}" ";" ; \
-+ GZIP=-9 tar -czf $(CURDIR)/docbook_${version}.orig.tar.gz "$$TMPDIR" ; \
-+ rm -rf "$$TMPDIR"
-+
---- docbook-4.5.orig/debian/README.docbook.dcl
-+++ docbook-4.5/debian/README.docbook.dcl
-@@ -0,0 +1,98 @@
-+From: Adam Di Carlo <adam@onshore.com>
-+Subject: DOCBOOK: objection to docbook.dcl
-+To: docbook@lists.oasis-open.org
-+Cc: docbook-tc@oasis-open.org
-+Date: Wed, 21 Mar 2001 02:35:31 -0500
-+
-+
-+Shipped with the DocBook DTDs from 2.4.1 and up is 'docbook.dcl', an
-+SGML declaration for use with DocBook documents. However, this
-+declartion is unnecessarily restrictive, to the level where it is
-+rather cumbersome to implement.
-+
-+My argument is that the DocBook declaration should diverge from the SP
-+(and OpenSP) implied declarations only where the divergance expresses
-+a real necessity to diverge. This is based on the principle that
-+software (including SGML parsers) should be tolerant of what they
-+accept. The unnecessarily broad divergance of the shipped Docbook
-+declaration puts a burden on document engineers using DocBook.
-+
-+I am considering here only the DocBook SGML DTD, since I presume the
-+Declaration is rather irrelevant for XML files, since all XML files
-+have the same XML declaration applied to them.
-+
-+I consider here 'docbook.dcl' as shipped with DocBook 4.1.
-+
-+Major problems:
-+
-+ OMITTAG is turned off (why?)
-+
-+ NAMELEN is too short
-+
-+ Document Character set is too restrictive
-+
-+ SUBDOC is turned off (why?)
-+
-+
-+Description:
-+
-+* OMITTAG is turned off
-+
-+'OMITTAG' is turned off in 'docbook.dcl', disallowing markup
-+minimization of any sort. This is on in the implied declaration of
-+both Jade and OpenJade. This creates problems because documents using
-+the default declaration for their parser will have a valid document,
-+but if the user decides to be more fasidious and user the docbook SGML
-+declaration, sudden their document will not be valid.
-+
-+The major problem is that trying to turn this on will make a large
-+number of existing SGML DocBook instances invalid.
-+
-+
-+* NAMELEN is too short
-+
-+The NAMELEN quantity set in docbook.dcl is set to 45, rather than the
-+default SP NAMELEN of 99999999.
-+
-+A number of users have complained of problems due to this limitation
-+(do a google search on 'docbook namelen' to see what I mean) in any
-+cases (such as the SUSE Linux distribution) where the declaration is
-+enforced.
-+
-+Quoting <URL:http://xml.coverpages.org/wlw14.html>:
-+
-+ Care should be used when changing these since creating a variant
-+ syntax may make it difficult for some SGML systems to process
-+ documents created with that syntax. The best means of guaranteeing
-+ portability between different SGML systems and applications is to
-+ use the reference concrete syntax as much as possible.
-+
-+One wonders why we need to diverge from the reference concrete syntax
-+here.
-+
-+
-+* Document Character set it too restrictive
-+
-+As an example, to workaround limitations in the support of KOI-R SDATA
-+entities in Jade and OpenJade, KOI-R users have to use unicode
-+entities. With the docbook.dcl file, these entities are disallowed,
-+although they are perfectly valid with the implied SP declaration.
-+Example of being disallowed:
-+
-+ jade:/usr/share/sgml/entities/sgml-iso-entities-8879.1986/ISOcyr1.ent:1:16:E: \
-+ "1072" is not a character number in the document character set
-+
-+
-+* SUBDOC is turned off
-+
-+Why is it necessary to disallow SUBDOC in DocBook SGML documents?
-+Seems like some authors may wish to use this, even if its not fully
-+supported by existing stylesheets.
-+
-+
-+
-+I hope I got my facts correct, and that this commentary is useful.
-+
-+--
-+.....Adam Di Carlo....adam@onshore.com.....<URL:http://www.onshored.com/>
-+
---- docbook-4.5.orig/debian/README.Debian
-+++ docbook-4.5/debian/README.Debian
-@@ -0,0 +1,35 @@
-+ DocBook DTDs for Debian GNU/Linux
-+ ---------------------------------
-+
-+DocBook is an SGML DTD for software documentation. It is very
-+thorough, and is used by many different organization to produce books,
-+articles, references, and even manual pages.
-+
-+The home page for DocBook is <URL:http://www.oasis-open.org/docbook/>.
-+
-+A wonderful introduction and reference is available in the
-+docbook-defguide package, which can also be read online at
-+<URL:http://www.docbook.org/tdg/>.
-+
-+To format DocBook documents, you'll need a style-sheet package, either
-+docbook-dsssl or docbook-xsl, depending on what styling language you
-+would like to use.
-+
-+There are far too many other packages to describe here, both for
-+authors, editors, stylers, or information architects. A list of such
-+packages may be perused, for instance, using 'apt-cache search
-+docbook'.
-+
-+If you have a question about how to work with DocBook, there are many
-+mailing lists available; see <URL:http://www.docbook.org/>.
-+
-+If you have suggestions or questions regarding debian-specific issues,
-+please consult the debian-sgml@lists.debian.org mailing list,
-+<URL:http://lists.debian.org/>.
-+
-+--
-+.....Adam Di Carlo....adam@onshore.com.....<URL:http://www.onshored.com/>
-+(previously, Mark Eichin <eichin@thok.org>, Mon, 30 Jun 1997 14:11:38 -0400)
-+
-+
-+
---- docbook-4.5.orig/catalog
-+++ docbook-4.5/catalog
-@@ -0,0 +1,19 @@
-+ -- ...................................................................... --
-+ -- Prefer PUBID to SYSID ................................................ --
-+OVERRIDE YES
-+
-+ -- latest DocBook --
-+PUBLIC "-//OASIS//DTD DocBook//EN" "4.5/docbook.dtd"
-+ -- disabled, see README.docbook.dcl --
-+-- DTDDECL "-//OASIS//DTD DocBook//EN" "4.5/docbook.dcl" --
-+
-+ -- latest DocBook v4--
-+PUBLIC "-//OASIS//DTD DocBook V4//EN" "4.5/docbook.dtd"
-+ -- disabled, see README.docbook.dcl --
-+-- DTDDECL "-//OASIS//DTD DocBook V4//EN" "4.5/docbook.dcl" --
-+
-+ -- latest DocBook v3--
-+PUBLIC "-//OASIS//DTD DocBook V3//EN" "3.1/docbook.dtd"
-+ -- disabled, see README.docbook.dcl --
-+-- DTDDECL "-//OASIS//DTD DocBook V3//EN" "3.1/docbook.dcl" --
-+
diff --git a/source/ap/linuxdoc-tools/sources/gtkdoc-1.13-fixref.patch b/source/ap/linuxdoc-tools/sources/gtkdoc-1.13-fixref.patch
new file mode 100644
index 000000000..89b062dee
--- /dev/null
+++ b/source/ap/linuxdoc-tools/sources/gtkdoc-1.13-fixref.patch
@@ -0,0 +1,69 @@
+diff -up gtk-doc-1.13/gtkdoc-fixxref.in.fix-fixxref gtk-doc-1.13/gtkdoc-fixxref.in
+--- gtk-doc-1.13/gtkdoc-fixxref.in.fix-fixxref 2009-12-17 14:36:51.000000000 -0500
++++ gtk-doc-1.13/gtkdoc-fixxref.in 2010-01-06 17:56:55.457121567 -0500
+@@ -168,36 +168,38 @@ foreach my $dir (@EXTRA_DIRS) {
+ }
+ }
+
+-open (INPUT, "$MODULE-sections.txt")
+- || die "Can't open $MODULE-sections.txt: $!";
+-my $subsection = "";
+-while (<INPUT>) {
+- if (m/^#/) {
+- next;
+-
+- } elsif (m/^<SECTION>/) {
+- $subsection = "";
+- } elsif (m/^<SUBSECTION\s*(.*)>/i) {
+- $subsection = $1;
+- } elsif (m/^<SUBSECTION>/) {
+- next;
+- } elsif (m/^<TITLE>(.*)<\/TITLE>/) {
+- next;
+- } elsif (m/^<FILE>(.*)<\/FILE>/) {
+- next;
+- } elsif (m/^<INCLUDE>(.*)<\/INCLUDE>/) {
+- next;
+- } elsif (m/^<\/SECTION>/) {
+- next;
+- } elsif (m/^(\S+)/) {
+- my $symbol=CreateValidSGMLID($1);
+-
+- if ($subsection eq "Standard" || $subsection eq "Private") {
+- $NoLinks{$symbol} = 1;
++if (defined($MODULE)) {
++ open (INPUT, "$MODULE-sections.txt")
++ || die "Can't open $MODULE-sections.txt: $!";
++ my $subsection = "";
++ while (<INPUT>) {
++ if (m/^#/) {
++ next;
++
++ } elsif (m/^<SECTION>/) {
++ $subsection = "";
++ } elsif (m/^<SUBSECTION\s*(.*)>/i) {
++ $subsection = $1;
++ } elsif (m/^<SUBSECTION>/) {
++ next;
++ } elsif (m/^<TITLE>(.*)<\/TITLE>/) {
++ next;
++ } elsif (m/^<FILE>(.*)<\/FILE>/) {
++ next;
++ } elsif (m/^<INCLUDE>(.*)<\/INCLUDE>/) {
++ next;
++ } elsif (m/^<\/SECTION>/) {
++ next;
++ } elsif (m/^(\S+)/) {
++ my $symbol=CreateValidSGMLID($1);
++
++ if ($subsection eq "Standard" || $subsection eq "Private") {
++ $NoLinks{$symbol} = 1;
++ }
+ }
+ }
++ close (INPUT);
+ }
+-close (INPUT);
+
+ &FixCrossReferences ($MODULE_DIR);
+
diff --git a/source/ap/linuxdoc-tools/sources/linuxdoc-tools.lib64.diff b/source/ap/linuxdoc-tools/sources/linuxdoc-tools.lib64.diff
deleted file mode 100644
index 4741f2e2c..000000000
--- a/source/ap/linuxdoc-tools/sources/linuxdoc-tools.lib64.diff
+++ /dev/null
@@ -1,10 +0,0 @@
---- linuxdoc-tools-0.9.20/bin/linuxdoc.in.orig 2002-09-10 14:31:56.000000000 -0400
-+++ linuxdoc-tools-0.9.20/bin/linuxdoc.in 2002-09-10 14:32:32.000000000 -0400
-@@ -23,6 +23,7 @@
-
- use lib "@DATADIR@";
- use lib "@prefix@/perl5";
-+use lib "@prefix@/lib64/perl5";
- use lib "@prefix@/lib/perl5";
- use lib "@prefix@/share/perl5";
-
diff --git a/source/ap/linuxdoc-tools/sources/source.download b/source/ap/linuxdoc-tools/sources/source.download
index 479033e0d..410009021 100755
--- a/source/ap/linuxdoc-tools/sources/source.download
+++ b/source/ap/linuxdoc-tools/sources/source.download
@@ -2,55 +2,73 @@
# they contain patches required to either fix build or runtime problems,
# and it's easier to maintain this hunk of a package when the patches &
# sources are self contained.
+#
+# Some sources have been recompressed with LZMA for better compression results.
# linuxdoc-tools:
# This provides things such as sgml2txt.
-wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/linuxdoc-tools-0.9.65-1.fc12.src.rpm
+wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/linuxdoc-tools-0.9.66-4.fc13.src.rpm
+
# OpenSP:
# http://openjade.sourceforge.net/download.html
# wget -c http://kent.dl.sourceforge.net/sourceforge/openjade/OpenSP-1.5.2.tar.gz
#
-wget -c http://download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/opensp-1.5.2-11.fc11.src.rpm
+wget -c http://download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/opensp-1.5.2-12.fc12.src.rpm
+
# OpenJade:
# http://openjade.sourceforge.net/
wget -c http://downloads.sourceforge.net/openjade/openjade-1.3.3-pre1.tar.gz
+
# sgmltools-common.
# It's broken and needs patching so we'll use Fedora's.
#wget -c ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/sgml-common-0.6.3.tgz
-wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/sgml-common-0.6.3-29.fc12.src.rpm
+wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/sgml-common-0.6.3-31.fc13.src.rpm
+
# DocBook docs:
# http://www.oasis-open.org/docbook/sgml/
#
#wget -c http://www.oasis-open.org/docbook/sgml/3.1/docbk31.zip
#wget -c http://www.docbook.org/sgml/4.5/docbook-4.5.zip
-# We use Debian's source instead because they patch the docbooks which make them work!
+# We use Debian's source because it's more convenient since they package all versions in one archive:
wget -c http://ftp.de.debian.org/debian/pool/main/d/docbook/docbook_4.5.orig.tar.gz
-wget -c http://ftp.de.debian.org/debian/pool/main/d/docbook/docbook_4.5-4.diff.gz
+
# http://www.linuxfromscratch.org/blfs/view/stable/pst/docbook-dsssl.html
-#
-wget -c ftp://ftp.fu-berlin.de/unix/linux/mirrors/gentoo/distfiles/docbook-dsssl-1.79.tar.bz2
+# Check versions:
+# http://sourceforge.net/projects/docbook/files/
+wget -c ftp://ftp.linux.ee/pub/gentoo/distfiles/distfiles/docbook-dsssl-1.79.tar.bz2
wget -c http://switch.dl.sourceforge.net/sourceforge/docbook/docbook-dsssl-doc-1.79.tar.bz2
# Why don't they put the patches into the distributed source...???
#wget -c ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/docbook-utils-0.6.14.tar.gz
-wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/docbook-utils-0.6.14-17.fc12.src.rpm
+wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/docbook-utils-0.6.14-23.fc13.src.rpm
+
#
wget -c http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip
# https://sourceforge.net/project/showfiles.php?group_id=21935&package_id=16608
-#wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/docbook-style-xsl-1.75.1-1.fc12.src.rpm
-wget -c http://downloads.sourceforge.net/docbook/docbook-xsl-1.71.1.tar.bz2
-wget -c http://downloads.sourceforge.net/docbook/docbook-xsl-doc-1.71.1.tar.bz2
+wget -c ftp://ftp.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/docbook-style-xsl-1.75.2-5.fc13.src.rpm
+
+
+# We use the Fedora "docbook-style-xsl" SRPM for this rather than the original source which is why
+# these "docbook-xsl*" files aren't in our sources directory.
+#wget -c "http://downloads.sourceforge.net/project/docbook/docbook-xsl/1.75.2/docbook-xsl-1.75.2.tar.bz2?use_mirror=freefr"
+##wget -c "http://downloads.sourceforge.net/project/docbook/docbook-xsl-doc/1.75.2/docbook-xsl-doc-1.75.2.tar.bz2?use_mirror=freefr"
+
# gnome-doc-utils, needed to build gtk-doc:
-wget -c http://ftp.gnome.org/pub/GNOME/sources/gnome-doc-utils/0.17/gnome-doc-utils-0.17.2.tar.bz2
+wget -c http://ftp.acc.umu.se/pub/GNOME/sources/gnome-doc-utils/0.19/gnome-doc-utils-0.19.1.tar.bz2
+
# gtk-doc:
-wget -c http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.11/gtk-doc-1.11.tar.bz2
+# When upgrading this, it's worth checking the Fedora SRPM. For version 1.13
+# we're carrying a fix for gtk-doc-fixref. Make sure newer versions don't need
+# any patches!
+wget -c http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.13/gtk-doc-1.13.tar.bz2
+
# sgmlspl
# http://www.cs.indiana.edu/~asengupt/sgml/SGMLSpm/DOC/HTML/sgmlspl/sgmlspl.html
@@ -58,10 +76,12 @@ wget -c http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.11/gtk-doc-1.11.tar.bz2
wget -c http://ftp.debian.org/debian/pool/main/libs/libsgmls-perl/libsgmls-perl_1.03ii.orig.tar.gz
wget -c http://ftp.de.debian.org/debian/pool/main/libs/libsgmls-perl/libsgmls-perl_1.03ii-32.diff.gz
+
# xmlto
# https://fedorahosted.org/releases/x/m/xmlto
-wget -c --no-check-certificate http://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.22.tar.bz2
+wget -c --no-check-certificate https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.23.tar.bz2
+
# AsciiDoc
# http://www.methods.co.nz/asciidoc/
-wget -c http://downloads.sourceforge.net/sourceforge/asciidoc/asciidoc-8.4.5.tar.gz
+wget -c "http://downloads.sourceforge.net/project/asciidoc/asciidoc/8.5.2/asciidoc-8.5.2.tar.gz?use_mirror=ignum"
diff --git a/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools b/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools
index 6eddaf4e2..9533bd861 100755
--- a/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools
+++ b/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools
@@ -20,17 +20,18 @@
# Package info:
PKGNAM=linuxdoc-tools
-# Automatically determine architecture for build & packaging:
+# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
# Unless $ARCH is already set, use uname -m for all other archs:
- *) export ARCH=$( uname -m ) ;;
+ *) export ARCH=$( uname -m ) ;;
esac
fi
-BUILD=${BUILD:-5}
-PKGVERSION=0.9.56 # use the version of linuxdoc-tools as the package version.
+export PKGVERSION=0.9.66 # use the version of linuxdoc-tools as the package version.
+BUILD=${BUILD:-2}
PKGEXT=${PKGEXT:-txz}
export CWD=$PWD
@@ -49,6 +50,7 @@ rm -rf /usr/share/doc/linuxdoc-tools
rm -rf /usr/share/sgml
rm -rf /usr/share/xml/{docbook,xml-iso-entities*} # can't wipe the entire dir because of libglade
rm -rf ~/.texmf-var/ # created by docbook-utils
+rm -rf ~/.texlive* # incase you were using Texlive rather than Textex-3
####################################################################
@@ -75,4 +77,7 @@ slacktrack $TFS \
-l $CWD/build.$ARCH.log \
-R $CWD/postbuildfixes.sh \
-b $PKGSTORE \
- -YQOcp $PKGNAM-$PKGVERSION-$ARCH-$BUILD.$PKGEXT ./linuxdoc-tools.build
+ -rYQOcp $PKGNAM-$PKGVERSION-$ARCH-$BUILD.$PKGEXT ./linuxdoc-tools.build
+
+# Compress build log:
+xz -fvz $CWD/build.$ARCH.log
diff --git a/source/ap/lm_sensors/lm_sensors.SlackBuild b/source/ap/lm_sensors/lm_sensors.SlackBuild
index 72ad373de..83785a566 100755
--- a/source/ap/lm_sensors/lm_sensors.SlackBuild
+++ b/source/ap/lm_sensors/lm_sensors.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,18 @@
PKGNAM=lm_sensors
-VERSION=${VERSION:-3.1.1}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-3.1.2}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
@@ -34,6 +41,8 @@ else
LIBDIRSUFFIX=""
fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
diff --git a/source/ap/lsof/lsof.SlackBuild b/source/ap/lsof/lsof.SlackBuild
index afcef1678..6a141cc34 100755
--- a/source/ap/lsof/lsof.SlackBuild
+++ b/source/ap/lsof/lsof.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=4.78
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo lsof_*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d _ | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-lsof
@@ -34,10 +43,10 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf lsof_$VERSION
-tar xjvf $CWD/lsof_$VERSION.tar.bz2
-cd lsof_$VERSION
-tar xvf lsof_${VERSION}_src.tar
-cd lsof_${VERSION}_src
+tar xjvf $CWD/lsof_$VERSION.tar.bz2 || exit 1
+cd lsof_$VERSION || exit 1
+tar xvf lsof_${VERSION}_src.tar || exit 1
+cd lsof_${VERSION}_src || exit 1
chown -R root:root .
find . \
@@ -69,8 +78,3 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
makepkg -l y -c n $TMP/lsof-$VERSION-$ARCH-$BUILD.txz
-# Clean up the extra stuff:
-if [ "$1" = "--cleanup" ]; then
- rm -rf $TMP/lsof-$VERSION
- rm -rf $PKG
-fi
diff --git a/source/ap/man-pages/man-pages.SlackBuild b/source/ap/man-pages/man-pages.SlackBuild
index 26b7bb57a..8930798bf 100755
--- a/source/ap/man-pages/man-pages.SlackBuild
+++ b/source/ap/man-pages/man-pages.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,9 +20,9 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-3.22}
+VERSION=${VERSION:-$(echo man-pages-3.*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
ARCH=noarch
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -33,9 +33,10 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf man-pages-$VERSION
-tar xvf $CWD/man-pages-$VERSION.tar.bz2
+tar xf $CWD/man-pages-$VERSION.tar.bz2
tar xf $CWD/man-pages-posix-2003-a.tar.bz2
chown -R root:root man-pages-$VERSION man-pages-posix-2003-a
+chmod -R a-s,u+rw,go+r-w man-pages-$VERSION man-pages-posix-2003-a
find man-pages-$VERSION \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
diff --git a/source/ap/mc/mc.SlackBuild b/source/ap/mc/mc.SlackBuild
index 8beae8b41..d4f00205d 100755
--- a/source/ap/mc/mc.SlackBuild
+++ b/source/ap/mc/mc.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=20090714_git
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo mc-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -33,6 +42,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
@@ -52,7 +63,9 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-./autogen.sh
+if [ ! -x ./configure ]; then
+ ./autogen.sh
+fi
CFLAGS="$SLKCFLAGS" \
./configure \
diff --git a/source/ap/mpg123/mpg123.SlackBuild b/source/ap/mpg123/mpg123.SlackBuild
new file mode 100755
index 000000000..5ac3b53a6
--- /dev/null
+++ b/source/ap/mpg123/mpg123.SlackBuild
@@ -0,0 +1,157 @@
+#!/bin/sh
+# Copyright 2006-2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=mpg123
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+ TARGET="x86"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ TARGET=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+ TARGET="x86-64"
+elif [ "$ARCH" = "arm" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ TARGET="arm_nofpu"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ TARGET=""
+fi
+
+# configure --help shows the following re TARGET:
+# --with-cpu=i386_fpu Use code optimized for i386 processors with floating point arithmetic
+# --with-cpu=i386_nofpu Use code optimized for i386 processors with fixed point arithmetic (experimental)
+# --with-cpu=i486 Use code optimized for i486 processors (only usable alone!)
+# --with-cpu=i586 Use code optimized for i586 processors
+# --with-cpu=i586_dither Use code optimized for i586 processors with dithering (noise shaping), adds 256K to binary size
+# --with-cpu=3dnow Use code optimized for 3DNow processors
+# --with-cpu=3dnowext Use code optimized for 3DNowExt processors (K6-3+, Athlon)
+# --with-cpu=3dnowext_alone Really only 3DNowExt decoder, without 3DNow fallback for flexible rate
+# --with-cpu=mmx Use code optimized for MMX processors
+# --with-cpu=mmx_alone Really only MMX decoder, without i586 fallback for flexible rate
+# --with-cpu=sse Use code optimized for SSE processors
+# --with-cpu=sse_alone Really only SSE decoder, without i586 fallback for flexible rate
+# --with-cpu=x86 Pack all x86 opts into one binary (excluding i486, including dither)
+# --with-cpu=x86-64 Use code optimized for x86-64 processors (AMD64 and Intel64, including dithered generic)
+# --with-cpu=arm_nofpu Use code optimized for ARM processors with fixed point arithmetic (experimental)
+
+rm -rf $PKG
+mkdir -p $PKG $TMP
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
+cd ${PKGNAM}-$VERSION || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/${PKGNAM}-$VERSION \
+ --with-cpu=$TARGET \
+ --with-audio=alsa,oss \
+ --with-default-audio=alsa \
+ --with-optimization=2 \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Add compat symlinks for mpg321:
+( cd $PKG/usr/bin ; ln -s mpg123 mpg321 )
+( cd $PKG/usr/man/man1 ; ln -sf mpg123.1 mpg321.1 )
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS COPYING INSTALL NEWS* README TODO doc \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/mpg123/slack-desc b/source/ap/mpg123/slack-desc
new file mode 100644
index 000000000..00bd3478e
--- /dev/null
+++ b/source/ap/mpg123/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+mpg123: mpg123 (a command-line mp3 player)
+mpg123:
+mpg123: mpg123 is a real time MPEG 1.0/2.0/2.5 audio player/decoder for
+mpg123: layers 1, 2, and 3 (MPEG 1.0 layer 3 aka MP3 most commonly tested).
+mpg123:
+mpg123: It is free software licensed under LGPL 2.1.
+mpg123:
+mpg123: Homepage: http://mpg123.org/
+mpg123:
+mpg123:
+mpg123:
diff --git a/source/ap/mpg321/mpg321.SlackBuild b/source/ap/mpg321/mpg321.SlackBuild
deleted file mode 100755
index 340c32703..000000000
--- a/source/ap/mpg321/mpg321.SlackBuild
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/sh
-
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-VERSION=0.2.10
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-mpg321
-
-rm -rf $PKG
-mkdir -p $TMP $PKG
-
-cd $TMP
-tar xvf $CWD/mpg321-$VERSION.tar.gz || exit 1
-cd mpg321-$VERSION || exit 1
-
-CFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --build=$ARCH-slackware-linux
-
-make $NUMJOBS || make || exit 1
-
-strip mpg321
-mkdir -p $PKG/usr/bin
-cat mpg321 > $PKG/usr/bin/mpg321
-chmod 755 $PKG/usr/bin/mpg321
-( cd $PKG/usr/bin ; rm -f mpg123 ; ln -sf mpg321 mpg123 )
-
-mkdir -p $PKG/usr/man/man1
-cat mpg321.1 | gzip -9c > $PKG/usr/man/man1/mpg321.1.gz
-
-mkdir -p $PKG/usr/doc/mpg321-$VERSION
-cp -a \
- AUTHORS BUGS COPYING ChangeLog HACKING INSTALL NEWS \
- README README.remote THANKS TODO \
- $PKG/usr/doc/mpg321-$VERSION
-chown -R root:root $PKG/usr/doc/mpg321-$VERSION
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-# Build the package:
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/mpg321-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/ap/mpg321/slack-desc b/source/ap/mpg321/slack-desc
deleted file mode 100644
index 81b435b58..000000000
--- a/source/ap/mpg321/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-mpg321: mpg321 (a command-line mp3 player)
-mpg321:
-mpg321: mpg321 is a free command-line mp3 player, which uses the mad audio
-mpg321: decoding library. mpg321 is written to be a drop-in replacement for
-mpg321: the mpg123 player for front-ends such as gqmpeg and programs which use
-mpg321: mpg123 to decode mp3 files (like gtoaster, and other CD-recording
-mpg321: software).
-mpg321:
-mpg321: mpg321 requires libao.so from the oggutils package.
-mpg321:
-mpg321:
diff --git a/source/ap/mysql/mirror-url b/source/ap/mysql/mirror-url
deleted file mode 100644
index 37be0283c..000000000
--- a/source/ap/mysql/mirror-url
+++ /dev/null
@@ -1 +0,0 @@
-http://mysql.he.net/Downloads/MySQL-5.0/mysql-5.0.82.tar.gz
diff --git a/source/ap/mysql/mysql-embedded.build b/source/ap/mysql/mysql-embedded.build
index 9b06d386b..2ac77f314 100755
--- a/source/ap/mysql/mysql-embedded.build
+++ b/source/ap/mysql/mysql-embedded.build
@@ -3,10 +3,19 @@
# by: David Cantrell <david@slackware.com>
# Currently maintained by: Patrick Volkerding <volkerdi@slackware.com>
-VERSION=5.0.84
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo mysql-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-mysql
@@ -20,6 +29,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -29,15 +41,21 @@ rm -rf mysql-$VERSION
tar xvf $CWD/mysql-$VERSION.tar.?z* || exit 1
cd mysql-$VERSION
+if ls $CWD/*.diff.gz 1> /dev/null 2> /dev/null ; then
+ for patch in $CWD/*.diff.gz ; do
+ zcat $patch | patch -p1 --verbose || exit 1
+ done
+fi
+
CFLAGS="$SLKCFLAGS -fPIC" CXXFLAGS="$SLKCFLAGS -fPIC" \
./configure --prefix=/usr --libdir=/usr/lib${LIBDIRSUFFIX} \
--datadir=/usr/share --sysconfdir=/etc/mysql \
--libexecdir=/usr/sbin --localstatedir=/var/lib/mysql \
--without-docs --without-man --without-server \
- --with-embedded-server --without-innodb --without-bench \
+ --with-embedded-server --without-innodb \
--without-berkeley-db --without-row-based-replication \
--without-readline --disable-shared --with-charset=utf8 \
- --without-debug --with-pthread --without-openssl --without-query-cache \
+ --without-debug --with-pthread --without-ssl --without-query-cache \
--without-geometry --with-pic
make -j6 || make || exit 1
diff --git a/source/ap/mysql/mysql.SlackBuild b/source/ap/mysql/mysql.SlackBuild
index 16ba3efa8..cf846ffe1 100755
--- a/source/ap/mysql/mysql.SlackBuild
+++ b/source/ap/mysql/mysql.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,11 +25,20 @@
# Currently maintained by: Patrick Volkerding <volkerdi@slackware.com>
-VERSION=5.0.84
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-$(echo mysql-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-mysql
@@ -43,6 +52,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -51,6 +63,13 @@ cd $TMP
rm -rf mysql-$VERSION
tar xvf $CWD/mysql-$VERSION.tar.?z* || exit 1
cd mysql-$VERSION
+
+if ls $CWD/*.diff.gz 1> /dev/null 2> /dev/null ; then
+ for patch in $CWD/*.diff.gz ; do
+ zcat $patch | patch -p1 --verbose || exit 1
+ done
+fi
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -70,13 +89,13 @@ CXX=gcc \
--mandir=/usr/man \
--infodir=/usr/info \
--enable-assembler \
- --with-raid \
--without-debug \
--enable-thread-safe-client \
- --without-bench \
--with-extra-charsets=complex \
- --with-vio \
- --with-openssl \
+ --with-ssl=/usr \
+ --enable-largefile \
+ --with-innodb \
+ --with-readline \
--build=$ARCH-slackware-linux
#
# --without-readline
@@ -84,6 +103,22 @@ CXX=gcc \
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG
+# install additional headers needed for building external engine plugins
+for i in sql include regex; do
+ for j in $i/*.h; do
+ install -m 644 $j $PKG/usr/include/mysql/
+ done
+done
+
+mkdir -p $PKG/usr/include/mysql/atomic
+for i in include/atomic/*.h; do
+ install -m 644 $i $PKG/usr/include/mysql/atomic/
+done
+
+# The ./configure option to omit this has gone away, so we'll omit it
+# the old-fashioned way. It's all in the source tarball if you need it.
+rm -rf $PKG/usr/sql-bench
+
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -94,13 +129,15 @@ cp support-files/my-{huge,large,medium,small}.cnf $PKG/etc
# Install docs
mkdir -p $PKG/usr/doc/mysql-$VERSION/Docs
cp -a \
- COPYING* MIRRORS README* \
+ COPYING* EXCEPTIONS* INSTALL-SOURCE README* \
$PKG/usr/doc/mysql-$VERSION
( cd Docs
+ # Seems most of the Docs/* are gone, but we'll leave the cp stuff
+ # in case it returns.
cp -a INSTALL-BINARY *.html *.txt Flags \
$PKG/usr/doc/mysql-$VERSION/Docs )
-# Too large to justify since the .html version is right there:
-rm $PKG/usr/doc/mysql-$VERSION/Docs/manual.txt
+## Too large to justify since the .html version is right there:
+#rm $PKG/usr/doc/mysql-$VERSION/Docs/manual.txt
find $PKG/usr/doc/mysql-$VERSION -type f -exec chmod 0644 {} \;
# This is the directory where databases are stored
@@ -127,20 +164,20 @@ zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
# Add some handy library symlinks:
-if [ -r $PKG/usr/lib${LIBDIRSUFFIX}/mysql/libmysqlclient.so.15 ]; then
+if [ -r $PKG/usr/lib${LIBDIRSUFFIX}/mysql/libmysqlclient.so.16 ]; then
( cd $PKG/usr/lib${LIBDIRSUFFIX}
- rm -f libmysqlclient.so libmysqlclient.so.15
+ rm -f libmysqlclient.so libmysqlclient.so.16
ln -sf mysql/libmysqlclient.so .
- ln -sf mysql/libmysqlclient.so.15 .
+ ln -sf mysql/libmysqlclient.so.16 .
)
else
exit 1
fi
-if [ -r $PKG/usr/lib${LIBDIRSUFFIX}/mysql/libmysqlclient_r.so.15 ]; then
+if [ -r $PKG/usr/lib${LIBDIRSUFFIX}/mysql/libmysqlclient_r.so.16 ]; then
( cd $PKG/usr/lib${LIBDIRSUFFIX}
- rm -f libmysqlclient_r.so libmysqlclient_r.so.15
+ rm -f libmysqlclient_r.so libmysqlclient_r.so.16
ln -sf mysql/libmysqlclient_r.so .
- ln -sf mysql/libmysqlclient_r.so.15 .
+ ln -sf mysql/libmysqlclient_r.so.16 .
)
else
exit 1
@@ -172,11 +209,15 @@ if [ -d $PKG/usr/info ]; then
)
fi
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
# Build package:
cd $PKG
/sbin/makepkg -l y -c n $TMP/mysql-$VERSION-$ARCH-$BUILD.txz
-if [ "$1" == "--cleanup" ]; then
- cd $TMP
- rm -rf mysql-$VERSION
-fi
diff --git a/source/ap/nano/nano.SlackBuild b/source/ap/nano/nano.SlackBuild
index 7a1440e01..c6e3c3ade 100755
--- a/source/ap/nano/nano.SlackBuild
+++ b/source/ap/nano/nano.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,20 @@
PKGNAM=nano
-VERSION=${VERSION:-2.0.9}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
+BUILD=${BUILD:-1}
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -34,6 +43,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
@@ -44,7 +55,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION || exit 1
# Make sure ownerships and permissions are sane:
@@ -109,6 +120,14 @@ cp -a \
doc/faq.html doc/nanorc.sample \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/ap/pm-utils/README.SLACKWARE b/source/ap/pm-utils/README.SLACKWARE
index 071624395..26ff48d87 100644
--- a/source/ap/pm-utils/README.SLACKWARE
+++ b/source/ap/pm-utils/README.SLACKWARE
@@ -1,5 +1,5 @@
README.SLACKWARE
-20090414 - rworkman@slackware.com
+20100319 - rworkman@slackware.com
===============================================================================
PLEASE READ THIS ENTIRE FILE BEFORE REPORTING PROBLEMS OR ASKING FOR HELP!
@@ -29,21 +29,21 @@ it works at all.
Here's the short version of using suspend to disk:
Stanza in /etc/lilo.conf should look something like this:
- image = /boot/vmlinuz-generic-smp-2.6.29.1-smp
+ image = /boot/vmlinuz-generic-smp-2.6.33.1-smp
initrd = /boot/initrd.gz
- append = "resume=/dev/hda2"
- root = /dev/hda1
- label = Slackware
+ append = "resume=/dev/sda2"
+ root = /dev/sda1
+ label = genericsmp.s
read-only
/etc/mkinitrd.conf should look something like this:
MODULE_LIST="jfs"
- ROOTDEV="/dev/hda1"
+ ROOTDEV="/dev/sda1"
ROOTFS="jfs"
- RESUMEDEV="/dev/hda2"
+ RESUMEDEV="/dev/sda2"
mkinitrd command invocation would be this:
- mkinitrd -c -k 2.6.29.1-smp -F
+ mkinitrd -c -k 2.6.33.1-smp -F
All of the above assumes at least a cursory understanding of what those
commands and parameters do. If it's not clear, don't attempt it on a
@@ -51,14 +51,17 @@ system that you can't easily reinstall without concern.
==============================================================================
-If it works for you, and/or you want to automate it a bit, you'll find
-some sample acpi event declarations and scripts here:
- http://rlworkman.net/conf/acpi/
-A better option is to use the power manager daemon included with your choice
-of desktop environment (both kde and xfce have one).
+Once you confirm that a suspend and resume cycle works as expected, you might
+automate the process with some acpi magic, but a better option is to use the
+power manager daemon included with your choice of desktop environment (both
+kde and xfce have one).
==============================================================================
+/* TODO: these links are now dead. That's mostly okay, because the vast
+ majority of the hardware out there these days doesn't require any quirks
+ at all any more. Hopefully you won't be in the minority :-) */
+
If it doesn't work by default for you, consider having a look at
http://people.freedesktop.org/~hughsient/quirk/quirk-suspend-index.html
for some debugging hints. Pay particular attention to this page:
@@ -76,14 +79,14 @@ needed to add for successful suspend/resume to rworkman@slackware.com
If you need the system to do certain operations before going to sleep and
then undo them (or perhaps do something new) when waking back up, pm-utils
supports something called "hooks." The hooks installed by packages (not only
-pm-utils itself) should be in /usr/lib/pm-utils/sleep.d/, while any hooks
+pm-utils itself) should be in /usr/lib(64)/pm-utils/sleep.d/, while any hooks
installed by the local system administrator (e.g. things that are only an
issue on that one machine) should be in /etc/pm/sleep.d/.
Looking at some of the existing hooks should give you a decent idea of their
capabilities; as a head start, the functions used in the hooks are declared
-in /usr/lib/pm-utils/functions, which is inherited elsewhere by
-/usr/lib/pm-utils/pm-functions. Note that an error exit code on any hook
+in /usr/lib(64)/pm-utils/functions, which is inherited elsewhere by
+/usr/lib(64)/pm-utils/pm-functions. Note that an error exit code on any hook
will cause the sleep operation to fail, so if you don't care whether your
hook executes successfully, be sure to return an exit code of 0 (success) if
you don't want the suspend operation to fail. Some other exit codes are
@@ -101,15 +104,18 @@ ship its own hook.
KNOWN ISSUES
+/* TODO: remove? I've gotten *zero* mails about either of these since
+ we've been shipping pm-utils */
+
**** If you encounter either of these, mail rworkman@slackware.com ****
If your alsa drivers don't correctly save and restore state across a sleep /
resume cycle (due to a buggy driver), then you will need to add the drivers
to a custom file named /etc/pm/config.d/defaults (create the file if it does
not exist already) in a variable named "SUSPEND_MODULES" - see the file at
-/usr/lib/pm-utils/defaults for proper format.
+/usr/lib(64)/pm-utils/defaults for proper format.
-The /usr/lib/pm-utils/sleep.d/90clock does not run by default. It added
+The /usr/lib(64)/pm-utils/sleep.d/90clock does not run by default. It added
over a second to suspend, and the vast majority of hardware does not need it
to keep the clocks in sync. If you need this hook, you can set the
NEED_CLOCK_SYNC environment variable in a custom /etc/pm/config.d/defaults
diff --git a/source/ap/pm-utils/pm-utils.SlackBuild b/source/ap/pm-utils/pm-utils.SlackBuild
index 26e60714f..0b9eacd11 100755
--- a/source/ap/pm-utils/pm-utils.SlackBuild
+++ b/source/ap/pm-utils/pm-utils.SlackBuild
@@ -2,8 +2,8 @@
# Slackware build script for pm-utils
-# Copyright 2008, 2009 Robby Workman, Northport, Alabama, USA
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Robby Workman, Northport, Alabama, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,16 +23,27 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=pm-utils
-VERSION=1.2.5
-ARCH=${ARCH:-x86_64}
+PKGNAM=pm-utils
+VERSION=$(echo ${PKGNAM}-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
BUILD=${BUILD:-1}
+QUIRKS=20100316 # Version of the quirks database
+
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -43,14 +54,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -63,19 +77,21 @@ CFLAGS="$SLKCFLAGS" \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
--mandir=/usr/man \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
- xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
- xargs strip --strip-unneeded 2> /dev/null
-)
+# Now let's add the video quirks
+PM_UTILS_LIBDIR="/usr/lib${LIBDIRSUFFIX}/pm-utils"
+mkdir -p $PKG/$PM_UTILS_LIBDIR/video-quirks
+tar xf $CWD/pm-quirks-$QUIRKS.tar.xz -C $PKG/$PM_UTILS_LIBDIR/video-quirks
+chown -R root:root $PKG/$PM_UTILS_LIBDIR/video-quirks
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
if [ -d $PKG/usr/man ]; then
( cd $PKG/usr/man
@@ -91,15 +107,22 @@ if [ -d $PKG/usr/man ]; then
)
fi
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING INSTALL NEWS README* TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/README.SLACKWARE > $PKG/usr/doc/$PRGNAM-$VERSION/README.SLACKWARE
+ $PKG/usr/doc/$PKGNAM-$VERSION
+cat $CWD/README.SLACKWARE > $PKG/usr/doc/$PKGNAM-$VERSION/README.SLACKWARE
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
-
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/ap/powertop/powertop.SlackBuild b/source/ap/powertop/powertop.SlackBuild
new file mode 100755
index 000000000..7767580be
--- /dev/null
+++ b/source/ap/powertop/powertop.SlackBuild
@@ -0,0 +1,101 @@
+#!/bin/sh
+
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=powertop
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Build and install:
+make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Move man pages:
+mv $PKG/usr/share/man $PKG/usr
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ COPYING* README* \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/powertop/slack-desc b/source/ap/powertop/slack-desc
new file mode 100644
index 000000000..3bf3aa5da
--- /dev/null
+++ b/source/ap/powertop/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+powertop: powertop (tool for analyzing system power usage)
+powertop:
+powertop: PowerTOP is a utility that collects data from your system and presents
+powertop: an overview to help optimize power savings. PowerTOP will identify
+powertop: which tunables and software components are the biggest offenders in
+powertop: slurping up your battery time. PowerTOP updates its display
+powertop: frequently so that you can directly see the impact of any changes you
+powertop: are making.
+powertop:
+powertop: Homepage: http://www.linuxpowertop.org
+powertop:
diff --git a/source/ap/radeontool/radeontool.SlackBuild b/source/ap/radeontool/radeontool.SlackBuild
index 3292a21c7..2a5a3fe4d 100755
--- a/source/ap/radeontool/radeontool.SlackBuild
+++ b/source/ap/radeontool/radeontool.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008 Robby Workman, Northport, Alabama, USA
+# Copyright 2008, 2010 Robby Workman, Northport, Alabama, USA
# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
@@ -22,10 +22,18 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.5
-ARCH=${ARCH:-x86_64}
+VERSION=1.6.1
BUILD=${BUILD:-1}
+# Automatically determine architecture for build & packaging:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-radeontool
@@ -36,13 +44,15 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf radeontool-$VERSION
-tar xvf $CWD/radeontool-$VERSION.tar.gz
+tar xvf $CWD/radeontool-$VERSION.tar.bz2
cd radeontool-$VERSION || exit 1
chown -R root:root .
find . \
@@ -51,16 +61,25 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Fix a bad include
-zcat $CWD/radeontool.c.diff.gz | patch -p1 || exit 1
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --build=$ARCH-slackware-linux
+
+make
+make install DESTDIR=$PKG
-gcc -Wall $SLKCFLAGS -o radeontool radeontool.c
-strip --strip-unneeded radeontool
-mkdir -p $PKG/usr/sbin
-cp -a radeontool $PKG/usr/sbin
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+# Sometimes CHANGES is present, sometimes it isn't.
+# We don't care about noise on stderr. Better than missing docs.
+# So, first we try to copy it:
mkdir -p $PKG/usr/doc/radeontool-$VERSION
cp -a CHANGES $PKG/usr/doc/radeontool-$VERSION
+# Then we take care of any empty directory in case there was no CHANGES file:
+rmdir $PKG/usr/doc/radeontool-$VERSION
+rmdir $PKG/usr/doc
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/ap/radeontool/radeontool.c.diff b/source/ap/radeontool/radeontool.c.diff
deleted file mode 100644
index 156863ed5..000000000
--- a/source/ap/radeontool/radeontool.c.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -u radeontool-1.5.orig/radeontool.c radeontool-1.5/radeontool.c
---- radeontool-1.5.orig/radeontool.c 2004-02-10 21:50:27.000000000 -0600
-+++ radeontool-1.5/radeontool.c 2008-11-24 13:21:32.895434558 -0600
-@@ -21,7 +21,7 @@
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <sys/mman.h>
--#include <asm/page.h>
-+#include <sys/user.h>
-
- #include "radeon_reg.h"
-
diff --git a/source/ap/radeontool/radeontool.info b/source/ap/radeontool/radeontool.info
deleted file mode 100644
index 7c7c1c6c4..000000000
--- a/source/ap/radeontool/radeontool.info
+++ /dev/null
@@ -1,8 +0,0 @@
-PRGNAM="radeontool"
-VERSION="1.5"
-HOMEPAGE="http://fdd.com/software/radeon/"
-DOWNLOAD="http://fdd.com/software/radeon/radeontool-1.5.tar.gz"
-MD5SUM="8065eebe5a2b163e43b40461bfe49a56"
-MAINTAINER="Robby Workman"
-EMAIL="rw@rlworkman.net"
-APPROVED=""
diff --git a/source/ap/rpm/rpm.SlackBuild b/source/ap/rpm/rpm.SlackBuild
index a16f0a3ea..68ab36a4e 100755
--- a/source/ap/rpm/rpm.SlackBuild
+++ b/source/ap/rpm/rpm.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,12 +22,21 @@
# Build RPM (of all things) for Slackware.
-VERSION=${VERSION:-4.7.0}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-4.8.0}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
diff --git a/source/ap/sox/sox.SlackBuild b/source/ap/sox/sox.SlackBuild
index aea5d7c16..fdbb4e553 100755
--- a/source/ap/sox/sox.SlackBuild
+++ b/source/ap/sox/sox.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,8 +22,17 @@
VERSION=14.3.0
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -90,6 +102,14 @@ cp -a \
AUTHORS COPYING INSTALL NEWS README \
$PKG/usr/doc/sox-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/ap/sqlite/sqlite.SlackBuild b/source/ap/sqlite/sqlite.SlackBuild
index ffc75b330..c2754bc26 100755
--- a/source/ap/sqlite/sqlite.SlackBuild
+++ b/source/ap/sqlite/sqlite.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for sqlite
# Copyright 2006 Martin Lefebvre <dadexter@gmail.com>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,12 +23,26 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=sqlite
-VERSION=3.6.14.2
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+PKGNAM=sqlite
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -38,18 +52,17 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
-
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root.root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -94,18 +107,18 @@ gzip -9 $PKG/usr/man/man1/sqlite3.1
sed -i 's|Libs: -L${libdir} -lsqlite3|Libs: -L${libdir} -lsqlite3 -ldl|g' \
$PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/sqlite3.pc
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
README* VERSION \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
# Add a COPYRIGHT file -- http://www.sqlite.org/copyright.html
-zcat $CWD/COPYRIGHT.gz > $PKG/usr/doc/$PRGNAM-$VERSION/COPYRIGHT
-rm -rf $PKG/usr/doc/$PRGNAM-$VERSION/CVS
+zcat $CWD/COPYRIGHT.gz > $PKG/usr/doc/$PKGNAM-$VERSION/COPYRIGHT
+rm -rf $PKG/usr/doc/$PKGNAM-$VERSION/CVS
find $PKG/usr/doc -type f -exec chmod 0644 {} \;
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/ap/sudo/sudo.SlackBuild b/source/ap/sudo/sudo.SlackBuild
index c170e868d..4d6b898e2 100755
--- a/source/ap/sudo/sudo.SlackBuild
+++ b/source/ap/sudo/sudo.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.6.8p12
-ARCH=${ARCH:-x86_64}
+PKGNAM=sudo
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
@@ -34,7 +44,9 @@ PKG=$TMP/package-sudo
rm -rf $PKG
mkdir -p $TMP $PKG
-if [ "$ARCH" = "i486" ]; then
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
@@ -54,11 +66,24 @@ find . \
-exec chmod 644 {} \;
CFLAGS="$SLKCFLAGS" \
-./configure --prefix=/usr --sbindir=/usr/sbin --with-getpass --with-C2
+./configure \
+ --prefix=/usr \
+ --sbindir=/usr/sbin \
+ --mandir=/usr/man \
+ --with-getpass \
+ --with-C2 \
+ --with-env-editor \
+ --disable-pam-session \
+ --with-pam=no \
+ --build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
+# Create the timestamp directory
+mkdir -p $PKG/var/run/sudo
+chmod 700 $PKG/var/run/sudo
+
( cd $PKG/usr/bin
chmod 4711 sudo
ln -sf sudo sudoedit
@@ -77,10 +102,18 @@ mv $PKG/etc/sudoers $PKG/etc/sudoers.new
mkdir -p $PKG/usr/doc/sudo-$VERSION
cp -a \
BUGS HISTORY INSTALL LICENSE PORTING README* \
- RUNSON TODO TROUBLESHOOTING UPGRADE \
+ RUNSON TODO TROUBLESHOOTING UPGRADE WHATSNEW \
$PKG/usr/doc/sudo-$VERSION
chmod 644 $PKG/usr/doc/sudo-$VERSION/*
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
diff --git a/source/ap/sysstat/doinst.sh b/source/ap/sysstat/doinst.sh
new file mode 100644
index 000000000..b0f71a916
--- /dev/null
+++ b/source/ap/sysstat/doinst.sh
@@ -0,0 +1,34 @@
+
+# Since /etc/sysstat/sysstat used to be the init script and now it is
+# a config file, if we find an init script here, we have to move it
+# out of the way:
+if grep -wq "sadc was successfully launched" etc/sysstat/sysstat 1> /dev/null 2> /dev/null ; then
+ mv etc/sysstat/sysstat etc/sysstat/sysstat.obsolete.use.etc.rc.d.rc.sysstat
+fi
+
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/sysstat/sysstat.new
+
+# Keep same perms on rc.sysstat.new:
+if [ -e etc/rc.d/rc.sysstat ]; then
+ cp -a etc/rc.d/rc.sysstat etc/rc.d/rc.sysstat.new.incoming
+ cat etc/rc.d/rc.sysstat.new > etc/rc.d/rc.sysstat.new.incoming
+ mv etc/rc.d/rc.sysstat.new.incoming etc/rc.d/rc.sysstat.new
+fi
+
+# There's no reason for a user to edit rc.sysstat, so overwrite it:
+if [ -r etc/rc.d/rc.sysstat.new ]; then
+ mv etc/rc.d/rc.sysstat.new etc/rc.d/rc.sysstat
+fi
+
diff --git a/source/ap/sysstat/slack-desc b/source/ap/sysstat/slack-desc
index e36d25ff9..059836bf6 100644
--- a/source/ap/sysstat/slack-desc
+++ b/source/ap/sysstat/slack-desc
@@ -6,14 +6,14 @@
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-sysstat: sysstat (system performance monitoring tools)
+sysstat: sysstat (System performance monitoring tools)
sysstat:
sysstat: The sysstat utilities are a collection of performance monitoring
-sysstat: tools for Linux. These include sar, sadf, mpstat, iostat and sa
-sysstat: tools.
+sysstat: tools for Linux. These include the iostat, mpstat, pidstat, sadf,
+sysstat: and sar tools.
sysstat:
sysstat: The sysstat utilities were written by Sebastien Godard.
sysstat:
-sysstat:
-sysstat:
+sysstat: For more information, see the sysstat web site:
+sysstat: http://pagesperso-orange.fr/sebastien.godard/
sysstat:
diff --git a/source/ap/sysstat/sysstat.SlackBuild b/source/ap/sysstat/sysstat.SlackBuild
index 399bb4bd4..5f5c0cfb1 100755
--- a/source/ap/sysstat/sysstat.SlackBuild
+++ b/source/ap/sysstat/sysstat.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,13 +22,42 @@
PKGNAM=sysstat
-VERSION=${VERSION:-7.0.0}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
-if [ "$ARCH" = "x86_64" ]; then
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+ ARCHQUADLET=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+ ARCHQUADLET=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+ ARCHQUADLET=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ ARCHQUADLET=""
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "arm" ]; then
+ SLKCFLAGS="-O2 -march=armv4t"
+ LIBDIRSUFFIX=""
+ ARCHQUADLET="-gnueabi"
else
+ SLKCFLAGS="-O2"
+ ARCHQUADLET=""
LIBDIRSUFFIX=""
fi
@@ -40,8 +69,8 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2
-cd ${PKGNAM}-$VERSION
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
+cd ${PKGNAM}-$VERSION || exit 1
# Make sure ownerships and permissions are sane:
chown -R root:root .
@@ -51,25 +80,31 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Put the config file in /etc/sysstat, not /etc/sysconfig (a Red Hat thing):
-zcat $CWD/sysstat.etc.sysstat.diff.gz | patch -p1 --verbose || exit 1
-
-# PREFIX is hardcoded in some places, so this is just easier:
-zcat $CWD/sysstat.prefix.usr.diff.gz | patch -p1 --verbose || exit 1
-
-# Don't use /tmp in a script root will probably run... that's not good.
-zcat $CWD/sysstat.var.run.diff.gz | patch -p1 --verbose || exit 1
-
-make SA_LIB_DIR=/usr/lib${LIBDIRSUFFIX}/sa DESTDIR=$PKG || exit 1
-make install SA_LIB_DIR=/usr/lib${LIBDIRSUFFIX}/sa DESTDIR=$PKG || exit 1
-
-# Yeah, technically this is an init script that could go in /etc/rc.d/, but
-# I'd rather not put too many things in there. If you need this, I'm sure
-# you will find it here:
-mkdir -p $PKG/etc/sysstat
-cp -a sysstat $PKG/etc/sysstat/sysstat
-chown root:root $PKG/etc/sysstat/sysstat
-chmod 755 $PKG/etc/sysstat/sysstat
+# Configure:
+CFLAGS="$SLKCFLAGS -DSADC_PATH=/usr/lib$LIBDIRSUFFIX/sa/sadc" \
+./configure \
+ --disable-man-group \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ conf_dir=/etc/sysstat \
+ sa_lib_dir=/usr/lib$LIBDIRSUFFIX/sa \
+ --libdir=/usr/lib$LIBDIRSUFFIX \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/sysstat-$VERSION \
+ --mandir=/usr/man \
+ --disable-static \
+ --build=$ARCH-slackware-linux$ARCHQUADLET || exit 1
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install IGNORE_MAN_GROUP=y DESTDIR=$PKG || exit 1
+
+mv $PKG/etc/sysstat/sysstat $PKG/etc/sysstat/sysstat.new
+
+mkdir -p $PKG/etc/rc.d
+# Cosmetic touches:
+sed -i 's?/etc/rc.d/init.d/sysstat?/etc/rc.d/rc.sysstat?g' sysstat
+install -o0 -g0 -vpm644 sysstat $PKG/etc/rc.d/rc.sysstat.new
# Strip binaries:
( cd $PKG
@@ -92,14 +127,30 @@ if [ -d $PKG/usr/man ]; then
)
fi
-# Fix the documentation directory to preserve timestamps:
-mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
-rm -f $PKG/usr/doc/${PKGNAM}-$VERSION/*
+# Adjust the docs so that they are Slackware-locationised:
+# We ignore the 'CHANGES' since they aren't relevant to the running of the system.
+sed -i 's?/etc/sysconfig?/etc/sysstat?g' $PKG/usr/doc/$PKGNAM-$VERSION/{README,FAQ}
+# "make install" installs the docs but doesn't preserve the time stamps:
+for docfile in $( cd $PKG/usr/doc/$PKGNAM-$VERSION ; ls -1 ) ; do
+ touch -d "$( find $docfile -printf "%t\n" )" $PKG/usr/doc/$PKGNAM-$VERSION/$docfile
+done
+# Add crontab example scripts:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION/cron-examples
cp -a \
- COPYING CREDITS FAQ README TODO sysstat-7.0.0.lsm \
- $PKG/usr/doc/${PKGNAM}-$VERSION
+ crontab sysstat.cron.daily sysstat.cron.hourly sysstat.crond \
+ sysstat.crond.sample \
+ $PKG/usr/doc/${PKGNAM}-$VERSION/cron-examples
+
+# If there's a CHANGES file, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $TMP/package-${PKGNAM}
diff --git a/source/ap/sysstat/sysstat.etc.sysstat.diff b/source/ap/sysstat/sysstat.etc.sysstat.diff
deleted file mode 100644
index f5cf15211..000000000
--- a/source/ap/sysstat/sysstat.etc.sysstat.diff
+++ /dev/null
@@ -1,46 +0,0 @@
---- ./Makefile.orig 2006-07-05 10:46:04.000000000 -0500
-+++ ./Makefile 2006-08-14 21:40:38.000000000 -0500
-@@ -34,7 +34,7 @@
- MAN8_DIR = $(MAN_DIR)/man8
- DOC_DIR = $(PREFIX)/doc/sysstat-$(VERSION)
- NLS_DIR = $(PREFIX)/share/locale
--SYSCONFIG_DIR = /etc/sysconfig
-+SYSCONFIG_DIR = /etc/sysstat
-
- # Compiler flags
- CFLAGS = -Wall -Wstrict-prototypes -pipe -O2 -fno-strength-reduce
---- ./sa2.in.orig 2006-06-09 03:17:26.000000000 -0500
-+++ ./sa2.in 2006-08-14 21:38:35.000000000 -0500
-@@ -7,7 +7,7 @@
- # make history configurable
- #
- HISTORY=7
--[ -r /etc/sysconfig/sysstat ] && . /etc/sysconfig/sysstat
-+[ -r /etc/sysstat/sysstat ] && . /etc/sysstat/sysstat
- [ ${HISTORY} -gt 28 ] && HISTORY=28
- S_TIME_FORMAT=ISO ; export S_TIME_FORMAT
- umask 0022
---- ./README.orig 2006-07-05 10:51:54.000000000 -0500
-+++ ./README 2006-08-14 21:39:27.000000000 -0500
-@@ -91,8 +91,8 @@
- ${PREFIX}/doc/sysstat-x.y.z/*
- /var/log/sa
- ${INIT_DIR}/sysstat
--/etc/sysconfig/sysstat
--/etc/sysconfig/sysstat.ioconf
-+/etc/sysstat/sysstat
-+/etc/sysstat/sysstat.ioconf
- /etc/cron.d/sysstat
- /etc/rc.d/rc.sysstat for [SLACKWARE]
- ${RC_DIR}/rc2.d/S03sysstat
---- ./ioconf.h.orig 2006-07-09 03:19:06.000000000 -0500
-+++ ./ioconf.h 2006-08-14 21:36:48.000000000 -0500
-@@ -20,7 +20,7 @@
- #define MAX_BLKDEV 255
- #endif
-
--#define IOCONF "/etc/sysconfig/sysstat.ioconf"
-+#define IOCONF "/etc/sysstat/sysstat.ioconf"
-
- #define K_NODEV "nodev"
-
diff --git a/source/ap/sysstat/sysstat.prefix.usr.diff b/source/ap/sysstat/sysstat.prefix.usr.diff
deleted file mode 100644
index c7c526b42..000000000
--- a/source/ap/sysstat/sysstat.prefix.usr.diff
+++ /dev/null
@@ -1,42 +0,0 @@
---- ./build/Configure.sh.orig 2006-06-09 03:21:27.000000000 -0500
-+++ ./build/Configure.sh 2006-08-14 21:54:37.000000000 -0500
-@@ -10,10 +10,10 @@
-
- # Installation directory
-
--PREFIX=`${ASK} 'Installation directory:' "/usr/local" "prefix"`
-+PREFIX=`${ASK} 'Installation directory:' "/usr" "prefix"`
- if [ ! -d ${PREFIX} ]; then
-- echo "WARNING: Directory ${PREFIX} not found: Using default (/usr/local)."
-- PREFIX=/usr/local
-+ echo "WARNING: Directory ${PREFIX} not found: Using default (/usr)."
-+ PREFIX=/usr
- fi
-
- # sadc directory
---- ./build/CONFIG.def.orig 2006-06-09 03:20:56.000000000 -0500
-+++ ./build/CONFIG.def 2006-08-14 21:54:19.000000000 -0500
-@@ -2,8 +2,8 @@
- # (C) 2000-2006 Sebastien GODARD (sysstat <at> wanadoo.fr)
-
- # Directories
--PREFIX = /usr/local
--SA_LIB_DIR = /usr/local/lib/sa
-+PREFIX = /usr
-+SA_LIB_DIR = /usr/lib/sa
- SADC_PATH = ${SA_LIB_DIR}/sadc
- SA_DIR = /var/log/sa
- # Do not use ${PREFIX}/share/man by default: not necessarily in man path!
---- ./build/CONFIG.orig 2006-07-09 04:47:17.000000000 -0500
-+++ ./build/CONFIG 2006-08-14 21:54:10.000000000 -0500
-@@ -2,8 +2,8 @@
- # (C) 2000-2006 Sebastien GODARD (sysstat <at> wanadoo.fr)
-
- # Directories
--PREFIX = /usr/local
--SA_LIB_DIR = /usr/local/lib/sa
-+PREFIX = /usr
-+SA_LIB_DIR = /usr/lib/sa
- SADC_PATH = ${SA_LIB_DIR}/sadc
- SA_DIR = /var/log/sa
- # Do not use ${PREFIX}/share/man by default: not necessarily in man path!
diff --git a/source/ap/sysstat/sysstat.var.run.diff b/source/ap/sysstat/sysstat.var.run.diff
deleted file mode 100644
index 3b54f37e6..000000000
--- a/source/ap/sysstat/sysstat.var.run.diff
+++ /dev/null
@@ -1,28 +0,0 @@
---- ./sysstat.in.orig 2006-07-05 10:58:00.000000000 -0500
-+++ ./sysstat.in 2006-08-14 22:03:13.000000000 -0500
-@@ -22,21 +22,21 @@
-
- RETVAL=0
- # Remove flag indicating that sadc was successfully launched
--rm -f /tmp/sysstat.run
-+rm -f /var/run/sysstat.run
-
- # See how we were called.
- case "$1" in
- start)
- echo -n "Calling the system activity data collector (sadc): "
-- SU SA_LIB_DIR/sadc -F -L - && touch /tmp/sysstat.run QUOTE
-+ SU SA_LIB_DIR/sadc -F -L - && touch /var/run/sysstat.run QUOTE
-
- # Try to guess if sadc was successfully launched. The difficulty
- # here is that the exit code is lost when the above command is
- # run via "su foo -c ..."
-- if [ ! -f /tmp/sysstat.run ]; then
-+ if [ ! -f /var/run/sysstat.run ]; then
- RETVAL=1
- else
-- rm -f /tmp/sysstat.run
-+ rm -f /var/run/sysstat.run
- fi
- echo
- ;;
diff --git a/source/ap/vim/patches/7.2.246 b/source/ap/vim/patches/7.2.246
new file mode 100644
index 000000000..5b1c97861
--- /dev/null
+++ b/source/ap/vim/patches/7.2.246
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.246
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.246
+Problem: Cscope home page link is wrong.
+Solution: Update the URL. (Sergey Khorev)
+Files: runtime/doc/if_cscop.txt
+
+
+*** ../vim-7.2.245/runtime/doc/if_cscop.txt 2009-07-09 21:22:36.000000000 +0200
+--- runtime/doc/if_cscop.txt 2009-09-11 11:19:31.000000000 +0200
+***************
+*** 481,487 ****
+ any problems, suggestions, patches, et al., you have for the usage of
+ cscope within Vim to him.
+ *cscope-win32*
+! For a cscope version for Win32 see: http://iamphet.nm.ru/cscope/index.html
+
+ Win32 support was added by Sergey Khorev <sergey.khorev@gmail.com>. Contact
+ him if you have Win32-specific issues.
+--- 481,488 ----
+ any problems, suggestions, patches, et al., you have for the usage of
+ cscope within Vim to him.
+ *cscope-win32*
+! For a cscope version for Win32 see:
+! http://code.google.com/p/cscope-win32/
+
+ Win32 support was added by Sergey Khorev <sergey.khorev@gmail.com>. Contact
+ him if you have Win32-specific issues.
+*** ../vim-7.2.245/src/version.c 2009-07-29 18:24:59.000000000 +0200
+--- src/version.c 2009-09-11 11:29:02.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 246,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+221. Your wife melts your keyboard in the oven.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.247 b/source/ap/vim/patches/7.2.247
new file mode 100644
index 000000000..e18926d9f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.247
@@ -0,0 +1,86 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.247
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.247
+Problem: Mzscheme interface minor problem.
+Solution: Better error message when build fails. (Sergey Khorev)
+Files: src/if_mzsch.c
+
+
+*** ../vim-7.2.246/src/if_mzsch.c 2009-07-09 20:06:30.000000000 +0200
+--- src/if_mzsch.c 2009-09-11 11:20:39.000000000 +0200
+***************
+*** 635,642 ****
+ #endif /* DYNAMIC_MZSCHEME */
+
+ /* need to put it here for dynamic stuff to work */
+! #ifdef INCLUDE_MZSCHEME_BASE
+ # include "mzscheme_base.c"
+ #endif
+
+ /*
+--- 635,644 ----
+ #endif /* DYNAMIC_MZSCHEME */
+
+ /* need to put it here for dynamic stuff to work */
+! #if defined(INCLUDE_MZSCHEME_BASE)
+ # include "mzscheme_base.c"
++ #elif MZSCHEME_VERSION_MAJOR >= 400
++ # error MzScheme 4.x must include mzscheme_base.c, for MinGW32 you need to define MZSCHEME_GENERATE_BASE=yes
+ #endif
+
+ /*
+***************
+*** 875,888 ****
+ #ifdef INCLUDE_MZSCHEME_BASE
+ {
+ /*
+! * versions 4.x do not provide Scheme bindings by defaults
+ * we need to add them explicitly
+ */
+ Scheme_Object *scheme_base_symbol = NULL;
+ MZ_GC_DECL_REG(1);
+ MZ_GC_VAR_IN_REG(0, scheme_base_symbol);
+ MZ_GC_REG();
+! /* invoke function from generated and included base.c */
+ declare_modules(environment);
+ scheme_base_symbol = scheme_intern_symbol("scheme/base");
+ MZ_GC_CHECK();
+--- 877,890 ----
+ #ifdef INCLUDE_MZSCHEME_BASE
+ {
+ /*
+! * versions 4.x do not provide Scheme bindings by default
+ * we need to add them explicitly
+ */
+ Scheme_Object *scheme_base_symbol = NULL;
+ MZ_GC_DECL_REG(1);
+ MZ_GC_VAR_IN_REG(0, scheme_base_symbol);
+ MZ_GC_REG();
+! /* invoke function from generated and included mzscheme_base.c */
+ declare_modules(environment);
+ scheme_base_symbol = scheme_intern_symbol("scheme/base");
+ MZ_GC_CHECK();
+*** ../vim-7.2.246/src/version.c 2009-09-11 11:30:12.000000000 +0200
+--- src/version.c 2009-09-11 11:53:59.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 247,
+ /**/
+
+--
+Your fault: core dumped
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.248 b/source/ap/vim/patches/7.2.248
new file mode 100644
index 000000000..2254101e9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.248
@@ -0,0 +1,158 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.248 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.248 (extra)
+Problem: Mzscheme interface building minor problems.
+Solution: Update Win32 makefiles. (Sergey Khorev)
+Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak
+
+
+*** ../vim-7.2.247/src/Make_cyg.mak 2007-09-30 22:28:48.000000000 +0200
+--- src/Make_cyg.mak 2009-09-11 11:23:23.000000000 +0200
+***************
+*** 212,224 ****
+ MZSCHEME_VER = 209_000
+ endif
+
+ ifeq (yes, $(DYNAMIC_MZSCHEME))
+ DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
+ else
+ ifndef MZSCHEME_DLLS
+ MZSCHEME_DLLS = $(MZSCHEME)
+ endif
+! EXTRA_LIBS += -L$(MZSCHEME_DLLS) -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
+ endif
+ endif
+
+--- 212,245 ----
+ MZSCHEME_VER = 209_000
+ endif
+
++ ifndef MZSCHEME_PRECISE_GC
++ MZSCHEME_PRECISE_GC=no
++ endif
++
++ # for version 4.x we need to generate byte-code for Scheme base
++ ifndef MZSCHEME_GENERATE_BASE
++ MZSCHEME_GENERATE_BASE=no
++ endif
++
+ ifeq (yes, $(DYNAMIC_MZSCHEME))
+ DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
+ else
+ ifndef MZSCHEME_DLLS
+ MZSCHEME_DLLS = $(MZSCHEME)
+ endif
+! ifeq (yes,$(MZSCHEME_PRECISE_GC))
+! MZSCHEME_LIB=-lmzsch$(MZSCHEME_VER)
+! else
+! MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
+! endif
+! EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB)
+! endif
+! ifeq (yes,$(MZSCHEME_GENERATE_BASE))
+! DEFINES += -DINCLUDE_MZSCHEME_BASE
+! MZ_EXTRA_DEP += mzscheme_base.c
+! endif
+! ifeq (yes,$(MZSCHEME_PRECISE_GC))
+! DEFINES += -DMZ_PRECISE_GC
+ endif
+ endif
+
+***************
+*** 473,478 ****
+--- 494,502 ----
+ ifdef PERL
+ -$(DEL) if_perl.c
+ endif
++ ifdef MZSCHEME
++ -$(DEL) mzscheme_base.c
++ endif
+ -$(DEL) pathdef.c
+ $(MAKE) -C xxd -f Make_cyg.mak clean
+ $(MAKE) -C GvimExt -f Make_ming.mak clean
+***************
+*** 523,531 ****
+--- 547,561 ----
+ $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_DEP)
+ $(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
+
++ $(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
++ $(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
++
+ $(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
+ $(RC) $(RCFLAGS) vim.rc -o $(OUTDIR)/vimrc.o
+
++ mzscheme_base.c:
++ $(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
++
+ pathdef.c: $(INCL)
+ ifneq (sh.exe, $(SHELL))
+ @echo creating pathdef.c
+*** ../vim-7.2.247/src/Make_ming.mak 2009-05-26 22:58:43.000000000 +0200
+--- src/Make_ming.mak 2009-09-11 11:23:28.000000000 +0200
+***************
+*** 135,141 ****
+ ifndef MZSCHEME_DLLS
+ MZSCHEME_DLLS=$(MZSCHEME)
+ endif
+! MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS)
+ endif
+
+ endif
+--- 135,141 ----
+ ifndef MZSCHEME_DLLS
+ MZSCHEME_DLLS=$(MZSCHEME)
+ endif
+! MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib
+ endif
+
+ endif
+***************
+*** 563,568 ****
+--- 563,571 ----
+ ifdef PERL
+ -$(DEL) if_perl.c
+ endif
++ ifdef MZSCHEME
++ -$(DEL) mzscheme_base.c
++ endif
+ $(MAKE) -C GvimExt -f Make_ming.mak clean
+ $(MAKE) -C xxd -f Make_cyg.mak clean
+
+*** ../vim-7.2.247/src/Make_mvc.mak 2009-06-16 16:45:14.000000000 +0200
+--- src/Make_mvc.mak 2009-09-11 11:23:28.000000000 +0200
+***************
+*** 865,870 ****
+--- 865,871 ----
+ - if exist dimm_i.c del dimm_i.c
+ - if exist dimm.tlb del dimm.tlb
+ - if exist dosinst.exe del dosinst.exe
++ - if exist mzscheme_base.c del mzscheme_base.c
+ cd xxd
+ $(MAKE) /NOLOGO -f Make_mvc.mak clean
+ cd ..
+*** ../vim-7.2.247/src/version.c 2009-09-11 12:20:47.000000000 +0200
+--- src/version.c 2009-09-11 12:48:26.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 248,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+222. You send more than 20 personal e-mails a day.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.249 b/source/ap/vim/patches/7.2.249
new file mode 100644
index 000000000..33169f77f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.249
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.249
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.249
+Problem: The script to check .po files can't handle '%' in plural forms.
+Solution: Remove "Plural-Forms:" from the checked string.
+Files: src/po/check.vim
+
+
+*** ../vim-7.2.248/src/po/check.vim 2008-06-09 14:45:38.000000000 +0200
+--- src/po/check.vim 2009-09-11 12:37:56.000000000 +0200
+***************
+*** 23,28 ****
+--- 23,31 ----
+ " remove '%', not used for formatting.
+ let idline = substitute(idline, "'%'", '', 'g')
+
++ " remove '%' used for plural forms.
++ let idline = substitute(idline, '\\nPlural-Forms: .\+;\\n', '', '')
++
+ " remove everything but % items.
+ return substitute(idline, '[^%]*\(%[-+ #''.0-9*]*l\=[dsuxXpoc%]\)\=', '\1', 'g')
+ endfunc
+*** ../vim-7.2.248/src/version.c 2009-09-11 12:48:56.000000000 +0200
+--- src/version.c 2009-09-11 12:59:18.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 249,
+ /**/
+
+--
+If evolution theories are correct, humans will soon grow a third
+hand for operating the mouse.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.250 b/source/ap/vim/patches/7.2.250
new file mode 100644
index 000000000..2f30a2405
--- /dev/null
+++ b/source/ap/vim/patches/7.2.250
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.250 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.250 (extra)
+Problem: Possible buffer overflow.
+Solution: Compute the remaining space. (Dominique Pelle)
+Files: src/GvimExt/gvimext.cpp
+
+
+*** ../vim-7.2.249/src/GvimExt/gvimext.cpp 2008-07-24 20:51:11.000000000 +0200
+--- src/GvimExt/gvimext.cpp 2009-09-11 13:26:27.000000000 +0200
+***************
+*** 635,641 ****
+ }
+ // Now concatenate
+ strncpy(temp, _("Edit with existing Vim - "), BUFSIZE - 1);
+! strncat(temp, title, BUFSIZE - 1);
+ InsertMenu(hMenu,
+ indexMenu++,
+ MF_STRING|MF_BYPOSITION,
+--- 635,643 ----
+ }
+ // Now concatenate
+ strncpy(temp, _("Edit with existing Vim - "), BUFSIZE - 1);
+! temp[BUFSIZE - 1] = '\0';
+! strncat(temp, title, BUFSIZE - 1 - strlen(temp));
+! temp[BUFSIZE - 1] = '\0';
+ InsertMenu(hMenu,
+ indexMenu++,
+ MF_STRING|MF_BYPOSITION,
+*** ../vim-7.2.249/src/version.c 2009-09-11 12:59:57.000000000 +0200
+--- src/version.c 2009-09-11 13:23:45.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 250,
+ /**/
+
+
+--
+hundred-and-one symptoms of being an internet addict:
+223. You set up a web-cam as your home's security system.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.251 b/source/ap/vim/patches/7.2.251
new file mode 100644
index 000000000..00cf0f0f8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.251
@@ -0,0 +1,71 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.251
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.251 (after 7.2.044)
+Problem: Compiler adds invalid memory bounds check.
+Solution: Remove _FORTIFY_SOURCE=2 from CFLAGS. (Dominique Pelle)
+Files: src/auto/configure, src/configure.in
+
+
+*** ../vim-7.2.250/src/auto/configure 2009-07-22 11:16:54.000000000 +0200
+--- src/auto/configure 2009-08-07 14:49:52.000000000 +0200
+***************
+*** 17135,17141 ****
+ { $as_echo "$as_me:$LINENO: checking whether we need -D_FORTIFY_SOURCE=1" >&5
+ $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=1"
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }
+ else
+--- 17135,17141 ----
+ { $as_echo "$as_me:$LINENO: checking whether we need -D_FORTIFY_SOURCE=1" >&5
+ $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS -D_FORTIFY_SOURCE=1" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' -e 's/-D_FORTIFY_SOURCE=2//g'`
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }
+ else
+*** ../vim-7.2.250/src/configure.in 2009-07-22 11:16:54.000000000 +0200
+--- src/configure.in 2009-08-07 14:49:47.000000000 +0200
+***************
+*** 3233,3239 ****
+ dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
+ AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=1"
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+--- 3233,3239 ----
+ dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
+ AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS -D_FORTIFY_SOURCE=1" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' -e 's/-D_FORTIFY_SOURCE=2//g'`
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+*** ../vim-7.2.250/src/version.c 2009-09-11 13:26:38.000000000 +0200
+--- src/version.c 2009-09-11 13:43:46.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 251,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+225. You sign up for free subscriptions for all the computer magazines
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.252 b/source/ap/vim/patches/7.2.252
new file mode 100644
index 000000000..b7dc7022b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.252
@@ -0,0 +1,51 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.252
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.252
+Problem: When using a multi-byte 'enc' the 'iskeyword' option cannot
+ contain characters above 128.
+Solution: Use mb_ptr2char_adv().
+Files: src/charset.c
+
+
+*** ../vim-7.2.251/src/charset.c 2009-05-14 22:19:19.000000000 +0200
+--- src/charset.c 2009-09-09 21:11:46.000000000 +0200
+***************
+*** 174,179 ****
+--- 174,184 ----
+ if (VIM_ISDIGIT(*p))
+ c = getdigits(&p);
+ else
++ #ifdef FEAT_MBYTE
++ if (has_mbyte)
++ c = mb_ptr2char_adv(&p);
++ else
++ #endif
+ c = *p++;
+ c2 = -1;
+ if (*p == '-' && p[1] != NUL)
+*** ../vim-7.2.251/src/version.c 2009-09-11 13:44:33.000000000 +0200
+--- src/version.c 2009-09-11 14:01:48.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 252,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+226. You sit down at the computer right after dinner and your spouse
+ says "See you in the morning."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.253 b/source/ap/vim/patches/7.2.253
new file mode 100644
index 000000000..354d444dd
--- /dev/null
+++ b/source/ap/vim/patches/7.2.253
@@ -0,0 +1,143 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.253
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.253
+Problem: Netbeans interface: getLength always uses current buffer.
+Solution: Use ml_get_buf() instead of ml_get(). (Xavier de Gaye)
+Files: src/netbeans.c
+
+
+*** ../vim-7.2.252/src/netbeans.c 2009-06-24 16:49:50.000000000 +0200
+--- src/netbeans.c 2009-09-11 13:40:14.000000000 +0200
+***************
+*** 1499,1505 ****
+ return FAIL;
+ }
+ first = *pos;
+! nbdebug((" FIRST POS: line %d, col %d\n", first.lnum, first.col));
+ pos = off2pos(buf->bufp, off+count-1);
+ if (!pos)
+ {
+--- 1499,1506 ----
+ return FAIL;
+ }
+ first = *pos;
+! nbdebug((" FIRST POS: line %d, col %d\n",
+! first.lnum, first.col));
+ pos = off2pos(buf->bufp, off+count-1);
+ if (!pos)
+ {
+***************
+*** 1510,1516 ****
+ return FAIL;
+ }
+ last = *pos;
+! nbdebug((" LAST POS: line %d, col %d\n", last.lnum, last.col));
+ del_from_lnum = first.lnum;
+ del_to_lnum = last.lnum;
+ doupdate = 1;
+--- 1511,1518 ----
+ return FAIL;
+ }
+ last = *pos;
+! nbdebug((" LAST POS: line %d, col %d\n",
+! last.lnum, last.col));
+ del_from_lnum = first.lnum;
+ del_to_lnum = last.lnum;
+ doupdate = 1;
+***************
+*** 1521,1527 ****
+ next = off2pos(buf->bufp, off + count);
+
+ /* Remove part of the first line. */
+! if (first.col != 0 || (next != NULL && first.lnum == next->lnum))
+ {
+ if (first.lnum != last.lnum
+ || (next != NULL && first.lnum != next->lnum))
+--- 1523,1530 ----
+ next = off2pos(buf->bufp, off + count);
+
+ /* Remove part of the first line. */
+! if (first.col != 0
+! || (next != NULL && first.lnum == next->lnum))
+ {
+ if (first.lnum != last.lnum
+ || (next != NULL && first.lnum != next->lnum))
+***************
+*** 1584,1590 ****
+ int id = buf_findsign_id(buf->bufp, (linenr_T)i);
+ if (id > 0)
+ {
+! nbdebug((" Deleting sign %d on line %d\n", id, i));
+ buf_delsign(buf->bufp, id);
+ }
+ else
+--- 1587,1594 ----
+ int id = buf_findsign_id(buf->bufp, (linenr_T)i);
+ if (id > 0)
+ {
+! nbdebug((" Deleting sign %d on line %d\n",
+! id, i));
+ buf_delsign(buf->bufp, id);
+ }
+ else
+***************
+*** 1593,1599 ****
+ }
+ }
+
+! nbdebug((" Deleting lines %d through %d\n", del_from_lnum, del_to_lnum));
+ curwin->w_cursor.lnum = del_from_lnum;
+ curwin->w_cursor.col = 0;
+ del_lines(del_to_lnum - del_from_lnum + 1, FALSE);
+--- 1597,1604 ----
+ }
+ }
+
+! nbdebug((" Deleting lines %d through %d\n",
+! del_from_lnum, del_to_lnum));
+ curwin->w_cursor.lnum = del_from_lnum;
+ curwin->w_cursor.col = 0;
+ del_lines(del_to_lnum - del_from_lnum + 1, FALSE);
+***************
+*** 3514,3520 ****
+ eol_size = 1;
+ for (lnum = 1; lnum <= bufp->b_ml.ml_line_count; ++lnum)
+ {
+! char_count += (long)STRLEN(ml_get(lnum)) + eol_size;
+ /* Check for a CTRL-C every 100000 characters */
+ if (char_count > last_check)
+ {
+--- 3519,3526 ----
+ eol_size = 1;
+ for (lnum = 1; lnum <= bufp->b_ml.ml_line_count; ++lnum)
+ {
+! char_count += (long)STRLEN(ml_get_buf(bufp, lnum, FALSE))
+! + eol_size;
+ /* Check for a CTRL-C every 100000 characters */
+ if (char_count > last_check)
+ {
+*** ../vim-7.2.252/src/version.c 2009-09-11 14:02:25.000000000 +0200
+--- src/version.c 2009-09-11 14:18:45.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 253,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+227. You sleep next to your monitor. Or on top of it.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.254 b/source/ap/vim/patches/7.2.254
new file mode 100644
index 000000000..c8c57affb
--- /dev/null
+++ b/source/ap/vim/patches/7.2.254
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.254
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.254
+Problem: Compiler warning for assigning size_t to int.
+Solution: Use size_t for the variable. (George Reilly)
+Files: src/fileio.c
+
+
+*** ../vim-7.2.253/src/fileio.c 2009-07-29 18:24:59.000000000 +0200
+--- src/fileio.c 2009-09-11 13:46:19.000000000 +0200
+***************
+*** 4568,4574 ****
+ c = TRUE;
+ if (write_info.bw_conv_error_lnum != 0)
+ {
+! int l = STRLEN(IObuff);
+ vim_snprintf((char *)IObuff + l, IOSIZE - l, _(" in line %ld;"),
+ (long)write_info.bw_conv_error_lnum);
+ }
+--- 4568,4574 ----
+ c = TRUE;
+ if (write_info.bw_conv_error_lnum != 0)
+ {
+! size_t l = STRLEN(IObuff);
+ vim_snprintf((char *)IObuff + l, IOSIZE - l, _(" in line %ld;"),
+ (long)write_info.bw_conv_error_lnum);
+ }
+*** ../vim-7.2.253/src/version.c 2009-09-11 14:19:41.000000000 +0200
+--- src/version.c 2009-09-11 15:03:42.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 254,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+230. You spend your Friday nights typing away at your keyboard
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.255 b/source/ap/vim/patches/7.2.255
new file mode 100644
index 000000000..1bb85b153
--- /dev/null
+++ b/source/ap/vim/patches/7.2.255
@@ -0,0 +1,71 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.255
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.255 (after 7.2.242)
+Problem: Setting 'rightleft', 'linebreak' and 'wrap' may cause cursor to be
+ in wrong place.
+Solution: Recompute the cursor column for these options.
+Files: src/option.c
+
+
+*** ../vim-7.2.254/src/option.c 2009-07-29 15:41:32.000000000 +0200
+--- src/option.c 2009-09-11 13:59:55.000000000 +0200
+***************
+*** 7430,7435 ****
+--- 7430,7437 ----
+ {
+ if (curwin->w_p_wrap)
+ curwin->w_leftcol = 0;
++ if (curwin->w_curswant != MAXCOL)
++ curwin->w_set_curswant = TRUE;
+ }
+
+ #ifdef FEAT_WINDOWS
+***************
+*** 7664,7669 ****
+--- 7666,7687 ----
+ }
+ #endif
+
++ #ifdef FEAT_LINEBREAK
++ if ((int *)varp == &curwin->w_p_lbr)
++ {
++ if (curwin->w_curswant != MAXCOL)
++ curwin->w_set_curswant = TRUE;
++ }
++ #endif
++
++ #ifdef FEAT_RIGHTLEFT
++ if ((int *)varp == &curwin->w_p_rl)
++ {
++ if (curwin->w_curswant != MAXCOL)
++ curwin->w_set_curswant = TRUE;
++ }
++ #endif
++
+ /*
+ * End of handling side effects for bool options.
+ */
+*** ../vim-7.2.254/src/version.c 2009-09-11 15:04:13.000000000 +0200
+--- src/version.c 2009-09-11 15:19:40.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 255,
+ /**/
+
+--
+A computer without Windows is like a fish without a bicycle.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.256 b/source/ap/vim/patches/7.2.256
new file mode 100644
index 000000000..17361fbf1
--- /dev/null
+++ b/source/ap/vim/patches/7.2.256
@@ -0,0 +1,59 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.256
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.256
+Problem: When 'guifont' was not set GTK font dialog doesn't have a default.
+ (Andreas Metzler)
+Solution: Set default to DEFAULT_FONT. (James Vega)
+Files: src/gui_gtk_x11.c
+
+
+*** ../vim-7.2.255/src/gui_gtk_x11.c 2009-07-01 18:04:30.000000000 +0200
+--- src/gui_gtk_x11.c 2009-09-11 14:21:32.000000000 +0200
+***************
+*** 4729,4734 ****
+--- 4729,4737 ----
+ if (oldval != NULL && *oldval != NUL)
+ gtk_font_selection_dialog_set_font_name(
+ GTK_FONT_SELECTION_DIALOG(gui.fontdlg), (char *)oldval);
++ else
++ gtk_font_selection_dialog_set_font_name(
++ GTK_FONT_SELECTION_DIALOG(gui.fontdlg), DEFAULT_FONT);
+
+ if (gui.fontname)
+ {
+***************
+*** 4816,4821 ****
+--- 4819,4827 ----
+ if (oldname != oldval)
+ vim_free(oldname);
+ }
++ else
++ gtk_font_selection_dialog_set_font_name(
++ GTK_FONT_SELECTION_DIALOG(dialog), DEFAULT_FONT);
+
+ response = gtk_dialog_run(GTK_DIALOG(dialog));
+
+*** ../vim-7.2.255/src/version.c 2009-09-11 15:20:22.000000000 +0200
+--- src/version.c 2009-09-11 15:45:36.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 256,
+ /**/
+
+--
+Get a life? What is the URL where it can be downloaded?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.257 b/source/ap/vim/patches/7.2.257
new file mode 100644
index 000000000..a856a3acb
--- /dev/null
+++ b/source/ap/vim/patches/7.2.257
@@ -0,0 +1,61 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.257
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.257
+Problem: With GTK 2.17 lots of assertion error messages.
+Solution: Remove check for static gravity. (Sebastian Droege)
+Files: src/gui_gtk_f.c
+
+
+*** ../vim-7.2.256/src/gui_gtk_f.c 2009-05-17 23:25:16.000000000 +0200
+--- src/gui_gtk_f.c 2009-09-11 15:15:41.000000000 +0200
+***************
+*** 860,870 ****
+ gtk_form_set_static_gravity(GdkWindow *window, gboolean use_static)
+ {
+ #ifdef HAVE_GTK2
+! gboolean static_gravity_supported;
+!
+! static_gravity_supported = gdk_window_set_static_gravities(window,
+! use_static);
+! g_return_if_fail(static_gravity_supported);
+ #else
+ XSetWindowAttributes xattributes;
+
+--- 860,868 ----
+ gtk_form_set_static_gravity(GdkWindow *window, gboolean use_static)
+ {
+ #ifdef HAVE_GTK2
+! /* We don't check if static gravity is actually supported, because it
+! * results in an annoying assertion error message. */
+! gdk_window_set_static_gravities(window, use_static);
+ #else
+ XSetWindowAttributes xattributes;
+
+*** ../vim-7.2.256/src/version.c 2009-09-11 15:46:20.000000000 +0200
+--- src/version.c 2009-09-11 16:16:52.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 257,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+231. You sprinkle Carpet Fresh on the rugs and put your vacuum cleaner
+ in the front doorway permanently so it always looks like you are
+ actually attempting to do something about that mess that has amassed
+ since you discovered the Internet.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.258 b/source/ap/vim/patches/7.2.258
new file mode 100644
index 000000000..98ddab580
--- /dev/null
+++ b/source/ap/vim/patches/7.2.258
@@ -0,0 +1,74 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.258
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.258
+Problem: v:beval_col and b:beval_text are wrong in UTF-8 text. (Tony
+ Mechelynck)
+Solution: Use byte number instead of character number for the column.
+Files: src/ui.c
+
+
+*** ../vim-7.2.257/src/ui.c 2009-07-01 18:04:30.000000000 +0200
+--- src/ui.c 2009-09-11 16:11:50.000000000 +0200
+***************
+*** 3055,3072 ****
+ int vcol;
+ {
+ /* try to advance to the specified column */
+- int col = 0;
+ int count = 0;
+ char_u *ptr;
+
+! ptr = ml_get_buf(wp->w_buffer, lnum, FALSE);
+ while (count <= vcol && *ptr != NUL)
+ {
+- ++col;
+ count += win_lbr_chartabsize(wp, ptr, count, NULL);
+ mb_ptr_adv(ptr);
+ }
+! return col;
+ }
+ #endif
+
+--- 3055,3071 ----
+ int vcol;
+ {
+ /* try to advance to the specified column */
+ int count = 0;
+ char_u *ptr;
++ char_u *start;
+
+! start = ptr = ml_get_buf(wp->w_buffer, lnum, FALSE);
+ while (count <= vcol && *ptr != NUL)
+ {
+ count += win_lbr_chartabsize(wp, ptr, count, NULL);
+ mb_ptr_adv(ptr);
+ }
+! return (int)(ptr - start);
+ }
+ #endif
+
+*** ../vim-7.2.257/src/version.c 2009-09-11 16:17:36.000000000 +0200
+--- src/version.c 2009-09-11 16:45:48.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 258,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+232. You start conversations with, "Have you gotten an ISDN line?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.259 b/source/ap/vim/patches/7.2.259
new file mode 100644
index 000000000..0bf0ba133
--- /dev/null
+++ b/source/ap/vim/patches/7.2.259
@@ -0,0 +1,160 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.259
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.259
+Problem: exists() doesn't work properly for an empty aucmd group.
+Solution: Change how au_exists() handles a missing pattern. Also add a
+ test for this. (Bob Hiestand)
+Files: src/fileio.c, src/testdir/Makefile, src/testdir/test67.in,
+ src/testdir/test67.ok
+
+
+*** ../vim-7.2.258/src/fileio.c 2009-09-11 15:04:13.000000000 +0200
+--- src/fileio.c 2009-09-11 16:37:08.000000000 +0200
+***************
+*** 9498,9512 ****
+ ap = first_autopat[(int)event];
+ if (ap == NULL)
+ goto theend;
+- if (pattern == NULL)
+- {
+- retval = TRUE;
+- goto theend;
+- }
+
+ /* if pattern is "<buffer>", special handling is needed which uses curbuf */
+ /* for pattern "<buffer=N>, fnamecmp() will work fine */
+! if (STRICMP(pattern, "<buffer>") == 0)
+ buflocal_buf = curbuf;
+
+ /* Check if there is an autocommand with the given pattern. */
+--- 9498,9507 ----
+ ap = first_autopat[(int)event];
+ if (ap == NULL)
+ goto theend;
+
+ /* if pattern is "<buffer>", special handling is needed which uses curbuf */
+ /* for pattern "<buffer=N>, fnamecmp() will work fine */
+! if (pattern != NULL && STRICMP(pattern, "<buffer>") == 0)
+ buflocal_buf = curbuf;
+
+ /* Check if there is an autocommand with the given pattern. */
+***************
+*** 9515,9523 ****
+ /* For buffer-local autocommands, fnamecmp() works fine. */
+ if (ap->pat != NULL && ap->cmds != NULL
+ && (group == AUGROUP_ALL || ap->group == group)
+! && (buflocal_buf == NULL
+! ? fnamecmp(ap->pat, pattern) == 0
+! : ap->buflocal_nr == buflocal_buf->b_fnum))
+ {
+ retval = TRUE;
+ break;
+--- 9510,9519 ----
+ /* For buffer-local autocommands, fnamecmp() works fine. */
+ if (ap->pat != NULL && ap->cmds != NULL
+ && (group == AUGROUP_ALL || ap->group == group)
+! && (pattern == NULL
+! || (buflocal_buf == NULL
+! ? fnamecmp(ap->pat, pattern) == 0
+! : ap->buflocal_nr == buflocal_buf->b_fnum)))
+ {
+ retval = TRUE;
+ break;
+*** ../vim-7.2.258/src/testdir/Makefile 2009-06-24 18:07:55.000000000 +0200
+--- src/testdir/Makefile 2009-09-11 16:31:33.000000000 +0200
+***************
+*** 22,28 ****
+ test48.out test49.out test51.out test52.out test53.out \
+ test54.out test55.out test56.out test57.out test58.out \
+ test59.out test60.out test61.out test62.out test63.out \
+! test64.out test65.out test66.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 22,28 ----
+ test48.out test49.out test51.out test52.out test53.out \
+ test54.out test55.out test56.out test57.out test58.out \
+ test59.out test60.out test61.out test62.out test63.out \
+! test64.out test65.out test66.out test67.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.2.258/src/testdir/test67.in 2009-09-11 17:23:47.000000000 +0200
+--- src/testdir/test67.in 2009-09-11 16:43:11.000000000 +0200
+***************
+*** 0 ****
+--- 1,33 ----
++ Test that groups and patterns are tested correctly when calling exists() for
++ autocommands.
++
++ STARTTEST
++ :so small.vim
++ :let results=[]
++ :augroup auexists
++ :augroup END
++ :call add(results, "##BufEnter: " . exists("##BufEnter"))
++ :call add(results, "#BufEnter: " . exists("#BufEnter"))
++ :au BufEnter * let g:entered=1
++ :call add(results, "#BufEnter: " . exists("#BufEnter"))
++ :call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
++ :augroup auexists
++ :au BufEnter * let g:entered=1
++ :augroup END
++ :call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
++ :call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
++ :au BufEnter *.test let g:entered=1
++ :call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
++ :edit testfile.test
++ :call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
++ :au BufEnter <buffer> let g:entered=1
++ :call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
++ :edit testfile2.test
++ :call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
++ :e test.out
++ :call append(0, results)
++ :$d
++ :w
++ :qa!
++ ENDTEST
++
+*** ../vim-7.2.258/src/testdir/test67.ok 2009-09-11 17:23:47.000000000 +0200
+--- src/testdir/test67.ok 2009-09-11 16:43:15.000000000 +0200
+***************
+*** 0 ****
+--- 1,10 ----
++ ##BufEnter: 1
++ #BufEnter: 0
++ #BufEnter: 1
++ #auexists#BufEnter: 0
++ #auexists#BufEnter: 1
++ #BufEnter#*.test: 0
++ #BufEnter#*.test: 1
++ #BufEnter#<buffer>: 0
++ #BufEnter#<buffer>: 1
++ #BufEnter#<buffer>: 0
+*** ../vim-7.2.258/src/version.c 2009-09-11 16:48:06.000000000 +0200
+--- src/version.c 2009-09-11 17:23:14.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 259,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+234. You started college as a chemistry major, and walk out four years
+ later as an Internet provider.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.260 b/source/ap/vim/patches/7.2.260
new file mode 100644
index 000000000..46d4365c2
--- /dev/null
+++ b/source/ap/vim/patches/7.2.260
@@ -0,0 +1,155 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.260 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.260 (extra part of 7.2.259)
+Problem: exists() doesn't work properly for empty aucmd group.
+Solution: Change how au_exists() handles a missing pattern. Also add a
+ test for this. (Bob Hiestand)
+Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
+ src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
+ src/testdir/Make_vms.mms
+
+
+*** ../vim-7.2.259/src/testdir/Make_amiga.mak 2009-03-11 16:36:04.000000000 +0100
+--- src/testdir/Make_amiga.mak 2009-09-11 16:29:54.000000000 +0200
+***************
+*** 26,32 ****
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out
+
+ .SUFFIXES: .in .out
+
+--- 26,32 ----
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 112,114 ****
+--- 112,115 ----
+ test64.out: test64.in
+ test65.out: test65.in
+ test66.out: test66.in
++ test67.out: test67.in
+*** ../vim-7.2.259/src/testdir/Make_dos.mak 2009-03-11 16:36:04.000000000 +0100
+--- src/testdir/Make_dos.mak 2009-09-11 16:30:17.000000000 +0200
+***************
+*** 26,32 ****
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out
+
+ SCRIPTS32 = test50.out
+
+--- 26,32 ----
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out test67.out
+
+ SCRIPTS32 = test50.out
+
+*** ../vim-7.2.259/src/testdir/Make_ming.mak 2009-03-11 16:36:04.000000000 +0100
+--- src/testdir/Make_ming.mak 2009-09-11 16:30:37.000000000 +0200
+***************
+*** 45,51 ****
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out
+
+ SCRIPTS32 = test50.out
+
+--- 45,51 ----
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out test67.out
+
+ SCRIPTS32 = test50.out
+
+*** ../vim-7.2.259/src/testdir/Make_os2.mak 2009-03-11 16:36:04.000000000 +0100
+--- src/testdir/Make_os2.mak 2009-09-11 16:30:52.000000000 +0200
+***************
+*** 26,32 ****
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out
+
+ .SUFFIXES: .in .out
+
+--- 26,32 ----
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out
+
+ .SUFFIXES: .in .out
+
+*** ../vim-7.2.259/src/testdir/Make_vms.mms 2009-03-11 16:36:04.000000000 +0100
+--- src/testdir/Make_vms.mms 2009-09-11 16:31:06.000000000 +0200
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2009 Mar 05
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2009 Sep 11
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+***************
+*** 69,75 ****
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out
+
+ .IFDEF WANT_GUI
+ SCRIPT_GUI = test16.out
+--- 69,75 ----
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out
+
+ .IFDEF WANT_GUI
+ SCRIPT_GUI = test16.out
+*** ../vim-7.2.259/src/version.c 2009-09-11 17:24:01.000000000 +0200
+--- src/version.c 2009-09-18 14:57:05.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 260,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+251. You've never seen your closest friends who usually live WAY too far away.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.261 b/source/ap/vim/patches/7.2.261
new file mode 100644
index 000000000..4f8e72d71
--- /dev/null
+++ b/source/ap/vim/patches/7.2.261
@@ -0,0 +1,83 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.261
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.261
+Problem: When deleting lines with a specific folding configuration E38 may
+ appear. (Shahaf)
+Solution: When adjusting nested folds for deleted lines take into account
+ that they don't start at the top of the enclosing fold.
+Files: src/fold.c
+
+
+*** ../vim-7.2.260/src/fold.c 2009-01-06 15:01:58.000000000 +0100
+--- src/fold.c 2009-09-18 14:43:23.000000000 +0200
+***************
+*** 1607,1617 ****
+ }
+ else
+ {
+- /* 2, 3, or 5: need to correct nested folds too */
+- foldMarkAdjustRecurse(&fp->fd_nested, line1 - fp->fd_top,
+- line2 - fp->fd_top, amount, amount_after);
+ if (fp->fd_top < top)
+ {
+ if (last <= line2)
+ {
+ /* 2. fold contains line1, line2 is below fold */
+--- 1607,1617 ----
+ }
+ else
+ {
+ if (fp->fd_top < top)
+ {
++ /* 2 or 3: need to correct nested folds too */
++ foldMarkAdjustRecurse(&fp->fd_nested, line1 - fp->fd_top,
++ line2 - fp->fd_top, amount, amount_after);
+ if (last <= line2)
+ {
+ /* 2. fold contains line1, line2 is below fold */
+***************
+*** 1628,1634 ****
+ }
+ else
+ {
+! /* 5. fold is below line1 and contains line2 */
+ if (amount == MAXLNUM)
+ {
+ fp->fd_len -= line2 - fp->fd_top + 1;
+--- 1628,1638 ----
+ }
+ else
+ {
+! /* 5. fold is below line1 and contains line2; need to
+! * correct nested folds too */
+! foldMarkAdjustRecurse(&fp->fd_nested, line1 - fp->fd_top,
+! line2 - fp->fd_top, amount,
+! amount_after + (fp->fd_top - top));
+ if (amount == MAXLNUM)
+ {
+ fp->fd_len -= line2 - fp->fd_top + 1;
+*** ../vim-7.2.260/src/version.c 2009-09-18 14:58:26.000000000 +0200
+--- src/version.c 2009-09-18 15:14:40.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 261,
+ /**/
+
+--
+Emacs is a nice OS - but it lacks a good text editor.
+That's why I am using Vim. --Anonymous
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.262 b/source/ap/vim/patches/7.2.262
new file mode 100644
index 000000000..dc73c07b8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.262
@@ -0,0 +1,189 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.262
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.262
+Problem: When using custom completion for a user command the pattern string
+ goes beyond the cursor position. (Hari Krishna Dara)
+Solution: Truncate the string at the cursor position.
+Files: src/ex_getln.c, src/structs.h
+
+
+*** ../vim-7.2.261/src/ex_getln.c 2009-06-24 17:04:40.000000000 +0200
+--- src/ex_getln.c 2009-09-18 16:58:16.000000000 +0200
+***************
+*** 3266,3272 ****
+ int i, j;
+ char_u *p1;
+ char_u *p2;
+- int oldlen;
+ int difflen;
+ int v;
+
+--- 3266,3271 ----
+***************
+*** 3291,3297 ****
+ out_flush();
+
+ i = (int)(xp->xp_pattern - ccline.cmdbuff);
+! oldlen = ccline.cmdpos - i;
+
+ if (type == WILD_NEXT || type == WILD_PREV)
+ {
+--- 3290,3296 ----
+ out_flush();
+
+ i = (int)(xp->xp_pattern - ccline.cmdbuff);
+! xp->xp_pattern_len = ccline.cmdpos - i;
+
+ if (type == WILD_NEXT || type == WILD_PREV)
+ {
+***************
+*** 3305,3322 ****
+ /*
+ * Translate string into pattern and expand it.
+ */
+! if ((p1 = addstar(&ccline.cmdbuff[i], oldlen, xp->xp_context)) == NULL)
+ p2 = NULL;
+ else
+ {
+! p2 = ExpandOne(xp, p1, vim_strnsave(&ccline.cmdbuff[i], oldlen),
+ WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
+ |options, type);
+ vim_free(p1);
+ /* longest match: make sure it is not shorter (happens with :help */
+ if (p2 != NULL && type == WILD_LONGEST)
+ {
+! for (j = 0; j < oldlen; ++j)
+ if (ccline.cmdbuff[i + j] == '*'
+ || ccline.cmdbuff[i + j] == '?')
+ break;
+--- 3304,3323 ----
+ /*
+ * Translate string into pattern and expand it.
+ */
+! if ((p1 = addstar(xp->xp_pattern, xp->xp_pattern_len,
+! xp->xp_context)) == NULL)
+ p2 = NULL;
+ else
+ {
+! p2 = ExpandOne(xp, p1,
+! vim_strnsave(&ccline.cmdbuff[i], xp->xp_pattern_len),
+ WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
+ |options, type);
+ vim_free(p1);
+ /* longest match: make sure it is not shorter (happens with :help */
+ if (p2 != NULL && type == WILD_LONGEST)
+ {
+! for (j = 0; j < xp->xp_pattern_len; ++j)
+ if (ccline.cmdbuff[i + j] == '*'
+ || ccline.cmdbuff[i + j] == '?')
+ break;
+***************
+*** 3331,3337 ****
+
+ if (p2 != NULL && !got_int)
+ {
+! difflen = (int)STRLEN(p2) - oldlen;
+ if (ccline.cmdlen + difflen > ccline.cmdbufflen - 4)
+ {
+ v = realloc_cmdbuff(ccline.cmdlen + difflen);
+--- 3332,3338 ----
+
+ if (p2 != NULL && !got_int)
+ {
+! difflen = (int)STRLEN(p2) - xp->xp_pattern_len;
+ if (ccline.cmdlen + difflen > ccline.cmdbufflen - 4)
+ {
+ v = realloc_cmdbuff(ccline.cmdlen + difflen);
+***************
+*** 3620,3625 ****
+--- 3621,3627 ----
+ expand_T *xp;
+ {
+ xp->xp_pattern = NULL;
++ xp->xp_pattern_len = 0;
+ xp->xp_backslash = XP_BS_NONE;
+ #ifndef BACKSLASH_IN_FILENAME
+ xp->xp_shell = FALSE;
+***************
+*** 4311,4318 ****
+ }
+
+ /* add star to file name, or convert to regexp if not exp. files. */
+! file_str = addstar(xp->xp_pattern,
+! (int)(str + col - xp->xp_pattern), xp->xp_context);
+ if (file_str == NULL)
+ return EXPAND_UNSUCCESSFUL;
+
+--- 4313,4320 ----
+ }
+
+ /* add star to file name, or convert to regexp if not exp. files. */
+! xp->xp_pattern_len = (int)(str + col - xp->xp_pattern);
+! file_str = addstar(xp->xp_pattern, xp->xp_pattern_len, xp->xp_context);
+ if (file_str == NULL)
+ return EXPAND_UNSUCCESSFUL;
+
+***************
+*** 4781,4787 ****
+ sprintf((char *)num, "%d", ccline.cmdpos);
+ args[1] = ccline.cmdbuff;
+ }
+! args[0] = xp->xp_pattern;
+ args[2] = num;
+
+ /* Save the cmdline, we don't know what the function may do. */
+--- 4783,4789 ----
+ sprintf((char *)num, "%d", ccline.cmdpos);
+ args[1] = ccline.cmdbuff;
+ }
+! args[0] = vim_strnsave(xp->xp_pattern, xp->xp_pattern_len);
+ args[2] = num;
+
+ /* Save the cmdline, we don't know what the function may do. */
+***************
+*** 4797,4802 ****
+--- 4799,4805 ----
+ if (ccline.cmdbuff != NULL)
+ ccline.cmdbuff[ccline.cmdlen] = keep;
+
++ vim_free(args[0]);
+ return ret;
+ }
+
+*** ../vim-7.2.261/src/structs.h 2009-07-29 12:09:49.000000000 +0200
+--- src/structs.h 2009-09-18 15:33:15.000000000 +0200
+***************
+*** 432,437 ****
+--- 432,438 ----
+ {
+ int xp_context; /* type of expansion */
+ char_u *xp_pattern; /* start of item to expand */
++ int xp_pattern_len; /* bytes in xp_pattern before cursor */
+ #if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
+ char_u *xp_arg; /* completion function */
+ int xp_scriptID; /* SID for completion function */
+*** ../vim-7.2.261/src/version.c 2009-09-18 15:16:37.000000000 +0200
+--- src/version.c 2009-09-18 17:23:20.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 262,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+252. You vote for foreign officials.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.263 b/source/ap/vim/patches/7.2.263
new file mode 100644
index 000000000..fdbfa4064
--- /dev/null
+++ b/source/ap/vim/patches/7.2.263
@@ -0,0 +1,87 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.263
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.263
+Problem: GTK2: when using the -geom argument with an offset from the right
+ edge and the size is smaller than the default, the Vim window is
+ not positioned properly.
+Solution: Use another function to set the size. (Vitaly Minko)
+Files: src/gui_gtk_x11.c
+
+
+*** ../vim-7.2.262/src/gui_gtk_x11.c 2009-09-11 15:46:20.000000000 +0200
+--- src/gui_gtk_x11.c 2009-09-23 15:43:52.000000000 +0200
+***************
+*** 4066,4071 ****
+--- 4066,4073 ----
+ {
+ guicolor_T fg_pixel = INVALCOLOR;
+ guicolor_T bg_pixel = INVALCOLOR;
++ guint pixel_width;
++ guint pixel_height;
+
+ #ifdef HAVE_GTK2
+ /*
+***************
+*** 4106,4113 ****
+ unsigned int w, h;
+ int x = 0;
+ int y = 0;
+- guint pixel_width;
+- guint pixel_height;
+
+ mask = XParseGeometry((char *)gui.geom, &x, &y, &w, &h);
+
+--- 4108,4113 ----
+***************
+*** 4160,4168 ****
+ }
+ }
+
+! gtk_form_set_size(GTK_FORM(gui.formwin),
+! (guint)(gui_get_base_width() + Columns * gui.char_width),
+! (guint)(gui_get_base_height() + Rows * gui.char_height));
+ update_window_manager_hints(0, 0);
+
+ if (foreground_argument != NULL)
+--- 4160,4175 ----
+ }
+ }
+
+! pixel_width = (guint)(gui_get_base_width() + Columns * gui.char_width);
+! pixel_height = (guint)(gui_get_base_height() + Rows * gui.char_height);
+! #ifdef HAVE_GTK2
+! /* For GTK2 changing the size of the form widget doesn't cause window
+! * resizing. */
+! if (gtk_socket_id == 0)
+! gtk_window_resize(GTK_WINDOW(gui.mainwin), pixel_width, pixel_height);
+! #else
+! gtk_form_set_size(GTK_FORM(gui.formwin), pixel_width, pixel_height);
+! #endif
+ update_window_manager_hints(0, 0);
+
+ if (foreground_argument != NULL)
+*** ../vim-7.2.262/src/version.c 2009-09-18 17:24:54.000000000 +0200
+--- src/version.c 2009-09-23 17:34:08.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 263,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+267. You get an extra phone line so you can get phone calls.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.264 b/source/ap/vim/patches/7.2.264
new file mode 100644
index 000000000..808f29169
--- /dev/null
+++ b/source/ap/vim/patches/7.2.264
@@ -0,0 +1,168 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.264
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.264
+Problem: GTK2: When the Vim window is maximized setting 'columns' or
+ 'lines' doesn't work.
+Solution: Unmaximize the window before setting the size. (Vitaly Minko)
+Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro
+
+
+*** ../vim-7.2.263/src/gui.c 2009-07-29 11:10:31.000000000 +0200
+--- src/gui.c 2009-09-23 16:28:09.000000000 +0200
+***************
+*** 1386,1391 ****
+--- 1386,1395 ----
+ int min_height;
+ int screen_w;
+ int screen_h;
++ #ifdef HAVE_GTK2
++ int un_maximize = mustset;
++ int did_adjust = 0;
++ #endif
+
+ if (!gui.shell_created)
+ return;
+***************
+*** 1425,1446 ****
+ if (Columns < MIN_COLUMNS)
+ Columns = MIN_COLUMNS;
+ width = Columns * gui.char_width + base_width;
+ }
+ if ((direction & RESIZE_VERT) && height > screen_h)
+ {
+ Rows = (screen_h - base_height) / gui.char_height;
+ check_shellsize();
+ height = Rows * gui.char_height + base_height;
+ }
+ }
+ gui.num_cols = Columns;
+ gui.num_rows = Rows;
+
+ min_width = base_width + MIN_COLUMNS * gui.char_width;
+ min_height = base_height + MIN_LINES * gui.char_height;
+! # ifdef FEAT_WINDOWS
+ min_height += tabline_height() * gui.char_height;
+! # endif
+
+ gui_mch_set_shellsize(width, height, min_width, min_height,
+ base_width, base_height, direction);
+--- 1429,1475 ----
+ if (Columns < MIN_COLUMNS)
+ Columns = MIN_COLUMNS;
+ width = Columns * gui.char_width + base_width;
++ #ifdef HAVE_GTK2
++ ++did_adjust;
++ #endif
+ }
+ if ((direction & RESIZE_VERT) && height > screen_h)
+ {
+ Rows = (screen_h - base_height) / gui.char_height;
+ check_shellsize();
+ height = Rows * gui.char_height + base_height;
++ #ifdef HAVE_GTK2
++ ++did_adjust;
++ #endif
+ }
++ #ifdef HAVE_GTK2
++ if (did_adjust == 2 || (width + gui.char_width >= screen_w
++ && height + gui.char_height >= screen_h))
++ /* don't unmaximize if at maximum size */
++ un_maximize = FALSE;
++ #endif
+ }
+ gui.num_cols = Columns;
+ gui.num_rows = Rows;
+
+ min_width = base_width + MIN_COLUMNS * gui.char_width;
+ min_height = base_height + MIN_LINES * gui.char_height;
+! #ifdef FEAT_WINDOWS
+ min_height += tabline_height() * gui.char_height;
+! #endif
+!
+! #ifdef HAVE_GTK2
+! if (un_maximize)
+! {
+! /* If the window size is smaller than the screen unmaximize the
+! * window, otherwise resizing won't work. */
+! gui_mch_get_screen_dimensions(&screen_w, &screen_h);
+! if ((width + gui.char_width < screen_w
+! || height + gui.char_height * 2 < screen_h)
+! && gui_mch_maximized())
+! gui_mch_unmaximize();
+! }
+! #endif
+
+ gui_mch_set_shellsize(width, height, min_width, min_height,
+ base_width, base_height, direction);
+*** ../vim-7.2.263/src/gui_gtk_x11.c 2009-09-23 17:35:17.000000000 +0200
+--- src/gui_gtk_x11.c 2009-09-23 15:43:52.000000000 +0200
+***************
+*** 4376,4381 ****
+--- 4376,4404 ----
+ #endif
+ #endif /* HAVE_GTK2 */
+
++ #if defined(HAVE_GTK2) || defined(PROTO)
++ /*
++ * Return TRUE if the main window is maximized.
++ */
++ int
++ gui_mch_maximized()
++ {
++ return (gui.mainwin != NULL && gui.mainwin->window != NULL
++ && (gdk_window_get_state(gui.mainwin->window)
++ & GDK_WINDOW_STATE_MAXIMIZED));
++ }
++
++ /*
++ * Unmaximize the main window
++ */
++ void
++ gui_mch_unmaximize()
++ {
++ if (gui.mainwin != NULL)
++ gtk_window_unmaximize(GTK_WINDOW(gui.mainwin));
++ }
++ #endif
++
+ /*
+ * Set the windows size.
+ */
+*** ../vim-7.2.263/src/proto/gui_gtk_x11.pro 2007-05-05 19:18:54.000000000 +0200
+--- src/proto/gui_gtk_x11.pro 2009-09-23 15:43:45.000000000 +0200
+***************
+*** 16,21 ****
+--- 16,23 ----
+ void gui_mch_exit __ARGS((int rc));
+ int gui_mch_get_winpos __ARGS((int *x, int *y));
+ void gui_mch_set_winpos __ARGS((int x, int y));
++ int gui_mch_maximized __ARGS((void));
++ void gui_mch_unmaximize __ARGS((void));
+ void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
+ void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+ void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
+*** ../vim-7.2.263/src/version.c 2009-09-23 17:35:17.000000000 +0200
+--- src/version.c 2009-09-23 18:12:21.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 264,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+268. You get up in the morning and go online before getting your coffee.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.265 b/source/ap/vim/patches/7.2.265
new file mode 100644
index 000000000..468515024
--- /dev/null
+++ b/source/ap/vim/patches/7.2.265
@@ -0,0 +1,56 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.265
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.265
+Problem: When using ":silent broken" inside try/catch silency may persist.
+ (dr-dr xp)
+Solution: Set msg_silent when there is an error and it's bigger than the
+ saved value.
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.264/src/ex_docmd.c 2009-07-09 20:13:59.000000000 +0200
+--- src/ex_docmd.c 2009-09-30 11:40:53.000000000 +0200
+***************
+*** 2695,2701 ****
+ {
+ /* messages could be enabled for a serious error, need to check if the
+ * counters don't become negative */
+! if (!did_emsg)
+ msg_silent = save_msg_silent;
+ emsg_silent -= did_esilent;
+ if (emsg_silent < 0)
+--- 2695,2701 ----
+ {
+ /* messages could be enabled for a serious error, need to check if the
+ * counters don't become negative */
+! if (!did_emsg || msg_silent > save_msg_silent)
+ msg_silent = save_msg_silent;
+ emsg_silent -= did_esilent;
+ if (emsg_silent < 0)
+*** ../vim-7.2.264/src/version.c 2009-09-23 18:14:13.000000000 +0200
+--- src/version.c 2009-09-30 13:22:47.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 265,
+ /**/
+
+--
+FIRST HEAD: Oh! quick! get the sword out I want to cut his head off.
+THIRD HEAD: Oh, cut your own head off.
+SECOND HEAD: Yes - do us all a favour.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.266 b/source/ap/vim/patches/7.2.266
new file mode 100644
index 000000000..3a5ba7741
--- /dev/null
+++ b/source/ap/vim/patches/7.2.266
@@ -0,0 +1,244 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.266
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.266
+Problem: When an expression abbreviation is triggered, the typed character
+ is unknown.
+Solution: Make the typed character available in v:char.
+Files: runtime/doc/map.txt, src/eval.c, src/getchar.c, src/ops.c,
+ src/proto/eval.pro
+
+
+*** ../vim-7.2.265/runtime/doc/map.txt 2008-08-09 19:36:49.000000000 +0200
+--- runtime/doc/map.txt 2009-09-23 19:39:19.000000000 +0200
+***************
+*** 224,229 ****
+--- 224,233 ----
+ The result of the InsertDot() function will be inserted. It could check the
+ text before the cursor and start omni completion when some condition is met.
+
++ For abbreviations |v:char| is set to the character that was typed to trigger
++ the abbreviation. You can use this to decide how to expand the {lhs}. You
++ can't change v:char and you should not insert it.
++
+ Be very careful about side effects! The expression is evaluated while
+ obtaining characters, you may very well make the command dysfunctional.
+ For this reason the following is blocked:
+*** ../vim-7.2.265/src/eval.c 2009-06-03 14:25:47.000000000 +0200
+--- src/eval.c 2009-09-23 19:36:32.000000000 +0200
+***************
+*** 18101,18106 ****
+--- 18101,18131 ----
+ }
+
+ /*
++ * Set v:char to character "c".
++ */
++ void
++ set_vim_var_char(c)
++ int c;
++ {
++ #ifdef FEAT_MBYTE
++ char_u buf[MB_MAXBYTES];
++ #else
++ char_u buf[2];
++ #endif
++
++ #ifdef FEAT_MBYTE
++ if (has_mbyte)
++ buf[(*mb_char2bytes)(c, buf)] = NUL;
++ else
++ #endif
++ {
++ buf[0] = c;
++ buf[1] = NUL;
++ }
++ set_vim_var_string(VV_CHAR, buf, -1);
++ }
++
++ /*
+ * Set v:count to "count" and v:count1 to "count1".
+ * When "set_prevcount" is TRUE first set v:prevcount from v:count.
+ */
+*** ../vim-7.2.265/src/getchar.c 2009-07-14 13:44:43.000000000 +0200
+--- src/getchar.c 2009-09-23 19:35:54.000000000 +0200
+***************
+*** 129,135 ****
+ static void validate_maphash __ARGS((void));
+ static void showmap __ARGS((mapblock_T *mp, int local));
+ #ifdef FEAT_EVAL
+! static char_u *eval_map_expr __ARGS((char_u *str));
+ #endif
+
+ /*
+--- 129,135 ----
+ static void validate_maphash __ARGS((void));
+ static void showmap __ARGS((mapblock_T *mp, int local));
+ #ifdef FEAT_EVAL
+! static char_u *eval_map_expr __ARGS((char_u *str, int c));
+ #endif
+
+ /*
+***************
+*** 2446,2452 ****
+ if (tabuf.typebuf_valid)
+ {
+ vgetc_busy = 0;
+! s = eval_map_expr(mp->m_str);
+ vgetc_busy = save_vgetc_busy;
+ }
+ else
+--- 2446,2452 ----
+ if (tabuf.typebuf_valid)
+ {
+ vgetc_busy = 0;
+! s = eval_map_expr(mp->m_str, NUL);
+ vgetc_busy = save_vgetc_busy;
+ }
+ else
+***************
+*** 4367,4375 ****
+ * abbreviation, but is not inserted into the input stream.
+ */
+ j = 0;
+- /* special key code, split up */
+ if (c != Ctrl_RSB)
+ {
+ if (IS_SPECIAL(c) || c == K_SPECIAL)
+ {
+ tb[j++] = K_SPECIAL;
+--- 4367,4375 ----
+ * abbreviation, but is not inserted into the input stream.
+ */
+ j = 0;
+ if (c != Ctrl_RSB)
+ {
++ /* special key code, split up */
+ if (IS_SPECIAL(c) || c == K_SPECIAL)
+ {
+ tb[j++] = K_SPECIAL;
+***************
+*** 4398,4404 ****
+ }
+ #ifdef FEAT_EVAL
+ if (mp->m_expr)
+! s = eval_map_expr(mp->m_str);
+ else
+ #endif
+ s = mp->m_str;
+--- 4398,4404 ----
+ }
+ #ifdef FEAT_EVAL
+ if (mp->m_expr)
+! s = eval_map_expr(mp->m_str, c);
+ else
+ #endif
+ s = mp->m_str;
+***************
+*** 4434,4441 ****
+ * special characters.
+ */
+ static char_u *
+! eval_map_expr(str)
+ char_u *str;
+ {
+ char_u *res;
+ char_u *p;
+--- 4434,4442 ----
+ * special characters.
+ */
+ static char_u *
+! eval_map_expr(str, c)
+ char_u *str;
++ int c; /* NUL or typed character for abbreviation */
+ {
+ char_u *res;
+ char_u *p;
+***************
+*** 4452,4457 ****
+--- 4453,4459 ----
+ #ifdef FEAT_EX_EXTRA
+ ++ex_normal_lock;
+ #endif
++ set_vim_var_char(c); /* set v:char to the typed character */
+ save_cursor = curwin->w_cursor;
+ p = eval_to_string(str, NULL, FALSE);
+ --textlock;
+*** ../vim-7.2.265/src/ops.c 2009-07-01 18:04:30.000000000 +0200
+--- src/ops.c 2009-09-23 19:11:40.000000000 +0200
+***************
+*** 4473,4483 ****
+ int use_sandbox = was_set_insecurely((char_u *)"formatexpr",
+ OPT_LOCAL);
+ int r;
+- #ifdef FEAT_MBYTE
+- char_u buf[MB_MAXBYTES];
+- #else
+- char_u buf[2];
+- #endif
+
+ /*
+ * Set v:lnum to the first line number and v:count to the number of lines.
+--- 4473,4478 ----
+***************
+*** 4485,4501 ****
+ */
+ set_vim_var_nr(VV_LNUM, lnum);
+ set_vim_var_nr(VV_COUNT, count);
+!
+! #ifdef FEAT_MBYTE
+! if (has_mbyte)
+! buf[(*mb_char2bytes)(c, buf)] = NUL;
+! else
+! #endif
+! {
+! buf[0] = c;
+! buf[1] = NUL;
+! }
+! set_vim_var_string(VV_CHAR, buf, -1);
+
+ /*
+ * Evaluate the function.
+--- 4480,4486 ----
+ */
+ set_vim_var_nr(VV_LNUM, lnum);
+ set_vim_var_nr(VV_COUNT, count);
+! set_vim_var_char(c);
+
+ /*
+ * Evaluate the function.
+*** ../vim-7.2.265/src/proto/eval.pro 2008-11-20 16:11:03.000000000 +0100
+--- src/proto/eval.pro 2009-09-23 19:36:30.000000000 +0200
+***************
+*** 61,66 ****
+--- 61,67 ----
+ long get_vim_var_nr __ARGS((int idx));
+ char_u *get_vim_var_str __ARGS((int idx));
+ list_T *get_vim_var_list __ARGS((int idx));
++ void set_vim_var_char __ARGS((int c));
+ void set_vcount __ARGS((long count, long count1, int set_prevcount));
+ void set_vim_var_string __ARGS((int idx, char_u *val, int len));
+ void set_vim_var_list __ARGS((int idx, list_T *val));
+*** ../vim-7.2.265/src/version.c 2009-09-30 13:23:57.000000000 +0200
+--- src/version.c 2009-09-30 15:11:29.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 266,
+ /**/
+
+--
+Life would be so much easier if we could just look at the source code.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.267 b/source/ap/vim/patches/7.2.267
new file mode 100644
index 000000000..6df92c945
--- /dev/null
+++ b/source/ap/vim/patches/7.2.267
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.267
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.267
+Problem: Crash for narrow window and double-width character.
+Solution: Check for zero width. (Taro Muraoka)
+Files: src/charset.c
+
+
+*** ../vim-7.2.266/src/charset.c 2009-09-11 14:02:25.000000000 +0200
+--- src/charset.c 2009-10-07 16:17:27.000000000 +0200
+***************
+*** 1218,1223 ****
+--- 1218,1225 ----
+ if ((int)vcol == width1 - 1)
+ return TRUE;
+ width2 = width1 + win_col_off2(wp);
++ if (width2 <= 0)
++ return FALSE;
+ return ((vcol - width1) % width2 == width2 - 1);
+ }
+ #endif /* FEAT_MBYTE */
+*** ../vim-7.2.266/src/version.c 2009-09-30 15:15:33.000000000 +0200
+--- src/version.c 2009-10-07 16:19:05.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 267,
+ /**/
+
+--
+You got to work at a mill? Lucky! I got sent back to work in the
+acid-mines for my daily crust of stale bread... which not even the
+birds would eat.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.268 b/source/ap/vim/patches/7.2.268
new file mode 100644
index 000000000..89c50b04b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.268
@@ -0,0 +1,80 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.268
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.268
+Problem: Crash when using Python to set cursor beyond end of line.
+ (winterTTr)
+Solution: Check the column to be valid.
+Files: src/if_python.c
+
+
+*** ../vim-7.2.267/src/if_python.c 2009-07-09 20:06:30.000000000 +0200
+--- src/if_python.c 2009-10-10 14:49:10.000000000 +0200
+***************
+*** 2058,2063 ****
+--- 2058,2064 ----
+ {
+ long lnum;
+ long col;
++ long len;
+
+ if (!PyArg_Parse(val, "(ll)", &lnum, &col))
+ return -1;
+***************
+*** 2072,2081 ****
+ if (VimErrorCheck())
+ return -1;
+
+! /* NO CHECK ON COLUMN - SEEMS NOT TO MATTER */
+
+ this->win->w_cursor.lnum = lnum;
+ this->win->w_cursor.col = col;
+ update_screen(VALID);
+
+ return 0;
+--- 2073,2088 ----
+ if (VimErrorCheck())
+ return -1;
+
+! /* When column is out of range silently correct it. */
+! len = STRLEN(ml_get_buf(this->win->w_buffer, lnum, FALSE));
+! if (col > len)
+! col = len;
+
+ this->win->w_cursor.lnum = lnum;
+ this->win->w_cursor.col = col;
++ #ifdef FEAT_VIRTUALEDIT
++ this->win->w_cursor.coladd = 0;
++ #endif
+ update_screen(VALID);
+
+ return 0;
+*** ../vim-7.2.267/src/version.c 2009-10-07 16:19:52.000000000 +0200
+--- src/version.c 2009-11-03 11:42:08.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 268,
+ /**/
+
+--
+VOICE OVER: As the horrendous Black Beast lunged forward, escape for Arthur
+ and his knights seemed hopeless, when, suddenly ... the animator
+ suffered a fatal heart attack.
+ANIMATOR: Aaaaagh!
+VOICE OVER: The cartoon peril was no more ... The Quest for Holy Grail could
+ continue.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.269 b/source/ap/vim/patches/7.2.269
new file mode 100644
index 000000000..ec15f454f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.269
@@ -0,0 +1,261 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.269
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.269
+Problem: Many people struggle to find out why Vim startup is slow.
+Solution: Add the --startuptime command line flag.
+Files: runtime/doc/starting.txt, src/globals.h, src/feature.h,
+ src/main.c, src/macros.h
+
+
+*** ../vim-7.2.268/runtime/doc/starting.txt 2008-11-09 13:43:25.000000000 +0100
+--- runtime/doc/starting.txt 2009-10-25 11:57:51.000000000 +0100
+***************
+*** 144,149 ****
+--- 144,156 ----
+ -u NORC no yes
+ --noplugin yes no
+
++ --startuptime={fname} *--startuptime*
++ During startup write timing messages to the file {fname}.
++ This can be used to find out where time is spent while loading
++ your .vimrc and plugins.
++ When {fname} already exists new messages are appended.
++ {only when compiled with this feature}
++
+ *--literal*
+ --literal Take file names literally, don't expand wildcards. Not needed
+ for Unix, because Vim always takes file names literally (the
+***************
+*** 471,476 ****
+--- 487,493 ----
+ window title and copy/paste using the X clipboard. This
+ avoids a long startup time when running Vim in a terminal
+ emulator and the connection to the X server is slow.
++ See |--startuptime| to find out if affects you.
+ Only makes a difference on Unix or VMS, when compiled with the
+ |+X11| feature. Otherwise it's ignored.
+ To disable the connection only for specific terminals, see the
+*** ../vim-7.2.268/src/globals.h 2009-07-29 12:09:49.000000000 +0200
+--- src/globals.h 2009-10-10 15:14:31.000000000 +0200
+***************
+*** 1567,1572 ****
+--- 1567,1576 ----
+ /* For undo we need to know the lowest time possible. */
+ EXTERN time_t starttime;
+
++ #ifdef STARTUPTIME
++ EXTERN FILE *time_fd INIT(= NULL); /* where to write startup timing */
++ #endif
++
+ /*
+ * Some compilers warn for not using a return value, but in some situations we
+ * can't do anything useful with the value. Assign to this variable to avoid
+*** ../vim-7.2.268/src/feature.h 2008-11-09 13:43:25.000000000 +0100
+--- src/feature.h 2009-10-10 16:16:19.000000000 +0200
+***************
+*** 844,853 ****
+ /* #define DEBUG */
+
+ /*
+! * STARTUPTIME Time the startup process. Writes a "vimstartup" file
+! * with timestamps.
+ */
+! /* #define STARTUPTIME "vimstartup" */
+
+ /*
+ * MEM_PROFILE Debugging of memory allocation and freeing.
+--- 844,857 ----
+ /* #define DEBUG */
+
+ /*
+! * STARTUPTIME Time the startup process. Writes a file with
+! * timestamps.
+ */
+! #if defined(FEAT_NORMAL) \
+! && ((defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)) \
+! || defined(WIN3264))
+! # define STARTUPTIME 1
+! #endif
+
+ /*
+ * MEM_PROFILE Debugging of memory allocation and freeing.
+*** ../vim-7.2.268/src/main.c 2009-05-26 22:58:43.000000000 +0200
+--- src/main.c 2009-10-10 16:18:32.000000000 +0200
+***************
+*** 130,139 ****
+ #endif
+
+
+- #ifdef STARTUPTIME
+- static FILE *time_fd = NULL;
+- #endif
+-
+ /*
+ * Different types of error messages.
+ */
+--- 130,135 ----
+***************
+*** 173,178 ****
+--- 169,177 ----
+ char_u *fname = NULL; /* file name from command line */
+ mparm_T params; /* various parameters passed between
+ * main() and other functions. */
++ #ifdef STARTUPTIME
++ int i;
++ #endif
+
+ /*
+ * Do any system-specific initialisations. These can NOT use IObuff or
+***************
+*** 203,210 ****
+ #endif
+
+ #ifdef STARTUPTIME
+! time_fd = mch_fopen(STARTUPTIME, "a");
+! TIME_MSG("--- VIM STARTING ---");
+ #endif
+ starttime = time(NULL);
+
+--- 202,216 ----
+ #endif
+
+ #ifdef STARTUPTIME
+! for (i = 1; i < argc; ++i)
+! {
+! if (STRNICMP(argv[i], "--startuptime=", 14) == 0)
+! {
+! time_fd = mch_fopen(argv[i] + 14, "a");
+! TIME_MSG("--- VIM STARTING ---");
+! break;
+! }
+! }
+ #endif
+ starttime = time(NULL);
+
+***************
+*** 1150,1155 ****
+--- 1156,1173 ----
+ cursor_on();
+
+ do_redraw = FALSE;
++
++ #ifdef STARTUPTIME
++ /* Now that we have drawn the first screen all the startup stuff
++ * has been done, close any file for startup messages. */
++ if (time_fd != NULL)
++ {
++ TIME_MSG("first screen update");
++ TIME_MSG("--- VIM STARTED ---");
++ fclose(time_fd);
++ time_fd = NULL;
++ }
++ #endif
+ }
+ #ifdef FEAT_GUI
+ if (need_mouse_correct)
+***************
+*** 1743,1748 ****
+--- 1761,1770 ----
+ /* already processed, skip */
+ }
+ #endif
++ else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
++ {
++ /* already processed, skip */
++ }
+ else
+ {
+ if (argv[0][argv_idx])
+***************
+*** 3211,3216 ****
+--- 3233,3252 ----
+
+ static struct timeval prev_timeval;
+
++ # ifdef WIN3264
++ /*
++ * Windows doesn't have gettimeofday(), although it does have struct timeval.
++ */
++ static int
++ gettimeofday(struct timeval *tv, char *dummy)
++ {
++ long t = clock();
++ tv->tv_sec = t / CLOCKS_PER_SEC;
++ tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
++ return 0;
++ }
++ # endif
++
+ /*
+ * Save the previous time before doing something that could nest.
+ * set "*tv_rel" to the time elapsed so far.
+***************
+*** 3299,3318 ****
+ }
+ }
+
+- # ifdef WIN3264
+- /*
+- * Windows doesn't have gettimeofday(), although it does have struct timeval.
+- */
+- int
+- gettimeofday(struct timeval *tv, char *dummy)
+- {
+- long t = clock();
+- tv->tv_sec = t / CLOCKS_PER_SEC;
+- tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
+- return 0;
+- }
+- # endif
+-
+ #endif
+
+ #if defined(FEAT_CLIENTSERVER) || defined(PROTO)
+--- 3335,3340 ----
+*** ../vim-7.2.268/src/macros.h 2009-05-17 13:30:58.000000000 +0200
+--- src/macros.h 2009-10-10 15:19:07.000000000 +0200
+***************
+*** 243,249 ****
+ #endif
+
+ #ifdef STARTUPTIME
+! # define TIME_MSG(s) time_msg(s, NULL)
+ #else
+ # define TIME_MSG(s)
+ #endif
+--- 243,249 ----
+ #endif
+
+ #ifdef STARTUPTIME
+! # define TIME_MSG(s) { if (time_fd != NULL) time_msg(s, NULL); }
+ #else
+ # define TIME_MSG(s)
+ #endif
+*** ../vim-7.2.268/src/version.c 2009-11-03 11:43:05.000000000 +0100
+--- src/version.c 2009-11-03 12:06:31.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 269,
+ /**/
+
+--
+BEDEVERE: Look! It's the old man from scene 24 - what's he Doing here?
+ARTHUR: He is the keeper of the Bridge. He asks each traveler five
+ questions ...
+GALAHAD: Three questions.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.270 b/source/ap/vim/patches/7.2.270
new file mode 100644
index 000000000..7ad6458f2
--- /dev/null
+++ b/source/ap/vim/patches/7.2.270
@@ -0,0 +1,72 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.270
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.270
+Problem: Using ":@c" when the c register contains a CR causes the rest to
+ be executed later. (Dexter Douglas)
+Solution: Don't check for typeahead to start with ':', keep executing
+ commands until all added typeahead has been used.
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.269/src/ex_docmd.c 2009-09-30 13:23:57.000000000 +0200
+--- src/ex_docmd.c 2009-10-28 12:06:54.000000000 +0100
+***************
+*** 8358,8363 ****
+--- 8358,8364 ----
+ exarg_T *eap;
+ {
+ int c;
++ int prev_len = typebuf.tb_len;
+
+ curwin->w_cursor.lnum = eap->line2;
+
+***************
+*** 8383,8393 ****
+
+ /*
+ * Execute from the typeahead buffer.
+! * Originally this didn't check for the typeahead buffer to be empty,
+! * thus could read more Ex commands from stdin. It's not clear why,
+! * it is certainly unexpected.
+ */
+! while ((!stuff_empty() || typebuf.tb_len > 0) && vpeekc() == ':')
+ (void)do_cmdline(NULL, getexline, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE);
+
+ exec_from_reg = save_efr;
+--- 8384,8393 ----
+
+ /*
+ * Execute from the typeahead buffer.
+! * Continue until the stuff buffer is empty and all added characters
+! * have been consumed.
+ */
+! while (!stuff_empty() || typebuf.tb_len > prev_len)
+ (void)do_cmdline(NULL, getexline, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE);
+
+ exec_from_reg = save_efr;
+*** ../vim-7.2.269/src/version.c 2009-11-03 12:10:39.000000000 +0100
+--- src/version.c 2009-11-03 12:32:47.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 270,
+ /**/
+
+--
+To the optimist, the glass is half full.
+To the pessimist, the glass is half empty.
+To the engineer, the glass is twice as big as it needs to be.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.271 b/source/ap/vim/patches/7.2.271
new file mode 100644
index 000000000..07427981a
--- /dev/null
+++ b/source/ap/vim/patches/7.2.271
@@ -0,0 +1,92 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.271
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.271
+Problem: Using freed memory in Motif GUI version when making a choice.
+Solution: Free memory only after using it. (Dominique Pelle)
+Files: src/gui_xmdlg.c
+
+
+*** ../vim-7.2.270/src/gui_xmdlg.c 2009-05-21 23:25:38.000000000 +0200
+--- src/gui_xmdlg.c 2009-10-28 21:56:15.000000000 +0100
+***************
+*** 10,16 ****
+ /*
+ * (C) 2001,2005 by Marcin Dalecki <martin@dalecki.de>
+ *
+! * Implementation of dialogue functions for the Motif GUI variant.
+ *
+ * Note about Lesstif: Apparently lesstif doesn't get the widget layout right,
+ * when using a dynamic scrollbar policy.
+--- 10,16 ----
+ /*
+ * (C) 2001,2005 by Marcin Dalecki <martin@dalecki.de>
+ *
+! * Implementation of dialog functions for the Motif GUI variant.
+ *
+ * Note about Lesstif: Apparently lesstif doesn't get the widget layout right,
+ * when using a dynamic scrollbar policy.
+***************
+*** 633,648 ****
+ data->sel[which] = XtNewString(sel);
+ else
+ {
+- XtFree(data->sel[which]);
+ if (!strcmp(data->sel[which], sel))
+ {
+ /* unselecting current selection */
+ data->sel[which] = NULL;
+ if (w)
+ XmListDeselectItem(w, call_data->item);
+ }
+ else
+ data->sel[which] = XtNewString(sel);
+ }
+ XtFree(sel);
+
+--- 633,651 ----
+ data->sel[which] = XtNewString(sel);
+ else
+ {
+ if (!strcmp(data->sel[which], sel))
+ {
+ /* unselecting current selection */
++ XtFree(data->sel[which]);
+ data->sel[which] = NULL;
+ if (w)
+ XmListDeselectItem(w, call_data->item);
+ }
+ else
++ {
++ XtFree(data->sel[which]);
+ data->sel[which] = XtNewString(sel);
++ }
+ }
+ XtFree(sel);
+
+*** ../vim-7.2.270/src/version.c 2009-11-03 12:38:50.000000000 +0100
+--- src/version.c 2009-11-03 12:48:26.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 271,
+ /**/
+
+--
+ROBIN: (warily) And if you get a question wrong?
+ARTHUR: You are cast into the Gorge of Eternal Peril.
+ROBIN: Oh ... wacho!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.272 b/source/ap/vim/patches/7.2.272
new file mode 100644
index 000000000..22bebbcc7
--- /dev/null
+++ b/source/ap/vim/patches/7.2.272
@@ -0,0 +1,82 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.272
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.272
+Problem: "_.svz" is not recognized as a swap file. (David M. Besonen)
+Solution: Accept .s[uvw][a-z] as a swap file name extension.
+Files: src/memline.c
+
+
+*** ../vim-7.2.271/src/memline.c 2009-04-22 15:56:27.000000000 +0200
+--- src/memline.c 2009-10-29 20:55:08.000000000 +0100
+***************
+*** 864,884 ****
+ recoverymode = TRUE;
+ called_from_main = (curbuf->b_ml.ml_mfp == NULL);
+ attr = hl_attr(HLF_E);
+! /*
+! * If the file name ends in ".sw?" we use it directly.
+! * Otherwise a search is done to find the swap file(s).
+! */
+ fname = curbuf->b_fname;
+ if (fname == NULL) /* When there is no file name */
+ fname = (char_u *)"";
+ len = (int)STRLEN(fname);
+ if (len >= 4 &&
+ #if defined(VMS) || defined(RISCOS)
+! STRNICMP(fname + len - 4, "_sw" , 3)
+ #else
+! STRNICMP(fname + len - 4, ".sw" , 3)
+ #endif
+! == 0)
+ {
+ directly = TRUE;
+ fname = vim_strsave(fname); /* make a copy for mf_open() */
+--- 864,887 ----
+ recoverymode = TRUE;
+ called_from_main = (curbuf->b_ml.ml_mfp == NULL);
+ attr = hl_attr(HLF_E);
+!
+! /*
+! * If the file name ends in ".s[uvw][a-z]" we assume this is the swap file.
+! * Otherwise a search is done to find the swap file(s).
+! */
+ fname = curbuf->b_fname;
+ if (fname == NULL) /* When there is no file name */
+ fname = (char_u *)"";
+ len = (int)STRLEN(fname);
+ if (len >= 4 &&
+ #if defined(VMS) || defined(RISCOS)
+! STRNICMP(fname + len - 4, "_s" , 2)
+ #else
+! STRNICMP(fname + len - 4, ".s" , 2)
+ #endif
+! == 0
+! && vim_strchr((char_u *)"UVWuvw", fname[len - 2]) != NULL
+! && ASCII_ISALPHA(fname[len - 1]))
+ {
+ directly = TRUE;
+ fname = vim_strsave(fname); /* make a copy for mf_open() */
+*** ../vim-7.2.271/src/version.c 2009-11-03 12:53:44.000000000 +0100
+--- src/version.c 2009-11-03 13:02:51.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 272,
+ /**/
+
+--
+Sorry, no fortune today.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.273 b/source/ap/vim/patches/7.2.273
new file mode 100644
index 000000000..ac00afaa7
--- /dev/null
+++ b/source/ap/vim/patches/7.2.273
@@ -0,0 +1,130 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.273
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.273
+Problem: Crash with redir to unknown array. (Christian Brabandt)
+Solution: Don't assign the redir result when there was an error.
+Files: src/eval.c
+
+
+*** ../vim-7.2.272/src/eval.c 2009-09-30 15:15:33.000000000 +0200
+--- src/eval.c 2009-11-03 12:05:07.000000000 +0100
+***************
+*** 988,1000 ****
+ int err;
+ typval_T tv;
+
+! /* Make sure a valid variable name is specified */
+ if (!eval_isnamec1(*name))
+ {
+ EMSG(_(e_invarg));
+ return FAIL;
+ }
+
+ redir_varname = vim_strsave(name);
+ if (redir_varname == NULL)
+ return FAIL;
+--- 988,1001 ----
+ int err;
+ typval_T tv;
+
+! /* Catch a bad name early. */
+ if (!eval_isnamec1(*name))
+ {
+ EMSG(_(e_invarg));
+ return FAIL;
+ }
+
++ /* Make a copy of the name, it is used in redir_lval until redir ends. */
+ redir_varname = vim_strsave(name);
+ if (redir_varname == NULL)
+ return FAIL;
+***************
+*** 1019,1024 ****
+--- 1020,1026 ----
+ EMSG(_(e_trailing));
+ else
+ EMSG(_(e_invarg));
++ redir_endp = NULL; /* don't store a value, only cleanup */
+ var_redir_stop();
+ return FAIL;
+ }
+***************
+*** 1037,1042 ****
+--- 1039,1045 ----
+ did_emsg |= save_emsg;
+ if (err)
+ {
++ redir_endp = NULL; /* don't store a value, only cleanup */
+ var_redir_stop();
+ return FAIL;
+ }
+***************
+*** 1085,1090 ****
+--- 1088,1094 ----
+
+ /*
+ * Stop redirecting command output to a variable.
++ * Frees the allocated memory.
+ */
+ void
+ var_redir_stop()
+***************
+*** 1093,1106 ****
+
+ if (redir_lval != NULL)
+ {
+! /* Append the trailing NUL. */
+! ga_append(&redir_ga, NUL);
+
+! /* Assign the text to the variable. */
+! tv.v_type = VAR_STRING;
+! tv.vval.v_string = redir_ga.ga_data;
+! set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)".");
+! vim_free(tv.vval.v_string);
+
+ clear_lval(redir_lval);
+ vim_free(redir_lval);
+--- 1097,1114 ----
+
+ if (redir_lval != NULL)
+ {
+! /* If there was no error: assign the text to the variable. */
+! if (redir_endp != NULL)
+! {
+! ga_append(&redir_ga, NUL); /* Append the trailing NUL. */
+! tv.v_type = VAR_STRING;
+! tv.vval.v_string = redir_ga.ga_data;
+! set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)".");
+! }
+
+! /* free the collected output */
+! vim_free(redir_ga.ga_data);
+! redir_ga.ga_data = NULL;
+
+ clear_lval(redir_lval);
+ vim_free(redir_lval);
+*** ../vim-7.2.272/src/version.c 2009-11-03 13:06:03.000000000 +0100
+--- src/version.c 2009-11-03 14:24:06.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 273,
+ /**/
+
+--
+Permission is granted to read this message out aloud on Kings Cross Road,
+London, under the condition that the orator is properly dressed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.274 b/source/ap/vim/patches/7.2.274
new file mode 100644
index 000000000..809cedcf6
--- /dev/null
+++ b/source/ap/vim/patches/7.2.274
@@ -0,0 +1,130 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.274
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.274
+Problem: Syntax folding doesn't work properly when adding a comment.
+Solution: Fix it and add a test. (Lech Lorens)
+Files: src/fold.c, src/testdir/test45.in, src/testdir/test45.ok
+
+
+*** ../vim-7.2.273/src/fold.c 2009-09-18 15:16:37.000000000 +0200
+--- src/fold.c 2009-11-03 12:36:37.000000000 +0100
+***************
+*** 2256,2261 ****
+--- 2256,2295 ----
+ }
+ }
+
++ /*
++ * If folding is defined by the syntax, it is possible that a change in
++ * one line will cause all sub-folds of the current fold to change (e.g.,
++ * closing a C-style comment can cause folds in the subsequent lines to
++ * appear). To take that into account we should adjust the value of "bot"
++ * to point to the end of the current fold:
++ */
++ if (foldlevelSyntax == getlevel)
++ {
++ garray_T *gap = &wp->w_folds;
++ fold_T *fp = NULL;
++ int current_fdl = 0;
++ linenr_T fold_start_lnum = 0;
++ linenr_T lnum_rel = fline.lnum;
++
++ while (current_fdl < fline.lvl)
++ {
++ if (!foldFind(gap, lnum_rel, &fp))
++ break;
++ ++current_fdl;
++
++ fold_start_lnum += fp->fd_top;
++ gap = &fp->fd_nested;
++ lnum_rel -= fp->fd_top;
++ }
++ if (fp != NULL && current_fdl == fline.lvl)
++ {
++ linenr_T fold_end_lnum = fold_start_lnum + fp->fd_len;
++
++ if (fold_end_lnum > bot)
++ bot = fold_end_lnum;
++ }
++ }
++
+ start = fline.lnum;
+ end = bot;
+ /* Do at least one line. */
+*** ../vim-7.2.273/src/testdir/test45.in 2007-09-25 17:58:43.000000000 +0200
+--- src/testdir/test45.in 2009-11-03 12:22:38.000000000 +0100
+***************
+*** 28,36 ****
+ k:call append("$", foldlevel("."))
+ :" test syntax folding
+ :set fdm=syntax fdl=0
+! :syn region Hup start="dd" end="hh" fold
+ Gzk:call append("$", "folding " . getline("."))
+ k:call append("$", getline("."))
+ :" test expression folding
+ :fun Flvl()
+ let l = getline(v:lnum)
+--- 28,41 ----
+ k:call append("$", foldlevel("."))
+ :" test syntax folding
+ :set fdm=syntax fdl=0
+! :syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
+! :syn region Fd1 start="ee" end="ff" fold contained
+! :syn region Fd2 start="gg" end="hh" fold contained
+! :syn region Fd3 start="commentstart" end="commentend" fold contained
+ Gzk:call append("$", "folding " . getline("."))
+ k:call append("$", getline("."))
++ jAcommentstart Acommentend:set fdl=1
++ 3j:call append("$", getline("."))
+ :" test expression folding
+ :fun Flvl()
+ let l = getline(v:lnum)
+*** ../vim-7.2.273/src/testdir/test45.ok 2004-06-13 17:47:37.000000000 +0200
+--- src/testdir/test45.ok 2009-11-03 12:22:50.000000000 +0100
+***************
+*** 8,15 ****
+ 0
+ indent 2
+ 1
+! folding 8 hh
+ 3 cc
+ expr 2
+ 1
+ 2
+--- 8,16 ----
+ 0
+ indent 2
+ 1
+! folding 9 ii
+ 3 cc
++ 7 gg
+ expr 2
+ 1
+ 2
+*** ../vim-7.2.273/src/version.c 2009-11-03 14:26:29.000000000 +0100
+--- src/version.c 2009-11-03 14:44:21.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 274,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite colour?
+LAUNCELOT: Blue.
+BRIDGEKEEPER: Right. Off you go.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.275 b/source/ap/vim/patches/7.2.275
new file mode 100644
index 000000000..c6c632644
--- /dev/null
+++ b/source/ap/vim/patches/7.2.275
@@ -0,0 +1,95 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.275
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.275
+Problem: Warning for unused argument and comparing signed and unsigned.
+Solution: Add type cast.
+Files: src/memline.c
+
+
+*** ../vim-7.2.274/src/memline.c 2009-11-03 13:06:03.000000000 +0100
+--- src/memline.c 2009-10-29 20:55:08.000000000 +0100
+***************
+*** 1285,1291 ****
+ for (i = 0; i < dp->db_line_count; ++i)
+ {
+ txt_start = (dp->db_index[i] & DB_INDEX_MASK);
+! if (txt_start <= HEADER_SIZE
+ || txt_start >= (int)dp->db_txt_end)
+ {
+ p = (char_u *)"???";
+--- 1285,1291 ----
+ for (i = 0; i < dp->db_line_count; ++i)
+ {
+ txt_start = (dp->db_index[i] & DB_INDEX_MASK);
+! if (txt_start <= (int)HEADER_SIZE
+ || txt_start >= (int)dp->db_txt_end)
+ {
+ p = (char_u *)"???";
+***************
+*** 1296,1302 ****
+ ml_append(lnum++, p, (colnr_T)0, TRUE);
+ }
+ if (has_error)
+! ml_append(lnum++, (char_u *)_("???END"), (colnr_T)0, TRUE);
+ }
+ }
+ }
+--- 1296,1303 ----
+ ml_append(lnum++, p, (colnr_T)0, TRUE);
+ }
+ if (has_error)
+! ml_append(lnum++, (char_u *)_("???END"),
+! (colnr_T)0, TRUE);
+ }
+ }
+ }
+***************
+*** 3576,3586 ****
+ * Make swap file name out of the file name and a directory name.
+ * Returns pointer to allocated memory or NULL.
+ */
+- /*ARGSUSED*/
+ char_u *
+ makeswapname(fname, ffname, buf, dir_name)
+ char_u *fname;
+! char_u *ffname;
+ buf_T *buf;
+ char_u *dir_name;
+ {
+--- 3577,3586 ----
+ * Make swap file name out of the file name and a directory name.
+ * Returns pointer to allocated memory or NULL.
+ */
+ char_u *
+ makeswapname(fname, ffname, buf, dir_name)
+ char_u *fname;
+! char_u *ffname UNUSED;
+ buf_T *buf;
+ char_u *dir_name;
+ {
+*** ../vim-7.2.274/src/version.c 2009-11-03 14:46:35.000000000 +0100
+--- src/version.c 2009-11-03 15:28:33.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 275,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite colour?
+GAWAIN: Blue ... No yelloooooww!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.276 b/source/ap/vim/patches/7.2.276
new file mode 100644
index 000000000..15dc68b00
--- /dev/null
+++ b/source/ap/vim/patches/7.2.276
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.276
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.276
+Problem: Crash when setting 'isprint' to a small bullet. (Raul Coronado)
+Solution: Check for the character to be < 256. Also make it possible to
+ specify a range of multi-byte characters. (Lech Lorens)
+Files: src/charset.c
+
+
+*** ../vim-7.2.275/src/charset.c 2009-10-07 16:19:52.000000000 +0200
+--- src/charset.c 2009-11-03 12:46:12.000000000 +0100
+***************
+*** 187,195 ****
+ if (VIM_ISDIGIT(*p))
+ c2 = getdigits(&p);
+ else
+ c2 = *p++;
+ }
+! if (c <= 0 || (c2 < c && c2 != -1) || c2 >= 256
+ || !(*p == NUL || *p == ','))
+ return FAIL;
+
+--- 187,200 ----
+ if (VIM_ISDIGIT(*p))
+ c2 = getdigits(&p);
+ else
++ #ifdef FEAT_MBYTE
++ if (has_mbyte)
++ c2 = mb_ptr2char_adv(&p);
++ else
++ #endif
+ c2 = *p++;
+ }
+! if (c <= 0 || c >= 256 || (c2 < c && c2 != -1) || c2 >= 256
+ || !(*p == NUL || *p == ','))
+ return FAIL;
+
+*** ../vim-7.2.275/src/version.c 2009-11-03 15:32:58.000000000 +0100
+--- src/version.c 2009-11-03 16:03:18.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 276,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite editor?
+GAWAIN: Emacs ... No, Viiiiiiiiiiimmmmmmm!
+ "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.277 b/source/ap/vim/patches/7.2.277
new file mode 100644
index 000000000..ed3caf4d2
--- /dev/null
+++ b/source/ap/vim/patches/7.2.277
@@ -0,0 +1,66 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.277
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.277
+Problem: CTRL-Y in a diff'ed window may move the cursor outside of the
+ window. (Lech Lorens)
+Solution: Limit the number of filler lines to the height of the window.
+ Don't reset filler lines to zero for an empty buffer.
+Files: src/move.c
+
+
+*** ../vim-7.2.276/src/move.c 2009-05-15 21:31:11.000000000 +0200
+--- src/move.c 2009-11-03 14:39:55.000000000 +0100
+***************
+*** 183,191 ****
+ if (curwin->w_topline != 1)
+ redraw_later(NOT_VALID);
+ curwin->w_topline = 1;
+- #ifdef FEAT_DIFF
+- curwin->w_topfill = 0;
+- #endif
+ curwin->w_botline = 2;
+ curwin->w_valid |= VALID_BOTLINE|VALID_BOTLINE_AP;
+ #ifdef FEAT_SCROLLBIND
+--- 183,188 ----
+***************
+*** 1257,1263 ****
+ while (line_count-- > 0)
+ {
+ #ifdef FEAT_DIFF
+! if (curwin->w_topfill < diff_check(curwin, curwin->w_topline))
+ {
+ ++curwin->w_topfill;
+ ++done;
+--- 1254,1261 ----
+ while (line_count-- > 0)
+ {
+ #ifdef FEAT_DIFF
+! if (curwin->w_topfill < diff_check(curwin, curwin->w_topline)
+! && curwin->w_topfill < curwin->w_height - 1)
+ {
+ ++curwin->w_topfill;
+ ++done;
+*** ../vim-7.2.276/src/version.c 2009-11-03 16:03:59.000000000 +0100
+--- src/version.c 2009-11-03 16:22:04.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 277,
+ /**/
+
+--
+SIGFUN -- signature too funny (core dumped)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.278 b/source/ap/vim/patches/7.2.278
new file mode 100644
index 000000000..edf4e58af
--- /dev/null
+++ b/source/ap/vim/patches/7.2.278
@@ -0,0 +1,74 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.278
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.278
+Problem: Using magic number in the folding code.
+Solution: Use the defined MAX_LEVEL.
+Files: src/fold.c
+
+
+*** ../vim-7.2.277/src/fold.c 2009-11-03 14:46:35.000000000 +0100
+--- src/fold.c 2009-11-03 12:36:37.000000000 +0100
+***************
+*** 1932,1938 ****
+ #ifdef FEAT_EVAL
+ if (*wp->w_p_fdt != NUL)
+ {
+! char_u dashes[51];
+ win_T *save_curwin;
+ int level;
+ char_u *p;
+--- 1932,1938 ----
+ #ifdef FEAT_EVAL
+ if (*wp->w_p_fdt != NUL)
+ {
+! char_u dashes[MAX_LEVEL + 2];
+ win_T *save_curwin;
+ int level;
+ char_u *p;
+***************
+*** 1944,1951 ****
+ /* Set "v:folddashes" to a string of "level" dashes. */
+ /* Set "v:foldlevel" to "level". */
+ level = foldinfo->fi_level;
+! if (level > 50)
+! level = 50;
+ vim_memset(dashes, '-', (size_t)level);
+ dashes[level] = NUL;
+ set_vim_var_string(VV_FOLDDASHES, dashes, -1);
+--- 1944,1951 ----
+ /* Set "v:folddashes" to a string of "level" dashes. */
+ /* Set "v:foldlevel" to "level". */
+ level = foldinfo->fi_level;
+! if (level > (int)sizeof(dashes) - 1)
+! level = (int)sizeof(dashes) - 1;
+ vim_memset(dashes, '-', (size_t)level);
+ dashes[level] = NUL;
+ set_vim_var_string(VV_FOLDDASHES, dashes, -1);
+*** ../vim-7.2.277/src/version.c 2009-11-03 16:22:59.000000000 +0100
+--- src/version.c 2009-11-03 16:29:08.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 278,
+ /**/
+
+--
+BRIDGEKEEPER: What is the air-speed velocity of an unladen swallow?
+ARTHUR: What do you mean? An African or European swallow?
+BRIDGEKEEPER: Er ... I don't know that ... Aaaaarrrrrrggghhh!
+ BRIDGEKEEPER is cast into the gorge.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.279 b/source/ap/vim/patches/7.2.279
new file mode 100644
index 000000000..bdf58fc8e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.279
@@ -0,0 +1,120 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.279
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.279
+Problem: Invalid memory read with visual mode "r". (Dominique Pelle)
+Solution: Make sure the cursor position is valid. Don't check the cursor
+ position but the position being used. And make sure we get the
+ right line.
+Files: src/misc2.c, src/ops.c
+
+
+*** ../vim-7.2.278/src/misc2.c 2009-05-16 21:06:36.000000000 +0200
+--- src/misc2.c 2009-11-03 16:43:10.000000000 +0100
+***************
+*** 156,162 ****
+ || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL)
+ #endif
+ ;
+! line = ml_get_curline();
+
+ if (wcol >= MAXCOL)
+ {
+--- 156,162 ----
+ || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL)
+ #endif
+ ;
+! line = ml_get_buf(curbuf, pos->lnum, FALSE);
+
+ if (wcol >= MAXCOL)
+ {
+***************
+*** 332,340 ****
+ #endif
+
+ #ifdef FEAT_MBYTE
+! /* prevent cursor from moving on the trail byte */
+ if (has_mbyte)
+! mb_adjust_cursor();
+ #endif
+
+ if (col < wcol)
+--- 332,340 ----
+ #endif
+
+ #ifdef FEAT_MBYTE
+! /* prevent from moving onto a trail byte */
+ if (has_mbyte)
+! mb_adjustpos(pos);
+ #endif
+
+ if (col < wcol)
+*** ../vim-7.2.278/src/ops.c 2009-09-30 15:15:33.000000000 +0200
+--- src/ops.c 2009-11-03 15:18:50.000000000 +0100
+***************
+*** 2020,2025 ****
+--- 2020,2026 ----
+ bd.is_MAX = (curwin->w_curswant == MAXCOL);
+ for ( ; curwin->w_cursor.lnum <= oap->end.lnum; ++curwin->w_cursor.lnum)
+ {
++ curwin->w_cursor.col = 0; /* make sure cursor position is valid */
+ block_prep(oap, &bd, curwin->w_cursor.lnum, TRUE);
+ if (bd.textlen == 0 && (!virtual_op || bd.is_MAX))
+ continue; /* nothing to replace */
+***************
+*** 2035,2040 ****
+--- 2036,2042 ----
+ {
+ pos_T vpos;
+
++ vpos.lnum = curwin->w_cursor.lnum;
+ getvpos(&vpos, oap->start_vcol);
+ bd.startspaces += vpos.coladd;
+ n = bd.startspaces;
+***************
+*** 2693,2703 ****
+ * initial coladd offset as part of "startspaces" */
+ if (bd.is_short)
+ {
+! linenr_T lnum = curwin->w_cursor.lnum;
+!
+! curwin->w_cursor.lnum = linenr;
+ (void)getvpos(&vpos, oap->start_vcol);
+- curwin->w_cursor.lnum = lnum;
+ }
+ else
+ vpos.coladd = 0;
+--- 2695,2702 ----
+ * initial coladd offset as part of "startspaces" */
+ if (bd.is_short)
+ {
+! vpos.lnum = linenr;
+ (void)getvpos(&vpos, oap->start_vcol);
+ }
+ else
+ vpos.coladd = 0;
+*** ../vim-7.2.278/src/version.c 2009-11-03 16:29:48.000000000 +0100
+--- src/version.c 2009-11-03 16:41:53.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 279,
+ /**/
+
+--
+BEDEVERE: How do you know so much about swallows?
+ARTHUR: Well you have to know these things when you're a king, you know.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.280 b/source/ap/vim/patches/7.2.280
new file mode 100644
index 000000000..6223ac450
--- /dev/null
+++ b/source/ap/vim/patches/7.2.280
@@ -0,0 +1,251 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.280
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.280
+Problem: A redraw in a custom statusline with %! may cause a crash.
+ (Yukihiro Nakadaira)
+Solution: Make a copy of 'statusline'. Also fix typo in function name
+ redraw_custum_statusline. (party by Dominique Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.279/src/screen.c 2009-07-29 16:13:35.000000000 +0200
+--- src/screen.c 2009-11-03 17:13:16.000000000 +0100
+***************
+*** 132,138 ****
+ static void draw_vsep_win __ARGS((win_T *wp, int row));
+ #endif
+ #ifdef FEAT_STL_OPT
+! static void redraw_custum_statusline __ARGS((win_T *wp));
+ #endif
+ #ifdef FEAT_SEARCH_EXTRA
+ #define SEARCH_HL_PRIORITY 0
+--- 132,138 ----
+ static void draw_vsep_win __ARGS((win_T *wp, int row));
+ #endif
+ #ifdef FEAT_STL_OPT
+! static void redraw_custom_statusline __ARGS((win_T *wp));
+ #endif
+ #ifdef FEAT_SEARCH_EXTRA
+ #define SEARCH_HL_PRIORITY 0
+***************
+*** 5772,5778 ****
+ else if (*p_stl != NUL || *wp->w_p_stl != NUL)
+ {
+ /* redraw custom status line */
+! redraw_custum_statusline(wp);
+ }
+ #endif
+ else
+--- 5794,5800 ----
+ else if (*p_stl != NUL || *wp->w_p_stl != NUL)
+ {
+ /* redraw custom status line */
+! redraw_custom_statusline(wp);
+ }
+ #endif
+ else
+***************
+*** 5897,5914 ****
+ * errors encountered.
+ */
+ static void
+! redraw_custum_statusline(wp)
+ win_T *wp;
+ {
+! int save_called_emsg = called_emsg;
+
+ called_emsg = FALSE;
+ win_redr_custom(wp, FALSE);
+ if (called_emsg)
+ set_string_option_direct((char_u *)"statusline", -1,
+ (char_u *)"", OPT_FREE | (*wp->w_p_stl != NUL
+ ? OPT_LOCAL : OPT_GLOBAL), SID_ERROR);
+ called_emsg |= save_called_emsg;
+ }
+ #endif
+
+--- 5919,5949 ----
+ * errors encountered.
+ */
+ static void
+! redraw_custom_statusline(wp)
+ win_T *wp;
+ {
+! static int entered = FALSE;
+! int save_called_emsg = called_emsg;
+!
+! /* When called recursively return. This can happen when the statusline
+! * contains an expression that triggers a redraw. */
+! if (entered)
+! return;
+! entered = TRUE;
+
+ called_emsg = FALSE;
+ win_redr_custom(wp, FALSE);
+ if (called_emsg)
++ {
++ /* When there is an error disable the statusline, otherwise the
++ * display is messed up with errors and a redraw triggers the problem
++ * again and again. */
+ set_string_option_direct((char_u *)"statusline", -1,
+ (char_u *)"", OPT_FREE | (*wp->w_p_stl != NUL
+ ? OPT_LOCAL : OPT_GLOBAL), SID_ERROR);
++ }
+ called_emsg |= save_called_emsg;
++ entered = FALSE;
+ }
+ #endif
+
+***************
+*** 6016,6021 ****
+--- 6051,6057 ----
+ int len;
+ int fillchar;
+ char_u buf[MAXPATHL];
++ char_u *stl;
+ char_u *p;
+ struct stl_hlrec hltab[STL_MAX_ITEM];
+ struct stl_hlrec tabtab[STL_MAX_ITEM];
+***************
+*** 6025,6031 ****
+ if (wp == NULL)
+ {
+ /* Use 'tabline'. Always at the first line of the screen. */
+! p = p_tal;
+ row = 0;
+ fillchar = ' ';
+ attr = hl_attr(HLF_TPF);
+--- 6061,6067 ----
+ if (wp == NULL)
+ {
+ /* Use 'tabline'. Always at the first line of the screen. */
+! stl = p_tal;
+ row = 0;
+ fillchar = ' ';
+ attr = hl_attr(HLF_TPF);
+***************
+*** 6042,6058 ****
+
+ if (draw_ruler)
+ {
+! p = p_ruf;
+ /* advance past any leading group spec - implicit in ru_col */
+! if (*p == '%')
+ {
+! if (*++p == '-')
+! p++;
+! if (atoi((char *) p))
+! while (VIM_ISDIGIT(*p))
+! p++;
+! if (*p++ != '(')
+! p = p_ruf;
+ }
+ #ifdef FEAT_VERTSPLIT
+ col = ru_col - (Columns - W_WIDTH(wp));
+--- 6078,6094 ----
+
+ if (draw_ruler)
+ {
+! stl = p_ruf;
+ /* advance past any leading group spec - implicit in ru_col */
+! if (*stl == '%')
+ {
+! if (*++stl == '-')
+! stl++;
+! if (atoi((char *)stl))
+! while (VIM_ISDIGIT(*stl))
+! stl++;
+! if (*stl++ != '(')
+! stl = p_ruf;
+ }
+ #ifdef FEAT_VERTSPLIT
+ col = ru_col - (Columns - W_WIDTH(wp));
+***************
+*** 6081,6089 ****
+ else
+ {
+ if (*wp->w_p_stl != NUL)
+! p = wp->w_p_stl;
+ else
+! p = p_stl;
+ # ifdef FEAT_EVAL
+ use_sandbox = was_set_insecurely((char_u *)"statusline",
+ *wp->w_p_stl == NUL ? 0 : OPT_LOCAL);
+--- 6117,6125 ----
+ else
+ {
+ if (*wp->w_p_stl != NUL)
+! stl = wp->w_p_stl;
+ else
+! stl = p_stl;
+ # ifdef FEAT_EVAL
+ use_sandbox = was_set_insecurely((char_u *)"statusline",
+ *wp->w_p_stl == NUL ? 0 : OPT_LOCAL);
+***************
+*** 6098,6107 ****
+ if (maxwidth <= 0)
+ return;
+
+ width = build_stl_str_hl(wp == NULL ? curwin : wp,
+ buf, sizeof(buf),
+! p, use_sandbox,
+ fillchar, maxwidth, hltab, tabtab);
+ len = (int)STRLEN(buf);
+
+ while (width < maxwidth && len < (int)sizeof(buf) - 1)
+--- 6134,6147 ----
+ if (maxwidth <= 0)
+ return;
+
++ /* Make a copy, because the statusline may include a function call that
++ * might change the option value and free the memory. */
++ stl = vim_strsave(stl);
+ width = build_stl_str_hl(wp == NULL ? curwin : wp,
+ buf, sizeof(buf),
+! stl, use_sandbox,
+ fillchar, maxwidth, hltab, tabtab);
++ vim_free(stl);
+ len = (int)STRLEN(buf);
+
+ while (width < maxwidth && len < (int)sizeof(buf) - 1)
+***************
+*** 9465,9471 ****
+ #if defined(FEAT_STL_OPT) && defined(FEAT_WINDOWS)
+ if ((*p_stl != NUL || *curwin->w_p_stl != NUL) && curwin->w_status_height)
+ {
+! redraw_custum_statusline(curwin);
+ }
+ else
+ #endif
+--- 9505,9511 ----
+ #if defined(FEAT_STL_OPT) && defined(FEAT_WINDOWS)
+ if ((*p_stl != NUL || *curwin->w_p_stl != NUL) && curwin->w_status_height)
+ {
+! redraw_custom_statusline(curwin);
+ }
+ else
+ #endif
+*** ../vim-7.2.279/src/version.c 2009-11-03 16:44:04.000000000 +0100
+--- src/version.c 2009-11-03 17:15:35.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 280,
+ /**/
+
+--
+Every exit is an entrance into something else.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.281 b/source/ap/vim/patches/7.2.281
new file mode 100644
index 000000000..f73d7a543
--- /dev/null
+++ b/source/ap/vim/patches/7.2.281
@@ -0,0 +1,81 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.281
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.281
+Problem: 'cursorcolumn' highlighting is wrong in diff mode.
+Solution: Adjust the column computation. (Lech Lorens)
+Files: src/screen.c
+
+
+*** ../vim-7.2.280/src/screen.c 2009-11-03 17:20:18.000000000 +0100
+--- src/screen.c 2009-11-03 17:13:16.000000000 +0100
+***************
+*** 3008,3018 ****
+ mb_ptr_adv(ptr);
+ }
+
+! #ifdef FEAT_VIRTUALEDIT
+! /* When 'virtualedit' is set the end of the line may be before the
+! * start of the displayed part. */
+! if (vcol < v && *ptr == NUL && virtual_active())
+ vcol = v;
+ #endif
+
+ /* Handle a character that's not completely on the screen: Put ptr at
+--- 3008,3040 ----
+ mb_ptr_adv(ptr);
+ }
+
+! #if defined(FEAT_SYN_HL) || defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
+! /* When:
+! * - 'cuc' is set, or
+! * - 'virtualedit' is set, or
+! * - the visual mode is active,
+! * the end of the line may be before the start of the displayed part.
+! */
+! if (vcol < v && (
+! # ifdef FEAT_SYN_HL
+! wp->w_p_cuc
+! # if defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
+! ||
+! # endif
+! # endif
+! # ifdef FEAT_VIRTUALEDIT
+! virtual_active()
+! # ifdef FEAT_VISUAL
+! ||
+! # endif
+! # endif
+! # ifdef FEAT_VISUAL
+! (VIsual_active && wp->w_buffer == curwin->w_buffer)
+! # endif
+! ))
+! {
+ vcol = v;
++ }
+ #endif
+
+ /* Handle a character that's not completely on the screen: Put ptr at
+*** ../vim-7.2.280/src/version.c 2009-11-03 17:20:18.000000000 +0100
+--- src/version.c 2009-11-03 17:34:54.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 281,
+ /**/
+
+--
+Every person is responsible for the choices he makes.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.282 b/source/ap/vim/patches/7.2.282
new file mode 100644
index 000000000..dd4dc6476
--- /dev/null
+++ b/source/ap/vim/patches/7.2.282
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.282
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.282
+Problem: A fold can't be closed.
+Solution: Initialize fd_small to MAYBE. (Lech Lorens)
+Files: src/fold.c
+
+
+*** ../vim-7.2.281/src/fold.c 2009-11-03 16:29:48.000000000 +0100
+--- src/fold.c 2009-11-03 17:41:50.000000000 +0100
+***************
+*** 2851,2856 ****
+--- 2851,2858 ----
+ fp[1].fd_top = bot + 1;
+ fp[1].fd_len = fp->fd_len - (fp[1].fd_top - fp->fd_top);
+ fp[1].fd_flags = fp->fd_flags;
++ fp[1].fd_small = MAYBE;
++ fp->fd_small = MAYBE;
+
+ /* Move nested folds below bot to new fold. There can't be
+ * any between top and bot, they have been removed by the caller. */
+*** ../vim-7.2.281/src/version.c 2009-11-03 17:36:09.000000000 +0100
+--- src/version.c 2009-11-03 17:59:12.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 282,
+ /**/
+
+--
+You can be stopped by the police for biking over 65 miles per hour.
+You are not allowed to walk across a street on your hands.
+ [real standing laws in Connecticut, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.283 b/source/ap/vim/patches/7.2.283
new file mode 100644
index 000000000..0d6f6058e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.283
@@ -0,0 +1,73 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.283
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.283
+Problem: Changing font while the window is maximized doesn't keep the
+ window maximized.
+Solution: Recompute number of lines and columns after changing font. (James
+ Vega)
+Files: src/gui_gtk_x11.c
+
+
+*** ../vim-7.2.282/src/gui_gtk_x11.c 2009-09-23 18:14:13.000000000 +0200
+--- src/gui_gtk_x11.c 2009-11-03 17:56:27.000000000 +0100
+***************
+*** 5267,5274 ****
+ # endif
+ #endif /* !HAVE_GTK2 */
+
+! /* Preserve the logical dimensions of the screen. */
+! update_window_manager_hints(0, 0);
+
+ return OK;
+ }
+--- 5267,5290 ----
+ # endif
+ #endif /* !HAVE_GTK2 */
+
+! #ifdef HAVE_GTK2
+! if (gui_mch_maximized())
+! {
+! int w, h;
+!
+! /* Update lines and columns in accordance with the new font, keep the
+! * window maximized. */
+! gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h);
+! w -= get_menu_tool_width();
+! h -= get_menu_tool_height();
+! gui_resize_shell(w, h);
+! }
+! else
+! #endif
+! {
+! /* Preserve the logical dimensions of the screen. */
+! update_window_manager_hints(0, 0);
+! }
+
+ return OK;
+ }
+*** ../vim-7.2.282/src/version.c 2009-11-03 18:04:26.000000000 +0100
+--- src/version.c 2009-11-03 18:11:53.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 283,
+ /**/
+
+--
+If an elephant is left tied to a parking meter, the parking fee has to be paid
+just as it would for a vehicle.
+ [real standing law in Florida, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.284 b/source/ap/vim/patches/7.2.284
new file mode 100644
index 000000000..5b4336b1b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.284
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.284
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.284
+Problem: When editing the same buffer in two windows, one with folding,
+ display may be wrong after changes.
+Solution: Call set_topline() to take care of side effects. (Lech Lorens)
+Files: src/misc1.c
+
+
+*** ../vim-7.2.283/src/misc1.c 2009-07-22 11:03:38.000000000 +0200
+--- src/misc1.c 2009-11-03 18:38:15.000000000 +0100
+***************
+*** 2886,2891 ****
+--- 2886,2898 ----
+ }
+ #endif
+ }
++
++ #ifdef FEAT_FOLDING
++ /* Take care of side effects for setting w_topline when folds have
++ * changed. Esp. when the buffer was changed in another window. */
++ if (hasAnyFolding(wp))
++ set_topline(wp, wp->w_topline);
++ #endif
+ }
+ }
+
+*** ../vim-7.2.283/src/version.c 2009-11-03 18:13:36.000000000 +0100
+--- src/version.c 2009-11-03 18:44:12.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 284,
+ /**/
+
+--
+Men may not be seen publicly in any kind of strapless gown.
+ [real standing law in Florida, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.285 b/source/ap/vim/patches/7.2.285
new file mode 100644
index 000000000..2a34e17ee
--- /dev/null
+++ b/source/ap/vim/patches/7.2.285
@@ -0,0 +1,56 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.285
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.285 (after 7.2.169)
+Problem: CTRL-U in Insert mode also deletes indent. (Andrey Voropaev)
+Solution: Fix mistake made in patch 7.2.169.
+Files: src/edit.c
+
+
+*** ../vim-7.2.284/src/edit.c 2009-07-09 18:15:19.000000000 +0200
+--- src/edit.c 2009-11-05 20:25:15.000000000 +0100
+***************
+*** 8519,8525 ****
+ {
+ save_col = curwin->w_cursor.col;
+ beginline(BL_WHITE);
+! if (curwin->w_cursor.col < (colnr_T)temp)
+ mincol = curwin->w_cursor.col;
+ curwin->w_cursor.col = save_col;
+ }
+--- 8519,8525 ----
+ {
+ save_col = curwin->w_cursor.col;
+ beginline(BL_WHITE);
+! if (curwin->w_cursor.col < save_col)
+ mincol = curwin->w_cursor.col;
+ curwin->w_cursor.col = save_col;
+ }
+*** ../vim-7.2.284/src/version.c 2009-11-03 18:46:53.000000000 +0100
+--- src/version.c 2009-11-11 13:21:25.000000000 +0100
+***************
+*** 678,679 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 285,
+ /**/
+
+--
+(letter from Mark to Mike, about the film's probable certificate)
+ I would like to get back to the Censor and agree to lose the shits, take
+ the odd Jesus Christ out and lose Oh fuck off, but to retain 'fart in
+ your general direction', 'castanets of your testicles' and 'oral sex'
+ and ask him for an 'A' rating on that basis.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.286 b/source/ap/vim/patches/7.2.286
new file mode 100644
index 000000000..7577502f0
--- /dev/null
+++ b/source/ap/vim/patches/7.2.286
@@ -0,0 +1,227 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.286
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.286 (after 7.2.269)
+Problem: The "--startuptime=<file>" argument is not consistent with other
+ arguments.
+Solution: Use "--startuptime <file>". Added the +startuptime feature.
+Files: runtime/doc/eval.txt, runtime/doc/starting.txt,
+ runtime/doc/various.txt, src/eval.c, src/main.c, src/version.c
+
+
+*** ../vim-7.2.285/runtime/doc/eval.txt 2009-04-22 12:53:31.000000000 +0200
+--- runtime/doc/eval.txt 2009-11-11 13:01:58.000000000 +0100
+***************
+*** 5869,5874 ****
+--- 5881,5887 ----
+ signs Compiled with |:sign| support.
+ smartindent Compiled with 'smartindent' support.
+ sniff Compiled with SNiFF interface support.
++ startuptime Compiled with |--startuptime| support.
+ statusline Compiled with support for 'statusline', 'rulerformat'
+ and special formats of 'titlestring' and 'iconstring'.
+ sun_workshop Compiled with support for Sun |workshop|.
+*** ../vim-7.2.285/runtime/doc/starting.txt 2009-11-03 12:10:39.000000000 +0100
+--- runtime/doc/starting.txt 2009-11-11 13:20:56.000000000 +0100
+***************
+*** 144,155 ****
+ -u NORC no yes
+ --noplugin yes no
+
+! --startuptime={fname} *--startuptime*
+ During startup write timing messages to the file {fname}.
+ This can be used to find out where time is spent while loading
+! your .vimrc and plugins.
+ When {fname} already exists new messages are appended.
+! {only when compiled with this feature}
+
+ *--literal*
+ --literal Take file names literally, don't expand wildcards. Not needed
+--- 144,156 ----
+ -u NORC no yes
+ --noplugin yes no
+
+! --startuptime {fname} *--startuptime*
+ During startup write timing messages to the file {fname}.
+ This can be used to find out where time is spent while loading
+! your .vimrc, plugins and opening the first file.
+ When {fname} already exists new messages are appended.
+! (Only available when compiled with the |+startuptime|
+! feature).
+
+ *--literal*
+ --literal Take file names literally, don't expand wildcards. Not needed
+*** ../vim-7.2.285/runtime/doc/various.txt 2009-07-09 15:55:34.000000000 +0200
+--- runtime/doc/various.txt 2009-11-11 13:03:52.000000000 +0100
+***************
+*** 374,379 ****
+--- 374,380 ----
+ B *+signs* |:sign|
+ N *+smartindent* |'smartindent'|
+ m *+sniff* SniFF interface |sniff|
++ N *+startuptime* |--startuptime| argument
+ N *+statusline* Options 'statusline', 'rulerformat' and special
+ formats of 'titlestring' and 'iconstring'
+ m *+sun_workshop* |workshop|
+*** ../vim-7.2.285/src/eval.c 2009-11-03 14:26:29.000000000 +0100
+--- src/eval.c 2009-11-11 12:59:53.000000000 +0100
+***************
+*** 11736,11741 ****
+--- 11736,11744 ----
+ #ifdef FEAT_SNIFF
+ "sniff",
+ #endif
++ #ifdef STARTUPTIME
++ "startuptime",
++ #endif
+ #ifdef FEAT_STL_OPT
+ "statusline",
+ #endif
+*** ../vim-7.2.285/src/main.c 2009-11-03 12:10:39.000000000 +0100
+--- src/main.c 2009-11-08 12:57:46.000000000 +0100
+***************
+*** 204,212 ****
+ #ifdef STARTUPTIME
+ for (i = 1; i < argc; ++i)
+ {
+! if (STRNICMP(argv[i], "--startuptime=", 14) == 0)
+ {
+! time_fd = mch_fopen(argv[i] + 14, "a");
+ TIME_MSG("--- VIM STARTING ---");
+ break;
+ }
+--- 204,212 ----
+ #ifdef STARTUPTIME
+ for (i = 1; i < argc; ++i)
+ {
+! if (STRICMP(argv[i], "--startuptime") == 0 && i + 1 < argc)
+ {
+! time_fd = mch_fopen(argv[i + 1], "a");
+ TIME_MSG("--- VIM STARTING ---");
+ break;
+ }
+***************
+*** 1726,1731 ****
+--- 1726,1736 ----
+ want_argument = TRUE;
+ argv_idx += 3;
+ }
++ else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
++ {
++ want_argument = TRUE;
++ argv_idx += 11;
++ }
+ #ifdef FEAT_CLIENTSERVER
+ else if (STRNICMP(argv[0] + argv_idx, "serverlist", 10) == 0)
+ ; /* already processed -- no arg */
+***************
+*** 1761,1770 ****
+ /* already processed, skip */
+ }
+ #endif
+- else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
+- {
+- /* already processed, skip */
+- }
+ else
+ {
+ if (argv[0][argv_idx])
+--- 1766,1771 ----
+***************
+*** 2061,2067 ****
+ mainerr(ME_GARBAGE, (char_u *)argv[0]);
+
+ --argc;
+! if (argc < 1 && c != 'S')
+ mainerr_arg_missing((char_u *)argv[0]);
+ ++argv;
+ argv_idx = -1;
+--- 2062,2068 ----
+ mainerr(ME_GARBAGE, (char_u *)argv[0]);
+
+ --argc;
+! if (argc < 1 && c != 'S') /* -S has an optional argument */
+ mainerr_arg_missing((char_u *)argv[0]);
+ ++argv;
+ argv_idx = -1;
+***************
+*** 2102,2112 ****
+ (char_u *)argv[0];
+ break;
+
+! case '-': /* "--cmd {command}" execute command */
+! if (parmp->n_pre_commands >= MAX_ARG_CMDS)
+! mainerr(ME_EXTRA_CMD, NULL);
+! parmp->pre_commands[parmp->n_pre_commands++] =
+ (char_u *)argv[0];
+ break;
+
+ /* case 'd': -d {device} is handled in mch_check_win() for the
+--- 2103,2118 ----
+ (char_u *)argv[0];
+ break;
+
+! case '-':
+! if (argv[-1][2] == 'c')
+! {
+! /* "--cmd {command}" execute command */
+! if (parmp->n_pre_commands >= MAX_ARG_CMDS)
+! mainerr(ME_EXTRA_CMD, NULL);
+! parmp->pre_commands[parmp->n_pre_commands++] =
+ (char_u *)argv[0];
++ }
++ /* "--startuptime <file>" already handled */
+ break;
+
+ /* case 'd': -d {device} is handled in mch_check_win() for the
+***************
+*** 3144,3149 ****
+--- 3150,3158 ----
+ main_msg(_("--serverlist\t\tList available Vim server names and exit"));
+ main_msg(_("--servername <name>\tSend to/become the Vim server <name>"));
+ #endif
++ #ifdef STARTUPTIME
++ main_msg(_("--startuptime=<file>\tWrite startup timing messages to <file>"));
++ #endif
+ #ifdef FEAT_VIMINFO
+ main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
+ #endif
+*** ../vim-7.2.285/src/version.c 2009-11-11 13:22:09.000000000 +0100
+--- src/version.c 2009-11-11 14:17:28.000000000 +0100
+***************
+*** 494,499 ****
+--- 494,504 ----
+ #else
+ "-sniff",
+ #endif
++ #ifdef STARTUPTIME
++ "+startuptime",
++ #else
++ "-startuptime",
++ #endif
+ #ifdef FEAT_STL_OPT
+ "+statusline",
+ #else
+*** ../vim-7.2.285/src/version.c 2009-11-11 13:22:09.000000000 +0100
+--- src/version.c 2009-11-11 14:17:28.000000000 +0100
+***************
+*** 678,679 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 286,
+ /**/
+
+--
+A fool must search for a greater fool to find admiration.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.287 b/source/ap/vim/patches/7.2.287
new file mode 100644
index 000000000..0f8e170c1
--- /dev/null
+++ b/source/ap/vim/patches/7.2.287
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.287
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.287
+Problem: Warning from gcc 3.4 about uninitialized variable.
+Solution: Move assignment outside of #ifdef.
+Files: src/if_perl.xs
+
+
+*** ../vim-7.2.286/src/if_perl.xs 2009-07-14 16:05:14.000000000 +0200
+--- src/if_perl.xs 2009-11-11 12:29:32.000000000 +0100
+***************
+*** 720,727 ****
+ #ifdef HAVE_SANDBOX
+ if (sandbox)
+ {
+ # ifndef MAKE_TEST /* avoid a warning for unreachable code */
+! if ((safe = perl_get_sv( "VIM::safe", FALSE )) == NULL || !SvTRUE(safe))
+ EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
+ else
+ # endif
+--- 720,728 ----
+ #ifdef HAVE_SANDBOX
+ if (sandbox)
+ {
++ safe = perl_get_sv( "VIM::safe", FALSE );
+ # ifndef MAKE_TEST /* avoid a warning for unreachable code */
+! if (safe == NULL || !SvTRUE(safe))
+ EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
+ else
+ # endif
+*** ../vim-7.2.286/src/version.c 2009-11-11 14:21:48.000000000 +0100
+--- src/version.c 2009-11-11 14:44:49.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 287,
+ /**/
+
+--
+The most powerful force in the universe is gossip.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.288 b/source/ap/vim/patches/7.2.288
new file mode 100644
index 000000000..ab9ecdaf3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.288
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.288
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.288
+Problem: Python 2.6 pyconfig.h redefines macros.
+Solution: Undefine the macros before including pyconfig.h.
+Files: src/if_python.c
+
+
+*** ../vim-7.2.287/src/if_python.c 2009-11-03 11:43:05.000000000 +0100
+--- src/if_python.c 2009-11-11 12:33:37.000000000 +0100
+***************
+*** 37,42 ****
+--- 37,48 ----
+ #ifdef HAVE_STDARG_H
+ # undef HAVE_STDARG_H /* Python's config.h defines it as well. */
+ #endif
++ #ifdef _POSIX_C_SOURCE
++ # undef _POSIX_C_SOURCE /* pyconfig.h defines it as well. */
++ #endif
++ #ifdef _XOPEN_SOURCE
++ # undef _XOPEN_SOURCE /* pyconfig.h defines it as well. */
++ #endif
+
+ #define PY_SSIZE_T_CLEAN
+
+*** ../vim-7.2.287/src/version.c 2009-11-11 14:45:36.000000000 +0100
+--- src/version.c 2009-11-11 15:05:51.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 288,
+ /**/
+
+--
+I am always surprised in the Linux world how quickly solutions can be
+obtained. (Imagine sending an email to Bill Gates, asking why Windows
+crashed, and how to fix it... and then getting an answer that fixed the
+problem... <0>_<0> !) -- Mark Langdon
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.289 b/source/ap/vim/patches/7.2.289
new file mode 100644
index 000000000..4009bb9bd
--- /dev/null
+++ b/source/ap/vim/patches/7.2.289
@@ -0,0 +1,120 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.289
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.289
+Problem: Checking wrong struct member.
+Solution: Change tb_buf to tb_noremap. (Dominique Pelle)
+Files: src/getchar.c
+
+
+*** ../vim-7.2.288/src/getchar.c 2009-09-30 15:15:33.000000000 +0200
+--- src/getchar.c 2009-11-11 12:50:58.000000000 +0100
+***************
+*** 22,28 ****
+ * These buffers are used for storing:
+ * - stuffed characters: A command that is translated into another command.
+ * - redo characters: will redo the last change.
+! * - recorded chracters: for the "q" command.
+ *
+ * The bytes are stored like in the typeahead buffer:
+ * - K_SPECIAL introduces a special key (two more bytes follow). A literal
+--- 22,28 ----
+ * These buffers are used for storing:
+ * - stuffed characters: A command that is translated into another command.
+ * - redo characters: will redo the last change.
+! * - recorded characters: for the "q" command.
+ *
+ * The bytes are stored like in the typeahead buffer:
+ * - K_SPECIAL introduces a special key (two more bytes follow). A literal
+***************
+*** 1283,1289 ****
+ EMSG2(_(e_intern2), "Free typebuf 1");
+ else
+ vim_free(typebuf.tb_buf);
+! if (typebuf.tb_buf == noremapbuf_init)
+ EMSG2(_(e_intern2), "Free typebuf 2");
+ else
+ vim_free(typebuf.tb_noremap);
+--- 1283,1289 ----
+ EMSG2(_(e_intern2), "Free typebuf 1");
+ else
+ vim_free(typebuf.tb_buf);
+! if (typebuf.tb_noremap == noremapbuf_init)
+ EMSG2(_(e_intern2), "Free typebuf 2");
+ else
+ vim_free(typebuf.tb_noremap);
+***************
+*** 1516,1522 ****
+ * wanted.
+ * This translates escaped K_SPECIAL and CSI bytes to a K_SPECIAL or CSI byte.
+ * Collects the bytes of a multibyte character into the whole character.
+! * Returns the modifers in the global "mod_mask".
+ */
+ int
+ vgetc()
+--- 1516,1522 ----
+ * wanted.
+ * This translates escaped K_SPECIAL and CSI bytes to a K_SPECIAL or CSI byte.
+ * Collects the bytes of a multibyte character into the whole character.
+! * Returns the modifiers in the global "mod_mask".
+ */
+ int
+ vgetc()
+***************
+*** 3320,3326 ****
+ retval = 1;
+ goto theend;
+ }
+! /* An abbrevation cannot contain white space. */
+ for (n = 0; n < len; ++n)
+ if (vim_iswhite(keys[n]))
+ {
+--- 3320,3326 ----
+ retval = 1;
+ goto theend;
+ }
+! /* An abbreviation cannot contain white space. */
+ for (n = 0; n < len; ++n)
+ if (vim_iswhite(keys[n]))
+ {
+***************
+*** 4272,4278 ****
+
+ /*
+ * Check for word before the cursor: If it ends in a keyword char all
+! * chars before it must be al keyword chars or non-keyword chars, but not
+ * white space. If it ends in a non-keyword char we accept any characters
+ * before it except white space.
+ */
+--- 4272,4278 ----
+
+ /*
+ * Check for word before the cursor: If it ends in a keyword char all
+! * chars before it must be keyword chars or non-keyword chars, but not
+ * white space. If it ends in a non-keyword char we accept any characters
+ * before it except white space.
+ */
+*** ../vim-7.2.288/src/version.c 2009-11-11 15:06:59.000000000 +0100
+--- src/version.c 2009-11-11 16:19:12.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 289,
+ /**/
+
+--
+A M00se once bit my sister ...
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.290 b/source/ap/vim/patches/7.2.290
new file mode 100644
index 000000000..ba4fd62dc
--- /dev/null
+++ b/source/ap/vim/patches/7.2.290
@@ -0,0 +1,157 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.290
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.290
+Problem: Not freeing memory from ":lmap", ":xmap" and ":menutranslate".
+Solution: Free the memory when exiting. (Dominique Pelle)
+Files: src/misc2.c
+
+
+*** ../vim-7.2.289/src/misc2.c 2009-11-03 16:44:04.000000000 +0100
+--- src/misc2.c 2009-11-11 16:49:13.000000000 +0100
+***************
+*** 1005,1013 ****
+--- 1005,1018 ----
+ # ifdef FEAT_MENU
+ /* Clear menus. */
+ do_cmdline_cmd((char_u *)"aunmenu *");
++ # ifdef FEAT_MULTI_LANG
++ do_cmdline_cmd((char_u *)"menutranslate clear");
++ # endif
+ # endif
+
+ /* Clear mappings, abbreviations, breakpoints. */
++ do_cmdline_cmd((char_u *)"lmapclear");
++ do_cmdline_cmd((char_u *)"xmapclear");
+ do_cmdline_cmd((char_u *)"mapclear");
+ do_cmdline_cmd((char_u *)"mapclear!");
+ do_cmdline_cmd((char_u *)"abclear");
+***************
+*** 1282,1288 ****
+
+ /*
+ * Escape "string" for use as a shell argument with system().
+! * This uses single quotes, except when we know we need to use double qoutes
+ * (MS-DOS and MS-Windows without 'shellslash' set).
+ * Escape a newline, depending on the 'shell' option.
+ * When "do_special" is TRUE also replace "!", "%", "#" and things starting
+--- 1287,1293 ----
+
+ /*
+ * Escape "string" for use as a shell argument with system().
+! * This uses single quotes, except when we know we need to use double quotes
+ * (MS-DOS and MS-Windows without 'shellslash' set).
+ * Escape a newline, depending on the 'shell' option.
+ * When "do_special" is TRUE also replace "!", "%", "#" and things starting
+***************
+*** 1537,1543 ****
+ #if defined(FEAT_VISUALEXTRA) || defined(PROTO)
+ /*
+ * Copy a character a number of times.
+! * Does not work for multi-byte charactes!
+ */
+ void
+ copy_chars(ptr, count, c)
+--- 1542,1548 ----
+ #if defined(FEAT_VISUALEXTRA) || defined(PROTO)
+ /*
+ * Copy a character a number of times.
+! * Does not work for multi-byte characters!
+ */
+ void
+ copy_chars(ptr, count, c)
+***************
+*** 4260,4266 ****
+ * or '**76' is transposed to '**N'( 'N' is ASCII value 76).
+ * For EBCDIC you get different character values.
+ * If no restrict is given after '**' the default is used.
+! * Due to this technic the path looks awful if you print it as a
+ * string.
+ */
+ len = 0;
+--- 4265,4271 ----
+ * or '**76' is transposed to '**N'( 'N' is ASCII value 76).
+ * For EBCDIC you get different character values.
+ * If no restrict is given after '**' the default is used.
+! * Due to this technique the path looks awful if you print it as a
+ * string.
+ */
+ len = 0;
+***************
+*** 4649,4655 ****
+ && !mch_isdir(stackp->ffs_filearray[i]))
+ continue; /* not a directory */
+
+! /* prepare the filename to be checked for existance
+ * below */
+ STRCPY(file_path, stackp->ffs_filearray[i]);
+ add_pathsep(file_path);
+--- 4654,4660 ----
+ && !mch_isdir(stackp->ffs_filearray[i]))
+ continue; /* not a directory */
+
+! /* prepare the filename to be checked for existence
+ * below */
+ STRCPY(file_path, stackp->ffs_filearray[i]);
+ add_pathsep(file_path);
+***************
+*** 5438,5444 ****
+ #if defined(MSWIN) || defined(MSDOS) || defined(OS2)
+ /* handle "\tmp" as absolute path */
+ || vim_ispathsep(ff_file_to_find[0])
+! /* handle "c:name" as absulute path */
+ || (ff_file_to_find[0] != NUL && ff_file_to_find[1] == ':')
+ #endif
+ #ifdef AMIGA
+--- 5443,5449 ----
+ #if defined(MSWIN) || defined(MSDOS) || defined(OS2)
+ /* handle "\tmp" as absolute path */
+ || vim_ispathsep(ff_file_to_find[0])
+! /* handle "c:name" as absolute path */
+ || (ff_file_to_find[0] != NUL && ff_file_to_find[1] == ':')
+ #endif
+ #ifdef AMIGA
+***************
+*** 5681,5687 ****
+ p2 = (char_u *)base + (j + gap) * elm_size;
+ if ((*cmp)((void *)p1, (void *)p2) <= 0)
+ break;
+! /* Exchange the elemets. */
+ mch_memmove(buf, p1, elm_size);
+ mch_memmove(p1, p2, elm_size);
+ mch_memmove(p2, buf, elm_size);
+--- 5686,5692 ----
+ p2 = (char_u *)base + (j + gap) * elm_size;
+ if ((*cmp)((void *)p1, (void *)p2) <= 0)
+ break;
+! /* Exchange the elements. */
+ mch_memmove(buf, p1, elm_size);
+ mch_memmove(p1, p2, elm_size);
+ mch_memmove(p2, buf, elm_size);
+*** ../vim-7.2.289/src/version.c 2009-11-11 16:23:37.000000000 +0100
+--- src/version.c 2009-11-11 16:54:53.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 290,
+ /**/
+
+--
+ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of Camelot.
+ King of all Britons, defeator of the Saxons, sovereign of all England!
+ [Pause]
+SOLDIER: Get away!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.291 b/source/ap/vim/patches/7.2.291
new file mode 100644
index 000000000..bab6e3bf8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.291
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.291
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.291
+Problem: Reading uninitialised memory in arabic mode.
+Solution: Use utfc_ptr2char_len() rather than utfc_ptr2char(). (Dominique
+ Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.290/src/screen.c 2009-11-03 17:36:09.000000000 +0100
+--- src/screen.c 2009-11-11 17:04:53.000000000 +0100
+***************
+*** 6413,6419 ****
+ }
+ else
+ {
+! nc = utfc_ptr2char(ptr + mbyte_blen, pcc);
+ nc1 = pcc[0];
+ }
+ pc = prev_c;
+--- 6413,6420 ----
+ }
+ else
+ {
+! nc = utfc_ptr2char_len(ptr + mbyte_blen, pcc,
+! (int)((text + len) - ptr - mbyte_blen));
+ nc1 = pcc[0];
+ }
+ pc = prev_c;
+*** ../vim-7.2.290/src/version.c 2009-11-11 16:56:13.000000000 +0100
+--- src/version.c 2009-11-11 17:06:48.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 291,
+ /**/
+
+--
+The problem with political jokes is that they get elected.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.292 b/source/ap/vim/patches/7.2.292
new file mode 100644
index 000000000..c57619042
--- /dev/null
+++ b/source/ap/vim/patches/7.2.292
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.292
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.292
+Problem: Block right-shift doesn't work properly with multi-byte encoding
+ and 'list' set.
+Solution: Add the missing "else". (Lech Lorens)
+Files: src/ops.c
+
+
+*** ../vim-7.2.291/src/ops.c 2009-11-03 16:44:04.000000000 +0100
+--- src/ops.c 2009-11-11 17:15:04.000000000 +0100
+***************
+*** 422,429 ****
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ bd.textstart += (*mb_ptr2len)(bd.textstart);
+ #endif
+! ++bd.textstart;
+ }
+ for ( ; vim_iswhite(*bd.textstart); )
+ {
+--- 422,430 ----
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ bd.textstart += (*mb_ptr2len)(bd.textstart);
++ else
+ #endif
+! ++bd.textstart;
+ }
+ for ( ; vim_iswhite(*bd.textstart); )
+ {
+*** ../vim-7.2.291/src/version.c 2009-11-11 17:07:25.000000000 +0100
+--- src/version.c 2009-11-11 17:21:31.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 292,
+ /**/
+
+--
+Computers make very fast, very accurate, mistakes.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.293 b/source/ap/vim/patches/7.2.293
new file mode 100644
index 000000000..0f41435ad
--- /dev/null
+++ b/source/ap/vim/patches/7.2.293
@@ -0,0 +1,66 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.293
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.293
+Problem: When setting 'comments' option it may be used in a wrong way.
+Solution: Don't increment after skipping over digets. (Yukihiro Nakadaira)
+Files: src/misc1.c
+
+
+*** ../vim-7.2.292/src/misc1.c 2009-11-03 18:46:53.000000000 +0100
+--- src/misc1.c 2009-11-11 17:27:38.000000000 +0100
+***************
+*** 1026,1037 ****
+ int c = 0;
+ int off = 0;
+
+! for (p = lead_flags; *p && *p != ':'; ++p)
+ {
+ if (*p == COM_RIGHT || *p == COM_LEFT)
+! c = *p;
+ else if (VIM_ISDIGIT(*p) || *p == '-')
+ off = getdigits(&p);
+ }
+ if (c == COM_RIGHT) /* right adjusted leader */
+ {
+--- 1026,1039 ----
+ int c = 0;
+ int off = 0;
+
+! for (p = lead_flags; *p != NUL && *p != ':'; )
+ {
+ if (*p == COM_RIGHT || *p == COM_LEFT)
+! c = *p++;
+ else if (VIM_ISDIGIT(*p) || *p == '-')
+ off = getdigits(&p);
++ else
++ ++p;
+ }
+ if (c == COM_RIGHT) /* right adjusted leader */
+ {
+*** ../vim-7.2.292/src/version.c 2009-11-11 17:22:30.000000000 +0100
+--- src/version.c 2009-11-11 17:29:24.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 293,
+ /**/
+
+--
+SOLDIER: What? Ridden on a horse?
+ARTHUR: Yes!
+SOLDIER: You're using coconuts!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.294 b/source/ap/vim/patches/7.2.294
new file mode 100644
index 000000000..fef1e6bfe
--- /dev/null
+++ b/source/ap/vim/patches/7.2.294
@@ -0,0 +1,285 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.294
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.294
+Problem: When using TEMPDIRS dir name could get too long.
+Solution: Overwrite tail instead of appending each time. Use mkdtemp() when
+ available. (James Vega)
+Files: src/auto/configure, src/config.h.in, src/configure.in, src/fileio.c
+
+
+*** ../vim-7.2.293/src/auto/configure 2009-09-11 13:44:33.000000000 +0200
+--- src/auto/configure 2009-11-17 12:03:15.000000000 +0100
+***************
+*** 14019,14027 ****
+
+
+
+ for ac_func in bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+! memset nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
+--- 14019,14028 ----
+
+
+
++
+ for ac_func in bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+! memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
+*** ../vim-7.2.293/src/config.h.in 2009-05-21 23:25:38.000000000 +0200
+--- src/config.h.in 2009-11-11 17:40:21.000000000 +0100
+***************
+*** 157,162 ****
+--- 157,163 ----
+ #undef HAVE_LSTAT
+ #undef HAVE_MEMCMP
+ #undef HAVE_MEMSET
++ #undef HAVE_MKDTEMP
+ #undef HAVE_NANOSLEEP
+ #undef HAVE_OPENDIR
+ #undef HAVE_FLOAT_FUNCS
+*** ../vim-7.2.293/src/configure.in 2009-09-11 13:44:33.000000000 +0200
+--- src/configure.in 2009-11-11 17:40:21.000000000 +0100
+***************
+*** 2635,2641 ****
+ dnl Check for functions in one big call, to reduce the size of configure
+ AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+! memset nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
+--- 2635,2641 ----
+ dnl Check for functions in one big call, to reduce the size of configure
+ AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+! memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
+*** ../vim-7.2.293/src/fileio.c 2009-09-11 17:24:01.000000000 +0200
+--- src/fileio.c 2009-11-11 18:01:22.000000000 +0100
+***************
+*** 146,151 ****
+--- 146,152 ----
+ # endif
+ #endif
+ static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
++ static void vim_settempdir __ARGS((char_u *tempdir));
+ #ifdef FEAT_AUTOCMD
+ static char *e_auchangedbuf = N_("E812: Autocommands changed buffer or buffer name");
+ #endif
+***************
+*** 6987,6992 ****
+--- 6988,7020 ----
+ #endif
+
+ /*
++ * Directory "tempdir" was created. Expand this name to a full path and put
++ * it in "vim_tempdir". This avoids that using ":cd" would confuse us.
++ * "tempdir" must be no longer than MAXPATHL.
++ */
++ static void
++ vim_settempdir(tempdir)
++ char_u *tempdir;
++ {
++ char_u *buf;
++
++ buf = alloc((unsigned)MAXPATHL + 2);
++ if (buf != NULL)
++ {
++ if (vim_FullName(tempdir, buf, MAXPATHL, FALSE) == FAIL)
++ STRCPY(buf, tempdir);
++ # ifdef __EMX__
++ if (vim_strchr(buf, '/') != NULL)
++ STRCAT(buf, "/");
++ else
++ # endif
++ add_pathsep(buf);
++ vim_tempdir = vim_strsave(buf);
++ vim_free(buf);
++ }
++ }
++
++ /*
+ * vim_tempname(): Return a unique name that can be used for a temp file.
+ *
+ * The temp file is NOT created.
+***************
+*** 7007,7014 ****
+ #ifdef TEMPDIRNAMES
+ static char *(tempdirs[]) = {TEMPDIRNAMES};
+ int i;
+- long nr;
+- long off;
+ # ifndef EEXIST
+ struct stat st;
+ # endif
+--- 7035,7040 ----
+***************
+*** 7027,7032 ****
+--- 7053,7064 ----
+ */
+ for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
+ {
++ size_t itmplen;
++ # ifndef HAVE_MKDTEMP
++ long nr;
++ long off;
++ # endif
++
+ /* expand $TMP, leave room for "/v1100000/999999999" */
+ expand_env((char_u *)tempdirs[i], itmp, TEMPNAMELEN - 20);
+ if (mch_isdir(itmp)) /* directory exists */
+***************
+*** 7040,7046 ****
+--- 7072,7085 ----
+ else
+ # endif
+ add_pathsep(itmp);
++ itmplen = STRLEN(itmp);
+
++ # ifdef HAVE_MKDTEMP
++ /* Leave room for filename */
++ STRCAT(itmp, "vXXXXXX");
++ if (mkdtemp((char *)itmp) != NULL)
++ vim_settempdir(itmp);
++ # else
+ /* Get an arbitrary number of up to 6 digits. When it's
+ * unlikely that it already exists it will be faster,
+ * otherwise it doesn't matter. The use of mkdir() avoids any
+***************
+*** 7052,7110 ****
+ for (off = 0; off < 10000L; ++off)
+ {
+ int r;
+! #if defined(UNIX) || defined(VMS)
+ mode_t umask_save;
+! #endif
+
+! sprintf((char *)itmp + STRLEN(itmp), "v%ld", nr + off);
+! # ifndef EEXIST
+ /* If mkdir() does not set errno to EEXIST, check for
+ * existing file here. There is a race condition then,
+ * although it's fail-safe. */
+ if (mch_stat((char *)itmp, &st) >= 0)
+ continue;
+! # endif
+! #if defined(UNIX) || defined(VMS)
+ /* Make sure the umask doesn't remove the executable bit.
+ * "repl" has been reported to use "177". */
+ umask_save = umask(077);
+! #endif
+ r = vim_mkdir(itmp, 0700);
+! #if defined(UNIX) || defined(VMS)
+ (void)umask(umask_save);
+! #endif
+ if (r == 0)
+ {
+! char_u *buf;
+!
+! /* Directory was created, use this name.
+! * Expand to full path; When using the current
+! * directory a ":cd" would confuse us. */
+! buf = alloc((unsigned)MAXPATHL + 1);
+! if (buf != NULL)
+! {
+! if (vim_FullName(itmp, buf, MAXPATHL, FALSE)
+! == FAIL)
+! STRCPY(buf, itmp);
+! # ifdef __EMX__
+! if (vim_strchr(buf, '/') != NULL)
+! STRCAT(buf, "/");
+! else
+! # endif
+! add_pathsep(buf);
+! vim_tempdir = vim_strsave(buf);
+! vim_free(buf);
+! }
+ break;
+ }
+! # ifdef EEXIST
+ /* If the mkdir() didn't fail because the file/dir exists,
+ * we probably can't create any dir here, try another
+ * place. */
+ if (errno != EEXIST)
+! # endif
+ break;
+ }
+ if (vim_tempdir != NULL)
+ break;
+ }
+--- 7091,7131 ----
+ for (off = 0; off < 10000L; ++off)
+ {
+ int r;
+! # if defined(UNIX) || defined(VMS)
+ mode_t umask_save;
+! # endif
+
+! sprintf((char *)itmp + itmplen, "v%ld", nr + off);
+! # ifndef EEXIST
+ /* If mkdir() does not set errno to EEXIST, check for
+ * existing file here. There is a race condition then,
+ * although it's fail-safe. */
+ if (mch_stat((char *)itmp, &st) >= 0)
+ continue;
+! # endif
+! # if defined(UNIX) || defined(VMS)
+ /* Make sure the umask doesn't remove the executable bit.
+ * "repl" has been reported to use "177". */
+ umask_save = umask(077);
+! # endif
+ r = vim_mkdir(itmp, 0700);
+! # if defined(UNIX) || defined(VMS)
+ (void)umask(umask_save);
+! # endif
+ if (r == 0)
+ {
+! vim_settempdir(itmp);
+ break;
+ }
+! # ifdef EEXIST
+ /* If the mkdir() didn't fail because the file/dir exists,
+ * we probably can't create any dir here, try another
+ * place. */
+ if (errno != EEXIST)
+! # endif
+ break;
+ }
++ # endif /* HAVE_MKDTEMP */
+ if (vim_tempdir != NULL)
+ break;
+ }
+*** ../vim-7.2.293/src/version.c 2009-11-11 17:30:05.000000000 +0100
+--- src/version.c 2009-11-17 11:54:49.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 294,
+ /**/
+
+--
+ARTHUR: Now stand aside worthy adversary.
+BLACK KNIGHT: (Glancing at his shoulder) 'Tis but a scratch.
+ARTHUR: A scratch? Your arm's off.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.295 b/source/ap/vim/patches/7.2.295
new file mode 100644
index 000000000..331498ffd
--- /dev/null
+++ b/source/ap/vim/patches/7.2.295
@@ -0,0 +1,142 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.295
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.295
+Problem: When using map() on a List the index is not known.
+Solution: Set v:key to the index. (Hari Krishna Dara)
+Files: runtime/doc/eval.txt, src/eval.c
+
+
+*** ../vim-7.2.294/runtime/doc/eval.txt 2009-11-11 14:21:48.000000000 +0100
+--- runtime/doc/eval.txt 2009-11-11 18:22:54.000000000 +0100
+***************
+*** 3802,3808 ****
+ Replace each item in {expr} with the result of evaluating
+ {string}.
+ Inside {string} |v:val| has the value of the current item.
+! For a |Dictionary| |v:key| has the key of the current item.
+ Example: >
+ :call map(mylist, '"> " . v:val . " <"')
+ < This puts "> " before and " <" after each item in "mylist".
+--- 3812,3819 ----
+ Replace each item in {expr} with the result of evaluating
+ {string}.
+ Inside {string} |v:val| has the value of the current item.
+! For a |Dictionary| |v:key| has the key of the current item
+! and for a |List| |v:key| has the index of the current item.
+ Example: >
+ :call map(mylist, '"> " . v:val . " <"')
+ < This puts "> " before and " <" after each item in "mylist".
+*** ../vim-7.2.294/src/eval.c 2009-11-11 14:21:48.000000000 +0100
+--- src/eval.c 2009-11-11 18:22:49.000000000 +0100
+***************
+*** 9928,9933 ****
+--- 9928,9934 ----
+ int todo;
+ char_u *ermsg = map ? (char_u *)"map()" : (char_u *)"filter()";
+ int save_did_emsg;
++ int index = 0;
+
+ if (argvars[0].v_type == VAR_LIST)
+ {
+***************
+*** 9961,9969 ****
+ save_did_emsg = did_emsg;
+ did_emsg = FALSE;
+
+ if (argvars[0].v_type == VAR_DICT)
+ {
+- prepare_vimvar(VV_KEY, &save_key);
+ vimvars[VV_KEY].vv_type = VAR_STRING;
+
+ ht = &d->dv_hashtab;
+--- 9962,9970 ----
+ save_did_emsg = did_emsg;
+ did_emsg = FALSE;
+
++ prepare_vimvar(VV_KEY, &save_key);
+ if (argvars[0].v_type == VAR_DICT)
+ {
+ vimvars[VV_KEY].vv_type = VAR_STRING;
+
+ ht = &d->dv_hashtab;
+***************
+*** 9987,10010 ****
+ }
+ }
+ hash_unlock(ht);
+-
+- restore_vimvar(VV_KEY, &save_key);
+ }
+ else
+ {
+ for (li = l->lv_first; li != NULL; li = nli)
+ {
+ if (tv_check_lock(li->li_tv.v_lock, ermsg))
+ break;
+ nli = li->li_next;
+ if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
+ || did_emsg)
+ break;
+ if (!map && rem)
+ listitem_remove(l, li);
+ }
+ }
+
+ restore_vimvar(VV_VAL, &save_val);
+
+ did_emsg |= save_did_emsg;
+--- 9988,10014 ----
+ }
+ }
+ hash_unlock(ht);
+ }
+ else
+ {
++ vimvars[VV_KEY].vv_type = VAR_NUMBER;
++
+ for (li = l->lv_first; li != NULL; li = nli)
+ {
+ if (tv_check_lock(li->li_tv.v_lock, ermsg))
+ break;
+ nli = li->li_next;
++ vimvars[VV_KEY].vv_nr = index;
+ if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
+ || did_emsg)
+ break;
+ if (!map && rem)
+ listitem_remove(l, li);
++ ++index;
+ }
+ }
+
++ restore_vimvar(VV_KEY, &save_key);
+ restore_vimvar(VV_VAL, &save_val);
+
+ did_emsg |= save_did_emsg;
+*** ../vim-7.2.294/src/version.c 2009-11-17 12:08:48.000000000 +0100
+--- src/version.c 2009-11-17 12:18:08.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 295,
+ /**/
+
+--
+ARTHUR: You are indeed brave Sir knight, but the fight is mine.
+BLACK KNIGHT: Had enough?
+ARTHUR: You stupid bastard. You havn't got any arms left.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.296 b/source/ap/vim/patches/7.2.296
new file mode 100644
index 000000000..5fc3cb3c8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.296
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.296
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.296
+Problem: Help message about startuptime is wrong. (Dominique Pelle)
+Solution: Remove the equal sign.
+Files: src/main.c
+
+
+*** ../vim-7.2.295/src/main.c 2009-11-11 14:21:48.000000000 +0100
+--- src/main.c 2009-11-11 22:51:04.000000000 +0100
+***************
+*** 3151,3157 ****
+ main_msg(_("--servername <name>\tSend to/become the Vim server <name>"));
+ #endif
+ #ifdef STARTUPTIME
+! main_msg(_("--startuptime=<file>\tWrite startup timing messages to <file>"));
+ #endif
+ #ifdef FEAT_VIMINFO
+ main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
+--- 3151,3157 ----
+ main_msg(_("--servername <name>\tSend to/become the Vim server <name>"));
+ #endif
+ #ifdef STARTUPTIME
+! main_msg(_("--startuptime <file>\tWrite startup timing messages to <file>"));
+ #endif
+ #ifdef FEAT_VIMINFO
+ main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
+*** ../vim-7.2.295/src/version.c 2009-11-17 12:20:30.000000000 +0100
+--- src/version.c 2009-11-17 12:30:29.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 296,
+ /**/
+
+--
+BLACK KNIGHT: I'm invincible!
+ARTHUR: You're a looney.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.297 b/source/ap/vim/patches/7.2.297
new file mode 100644
index 000000000..cc8d78994
--- /dev/null
+++ b/source/ap/vim/patches/7.2.297
@@ -0,0 +1,70 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.297
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.297
+Problem: Reading freed memory when writing ":reg" output to a register.
+ (Dominique Pelle)
+Solution: Skip the register being written to.
+Files: src/ops.c
+
+
+*** ../vim-7.2.296/src/ops.c 2009-11-11 17:22:30.000000000 +0100
+--- src/ops.c 2009-11-11 19:30:47.000000000 +0100
+***************
+*** 3991,3996 ****
+--- 3991,4004 ----
+ }
+ else
+ yb = &(y_regs[i]);
++
++ #ifdef FEAT_EVAL
++ if (name == MB_TOLOWER(redir_reg)
++ || (redir_reg == '"' && yb == y_previous))
++ continue; /* do not list register being written to, the
++ * pointer can be freed */
++ #endif
++
+ if (yb->y_array != NULL)
+ {
+ msg_putchar('\n');
+***************
+*** 6090,6096 ****
+ long maxlen;
+ #endif
+
+! if (y_ptr->y_array == NULL) /* NULL means emtpy register */
+ y_ptr->y_size = 0;
+
+ /*
+--- 6098,6104 ----
+ long maxlen;
+ #endif
+
+! if (y_ptr->y_array == NULL) /* NULL means empty register */
+ y_ptr->y_size = 0;
+
+ /*
+*** ../vim-7.2.296/src/version.c 2009-11-17 12:31:30.000000000 +0100
+--- src/version.c 2009-11-17 12:42:28.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 297,
+ /**/
+
+--
+"Beware of bugs in the above code; I have only proved
+it correct, not tried it." -- Donald Knuth
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.298 b/source/ap/vim/patches/7.2.298
new file mode 100644
index 000000000..0aabd7acf
--- /dev/null
+++ b/source/ap/vim/patches/7.2.298
@@ -0,0 +1,48 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.298
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.298
+Problem: ":vimgrep" crashes when there is an autocommand that sets a
+ window-local variable.
+Solution: Initialize the w: hashtab for re-use. (Yukihiro Nakadaira)
+Files: src/fileio.c
+
+
+*** ../vim-7.2.297/src/fileio.c 2009-11-17 12:08:48.000000000 +0100
+--- src/fileio.c 2009-11-17 13:22:06.000000000 +0100
+***************
+*** 8597,8602 ****
+--- 8605,8611 ----
+ curwin = firstwin;
+ # ifdef FEAT_EVAL
+ vars_clear(&aucmd_win->w_vars.dv_hashtab); /* free all w: variables */
++ hash_init(&aucmd_win->w_vars.dv_hashtab); /* re-use the hashtab */
+ # endif
+ #else
+ curwin = aco->save_curwin;
+*** ../vim-7.2.297/src/version.c 2009-11-17 12:43:19.000000000 +0100
+--- src/version.c 2009-11-17 14:56:19.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 298,
+ /**/
+
+--
+Eye have a spelling checker, it came with my PC;
+It plainly marks four my revue mistakes I cannot sea.
+I've run this poem threw it, I'm sure your please to no,
+It's letter perfect in it's weigh, my checker tolled me sew!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.299 b/source/ap/vim/patches/7.2.299
new file mode 100644
index 000000000..88f9e7055
--- /dev/null
+++ b/source/ap/vim/patches/7.2.299
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.299
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.299
+Problem: Crash when comment middle is longer than start.
+Solution: Fix size computation. (Lech Lorens)
+Files: src/misc1.c
+
+
+*** ../vim-7.2.298/src/misc1.c 2009-11-11 17:30:05.000000000 +0100
+--- src/misc1.c 2009-11-17 15:59:28.000000000 +0100
+***************
+*** 1121,1127 ****
+ if (i != lead_repl_len)
+ {
+ mch_memmove(p + lead_repl_len, p + i,
+! (size_t)(lead_len - i - (leader - p)));
+ lead_len += lead_repl_len - i;
+ }
+ }
+--- 1121,1127 ----
+ if (i != lead_repl_len)
+ {
+ mch_memmove(p + lead_repl_len, p + i,
+! (size_t)(lead_len - i - (p - leader)));
+ lead_len += lead_repl_len - i;
+ }
+ }
+*** ../vim-7.2.298/src/version.c 2009-11-17 14:57:19.000000000 +0100
+--- src/version.c 2009-11-17 16:01:07.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 299,
+ /**/
+
+--
+BLACK KNIGHT: The Black Knight always triumphs. Have at you!
+ ARTHUR takes his last leg off. The BLACK KNIGHT's body lands upright.
+BLACK KNIGHT: All right, we'll call it a draw.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.300 b/source/ap/vim/patches/7.2.300
new file mode 100644
index 000000000..f88035e67
--- /dev/null
+++ b/source/ap/vim/patches/7.2.300
@@ -0,0 +1,201 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.300
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.300
+Problem: Vim doesn't close file descriptors when forking and executing
+ another command, e.g., ":shell".
+Solution: Use FD_CLOEXEC when available. (James Vega)
+Files: src/auto/configure, src/config.h.in, src/configure.in,
+ src/ex_cmdds2.c, src/fileio.c, src/memfile.c, src/memline.c
+
+
+*** ../vim-7.2.299/src/auto/configure 2009-11-17 12:08:48.000000000 +0100
+--- src/auto/configure 2009-11-17 13:09:03.000000000 +0100
+***************
+*** 15174,15179 ****
+--- 15174,15231 ----
+ $as_echo "yes" >&6; }
+ fi
+
++ { $as_echo "$as_me:$LINENO: checking for FD_CLOEXEC" >&5
++ $as_echo_n "checking for FD_CLOEXEC... " >&6; }
++ cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h. */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h. */
++ #if HAVE_FCNTL_H
++ # include <fcntl.h>
++ #endif
++ int
++ main ()
++ {
++ int flag = FD_CLOEXEC;
++ ;
++ return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ { $as_echo "$as_me:$LINENO: result: yes" >&5
++ $as_echo "yes" >&6; }; cat >>confdefs.h <<\_ACEOF
++ #define HAVE_FD_CLOEXEC 1
++ _ACEOF
++
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++ { $as_echo "$as_me:$LINENO: result: not usable" >&5
++ $as_echo "not usable" >&6; }
++ fi
++
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
+ { $as_echo "$as_me:$LINENO: checking for rename" >&5
+ $as_echo_n "checking for rename... " >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+*** ../vim-7.2.299/src/config.h.in 2009-11-17 12:08:48.000000000 +0100
+--- src/config.h.in 2009-11-17 13:01:36.000000000 +0100
+***************
+*** 388,390 ****
+--- 388,393 ----
+
+ /* Define if you want XSMP interaction as well as vanilla swapfile safety */
+ #undef USE_XSMP_INTERACT
++
++ /* Define if fcntl()'s F_SETFD command knows about FD_CLOEXEC */
++ #undef HAVE_FD_CLOEXEC
+*** ../vim-7.2.299/src/configure.in 2009-11-17 12:08:48.000000000 +0100
+--- src/configure.in 2009-11-17 13:01:36.000000000 +0100
+***************
+*** 2855,2860 ****
+--- 2855,2870 ----
+ AC_MSG_RESULT(yes)
+ fi
+
++ dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
++ AC_MSG_CHECKING(for FD_CLOEXEC)
++ AC_TRY_COMPILE(
++ [#if HAVE_FCNTL_H
++ # include <fcntl.h>
++ #endif],
++ [ int flag = FD_CLOEXEC;],
++ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
++ AC_MSG_RESULT(not usable))
++
+ dnl rename needs to be checked separately to work on Nextstep with cc
+ AC_MSG_CHECKING(for rename)
+ AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
+*** ../vim-7.2.299/src/fileio.c 2009-11-17 14:57:19.000000000 +0100
+--- src/fileio.c 2009-11-17 13:22:06.000000000 +0100
+***************
+*** 2254,2259 ****
+--- 2254,2267 ----
+
+ if (!read_buffer && !read_stdin)
+ close(fd); /* errors are ignored */
++ #ifdef HAVE_FD_CLOEXEC
++ else
++ {
++ int fdflags = fcntl(fd, F_GETFD);
++ if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
++ fcntl(fd, F_SETFD, fdflags | FD_CLOEXEC);
++ }
++ #endif
+ vim_free(buffer);
+
+ #ifdef HAVE_DUP
+*** ../vim-7.2.299/src/memfile.c 2008-07-13 19:39:39.000000000 +0200
+--- src/memfile.c 2009-11-17 13:22:15.000000000 +0100
+***************
+*** 1343,1348 ****
+--- 1343,1353 ----
+ }
+ else
+ {
++ #ifdef HAVE_FD_CLOEXEC
++ int fdflags = fcntl(mfp->mf_fd, F_GETFD);
++ if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
++ fcntl(mfp->mf_fd, F_SETFD, fdflags | FD_CLOEXEC);
++ #endif
+ #ifdef HAVE_SELINUX
+ mch_copy_sec(fname, mfp->mf_fname);
+ #endif
+*** ../vim-7.2.299/src/memline.c 2009-11-03 15:32:58.000000000 +0100
+--- src/memline.c 2009-11-17 13:21:40.000000000 +0100
+***************
+*** 382,388 ****
+ dp->db_index[0] = --dp->db_txt_start; /* at end of block */
+ dp->db_free -= 1 + INDEX_SIZE;
+ dp->db_line_count = 1;
+! *((char_u *)dp + dp->db_txt_start) = NUL; /* emtpy line */
+
+ return OK;
+
+--- 382,388 ----
+ dp->db_index[0] = --dp->db_txt_start; /* at end of block */
+ dp->db_free -= 1 + INDEX_SIZE;
+ dp->db_line_count = 1;
+! *((char_u *)dp + dp->db_txt_start) = NUL; /* empty line */
+
+ return OK;
+
+***************
+*** 490,495 ****
+--- 490,502 ----
+ EMSG(_("E301: Oops, lost the swap file!!!"));
+ return;
+ }
++ #ifdef HAVE_FD_CLOEXEC
++ {
++ int fdflags = fcntl(mfp->mf_fd, F_GETFD);
++ if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
++ fcntl(mfp->mf_fd, F_SETFD, fdflags | FD_CLOEXEC);
++ }
++ #endif
+ }
+ if (!success)
+ EMSG(_("E302: Could not rename swap file"));
+*** ../vim-7.2.299/src/version.c 2009-11-17 16:08:12.000000000 +0100
+--- src/version.c 2009-11-17 17:09:43.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 300,
+ /**/
+
+--
+ |
+
+Ceci n'est pas une pipe.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.301 b/source/ap/vim/patches/7.2.301
new file mode 100644
index 000000000..e63cc088a
--- /dev/null
+++ b/source/ap/vim/patches/7.2.301
@@ -0,0 +1,777 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.301
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+NOTE: some mail and patch programs may have a problem with the non-ASCII
+characters in this patch. You can fetch the patch from
+ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.301 and/or fetch the updated
+files from CVS. http://www.vim.org/cvs.php
+
+
+Patch 7.2.301
+Problem: Formatting is wrong when 'tw' is set to a small value.
+Solution: Fix it and add tests. Also fix behavior of "1" in 'fo'. (Yukihiro
+ Nakadaira)
+Files: src/edit.c, src/testdir/Makefile, src/testdir/test68.in,
+ src/testdir/test68.ok, src/testdir/test69.in,
+ src/testdir/test69.ok
+
+
+*** ../vim-7.2.300/src/edit.c 2009-11-11 13:22:32.000000000 +0100
+--- src/edit.c 2009-11-17 15:34:47.000000000 +0100
+***************
+*** 181,187 ****
+ static void ins_ctrl_v __ARGS((void));
+ static void undisplay_dollar __ARGS((void));
+ static void insert_special __ARGS((int, int, int));
+! static void internal_format __ARGS((int textwidth, int second_indent, int flags, int format_only));
+ static void check_auto_format __ARGS((int));
+ static void redo_literal __ARGS((int c));
+ static void start_arrow __ARGS((pos_T *end_insert_pos));
+--- 181,187 ----
+ static void ins_ctrl_v __ARGS((void));
+ static void undisplay_dollar __ARGS((void));
+ static void insert_special __ARGS((int, int, int));
+! static void internal_format __ARGS((int textwidth, int second_indent, int flags, int format_only, int c));
+ static void check_auto_format __ARGS((int));
+ static void redo_literal __ARGS((int c));
+ static void start_arrow __ARGS((pos_T *end_insert_pos));
+***************
+*** 2164,2170 ****
+ int i, c;
+ int actual_len; /* Take multi-byte characters */
+ int actual_compl_length; /* into account. */
+! int *wca; /* Wide character array. */
+ int has_lower = FALSE;
+ int was_letter = FALSE;
+
+--- 2164,2170 ----
+ int i, c;
+ int actual_len; /* Take multi-byte characters */
+ int actual_compl_length; /* into account. */
+! int *wca; /* Wide character array. */
+ int has_lower = FALSE;
+ int was_letter = FALSE;
+
+***************
+*** 5558,5564 ****
+ }
+ if (do_internal)
+ #endif
+! internal_format(textwidth, second_indent, flags, c == NUL);
+ }
+
+ if (c == NUL) /* only formatting was wanted */
+--- 5558,5564 ----
+ }
+ if (do_internal)
+ #endif
+! internal_format(textwidth, second_indent, flags, c == NUL, c);
+ }
+
+ if (c == NUL) /* only formatting was wanted */
+***************
+*** 5738,5748 ****
+ * Format text at the current insert position.
+ */
+ static void
+! internal_format(textwidth, second_indent, flags, format_only)
+ int textwidth;
+ int second_indent;
+ int flags;
+ int format_only;
+ {
+ int cc;
+ int save_char = NUL;
+--- 5738,5749 ----
+ * Format text at the current insert position.
+ */
+ static void
+! internal_format(textwidth, second_indent, flags, format_only, c)
+ int textwidth;
+ int second_indent;
+ int flags;
+ int format_only;
++ int c; /* character to be inserted (can be NUL) */
+ {
+ int cc;
+ int save_char = NUL;
+***************
+*** 5763,5769 ****
+ * When 'ai' is off we don't want a space under the cursor to be
+ * deleted. Replace it with an 'x' temporarily.
+ */
+! if (!curbuf->b_p_ai)
+ {
+ cc = gchar_cursor();
+ if (vim_iswhite(cc))
+--- 5764,5774 ----
+ * When 'ai' is off we don't want a space under the cursor to be
+ * deleted. Replace it with an 'x' temporarily.
+ */
+! if (!curbuf->b_p_ai
+! #ifdef FEAT_VREPLACE
+! && !(State & VREPLACE_FLAG)
+! #endif
+! )
+ {
+ cc = gchar_cursor();
+ if (vim_iswhite(cc))
+***************
+*** 5789,5797 ****
+ char_u *saved_text = NULL;
+ #endif
+ colnr_T col;
+
+! virtcol = get_nolist_virtcol();
+! if (virtcol < (colnr_T)textwidth)
+ break;
+
+ #ifdef FEAT_COMMENTS
+--- 5794,5804 ----
+ char_u *saved_text = NULL;
+ #endif
+ colnr_T col;
++ colnr_T end_col;
+
+! virtcol = get_nolist_virtcol()
+! + char2cells(c != NUL ? c : gchar_cursor());
+! if (virtcol <= (colnr_T)textwidth)
+ break;
+
+ #ifdef FEAT_COMMENTS
+***************
+*** 5831,5842 ****
+ coladvance((colnr_T)textwidth);
+ wantcol = curwin->w_cursor.col;
+
+! curwin->w_cursor.col = startcol - 1;
+! #ifdef FEAT_MBYTE
+! /* Correct cursor for multi-byte character. */
+! if (has_mbyte)
+! mb_adjust_cursor();
+! #endif
+ foundcol = 0;
+
+ /*
+--- 5838,5844 ----
+ coladvance((colnr_T)textwidth);
+ wantcol = curwin->w_cursor.col;
+
+! curwin->w_cursor.col = startcol;
+ foundcol = 0;
+
+ /*
+***************
+*** 5847,5857 ****
+ || curwin->w_cursor.lnum != Insstart.lnum
+ || curwin->w_cursor.col >= Insstart.col)
+ {
+! cc = gchar_cursor();
+ if (WHITECHAR(cc))
+ {
+ /* remember position of blank just before text */
+! end_foundcol = curwin->w_cursor.col;
+
+ /* find start of sequence of blanks */
+ while (curwin->w_cursor.col > 0 && WHITECHAR(cc))
+--- 5849,5862 ----
+ || curwin->w_cursor.lnum != Insstart.lnum
+ || curwin->w_cursor.col >= Insstart.col)
+ {
+! if (curwin->w_cursor.col == startcol && c != NUL)
+! cc = c;
+! else
+! cc = gchar_cursor();
+ if (WHITECHAR(cc))
+ {
+ /* remember position of blank just before text */
+! end_col = curwin->w_cursor.col;
+
+ /* find start of sequence of blanks */
+ while (curwin->w_cursor.col > 0 && WHITECHAR(cc))
+***************
+*** 5871,5877 ****
+ /* do not break after one-letter words */
+ if (curwin->w_cursor.col == 0)
+ break; /* one-letter word at begin */
+!
+ col = curwin->w_cursor.col;
+ dec_cursor();
+ cc = gchar_cursor();
+--- 5876,5886 ----
+ /* do not break after one-letter words */
+ if (curwin->w_cursor.col == 0)
+ break; /* one-letter word at begin */
+! #ifdef FEAT_COMMENTS
+! /* do not break "#a b" when 'tw' is 2 */
+! if (curwin->w_cursor.col <= leader_len)
+! break;
+! #endif
+ col = curwin->w_cursor.col;
+ dec_cursor();
+ cc = gchar_cursor();
+***************
+*** 5880,5905 ****
+ continue; /* one-letter, continue */
+ curwin->w_cursor.col = col;
+ }
+! #ifdef FEAT_MBYTE
+! if (has_mbyte)
+! foundcol = curwin->w_cursor.col
+! + (*mb_ptr2len)(ml_get_cursor());
+! else
+! #endif
+! foundcol = curwin->w_cursor.col + 1;
+! if (curwin->w_cursor.col < (colnr_T)wantcol)
+ break;
+ }
+ #ifdef FEAT_MBYTE
+! else if (cc >= 0x100 && fo_multibyte
+! && curwin->w_cursor.col <= (colnr_T)wantcol)
+ {
+ /* Break after or before a multi-byte character. */
+ foundcol = curwin->w_cursor.col;
+- if (curwin->w_cursor.col < (colnr_T)wantcol)
+- foundcol += (*mb_char2len)(cc);
+ end_foundcol = foundcol;
+! break;
+ }
+ #endif
+ if (curwin->w_cursor.col == 0)
+--- 5889,5948 ----
+ continue; /* one-letter, continue */
+ curwin->w_cursor.col = col;
+ }
+!
+! inc_cursor();
+!
+! end_foundcol = end_col + 1;
+! foundcol = curwin->w_cursor.col;
+! if (curwin->w_cursor.col <= (colnr_T)wantcol)
+ break;
+ }
+ #ifdef FEAT_MBYTE
+! else if (cc >= 0x100 && fo_multibyte)
+ {
+ /* Break after or before a multi-byte character. */
++ if (curwin->w_cursor.col != startcol)
++ {
++ #ifdef FEAT_COMMENTS
++ /* Don't break until after the comment leader */
++ if (curwin->w_cursor.col < leader_len)
++ break;
++ #endif
++ col = curwin->w_cursor.col;
++ inc_cursor();
++ /* Don't change end_foundcol if already set. */
++ if (foundcol != curwin->w_cursor.col)
++ {
++ foundcol = curwin->w_cursor.col;
++ end_foundcol = foundcol;
++ if (curwin->w_cursor.col <= (colnr_T)wantcol)
++ break;
++ }
++ curwin->w_cursor.col = col;
++ }
++
++ if (curwin->w_cursor.col == 0)
++ break;
++
++ col = curwin->w_cursor.col;
++
++ dec_cursor();
++ cc = gchar_cursor();
++
++ if (WHITECHAR(cc))
++ continue; /* break with space */
++ #ifdef FEAT_COMMENTS
++ /* Don't break until after the comment leader */
++ if (curwin->w_cursor.col < leader_len)
++ break;
++ #endif
++
++ curwin->w_cursor.col = col;
++
+ foundcol = curwin->w_cursor.col;
+ end_foundcol = foundcol;
+! if (curwin->w_cursor.col <= (colnr_T)wantcol)
+! break;
+ }
+ #endif
+ if (curwin->w_cursor.col == 0)
+***************
+*** 5926,5939 ****
+ orig_col = startcol; /* Will start backspacing from here */
+ else
+ #endif
+! replace_offset = startcol - end_foundcol - 1;
+
+ /*
+ * adjust startcol for spaces that will be deleted and
+ * characters that will remain on top line
+ */
+ curwin->w_cursor.col = foundcol;
+! while (cc = gchar_cursor(), WHITECHAR(cc))
+ inc_cursor();
+ startcol -= curwin->w_cursor.col;
+ if (startcol < 0)
+--- 5969,5983 ----
+ orig_col = startcol; /* Will start backspacing from here */
+ else
+ #endif
+! replace_offset = startcol - end_foundcol;
+
+ /*
+ * adjust startcol for spaces that will be deleted and
+ * characters that will remain on top line
+ */
+ curwin->w_cursor.col = foundcol;
+! while ((cc = gchar_cursor(), WHITECHAR(cc))
+! && (!fo_white_par || curwin->w_cursor.col < startcol))
+ inc_cursor();
+ startcol -= curwin->w_cursor.col;
+ if (startcol < 0)
+***************
+*** 8509,8515 ****
+ if (mode == BACKSPACE_LINE
+ && (curbuf->b_p_ai
+ #ifdef FEAT_CINDENT
+! || cindent_on()
+ #endif
+ )
+ #ifdef FEAT_RIGHTLEFT
+--- 8553,8559 ----
+ if (mode == BACKSPACE_LINE
+ && (curbuf->b_p_ai
+ #ifdef FEAT_CINDENT
+! || cindent_on()
+ #endif
+ )
+ #ifdef FEAT_RIGHTLEFT
+*** ../vim-7.2.300/src/testdir/Makefile 2009-11-17 17:36:13.000000000 +0100
+--- src/testdir/Makefile 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 22,28 ****
+ test48.out test49.out test51.out test52.out test53.out \
+ test54.out test55.out test56.out test57.out test58.out \
+ test59.out test60.out test61.out test62.out test63.out \
+! test64.out test65.out test66.out test67.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 22,29 ----
+ test48.out test49.out test51.out test52.out test53.out \
+ test54.out test55.out test56.out test57.out test58.out \
+ test59.out test60.out test61.out test62.out test63.out \
+! test64.out test65.out test66.out test67.out test68.out \
+! test69.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.2.300/src/testdir/test68.in 2009-11-17 17:39:36.000000000 +0100
+--- src/testdir/test68.in 2009-11-17 15:39:09.000000000 +0100
+***************
+*** 0 ****
+--- 1,56 ----
++ Test for text formatting.
++
++ Results of test68:
++
++ STARTTEST
++ :so small.vim
++ /^{/+1
++ :set noai tw=2 fo=t
++ gRa b
++ ENDTEST
++
++ {
++
++
++ }
++
++ STARTTEST
++ /^{/+1
++ :set ai tw=2 fo=tw
++ gqgqjjllab
++ ENDTEST
++
++ {
++ a b
++
++ a
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=3 fo=t
++ gqgqo
++ a 
++ ENDTEST
++
++ {
++ a 
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=2 fo=tcq1 comments=:#
++ gqgqjgqgqo
++ a b
++ #a b
++ ENDTEST
++
++ {
++ a b
++ #a b
++ }
++
++ STARTTEST
++ :g/^STARTTEST/.,/^ENDTEST/d
++ :1;/^Results/,$wq! test.out
++ ENDTEST
+*** ../vim-7.2.300/src/testdir/test68.ok 2009-11-17 17:39:36.000000000 +0100
+--- src/testdir/test68.ok 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 0 ****
+--- 1,35 ----
++ Results of test68:
++
++
++ {
++ a
++ b
++ }
++
++
++ {
++ a
++ b
++
++ a
++ b
++ }
++
++
++ {
++ a
++ 
++
++ a
++ 
++ }
++
++
++ {
++ a b
++ #a b
++
++ a b
++ #a b
++ }
++
+*** ../vim-7.2.300/src/testdir/test69.in 2009-11-17 17:39:36.000000000 +0100
+--- src/testdir/test69.in 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 0 ****
+--- 1,139 ----
++ Test for multi-byte text formatting.
++
++ STARTTEST
++ :so mbyte.vim
++ :set encoding=utf-8
++ ENDTEST
++
++ Results of test69:
++
++ STARTTEST
++ /^{/+1
++ :set tw=2 fo=t
++ gqgqjgqgqo
++ XYZ
++ abc XYZ
++ ENDTEST
++
++ {
++ XYZ
++ abc XYZ
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=1 fo=tm
++ gqgqjgqgqjgqgqjgqgqjgqgqo
++ X
++ Xa
++ X a
++ XY
++ X Y
++ ENDTEST
++
++ {
++ X
++ Xa
++ X a
++ XY
++ X Y
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=2 fo=tm
++ gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
++ X
++ Xa
++ X a
++ XY
++ X Y
++ aX
++ abX
++ abcX
++ abX c
++ abXY
++ ENDTEST
++
++ {
++ X
++ Xa
++ X a
++ XY
++ X Y
++ aX
++ abX
++ abcX
++ abX c
++ abXY
++ }
++
++ STARTTEST
++ /^{/+1
++ :set ai tw=2 fo=tm
++ gqgqjgqgqo
++ X
++ Xa
++ ENDTEST
++
++ {
++ X
++ Xa
++ }
++
++ STARTTEST
++ /^{/+1
++ :set noai tw=2 fo=tm
++ gqgqjgqgqo
++ X
++ Xa
++ ENDTEST
++
++ {
++ X
++ Xa
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=2 fo=cqm comments=n:X
++ gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
++ X
++ Xa
++ XaY
++ XY
++ XYZ
++ X Y
++ X YZ
++ XX
++ XXa
++ XXY
++ ENDTEST
++
++ {
++ X
++ Xa
++ XaY
++ XY
++ XYZ
++ X Y
++ X YZ
++ XX
++ XXa
++ XXY
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=2 fo=tm
++ RXa
++ ENDTEST
++
++ {
++
++ }
++
++ STARTTEST
++ :g/^STARTTEST/.,/^ENDTEST/d
++ :1;/^Results/,$wq! test.out
++ ENDTEST
+*** ../vim-7.2.300/src/testdir/test69.ok 2009-11-17 17:39:36.000000000 +0100
+--- src/testdir/test69.ok 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 0 ****
+--- 1,142 ----
++ Results of test69:
++
++
++ {
++ XYZ
++ abc
++ XYZ
++
++ XYZ
++ abc
++ XYZ
++ }
++
++
++ {
++ X
++ X
++ a
++ X
++ a
++ X
++ ï¼¹
++ X
++ ï¼¹
++
++ X
++ X
++ a
++ X
++ a
++ X
++ ï¼¹
++ X
++ ï¼¹
++ }
++
++
++ {
++ X
++ X
++ a
++ X
++ a
++ X
++ ï¼¹
++ X
++ ï¼¹
++ a
++ X
++ ab
++ X
++ abc
++ X
++ ab
++ X
++ c
++ ab
++ X
++ ï¼¹
++
++ X
++ X
++ a
++ X
++ a
++ X
++ ï¼¹
++ X
++ ï¼¹
++ a
++ X
++ ab
++ X
++ abc
++ X
++ ab
++ X
++ c
++ ab
++ X
++ ï¼¹
++ }
++
++
++ {
++ X
++ X
++ a
++
++ X
++ X
++ a
++ }
++
++
++ {
++ X
++ X
++ a
++
++ X
++ X
++ a
++ }
++
++
++ {
++ X
++ Xa
++ Xa
++ XY
++ XY
++ XY
++ XZ
++ X Y
++ X Y
++ X Z
++ XX
++ XXa
++ XXY
++
++ X
++ Xa
++ Xa
++ XY
++ XY
++ XY
++ XZ
++ X Y
++ X Y
++ X Z
++ XX
++ XXa
++ XXY
++ }
++
++
++ {
++ X
++ a
++ }
++
+*** ../vim-7.2.300/src/version.c 2009-11-17 17:37:34.000000000 +0100
+--- src/version.c 2009-11-17 17:26:35.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 301,
+ /**/
diff --git a/source/ap/vim/patches/7.2.302 b/source/ap/vim/patches/7.2.302
new file mode 100644
index 000000000..c4d5a99d9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.302
@@ -0,0 +1,140 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.302 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.302 (extra part of 7.2.301)
+Problem: Formatting wrong with small 'tw' value.
+Solution: Add build rules for tests.
+Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
+ src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
+ src/testdir/Make_vms.mms
+
+
+*** ../vim-7.2.301/src/testdir/Make_amiga.mak 2009-09-18 14:58:26.000000000 +0200
+--- src/testdir/Make_amiga.mak 2009-11-17 15:29:05.000000000 +0100
+***************
+*** 26,32 ****
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out
+
+ .SUFFIXES: .in .out
+
+--- 26,32 ----
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out test68.out test69.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 113,115 ****
+--- 113,117 ----
+ test65.out: test65.in
+ test66.out: test66.in
+ test67.out: test67.in
++ test68.out: test68.in
++ test69.out: test69.in
+*** ../vim-7.2.301/src/testdir/Make_dos.mak 2009-09-18 14:58:26.000000000 +0200
+--- src/testdir/Make_dos.mak 2009-11-17 15:29:54.000000000 +0100
+***************
+*** 26,32 ****
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out test67.out
+
+ SCRIPTS32 = test50.out
+
+--- 26,33 ----
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out test67.out \
+! test68.out test69.out
+
+ SCRIPTS32 = test50.out
+
+*** ../vim-7.2.301/src/testdir/Make_ming.mak 2009-09-18 14:58:26.000000000 +0200
+--- src/testdir/Make_ming.mak 2009-11-17 15:30:07.000000000 +0100
+***************
+*** 45,51 ****
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out test67.out
+
+ SCRIPTS32 = test50.out
+
+--- 45,52 ----
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out test67.out \
+! test68.out test69.out
+
+ SCRIPTS32 = test50.out
+
+*** ../vim-7.2.301/src/testdir/Make_os2.mak 2009-09-18 14:58:26.000000000 +0200
+--- src/testdir/Make_os2.mak 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 26,32 ****
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out
+
+ .SUFFIXES: .in .out
+
+--- 26,32 ----
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out test68.out test69.out
+
+ .SUFFIXES: .in .out
+
+*** ../vim-7.2.301/src/testdir/Make_vms.mms 2009-09-18 14:58:26.000000000 +0200
+--- src/testdir/Make_vms.mms 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 69,75 ****
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out
+
+ .IFDEF WANT_GUI
+ SCRIPT_GUI = test16.out
+--- 69,75 ----
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out test68.out test69.out
+
+ .IFDEF WANT_GUI
+ SCRIPT_GUI = test16.out
+*** ../vim-7.2.301/src/version.c 2009-11-17 17:40:34.000000000 +0100
+--- src/version.c 2009-11-17 17:43:26.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 302,
+ /**/
+
+--
+Hacker: Someone skilled in computer programming (good guy).
+Cracker: A hacker that uses his skills to crack software (bad guy).
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.303 b/source/ap/vim/patches/7.2.303
new file mode 100644
index 000000000..b53d19810
--- /dev/null
+++ b/source/ap/vim/patches/7.2.303
@@ -0,0 +1,70 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.303
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.303 (after 7.2.294)
+Problem: Can't build on MS-Windows.
+Solution: Add #ifdef around vim_settempdir(). (James Vega)
+Files: src/fileio.c
+
+
+*** ../vim-7.2.302/src/fileio.c 2009-11-17 17:13:03.000000000 +0100
+--- src/fileio.c 2009-11-18 20:06:55.000000000 +0100
+***************
+*** 146,152 ****
+--- 146,154 ----
+ # endif
+ #endif
+ static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
++ #ifdef TEMPDIRNAMES
+ static void vim_settempdir __ARGS((char_u *tempdir));
++ #endif
+ #ifdef FEAT_AUTOCMD
+ static char *e_auchangedbuf = N_("E812: Autocommands changed buffer or buffer name");
+ #endif
+***************
+*** 6995,7000 ****
+--- 6997,7003 ----
+ }
+ #endif
+
++ #ifdef TEMPDIRNAMES
+ /*
+ * Directory "tempdir" was created. Expand this name to a full path and put
+ * it in "vim_tempdir". This avoids that using ":cd" would confuse us.
+***************
+*** 7021,7026 ****
+--- 7024,7030 ----
+ vim_free(buf);
+ }
+ }
++ #endif
+
+ /*
+ * vim_tempname(): Return a unique name that can be used for a temp file.
+*** ../vim-7.2.302/src/version.c 2009-11-17 17:57:10.000000000 +0100
+--- src/version.c 2009-11-18 20:07:58.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 303,
+ /**/
+
+--
+BEDEVERE: Why do you think she is a witch?
+SECOND VILLAGER: She turned me into a newt.
+BEDEVERE: A newt?
+SECOND VILLAGER: (After looking at himself for some time) I got better.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.304 b/source/ap/vim/patches/7.2.304
new file mode 100644
index 000000000..8a138c046
--- /dev/null
+++ b/source/ap/vim/patches/7.2.304
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.304
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.304
+Problem: Compiler warning for bad pointer cast.
+Solution: Use another variable for int pointer.
+Files: src/ops.c
+
+
+*** ../vim-7.2.303/src/ops.c 2009-11-17 12:43:19.000000000 +0100
+--- src/ops.c 2009-11-18 15:40:26.000000000 +0100
+***************
+*** 5597,5603 ****
+ vc.vc_type = CONV_NONE;
+ if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
+ {
+! conv_str = string_convert(&vc, str, (int*)&len);
+ if (conv_str != NULL)
+ {
+ vim_free(str);
+--- 5597,5606 ----
+ vc.vc_type = CONV_NONE;
+ if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
+ {
+! int intlen = len;
+!
+! conv_str = string_convert(&vc, str, &intlen);
+! len = intlen;
+ if (conv_str != NULL)
+ {
+ vim_free(str);
+*** ../vim-7.2.303/src/version.c 2009-11-18 20:12:15.000000000 +0100
+--- src/version.c 2009-11-25 12:37:36.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 304,
+ /**/
+
+--
+I recommend ordering large cargo containers of paper towels to make up
+whatever budget underruns you have. Paper products are always useful and they
+have the advantage of being completely flushable if you need to make room in
+the storage area later.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.305 b/source/ap/vim/patches/7.2.305
new file mode 100644
index 000000000..c8ad7084b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.305
@@ -0,0 +1,105 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.305
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.305
+Problem: Recursively redrawing causes a memory leak. (Dominique Pelle)
+Solution: Disallow recursive screen updating.
+Files: src/screen.c
+
+
+*** ../vim-7.2.304/src/screen.c 2009-11-11 17:07:25.000000000 +0100
+--- src/screen.c 2009-11-17 16:30:53.000000000 +0100
+***************
+*** 323,328 ****
+--- 323,329 ----
+ int did_one;
+ #endif
+
++ /* Don't do anything if the screen structures are (not yet) valid. */
+ if (!screen_valid(TRUE))
+ return;
+
+***************
+*** 342,348 ****
+ if (curwin->w_lines_valid == 0 && type < NOT_VALID)
+ type = NOT_VALID;
+
+! if (!redrawing())
+ {
+ redraw_later(type); /* remember type for next time */
+ must_redraw = type;
+--- 343,351 ----
+ if (curwin->w_lines_valid == 0 && type < NOT_VALID)
+ type = NOT_VALID;
+
+! /* Postpone the redrawing when it's not needed and when being called
+! * recursively. */
+! if (!redrawing() || updating_screen)
+ {
+ redraw_later(type); /* remember type for next time */
+ must_redraw = type;
+***************
+*** 582,587 ****
+--- 585,591 ----
+
+ /*
+ * Prepare for updating one or more windows.
++ * Caller must check for "updating_screen" already set to avoid recursiveness.
+ */
+ static void
+ update_prepare()
+***************
+*** 663,669 ****
+ doit = TRUE;
+ }
+
+! if (!doit)
+ return;
+
+ /* update all windows that need updating */
+--- 667,675 ----
+ doit = TRUE;
+ }
+
+! /* Return when there is nothing to do or screen updating already
+! * happening. */
+! if (!doit || updating_screen)
+ return;
+
+ /* update all windows that need updating */
+***************
+*** 696,701 ****
+--- 702,711 ----
+ updateWindow(wp)
+ win_T *wp;
+ {
++ /* return if already busy updating */
++ if (updating_screen)
++ return;
++
+ update_prepare();
+
+ #ifdef FEAT_CLIPBOARD
+*** ../vim-7.2.304/src/version.c 2009-11-25 12:38:49.000000000 +0100
+--- src/version.c 2009-11-25 13:01:48.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 305,
+ /**/
+
+--
+If the Universe is constantly expanding, why can't I ever find a parking space?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.306 b/source/ap/vim/patches/7.2.306
new file mode 100644
index 000000000..d54e90d36
--- /dev/null
+++ b/source/ap/vim/patches/7.2.306
@@ -0,0 +1,48 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.306
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.306
+Problem: shellescape("10%%", 1) only escapes first %. (Christian Brabandt)
+Solution: Don't copy the character after the escaped one.
+Files: src/misc2.c
+
+
+*** ../vim-7.2.305/src/misc2.c 2009-11-11 16:56:13.000000000 +0100
+--- src/misc2.c 2009-11-25 17:11:49.000000000 +0100
+***************
+*** 1390,1395 ****
+--- 1390,1396 ----
+ *d++ = '\\'; /* insert backslash */
+ while (--l >= 0) /* copy the var */
+ *d++ = *p++;
++ continue;
+ }
+
+ MB_COPY_CHAR(p, d);
+*** ../vim-7.2.305/src/version.c 2009-11-25 13:03:29.000000000 +0100
+--- src/version.c 2009-11-25 17:13:54.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 306,
+ /**/
+
+--
+Article in the first Free Software Magazine: "Bram Moolenaar studied electrical
+engineering at the Technical University of Delft and graduated in 1985 on a
+multi-processor Unix architecture."
+Response by "dimator": Could the school not afford a proper stage for the
+ceremony?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.307 b/source/ap/vim/patches/7.2.307
new file mode 100644
index 000000000..23504e2c4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.307
@@ -0,0 +1,181 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.307
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.307
+Problem: Crash with a very long syntax match statement. (Guy Gur Ari)
+Solution: When the offset does not fit in the two bytes available give an
+ error instead of continuing with invalid pointers.
+Files: src/regexp.c
+
+
+*** ../vim-7.2.306/src/regexp.c 2009-05-15 21:31:11.000000000 +0200
+--- src/regexp.c 2009-11-25 18:13:03.000000000 +0100
+***************
+*** 583,588 ****
+--- 583,589 ----
+ #endif
+ static char_u *regcode; /* Code-emit pointer, or JUST_CALC_SIZE */
+ static long regsize; /* Code size. */
++ static int reg_toolong; /* TRUE when offset out of range */
+ static char_u had_endbrace[NSUBEXP]; /* flags, TRUE if end of () found */
+ static unsigned regflags; /* RF_ flags for prog */
+ static long brace_min[10]; /* Minimums for complex brace repeats */
+***************
+*** 1028,1036 ****
+ regcomp_start(expr, re_flags);
+ regcode = r->program;
+ regc(REGMAGIC);
+! if (reg(REG_NOPAREN, &flags) == NULL)
+ {
+ vim_free(r);
+ return NULL;
+ }
+
+--- 1029,1039 ----
+ regcomp_start(expr, re_flags);
+ regcode = r->program;
+ regc(REGMAGIC);
+! if (reg(REG_NOPAREN, &flags) == NULL || reg_toolong)
+ {
+ vim_free(r);
++ if (reg_toolong)
++ EMSG_RET_NULL(_("E339: Pattern too long"));
+ return NULL;
+ }
+
+***************
+*** 1141,1146 ****
+--- 1144,1150 ----
+ re_has_z = 0;
+ #endif
+ regsize = 0L;
++ reg_toolong = FALSE;
+ regflags = 0;
+ #if defined(FEAT_SYN_HL) || defined(PROTO)
+ had_eol = FALSE;
+***************
+*** 1228,1234 ****
+ {
+ skipchr();
+ br = regbranch(&flags);
+! if (br == NULL)
+ return NULL;
+ regtail(ret, br); /* BRANCH -> BRANCH. */
+ if (!(flags & HASWIDTH))
+--- 1232,1238 ----
+ {
+ skipchr();
+ br = regbranch(&flags);
+! if (br == NULL || reg_toolong)
+ return NULL;
+ regtail(ret, br); /* BRANCH -> BRANCH. */
+ if (!(flags & HASWIDTH))
+***************
+*** 1313,1318 ****
+--- 1317,1324 ----
+ break;
+ skipchr();
+ regtail(latest, regnode(END)); /* operand ends */
++ if (reg_toolong)
++ break;
+ reginsert(MATCH, latest);
+ chain = latest;
+ }
+***************
+*** 1382,1388 ****
+ break;
+ default:
+ latest = regpiece(&flags);
+! if (latest == NULL)
+ return NULL;
+ *flagp |= flags & (HASWIDTH | HASNL | HASLOOKBH);
+ if (chain == NULL) /* First piece. */
+--- 1388,1394 ----
+ break;
+ default:
+ latest = regpiece(&flags);
+! if (latest == NULL || reg_toolong)
+ return NULL;
+ *flagp |= flags & (HASWIDTH | HASNL | HASLOOKBH);
+ if (chain == NULL) /* First piece. */
+***************
+*** 2540,2547 ****
+ offset = (int)(scan - val);
+ else
+ offset = (int)(val - scan);
+! *(scan + 1) = (char_u) (((unsigned)offset >> 8) & 0377);
+! *(scan + 2) = (char_u) (offset & 0377);
+ }
+
+ /*
+--- 2546,2561 ----
+ offset = (int)(scan - val);
+ else
+ offset = (int)(val - scan);
+! /* When the offset uses more than 16 bits it can no longer fit in the two
+! * bytes avaliable. Use a global flag to avoid having to check return
+! * values in too many places. */
+! if (offset > 0xffff)
+! reg_toolong = TRUE;
+! else
+! {
+! *(scan + 1) = (char_u) (((unsigned)offset >> 8) & 0377);
+! *(scan + 2) = (char_u) (offset & 0377);
+! }
+ }
+
+ /*
+***************
+*** 5764,5769 ****
+--- 5778,5785 ----
+
+ /*
+ * regnext - dig the "next" pointer out of a node
++ * Returns NULL when calculating size, when there is no next item and when
++ * there is an error.
+ */
+ static char_u *
+ regnext(p)
+***************
+*** 5771,5777 ****
+ {
+ int offset;
+
+! if (p == JUST_CALC_SIZE)
+ return NULL;
+
+ offset = NEXT(p);
+--- 5787,5793 ----
+ {
+ int offset;
+
+! if (p == JUST_CALC_SIZE || reg_toolong)
+ return NULL;
+
+ offset = NEXT(p);
+*** ../vim-7.2.306/src/version.c 2009-11-25 17:15:16.000000000 +0100
+--- src/version.c 2009-11-25 18:14:32.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 307,
+ /**/
+
+--
+The fastest way to get an engineer to solve a problem is to declare that the
+problem is unsolvable. No engineer can walk away from an unsolvable problem
+until it's solved.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.308 b/source/ap/vim/patches/7.2.308
new file mode 100644
index 000000000..1e19b21dc
--- /dev/null
+++ b/source/ap/vim/patches/7.2.308
@@ -0,0 +1,182 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.308
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.308
+Problem: When using a regexp in the "\=" expression of a substitute
+ command, submatch() returns empty strings for further lines.
+ (Clockwork Jam)
+Solution: Save and restore the line number and line count when calling
+ reg_getline().
+Files: src/regexp.c
+
+
+*** ../vim-7.2.307/src/regexp.c 2009-11-25 18:21:48.000000000 +0100
+--- src/regexp.c 2009-11-25 19:45:07.000000000 +0100
+***************
+*** 6828,6833 ****
+--- 6828,6835 ----
+ * that contains a call to substitute() and submatch(). */
+ static regmatch_T *submatch_match;
+ static regmmatch_T *submatch_mmatch;
++ static linenr_T submatch_firstlnum;
++ static linenr_T submatch_maxline;
+ #endif
+
+ #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) || defined(PROTO)
+***************
+*** 6941,6947 ****
+ }
+ else
+ {
+- linenr_T save_reg_maxline;
+ win_T *save_reg_win;
+ int save_ireg_ic;
+
+--- 6943,6948 ----
+***************
+*** 6953,6959 ****
+ * vim_regexec_multi() can't be called recursively. */
+ submatch_match = reg_match;
+ submatch_mmatch = reg_mmatch;
+! save_reg_maxline = reg_maxline;
+ save_reg_win = reg_win;
+ save_ireg_ic = ireg_ic;
+ can_f_submatch = TRUE;
+--- 6954,6961 ----
+ * vim_regexec_multi() can't be called recursively. */
+ submatch_match = reg_match;
+ submatch_mmatch = reg_mmatch;
+! submatch_firstlnum = reg_firstlnum;
+! submatch_maxline = reg_maxline;
+ save_reg_win = reg_win;
+ save_ireg_ic = ireg_ic;
+ can_f_submatch = TRUE;
+***************
+*** 6976,6982 ****
+
+ reg_match = submatch_match;
+ reg_mmatch = submatch_mmatch;
+! reg_maxline = save_reg_maxline;
+ reg_win = save_reg_win;
+ ireg_ic = save_ireg_ic;
+ can_f_submatch = FALSE;
+--- 6978,6985 ----
+
+ reg_match = submatch_match;
+ reg_mmatch = submatch_mmatch;
+! reg_firstlnum = submatch_firstlnum;
+! reg_maxline = submatch_maxline;
+ reg_win = save_reg_win;
+ ireg_ic = save_ireg_ic;
+ can_f_submatch = FALSE;
+***************
+*** 7212,7217 ****
+--- 7215,7243 ----
+
+ #ifdef FEAT_EVAL
+ /*
++ * Call reg_getline() with the line numbers from the submatch. If a
++ * substitute() was used the reg_maxline and other values have been
++ * overwritten.
++ */
++ static char_u *
++ reg_getline_submatch(lnum)
++ linenr_T lnum;
++ {
++ char_u *s;
++ linenr_T save_first = reg_firstlnum;
++ linenr_T save_max = reg_maxline;
++
++ reg_firstlnum = submatch_firstlnum;
++ reg_maxline = submatch_maxline;
++
++ s = reg_getline(lnum);
++
++ reg_firstlnum = save_first;
++ reg_maxline = save_max;
++ return s;
++ }
++
++ /*
+ * Used for the submatch() function: get the string from the n'th submatch in
+ * allocated memory.
+ * Returns NULL when not in a ":s" command and for a non-existing submatch.
+***************
+*** 7241,7247 ****
+ if (lnum < 0 || submatch_mmatch->endpos[no].lnum < 0)
+ return NULL;
+
+! s = reg_getline(lnum) + submatch_mmatch->startpos[no].col;
+ if (s == NULL) /* anti-crash check, cannot happen? */
+ break;
+ if (submatch_mmatch->endpos[no].lnum == lnum)
+--- 7267,7273 ----
+ if (lnum < 0 || submatch_mmatch->endpos[no].lnum < 0)
+ return NULL;
+
+! s = reg_getline_submatch(lnum) + submatch_mmatch->startpos[no].col;
+ if (s == NULL) /* anti-crash check, cannot happen? */
+ break;
+ if (submatch_mmatch->endpos[no].lnum == lnum)
+***************
+*** 7267,7273 ****
+ ++lnum;
+ while (lnum < submatch_mmatch->endpos[no].lnum)
+ {
+! s = reg_getline(lnum++);
+ if (round == 2)
+ STRCPY(retval + len, s);
+ len += (int)STRLEN(s);
+--- 7293,7299 ----
+ ++lnum;
+ while (lnum < submatch_mmatch->endpos[no].lnum)
+ {
+! s = reg_getline_submatch(lnum++);
+ if (round == 2)
+ STRCPY(retval + len, s);
+ len += (int)STRLEN(s);
+***************
+*** 7276,7282 ****
+ ++len;
+ }
+ if (round == 2)
+! STRNCPY(retval + len, reg_getline(lnum),
+ submatch_mmatch->endpos[no].col);
+ len += submatch_mmatch->endpos[no].col;
+ if (round == 2)
+--- 7302,7308 ----
+ ++len;
+ }
+ if (round == 2)
+! STRNCPY(retval + len, reg_getline_submatch(lnum),
+ submatch_mmatch->endpos[no].col);
+ len += submatch_mmatch->endpos[no].col;
+ if (round == 2)
+*** ../vim-7.2.307/src/version.c 2009-11-25 18:21:48.000000000 +0100
+--- src/version.c 2009-11-25 19:50:16.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 308,
+ /**/
+
+--
+Engineers are always delighted to share wisdom, even in areas in which they
+have no experience whatsoever. Their logic provides them with inherent
+insight into any field of expertise. This can be a problem when dealing with
+the illogical people who believe that knowledge can only be derived through
+experience.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.309 b/source/ap/vim/patches/7.2.309
new file mode 100644
index 000000000..a1713b755
--- /dev/null
+++ b/source/ap/vim/patches/7.2.309
@@ -0,0 +1,48 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.309
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.309 (after 7.2.308)
+Problem: Warning for missing function prototype. (Patrick Texier)
+Solution: Add the prototype.
+Files: src/regexp.c
+
+
+*** ../vim-7.2.308/src/regexp.c 2009-11-25 19:51:56.000000000 +0100
+--- src/regexp.c 2009-11-26 20:39:18.000000000 +0100
+***************
+*** 7214,7219 ****
+--- 7214,7221 ----
+ }
+
+ #ifdef FEAT_EVAL
++ static char_u *reg_getline_submatch __ARGS((linenr_T lnum));
++
+ /*
+ * Call reg_getline() with the line numbers from the submatch. If a
+ * substitute() was used the reg_maxline and other values have been
+*** ../vim-7.2.308/src/version.c 2009-11-25 19:51:56.000000000 +0100
+--- src/version.c 2009-11-26 20:40:11.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 309,
+ /**/
+
+--
+Female engineers become irresistible at the age of consent and remain that
+way until about thirty minutes after their clinical death. Longer if it's a
+warm day.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.310 b/source/ap/vim/patches/7.2.310
new file mode 100644
index 000000000..52734ddf4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.310
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.310
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.310
+Problem: When a filetype plugin in ~/.vim/ftdetect uses ":setfiletype" and
+ the file starts with a "# comment" it gets "conf" filetype.
+Solution: Check for "conf" filetype after using ftdetect plugins.
+Files: runtime/filetype.vim
+
+
+*** ../vim-7.2.309/runtime/filetype.vim 2008-08-06 18:56:36.000000000 +0200
+--- runtime/filetype.vim 2009-12-02 12:08:42.000000000 +0100
+***************
+*** 2400,2405 ****
+--- 2435,2446 ----
+ au BufNewFile,BufRead zsh*,zlog* call s:StarSetf('zsh')
+
+
++
++ " Use the filetype detect plugins. They may overrule any of the previously
++ " detected filetypes.
++ runtime! ftdetect/*.vim
++
++
+ " Generic configuration file (check this last, it's just guessing!)
+ au BufNewFile,BufRead,StdinReadPost *
+ \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
+***************
+*** 2408,2417 ****
+ \ setf conf |
+ \ endif
+
+- " Use the plugin-filetype checks last, they may overrule any of the previously
+- " detected filetypes.
+- runtime! ftdetect/*.vim
+-
+ augroup END
+
+
+--- 2449,2454 ----
+*** ../vim-7.2.309/src/version.c 2009-11-26 20:41:19.000000000 +0100
+--- src/version.c 2009-12-02 12:05:27.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 310,
+ /**/
+
+--
+A)bort, R)etry, P)lease don't bother me again
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.311 b/source/ap/vim/patches/7.2.311
new file mode 100644
index 000000000..9e27a739d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.311
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.311
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.311
+Problem: Can't compile with FreeMiNT.
+Solution: Change #ifdef for limits.h. (Alan Hourihane)
+Files: src/fileio.c
+
+
+*** ../vim-7.2.310/src/fileio.c 2009-11-18 20:12:15.000000000 +0100
+--- src/fileio.c 2009-12-02 13:30:07.000000000 +0100
+***************
+*** 21,27 ****
+
+ #include "vim.h"
+
+! #ifdef __TANDEM
+ # include <limits.h> /* for SSIZE_MAX */
+ #endif
+
+--- 21,27 ----
+
+ #include "vim.h"
+
+! #if defined(__TANDEM) || defined(__MINT__)
+ # include <limits.h> /* for SSIZE_MAX */
+ #endif
+
+*** ../vim-7.2.310/src/version.c 2009-12-02 12:08:57.000000000 +0100
+--- src/version.c 2009-12-02 13:31:46.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 311,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+3. Your bookmark takes 15 minutes to scroll from top to bottom.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.312 b/source/ap/vim/patches/7.2.312
new file mode 100644
index 000000000..8b95868d4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.312
@@ -0,0 +1,312 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.312
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.312
+Problem: iconv() returns an invalid character sequence when conversion
+ fails. It should return an empty string. (Yongwei Wu)
+Solution: Be more strict about invalid characters in the input.
+Files: src/mbyte.c
+
+
+*** ../vim-7.2.311/src/mbyte.c 2009-06-16 15:23:07.000000000 +0200
+--- src/mbyte.c 2009-11-25 16:10:44.000000000 +0100
+***************
+*** 133,154 ****
+ static int dbcs_ptr2cells_len __ARGS((char_u *p, int size));
+ static int dbcs_ptr2char __ARGS((char_u *p));
+
+! /* Lookup table to quickly get the length in bytes of a UTF-8 character from
+! * the first byte of a UTF-8 string. Bytes which are illegal when used as the
+! * first byte have a one, because these will be used separately. */
+ static char utf8len_tab[256] =
+ {
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /*bogus*/
+! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /*bogus*/
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1,
+ };
+
+ /*
+ * XIM often causes trouble. Define XIM_DEBUG to get a log of XIM callbacks
+ * in the "xim.log" file.
+ */
+--- 133,172 ----
+ static int dbcs_ptr2cells_len __ARGS((char_u *p, int size));
+ static int dbcs_ptr2char __ARGS((char_u *p));
+
+! /*
+! * Lookup table to quickly get the length in bytes of a UTF-8 character from
+! * the first byte of a UTF-8 string.
+! * Bytes which are illegal when used as the first byte have a 1.
+! * The NUL byte has length 1.
+! */
+ static char utf8len_tab[256] =
+ {
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1,
+ };
+
+ /*
++ * Like utf8len_tab above, but using a zero for illegal lead bytes.
++ */
++ static char utf8len_tab_zero[256] =
++ {
++ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
++ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
++ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
++ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
++ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
++ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
++ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
++ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0,
++ };
++
++ /*
+ * XIM often causes trouble. Define XIM_DEBUG to get a log of XIM callbacks
+ * in the "xim.log" file.
+ */
+***************
+*** 1352,1358 ****
+ if (size > 0 && *p >= 0x80)
+ {
+ if (utf_ptr2len_len(p, size) < utf8len_tab[*p])
+! return 1;
+ c = utf_ptr2char(p);
+ /* An illegal byte is displayed as <xx>. */
+ if (utf_ptr2len(p) == 1 || c == NUL)
+--- 1370,1376 ----
+ if (size > 0 && *p >= 0x80)
+ {
+ if (utf_ptr2len_len(p, size) < utf8len_tab[*p])
+! return 1; /* truncated */
+ c = utf_ptr2char(p);
+ /* An illegal byte is displayed as <xx>. */
+ if (utf_ptr2len(p) == 1 || c == NUL)
+***************
+*** 1473,1479 ****
+ if (p[0] < 0x80) /* be quick for ASCII */
+ return p[0];
+
+! len = utf8len_tab[p[0]];
+ if (len > 1 && (p[1] & 0xc0) == 0x80)
+ {
+ if (len == 2)
+--- 1491,1497 ----
+ if (p[0] < 0x80) /* be quick for ASCII */
+ return p[0];
+
+! len = utf8len_tab_zero[p[0]];
+ if (len > 1 && (p[1] & 0xc0) == 0x80)
+ {
+ if (len == 2)
+***************
+*** 1723,1728 ****
+--- 1741,1747 ----
+ /*
+ * Return length of UTF-8 character, obtained from the first byte.
+ * "b" must be between 0 and 255!
++ * Returns 1 for an invalid first byte value.
+ */
+ int
+ utf_byte2len(b)
+***************
+*** 1737,1742 ****
+--- 1756,1762 ----
+ * Returns 1 for "".
+ * Returns 1 for an illegal byte sequence (also in incomplete byte seq.).
+ * Returns number > "size" for an incomplete byte sequence.
++ * Never returns zero.
+ */
+ int
+ utf_ptr2len_len(p, size)
+***************
+*** 1747,1757 ****
+ int i;
+ int m;
+
+! if (*p == NUL)
+! return 1;
+! m = len = utf8len_tab[*p];
+ if (len > size)
+ m = size; /* incomplete byte sequence. */
+ for (i = 1; i < m; ++i)
+ if ((p[i] & 0xc0) != 0x80)
+ return 1;
+--- 1767,1779 ----
+ int i;
+ int m;
+
+! len = utf8len_tab[*p];
+! if (len == 1)
+! return 1; /* NUL, ascii or illegal lead byte */
+ if (len > size)
+ m = size; /* incomplete byte sequence. */
++ else
++ m = len;
+ for (i = 1; i < m; ++i)
+ if ((p[i] & 0xc0) != 0x80)
+ return 1;
+***************
+*** 2505,2510 ****
+--- 2527,2533 ----
+ /*
+ * mb_head_off() function pointer.
+ * Return offset from "p" to the first byte of the character it points into.
++ * If "p" points to the NUL at the end of the string return 0.
+ * Returns 0 when already at the first byte of a character.
+ */
+ int
+***************
+*** 2524,2530 ****
+
+ /* It can't be a trailing byte when not using DBCS, at the start of the
+ * string or the previous byte can't start a double-byte. */
+! if (p <= base || MB_BYTE2LEN(p[-1]) == 1)
+ return 0;
+
+ /* This is slow: need to start at the base and go forward until the
+--- 2547,2553 ----
+
+ /* It can't be a trailing byte when not using DBCS, at the start of the
+ * string or the previous byte can't start a double-byte. */
+! if (p <= base || MB_BYTE2LEN(p[-1]) == 1 || *p == NUL)
+ return 0;
+
+ /* This is slow: need to start at the base and go forward until the
+***************
+*** 2552,2558 ****
+ * lead byte in the current cell. */
+ if (p <= base
+ || (enc_dbcs == DBCS_JPNU && p[-1] == 0x8e)
+! || MB_BYTE2LEN(p[-1]) == 1)
+ return 0;
+
+ /* This is slow: need to start at the base and go forward until the
+--- 2575,2582 ----
+ * lead byte in the current cell. */
+ if (p <= base
+ || (enc_dbcs == DBCS_JPNU && p[-1] == 0x8e)
+! || MB_BYTE2LEN(p[-1]) == 1
+! || *p == NUL)
+ return 0;
+
+ /* This is slow: need to start at the base and go forward until the
+***************
+*** 2578,2583 ****
+--- 2602,2608 ----
+ char_u *q;
+ char_u *s;
+ int c;
++ int len;
+ #ifdef FEAT_ARABIC
+ char_u *j;
+ #endif
+***************
+*** 2597,2604 ****
+ --q;
+ /* Check for illegal sequence. Do allow an illegal byte after where we
+ * started. */
+! if (utf8len_tab[*q] != (int)(s - q + 1)
+! && utf8len_tab[*q] != (int)(p - q + 1))
+ return 0;
+
+ if (q <= base)
+--- 2622,2629 ----
+ --q;
+ /* Check for illegal sequence. Do allow an illegal byte after where we
+ * started. */
+! len = utf8len_tab[*q];
+! if (len != (int)(s - q + 1) && len != (int)(p - q + 1))
+ return 0;
+
+ if (q <= base)
+***************
+*** 2810,2818 ****
+
+ while (end == NULL ? *p != NUL : p < end)
+ {
+! if ((*p & 0xc0) == 0x80)
+ return FALSE; /* invalid lead byte */
+- l = utf8len_tab[*p];
+ if (end != NULL && p + l > end)
+ return FALSE; /* incomplete byte sequence */
+ ++p;
+--- 2835,2843 ----
+
+ while (end == NULL ? *p != NUL : p < end)
+ {
+! l = utf8len_tab_zero[*p];
+! if (l == 0)
+ return FALSE; /* invalid lead byte */
+ if (end != NULL && p + l > end)
+ return FALSE; /* incomplete byte sequence */
+ ++p;
+***************
+*** 6117,6128 ****
+ d = retval;
+ for (i = 0; i < len; ++i)
+ {
+! l = utf_ptr2len(ptr + i);
+ if (l == 0)
+ *d++ = NUL;
+ else if (l == 1)
+ {
+! if (unconvlenp != NULL && utf8len_tab[ptr[i]] > len - i)
+ {
+ /* Incomplete sequence at the end. */
+ *unconvlenp = len - i;
+--- 6142,6161 ----
+ d = retval;
+ for (i = 0; i < len; ++i)
+ {
+! l = utf_ptr2len_len(ptr + i, len - i);
+ if (l == 0)
+ *d++ = NUL;
+ else if (l == 1)
+ {
+! int l_w = utf8len_tab_zero[ptr[i]];
+!
+! if (l_w == 0)
+! {
+! /* Illegal utf-8 byte cannot be converted */
+! vim_free(retval);
+! return NULL;
+! }
+! if (unconvlenp != NULL && l_w > len - i)
+ {
+ /* Incomplete sequence at the end. */
+ *unconvlenp = len - i;
+*** ../vim-7.2.311/src/version.c 2009-12-02 13:32:10.000000000 +0100
+--- src/version.c 2009-12-02 15:00:23.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 312,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+6. You refuse to go to a vacation spot with no electricity and no phone lines.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.313 b/source/ap/vim/patches/7.2.313
new file mode 100644
index 000000000..77b9103a4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.313
@@ -0,0 +1,117 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.313
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.313
+Problem: Command line completion doesn't work after "%:h" and similar.
+Solution: Expand these items before doing the completion.
+Files: src/ex_getln.c, src/misc1.c, src/proto/misc1.pro
+
+
+*** ../vim-7.2.312/src/ex_getln.c 2009-09-18 17:24:54.000000000 +0200
+--- src/ex_getln.c 2009-12-02 16:40:06.000000000 +0100
+***************
+*** 4422,4428 ****
+ flags |= EW_FILE;
+ else
+ flags = (flags | EW_DIR) & ~EW_FILE;
+! ret = expand_wildcards(1, &pat, num_file, file, flags);
+ if (free_pat)
+ vim_free(pat);
+ return ret;
+--- 4422,4429 ----
+ flags |= EW_FILE;
+ else
+ flags = (flags | EW_DIR) & ~EW_FILE;
+! /* Expand wildcards, supporting %:h and the like. */
+! ret = expand_wildcards_eval(&pat, num_file, file, flags);
+ if (free_pat)
+ vim_free(pat);
+ return ret;
+*** ../vim-7.2.312/src/misc1.c 2009-11-17 16:08:12.000000000 +0100
+--- src/misc1.c 2009-12-02 17:06:49.000000000 +0100
+***************
+*** 8447,8452 ****
+--- 8447,8492 ----
+ }
+
+ /*
++ * Invoke expand_wildcards() for one pattern.
++ * Expand items like "%:h" before the expansion.
++ * Returns OK or FAIL.
++ */
++ int
++ expand_wildcards_eval(pat, num_file, file, flags)
++ char_u **pat; /* pointer to input pattern */
++ int *num_file; /* resulting number of files */
++ char_u ***file; /* array of resulting files */
++ int flags; /* EW_DIR, etc. */
++ {
++ int ret = FAIL;
++ char_u *eval_pat = NULL;
++ char_u *exp_pat = *pat;
++ char_u *ignored_msg;
++ int usedlen;
++
++ if (*exp_pat == '%' || *exp_pat == '#' || *exp_pat == '<')
++ {
++ ++emsg_off;
++ eval_pat = eval_vars(exp_pat, exp_pat, &usedlen,
++ NULL, &ignored_msg, NULL);
++ --emsg_off;
++ if (eval_pat != NULL)
++ exp_pat = concat_str(eval_pat, exp_pat + usedlen);
++ }
++
++ if (exp_pat != NULL)
++ ret = expand_wildcards(1, &exp_pat, num_file, file, flags);
++
++ if (eval_pat != NULL)
++ {
++ vim_free(exp_pat);
++ vim_free(eval_pat);
++ }
++
++ return ret;
++ }
++
++ /*
+ * Expand wildcards. Calls gen_expand_wildcards() and removes files matching
+ * 'wildignore'.
+ * Returns OK or FAIL.
+*** ../vim-7.2.312/src/proto/misc1.pro 2007-09-26 22:36:32.000000000 +0200
+--- src/proto/misc1.pro 2009-12-02 16:41:52.000000000 +0100
+***************
+*** 85,90 ****
+--- 85,91 ----
+ int vim_fexists __ARGS((char_u *fname));
+ void line_breakcheck __ARGS((void));
+ void fast_breakcheck __ARGS((void));
++ int expand_wildcards_eval __ARGS((char_u **pat, int *num_file, char_u ***file, int flags));
+ int expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+ int match_suffix __ARGS((char_u *fname));
+ int unix_expandpath __ARGS((garray_T *gap, char_u *path, int wildoff, int flags, int didstar));
+*** ../vim-7.2.312/src/version.c 2009-12-02 15:03:24.000000000 +0100
+--- src/version.c 2009-12-02 17:14:02.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 313,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+8. You spend half of the plane trip with your laptop on your lap...and your
+ child in the overhead compartment.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.314 b/source/ap/vim/patches/7.2.314
new file mode 100644
index 000000000..490605d00
--- /dev/null
+++ b/source/ap/vim/patches/7.2.314
@@ -0,0 +1,56 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.314
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.314
+Problem: Missing function in small build.
+Solution: Always include concat_str.
+Files: src/misc1.c
+
+
+*** ../vim-7.2.313/src/misc1.c 2009-12-02 17:15:04.000000000 +0100
+--- src/misc1.c 2009-12-02 17:44:55.000000000 +0100
+***************
+*** 4666,4672 ****
+ return dest;
+ }
+
+- #if defined(FEAT_EVAL) || defined(FEAT_GETTEXT) || defined(PROTO)
+ /*
+ * Concatenate two strings and return the result in allocated memory.
+ * Returns NULL when out of memory.
+--- 4666,4671 ----
+***************
+*** 4687,4693 ****
+ }
+ return dest;
+ }
+- #endif
+
+ /*
+ * Add a path separator to a file name, unless it already ends in a path
+--- 4686,4691 ----
+*** ../vim-7.2.313/src/version.c 2009-12-02 17:15:04.000000000 +0100
+--- src/version.c 2009-12-02 17:47:18.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 314,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+9. All your daydreaming is preoccupied with getting a faster connection to the
+ net: 28.8...ISDN...cable modem...T1...T3.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.315 b/source/ap/vim/patches/7.2.315
new file mode 100644
index 000000000..6a5e7c7b1
--- /dev/null
+++ b/source/ap/vim/patches/7.2.315
@@ -0,0 +1,134 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.315
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.315
+Problem: Python libs can't be found on 64 bit system.
+Solution: Add lib64 to the list of directories. (Michael Henry)
+Files: src/auto/configure, src/configure.in
+
+
+*** ../vim-7.2.314/src/auto/configure 2009-11-17 17:13:03.000000000 +0100
+--- src/auto/configure 2009-12-02 17:21:20.000000000 +0100
+***************
+*** 5126,5132 ****
+
+ vi_cv_path_python_conf=
+ for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
+! for subdir in lib share; do
+ d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python_conf="$d"
+--- 5126,5132 ----
+
+ vi_cv_path_python_conf=
+ for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
+! for subdir in lib64 lib share; do
+ d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python_conf="$d"
+***************
+*** 13718,13725 ****
+ $as_echo "pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group" >&6; }
+ else
+ vim_cv_tty_group=world
+! { $as_echo "$as_me:$LINENO: result: ptys are world accessable" >&5
+! $as_echo "ptys are world accessable" >&6; }
+ fi
+
+ else
+--- 13718,13725 ----
+ $as_echo "pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group" >&6; }
+ else
+ vim_cv_tty_group=world
+! { $as_echo "$as_me:$LINENO: result: ptys are world accessible" >&5
+! $as_echo "ptys are world accessible" >&6; }
+ fi
+
+ else
+***************
+*** 13730,13737 ****
+ ( exit $ac_status )
+
+ vim_cv_tty_group=world
+! { $as_echo "$as_me:$LINENO: result: can't determine - assume ptys are world accessable" >&5
+! $as_echo "can't determine - assume ptys are world accessable" >&6; }
+
+ fi
+ rm -rf conftest.dSYM
+--- 13730,13737 ----
+ ( exit $ac_status )
+
+ vim_cv_tty_group=world
+! { $as_echo "$as_me:$LINENO: result: can't determine - assume ptys are world accessible" >&5
+! $as_echo "can't determine - assume ptys are world accessible" >&6; }
+
+ fi
+ rm -rf conftest.dSYM
+*** ../vim-7.2.314/src/configure.in 2009-11-17 17:13:03.000000000 +0100
+--- src/configure.in 2009-12-02 17:21:10.000000000 +0100
+***************
+*** 686,692 ****
+ [
+ vi_cv_path_python_conf=
+ for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
+! for subdir in lib share; do
+ d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python_conf="$d"
+--- 686,692 ----
+ [
+ vi_cv_path_python_conf=
+ for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
+! for subdir in lib64 lib share; do
+ d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python_conf="$d"
+***************
+*** 2557,2567 ****
+ AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
+ else
+ vim_cv_tty_group=world
+! AC_MSG_RESULT([ptys are world accessable])
+ fi
+ ],[
+ vim_cv_tty_group=world
+! AC_MSG_RESULT([can't determine - assume ptys are world accessable])
+ ],[
+ AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
+ ])
+--- 2557,2567 ----
+ AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
+ else
+ vim_cv_tty_group=world
+! AC_MSG_RESULT([ptys are world accessible])
+ fi
+ ],[
+ vim_cv_tty_group=world
+! AC_MSG_RESULT([can't determine - assume ptys are world accessible])
+ ],[
+ AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
+ ])
+*** ../vim-7.2.314/src/version.c 2009-12-02 17:47:46.000000000 +0100
+--- src/version.c 2009-12-02 17:57:39.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 315,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+10. And even your night dreams are in HTML.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.316 b/source/ap/vim/patches/7.2.316
new file mode 100644
index 000000000..34e629fe1
--- /dev/null
+++ b/source/ap/vim/patches/7.2.316
@@ -0,0 +1,83 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.316
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.316
+Problem: May get multiple _FORTIFY_SOURCE arguments. (Tony Mechelynck)
+Solution: First remove all these arguments and then add the one we want.
+ (Dominique Pelle)
+Files: src/auto/configure, src/configure.in
+
+
+*** ../vim-7.2.315/src/auto/configure 2009-12-02 17:59:08.000000000 +0100
+--- src/auto/configure 2009-12-16 17:05:59.000000000 +0100
+***************
+*** 17185,17194 ****
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+! { $as_echo "$as_me:$LINENO: checking whether we need -D_FORTIFY_SOURCE=1" >&5
+ $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS -D_FORTIFY_SOURCE=1" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' -e 's/-D_FORTIFY_SOURCE=2//g'`
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }
+ else
+--- 17185,17194 ----
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+! { $as_echo "$as_me:$LINENO: checking whether we need -D_FORTIFY_SOURCE=1" >&5
+ $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }
+ else
+*** ../vim-7.2.315/src/configure.in 2009-12-02 17:59:08.000000000 +0100
+--- src/configure.in 2009-12-16 17:05:55.000000000 +0100
+***************
+*** 3241,3249 ****
+ fi
+ dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
+ dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
+ AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS -D_FORTIFY_SOURCE=1" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' -e 's/-D_FORTIFY_SOURCE=2//g'`
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+--- 3241,3250 ----
+ fi
+ dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
+ dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
++ dnl Also remove duplicate _FORTIFY_SOURCE arguments.
+ AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+*** ../vim-7.2.315/src/version.c 2009-12-02 17:59:08.000000000 +0100
+--- src/version.c 2009-12-16 17:12:25.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 316,
+ /**/
+
+--
+Have you heard about the new Beowulf cluster? It's so fast, it executes
+an infinite loop in 6 seconds.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.317 b/source/ap/vim/patches/7.2.317
new file mode 100644
index 000000000..bc0ceeea4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.317
@@ -0,0 +1,148 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.317
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.317
+Problem: Memory leak when adding a highlight group with unprintable
+ characters, resulting in E669.
+Solution: Free the memory. And fix a few typos. (Dominique Pelle)
+Files: src/syntax.c
+
+
+*** ../vim-7.2.316/src/syntax.c 2009-05-17 13:30:58.000000000 +0200
+--- src/syntax.c 2009-12-16 18:09:05.000000000 +0100
+***************
+*** 206,212 ****
+ static int current_attr = 0; /* attr of current syntax word */
+ #ifdef FEAT_EVAL
+ static int current_id = 0; /* ID of current char for syn_get_id() */
+! static int current_trans_id = 0; /* idem, transparancy removed */
+ #endif
+
+ typedef struct syn_cluster_S
+--- 206,212 ----
+ static int current_attr = 0; /* attr of current syntax word */
+ #ifdef FEAT_EVAL
+ static int current_id = 0; /* ID of current char for syn_get_id() */
+! static int current_trans_id = 0; /* idem, transparency removed */
+ #endif
+
+ typedef struct syn_cluster_S
+***************
+*** 282,288 ****
+ int si_idx; /* index of syntax pattern or
+ KEYWORD_IDX */
+ int si_id; /* highlight group ID for keywords */
+! int si_trans_id; /* idem, transparancy removed */
+ int si_m_lnum; /* lnum of the match */
+ int si_m_startcol; /* starting column of the match */
+ lpos_T si_m_endpos; /* just after end posn of the match */
+--- 282,288 ----
+ int si_idx; /* index of syntax pattern or
+ KEYWORD_IDX */
+ int si_id; /* highlight group ID for keywords */
+! int si_trans_id; /* idem, transparency removed */
+ int si_m_lnum; /* lnum of the match */
+ int si_m_startcol; /* starting column of the match */
+ lpos_T si_m_endpos; /* just after end posn of the match */
+***************
+*** 1274,1280 ****
+ dist = syn_buf->b_ml.ml_line_count / (syn_buf->b_sst_len - Rows) + 1;
+
+ /*
+! * Go throught the list to find the "tick" for the oldest entry that can
+ * be removed. Set "above" when the "tick" for the oldest entry is above
+ * "b_sst_lasttick" (the display tick wraps around).
+ */
+--- 1274,1280 ----
+ dist = syn_buf->b_ml.ml_line_count / (syn_buf->b_sst_len - Rows) + 1;
+
+ /*
+! * Go through the list to find the "tick" for the oldest entry that can
+ * be removed. Set "above" when the "tick" for the oldest entry is above
+ * "b_sst_lasttick" (the display tick wraps around).
+ */
+***************
+*** 2319,2325 ****
+ ? (syn_buf->b_spell_cluster_id == 0)
+ : (syn_buf->b_syn_spell == SYNSPL_TOP);
+
+! /* nextgroup ends at end of line, unless "skipnl" or "skipemtpy" present */
+ if (current_next_list != NULL
+ && syn_getcurline()[current_col + 1] == NUL
+ && !(current_next_flags & (HL_SKIPNL | HL_SKIPEMPTY)))
+--- 2319,2325 ----
+ ? (syn_buf->b_spell_cluster_id == 0)
+ : (syn_buf->b_syn_spell == SYNSPL_TOP);
+
+! /* nextgroup ends at end of line, unless "skipnl" or "skipempty" present */
+ if (current_next_list != NULL
+ && syn_getcurline()[current_col + 1] == NUL
+ && !(current_next_flags & (HL_SKIPNL | HL_SKIPEMPTY)))
+***************
+*** 6108,6114 ****
+ win_T *wp;
+ long lnum;
+ colnr_T col;
+! int trans; /* remove transparancy */
+ int *spellp; /* return: can do spell checking */
+ int keep_state; /* keep state of char at "col" */
+ {
+--- 6108,6114 ----
+ win_T *wp;
+ long lnum;
+ colnr_T col;
+! int trans; /* remove transparency */
+ int *spellp; /* return: can do spell checking */
+ int keep_state; /* keep state of char at "col" */
+ {
+***************
+*** 7523,7529 ****
+ #if defined(FEAT_GUI) || defined(PROTO)
+ /*
+ * Set the normal foreground and background colors according to the "Normal"
+! * highlighighting group. For X11 also set "Menu", "Scrollbar", and
+ * "Tooltip" colors.
+ */
+ void
+--- 7523,7529 ----
+ #if defined(FEAT_GUI) || defined(PROTO)
+ /*
+ * Set the normal foreground and background colors according to the "Normal"
+! * highlighting group. For X11 also set "Menu", "Scrollbar", and
+ * "Tooltip" colors.
+ */
+ void
+***************
+*** 8647,8652 ****
+--- 8647,8653 ----
+ if (!vim_isprintc(*p))
+ {
+ EMSG(_("E669: Unprintable character in group name"));
++ vim_free(name);
+ return 0;
+ }
+ else if (!ASCII_ISALNUM(*p) && *p != '_')
+*** ../vim-7.2.316/src/version.c 2009-12-16 17:14:08.000000000 +0100
+--- src/version.c 2009-12-16 18:09:14.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 317,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+35. Your husband tells you he's had the beard for 2 months.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.318 b/source/ap/vim/patches/7.2.318
new file mode 100644
index 000000000..430183606
--- /dev/null
+++ b/source/ap/vim/patches/7.2.318
@@ -0,0 +1,91 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.318
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.318
+Problem: Wrong locale value breaks floating point numbers for gvim.
+Solution: Set the locale again after doing GUI inits. (Dominique Pelle)
+Files: src/main.c
+
+
+*** ../vim-7.2.317/src/main.c 2009-11-17 12:31:30.000000000 +0100
+--- src/main.c 2009-12-16 18:23:46.000000000 +0100
+***************
+*** 366,379 ****
+ * Check if the GUI can be started. Reset gui.starting if not.
+ * Don't know about other systems, stay on the safe side and don't check.
+ */
+! if (gui.starting && gui_init_check() == FAIL)
+ {
+! gui.starting = FALSE;
+
+! /* When running "evim" or "gvim -y" we need the menus, exit if we
+! * don't have them. */
+! if (params.evim_mode)
+! mch_exit(1);
+ }
+ # endif
+ #endif
+--- 366,386 ----
+ * Check if the GUI can be started. Reset gui.starting if not.
+ * Don't know about other systems, stay on the safe side and don't check.
+ */
+! if (gui.starting)
+ {
+! if (gui_init_check() == FAIL)
+! {
+! gui.starting = FALSE;
+
+! /* When running "evim" or "gvim -y" we need the menus, exit if we
+! * don't have them. */
+! if (params.evim_mode)
+! mch_exit(1);
+! }
+! # if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+! /* Re-initialize locale, it may have been altered by gui_init_check() */
+! init_locale();
+! # endif
+ }
+ # endif
+ #endif
+***************
+*** 3685,3691 ****
+ }
+ else if (STRICMP(argv[i], "--servername") == 0)
+ {
+! /* Alredy processed. Take it out of the command line */
+ i++;
+ continue;
+ }
+--- 3692,3698 ----
+ }
+ else if (STRICMP(argv[i], "--servername") == 0)
+ {
+! /* Already processed. Take it out of the command line */
+ i++;
+ continue;
+ }
+*** ../vim-7.2.317/src/version.c 2009-12-16 18:13:04.000000000 +0100
+--- src/version.c 2009-12-16 18:26:24.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 318,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+36. You miss more than five meals a week downloading the latest games from
+ Apogee.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.319 b/source/ap/vim/patches/7.2.319
new file mode 100644
index 000000000..3cbfd42ef
--- /dev/null
+++ b/source/ap/vim/patches/7.2.319
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.319
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.319
+Problem: Motif: accessing freed memory when cancelling font dialog.
+Solution: Destroy the widget only after accessing it. (Dominique Pelle)
+Files: src/gui_xmdlg.c
+
+
+*** ../vim-7.2.318/src/gui_xmdlg.c 2009-11-03 12:53:44.000000000 +0100
+--- src/gui_xmdlg.c 2009-12-16 18:39:21.000000000 +0100
+***************
+*** 1274,1286 ****
+ XtAppProcessEvent(XtWidgetToApplicationContext(data->dialog),
+ (XtInputMask)XtIMAll);
+
+- XtDestroyWidget(data->dialog);
+-
+ if (data->old)
+ {
+ XFreeFont(XtDisplay(data->dialog), data->old);
+ XmFontListFree(data->old_list);
+ }
+
+ gui_motif_synch_fonts();
+
+--- 1274,1285 ----
+ XtAppProcessEvent(XtWidgetToApplicationContext(data->dialog),
+ (XtInputMask)XtIMAll);
+
+ if (data->old)
+ {
+ XFreeFont(XtDisplay(data->dialog), data->old);
+ XmFontListFree(data->old_list);
+ }
++ XtDestroyWidget(data->dialog);
+
+ gui_motif_synch_fonts();
+
+*** ../vim-7.2.318/src/version.c 2009-12-16 18:27:29.000000000 +0100
+--- src/version.c 2009-12-16 18:40:06.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 319,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+37. You start looking for hot HTML addresses in public restrooms.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.320 b/source/ap/vim/patches/7.2.320
new file mode 100644
index 000000000..73f62247e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.320
@@ -0,0 +1,199 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.320
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.320
+Problem: Unused function in Mzscheme interface.
+Solution: Remove the function and what depends on it. (Dominique Pelle)
+Files: src/if_mzsch.c, src/proto/if_mzsch.pro
+
+
+*** ../vim-7.2.319/src/if_mzsch.c 2009-09-11 12:20:47.000000000 +0200
+--- src/if_mzsch.c 2009-12-16 19:01:04.000000000 +0100
+***************
+*** 70,83 ****
+ Scheme_Object *port;
+ } Port_Info;
+
+- /* info for do_apply */
+- typedef struct
+- {
+- Scheme_Object *proc;
+- int argc;
+- Scheme_Object **argv;
+- } Apply_Info;
+-
+ /*
+ *========================================================================
+ * Vim-Control Commands
+--- 70,75 ----
+***************
+*** 160,166 ****
+ static Scheme_Object *extract_exn_message(Scheme_Object *v);
+ static Scheme_Object *do_eval(void *, int noargc, Scheme_Object **noargv);
+ static Scheme_Object *do_load(void *, int noargc, Scheme_Object **noargv);
+- static Scheme_Object *do_apply(void *, int noargc, Scheme_Object **noargv);
+ static void register_vim_exn(void);
+ static vim_mz_buffer *get_buffer_arg(const char *fname, int argnum,
+ int argc, Scheme_Object **argv);
+--- 152,157 ----
+***************
+*** 1056,1062 ****
+ MZ_GC_REG();
+ config = scheme_config;
+ MZ_GC_CHECK();
+! /* recreate ports each call effectivelly clearing these ones */
+ curout = scheme_make_string_output_port();
+ MZ_GC_CHECK();
+ curerr = scheme_make_string_output_port();
+--- 1047,1053 ----
+ MZ_GC_REG();
+ config = scheme_config;
+ MZ_GC_CHECK();
+! /* recreate ports each call effectively clearing these ones */
+ curout = scheme_make_string_output_port();
+ MZ_GC_CHECK();
+ curerr = scheme_make_string_output_port();
+***************
+*** 1196,1231 ****
+ }
+ }
+
+- /*
+- * apply MzScheme procedure with arguments,
+- * handling errors
+- */
+- Scheme_Object *
+- mzvim_apply(Scheme_Object *proc, int argc, Scheme_Object **argv)
+- {
+- if (mzscheme_init())
+- return FAIL;
+- else
+- {
+- Apply_Info data = {NULL, 0, NULL};
+- Scheme_Object *ret = NULL;
+-
+- MZ_GC_DECL_REG(5);
+- MZ_GC_VAR_IN_REG(0, ret);
+- MZ_GC_VAR_IN_REG(1, data.proc);
+- MZ_GC_ARRAY_VAR_IN_REG(2, data.argv, argc);
+- MZ_GC_REG();
+-
+- data.proc = proc;
+- data.argc = argc;
+- data.argv = argv;
+-
+- eval_with_exn_handling(&data, do_apply, &ret);
+- MZ_GC_UNREG();
+- return ret;
+- }
+- }
+-
+ static Scheme_Object *
+ do_load(void *data, int noargc, Scheme_Object **noargv)
+ {
+--- 1187,1192 ----
+***************
+*** 1257,1263 ****
+ MZ_GC_CHECK();
+ }
+
+! /* errors will be caught in do_mzscheme_comamnd and ex_mzfile */
+ scheme_close_input_port(pinfo->port);
+ MZ_GC_CHECK();
+ pinfo->port = NULL;
+--- 1218,1224 ----
+ MZ_GC_CHECK();
+ }
+
+! /* errors will be caught in do_mzscheme_command and ex_mzfile */
+ scheme_close_input_port(pinfo->port);
+ MZ_GC_CHECK();
+ pinfo->port = NULL;
+***************
+*** 1348,1360 ****
+ return scheme_eval_string_all((char *)s, environment, TRUE);
+ }
+
+- static Scheme_Object *
+- do_apply(void *a, int noargc, Scheme_Object **noargv)
+- {
+- Apply_Info *info = (Apply_Info *)a;
+- return scheme_apply(info->proc, info->argc, info->argv);
+- }
+-
+ /*
+ *========================================================================
+ * 3. MzScheme I/O Handlers
+--- 1309,1314 ----
+***************
+*** 2128,2134 ****
+ static Scheme_Object *
+ set_buffer_line(void *data, int argc, Scheme_Object **argv)
+ {
+! /* First of all, we check the the of the supplied MzScheme object.
+ * There are three cases:
+ * 1. #f - this is a deletion.
+ * 2. A string - this is a replacement.
+--- 2082,2088 ----
+ static Scheme_Object *
+ set_buffer_line(void *data, int argc, Scheme_Object **argv)
+ {
+! /* First of all, we check the value of the supplied MzScheme object.
+ * There are three cases:
+ * 1. #f - this is a deletion.
+ * 2. A string - this is a replacement.
+***************
+*** 2428,2434 ****
+ /*
+ * (insert-buff-line-list {linenr} {string/string-list} [buffer])
+ *
+! * Insert a number of lines into the specified buffer after the specifed line.
+ * The line number is in Vim format (1-based). The lines to be inserted are
+ * given as an MzScheme list of string objects or as a single string. The lines
+ * to be added are checked for validity and correct format. Errors are
+--- 2382,2388 ----
+ /*
+ * (insert-buff-line-list {linenr} {string/string-list} [buffer])
+ *
+! * Insert a number of lines into the specified buffer after the specified line.
+ * The line number is in Vim format (1-based). The lines to be inserted are
+ * given as an MzScheme list of string objects or as a single string. The lines
+ * to be added are checked for validity and correct format. Errors are
+*** ../vim-7.2.319/src/proto/if_mzsch.pro 2009-05-26 22:58:43.000000000 +0200
+--- src/proto/if_mzsch.pro 2009-12-16 19:01:01.000000000 +0100
+***************
+*** 13,20 ****
+ void mzvim_check_threads __ARGS((void));
+ void mzvim_reset_timer __ARGS((void));
+ void *mzvim_eval_string __ARGS((char_u *str));
+- struct Scheme_Object *mzvim_apply __ARGS((struct Scheme_Object *, int argc,
+- struct Scheme_Object **));
+ int mzthreads_allowed __ARGS((void));
+ void mzscheme_main __ARGS((void));
+ /* vim: set ft=c : */
+--- 13,18 ----
+*** ../vim-7.2.319/src/version.c 2009-12-16 18:49:09.000000000 +0100
+--- src/version.c 2009-12-16 18:53:48.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 320,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+38. You wake up at 3 a.m. to go to the bathroom and stop and check your e-mail
+ on the way back to bed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.321 b/source/ap/vim/patches/7.2.321
new file mode 100644
index 000000000..69c08f489
--- /dev/null
+++ b/source/ap/vim/patches/7.2.321
@@ -0,0 +1,59 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.321
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.321
+Problem: histadd() and searching with "*" fails to add entry to history
+ when it is empty.
+Solution: Initialize the history. (Lech Lorens)
+Files: src/eval.c, src/normal.c
+
+
+*** ../vim-7.2.320/src/eval.c 2009-11-17 12:20:30.000000000 +0100
+--- src/eval.c 2009-12-24 14:37:50.000000000 +0100
+***************
+*** 12014,12019 ****
+--- 12014,12020 ----
+ str = get_tv_string_buf(&argvars[1], buf);
+ if (*str != NUL)
+ {
++ init_history();
+ add_to_history(histype, str, FALSE, NUL);
+ rettv->vval.v_number = TRUE;
+ return;
+*** ../vim-7.2.320/src/normal.c 2009-05-17 13:30:58.000000000 +0200
+--- src/normal.c 2009-12-24 14:38:28.000000000 +0100
+***************
+*** 5602,5607 ****
+--- 5602,5608 ----
+ STRCAT(buf, "\\>");
+ #ifdef FEAT_CMDHIST
+ /* put pattern in search history */
++ init_history();
+ add_to_history(HIST_SEARCH, buf, TRUE, NUL);
+ #endif
+ normal_search(cap, cmdchar == '*' ? '/' : '?', buf, 0);
+*** ../vim-7.2.320/src/version.c 2009-12-16 19:02:05.000000000 +0100
+--- src/version.c 2009-12-24 14:39:46.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 321,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+43. You tell the kids they can't use the computer because "Daddy's got work to
+ do" and you don't even have a job.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.322 b/source/ap/vim/patches/7.2.322
new file mode 100644
index 000000000..57f27fcd8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.322
@@ -0,0 +1,49 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.322
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.322
+Problem: Wrong indenting in virtual replace mode with CTRL-Y below a short
+ line.
+Solution: Check for character to be NUL. (suggested by Lech Lorens)
+Files: src/edit.c
+
+
+*** ../vim-7.2.321/src/edit.c 2009-11-17 17:40:34.000000000 +0100
+--- src/edit.c 2009-12-24 15:18:23.000000000 +0100
+***************
+*** 7397,7402 ****
+--- 7397,7406 ----
+ int icase;
+ int i;
+
++ if (keytyped == NUL)
++ /* Can happen with CTRL-Y and CTRL-E on a short line. */
++ return FALSE;
++
+ #ifdef FEAT_EVAL
+ if (*curbuf->b_p_inde != NUL)
+ look = curbuf->b_p_indk; /* 'indentexpr' set: use 'indentkeys' */
+*** ../vim-7.2.321/src/version.c 2009-12-24 15:00:31.000000000 +0100
+--- src/version.c 2009-12-24 15:44:46.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 322,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+45. You buy a Captain Kirk chair with a built-in keyboard and mouse.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.323 b/source/ap/vim/patches/7.2.323
new file mode 100644
index 000000000..fc4324615
--- /dev/null
+++ b/source/ap/vim/patches/7.2.323
@@ -0,0 +1,95 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.323 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.323 (extra)
+Problem: Balloon evaluation crashes on Win64.
+Solution: Change pointer types. (Sergey Khorev)
+Files: src/gui_w32.c
+
+
+*** ../vim-7.2.322/src/gui_w32.c 2009-01-28 21:22:20.000000000 +0100
+--- src/gui_w32.c 2009-12-24 16:06:41.000000000 +0100
+***************
+*** 212,223 ****
+ DWORD dwPlatformID;
+ } DLLVERSIONINFO;
+
+ typedef struct tagTOOLINFOA_NEW
+ {
+ UINT cbSize;
+ UINT uFlags;
+ HWND hwnd;
+! UINT uId;
+ RECT rect;
+ HINSTANCE hinst;
+ LPSTR lpszText;
+--- 212,225 ----
+ DWORD dwPlatformID;
+ } DLLVERSIONINFO;
+
++ #include <poppack.h>
++
+ typedef struct tagTOOLINFOA_NEW
+ {
+ UINT cbSize;
+ UINT uFlags;
+ HWND hwnd;
+! UINT_PTR uId;
+ RECT rect;
+ HINSTANCE hinst;
+ LPSTR lpszText;
+***************
+*** 227,241 ****
+ typedef struct tagNMTTDISPINFO_NEW
+ {
+ NMHDR hdr;
+! LPTSTR lpszText;
+ char szText[80];
+ HINSTANCE hinst;
+ UINT uFlags;
+ LPARAM lParam;
+ } NMTTDISPINFO_NEW;
+
+- #include <poppack.h>
+-
+ typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
+ #ifndef TTM_SETMAXTIPWIDTH
+ # define TTM_SETMAXTIPWIDTH (WM_USER+24)
+--- 229,241 ----
+ typedef struct tagNMTTDISPINFO_NEW
+ {
+ NMHDR hdr;
+! LPSTR lpszText;
+ char szText[80];
+ HINSTANCE hinst;
+ UINT uFlags;
+ LPARAM lParam;
+ } NMTTDISPINFO_NEW;
+
+ typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
+ #ifndef TTM_SETMAXTIPWIDTH
+ # define TTM_SETMAXTIPWIDTH (WM_USER+24)
+*** ../vim-7.2.322/src/version.c 2009-12-24 15:45:53.000000000 +0100
+--- src/version.c 2009-12-24 16:08:33.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 323,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+46. Your wife makes a new rule: "The computer cannot come to bed."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.324 b/source/ap/vim/patches/7.2.324
new file mode 100644
index 000000000..8f61b8acb
--- /dev/null
+++ b/source/ap/vim/patches/7.2.324
@@ -0,0 +1,66 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.324
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.324
+Problem: A negative column argument in setpos() may cause a crash.
+Solution: Check for invalid column number. (James Vega)
+Files: src/eval.c, src/misc2.c
+
+
+*** ../vim-7.2.323/src/eval.c 2009-12-24 15:00:31.000000000 +0100
+--- src/eval.c 2009-12-31 13:09:19.000000000 +0100
+***************
+*** 15542,15548 ****
+ {
+ if (list2fpos(&argvars[1], &pos, &fnum) == OK)
+ {
+! --pos.col;
+ if (name[0] == '.' && name[1] == NUL)
+ {
+ /* set cursor */
+--- 15542,15549 ----
+ {
+ if (list2fpos(&argvars[1], &pos, &fnum) == OK)
+ {
+! if (--pos.col < 0)
+! pos.col = 0;
+ if (name[0] == '.' && name[1] == NUL)
+ {
+ /* set cursor */
+*** ../vim-7.2.323/src/misc2.c 2009-11-25 17:15:16.000000000 +0100
+--- src/misc2.c 2009-12-31 13:12:36.000000000 +0100
+***************
+*** 528,533 ****
+--- 528,535 ----
+ #endif
+ }
+ }
++ else if (curwin->w_cursor.col < 0)
++ curwin->w_cursor.col = 0;
+
+ #ifdef FEAT_VIRTUALEDIT
+ /* If virtual editing is on, we can leave the cursor on the old position,
+*** ../vim-7.2.323/src/version.c 2009-12-24 16:11:24.000000000 +0100
+--- src/version.c 2009-12-31 13:17:25.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 324,
+ /**/
+
+--
+"Thou shalt not follow the Null Pointer, for at its end Chaos and
+Madness lie."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.325 b/source/ap/vim/patches/7.2.325
new file mode 100644
index 000000000..77a6e089f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.325
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.325
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.325
+Problem: A stray "w" in the startup vimrc file causes the edited file to be
+ replaced with an empty file. (Stone Kang).
+Solution: Do not write a buffer when it has never been loaded.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.324/src/fileio.c 2009-12-02 13:32:10.000000000 +0100
+--- src/fileio.c 2009-12-31 14:08:31.000000000 +0100
+***************
+*** 2981,2986 ****
+--- 2981,2993 ----
+
+ if (fname == NULL || *fname == NUL) /* safety check */
+ return FAIL;
++ if (buf->b_ml.ml_mfp == NULL)
++ {
++ /* This can happen during startup when there is a stray "w" in the
++ * vimrc file. */
++ EMSG(_(e_emptybuf));
++ return FAIL;
++ }
+
+ /*
+ * Disallow writing from .exrc and .vimrc in current directory for
+*** ../vim-7.2.324/src/version.c 2009-12-31 13:18:05.000000000 +0100
+--- src/version.c 2009-12-31 14:52:29.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 325,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+74. Your most erotic dreams are about cybersex
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.326 b/source/ap/vim/patches/7.2.326
new file mode 100644
index 000000000..8e988a8da
--- /dev/null
+++ b/source/ap/vim/patches/7.2.326
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.326
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.326
+Problem: Win32: $HOME doesn't work when %HOMEPATH% is not defined.
+Solution: Use "\" for %HOMEPATH% when it is not defined.
+Files: src/misc1.c
+
+
+*** ../vim-7.2.325/src/misc1.c 2009-12-02 17:47:46.000000000 +0100
+--- src/misc1.c 2010-01-05 19:53:23.000000000 +0100
+***************
+*** 3470,3476 ****
+
+ homedrive = mch_getenv((char_u *)"HOMEDRIVE");
+ homepath = mch_getenv((char_u *)"HOMEPATH");
+! if (homedrive != NULL && homepath != NULL
+ && STRLEN(homedrive) + STRLEN(homepath) < MAXPATHL)
+ {
+ sprintf((char *)NameBuff, "%s%s", homedrive, homepath);
+--- 3470,3478 ----
+
+ homedrive = mch_getenv((char_u *)"HOMEDRIVE");
+ homepath = mch_getenv((char_u *)"HOMEPATH");
+! if (homepath == NULL || *homepath == NUL)
+! homepath = "\\";
+! if (homedrive != NULL
+ && STRLEN(homedrive) + STRLEN(homepath) < MAXPATHL)
+ {
+ sprintf((char *)NameBuff, "%s%s", homedrive, homepath);
+*** ../vim-7.2.325/src/version.c 2009-12-31 14:52:48.000000000 +0100
+--- src/version.c 2010-01-06 17:39:23.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 326,
+ /**/
+
+--
+From "know your smileys":
+ :q vi user saying, "How do I get out of this damn emacs editor?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.327 b/source/ap/vim/patches/7.2.327
new file mode 100644
index 000000000..4bfb077c8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.327
@@ -0,0 +1,323 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.327
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.327
+Problem: Unused functions in Workshop.
+Solution: Add "#if 0" and minor cleanup. (Dominique Pelle)
+Files: src/workshop.c, src/integration.c, src/ingegration.h
+
+
+*** ../vim-7.2.326/src/workshop.c 2009-05-21 23:25:38.000000000 +0200
+--- src/workshop.c 2010-01-06 18:10:10.000000000 +0100
+***************
+*** 56,67 ****
+ static void load_window(char *, int lnum);
+ static void warp_to_pc(int);
+ #ifdef FEAT_BEVAL
+! void workshop_beval_cb(BalloonEval *, int);
+ #endif
+ static char *fixAccelText(char *);
+ static void addMenu(char *, char *, char *);
+ static char *lookupVerb(char *, int);
+- static int computeIndex(int, char_u *, int);
+ static void coloncmd(char *, Boolean);
+
+ extern Widget vimShell;
+--- 56,67 ----
+ static void load_window(char *, int lnum);
+ static void warp_to_pc(int);
+ #ifdef FEAT_BEVAL
+! void workshop_beval_cb(BalloonEval *, int);
+! static int computeIndex(int, char_u *, int);
+ #endif
+ static char *fixAccelText(char *);
+ static void addMenu(char *, char *, char *);
+ static char *lookupVerb(char *, int);
+ static void coloncmd(char *, Boolean);
+
+ extern Widget vimShell;
+***************
+*** 1624,1631 ****
+ }
+ }
+ }
+- #endif
+-
+
+ static int
+ computeIndex(
+--- 1624,1629 ----
+***************
+*** 1649,1654 ****
+--- 1647,1653 ----
+
+ return -1;
+ }
++ #endif
+
+ static void
+ addMenu(
+*** ../vim-7.2.326/src/integration.c 2008-06-24 22:27:10.000000000 +0200
+--- src/integration.c 2010-01-06 18:18:11.000000000 +0100
+***************
+*** 78,84 ****
+
+ /* Functions private to this file */
+ static void workshop_connection_closed(void);
+! static void messageFromEserve(XtPointer clientData, int *NOTUSED1, XtInputId *NOTUSED2);
+ static void workshop_disconnect(void);
+ static void workshop_sensitivity(int num, char *table);
+ static void adjust_sign_name(char *filename);
+--- 78,84 ----
+
+ /* Functions private to this file */
+ static void workshop_connection_closed(void);
+! static void messageFromEserve(XtPointer clientData, int *dum1, XtInputId *dum2);
+ static void workshop_disconnect(void);
+ static void workshop_sensitivity(int num, char *table);
+ static void adjust_sign_name(char *filename);
+***************
+*** 157,165 ****
+
+ }
+
+- /*ARGSUSED*/
+ void
+! messageFromEserve(XtPointer clientData, int *NOTUSED1, XtInputId *NOTUSED2)
+ {
+ char *cmd; /* the 1st word of the command */
+
+--- 157,166 ----
+
+ }
+
+ void
+! messageFromEserve(XtPointer clientData UNUSED,
+! int *dum1 UNUSED,
+! XtInputId *dum2 UNUSED)
+ {
+ char *cmd; /* the 1st word of the command */
+
+***************
+*** 199,205 ****
+ if (sign) {
+ sign++;
+ }
+! /* Change sign name to accomodate a different size? */
+ adjust_sign_name(sign);
+ workshop_add_mark_type(idx, color, sign);
+ }
+--- 200,206 ----
+ if (sign) {
+ sign++;
+ }
+! /* Change sign name to accommodate a different size? */
+ adjust_sign_name(sign);
+ workshop_add_mark_type(idx, color, sign);
+ }
+***************
+*** 580,586 ****
+ #endif
+
+
+! /* Change sign name to accomodate a different size:
+ * Create the filename based on the height. The filename format
+ * of multisize icons are:
+ * x.xpm : largest icon
+--- 581,587 ----
+ #endif
+
+
+! /* Change sign name to accommodate a different size:
+ * Create the filename based on the height. The filename format
+ * of multisize icons are:
+ * x.xpm : largest icon
+***************
+*** 614,619 ****
+--- 615,621 ----
+ strcpy(s, ".xpm");
+ }
+
++ #if 0
+ /* Were we invoked by WorkShop? This function can be used early during startup
+ if you want to do things differently if the editor is started standalone
+ or in WorkShop mode. For example, in standalone mode you may not want to
+***************
+*** 627,632 ****
+--- 629,635 ----
+ }
+ return result;
+ }
++ #endif
+
+ /* Connect back to eserve */
+ void workshop_connect(XtAppContext context)
+***************
+*** 750,755 ****
+--- 753,759 ----
+ * Utility functions
+ */
+
++ #if 0
+ /* Set icon for the window */
+ void
+ workshop_set_icon(Display *display, Widget shell, char **xpmdata,
+***************
+*** 793,798 ****
+--- 797,803 ----
+ }
+ XtFree((char *)xpmAttributes.colorsymbols);
+ }
++ #endif
+
+ /* Minimize and maximize shells. From libutil's shell.cc. */
+
+***************
+*** 927,933 ****
+ return success;
+ }
+
+!
+ Boolean workshop_get_rows_cols(int *rows, int *cols)
+ {
+ static int r = 0;
+--- 932,938 ----
+ return success;
+ }
+
+! #if 0
+ Boolean workshop_get_rows_cols(int *rows, int *cols)
+ {
+ static int r = 0;
+***************
+*** 958,963 ****
+--- 963,969 ----
+ }
+ return success;
+ }
++ #endif
+
+ /*
+ * Toolbar code
+***************
+*** 1043,1054 ****
+ }
+
+
+!
+ /*
+ * Send information to eserve on certain editor events
+ * You must make sure these are called when necessary
+ */
+-
+ void workshop_file_closed(char *filename)
+ {
+ char buffer[2*MAXPATHLEN];
+--- 1049,1059 ----
+ }
+
+
+! #if 0
+ /*
+ * Send information to eserve on certain editor events
+ * You must make sure these are called when necessary
+ */
+ void workshop_file_closed(char *filename)
+ {
+ char buffer[2*MAXPATHLEN];
+***************
+*** 1056,1061 ****
+--- 1061,1067 ----
+ NOCATGETS("deletedFile %s\n"), filename);
+ write(sd, buffer, strlen(buffer));
+ }
++ #endif
+
+ void workshop_file_closed_lineno(char *filename, int lineno)
+ {
+***************
+*** 1086,1106 ****
+ workshop_moved_marks(filename);
+ }
+
+! void workshop_move_mark(char *filename, int markId, int newLineno)
+ {
+ char buffer[2*MAXPATHLEN];
+ vim_snprintf(buffer, sizeof(buffer),
+! NOCATGETS("moveMark %s %d %d\n"), filename, markId, newLineno);
+ write(sd, buffer, strlen(buffer));
+ }
+
+! void workshop_file_modified(char *filename)
+ {
+ char buffer[2*MAXPATHLEN];
+ vim_snprintf(buffer, sizeof(buffer),
+! NOCATGETS("modifiedFile %s\n"), filename);
+ write(sd, buffer, strlen(buffer));
+ }
+
+ void workshop_frame_moved(int new_x, int new_y, int new_w, int new_h)
+ {
+--- 1092,1114 ----
+ workshop_moved_marks(filename);
+ }
+
+! #if 0
+! void workshop_file_modified(char *filename)
+ {
+ char buffer[2*MAXPATHLEN];
+ vim_snprintf(buffer, sizeof(buffer),
+! NOCATGETS("modifiedFile %s\n"), filename);
+ write(sd, buffer, strlen(buffer));
+ }
+
+! void workshop_move_mark(char *filename, int markId, int newLineno)
+ {
+ char buffer[2*MAXPATHLEN];
+ vim_snprintf(buffer, sizeof(buffer),
+! NOCATGETS("moveMark %s %d %d\n"), filename, markId, newLineno);
+ write(sd, buffer, strlen(buffer));
+ }
++ #endif
+
+ void workshop_frame_moved(int new_x, int new_y, int new_w, int new_h)
+ {
+***************
+*** 1179,1188 ****
+--- 1187,1198 ----
+ }
+
+ /* Send a message to eserve */
++ #if defined(NOHANDS_SUPPORT_FUNCTIONS) || defined(FEAT_BEVAL)
+ void workshop_send_message(char *buf)
+ {
+ write(sd, buf, strlen(buf));
+ }
++ #endif
+
+ /* Some methods, like currentFile, cursorPos, etc. are missing here.
+ * But it looks like these are used for NoHands testing only so we
+*** ../vim-7.2.326/src/version.c 2010-01-06 17:46:03.000000000 +0100
+--- src/version.c 2010-01-06 18:20:41.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 327,
+ /**/
+
+--
+From "know your smileys":
+ (:-# Said something he shouldn't have
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.328 b/source/ap/vim/patches/7.2.328
new file mode 100644
index 000000000..f547fb944
--- /dev/null
+++ b/source/ap/vim/patches/7.2.328
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.328
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.328
+Problem: has("win64") does not return 1 on 64 bit MS-Windows version.
+Solution: Also check for _WIN64 besides WIN64.
+Files: src/eval.c
+
+
+*** ../vim-7.2.327/src/eval.c 2009-12-31 13:18:05.000000000 +0100
+--- src/eval.c 2010-01-06 16:28:23.000000000 +0100
+***************
+*** 11453,11459 ****
+ #if defined(UNIX) && (defined(__CYGWIN32__) || defined(__CYGWIN__))
+ "win32unix",
+ #endif
+! #ifdef WIN64
+ "win64",
+ #endif
+ #ifdef EBCDIC
+--- 11453,11459 ----
+ #if defined(UNIX) && (defined(__CYGWIN32__) || defined(__CYGWIN__))
+ "win32unix",
+ #endif
+! #if defined(WIN64) || defined(_WIN64)
+ "win64",
+ #endif
+ #ifdef EBCDIC
+*** ../vim-7.2.327/src/version.c 2010-01-06 18:24:53.000000000 +0100
+--- src/version.c 2010-01-12 12:10:06.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 328,
+ /**/
+
+--
+From "know your smileys":
+ :.-( Crying
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.329 b/source/ap/vim/patches/7.2.329
new file mode 100644
index 000000000..f92bc655b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.329
@@ -0,0 +1,48 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.329
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.329
+Problem: "g_" doesn't position cursor correctly when in Visual mode and
+ 'selection' is "exclusive". (Ben Fritz)
+Solution: Call adjust_for_sel().
+Files: src/normal.c
+
+
+*** ../vim-7.2.328/src/normal.c 2009-12-24 15:00:31.000000000 +0100
+--- src/normal.c 2010-01-09 15:19:47.000000000 +0100
+***************
+*** 7873,7878 ****
+--- 7873,7881 ----
+ && vim_iswhite(ptr[curwin->w_cursor.col]))
+ --curwin->w_cursor.col;
+ curwin->w_set_curswant = TRUE;
++ #ifdef FEAT_VISUAL
++ adjust_for_sel(cap);
++ #endif
+ }
+ break;
+
+*** ../vim-7.2.328/src/version.c 2010-01-12 12:48:40.000000000 +0100
+--- src/version.c 2010-01-12 15:41:13.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 329,
+ /**/
+
+--
+From "know your smileys":
+ |-( Contact lenses, but has lost them
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.330 b/source/ap/vim/patches/7.2.330
new file mode 100644
index 000000000..0d9c3f1e4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.330
@@ -0,0 +1,1531 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.330
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.330
+Problem: Tables for Unicode case operators are outdated.
+Solution: Add a Vim script for generating the tables. Include tables for
+ Unicode 5.2.
+Files: runtime/tools/README.txt, runtime/tools/unicode.vim, src/mbyte.c
+
+
+*** ../vim-7.2.329/runtime/tools/README.txt 2005-12-02 01:47:43.000000000 +0100
+--- runtime/tools/README.txt 2010-01-12 19:43:13.000000000 +0100
+***************
+*** 32,35 ****
+--- 32,37 ----
+ xcmdsrv_client.c: Example for a client program that communicates with a Vim
+ server through the X-Windows interface.
+
++ unicode.vim Vim script to generate tables for src/mbyte.c.
++
+ [xxd (and tee for OS/2) can be found in the src directory]
+*** ../vim-7.2.329/runtime/tools/unicode.vim 2010-01-12 19:47:33.000000000 +0100
+--- runtime/tools/unicode.vim 2010-01-12 19:42:14.000000000 +0100
+***************
+*** 0 ****
+--- 1,280 ----
++ " Script to extract tables from Unicode .txt files, to be used in src/mbyte.c.
++ " The format of the UnicodeData.txt file is explained here:
++ " http://www.unicode.org/Public/5.1.0/ucd/UCD.html
++ " For the other files see the header.
++ "
++ " Usage: Vim -S <this-file>
++ "
++ " Author: Bram Moolenaar
++ " Last Update: 2010 Jan 12
++
++ " Parse lines of UnicodeData.txt. Creates a list of lists in s:dataprops.
++ func! ParseDataToProps()
++ let s:dataprops = []
++ let lnum = 1
++ while lnum <= line('$')
++ let l = split(getline(lnum), '\s*;\s*', 1)
++ if len(l) != 15
++ echoerr 'Found ' . len(l) . ' items in line ' . lnum . ', expected 15'
++ return
++ endif
++ call add(s:dataprops, l)
++ let lnum += 1
++ endwhile
++ endfunc
++
++ " Parse lines of CaseFolding.txt. Creates a list of lists in s:foldprops.
++ func! ParseFoldProps()
++ let s:foldprops = []
++ let lnum = 1
++ while lnum <= line('$')
++ let line = getline(lnum)
++ if line !~ '^#' && line !~ '^\s*$'
++ let l = split(line, '\s*;\s*', 1)
++ if len(l) != 4
++ echoerr 'Found ' . len(l) . ' items in line ' . lnum . ', expected 4'
++ return
++ endif
++ call add(s:foldprops, l)
++ endif
++ let lnum += 1
++ endwhile
++ endfunc
++
++ " Parse lines of EastAsianWidth.txt. Creates a list of lists in s:widthprops.
++ func! ParseWidthProps()
++ let s:widthprops = []
++ let lnum = 1
++ while lnum <= line('$')
++ let line = getline(lnum)
++ if line !~ '^#' && line !~ '^\s*$'
++ let l = split(line, '\s*;\s*', 1)
++ if len(l) != 2
++ echoerr 'Found ' . len(l) . ' items in line ' . lnum . ', expected 2'
++ return
++ endif
++ call add(s:widthprops, l)
++ endif
++ let lnum += 1
++ endwhile
++ endfunc
++
++ " Build the toLower or toUpper table in a new buffer.
++ " Uses s:dataprops.
++ func! BuildCaseTable(name, index)
++ let start = -1
++ let end = -1
++ let step = 0
++ let add = -1
++ let ranges = []
++ for p in s:dataprops
++ if p[a:index] != ''
++ let n = ('0x' . p[0]) + 0
++ let nl = ('0x' . p[a:index]) + 0
++ if start >= 0 && add == nl - n && (step == 0 || n - end == step)
++ " continue with same range.
++ let step = n - end
++ let end = n
++ else
++ if start >= 0
++ " produce previous range
++ call Range(ranges, start, end, step, add)
++ endif
++ let start = n
++ let end = n
++ let step = 0
++ let add = nl - n
++ endif
++ endif
++ endfor
++ if start >= 0
++ call Range(ranges, start, end, step, add)
++ endif
++
++ " New buffer to put the result in.
++ new
++ exe "file to" . a:name
++ call setline(1, "static convertStruct to" . a:name . "[] =")
++ call setline(2, "{")
++ call append('$', ranges)
++ call setline('$', getline('$')[:-2]) " remove last comma
++ call setline(line('$') + 1, "};")
++ wincmd p
++ endfunc
++
++ " Build the foldCase table in a new buffer.
++ " Uses s:foldprops.
++ func! BuildFoldTable()
++ let start = -1
++ let end = -1
++ let step = 0
++ let add = -1
++ let ranges = []
++ for p in s:foldprops
++ if p[1] == 'C' || p[1] == 'S'
++ let n = ('0x' . p[0]) + 0
++ let nl = ('0x' . p[2]) + 0
++ if start >= 0 && add == nl - n && (step == 0 || n - end == step)
++ " continue with same range.
++ let step = n - end
++ let end = n
++ else
++ if start >= 0
++ " produce previous range
++ call Range(ranges, start, end, step, add)
++ endif
++ let start = n
++ let end = n
++ let step = 0
++ let add = nl - n
++ endif
++ endif
++ endfor
++ if start >= 0
++ call Range(ranges, start, end, step, add)
++ endif
++
++ " New buffer to put the result in.
++ new
++ file foldCase
++ call setline(1, "static convertStruct foldCase[] =")
++ call setline(2, "{")
++ call append('$', ranges)
++ call setline('$', getline('$')[:-2]) " remove last comma
++ call setline(line('$') + 1, "};")
++ wincmd p
++ endfunc
++
++ func! Range(ranges, start, end, step, add)
++ let s = printf("\t{0x%x,0x%x,%d,%d},", a:start, a:end, a:step == 0 ? -1 : a:step, a:add)
++ call add(a:ranges, s)
++ endfunc
++
++ " Build the combining table.
++ " Uses s:dataprops.
++ func! BuildCombiningTable()
++ let start = -1
++ let end = -1
++ let ranges = []
++ for p in s:dataprops
++ if p[2] == 'Mn' || p[2] == 'Mc' || p[2] == 'Me'
++ let n = ('0x' . p[0]) + 0
++ if start >= 0 && end + 1 == n
++ " continue with same range.
++ let end = n
++ else
++ if start >= 0
++ " produce previous range
++ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
++ endif
++ let start = n
++ let end = n
++ endif
++ endif
++ endfor
++ if start >= 0
++ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
++ endif
++
++ " New buffer to put the result in.
++ new
++ file combining
++ call setline(1, " static struct interval combining[] =")
++ call setline(2, " {")
++ call append('$', ranges)
++ call setline('$', getline('$')[:-2]) " remove last comma
++ call setline(line('$') + 1, " };")
++ wincmd p
++ endfunc
++
++ " Build the ambiguous table in a new buffer.
++ " Uses s:widthprops and s:dataprops.
++ func! BuildAmbiguousTable()
++ let start = -1
++ let end = -1
++ let ranges = []
++ let dataidx = 0
++ for p in s:widthprops
++ if p[1][0] == 'A'
++ let n = ('0x' . p[0]) + 0
++ " Find this char in the data table.
++ while 1
++ let dn = ('0x' . s:dataprops[dataidx][0]) + 0
++ if dn >= n
++ break
++ endif
++ let dataidx += 1
++ endwhile
++ if dn != n
++ echoerr "Cannot find character " . n . " in data table"
++ endif
++ " Only use the char when it's not a composing char.
++ let dp = s:dataprops[dataidx]
++ if dp[2] != 'Mn' && dp[2] != 'Mc' && dp[2] != 'Me'
++ if start >= 0 && end + 1 == n
++ " continue with same range.
++ let end = n
++ else
++ if start >= 0
++ " produce previous range
++ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
++ endif
++ let start = n
++ if p[0] =~ '\.\.'
++ let end = ('0x' . substitute(p[0], '.*\.\.', '', '')) + 0
++ else
++ let end = n
++ endif
++ endif
++ endif
++ endif
++ endfor
++ if start >= 0
++ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
++ endif
++
++ " New buffer to put the result in.
++ new
++ file ambiguous
++ call setline(1, " static struct interval ambiguous[] =")
++ call setline(2, " {")
++ call append('$', ranges)
++ call setline('$', getline('$')[:-2]) " remove last comma
++ call setline(line('$') + 1, " };")
++ wincmd p
++ endfunc
++
++
++
++ " Edit the Unicode text file. Requires the netrw plugin.
++ edit http://unicode.org/Public/UNIDATA/UnicodeData.txt
++
++ " Parse each line, create a list of lists.
++ call ParseDataToProps()
++
++ " Build the toLower table.
++ call BuildCaseTable("Lower", 13)
++
++ " Build the toUpper table.
++ call BuildCaseTable("Upper", 12)
++
++ " Build the ranges of composing chars.
++ call BuildCombiningTable()
++
++ " Edit the case folding text file. Requires the netrw plugin.
++ edit http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
++
++ " Parse each line, create a list of lists.
++ call ParseFoldProps()
++
++ " Build the foldCase table.
++ call BuildFoldTable()
++
++ " Edit the width text file. Requires the netrw plugin.
++ edit http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt
++
++ " Parse each line, create a list of lists.
++ call ParseWidthProps()
++
++ " Build the ambiguous table.
++ call BuildAmbiguousTable()
+*** ../vim-7.2.329/src/mbyte.c 2009-12-02 15:03:24.000000000 +0100
+--- src/mbyte.c 2010-01-12 19:35:49.000000000 +0100
+***************
+*** 26,32 ****
+ * Recognizing bytes is easy: 0xxx.xxxx is a single-byte
+ * char, 10xx.xxxx is a trailing byte, 11xx.xxxx is a leading
+ * byte of a multi-byte character.
+! * To make things complicated, up to two composing characters
+ * are allowed. These are drawn on top of the first char.
+ * For most editing the sequence of bytes with composing
+ * characters included is considered to be one character.
+--- 26,32 ----
+ * Recognizing bytes is easy: 0xxx.xxxx is a single-byte
+ * char, 10xx.xxxx is a trailing byte, 11xx.xxxx is a leading
+ * byte of a multi-byte character.
+! * To make things complicated, up to six composing characters
+ * are allowed. These are drawn on top of the first char.
+ * For most editing the sequence of bytes with composing
+ * characters included is considered to be one character.
+***************
+*** 1153,1160 ****
+
+ struct interval
+ {
+! unsigned short first;
+! unsigned short last;
+ };
+ static int intable __ARGS((struct interval *table, size_t size, int c));
+
+--- 1153,1160 ----
+
+ struct interval
+ {
+! long first;
+! long last;
+ };
+ static int intable __ARGS((struct interval *table, size_t size, int c));
+
+***************
+*** 1200,1261 ****
+ utf_char2cells(c)
+ int c;
+ {
+! /* sorted list of non-overlapping intervals of East Asian Ambiguous
+! * characters, generated with:
+! * "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */
+! static struct interval ambiguous[] = {
+! {0x00A1, 0x00A1}, {0x00A4, 0x00A4}, {0x00A7, 0x00A8},
+! {0x00AA, 0x00AA}, {0x00AE, 0x00AE}, {0x00B0, 0x00B4},
+! {0x00B6, 0x00BA}, {0x00BC, 0x00BF}, {0x00C6, 0x00C6},
+! {0x00D0, 0x00D0}, {0x00D7, 0x00D8}, {0x00DE, 0x00E1},
+! {0x00E6, 0x00E6}, {0x00E8, 0x00EA}, {0x00EC, 0x00ED},
+! {0x00F0, 0x00F0}, {0x00F2, 0x00F3}, {0x00F7, 0x00FA},
+! {0x00FC, 0x00FC}, {0x00FE, 0x00FE}, {0x0101, 0x0101},
+! {0x0111, 0x0111}, {0x0113, 0x0113}, {0x011B, 0x011B},
+! {0x0126, 0x0127}, {0x012B, 0x012B}, {0x0131, 0x0133},
+! {0x0138, 0x0138}, {0x013F, 0x0142}, {0x0144, 0x0144},
+! {0x0148, 0x014B}, {0x014D, 0x014D}, {0x0152, 0x0153},
+! {0x0166, 0x0167}, {0x016B, 0x016B}, {0x01CE, 0x01CE},
+! {0x01D0, 0x01D0}, {0x01D2, 0x01D2}, {0x01D4, 0x01D4},
+! {0x01D6, 0x01D6}, {0x01D8, 0x01D8}, {0x01DA, 0x01DA},
+! {0x01DC, 0x01DC}, {0x0251, 0x0251}, {0x0261, 0x0261},
+! {0x02C4, 0x02C4}, {0x02C7, 0x02C7}, {0x02C9, 0x02CB},
+! {0x02CD, 0x02CD}, {0x02D0, 0x02D0}, {0x02D8, 0x02DB},
+! {0x02DD, 0x02DD}, {0x02DF, 0x02DF}, {0x0391, 0x03A1},
+! {0x03A3, 0x03A9}, {0x03B1, 0x03C1}, {0x03C3, 0x03C9},
+! {0x0401, 0x0401}, {0x0410, 0x044F}, {0x0451, 0x0451},
+! {0x2010, 0x2010}, {0x2013, 0x2016}, {0x2018, 0x2019},
+! {0x201C, 0x201D}, {0x2020, 0x2022}, {0x2024, 0x2027},
+! {0x2030, 0x2030}, {0x2032, 0x2033}, {0x2035, 0x2035},
+! {0x203B, 0x203B}, {0x203E, 0x203E}, {0x2074, 0x2074},
+! {0x207F, 0x207F}, {0x2081, 0x2084}, {0x20AC, 0x20AC},
+! {0x2103, 0x2103}, {0x2105, 0x2105}, {0x2109, 0x2109},
+! {0x2113, 0x2113}, {0x2116, 0x2116}, {0x2121, 0x2122},
+! {0x2126, 0x2126}, {0x212B, 0x212B}, {0x2153, 0x2154},
+! {0x215B, 0x215E}, {0x2160, 0x216B}, {0x2170, 0x2179},
+! {0x2190, 0x2199}, {0x21B8, 0x21B9}, {0x21D2, 0x21D2},
+! {0x21D4, 0x21D4}, {0x21E7, 0x21E7}, {0x2200, 0x2200},
+! {0x2202, 0x2203}, {0x2207, 0x2208}, {0x220B, 0x220B},
+! {0x220F, 0x220F}, {0x2211, 0x2211}, {0x2215, 0x2215},
+! {0x221A, 0x221A}, {0x221D, 0x2220}, {0x2223, 0x2223},
+! {0x2225, 0x2225}, {0x2227, 0x222C}, {0x222E, 0x222E},
+! {0x2234, 0x2237}, {0x223C, 0x223D}, {0x2248, 0x2248},
+! {0x224C, 0x224C}, {0x2252, 0x2252}, {0x2260, 0x2261},
+! {0x2264, 0x2267}, {0x226A, 0x226B}, {0x226E, 0x226F},
+! {0x2282, 0x2283}, {0x2286, 0x2287}, {0x2295, 0x2295},
+! {0x2299, 0x2299}, {0x22A5, 0x22A5}, {0x22BF, 0x22BF},
+! {0x2312, 0x2312}, {0x2460, 0x24E9}, {0x24EB, 0x254B},
+! {0x2550, 0x2573}, {0x2580, 0x258F}, {0x2592, 0x2595},
+! {0x25A0, 0x25A1}, {0x25A3, 0x25A9}, {0x25B2, 0x25B3},
+! {0x25B6, 0x25B7}, {0x25BC, 0x25BD}, {0x25C0, 0x25C1},
+! {0x25C6, 0x25C8}, {0x25CB, 0x25CB}, {0x25CE, 0x25D1},
+! {0x25E2, 0x25E5}, {0x25EF, 0x25EF}, {0x2605, 0x2606},
+! {0x2609, 0x2609}, {0x260E, 0x260F}, {0x2614, 0x2615},
+! {0x261C, 0x261C}, {0x261E, 0x261E}, {0x2640, 0x2640},
+! {0x2642, 0x2642}, {0x2660, 0x2661}, {0x2663, 0x2665},
+! {0x2667, 0x266A}, {0x266C, 0x266D}, {0x266F, 0x266F},
+! {0x273D, 0x273D}, {0x2776, 0x277F}, {0xE000, 0xF8FF},
+! {0xFFFD, 0xFFFD}, /* {0xF0000, 0xFFFFD}, {0x100000, 0x10FFFD} */
+ };
+
+ if (c >= 0x100)
+--- 1200,1390 ----
+ utf_char2cells(c)
+ int c;
+ {
+! /* Sorted list of non-overlapping intervals of East Asian Ambiguous
+! * characters, generated with ../runtime/tools/unicode.vim. */
+! static struct interval ambiguous[] =
+! {
+! {0x00a1, 0x00a1},
+! {0x00a4, 0x00a4},
+! {0x00a7, 0x00a8},
+! {0x00aa, 0x00aa},
+! {0x00ad, 0x00ae},
+! {0x00b0, 0x00b4},
+! {0x00b6, 0x00ba},
+! {0x00bc, 0x00bf},
+! {0x00c6, 0x00c6},
+! {0x00d0, 0x00d0},
+! {0x00d7, 0x00d8},
+! {0x00de, 0x00e1},
+! {0x00e6, 0x00e6},
+! {0x00e8, 0x00ea},
+! {0x00ec, 0x00ed},
+! {0x00f0, 0x00f0},
+! {0x00f2, 0x00f3},
+! {0x00f7, 0x00fa},
+! {0x00fc, 0x00fc},
+! {0x00fe, 0x00fe},
+! {0x0101, 0x0101},
+! {0x0111, 0x0111},
+! {0x0113, 0x0113},
+! {0x011b, 0x011b},
+! {0x0126, 0x0127},
+! {0x012b, 0x012b},
+! {0x0131, 0x0133},
+! {0x0138, 0x0138},
+! {0x013f, 0x0142},
+! {0x0144, 0x0144},
+! {0x0148, 0x014b},
+! {0x014d, 0x014d},
+! {0x0152, 0x0153},
+! {0x0166, 0x0167},
+! {0x016b, 0x016b},
+! {0x01ce, 0x01ce},
+! {0x01d0, 0x01d0},
+! {0x01d2, 0x01d2},
+! {0x01d4, 0x01d4},
+! {0x01d6, 0x01d6},
+! {0x01d8, 0x01d8},
+! {0x01da, 0x01da},
+! {0x01dc, 0x01dc},
+! {0x0251, 0x0251},
+! {0x0261, 0x0261},
+! {0x02c4, 0x02c4},
+! {0x02c7, 0x02c7},
+! {0x02c9, 0x02cb},
+! {0x02cd, 0x02cd},
+! {0x02d0, 0x02d0},
+! {0x02d8, 0x02db},
+! {0x02dd, 0x02dd},
+! {0x02df, 0x02df},
+! {0x0391, 0x03a1},
+! {0x03a3, 0x03a9},
+! {0x03b1, 0x03c1},
+! {0x03c3, 0x03c9},
+! {0x0401, 0x0401},
+! {0x0410, 0x044f},
+! {0x0451, 0x0451},
+! {0x2010, 0x2010},
+! {0x2013, 0x2016},
+! {0x2018, 0x2019},
+! {0x201c, 0x201d},
+! {0x2020, 0x2022},
+! {0x2024, 0x2027},
+! {0x2030, 0x2030},
+! {0x2032, 0x2033},
+! {0x2035, 0x2035},
+! {0x203b, 0x203b},
+! {0x203e, 0x203e},
+! {0x2074, 0x2074},
+! {0x207f, 0x207f},
+! {0x2081, 0x2084},
+! {0x20ac, 0x20ac},
+! {0x2103, 0x2103},
+! {0x2105, 0x2105},
+! {0x2109, 0x2109},
+! {0x2113, 0x2113},
+! {0x2116, 0x2116},
+! {0x2121, 0x2122},
+! {0x2126, 0x2126},
+! {0x212b, 0x212b},
+! {0x2153, 0x2154},
+! {0x215b, 0x215e},
+! {0x2160, 0x216b},
+! {0x2170, 0x2179},
+! {0x2189, 0x2189},
+! {0x2190, 0x2199},
+! {0x21b8, 0x21b9},
+! {0x21d2, 0x21d2},
+! {0x21d4, 0x21d4},
+! {0x21e7, 0x21e7},
+! {0x2200, 0x2200},
+! {0x2202, 0x2203},
+! {0x2207, 0x2208},
+! {0x220b, 0x220b},
+! {0x220f, 0x220f},
+! {0x2211, 0x2211},
+! {0x2215, 0x2215},
+! {0x221a, 0x221a},
+! {0x221d, 0x2220},
+! {0x2223, 0x2223},
+! {0x2225, 0x2225},
+! {0x2227, 0x222c},
+! {0x222e, 0x222e},
+! {0x2234, 0x2237},
+! {0x223c, 0x223d},
+! {0x2248, 0x2248},
+! {0x224c, 0x224c},
+! {0x2252, 0x2252},
+! {0x2260, 0x2261},
+! {0x2264, 0x2267},
+! {0x226a, 0x226b},
+! {0x226e, 0x226f},
+! {0x2282, 0x2283},
+! {0x2286, 0x2287},
+! {0x2295, 0x2295},
+! {0x2299, 0x2299},
+! {0x22a5, 0x22a5},
+! {0x22bf, 0x22bf},
+! {0x2312, 0x2312},
+! {0x2460, 0x24e9},
+! {0x24eb, 0x254b},
+! {0x2550, 0x2573},
+! {0x2580, 0x258f},
+! {0x2592, 0x2595},
+! {0x25a0, 0x25a1},
+! {0x25a3, 0x25a9},
+! {0x25b2, 0x25b3},
+! {0x25b6, 0x25b7},
+! {0x25bc, 0x25bd},
+! {0x25c0, 0x25c1},
+! {0x25c6, 0x25c8},
+! {0x25cb, 0x25cb},
+! {0x25ce, 0x25d1},
+! {0x25e2, 0x25e5},
+! {0x25ef, 0x25ef},
+! {0x2605, 0x2606},
+! {0x2609, 0x2609},
+! {0x260e, 0x260f},
+! {0x2614, 0x2615},
+! {0x261c, 0x261c},
+! {0x261e, 0x261e},
+! {0x2640, 0x2640},
+! {0x2642, 0x2642},
+! {0x2660, 0x2661},
+! {0x2663, 0x2665},
+! {0x2667, 0x266a},
+! {0x266c, 0x266d},
+! {0x266f, 0x266f},
+! {0x269e, 0x269f},
+! {0x26be, 0x26bf},
+! {0x26c4, 0x26cd},
+! {0x26cf, 0x26e1},
+! {0x26e3, 0x26e3},
+! {0x26e8, 0x26ff},
+! {0x273d, 0x273d},
+! {0x2757, 0x2757},
+! {0x2776, 0x277f},
+! {0x2b55, 0x2b59},
+! {0x3248, 0x324f},
+! {0xe000, 0xf8ff},
+! {0xfffd, 0xfffd},
+! {0x1f100, 0x1f10a},
+! {0x1f110, 0x1f12d},
+! {0x1f131, 0x1f131},
+! {0x1f13d, 0x1f13d},
+! {0x1f13f, 0x1f13f},
+! {0x1f142, 0x1f142},
+! {0x1f146, 0x1f146},
+! {0x1f14a, 0x1f14e},
+! {0x1f157, 0x1f157},
+! {0x1f15f, 0x1f15f},
+! {0x1f179, 0x1f179},
+! {0x1f17b, 0x1f17c},
+! {0x1f17f, 0x1f17f},
+! {0x1f18a, 0x1f18d},
+! {0x1f190, 0x1f190},
+! {0xf0000, 0xffffd},
+! {0x100000, 0x10fffd}
+ };
+
+ if (c >= 0x100)
+***************
+*** 1807,1813 ****
+ return 1;
+
+ /*
+! * Check for composing characters. We can handle only the first two, but
+ * skip all of them (otherwise the cursor would get stuck).
+ */
+ #ifdef FEAT_ARABIC
+--- 1936,1942 ----
+ return 1;
+
+ /*
+! * Check for composing characters. We can handle only the first six, but
+ * skip all of them (otherwise the cursor would get stuck).
+ */
+ #ifdef FEAT_ARABIC
+***************
+*** 1855,1861 ****
+ return 1;
+
+ /*
+! * Check for composing characters. We can handle only the first two, but
+ * skip all of them (otherwise the cursor would get stuck).
+ */
+ #ifdef FEAT_ARABIC
+--- 1984,1990 ----
+ return 1;
+
+ /*
+! * Check for composing characters. We can handle only the first six, but
+ * skip all of them (otherwise the cursor would get stuck).
+ */
+ #ifdef FEAT_ARABIC
+***************
+*** 1973,2010 ****
+ utf_iscomposing(c)
+ int c;
+ {
+! /* sorted list of non-overlapping intervals */
+ static struct interval combining[] =
+ {
+! {0x0300, 0x034f}, {0x0360, 0x036f}, {0x0483, 0x0486}, {0x0488, 0x0489},
+! {0x0591, 0x05a1}, {0x05a3, 0x05b9}, {0x05bb, 0x05bd}, {0x05bf, 0x05bf},
+! {0x05c1, 0x05c2}, {0x05c4, 0x05c4}, {0x0610, 0x0615}, {0x064b, 0x0658},
+! {0x0670, 0x0670}, {0x06d6, 0x06dc}, {0x06de, 0x06e4}, {0x06e7, 0x06e8},
+! {0x06ea, 0x06ed}, {0x0711, 0x0711}, {0x0730, 0x074a}, {0x07a6, 0x07b0},
+! {0x0901, 0x0903}, {0x093c, 0x093c}, {0x093e, 0x094d}, {0x0951, 0x0954},
+! {0x0962, 0x0963}, {0x0981, 0x0983}, {0x09bc, 0x09bc}, {0x09be, 0x09c4},
+! {0x09c7, 0x09c8}, {0x09cb, 0x09cd}, {0x09d7, 0x09d7}, {0x09e2, 0x09e3},
+! {0x0a01, 0x0a03}, {0x0a3c, 0x0a3c}, {0x0a3e, 0x0a42}, {0x0a47, 0x0a48},
+! {0x0a4b, 0x0a4d}, {0x0a70, 0x0a71}, {0x0a81, 0x0a83}, {0x0abc, 0x0abc},
+! {0x0abe, 0x0ac5}, {0x0ac7, 0x0ac9}, {0x0acb, 0x0acd}, {0x0ae2, 0x0ae3},
+! {0x0b01, 0x0b03}, {0x0b3c, 0x0b3c}, {0x0b3e, 0x0b43}, {0x0b47, 0x0b48},
+! {0x0b4b, 0x0b4d}, {0x0b56, 0x0b57}, {0x0b82, 0x0b82}, {0x0bbe, 0x0bc2},
+! {0x0bc6, 0x0bc8}, {0x0bca, 0x0bcd}, {0x0bd7, 0x0bd7}, {0x0c01, 0x0c03},
+! {0x0c3e, 0x0c44}, {0x0c46, 0x0c48}, {0x0c4a, 0x0c4d}, {0x0c55, 0x0c56},
+! {0x0c82, 0x0c83}, {0x0cbc, 0x0cbc}, {0x0cbe, 0x0cc4}, {0x0cc6, 0x0cc8},
+! {0x0cca, 0x0ccd}, {0x0cd5, 0x0cd6}, {0x0d02, 0x0d03}, {0x0d3e, 0x0d43},
+! {0x0d46, 0x0d48}, {0x0d4a, 0x0d4d}, {0x0d57, 0x0d57}, {0x0d82, 0x0d83},
+! {0x0dca, 0x0dca}, {0x0dcf, 0x0dd4}, {0x0dd6, 0x0dd6}, {0x0dd8, 0x0ddf},
+! {0x0df2, 0x0df3}, {0x0e31, 0x0e31}, {0x0e34, 0x0e3a}, {0x0e47, 0x0e4e},
+! {0x0eb1, 0x0eb1}, {0x0eb4, 0x0eb9}, {0x0ebb, 0x0ebc}, {0x0ec8, 0x0ecd},
+! {0x0f18, 0x0f19}, {0x0f35, 0x0f35}, {0x0f37, 0x0f37}, {0x0f39, 0x0f39},
+! {0x0f3e, 0x0f3f}, {0x0f71, 0x0f84}, {0x0f86, 0x0f87}, {0x0f90, 0x0f97},
+! {0x0f99, 0x0fbc}, {0x0fc6, 0x0fc6}, {0x102c, 0x1032}, {0x1036, 0x1039},
+! {0x1056, 0x1059}, {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753},
+! {0x1772, 0x1773}, {0x17b6, 0x17d3}, {0x17dd, 0x17dd}, {0x180b, 0x180d},
+! {0x18a9, 0x18a9}, {0x1920, 0x192b}, {0x1930, 0x193b}, {0x20d0, 0x20ea},
+! {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e}, {0xfe00, 0xfe0f},
+! {0xfe20, 0xfe23},
+ };
+
+ return intable(combining, sizeof(combining), c);
+--- 2102,2299 ----
+ utf_iscomposing(c)
+ int c;
+ {
+! /* Sorted list of non-overlapping intervals.
+! * Generated by ../runtime/tools/unicode.vim. */
+ static struct interval combining[] =
+ {
+! {0x0300, 0x036f},
+! {0x0483, 0x0489},
+! {0x0591, 0x05bd},
+! {0x05bf, 0x05bf},
+! {0x05c1, 0x05c2},
+! {0x05c4, 0x05c5},
+! {0x05c7, 0x05c7},
+! {0x0610, 0x061a},
+! {0x064b, 0x065e},
+! {0x0670, 0x0670},
+! {0x06d6, 0x06dc},
+! {0x06de, 0x06e4},
+! {0x06e7, 0x06e8},
+! {0x06ea, 0x06ed},
+! {0x0711, 0x0711},
+! {0x0730, 0x074a},
+! {0x07a6, 0x07b0},
+! {0x07eb, 0x07f3},
+! {0x0816, 0x0819},
+! {0x081b, 0x0823},
+! {0x0825, 0x0827},
+! {0x0829, 0x082d},
+! {0x0900, 0x0903},
+! {0x093c, 0x093c},
+! {0x093e, 0x094e},
+! {0x0951, 0x0955},
+! {0x0962, 0x0963},
+! {0x0981, 0x0983},
+! {0x09bc, 0x09bc},
+! {0x09be, 0x09c4},
+! {0x09c7, 0x09c8},
+! {0x09cb, 0x09cd},
+! {0x09d7, 0x09d7},
+! {0x09e2, 0x09e3},
+! {0x0a01, 0x0a03},
+! {0x0a3c, 0x0a3c},
+! {0x0a3e, 0x0a42},
+! {0x0a47, 0x0a48},
+! {0x0a4b, 0x0a4d},
+! {0x0a51, 0x0a51},
+! {0x0a70, 0x0a71},
+! {0x0a75, 0x0a75},
+! {0x0a81, 0x0a83},
+! {0x0abc, 0x0abc},
+! {0x0abe, 0x0ac5},
+! {0x0ac7, 0x0ac9},
+! {0x0acb, 0x0acd},
+! {0x0ae2, 0x0ae3},
+! {0x0b01, 0x0b03},
+! {0x0b3c, 0x0b3c},
+! {0x0b3e, 0x0b44},
+! {0x0b47, 0x0b48},
+! {0x0b4b, 0x0b4d},
+! {0x0b56, 0x0b57},
+! {0x0b62, 0x0b63},
+! {0x0b82, 0x0b82},
+! {0x0bbe, 0x0bc2},
+! {0x0bc6, 0x0bc8},
+! {0x0bca, 0x0bcd},
+! {0x0bd7, 0x0bd7},
+! {0x0c01, 0x0c03},
+! {0x0c3e, 0x0c44},
+! {0x0c46, 0x0c48},
+! {0x0c4a, 0x0c4d},
+! {0x0c55, 0x0c56},
+! {0x0c62, 0x0c63},
+! {0x0c82, 0x0c83},
+! {0x0cbc, 0x0cbc},
+! {0x0cbe, 0x0cc4},
+! {0x0cc6, 0x0cc8},
+! {0x0cca, 0x0ccd},
+! {0x0cd5, 0x0cd6},
+! {0x0ce2, 0x0ce3},
+! {0x0d02, 0x0d03},
+! {0x0d3e, 0x0d44},
+! {0x0d46, 0x0d48},
+! {0x0d4a, 0x0d4d},
+! {0x0d57, 0x0d57},
+! {0x0d62, 0x0d63},
+! {0x0d82, 0x0d83},
+! {0x0dca, 0x0dca},
+! {0x0dcf, 0x0dd4},
+! {0x0dd6, 0x0dd6},
+! {0x0dd8, 0x0ddf},
+! {0x0df2, 0x0df3},
+! {0x0e31, 0x0e31},
+! {0x0e34, 0x0e3a},
+! {0x0e47, 0x0e4e},
+! {0x0eb1, 0x0eb1},
+! {0x0eb4, 0x0eb9},
+! {0x0ebb, 0x0ebc},
+! {0x0ec8, 0x0ecd},
+! {0x0f18, 0x0f19},
+! {0x0f35, 0x0f35},
+! {0x0f37, 0x0f37},
+! {0x0f39, 0x0f39},
+! {0x0f3e, 0x0f3f},
+! {0x0f71, 0x0f84},
+! {0x0f86, 0x0f87},
+! {0x0f90, 0x0f97},
+! {0x0f99, 0x0fbc},
+! {0x0fc6, 0x0fc6},
+! {0x102b, 0x103e},
+! {0x1056, 0x1059},
+! {0x105e, 0x1060},
+! {0x1062, 0x1064},
+! {0x1067, 0x106d},
+! {0x1071, 0x1074},
+! {0x1082, 0x108d},
+! {0x108f, 0x108f},
+! {0x109a, 0x109d},
+! {0x135f, 0x135f},
+! {0x1712, 0x1714},
+! {0x1732, 0x1734},
+! {0x1752, 0x1753},
+! {0x1772, 0x1773},
+! {0x17b6, 0x17d3},
+! {0x17dd, 0x17dd},
+! {0x180b, 0x180d},
+! {0x18a9, 0x18a9},
+! {0x1920, 0x192b},
+! {0x1930, 0x193b},
+! {0x19b0, 0x19c0},
+! {0x19c8, 0x19c9},
+! {0x1a17, 0x1a1b},
+! {0x1a55, 0x1a5e},
+! {0x1a60, 0x1a7c},
+! {0x1a7f, 0x1a7f},
+! {0x1b00, 0x1b04},
+! {0x1b34, 0x1b44},
+! {0x1b6b, 0x1b73},
+! {0x1b80, 0x1b82},
+! {0x1ba1, 0x1baa},
+! {0x1c24, 0x1c37},
+! {0x1cd0, 0x1cd2},
+! {0x1cd4, 0x1ce8},
+! {0x1ced, 0x1ced},
+! {0x1cf2, 0x1cf2},
+! {0x1dc0, 0x1de6},
+! {0x1dfd, 0x1dff},
+! {0x20d0, 0x20f0},
+! {0x2cef, 0x2cf1},
+! {0x2de0, 0x2dff},
+! {0x302a, 0x302f},
+! {0x3099, 0x309a},
+! {0xa66f, 0xa672},
+! {0xa67c, 0xa67d},
+! {0xa6f0, 0xa6f1},
+! {0xa802, 0xa802},
+! {0xa806, 0xa806},
+! {0xa80b, 0xa80b},
+! {0xa823, 0xa827},
+! {0xa880, 0xa881},
+! {0xa8b4, 0xa8c4},
+! {0xa8e0, 0xa8f1},
+! {0xa926, 0xa92d},
+! {0xa947, 0xa953},
+! {0xa980, 0xa983},
+! {0xa9b3, 0xa9c0},
+! {0xaa29, 0xaa36},
+! {0xaa43, 0xaa43},
+! {0xaa4c, 0xaa4d},
+! {0xaa7b, 0xaa7b},
+! {0xaab0, 0xaab0},
+! {0xaab2, 0xaab4},
+! {0xaab7, 0xaab8},
+! {0xaabe, 0xaabf},
+! {0xaac1, 0xaac1},
+! {0xabe3, 0xabea},
+! {0xabec, 0xabed},
+! {0xfb1e, 0xfb1e},
+! {0xfe00, 0xfe0f},
+! {0xfe20, 0xfe26},
+! {0x101fd, 0x101fd},
+! {0x10a01, 0x10a03},
+! {0x10a05, 0x10a06},
+! {0x10a0c, 0x10a0f},
+! {0x10a38, 0x10a3a},
+! {0x10a3f, 0x10a3f},
+! {0x11080, 0x11082},
+! {0x110b0, 0x110ba},
+! {0x1d165, 0x1d169},
+! {0x1d16d, 0x1d172},
+! {0x1d17b, 0x1d182},
+! {0x1d185, 0x1d18b},
+! {0x1d1aa, 0x1d1ad},
+! {0x1d242, 0x1d244},
+! {0xe0100, 0xe01ef}
+ };
+
+ return intable(combining, sizeof(combining), c);
+***************
+*** 2152,2166 ****
+ * Code for Unicode case-dependent operations. Based on notes in
+ * http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
+ * This code uses simple case folding, not full case folding.
+ */
+
+ /*
+! * The following table is built by foldExtract.pl < CaseFolding.txt .
+! * It must be in numeric order, because we use binary search on it.
+! * An entry such as {0x41,0x5a,1,32} means that UCS-4 characters in the range
+! * from 0x41 to 0x5a inclusive, stepping by 1, are folded by adding 32.
+ */
+-
+ typedef struct
+ {
+ int rangeStart;
+--- 2441,2456 ----
+ * Code for Unicode case-dependent operations. Based on notes in
+ * http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
+ * This code uses simple case folding, not full case folding.
++ * Last updated for Unicode 5.2.
+ */
+
+ /*
+! * The following tables are built by ../runtime/tools/unicode.vim.
+! * They must be in numeric order, because we use binary search.
+! * An entry such as {0x41,0x5a,1,32} means that Unicode characters in the
+! * range from 0x41 to 0x5a inclusive, stepping by 1, are changed to
+! * folded/upper/lower by adding 32.
+ */
+ typedef struct
+ {
+ int rangeStart;
+***************
+*** 2171,2211 ****
+
+ static convertStruct foldCase[] =
+ {
+! {0x41,0x5a,1,32}, {0xc0,0xd6,1,32}, {0xd8,0xde,1,32},
+! {0x100,0x12e,2,1}, {0x130,0x130,-1,-199}, {0x132,0x136,2,1},
+! {0x139,0x147,2,1}, {0x14a,0x176,2,1}, {0x178,0x178,-1,-121},
+! {0x179,0x17d,2,1}, {0x181,0x181,-1,210}, {0x182,0x184,2,1},
+! {0x186,0x186,-1,206}, {0x187,0x187,-1,1}, {0x189,0x18a,1,205},
+! {0x18b,0x18b,-1,1}, {0x18e,0x18e,-1,79}, {0x18f,0x18f,-1,202},
+! {0x190,0x190,-1,203}, {0x191,0x191,-1,1}, {0x193,0x193,-1,205},
+! {0x194,0x194,-1,207}, {0x196,0x196,-1,211}, {0x197,0x197,-1,209},
+! {0x198,0x198,-1,1}, {0x19c,0x19c,-1,211}, {0x19d,0x19d,-1,213},
+! {0x19f,0x19f,-1,214}, {0x1a0,0x1a4,2,1}, {0x1a6,0x1a6,-1,218},
+! {0x1a7,0x1a7,-1,1}, {0x1a9,0x1a9,-1,218}, {0x1ac,0x1ac,-1,1},
+! {0x1ae,0x1ae,-1,218}, {0x1af,0x1af,-1,1}, {0x1b1,0x1b2,1,217},
+! {0x1b3,0x1b5,2,1}, {0x1b7,0x1b7,-1,219}, {0x1b8,0x1bc,4,1},
+! {0x1c4,0x1c4,-1,2}, {0x1c5,0x1c5,-1,1}, {0x1c7,0x1c7,-1,2},
+! {0x1c8,0x1c8,-1,1}, {0x1ca,0x1ca,-1,2}, {0x1cb,0x1db,2,1},
+! {0x1de,0x1ee,2,1}, {0x1f1,0x1f1,-1,2}, {0x1f2,0x1f4,2,1},
+! {0x1f6,0x1f6,-1,-97}, {0x1f7,0x1f7,-1,-56}, {0x1f8,0x21e,2,1},
+! {0x220,0x220,-1,-130}, {0x222,0x232,2,1}, {0x386,0x386,-1,38},
+! {0x388,0x38a,1,37}, {0x38c,0x38c,-1,64}, {0x38e,0x38f,1,63},
+! {0x391,0x3a1,1,32}, {0x3a3,0x3ab,1,32}, {0x3d8,0x3ee,2,1},
+! {0x3f4,0x3f4,-1,-60}, {0x3f7,0x3f7,-1,1}, {0x3f9,0x3f9,-1,-7},
+! {0x3fa,0x3fa,-1,1}, {0x400,0x40f,1,80}, {0x410,0x42f,1,32},
+! {0x460,0x480,2,1}, {0x48a,0x4be,2,1}, {0x4c1,0x4cd,2,1},
+! {0x4d0,0x4f4,2,1}, {0x4f8,0x500,8,1}, {0x502,0x50e,2,1},
+! {0x531,0x556,1,48}, {0x1e00,0x1e94,2,1}, {0x1ea0,0x1ef8,2,1},
+! {0x1f08,0x1f0f,1,-8}, {0x1f18,0x1f1d,1,-8}, {0x1f28,0x1f2f,1,-8},
+! {0x1f38,0x1f3f,1,-8}, {0x1f48,0x1f4d,1,-8}, {0x1f59,0x1f5f,2,-8},
+! {0x1f68,0x1f6f,1,-8}, {0x1f88,0x1f8f,1,-8}, {0x1f98,0x1f9f,1,-8},
+! {0x1fa8,0x1faf,1,-8}, {0x1fb8,0x1fb9,1,-8}, {0x1fba,0x1fbb,1,-74},
+! {0x1fbc,0x1fbc,-1,-9}, {0x1fc8,0x1fcb,1,-86}, {0x1fcc,0x1fcc,-1,-9},
+! {0x1fd8,0x1fd9,1,-8}, {0x1fda,0x1fdb,1,-100}, {0x1fe8,0x1fe9,1,-8},
+! {0x1fea,0x1feb,1,-112}, {0x1fec,0x1fec,-1,-7}, {0x1ff8,0x1ff9,1,-128},
+! {0x1ffa,0x1ffb,1,-126}, {0x1ffc,0x1ffc,-1,-9}, {0x2126,0x2126,-1,-7517},
+! {0x212a,0x212a,-1,-8383}, {0x212b,0x212b,-1,-8262},
+! {0x2160,0x216f,1,16}, {0x24b6,0x24cf,1,26}, {0xff21,0xff3a,1,32},
+ {0x10400,0x10427,1,40}
+ };
+
+--- 2461,2621 ----
+
+ static convertStruct foldCase[] =
+ {
+! {0x41,0x5a,1,32},
+! {0xb5,0xb5,-1,775},
+! {0xc0,0xd6,1,32},
+! {0xd8,0xde,1,32},
+! {0x100,0x12e,2,1},
+! {0x132,0x136,2,1},
+! {0x139,0x147,2,1},
+! {0x14a,0x176,2,1},
+! {0x178,0x178,-1,-121},
+! {0x179,0x17d,2,1},
+! {0x17f,0x17f,-1,-268},
+! {0x181,0x181,-1,210},
+! {0x182,0x184,2,1},
+! {0x186,0x186,-1,206},
+! {0x187,0x187,-1,1},
+! {0x189,0x18a,1,205},
+! {0x18b,0x18b,-1,1},
+! {0x18e,0x18e,-1,79},
+! {0x18f,0x18f,-1,202},
+! {0x190,0x190,-1,203},
+! {0x191,0x191,-1,1},
+! {0x193,0x193,-1,205},
+! {0x194,0x194,-1,207},
+! {0x196,0x196,-1,211},
+! {0x197,0x197,-1,209},
+! {0x198,0x198,-1,1},
+! {0x19c,0x19c,-1,211},
+! {0x19d,0x19d,-1,213},
+! {0x19f,0x19f,-1,214},
+! {0x1a0,0x1a4,2,1},
+! {0x1a6,0x1a6,-1,218},
+! {0x1a7,0x1a7,-1,1},
+! {0x1a9,0x1a9,-1,218},
+! {0x1ac,0x1ac,-1,1},
+! {0x1ae,0x1ae,-1,218},
+! {0x1af,0x1af,-1,1},
+! {0x1b1,0x1b2,1,217},
+! {0x1b3,0x1b5,2,1},
+! {0x1b7,0x1b7,-1,219},
+! {0x1b8,0x1bc,4,1},
+! {0x1c4,0x1c4,-1,2},
+! {0x1c5,0x1c5,-1,1},
+! {0x1c7,0x1c7,-1,2},
+! {0x1c8,0x1c8,-1,1},
+! {0x1ca,0x1ca,-1,2},
+! {0x1cb,0x1db,2,1},
+! {0x1de,0x1ee,2,1},
+! {0x1f1,0x1f1,-1,2},
+! {0x1f2,0x1f4,2,1},
+! {0x1f6,0x1f6,-1,-97},
+! {0x1f7,0x1f7,-1,-56},
+! {0x1f8,0x21e,2,1},
+! {0x220,0x220,-1,-130},
+! {0x222,0x232,2,1},
+! {0x23a,0x23a,-1,10795},
+! {0x23b,0x23b,-1,1},
+! {0x23d,0x23d,-1,-163},
+! {0x23e,0x23e,-1,10792},
+! {0x241,0x241,-1,1},
+! {0x243,0x243,-1,-195},
+! {0x244,0x244,-1,69},
+! {0x245,0x245,-1,71},
+! {0x246,0x24e,2,1},
+! {0x345,0x345,-1,116},
+! {0x370,0x372,2,1},
+! {0x376,0x376,-1,1},
+! {0x386,0x386,-1,38},
+! {0x388,0x38a,1,37},
+! {0x38c,0x38c,-1,64},
+! {0x38e,0x38f,1,63},
+! {0x391,0x3a1,1,32},
+! {0x3a3,0x3ab,1,32},
+! {0x3c2,0x3c2,-1,1},
+! {0x3cf,0x3cf,-1,8},
+! {0x3d0,0x3d0,-1,-30},
+! {0x3d1,0x3d1,-1,-25},
+! {0x3d5,0x3d5,-1,-15},
+! {0x3d6,0x3d6,-1,-22},
+! {0x3d8,0x3ee,2,1},
+! {0x3f0,0x3f0,-1,-54},
+! {0x3f1,0x3f1,-1,-48},
+! {0x3f4,0x3f4,-1,-60},
+! {0x3f5,0x3f5,-1,-64},
+! {0x3f7,0x3f7,-1,1},
+! {0x3f9,0x3f9,-1,-7},
+! {0x3fa,0x3fa,-1,1},
+! {0x3fd,0x3ff,1,-130},
+! {0x400,0x40f,1,80},
+! {0x410,0x42f,1,32},
+! {0x460,0x480,2,1},
+! {0x48a,0x4be,2,1},
+! {0x4c0,0x4c0,-1,15},
+! {0x4c1,0x4cd,2,1},
+! {0x4d0,0x524,2,1},
+! {0x531,0x556,1,48},
+! {0x10a0,0x10c5,1,7264},
+! {0x1e00,0x1e94,2,1},
+! {0x1e9b,0x1e9b,-1,-58},
+! {0x1e9e,0x1e9e,-1,-7615},
+! {0x1ea0,0x1efe,2,1},
+! {0x1f08,0x1f0f,1,-8},
+! {0x1f18,0x1f1d,1,-8},
+! {0x1f28,0x1f2f,1,-8},
+! {0x1f38,0x1f3f,1,-8},
+! {0x1f48,0x1f4d,1,-8},
+! {0x1f59,0x1f5f,2,-8},
+! {0x1f68,0x1f6f,1,-8},
+! {0x1f88,0x1f8f,1,-8},
+! {0x1f98,0x1f9f,1,-8},
+! {0x1fa8,0x1faf,1,-8},
+! {0x1fb8,0x1fb9,1,-8},
+! {0x1fba,0x1fbb,1,-74},
+! {0x1fbc,0x1fbc,-1,-9},
+! {0x1fbe,0x1fbe,-1,-7173},
+! {0x1fc8,0x1fcb,1,-86},
+! {0x1fcc,0x1fcc,-1,-9},
+! {0x1fd8,0x1fd9,1,-8},
+! {0x1fda,0x1fdb,1,-100},
+! {0x1fe8,0x1fe9,1,-8},
+! {0x1fea,0x1feb,1,-112},
+! {0x1fec,0x1fec,-1,-7},
+! {0x1ff8,0x1ff9,1,-128},
+! {0x1ffa,0x1ffb,1,-126},
+! {0x1ffc,0x1ffc,-1,-9},
+! {0x2126,0x2126,-1,-7517},
+! {0x212a,0x212a,-1,-8383},
+! {0x212b,0x212b,-1,-8262},
+! {0x2132,0x2132,-1,28},
+! {0x2160,0x216f,1,16},
+! {0x2183,0x2183,-1,1},
+! {0x24b6,0x24cf,1,26},
+! {0x2c00,0x2c2e,1,48},
+! {0x2c60,0x2c60,-1,1},
+! {0x2c62,0x2c62,-1,-10743},
+! {0x2c63,0x2c63,-1,-3814},
+! {0x2c64,0x2c64,-1,-10727},
+! {0x2c67,0x2c6b,2,1},
+! {0x2c6d,0x2c6d,-1,-10780},
+! {0x2c6e,0x2c6e,-1,-10749},
+! {0x2c6f,0x2c6f,-1,-10783},
+! {0x2c70,0x2c70,-1,-10782},
+! {0x2c72,0x2c75,3,1},
+! {0x2c7e,0x2c7f,1,-10815},
+! {0x2c80,0x2ce2,2,1},
+! {0x2ceb,0x2ced,2,1},
+! {0xa640,0xa65e,2,1},
+! {0xa662,0xa66c,2,1},
+! {0xa680,0xa696,2,1},
+! {0xa722,0xa72e,2,1},
+! {0xa732,0xa76e,2,1},
+! {0xa779,0xa77b,2,1},
+! {0xa77d,0xa77d,-1,-35332},
+! {0xa77e,0xa786,2,1},
+! {0xa78b,0xa78b,-1,1},
+! {0xff21,0xff3a,1,32},
+ {0x10400,0x10427,1,40}
+ };
+
+***************
+*** 2253,2337 ****
+ return utf_convert(a, foldCase, sizeof(foldCase));
+ }
+
+- /*
+- * The following tables are built by upperLowerExtract.pl < UnicodeData.txt .
+- * They must be in numeric order, because we use binary search on them.
+- * An entry such as {0x41,0x5a,1,32} means that UCS-4 characters in the range
+- * from 0x41 to 0x5a inclusive, stepping by 1, are switched to lower (for
+- * example) by adding 32.
+- */
+ static convertStruct toLower[] =
+ {
+! {0x41,0x5a,1,32}, {0xc0,0xd6,1,32}, {0xd8,0xde,1,32},
+! {0x100,0x12e,2,1}, {0x130,0x130,-1,-199}, {0x132,0x136,2,1},
+! {0x139,0x147,2,1}, {0x14a,0x176,2,1}, {0x178,0x178,-1,-121},
+! {0x179,0x17d,2,1}, {0x181,0x181,-1,210}, {0x182,0x184,2,1},
+! {0x186,0x186,-1,206}, {0x187,0x187,-1,1}, {0x189,0x18a,1,205},
+! {0x18b,0x18b,-1,1}, {0x18e,0x18e,-1,79}, {0x18f,0x18f,-1,202},
+! {0x190,0x190,-1,203}, {0x191,0x191,-1,1}, {0x193,0x193,-1,205},
+! {0x194,0x194,-1,207}, {0x196,0x196,-1,211}, {0x197,0x197,-1,209},
+! {0x198,0x198,-1,1}, {0x19c,0x19c,-1,211}, {0x19d,0x19d,-1,213},
+! {0x19f,0x19f,-1,214}, {0x1a0,0x1a4,2,1}, {0x1a6,0x1a6,-1,218},
+! {0x1a7,0x1a7,-1,1}, {0x1a9,0x1a9,-1,218}, {0x1ac,0x1ac,-1,1},
+! {0x1ae,0x1ae,-1,218}, {0x1af,0x1af,-1,1}, {0x1b1,0x1b2,1,217},
+! {0x1b3,0x1b5,2,1}, {0x1b7,0x1b7,-1,219}, {0x1b8,0x1bc,4,1},
+! {0x1c4,0x1ca,3,2}, {0x1cd,0x1db,2,1}, {0x1de,0x1ee,2,1},
+! {0x1f1,0x1f1,-1,2}, {0x1f4,0x1f4,-1,1}, {0x1f6,0x1f6,-1,-97},
+! {0x1f7,0x1f7,-1,-56}, {0x1f8,0x21e,2,1}, {0x220,0x220,-1,-130},
+! {0x222,0x232,2,1}, {0x386,0x386,-1,38}, {0x388,0x38a,1,37},
+! {0x38c,0x38c,-1,64}, {0x38e,0x38f,1,63}, {0x391,0x3a1,1,32},
+! {0x3a3,0x3ab,1,32}, {0x3d8,0x3ee,2,1}, {0x3f4,0x3f4,-1,-60},
+! {0x3f7,0x3f7,-1,1}, {0x3f9,0x3f9,-1,-7}, {0x3fa,0x3fa,-1,1},
+! {0x400,0x40f,1,80}, {0x410,0x42f,1,32}, {0x460,0x480,2,1},
+! {0x48a,0x4be,2,1}, {0x4c1,0x4cd,2,1}, {0x4d0,0x4f4,2,1},
+! {0x4f8,0x500,8,1}, {0x502,0x50e,2,1}, {0x531,0x556,1,48},
+! {0x1e00,0x1e94,2,1}, {0x1ea0,0x1ef8,2,1}, {0x1f08,0x1f0f,1,-8},
+! {0x1f18,0x1f1d,1,-8}, {0x1f28,0x1f2f,1,-8}, {0x1f38,0x1f3f,1,-8},
+! {0x1f48,0x1f4d,1,-8}, {0x1f59,0x1f5f,2,-8}, {0x1f68,0x1f6f,1,-8},
+! {0x1fb8,0x1fb9,1,-8}, {0x1fba,0x1fbb,1,-74}, {0x1fc8,0x1fcb,1,-86},
+! {0x1fd8,0x1fd9,1,-8}, {0x1fda,0x1fdb,1,-100}, {0x1fe8,0x1fe9,1,-8},
+! {0x1fea,0x1feb,1,-112}, {0x1fec,0x1fec,-1,-7}, {0x1ff8,0x1ff9,1,-128},
+! {0x1ffa,0x1ffb,1,-126}, {0x2126,0x2126,-1,-7517}, {0x212a,0x212a,-1,-8383},
+! {0x212b,0x212b,-1,-8262}, {0xff21,0xff3a,1,32}, {0x10400,0x10427,1,40}
+ };
+
+ static convertStruct toUpper[] =
+ {
+! {0x61,0x7a,1,-32}, {0xb5,0xb5,-1,743}, {0xe0,0xf6,1,-32},
+! {0xf8,0xfe,1,-32}, {0xff,0xff,-1,121}, {0x101,0x12f,2,-1},
+! {0x131,0x131,-1,-232}, {0x133,0x137,2,-1}, {0x13a,0x148,2,-1},
+! {0x14b,0x177,2,-1}, {0x17a,0x17e,2,-1}, {0x17f,0x17f,-1,-300},
+! {0x183,0x185,2,-1}, {0x188,0x18c,4,-1}, {0x192,0x192,-1,-1},
+! {0x195,0x195,-1,97}, {0x199,0x199,-1,-1}, {0x19e,0x19e,-1,130},
+! {0x1a1,0x1a5,2,-1}, {0x1a8,0x1ad,5,-1}, {0x1b0,0x1b4,4,-1},
+! {0x1b6,0x1b9,3,-1}, {0x1bd,0x1bd,-1,-1}, {0x1bf,0x1bf,-1,56},
+! {0x1c5,0x1c6,1,-1}, {0x1c8,0x1c9,1,-1}, {0x1cb,0x1cc,1,-1},
+! {0x1ce,0x1dc,2,-1}, {0x1dd,0x1dd,-1,-79}, {0x1df,0x1ef,2,-1},
+! {0x1f2,0x1f3,1,-1}, {0x1f5,0x1f9,4,-1}, {0x1fb,0x21f,2,-1},
+! {0x223,0x233,2,-1}, {0x253,0x253,-1,-210}, {0x254,0x254,-1,-206},
+! {0x256,0x257,1,-205}, {0x259,0x259,-1,-202}, {0x25b,0x25b,-1,-203},
+! {0x260,0x260,-1,-205}, {0x263,0x263,-1,-207}, {0x268,0x268,-1,-209},
+! {0x269,0x26f,6,-211}, {0x272,0x272,-1,-213}, {0x275,0x275,-1,-214},
+! {0x280,0x283,3,-218}, {0x288,0x288,-1,-218}, {0x28a,0x28b,1,-217},
+! {0x292,0x292,-1,-219}, {0x3ac,0x3ac,-1,-38}, {0x3ad,0x3af,1,-37},
+! {0x3b1,0x3c1,1,-32}, {0x3c2,0x3c2,-1,-31}, {0x3c3,0x3cb,1,-32},
+! {0x3cc,0x3cc,-1,-64}, {0x3cd,0x3ce,1,-63}, {0x3d0,0x3d0,-1,-62},
+! {0x3d1,0x3d1,-1,-57}, {0x3d5,0x3d5,-1,-47}, {0x3d6,0x3d6,-1,-54},
+! {0x3d9,0x3ef,2,-1}, {0x3f0,0x3f0,-1,-86}, {0x3f1,0x3f1,-1,-80},
+! {0x3f2,0x3f2,-1,7}, {0x3f5,0x3f5,-1,-96}, {0x3f8,0x3fb,3,-1},
+! {0x430,0x44f,1,-32}, {0x450,0x45f,1,-80}, {0x461,0x481,2,-1},
+! {0x48b,0x4bf,2,-1}, {0x4c2,0x4ce,2,-1}, {0x4d1,0x4f5,2,-1},
+! {0x4f9,0x501,8,-1}, {0x503,0x50f,2,-1}, {0x561,0x586,1,-48},
+! {0x1e01,0x1e95,2,-1}, {0x1e9b,0x1e9b,-1,-59}, {0x1ea1,0x1ef9,2,-1},
+! {0x1f00,0x1f07,1,8}, {0x1f10,0x1f15,1,8}, {0x1f20,0x1f27,1,8},
+! {0x1f30,0x1f37,1,8}, {0x1f40,0x1f45,1,8}, {0x1f51,0x1f57,2,8},
+! {0x1f60,0x1f67,1,8}, {0x1f70,0x1f71,1,74}, {0x1f72,0x1f75,1,86},
+! {0x1f76,0x1f77,1,100}, {0x1f78,0x1f79,1,128}, {0x1f7a,0x1f7b,1,112},
+! {0x1f7c,0x1f7d,1,126}, {0x1f80,0x1f87,1,8}, {0x1f90,0x1f97,1,8},
+! {0x1fa0,0x1fa7,1,8}, {0x1fb0,0x1fb1,1,8}, {0x1fb3,0x1fb3,-1,9},
+! {0x1fbe,0x1fbe,-1,-7205}, {0x1fc3,0x1fc3,-1,9}, {0x1fd0,0x1fd1,1,8},
+! {0x1fe0,0x1fe1,1,8}, {0x1fe5,0x1fe5,-1,7}, {0x1ff3,0x1ff3,-1,9},
+! {0xff41,0xff5a,1,-32}, {0x10428,0x1044f,1,-40}
+ };
+
+ /*
+--- 2663,2968 ----
+ return utf_convert(a, foldCase, sizeof(foldCase));
+ }
+
+ static convertStruct toLower[] =
+ {
+! {0x41,0x5a,1,32},
+! {0xc0,0xd6,1,32},
+! {0xd8,0xde,1,32},
+! {0x100,0x12e,2,1},
+! {0x130,0x130,-1,-199},
+! {0x132,0x136,2,1},
+! {0x139,0x147,2,1},
+! {0x14a,0x176,2,1},
+! {0x178,0x178,-1,-121},
+! {0x179,0x17d,2,1},
+! {0x181,0x181,-1,210},
+! {0x182,0x184,2,1},
+! {0x186,0x186,-1,206},
+! {0x187,0x187,-1,1},
+! {0x189,0x18a,1,205},
+! {0x18b,0x18b,-1,1},
+! {0x18e,0x18e,-1,79},
+! {0x18f,0x18f,-1,202},
+! {0x190,0x190,-1,203},
+! {0x191,0x191,-1,1},
+! {0x193,0x193,-1,205},
+! {0x194,0x194,-1,207},
+! {0x196,0x196,-1,211},
+! {0x197,0x197,-1,209},
+! {0x198,0x198,-1,1},
+! {0x19c,0x19c,-1,211},
+! {0x19d,0x19d,-1,213},
+! {0x19f,0x19f,-1,214},
+! {0x1a0,0x1a4,2,1},
+! {0x1a6,0x1a6,-1,218},
+! {0x1a7,0x1a7,-1,1},
+! {0x1a9,0x1a9,-1,218},
+! {0x1ac,0x1ac,-1,1},
+! {0x1ae,0x1ae,-1,218},
+! {0x1af,0x1af,-1,1},
+! {0x1b1,0x1b2,1,217},
+! {0x1b3,0x1b5,2,1},
+! {0x1b7,0x1b7,-1,219},
+! {0x1b8,0x1bc,4,1},
+! {0x1c4,0x1c4,-1,2},
+! {0x1c5,0x1c5,-1,1},
+! {0x1c7,0x1c7,-1,2},
+! {0x1c8,0x1c8,-1,1},
+! {0x1ca,0x1ca,-1,2},
+! {0x1cb,0x1db,2,1},
+! {0x1de,0x1ee,2,1},
+! {0x1f1,0x1f1,-1,2},
+! {0x1f2,0x1f4,2,1},
+! {0x1f6,0x1f6,-1,-97},
+! {0x1f7,0x1f7,-1,-56},
+! {0x1f8,0x21e,2,1},
+! {0x220,0x220,-1,-130},
+! {0x222,0x232,2,1},
+! {0x23a,0x23a,-1,10795},
+! {0x23b,0x23b,-1,1},
+! {0x23d,0x23d,-1,-163},
+! {0x23e,0x23e,-1,10792},
+! {0x241,0x241,-1,1},
+! {0x243,0x243,-1,-195},
+! {0x244,0x244,-1,69},
+! {0x245,0x245,-1,71},
+! {0x246,0x24e,2,1},
+! {0x370,0x372,2,1},
+! {0x376,0x376,-1,1},
+! {0x386,0x386,-1,38},
+! {0x388,0x38a,1,37},
+! {0x38c,0x38c,-1,64},
+! {0x38e,0x38f,1,63},
+! {0x391,0x3a1,1,32},
+! {0x3a3,0x3ab,1,32},
+! {0x3cf,0x3cf,-1,8},
+! {0x3d8,0x3ee,2,1},
+! {0x3f4,0x3f4,-1,-60},
+! {0x3f7,0x3f7,-1,1},
+! {0x3f9,0x3f9,-1,-7},
+! {0x3fa,0x3fa,-1,1},
+! {0x3fd,0x3ff,1,-130},
+! {0x400,0x40f,1,80},
+! {0x410,0x42f,1,32},
+! {0x460,0x480,2,1},
+! {0x48a,0x4be,2,1},
+! {0x4c0,0x4c0,-1,15},
+! {0x4c1,0x4cd,2,1},
+! {0x4d0,0x524,2,1},
+! {0x531,0x556,1,48},
+! {0x10a0,0x10c5,1,7264},
+! {0x1e00,0x1e94,2,1},
+! {0x1e9e,0x1e9e,-1,-7615},
+! {0x1ea0,0x1efe,2,1},
+! {0x1f08,0x1f0f,1,-8},
+! {0x1f18,0x1f1d,1,-8},
+! {0x1f28,0x1f2f,1,-8},
+! {0x1f38,0x1f3f,1,-8},
+! {0x1f48,0x1f4d,1,-8},
+! {0x1f59,0x1f5f,2,-8},
+! {0x1f68,0x1f6f,1,-8},
+! {0x1f88,0x1f8f,1,-8},
+! {0x1f98,0x1f9f,1,-8},
+! {0x1fa8,0x1faf,1,-8},
+! {0x1fb8,0x1fb9,1,-8},
+! {0x1fba,0x1fbb,1,-74},
+! {0x1fbc,0x1fbc,-1,-9},
+! {0x1fc8,0x1fcb,1,-86},
+! {0x1fcc,0x1fcc,-1,-9},
+! {0x1fd8,0x1fd9,1,-8},
+! {0x1fda,0x1fdb,1,-100},
+! {0x1fe8,0x1fe9,1,-8},
+! {0x1fea,0x1feb,1,-112},
+! {0x1fec,0x1fec,-1,-7},
+! {0x1ff8,0x1ff9,1,-128},
+! {0x1ffa,0x1ffb,1,-126},
+! {0x1ffc,0x1ffc,-1,-9},
+! {0x2126,0x2126,-1,-7517},
+! {0x212a,0x212a,-1,-8383},
+! {0x212b,0x212b,-1,-8262},
+! {0x2132,0x2132,-1,28},
+! {0x2160,0x216f,1,16},
+! {0x2183,0x2183,-1,1},
+! {0x24b6,0x24cf,1,26},
+! {0x2c00,0x2c2e,1,48},
+! {0x2c60,0x2c60,-1,1},
+! {0x2c62,0x2c62,-1,-10743},
+! {0x2c63,0x2c63,-1,-3814},
+! {0x2c64,0x2c64,-1,-10727},
+! {0x2c67,0x2c6b,2,1},
+! {0x2c6d,0x2c6d,-1,-10780},
+! {0x2c6e,0x2c6e,-1,-10749},
+! {0x2c6f,0x2c6f,-1,-10783},
+! {0x2c70,0x2c70,-1,-10782},
+! {0x2c72,0x2c75,3,1},
+! {0x2c7e,0x2c7f,1,-10815},
+! {0x2c80,0x2ce2,2,1},
+! {0x2ceb,0x2ced,2,1},
+! {0xa640,0xa65e,2,1},
+! {0xa662,0xa66c,2,1},
+! {0xa680,0xa696,2,1},
+! {0xa722,0xa72e,2,1},
+! {0xa732,0xa76e,2,1},
+! {0xa779,0xa77b,2,1},
+! {0xa77d,0xa77d,-1,-35332},
+! {0xa77e,0xa786,2,1},
+! {0xa78b,0xa78b,-1,1},
+! {0xff21,0xff3a,1,32},
+! {0x10400,0x10427,1,40}
+ };
+
+ static convertStruct toUpper[] =
+ {
+! {0x61,0x7a,1,-32},
+! {0xb5,0xb5,-1,743},
+! {0xe0,0xf6,1,-32},
+! {0xf8,0xfe,1,-32},
+! {0xff,0xff,-1,121},
+! {0x101,0x12f,2,-1},
+! {0x131,0x131,-1,-232},
+! {0x133,0x137,2,-1},
+! {0x13a,0x148,2,-1},
+! {0x14b,0x177,2,-1},
+! {0x17a,0x17e,2,-1},
+! {0x17f,0x17f,-1,-300},
+! {0x180,0x180,-1,195},
+! {0x183,0x185,2,-1},
+! {0x188,0x18c,4,-1},
+! {0x192,0x192,-1,-1},
+! {0x195,0x195,-1,97},
+! {0x199,0x199,-1,-1},
+! {0x19a,0x19a,-1,163},
+! {0x19e,0x19e,-1,130},
+! {0x1a1,0x1a5,2,-1},
+! {0x1a8,0x1ad,5,-1},
+! {0x1b0,0x1b4,4,-1},
+! {0x1b6,0x1b9,3,-1},
+! {0x1bd,0x1bd,-1,-1},
+! {0x1bf,0x1bf,-1,56},
+! {0x1c5,0x1c5,-1,-1},
+! {0x1c6,0x1c6,-1,-2},
+! {0x1c8,0x1c8,-1,-1},
+! {0x1c9,0x1c9,-1,-2},
+! {0x1cb,0x1cb,-1,-1},
+! {0x1cc,0x1cc,-1,-2},
+! {0x1ce,0x1dc,2,-1},
+! {0x1dd,0x1dd,-1,-79},
+! {0x1df,0x1ef,2,-1},
+! {0x1f2,0x1f2,-1,-1},
+! {0x1f3,0x1f3,-1,-2},
+! {0x1f5,0x1f9,4,-1},
+! {0x1fb,0x21f,2,-1},
+! {0x223,0x233,2,-1},
+! {0x23c,0x23c,-1,-1},
+! {0x23f,0x240,1,10815},
+! {0x242,0x247,5,-1},
+! {0x249,0x24f,2,-1},
+! {0x250,0x250,-1,10783},
+! {0x251,0x251,-1,10780},
+! {0x252,0x252,-1,10782},
+! {0x253,0x253,-1,-210},
+! {0x254,0x254,-1,-206},
+! {0x256,0x257,1,-205},
+! {0x259,0x259,-1,-202},
+! {0x25b,0x25b,-1,-203},
+! {0x260,0x260,-1,-205},
+! {0x263,0x263,-1,-207},
+! {0x268,0x268,-1,-209},
+! {0x269,0x269,-1,-211},
+! {0x26b,0x26b,-1,10743},
+! {0x26f,0x26f,-1,-211},
+! {0x271,0x271,-1,10749},
+! {0x272,0x272,-1,-213},
+! {0x275,0x275,-1,-214},
+! {0x27d,0x27d,-1,10727},
+! {0x280,0x283,3,-218},
+! {0x288,0x288,-1,-218},
+! {0x289,0x289,-1,-69},
+! {0x28a,0x28b,1,-217},
+! {0x28c,0x28c,-1,-71},
+! {0x292,0x292,-1,-219},
+! {0x345,0x345,-1,84},
+! {0x371,0x373,2,-1},
+! {0x377,0x377,-1,-1},
+! {0x37b,0x37d,1,130},
+! {0x3ac,0x3ac,-1,-38},
+! {0x3ad,0x3af,1,-37},
+! {0x3b1,0x3c1,1,-32},
+! {0x3c2,0x3c2,-1,-31},
+! {0x3c3,0x3cb,1,-32},
+! {0x3cc,0x3cc,-1,-64},
+! {0x3cd,0x3ce,1,-63},
+! {0x3d0,0x3d0,-1,-62},
+! {0x3d1,0x3d1,-1,-57},
+! {0x3d5,0x3d5,-1,-47},
+! {0x3d6,0x3d6,-1,-54},
+! {0x3d7,0x3d7,-1,-8},
+! {0x3d9,0x3ef,2,-1},
+! {0x3f0,0x3f0,-1,-86},
+! {0x3f1,0x3f1,-1,-80},
+! {0x3f2,0x3f2,-1,7},
+! {0x3f5,0x3f5,-1,-96},
+! {0x3f8,0x3fb,3,-1},
+! {0x430,0x44f,1,-32},
+! {0x450,0x45f,1,-80},
+! {0x461,0x481,2,-1},
+! {0x48b,0x4bf,2,-1},
+! {0x4c2,0x4ce,2,-1},
+! {0x4cf,0x4cf,-1,-15},
+! {0x4d1,0x525,2,-1},
+! {0x561,0x586,1,-48},
+! {0x1d79,0x1d79,-1,35332},
+! {0x1d7d,0x1d7d,-1,3814},
+! {0x1e01,0x1e95,2,-1},
+! {0x1e9b,0x1e9b,-1,-59},
+! {0x1ea1,0x1eff,2,-1},
+! {0x1f00,0x1f07,1,8},
+! {0x1f10,0x1f15,1,8},
+! {0x1f20,0x1f27,1,8},
+! {0x1f30,0x1f37,1,8},
+! {0x1f40,0x1f45,1,8},
+! {0x1f51,0x1f57,2,8},
+! {0x1f60,0x1f67,1,8},
+! {0x1f70,0x1f71,1,74},
+! {0x1f72,0x1f75,1,86},
+! {0x1f76,0x1f77,1,100},
+! {0x1f78,0x1f79,1,128},
+! {0x1f7a,0x1f7b,1,112},
+! {0x1f7c,0x1f7d,1,126},
+! {0x1f80,0x1f87,1,8},
+! {0x1f90,0x1f97,1,8},
+! {0x1fa0,0x1fa7,1,8},
+! {0x1fb0,0x1fb1,1,8},
+! {0x1fb3,0x1fb3,-1,9},
+! {0x1fbe,0x1fbe,-1,-7205},
+! {0x1fc3,0x1fc3,-1,9},
+! {0x1fd0,0x1fd1,1,8},
+! {0x1fe0,0x1fe1,1,8},
+! {0x1fe5,0x1fe5,-1,7},
+! {0x1ff3,0x1ff3,-1,9},
+! {0x214e,0x214e,-1,-28},
+! {0x2170,0x217f,1,-16},
+! {0x2184,0x2184,-1,-1},
+! {0x24d0,0x24e9,1,-26},
+! {0x2c30,0x2c5e,1,-48},
+! {0x2c61,0x2c61,-1,-1},
+! {0x2c65,0x2c65,-1,-10795},
+! {0x2c66,0x2c66,-1,-10792},
+! {0x2c68,0x2c6c,2,-1},
+! {0x2c73,0x2c76,3,-1},
+! {0x2c81,0x2ce3,2,-1},
+! {0x2cec,0x2cee,2,-1},
+! {0x2d00,0x2d25,1,-7264},
+! {0xa641,0xa65f,2,-1},
+! {0xa663,0xa66d,2,-1},
+! {0xa681,0xa697,2,-1},
+! {0xa723,0xa72f,2,-1},
+! {0xa733,0xa76f,2,-1},
+! {0xa77a,0xa77c,2,-1},
+! {0xa77f,0xa787,2,-1},
+! {0xa78c,0xa78c,-1,-1},
+! {0xff41,0xff5a,1,-32},
+! {0x10428,0x1044f,1,-40}
+ };
+
+ /*
+*** ../vim-7.2.329/src/version.c 2010-01-12 15:42:03.000000000 +0100
+--- src/version.c 2010-01-12 18:16:55.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 330,
+ /**/
+
+--
+From "know your smileys":
+ <|-) Chinese
+ <|-( Chinese and doesn't like these kind of jokes
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.331 b/source/ap/vim/patches/7.2.331
new file mode 100644
index 000000000..82f40a26c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.331
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.331
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.331
+Problem: Can't interrupt "echo list" for a very long list.
+Solution: Call line_breakcheck() in list_join().
+Files: src/eval.c
+
+
+*** ../vim-7.2.330/src/eval.c 2010-01-12 12:48:40.000000000 +0100
+--- src/eval.c 2010-01-12 15:59:28.000000000 +0100
+***************
+*** 6475,6480 ****
+--- 6475,6481 ----
+ vim_free(tofree);
+ if (s == NULL)
+ return FAIL;
++ line_breakcheck();
+ }
+ return OK;
+ }
+*** ../vim-7.2.330/src/version.c 2010-01-12 19:48:57.000000000 +0100
+--- src/version.c 2010-01-19 12:44:02.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 331,
+ /**/
+
+
+--
+hundred-and-one symptoms of being an internet addict:
+116. You are living with your boyfriend who networks your respective
+ computers so you can sit in separate rooms and email each other
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.332 b/source/ap/vim/patches/7.2.332
new file mode 100644
index 000000000..7956d1ed8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.332
@@ -0,0 +1,101 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.332
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.332
+Problem: Crash when spell correcting triggers an autocommand that reloads
+ the buffer.
+Solution: Make a copy of the line to be modified. (Dominique Pelle)
+Files: src/spell.c
+
+
+*** ../vim-7.2.331/src/spell.c 2009-07-22 11:03:38.000000000 +0200
+--- src/spell.c 2010-01-19 12:44:42.000000000 +0100
+***************
+*** 10306,10312 ****
+ /* Figure out if the word should be capitalised. */
+ need_cap = check_need_cap(curwin->w_cursor.lnum, curwin->w_cursor.col);
+
+! line = ml_get_curline();
+
+ /* Get the list of suggestions. Limit to 'lines' - 2 or the number in
+ * 'spellsuggest', whatever is smaller. */
+--- 10306,10315 ----
+ /* Figure out if the word should be capitalised. */
+ need_cap = check_need_cap(curwin->w_cursor.lnum, curwin->w_cursor.col);
+
+! /* Make a copy of current line since autocommands may free the line. */
+! line = vim_strsave(ml_get_curline());
+! if (line == NULL)
+! goto skip;
+
+ /* Get the list of suggestions. Limit to 'lines' - 2 or the number in
+ * 'spellsuggest', whatever is smaller. */
+***************
+*** 10470,10475 ****
+--- 10473,10480 ----
+ curwin->w_cursor = prev_cursor;
+
+ spell_find_cleanup(&sug);
++ skip:
++ vim_free(line);
+ }
+
+ /*
+***************
+*** 10931,10937 ****
+ rescore_suggestions(su);
+
+ /*
+! * While going throught the soundfold tree "su_maxscore" is the score
+ * for the soundfold word, limits the changes that are being tried,
+ * and "su_sfmaxscore" the rescored score, which is set by
+ * cleanup_suggestions().
+--- 10936,10942 ----
+ rescore_suggestions(su);
+
+ /*
+! * While going through the soundfold tree "su_maxscore" is the score
+ * for the soundfold word, limits the changes that are being tried,
+ * and "su_sfmaxscore" the rescored score, which is set by
+ * cleanup_suggestions().
+***************
+*** 11415,11421 ****
+ char_u tword[MAXWLEN]; /* good word collected so far */
+ trystate_T stack[MAXWLEN];
+ char_u preword[MAXWLEN * 3]; /* word found with proper case;
+! * concatanation of prefix compound
+ * words and split word. NUL terminated
+ * when going deeper but not when coming
+ * back. */
+--- 11420,11426 ----
+ char_u tword[MAXWLEN]; /* good word collected so far */
+ trystate_T stack[MAXWLEN];
+ char_u preword[MAXWLEN * 3]; /* word found with proper case;
+! * concatenation of prefix compound
+ * words and split word. NUL terminated
+ * when going deeper but not when coming
+ * back. */
+*** ../vim-7.2.331/src/version.c 2010-01-19 12:46:51.000000000 +0100
+--- src/version.c 2010-01-19 13:05:32.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 332,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+117. You are more comfortable typing in html.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.333 b/source/ap/vim/patches/7.2.333
new file mode 100644
index 000000000..02273b64b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.333
@@ -0,0 +1,371 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.333
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.333
+Problem: Warnings from static code analysis.
+Solution: Small changes to various lines. (Dominique Pelle)
+Files: src/buffer.c, src/edit.c, src/ex_getln.c, src/fileio.c,
+ src/if_cscope.c, src/netbeans.c, src/ops.c, src/quickfix.c,
+ src/syntax.c, src/ui.c
+
+
+*** ../vim-7.2.332/src/buffer.c 2009-05-17 13:30:58.000000000 +0200
+--- src/buffer.c 2010-01-19 12:50:24.000000000 +0100
+***************
+*** 315,321 ****
+ {
+ #ifdef FEAT_AUTOCMD
+ int is_curbuf;
+! int nwindows = buf->b_nwindows;
+ #endif
+ int unload_buf = (action != 0);
+ int del_buf = (action == DOBUF_DEL || action == DOBUF_WIPE);
+--- 315,321 ----
+ {
+ #ifdef FEAT_AUTOCMD
+ int is_curbuf;
+! int nwindows;
+ #endif
+ int unload_buf = (action != 0);
+ int del_buf = (action == DOBUF_DEL || action == DOBUF_WIPE);
+*** ../vim-7.2.332/src/edit.c 2009-12-24 15:45:53.000000000 +0100
+--- src/edit.c 2010-01-19 12:53:18.000000000 +0100
+***************
+*** 4048,4054 ****
+ save_p_ic = p_ic;
+ p_ic = ignorecase(compl_pattern);
+
+! /* Find up to TAG_MANY matches. Avoids that an enourmous number
+ * of matches is found when compl_pattern is empty */
+ if (find_tags(compl_pattern, &num_matches, &matches,
+ TAG_REGEXP | TAG_NAMES | TAG_NOIC |
+--- 4048,4054 ----
+ save_p_ic = p_ic;
+ p_ic = ignorecase(compl_pattern);
+
+! /* Find up to TAG_MANY matches. Avoids that an enormous number
+ * of matches is found when compl_pattern is empty */
+ if (find_tags(compl_pattern, &num_matches, &matches,
+ TAG_REGEXP | TAG_NAMES | TAG_NOIC |
+***************
+*** 4219,4225 ****
+ || IObuff[len - 2] == '!'))))
+ IObuff[len++] = ' ';
+ }
+! /* copy as much as posible of the new word */
+ if (tmp_ptr - ptr >= IOSIZE - len)
+ tmp_ptr = ptr + IOSIZE - len - 1;
+ STRNCPY(IObuff + len, ptr, tmp_ptr - ptr);
+--- 4219,4225 ----
+ || IObuff[len - 2] == '!'))))
+ IObuff[len++] = ' ';
+ }
+! /* copy as much as possible of the new word */
+ if (tmp_ptr - ptr >= IOSIZE - len)
+ tmp_ptr = ptr + IOSIZE - len - 1;
+ STRNCPY(IObuff + len, ptr, tmp_ptr - ptr);
+***************
+*** 5827,5836 ****
+ #endif
+ && !has_format_option(FO_WRAP))
+
+- {
+- textwidth = 0;
+ break;
+- }
+ if ((startcol = curwin->w_cursor.col) == 0)
+ break;
+
+--- 5827,5833 ----
+*** ../vim-7.2.332/src/ex_getln.c 2009-12-02 17:15:04.000000000 +0100
+--- src/ex_getln.c 2010-01-19 12:54:47.000000000 +0100
+***************
+*** 2193,2199 ****
+ {
+ if (ga_grow(&line_ga, 40) == FAIL)
+ break;
+- pend = (char_u *)line_ga.ga_data + line_ga.ga_len;
+
+ /* Get one character at a time. Don't use inchar(), it can't handle
+ * special characters. */
+--- 2193,2198 ----
+***************
+*** 3314,3320 ****
+ WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
+ |options, type);
+ vim_free(p1);
+! /* longest match: make sure it is not shorter (happens with :help */
+ if (p2 != NULL && type == WILD_LONGEST)
+ {
+ for (j = 0; j < xp->xp_pattern_len; ++j)
+--- 3313,3319 ----
+ WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
+ |options, type);
+ vim_free(p1);
+! /* longest match: make sure it is not shorter, happens with :help */
+ if (p2 != NULL && type == WILD_LONGEST)
+ {
+ for (j = 0; j < xp->xp_pattern_len; ++j)
+*** ../vim-7.2.332/src/fileio.c 2009-12-31 14:52:48.000000000 +0100
+--- src/fileio.c 2010-01-19 12:56:59.000000000 +0100
+***************
+*** 7072,7079 ****
+ */
+ for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
+ {
+- size_t itmplen;
+ # ifndef HAVE_MKDTEMP
+ long nr;
+ long off;
+ # endif
+--- 7072,7079 ----
+ */
+ for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
+ {
+ # ifndef HAVE_MKDTEMP
++ size_t itmplen;
+ long nr;
+ long off;
+ # endif
+***************
+*** 7091,7097 ****
+ else
+ # endif
+ add_pathsep(itmp);
+- itmplen = STRLEN(itmp);
+
+ # ifdef HAVE_MKDTEMP
+ /* Leave room for filename */
+--- 7091,7096 ----
+***************
+*** 7104,7109 ****
+--- 7103,7109 ----
+ * otherwise it doesn't matter. The use of mkdir() avoids any
+ * security problems because of the predictable number. */
+ nr = (mch_get_pid() + (long)time(NULL)) % 1000000L;
++ itmplen = STRLEN(itmp);
+
+ /* Try up to 10000 different values until we find a name that
+ * doesn't exist. */
+*** ../vim-7.2.332/src/if_cscope.c 2009-07-09 21:22:36.000000000 +0200
+--- src/if_cscope.c 2010-01-19 12:57:58.000000000 +0100
+***************
+*** 2069,2075 ****
+ continue;
+ (void)strcpy(tbuf, matches[idx]);
+
+! if ((fname = strtok(tbuf, (const char *)"\t")) == NULL)
+ continue;
+ if ((fname = strtok(NULL, (const char *)"\t")) == NULL)
+ continue;
+--- 2069,2075 ----
+ continue;
+ (void)strcpy(tbuf, matches[idx]);
+
+! if (strtok(tbuf, (const char *)"\t") == NULL)
+ continue;
+ if ((fname = strtok(NULL, (const char *)"\t")) == NULL)
+ continue;
+*** ../vim-7.2.332/src/netbeans.c 2009-09-11 14:19:41.000000000 +0200
+--- src/netbeans.c 2010-01-19 13:57:11.000000000 +0100
+***************
+*** 873,879 ****
+ {
+ #ifdef NBDEBUG
+ /*
+! * This happens because the ExtEd can send a cammand or 2 after
+ * doing a stopDocumentListen command. It doesn't harm anything
+ * so I'm disabling it except for debugging.
+ */
+--- 883,889 ----
+ {
+ #ifdef NBDEBUG
+ /*
+! * This happens because the ExtEd can send a command or 2 after
+ * doing a stopDocumentListen command. It doesn't harm anything
+ * so I'm disabling it except for debugging.
+ */
+***************
+*** 1174,1180 ****
+ break;
+ }
+ }
+! *q++ = '\0';
+
+ return buf;
+ }
+--- 1184,1190 ----
+ break;
+ }
+ }
+! *q = '\0';
+
+ return buf;
+ }
+***************
+*** 3070,3076 ****
+ }
+
+ /*
+! * Send netbeans an unmodufied command.
+ */
+ void
+ netbeans_unmodified(buf_T *bufp UNUSED)
+--- 3080,3086 ----
+ }
+
+ /*
+! * Send netbeans an unmodified command.
+ */
+ void
+ netbeans_unmodified(buf_T *bufp UNUSED)
+***************
+*** 3366,3372 ****
+
+
+ /*
+! * Add a sign of the reqested type at the requested location.
+ *
+ * Reverse engineering:
+ * Apparently an annotation is defined the first time it is used in a buffer.
+--- 3380,3386 ----
+
+
+ /*
+! * Add a sign of the requested type at the requested location.
+ *
+ * Reverse engineering:
+ * Apparently an annotation is defined the first time it is used in a buffer.
+*** ../vim-7.2.332/src/ops.c 2009-11-25 12:38:49.000000000 +0100
+--- src/ops.c 2010-01-19 13:04:46.000000000 +0100
+***************
+*** 5591,5603 ****
+ */
+ if (has_mbyte)
+ {
+- char_u *conv_str = str;
+ vimconv_T vc;
+
+ vc.vc_type = CONV_NONE;
+ if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
+ {
+! int intlen = len;
+
+ conv_str = string_convert(&vc, str, &intlen);
+ len = intlen;
+--- 5598,5610 ----
+ */
+ if (has_mbyte)
+ {
+ vimconv_T vc;
+
+ vc.vc_type = CONV_NONE;
+ if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
+ {
+! int intlen = len;
+! char_u *conv_str;
+
+ conv_str = string_convert(&vc, str, &intlen);
+ len = intlen;
+*** ../vim-7.2.332/src/quickfix.c 2009-06-24 17:31:27.000000000 +0200
+--- src/quickfix.c 2010-01-19 13:12:29.000000000 +0100
+***************
+*** 1899,1905 ****
+ int i;
+ int idx1 = 1;
+ int idx2 = -1;
+- int need_return = TRUE;
+ char_u *arg = eap->arg;
+ int all = eap->forceit; /* if not :cl!, only show
+ recognised errors */
+--- 1899,1904 ----
+***************
+*** 1939,1951 ****
+ {
+ if ((qfp->qf_valid || all) && idx1 <= i && i <= idx2)
+ {
+! if (need_return)
+! {
+! msg_putchar('\n');
+! if (got_int)
+! break;
+! need_return = FALSE;
+! }
+
+ fname = NULL;
+ if (qfp->qf_fnum != 0
+--- 1938,1946 ----
+ {
+ if ((qfp->qf_valid || all) && idx1 <= i && i <= idx2)
+ {
+! msg_putchar('\n');
+! if (got_int)
+! break;
+
+ fname = NULL;
+ if (qfp->qf_fnum != 0
+***************
+*** 1988,1994 ****
+ IObuff, IOSIZE);
+ msg_prt_line(IObuff, FALSE);
+ out_flush(); /* show one line at a time */
+- need_return = TRUE;
+ }
+
+ qfp = qfp->qf_next;
+--- 1983,1988 ----
+*** ../vim-7.2.332/src/syntax.c 2009-12-16 18:13:04.000000000 +0100
+--- src/syntax.c 2010-01-19 13:12:56.000000000 +0100
+***************
+*** 4167,4173 ****
+ if (!HASHITEM_EMPTY(hi))
+ {
+ --todo;
+- kp = HI2KE(hi);
+ for (kp = HI2KE(hi); kp != NULL; kp = kp_next)
+ {
+ kp_next = kp->ke_next;
+--- 4167,4172 ----
+*** ../vim-7.2.332/src/ui.c 2009-09-11 16:48:06.000000000 +0200
+--- src/ui.c 2010-01-19 13:14:04.000000000 +0100
+***************
+*** 2383,2389 ****
+ * 'enc' anyway. */
+ if (has_mbyte)
+ {
+! char_u *conv_buf = buffer;
+ vimconv_T vc;
+
+ vc.vc_type = CONV_NONE;
+--- 2383,2389 ----
+ * 'enc' anyway. */
+ if (has_mbyte)
+ {
+! char_u *conv_buf;
+ vimconv_T vc;
+
+ vc.vc_type = CONV_NONE;
+*** ../vim-7.2.332/src/version.c 2010-01-19 13:06:42.000000000 +0100
+--- src/version.c 2010-01-19 14:55:50.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 333,
+ /**/
+
+--
+An actual excerpt from a classified section of a city newspaper:
+"Illiterate? Write today for free help!"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.334 b/source/ap/vim/patches/7.2.334
new file mode 100644
index 000000000..1b88bbd6e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.334
@@ -0,0 +1,347 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.334
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.334
+Problem: Postponing keys in Netbeans interface does not work properly.
+Solution: Store the key string instead of the number. Avoid an infinite
+ loop. (Mostly by Xavier de Gaye)
+Files: src/netbeans.c, src/proto/netbeans.pro
+
+
+*** ../vim-7.2.333/src/netbeans.c 2010-01-19 14:59:14.000000000 +0100
+--- src/netbeans.c 2010-01-19 15:12:17.000000000 +0100
+***************
+*** 70,76 ****
+ static pos_T *off2pos __ARGS((buf_T *, long));
+ static pos_T *get_off_or_lnum __ARGS((buf_T *buf, char_u **argp));
+ static long get_buf_size __ARGS((buf_T *));
+! static void netbeans_keystring __ARGS((int key, char *keystr));
+ static void special_keys __ARGS((char_u *args));
+
+ static void netbeans_connect __ARGS((void));
+--- 70,77 ----
+ static pos_T *off2pos __ARGS((buf_T *, long));
+ static pos_T *get_off_or_lnum __ARGS((buf_T *buf, char_u **argp));
+ static long get_buf_size __ARGS((buf_T *));
+! static int netbeans_keystring __ARGS((char_u *keystr));
+! static void postpone_keycommand __ARGS((char_u *keystr));
+ static void special_keys __ARGS((char_u *args));
+
+ static void netbeans_connect __ARGS((void));
+***************
+*** 502,508 ****
+
+ struct keyqueue
+ {
+! int key;
+ struct keyqueue *next;
+ struct keyqueue *prev;
+ };
+--- 503,509 ----
+
+ struct keyqueue
+ {
+! char_u *keystr;
+ struct keyqueue *next;
+ struct keyqueue *prev;
+ };
+***************
+*** 514,526 ****
+
+ /*
+ * Queue up key commands sent from netbeans.
+ */
+ static void
+! postpone_keycommand(int key)
+ {
+ keyQ_T *node;
+
+ node = (keyQ_T *)alloc(sizeof(keyQ_T));
+
+ if (keyHead.next == NULL) /* initialize circular queue */
+ {
+--- 515,531 ----
+
+ /*
+ * Queue up key commands sent from netbeans.
++ * We store the string, because it may depend on the global mod_mask and
++ * :nbkey doesn't have a key number.
+ */
+ static void
+! postpone_keycommand(char_u *keystr)
+ {
+ keyQ_T *node;
+
+ node = (keyQ_T *)alloc(sizeof(keyQ_T));
++ if (node == NULL)
++ return; /* out of memory, drop the key */
+
+ if (keyHead.next == NULL) /* initialize circular queue */
+ {
+***************
+*** 534,540 ****
+ keyHead.prev->next = node;
+ keyHead.prev = node;
+
+! node->key = key;
+ }
+
+ /*
+--- 539,545 ----
+ keyHead.prev->next = node;
+ keyHead.prev = node;
+
+! node->keystr = vim_strsave(keystr);
+ }
+
+ /*
+***************
+*** 543,557 ****
+ static void
+ handle_key_queue(void)
+ {
+! while (keyHead.next && keyHead.next != &keyHead)
+ {
+ /* first, unlink the node */
+ keyQ_T *node = keyHead.next;
+ keyHead.next = node->next;
+ node->next->prev = node->prev;
+
+! /* now, send the keycommand */
+! netbeans_keycommand(node->key);
+
+ /* Finally, dispose of the node */
+ vim_free(node);
+--- 548,567 ----
+ static void
+ handle_key_queue(void)
+ {
+! int postponed = FALSE;
+!
+! while (!postponed && keyHead.next && keyHead.next != &keyHead)
+ {
+ /* first, unlink the node */
+ keyQ_T *node = keyHead.next;
+ keyHead.next = node->next;
+ node->next->prev = node->prev;
+
+! /* Now, send the keycommand. This may cause it to be postponed again
+! * and change keyHead. */
+! if (node->keystr != NULL)
+! postponed = !netbeans_keystring(node->keystr);
+! vim_free(node->keystr);
+
+ /* Finally, dispose of the node */
+ vim_free(node);
+***************
+*** 2495,2501 ****
+ }
+ else
+ {
+! nbdebug((" Buffer has no changes!\n"));
+ }
+ /* =====================================================================*/
+ }
+--- 2505,2511 ----
+ }
+ else
+ {
+! nbdebug((" Buffer has no changes!\n"));
+ }
+ /* =====================================================================*/
+ }
+***************
+*** 2658,2664 ****
+ ex_nbkey(eap)
+ exarg_T *eap;
+ {
+! netbeans_keystring(0, (char *)eap->arg);
+ }
+
+
+--- 2668,2674 ----
+ ex_nbkey(eap)
+ exarg_T *eap;
+ {
+! (void)netbeans_keystring(eap->arg);
+ }
+
+
+***************
+*** 2680,2686 ****
+ }
+
+ /*
+! * Convert key to netbeans name.
+ */
+ static void
+ netbeans_keyname(int key, char *buf)
+--- 2690,2696 ----
+ }
+
+ /*
+! * Convert key to netbeans name. This uses the global "mod_mask".
+ */
+ static void
+ netbeans_keyname(int key, char *buf)
+***************
+*** 3127,3149 ****
+ /*
+ * Send a keypress event back to netbeans. This usually simulates some
+ * kind of function key press. This function operates on a key code.
+ */
+! void
+ netbeans_keycommand(int key)
+ {
+ char keyName[60];
+
+ netbeans_keyname(key, keyName);
+! netbeans_keystring(key, keyName);
+ }
+
+
+ /*
+ * Send a keypress event back to netbeans. This usually simulates some
+ * kind of function key press. This function operates on a key string.
+ */
+! static void
+! netbeans_keystring(int key, char *keyName)
+ {
+ char buf[2*MAXPATHL];
+ int bufno = nb_getbufno(curbuf);
+--- 3137,3163 ----
+ /*
+ * Send a keypress event back to netbeans. This usually simulates some
+ * kind of function key press. This function operates on a key code.
++ * Return TRUE when the key was sent, FALSE when the command has been
++ * postponed.
+ */
+! int
+ netbeans_keycommand(int key)
+ {
+ char keyName[60];
+
+ netbeans_keyname(key, keyName);
+! return netbeans_keystring((char_u *)keyName);
+ }
+
+
+ /*
+ * Send a keypress event back to netbeans. This usually simulates some
+ * kind of function key press. This function operates on a key string.
++ * Return TRUE when the key was sent, FALSE when the command has been
++ * postponed.
+ */
+! static int
+! netbeans_keystring(char_u *keyName)
+ {
+ char buf[2*MAXPATHL];
+ int bufno = nb_getbufno(curbuf);
+***************
+*** 3151,3157 ****
+ char_u *q;
+
+ if (!haveConnection)
+! return;
+
+
+ if (bufno == -1)
+--- 3165,3171 ----
+ char_u *q;
+
+ if (!haveConnection)
+! return TRUE;
+
+
+ if (bufno == -1)
+***************
+*** 3160,3166 ****
+ q = curbuf->b_ffname == NULL ? (char_u *)""
+ : nb_quote(curbuf->b_ffname);
+ if (q == NULL)
+! return;
+ vim_snprintf(buf, sizeof(buf), "0:fileOpened=%d \"%s\" %s %s\n", 0,
+ q,
+ "T", /* open in NetBeans */
+--- 3174,3180 ----
+ q = curbuf->b_ffname == NULL ? (char_u *)""
+ : nb_quote(curbuf->b_ffname);
+ if (q == NULL)
+! return TRUE;
+ vim_snprintf(buf, sizeof(buf), "0:fileOpened=%d \"%s\" %s %s\n", 0,
+ q,
+ "T", /* open in NetBeans */
+***************
+*** 3170,3178 ****
+ nbdebug(("EVT: %s", buf));
+ nb_send(buf, "netbeans_keycommand");
+
+! if (key > 0)
+! postpone_keycommand(key);
+! return;
+ }
+
+ /* sync the cursor position */
+--- 3184,3191 ----
+ nbdebug(("EVT: %s", buf));
+ nb_send(buf, "netbeans_keycommand");
+
+! postpone_keycommand(keyName);
+! return FALSE;
+ }
+
+ /* sync the cursor position */
+***************
+*** 3198,3203 ****
+--- 3211,3217 ----
+ off, (long)curwin->w_cursor.lnum, (long)curwin->w_cursor.col);
+ nbdebug(("EVT: %s", buf));
+ nb_send(buf, "netbeans_keycommand");
++ return TRUE;
+ }
+
+
+*** ../vim-7.2.333/src/proto/netbeans.pro 2009-01-06 16:13:42.000000000 +0100
+--- src/proto/netbeans.pro 2010-01-19 13:31:01.000000000 +0100
+***************
+*** 16,22 ****
+ void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
+ void netbeans_unmodified __ARGS((buf_T *bufp));
+ void netbeans_button_release __ARGS((int button));
+! void netbeans_keycommand __ARGS((int key));
+ void netbeans_save_buffer __ARGS((buf_T *bufp));
+ void netbeans_deleted_all_lines __ARGS((buf_T *bufp));
+ int netbeans_is_guarded __ARGS((linenr_T top, linenr_T bot));
+--- 16,22 ----
+ void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
+ void netbeans_unmodified __ARGS((buf_T *bufp));
+ void netbeans_button_release __ARGS((int button));
+! int netbeans_keycommand __ARGS((int key));
+ void netbeans_save_buffer __ARGS((buf_T *bufp));
+ void netbeans_deleted_all_lines __ARGS((buf_T *bufp));
+ int netbeans_is_guarded __ARGS((linenr_T top, linenr_T bot));
+*** ../vim-7.2.333/src/version.c 2010-01-19 14:59:14.000000000 +0100
+--- src/version.c 2010-01-19 15:08:44.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 334,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+119. You are reading a book and look for the scroll bar to get to
+ the next page.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.335 b/source/ap/vim/patches/7.2.335
new file mode 100644
index 000000000..df7f641c9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.335
@@ -0,0 +1,103 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.335
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.335
+Problem: The CTRL-] command escapes too many characters.
+Solution: Use a different list of characters to be escaped. (Sergey Khorev)
+Files: src/normal.c
+
+
+*** ../vim-7.2.334/src/normal.c 2010-01-12 15:42:03.000000000 +0100
+--- src/normal.c 2010-01-19 15:20:11.000000000 +0100
+***************
+*** 5406,5411 ****
+--- 5406,5412 ----
+ int n = 0; /* init for GCC */
+ int cmdchar;
+ int g_cmd; /* "g" command */
++ int tag_cmd = FALSE;
+ char_u *aux_ptr;
+ int isman;
+ int isman_s;
+***************
+*** 5515,5520 ****
+--- 5516,5522 ----
+ break;
+
+ case ']':
++ tag_cmd = TRUE;
+ #ifdef FEAT_CSCOPE
+ if (p_cst)
+ STRCPY(buf, "cstag ");
+***************
+*** 5526,5535 ****
+ default:
+ if (curbuf->b_help)
+ STRCPY(buf, "he! ");
+- else if (g_cmd)
+- STRCPY(buf, "tj ");
+ else
+! sprintf((char *)buf, "%ldta ", cap->count0);
+ }
+
+ /*
+--- 5528,5541 ----
+ default:
+ if (curbuf->b_help)
+ STRCPY(buf, "he! ");
+ else
+! {
+! tag_cmd = TRUE;
+! if (g_cmd)
+! STRCPY(buf, "tj ");
+! else
+! sprintf((char *)buf, "%ldta ", cap->count0);
+! }
+ }
+
+ /*
+***************
+*** 5562,5569 ****
+ aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
+ else if (cmdchar == '#')
+ aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
+! else
+ /* Don't escape spaces and Tabs in a tag with a backslash */
+ aux_ptr = (char_u *)"\\|\"\n*?[";
+
+ p = buf + STRLEN(buf);
+--- 5568,5577 ----
+ aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
+ else if (cmdchar == '#')
+ aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
+! else if (tag_cmd)
+ /* Don't escape spaces and Tabs in a tag with a backslash */
++ aux_ptr = (char_u *)"\\|\"\n[";
++ else
+ aux_ptr = (char_u *)"\\|\"\n*?[";
+
+ p = buf + STRLEN(buf);
+*** ../vim-7.2.334/src/version.c 2010-01-19 15:12:33.000000000 +0100
+--- src/version.c 2010-01-19 15:22:44.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 335,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+120. You ask a friend, "What's that big shiny thing?" He says, "It's the sun."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.336 b/source/ap/vim/patches/7.2.336
new file mode 100644
index 000000000..a6765922f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.336
@@ -0,0 +1,841 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.336
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.336
+Problem: MzScheme interface can't evaluate an expression.
+Solution: Add mzeval(). (Sergey Khorev)
+Files: runtime/doc/eval.txt, runtime/doc/if_mzsch.txt,
+ runtime/doc/usr_41.txt, src/eval.c, src/if_mzsch.c,
+ src/proto/eval.pro, src/proto/if_mzsch.pro,
+ src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+ src/testdir/Makefile, src/testdir/main.aap, src/testdir/test1.in,
+ src/testdir/test70.in, src/testdir/test70.ok
+
+
+*** ../vim-7.2.335/runtime/doc/eval.txt 2009-11-17 12:20:30.000000000 +0100
+--- runtime/doc/eval.txt 2010-01-19 15:30:50.000000000 +0100
+***************
+*** 1815,1825 ****
+ List match and submatches of {pat} in {expr}
+ matchstr( {expr}, {pat}[, {start}[, {count}]])
+ String {count}'th match of {pat} in {expr}
+! max({list}) Number maximum value of items in {list}
+! min({list}) Number minimum value of items in {list}
+! mkdir({name} [, {path} [, {prot}]])
+ Number create directory {name}
+ mode( [expr]) String current editing mode
+ nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum}
+ nr2char( {expr}) String single char with ASCII value {expr}
+ pathshorten( {expr}) String shorten directory names in a path
+--- 1821,1832 ----
+ List match and submatches of {pat} in {expr}
+ matchstr( {expr}, {pat}[, {start}[, {count}]])
+ String {count}'th match of {pat} in {expr}
+! max( {list}) Number maximum value of items in {list}
+! min( {list}) Number minimum value of items in {list}
+! mkdir( {name} [, {path} [, {prot}]])
+ Number create directory {name}
+ mode( [expr]) String current editing mode
++ mzeval( {expr}) any evaluate |MzScheme| expression
+ nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum}
+ nr2char( {expr}) String single char with ASCII value {expr}
+ pathshorten( {expr}) String shorten directory names in a path
+***************
+*** 4090,4095 ****
+--- 4103,4125 ----
+ "c" or "n".
+ Also see |visualmode()|.
+
++ mzeval({expr}) *mzeval()*
++ Evaluate MzScheme expression {expr} and return its result
++ convert to Vim data structures.
++ Numbers and strings are returned as they are.
++ Pairs (including lists and improper lists) and vectors are
++ returned as Vim |Lists|.
++ Hash tables are represented as Vim |Dictionary| type with keys
++ converted to strings.
++ All other types are converted to string with display function.
++ Examples: >
++ :mz (define l (list 1 2 3))
++ :mz (define h (make-hash)) (hash-set! h "list" l)
++ :echo mzeval("l")
++ :echo mzeval("h")
++ <
++ {only available when compiled with the |+mzscheme| feature}
++
+ nextnonblank({lnum}) *nextnonblank()*
+ Return the line number of the first line at or below {lnum}
+ that is not blank. Example: >
+*** ../vim-7.2.335/runtime/doc/if_mzsch.txt 2009-06-24 17:51:01.000000000 +0200
+--- runtime/doc/if_mzsch.txt 2010-01-19 15:33:00.000000000 +0100
+***************
+*** 1,4 ****
+! *if_mzsch.txt* For Vim version 7.2. Last change: 2009 Jun 24
+
+
+ VIM REFERENCE MANUAL by Sergey Khorev
+--- 1,4 ----
+! *if_mzsch.txt* For Vim version 7.2. Last change: 2010 Jan 19
+
+
+ VIM REFERENCE MANUAL by Sergey Khorev
+***************
+*** 9,16 ****
+ 1. Commands |mzscheme-commands|
+ 2. Examples |mzscheme-examples|
+ 3. Threads |mzscheme-threads|
+! 4. The Vim access procedures |mzscheme-vim|
+! 5. Dynamic loading |mzscheme-dynamic|
+
+ {Vi does not have any of these commands}
+
+--- 9,17 ----
+ 1. Commands |mzscheme-commands|
+ 2. Examples |mzscheme-examples|
+ 3. Threads |mzscheme-threads|
+! 4. Vim access from MzScheme |mzscheme-vim|
+! 5. mzeval() Vim function |mzscheme-mzeval|
+! 6. Dynamic loading |mzscheme-dynamic|
+
+ {Vi does not have any of these commands}
+
+***************
+*** 142,148 ****
+ GUI version.
+
+ ==============================================================================
+! 5. VIM Functions *mzscheme-vim*
+
+ *mzscheme-vimext*
+ The 'vimext' module provides access to procedures defined in the MzScheme
+--- 143,149 ----
+ GUI version.
+
+ ==============================================================================
+! 4. Vim access from MzScheme *mzscheme-vim*
+
+ *mzscheme-vimext*
+ The 'vimext' module provides access to procedures defined in the MzScheme
+***************
+*** 231,237 ****
+ (set-cursor (line . col) [window]) Set cursor position.
+
+ ==============================================================================
+! 5. Dynamic loading *mzscheme-dynamic* *E815*
+
+ On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
+ output then includes |+mzscheme/dyn|.
+--- 232,244 ----
+ (set-cursor (line . col) [window]) Set cursor position.
+
+ ==============================================================================
+! 5. mzeval() Vim function *mzscheme-mzeval*
+!
+! To facilitate bi-directional interface, you can use |mzeval| function to
+! evaluate MzScheme expressions and pass their values to VimL.
+!
+! ==============================================================================
+! 6. Dynamic loading *mzscheme-dynamic* *E815*
+
+ On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
+ output then includes |+mzscheme/dyn|.
+*** ../vim-7.2.335/runtime/doc/usr_41.txt 2008-08-09 19:36:54.000000000 +0200
+--- runtime/doc/usr_41.txt 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 868,873 ****
+--- 868,875 ----
+ taglist() get list of matching tags
+ tagfiles() get a list of tags files
+
++ mzeval() evaluate |MzScheme| expression
++
+ ==============================================================================
+ *41.7* Defining a function
+
+*** ../vim-7.2.335/src/eval.c 2010-01-19 12:46:51.000000000 +0100
+--- src/eval.c 2010-01-19 15:48:12.000000000 +0100
+***************
+*** 433,439 ****
+ static long list_find_nr __ARGS((list_T *l, long idx, int *errorp));
+ static long list_idx_of_item __ARGS((list_T *l, listitem_T *item));
+ static void list_append __ARGS((list_T *l, listitem_T *item));
+- static int list_append_tv __ARGS((list_T *l, typval_T *tv));
+ static int list_append_number __ARGS((list_T *l, varnumber_T n));
+ static int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item));
+ static int list_extend __ARGS((list_T *l1, list_T *l2, listitem_T *bef));
+--- 433,438 ----
+***************
+*** 448,459 ****
+ static void set_ref_in_item __ARGS((typval_T *tv, int copyID));
+ static void dict_unref __ARGS((dict_T *d));
+ static void dict_free __ARGS((dict_T *d, int recurse));
+- static dictitem_T *dictitem_alloc __ARGS((char_u *key));
+ static dictitem_T *dictitem_copy __ARGS((dictitem_T *org));
+ static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item));
+- static void dictitem_free __ARGS((dictitem_T *item));
+ static dict_T *dict_copy __ARGS((dict_T *orig, int deep, int copyID));
+- static int dict_add __ARGS((dict_T *d, dictitem_T *item));
+ static long dict_len __ARGS((dict_T *d));
+ static dictitem_T *dict_find __ARGS((dict_T *d, char_u *key, int len));
+ static char_u *dict2string __ARGS((typval_T *tv, int copyID));
+--- 447,455 ----
+***************
+*** 628,633 ****
+--- 624,632 ----
+ static void f_mkdir __ARGS((typval_T *argvars, typval_T *rettv));
+ #endif
+ static void f_mode __ARGS((typval_T *argvars, typval_T *rettv));
++ #ifdef FEAT_MZSCHEME
++ static void f_mzeval __ARGS((typval_T *argvars, typval_T *rettv));
++ #endif
+ static void f_nextnonblank __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_nr2char __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_pathshorten __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 764,770 ****
+ static int var_check_ro __ARGS((int flags, char_u *name));
+ static int var_check_fixed __ARGS((int flags, char_u *name));
+ static int tv_check_lock __ARGS((int lock, char_u *name));
+- static void copy_tv __ARGS((typval_T *from, typval_T *to));
+ static int item_copy __ARGS((typval_T *from, typval_T *to, int deep, int copyID));
+ static char_u *find_option_end __ARGS((char_u **arg, int *opt_flags));
+ static char_u *trans_function_name __ARGS((char_u **pp, int skip, int flags, funcdict_T *fd));
+--- 763,768 ----
+***************
+*** 6155,6161 ****
+ * Append typval_T "tv" to the end of list "l".
+ * Return FAIL when out of memory.
+ */
+! static int
+ list_append_tv(l, tv)
+ list_T *l;
+ typval_T *tv;
+--- 6153,6159 ----
+ * Append typval_T "tv" to the end of list "l".
+ * Return FAIL when out of memory.
+ */
+! int
+ list_append_tv(l, tv)
+ list_T *l;
+ typval_T *tv;
+***************
+*** 6812,6818 ****
+ * Note that the value of the item "di_tv" still needs to be initialized!
+ * Returns NULL when out of memory.
+ */
+! static dictitem_T *
+ dictitem_alloc(key)
+ char_u *key;
+ {
+--- 6810,6816 ----
+ * Note that the value of the item "di_tv" still needs to be initialized!
+ * Returns NULL when out of memory.
+ */
+! dictitem_T *
+ dictitem_alloc(key)
+ char_u *key;
+ {
+***************
+*** 6868,6874 ****
+ /*
+ * Free a dict item. Also clears the value.
+ */
+! static void
+ dictitem_free(item)
+ dictitem_T *item;
+ {
+--- 6866,6872 ----
+ /*
+ * Free a dict item. Also clears the value.
+ */
+! void
+ dictitem_free(item)
+ dictitem_T *item;
+ {
+***************
+*** 6948,6954 ****
+ * Add item "item" to Dictionary "d".
+ * Returns FAIL when out of memory and when key already existed.
+ */
+! static int
+ dict_add(d, item)
+ dict_T *d;
+ dictitem_T *item;
+--- 6946,6952 ----
+ * Add item "item" to Dictionary "d".
+ * Returns FAIL when out of memory and when key already existed.
+ */
+! int
+ dict_add(d, item)
+ dict_T *d;
+ dictitem_T *item;
+***************
+*** 7699,7704 ****
+--- 7697,7705 ----
+ {"mkdir", 1, 3, f_mkdir},
+ #endif
+ {"mode", 0, 1, f_mode},
++ #ifdef FEAT_MZSCHEME
++ {"mzeval", 1, 1, f_mzeval},
++ #endif
+ {"nextnonblank", 1, 1, f_nextnonblank},
+ {"nr2char", 1, 1, f_nr2char},
+ {"pathshorten", 1, 1, f_pathshorten},
+***************
+*** 13591,13596 ****
+--- 13592,13614 ----
+ rettv->v_type = VAR_STRING;
+ }
+
++ #ifdef FEAT_MZSCHEME
++ /*
++ * "mzeval()" function
++ */
++ static void
++ f_mzeval(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ char_u *str;
++ char_u buf[NUMBUFLEN];
++
++ str = get_tv_string_buf(&argvars[0], buf);
++ do_mzeval(str, rettv);
++ }
++ #endif
++
+ /*
+ * "nextnonblank()" function
+ */
+***************
+*** 19274,19280 ****
+ * It is OK for "from" and "to" to point to the same item. This is used to
+ * make a copy later.
+ */
+! static void
+ copy_tv(from, to)
+ typval_T *from;
+ typval_T *to;
+--- 19292,19298 ----
+ * It is OK for "from" and "to" to point to the same item. This is used to
+ * make a copy later.
+ */
+! void
+ copy_tv(from, to)
+ typval_T *from;
+ typval_T *to;
+*** ../vim-7.2.335/src/if_mzsch.c 2009-12-16 19:02:05.000000000 +0100
+--- src/if_mzsch.c 2010-01-19 15:43:05.000000000 +0100
+***************
+*** 170,175 ****
+--- 170,177 ----
+ #ifdef FEAT_EVAL
+ static Scheme_Object *vim_to_mzscheme(typval_T *vim_value, int depth,
+ Scheme_Hash_Table *visited);
++ static int mzscheme_to_vim(Scheme_Object *obj, typval_T *tv, int depth,
++ Scheme_Hash_Table *visited);
+ #endif
+
+ #ifdef MZ_PRECISE_GC
+***************
+*** 2733,2738 ****
+--- 2735,2959 ----
+ MZ_GC_UNREG();
+ return result;
+ }
++
++ static int
++ mzscheme_to_vim(Scheme_Object *obj, typval_T *tv, int depth,
++ Scheme_Hash_Table *visited)
++ {
++ int status = OK;
++ typval_T *found;
++ MZ_GC_CHECK();
++ if (depth > 100) /* limit the deepest recursion level */
++ {
++ tv->v_type = VAR_NUMBER;
++ tv->vval.v_number = 0;
++ return FAIL;
++ }
++
++ found = (typval_T *)scheme_hash_get(visited, obj);
++ if (found != NULL)
++ copy_tv(found, tv);
++ else if (SCHEME_VOIDP(obj))
++ {
++ tv->v_type = VAR_NUMBER;
++ tv->vval.v_number = 0;
++ }
++ else if (SCHEME_INTP(obj))
++ {
++ tv->v_type = VAR_NUMBER;
++ tv->vval.v_number = SCHEME_INT_VAL(obj);
++ }
++ else if (SCHEME_BOOLP(obj))
++ {
++ tv->v_type = VAR_NUMBER;
++ tv->vval.v_number = SCHEME_TRUEP(obj);
++ }
++ # ifdef FEAT_FLOAT
++ else if (SCHEME_DBLP(obj))
++ {
++ tv->v_type = VAR_FLOAT;
++ tv->vval.v_float = SCHEME_DBL_VAL(obj);
++ }
++ # endif
++ else if (SCHEME_STRINGP(obj))
++ {
++ tv->v_type = VAR_STRING;
++ tv->vval.v_string = vim_strsave((char_u *)SCHEME_STR_VAL(obj));
++ }
++ else if (SCHEME_VECTORP(obj) || SCHEME_NULLP(obj)
++ || SCHEME_PAIRP(obj) || SCHEME_MUTABLE_PAIRP(obj))
++ {
++ list_T *list = list_alloc();
++ if (list == NULL)
++ status = FAIL;
++ else
++ {
++ int i;
++ Scheme_Object *curr = NULL;
++ Scheme_Object *cval = NULL;
++ /* temporary var to hold current element of vectors and pairs */
++ typval_T *v;
++
++ MZ_GC_DECL_REG(2);
++ MZ_GC_VAR_IN_REG(0, curr);
++ MZ_GC_VAR_IN_REG(1, cval);
++ MZ_GC_REG();
++
++ tv->v_type = VAR_LIST;
++ tv->vval.v_list = list;
++ ++list->lv_refcount;
++
++ v = (typval_T *)alloc(sizeof(typval_T));
++ if (v == NULL)
++ status = FAIL;
++ else
++ {
++ /* add the value in advance to allow handling of self-referencial
++ * data structures */
++ typval_T *visited_tv = (typval_T *)alloc(sizeof(typval_T));
++ copy_tv(tv, visited_tv);
++ scheme_hash_set(visited, obj, (Scheme_Object *)visited_tv);
++
++ if (SCHEME_VECTORP(obj))
++ {
++ for (i = 0; i < SCHEME_VEC_SIZE(obj); ++i)
++ {
++ cval = SCHEME_VEC_ELS(obj)[i];
++ status = mzscheme_to_vim(cval, v, depth + 1, visited);
++ if (status == FAIL)
++ break;
++ status = list_append_tv(list, v);
++ clear_tv(v);
++ if (status == FAIL)
++ break;
++ }
++ }
++ else if (SCHEME_PAIRP(obj) || SCHEME_MUTABLE_PAIRP(obj))
++ {
++ for (curr = obj;
++ SCHEME_PAIRP(curr) || SCHEME_MUTABLE_PAIRP(curr);
++ curr = SCHEME_CDR(curr))
++ {
++ cval = SCHEME_CAR(curr);
++ status = mzscheme_to_vim(cval, v, depth + 1, visited);
++ if (status == FAIL)
++ break;
++ status = list_append_tv(list, v);
++ clear_tv(v);
++ if (status == FAIL)
++ break;
++ }
++ /* impoper list not terminated with null
++ * need to handle the last element */
++ if (status == OK && !SCHEME_NULLP(curr))
++ {
++ status = mzscheme_to_vim(cval, v, depth + 1, visited);
++ if (status == OK)
++ {
++ status = list_append_tv(list, v);
++ clear_tv(v);
++ }
++ }
++ }
++ /* nothing to do for scheme_null */
++ vim_free(v);
++ }
++ MZ_GC_UNREG();
++ }
++ }
++ else if (SCHEME_HASHTP(obj))
++ {
++ int i;
++ dict_T *dict;
++ Scheme_Object *key = NULL;
++ Scheme_Object *val = NULL;
++
++ MZ_GC_DECL_REG(2);
++ MZ_GC_VAR_IN_REG(0, key);
++ MZ_GC_VAR_IN_REG(1, val);
++ MZ_GC_REG();
++
++ dict = dict_alloc();
++ if (dict == NULL)
++ status = FAIL;
++ else
++ {
++ typval_T *visited_tv = (typval_T *)alloc(sizeof(typval_T));
++
++ tv->v_type = VAR_DICT;
++ tv->vval.v_dict = dict;
++ ++dict->dv_refcount;
++
++ copy_tv(tv, visited_tv);
++ scheme_hash_set(visited, obj, (Scheme_Object *)visited_tv);
++
++ for (i = 0; i < ((Scheme_Hash_Table *)obj)->size; ++i)
++ {
++ if (((Scheme_Hash_Table *) obj)->vals[i] != NULL)
++ {
++ /* generate item for `diplay'ed Scheme key */
++ dictitem_T *item = dictitem_alloc((char_u *)string_to_line(
++ ((Scheme_Hash_Table *) obj)->keys[i]));
++ /* convert Scheme val to Vim and add it to the dict */
++ if (mzscheme_to_vim(((Scheme_Hash_Table *) obj)->vals[i],
++ &item->di_tv, depth + 1, visited) == FAIL
++ || dict_add(dict, item) == FAIL)
++ {
++ dictitem_free(item);
++ status = FAIL;
++ break;
++ }
++ }
++
++ }
++ }
++ MZ_GC_UNREG();
++ }
++ else
++ {
++ /* `display' any other value to string */
++ tv->v_type = VAR_STRING;
++ tv->vval.v_string = (char_u *)string_to_line(obj);
++ }
++ return status;
++ }
++
++ void
++ do_mzeval(char_u *str, typval_T *rettv)
++ {
++ int i;
++ Scheme_Object *ret = NULL;
++ Scheme_Hash_Table *visited = NULL;
++
++ MZ_GC_DECL_REG(2);
++ MZ_GC_VAR_IN_REG(0, ret);
++ MZ_GC_VAR_IN_REG(0, visited);
++ MZ_GC_REG();
++
++ if (mzscheme_init())
++ {
++ MZ_GC_UNREG();
++ return;
++ }
++
++ MZ_GC_CHECK();
++ visited = scheme_make_hash_table(SCHEME_hash_ptr);
++ MZ_GC_CHECK();
++
++ if (eval_with_exn_handling(str, do_eval, &ret) == OK)
++ mzscheme_to_vim(ret, rettv, 1, visited);
++
++ for (i = 0; i < visited->size; ++i)
++ {
++ /* free up remembered objects */
++ if (visited->vals[i] != NULL)
++ {
++ free_tv((typval_T *)visited->vals[i]);
++ }
++ }
++
++ MZ_GC_UNREG();
++ }
+ #endif
+
+ /*
+*** ../vim-7.2.335/src/proto/eval.pro 2009-09-30 15:15:33.000000000 +0200
+--- src/proto/eval.pro 2010-01-19 15:45:39.000000000 +0100
+***************
+*** 47,56 ****
+--- 47,60 ----
+ void list_free __ARGS((list_T *l, int recurse));
+ dictitem_T *dict_lookup __ARGS((hashitem_T *hi));
+ char_u *list_find_str __ARGS((list_T *l, long idx));
++ int list_append_tv __ARGS((list_T *l, typval_T *tv));
+ int list_append_dict __ARGS((list_T *list, dict_T *dict));
+ int list_append_string __ARGS((list_T *l, char_u *str, int len));
+ int garbage_collect __ARGS((void));
+ dict_T *dict_alloc __ARGS((void));
++ dictitem_T *dictitem_alloc __ARGS((char_u *key));
++ void dictitem_free __ARGS((dictitem_T *item));
++ int dict_add __ARGS((dict_T *d, dictitem_T *item));
+ int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str));
+ char_u *get_dict_string __ARGS((dict_T *d, char_u *key, int save));
+ long get_dict_number __ARGS((dict_T *d, char_u *key));
+***************
+*** 77,82 ****
+--- 81,87 ----
+ void new_script_vars __ARGS((scid_T id));
+ void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var));
+ void vars_clear __ARGS((hashtab_T *ht));
++ void copy_tv __ARGS((typval_T *from, typval_T *to));
+ void ex_echo __ARGS((exarg_T *eap));
+ void ex_echohl __ARGS((exarg_T *eap));
+ void ex_execute __ARGS((exarg_T *eap));
+*** ../vim-7.2.335/src/proto/if_mzsch.pro 2009-12-16 19:02:05.000000000 +0100
+--- src/proto/if_mzsch.pro 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 15,18 ****
+--- 15,19 ----
+ void *mzvim_eval_string __ARGS((char_u *str));
+ int mzthreads_allowed __ARGS((void));
+ void mzscheme_main __ARGS((void));
++ void do_mzeval __ARGS((char_u *str, typval_T *rettv));
+ /* vim: set ft=c : */
+*** ../vim-7.2.335/src/testdir/Make_dos.mak 2009-11-17 17:57:10.000000000 +0100
+--- src/testdir/Make_dos.mak 2010-01-19 15:43:48.000000000 +0100
+***************
+*** 29,35 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out
+
+! SCRIPTS32 = test50.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 29,35 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out
+
+! SCRIPTS32 = test50.out test70.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.2.335/src/testdir/Make_ming.mak 2009-11-17 17:57:10.000000000 +0100
+--- src/testdir/Make_ming.mak 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 48,54 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out
+
+! SCRIPTS32 = test50.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 48,54 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out
+
+! SCRIPTS32 = test50.out test70.out
+
+ SCRIPTS_GUI = test16.out
+
+***************
+*** 78,83 ****
+--- 78,84 ----
+ -$(DEL) small.vim
+ -$(DEL) tiny.vim
+ -$(DEL) mbyte.vim
++ -$(DEL) mzscheme.vim
+ -$(DEL) X*
+ -$(DEL) viminfo
+
+*** ../vim-7.2.335/src/testdir/Makefile 2009-11-17 17:40:34.000000000 +0100
+--- src/testdir/Makefile 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 23,29 ****
+ test54.out test55.out test56.out test57.out test58.out \
+ test59.out test60.out test61.out test62.out test63.out \
+ test64.out test65.out test66.out test67.out test68.out \
+! test69.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 23,29 ----
+ test54.out test55.out test56.out test57.out test58.out \
+ test59.out test60.out test61.out test62.out test63.out \
+ test64.out test65.out test66.out test67.out test68.out \
+! test69.out test70.out
+
+ SCRIPTS_GUI = test16.out
+
+***************
+*** 44,53 ****
+ $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
+
+ clean:
+! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim test.ok X* valgrind.pid* viminfo
+
+ test1.out: test1.in
+! -rm -f $*.failed tiny.vim small.vim mbyte.vim test.ok X* viminfo
+ $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in
+ @/bin/sh -c "if diff test.out $*.ok; \
+ then mv -f test.out $*.out; \
+--- 44,53 ----
+ $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
+
+ clean:
+! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* valgrind.pid* viminfo
+
+ test1.out: test1.in
+! -rm -f $*.failed tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* viminfo
+ $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in
+ @/bin/sh -c "if diff test.out $*.ok; \
+ then mv -f test.out $*.out; \
+*** ../vim-7.2.335/src/testdir/main.aap 2004-06-13 21:05:31.000000000 +0200
+--- src/testdir/main.aap 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 32,42 ****
+ $Scripts $ScriptsGUI: $VimProg
+
+ clean:
+! :del {r}{force} *.out test.log tiny.vim small.vim mbyte.vim test.ok X*
+
+ # test1 is special, it checks for features
+ test1.out: test1.in
+! :del {force} test1.failed tiny.vim small.vim mbyte.vim
+ :sys {i} $VimProg -u unix.vim -U NONE --noplugin -s dotest.in test1.in
+ @if os.system("diff test.out test1.ok") != 0:
+ :error test1 FAILED - Something basic is wrong
+--- 32,42 ----
+ $Scripts $ScriptsGUI: $VimProg
+
+ clean:
+! :del {r}{force} *.out test.log tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X*
+
+ # test1 is special, it checks for features
+ test1.out: test1.in
+! :del {force} test1.failed tiny.vim small.vim mbyte.vim mzscheme.vim
+ :sys {i} $VimProg -u unix.vim -U NONE --noplugin -s dotest.in test1.in
+ @if os.system("diff test.out test1.ok") != 0:
+ :error test1 FAILED - Something basic is wrong
+*** ../vim-7.2.335/src/testdir/test1.in 2004-06-13 20:19:23.000000000 +0200
+--- src/testdir/test1.in 2010-01-19 15:38:44.000000000 +0100
+***************
+*** 13,18 ****
+--- 13,19 ----
+
+ If Vim was not compiled with the +multi_byte feature, the mbyte.vim script will be set like small.vim above. mbyte.vim is sourced by tests that require the
+ +multi_byte feature.
++ Similar logic is applied to the +mzscheme feature, using mzscheme.vim.
+
+ STARTTEST
+ :" Write a single line to test.out to check if testing works at all.
+***************
+*** 25,32 ****
+--- 26,36 ----
+ w! test.out
+ qa!
+ :w! mbyte.vim
++ :w! mzscheme.vim
+ :" If +multi_byte feature supported, make mbyte.vim empty.
+ :if has("multi_byte") | sp another | w! mbyte.vim | q | endif
++ :" If +mzscheme feature supported, make mzscheme.vim empty.
++ :if has("mzscheme") | sp another | w! mzscheme.vim | q | endif
+ :" If +eval feature supported quit here, leaving tiny.vim and small.vim empty.
+ :" Otherwise write small.vim to skip the test.
+ :if 1 | q! | endif
+*** ../vim-7.2.335/src/testdir/test70.in 2010-01-19 15:47:24.000000000 +0100
+--- src/testdir/test70.in 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 0 ****
+--- 1,53 ----
++ Smoke test for MzScheme interface and mzeval() function
++
++ STARTTEST
++ :so mzscheme.vim
++ :set nocompatible viminfo+=nviminfo
++ :function! MzRequire()
++ :redir => l:mzversion
++ :mz (version)
++ :redir END
++ :if strpart(l:mzversion, 1, 1) < "4"
++ :" MzScheme versions < 4.x:
++ :mz (require (prefix vim- vimext))
++ :else
++ :" newer versions:
++ :mz (require (prefix-in vim- 'vimext))
++ :mz (require r5rs)
++ :endif
++ :endfunction
++ :silent call MzRequire()
++ :mz (define l '("item0" "dictionary with list OK" "item2"))
++ :mz (define h (make-hash))
++ :mz (hash-set! h "list" l)
++ /^1
++ :" change buffer contents
++ :mz (vim-set-buff-line (vim-eval "line('.')") "1 changed line 1")
++ :" scalar test
++ :let tmp_string = mzeval('"string"')
++ :let tmp_1000 = mzeval('1000')
++ :if tmp_string . tmp_1000 == "string1000"
++ :let scalar_res = "OK"
++ :else
++ :let scalar_res = "FAILED"
++ :endif
++ :call append(search("^1"), "scalar test " . scalar_res)
++ :" dictionary containing a list
++ :let tmp = mzeval("h")["list"][1]
++ :/^2/put =tmp
++ :" circular list (at the same time test lists containing lists)
++ :mz (set-car! (cddr l) l)
++ :let l2 = mzeval("h")["list"]
++ :if l2[2] == l2
++ :let res = "OK"
++ :else
++ :let res = "FAILED"
++ :endif
++ :call setline(search("^3"), "circular test " . res)
++ :?^1?,$w! test.out
++ :qa!
++ ENDTEST
++
++ 1 line 1
++ 2 line 2
++ 3 line 3
+*** ../vim-7.2.335/src/testdir/test70.ok 2010-01-19 15:47:24.000000000 +0100
+--- src/testdir/test70.ok 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 0 ****
+--- 1,5 ----
++ 1 changed line 1
++ scalar test OK
++ 2 line 2
++ dictionary with list OK
++ circular test OK
+*** ../vim-7.2.335/src/version.c 2010-01-19 15:23:38.000000000 +0100
+--- src/version.c 2010-01-19 15:46:44.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 336,
+ /**/
+
+--
+"Computers in the future may weigh no more than 1.5 tons."
+ Popular Mechanics, 1949
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.337 b/source/ap/vim/patches/7.2.337
new file mode 100644
index 000000000..e74528545
--- /dev/null
+++ b/source/ap/vim/patches/7.2.337
@@ -0,0 +1,112 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.337
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.337
+Problem: The :compiler command doesn't function properly when invoked in a
+ function.
+Solution: Add "g:" before "current_compiler". (Yukihiro Nakadaira)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.336/src/ex_cmds2.c 2009-05-16 21:16:12.000000000 +0200
+--- src/ex_cmds2.c 2010-01-19 16:02:53.000000000 +0100
+***************
+*** 2496,2509 ****
+ * To remain backwards compatible "current_compiler" is always
+ * used. A user's compiler plugin may set it, the distributed
+ * plugin will then skip the settings. Afterwards set
+! * "b:current_compiler" and restore "current_compiler". */
+! old_cur_comp = get_var_value((char_u *)"current_compiler");
+ if (old_cur_comp != NULL)
+ old_cur_comp = vim_strsave(old_cur_comp);
+ do_cmdline_cmd((char_u *)
+ "command -nargs=* CompilerSet setlocal <args>");
+ }
+! do_unlet((char_u *)"current_compiler", TRUE);
+ do_unlet((char_u *)"b:current_compiler", TRUE);
+
+ sprintf((char *)buf, "compiler/%s.vim", eap->arg);
+--- 2496,2510 ----
+ * To remain backwards compatible "current_compiler" is always
+ * used. A user's compiler plugin may set it, the distributed
+ * plugin will then skip the settings. Afterwards set
+! * "b:current_compiler" and restore "current_compiler".
+! * Explicitly prepend "g:" to make it work in a function. */
+! old_cur_comp = get_var_value((char_u *)"g:current_compiler");
+ if (old_cur_comp != NULL)
+ old_cur_comp = vim_strsave(old_cur_comp);
+ do_cmdline_cmd((char_u *)
+ "command -nargs=* CompilerSet setlocal <args>");
+ }
+! do_unlet((char_u *)"g:current_compiler", TRUE);
+ do_unlet((char_u *)"b:current_compiler", TRUE);
+
+ sprintf((char *)buf, "compiler/%s.vim", eap->arg);
+***************
+*** 2514,2520 ****
+ do_cmdline_cmd((char_u *)":delcommand CompilerSet");
+
+ /* Set "b:current_compiler" from "current_compiler". */
+! p = get_var_value((char_u *)"current_compiler");
+ if (p != NULL)
+ set_internal_string_var((char_u *)"b:current_compiler", p);
+
+--- 2515,2521 ----
+ do_cmdline_cmd((char_u *)":delcommand CompilerSet");
+
+ /* Set "b:current_compiler" from "current_compiler". */
+! p = get_var_value((char_u *)"g:current_compiler");
+ if (p != NULL)
+ set_internal_string_var((char_u *)"b:current_compiler", p);
+
+***************
+*** 2523,2534 ****
+ {
+ if (old_cur_comp != NULL)
+ {
+! set_internal_string_var((char_u *)"current_compiler",
+ old_cur_comp);
+ vim_free(old_cur_comp);
+ }
+ else
+! do_unlet((char_u *)"current_compiler", TRUE);
+ }
+ }
+ }
+--- 2524,2535 ----
+ {
+ if (old_cur_comp != NULL)
+ {
+! set_internal_string_var((char_u *)"g:current_compiler",
+ old_cur_comp);
+ vim_free(old_cur_comp);
+ }
+ else
+! do_unlet((char_u *)"g:current_compiler", TRUE);
+ }
+ }
+ }
+*** ../vim-7.2.336/src/version.c 2010-01-19 15:51:29.000000000 +0100
+--- src/version.c 2010-01-19 16:11:20.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 337,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+121. You ask for e-mail adresses instead of telephone numbers.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.338 b/source/ap/vim/patches/7.2.338
new file mode 100644
index 000000000..ac0223f2b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.338
@@ -0,0 +1,129 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.338
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.338 (after 7.2.300)
+Problem: Part of FD_CLOEXEC change is missing.
+Solution: Include source file skipped because of typo.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.337/src/ex_cmds2.c 2010-01-19 16:12:53.000000000 +0100
+--- src/ex_cmds2.c 2010-01-19 16:02:53.000000000 +0100
+***************
+*** 2802,2821 ****
+
+ static char_u *get_one_sourceline __ARGS((struct source_cookie *sp));
+
+! #if defined(WIN32) && defined(FEAT_CSCOPE)
+ static FILE *fopen_noinh_readbin __ARGS((char *filename));
+
+ /*
+ * Special function to open a file without handle inheritance.
+ */
+ static FILE *
+ fopen_noinh_readbin(filename)
+ char *filename;
+ {
+! int fd_tmp = mch_open(filename, O_RDONLY | O_BINARY | O_NOINHERIT, 0);
+
+ if (fd_tmp == -1)
+ return NULL;
+ return fdopen(fd_tmp, READBIN);
+ }
+ #endif
+--- 2802,2836 ----
+
+ static char_u *get_one_sourceline __ARGS((struct source_cookie *sp));
+
+! #if (defined(WIN32) && defined(FEAT_CSCOPE)) || defined(HAVE_FD_CLOEXEC)
+! # define USE_FOPEN_NOINH
+ static FILE *fopen_noinh_readbin __ARGS((char *filename));
+
+ /*
+ * Special function to open a file without handle inheritance.
++ * When possible the handle is closed on exec().
+ */
+ static FILE *
+ fopen_noinh_readbin(filename)
+ char *filename;
+ {
+! int fd_tmp = mch_open(filename, O_RDONLY
+! # ifdef WIN32
+! O_BINARY | O_NOINHERIT
+! # endif
+! , 0);
+
+ if (fd_tmp == -1)
+ return NULL;
++
++ # ifdef HAVE_FD_CLOEXEC
++ {
++ int fdflags = fcntl(fd_tmp, F_GETFD);
++ if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
++ fcntl(fd_tmp, F_SETFD, fdflags | FD_CLOEXEC);
++ }
++ # endif
++
+ return fdopen(fd_tmp, READBIN);
+ }
+ #endif
+***************
+*** 2895,2901 ****
+ apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf);
+ #endif
+
+! #if defined(WIN32) && defined(FEAT_CSCOPE)
+ cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+ #else
+ cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+--- 2910,2916 ----
+ apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf);
+ #endif
+
+! #ifdef USE_FOPEN_NOINH
+ cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+ #else
+ cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+***************
+*** 2916,2922 ****
+ *p = '.';
+ else
+ *p = '_';
+! #if defined(WIN32) && defined(FEAT_CSCOPE)
+ cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+ #else
+ cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+--- 2931,2937 ----
+ *p = '.';
+ else
+ *p = '_';
+! #ifdef USE_FOPEN_NOINH
+ cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+ #else
+ cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+*** ../vim-7.2.337/src/version.c 2010-01-19 16:12:53.000000000 +0100
+--- src/version.c 2010-01-19 16:20:08.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 338,
+ /**/
+
+--
+~
+~
+~
+".signature" 4 lines, 50 characters written
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.339 b/source/ap/vim/patches/7.2.339
new file mode 100644
index 000000000..77aa94db9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.339
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.339
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.339 (after 7.2.269)
+Problem: Part of --startuptime patch is missing.
+Solution: Add check for time_fd.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.338/src/ex_cmds2.c 2010-01-19 16:21:55.000000000 +0100
+--- src/ex_cmds2.c 2010-01-19 16:02:53.000000000 +0100
+***************
+*** 3036,3042 ****
+ #endif
+
+ #ifdef STARTUPTIME
+! time_push(&tv_rel, &tv_start);
+ #endif
+
+ #ifdef FEAT_EVAL
+--- 3036,3043 ----
+ #endif
+
+ #ifdef STARTUPTIME
+! if (time_fd != NULL)
+! time_push(&tv_rel, &tv_start);
+ #endif
+
+ #ifdef FEAT_EVAL
+***************
+*** 3162,3170 ****
+ verbose_leave();
+ }
+ #ifdef STARTUPTIME
+! vim_snprintf((char *)IObuff, IOSIZE, "sourcing %s", fname);
+! time_msg((char *)IObuff, &tv_start);
+! time_pop(&tv_rel);
+ #endif
+
+ #ifdef FEAT_EVAL
+--- 3163,3174 ----
+ verbose_leave();
+ }
+ #ifdef STARTUPTIME
+! if (time_fd != NULL)
+! {
+! vim_snprintf((char *)IObuff, IOSIZE, "sourcing %s", fname);
+! time_msg((char *)IObuff, &tv_start);
+! time_pop(&tv_rel);
+! }
+ #endif
+
+ #ifdef FEAT_EVAL
+*** ../vim-7.2.338/src/version.c 2010-01-19 16:21:55.000000000 +0100
+--- src/version.c 2010-01-19 16:25:39.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 339,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+122. You ask if the Netaholics Anonymous t-shirt you ordered can be
+ sent to you via e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.340 b/source/ap/vim/patches/7.2.340
new file mode 100644
index 000000000..b0f4babb6
--- /dev/null
+++ b/source/ap/vim/patches/7.2.340
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.340
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.340
+Problem: Gcc warning for condition that can never be true. (James Vega)
+Solution: Use start_lvl instead flp->lvl.
+Files: src/fold.c
+
+
+*** ../vim-7.2.339/src/fold.c 2009-11-03 18:04:26.000000000 +0100
+--- src/fold.c 2010-01-19 16:45:13.000000000 +0100
+***************
+*** 3239,3246 ****
+ flp->lvl = n;
+ flp->lvl_next = n - 1;
+ /* never start a fold with an end marker */
+! if (flp->lvl_next > flp->lvl)
+! flp->lvl_next = flp->lvl;
+ }
+ }
+ else
+--- 3239,3246 ----
+ flp->lvl = n;
+ flp->lvl_next = n - 1;
+ /* never start a fold with an end marker */
+! if (flp->lvl_next > start_lvl)
+! flp->lvl_next = start_lvl;
+ }
+ }
+ else
+*** ../vim-7.2.339/src/version.c 2010-01-19 16:31:10.000000000 +0100
+--- src/version.c 2010-01-19 17:23:40.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 340,
+ /**/
+
+--
+Would you care for a drink? I mean, if it were, like,
+disabled and you had to look after it?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.341 b/source/ap/vim/patches/7.2.341
new file mode 100644
index 000000000..67d5e81df
--- /dev/null
+++ b/source/ap/vim/patches/7.2.341
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.341
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.341
+Problem: Popup menu wraps to next line when double-wide character doesn't
+ fit. (Jiang Ma)
+Solution: Display a ">" instead. (Dominique Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.340/src/screen.c 2009-11-25 13:03:29.000000000 +0100
+--- src/screen.c 2010-01-19 17:34:21.000000000 +0100
+***************
+*** 6434,6439 ****
+--- 6434,6446 ----
+ else
+ prev_c = u8c;
+ # endif
++ if (col + mbyte_cells > screen_Columns)
++ {
++ /* Only 1 cell left, but character requires 2 cells:
++ * display a '>' in the last column to avoid wrapping. */
++ c = '>';
++ mbyte_cells = 1;
++ }
+ }
+ }
+ #endif
+***************
+*** 9210,9216 ****
+ int force;
+ {
+ /*
+! * Don't delete it right now, when not redrawing or insided a mapping.
+ */
+ if (!redrawing() || (!force && char_avail() && !KeyTyped))
+ redraw_cmdline = TRUE; /* delete mode later */
+--- 9217,9223 ----
+ int force;
+ {
+ /*
+! * Don't delete it right now, when not redrawing or inside a mapping.
+ */
+ if (!redrawing() || (!force && char_avail() && !KeyTyped))
+ redraw_cmdline = TRUE; /* delete mode later */
+*** ../vim-7.2.340/src/version.c 2010-01-19 17:24:20.000000000 +0100
+--- src/version.c 2010-01-19 17:39:56.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 341,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+124. You begin conversations with, "Who is your internet service provider?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.342 b/source/ap/vim/patches/7.2.342
new file mode 100644
index 000000000..72bf253e8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.342
@@ -0,0 +1,95 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.342
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.342
+Problem: Popup menu displayed wrong in 'rightleft' mode when there are
+ multi-byte characters.
+Solution: Adjust the column computations. (Dominique Pelle)
+Files: src/popupmnu.c
+
+
+*** ../vim-7.2.341/src/popupmnu.c 2008-11-15 14:10:23.000000000 +0100
+--- src/popupmnu.c 2010-01-19 17:57:05.000000000 +0100
+***************
+*** 345,365 ****
+ if (st != NULL)
+ {
+ char_u *rt = reverse_text(st);
+- char_u *rt_saved = rt;
+- int len, j;
+
+ if (rt != NULL)
+ {
+! len = (int)STRLEN(rt);
+! if (len > pum_width)
+ {
+! for (j = pum_width; j < len; ++j)
+ mb_ptr_adv(rt);
+! len = pum_width;
+ }
+! screen_puts_len(rt, len, row,
+! col - len + 1, attr);
+! vim_free(rt_saved);
+ }
+ vim_free(st);
+ }
+--- 345,380 ----
+ if (st != NULL)
+ {
+ char_u *rt = reverse_text(st);
+
+ if (rt != NULL)
+ {
+! char_u *rt_start = rt;
+! int size;
+!
+! size = vim_strsize(rt);
+! if (size > pum_width)
+ {
+! do
+! {
+! size -= has_mbyte
+! ? (*mb_ptr2cells)(rt) : 1;
+ mb_ptr_adv(rt);
+! } while (size > pum_width);
+!
+! if (size < pum_width)
+! {
+! /* Most left character requires
+! * 2-cells but only 1 cell is
+! * available on screen. Put a
+! * '<' on the left of the pum
+! * item */
+! *(--rt) = '<';
+! size++;
+! }
+ }
+! screen_puts_len(rt, (int)STRLEN(rt),
+! row, col - size + 1, attr);
+! vim_free(rt_start);
+ }
+ vim_free(st);
+ }
+*** ../vim-7.2.341/src/version.c 2010-01-19 17:40:39.000000000 +0100
+--- src/version.c 2010-01-19 18:03:22.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 342,
+ /**/
+
+--
+I have a watch cat! Just break in and she'll watch.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.343 b/source/ap/vim/patches/7.2.343
new file mode 100644
index 000000000..22031519d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.343
@@ -0,0 +1,51 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.343
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.343 (after 7.2.338)
+Problem: Can't compile on Win32.
+Solution: Insert the missing '|'.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.342/src/ex_cmds2.c 2010-01-19 16:31:10.000000000 +0100
+--- src/ex_cmds2.c 2010-01-19 23:22:40.000000000 +0100
+***************
+*** 2816,2822 ****
+ {
+ int fd_tmp = mch_open(filename, O_RDONLY
+ # ifdef WIN32
+! O_BINARY | O_NOINHERIT
+ # endif
+ , 0);
+
+--- 2816,2822 ----
+ {
+ int fd_tmp = mch_open(filename, O_RDONLY
+ # ifdef WIN32
+! | O_BINARY | O_NOINHERIT
+ # endif
+ , 0);
+
+*** ../vim-7.2.342/src/version.c 2010-01-19 18:05:05.000000000 +0100
+--- src/version.c 2010-01-19 23:24:05.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 343,
+ /**/
+
+--
+I'm writing a book. I've got the page numbers done.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.344 b/source/ap/vim/patches/7.2.344
new file mode 100644
index 000000000..788bbc41c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.344
@@ -0,0 +1,60 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.344
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.344 (after 7.2.343)
+Problem: Can't compile on some systems
+Solution: Move the #ifdef outside of the mch_open macro. (Patrick Texier)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.343/src/ex_cmds2.c 2010-01-19 23:25:18.000000000 +0100
+--- src/ex_cmds2.c 2010-01-20 21:38:19.000000000 +0100
+***************
+*** 2814,2824 ****
+ fopen_noinh_readbin(filename)
+ char *filename;
+ {
+- int fd_tmp = mch_open(filename, O_RDONLY
+ # ifdef WIN32
+! | O_BINARY | O_NOINHERIT
+ # endif
+- , 0);
+
+ if (fd_tmp == -1)
+ return NULL;
+--- 2814,2824 ----
+ fopen_noinh_readbin(filename)
+ char *filename;
+ {
+ # ifdef WIN32
+! int fd_tmp = mch_open(filename, O_RDONLY | O_BINARY | O_NOINHERIT, 0);
+! # else
+! int fd_tmp = mch_open(filename, O_RDONLY, 0);
+ # endif
+
+ if (fd_tmp == -1)
+ return NULL;
+*** ../vim-7.2.343/src/version.c 2010-01-19 23:25:18.000000000 +0100
+--- src/version.c 2010-01-20 21:38:23.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 344,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+128. You can access the Net -- via your portable and cellular phone.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.345 b/source/ap/vim/patches/7.2.345
new file mode 100644
index 000000000..a3b7acf7e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.345
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.345
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.345
+Problem: Tab line is not updated when the value of 'bt' is changed.
+Solution: Call redraw_titles(). (Lech Lorens)
+Files: src/option.c
+
+
+*** ../vim-7.2.344/src/option.c 2009-09-11 15:20:22.000000000 +0200
+--- src/option.c 2010-01-27 15:52:45.000000000 +0100
+***************
+*** 6410,6415 ****
+--- 6410,6418 ----
+ }
+ # endif
+ curbuf->b_help = (curbuf->b_p_bt[0] == 'h');
++ # ifdef FEAT_TITLE
++ redraw_titles();
++ # endif
+ }
+ }
+ #endif
+*** ../vim-7.2.344/src/version.c 2010-01-20 21:41:40.000000000 +0100
+--- src/version.c 2010-01-27 15:57:06.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 345,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+154. You fondle your mouse.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.346 b/source/ap/vim/patches/7.2.346
new file mode 100644
index 000000000..479aac636
--- /dev/null
+++ b/source/ap/vim/patches/7.2.346
@@ -0,0 +1,110 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.346
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.346
+Problem: Repeating a command with @: causes a mapping to be applied twice.
+Solution: Do not remap characters inserted in the typeahead buffer. (Kana
+ Natsuno)
+Files: src/ops.c
+
+
+*** ../vim-7.2.345/src/ops.c 2010-01-19 14:59:14.000000000 +0100
+--- src/ops.c 2010-01-19 13:04:46.000000000 +0100
+***************
+*** 1301,1310 ****
+ }
+ }
+
+ static int
+ put_in_typebuf(s, esc, colon, silent)
+ char_u *s;
+! int esc; /* Escape CSI characters */
+ int colon; /* add ':' before the line */
+ int silent;
+ {
+--- 1301,1316 ----
+ }
+ }
+
++ /*
++ * Insert register contents "s" into the typeahead buffer, so that it will be
++ * executed again.
++ * When "esc" is TRUE it is to be taken literally: Escape CSI characters and
++ * no remapping.
++ */
+ static int
+ put_in_typebuf(s, esc, colon, silent)
+ char_u *s;
+! int esc;
+ int colon; /* add ':' before the line */
+ int silent;
+ {
+***************
+*** 1312,1318 ****
+
+ put_reedit_in_typebuf(silent);
+ if (colon)
+! retval = ins_typebuf((char_u *)"\n", REMAP_YES, 0, TRUE, silent);
+ if (retval == OK)
+ {
+ char_u *p;
+--- 1318,1324 ----
+
+ put_reedit_in_typebuf(silent);
+ if (colon)
+! retval = ins_typebuf((char_u *)"\n", REMAP_NONE, 0, TRUE, silent);
+ if (retval == OK)
+ {
+ char_u *p;
+***************
+*** 1324,1335 ****
+ if (p == NULL)
+ retval = FAIL;
+ else
+! retval = ins_typebuf(p, REMAP_YES, 0, TRUE, silent);
+ if (esc)
+ vim_free(p);
+ }
+ if (colon && retval == OK)
+! retval = ins_typebuf((char_u *)":", REMAP_YES, 0, TRUE, silent);
+ return retval;
+ }
+
+--- 1330,1342 ----
+ if (p == NULL)
+ retval = FAIL;
+ else
+! retval = ins_typebuf(p, esc ? REMAP_NONE : REMAP_YES,
+! 0, TRUE, silent);
+ if (esc)
+ vim_free(p);
+ }
+ if (colon && retval == OK)
+! retval = ins_typebuf((char_u *)":", REMAP_NONE, 0, TRUE, silent);
+ return retval;
+ }
+
+*** ../vim-7.2.345/src/version.c 2010-01-27 15:57:17.000000000 +0100
+--- src/version.c 2010-01-27 16:25:55.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 346,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+155. You forget to eat because you're too busy surfing the net.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.347 b/source/ap/vim/patches/7.2.347
new file mode 100644
index 000000000..e5fa17d48
--- /dev/null
+++ b/source/ap/vim/patches/7.2.347
@@ -0,0 +1,138 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.347
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.347
+Problem: Crash when executing <expr> mapping redefines that same mapping.
+Solution: Save the values used before evaluating the expression.
+Files: src/getchar.c
+
+
+*** ../vim-7.2.346/src/getchar.c 2009-11-11 16:23:37.000000000 +0100
+--- src/getchar.c 2010-01-27 17:30:42.000000000 +0100
+***************
+*** 2389,2394 ****
+--- 2389,2405 ----
+ /* complete match */
+ if (keylen >= 0 && keylen <= typebuf.tb_len)
+ {
++ #ifdef FEAT_EVAL
++ int save_m_expr;
++ int save_m_noremap;
++ int save_m_silent;
++ char_u *save_m_keys;
++ char_u *save_m_str;
++ #else
++ # define save_m_noremap mp->m_noremap
++ # define save_m_silent mp->m_silent
++ #endif
++
+ /* write chars to script file(s) */
+ if (keylen > typebuf.tb_maplen)
+ gotchars(typebuf.tb_buf + typebuf.tb_off
+***************
+*** 2431,2436 ****
+--- 2442,2457 ----
+ #endif
+
+ #ifdef FEAT_EVAL
++ /* Copy the values from *mp that are used, because
++ * evaluating the expression may invoke a function
++ * that redefines the mapping, thereby making *mp
++ * invalid. */
++ save_m_expr = mp->m_expr;
++ save_m_noremap = mp->m_noremap;
++ save_m_silent = mp->m_silent;
++ save_m_keys = NULL; /* only saved when needed */
++ save_m_str = NULL; /* only saved when needed */
++
+ /*
+ * Handle ":map <expr>": evaluate the {rhs} as an
+ * expression. Save and restore the typeahead so that
+***************
+*** 2446,2452 ****
+ if (tabuf.typebuf_valid)
+ {
+ vgetc_busy = 0;
+! s = eval_map_expr(mp->m_str, NUL);
+ vgetc_busy = save_vgetc_busy;
+ }
+ else
+--- 2467,2475 ----
+ if (tabuf.typebuf_valid)
+ {
+ vgetc_busy = 0;
+! save_m_keys = vim_strsave(mp->m_keys);
+! save_m_str = vim_strsave(mp->m_str);
+! s = eval_map_expr(save_m_str, NUL);
+ vgetc_busy = save_vgetc_busy;
+ }
+ else
+***************
+*** 2470,2486 ****
+ else
+ {
+ i = ins_typebuf(s,
+! mp->m_noremap != REMAP_YES
+! ? mp->m_noremap
+! : STRNCMP(s, mp->m_keys,
+ (size_t)keylen) != 0
+ ? REMAP_YES : REMAP_SKIP,
+! 0, TRUE, cmd_silent || mp->m_silent);
+ #ifdef FEAT_EVAL
+! if (mp->m_expr)
+ vim_free(s);
+ #endif
+ }
+ if (i == FAIL)
+ {
+ c = -1;
+--- 2493,2517 ----
+ else
+ {
+ i = ins_typebuf(s,
+! save_m_noremap != REMAP_YES
+! ? save_m_noremap
+! : STRNCMP(s,
+! #ifdef FEAT_EVAL
+! save_m_keys != NULL ? save_m_keys :
+! #endif
+! mp->m_keys,
+ (size_t)keylen) != 0
+ ? REMAP_YES : REMAP_SKIP,
+! 0, TRUE, cmd_silent || save_m_silent);
+ #ifdef FEAT_EVAL
+! if (save_m_expr)
+ vim_free(s);
+ #endif
+ }
++ #ifdef FEAT_EVAL
++ vim_free(save_m_keys);
++ vim_free(save_m_str);
++ #endif
+ if (i == FAIL)
+ {
+ c = -1;
+*** ../vim-7.2.346/src/version.c 2010-01-27 16:31:00.000000000 +0100
+--- src/version.c 2010-01-27 17:27:32.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 347,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+156. You forget your friend's name but not her e-mail address.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.348 b/source/ap/vim/patches/7.2.348
new file mode 100644
index 000000000..5f4ffbd03
--- /dev/null
+++ b/source/ap/vim/patches/7.2.348
@@ -0,0 +1,254 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.348 (after 7.2.330)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.348 (after 7.2.330)
+Problem: Unicode double-width characters are not up-to date.
+Solution: Produce the double-width table like the others.
+Files: runtime/tools/unicode.vim, src/mbyte.c
+
+
+*** ../vim-7.2.347/runtime/tools/unicode.vim 2010-01-12 19:48:57.000000000 +0100
+--- runtime/tools/unicode.vim 2010-01-27 17:57:17.000000000 +0100
+***************
+*** 187,202 ****
+ wincmd p
+ endfunc
+
+! " Build the ambiguous table in a new buffer.
+ " Uses s:widthprops and s:dataprops.
+! func! BuildAmbiguousTable()
+ let start = -1
+ let end = -1
+ let ranges = []
+ let dataidx = 0
+ for p in s:widthprops
+! if p[1][0] == 'A'
+! let n = ('0x' . p[0]) + 0
+ " Find this char in the data table.
+ while 1
+ let dn = ('0x' . s:dataprops[dataidx][0]) + 0
+--- 187,213 ----
+ wincmd p
+ endfunc
+
+! " Build the double width or ambiguous width table in a new buffer.
+ " Uses s:widthprops and s:dataprops.
+! func! BuildWidthTable(pattern, tableName)
+ let start = -1
+ let end = -1
+ let ranges = []
+ let dataidx = 0
+ for p in s:widthprops
+! if p[1][0] =~ a:pattern
+! if p[0] =~ '\.\.'
+! " It is a range. we don't check for composing char then.
+! let rng = split(p[0], '\.\.')
+! if len(rng) != 2
+! echoerr "Cannot parse range: '" . p[0] . "' in width table"
+! endif
+! let n = ('0x' . rng[0]) + 0
+! let n_last = ('0x' . rng[1]) + 0
+! else
+! let n = ('0x' . p[0]) + 0
+! let n_last = n
+! endif
+ " Find this char in the data table.
+ while 1
+ let dn = ('0x' . s:dataprops[dataidx][0]) + 0
+***************
+*** 205,231 ****
+ endif
+ let dataidx += 1
+ endwhile
+! if dn != n
+ echoerr "Cannot find character " . n . " in data table"
+ endif
+ " Only use the char when it's not a composing char.
+ let dp = s:dataprops[dataidx]
+! if dp[2] != 'Mn' && dp[2] != 'Mc' && dp[2] != 'Me'
+ if start >= 0 && end + 1 == n
+ " continue with same range.
+- let end = n
+ else
+ if start >= 0
+ " produce previous range
+ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
+ endif
+ let start = n
+- if p[0] =~ '\.\.'
+- let end = ('0x' . substitute(p[0], '.*\.\.', '', '')) + 0
+- else
+- let end = n
+- endif
+ endif
+ endif
+ endif
+ endfor
+--- 216,238 ----
+ endif
+ let dataidx += 1
+ endwhile
+! if dn != n && n_last == n
+ echoerr "Cannot find character " . n . " in data table"
+ endif
+ " Only use the char when it's not a composing char.
++ " But use all chars from a range.
+ let dp = s:dataprops[dataidx]
+! if n_last > n || (dp[2] != 'Mn' && dp[2] != 'Mc' && dp[2] != 'Me')
+ if start >= 0 && end + 1 == n
+ " continue with same range.
+ else
+ if start >= 0
+ " produce previous range
+ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
+ endif
+ let start = n
+ endif
++ let end = n_last
+ endif
+ endif
+ endfor
+***************
+*** 235,242 ****
+
+ " New buffer to put the result in.
+ new
+! file ambiguous
+! call setline(1, " static struct interval ambiguous[] =")
+ call setline(2, " {")
+ call append('$', ranges)
+ call setline('$', getline('$')[:-2]) " remove last comma
+--- 242,249 ----
+
+ " New buffer to put the result in.
+ new
+! exe "file " . a:tableName
+! call setline(1, " static struct interval " . a:tableName . "[] =")
+ call setline(2, " {")
+ call append('$', ranges)
+ call setline('$', getline('$')[:-2]) " remove last comma
+***************
+*** 276,280 ****
+ " Parse each line, create a list of lists.
+ call ParseWidthProps()
+
+! " Build the ambiguous table.
+! call BuildAmbiguousTable()
+--- 283,290 ----
+ " Parse each line, create a list of lists.
+ call ParseWidthProps()
+
+! " Build the double width table.
+! call BuildWidthTable('[WF]', 'doublewidth')
+!
+! " Build the ambiguous width table.
+! call BuildWidthTable('A', 'ambiguous')
+*** ../vim-7.2.347/src/mbyte.c 2010-01-12 19:48:57.000000000 +0100
+--- src/mbyte.c 2010-01-27 18:06:35.000000000 +0100
+***************
+*** 1200,1205 ****
+--- 1200,1248 ----
+ utf_char2cells(c)
+ int c;
+ {
++ /* Sorted list of non-overlapping intervals of East Asian double width
++ * characters, generated with ../runtime/tools/unicode.vim. */
++ static struct interval doublewidth[] =
++ {
++ {0x1100, 0x115f},
++ {0x11a3, 0x11a7},
++ {0x11fa, 0x11ff},
++ {0x2329, 0x232a},
++ {0x2e80, 0x2e99},
++ {0x2e9b, 0x2ef3},
++ {0x2f00, 0x2fd5},
++ {0x2ff0, 0x2ffb},
++ {0x3000, 0x3029},
++ {0x3030, 0x303e},
++ {0x3041, 0x3096},
++ {0x309b, 0x30ff},
++ {0x3105, 0x312d},
++ {0x3131, 0x318e},
++ {0x3190, 0x31b7},
++ {0x31c0, 0x31e3},
++ {0x31f0, 0x321e},
++ {0x3220, 0x3247},
++ {0x3250, 0x32fe},
++ {0x3300, 0x4dbf},
++ {0x4e00, 0xa48c},
++ {0xa490, 0xa4c6},
++ {0xa960, 0xa97c},
++ {0xac00, 0xd7a3},
++ {0xd7b0, 0xd7c6},
++ {0xd7cb, 0xd7fb},
++ {0xf900, 0xfaff},
++ {0xfe10, 0xfe19},
++ {0xfe30, 0xfe52},
++ {0xfe54, 0xfe66},
++ {0xfe68, 0xfe6b},
++ {0xff01, 0xff60},
++ {0xffe0, 0xffe6},
++ {0x1f200, 0x1f200},
++ {0x1f210, 0x1f231},
++ {0x1f240, 0x1f248},
++ {0x20000, 0x2fffd},
++ {0x30000, 0x3fffd}
++ };
+ /* Sorted list of non-overlapping intervals of East Asian Ambiguous
+ * characters, generated with ../runtime/tools/unicode.vim. */
+ static struct interval ambiguous[] =
+***************
+*** 1403,1422 ****
+ #else
+ if (!utf_printable(c))
+ return 6; /* unprintable, displays <xxxx> */
+! if (c >= 0x1100
+! && (c <= 0x115f /* Hangul Jamo */
+! || c == 0x2329
+! || c == 0x232a
+! || (c >= 0x2e80 && c <= 0xa4cf
+! && c != 0x303f) /* CJK ... Yi */
+! || (c >= 0xac00 && c <= 0xd7a3) /* Hangul Syllables */
+! || (c >= 0xf900 && c <= 0xfaff) /* CJK Compatibility
+! Ideographs */
+! || (c >= 0xfe30 && c <= 0xfe6f) /* CJK Compatibility Forms */
+! || (c >= 0xff00 && c <= 0xff60) /* Fullwidth Forms */
+! || (c >= 0xffe0 && c <= 0xffe6)
+! || (c >= 0x20000 && c <= 0x2fffd)
+! || (c >= 0x30000 && c <= 0x3fffd)))
+ return 2;
+ #endif
+ }
+--- 1446,1452 ----
+ #else
+ if (!utf_printable(c))
+ return 6; /* unprintable, displays <xxxx> */
+! if (intable(doublewidth, sizeof(doublewidth), c))
+ return 2;
+ #endif
+ }
+*** ../vim-7.2.347/src/version.c 2010-01-27 17:31:38.000000000 +0100
+--- src/version.c 2010-01-27 18:25:50.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 348,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+157. You fum through a magazine, you first check to see if it has a web
+ address.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.349 b/source/ap/vim/patches/7.2.349
new file mode 100644
index 000000000..7d0be0204
--- /dev/null
+++ b/source/ap/vim/patches/7.2.349
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.349
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.349
+Problem: CTRL-W gf doesn't put the new tab in the same place as "tab split"
+ and "gf". (Tony Mechelynck)
+Solution: Store the tab number in cmdmod.tab.
+Files: src/window.c
+
+
+*** ../vim-7.2.348/src/window.c 2009-06-24 17:31:27.000000000 +0200
+--- src/window.c 2010-01-27 20:23:22.000000000 +0100
+***************
+*** 626,632 ****
+ #ifdef FEAT_SEARCHPATH
+ case 'f': /* CTRL-W gf: "gf" in a new tab page */
+ case 'F': /* CTRL-W gF: "gF" in a new tab page */
+! cmdmod.tab = TRUE;
+ nchar = xchar;
+ goto wingotofile;
+ #endif
+--- 626,632 ----
+ #ifdef FEAT_SEARCHPATH
+ case 'f': /* CTRL-W gf: "gf" in a new tab page */
+ case 'F': /* CTRL-W gF: "gF" in a new tab page */
+! cmdmod.tab = tabpage_index(curtab) + 1;
+ nchar = xchar;
+ goto wingotofile;
+ #endif
+*** ../vim-7.2.348/src/version.c 2010-01-27 18:29:21.000000000 +0100
+--- src/version.c 2010-01-27 20:25:43.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 349,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+159. You get excited whenever discussing your hard drive.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.350 b/source/ap/vim/patches/7.2.350
new file mode 100644
index 000000000..7715eb30a
--- /dev/null
+++ b/source/ap/vim/patches/7.2.350
@@ -0,0 +1,86 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.350
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.350
+Problem: Win32: When changing font the window may jump from the secondary
+ to the primary screen. (Michael Wookey)
+Solution: When the screen position was negative don't correct it to zero.
+Files: src/gui.c
+
+
+*** ../vim-7.2.349/src/gui.c 2009-09-23 18:14:13.000000000 +0200
+--- src/gui.c 2010-01-27 21:02:32.000000000 +0100
+***************
+*** 1390,1395 ****
+--- 1390,1396 ----
+ int un_maximize = mustset;
+ int did_adjust = 0;
+ #endif
++ int x = -1, y = -1;
+
+ if (!gui.shell_created)
+ return;
+***************
+*** 1406,1411 ****
+--- 1407,1416 ----
+
+ base_width = gui_get_base_width();
+ base_height = gui_get_base_height();
++ if (fit_to_display)
++ /* Remember the original window position. */
++ gui_mch_get_winpos(&x, &y);
++
+ #ifdef USE_SUN_WORKSHOP
+ if (!mustset && usingSunWorkShop
+ && workshop_get_width_height(&width, &height))
+***************
+*** 1473,1483 ****
+
+ gui_mch_set_shellsize(width, height, min_width, min_height,
+ base_width, base_height, direction);
+- if (fit_to_display)
+- {
+- int x, y;
+
+! /* Some window managers put the Vim window left of/above the screen. */
+ gui_mch_update();
+ if (gui_mch_get_winpos(&x, &y) == OK && (x < 0 || y < 0))
+ gui_mch_set_winpos(x < 0 ? 0 : x, y < 0 ? 0 : y);
+--- 1478,1489 ----
+
+ gui_mch_set_shellsize(width, height, min_width, min_height,
+ base_width, base_height, direction);
+
+! if (fit_to_display && x >= 0 && y >= 0)
+! {
+! /* Some window managers put the Vim window left of/above the screen.
+! * Only change the position if it wasn't already negative before
+! * (happens on MS-Windows with a secondary monitor). */
+ gui_mch_update();
+ if (gui_mch_get_winpos(&x, &y) == OK && (x < 0 || y < 0))
+ gui_mch_set_winpos(x < 0 ? 0 : x, y < 0 ? 0 : y);
+*** ../vim-7.2.349/src/version.c 2010-01-27 20:26:41.000000000 +0100
+--- src/version.c 2010-01-27 21:03:41.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 350,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+160. You get in the elevator and double-click the button for the floor
+ you want.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.351 b/source/ap/vim/patches/7.2.351
new file mode 100644
index 000000000..55b28f6aa
--- /dev/null
+++ b/source/ap/vim/patches/7.2.351
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.351 (after 7.2.347)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.351 (after 7.2.347)
+Problem: Can't build with some compilers.
+Solution: Move the #ifdef outside of a macro. Cleanup the code.
+Files: src/getchar.c
+
+
+*** ../vim-7.2.350/src/getchar.c 2010-01-27 17:31:38.000000000 +0100
+--- src/getchar.c 2010-01-28 22:42:22.000000000 +0100
+***************
+*** 2492,2508 ****
+ i = FAIL;
+ else
+ {
+! i = ins_typebuf(s,
+! save_m_noremap != REMAP_YES
+! ? save_m_noremap
+! : STRNCMP(s,
+ #ifdef FEAT_EVAL
+! save_m_keys != NULL ? save_m_keys :
+ #endif
+! mp->m_keys,
+! (size_t)keylen) != 0
+! ? REMAP_YES : REMAP_SKIP,
+! 0, TRUE, cmd_silent || save_m_silent);
+ #ifdef FEAT_EVAL
+ if (save_m_expr)
+ vim_free(s);
+--- 2492,2515 ----
+ i = FAIL;
+ else
+ {
+! int noremap;
+!
+! if (save_m_noremap != REMAP_YES)
+! noremap = save_m_noremap;
+! else if (
+ #ifdef FEAT_EVAL
+! STRNCMP(s, save_m_keys != NULL
+! ? save_m_keys : mp->m_keys,
+! (size_t)keylen)
+! #else
+! STRNCMP(s, mp->m_keys, (size_t)keylen)
+ #endif
+! != 0)
+! noremap = REMAP_YES;
+! else
+! noremap = REMAP_SKIP;
+! i = ins_typebuf(s, noremap,
+! 0, TRUE, cmd_silent || save_m_silent);
+ #ifdef FEAT_EVAL
+ if (save_m_expr)
+ vim_free(s);
+*** ../vim-7.2.350/src/version.c 2010-01-27 21:04:58.000000000 +0100
+--- src/version.c 2010-01-28 22:50:53.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 351,
+ /**/
+
+--
+"Hit any key to continue" it said, but nothing happened after F sharp.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.352 b/source/ap/vim/patches/7.2.352
new file mode 100644
index 000000000..d2e22f2db
--- /dev/null
+++ b/source/ap/vim/patches/7.2.352
@@ -0,0 +1,62 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.352
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.352
+Problem: Win64: Vim doesn't work when cross-compiled with MingW libraries.
+Solution: Always return TRUE for the WM_NCCREATE message. (Andy Kittner)
+Files: src/gui_w48.c
+
+
+*** ../vim-7.2.351/src/gui_w48.c 2009-01-28 21:22:20.000000000 +0100
+--- src/gui_w48.c 2010-02-03 12:07:11.000000000 +0100
+***************
+*** 1084,1092 ****
+ case WM_NOTIFY: Handle_WM_Notify(hwnd, (LPNMHDR)lParam);
+ return TRUE;
+ #endif
+
+! default:
+! return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ }
+ }
+
+--- 1084,1098 ----
+ case WM_NOTIFY: Handle_WM_Notify(hwnd, (LPNMHDR)lParam);
+ return TRUE;
+ #endif
++ /* Workaround for the problem that MyWindowProc() returns FALSE on 64
++ * bit windows when cross-compiled using Mingw libraries. (Andy
++ * Kittner) */
++ case WM_NCCREATE:
++ MyWindowProc(hwnd, uMsg, wParam, lParam);
++ return TRUE;
+
+! default:
+! return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ }
+ }
+
+*** ../vim-7.2.351/src/version.c 2010-01-28 22:58:10.000000000 +0100
+--- src/version.c 2010-02-03 12:16:30.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 352,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+185. You order fast food over the Internet
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.353 b/source/ap/vim/patches/7.2.353
new file mode 100644
index 000000000..06f9f1719
--- /dev/null
+++ b/source/ap/vim/patches/7.2.353
@@ -0,0 +1,173 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.353
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.353
+Problem: No command line completion for ":profile".
+Solution: Complete the subcommand and file name.
+Files: src/ex_docmd.c, src/ex_cmds2.c, src/ex_getln.c,
+ src/proto/ex_cmds2.pro, src/vim.h
+
+
+*** ../vim-7.2.352/src/ex_docmd.c 2009-11-03 12:38:50.000000000 +0100
+--- src/ex_docmd.c 2010-02-03 14:40:14.000000000 +0100
+***************
+*** 3804,3809 ****
+--- 3804,3814 ----
+ xp->xp_context = EXPAND_NOTHING;
+ break;
+ #endif
++ #if defined(FEAT_PROFILE)
++ case CMD_profile:
++ set_context_in_profile_cmd(xp, arg);
++ break;
++ #endif
+
+ #endif /* FEAT_CMDL_COMPL */
+
+*** ../vim-7.2.352/src/ex_cmds2.c 2010-01-20 21:41:40.000000000 +0100
+--- src/ex_cmds2.c 2010-02-03 14:50:08.000000000 +0100
+***************
+*** 1115,1120 ****
+--- 1115,1193 ----
+ }
+ }
+
++ /* Command line expansion for :profile. */
++ static enum
++ {
++ PEXP_SUBCMD, /* expand :profile sub-commands */
++ PEXP_FUNC, /* expand :profile func {funcname} */
++ } pexpand_what;
++
++ static char *pexpand_cmds[] = {
++ "start",
++ #define PROFCMD_START 0
++ "pause",
++ #define PROFCMD_PAUSE 1
++ "continue",
++ #define PROFCMD_CONTINUE 2
++ "func",
++ #define PROFCMD_FUNC 3
++ "file",
++ #define PROFCMD_FILE 4
++ NULL
++ #define PROFCMD_LAST 5
++ };
++
++ /*
++ * Function given to ExpandGeneric() to obtain the profile command
++ * specific expansion.
++ */
++ char_u *
++ get_profile_name(xp, idx)
++ expand_T *xp UNUSED;
++ int idx;
++ {
++ switch (pexpand_what)
++ {
++ case PEXP_SUBCMD:
++ return (char_u *)pexpand_cmds[idx];
++ /* case PEXP_FUNC: TODO */
++ default:
++ return NULL;
++ }
++ }
++
++ /*
++ * Handle command line completion for :profile command.
++ */
++ void
++ set_context_in_profile_cmd(xp, arg)
++ expand_T *xp;
++ char_u *arg;
++ {
++ char_u *end_subcmd;
++ int len;
++
++ /* Default: expand subcommands. */
++ xp->xp_context = EXPAND_PROFILE;
++ pexpand_what = PEXP_SUBCMD;
++ xp->xp_pattern = arg;
++
++ end_subcmd = skiptowhite(arg);
++ if (*end_subcmd == NUL)
++ return;
++
++ len = end_subcmd - arg;
++ if (len == 5 && STRNCMP(arg, "start", 5) == 0)
++ {
++ xp->xp_context = EXPAND_FILES;
++ xp->xp_pattern = skipwhite(end_subcmd);
++ return;
++ }
++
++ /* TODO: expand function names after "func" */
++ xp->xp_context = EXPAND_NOTHING;
++ }
++
+ /*
+ * Dump the profiling info.
+ */
+*** ../vim-7.2.352/src/ex_getln.c 2010-01-19 14:59:14.000000000 +0100
+--- src/ex_getln.c 2010-02-03 14:38:43.000000000 +0100
+***************
+*** 4522,4527 ****
+--- 4522,4530 ----
+ #ifdef FEAT_SIGNS
+ {EXPAND_SIGN, get_sign_name, TRUE},
+ #endif
++ #ifdef FEAT_PROFILE
++ {EXPAND_PROFILE, get_profile_name, TRUE},
++ #endif
+ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+ {EXPAND_LANGUAGE, get_lang_arg, TRUE},
+*** ../vim-7.2.352/src/proto/ex_cmds2.pro 2008-01-06 20:07:25.000000000 +0100
+--- src/proto/ex_cmds2.pro 2010-02-03 14:43:12.000000000 +0100
+***************
+*** 24,29 ****
+--- 24,31 ----
+ int profile_equal __ARGS((proftime_T *tm1, proftime_T *tm2));
+ int profile_cmp __ARGS((proftime_T *tm1, proftime_T *tm2));
+ void ex_profile __ARGS((exarg_T *eap));
++ char_u *get_profile_name __ARGS((expand_T *xp, int idx));
++ void set_context_in_profile_cmd __ARGS((expand_T *xp, char_u *arg));
+ void profile_dump __ARGS((void));
+ void script_prof_save __ARGS((proftime_T *tm));
+ void script_prof_restore __ARGS((proftime_T *tm));
+*** ../vim-7.2.352/src/vim.h 2009-06-16 11:08:13.000000000 +0200
+--- src/vim.h 2010-02-03 14:40:42.000000000 +0100
+***************
+*** 718,723 ****
+--- 718,724 ----
+ #define EXPAND_SHELLCMD 32
+ #define EXPAND_CSCOPE 33
+ #define EXPAND_SIGN 34
++ #define EXPAND_PROFILE 35
+
+ /* Values for exmode_active (0 is no exmode) */
+ #define EXMODE_NORMAL 1
+*** ../vim-7.2.352/src/version.c 2010-02-03 12:23:16.000000000 +0100
+--- src/version.c 2010-02-03 15:07:26.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 353,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+188. You purchase a laptop so you can surf while sitting on the can.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.354 b/source/ap/vim/patches/7.2.354
new file mode 100644
index 000000000..b4f506646
--- /dev/null
+++ b/source/ap/vim/patches/7.2.354
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.354
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.354
+Problem: Japanese single-width double-byte characters not handled correctly.
+Solution: Put 0x8e in ScreenLines[] and the second byte in ScreenLines2[].
+ (partly by Kikuchan)
+Files: src/screen.c
+
+
+*** ../vim-7.2.353/src/screen.c 2010-01-19 17:40:39.000000000 +0100
+--- src/screen.c 2010-02-03 15:47:19.000000000 +0100
+***************
+*** 2335,2347 ****
+ if (cells > 1)
+ ScreenLines[idx + 1] = 0;
+ }
+! else if (cells > 1) /* double-byte character */
+! {
+! if (enc_dbcs == DBCS_JPNU && *p == 0x8e)
+! ScreenLines2[idx] = p[1];
+! else
+! ScreenLines[idx + 1] = p[1];
+! }
+ col += cells;
+ idx += cells;
+ p += c_len;
+--- 2335,2346 ----
+ if (cells > 1)
+ ScreenLines[idx + 1] = 0;
+ }
+! else if (enc_dbcs == DBCS_JPNU && *p == 0x8e)
+! /* double-byte single width character */
+! ScreenLines2[idx] = p[1];
+! else if (cells > 1)
+! /* double-width character */
+! ScreenLines[idx + 1] = p[1];
+ col += cells;
+ idx += cells;
+ p += c_len;
+***************
+*** 4631,4637 ****
+--- 4630,4640 ----
+ ScreenLines[off] = c;
+ #ifdef FEAT_MBYTE
+ if (enc_dbcs == DBCS_JPNU)
++ {
++ if ((mb_c & 0xff00) == 0x8e00)
++ ScreenLines[off] = 0x8e;
+ ScreenLines2[off] = mb_c & 0xff;
++ }
+ else if (enc_utf8)
+ {
+ if (mb_utf8)
+*** ../vim-7.2.353/src/version.c 2010-02-03 15:14:15.000000000 +0100
+--- src/version.c 2010-02-03 15:43:43.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 354,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+189. You put your e-mail address in the upper left-hand corner of envelopes.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.355 b/source/ap/vim/patches/7.2.355
new file mode 100644
index 000000000..b23d44ae5
--- /dev/null
+++ b/source/ap/vim/patches/7.2.355
@@ -0,0 +1,88 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.355
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.355
+Problem: Computing the cursor column in validate_cursor_col() is wrong when
+ line numbers are used and 'n' is not in 'cpoptions', causing the
+ popup menu to be positioned wrong.
+Solution: Correctly use the offset. (partly by Dominique Pelle)
+Files: src/move.c
+
+
+*** ../vim-7.2.354/src/move.c 2009-11-03 16:22:59.000000000 +0100
+--- src/move.c 2010-02-03 17:15:16.000000000 +0100
+***************
+*** 889,894 ****
+--- 889,895 ----
+ {
+ colnr_T off;
+ colnr_T col;
++ int width;
+
+ validate_virtcol();
+ if (!(curwin->w_valid & VALID_WCOL))
+***************
+*** 896,910 ****
+ col = curwin->w_virtcol;
+ off = curwin_col_off();
+ col += off;
+
+ /* long line wrapping, adjust curwin->w_wrow */
+ if (curwin->w_p_wrap
+ && col >= (colnr_T)W_WIDTH(curwin)
+! && W_WIDTH(curwin) - off + curwin_col_off2() > 0)
+! {
+! col -= W_WIDTH(curwin);
+! col = col % (W_WIDTH(curwin) - off + curwin_col_off2());
+! }
+ if (col > (int)curwin->w_leftcol)
+ col -= curwin->w_leftcol;
+ else
+--- 897,910 ----
+ col = curwin->w_virtcol;
+ off = curwin_col_off();
+ col += off;
++ width = W_WIDTH(curwin) - off + curwin_col_off2();
+
+ /* long line wrapping, adjust curwin->w_wrow */
+ if (curwin->w_p_wrap
+ && col >= (colnr_T)W_WIDTH(curwin)
+! && width > 0)
+! /* use same formula as what is used in curs_columns() */
+! col -= ((col - W_WIDTH(curwin)) / width + 1) * width;
+ if (col > (int)curwin->w_leftcol)
+ col -= curwin->w_leftcol;
+ else
+***************
+*** 1041,1046 ****
+--- 1041,1047 ----
+ /* long line wrapping, adjust curwin->w_wrow */
+ if (curwin->w_wcol >= W_WIDTH(curwin))
+ {
++ /* this same formula is used in validate_cursor_col() */
+ n = (curwin->w_wcol - W_WIDTH(curwin)) / width + 1;
+ curwin->w_wcol -= n * width;
+ curwin->w_wrow += n;
+*** ../vim-7.2.354/src/version.c 2010-02-03 15:47:59.000000000 +0100
+--- src/version.c 2010-02-03 17:40:39.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 355,
+ /**/
+
+--
+I'm in shape. Round IS a shape.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.356 b/source/ap/vim/patches/7.2.356
new file mode 100644
index 000000000..51b646cd2
--- /dev/null
+++ b/source/ap/vim/patches/7.2.356
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.356
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.356
+Problem: When 'foldmethod' is changed not all folds are closed as expected.
+Solution: In foldUpdate() correct the start position and reset fd_flags when
+ w_foldinvalid is set. (Lech Lorens)
+Files: src/fold.c
+
+
+*** ../vim-7.2.355/src/fold.c 2010-01-19 17:24:20.000000000 +0100
+--- src/fold.c 2010-02-03 18:08:11.000000000 +0100
+***************
+*** 849,859 ****
+ fold_T *fp;
+
+ /* Mark all folds from top to bot as maybe-small. */
+! (void)foldFind(&curwin->w_folds, curwin->w_cursor.lnum, &fp);
+ while (fp < (fold_T *)curwin->w_folds.ga_data + curwin->w_folds.ga_len
+ && fp->fd_top < bot)
+ {
+ fp->fd_small = MAYBE;
+ ++fp;
+ }
+
+--- 849,865 ----
+ fold_T *fp;
+
+ /* Mark all folds from top to bot as maybe-small. */
+! (void)foldFind(&curwin->w_folds, top, &fp);
+ while (fp < (fold_T *)curwin->w_folds.ga_data + curwin->w_folds.ga_len
+ && fp->fd_top < bot)
+ {
+ fp->fd_small = MAYBE;
++
++ /* Not sure if this is the right place to reset fd_flags (suggested by
++ * Lech Lorens). */
++ if (wp->w_foldinvalid)
++ fp->fd_flags = FD_LEVEL;
++
+ ++fp;
+ }
+
+*** ../vim-7.2.355/src/version.c 2010-02-03 17:42:59.000000000 +0100
+--- src/version.c 2010-02-03 18:12:34.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 356,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+190. You quickly hand over your wallet, leather jacket, and car keys
+ during a mugging, then proceed to beat the crap out of your
+ assailant when he asks for your laptop.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.357 b/source/ap/vim/patches/7.2.357
new file mode 100644
index 000000000..e1998a8fc
--- /dev/null
+++ b/source/ap/vim/patches/7.2.357
@@ -0,0 +1,49 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.357
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.357
+Problem: When changing 'fileformat' from/to "mac" and there is a CR in the
+ text the display is wrong.
+Solution: Redraw the text when 'fileformat' is changed. (Ben Schmidt)
+Files: src/option.c
+
+
+*** ../vim-7.2.356/src/option.c 2010-01-27 15:57:17.000000000 +0100
+--- src/option.c 2010-02-11 16:57:19.000000000 +0100
+***************
+*** 5867,5872 ****
+--- 5867,5876 ----
+ #endif
+ /* update flag in swap file */
+ ml_setflags(curbuf);
++ /* Redraw needed when switching to/from "mac": a CR in the text
++ * will be displayed differently. */
++ if (get_fileformat(curbuf) == EOL_MAC || *oldval == 'm')
++ redraw_curbuf_later(NOT_VALID);
+ }
+ }
+
+*** ../vim-7.2.356/src/version.c 2010-02-03 18:14:41.000000000 +0100
+--- src/version.c 2010-02-11 17:01:36.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 357,
+ /**/
+
+--
+From the classified section of a city newspaper:
+Dog for sale: eats anything and is fond of children.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.358 b/source/ap/vim/patches/7.2.358
new file mode 100644
index 000000000..524049d6b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.358
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.358
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.358
+Problem: Compiler warnings on VMS. (Zoltan Arpadffy)
+Solution: Pass array itself instead its address. Return a value.
+Files: src/gui_gtk_x11.c, src/os_unix.c
+
+
+*** ../vim-7.2.357/src/gui_gtk_x11.c 2009-11-03 18:13:36.000000000 +0100
+--- src/gui_gtk_x11.c 2010-02-11 18:00:28.000000000 +0100
+***************
+*** 6190,6196 ****
+ int pcc[MAX_MCO];
+
+ /* TODO: use the composing characters */
+! c = utfc_ptr2char_len(p, &pcc, len - (p - s));
+ if (c >= 0x10000) /* show chars > 0xffff as ? */
+ c = 0xbf;
+ buf[textlen].byte1 = c >> 8;
+--- 6190,6196 ----
+ int pcc[MAX_MCO];
+
+ /* TODO: use the composing characters */
+! c = utfc_ptr2char_len(p, pcc, len - (p - s));
+ if (c >= 0x10000) /* show chars > 0xffff as ? */
+ c = 0xbf;
+ buf[textlen].byte1 = c >> 8;
+*** ../vim-7.2.357/src/os_unix.c 2009-07-22 13:27:50.000000000 +0200
+--- src/os_unix.c 2010-02-11 18:10:20.000000000 +0100
+***************
+*** 1471,1476 ****
+--- 1471,1479 ----
+ {
+ /* This function should not return, it causes exit(). Longjump instead. */
+ LONGJMP(lc_jump_env, 1);
++ # ifdef VMS
++ return 0; /* avoid the compiler complains about missing return value */
++ # endif
+ }
+ # endif
+
+***************
+*** 1490,1495 ****
+--- 1493,1501 ----
+
+ /* This function should not return, it causes exit(). Longjump instead. */
+ LONGJMP(x_jump_env, 1);
++ # ifdef VMS
++ return 0; /* avoid the compiler complains about missing return value */
++ # endif
+ }
+ #endif
+
+*** ../vim-7.2.357/src/version.c 2010-02-11 17:02:04.000000000 +0100
+--- src/version.c 2010-02-11 18:10:45.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 358,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+221. Your wife melts your keyboard in the oven.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.359 b/source/ap/vim/patches/7.2.359
new file mode 100644
index 000000000..eb7ade2aa
--- /dev/null
+++ b/source/ap/vim/patches/7.2.359
@@ -0,0 +1,68 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.359
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.359
+Problem: Crash when using the Netbeans join command.
+Solution: Make sure the ml_flush_line() function is not used recursively.
+ (Xavier de Gaye)
+Files: src/memline.c
+
+
+*** ../vim-7.2.358/src/memline.c 2009-11-17 17:13:03.000000000 +0100
+--- src/memline.c 2010-02-11 18:47:48.000000000 +0100
+***************
+*** 3087,3098 ****
+--- 3087,3105 ----
+ int start;
+ int count;
+ int i;
++ static int entered = FALSE;
+
+ if (buf->b_ml.ml_line_lnum == 0 || buf->b_ml.ml_mfp == NULL)
+ return; /* nothing to do */
+
+ if (buf->b_ml.ml_flags & ML_LINE_DIRTY)
+ {
++ /* This code doesn't work recursively, but Netbeans may call back here
++ * when obtaining the cursor position. */
++ if (entered)
++ return;
++ entered = TRUE;
++
+ lnum = buf->b_ml.ml_line_lnum;
+ new_line = buf->b_ml.ml_line_ptr;
+
+***************
+*** 3160,3165 ****
+--- 3167,3174 ----
+ }
+ }
+ vim_free(new_line);
++
++ entered = FALSE;
+ }
+
+ buf->b_ml.ml_line_lnum = 0;
+*** ../vim-7.2.358/src/version.c 2010-02-11 18:19:32.000000000 +0100
+--- src/version.c 2010-02-11 18:53:55.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 359,
+ /**/
+
+--
+Your fault: core dumped
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.360 b/source/ap/vim/patches/7.2.360
new file mode 100644
index 000000000..7cf46205f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.360
@@ -0,0 +1,96 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.360
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.360
+Problem: Ruby on MS-Windows: can't use sockets.
+Solution: Call NtInitialize() during initialization. (Ariya Mizutani)
+Files: src/if_ruby.c
+
+
+*** ../vim-7.2.359/src/if_ruby.c 2009-05-22 18:20:23.000000000 +0200
+--- src/if_ruby.c 2010-02-17 15:04:00.000000000 +0100
+***************
+*** 48,53 ****
+--- 48,58 ----
+ # endif
+ #endif
+
++ /* suggested by Ariya Mizutani */
++ #if (_MSC_VER == 1200)
++ # undef _WIN32_WINNT
++ #endif
++
+ #include <ruby.h>
+
+ #undef EXTERN
+***************
+*** 132,137 ****
+--- 137,143 ----
+ #define ruby_errinfo (*dll_ruby_errinfo)
+ #define ruby_init dll_ruby_init
+ #define ruby_init_loadpath dll_ruby_init_loadpath
++ #define NtInitialize dll_NtInitialize
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+ # define rb_w32_snprintf dll_rb_w32_snprintf
+ #endif
+***************
+*** 186,191 ****
+--- 192,198 ----
+ static VALUE *dll_ruby_errinfo;
+ static void (*dll_ruby_init) (void);
+ static void (*dll_ruby_init_loadpath) (void);
++ static void (*dll_NtInitialize) (int*, char***);
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+ static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
+ #endif
+***************
+*** 248,253 ****
+--- 255,261 ----
+ {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
+ {"ruby_init", (RUBY_PROC*)&dll_ruby_init},
+ {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
++ {"NtInitialize", (RUBY_PROC*)&dll_NtInitialize},
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+ {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
+ #endif
+***************
+*** 414,419 ****
+--- 422,433 ----
+ if (ruby_enabled(TRUE))
+ {
+ #endif
++ #ifdef _WIN32
++ /* suggested by Ariya Mizutani */
++ int argc = 1;
++ char *argv[] = {"gvim.exe"};
++ NtInitialize(&argc, &argv);
++ #endif
+ ruby_init();
+ ruby_init_loadpath();
+ ruby_io_init();
+*** ../vim-7.2.359/src/version.c 2010-02-11 18:54:38.000000000 +0100
+--- src/version.c 2010-02-17 15:10:22.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 360,
+ /**/
+
+--
+"After a few years of marriage a man can look right at a woman
+without seeing her and a woman can see right through a man
+without looking at him."
+ - Helen Rowland
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.361 b/source/ap/vim/patches/7.2.361
new file mode 100644
index 000000000..ddc585795
--- /dev/null
+++ b/source/ap/vim/patches/7.2.361
@@ -0,0 +1,763 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.361
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.361
+Problem: Ruby 1.9 is not supported.
+Solution: Add Ruby 1.9 support. (Msaki Suketa)
+Files: src/Makefile, src/auto/configure, src/configure.in, src/if_ruby.c
+
+
+*** ../vim-7.2.360/src/Makefile 2010-02-17 15:12:22.000000000 +0100
+--- src/Makefile 2010-02-17 16:21:01.000000000 +0100
+***************
+*** 395,401 ****
+
+ # RUBY
+ # Uncomment this when you want to include the Ruby interface.
+! #CONF_OPT_RUBY = --enable-rubyinterp
+
+ # MZSCHEME
+ # Uncomment this when you want to include the MzScheme interface.
+--- 395,403 ----
+
+ # RUBY
+ # Uncomment this when you want to include the Ruby interface.
+! # Note: you need the development package (e.g., ruby1.9.1-dev on Ubuntu).
+! # CONF_OPT_RUBY = --enable-rubyinterp
+! # CONF_OPT_RUBY = --enable-rubyinterp --with-ruby-command=ruby1.9.1
+
+ # MZSCHEME
+ # Uncomment this when you want to include the MzScheme interface.
+*** ../vim-7.2.360/src/auto/configure 2009-12-16 17:14:08.000000000 +0100
+--- src/auto/configure 2010-02-17 16:08:59.000000000 +0100
+***************
+*** 793,798 ****
+--- 793,799 ----
+ enable_tclinterp
+ with_tclsh
+ enable_rubyinterp
++ with_ruby_command
+ enable_cscope
+ enable_workshop
+ enable_netbeans
+***************
+*** 1503,1508 ****
+--- 1504,1510 ----
+ --with-plthome=PLTHOME Use PLTHOME.
+ --with-python-config-dir=PATH Python's config directory
+ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)
++ --with-ruby-command=RUBY name of the Ruby command (default: ruby)
+ --with-x use the X Window System
+ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)
+ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)
+***************
+*** 5703,5711 ****
+ { $as_echo "$as_me:$LINENO: result: $enable_rubyinterp" >&5
+ $as_echo "$enable_rubyinterp" >&6; }
+ if test "$enable_rubyinterp" = "yes"; then
+
+! # Extract the first word of "ruby", so it can be a program name with args.
+! set dummy ruby; ac_word=$2
+ { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_vi_cv_path_ruby+set}" = set; then
+--- 5705,5725 ----
+ { $as_echo "$as_me:$LINENO: result: $enable_rubyinterp" >&5
+ $as_echo "$enable_rubyinterp" >&6; }
+ if test "$enable_rubyinterp" = "yes"; then
++ { $as_echo "$as_me:$LINENO: checking --with-ruby-command argument" >&5
++ $as_echo_n "checking --with-ruby-command argument... " >&6; }
+
+! # Check whether --with-ruby-command was given.
+! if test "${with_ruby_command+set}" = set; then
+! withval=$with_ruby_command; RUBY_CMD="$withval"; { $as_echo "$as_me:$LINENO: result: $RUBY_CMD" >&5
+! $as_echo "$RUBY_CMD" >&6; }
+! else
+! RUBY_CMD="ruby"; { $as_echo "$as_me:$LINENO: result: defaulting to $RUBY_CMD" >&5
+! $as_echo "defaulting to $RUBY_CMD" >&6; }
+! fi
+!
+!
+! # Extract the first word of "$RUBY_CMD", so it can be a program name with args.
+! set dummy $RUBY_CMD; ac_word=$2
+ { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_vi_cv_path_ruby+set}" = set; then
+***************
+*** 5752,5762 ****
+ $as_echo "OK" >&6; }
+ { $as_echo "$as_me:$LINENO: checking Ruby header files" >&5
+ $as_echo_n "checking Ruby header files... " >&6; }
+! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG["archdir"] || $hdrdir' 2>/dev/null`
+ if test "X$rubyhdrdir" != "X"; then
+ { $as_echo "$as_me:$LINENO: result: $rubyhdrdir" >&5
+ $as_echo "$rubyhdrdir" >&6; }
+ RUBY_CFLAGS="-I$rubyhdrdir"
+ rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LIBS"]'`
+ if test "X$rubylibs" != "X"; then
+ RUBY_LIBS="$rubylibs"
+--- 5766,5782 ----
+ $as_echo "OK" >&6; }
+ { $as_echo "$as_me:$LINENO: checking Ruby header files" >&5
+ $as_echo_n "checking Ruby header files... " >&6; }
+! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG["rubyhdrdir"] || Config::CONFIG["archdir"] || $hdrdir' 2>/dev/null`
+ if test "X$rubyhdrdir" != "X"; then
+ { $as_echo "$as_me:$LINENO: result: $rubyhdrdir" >&5
+ $as_echo "$rubyhdrdir" >&6; }
+ RUBY_CFLAGS="-I$rubyhdrdir"
++ rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["arch"]'`
++ if test -d "$rubyhdrdir/$rubyarch"; then
++ RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
++ fi
++ rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["ruby_version"].gsub(/\./, "")[0,2]'`
++ RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
+ rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LIBS"]'`
+ if test "X$rubylibs" != "X"; then
+ RUBY_LIBS="$rubylibs"
+***************
+*** 5793,5800 ****
+ _ACEOF
+
+ else
+! { $as_echo "$as_me:$LINENO: result: not found" >&5
+! $as_echo "not found" >&6; }
+ fi
+ else
+ { $as_echo "$as_me:$LINENO: result: too old; need Ruby version 1.6.0 or later" >&5
+--- 5813,5820 ----
+ _ACEOF
+
+ else
+! { $as_echo "$as_me:$LINENO: result: not found; disabling Ruby" >&5
+! $as_echo "not found; disabling Ruby" >&6; }
+ fi
+ else
+ { $as_echo "$as_me:$LINENO: result: too old; need Ruby version 1.6.0 or later" >&5
+*** ../vim-7.2.360/src/configure.in 2009-12-16 17:14:08.000000000 +0100
+--- src/configure.in 2010-02-17 16:00:58.000000000 +0100
+***************
+*** 949,965 ****
+ [enable_rubyinterp="no"])
+ AC_MSG_RESULT($enable_rubyinterp)
+ if test "$enable_rubyinterp" = "yes"; then
+ AC_SUBST(vi_cv_path_ruby)
+! AC_PATH_PROG(vi_cv_path_ruby, ruby)
+ if test "X$vi_cv_path_ruby" != "X"; then
+ AC_MSG_CHECKING(Ruby version)
+ if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
+ AC_MSG_RESULT(OK)
+ AC_MSG_CHECKING(Ruby header files)
+! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
+ if test "X$rubyhdrdir" != "X"; then
+ AC_MSG_RESULT($rubyhdrdir)
+ RUBY_CFLAGS="-I$rubyhdrdir"
+ rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
+ if test "X$rubylibs" != "X"; then
+ RUBY_LIBS="$rubylibs"
+--- 949,975 ----
+ [enable_rubyinterp="no"])
+ AC_MSG_RESULT($enable_rubyinterp)
+ if test "$enable_rubyinterp" = "yes"; then
++ AC_MSG_CHECKING(--with-ruby-command argument)
++ AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
++ RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
++ RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
+ AC_SUBST(vi_cv_path_ruby)
+! AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
+ if test "X$vi_cv_path_ruby" != "X"; then
+ AC_MSG_CHECKING(Ruby version)
+ if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
+ AC_MSG_RESULT(OK)
+ AC_MSG_CHECKING(Ruby header files)
+! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
+ if test "X$rubyhdrdir" != "X"; then
+ AC_MSG_RESULT($rubyhdrdir)
+ RUBY_CFLAGS="-I$rubyhdrdir"
++ rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
++ if test -d "$rubyhdrdir/$rubyarch"; then
++ RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
++ fi
++ rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
++ RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
+ rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
+ if test "X$rubylibs" != "X"; then
+ RUBY_LIBS="$rubylibs"
+***************
+*** 997,1003 ****
+ RUBY_PRO="if_ruby.pro"
+ AC_DEFINE(FEAT_RUBY)
+ else
+! AC_MSG_RESULT(not found, disabling Ruby)
+ fi
+ else
+ AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
+--- 1007,1013 ----
+ RUBY_PRO="if_ruby.pro"
+ AC_DEFINE(FEAT_RUBY)
+ else
+! AC_MSG_RESULT(not found; disabling Ruby)
+ fi
+ else
+ AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
+*** ../vim-7.2.360/src/if_ruby.c 2010-02-17 15:11:35.000000000 +0100
+--- src/if_ruby.c 2010-02-17 16:08:47.000000000 +0100
+***************
+*** 54,59 ****
+--- 54,62 ----
+ #endif
+
+ #include <ruby.h>
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ # include <ruby/encoding.h>
++ #endif
+
+ #undef EXTERN
+ #undef _
+***************
+*** 65,70 ****
+--- 68,95 ----
+ # define __OPENTRANSPORTPROVIDERS__
+ #endif
+
++ /*
++ * Backward compatiblity for Ruby 1.8 and earlier.
++ * Ruby 1.9 does not provide STR2CSTR, instead StringValuePtr is provided.
++ * Ruby 1.9 does not provide RXXX(s)->len and RXXX(s)->ptr, instead
++ * RXXX_LEN(s) and RXXX_PTR(s) are provided.
++ */
++ #ifndef StringValuePtr
++ # define StringValuePtr(s) STR2CSTR(s)
++ #endif
++ #ifndef RARRAY_LEN
++ # define RARRAY_LEN(s) RARRAY(s)->len
++ #endif
++ #ifndef RARRAY_PTR
++ # define RARRAY_PTR(s) RARRAY(s)->ptr
++ #endif
++ #ifndef RSTRING_LEN
++ # define RSTRING_LEN(s) RSTRING(s)->len
++ #endif
++ #ifndef RSTRING_PTR
++ # define RSTRING_PTR(s) RSTRING(s)->ptr
++ #endif
++
+ #include "vim.h"
+ #include "version.h"
+
+***************
+*** 134,140 ****
+ #define rb_str_concat dll_rb_str_concat
+ #define rb_str_new dll_rb_str_new
+ #define rb_str_new2 dll_rb_str_new2
+! #define ruby_errinfo (*dll_ruby_errinfo)
+ #define ruby_init dll_ruby_init
+ #define ruby_init_loadpath dll_ruby_init_loadpath
+ #define NtInitialize dll_NtInitialize
+--- 159,169 ----
+ #define rb_str_concat dll_rb_str_concat
+ #define rb_str_new dll_rb_str_new
+ #define rb_str_new2 dll_rb_str_new2
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+! # define rb_errinfo dll_rb_errinfo
+! #else
+! # define ruby_errinfo (*dll_ruby_errinfo)
+! #endif
+ #define ruby_init dll_ruby_init
+ #define ruby_init_loadpath dll_ruby_init_loadpath
+ #define NtInitialize dll_NtInitialize
+***************
+*** 142,147 ****
+--- 171,184 ----
+ # define rb_w32_snprintf dll_rb_w32_snprintf
+ #endif
+
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ # define ruby_script dll_ruby_script
++ # define rb_enc_find_index dll_rb_enc_find_index
++ # define rb_enc_find dll_rb_enc_find
++ # define rb_enc_str_new dll_rb_enc_str_new
++ # define rb_sprintf dll_rb_sprintf
++ #endif
++
+ /*
+ * Pointers for dynamic link
+ */
+***************
+*** 189,195 ****
+--- 226,236 ----
+ static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
+ static VALUE (*dll_rb_str_new) (const char*, long);
+ static VALUE (*dll_rb_str_new2) (const char*);
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ static VALUE (*dll_rb_errinfo) (void);
++ #else
+ static VALUE *dll_ruby_errinfo;
++ #endif
+ static void (*dll_ruby_init) (void);
+ static void (*dll_ruby_init_loadpath) (void);
+ static void (*dll_NtInitialize) (int*, char***);
+***************
+*** 197,202 ****
+--- 238,251 ----
+ static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
+ #endif
+
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ static void (*dll_ruby_script) (const char*);
++ static int (*dll_rb_enc_find_index) (const char*);
++ static rb_encoding* (*dll_rb_enc_find) (const char*);
++ static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*);
++ static VALUE (*dll_rb_sprintf) (const char*, ...);
++ #endif
++
+ static HINSTANCE hinstRuby = 0; /* Instance of ruby.dll */
+
+ /*
+***************
+*** 252,264 ****
+--- 301,324 ----
+ {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
+ {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
+ {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2},
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo},
++ #else
+ {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
++ #endif
+ {"ruby_init", (RUBY_PROC*)&dll_ruby_init},
+ {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
+ {"NtInitialize", (RUBY_PROC*)&dll_NtInitialize},
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+ {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
+ #endif
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ {"ruby_script", (RUBY_PROC*)&dll_ruby_script},
++ {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
++ {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find},
++ {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new},
++ {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf},
++ #endif
+ {"", NULL},
+ };
+
+***************
+*** 348,353 ****
+--- 408,465 ----
+ vim_free(script);
+ }
+
++ /*
++ * In Ruby 1.9 or later, ruby String object has encoding.
++ * conversion buffer string of vim to ruby String object using
++ * VIM encoding option.
++ */
++ static VALUE
++ vim_str2rb_enc_str(const char *s)
++ {
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ int isnum;
++ long lval;
++ char_u *sval;
++ rb_encoding *enc;
++
++ isnum = get_option_value((char_u *)"enc", &lval, &sval, 0);
++ if (isnum == 0)
++ {
++ enc = rb_enc_find((char *)sval);
++ vim_free(sval);
++ if (enc) {
++ return rb_enc_str_new(s, strlen(s), enc);
++ }
++ }
++ #endif
++ return rb_str_new2(s);
++ }
++
++ static VALUE
++ eval_enc_string_protect(const char *str, int *state)
++ {
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ int isnum;
++ long lval;
++ char_u *sval;
++ rb_encoding *enc;
++ VALUE v;
++
++ isnum = get_option_value((char_u *)"enc", &lval, &sval, 0);
++ if (isnum == 0)
++ {
++ enc = rb_enc_find((char *)sval);
++ vim_free(sval);
++ if (enc)
++ {
++ v = rb_sprintf("#-*- coding:%s -*-\n%s", rb_enc_name(enc), str);
++ return rb_eval_string_protect(StringValuePtr(v), state);
++ }
++ }
++ #endif
++ return rb_eval_string_protect(str, state);
++ }
++
+ void ex_rubydo(exarg_T *eap)
+ {
+ int state;
+***************
+*** 360,368 ****
+ for (i = eap->line1; i <= eap->line2; i++) {
+ VALUE line, oldline;
+
+! line = oldline = rb_str_new2((char *)ml_get(i));
+ rb_lastline_set(line);
+! rb_eval_string_protect((char *) eap->arg, &state);
+ if (state) {
+ error_print(state);
+ break;
+--- 472,480 ----
+ for (i = eap->line1; i <= eap->line2; i++) {
+ VALUE line, oldline;
+
+! line = oldline = vim_str2rb_enc_str((char *)ml_get(i));
+ rb_lastline_set(line);
+! eval_enc_string_protect((char *) eap->arg, &state);
+ if (state) {
+ error_print(state);
+ break;
+***************
+*** 373,379 ****
+ EMSG(_("E265: $_ must be an instance of String"));
+ return;
+ }
+! ml_replace(i, (char_u *) STR2CSTR(line), 1);
+ changed();
+ #ifdef SYNTAX_HL
+ syn_changed(i); /* recompute syntax hl. for this line */
+--- 485,491 ----
+ EMSG(_("E265: $_ must be an instance of String"));
+ return;
+ }
+! ml_replace(i, (char_u *) StringValuePtr(line), 1);
+ changed();
+ #ifdef SYNTAX_HL
+ syn_changed(i); /* recompute syntax hl. for this line */
+***************
+*** 428,436 ****
+--- 540,557 ----
+ char *argv[] = {"gvim.exe"};
+ NtInitialize(&argc, &argv);
+ #endif
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ RUBY_INIT_STACK;
++ #endif
+ ruby_init();
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ ruby_script("vim-ruby");
++ #endif
+ ruby_init_loadpath();
+ ruby_io_init();
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ rb_enc_find_index("encdb");
++ #endif
+ ruby_vim_init();
+ ruby_initialized = 1;
+ #ifdef DYNAMIC_RUBY
+***************
+*** 448,455 ****
+--- 569,578 ----
+ static void error_print(int state)
+ {
+ #ifndef DYNAMIC_RUBY
++ #if !(defined(RUBY_VERSION) && RUBY_VERSION >= 19)
+ RUBYEXTERN VALUE ruby_errinfo;
+ #endif
++ #endif
+ VALUE eclass;
+ VALUE einfo;
+ char buff[BUFSIZ];
+***************
+*** 482,490 ****
+ break;
+ case TAG_RAISE:
+ case TAG_FATAL:
+ eclass = CLASS_OF(ruby_errinfo);
+ einfo = rb_obj_as_string(ruby_errinfo);
+! if (eclass == rb_eRuntimeError && RSTRING(einfo)->len == 0) {
+ EMSG(_("E272: unhandled exception"));
+ }
+ else {
+--- 605,618 ----
+ break;
+ case TAG_RAISE:
+ case TAG_FATAL:
++ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
++ eclass = CLASS_OF(rb_errinfo());
++ einfo = rb_obj_as_string(rb_errinfo());
++ #else
+ eclass = CLASS_OF(ruby_errinfo);
+ einfo = rb_obj_as_string(ruby_errinfo);
+! #endif
+! if (eclass == rb_eRuntimeError && RSTRING_LEN(einfo) == 0) {
+ EMSG(_("E272: unhandled exception"));
+ }
+ else {
+***************
+*** 493,499 ****
+
+ epath = rb_class_path(eclass);
+ vim_snprintf(buff, BUFSIZ, "%s: %s",
+! RSTRING(epath)->ptr, RSTRING(einfo)->ptr);
+ p = strchr(buff, '\n');
+ if (p) *p = '\0';
+ EMSG(buff);
+--- 621,627 ----
+
+ epath = rb_class_path(eclass);
+ vim_snprintf(buff, BUFSIZ, "%s: %s",
+! RSTRING_PTR(epath), RSTRING_PTR(einfo));
+ p = strchr(buff, '\n');
+ if (p) *p = '\0';
+ EMSG(buff);
+***************
+*** 511,518 ****
+ char *buff, *p;
+
+ str = rb_obj_as_string(str);
+! buff = ALLOCA_N(char, RSTRING(str)->len);
+! strcpy(buff, RSTRING(str)->ptr);
+ p = strchr(buff, '\n');
+ if (p) *p = '\0';
+ MSG(buff);
+--- 639,646 ----
+ char *buff, *p;
+
+ str = rb_obj_as_string(str);
+! buff = ALLOCA_N(char, RSTRING_LEN(str));
+! strcpy(buff, RSTRING_PTR(str));
+ p = strchr(buff, '\n');
+ if (p) *p = '\0';
+ MSG(buff);
+***************
+*** 521,541 ****
+
+ static VALUE vim_set_option(VALUE self UNUSED, VALUE str)
+ {
+! do_set((char_u *)STR2CSTR(str), 0);
+ update_screen(NOT_VALID);
+ return Qnil;
+ }
+
+ static VALUE vim_command(VALUE self UNUSED, VALUE str)
+ {
+! do_cmdline_cmd((char_u *)STR2CSTR(str));
+ return Qnil;
+ }
+
+ static VALUE vim_evaluate(VALUE self UNUSED, VALUE str)
+ {
+ #ifdef FEAT_EVAL
+! char_u *value = eval_to_string((char_u *)STR2CSTR(str), NULL, TRUE);
+
+ if (value != NULL)
+ {
+--- 649,669 ----
+
+ static VALUE vim_set_option(VALUE self UNUSED, VALUE str)
+ {
+! do_set((char_u *)StringValuePtr(str), 0);
+ update_screen(NOT_VALID);
+ return Qnil;
+ }
+
+ static VALUE vim_command(VALUE self UNUSED, VALUE str)
+ {
+! do_cmdline_cmd((char_u *)StringValuePtr(str));
+ return Qnil;
+ }
+
+ static VALUE vim_evaluate(VALUE self UNUSED, VALUE str)
+ {
+ #ifdef FEAT_EVAL
+! char_u *value = eval_to_string((char_u *)StringValuePtr(str), NULL, TRUE);
+
+ if (value != NULL)
+ {
+***************
+*** 640,648 ****
+ if (n > 0 && n <= buf->b_ml.ml_line_count)
+ {
+ char *line = (char *)ml_get_buf(buf, n, FALSE);
+! return line ? rb_str_new2(line) : Qnil;
+ }
+! rb_raise(rb_eIndexError, "index %d out of buffer", n);
+ #ifndef __GNUC__
+ return Qnil; /* For stop warning */
+ #endif
+--- 768,776 ----
+ if (n > 0 && n <= buf->b_ml.ml_line_count)
+ {
+ char *line = (char *)ml_get_buf(buf, n, FALSE);
+! return line ? vim_str2rb_enc_str(line) : Qnil;
+ }
+! rb_raise(rb_eIndexError, "line number %ld out of range", (long)n);
+ #ifndef __GNUC__
+ return Qnil; /* For stop warning */
+ #endif
+***************
+*** 659,665 ****
+
+ static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str)
+ {
+! char *line = STR2CSTR(str);
+ aco_save_T aco;
+
+ if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL)
+--- 787,793 ----
+
+ static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str)
+ {
+! char *line = StringValuePtr(str);
+ aco_save_T aco;
+
+ if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL)
+***************
+*** 683,689 ****
+ }
+ else
+ {
+! rb_raise(rb_eIndexError, "index %d out of buffer", n);
+ #ifndef __GNUC__
+ return Qnil; /* For stop warning */
+ #endif
+--- 811,817 ----
+ }
+ else
+ {
+! rb_raise(rb_eIndexError, "line number %ld out of range", (long)n);
+ #ifndef __GNUC__
+ return Qnil; /* For stop warning */
+ #endif
+***************
+*** 729,735 ****
+ }
+ else
+ {
+! rb_raise(rb_eIndexError, "index %d out of buffer", n);
+ }
+ return Qnil;
+ }
+--- 857,863 ----
+ }
+ else
+ {
+! rb_raise(rb_eIndexError, "line number %ld out of range", n);
+ }
+ return Qnil;
+ }
+***************
+*** 737,747 ****
+ static VALUE buffer_append(VALUE self, VALUE num, VALUE str)
+ {
+ buf_T *buf = get_buf(self);
+! char *line = STR2CSTR(str);
+ long n = NUM2LONG(num);
+ aco_save_T aco;
+
+! if (n >= 0 && n <= buf->b_ml.ml_line_count && line != NULL)
+ {
+ /* set curwin/curbuf for "buf" and save some things */
+ aucmd_prepbuf(&aco, buf);
+--- 865,878 ----
+ static VALUE buffer_append(VALUE self, VALUE num, VALUE str)
+ {
+ buf_T *buf = get_buf(self);
+! char *line = StringValuePtr(str);
+ long n = NUM2LONG(num);
+ aco_save_T aco;
+
+! if (line != NULL) {
+! rb_raise(rb_eIndexError, "NULL line");
+! }
+! else if (n >= 0 && n <= buf->b_ml.ml_line_count)
+ {
+ /* set curwin/curbuf for "buf" and save some things */
+ aucmd_prepbuf(&aco, buf);
+***************
+*** 763,769 ****
+ update_curbuf(NOT_VALID);
+ }
+ else {
+! rb_raise(rb_eIndexError, "index %d out of buffer", n);
+ }
+ return str;
+ }
+--- 894,900 ----
+ update_curbuf(NOT_VALID);
+ }
+ else {
+! rb_raise(rb_eIndexError, "line number %ld out of range", n);
+ }
+ return str;
+ }
+***************
+*** 904,913 ****
+ win_T *win = get_win(self);
+
+ Check_Type(pos, T_ARRAY);
+! if (RARRAY(pos)->len != 2)
+ rb_raise(rb_eArgError, "array length must be 2");
+! lnum = RARRAY(pos)->ptr[0];
+! col = RARRAY(pos)->ptr[1];
+ win->w_cursor.lnum = NUM2LONG(lnum);
+ win->w_cursor.col = NUM2UINT(col);
+ check_cursor(); /* put cursor on an existing line */
+--- 1035,1044 ----
+ win_T *win = get_win(self);
+
+ Check_Type(pos, T_ARRAY);
+! if (RARRAY_LEN(pos) != 2)
+ rb_raise(rb_eArgError, "array length must be 2");
+! lnum = RARRAY_PTR(pos)[0];
+! col = RARRAY_PTR(pos)[1];
+ win->w_cursor.lnum = NUM2LONG(lnum);
+ win->w_cursor.col = NUM2UINT(col);
+ check_cursor(); /* put cursor on an existing line */
+***************
+*** 924,930 ****
+ if (i > 0) rb_str_cat(str, ", ", 2);
+ rb_str_concat(str, rb_inspect(argv[i]));
+ }
+! MSG(RSTRING(str)->ptr);
+ return Qnil;
+ }
+
+--- 1055,1061 ----
+ if (i > 0) rb_str_cat(str, ", ", 2);
+ rb_str_concat(str, rb_inspect(argv[i]));
+ }
+! MSG(RSTRING_PTR(str));
+ return Qnil;
+ }
+
+*** ../vim-7.2.360/src/version.c 2010-02-17 15:11:35.000000000 +0100
+--- src/version.c 2010-02-17 15:59:12.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 361,
+ /**/
+
+--
+"Marriage is when a man and woman become as one; the trouble starts
+when they try to decide which one"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.362 b/source/ap/vim/patches/7.2.362
new file mode 100644
index 000000000..2f62cf624
--- /dev/null
+++ b/source/ap/vim/patches/7.2.362
@@ -0,0 +1,95 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.362 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.362 (extra, after 7.2.352)
+Problem: Win64: Vim doesn't work when cross-compiled with MingW libraries.
+Solution: Instead of handling WM_NCCREATE, create wide text area window
+ class if the parent window iw side. (Sergey Khorev)
+Files: src/gui_w32.c, src/gui_w48.c
+
+
+*** ../vim-7.2.361/src/gui_w32.c 2009-12-24 16:11:24.000000000 +0100
+--- src/gui_w32.c 2010-02-17 16:26:58.000000000 +0100
+***************
+*** 1329,1334 ****
+--- 1329,1335 ----
+ WNDCLASS wndclass;
+ #ifdef FEAT_MBYTE
+ const WCHAR szVimWndClassW[] = VIM_CLASSW;
++ const WCHAR szTextAreaClassW[] = L"VimTextArea";
+ WNDCLASSW wndclassw;
+ #endif
+ #ifdef GLOBAL_IME
+***************
+*** 1479,1484 ****
+--- 1480,1507 ----
+ #endif
+
+ /* Create the text area window */
++ #ifdef FEAT_MBYTE
++ if (wide_WindowProc)
++ {
++ if (GetClassInfoW(s_hinst, szTextAreaClassW, &wndclassw) == 0)
++ {
++ wndclassw.style = CS_OWNDC;
++ wndclassw.lpfnWndProc = _TextAreaWndProc;
++ wndclassw.cbClsExtra = 0;
++ wndclassw.cbWndExtra = 0;
++ wndclassw.hInstance = s_hinst;
++ wndclassw.hIcon = NULL;
++ wndclassw.hCursor = LoadCursor(NULL, IDC_ARROW);
++ wndclassw.hbrBackground = NULL;
++ wndclassw.lpszMenuName = NULL;
++ wndclassw.lpszClassName = szTextAreaClassW;
++
++ if (RegisterClassW(&wndclassw) == 0)
++ return FAIL;
++ }
++ }
++ else
++ #endif
+ if (GetClassInfo(s_hinst, szTextAreaClass, &wndclass) == 0)
+ {
+ wndclass.style = CS_OWNDC;
+*** ../vim-7.2.361/src/gui_w48.c 2010-02-03 12:23:16.000000000 +0100
+--- src/gui_w48.c 2010-02-17 16:27:21.000000000 +0100
+***************
+*** 1084,1096 ****
+ case WM_NOTIFY: Handle_WM_Notify(hwnd, (LPNMHDR)lParam);
+ return TRUE;
+ #endif
+- /* Workaround for the problem that MyWindowProc() returns FALSE on 64
+- * bit windows when cross-compiled using Mingw libraries. (Andy
+- * Kittner) */
+- case WM_NCCREATE:
+- MyWindowProc(hwnd, uMsg, wParam, lParam);
+- return TRUE;
+-
+ default:
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ }
+--- 1084,1089 ----
+*** ../vim-7.2.361/src/version.c 2010-02-17 16:23:03.000000000 +0100
+--- src/version.c 2010-02-17 16:30:52.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 362,
+ /**/
+
+--
+"Marriage is the process of finding out what kind of man your wife
+would have preferred"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.363 b/source/ap/vim/patches/7.2.363
new file mode 100644
index 000000000..2447103ba
--- /dev/null
+++ b/source/ap/vim/patches/7.2.363
@@ -0,0 +1,70 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.363
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.363
+Problem: Can't dynamically load Perl 5.10.
+Solution: Add the function Perl_croak_xs_usage. (Sergey Khorev)
+Files: src/if_perl.xs
+
+
+*** ../vim-7.2.362/src/if_perl.xs 2009-11-11 14:45:36.000000000 +0100
+--- src/if_perl.xs 2010-02-17 16:33:16.000000000 +0100
+***************
+*** 93,98 ****
+--- 93,101 ----
+ # define perl_free dll_perl_free
+ # define Perl_get_context dll_Perl_get_context
+ # define Perl_croak dll_Perl_croak
++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
++ # define Perl_croak_xs_usage dll_Perl_croak_xs_usage
++ # endif
+ # ifndef PROTO
+ # define Perl_croak_nocontext dll_Perl_croak_nocontext
+ # define Perl_call_argv dll_Perl_call_argv
+***************
+*** 202,207 ****
+--- 205,213 ----
+ static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**);
+ static void* (*Perl_get_context)(void);
+ static void (*Perl_croak)(pTHX_ const char*, ...);
++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
++ static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const params);
++ #endif
+ static void (*Perl_croak_nocontext)(const char*, ...);
+ static I32 (*Perl_dowantarray)(pTHX);
+ static void (*Perl_free_tmps)(pTHX);
+***************
+*** 306,311 ****
+--- 312,320 ----
+ {"perl_parse", (PERL_PROC*)&perl_parse},
+ {"Perl_get_context", (PERL_PROC*)&Perl_get_context},
+ {"Perl_croak", (PERL_PROC*)&Perl_croak},
++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
++ {"Perl_croak_xs_usage", (PERL_PROC*)&Perl_croak_xs_usage},
++ #endif
+ {"Perl_croak_nocontext", (PERL_PROC*)&Perl_croak_nocontext},
+ {"Perl_dowantarray", (PERL_PROC*)&Perl_dowantarray},
+ {"Perl_free_tmps", (PERL_PROC*)&Perl_free_tmps},
+*** ../vim-7.2.362/src/version.c 2010-02-17 16:31:27.000000000 +0100
+--- src/version.c 2010-02-17 16:35:39.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 363,
+ /**/
+
+--
+If you're sending someone Styrofoam, what do you pack it in?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.364 b/source/ap/vim/patches/7.2.364
new file mode 100644
index 000000000..c3c6e8b63
--- /dev/null
+++ b/source/ap/vim/patches/7.2.364
@@ -0,0 +1,91 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.364 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.364 (extra)
+Problem: Can't build gvimext.dll on Win 7 x64 using MinGW (John Marriott)
+Solution: Check if _MSC_VER is defined. (Andy Kittner)
+Files: src/GvimExt/gvimext.h
+
+
+*** ../vim-7.2.363/src/GvimExt/gvimext.h 2006-04-24 21:23:03.000000000 +0200
+--- src/GvimExt/gvimext.h 2010-02-17 17:20:00.000000000 +0100
+***************
+*** 14,22 ****
+ #if !defined(AFX_STDAFX_H__3389658B_AD83_11D3_9C1E_0090278BBD99__INCLUDED_)
+ #define AFX_STDAFX_H__3389658B_AD83_11D3_9C1E_0090278BBD99__INCLUDED_
+
+! #if _MSC_VER > 1000
+ #pragma once
+! #endif // _MSC_VER > 1000
+
+ // Insert your headers here
+ // #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
+--- 14,22 ----
+ #if !defined(AFX_STDAFX_H__3389658B_AD83_11D3_9C1E_0090278BBD99__INCLUDED_)
+ #define AFX_STDAFX_H__3389658B_AD83_11D3_9C1E_0090278BBD99__INCLUDED_
+
+! #if defined(_MSC_VER) && _MSC_VER > 1000
+ #pragma once
+! #endif
+
+ // Insert your headers here
+ // #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
+***************
+*** 34,40 ****
+ #define INC_OLE2 // WIN32, get ole2 from windows.h
+
+ /* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
+! #if _MSC_VER >= 1400
+ # define _CRT_SECURE_NO_DEPRECATE
+ # define _CRT_NONSTDC_NO_DEPRECATE
+ #endif
+--- 34,40 ----
+ #define INC_OLE2 // WIN32, get ole2 from windows.h
+
+ /* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
+! #if defined(_MSC_VER) && _MSC_VER >= 1400
+ # define _CRT_SECURE_NO_DEPRECATE
+ # define _CRT_NONSTDC_NO_DEPRECATE
+ #endif
+***************
+*** 44,50 ****
+ #include <shlobj.h>
+
+ /* Accommodate old versions of VC that don't have a modern Platform SDK */
+! #if _MSC_VER < 1300
+ # undef UINT_PTR
+ # define UINT_PTR UINT
+ #endif
+--- 44,50 ----
+ #include <shlobj.h>
+
+ /* Accommodate old versions of VC that don't have a modern Platform SDK */
+! #if defined(_MSC_VER) && _MSC_VER < 1300
+ # undef UINT_PTR
+ # define UINT_PTR UINT
+ #endif
+*** ../vim-7.2.363/src/version.c 2010-02-17 16:40:47.000000000 +0100
+--- src/version.c 2010-02-17 17:23:15.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 364,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+245. You use Real Audio to listen to a radio station from a distant
+ city rather than turn on your stereo system.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.365 b/source/ap/vim/patches/7.2.365
new file mode 100644
index 000000000..e48990b92
--- /dev/null
+++ b/source/ap/vim/patches/7.2.365
@@ -0,0 +1,71 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.365 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.365 (extra)
+Problem: MS-Windows with MingW: "File->Save As" does not work. (John
+ Marriott)
+Solution: Correctly fill in structure size. (Andy Kittner)
+Files: src/gui_w48.c
+
+
+*** ../vim-7.2.364/src/gui_w48.c 2010-02-17 16:31:27.000000000 +0100
+--- src/gui_w48.c 2010-02-17 17:30:15.000000000 +0100
+***************
+*** 3345,3351 ****
+ #ifdef OPENFILENAME_SIZE_VERSION_400
+ /* be compatible with Windows NT 4.0 */
+ /* TODO: what to use for OPENFILENAMEW??? */
+! fileStruct.lStructSize = sizeof(OPENFILENAME_SIZE_VERSION_400);
+ #else
+ fileStruct.lStructSize = sizeof(fileStruct);
+ #endif
+--- 3345,3351 ----
+ #ifdef OPENFILENAME_SIZE_VERSION_400
+ /* be compatible with Windows NT 4.0 */
+ /* TODO: what to use for OPENFILENAMEW??? */
+! fileStruct.lStructSize = OPENFILENAME_SIZE_VERSION_400;
+ #else
+ fileStruct.lStructSize = sizeof(fileStruct);
+ #endif
+***************
+*** 3506,3512 ****
+ memset(&fileStruct, 0, sizeof(OPENFILENAME));
+ #ifdef OPENFILENAME_SIZE_VERSION_400
+ /* be compatible with Windows NT 4.0 */
+! fileStruct.lStructSize = sizeof(OPENFILENAME_SIZE_VERSION_400);
+ #else
+ fileStruct.lStructSize = sizeof(fileStruct);
+ #endif
+--- 3506,3512 ----
+ memset(&fileStruct, 0, sizeof(OPENFILENAME));
+ #ifdef OPENFILENAME_SIZE_VERSION_400
+ /* be compatible with Windows NT 4.0 */
+! fileStruct.lStructSize = OPENFILENAME_SIZE_VERSION_400;
+ #else
+ fileStruct.lStructSize = sizeof(fileStruct);
+ #endif
+*** ../vim-7.2.364/src/version.c 2010-02-17 17:24:23.000000000 +0100
+--- src/version.c 2010-02-17 17:31:54.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 365,
+ /**/
+
+
+--
+hundred-and-one symptoms of being an internet addict:
+246. You use up your free 100 hours in less than a week.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.366 b/source/ap/vim/patches/7.2.366
new file mode 100644
index 000000000..952a0f2f2
--- /dev/null
+++ b/source/ap/vim/patches/7.2.366
@@ -0,0 +1,134 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.366
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.366
+Problem: CTRL-B doesn't go back to the first line of the buffer.
+Solution: Avoid an overflow when adding MAXCOL.
+Files: src/move.c
+
+
+*** ../vim-7.2.365/src/move.c 2010-02-03 17:42:59.000000000 +0100
+--- src/move.c 2010-02-17 17:49:34.000000000 +0100
+***************
+*** 1610,1616 ****
+ * Add one line above "lp->lnum". This can be a filler line, a closed fold or
+ * a (wrapped) text line. Uses and sets "lp->fill".
+ * Returns the height of the added line in "lp->height".
+! * Lines above the first one are incredibly high.
+ */
+ static void
+ topline_back(lp)
+--- 1610,1616 ----
+ * Add one line above "lp->lnum". This can be a filler line, a closed fold or
+ * a (wrapped) text line. Uses and sets "lp->fill".
+ * Returns the height of the added line in "lp->height".
+! * Lines above the first one are incredibly high: MAXCOL.
+ */
+ static void
+ topline_back(lp)
+***************
+*** 1942,1948 ****
+ {
+ loff.lnum = curwin->w_topline;
+ topline_back(&loff);
+! if (used + loff.height > curwin->w_height)
+ break;
+ used += loff.height;
+ #ifdef FEAT_DIFF
+--- 1942,1948 ----
+ {
+ loff.lnum = curwin->w_topline;
+ topline_back(&loff);
+! if (loff.height == MAXCOL || used + loff.height > curwin->w_height)
+ break;
+ used += loff.height;
+ #ifdef FEAT_DIFF
+***************
+*** 2021,2027 ****
+
+ /* Add one line above */
+ topline_back(&loff);
+! used += loff.height;
+ if (used > curwin->w_height)
+ break;
+ if (loff.lnum >= curwin->w_botline
+--- 2021,2030 ----
+
+ /* Add one line above */
+ topline_back(&loff);
+! if (loff.height == MAXCOL)
+! used = MAXCOL;
+! else
+! used += loff.height;
+ if (used > curwin->w_height)
+ break;
+ if (loff.lnum >= curwin->w_botline
+***************
+*** 2175,2181 ****
+ if (below > above) /* add a line above the cursor */
+ {
+ topline_back(&loff);
+! used += loff.height;
+ if (used > curwin->w_height)
+ break;
+ above += loff.height;
+--- 2178,2187 ----
+ if (below > above) /* add a line above the cursor */
+ {
+ topline_back(&loff);
+! if (loff.height == MAXCOL)
+! used = MAXCOL;
+! else
+! used += loff.height;
+ if (used > curwin->w_height)
+ break;
+ above += loff.height;
+***************
+*** 2472,2480 ****
+ while (n <= curwin->w_height && loff.lnum >= 1)
+ {
+ topline_back(&loff);
+! n += loff.height;
+ }
+! if (n <= curwin->w_height) /* at begin of file */
+ {
+ curwin->w_topline = 1;
+ #ifdef FEAT_DIFF
+--- 2478,2489 ----
+ while (n <= curwin->w_height && loff.lnum >= 1)
+ {
+ topline_back(&loff);
+! if (loff.height == MAXCOL)
+! n = MAXCOL;
+! else
+! n += loff.height;
+ }
+! if (loff.lnum < 1) /* at begin of file */
+ {
+ curwin->w_topline = 1;
+ #ifdef FEAT_DIFF
+*** ../vim-7.2.365/src/version.c 2010-02-17 17:34:38.000000000 +0100
+--- src/version.c 2010-02-17 18:13:22.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 366,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+247. You use www.switchboard.com instead of dialing 411 and 555-12-12
+ for directory assistance.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.367 b/source/ap/vim/patches/7.2.367
new file mode 100644
index 000000000..6d461c987
--- /dev/null
+++ b/source/ap/vim/patches/7.2.367
@@ -0,0 +1,77 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.367
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.367
+Problem: "xxd -r -p" doesn't work as documented.
+Solution: Skip white space. (James Vega)
+Files: src/xxd/xxd.c
+
+
+*** ../vim-7.2.366/src/xxd/xxd.c 2009-06-16 18:29:37.000000000 +0200
+--- src/xxd/xxd.c 2010-02-17 18:25:11.000000000 +0100
+***************
+*** 231,237 ****
+ fprintf(stderr, " or\n %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname);
+ fprintf(stderr, "Options:\n");
+ fprintf(stderr, " -a toggle autoskip: A single '*' replaces nul-lines. Default off.\n");
+! fprintf(stderr, " -b binary digit dump (incompatible with -p,-i,-r). Default hex.\n");
+ fprintf(stderr, " -c cols format <cols> octets per line. Default 16 (-i: 12, -ps: 30).\n");
+ fprintf(stderr, " -E show characters in EBCDIC. Default ASCII.\n");
+ fprintf(stderr, " -g number of octets per group in normal output. Default 2.\n");
+--- 231,237 ----
+ fprintf(stderr, " or\n %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname);
+ fprintf(stderr, "Options:\n");
+ fprintf(stderr, " -a toggle autoskip: A single '*' replaces nul-lines. Default off.\n");
+! fprintf(stderr, " -b binary digit dump (incompatible with -ps,-i,-r). Default hex.\n");
+ fprintf(stderr, " -c cols format <cols> octets per line. Default 16 (-i: 12, -ps: 30).\n");
+ fprintf(stderr, " -E show characters in EBCDIC. Default ASCII.\n");
+ fprintf(stderr, " -g number of octets per group in normal output. Default 2.\n");
+***************
+*** 276,286 ****
+ if (c == '\r') /* Doze style input file? */
+ continue;
+
+! #if 0 /* this doesn't work when there is normal text after the hex codes in
+! the last line that looks like hex */
+! if (c == ' ' || c == '\n' || c == '\t') /* allow multiple spaces */
+ continue;
+- #endif
+
+ n3 = n2;
+ n2 = n1;
+--- 276,286 ----
+ if (c == '\r') /* Doze style input file? */
+ continue;
+
+! /* Allow multiple spaces. This doesn't work when there is normal text
+! * after the hex codes in the last line that looks like hex, thus only
+! * use it for PostScript format. */
+! if (hextype == HEX_POSTSCRIPT && (c == ' ' || c == '\n' || c == '\t'))
+ continue;
+
+ n3 = n2;
+ n2 = n1;
+*** ../vim-7.2.366/src/version.c 2010-02-17 18:20:23.000000000 +0100
+--- src/version.c 2010-02-17 18:26:35.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 367,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+248. You sign your letters with your e-mail address instead of your name.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.368 b/source/ap/vim/patches/7.2.368
new file mode 100644
index 000000000..43107699b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.368
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.368
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.368 (after 7.2.361)
+Problem: Ruby interface: Appending line doesn't work. (Michael Henry)
+Solution: Reverse check for NULL line. (James Vega)
+Files: src/if_ruby.c
+
+
+*** ../vim-7.2.367/src/if_ruby.c 2010-02-17 16:23:03.000000000 +0100
+--- src/if_ruby.c 2010-02-18 15:47:42.000000000 +0100
+***************
+*** 869,875 ****
+ long n = NUM2LONG(num);
+ aco_save_T aco;
+
+! if (line != NULL) {
+ rb_raise(rb_eIndexError, "NULL line");
+ }
+ else if (n >= 0 && n <= buf->b_ml.ml_line_count)
+--- 869,875 ----
+ long n = NUM2LONG(num);
+ aco_save_T aco;
+
+! if (line == NULL) {
+ rb_raise(rb_eIndexError, "NULL line");
+ }
+ else if (n >= 0 && n <= buf->b_ml.ml_line_count)
+*** ../vim-7.2.367/src/version.c 2010-02-17 18:28:06.000000000 +0100
+--- src/version.c 2010-02-18 15:48:09.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 368,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+251. You've never seen your closest friends who usually live WAY too far away.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.369 b/source/ap/vim/patches/7.2.369
new file mode 100644
index 000000000..adcab24e9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.369
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.369
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.369
+Problem: Error message is not easy to understand.
+Solution: Add quotes. (SungHyun Nam)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.368/src/ex_cmds2.c 2010-02-03 15:14:15.000000000 +0100
+--- src/ex_cmds2.c 2010-02-18 21:16:20.000000000 +0100
+***************
+*** 1092,1098 ****
+ set_vim_var_nr(VV_PROFILING, 1L);
+ }
+ else if (do_profiling == PROF_NONE)
+! EMSG(_("E750: First use :profile start <fname>"));
+ else if (STRCMP(eap->arg, "pause") == 0)
+ {
+ if (do_profiling == PROF_YES)
+--- 1092,1098 ----
+ set_vim_var_nr(VV_PROFILING, 1L);
+ }
+ else if (do_profiling == PROF_NONE)
+! EMSG(_("E750: First use \":profile start {fname}\""));
+ else if (STRCMP(eap->arg, "pause") == 0)
+ {
+ if (do_profiling == PROF_YES)
+*** ../vim-7.2.368/src/version.c 2010-02-18 15:51:25.000000000 +0100
+--- src/version.c 2010-02-24 13:58:28.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 369,
+ /**/
+
+--
+MAN: You don't frighten us, English pig-dog! Go and boil your bottoms,
+ son of a silly person. I blow my nose on you, so-called Arthur-king,
+ you and your silly English K...kaniggets.
+ He puts hands to his ears and blows a raspberry.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.370 b/source/ap/vim/patches/7.2.370
new file mode 100644
index 000000000..3e8457e0c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.370
@@ -0,0 +1,156 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.370
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.370 (after 7.2.356)
+Problem: A redraw may cause folds to be closed.
+Solution: Revert part of the previous patch. Add a test. (Lech Lorens)
+Files: src/diff.c, src/fold.c, src/option.c, src/testdir/test45.in,
+ src/testdir/test45.ok
+
+
+*** ../vim-7.2.369/src/diff.c 2009-07-22 16:22:33.000000000 +0200
+--- src/diff.c 2010-02-24 14:31:12.000000000 +0100
+***************
+*** 1117,1142 ****
+ win_T *wp;
+ int addbuf; /* Add buffer to diff. */
+ {
+ wp->w_p_diff = TRUE;
+ wp->w_p_scb = TRUE;
+ wp->w_p_wrap = FALSE;
+ # ifdef FEAT_FOLDING
+! {
+! win_T *old_curwin = curwin;
+!
+! curwin = wp;
+! curbuf = curwin->w_buffer;
+! set_string_option_direct((char_u *)"fdm", -1, (char_u *)"diff",
+ OPT_LOCAL|OPT_FREE, 0);
+! curwin = old_curwin;
+! curbuf = curwin->w_buffer;
+! wp->w_p_fdc = diff_foldcolumn;
+! wp->w_p_fen = TRUE;
+! wp->w_p_fdl = 0;
+! foldUpdateAll(wp);
+! /* make sure topline is not halfway a fold */
+! changed_window_setting_win(wp);
+! }
+ # endif
+ #ifdef FEAT_SCROLLBIND
+ if (vim_strchr(p_sbo, 'h') == NULL)
+--- 1117,1147 ----
+ win_T *wp;
+ int addbuf; /* Add buffer to diff. */
+ {
++ # ifdef FEAT_FOLDING
++ win_T *old_curwin = curwin;
++
++ /* close the manually opened folds */
++ curwin = wp;
++ newFoldLevel();
++ curwin = old_curwin;
++ # endif
++
+ wp->w_p_diff = TRUE;
+ wp->w_p_scb = TRUE;
+ wp->w_p_wrap = FALSE;
+ # ifdef FEAT_FOLDING
+! curwin = wp;
+! curbuf = curwin->w_buffer;
+! set_string_option_direct((char_u *)"fdm", -1, (char_u *)"diff",
+ OPT_LOCAL|OPT_FREE, 0);
+! curwin = old_curwin;
+! curbuf = curwin->w_buffer;
+! wp->w_p_fdc = diff_foldcolumn;
+! wp->w_p_fen = TRUE;
+! wp->w_p_fdl = 0;
+! foldUpdateAll(wp);
+! /* make sure topline is not halfway a fold */
+! changed_window_setting_win(wp);
+ # endif
+ #ifdef FEAT_SCROLLBIND
+ if (vim_strchr(p_sbo, 'h') == NULL)
+*** ../vim-7.2.369/src/fold.c 2010-02-03 18:14:41.000000000 +0100
+--- src/fold.c 2010-02-24 13:09:04.000000000 +0100
+***************
+*** 854,865 ****
+ && fp->fd_top < bot)
+ {
+ fp->fd_small = MAYBE;
+-
+- /* Not sure if this is the right place to reset fd_flags (suggested by
+- * Lech Lorens). */
+- if (wp->w_foldinvalid)
+- fp->fd_flags = FD_LEVEL;
+-
+ ++fp;
+ }
+
+--- 854,859 ----
+*** ../vim-7.2.369/src/option.c 2010-02-11 17:02:04.000000000 +0100
+--- src/option.c 2010-02-24 13:09:44.000000000 +0100
+***************
+*** 6586,6592 ****
+--- 6586,6596 ----
+ || *curwin->w_p_fdm == NUL)
+ errmsg = e_invarg;
+ else
++ {
+ foldUpdateAll(curwin);
++ if (foldmethodIsDiff(curwin))
++ newFoldLevel();
++ }
+ }
+ # ifdef FEAT_EVAL
+ /* 'foldexpr' */
+*** ../vim-7.2.369/src/testdir/test45.in 2009-11-03 14:46:35.000000000 +0100
+--- src/testdir/test45.in 2010-02-24 13:02:39.000000000 +0100
+***************
+*** 36,41 ****
+--- 36,43 ----
+ k:call append("$", getline("."))
+ jAcommentstart Acommentend:set fdl=1
+ 3j:call append("$", getline("."))
++ :set fdl=0
++ zO j:call append("$", getline("."))
+ :" test expression folding
+ :fun Flvl()
+ let l = getline(v:lnum)
+*** ../vim-7.2.369/src/testdir/test45.ok 2009-11-03 14:46:35.000000000 +0100
+--- src/testdir/test45.ok 2010-02-24 12:58:55.000000000 +0100
+***************
+*** 11,16 ****
+--- 11,17 ----
+ folding 9 ii
+ 3 cc
+ 7 gg
++ 8 hh
+ expr 2
+ 1
+ 2
+*** ../vim-7.2.369/src/version.c 2010-02-24 13:59:09.000000000 +0100
+--- src/version.c 2010-02-24 14:28:20.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 370,
+ /**/
+
+--
+MAN: Fetchez la vache!
+GUARD: Quoi?
+MAN: Fetchez la vache!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.371 b/source/ap/vim/patches/7.2.371
new file mode 100644
index 000000000..db875b624
--- /dev/null
+++ b/source/ap/vim/patches/7.2.371
@@ -0,0 +1,322 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.371
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.371
+Problem: Build problems on Tandem NonStop.
+Solution: A few changes to #ifdefs (Joachim Schmitz)
+Files: src/auto/configure, src/configure.in, src/config.h.in, src/vim.h,
+ src/if_cscope.c, src/osdef1.h.in, src/tag.c
+
+
+*** ../vim-7.2.370/src/auto/configure 2010-02-17 16:23:03.000000000 +0100
+--- src/auto/configure 2010-02-24 14:27:00.000000000 +0100
+***************
+*** 14038,14046 ****
+
+
+
+!
+!
+! for ac_func in bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+ memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+--- 14038,14044 ----
+
+
+
+! for ac_func in bcmp fchdir fchown fsync getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+ memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+***************
+*** 14146,14151 ****
+--- 14144,14281 ----
+ fi
+ done
+
++ { $as_echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5
++ $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
++ if test "${ac_cv_sys_largefile_source+set}" = set; then
++ $as_echo_n "(cached) " >&6
++ else
++ while :; do
++ cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h. */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h. */
++ #include <sys/types.h> /* for off_t */
++ #include <stdio.h>
++ int
++ main ()
++ {
++ int (*fp) (FILE *, off_t, int) = fseeko;
++ return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
++ ;
++ return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext conftest$ac_exeext
++ if { (ac_try="$ac_link"
++ case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++ (eval "$ac_link") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext && {
++ test "$cross_compiling" = yes ||
++ $as_test_x conftest$ac_exeext
++ }; then
++ ac_cv_sys_largefile_source=no; break
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++
++ fi
++
++ rm -rf conftest.dSYM
++ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext 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. */
++ #define _LARGEFILE_SOURCE 1
++ #include <sys/types.h> /* for off_t */
++ #include <stdio.h>
++ int
++ main ()
++ {
++ int (*fp) (FILE *, off_t, int) = fseeko;
++ return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
++ ;
++ return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext conftest$ac_exeext
++ if { (ac_try="$ac_link"
++ case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++ (eval "$ac_link") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext && {
++ test "$cross_compiling" = yes ||
++ $as_test_x conftest$ac_exeext
++ }; then
++ ac_cv_sys_largefile_source=1; break
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++
++ fi
++
++ rm -rf conftest.dSYM
++ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext conftest.$ac_ext
++ ac_cv_sys_largefile_source=unknown
++ break
++ done
++ fi
++ { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5
++ $as_echo "$ac_cv_sys_largefile_source" >&6; }
++ case $ac_cv_sys_largefile_source in #(
++ no | unknown) ;;
++ *)
++ cat >>confdefs.h <<_ACEOF
++ #define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
++ _ACEOF
++ ;;
++ esac
++ rm -rf conftest*
++
++ # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
++ # in glibc 2.1.3, but that breaks too many other things.
++ # If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
++ if test $ac_cv_sys_largefile_source != unknown; then
++
++ cat >>confdefs.h <<\_ACEOF
++ #define HAVE_FSEEKO 1
++ _ACEOF
++
++ fi
++
+
+ { $as_echo "$as_me:$LINENO: checking for st_blksize" >&5
+ $as_echo_n "checking for st_blksize... " >&6; }
+*** ../vim-7.2.370/src/configure.in 2010-02-17 16:23:03.000000000 +0100
+--- src/configure.in 2010-02-24 14:18:49.000000000 +0100
+***************
+*** 2642,2655 ****
+ AC_DEFINE(BAD_GETCWD)
+ fi
+
+! dnl Check for functions in one big call, to reduce the size of configure
+! AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+ memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
+ usleep utime utimes)
+
+ dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
+ AC_MSG_CHECKING(for st_blksize)
+--- 2642,2657 ----
+ AC_DEFINE(BAD_GETCWD)
+ fi
+
+! dnl Check for functions in one big call, to reduce the size of configure.
+! dnl Can only be used for functions that do not require any include.
+! AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+ memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
+ usleep utime utimes)
++ AC_FUNC_FSEEKO
+
+ dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
+ AC_MSG_CHECKING(for st_blksize)
+*** ../vim-7.2.370/src/config.h.in 2009-11-17 17:13:03.000000000 +0100
+--- src/config.h.in 2010-02-24 14:20:26.000000000 +0100
+***************
+*** 144,150 ****
+ #undef HAVE_FCHOWN
+ #undef HAVE_FSEEKO
+ #undef HAVE_FSYNC
+- #undef HAVE_FTELLO
+ #undef HAVE_GETCWD
+ #undef HAVE_GETPSEUDOTTY
+ #undef HAVE_GETPWNAM
+--- 144,149 ----
+*** ../vim-7.2.370/src/vim.h 2010-02-03 15:14:15.000000000 +0100
+--- src/vim.h 2010-02-24 14:08:14.000000000 +0100
+***************
+*** 52,58 ****
+
+ /* user ID of root is usually zero, but not for everybody */
+ #ifdef __TANDEM
+! # define _TANDEM_SOURCE
+ # include <floss.h>
+ # define ROOT_UID 65535
+ #else
+--- 52,60 ----
+
+ /* user ID of root is usually zero, but not for everybody */
+ #ifdef __TANDEM
+! # ifndef _TANDEM_SOURCE
+! # define _TANDEM_SOURCE
+! # endif
+ # include <floss.h>
+ # define ROOT_UID 65535
+ #else
+*** ../vim-7.2.370/src/if_cscope.c 2010-01-19 14:59:14.000000000 +0100
+--- src/if_cscope.c 2010-02-24 14:10:21.000000000 +0100
+***************
+*** 2278,2284 ****
+--- 2278,2288 ----
+ /* Use sigaction() to limit the waiting time to two seconds. */
+ sigemptyset(&sa.sa_mask);
+ sa.sa_handler = sig_handler;
++ # ifdef SA_NODEFER
+ sa.sa_flags = SA_NODEFER;
++ # else
++ sa.sa_flags = 0;
++ # endif
+ sigaction(SIGALRM, &sa, &old);
+ alarm(2); /* 2 sec timeout */
+
+*** ../vim-7.2.370/src/osdef1.h.in 2007-02-27 16:47:59.000000000 +0100
+--- src/osdef1.h.in 2010-02-24 14:20:50.000000000 +0100
+***************
+*** 25,31 ****
+ extern int fseeko __ARGS((FILE *, off_t, int));
+ #endif
+ extern long ftell __ARGS((FILE *));
+! #ifdef HAVE_FTELLO
+ extern off_t ftello __ARGS((FILE *));
+ #endif
+ extern void rewind __ARGS((FILE *));
+--- 25,31 ----
+ extern int fseeko __ARGS((FILE *, off_t, int));
+ #endif
+ extern long ftell __ARGS((FILE *));
+! #ifdef HAVE_FSEEKO
+ extern off_t ftello __ARGS((FILE *));
+ #endif
+ extern void rewind __ARGS((FILE *));
+*** ../vim-7.2.370/src/tag.c 2009-05-17 13:30:58.000000000 +0200
+--- src/tag.c 2010-02-24 14:20:12.000000000 +0100
+***************
+*** 90,97 ****
+ /*
+ * We use ftello() here, if available. It returns off_t instead of long,
+ * which helps if long is 32 bit and off_t is 64 bit.
+ */
+! #ifdef HAVE_FTELLO
+ # define ftell ftello
+ #endif
+
+--- 90,98 ----
+ /*
+ * We use ftello() here, if available. It returns off_t instead of long,
+ * which helps if long is 32 bit and off_t is 64 bit.
++ * We assume that when fseeko() is available then ftello() is too.
+ */
+! #ifdef HAVE_FSEEKO
+ # define ftell ftello
+ #endif
+
+*** ../vim-7.2.370/src/version.c 2010-02-24 14:34:10.000000000 +0100
+--- src/version.c 2010-02-24 14:45:37.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 371,
+ /**/
+
+--
+ A cow comes flying over the battlements, lowing aggressively. The cow
+ lands on GALAHAD'S PAGE, squashing him completely.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.372 b/source/ap/vim/patches/7.2.372
new file mode 100644
index 000000000..064893c81
--- /dev/null
+++ b/source/ap/vim/patches/7.2.372
@@ -0,0 +1,303 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.372 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.372 (extra)
+Problem: Cross-compiling GvimExt and xxd doesn't work.
+Solution: Change the build files. (Markus Heidelberg)
+Files: src/INSTALLpc.txt, src/GvimExt/Make_ming.mak, src/Make_cyg.mak,
+ src/Make_ming.mak, src/xxd/Make_cyg.mak
+
+
+*** ../vim-7.2.371/src/INSTALLpc.txt 2008-07-13 19:20:53.000000000 +0200
+--- src/INSTALLpc.txt 2010-01-19 12:37:03.000000000 +0100
+***************
+*** 215,222 ****
+
+ You should not need to do *any* editing of any files to get vim compiled this
+ way. If, for some reason, you want the console-mode-only version of vim (this
+! is NOT recommended on Win32, especially on '95/'98!!!), you need only change
+! the 'gvim.exe' to 'vim.exe' in the 'make' commands given above.
+
+ If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX'
+ (also free!) and compress the file (typical compression is 50%). UPX can be
+--- 215,223 ----
+
+ You should not need to do *any* editing of any files to get vim compiled this
+ way. If, for some reason, you want the console-mode-only version of vim (this
+! is NOT recommended on Win32, especially on '95/'98!!!), you can use:
+!
+! make -f Make_ming.mak GUI=no vim.exe
+
+ If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX'
+ (also free!) and compress the file (typical compression is 50%). UPX can be
+***************
+*** 240,246 ****
+ The Cygnus one many not fully work yet.
+ With Cygnus gcc you can use the Unix Makefile instead (you need to get the
+ Unix archive then). Then you get a Cygwin application (feels like Vim is
+! runnin on Unix), while with Make_cyg.mak you get a Windows application (like
+ with the other makefiles).
+
+
+--- 241,247 ----
+ The Cygnus one many not fully work yet.
+ With Cygnus gcc you can use the Unix Makefile instead (you need to get the
+ Unix archive then). Then you get a Cygwin application (feels like Vim is
+! running on Unix), while with Make_cyg.mak you get a Windows application (like
+ with the other makefiles).
+
+
+***************
+*** 259,268 ****
+--- 260,272 ----
+ If you like, you can compile the 'mingw' Win32 version from the comfort of
+ your Linux (or other unix) box. To do this, you need to follow a few steps:
+ 1) Install the mingw32 cross-compiler. See
++ http://www.mingw.org/wiki/LinuxCrossMinGW
+ http://www.libsdl.org/extras/win32/cross/README.txt
+ 2) Get and unpack both the Unix sources and the extra archive
+ 3) in 'Make_ming.mak', set 'CROSS' to 'yes' instead of 'no'.
+ Make further changes to 'Make_ming.mak' as you wish.
++ If your cross-compiler prefix differs from the predefined value,
++ set 'CROSS_COMPILE' corresponding.
+ 4) make -f Make_ming.mak gvim.exe
+
+ Now you have created the Windows binary from your Linux box! Have fun...
+*** ../vim-7.2.371/src/GvimExt/Make_ming.mak 2005-01-09 22:15:44.000000000 +0100
+--- src/GvimExt/Make_ming.mak 2010-02-24 14:56:37.000000000 +0100
+***************
+*** 20,36 ****
+ ifeq ($(CROSS),yes)
+ DEL = rm
+ ifeq ($(MINGWOLD),yes)
+- CXX = i586-mingw32msvc-g++
+ CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks
+- WINDRES = i586-mingw32msvc-windres
+ else
+- CXX = i386-mingw32msvc-g++
+ CXXFLAGS := -O2 -mno-cygwin
+- WINDRES = i386-mingw32msvc-windres
+ endif
+ else
+- CXX := g++
+- WINDRES := windres
+ CXXFLAGS := -O2 -mno-cygwin
+ ifneq (sh.exe, $(SHELL))
+ DEL = rm
+--- 20,30 ----
+***************
+*** 38,43 ****
+--- 32,39 ----
+ DEL = del
+ endif
+ endif
++ CXX := $(CROSS_COMPILE)g++
++ WINDRES := $(CROSS_COMPILE)windres
+ LIBS := -luuid
+ RES := gvimext.res
+ DEFFILE = gvimext_ming.def
+*** ../vim-7.2.371/src/Make_cyg.mak 2009-09-11 12:48:56.000000000 +0200
+--- src/Make_cyg.mak 2010-02-24 14:59:02.000000000 +0100
+***************
+*** 1,6 ****
+ #
+ # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp. Last Change: 2007 Sep 29
+ #
+ # Also read INSTALLpc.txt!
+ #
+--- 1,6 ----
+ #
+ # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp. Last Change: 2010 Feb 24
+ #
+ # Also read INSTALLpc.txt!
+ #
+***************
+*** 32,40 ****
+ # OLE no or yes: set to yes to make OLE gvim (no)
+ # DEBUG no or yes: set to yes if you wish a DEBUGging build (no)
+ # CPUNR No longer supported, use ARCH.
+! # ARCH i386 through pentium4: select -march argument to compile with (i386)
+ # USEDLL no or yes: set to yes to use the Runtime library DLL (no)
+ # For USEDLL=yes the cygwin1.dll is required to run Vim.
+ # POSTSCRIPT no or yes: set to yes for PostScript printing (no)
+ # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG)
+ # WINVER Lowest Win32 version to support. (0x0400)
+--- 32,43 ----
+ # OLE no or yes: set to yes to make OLE gvim (no)
+ # DEBUG no or yes: set to yes if you wish a DEBUGging build (no)
+ # CPUNR No longer supported, use ARCH.
+! # ARCH i386 through pentium4: select -march argument to compile with
+! # (i386)
+ # USEDLL no or yes: set to yes to use the Runtime library DLL (no)
+ # For USEDLL=yes the cygwin1.dll is required to run Vim.
++ # "no" does not work with latest version of Cygwin, use
++ # Make_ming.mak instead. Or set CC to gcc-3.
+ # POSTSCRIPT no or yes: set to yes for PostScript printing (no)
+ # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG)
+ # WINVER Lowest Win32 version to support. (0x0400)
+***************
+*** 99,104 ****
+--- 102,108 ----
+ INCLUDES = -march=$(ARCH) -Iproto
+
+ #>>>>> name of the compiler and linker, name of lib directory
++ CROSS_COMPILE =
+ CC = gcc
+ RC = windres
+
+***************
+*** 467,476 ****
+ $(CC) $(CFLAGS) -o $(EXE) $(OBJ) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)
+
+ xxd/xxd.exe: xxd/xxd.c
+! $(MAKE) -C xxd -f Make_cyg.mak USEDLL=$(USEDLL)
+
+ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+! $(MAKE) -C GvimExt -f Make_ming.mak
+
+ vimrun.exe: vimrun.c
+ $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS)
+--- 471,480 ----
+ $(CC) $(CFLAGS) -o $(EXE) $(OBJ) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)
+
+ xxd/xxd.exe: xxd/xxd.c
+! $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL)
+
+ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+! $(MAKE) -C GvimExt -f Make_ming.mak CROSS_COMPILE=$(CROSS_COMPILE)
+
+ vimrun.exe: vimrun.c
+ $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS)
+*** ../vim-7.2.371/src/Make_ming.mak 2009-09-11 12:48:56.000000000 +0200
+--- src/Make_ming.mak 2010-02-24 15:01:31.000000000 +0100
+***************
+*** 241,255 ****
+ DEFINES=-DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \
+ -DHAVE_PATHDEF -DFEAT_$(FEATURES)
+ ifeq ($(CROSS),yes)
+! # cross-compiler:
+! CC = i586-pc-mingw32msvc-gcc
+ DEL = rm
+ MKDIR = mkdir -p
+! WINDRES = i586-pc-mingw32msvc-windres
+ else
+ # normal (Windows) compilation:
+- CC = gcc
+ ifneq (sh.exe, $(SHELL))
+ DEL = rm
+ MKDIR = mkdir -p
+ DIRSLASH = /
+--- 241,255 ----
+ DEFINES=-DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \
+ -DHAVE_PATHDEF -DFEAT_$(FEATURES)
+ ifeq ($(CROSS),yes)
+! # cross-compiler prefix:
+! CROSS_COMPILE = i586-pc-mingw32msvc-
+ DEL = rm
+ MKDIR = mkdir -p
+! DIRSLASH = /
+ else
+ # normal (Windows) compilation:
+ ifneq (sh.exe, $(SHELL))
++ CROSS_COMPILE =
+ DEL = rm
+ MKDIR = mkdir -p
+ DIRSLASH = /
+***************
+*** 258,265 ****
+ MKDIR = mkdir
+ DIRSLASH = \\
+ endif
+- WINDRES = windres
+ endif
+
+ #>>>>> end of choices
+ ###########################################################################
+--- 258,266 ----
+ MKDIR = mkdir
+ DIRSLASH = \\
+ endif
+ endif
++ CC := $(CROSS_COMPILE)gcc
++ WINDRES := $(CROSS_COMPILE)windres
+
+ #>>>>> end of choices
+ ###########################################################################
+***************
+*** 549,558 ****
+ upx vim.exe
+
+ xxd/xxd.exe: xxd/xxd.c
+! $(MAKE) -C xxd -f Make_cyg.mak
+
+ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+ $(MAKE) -C GvimExt -f Make_ming.mak
+
+ clean:
+ -$(DEL) $(OUTDIR)$(DIRSLASH)*.o
+--- 550,560 ----
+ upx vim.exe
+
+ xxd/xxd.exe: xxd/xxd.c
+! $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC)
+
+ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+ $(MAKE) -C GvimExt -f Make_ming.mak
++ $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE)
+
+ clean:
+ -$(DEL) $(OUTDIR)$(DIRSLASH)*.o
+*** ../vim-7.2.371/src/xxd/Make_cyg.mak 2004-06-13 17:48:52.000000000 +0200
+--- src/xxd/Make_cyg.mak 2010-02-24 15:05:24.000000000 +0100
+***************
+*** 12,17 ****
+--- 12,18 ----
+ LIBS =
+ endif
+
++ CC = gcc
+ CFLAGS = -O2 -Wall -DWIN32 $(DEFINES)
+
+ ifneq (sh.exe, $(SHELL))
+***************
+*** 21,27 ****
+ endif
+
+ xxd.exe: xxd.c
+! gcc $(CFLAGS) -s -o xxd.exe xxd.c $(LIBS)
+
+ clean:
+ -$(DEL) xxd.exe
+--- 22,28 ----
+ endif
+
+ xxd.exe: xxd.c
+! $(CC) $(CFLAGS) -s -o xxd.exe xxd.c $(LIBS)
+
+ clean:
+ -$(DEL) xxd.exe
+*** ../vim-7.2.371/src/version.c 2010-02-24 14:46:58.000000000 +0100
+--- src/version.c 2010-02-24 15:05:48.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 372,
+ /**/
+
+--
+Ten bugs in the hand is better than one as yet undetected.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.373 b/source/ap/vim/patches/7.2.373
new file mode 100644
index 000000000..1bb4773d9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.373
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.373
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.373
+Problem: Gcc 4.5 adds more error messages. (Chris Indy)
+Solution: Update default 'errorformat'.
+Files: src/option.h
+
+
+*** ../vim-7.2.372/src/option.h 2008-06-24 23:59:49.000000000 +0200
+--- src/option.h 2010-02-24 15:20:03.000000000 +0100
+***************
+*** 33,39 ****
+ # ifdef EBCDIC
+ #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # else
+! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # endif
+ # endif
+ # endif
+--- 33,39 ----
+ # ifdef EBCDIC
+ #define DFLT_EFM "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # else
+! #define DFLT_EFM "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+ # endif
+ # endif
+ # endif
+*** ../vim-7.2.372/src/version.c 2010-02-24 15:07:45.000000000 +0100
+--- src/version.c 2010-02-24 15:24:43.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 373,
+ /**/
+
+--
+ARTHUR: Right! Knights! Forward!
+ ARTHUR leads a charge toward the castle. Various shots of them battling on,
+ despite being hit by a variety of farm animals.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.374 b/source/ap/vim/patches/7.2.374
new file mode 100644
index 000000000..50d3e74d2
--- /dev/null
+++ b/source/ap/vim/patches/7.2.374
@@ -0,0 +1,168 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.374
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.374
+Problem: Ruby eval() doesn't understand Vim types.
+Solution: Add the vim_to_ruby() function. (George Gensure)
+Files: src/eval.c, src/if_ruby.c
+
+
+*** ../vim-7.2.373/src/eval.c 2010-01-19 15:51:29.000000000 +0100
+--- src/eval.c 2010-02-24 15:36:40.000000000 +0100
+***************
+*** 5872,5878 ****
+ return item1 == NULL && item2 == NULL;
+ }
+
+! #if defined(FEAT_PYTHON) || defined(FEAT_MZSCHEME) || defined(PROTO)
+ /*
+ * Return the dictitem that an entry in a hashtable points to.
+ */
+--- 5872,5879 ----
+ return item1 == NULL && item2 == NULL;
+ }
+
+! #if defined(FEAT_RUBY) || defined(FEAT_PYTHON) || defined(FEAT_MZSCHEME) \
+! || defined(PROTO)
+ /*
+ * Return the dictitem that an entry in a hashtable points to.
+ */
+*** ../vim-7.2.373/src/if_ruby.c 2010-02-18 15:51:25.000000000 +0100
+--- src/if_ruby.c 2010-02-24 15:45:15.000000000 +0100
+***************
+*** 660,679 ****
+ return Qnil;
+ }
+
+ static VALUE vim_evaluate(VALUE self UNUSED, VALUE str)
+ {
+ #ifdef FEAT_EVAL
+! char_u *value = eval_to_string((char_u *)StringValuePtr(str), NULL, TRUE);
+
+! if (value != NULL)
+ {
+! VALUE val = rb_str_new2((char *)value);
+! vim_free(value);
+! return val;
+ }
+! else
+ #endif
+- return Qnil;
+ }
+
+ static VALUE buffer_new(buf_T *buf)
+--- 660,747 ----
+ return Qnil;
+ }
+
++ #ifdef FEAT_EVAL
++ static VALUE vim_to_ruby(typval_T *tv)
++ {
++ VALUE result = Qnil;
++
++ if (tv->v_type == VAR_STRING)
++ {
++ result = rb_str_new2((char *)tv->vval.v_string);
++ }
++ else if (tv->v_type == VAR_NUMBER)
++ {
++ result = INT2NUM(tv->vval.v_number);
++ }
++ # ifdef FEAT_FLOAT
++ else if (tv->v_type == VAR_FLOAT)
++ {
++ result = rb_float_new(tv->vval.v_float);
++ }
++ # endif
++ else if (tv->v_type == VAR_LIST)
++ {
++ list_T *list = tv->vval.v_list;
++ listitem_T *curr;
++
++ result = rb_ary_new();
++
++ if (list != NULL)
++ {
++ for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
++ {
++ rb_ary_push(result, vim_to_ruby(&curr->li_tv));
++ }
++ }
++ }
++ else if (tv->v_type == VAR_DICT)
++ {
++ result = rb_hash_new();
++
++ if (tv->vval.v_dict != NULL)
++ {
++ hashtab_T *ht = &tv->vval.v_dict->dv_hashtab;
++ long_u todo = ht->ht_used;
++ hashitem_T *hi;
++ dictitem_T *di;
++
++ for (hi = ht->ht_array; todo > 0; ++hi)
++ {
++ if (!HASHITEM_EMPTY(hi))
++ {
++ --todo;
++
++ di = dict_lookup(hi);
++ rb_hash_aset(result, rb_str_new2((char *)hi->hi_key),
++ vim_to_ruby(&di->di_tv));
++ }
++ }
++ }
++ } /* else return Qnil; */
++
++ return result;
++ }
++ #endif
++
+ static VALUE vim_evaluate(VALUE self UNUSED, VALUE str)
+ {
+ #ifdef FEAT_EVAL
+! typval_T *tv;
+! VALUE result;
+
+! tv = eval_expr((char_u *)StringValuePtr(str), NULL);
+! if (tv == NULL)
+ {
+! return Qnil;
+ }
+! result = vim_to_ruby(tv);
+!
+! free_tv(tv);
+!
+! return result;
+! #else
+! return Qnil;
+ #endif
+ }
+
+ static VALUE buffer_new(buf_T *buf)
+*** ../vim-7.2.373/src/version.c 2010-02-24 15:25:13.000000000 +0100
+--- src/version.c 2010-02-24 15:46:57.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 374,
+ /**/
+
+--
+ARTHUR: (as the MAN next to him is squashed by a sheep) Knights! Run away!
+ Midst echoing shouts of "run away" the KNIGHTS retreat to cover with the odd
+ cow or goose hitting them still. The KNIGHTS crouch down under cover.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.375 b/source/ap/vim/patches/7.2.375
new file mode 100644
index 000000000..3374cd1b8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.375
@@ -0,0 +1,64 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.375
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.375
+Problem: ml_get errors when using ":bprevious" in a BufEnter autocmd.
+ (Dominique Pelle)
+Solution: Clear w_valid when entering another buffer.
+Files: src/buffer.c
+
+
+*** ../vim-7.2.374/src/buffer.c 2010-01-19 14:59:14.000000000 +0100
+--- src/buffer.c 2010-02-24 16:29:22.000000000 +0100
+***************
+*** 115,121 ****
+ #endif
+
+ /* mark cursor position as being invalid */
+! changed_line_abv_curs();
+
+ if (curbuf->b_ffname != NULL
+ #ifdef FEAT_NETBEANS_INTG
+--- 115,121 ----
+ #endif
+
+ /* mark cursor position as being invalid */
+! curwin->w_valid = 0;
+
+ if (curbuf->b_ffname != NULL
+ #ifdef FEAT_NETBEANS_INTG
+***************
+*** 1399,1404 ****
+--- 1399,1407 ----
+ curwin->w_topline_was_set = FALSE;
+ #endif
+
++ /* mark cursor position as being invalid */
++ curwin->w_valid = 0;
++
+ /* Make sure the buffer is loaded. */
+ if (curbuf->b_ml.ml_mfp == NULL) /* need to load the file */
+ {
+*** ../vim-7.2.374/src/version.c 2010-02-24 15:47:58.000000000 +0100
+--- src/version.c 2010-02-24 16:30:03.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 375,
+ /**/
+
+--
+Error:015 - Unable to exit Windows. Try the door.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.376 b/source/ap/vim/patches/7.2.376
new file mode 100644
index 000000000..718875b26
--- /dev/null
+++ b/source/ap/vim/patches/7.2.376
@@ -0,0 +1,50 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.376
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.376
+Problem: ml_get error when using SiSU syntax. (Nathan Thomas)
+Solution: If the match ends below the last line move it to the end of the
+ last line.
+Files: src/syntax.c
+
+
+*** ../vim-7.2.375/src/syntax.c 2010-01-19 14:59:14.000000000 +0100
+--- src/syntax.c 2010-02-24 17:14:13.000000000 +0100
+***************
+*** 3086,3091 ****
+--- 3086,3097 ----
+ col = regmatch->startpos[0].col;
+ off = spp->sp_offsets[idx];
+ }
++ if (result->lnum > syn_buf->b_ml.ml_line_count)
++ {
++ /* a "\n" at the end of the pattern may take us below the last line */
++ result->lnum = syn_buf->b_ml.ml_line_count;
++ col = STRLEN(ml_get_buf(syn_buf, result->lnum, FALSE));
++ }
+ if (off != 0)
+ {
+ base = ml_get_buf(syn_buf, result->lnum, FALSE);
+*** ../vim-7.2.375/src/version.c 2010-02-24 16:58:30.000000000 +0100
+--- src/version.c 2010-02-24 17:15:48.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 376,
+ /**/
+
+--
+press CTRL-ALT-DEL for more information
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.377 b/source/ap/vim/patches/7.2.377
new file mode 100644
index 000000000..e854ce717
--- /dev/null
+++ b/source/ap/vim/patches/7.2.377
@@ -0,0 +1,66 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.377 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.377 (extra, after 7.2.372)
+Problem: Misplaced assignment. Duplicate build line for gvimext.dll.
+Solution: Move setting CROSS_COMPILE to before ifneq. Remove the wrong
+ build line. (Markus Heidelberg)
+Files: src/Make_ming.mak
+
+
+*** ../vim-7.2.376/src/Make_ming.mak 2010-02-24 15:07:45.000000000 +0100
+--- src/Make_ming.mak 2010-02-26 22:01:07.000000000 +0100
+***************
+*** 248,255 ****
+ DIRSLASH = /
+ else
+ # normal (Windows) compilation:
+- ifneq (sh.exe, $(SHELL))
+ CROSS_COMPILE =
+ DEL = rm
+ MKDIR = mkdir -p
+ DIRSLASH = /
+--- 248,255 ----
+ DIRSLASH = /
+ else
+ # normal (Windows) compilation:
+ CROSS_COMPILE =
++ ifneq (sh.exe, $(SHELL))
+ DEL = rm
+ MKDIR = mkdir -p
+ DIRSLASH = /
+***************
+*** 553,559 ****
+ $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC)
+
+ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+- $(MAKE) -C GvimExt -f Make_ming.mak
+ $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE)
+
+ clean:
+--- 553,558 ----
+*** ../vim-7.2.376/src/version.c 2010-02-24 17:22:14.000000000 +0100
+--- src/version.c 2010-02-26 22:01:45.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 377,
+ /**/
+
+--
+FIRST HEAD: All right! All right! We'll kill him first and then have tea and
+ biscuits.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.378 b/source/ap/vim/patches/7.2.378
new file mode 100644
index 000000000..de2251f44
--- /dev/null
+++ b/source/ap/vim/patches/7.2.378
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.378
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.378
+Problem: C function declaration indented too much. (Rui)
+Solution: Don't see a line containing { or } as a type. (Matt Wozniski)
+Files: src/misc1.c
+
+
+*** ../vim-7.2.377/src/misc1.c 2010-01-06 17:46:03.000000000 +0100
+--- src/misc1.c 2010-02-26 22:36:50.000000000 +0100
+***************
+*** 7727,7737 ****
+ /*
+ * If the NEXT line is a function declaration, the current
+ * line needs to be indented as a function type spec.
+! * Don't do this if the current line looks like a comment
+! * or if the current line is terminated, ie. ends in ';'.
+ */
+ else if (cur_curpos.lnum < curbuf->b_ml.ml_line_count
+ && !cin_nocode(theline)
+ && !cin_ends_in(theline, (char_u *)":", NULL)
+ && !cin_ends_in(theline, (char_u *)",", NULL)
+ && cin_isfuncdecl(NULL, cur_curpos.lnum + 1)
+--- 7727,7740 ----
+ /*
+ * If the NEXT line is a function declaration, the current
+ * line needs to be indented as a function type spec.
+! * Don't do this if the current line looks like a comment or if the
+! * current line is terminated, ie. ends in ';', or if the current line
+! * contains { or }: "void f() {\n if (1)"
+ */
+ else if (cur_curpos.lnum < curbuf->b_ml.ml_line_count
+ && !cin_nocode(theline)
++ && vim_strchr(theline, '{') == NULL
++ && vim_strchr(theline, '}') == NULL
+ && !cin_ends_in(theline, (char_u *)":", NULL)
+ && !cin_ends_in(theline, (char_u *)",", NULL)
+ && cin_isfuncdecl(NULL, cur_curpos.lnum + 1)
+*** ../vim-7.2.377/src/version.c 2010-02-26 22:05:17.000000000 +0100
+--- src/version.c 2010-03-02 12:30:30.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 378,
+ /**/
+
+--
+ An extraordinary TALL KNIGHT in all black (possibly John with Mike on his
+ shoulders) walks out from the dark trees. He is extremely fierce and
+ gruesome countenance. He walks towards KING ARTHUR and PATSY, who are
+ wazzing like mad. (Salopian slang, meaning very scared. almost to the
+ point of wetting oneself, e.g. before an important football match or
+ prior to a postering. Salopian slang meaning a beating by the school
+ praeposters. Sorry about the Salopian slant to this stage direction - Ed.)
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.379 b/source/ap/vim/patches/7.2.379
new file mode 100644
index 000000000..8a600e9eb
--- /dev/null
+++ b/source/ap/vim/patches/7.2.379
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.379
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.379
+Problem: 'eventignore' is set to an invalid value inside ":doau". (Antony
+ Scriven)
+Solution: Don't include the leading comma when the option was empty.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.378/src/fileio.c 2010-01-19 14:59:14.000000000 +0100
+--- src/fileio.c 2010-03-01 21:01:04.000000000 +0100
+***************
+*** 7925,7931 ****
+ new_ei = vim_strnsave(p_ei, (int)(STRLEN(p_ei) + STRLEN(what)));
+ if (new_ei != NULL)
+ {
+! STRCAT(new_ei, what);
+ set_string_option_direct((char_u *)"ei", -1, new_ei,
+ OPT_FREE, SID_NONE);
+ vim_free(new_ei);
+--- 7925,7934 ----
+ new_ei = vim_strnsave(p_ei, (int)(STRLEN(p_ei) + STRLEN(what)));
+ if (new_ei != NULL)
+ {
+! if (*what == ',' && *p_ei == NUL)
+! STRCPY(new_ei, what + 1);
+! else
+! STRCAT(new_ei, what);
+ set_string_option_direct((char_u *)"ei", -1, new_ei,
+ OPT_FREE, SID_NONE);
+ vim_free(new_ei);
+*** ../vim-7.2.378/src/version.c 2010-03-02 12:37:01.000000000 +0100
+--- src/version.c 2010-03-02 12:46:45.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 379,
+ /**/
+
+--
+Back up my hard drive? I can't find the reverse switch!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.380 b/source/ap/vim/patches/7.2.380
new file mode 100644
index 000000000..2cdd8318e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.380
@@ -0,0 +1,104 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.380
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.380 (after 7.2.363)
+Problem: Perl interface builds with 5.10.1 but not with 5.10.0.
+Solution: Change the #ifdefs. (Sergey Khorev)
+Files: src/if_perl.xs
+
+
+*** ../vim-7.2.379/src/if_perl.xs 2010-02-17 16:40:47.000000000 +0100
+--- src/if_perl.xs 2010-03-02 15:07:01.000000000 +0100
+***************
+*** 62,67 ****
+--- 62,72 ----
+ # define PERL589_OR_LATER
+ #endif
+
++ #if (PERL_REVISION == 5) && ((PERL_VERSION > 10) || \
++ (PERL_VERSION == 10) && (PERL_SUBVERSION >= 1))
++ # define PERL5101_OR_LATER
++ #endif
++
+ #ifndef pTHX
+ # define pTHX void
+ # define pTHX_
+***************
+*** 93,99 ****
+ # define perl_free dll_perl_free
+ # define Perl_get_context dll_Perl_get_context
+ # define Perl_croak dll_Perl_croak
+! # if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
+ # define Perl_croak_xs_usage dll_Perl_croak_xs_usage
+ # endif
+ # ifndef PROTO
+--- 98,104 ----
+ # define perl_free dll_perl_free
+ # define Perl_get_context dll_Perl_get_context
+ # define Perl_croak dll_Perl_croak
+! # ifdef PERL5101_OR_LATER
+ # define Perl_croak_xs_usage dll_Perl_croak_xs_usage
+ # endif
+ # ifndef PROTO
+***************
+*** 205,211 ****
+ static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**);
+ static void* (*Perl_get_context)(void);
+ static void (*Perl_croak)(pTHX_ const char*, ...);
+! #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
+ static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const params);
+ #endif
+ static void (*Perl_croak_nocontext)(const char*, ...);
+--- 210,216 ----
+ static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**);
+ static void* (*Perl_get_context)(void);
+ static void (*Perl_croak)(pTHX_ const char*, ...);
+! #ifdef PERL5101_OR_LATER
+ static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const params);
+ #endif
+ static void (*Perl_croak_nocontext)(const char*, ...);
+***************
+*** 312,318 ****
+ {"perl_parse", (PERL_PROC*)&perl_parse},
+ {"Perl_get_context", (PERL_PROC*)&Perl_get_context},
+ {"Perl_croak", (PERL_PROC*)&Perl_croak},
+! #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
+ {"Perl_croak_xs_usage", (PERL_PROC*)&Perl_croak_xs_usage},
+ #endif
+ {"Perl_croak_nocontext", (PERL_PROC*)&Perl_croak_nocontext},
+--- 317,323 ----
+ {"perl_parse", (PERL_PROC*)&perl_parse},
+ {"Perl_get_context", (PERL_PROC*)&Perl_get_context},
+ {"Perl_croak", (PERL_PROC*)&Perl_croak},
+! #ifdef PERL5101_OR_LATER
+ {"Perl_croak_xs_usage", (PERL_PROC*)&Perl_croak_xs_usage},
+ #endif
+ {"Perl_croak_nocontext", (PERL_PROC*)&Perl_croak_nocontext},
+*** ../vim-7.2.379/src/version.c 2010-03-02 12:47:58.000000000 +0100
+--- src/version.c 2010-03-02 15:13:21.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 380,
+ /**/
+
+--
+FATHER: Make sure the Prince doesn't leave this room until I come and
+ get him.
+FIRST GUARD: Not ... to leave the room ... even if you come and get him.
+FATHER: No. Until I come and get him.
+SECOND GUARD: Hic.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.381 b/source/ap/vim/patches/7.2.381
new file mode 100644
index 000000000..977a8ecd5
--- /dev/null
+++ b/source/ap/vim/patches/7.2.381
@@ -0,0 +1,218 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.381
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.381
+Problem: No completion for :behave.
+Solution: Add :behave completion. Minor related fixes. (Dominique Pelle)
+Files: src/ex_docmd.c, src/ex_getln.c, src/proto/ex_docmd.pro, src/vim.h
+
+
+*** ../vim-7.2.380/src/ex_docmd.c 2010-02-03 15:14:15.000000000 +0100
+--- src/ex_docmd.c 2010-03-02 15:55:05.000000000 +0100
+***************
+*** 26,35 ****
+ long_u uc_argt; /* The argument type */
+ char_u *uc_rep; /* The command's replacement string */
+ long uc_def; /* The default value for a range/count */
+- scid_T uc_scriptID; /* SID where the command was defined */
+ int uc_compl; /* completion type */
+! # if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
+ char_u *uc_compl_arg; /* completion argument if any */
+ # endif
+ } ucmd_T;
+
+--- 26,37 ----
+ long_u uc_argt; /* The argument type */
+ char_u *uc_rep; /* The command's replacement string */
+ long uc_def; /* The default value for a range/count */
+ int uc_compl; /* completion type */
+! # ifdef FEAT_EVAL
+! scid_T uc_scriptID; /* SID where the command was defined */
+! # ifdef FEAT_CMDL_COMPL
+ char_u *uc_compl_arg; /* completion argument if any */
++ # endif
+ # endif
+ } ucmd_T;
+
+***************
+*** 3156,3172 ****
+ return NULL;
+ }
+ for (ea.cmdidx = (cmdidx_T)0; (int)ea.cmdidx < (int)CMD_SIZE;
+! ea.cmdidx = (cmdidx_T)((int)ea.cmdidx + 1))
+! if (STRNCMP(cmdnames[(int)ea.cmdidx].cmd_name, cmd, (size_t)len) == 0)
+ break;
+
+ #ifdef FEAT_USR_CMDS
+ if (cmd[0] >= 'A' && cmd[0] <= 'Z')
+- {
+ while (ASCII_ISALNUM(*p) || *p == '*') /* Allow * wild card */
+ ++p;
+- len = (int)(p - cmd);
+- }
+ #endif
+ }
+
+--- 3158,3172 ----
+ return NULL;
+ }
+ for (ea.cmdidx = (cmdidx_T)0; (int)ea.cmdidx < (int)CMD_SIZE;
+! ea.cmdidx = (cmdidx_T)((int)ea.cmdidx + 1))
+! if (STRNCMP(cmdnames[(int)ea.cmdidx].cmd_name, cmd,
+! (size_t)len) == 0)
+ break;
+
+ #ifdef FEAT_USR_CMDS
+ if (cmd[0] >= 'A' && cmd[0] <= 'Z')
+ while (ASCII_ISALNUM(*p) || *p == '*') /* Allow * wild card */
+ ++p;
+ #endif
+ }
+
+***************
+*** 3809,3814 ****
+--- 3809,3817 ----
+ set_context_in_profile_cmd(xp, arg);
+ break;
+ #endif
++ case CMD_behave:
++ xp->xp_context = EXPAND_BEHAVE;
++ break;
+
+ #endif /* FEAT_CMDL_COMPL */
+
+***************
+*** 10847,10852 ****
+--- 10850,10873 ----
+ EMSG2(_(e_invarg2), eap->arg);
+ }
+
++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++ /*
++ * Function given to ExpandGeneric() to obtain the possible arguments of the
++ * ":behave {mswin,xterm}" command.
++ */
++ char_u *
++ get_behave_arg(xp, idx)
++ expand_T *xp UNUSED;
++ int idx;
++ {
++ if (idx == 0)
++ return (char_u *)"mswin";
++ if (idx == 1)
++ return (char_u *)"xterm";
++ return NULL;
++ }
++ #endif
++
+ #ifdef FEAT_AUTOCMD
+ static int filetype_detect = FALSE;
+ static int filetype_plugin = FALSE;
+*** ../vim-7.2.380/src/ex_getln.c 2010-02-03 15:14:15.000000000 +0100
+--- src/ex_getln.c 2010-03-02 15:28:13.000000000 +0100
+***************
+*** 4492,4497 ****
+--- 4492,4498 ----
+ } tab[] =
+ {
+ {EXPAND_COMMANDS, get_command_name, FALSE},
++ {EXPAND_BEHAVE, get_behave_arg, TRUE},
+ #ifdef FEAT_USR_CMDS
+ {EXPAND_USER_COMMANDS, get_user_commands, FALSE},
+ {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE},
+*** ../vim-7.2.380/src/proto/ex_docmd.pro 2008-07-04 11:43:13.000000000 +0200
+--- src/proto/ex_docmd.pro 2010-03-02 15:37:37.000000000 +0100
+***************
+*** 52,55 ****
+--- 52,56 ----
+ int put_eol __ARGS((FILE *fd));
+ int put_line __ARGS((FILE *fd, char *s));
+ void dialog_msg __ARGS((char_u *buff, char *format, char_u *fname));
++ char_u *get_behave_arg __ARGS((expand_T *xp, int idx));
+ /* vim: set ft=c : */
+*** ../vim-7.2.380/src/vim.h 2010-02-24 14:46:58.000000000 +0100
+--- src/vim.h 2010-03-02 15:30:13.000000000 +0100
+***************
+*** 595,601 ****
+
+ /*
+ * Terminal highlighting attribute bits.
+! * Attibutes above HL_ALL are used for syntax highlighting.
+ */
+ #define HL_NORMAL 0x00
+ #define HL_INVERSE 0x01
+--- 595,601 ----
+
+ /*
+ * Terminal highlighting attribute bits.
+! * Attributes above HL_ALL are used for syntax highlighting.
+ */
+ #define HL_NORMAL 0x00
+ #define HL_INVERSE 0x01
+***************
+*** 721,726 ****
+--- 721,727 ----
+ #define EXPAND_CSCOPE 33
+ #define EXPAND_SIGN 34
+ #define EXPAND_PROFILE 35
++ #define EXPAND_BEHAVE 36
+
+ /* Values for exmode_active (0 is no exmode) */
+ #define EXMODE_NORMAL 1
+***************
+*** 1262,1268 ****
+ } hlf_T;
+
+ /* The HL_FLAGS must be in the same order as the HLF_ enums!
+! * When chainging this also adjust the default for 'highlight'. */
+ #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \
+ 'n', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \
+ 'f', 'F', 'A', 'C', 'D', 'T', '>', \
+--- 1263,1269 ----
+ } hlf_T;
+
+ /* The HL_FLAGS must be in the same order as the HLF_ enums!
+! * When changing this also adjust the default for 'highlight'. */
+ #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \
+ 'n', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \
+ 'f', 'F', 'A', 'C', 'D', 'T', '>', \
+***************
+*** 1430,1436 ****
+ #ifdef FEAT_MBYTE
+ /* We need to call mb_stricmp() even when we aren't dealing with a multi-byte
+ * encoding because mb_stricmp() takes care of all ascii and non-ascii
+! * encodings, including characters with umluats in latin1, etc., while
+ * STRICMP() only handles the system locale version, which often does not
+ * handle non-ascii properly. */
+
+--- 1431,1437 ----
+ #ifdef FEAT_MBYTE
+ /* We need to call mb_stricmp() even when we aren't dealing with a multi-byte
+ * encoding because mb_stricmp() takes care of all ascii and non-ascii
+! * encodings, including characters with umlauts in latin1, etc., while
+ * STRICMP() only handles the system locale version, which often does not
+ * handle non-ascii properly. */
+
+*** ../vim-7.2.380/src/version.c 2010-03-02 15:14:22.000000000 +0100
+--- src/version.c 2010-03-02 15:51:24.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 381,
+ /**/
+
+--
+I'd like to meet the man who invented sex and see what he's working on now.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.382 b/source/ap/vim/patches/7.2.382
new file mode 100644
index 000000000..56fcfa44d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.382
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.382
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.382
+Problem: Accessing freed memory when closing the cmdline window when
+ 'bufhide' is set to "wipe".
+Solution: Check if the buffer still exists before invoking close_buffer()
+ (Dominique Pelle)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.2.381/src/ex_getln.c 2010-03-02 15:55:51.000000000 +0100
+--- src/ex_getln.c 2010-03-02 16:29:38.000000000 +0100
+***************
+*** 6252,6258 ****
+ bp = curbuf;
+ win_goto(old_curwin);
+ win_close(wp, TRUE);
+! close_buffer(NULL, bp, DOBUF_WIPE);
+
+ /* Restore window sizes. */
+ win_size_restore(&winsizes);
+--- 6252,6262 ----
+ bp = curbuf;
+ win_goto(old_curwin);
+ win_close(wp, TRUE);
+!
+! /* win_close() may have already wiped the buffer when 'bh' is
+! * set to 'wipe' */
+! if (buf_valid(bp))
+! close_buffer(NULL, bp, DOBUF_WIPE);
+
+ /* Restore window sizes. */
+ win_size_restore(&winsizes);
+*** ../vim-7.2.381/src/version.c 2010-03-02 15:55:51.000000000 +0100
+--- src/version.c 2010-03-02 17:22:11.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 382,
+ /**/
+
+--
+You had connectors? Eeee, when I were a lad we 'ad to carry the
+bits between the computer and the terminal with a spoon...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.383 b/source/ap/vim/patches/7.2.383
new file mode 100644
index 000000000..25fa7142b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.383
@@ -0,0 +1,101 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.383
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.383
+Problem: Vim doesn't build cleanly with MSVC 2010.
+Solution: Change a few types. (George Reilly)
+Files: src/ex_cmds2.c, src/if_python.c, src/syntax.c
+
+
+*** ../vim-7.2.382/src/ex_cmds2.c 2010-02-24 13:59:08.000000000 +0100
+--- src/ex_cmds2.c 2010-03-02 17:42:54.000000000 +0100
+***************
+*** 1165,1171 ****
+ char_u *arg;
+ {
+ char_u *end_subcmd;
+- int len;
+
+ /* Default: expand subcommands. */
+ xp->xp_context = EXPAND_PROFILE;
+--- 1165,1170 ----
+***************
+*** 1176,1183 ****
+ if (*end_subcmd == NUL)
+ return;
+
+! len = end_subcmd - arg;
+! if (len == 5 && STRNCMP(arg, "start", 5) == 0)
+ {
+ xp->xp_context = EXPAND_FILES;
+ xp->xp_pattern = skipwhite(end_subcmd);
+--- 1175,1181 ----
+ if (*end_subcmd == NUL)
+ return;
+
+! if (end_subcmd - arg == 5 && STRNCMP(arg, "start", 5) == 0)
+ {
+ xp->xp_context = EXPAND_FILES;
+ xp->xp_pattern = skipwhite(end_subcmd);
+*** ../vim-7.2.382/src/if_python.c 2009-11-11 15:06:59.000000000 +0100
+--- src/if_python.c 2010-03-02 17:43:39.000000000 +0100
+***************
+*** 2080,2086 ****
+ return -1;
+
+ /* When column is out of range silently correct it. */
+! len = STRLEN(ml_get_buf(this->win->w_buffer, lnum, FALSE));
+ if (col > len)
+ col = len;
+
+--- 2080,2086 ----
+ return -1;
+
+ /* When column is out of range silently correct it. */
+! len = (long)STRLEN(ml_get_buf(this->win->w_buffer, lnum, FALSE));
+ if (col > len)
+ col = len;
+
+*** ../vim-7.2.382/src/syntax.c 2010-02-24 17:22:14.000000000 +0100
+--- src/syntax.c 2010-03-02 17:45:25.000000000 +0100
+***************
+*** 3090,3096 ****
+ {
+ /* a "\n" at the end of the pattern may take us below the last line */
+ result->lnum = syn_buf->b_ml.ml_line_count;
+! col = STRLEN(ml_get_buf(syn_buf, result->lnum, FALSE));
+ }
+ if (off != 0)
+ {
+--- 3090,3096 ----
+ {
+ /* a "\n" at the end of the pattern may take us below the last line */
+ result->lnum = syn_buf->b_ml.ml_line_count;
+! col = (int)STRLEN(ml_get_buf(syn_buf, result->lnum, FALSE));
+ }
+ if (off != 0)
+ {
+*** ../vim-7.2.382/src/version.c 2010-03-02 17:23:10.000000000 +0100
+--- src/version.c 2010-03-02 17:48:50.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 383,
+ /**/
+
+--
+You were lucky to have a LAKE! There were a hundred and sixty of
+us living in a small shoebox in the middle of the road.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.384 b/source/ap/vim/patches/7.2.384
new file mode 100644
index 000000000..24fc68075
--- /dev/null
+++ b/source/ap/vim/patches/7.2.384
@@ -0,0 +1,59 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.384 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.384 (extra)
+Problem: Vim doesn't build properly with MSVC 2010.
+Solution: Add the nmake version to the build file. (George Reilly)
+Files: src/Make_mvc.mak, src/testdir/Make_dos.mak
+
+
+*** ../vim-7.2.383/src/Make_mvc.mak 2009-09-11 12:48:56.000000000 +0200
+--- src/Make_mvc.mak 2010-03-02 17:44:22.000000000 +0100
+***************
+*** 361,366 ****
+--- 361,369 ----
+ !if "$(_NMAKE_VER)" == "10.00.20506.01"
+ MSVCVER = 10.0
+ !endif
++ !if "$(_NMAKE_VER)" == "10.00.30128.01"
++ MSVCVER = 10.0
++ !endif
+ !endif
+
+ # Abort bulding VIM if version of VC is unrecognised.
+*** ../vim-7.2.383/src/testdir/Make_dos.mak 2010-01-19 15:51:29.000000000 +0100
+--- src/testdir/Make_dos.mak 2010-03-02 17:45:48.000000000 +0100
+***************
+*** 56,61 ****
+--- 56,62 ----
+ -if exist small.vim del small.vim
+ -if exist tiny.vim del tiny.vim
+ -if exist mbyte.vim del mbyte.vim
++ -if exist mzscheme.vim del mzscheme.vim
+ -del X*
+ -if exist viminfo del viminfo
+
+*** ../vim-7.2.383/src/version.c 2010-03-02 17:50:30.000000000 +0100
+--- src/version.c 2010-03-02 17:59:09.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 384,
+ /**/
+
+--
+Yah, well, we had to carve our electrons out of driftwood we'd
+find. In the winter. Uphill. Both ways.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.385 b/source/ap/vim/patches/7.2.385
new file mode 100644
index 000000000..9f9a9178e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.385
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.385
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.385
+Problem: When in the command line window dragging status line only works
+ for last-but-one window. (Jean Johner)
+Solution: Remove the code that disallows this.
+Files: src/ui.c
+
+
+*** ../vim-7.2.384/src/ui.c 2010-01-19 14:59:14.000000000 +0100
+--- src/ui.c 2010-03-02 18:06:30.000000000 +0100
+***************
+*** 2598,2611 ****
+ if (cmdwin_type != 0 && wp != curwin)
+ {
+ /* A click outside the command-line window: Use modeless
+! * selection if possible. Allow dragging the status line of
+! * windows just above the command-line window. */
+! if (wp->w_winrow + wp->w_height
+! != curwin->w_prev->w_winrow + curwin->w_prev->w_height)
+! {
+! on_status_line = 0;
+! dragwin = NULL;
+! }
+ # ifdef FEAT_VERTSPLIT
+ on_sep_line = 0;
+ # endif
+--- 2598,2604 ----
+ if (cmdwin_type != 0 && wp != curwin)
+ {
+ /* A click outside the command-line window: Use modeless
+! * selection if possible. Allow dragging the status lines. */
+ # ifdef FEAT_VERTSPLIT
+ on_sep_line = 0;
+ # endif
+*** ../vim-7.2.384/src/version.c 2010-03-02 17:59:39.000000000 +0100
+--- src/version.c 2010-03-02 18:14:29.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 385,
+ /**/
+
+--
+You were lucky. We lived for three months in a brown paper bag in a
+septic tank. We used to have to get up at six o'clock in the morning,
+clean the bag, eat a crust of stale bread, go to work down mill for
+fourteen hours a day week in-week out. When we got home, our Dad
+would thrash us to sleep with his belt!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.386 b/source/ap/vim/patches/7.2.386
new file mode 100644
index 000000000..7212b27c7
--- /dev/null
+++ b/source/ap/vim/patches/7.2.386
@@ -0,0 +1,61 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.386
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.386
+Problem: Focus hack for KDE 3.1 causes problems for other window managers.
+Solution: Remove the hack. (forwarded by Joel Bradshaw)
+Files: src/gui_gtk.c
+
+
+*** ../vim-7.2.385/src/gui_gtk.c 2009-05-17 16:23:20.000000000 +0200
+--- src/gui_gtk.c 2010-03-10 12:07:59.000000000 +0100
+***************
+*** 2313,2331 ****
+ gtk_widget_destroy(dialog);
+ }
+
+- /* Terrible hack: When the text area still has focus when we remove the
+- * dialog, somehow gvim loses window focus. This is with "point to type"
+- * in the KDE 3.1 window manager. Warp the mouse pointer to outside the
+- * window and back to avoid that. */
+- if (!gui.in_focus)
+- {
+- int x, y;
+-
+- gdk_window_get_pointer(gui.drawarea->window, &x, &y, NULL);
+- gui_mch_setmouse(-100, -100);
+- gui_mch_setmouse(x, y);
+- }
+-
+ return response > 0 ? response : 0;
+ }
+
+--- 2313,2318 ----
+*** ../vim-7.2.385/src/version.c 2010-03-02 18:15:47.000000000 +0100
+--- src/version.c 2010-03-10 12:09:00.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 386,
+ /**/
+
+--
+ARTHUR: Well, I AM king...
+DENNIS: Oh king, eh, very nice. An' how'd you get that, eh? By exploitin'
+ the workers -- by 'angin' on to outdated imperialist dogma which
+ perpetuates the economic an' social differences in our society! If
+ there's ever going to be any progress--
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.387 b/source/ap/vim/patches/7.2.387
new file mode 100644
index 000000000..ccbd6e4c0
--- /dev/null
+++ b/source/ap/vim/patches/7.2.387
@@ -0,0 +1,238 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.387
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.387
+Problem: Ruby with MingW still doesn't build all versions.
+Solution: More #ifdefs for the Ruby code. (Sergey Khorev)
+Files: src/if_ruby.c
+
+
+*** ../vim-7.2.386/src/if_ruby.c 2010-02-24 15:47:58.000000000 +0100
+--- src/if_ruby.c 2010-03-10 12:40:30.000000000 +0100
+***************
+*** 39,46 ****
+ # define rb_cTrueClass (*dll_rb_cTrueClass)
+ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+ /*
+! * On ver 1.8, all Ruby functions are exported with "__declspce(dllimport)"
+! * in ruby.h. But it cause trouble for these variables, because it is
+ * defined in this file. When defined this RUBY_EXPORT it modified to
+ * "extern" and be able to avoid this problem.
+ */
+--- 39,46 ----
+ # define rb_cTrueClass (*dll_rb_cTrueClass)
+ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+ /*
+! * On ver 1.8, all Ruby functions are exported with "__declspec(dllimport)"
+! * in ruby.h. But it causes trouble for these variables, because it is
+ * defined in this file. When defined this RUBY_EXPORT it modified to
+ * "extern" and be able to avoid this problem.
+ */
+***************
+*** 53,58 ****
+--- 53,65 ----
+ # undef _WIN32_WINNT
+ #endif
+
++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
++ /* Ruby 1.9 defines a number of static functions which use rb_num2long and
++ * rb_int2big */
++ # define rb_num2long rb_num2long_stub
++ # define rb_int2big rb_int2big_stub
++ #endif
++
+ #include <ruby.h>
+ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ # include <ruby/encoding.h>
+***************
+*** 159,165 ****
+ #define rb_str_concat dll_rb_str_concat
+ #define rb_str_new dll_rb_str_new
+ #define rb_str_new2 dll_rb_str_new2
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ # define rb_errinfo dll_rb_errinfo
+ #else
+ # define ruby_errinfo (*dll_ruby_errinfo)
+--- 166,179 ----
+ #define rb_str_concat dll_rb_str_concat
+ #define rb_str_new dll_rb_str_new
+ #define rb_str_new2 dll_rb_str_new2
+! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+! # define rb_string_value_ptr dll_rb_string_value_ptr
+! # define rb_float_new dll_rb_float_new
+! # define rb_ary_new dll_rb_ary_new
+! # define rb_ary_push dll_rb_ary_push
+! #endif
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
+! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ # define rb_errinfo dll_rb_errinfo
+ #else
+ # define ruby_errinfo (*dll_ruby_errinfo)
+***************
+*** 226,232 ****
+ static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
+ static VALUE (*dll_rb_str_new) (const char*, long);
+ static VALUE (*dll_rb_str_new2) (const char*);
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ static VALUE (*dll_rb_errinfo) (void);
+ #else
+ static VALUE *dll_ruby_errinfo;
+--- 240,247 ----
+ static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
+ static VALUE (*dll_rb_str_new) (const char*, long);
+ static VALUE (*dll_rb_str_new2) (const char*);
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
+! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ static VALUE (*dll_rb_errinfo) (void);
+ #else
+ static VALUE *dll_ruby_errinfo;
+***************
+*** 235,240 ****
+--- 250,264 ----
+ static void (*dll_ruby_init_loadpath) (void);
+ static void (*dll_NtInitialize) (int*, char***);
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
++ static char * (*dll_rb_string_value_ptr) (volatile VALUE*);
++ static VALUE (*dll_rb_float_new) (double);
++ static VALUE (*dll_rb_ary_new) (void);
++ static VALUE (*dll_rb_ary_push) (VALUE, VALUE);
++ #endif
++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
++ static VALUE (*dll_rb_int2big)(SIGNED_VALUE);
++ #endif
++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+ static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
+ #endif
+
+***************
+*** 246,251 ****
+--- 270,286 ----
+ static VALUE (*dll_rb_sprintf) (const char*, ...);
+ #endif
+
++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
++ static SIGNED_VALUE rb_num2long_stub(VALUE x)
++ {
++ return dll_rb_num2long(x);
++ }
++ static VALUE rb_int2big_stub(SIGNED_VALUE x)
++ {
++ return dll_rb_int2big(x);
++ }
++ #endif
++
+ static HINSTANCE hinstRuby = 0; /* Instance of ruby.dll */
+
+ /*
+***************
+*** 301,317 ****
+ {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
+ {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
+ {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2},
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo},
+ #else
+ {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
+ #endif
+ {"ruby_init", (RUBY_PROC*)&dll_ruby_init},
+ {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
+! {"NtInitialize", (RUBY_PROC*)&dll_NtInitialize},
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+ {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
+ #endif
+ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ {"ruby_script", (RUBY_PROC*)&dll_ruby_script},
+ {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
+--- 336,368 ----
+ {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
+ {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
+ {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2},
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
+! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo},
+ #else
+ {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
+ #endif
+ {"ruby_init", (RUBY_PROC*)&dll_ruby_init},
+ {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
+! {
+! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER < 19
+! "NtInitialize",
+! #else
+! "ruby_sysinit",
+! #endif
+! (RUBY_PROC*)&dll_NtInitialize},
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+ {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
+ #endif
++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
++ {"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr},
++ {"rb_float_new", (RUBY_PROC*)&dll_rb_float_new},
++ {"rb_ary_new", (RUBY_PROC*)&dll_rb_ary_new},
++ {"rb_ary_push", (RUBY_PROC*)&dll_rb_ary_push},
++ #endif
++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
++ {"rb_int2big", (RUBY_PROC*)&dll_rb_int2big},
++ #endif
+ #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ {"ruby_script", (RUBY_PROC*)&dll_ruby_script},
+ {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
+***************
+*** 569,575 ****
+ static void error_print(int state)
+ {
+ #ifndef DYNAMIC_RUBY
+! #if !(defined(RUBY_VERSION) && RUBY_VERSION >= 19)
+ RUBYEXTERN VALUE ruby_errinfo;
+ #endif
+ #endif
+--- 620,627 ----
+ static void error_print(int state)
+ {
+ #ifndef DYNAMIC_RUBY
+! #if !(defined(RUBY_VERSION) && RUBY_VERSION >= 19) \
+! && !(defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19)
+ RUBYEXTERN VALUE ruby_errinfo;
+ #endif
+ #endif
+***************
+*** 605,611 ****
+ break;
+ case TAG_RAISE:
+ case TAG_FATAL:
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ eclass = CLASS_OF(rb_errinfo());
+ einfo = rb_obj_as_string(rb_errinfo());
+ #else
+--- 657,664 ----
+ break;
+ case TAG_RAISE:
+ case TAG_FATAL:
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
+! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ eclass = CLASS_OF(rb_errinfo());
+ einfo = rb_obj_as_string(rb_errinfo());
+ #else
+*** ../vim-7.2.386/src/version.c 2010-03-10 12:24:44.000000000 +0100
+--- src/version.c 2010-03-10 12:45:55.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 387,
+ /**/
+
+--
+Vim is like Emacs without all the typing. (John "Johann" Spetz)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.388 b/source/ap/vim/patches/7.2.388
new file mode 100644
index 000000000..1a8a7a88c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.388
@@ -0,0 +1,86 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.388 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.388 (extra part of 7.2.387)
+Problem: Ruby with MingW still doesn't build all versions.
+Solution: Different approach to build file. (Sergey Khorev)
+Files: src/Make_ming.mak
+
+
+*** ../vim-7.2.387/src/Make_ming.mak 2010-02-26 22:05:17.000000000 +0100
+--- src/Make_ming.mak 2010-03-10 12:34:25.000000000 +0100
+***************
+*** 212,234 ****
+ RUBY_VER_LONG = 1.6
+ endif
+
+- ifeq ($(RUBY_VER), 16)
+ ifndef RUBY_PLATFORM
+ RUBY_PLATFORM = i586-mswin32
+! endif
+! ifndef RUBY_INSTALL_NAME
+! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER)
+! endif
+ else
+- ifndef RUBY_PLATFORM
+ RUBY_PLATFORM = i386-mswin32
+ endif
+ ifndef RUBY_INSTALL_NAME
+ RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER)
+ endif
+ endif
+
+! RUBYINC =-I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
+ ifeq (no, $(DYNAMIC_RUBY))
+ RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME)
+ endif
+--- 212,236 ----
+ RUBY_VER_LONG = 1.6
+ endif
+
+ ifndef RUBY_PLATFORM
++ ifeq ($(RUBY_VER), 16)
+ RUBY_PLATFORM = i586-mswin32
+! else ifneq ("X$(wildcard, $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32)", X)
+! RUBY_PLATFORM = i386-mingw32
+ else
+ RUBY_PLATFORM = i386-mswin32
+ endif
++ endif
++
+ ifndef RUBY_INSTALL_NAME
++ ifeq ($(RUBY_VER), 16)
++ RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER)
++ else
+ RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER)
+ endif
+ endif
+
+! RUBYINC =-I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
+ ifeq (no, $(DYNAMIC_RUBY))
+ RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME)
+ endif
+*** ../vim-7.2.387/src/version.c 2010-03-10 12:46:38.000000000 +0100
+--- src/version.c 2010-03-10 13:18:38.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 388,
+ /**/
+
+--
+Q: Is selling software the same as selling hardware?
+A: No, good hardware is sold new, good software has already been used by many.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.389 b/source/ap/vim/patches/7.2.389
new file mode 100644
index 000000000..a4af355fb
--- /dev/null
+++ b/source/ap/vim/patches/7.2.389
@@ -0,0 +1,161 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.389
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.389
+Problem: synIDattr() cannot return the font.
+Solution: Support the "font" argument. (Christian Brabandt)
+Files: runtime/doc/eval.txt, src/eval.c, src/syntax.c
+
+
+*** ../vim-7.2.388/runtime/doc/eval.txt 2010-01-19 15:51:29.000000000 +0100
+--- runtime/doc/eval.txt 2010-03-10 12:52:12.000000000 +0100
+***************
+*** 5370,5375 ****
+--- 5388,5395 ----
+ the color, cterm: color number as a string,
+ term: empty string)
+ "bg" background color (as with "fg")
++ "font" font name (only available in the GUI)
++ |highlight-font|
+ "sp" special color (as with "fg") |highlight-guisp|
+ "fg#" like "fg", but for the GUI and the GUI is
+ running the name in "#RRGGBB" form
+***************
+*** 5379,5384 ****
+--- 5399,5405 ----
+ "italic" "1" if italic
+ "reverse" "1" if reverse
+ "inverse" "1" if inverse (= reverse)
++ "standout" "1" if standout
+ "underline" "1" if underlined
+ "undercurl" "1" if undercurled
+
+*** ../vim-7.2.388/src/eval.c 2010-02-24 15:47:58.000000000 +0100
+--- src/eval.c 2010-03-10 12:54:27.000000000 +0100
+***************
+*** 16627,16633 ****
+ p = highlight_has_attr(id, HL_BOLD, modec);
+ break;
+
+! case 'f': /* fg[#] */
+ p = highlight_color(id, what, modec);
+ break;
+
+--- 16627,16633 ----
+ p = highlight_has_attr(id, HL_BOLD, modec);
+ break;
+
+! case 'f': /* fg[#] or font */
+ p = highlight_color(id, what, modec);
+ break;
+
+*** ../vim-7.2.388/src/syntax.c 2010-03-02 17:50:30.000000000 +0100
+--- src/syntax.c 2010-03-10 13:05:39.000000000 +0100
+***************
+*** 8326,8332 ****
+ char_u *
+ highlight_color(id, what, modec)
+ int id;
+! char_u *what; /* "fg", "bg", "sp", "fg#", "bg#" or "sp#" */
+ int modec; /* 'g' for GUI, 'c' for cterm, 't' for term */
+ {
+ static char_u name[20];
+--- 8326,8332 ----
+ char_u *
+ highlight_color(id, what, modec)
+ int id;
+! char_u *what; /* "font", "fg", "bg", "sp", "fg#", "bg#" or "sp#" */
+ int modec; /* 'g' for GUI, 'c' for cterm, 't' for term */
+ {
+ static char_u name[20];
+***************
+*** 8334,8353 ****
+ int fg = FALSE;
+ # ifdef FEAT_GUI
+ int sp = FALSE;
+ # endif
+
+ if (id <= 0 || id > highlight_ga.ga_len)
+ return NULL;
+
+! if (TOLOWER_ASC(what[0]) == 'f')
+ fg = TRUE;
+ # ifdef FEAT_GUI
+! else if (TOLOWER_ASC(what[0]) == 's')
+ sp = TRUE;
+ if (modec == 'g')
+ {
+ /* return #RRGGBB form (only possible when GUI is running) */
+! if (gui.in_use && what[1] && what[2] == '#')
+ {
+ guicolor_T color;
+ long_u rgb;
+--- 8334,8363 ----
+ int fg = FALSE;
+ # ifdef FEAT_GUI
+ int sp = FALSE;
++ int font = FALSE;
+ # endif
+
+ if (id <= 0 || id > highlight_ga.ga_len)
+ return NULL;
+
+! if (TOLOWER_ASC(what[0]) == 'f' && TOLOWER_ASC(what[1]) == 'g')
+ fg = TRUE;
+ # ifdef FEAT_GUI
+! else if (TOLOWER_ASC(what[0]) == 'f' && TOLOWER_ASC(what[1]) == 'o'
+! && TOLOWER_ASC(what[2]) == 'n' && TOLOWER_ASC(what[3]) == 't')
+! font = TRUE;
+! else if (TOLOWER_ASC(what[0]) == 's' && TOLOWER_ASC(what[1]) == 'p')
+ sp = TRUE;
++ else if (!(TOLOWER_ASC(what[0]) == 'b' && TOLOWER_ASC(what[1]) == 'g'))
++ return NULL;
+ if (modec == 'g')
+ {
++ /* return font name */
++ if (font)
++ return HL_TABLE()[id - 1].sg_font_name;
++
+ /* return #RRGGBB form (only possible when GUI is running) */
+! if (gui.in_use && what[2] == '#')
+ {
+ guicolor_T color;
+ long_u rgb;
+***************
+*** 8374,8379 ****
+--- 8384,8391 ----
+ return (HL_TABLE()[id - 1].sg_gui_sp_name);
+ return (HL_TABLE()[id - 1].sg_gui_bg_name);
+ }
++ if (font || sp)
++ return NULL;
+ # endif
+ if (modec == 'c')
+ {
+*** ../vim-7.2.388/src/version.c 2010-03-10 13:19:28.000000000 +0100
+--- src/version.c 2010-03-10 13:33:25.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 389,
+ /**/
+
+--
+WOMAN: Dennis, there's some lovely filth down here. Oh -- how d'you do?
+ARTHUR: How do you do, good lady. I am Arthur, King of the Britons.
+ Who's castle is that?
+WOMAN: King of the who?
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.390 b/source/ap/vim/patches/7.2.390
new file mode 100644
index 000000000..d10ed2a44
--- /dev/null
+++ b/source/ap/vim/patches/7.2.390
@@ -0,0 +1,72 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.390
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.390
+Problem: In some situations the popup menu can be displayed wrong.
+Solution: Remove the popup menu if the cursor moved. (Lech Lorens)
+Files: src/edit.c
+
+
+*** ../vim-7.2.389/src/edit.c 2010-01-19 14:59:14.000000000 +0100
+--- src/edit.c 2010-03-10 14:09:56.000000000 +0100
+***************
+*** 4684,4689 ****
+--- 4684,4690 ----
+ int startcol = 0; /* column where searched text starts */
+ colnr_T curs_col; /* cursor column */
+ int n;
++ int save_w_wrow;
+
+ compl_direction = ins_compl_key2dir(c);
+ if (!compl_started)
+***************
+*** 5067,5072 ****
+--- 5068,5074 ----
+ /*
+ * Find next match (and following matches).
+ */
++ save_w_wrow = curwin->w_wrow;
+ n = ins_compl_next(TRUE, ins_compl_key2count(c), ins_compl_use_match(c));
+
+ /* may undisplay the popup menu */
+***************
+*** 5220,5225 ****
+--- 5222,5233 ----
+ /* RedrawingDisabled may be set when invoked through complete(). */
+ n = RedrawingDisabled;
+ RedrawingDisabled = 0;
++
++ /* If the cursor moved we need to remove the pum first. */
++ setcursor();
++ if (save_w_wrow != curwin->w_wrow)
++ ins_compl_del_pum();
++
+ ins_compl_show_pum();
+ setcursor();
+ RedrawingDisabled = n;
+*** ../vim-7.2.389/src/version.c 2010-03-10 13:43:22.000000000 +0100
+--- src/version.c 2010-03-10 14:13:55.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 390,
+ /**/
+
+--
+`When any government, or any church for that matter, undertakes to say to
+ its subjects, "This you may not read, this you must not see, this you are
+ forbidden to know," the end result is tyranny and oppression no matter how
+ holy the motives' -- Robert A Heinlein, "If this goes on --"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.391 b/source/ap/vim/patches/7.2.391
new file mode 100644
index 000000000..731408de8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.391
@@ -0,0 +1,121 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.391
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.391
+Problem: Internal alloc(0) error when doing "CTRL-V $ c". (Martti Kuparinen)
+Solution: Fix computations in getvcol(). (partly by Lech Lorens)
+Files: src/charset.c, src/memline.c
+
+
+*** ../vim-7.2.390/src/charset.c 2009-11-03 16:03:59.000000000 +0100
+--- src/charset.c 2010-03-10 14:38:14.000000000 +0100
+***************
+*** 1255,1261 ****
+
+ vcol = 0;
+ ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE);
+! posptr = ptr + pos->col;
+
+ /*
+ * This function is used very often, do some speed optimizations.
+--- 1255,1264 ----
+
+ vcol = 0;
+ ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE);
+! if (pos->col == MAXCOL)
+! posptr = NULL; /* continue until the NUL */
+! else
+! posptr = ptr + pos->col;
+
+ /*
+ * This function is used very often, do some speed optimizations.
+***************
+*** 1313,1319 ****
+ incr = CHARSIZE(c);
+ }
+
+! if (ptr >= posptr) /* character at pos->col */
+ break;
+
+ vcol += incr;
+--- 1316,1322 ----
+ incr = CHARSIZE(c);
+ }
+
+! if (posptr != NULL && ptr >= posptr) /* character at pos->col */
+ break;
+
+ vcol += incr;
+***************
+*** 1334,1340 ****
+ break;
+ }
+
+! if (ptr >= posptr) /* character at pos->col */
+ break;
+
+ vcol += incr;
+--- 1337,1343 ----
+ break;
+ }
+
+! if (posptr != NULL && ptr >= posptr) /* character at pos->col */
+ break;
+
+ vcol += incr;
+*** ../vim-7.2.390/src/memline.c 2010-02-11 18:54:38.000000000 +0100
+--- src/memline.c 2010-03-10 14:38:25.000000000 +0100
+***************
+*** 2113,2124 ****
+ if (buf->b_ml.ml_mfp == NULL) /* there are no lines */
+ return (char_u *)"";
+
+! /*
+! * See if it is the same line as requested last time.
+! * Otherwise may need to flush last used line.
+! * Don't use the last used line when 'swapfile' is reset, need to load all
+! * blocks.
+! */
+ if (buf->b_ml.ml_line_lnum != lnum || mf_dont_release)
+ {
+ ml_flush_line(buf);
+--- 2113,2124 ----
+ if (buf->b_ml.ml_mfp == NULL) /* there are no lines */
+ return (char_u *)"";
+
+! /*
+! * See if it is the same line as requested last time.
+! * Otherwise may need to flush last used line.
+! * Don't use the last used line when 'swapfile' is reset, need to load all
+! * blocks.
+! */
+ if (buf->b_ml.ml_line_lnum != lnum || mf_dont_release)
+ {
+ ml_flush_line(buf);
+*** ../vim-7.2.390/src/version.c 2010-03-10 14:15:28.000000000 +0100
+--- src/version.c 2010-03-10 14:31:02.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 391,
+ /**/
+
+--
+WOMAN: King of the who?
+ARTHUR: The Britons.
+WOMAN: Who are the Britons?
+ARTHUR: Well, we all are. we're all Britons and I am your king.
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.392 b/source/ap/vim/patches/7.2.392
new file mode 100644
index 000000000..c253d91b5
--- /dev/null
+++ b/source/ap/vim/patches/7.2.392
@@ -0,0 +1,184 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.392
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.392
+Problem: Netbeans hangs reading from a socket at the maximum block size.
+Solution: Use select() or poll(). (Xavier de Gaye)
+Files: src/vim.h, src/os_unixx.h, src/if_xcmdsrv.c, src/netbeans.c
+
+
+*** ../vim-7.2.391/src/vim.h 2010-03-02 15:55:51.000000000 +0100
+--- src/vim.h 2010-03-10 15:14:03.000000000 +0100
+***************
+*** 477,482 ****
+--- 477,499 ----
+ # include <stdarg.h>
+ #endif
+
++ # if defined(HAVE_SYS_SELECT_H) && \
++ (!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME))
++ # include <sys/select.h>
++ # endif
++
++ # ifndef HAVE_SELECT
++ # ifdef HAVE_SYS_POLL_H
++ # include <sys/poll.h>
++ # define HAVE_POLL
++ # else
++ # ifdef HAVE_POLL_H
++ # include <poll.h>
++ # define HAVE_POLL
++ # endif
++ # endif
++ # endif
++
+ /* ================ end of the header file puzzle =============== */
+
+ /*
+*** ../vim-7.2.391/src/os_unixx.h 2006-03-25 22:48:00.000000000 +0100
+--- src/os_unixx.h 2010-03-10 15:14:49.000000000 +0100
+***************
+*** 28,38 ****
+ # include <sys/wait.h>
+ # endif
+
+- # if defined(HAVE_SYS_SELECT_H) && \
+- (!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME))
+- # include <sys/select.h>
+- # endif
+-
+ # ifndef WEXITSTATUS
+ # ifdef HAVE_UNION_WAIT
+ # define WEXITSTATUS(stat_val) ((stat_val).w_T.w_Retcode)
+--- 28,33 ----
+***************
+*** 65,80 ****
+ # include <string.h>
+ #endif
+
+- #ifndef HAVE_SELECT
+- # ifdef HAVE_SYS_POLL_H
+- # include <sys/poll.h>
+- # else
+- # ifdef HAVE_POLL_H
+- # include <poll.h>
+- # endif
+- # endif
+- #endif
+-
+ #ifdef HAVE_SYS_STREAM_H
+ # include <sys/stream.h>
+ #endif
+--- 60,65 ----
+*** ../vim-7.2.391/src/if_xcmdsrv.c 2009-05-16 17:29:37.000000000 +0200
+--- src/if_xcmdsrv.c 2010-03-10 15:14:09.000000000 +0100
+***************
+*** 21,41 ****
+ # include <X11/Xatom.h>
+ # endif
+
+- # if defined(HAVE_SYS_SELECT_H) && \
+- (!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME))
+- # include <sys/select.h>
+- # endif
+-
+- # ifndef HAVE_SELECT
+- # ifdef HAVE_SYS_POLL_H
+- # include <sys/poll.h>
+- # else
+- # ifdef HAVE_POLL_H
+- # include <poll.h>
+- # endif
+- # endif
+- # endif
+-
+ /*
+ * This file provides procedures that implement the command server
+ * functionality of Vim when in contact with an X11 server.
+--- 21,26 ----
+*** ../vim-7.2.391/src/netbeans.c 2010-01-19 15:12:33.000000000 +0100
+--- src/netbeans.c 2010-03-10 15:21:37.000000000 +0100
+***************
+*** 736,741 ****
+--- 736,749 ----
+ #ifndef FEAT_GUI_GTK
+ static int level = 0;
+ #endif
++ #ifdef HAVE_SELECT
++ struct timeval tval;
++ fd_set rfds;
++ #else
++ # ifdef HAVE_POLL
++ struct pollfd fds;
++ # endif
++ #endif
+
+ if (sd < 0)
+ {
+***************
+*** 755,763 ****
+ return; /* out of memory! */
+ }
+
+! /* Keep on reading for as long as there is something to read. */
+ for (;;)
+ {
+ len = sock_read(sd, buf, MAXMSGSIZE);
+ if (len <= 0)
+ break; /* error or nothing more to read */
+--- 763,788 ----
+ return; /* out of memory! */
+ }
+
+! /* Keep on reading for as long as there is something to read.
+! * Use select() or poll() to avoid blocking on a message that is exactly
+! * MAXMSGSIZE long. */
+ for (;;)
+ {
++ #ifdef HAVE_SELECT
++ FD_ZERO(&rfds);
++ FD_SET(sd, &rfds);
++ tval.tv_sec = 0;
++ tval.tv_usec = 0;
++ if (select(sd + 1, &rfds, NULL, NULL, &tval) <= 0)
++ break;
++ #else
++ # ifdef HAVE_POLL
++ fds.fd = sd;
++ fds.events = POLLIN;
++ if (poll(&fds, 1, 0) <= 0)
++ break;
++ # endif
++ #endif
+ len = sock_read(sd, buf, MAXMSGSIZE);
+ if (len <= 0)
+ break; /* error or nothing more to read */
+*** ../vim-7.2.391/src/version.c 2010-03-10 14:46:21.000000000 +0100
+--- src/version.c 2010-03-10 16:10:48.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 392,
+ /**/
+
+--
+WOMAN: I didn't know we had a king. I thought we were an autonomous
+ collective.
+DENNIS: You're fooling yourself. We're living in a dictatorship. A
+ self-perpetuating autocracy in which the working classes--
+WOMAN: Oh there you go, bringing class into it again.
+DENNIS: That's what it's all about if only people would--
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.393 b/source/ap/vim/patches/7.2.393
new file mode 100644
index 000000000..796f65487
--- /dev/null
+++ b/source/ap/vim/patches/7.2.393
@@ -0,0 +1,281 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.393
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.393
+Problem: Mac: Can't build with different Xcode developer tools directory.
+Solution: make "Developer" directory name configurable. (Rainer Muller)
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.2.392/src/configure.in 2010-02-24 14:46:58.000000000 +0100
+--- src/configure.in 2010-03-10 16:16:48.000000000 +0100
+***************
+*** 116,121 ****
+--- 116,137 ----
+ MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
+ MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
+
++ AC_MSG_CHECKING(--with-developer-dir argument)
++ AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
++ DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
++ DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
++
++ if test "x$DEVELOPER_DIR" = "x"; then
++ AC_PATH_PROG(XCODE_SELECT, xcode-select)
++ if test "x$XCODE_SELECT" != "x"; then
++ AC_MSG_CHECKING(for developer dir using xcode-select)
++ DEVELOPER_DIR=`$XCODE_SELECT -print-path`
++ AC_MSG_RESULT([$DEVELOPER_DIR])
++ else
++ DEVELOPER_DIR=/Developer
++ fi
++ fi
++
+ if test "x$MACARCH" = "xboth"; then
+ AC_MSG_CHECKING(for 10.4 universal SDK)
+ dnl There is a terrible inconsistency (but we appear to get away with it):
+***************
+*** 127,133 ****
+ save_cppflags="$CPPFLAGS"
+ save_cflags="$CFLAGS"
+ save_ldflags="$LDFLAGS"
+! CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+ AC_TRY_LINK([ ], [ ],
+ AC_MSG_RESULT(found, will make universal binary),
+
+--- 143,149 ----
+ save_cppflags="$CPPFLAGS"
+ save_cflags="$CFLAGS"
+ save_ldflags="$LDFLAGS"
+! CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+ AC_TRY_LINK([ ], [ ],
+ AC_MSG_RESULT(found, will make universal binary),
+
+***************
+*** 157,165 ****
+ dnl TODO: use -arch i386 on Intel machines
+ CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+ if test "x$MACARCH" = "xboth"; then
+! CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
+ else
+! CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon"
+ fi
+
+ dnl If Carbon is found, assume we don't want X11
+--- 173,181 ----
+ dnl TODO: use -arch i386 on Intel machines
+ CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+ if test "x$MACARCH" = "xboth"; then
+! CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
+ else
+! CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
+ fi
+
+ dnl If Carbon is found, assume we don't want X11
+***************
+*** 3233,3239 ****
+ fi
+ fi
+ if test "x$MACARCH" = "xboth"; then
+! LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+ fi
+
+ dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
+--- 3249,3255 ----
+ fi
+ fi
+ if test "x$MACARCH" = "xboth"; then
+! LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+ fi
+
+ dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
+*** ../vim-7.2.392/src/auto/configure 2010-02-24 14:46:58.000000000 +0100
+--- src/auto/configure 2010-03-10 16:19:47.000000000 +0100
+***************
+*** 718,723 ****
+--- 718,724 ----
+ VIMNAME
+ OS_EXTRA_OBJ
+ OS_EXTRA_SRC
++ XCODE_SELECT
+ CPP_MM
+ STRIP
+ AWK
+***************
+*** 774,779 ****
+--- 775,781 ----
+ enable_option_checking
+ enable_darwin
+ with_mac_arch
++ with_developer_dir
+ with_local_dir
+ with_vim_name
+ with_ex_name
+***************
+*** 1492,1497 ****
+--- 1494,1500 ----
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-mac-arch=ARCH current, intel, ppc or both
++ --with-developer-dir=PATH use PATH as location for Xcode developer tools
+ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
+ --without-local-dir do not search /usr/local for local libraries.
+ --with-vim-name=NAME what to call the Vim executable
+***************
+*** 3833,3845 ****
+ fi
+
+
+ if test "x$MACARCH" = "xboth"; then
+ { $as_echo "$as_me:$LINENO: checking for 10.4 universal SDK" >&5
+ $as_echo_n "checking for 10.4 universal SDK... " >&6; }
+ save_cppflags="$CPPFLAGS"
+ save_cflags="$CFLAGS"
+ save_ldflags="$LDFLAGS"
+! CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+--- 3836,3913 ----
+ fi
+
+
++ { $as_echo "$as_me:$LINENO: checking --with-developer-dir argument" >&5
++ $as_echo_n "checking --with-developer-dir argument... " >&6; }
++
++ # Check whether --with-developer-dir was given.
++ if test "${with_developer_dir+set}" = set; then
++ withval=$with_developer_dir; DEVELOPER_DIR="$withval"; { $as_echo "$as_me:$LINENO: result: $DEVELOPER_DIR" >&5
++ $as_echo "$DEVELOPER_DIR" >&6; }
++ else
++ DEVELOPER_DIR=""; { $as_echo "$as_me:$LINENO: result: not present" >&5
++ $as_echo "not present" >&6; }
++ fi
++
++
++ if test "x$DEVELOPER_DIR" = "x"; then
++ # Extract the first word of "xcode-select", so it can be a program name with args.
++ set dummy xcode-select; ac_word=$2
++ { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
++ $as_echo_n "checking for $ac_word... " >&6; }
++ if test "${ac_cv_path_XCODE_SELECT+set}" = set; then
++ $as_echo_n "(cached) " >&6
++ else
++ case $XCODE_SELECT in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_XCODE_SELECT="$XCODE_SELECT" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_path_XCODE_SELECT="$as_dir/$ac_word$ac_exec_ext"
++ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++ done
++ done
++ IFS=$as_save_IFS
++
++ ;;
++ esac
++ fi
++ XCODE_SELECT=$ac_cv_path_XCODE_SELECT
++ if test -n "$XCODE_SELECT"; then
++ { $as_echo "$as_me:$LINENO: result: $XCODE_SELECT" >&5
++ $as_echo "$XCODE_SELECT" >&6; }
++ else
++ { $as_echo "$as_me:$LINENO: result: no" >&5
++ $as_echo "no" >&6; }
++ fi
++
++
++ if test "x$XCODE_SELECT" != "x"; then
++ { $as_echo "$as_me:$LINENO: checking for developer dir using xcode-select" >&5
++ $as_echo_n "checking for developer dir using xcode-select... " >&6; }
++ DEVELOPER_DIR=`$XCODE_SELECT -print-path`
++ { $as_echo "$as_me:$LINENO: result: $DEVELOPER_DIR" >&5
++ $as_echo "$DEVELOPER_DIR" >&6; }
++ else
++ DEVELOPER_DIR=/Developer
++ fi
++ fi
++
+ if test "x$MACARCH" = "xboth"; then
+ { $as_echo "$as_me:$LINENO: checking for 10.4 universal SDK" >&5
+ $as_echo_n "checking for 10.4 universal SDK... " >&6; }
+ save_cppflags="$CPPFLAGS"
+ save_cflags="$CFLAGS"
+ save_ldflags="$LDFLAGS"
+! CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+***************
+*** 3960,3968 ****
+ OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
+ CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+ if test "x$MACARCH" = "xboth"; then
+! CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
+ else
+! CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon"
+ fi
+
+ # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+--- 4028,4036 ----
+ OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
+ CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+ if test "x$MACARCH" = "xboth"; then
+! CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
+ else
+! CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
+ fi
+
+ # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+***************
+*** 17319,17325 ****
+ fi
+ fi
+ if test "x$MACARCH" = "xboth"; then
+! LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+ fi
+
+ DEPEND_CFLAGS_FILTER=
+--- 17387,17393 ----
+ fi
+ fi
+ if test "x$MACARCH" = "xboth"; then
+! LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+ fi
+
+ DEPEND_CFLAGS_FILTER=
+*** ../vim-7.2.392/src/version.c 2010-03-10 16:11:57.000000000 +0100
+--- src/version.c 2010-03-10 16:26:00.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 393,
+ /**/
+
+--
+There are 2 kinds of people in my world: those who know Unix, Perl, Vim, GNU,
+Linux, etc, and those who know COBOL. It gets very difficult for me at
+parties, not knowing which group to socialise with :-)
+ Sitaram Chamarty
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.394 b/source/ap/vim/patches/7.2.394
new file mode 100644
index 000000000..50235e04d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.394
@@ -0,0 +1,99 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.394
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.394
+Problem: .lzma and .xz files are not supported.
+Solution: Recognize .lzma and .xz files so that they can be edited.
+Files: runtime/plugin/gzip.vim
+
+
+*** ../vim-7.2.393/runtime/plugin/gzip.vim 2005-07-27 23:12:49.000000000 +0200
+--- runtime/plugin/gzip.vim 2010-03-10 17:07:22.000000000 +0100
+***************
+*** 1,6 ****
+ " Vim plugin for editing compressed files.
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2005 Jul 26
+
+ " Exit quickly when:
+ " - this plugin was already loaded
+--- 1,6 ----
+ " Vim plugin for editing compressed files.
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2010 Mar 10
+
+ " Exit quickly when:
+ " - this plugin was already loaded
+***************
+*** 20,36 ****
+ "
+ " Set binary mode before reading the file.
+ " Use "gzip -d", gunzip isn't always available.
+! autocmd BufReadPre,FileReadPre *.gz,*.bz2,*.Z setlocal bin
+ autocmd BufReadPost,FileReadPost *.gz call gzip#read("gzip -dn")
+ autocmd BufReadPost,FileReadPost *.bz2 call gzip#read("bzip2 -d")
+ autocmd BufReadPost,FileReadPost *.Z call gzip#read("uncompress")
+ autocmd BufWritePost,FileWritePost *.gz call gzip#write("gzip")
+ autocmd BufWritePost,FileWritePost *.bz2 call gzip#write("bzip2")
+ autocmd BufWritePost,FileWritePost *.Z call gzip#write("compress -f")
+ autocmd FileAppendPre *.gz call gzip#appre("gzip -dn")
+ autocmd FileAppendPre *.bz2 call gzip#appre("bzip2 -d")
+ autocmd FileAppendPre *.Z call gzip#appre("uncompress")
+ autocmd FileAppendPost *.gz call gzip#write("gzip")
+ autocmd FileAppendPost *.bz2 call gzip#write("bzip2")
+ autocmd FileAppendPost *.Z call gzip#write("compress -f")
+ augroup END
+--- 20,44 ----
+ "
+ " Set binary mode before reading the file.
+ " Use "gzip -d", gunzip isn't always available.
+! autocmd BufReadPre,FileReadPre *.gz,*.bz2,*.Z,*.lzma,*.xz setlocal bin
+ autocmd BufReadPost,FileReadPost *.gz call gzip#read("gzip -dn")
+ autocmd BufReadPost,FileReadPost *.bz2 call gzip#read("bzip2 -d")
+ autocmd BufReadPost,FileReadPost *.Z call gzip#read("uncompress")
++ autocmd BufReadPost,FileReadPost *.lzma call gzip#read("lzma -d")
++ autocmd BufReadPost,FileReadPost *.xz call gzip#read("xz -d")
+ autocmd BufWritePost,FileWritePost *.gz call gzip#write("gzip")
+ autocmd BufWritePost,FileWritePost *.bz2 call gzip#write("bzip2")
+ autocmd BufWritePost,FileWritePost *.Z call gzip#write("compress -f")
++ autocmd BufWritePost,FileWritePost *.lzma call gzip#write("lzma -z")
++ autocmd BufWritePost,FileWritePost *.xz call gzip#write("xz -z")
+ autocmd FileAppendPre *.gz call gzip#appre("gzip -dn")
+ autocmd FileAppendPre *.bz2 call gzip#appre("bzip2 -d")
+ autocmd FileAppendPre *.Z call gzip#appre("uncompress")
++ autocmd FileAppendPre *.lzma call gzip#appre("lzma -d")
++ autocmd FileAppendPre *.xz call gzip#appre("xz -d")
+ autocmd FileAppendPost *.gz call gzip#write("gzip")
+ autocmd FileAppendPost *.bz2 call gzip#write("bzip2")
+ autocmd FileAppendPost *.Z call gzip#write("compress -f")
++ autocmd FileAppendPost *.lzma call gzip#write("lzma -z")
++ autocmd FileAppendPost *.xz call gzip#write("xz -z")
+ augroup END
+*** ../vim-7.2.393/src/version.c 2010-03-10 16:27:27.000000000 +0100
+--- src/version.c 2010-03-10 17:12:43.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 394,
+ /**/
+
+--
+ARTHUR: Be quiet!
+DENNIS: --but by a two-thirds majority in the case of more--
+ARTHUR: Be quiet! I order you to be quiet!
+WOMAN: Order, eh -- who does he think he is?
+ARTHUR: I am your king!
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.395 b/source/ap/vim/patches/7.2.395
new file mode 100644
index 000000000..1b5b1bae8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.395
@@ -0,0 +1,60 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.395
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.395
+Problem: In help CTRL=] on g?g? escapes the ?, causing it to fail. (Tony
+ Mechelynck)
+Solution: Don't escape ? for a help command. (Sergey Khorev)
+Files: src/normal.c
+
+
+*** ../vim-7.2.394/src/normal.c 2010-01-19 15:23:38.000000000 +0100
+--- src/normal.c 2010-03-13 13:04:46.000000000 +0100
+***************
+*** 5526,5536 ****
+ break;
+
+ default:
+ if (curbuf->b_help)
+ STRCPY(buf, "he! ");
+ else
+ {
+- tag_cmd = TRUE;
+ if (g_cmd)
+ STRCPY(buf, "tj ");
+ else
+--- 5526,5536 ----
+ break;
+
+ default:
++ tag_cmd = TRUE;
+ if (curbuf->b_help)
+ STRCPY(buf, "he! ");
+ else
+ {
+ if (g_cmd)
+ STRCPY(buf, "tj ");
+ else
+*** ../vim-7.2.394/src/version.c 2010-03-10 17:14:07.000000000 +0100
+--- src/version.c 2010-03-17 13:05:11.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 395,
+ /**/
+
+--
+There are three kinds of people: Those who can count & those who can't.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.396 b/source/ap/vim/patches/7.2.396
new file mode 100644
index 000000000..f12692311
--- /dev/null
+++ b/source/ap/vim/patches/7.2.396
@@ -0,0 +1,51 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.396
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.396
+Problem: Get E38 errors. (Dasn)
+Solution: Set cursor to line 1 instead of 0. (Dominique Pelle)
+Files: src/popupmnu.c
+
+
+*** ../vim-7.2.395/src/popupmnu.c 2010-01-19 18:05:05.000000000 +0100
+--- src/popupmnu.c 2010-03-17 12:59:01.000000000 +0100
+***************
+*** 640,646 ****
+
+ curbuf->b_changed = 0;
+ curbuf->b_p_ma = FALSE;
+! curwin->w_cursor.lnum = 0;
+ curwin->w_cursor.col = 0;
+
+ if (curwin != curwin_save && win_valid(curwin_save))
+--- 640,646 ----
+
+ curbuf->b_changed = 0;
+ curbuf->b_p_ma = FALSE;
+! curwin->w_cursor.lnum = 1;
+ curwin->w_cursor.col = 0;
+
+ if (curwin != curwin_save && win_valid(curwin_save))
+*** ../vim-7.2.395/src/version.c 2010-03-17 13:07:01.000000000 +0100
+--- src/version.c 2010-03-17 14:47:30.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 396,
+ /**/
+
+--
+There are 10 kinds of people: Those who understand binary and those who don't.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.397 b/source/ap/vim/patches/7.2.397
new file mode 100644
index 000000000..218a069a4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.397
@@ -0,0 +1,67 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.397
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.397
+Problem: Redundant check for w_lines_valid.
+Solution: Remove the if. (Lech Lorens)
+Files: src/fold.c
+
+
+*** ../vim-7.2.396/src/fold.c 2010-02-24 14:34:10.000000000 +0100
+--- src/fold.c 2010-03-17 13:03:00.000000000 +0100
+***************
+*** 1053,1067 ****
+ {
+ int i;
+
+! if (win->w_lines_valid > 0)
+! for (i = 0; i < win->w_lines_valid; ++i)
+! if (win->w_lines[i].wl_valid)
+! {
+! if (lnum < win->w_lines[i].wl_lnum)
+! return -1;
+! if (lnum <= win->w_lines[i].wl_lastlnum)
+! return i;
+! }
+ return -1;
+ }
+
+--- 1053,1066 ----
+ {
+ int i;
+
+! for (i = 0; i < win->w_lines_valid; ++i)
+! if (win->w_lines[i].wl_valid)
+! {
+! if (lnum < win->w_lines[i].wl_lnum)
+! return -1;
+! if (lnum <= win->w_lines[i].wl_lastlnum)
+! return i;
+! }
+ return -1;
+ }
+
+*** ../vim-7.2.396/src/version.c 2010-03-17 14:47:56.000000000 +0100
+--- src/version.c 2010-03-17 16:43:34.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 397,
+ /**/
+
+--
+Did you ever stop to think... and forget to start again?
+ -- Steven Wright
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.398 b/source/ap/vim/patches/7.2.398
new file mode 100644
index 000000000..a0ccc96c3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.398
@@ -0,0 +1,152 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.398
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.398
+Problem: When moving windows the cursor ends up in the wrong line.
+Solution: Set the window width and height properly. (Lech Lorens)
+Files: src/window.c
+
+
+*** ../vim-7.2.397/src/window.c 2010-01-27 20:26:41.000000000 +0100
+--- src/window.c 2010-03-17 16:40:06.000000000 +0100
+***************
+*** 991,1018 ****
+ wp->w_p_scr = curwin->w_p_scr;
+ if (need_status)
+ {
+! --oldwin->w_height;
+ oldwin->w_status_height = need_status;
+ }
+ if (flags & (WSP_TOP | WSP_BOT))
+ {
+ /* set height and row of new window to full height */
+ wp->w_winrow = tabline_height();
+! wp->w_height = curfrp->fr_height - (p_ls > 0);
+ wp->w_status_height = (p_ls > 0);
+ }
+ else
+ {
+ /* height and row of new window is same as current window */
+ wp->w_winrow = oldwin->w_winrow;
+! wp->w_height = oldwin->w_height;
+ wp->w_status_height = oldwin->w_status_height;
+ }
+ frp->fr_height = curfrp->fr_height;
+
+ /* "new_size" of the current window goes to the new window, use
+ * one column for the vertical separator */
+! wp->w_width = new_size;
+ if (before)
+ wp->w_vsep_width = 1;
+ else
+--- 991,1018 ----
+ wp->w_p_scr = curwin->w_p_scr;
+ if (need_status)
+ {
+! win_new_height(oldwin, oldwin->w_height - 1);
+ oldwin->w_status_height = need_status;
+ }
+ if (flags & (WSP_TOP | WSP_BOT))
+ {
+ /* set height and row of new window to full height */
+ wp->w_winrow = tabline_height();
+! win_new_height(wp, curfrp->fr_height - (p_ls > 0));
+ wp->w_status_height = (p_ls > 0);
+ }
+ else
+ {
+ /* height and row of new window is same as current window */
+ wp->w_winrow = oldwin->w_winrow;
+! win_new_height(wp, oldwin->w_height);
+ wp->w_status_height = oldwin->w_status_height;
+ }
+ frp->fr_height = curfrp->fr_height;
+
+ /* "new_size" of the current window goes to the new window, use
+ * one column for the vertical separator */
+! win_new_width(wp, new_size);
+ if (before)
+ wp->w_vsep_width = 1;
+ else
+***************
+*** 1049,1061 ****
+ if (flags & (WSP_TOP | WSP_BOT))
+ {
+ wp->w_wincol = 0;
+! wp->w_width = Columns;
+ wp->w_vsep_width = 0;
+ }
+ else
+ {
+ wp->w_wincol = oldwin->w_wincol;
+! wp->w_width = oldwin->w_width;
+ wp->w_vsep_width = oldwin->w_vsep_width;
+ }
+ frp->fr_width = curfrp->fr_width;
+--- 1049,1061 ----
+ if (flags & (WSP_TOP | WSP_BOT))
+ {
+ wp->w_wincol = 0;
+! win_new_width(wp, Columns);
+ wp->w_vsep_width = 0;
+ }
+ else
+ {
+ wp->w_wincol = oldwin->w_wincol;
+! win_new_width(wp, oldwin->w_width);
+ wp->w_vsep_width = oldwin->w_vsep_width;
+ }
+ frp->fr_width = curfrp->fr_width;
+***************
+*** 1111,1117 ****
+ }
+
+ /*
+! * make the new window the current window and redraw
+ */
+ if (do_equal || dir != 0)
+ win_equal(wp, TRUE,
+--- 1111,1117 ----
+ }
+
+ /*
+! * equalize the window sizes.
+ */
+ if (do_equal || dir != 0)
+ win_equal(wp, TRUE,
+***************
+*** 1143,1148 ****
+--- 1143,1152 ----
+ if (size != 0)
+ p_wh = size;
+ }
++
++ /*
++ * make the new window the current window
++ */
+ win_enter(wp, FALSE);
+ #ifdef FEAT_VERTSPLIT
+ if (flags & WSP_VERT)
+*** ../vim-7.2.397/src/version.c 2010-03-17 16:45:04.000000000 +0100
+--- src/version.c 2010-03-17 16:53:51.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 398,
+ /**/
+
+--
+It's not hard to meet expenses, they're everywhere.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.399 b/source/ap/vim/patches/7.2.399
new file mode 100644
index 000000000..16ffa0f41
--- /dev/null
+++ b/source/ap/vim/patches/7.2.399
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.399 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.399 (extra, after 7.2.388)
+Problem: Cannot compile on MingW.
+Solution: Move ifneq to separate line. (Vlad Sandrini, Dominique Pelle)
+Files: src/Make_ming.mak
+
+
+*** ../vim-7.2.398/src/Make_ming.mak 2010-03-10 13:19:28.000000000 +0100
+--- src/Make_ming.mak 2010-03-17 17:23:31.000000000 +0100
+***************
+*** 215,226 ****
+ ifndef RUBY_PLATFORM
+ ifeq ($(RUBY_VER), 16)
+ RUBY_PLATFORM = i586-mswin32
+! else ifneq ("X$(wildcard, $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32)", X)
+ RUBY_PLATFORM = i386-mingw32
+ else
+ RUBY_PLATFORM = i386-mswin32
+ endif
+ endif
+
+ ifndef RUBY_INSTALL_NAME
+ ifeq ($(RUBY_VER), 16)
+--- 215,228 ----
+ ifndef RUBY_PLATFORM
+ ifeq ($(RUBY_VER), 16)
+ RUBY_PLATFORM = i586-mswin32
+! else
+! ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),)
+ RUBY_PLATFORM = i386-mingw32
+ else
+ RUBY_PLATFORM = i386-mswin32
+ endif
+ endif
++ endif
+
+ ifndef RUBY_INSTALL_NAME
+ ifeq ($(RUBY_VER), 16)
+*** ../vim-7.2.398/src/version.c 2010-03-17 16:54:51.000000000 +0100
+--- src/version.c 2010-03-17 17:23:40.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 399,
+ /**/
+
+--
+Life is a gift, living is an art. (Bram Moolenaar)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.400 b/source/ap/vim/patches/7.2.400
new file mode 100644
index 000000000..0c3c5487d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.400
@@ -0,0 +1,454 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.400
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.400 (after 7.2.387)
+Problem: Dynamic Ruby is not initialised properly for version 1.9.1.
+ Ruby cannot create strings from NULL.
+Solution: Cleanup #ifdefs. Handle NULL like an empty string. Add
+ ruby_init_stack. (Sergey Khorev)
+Files: src/if_ruby.c
+
+
+*** ../vim-7.2.399/src/if_ruby.c 2010-03-10 12:46:38.000000000 +0100
+--- src/if_ruby.c 2010-03-17 17:37:53.000000000 +0100
+***************
+*** 53,58 ****
+--- 53,63 ----
+ # undef _WIN32_WINNT
+ #endif
+
++ #if (defined(RUBY_VERSION) && RUBY_VERSION >= 19) \
++ || (defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19)
++ # define RUBY19_OR_LATER 1
++ #endif
++
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ /* Ruby 1.9 defines a number of static functions which use rb_num2long and
+ * rb_int2big */
+***************
+*** 61,67 ****
+ #endif
+
+ #include <ruby.h>
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ # include <ruby/encoding.h>
+ #endif
+
+--- 66,72 ----
+ #endif
+
+ #include <ruby.h>
+! #ifdef RUBY19_OR_LATER
+ # include <ruby/encoding.h>
+ #endif
+
+***************
+*** 172,179 ****
+ # define rb_ary_new dll_rb_ary_new
+ # define rb_ary_push dll_rb_ary_push
+ #endif
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
+! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ # define rb_errinfo dll_rb_errinfo
+ #else
+ # define ruby_errinfo (*dll_ruby_errinfo)
+--- 177,183 ----
+ # define rb_ary_new dll_rb_ary_new
+ # define rb_ary_push dll_rb_ary_push
+ #endif
+! #ifdef RUBY19_OR_LATER
+ # define rb_errinfo dll_rb_errinfo
+ #else
+ # define ruby_errinfo (*dll_ruby_errinfo)
+***************
+*** 185,196 ****
+ # define rb_w32_snprintf dll_rb_w32_snprintf
+ #endif
+
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ # define ruby_script dll_ruby_script
+ # define rb_enc_find_index dll_rb_enc_find_index
+ # define rb_enc_find dll_rb_enc_find
+ # define rb_enc_str_new dll_rb_enc_str_new
+ # define rb_sprintf dll_rb_sprintf
+ #endif
+
+ /*
+--- 189,201 ----
+ # define rb_w32_snprintf dll_rb_w32_snprintf
+ #endif
+
+! #ifdef RUBY19_OR_LATER
+ # define ruby_script dll_ruby_script
+ # define rb_enc_find_index dll_rb_enc_find_index
+ # define rb_enc_find dll_rb_enc_find
+ # define rb_enc_str_new dll_rb_enc_str_new
+ # define rb_sprintf dll_rb_sprintf
++ # define ruby_init_stack dll_ruby_init_stack
+ #endif
+
+ /*
+***************
+*** 240,247 ****
+ static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
+ static VALUE (*dll_rb_str_new) (const char*, long);
+ static VALUE (*dll_rb_str_new2) (const char*);
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
+! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ static VALUE (*dll_rb_errinfo) (void);
+ #else
+ static VALUE *dll_ruby_errinfo;
+--- 245,251 ----
+ static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
+ static VALUE (*dll_rb_str_new) (const char*, long);
+ static VALUE (*dll_rb_str_new2) (const char*);
+! #ifdef RUBY19_OR_LATER
+ static VALUE (*dll_rb_errinfo) (void);
+ #else
+ static VALUE *dll_ruby_errinfo;
+***************
+*** 255,276 ****
+ static VALUE (*dll_rb_ary_new) (void);
+ static VALUE (*dll_rb_ary_push) (VALUE, VALUE);
+ #endif
+! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ static VALUE (*dll_rb_int2big)(SIGNED_VALUE);
+ #endif
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+ static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
+ #endif
+
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ static void (*dll_ruby_script) (const char*);
+ static int (*dll_rb_enc_find_index) (const char*);
+ static rb_encoding* (*dll_rb_enc_find) (const char*);
+ static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*);
+ static VALUE (*dll_rb_sprintf) (const char*, ...);
+ #endif
+
+! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ static SIGNED_VALUE rb_num2long_stub(VALUE x)
+ {
+ return dll_rb_num2long(x);
+--- 259,281 ----
+ static VALUE (*dll_rb_ary_new) (void);
+ static VALUE (*dll_rb_ary_push) (VALUE, VALUE);
+ #endif
+! #ifdef RUBY19_OR_LATER
+ static VALUE (*dll_rb_int2big)(SIGNED_VALUE);
+ #endif
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
+ static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
+ #endif
+
+! #ifdef RUBY19_OR_LATER
+ static void (*dll_ruby_script) (const char*);
+ static int (*dll_rb_enc_find_index) (const char*);
+ static rb_encoding* (*dll_rb_enc_find) (const char*);
+ static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*);
+ static VALUE (*dll_rb_sprintf) (const char*, ...);
++ static void (*ruby_init_stack)(VALUE*);
+ #endif
+
+! #ifdef RUBY19_OR_LATER
+ static SIGNED_VALUE rb_num2long_stub(VALUE x)
+ {
+ return dll_rb_num2long(x);
+***************
+*** 336,343 ****
+ {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
+ {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
+ {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2},
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
+! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo},
+ #else
+ {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
+--- 341,347 ----
+ {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
+ {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
+ {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2},
+! #ifdef RUBY19_OR_LATER
+ {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo},
+ #else
+ {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
+***************
+*** 360,374 ****
+ {"rb_ary_new", (RUBY_PROC*)&dll_rb_ary_new},
+ {"rb_ary_push", (RUBY_PROC*)&dll_rb_ary_push},
+ #endif
+! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ {"rb_int2big", (RUBY_PROC*)&dll_rb_int2big},
+- #endif
+- #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ {"ruby_script", (RUBY_PROC*)&dll_ruby_script},
+ {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
+ {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find},
+ {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new},
+ {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf},
+ #endif
+ {"", NULL},
+ };
+--- 364,377 ----
+ {"rb_ary_new", (RUBY_PROC*)&dll_rb_ary_new},
+ {"rb_ary_push", (RUBY_PROC*)&dll_rb_ary_push},
+ #endif
+! #ifdef RUBY19_OR_LATER
+ {"rb_int2big", (RUBY_PROC*)&dll_rb_int2big},
+ {"ruby_script", (RUBY_PROC*)&dll_ruby_script},
+ {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
+ {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find},
+ {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new},
+ {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf},
++ {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack},
+ #endif
+ {"", NULL},
+ };
+***************
+*** 467,473 ****
+ static VALUE
+ vim_str2rb_enc_str(const char *s)
+ {
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ int isnum;
+ long lval;
+ char_u *sval;
+--- 470,476 ----
+ static VALUE
+ vim_str2rb_enc_str(const char *s)
+ {
+! #ifdef RUBY19_OR_LATER
+ int isnum;
+ long lval;
+ char_u *sval;
+***************
+*** 489,495 ****
+ static VALUE
+ eval_enc_string_protect(const char *str, int *state)
+ {
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ int isnum;
+ long lval;
+ char_u *sval;
+--- 492,498 ----
+ static VALUE
+ eval_enc_string_protect(const char *str, int *state)
+ {
+! #ifdef RUBY19_OR_LATER
+ int isnum;
+ long lval;
+ char_u *sval;
+***************
+*** 591,606 ****
+ char *argv[] = {"gvim.exe"};
+ NtInitialize(&argc, &argv);
+ #endif
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ RUBY_INIT_STACK;
+ #endif
+ ruby_init();
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ ruby_script("vim-ruby");
+ #endif
+ ruby_init_loadpath();
+ ruby_io_init();
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+ rb_enc_find_index("encdb");
+ #endif
+ ruby_vim_init();
+--- 594,609 ----
+ char *argv[] = {"gvim.exe"};
+ NtInitialize(&argc, &argv);
+ #endif
+! #ifdef RUBY19_OR_LATER
+ RUBY_INIT_STACK;
+ #endif
+ ruby_init();
+! #ifdef RUBY19_OR_LATER
+ ruby_script("vim-ruby");
+ #endif
+ ruby_init_loadpath();
+ ruby_io_init();
+! #ifdef RUBY19_OR_LATER
+ rb_enc_find_index("encdb");
+ #endif
+ ruby_vim_init();
+***************
+*** 657,664 ****
+ break;
+ case TAG_RAISE:
+ case TAG_FATAL:
+! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
+! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ eclass = CLASS_OF(rb_errinfo());
+ einfo = rb_obj_as_string(rb_errinfo());
+ #else
+--- 660,666 ----
+ break;
+ case TAG_RAISE:
+ case TAG_FATAL:
+! #ifdef RUBY19_OR_LATER
+ eclass = CLASS_OF(rb_errinfo());
+ einfo = rb_obj_as_string(rb_errinfo());
+ #else
+***************
+*** 720,775 ****
+
+ if (tv->v_type == VAR_STRING)
+ {
+! result = rb_str_new2((char *)tv->vval.v_string);
+ }
+ else if (tv->v_type == VAR_NUMBER)
+ {
+! result = INT2NUM(tv->vval.v_number);
+ }
+ # ifdef FEAT_FLOAT
+ else if (tv->v_type == VAR_FLOAT)
+ {
+! result = rb_float_new(tv->vval.v_float);
+ }
+ # endif
+ else if (tv->v_type == VAR_LIST)
+ {
+! list_T *list = tv->vval.v_list;
+! listitem_T *curr;
+
+! result = rb_ary_new();
+
+! if (list != NULL)
+! {
+! for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
+! {
+! rb_ary_push(result, vim_to_ruby(&curr->li_tv));
+! }
+! }
+ }
+ else if (tv->v_type == VAR_DICT)
+ {
+! result = rb_hash_new();
+
+! if (tv->vval.v_dict != NULL)
+! {
+! hashtab_T *ht = &tv->vval.v_dict->dv_hashtab;
+! long_u todo = ht->ht_used;
+! hashitem_T *hi;
+! dictitem_T *di;
+!
+! for (hi = ht->ht_array; todo > 0; ++hi)
+! {
+! if (!HASHITEM_EMPTY(hi))
+! {
+! --todo;
+
+! di = dict_lookup(hi);
+! rb_hash_aset(result, rb_str_new2((char *)hi->hi_key),
+ vim_to_ruby(&di->di_tv));
+! }
+! }
+! }
+ } /* else return Qnil; */
+
+ return result;
+--- 722,778 ----
+
+ if (tv->v_type == VAR_STRING)
+ {
+! result = rb_str_new2((char *)(tv->vval.v_string == NULL
+! ? "" : tv->vval.v_string));
+ }
+ else if (tv->v_type == VAR_NUMBER)
+ {
+! result = INT2NUM(tv->vval.v_number);
+ }
+ # ifdef FEAT_FLOAT
+ else if (tv->v_type == VAR_FLOAT)
+ {
+! result = rb_float_new(tv->vval.v_float);
+ }
+ # endif
+ else if (tv->v_type == VAR_LIST)
+ {
+! list_T *list = tv->vval.v_list;
+! listitem_T *curr;
+
+! result = rb_ary_new();
+
+! if (list != NULL)
+! {
+! for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
+! {
+! rb_ary_push(result, vim_to_ruby(&curr->li_tv));
+! }
+! }
+ }
+ else if (tv->v_type == VAR_DICT)
+ {
+! result = rb_hash_new();
+
+! if (tv->vval.v_dict != NULL)
+! {
+! hashtab_T *ht = &tv->vval.v_dict->dv_hashtab;
+! long_u todo = ht->ht_used;
+! hashitem_T *hi;
+! dictitem_T *di;
+!
+! for (hi = ht->ht_array; todo > 0; ++hi)
+! {
+! if (!HASHITEM_EMPTY(hi))
+! {
+! --todo;
+
+! di = dict_lookup(hi);
+! rb_hash_aset(result, rb_str_new2((char *)hi->hi_key),
+ vim_to_ruby(&di->di_tv));
+! }
+! }
+! }
+ } /* else return Qnil; */
+
+ return result;
+***************
+*** 785,791 ****
+ tv = eval_expr((char_u *)StringValuePtr(str), NULL);
+ if (tv == NULL)
+ {
+! return Qnil;
+ }
+ result = vim_to_ruby(tv);
+
+--- 788,794 ----
+ tv = eval_expr((char_u *)StringValuePtr(str), NULL);
+ if (tv == NULL)
+ {
+! return Qnil;
+ }
+ result = vim_to_ruby(tv);
+
+*** ../vim-7.2.399/src/version.c 2010-03-17 17:24:58.000000000 +0100
+--- src/version.c 2010-03-17 18:14:31.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 400,
+ /**/
+
+--
+Q: What do you call a fish without an eye?
+A: fsh!
+Q: What do you call a deer with no eyes?
+A: no eye deer.
+Q: What do you call a deer with no eyes and no legs?
+A: still no eye deer.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.401 b/source/ap/vim/patches/7.2.401
new file mode 100644
index 000000000..032076abd
--- /dev/null
+++ b/source/ap/vim/patches/7.2.401
@@ -0,0 +1,61 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.401
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.401
+Problem: ":e dir<Tab>" with 'wildmode' set to "list" doesn't highlight
+ directory names with a space. (Alexandre Provencio)
+Solution: Remove the backslash before checking if the name is a directory.
+ (Dominique Pelle)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.2.400/src/ex_getln.c 2010-03-02 17:23:10.000000000 +0100
+--- src/ex_getln.c 2010-03-17 19:00:54.000000000 +0100
+***************
+*** 3948,3955 ****
+ || xp->xp_context == EXPAND_SHELLCMD
+ || xp->xp_context == EXPAND_BUFFERS)
+ {
+! /* highlight directories */
+! j = (mch_isdir(files_found[k]));
+ if (showtail)
+ p = L_SHOWFILE(k);
+ else
+--- 3948,3959 ----
+ || xp->xp_context == EXPAND_SHELLCMD
+ || xp->xp_context == EXPAND_BUFFERS)
+ {
+! char_u *halved_slash;
+!
+! /* highlight directories */
+! halved_slash = backslash_halve_save(files_found[k]);
+! j = mch_isdir(halved_slash);
+! vim_free(halved_slash);
+ if (showtail)
+ p = L_SHOWFILE(k);
+ else
+*** ../vim-7.2.400/src/version.c 2010-03-17 18:15:17.000000000 +0100
+--- src/version.c 2010-03-17 19:12:22.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 401,
+ /**/
+
+--
+Two cows are standing together in a field. One asks the other:
+"So what do you think about this Mad Cow Disease?"
+The other replies: "That doesn't concern me. I'm a helicopter."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.402 b/source/ap/vim/patches/7.2.402
new file mode 100644
index 000000000..7c256bb16
--- /dev/null
+++ b/source/ap/vim/patches/7.2.402
@@ -0,0 +1,91 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.402
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.402
+Problem: This gives a #705 error: let X = function('haslocaldir')
+ let X = function('getcwd')
+Solution: Don't give E705 when the name is found in the hashtab. (Sergey
+ Khorev)
+Files: src/eval.c
+
+
+*** ../vim-7.2.401/src/eval.c 2010-03-10 13:43:22.000000000 +0100
+--- src/eval.c 2010-03-17 19:35:01.000000000 +0100
+***************
+*** 19103,19108 ****
+--- 19103,19116 ----
+ hashtab_T *ht;
+ char_u *p;
+
++ ht = find_var_ht(name, &varname);
++ if (ht == NULL || *varname == NUL)
++ {
++ EMSG2(_(e_illvar), name);
++ return;
++ }
++ v = find_var_in_ht(ht, varname, TRUE);
++
+ if (tv->v_type == VAR_FUNC)
+ {
+ if (!(vim_strchr((char_u *)"wbs", name[0]) != NULL && name[1] == ':')
+***************
+*** 19112,19118 ****
+ EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name);
+ return;
+ }
+! if (function_exists(name))
+ {
+ EMSG2(_("E705: Variable name conflicts with existing function: %s"),
+ name);
+--- 19120,19129 ----
+ EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name);
+ return;
+ }
+! /* Don't allow hiding a function. When "v" is not NULL we migth be
+! * assigning another function to the same var, the type is checked
+! * below. */
+! if (v == NULL && function_exists(name))
+ {
+ EMSG2(_("E705: Variable name conflicts with existing function: %s"),
+ name);
+***************
+*** 19120,19133 ****
+ }
+ }
+
+- ht = find_var_ht(name, &varname);
+- if (ht == NULL || *varname == NUL)
+- {
+- EMSG2(_(e_illvar), name);
+- return;
+- }
+-
+- v = find_var_in_ht(ht, varname, TRUE);
+ if (v != NULL)
+ {
+ /* existing variable, need to clear the value */
+--- 19131,19136 ----
+*** ../vim-7.2.401/src/version.c 2010-03-17 19:13:19.000000000 +0100
+--- src/version.c 2010-03-17 19:36:09.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 402,
+ /**/
+
+--
+Michael: There is no such thing as a dump question.
+Bernard: Sure there is. For example "what is a core dump?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.403 b/source/ap/vim/patches/7.2.403
new file mode 100644
index 000000000..d2949dbc0
--- /dev/null
+++ b/source/ap/vim/patches/7.2.403
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.403
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.403 (after 7.2.400)
+Problem: Compiler warning for pointer type. (Tony Mechelynck)
+Solution: Move type cast to the right place.
+Files: src/if_ruby.c
+
+
+*** ../vim-7.2.402/src/if_ruby.c 2010-03-17 18:15:17.000000000 +0100
+--- src/if_ruby.c 2010-03-19 23:08:06.000000000 +0100
+***************
+*** 722,729 ****
+
+ if (tv->v_type == VAR_STRING)
+ {
+! result = rb_str_new2((char *)(tv->vval.v_string == NULL
+! ? "" : tv->vval.v_string));
+ }
+ else if (tv->v_type == VAR_NUMBER)
+ {
+--- 722,729 ----
+
+ if (tv->v_type == VAR_STRING)
+ {
+! result = rb_str_new2(tv->vval.v_string == NULL
+! ? "" : (char *)(tv->vval.v_string));
+ }
+ else if (tv->v_type == VAR_NUMBER)
+ {
+*** ../vim-7.2.402/src/version.c 2010-03-17 19:53:44.000000000 +0100
+--- src/version.c 2010-03-19 23:07:13.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 403,
+ /**/
+
+--
+If "R" is Reverse, how come "D" is FORWARD?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.404 b/source/ap/vim/patches/7.2.404
new file mode 100644
index 000000000..fa1a0b6b4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.404
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.404
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.404
+Problem: Pointers for composing characters are not properly initialized.
+Solution: Compute the size of the pointer, not what it points to. (Yukihiro
+ Nakadaira)
+Files: src/screen.c
+
+
+*** ../vim-7.2.403/src/screen.c 2010-02-03 15:47:59.000000000 +0100
+--- src/screen.c 2010-03-23 13:48:05.000000000 +0100
+***************
+*** 7536,7542 ****
+ new_ScreenLines = (schar_T *)lalloc((long_u)(
+ (Rows + 1) * Columns * sizeof(schar_T)), FALSE);
+ #ifdef FEAT_MBYTE
+! vim_memset(new_ScreenLinesC, 0, sizeof(u8char_T) * MAX_MCO);
+ if (enc_utf8)
+ {
+ new_ScreenLinesUC = (u8char_T *)lalloc((long_u)(
+--- 7536,7542 ----
+ new_ScreenLines = (schar_T *)lalloc((long_u)(
+ (Rows + 1) * Columns * sizeof(schar_T)), FALSE);
+ #ifdef FEAT_MBYTE
+! vim_memset(new_ScreenLinesC, 0, sizeof(u8char_T *) * MAX_MCO);
+ if (enc_utf8)
+ {
+ new_ScreenLinesUC = (u8char_T *)lalloc((long_u)(
+*** ../vim-7.2.403/src/version.c 2010-03-19 23:08:22.000000000 +0100
+--- src/version.c 2010-03-23 13:54:47.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 404,
+ /**/
+
+--
+LAUNCELOT: Isn't there a St. Aaaaarrrrrrggghhh's in Cornwall?
+ARTHUR: No, that's Saint Ives.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.405 b/source/ap/vim/patches/7.2.405
new file mode 100644
index 000000000..b79a19aa9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.405
@@ -0,0 +1,48 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.405
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.405
+Problem: When built with small features the matching text is not
+ highlighted for ":s/pat/repl/c".
+Solution: Remove the #ifdef for IncSearch. (James Vega)
+Files: src/syntax.c
+
+
+*** ../vim-7.2.404/src/syntax.c 2010-03-10 13:43:22.000000000 +0100
+--- src/syntax.c 2010-03-23 14:36:10.000000000 +0100
+***************
+*** 6205,6214 ****
+ {
+ CENT("ErrorMsg term=standout ctermbg=DarkRed ctermfg=White",
+ "ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White"),
+- #ifdef FEAT_SEARCH_EXTRA
+ CENT("IncSearch term=reverse cterm=reverse",
+ "IncSearch term=reverse cterm=reverse gui=reverse"),
+- #endif
+ CENT("ModeMsg term=bold cterm=bold",
+ "ModeMsg term=bold cterm=bold gui=bold"),
+ CENT("NonText term=bold ctermfg=Blue",
+--- 6205,6212 ----
+*** ../vim-7.2.404/src/version.c 2010-03-23 13:56:53.000000000 +0100
+--- src/version.c 2010-03-23 14:37:08.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 405,
+ /**/
+
+--
+Dreams are free, but there's a small charge for alterations.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.406 b/source/ap/vim/patches/7.2.406
new file mode 100644
index 000000000..cff265f52
--- /dev/null
+++ b/source/ap/vim/patches/7.2.406
@@ -0,0 +1,123 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.406
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.406
+Problem: Patch 7.2.119 introduces uninit mem read. (Dominique Pelle)
+Solution: Only used ScreeenLinesC when ScreeenLinesUC is not zero. (Yukihiro
+ Nakadaira) Also clear ScreeenLinesC when allocating.
+Files: src/screen.c
+
+
+*** ../vim-7.2.405/src/screen.c 2010-03-23 13:56:53.000000000 +0100
+--- src/screen.c 2010-03-23 15:26:44.000000000 +0100
+***************
+*** 25,34 ****
+ * one character which occupies two display cells.
+ * For UTF-8 a multi-byte character is converted to Unicode and stored in
+ * ScreenLinesUC[]. ScreenLines[] contains the first byte only. For an ASCII
+! * character without composing chars ScreenLinesUC[] will be 0. When the
+! * character occupies two display cells the next byte in ScreenLines[] is 0.
+ * ScreenLinesC[][] contain up to 'maxcombine' composing characters
+! * (drawn on top of the first character). They are 0 when not used.
+ * ScreenLines2[] is only used for euc-jp to store the second byte if the
+ * first byte is 0x8e (single-width character).
+ *
+--- 25,35 ----
+ * one character which occupies two display cells.
+ * For UTF-8 a multi-byte character is converted to Unicode and stored in
+ * ScreenLinesUC[]. ScreenLines[] contains the first byte only. For an ASCII
+! * character without composing chars ScreenLinesUC[] will be 0 and
+! * ScreenLinesC[][] is not used. When the character occupies two display
+! * cells the next byte in ScreenLines[] is 0.
+ * ScreenLinesC[][] contain up to 'maxcombine' composing characters
+! * (drawn on top of the first character). There is 0 after the last one used.
+ * ScreenLines2[] is only used for euc-jp to store the second byte if the
+ * first byte is 0x8e (single-width character).
+ *
+***************
+*** 4893,4898 ****
+--- 4894,4900 ----
+
+ /*
+ * Return if the composing characters at "off_from" and "off_to" differ.
++ * Only to be used when ScreenLinesUC[off_from] != 0.
+ */
+ static int
+ comp_char_differs(off_from, off_to)
+***************
+*** 6281,6286 ****
+--- 6283,6289 ----
+ /*
+ * Return TRUE if composing characters for screen posn "off" differs from
+ * composing characters in "u8cc".
++ * Only to be used when ScreenLinesUC[off] != 0.
+ */
+ static int
+ screen_comp_differs(off, u8cc)
+***************
+*** 6461,6468 ****
+ && c == 0x8e
+ && ScreenLines2[off] != ptr[1])
+ || (enc_utf8
+! && (ScreenLinesUC[off] != (u8char_T)(c >= 0x80 ? u8c : 0)
+! || screen_comp_differs(off, u8cc)))
+ #endif
+ || ScreenAttrs[off] != attr
+ || exmode_active;
+--- 6464,6473 ----
+ && c == 0x8e
+ && ScreenLines2[off] != ptr[1])
+ || (enc_utf8
+! && (ScreenLinesUC[off] !=
+! (u8char_T)(c < 0x80 && u8cc[0] == 0 ? 0 : u8c)
+! || (ScreenLinesUC[off] != 0
+! && screen_comp_differs(off, u8cc))))
+ #endif
+ || ScreenAttrs[off] != attr
+ || exmode_active;
+***************
+*** 7542,7548 ****
+ new_ScreenLinesUC = (u8char_T *)lalloc((long_u)(
+ (Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
+ for (i = 0; i < p_mco; ++i)
+! new_ScreenLinesC[i] = (u8char_T *)lalloc((long_u)(
+ (Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
+ }
+ if (enc_dbcs == DBCS_JPNU)
+--- 7547,7553 ----
+ new_ScreenLinesUC = (u8char_T *)lalloc((long_u)(
+ (Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
+ for (i = 0; i < p_mco; ++i)
+! new_ScreenLinesC[i] = (u8char_T *)lalloc_clear((long_u)(
+ (Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
+ }
+ if (enc_dbcs == DBCS_JPNU)
+*** ../vim-7.2.405/src/version.c 2010-03-23 14:39:07.000000000 +0100
+--- src/version.c 2010-03-23 15:34:11.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 406,
+ /**/
+
+--
+VOICE OVER: As the horrendous Black Beast lunged forward, escape for Arthur
+ and his knights seemed hopeless, when, suddenly ... the animator
+ suffered a fatal heart attack.
+ANIMATOR: Aaaaagh!
+VOICE OVER: The cartoon peril was no more ... The Quest for Holy Grail could
+ continue.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.407 b/source/ap/vim/patches/7.2.407
new file mode 100644
index 000000000..0237a9d13
--- /dev/null
+++ b/source/ap/vim/patches/7.2.407
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.407
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.407
+Problem: When using an expression in ":s" backslashes in the result are
+ dropped. (Sergey Goldgaber, Christian Brabandt)
+Solution: Double backslashes.
+Files: src/regexp.c
+
+
+*** ../vim-7.2.406/src/regexp.c 2009-11-26 20:41:19.000000000 +0100
+--- src/regexp.c 2010-03-23 16:22:35.000000000 +0100
+***************
+*** 6963,6968 ****
+--- 6963,6970 ----
+ eval_result = eval_to_string(source + 2, NULL, TRUE);
+ if (eval_result != NULL)
+ {
++ int had_backslash = FALSE;
++
+ for (s = eval_result; *s != NUL; mb_ptr_adv(s))
+ {
+ /* Change NL to CR, so that it becomes a line break.
+***************
+*** 6970,6976 ****
+--- 6972,6991 ----
+ if (*s == NL)
+ *s = CAR;
+ else if (*s == '\\' && s[1] != NUL)
++ {
+ ++s;
++ had_backslash = TRUE;
++ }
++ }
++ if (had_backslash && backslash)
++ {
++ /* Backslashes will be consumed, need to double them. */
++ s = vim_strsave_escaped(eval_result, (char_u *)"\\");
++ if (s != NULL)
++ {
++ vim_free(eval_result);
++ eval_result = s;
++ }
+ }
+
+ dst += STRLEN(eval_result);
+*** ../vim-7.2.406/src/version.c 2010-03-23 15:36:29.000000000 +0100
+--- src/version.c 2010-03-23 16:26:22.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 407,
+ /**/
+
+--
+Sorry, no fortune today.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.408 b/source/ap/vim/patches/7.2.408
new file mode 100644
index 000000000..25ac3a9c3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.408
@@ -0,0 +1,73 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.408
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.408
+Problem: With ":g/the/s/foo/bar/" the '[ and '] marks can be set to a line
+ that was not changed.
+Solution: Only set '[ and '] marks when a substitution was done.
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.2.407/src/ex_cmds.c 2009-07-09 20:06:30.000000000 +0200
+--- src/ex_cmds.c 2010-03-23 17:31:17.000000000 +0100
+***************
+*** 4238,4243 ****
+--- 4238,4244 ----
+ char_u *sub_firstline; /* allocated copy of first sub line */
+ int endcolumn = FALSE; /* cursor in last column when done */
+ pos_T old_cursor = curwin->w_cursor;
++ int start_nsubs;
+
+ cmd = eap->arg;
+ if (!global_busy)
+***************
+*** 4245,4250 ****
+--- 4246,4252 ----
+ sub_nsubs = 0;
+ sub_nlines = 0;
+ }
++ start_nsubs = sub_nsubs;
+
+ if (eap->cmdidx == CMD_tilde)
+ which_pat = RE_LAST; /* use last used regexp */
+***************
+*** 5106,5112 ****
+ if (do_count)
+ curwin->w_cursor = old_cursor;
+
+! if (sub_nsubs)
+ {
+ /* Set the '[ and '] marks. */
+ curbuf->b_op_start.lnum = eap->line1;
+--- 5108,5114 ----
+ if (do_count)
+ curwin->w_cursor = old_cursor;
+
+! if (sub_nsubs > start_nsubs)
+ {
+ /* Set the '[ and '] marks. */
+ curbuf->b_op_start.lnum = eap->line1;
+*** ../vim-7.2.407/src/version.c 2010-03-23 16:27:15.000000000 +0100
+--- src/version.c 2010-03-23 17:35:40.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 408,
+ /**/
+
+--
+Permission is granted to read this message out aloud on Kings Cross Road,
+London, under the condition that the orator is properly dressed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.409 b/source/ap/vim/patches/7.2.409
new file mode 100644
index 000000000..fdda4a001
--- /dev/null
+++ b/source/ap/vim/patches/7.2.409
@@ -0,0 +1,60 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.409
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.409
+Problem: Summary of number of substitutes is incorrect for ":folddo". (Jean
+ Johner)
+Solution: Reset sub_nsubs and sub_nlines in global_exe().
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.2.408/src/ex_cmds.c 2010-03-23 17:36:24.000000000 +0100
+--- src/ex_cmds.c 2010-03-23 17:42:49.000000000 +0100
+***************
+*** 5238,5245 ****
+ type = *eap->cmd;
+ cmd = eap->arg;
+ which_pat = RE_LAST; /* default: use last used regexp */
+- sub_nsubs = 0;
+- sub_nlines = 0;
+
+ /*
+ * undocumented vi feature:
+--- 5238,5243 ----
+***************
+*** 5343,5348 ****
+--- 5341,5348 ----
+ /* When the command writes a message, don't overwrite the command. */
+ msg_didout = TRUE;
+
++ sub_nsubs = 0;
++ sub_nlines = 0;
+ global_need_beginline = FALSE;
+ global_busy = 1;
+ old_lcount = curbuf->b_ml.ml_line_count;
+*** ../vim-7.2.408/src/version.c 2010-03-23 17:36:24.000000000 +0100
+--- src/version.c 2010-03-23 17:47:53.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 409,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite colour?
+LAUNCELOT: Blue.
+BRIDGEKEEPER: Right. Off you go.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.410 b/source/ap/vim/patches/7.2.410
new file mode 100644
index 000000000..660b06810
--- /dev/null
+++ b/source/ap/vim/patches/7.2.410
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.410
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.410
+Problem: Highlighting directories for completion doesn't work properly.
+Solution: Don't halve backslashes when not needed, expaned "~/".
+ (Dominique Pelle)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.2.409/src/ex_getln.c 2010-03-17 19:13:19.000000000 +0100
+--- src/ex_getln.c 2010-03-23 18:00:56.000000000 +0100
+***************
+*** 3948,3959 ****
+ || xp->xp_context == EXPAND_SHELLCMD
+ || xp->xp_context == EXPAND_BUFFERS)
+ {
+- char_u *halved_slash;
+-
+ /* highlight directories */
+! halved_slash = backslash_halve_save(files_found[k]);
+! j = mch_isdir(halved_slash);
+! vim_free(halved_slash);
+ if (showtail)
+ p = L_SHOWFILE(k);
+ else
+--- 3948,3973 ----
+ || xp->xp_context == EXPAND_SHELLCMD
+ || xp->xp_context == EXPAND_BUFFERS)
+ {
+ /* highlight directories */
+! if (xp->xp_numfiles != -1)
+! {
+! char_u *halved_slash;
+! char_u *exp_path;
+!
+! /* Expansion was done before and special characters
+! * were escaped, need to halve backslashes. Also
+! * $HOME has been replaced with ~/. */
+! exp_path = expand_env_save_opt(files_found[k], TRUE);
+! halved_slash = backslash_halve_save(
+! exp_path != NULL ? exp_path : files_found[k]);
+! j = mch_isdir(halved_slash != NULL ? halved_slash
+! : files_found[k]);
+! vim_free(exp_path);
+! vim_free(halved_slash);
+! }
+! else
+! /* Expansion was done here, file names are literal. */
+! j = mch_isdir(files_found[k]);
+ if (showtail)
+ p = L_SHOWFILE(k);
+ else
+*** ../vim-7.2.409/src/version.c 2010-03-23 17:49:19.000000000 +0100
+--- src/version.c 2010-03-23 18:04:25.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 410,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite colour?
+GAWAIN: Blue ... No yelloooooww!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.411 b/source/ap/vim/patches/7.2.411
new file mode 100644
index 000000000..4a619ee7d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.411
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.411
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.411
+Problem: When parsing 'cino' a comma isn't skipped properly.
+Solution: Skip the comma. (Lech Lorens)
+Files: src/misc1.c
+
+
+*** ../vim-7.2.410/src/misc1.c 2010-03-02 12:37:01.000000000 +0100
+--- src/misc1.c 2010-03-23 18:18:15.000000000 +0100
+***************
+*** 6270,6275 ****
+--- 6270,6277 ----
+ case 'l': ind_keep_case_label = n; break;
+ case '#': ind_hash_comment = n; break;
+ }
++ if (*options == ',')
++ ++options;
+ }
+
+ /* remember where the cursor was when we started */
+*** ../vim-7.2.410/src/version.c 2010-03-23 18:06:47.000000000 +0100
+--- src/version.c 2010-03-23 18:22:13.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 411,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite editor?
+GAWAIN: Emacs ... No, Viiiiiiiiiiimmmmmmm!
+ "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.412 b/source/ap/vim/patches/7.2.412
new file mode 100644
index 000000000..d46769504
--- /dev/null
+++ b/source/ap/vim/patches/7.2.412
@@ -0,0 +1,85 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.412
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.412
+Problem: [ or ] followed by mouse click doesn't work.
+Solution: Reverse check for key being a mouse event. (Dominique Pelle)
+Files: src/normal.c
+
+
+*** ../vim-7.2.411/src/normal.c 2010-03-17 13:07:01.000000000 +0100
+--- src/normal.c 2010-05-07 15:46:54.000000000 +0200
+***************
+*** 3196,3202 ****
+ * There are a few special cases where we want certain combinations of
+ * characters to be considered as a single word. These are things like
+ * "->", "/ *", "*=", "+=", "&=", "<=", ">=", "!=" etc. Otherwise, each
+! * character is in it's own class.
+ */
+ if (c != NUL && vim_strchr((char_u *)"-+*/%<>&|^!=", c) != NULL)
+ return 1;
+--- 3196,3202 ----
+ * There are a few special cases where we want certain combinations of
+ * characters to be considered as a single word. These are things like
+ * "->", "/ *", "*=", "+=", "&=", "<=", ">=", "!=" etc. Otherwise, each
+! * character is in its own class.
+ */
+ if (c != NUL && vim_strchr((char_u *)"-+*/%<>&|^!=", c) != NULL)
+ return 1;
+***************
+*** 4085,4091 ****
+ /*
+ * Command character that's ignored.
+ * Used for CTRL-Q and CTRL-S to avoid problems with terminals that use
+! * xon/xoff
+ */
+ static void
+ nv_ignore(cap)
+--- 4085,4091 ----
+ /*
+ * Command character that's ignored.
+ * Used for CTRL-Q and CTRL-S to avoid problems with terminals that use
+! * xon/xoff.
+ */
+ static void
+ nv_ignore(cap)
+***************
+*** 6523,6529 ****
+ * [ or ] followed by a middle mouse click: put selected text with
+ * indent adjustment. Any other button just does as usual.
+ */
+! else if (cap->nchar >= K_LEFTMOUSE && cap->nchar <= K_RIGHTRELEASE)
+ {
+ (void)do_mouse(cap->oap, cap->nchar,
+ (cap->cmdchar == ']') ? FORWARD : BACKWARD,
+--- 6523,6529 ----
+ * [ or ] followed by a middle mouse click: put selected text with
+ * indent adjustment. Any other button just does as usual.
+ */
+! else if (cap->nchar >= K_RIGHTRELEASE && cap->nchar <= K_LEFTMOUSE)
+ {
+ (void)do_mouse(cap->oap, cap->nchar,
+ (cap->cmdchar == ']') ? FORWARD : BACKWARD,
+*** ../vim-7.2.411/src/version.c 2010-03-23 18:22:40.000000000 +0100
+--- src/version.c 2010-05-07 15:51:35.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 412,
+ /**/
+
+--
+I have a drinking problem -- I don't have a drink!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.413 b/source/ap/vim/patches/7.2.413
new file mode 100644
index 000000000..40a659257
--- /dev/null
+++ b/source/ap/vim/patches/7.2.413
@@ -0,0 +1,452 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.413
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.413
+Problem: Large file support is incorrect.
+Solution: Add AC_SYS_LARGEFILE to configure. (James Vega)
+Files: src/configure.in, src/config.h.in, src/auto/configure
+
+
+*** ../vim-7.2.412/src/configure.in 2010-03-10 16:27:27.000000000 +0100
+--- src/configure.in 2010-04-01 15:06:04.000000000 +0200
+***************
+*** 2669,2674 ****
+--- 2669,2678 ----
+ usleep utime utimes)
+ AC_FUNC_FSEEKO
+
++ dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
++ dnl appropriate, so that off_t is 64 bits when needed.
++ AC_SYS_LARGEFILE
++
+ dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
+ AC_MSG_CHECKING(for st_blksize)
+ AC_TRY_COMPILE(
+*** ../vim-7.2.412/src/config.h.in 2010-02-24 14:46:58.000000000 +0100
+--- src/config.h.in 2010-04-01 15:10:49.000000000 +0200
+***************
+*** 196,201 ****
+--- 196,206 ----
+ #undef HAVE_UTIME
+ #undef HAVE_BIND_TEXTDOMAIN_CODESET
+
++ /* Define, if needed, for accessing large files. */
++ #undef _LARGE_FILES
++ #undef _FILE_OFFSET_BITS
++ #undef _LARGEFILE_SOURCE
++
+ /* Define if you do not have utime(), but do have the utimes() function. */
+ #undef HAVE_UTIMES
+
+*** ../vim-7.2.412/src/auto/configure 2010-03-10 16:27:27.000000000 +0100
+--- src/auto/configure 2010-05-07 16:01:08.000000000 +0200
+***************
+*** 821,826 ****
+--- 821,827 ----
+ with_gnome
+ with_motif_lib
+ with_tlib
++ enable_largefile
+ enable_acl
+ enable_gpm
+ enable_sysmouse
+***************
+*** 1485,1490 ****
+--- 1486,1492 ----
+ --enable-nextaw-check If auto-select GUI, check for neXtaw default=yes
+ --enable-carbon-check If auto-select GUI, check for Carbon default=yes
+ --disable-gtktest Do not try to compile and run a test GTK program
++ --disable-largefile omit support for large files
+ --disable-acl Don't check for ACL support.
+ --disable-gpm Don't use gpm (Linux mouse daemon).
+ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).
+***************
+*** 14345,14350 ****
+--- 14347,14709 ----
+ fi
+
+
++ # Check whether --enable-largefile was given.
++ if test "${enable_largefile+set}" = set; then
++ enableval=$enable_largefile;
++ fi
++
++ if test "$enable_largefile" != no; then
++
++ { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
++ $as_echo_n "checking for special C compiler options needed for large files... " >&6; }
++ if test "${ac_cv_sys_largefile_CC+set}" = set; then
++ $as_echo_n "(cached) " >&6
++ else
++ ac_cv_sys_largefile_CC=no
++ if test "$GCC" != yes; then
++ ac_save_CC=$CC
++ while :; do
++ # IRIX 6.2 and later do not support large files by default,
++ # so use the C compiler's -n32 option if that helps.
++ cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h. */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h. */
++ #include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++ We can't simply define LARGE_OFF_T to be 9223372036854775807,
++ since some C++ compilers masquerading as C compilers
++ incorrectly reject 9223372036854775807. */
++ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++ && LARGE_OFF_T % 2147483647 == 1)
++ ? 1 : -1];
++ int
++ main ()
++ {
++
++ ;
++ return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ break
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++
++ fi
++
++ rm -f core conftest.err conftest.$ac_objext
++ CC="$CC -n32"
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_sys_largefile_CC=' -n32'; break
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++
++ fi
++
++ rm -f core conftest.err conftest.$ac_objext
++ break
++ done
++ CC=$ac_save_CC
++ rm -f conftest.$ac_ext
++ fi
++ fi
++ { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
++ $as_echo "$ac_cv_sys_largefile_CC" >&6; }
++ if test "$ac_cv_sys_largefile_CC" != no; then
++ CC=$CC$ac_cv_sys_largefile_CC
++ fi
++
++ { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
++ $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
++ if test "${ac_cv_sys_file_offset_bits+set}" = set; then
++ $as_echo_n "(cached) " >&6
++ else
++ while :; do
++ cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h. */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h. */
++ #include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++ We can't simply define LARGE_OFF_T to be 9223372036854775807,
++ since some C++ compilers masquerading as C compilers
++ incorrectly reject 9223372036854775807. */
++ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++ && LARGE_OFF_T % 2147483647 == 1)
++ ? 1 : -1];
++ int
++ main ()
++ {
++
++ ;
++ return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_sys_file_offset_bits=no; break
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++
++ fi
++
++ rm -f core 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. */
++ #define _FILE_OFFSET_BITS 64
++ #include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++ We can't simply define LARGE_OFF_T to be 9223372036854775807,
++ since some C++ compilers masquerading as C compilers
++ incorrectly reject 9223372036854775807. */
++ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++ && LARGE_OFF_T % 2147483647 == 1)
++ ? 1 : -1];
++ int
++ main ()
++ {
++
++ ;
++ return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_sys_file_offset_bits=64; break
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++
++ fi
++
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_cv_sys_file_offset_bits=unknown
++ break
++ done
++ fi
++ { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
++ $as_echo "$ac_cv_sys_file_offset_bits" >&6; }
++ case $ac_cv_sys_file_offset_bits in #(
++ no | unknown) ;;
++ *)
++ cat >>confdefs.h <<_ACEOF
++ #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
++ _ACEOF
++ ;;
++ esac
++ rm -rf conftest*
++ if test $ac_cv_sys_file_offset_bits = unknown; then
++ { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
++ $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
++ if test "${ac_cv_sys_large_files+set}" = set; then
++ $as_echo_n "(cached) " >&6
++ else
++ while :; do
++ cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h. */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h. */
++ #include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++ We can't simply define LARGE_OFF_T to be 9223372036854775807,
++ since some C++ compilers masquerading as C compilers
++ incorrectly reject 9223372036854775807. */
++ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++ && LARGE_OFF_T % 2147483647 == 1)
++ ? 1 : -1];
++ int
++ main ()
++ {
++
++ ;
++ return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_sys_large_files=no; break
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++
++ fi
++
++ rm -f core 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. */
++ #define _LARGE_FILES 1
++ #include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++ We can't simply define LARGE_OFF_T to be 9223372036854775807,
++ since some C++ compilers masquerading as C compilers
++ incorrectly reject 9223372036854775807. */
++ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++ && LARGE_OFF_T % 2147483647 == 1)
++ ? 1 : -1];
++ int
++ main ()
++ {
++
++ ;
++ return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_sys_large_files=1; break
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++
++ fi
++
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_cv_sys_large_files=unknown
++ break
++ done
++ fi
++ { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
++ $as_echo "$ac_cv_sys_large_files" >&6; }
++ case $ac_cv_sys_large_files in #(
++ no | unknown) ;;
++ *)
++ cat >>confdefs.h <<_ACEOF
++ #define _LARGE_FILES $ac_cv_sys_large_files
++ _ACEOF
++ ;;
++ esac
++ rm -rf conftest*
++ fi
++ fi
++
++
+ { $as_echo "$as_me:$LINENO: checking for st_blksize" >&5
+ $as_echo_n "checking for st_blksize... " >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+*** ../vim-7.2.412/src/version.c 2010-05-07 15:51:59.000000000 +0200
+--- src/version.c 2010-05-07 16:04:29.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 413,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+2. Page yourself over the intercom. Don't disguise your voice.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.414 b/source/ap/vim/patches/7.2.414
new file mode 100644
index 000000000..9d5666c34
--- /dev/null
+++ b/source/ap/vim/patches/7.2.414
@@ -0,0 +1,93 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.414
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.414
+Problem: CTRK-K <space> <space> does not produce 0xa0 as expected. (Tony
+ Mechelynck)
+Solution: Remove the Unicode range 0xe000 - 0xefff from digraphs, these are
+ not valid characters.
+Files: src/digraph.c
+
+
+*** ../vim-7.2.413/src/digraph.c 2009-05-13 14:12:14.000000000 +0200
+--- src/digraph.c 2010-04-11 17:28:22.000000000 +0200
+***************
+*** 1933,1977 ****
+ {'7', 'c', 0x3226},
+ {'8', 'c', 0x3227},
+ {'9', 'c', 0x3228},
+! {' ', ' ', 0xe000},
+! {'/', 'c', 0xe001},
+! {'U', 'A', 0xe002},
+! {'U', 'B', 0xe003},
+! {'"', '3', 0xe004},
+! {'"', '1', 0xe005},
+! {'"', '!', 0xe006},
+! {'"', '\'', 0xe007},
+! {'"', '>', 0xe008},
+! {'"', '?', 0xe009},
+! {'"', '-', 0xe00a},
+! {'"', '(', 0xe00b},
+! {'"', '.', 0xe00c},
+! {'"', ':', 0xe00d},
+! {'"', '0', 0xe00e},
+! {'"', '"', 0xe00f},
+! {'"', '<', 0xe010},
+! {'"', ',', 0xe011},
+! {'"', ';', 0xe012},
+! {'"', '_', 0xe013},
+! {'"', '=', 0xe014},
+! {'"', '/', 0xe015},
+! {'"', 'i', 0xe016},
+! {'"', 'd', 0xe017},
+! {'"', 'p', 0xe018},
+! {';', ';', 0xe019},
+! {',', ',', 0xe01a},
+! {'b', '3', 0xe01b},
+! {'C', 'i', 0xe01c},
+! {'f', '(', 0xe01d},
+! {'e', 'd', 0xe01e},
+! {'a', 'm', 0xe01f},
+! {'p', 'm', 0xe020},
+! {'F', 'l', 0xe023},
+! {'G', 'F', 0xe024},
+! {'>', 'V', 0xe025},
+! {'!', '*', 0xe026},
+! {'?', '*', 0xe027},
+! {'J', '<', 0xe028},
+ {'f', 'f', 0xfb00},
+ {'f', 'i', 0xfb01},
+ {'f', 'l', 0xfb02},
+--- 1933,1940 ----
+ {'7', 'c', 0x3226},
+ {'8', 'c', 0x3227},
+ {'9', 'c', 0x3228},
+! /* code points 0xe000 - 0xefff excluded, they have no assigned
+! * characters, only used in proposals. */
+ {'f', 'f', 0xfb00},
+ {'f', 'i', 0xfb01},
+ {'f', 'l', 0xfb02},
+*** ../vim-7.2.413/src/version.c 2010-05-07 16:05:48.000000000 +0200
+--- src/version.c 2010-05-07 16:17:26.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 414,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+4. Put your garbage can on your desk and label it "in".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.415 b/source/ap/vim/patches/7.2.415
new file mode 100644
index 000000000..87e7c0b59
--- /dev/null
+++ b/source/ap/vim/patches/7.2.415
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.415
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.415
+Problem: Win32: Can't open a remote file when starting Vim.
+Solution: Don't invoke cygwin_conv_path() for URLs. (Tomoya Adachi)
+Files: src/main.c
+
+
+*** ../vim-7.2.414/src/main.c 2009-12-16 18:27:29.000000000 +0100
+--- src/main.c 2010-04-12 20:57:44.000000000 +0200
+***************
+*** 1477,1483 ****
+ ++initstr;
+ }
+
+! /* Avoid using evim mode for "editor". */
+ if (TOLOWER_ASC(initstr[0]) == 'e'
+ && (TOLOWER_ASC(initstr[1]) == 'v'
+ || TOLOWER_ASC(initstr[1]) == 'g'))
+--- 1477,1483 ----
+ ++initstr;
+ }
+
+! /* Use evim mode for "evim" and "egvim", not for "editor". */
+ if (TOLOWER_ASC(initstr[0]) == 'e'
+ && (TOLOWER_ASC(initstr[1]) == 'v'
+ || TOLOWER_ASC(initstr[1]) == 'g'))
+***************
+*** 2262,2268 ****
+ * Look for evidence of non-Cygwin paths before we bother.
+ * This is only for when using the Unix files.
+ */
+! if (strpbrk(p, "\\:") != NULL)
+ {
+ char posix_path[PATH_MAX];
+
+--- 2262,2268 ----
+ * Look for evidence of non-Cygwin paths before we bother.
+ * This is only for when using the Unix files.
+ */
+! if (strpbrk(p, "\\:") != NULL && !path_with_url(p))
+ {
+ char posix_path[PATH_MAX];
+
+*** ../vim-7.2.414/src/version.c 2010-05-07 16:18:08.000000000 +0200
+--- src/version.c 2010-05-07 16:34:22.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 415,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+6. In the memo field of all your checks, write "for sexual favors".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/patches/7.2.416 b/source/ap/vim/patches/7.2.416
new file mode 100644
index 000000000..67bb80808
--- /dev/null
+++ b/source/ap/vim/patches/7.2.416
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.416
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.416
+Problem: Logtalk.dict is not installed.
+Solution: Add it to the install target. (Markus Heidelberg)
+Files: src/Makefile
+
+
+*** ../vim-7.2.415/src/Makefile 2010-05-07 16:35:12.000000000 +0200
+--- src/Makefile 2010-04-06 20:19:48.000000000 +0200
+***************
+*** 30,36 ****
+ # want to disable using X11 libraries. This speeds up starting Vim,
+ # but the window title will not be set and the X11 selection can not
+ # used.
+! # - Uncomment the line "CONF_OPT_XSMP = --without-xsmp" if you have the
+ # X11 Session Management Protocol (XSMP) library (libSM) but do not
+ # want to use it.
+ # This can speedup Vim startup but Vim loses the ability to catch the
+--- 30,36 ----
+ # want to disable using X11 libraries. This speeds up starting Vim,
+ # but the window title will not be set and the X11 selection can not
+ # used.
+! # - Uncomment the line "CONF_OPT_XSMP = --disable-xsmp" if you have the
+ # X11 Session Management Protocol (XSMP) library (libSM) but do not
+ # want to use it.
+ # This can speedup Vim startup but Vim loses the ability to catch the
+***************
+*** 1882,1888 ****
+ cd $(PLUGSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_PLUG)
+ cd $(DEST_PLUG); chmod $(HELPMOD) *.vim README.txt
+ # install the ftplugin files
+! cd $(FTPLUGSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_FTP)
+ cd $(DEST_FTP); chmod $(HELPMOD) *.vim README.txt
+ # install the compiler files
+ cd $(COMPSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_COMP)
+--- 1882,1888 ----
+ cd $(PLUGSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_PLUG)
+ cd $(DEST_PLUG); chmod $(HELPMOD) *.vim README.txt
+ # install the ftplugin files
+! cd $(FTPLUGSOURCE); $(INSTALL_DATA) *.vim README.txt logtalk.dict $(DEST_FTP)
+ cd $(DEST_FTP); chmod $(HELPMOD) *.vim README.txt
+ # install the compiler files
+ cd $(COMPSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_COMP)
+*** ../vim-7.2.415/src/version.c 2010-05-07 16:34:59.000000000 +0200
+--- src/version.c 2010-05-07 16:53:17.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 416,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+8. Don't use any punctuation marks.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/source/ap/vim/vim-gvim.SlackBuild b/source/ap/vim/vim-gvim.SlackBuild
index 8c24b51d9..31ceb1de2 100755
--- a/source/ap/vim/vim-gvim.SlackBuild
+++ b/source/ap/vim/vim-gvim.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,10 +24,20 @@
VIMVER=7.2
# This is the directory in the VIM source archive to cd into.
DIRVER=72
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
PYVER=$(python -V 2>&1 | cut -f 2 -d' ' | cut -f 1-2 -d.)
if [ "$ARCH" = "x86_64" ]; then
@@ -82,6 +92,21 @@ CFLAGS="$SLKCFLAGS" LDFLAGS="$SLKLDFLAGS" \
}
cd $TMP/vim$DIRVER
+
+# If there's no syntax update, create one:
+if ! ls $CWD/vim-runtime-syntax-* 1> /dev/null 2> /dev/null ; then
+ rm -rf runtime/syntax.orig
+ cp -a runtime/syntax runtime/syntax.orig
+ echo "Fetching vim syntax updates from ftp.nluug.nl..."
+ rsync -avzcP ftp.nluug.nl::Vim/runtime/syntax/ runtime/syntax/
+ diff -u -r --new-file runtime/syntax.orig runtime/syntax | gzip -9c > $CWD/vim-runtime-syntax-$(date +%Y%m%d).diff.gz
+ rm -rf runtime/syntax
+ mv runtime/syntax.orig runtime/syntax
+fi
+
+# Apply the syntax update:
+zcat $CWD/vim-runtime-syntax-*.diff.gz | patch -p0 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
diff --git a/source/ap/vim/vim-runtime-syntax-20100510.diff b/source/ap/vim/vim-runtime-syntax-20100510.diff
new file mode 100644
index 000000000..f8d901d7a
--- /dev/null
+++ b/source/ap/vim/vim-runtime-syntax-20100510.diff
@@ -0,0 +1,7471 @@
+diff -u -r --new-file runtime/syntax.orig/2html.vim runtime/syntax/2html.vim
+--- runtime/syntax.orig/2html.vim 2008-07-17 16:03:05.000000000 -0500
++++ runtime/syntax/2html.vim 2009-07-26 06:44:10.000000000 -0500
+@@ -1,13 +1,18 @@
+ " Vim syntax support file
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+-" Last Change: 2008 Jul 17
++" Last Change: 2009 Jul 14
+ " (modified by David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>)
+ " (XHTML support by Panagiotis Issaris <takis@lumumba.luc.ac.be>)
+ " (made w3 compliant by Edd Barrett <vext01@gmail.com>)
+ " (added html_font. Edd Barrett <vext01@gmail.com>)
++" (dynamic folding by Ben Fritz <fritzophrenic@gmail.com>)
+
+ " Transform a file into HTML, using the current syntax highlighting.
+
++" this file uses line continuations
++let s:cpo_sav = &cpo
++set cpo-=C
++
+ " Number lines when explicitely requested or when `number' is set
+ if exists("html_number_lines")
+ let s:numblines = html_number_lines
+@@ -22,6 +27,37 @@
+ let s:htmlfont = "monospace"
+ endif
+
++" make copies of the user-defined settings that we may overrule
++if exists("html_dynamic_folds")
++ let s:html_dynamic_folds = 1
++endif
++if exists("html_hover_unfold")
++ let s:html_hover_unfold = 1
++endif
++if exists("html_use_css")
++ let s:html_use_css = 1
++endif
++
++" hover opening implies dynamic folding
++if exists("s:html_hover_unfold")
++ let s:html_dynamic_folds = 1
++endif
++
++" dynamic folding with no foldcolumn implies hover opens
++if exists("s:html_dynamic_folds") && exists("html_no_foldcolumn")
++ let s:html_hover_unfold = 1
++endif
++
++" ignore folding overrides dynamic folding
++if exists("html_ignore_folding") && exists("s:html_dynamic_folds")
++ unlet s:html_dynamic_folds
++endif
++
++" dynamic folding implies css
++if exists("s:html_dynamic_folds")
++ let s:html_use_css = 1
++endif
++
+ " When not in gui we can only guess the colors.
+ if has("gui_running")
+ let s:whatterm = "gui"
+@@ -62,7 +98,7 @@
+ endfun
+ endif
+
+-if !exists("html_use_css")
++if !exists("s:html_use_css")
+ " Return opening HTML tag for given highlight id
+ function! s:HtmlOpening(id)
+ let a = ""
+@@ -150,6 +186,26 @@
+ return a
+ endfun
+
++if exists("s:html_dynamic_folds")
++
++ " compares two folds as stored in our list of folds
++ " A fold is "less" than another if it starts at an earlier line number,
++ " or ends at a later line number, ties broken by fold level
++ function! s:FoldCompare(f1, f2)
++ if a:f1.firstline != a:f2.firstline
++ " put it before if it starts earlier
++ return a:f1.firstline - a:f2.firstline
++ elseif a:f1.lastline != a:f2.lastline
++ " put it before if it ends later
++ return a:f2.lastline - a:f1.lastline
++ else
++ " if folds begin and end on the same lines, put lowest fold level first
++ return a:f1.level - a:f2.level
++ endif
++ endfunction
++
++endif
++
+ " Figure out proper MIME charset from the 'encoding' option.
+ if exists("html_use_encoding")
+ let s:html_encoding = html_use_encoding
+@@ -223,13 +279,13 @@
+ let s:tag_close = '>'
+ endif
+
+-" Cache html_no_pre incase we have to turn it on for non-css mode
++" Cache html_no_pre in case we have to turn it on for non-css mode
+ if exists("html_no_pre")
+ let s:old_html_no_pre = html_no_pre
+ endif
+
+-if !exists("html_use_css")
+- " Cant put font tags in <pre>
++if !exists("s:html_use_css")
++ " Can't put font tags in <pre>
+ let html_no_pre=1
+ endif
+
+@@ -251,9 +307,86 @@
+ exe "normal! a<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:html_encoding . '"' . s:tag_close . "\n\e"
+ endif
+
+-if exists("html_use_css")
+- exe "normal! a<style type=\"text/css\">\n<!--\n-->\n</style>\n\e"
++if exists("s:html_use_css")
++ if exists("s:html_dynamic_folds")
++ if exists("s:html_hover_unfold")
++ " if we are doing hover_unfold, use css 2 with css 1 fallback for IE6
++ exe "normal! a".
++ \ "<style type=\"text/css\">\n<!--\n".
++ \ ".FoldColumn { text-decoration: none; white-space: pre; }\n\n".
++ \ "body * { margin: 0; padding: 0; }\n".
++ \ "\n".
++ \ ".open-fold > .Folded { display: none; }\n".
++ \ ".open-fold > .fulltext { display: inline; }\n".
++ \ ".closed-fold > .fulltext { display: none; }\n".
++ \ ".closed-fold > .Folded { display: inline; }\n".
++ \ "\n".
++ \ ".open-fold > .toggle-open { display: none; }\n".
++ \ ".open-fold > .toggle-closed { display: inline; }\n".
++ \ ".closed-fold > .toggle-open { display: inline; }\n".
++ \ ".closed-fold > .toggle-closed { display: none; }\n"
++ exe "normal! a\n/* opening a fold while hovering won't be supported by IE6 and other\n".
++ \ "similar browsers, but it should fail gracefully. */\n".
++ \ ".closed-fold:hover > .fulltext { display: inline; }\n".
++ \ ".closed-fold:hover > .toggle-filler { display: none; }\n".
++ \ ".closed-fold:hover > .Folded { display: none; }\n"
++ exe "normal! a-->\n</style>\n"
++ exe "normal! a<!--[if lt IE 7]>".
++ \ "<style type=\"text/css\">\n".
++ \ ".open-fold .Folded { display: none; }\n".
++ \ ".open-fold .fulltext { display: inline; }\n".
++ \ ".open-fold .toggle-open { display: none; }\n".
++ \ ".closed-fold .toggle-closed { display: inline; }\n".
++ \ "\n".
++ \ ".closed-fold .fulltext { display: none; }\n".
++ \ ".closed-fold .Folded { display: inline; }\n".
++ \ ".closed-fold .toggle-open { display: inline; }\n".
++ \ ".closed-fold .toggle-closed { display: none; }\n".
++ \ "</style>\n".
++ \ "<![endif]-->\n"
++ else
++ " if we aren't doing hover_unfold, use CSS 1 only
++ exe "normal! a<style type=\"text/css\">\n<!--\n".
++ \ ".FoldColumn { text-decoration: none; white-space: pre; }\n\n".
++ \ ".open-fold .Folded { display: none; }\n".
++ \ ".open-fold .fulltext { display: inline; }\n".
++ \ ".open-fold .toggle-open { display: none; }\n".
++ \ ".closed-fold .toggle-closed { display: inline; }\n".
++ \ "\n".
++ \ ".closed-fold .fulltext { display: none; }\n".
++ \ ".closed-fold .Folded { display: inline; }\n".
++ \ ".closed-fold .toggle-open { display: inline; }\n".
++ \ ".closed-fold .toggle-closed { display: none; }\n".
++ \ "-->\n</style>\n"
++ endif
++ else
++ " if we aren't doing any dynamic folding, no need for any special rules
++ exe "normal! a<style type=\"text/css\">\n<!--\n-->\n</style>\n\e"
++ endif
++endif
++
++" insert javascript to toggle folds open and closed
++if exists("s:html_dynamic_folds")
++ exe "normal! a\n".
++ \ "<script type='text/javascript'>\n".
++ \ "<!--\n".
++ \ "function toggleFold(objID)\n".
++ \ "{\n".
++ \ " var fold;\n".
++ \ " fold = document.getElementById(objID);\n".
++ \ " if(fold.className == 'closed-fold')\n".
++ \ " {\n".
++ \ " fold.className = 'open-fold';\n".
++ \ " }\n".
++ \ " else if (fold.className == 'open-fold')\n".
++ \ " {\n".
++ \ " fold.className = 'closed-fold';\n".
++ \ " }\n".
++ \ "}\n".
++ \ "-->\n".
++ \ "</script>\n\e"
+ endif
++
+ if exists("html_no_pre")
+ exe "normal! a</head>\n<body>\n\e"
+ else
+@@ -265,7 +398,81 @@
+ " List of all id's
+ let s:idlist = ","
+
+-" Loop over all lines in the original text.
++" First do some preprocessing for dynamic folding. Do this for the entire file
++" so we don't accidentally start within a closed fold or something.
++let s:allfolds = []
++
++if exists("s:html_dynamic_folds")
++ let s:lnum = 1
++ let s:end = line('$')
++ " save the fold text and set it to the default so we can find fold levels
++ let s:foldtext_save = &foldtext
++ set foldtext&
++
++ " we will set the foldcolumn in the html to the greater of the maximum fold
++ " level and the current foldcolumn setting
++ let s:foldcolumn = &foldcolumn
++
++ " get all info needed to describe currently closed folds
++ while s:lnum < s:end
++ if foldclosed(s:lnum) == s:lnum
++ " default fold text has '+-' and then a number of dashes equal to fold
++ " level, so subtract 2 from index of first non-dash after the dashes
++ " in order to get the fold level of the current fold
++ let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
++ if s:level+1 > s:foldcolumn
++ let s:foldcolumn = s:level+1
++ endif
++ " store fold info for later use
++ let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
++ call add(s:allfolds, s:newfold)
++ " open the fold so we can find any contained folds
++ execute s:lnum."foldopen"
++ else
++ let s:lnum = s:lnum + 1
++ endif
++ endwhile
++
++ " close all folds to get info for originally open folds
++ silent! %foldclose!
++ let s:lnum = 1
++
++ " the originally open folds will be all folds we encounter that aren't
++ " already in the list of closed folds
++ while s:lnum < s:end
++ if foldclosed(s:lnum) == s:lnum
++ " default fold text has '+-' and then a number of dashes equal to fold
++ " level, so subtract 2 from index of first non-dash after the dashes
++ " in order to get the fold level of the current fold
++ let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
++ if s:level+1 > s:foldcolumn
++ let s:foldcolumn = s:level+1
++ endif
++ let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
++ " only add the fold if we don't already have it
++ if empty(s:allfolds) || index(s:allfolds, s:newfold) == -1
++ let s:newfold.type = "open-fold"
++ call add(s:allfolds, s:newfold)
++ endif
++ " open the fold so we can find any contained folds
++ execute s:lnum."foldopen"
++ else
++ let s:lnum = s:lnum + 1
++ endif
++ endwhile
++
++ " sort the folds so that we only ever need to look at the first item in the
++ " list of folds
++ call sort(s:allfolds, "s:FoldCompare")
++
++ let &foldtext = s:foldtext_save
++ unlet s:foldtext_save
++
++ " close all folds again so we can get the fold text as we go
++ silent! %foldclose!
++endif
++
++" Now loop over all lines in the original text to convert to html.
+ " Use html_start_line and html_end_line if they are set.
+ if exists("html_start_line")
+ let s:lnum = html_start_line
+@@ -284,6 +491,15 @@
+ let s:end = line("$")
+ endif
+
++" stack to keep track of all the folds containing the current line
++let s:foldstack = []
++
++if s:numblines
++ let s:margin = strlen(s:end) + 1
++else
++ let s:margin = 0
++endif
++
+ if has('folding') && !exists('html_ignore_folding')
+ let s:foldfillchar = &fillchars[matchend(&fillchars, 'fold:')]
+ if s:foldfillchar == ''
+@@ -295,6 +511,7 @@
+ let s:difffillchar = '-'
+ endif
+
++let s:foldId = 0
+
+ while s:lnum <= s:end
+
+@@ -303,12 +520,7 @@
+ if s:filler > 0
+ let s:n = s:filler
+ while s:n > 0
+- if s:numblines
+- " Indent if line numbering is on
+- let s:new = repeat(s:LeadingSpace, strlen(s:end) + 1) . repeat(s:difffillchar, 3)
+- else
+- let s:new = repeat(s:difffillchar, 3)
+- endif
++ let s:new = repeat(s:difffillchar, 3)
+
+ if s:n > 2 && s:n < s:filler && !exists("html_whole_filler")
+ let s:new = s:new . " " . s:filler . " inserted lines "
+@@ -317,10 +529,16 @@
+
+ if !exists("html_no_pre")
+ " HTML line wrapping is off--go ahead and fill to the margin
+- let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new))
++ let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new) - s:margin)
++ else
++ let s:new = s:new . repeat(s:difffillchar, 3)
+ endif
+
+ let s:new = s:HtmlFormat(s:new, "DiffDelete")
++ if s:numblines
++ " Indent if line numbering is on; must be after escaping.
++ let s:new = repeat(s:LeadingSpace, s:margin) . s:new
++ endif
+ exe s:newwin . "wincmd w"
+ exe "normal! a" . s:new . s:HtmlEndline . "\n\e"
+ exe s:orgwin . "wincmd w"
+@@ -333,16 +551,18 @@
+
+ " Start the line with the line number.
+ if s:numblines
+- let s:new = repeat(' ', strlen(s:end) - strlen(s:lnum)) . s:lnum . ' '
++ let s:numcol = repeat(' ', s:margin - 1 - strlen(s:lnum)) . s:lnum . ' '
+ else
+- let s:new = ""
++ let s:numcol = ""
+ endif
+
+- if has('folding') && !exists('html_ignore_folding') && foldclosed(s:lnum) > -1
++ let s:new = ""
++
++ if has('folding') && !exists('html_ignore_folding') && foldclosed(s:lnum) > -1 && !exists('s:html_dynamic_folds')
+ "
+- " This is the beginning of a folded block
++ " This is the beginning of a folded block (with no dynamic folding)
+ "
+- let s:new = s:new . foldtextresult(s:lnum)
++ let s:new = s:numcol . foldtextresult(s:lnum)
+ if !exists("html_no_pre")
+ " HTML line wrapping is off--go ahead and fill to the margin
+ let s:new = s:new . repeat(s:foldfillchar, &columns - strlen(s:new))
+@@ -355,14 +575,96 @@
+
+ else
+ "
+- " A line that is not folded.
++ " A line that is not folded, or doing dynamic folding.
+ "
+ let s:line = getline(s:lnum)
+-
+ let s:len = strlen(s:line)
+
++ if exists("s:html_dynamic_folds")
++ " First insert a closing for any open folds that end on this line
++ while !empty(s:foldstack) && get(s:foldstack,0).lastline == s:lnum-1
++ let s:new = s:new."</span></span>"
++ call remove(s:foldstack, 0)
++ endwhile
++
++ " Now insert an opening any new folds that start on this line
++ let s:firstfold = 1
++ while !empty(s:allfolds) && get(s:allfolds,0).firstline == s:lnum
++ let s:foldId = s:foldId + 1
++ let s:new = s:new . "<span id='fold".s:foldId."' class='".s:allfolds[0].type."'>"
++
++ " Unless disabled, add a fold column for the opening line of a fold.
++ "
++ " Note that dynamic folds require using css so we just use css to take
++ " care of the leading spaces rather than using &nbsp; in the case of
++ " html_no_pre to make it easier
++ if !exists("html_no_foldcolumn")
++ " add fold column that can open the new fold
++ if s:allfolds[0].level > 1 && s:firstfold
++ let s:new = s:new . "<a class='toggle-open FoldColumn' href='javascript:toggleFold(\"fold".s:foldstack[0].id."\")'>"
++ let s:new = s:new . repeat('|', s:allfolds[0].level - 1) . "</a>"
++ endif
++ let s:new = s:new . "<a class='toggle-open FoldColumn' href='javascript:toggleFold(\"fold".s:foldId."\")'>+</a>"
++ let s:new = s:new . "<a class='toggle-open "
++ " If this is not the last fold we're opening on this line, we need
++ " to keep the filler spaces hidden if the fold is opened by mouse
++ " hover. If it is the last fold to open in the line, we shouldn't hide
++ " them, so don't apply the toggle-filler class.
++ if get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum
++ let s:new = s:new . "toggle-filler "
++ endif
++ let s:new = s:new . "FoldColumn' href='javascript:toggleFold(\"fold".s:foldId."\")'>"
++ let s:new = s:new . repeat(" ", s:foldcolumn - s:allfolds[0].level) . "</a>"
++
++ " add fold column that can close the new fold
++ let s:new = s:new . "<a class='toggle-closed FoldColumn' href='javascript:toggleFold(\"fold".s:foldId."\")'>"
++ if s:firstfold
++ let s:new = s:new . repeat('|', s:allfolds[0].level - 1)
++ endif
++ let s:new = s:new . "-"
++ " only add spaces if we aren't opening another fold on the same line
++ if get(s:allfolds, 1, {'firstline': 0}).firstline != s:lnum
++ let s:new = s:new . repeat(" ", s:foldcolumn - s:allfolds[0].level)
++ endif
++ let s:new = s:new . "</a>"
++ let s:firstfold = 0
++ endif
++
++ " add fold text, moving the span ending to the next line so collapsing
++ " of folds works correctly
++ let s:new = s:new . substitute(s:HtmlFormat(s:numcol . foldtextresult(s:lnum), "Folded"), '</span>', s:HtmlEndline.'\r\0', '')
++ let s:new = s:new . "<span class='fulltext'>"
++
++ " open the fold now that we have the fold text to allow retrieval of
++ " fold text for subsequent folds
++ execute s:lnum."foldopen"
++ call insert(s:foldstack, remove(s:allfolds,0))
++ let s:foldstack[0].id = s:foldId
++ endwhile
++
++ " Unless disabled, add a fold column for other lines.
++ "
++ " Note that dynamic folds require using css so we just use css to take
++ " care of the leading spaces rather than using &nbsp; in the case of
++ " html_no_pre to make it easier
++ if !exists("html_no_foldcolumn")
++ if empty(s:foldstack)
++ " add the empty foldcolumn for unfolded lines
++ let s:new = s:new . s:HtmlFormat(repeat(' ', s:foldcolumn), "FoldColumn")
++ else
++ " add the fold column for folds not on the opening line
++ if get(s:foldstack, 0).firstline < s:lnum
++ let s:new = s:new . "<a class='FoldColumn' href='javascript:toggleFold(\"fold".s:foldstack[0].id."\")'>"
++ let s:new = s:new . repeat('|', s:foldstack[0].level)
++ let s:new = s:new . repeat(' ', s:foldcolumn - s:foldstack[0].level) . "</a>"
++ endif
++ endif
++ endif
++ endif
++
++ " Now continue with the unfolded line text
+ if s:numblines
+- let s:new = s:HtmlFormat(s:new, "lnr")
++ let s:new = s:new . s:HtmlFormat(s:numcol, "lnr")
+ endif
+
+ " Get the diff attribute, if any.
+@@ -380,7 +682,7 @@
+ while s:col <= s:len && s:id == diff_hlID(s:lnum, s:col) | let s:col = s:col + 1 | endwhile
+ if s:len < &columns && !exists("html_no_pre")
+ " Add spaces at the end to mark the changed line.
+- let s:line = s:line . repeat(' ', &columns - s:len)
++ let s:line = s:line . repeat(' ', &columns - virtcol([s:lnum, s:len]) - s:margin)
+ let s:len = &columns
+ endif
+ else
+@@ -393,11 +695,27 @@
+
+ " Expand tabs
+ let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol)
+- let idx = stridx(s:expandedtab, "\t")
+- while idx >= 0
+- let i = &ts - ((idx + s:startcol - 1) % &ts)
+- let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', i), '')
+- let idx = stridx(s:expandedtab, "\t")
++ let s:offset = 0
++ let s:idx = stridx(s:expandedtab, "\t")
++ while s:idx >= 0
++ if has("multi_byte_encoding")
++ if s:startcol + s:idx == 1
++ let s:i = &ts
++ else
++ if s:idx == 0
++ let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:idx + s:offset) . 'c')
++ else
++ let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
++ endif
++ let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
++ let s:i = &ts - (s:vcol % &ts)
++ endif
++ let s:offset -= s:i - 1
++ else
++ let s:i = &ts - ((s:idx + s:startcol - 1) % &ts)
++ endif
++ let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
++ let s:idx = stridx(s:expandedtab, "\t")
+ endwhile
+
+ " Output the text with the same synID, with class set to {s:id_name}
+@@ -415,8 +733,22 @@
+ " Finish with the last line
+ exe s:newwin . "wincmd w"
+
++if exists("s:html_dynamic_folds")
++ " finish off any open folds
++ while !empty(s:foldstack)
++ exe "normal! a</span></span>"
++ call remove(s:foldstack, 0)
++ endwhile
++
++ " add fold column to the style list if not already there
++ let s:id = hlID('FoldColumn')
++ if stridx(s:idlist, "," . s:id . ",") == -1
++ let s:idlist = s:idlist . s:id . ","
++ endif
++endif
++
+ " Close off the font tag that encapsulates the whole <body>
+-if !exists("html_use_css")
++if !exists("s:html_use_css")
+ exe "normal! a</font>\e"
+ endif
+
+@@ -428,7 +760,7 @@
+
+
+ " Now, when we finally know which, we define the colors and styles
+-if exists("html_use_css")
++if exists("s:html_use_css")
+ 1;/<style type="text/+1
+ endif
+
+@@ -445,7 +777,7 @@
+ " Normal/global attributes
+ " For Netscape 4, set <body> attributes too, though, strictly speaking, it's
+ " incorrect.
+-if exists("html_use_css")
++if exists("s:html_use_css")
+ if exists("html_no_pre")
+ execute "normal! A\nbody { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }\e"
+ else
+@@ -455,12 +787,12 @@
+ execute "normal! ^cwbody\e"
+ endif
+ else
+- execute '%s:<body>:<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"><font face="'. s:htmlfont .'">'
++ execute '%s:<body>:<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"><font face="'. s:htmlfont .'">'
+ endif
+
+ " Line numbering attributes
+ if s:numblines
+- if exists("html_use_css")
++ if exists("s:html_use_css")
+ execute "normal! A\n.lnr { " . s:CSS1(hlID("LineNr")) . "}\e"
+ else
+ execute '%s+^<span class="lnr">\([^<]*\)</span>+' . s:HtmlOpening(hlID("LineNr")) . '\1' . s:HtmlClosing(hlID("LineNr")) . '+g'
+@@ -479,14 +811,14 @@
+ " If the class has some attributes, export the style, otherwise DELETE all
+ " its occurences to make the HTML shorter
+ if s:attr != ""
+- if exists("html_use_css")
++ if exists("s:html_use_css")
+ execute "normal! A\n." . s:id_name . " { " . s:attr . "}"
+ else
+ execute '%s+<span class="' . s:id_name . '">\([^<]*\)</span>+' . s:HtmlOpening(s:id) . '\1' . s:HtmlClosing(s:id) . '+g'
+ endif
+ else
+ execute '%s+<span class="' . s:id_name . '">\([^<]*\)</span>+\1+ge'
+- if exists("html_use_css")
++ if exists("s:html_use_css")
+ 1;/<style type="text/+1
+ endif
+ endif
+@@ -531,16 +863,28 @@
+ " Save a little bit of memory (worth doing?)
+ unlet s:htmlfont
+ unlet s:old_et s:old_paste s:old_icon s:old_report s:old_title s:old_search
+-unlet s:whatterm s:idlist s:lnum s:end s:fgc s:bgc s:old_magic
++unlet s:whatterm s:idlist s:lnum s:end s:margin s:fgc s:bgc s:old_magic
+ unlet! s:col s:id s:attr s:len s:line s:new s:expandedtab s:numblines
+-unlet s:orgwin s:newwin s:orgbufnr
++unlet! s:orgwin s:newwin s:orgbufnr s:idx s:i s:offset
+ if !v:profiling
+ delfunc s:HtmlColor
+ delfunc s:HtmlFormat
+ delfunc s:CSS1
+- if !exists("html_use_css")
++ if !exists("s:html_use_css")
+ delfunc s:HtmlOpening
+ delfunc s:HtmlClosing
+ endif
+ endif
+-silent! unlet s:diffattr s:difffillchar s:foldfillchar s:HtmlSpace s:LeadingSpace s:HtmlEndline
++silent! unlet s:diffattr s:difffillchar s:foldfillchar s:HtmlSpace s:LeadingSpace s:HtmlEndline s:firstfold s:foldcolumn
++unlet s:foldstack s:allfolds s:foldId s:numcol
++
++if exists("s:html_dynamic_folds")
++ delfunc s:FoldCompare
++endif
++
++silent! unlet s:html_dynamic_folds s:html_hover_unfold s:html_use_css
++
++let &cpo = s:cpo_sav
++unlet s:cpo_sav
++
++" vim: noet sw=2 sts=2
+diff -u -r --new-file runtime/syntax.orig/asm.vim runtime/syntax/asm.vim
+--- runtime/syntax.orig/asm.vim 2004-06-07 09:32:35.000000000 -0500
++++ runtime/syntax/asm.vim 2010-01-12 14:45:24.000000000 -0600
+@@ -1,10 +1,12 @@
+ " Vim syntax file
+ " Language: GNU Assembler
+-" Maintainer: Kevin Dahlhausen <kdahlhaus@yahoo.com>
+-" Last Change: 2002 Sep 19
++" Maintainer: Erik Wognsen <erik.wognsen@gmail.com>
++" Previous maintainer:
++" Kevin Dahlhausen <kdahlhaus@yahoo.com>
++" Last Change: 2010 Jan 9
+
+ " For version 5.x: Clear all syntax items
+-" For version 6.x: Quit when a syntax file was already loaded
++" For version 6.0 and later: Quit when a syntax file was already loaded
+ if version < 600
+ syntax clear
+ elseif exists("b:current_syntax")
+@@ -13,7 +15,6 @@
+
+ syn case ignore
+
+-
+ " storage types
+ syn match asmType "\.long"
+ syn match asmType "\.ascii"
+@@ -44,9 +45,8 @@
+ syn match hexNumber "0[xX][0-9a-fA-F]\+"
+ syn match binNumber "0[bB][0-1]*"
+
+-
+-syn match asmSpecialComment ";\*\*\*.*"
+-syn match asmComment ";.*"hs=s+1
++syn match asmComment "#.*"
++syn region asmComment start="/\*" end="\*/"
+
+ syn match asmInclude "\.include"
+ syn match asmCond "\.if"
+@@ -86,15 +86,9 @@
+ HiLink octNumber Number
+ HiLink binNumber Number
+
+- HiLink asmSpecialComment Comment
+ HiLink asmIdentifier Identifier
+ HiLink asmType Type
+
+- " My default color overrides:
+- " hi asmSpecialComment ctermfg=red
+- " hi asmIdentifier ctermfg=lightcyan
+- " hi asmType ctermbg=black ctermfg=brown
+-
+ delcommand HiLink
+ endif
+
+diff -u -r --new-file runtime/syntax.orig/bzr.vim runtime/syntax/bzr.vim
+--- runtime/syntax.orig/bzr.vim 2008-07-30 14:47:17.000000000 -0500
++++ runtime/syntax/bzr.vim 2009-01-28 10:23:50.000000000 -0600
+@@ -2,9 +2,14 @@
+ " Language: Bazaar (bzr) commit file
+ " Maintainer: Dmitry Vasiliev <dima at hlabs dot spb dot ru>
+ " URL: http://www.hlabs.spb.ru/vim/bzr.vim
+-" Revision: $Id: bzr.vim 683 2008-07-30 11:52:38Z hdima $
++" Last Change: 2009-01-27
+ " Filenames: bzr_log.*
+-" Version: 1.1
++" Version: 1.2.1
++"
++" Thanks:
++"
++" Gioele Barabucci
++" for idea of diff highlighting
+
+ " For version 5.x: Clear all syntax items.
+ " For version 6.x: Quit when a syntax file was already loaded.
+@@ -14,13 +19,21 @@
+ finish
+ endif
+
+-syn region bzrRegion start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=ALL contains=@NoSpell
++if exists("bzr_highlight_diff")
++ syn include @Diff syntax/diff.vim
++endif
++
+ syn match bzrRemoved "^removed:$" contained
+ syn match bzrAdded "^added:$" contained
+ syn match bzrRenamed "^renamed:$" contained
+ syn match bzrModified "^modified:$" contained
+ syn match bzrUnchanged "^unchanged:$" contained
+ syn match bzrUnknown "^unknown:$" contained
++syn cluster Statuses contains=bzrRemoved,bzrAdded,bzrRenamed,bzrModified,bzrUnchanged,bzrUnknown
++if exists("bzr_highlight_diff")
++ syn cluster Statuses add=@Diff
++endif
++syn region bzrRegion start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=@NoSpell,@Statuses
+
+ " Synchronization.
+ syn sync clear
+@@ -37,7 +50,6 @@
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+- HiLink bzrRegion Comment
+ HiLink bzrRemoved Constant
+ HiLink bzrAdded Identifier
+ HiLink bzrModified Special
+diff -u -r --new-file runtime/syntax.orig/c.vim runtime/syntax/c.vim
+--- runtime/syntax.orig/c.vim 2008-03-19 15:44:52.000000000 -0500
++++ runtime/syntax/c.vim 2009-11-28 06:31:38.000000000 -0600
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: C
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+-" Last Change: 2008 Mar 19
++" Last Change: 2009 Nov 17
+
+ " Quit when a (custom) syntax file was already loaded
+ if exists("b:current_syntax")
+@@ -16,8 +16,13 @@
+
+ syn keyword cTodo contained TODO FIXME XXX
+
++" It's easy to accidentally add a space after a backslash that was intended
++" for line continuation. Some compilers allow it, which makes it
++" unpredicatable and should be avoided.
++syn match cBadContinuation contained "\\\s\+$"
++
+ " cCommentGroup allows adding matches for special things in comments
+-syn cluster cCommentGroup contains=cTodo
++syn cluster cCommentGroup contains=cTodo,cBadContinuation
+
+ " String and Character constants
+ " Highlight special characters (those which have a backslash) differently
+@@ -265,7 +270,7 @@
+ endif
+
+ " Accept %: for # (C99)
+-syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
++syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
+ syn match cPreCondit display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
+ if !exists("c_no_if0")
+ if !exists("c_no_if0_fold")
+@@ -281,7 +286,7 @@
+ syn match cInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
+ "syn match cLineSkip "\\$"
+ syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
+-syn region cDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 keepend contains=ALLBUT,@cPreProcGroup,@Spell
++syn region cDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
+ syn region cPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
+
+ " Highlight User Labels
+@@ -359,6 +364,7 @@
+ hi def link cComment Comment
+ hi def link cSpecial SpecialChar
+ hi def link cTodo Todo
++hi def link cBadContinuation Error
+ hi def link cCppSkip cCppOut
+ hi def link cCppOut2 cCppOut
+ hi def link cCppOut Comment
+diff -u -r --new-file runtime/syntax.orig/cf.vim runtime/syntax/cf.vim
+--- runtime/syntax.orig/cf.vim 2007-11-19 16:27:33.000000000 -0600
++++ runtime/syntax/cf.vim 2010-03-02 09:17:43.000000000 -0600
+@@ -1,321 +1,440 @@
+ " Vim syntax file
+-" Language: ColdFusion
+-" Maintainer: Toby Woodwark (toby.woodwark+vim@gmail.com)
+-" Last Change: 2007 Nov 19
+-" Filenames: *.cfc *.cfm
+-" Version: Macromedia ColdFusion MX 7
+-" Usage: Note that ColdFusion has its own comment syntax
+-" i.e. <!--- --->
+-
+-" For version 5.x, clear all syntax items.
+-" For version 6.x+, quit if a syntax file is already loaded.
+-if version < 600
+- syntax clear
+-elseif exists("b:current_syntax")
++" Language: CFML
++" Maintainer: Toby Woodwark (toby.woodwark+vim@gmail.com)
++" Last Change: 2010-03-02
++" Filenames: *.cfc *.cfm
++" Version: Adobe ColdFusion 9
++" Usage: This file contains both syntax definitions
++" and a list of known builtin tags, functions and keywords.
++" Refs -
++" http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WS8f0cc78011fffa71866534d11cdad96e4e-8000.html
++" http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec17324-8000.html
++" TODO:
++" Support the limited array literal and struct literal syntax in CF8+.
++" Highlight namespaced tags fom cfimport.
++" Complete CF9+ cfscript support.
++" Railo support.
++" Options:
++" d_noinclude_html - set to prevent HTML highlighting. Use this if you are not working on HTML.
++
++" Quit if a syntax file is already loaded.
++if exists("b:current_syntax")
+ finish
+ endif
+
+-" Use all the stuff from the HTML syntax file.
+-" TODO remove this; CFML is not a superset of HTML
+-if version < 600
+- source <sfile>:p:h/html.vim
++if exists("d_noinclude_html")
++ " Define alternatives to the HTML syntax file.
++
++ " Copied from html.vim - the rules for matching a CF tag match those for HTML/SGML.
++ " CFML syntax is more permissive when it comes to superfluous <> chars.
++ syn region htmlString contained start=+"+ end=+"+ contains=@htmlPreproc
++ syn region htmlString contained start=+'+ end=+'+ contains=@htmlPreproc
++ syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=@htmlPreproc
++ " Hacked htmlTag so that it only matches cf tags and not random <> chars.
++ syn region htmlEndTag start=+</cf+ end=+>+ contains=htmlTagN,htmlTagError
++ syn region htmlTag start=+<\s*cf[^/]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,@htmlPreproc,@htmlArgCluster
++ syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,@htmlTagNameCluster
++ syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,@htmlTagNameCluster
++ syn match htmlTagError contained "[^>]<"ms=s+1
+ else
++ " Use all the stuff from the HTML syntax file.
++ " This means eg HTML comments are highlighted as comments, even if they include cf tags.
+ runtime! syntax/html.vim
+ endif
+
+-syn sync fromstart
+-syn sync maxlines=200
+-syn case ignore
++syn sync fromstart
++syn sync maxlines=200
++syn case ignore
+
+ " Scopes and keywords.
+-syn keyword cfScope contained cgi cffile cookie request caller this thistag
+-syn keyword cfScope contained cfcatch variables application server session client form url attributes
+-syn keyword cfScope contained arguments
+-syn keyword cfBool contained yes no true false
++syn keyword cfScope contained cgi cffile cookie request caller this thistag
++syn keyword cfScope contained cfcatch variables application server session client form url local
++syn keyword cfScope contained arguments super cfhttp attributes error
++syn keyword cfBool contained yes no true false
+
+ " Operator strings.
+-syn keyword cfOperator contained xor eqv and or lt le lte gt ge gte equal eq neq not is mod contains
+-syn match cfOperatorMatch contained "\<does\_s\+not\_s\+contain\>"
+-syn match cfOperatorMatch contained "\<\(greater\|less\)\_s\+than\(\_s\+or\_s\+equal\_s\+to\)\?\>"
+-syn match cfOperatorMatch contained "[\+\-\*\/\\\^\&][\+\-\*\/\\\^\&]\@!"
+-syn cluster cfOperatorCluster contains=cfOperator,cfOperatorMatch
++" ColdFusion <=7:
++syn keyword cfOperator contained xor eqv and or lt le lte gt ge gte equal eq neq not is mod contains
++syn match cfOperatorMatch contained "+"
++syn match cfOperatorMatch contained "\-"
++syn match cfOperatorMatch contained "[\*\/\\\^\&][\+\-\*\/\\\^\&]\@!"
++syn match cfOperatorMatch contained "\<\(not\_s\+\)\?equal\>"
++syn match cfOperatorMatch contained "\<does\_s\+not\_s\+contain\>"
++syn match cfOperatorMatch contained "\<\(greater\|less\)\_s\+than\(\_s\+or\_s\+equal\_s\+to\)\?\>"
++" ColdFusion 8:
++syn keyword cfOperator contained imp
++syn match cfOperatorMatch contained "[?%:!]"
++syn match cfOperatorMatch contained "[\+\-\*\/\&]="
++syn match cfOperatorMatch contained "++"
++syn match cfOperatorMatch contained "--"
++syn match cfOperatorMatch contained "&&"
++syn match cfOperatorMatch contained "||"
++
++syn cluster cfOperatorCluster contains=cfOperator,cfOperatorMatch
++
++" Custom tags called with the <cf_xxx> syntax.
++syn match cfCustomTagName contained "\<cf_[a-zA-Z0-9_]\+\>"
++" (TODO match namespaced tags imported using cfimport, similarly.)
+
+ " Tag names.
+-syn keyword cfTagName contained cfabort cfapplet cfapplication cfargument cfassociate
+-syn keyword cfTagName contained cfbreak cfcache cfcalendar cfcase cfcatch
+-syn keyword cfTagName contained cfchart cfchartdata cfchartseries cfcol cfcollection
+-syn keyword cfTagName contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory
+-syn keyword cfTagName contained cfdocument cfdocumentitem cfdocumentsection cfdump cfelse
+-syn keyword cfTagName contained cfelseif cferror cfexecute cfexit cffile cfflush cfform
+-syn keyword cfTagName contained cfformgroup cfformitem cfftp cffunction cfgraph cfgraphdata
+-syn keyword cfTagName contained cfgrid cfgridcolumn cfgridrow cfgridupdate cfheader
+-syn keyword cfTagName contained cfhtmlhead cfhttp cfhttpparam cfif cfimport
+-syn keyword cfTagName contained cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument
+-syn keyword cfTagName contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout
+-syn keyword cfTagName contained cfloop cfmail cfmailparam cfmailpart cfmodule
+-syn keyword cfTagName contained cfNTauthenticate cfobject cfobjectcache cfoutput cfparam
+-syn keyword cfTagName contained cfpop cfprocessingdirective cfprocparam cfprocresult
+-syn keyword cfTagName contained cfproperty cfquery cfqueryparam cfregistry cfreport
+-syn keyword cfTagName contained cfreportparam cfrethrow cfreturn cfsavecontent cfschedule
+-syn keyword cfTagName contained cfscript cfsearch cfselect cfservlet cfservletparam cfset
+-syn keyword cfTagName contained cfsetting cfsilent cfslider cfstoredproc cfswitch cftable
+-syn keyword cfTagName contained cftextarea cftextinput cfthrow cftimer cftrace cftransaction
+-syn keyword cfTagName contained cftree cftreeitem cftry cfupdate cfwddx cfxml
+-
+-" Tag parameters.
+-syn keyword cfArg contained abort accept access accessible action addnewline addtoken
+-syn keyword cfArg contained agentname align appendkey appletsource application
+-syn keyword cfArg contained applicationtimeout applicationtoken archive
+-syn keyword cfArg contained argumentcollection arguments asciiextensionlist
+-syn keyword cfArg contained attachmentpath attributecollection attributes autowidth
+-syn keyword cfArg contained backgroundvisible basetag bcc bgcolor bind bindingname
+-syn keyword cfArg contained blockfactor body bold border branch cachedafter cachedwithin
+-syn keyword cfArg contained casesensitive category categorytree cc cfsqltype charset
+-syn keyword cfArg contained chartheight chartwidth checked class clientmanagement
+-syn keyword cfArg contained clientstorage codebase colheaderalign colheaderbold
+-syn keyword cfArg contained colheaderfont colheaderfontsize colheaderitalic colheaders
+-syn keyword cfArg contained colheadertextcolor collection colorlist colspacing columns
+-syn keyword cfArg contained completepath component condition connection contentid
+-syn keyword cfArg contained context contextbytes contexthighlightbegin
+-syn keyword cfArg contained contexthighlightend contextpassages cookiedomain criteria
+-syn keyword cfArg contained custom1 custom2 custom3 custom4 data dataalign
+-syn keyword cfArg contained databackgroundcolor datacollection datasource daynames
+-syn keyword cfArg contained dbname dbserver dbtype dbvarname debug default delete
+-syn keyword cfArg contained deletebutton deletefile delimiter delimiters description
+-syn keyword cfArg contained destination detail directory disabled display displayname
+-syn keyword cfArg contained disposition dn domain editable enablecab enablecfoutputonly
+-syn keyword cfArg contained enabled encoded encryption enctype enddate endrange endtime
+-syn keyword cfArg contained entry errorcode exception existing expand expires expireurl
+-syn keyword cfArg contained expression extendedinfo extends extensions external
+-syn keyword cfArg contained failifexists failto file filefield filename filter
+-syn keyword cfArg contained firstdayofweek firstrowasheaders fixnewline font fontbold
+-syn keyword cfArg contained fontembed fontitalic fontsize foregroundcolor format
+-syn keyword cfArg contained formfields formula from generateuniquefilenames getasbinary
+-syn keyword cfArg contained grid griddataalign gridlines groovecolor group
+-syn keyword cfArg contained groupcasesensitive header headeralign headerbold headerfont
+-syn keyword cfArg contained headerfontsize headeritalic headerlines headertextcolor
+-syn keyword cfArg contained height highlighthref hint href hrefkey hscroll hspace html
+-syn keyword cfArg contained htmltable id idletimeout img imgopen imgstyle index inline
+-syn keyword cfArg contained input insert insertbutton interval isolation italic item
+-syn keyword cfArg contained itemcolumn key keyonly label labelformat language list
+-syn keyword cfArg contained listgroups locale localfile log loginstorage lookandfeel
+-syn keyword cfArg contained mailerid mailto marginbottom marginleft marginright
+-syn keyword cfArg contained margintop markersize markerstyle mask max maxlength maxrows
+-syn keyword cfArg contained message messagenumber method mimeattach mimetype min mode
+-syn keyword cfArg contained modifytype monthnames multipart multiple name nameconflict
+-syn keyword cfArg contained namespace new newdirectory notsupported null numberformat
+-syn keyword cfArg contained object omit onblur onchange onclick onerror onfocus
+-syn keyword cfArg contained onkeydown onkeyup onload onmousedown onmouseup onreset
+-syn keyword cfArg contained onsubmit onvalidate operation orderby orientation output
+-syn keyword cfArg contained outputfile overwrite ownerpassword pageencoding pageheight
+-syn keyword cfArg contained pagetype pagewidth paintstyle param_1 param_2 param_3
+-syn keyword cfArg contained param_4 param_5 param_6 param_7 param_8 param_9 parent
+-syn keyword cfArg contained parrent passive passthrough password path pattern
+-syn keyword cfArg contained permissions picturebar pieslicestyle port porttypename
+-syn keyword cfArg contained prefix preloader preservedata previouscriteria procedure
+-syn keyword cfArg contained protocol provider providerdsn proxybypass proxypassword
+-syn keyword cfArg contained proxyport proxyserver proxyuser publish query queryasroot
+-syn keyword cfArg contained queryposition range rebind recurse redirect referral
+-syn keyword cfArg contained refreshlabel remotefile replyto report requesttimeout
+-syn keyword cfArg contained required reset resoleurl resolveurl result resultset
+-syn keyword cfArg contained retrycount returnasbinary returncode returntype
+-syn keyword cfArg contained returnvariable roles rotated rowheaderalign rowheaderbold
+-syn keyword cfArg contained rowheaderfont rowheaderfontsize rowheaderitalic rowheaders
+-syn keyword cfArg contained rowheadertextcolor rowheaderwidth rowheight scale scalefrom
+-syn keyword cfArg contained scaleto scope scriptprotect scriptsrc secure securitycontext
+-syn keyword cfArg contained select selectcolor selected selecteddate selectedindex
+-syn keyword cfArg contained selectmode separator seriescolor serieslabel seriesplacement
+-syn keyword cfArg contained server serviceport serviceportname sessionmanagement
+-syn keyword cfArg contained sessiontimeout setclientcookies setcookie setdomaincookies
+-syn keyword cfArg contained show3d showborder showdebugoutput showerror showlegend
+-syn keyword cfArg contained showmarkers showxgridlines showygridlines size skin sort
+-syn keyword cfArg contained sortascendingbutton sortcontrol sortdescendingbutton
+-syn keyword cfArg contained sortxaxis source spoolenable sql src srcfile start startdate
+-syn keyword cfArg contained startrange startrow starttime status statuscode statustext
+-syn keyword cfArg contained step stoponerror style subject suggestions
+-syn keyword cfArg contained suppresswhitespace tablename tableowner tablequalifier
+-syn keyword cfArg contained taglib target task template text textcolor textqualifier
+-syn keyword cfArg contained throwonerror throwonerror throwonfailure throwontimeout
+-syn keyword cfArg contained timeout timespan tipbgcolor tipstyle title to tooltip
+-syn keyword cfArg contained toplevelvariable transfermode type uid unit url urlpath
+-syn keyword cfArg contained useragent username userpassword usetimezoneinfo validate
+-syn keyword cfArg contained validateat value valuecolumn values valuesdelimiter
+-syn keyword cfArg contained valuesdisplay var variable vertical visible vscroll vspace
+-syn keyword cfArg contained webservice width wmode wraptext wsdlfile xaxistitle
+-syn keyword cfArg contained xaxistype xoffset yaxistitle yaxistype yoffset
+-
+-" ColdFusion Functions.
+-syn keyword cfFunctionName contained ACos ASin Abs AddSOAPRequestHeader AddSOAPResponseHeader
+-syn keyword cfFunctionName contained ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ArrayInsertAt
+-syn keyword cfFunctionName contained ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArrayNew
+-syn keyword cfFunctionName contained ArrayPrepend ArrayResize ArraySet ArraySort ArraySum
+-syn keyword cfFunctionName contained ArraySwap ArrayToList Asc Atn AuthenticatedContext
+-syn keyword cfFunctionName contained AuthenticatedUser BinaryDecode BinaryEncode BitAnd
+-syn keyword cfFunctionName contained BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN
+-syn keyword cfFunctionName contained BitSHRN BitXor CJustify Ceiling CharsetDecode CharsetEncode
+-syn keyword cfFunctionName contained Chr Compare CompareNoCase Cos CreateDate CreateDateTime
+-syn keyword cfFunctionName contained CreateODBCDate CreateODBCDateTime CreateODBCTime
+-syn keyword cfFunctionName contained CreateObject CreateTime CreateTimeSpan CreateUUID DE DateAdd
+-syn keyword cfFunctionName contained DateCompare DateConvert DateDiff DateFormat DatePart Day
+-syn keyword cfFunctionName contained DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear
+-syn keyword cfFunctionName contained DecimalFormat DecrementValue Decrypt DecryptBinary
+-syn keyword cfFunctionName contained DeleteClientVariable DirectoryExists DollarFormat Duplicate
+-syn keyword cfFunctionName contained Encrypt EncryptBinary Evaluate Exp ExpandPath FileExists
+-syn keyword cfFunctionName contained Find FindNoCase FindOneOf FirstDayOfMonth Fix FormatBaseN
+-syn keyword cfFunctionName contained GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList
+-syn keyword cfFunctionName contained GetBaseTemplatePath GetClientVariablesList GetContextRoot
+-syn keyword cfFunctionName contained GetCurrentTemplatePath GetDirectoryFromPath GetEncoding
+-syn keyword cfFunctionName contained GetException GetFileFromPath GetFunctionList
+-syn keyword cfFunctionName contained GetGatewayHelper GetHttpRequestData GetHttpTimeString
+-syn keyword cfFunctionName contained GetLocalHostIP
+-syn keyword cfFunctionName contained GetLocale GetLocaleDisplayName GetMetaData GetMetricData
+-syn keyword cfFunctionName contained GetPageContext GetProfileSections GetProfileString
+-syn keyword cfFunctionName contained GetSOAPRequest GetSOAPRequestHeader GetSOAPResponse
+-syn keyword cfFunctionName contained GetSOAPResponseHeader GetTempDirectory GetTempFile
+-syn keyword cfFunctionName contained GetTickCount GetTimeZoneInfo GetToken
+-syn keyword cfFunctionName contained HTMLCodeFormat HTMLEditFormat Hash Hour IIf IncrementValue
+-syn keyword cfFunctionName contained InputBaseN Insert Int IsArray IsAuthenticated IsAuthorized
+-syn keyword cfFunctionName contained IsBinary IsBoolean IsCustomFunction IsDate IsDebugMode
+-syn keyword cfFunctionName contained IsDefined
+-syn keyword cfFunctionName contained IsLeapYear IsLocalHost IsNumeric
+-syn keyword cfFunctionName contained IsNumericDate IsObject IsProtected IsQuery IsSOAPRequest
+-syn keyword cfFunctionName contained IsSimpleValue IsStruct IsUserInRole IsValid IsWDDX IsXML
+-syn keyword cfFunctionName contained IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot
+-syn keyword cfFunctionName contained JSStringFormat JavaCast LCase LJustify LSCurrencyFormat
+-syn keyword cfFunctionName contained LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate
+-syn keyword cfFunctionName contained LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime
+-syn keyword cfFunctionName contained LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Left
+-syn keyword cfFunctionName contained Len ListAppend ListChangeDelims ListContains
+-syn keyword cfFunctionName contained ListContainsNoCase ListDeleteAt ListFind ListFindNoCase
+-syn keyword cfFunctionName contained ListFirst ListGetAt ListInsertAt ListLast ListLen
+-syn keyword cfFunctionName contained ListPrepend ListQualify ListRest ListSetAt ListSort
+-syn keyword cfFunctionName contained ListToArray ListValueCount ListValueCountNoCase Log Log10
+-syn keyword cfFunctionName contained Max Mid Min Minute Month MonthAsString Now NumberFormat
+-syn keyword cfFunctionName contained ParagraphFormat ParseDateTime Pi
+-syn keyword cfFunctionName contained PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow
+-syn keyword cfFunctionName contained QueryNew QuerySetCell QuotedValueList REFind REFindNoCase
+-syn keyword cfFunctionName contained REReplace REReplaceNoCase RJustify RTrim Rand RandRange
+-syn keyword cfFunctionName contained Randomize ReleaseComObject RemoveChars RepeatString Replace
+-syn keyword cfFunctionName contained ReplaceList ReplaceNoCase Reverse Right Round Second
+-syn keyword cfFunctionName contained SendGatewayMessage SetEncoding SetLocale SetProfileString
+-syn keyword cfFunctionName contained SetVariable Sgn Sin SpanExcluding SpanIncluding Sqr StripCR
+-syn keyword cfFunctionName contained StructAppend StructClear StructCopy StructCount StructDelete
+-syn keyword cfFunctionName contained StructFind StructFindKey StructFindValue StructGet
+-syn keyword cfFunctionName contained StructInsert StructIsEmpty StructKeyArray StructKeyExists
+-syn keyword cfFunctionName contained StructKeyList StructNew StructSort StructUpdate Tan
+-syn keyword cfFunctionName contained TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase
+-syn keyword cfFunctionName contained URLDecode URLEncodedFormat URLSessionFormat Val ValueList
+-syn keyword cfFunctionName contained Week Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat
+-syn keyword cfFunctionName contained XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform
+-syn keyword cfFunctionName contained XmlValidate Year YesNoFormat
+-
+-" Deprecated tags and functions.
+-syn keyword cfDeprecated contained cfauthenticate cfimpersonate cfgraph cfgraphdata
+-syn keyword cfDeprecated contained cfservlet cfservletparam cftextinput
+-syn keyword cfDeprecated contained GetK2ServerDocCount GetK2ServerDocCountLimit GetTemplatePath
+-syn keyword cfDeprecated contained IsK2ServerABroker IsK2ServerDocCountExceeded IsK2ServerOnline
+-syn keyword cfDeprecated contained ParameterExists
+-
+-syn cluster htmlTagNameCluster add=cfTagName
+-syn cluster htmlArgCluster add=cfArg,cfHashRegion,cfScope
+-syn cluster htmlPreproc add=cfHashRegion
++" ColdFusion <=7:
++syn keyword cfTagName contained cfabort cfapplet cfapplication cfargument cfassociate
++syn keyword cfTagName contained cfbreak cfcache cfcalendar cfcase cfcatch
++syn keyword cfTagName contained cfchart cfchartdata cfchartseries cfcol cfcollection
++syn keyword cfTagName contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory
++syn keyword cfTagName contained cfdocument cfdocumentitem cfdocumentsection cfdump cfelse
++syn keyword cfTagName contained cfelseif cferror cfexecute cfexit cffile cfflush cfform
++syn keyword cfTagName contained cfformgroup cfformitem cfftp cffunction
++syn keyword cfTagName contained cfgrid cfgridcolumn cfgridrow cfgridupdate cfheader
++syn keyword cfTagName contained cfhtmlhead cfhttp cfhttpparam cfif cfimport
++syn keyword cfTagName contained cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument
++syn keyword cfTagName contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout
++syn keyword cfTagName contained cfloop cfmail cfmailparam cfmailpart cfmodule
++syn keyword cfTagName contained cfNTauthenticate cfobject cfobjectcache cfoutput cfparam
++syn keyword cfTagName contained cfpop cfprocessingdirective cfprocparam cfprocresult
++syn keyword cfTagName contained cfproperty cfquery cfqueryparam cfregistry cfreport
++syn keyword cfTagName contained cfreportparam cfrethrow cfreturn cfsavecontent cfschedule
++syn keyword cfTagName contained cfscript cfsearch cfselect cfservletparam cfset
++syn keyword cfTagName contained cfsetting cfsilent cfslider cfstoredproc cfswitch cftable
++syn keyword cfTagName contained cftextarea cftextinput cfthrow cftimer cftrace cftransaction
++syn keyword cfTagName contained cftree cftreeitem cftry cfupdate cfwddx cfxml
++" ColdFusion 8:
++syn keyword cfTagName contained cfajaximport cfajaxproxy cfdbinfo cfdiv cfexchangecalendar
++syn keyword cfTagName contained cfexchangeconnection cfexchangecontact cfexchangefilter
++syn keyword cfTagName contained cfexchangemail cfexchangetask cffeed
++syn keyword cfTagName contained cfinterface cflayout cflayoutarea cfmenu cfmenuitem
++syn keyword cfTagName contained cfpdf cfpdfform cfpdfformparam cfpdfparam cfpdfsubform cfpod
++syn keyword cfTagName contained cfpresentation cfpresentationslide cfpresenter cfprint
++syn keyword cfTagName contained cfsprydataset cfthread cftooltip cfwindow cfzip cfzipparam
++" ColdFusion 9:
++syn keyword cfTagName contained cfcontinue cffileupload cffinally
++syn keyword cfTagName contained cfimage cfimap
++syn keyword cfTagName contained cfmap cfmapitem cfmediaplayer cfmessagebox
++syn keyword cfTagName contained cfprocparam cfprogressbar
++syn keyword cfTagName contained cfsharepoint cfspreadsheet
++
++" Tag attributes.
++" XXX Not updated for ColdFusion 8/9.
++" These are becoming a headache to maintain, so might be removed.
++syn keyword cfArg contained abort accept access accessible action addnewline addtoken
++syn keyword cfArg contained agentname align appendkey appletsource application
++syn keyword cfArg contained applicationtimeout applicationtoken archive
++syn keyword cfArg contained argumentcollection arguments asciiextensionlist
++syn keyword cfArg contained attachmentpath attributecollection attributes autowidth
++syn keyword cfArg contained backgroundvisible basetag bcc bgcolor bind bindingname
++syn keyword cfArg contained blockfactor body bold border branch cachedafter cachedwithin
++syn keyword cfArg contained casesensitive category categorytree cc cfsqltype charset
++syn keyword cfArg contained chartheight chartwidth checked class clientmanagement
++syn keyword cfArg contained clientstorage codebase colheaderalign colheaderbold
++syn keyword cfArg contained colheaderfont colheaderfontsize colheaderitalic colheaders
++syn keyword cfArg contained colheadertextcolor collection colorlist colspacing columns
++syn keyword cfArg contained completepath component condition connection contentid
++syn keyword cfArg contained context contextbytes contexthighlightbegin
++syn keyword cfArg contained contexthighlightend contextpassages cookiedomain criteria
++syn keyword cfArg contained custom1 custom2 custom3 custom4 data dataalign
++syn keyword cfArg contained databackgroundcolor datacollection datasource daynames
++syn keyword cfArg contained dbname dbserver dbtype dbvarname debug default delete
++syn keyword cfArg contained deletebutton deletefile delimiter delimiters description
++syn keyword cfArg contained destination detail directory disabled display displayname
++syn keyword cfArg contained disposition dn domain editable enablecab enablecfoutputonly
++syn keyword cfArg contained enabled encoded encryption enctype enddate endrange endtime
++syn keyword cfArg contained entry errorcode exception existing expand expires expireurl
++syn keyword cfArg contained expression extendedinfo extends extensions external
++syn keyword cfArg contained failifexists failto file filefield filename filter
++syn keyword cfArg contained firstdayofweek firstrowasheaders fixnewline font fontbold
++syn keyword cfArg contained fontembed fontitalic fontsize foregroundcolor format
++syn keyword cfArg contained formfields formula from generateuniquefilenames getasbinary
++syn keyword cfArg contained grid griddataalign gridlines groovecolor group
++syn keyword cfArg contained groupcasesensitive header headeralign headerbold headerfont
++syn keyword cfArg contained headerfontsize headeritalic headerlines headertextcolor
++syn keyword cfArg contained height highlighthref hint href hrefkey hscroll hspace html
++syn keyword cfArg contained htmltable id idletimeout img imgopen imgstyle index inline
++syn keyword cfArg contained input insert insertbutton interval isolation italic item
++syn keyword cfArg contained itemcolumn key keyonly label labelformat language list
++syn keyword cfArg contained listgroups locale localfile log loginstorage lookandfeel
++syn keyword cfArg contained mailerid mailto marginbottom marginleft marginright
++syn keyword cfArg contained margintop markersize markerstyle mask max maxlength maxrows
++syn keyword cfArg contained message messagenumber method mimeattach mimetype min mode
++syn keyword cfArg contained modifytype monthnames multipart multiple name nameconflict
++syn keyword cfArg contained namespace new newdirectory notsupported null numberformat
++syn keyword cfArg contained object omit onblur onchange onclick onerror onfocus
++syn keyword cfArg contained onkeydown onkeyup onload onmousedown onmouseup onreset
++syn keyword cfArg contained onsubmit onvalidate operation orderby orientation output
++syn keyword cfArg contained outputfile overwrite ownerpassword pageencoding pageheight
++syn keyword cfArg contained pagetype pagewidth paintstyle param_1 param_2 param_3
++syn keyword cfArg contained param_4 param_5 param_6 param_7 param_8 param_9 parent
++syn keyword cfArg contained parrent passive passthrough password path pattern
++syn keyword cfArg contained permissions picturebar pieslicestyle port porttypename
++syn keyword cfArg contained prefix preloader preservedata previouscriteria procedure
++syn keyword cfArg contained protocol provider providerdsn proxybypass proxypassword
++syn keyword cfArg contained proxyport proxyserver proxyuser publish query queryasroot
++syn keyword cfArg contained queryposition range rebind recurse redirect referral
++syn keyword cfArg contained refreshlabel remotefile replyto report requesttimeout
++syn keyword cfArg contained required reset resoleurl resolveurl result resultset
++syn keyword cfArg contained retrycount returnasbinary returncode returntype
++syn keyword cfArg contained returnvariable roles rotated rowheaderalign rowheaderbold
++syn keyword cfArg contained rowheaderfont rowheaderfontsize rowheaderitalic rowheaders
++syn keyword cfArg contained rowheadertextcolor rowheaderwidth rowheight scale scalefrom
++syn keyword cfArg contained scaleto scope scriptprotect scriptsrc secure securitycontext
++syn keyword cfArg contained select selectcolor selected selecteddate selectedindex
++syn keyword cfArg contained selectmode separator seriescolor serieslabel seriesplacement
++syn keyword cfArg contained server serviceport serviceportname sessionmanagement
++syn keyword cfArg contained sessiontimeout setclientcookies setcookie setdomaincookies
++syn keyword cfArg contained show3d showborder showdebugoutput showerror showlegend
++syn keyword cfArg contained showmarkers showxgridlines showygridlines size skin sort
++syn keyword cfArg contained sortascendingbutton sortcontrol sortdescendingbutton
++syn keyword cfArg contained sortxaxis source spoolenable sql src srcfile start startdate
++syn keyword cfArg contained startrange startrow starttime status statuscode statustext
++syn keyword cfArg contained step stoponerror style subject suggestions
++syn keyword cfArg contained suppresswhitespace tablename tableowner tablequalifier
++syn keyword cfArg contained taglib target task template text textcolor textqualifier
++syn keyword cfArg contained throwonerror throwonerror throwonfailure throwontimeout
++syn keyword cfArg contained timeout timespan tipbgcolor tipstyle title to tooltip
++syn keyword cfArg contained toplevelvariable transfermode type uid unit url urlpath
++syn keyword cfArg contained useragent username userpassword usetimezoneinfo validate
++syn keyword cfArg contained validateat value valuecolumn values valuesdelimiter
++syn keyword cfArg contained valuesdisplay var variable vertical visible vscroll vspace
++syn keyword cfArg contained webservice width wmode wraptext wsdlfile xaxistitle
++syn keyword cfArg contained xaxistype xoffset yaxistitle yaxistype yoffset
++
++" Functions.
++" ColdFusion <=7:
++syn keyword cfFunctionName contained ACos ASin Abs AddSOAPRequestHeader AddSOAPResponseHeader
++syn keyword cfFunctionName contained ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ArrayInsertAt
++syn keyword cfFunctionName contained ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArrayNew
++syn keyword cfFunctionName contained ArrayPrepend ArrayResize ArraySet ArraySort ArraySum
++syn keyword cfFunctionName contained ArraySwap ArrayToList Asc Atn AuthenticatedContext
++syn keyword cfFunctionName contained AuthenticatedUser BinaryDecode BinaryEncode BitAnd
++syn keyword cfFunctionName contained BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN
++syn keyword cfFunctionName contained BitSHRN BitXor CJustify Ceiling CharsetDecode CharsetEncode
++syn keyword cfFunctionName contained Chr Compare CompareNoCase Cos CreateDate CreateDateTime
++syn keyword cfFunctionName contained CreateODBCDate CreateODBCDateTime CreateODBCTime
++syn keyword cfFunctionName contained CreateObject CreateTime CreateTimeSpan CreateUUID DE DateAdd
++syn keyword cfFunctionName contained DateCompare DateConvert DateDiff DateFormat DatePart Day
++syn keyword cfFunctionName contained DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear
++syn keyword cfFunctionName contained DecimalFormat DecrementValue Decrypt DecryptBinary
++syn keyword cfFunctionName contained DeleteClientVariable DirectoryExists DollarFormat Duplicate
++syn keyword cfFunctionName contained Encrypt EncryptBinary Evaluate Exp ExpandPath FileExists
++syn keyword cfFunctionName contained Find FindNoCase FindOneOf FirstDayOfMonth Fix FormatBaseN
++syn keyword cfFunctionName contained GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList
++syn keyword cfFunctionName contained GetBaseTemplatePath GetClientVariablesList GetContextRoot
++syn keyword cfFunctionName contained GetCurrentTemplatePath GetDirectoryFromPath GetEncoding
++syn keyword cfFunctionName contained GetException GetFileFromPath GetFunctionList
++syn keyword cfFunctionName contained GetGatewayHelper GetHttpRequestData GetHttpTimeString
++syn keyword cfFunctionName contained GetLocalHostIP
++syn keyword cfFunctionName contained GetLocale GetLocaleDisplayName GetMetaData GetMetricData
++syn keyword cfFunctionName contained GetPageContext GetProfileSections GetProfileString
++syn keyword cfFunctionName contained GetSOAPRequest GetSOAPRequestHeader GetSOAPResponse
++syn keyword cfFunctionName contained GetSOAPResponseHeader GetTempDirectory GetTempFile
++syn keyword cfFunctionName contained GetTickCount GetTimeZoneInfo GetToken
++syn keyword cfFunctionName contained HTMLCodeFormat HTMLEditFormat Hash Hour IIf IncrementValue
++syn keyword cfFunctionName contained InputBaseN Insert Int IsArray IsAuthenticated IsAuthorized
++syn keyword cfFunctionName contained IsBinary IsBoolean IsCustomFunction IsDate IsDebugMode
++syn keyword cfFunctionName contained IsDefined
++syn keyword cfFunctionName contained IsLeapYear IsLocalHost IsNumeric
++syn keyword cfFunctionName contained IsNumericDate IsObject IsProtected IsQuery IsSOAPRequest
++syn keyword cfFunctionName contained IsSimpleValue IsStruct IsUserInRole IsValid IsWDDX IsXML
++syn keyword cfFunctionName contained IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot
++syn keyword cfFunctionName contained JSStringFormat JavaCast LCase LJustify LSCurrencyFormat
++syn keyword cfFunctionName contained LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate
++syn keyword cfFunctionName contained LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime
++syn keyword cfFunctionName contained LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Left
++syn keyword cfFunctionName contained Len ListAppend ListChangeDelims ListContains
++syn keyword cfFunctionName contained ListContainsNoCase ListDeleteAt ListFind ListFindNoCase
++syn keyword cfFunctionName contained ListFirst ListGetAt ListInsertAt ListLast ListLen
++syn keyword cfFunctionName contained ListPrepend ListQualify ListRest ListSetAt ListSort
++syn keyword cfFunctionName contained ListToArray ListValueCount ListValueCountNoCase Log Log10
++syn keyword cfFunctionName contained Max Mid Min Minute Month MonthAsString Now NumberFormat
++syn keyword cfFunctionName contained ParagraphFormat ParseDateTime Pi
++syn keyword cfFunctionName contained PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow
++syn keyword cfFunctionName contained QueryNew QuerySetCell QuotedValueList REFind REFindNoCase
++syn keyword cfFunctionName contained REReplace REReplaceNoCase RJustify RTrim Rand RandRange
++syn keyword cfFunctionName contained Randomize ReleaseComObject RemoveChars RepeatString Replace
++syn keyword cfFunctionName contained ReplaceList ReplaceNoCase Reverse Right Round Second
++syn keyword cfFunctionName contained SendGatewayMessage SetEncoding SetLocale SetProfileString
++syn keyword cfFunctionName contained SetVariable Sgn Sin SpanExcluding SpanIncluding Sqr StripCR
++syn keyword cfFunctionName contained StructAppend StructClear StructCopy StructCount StructDelete
++syn keyword cfFunctionName contained StructFind StructFindKey StructFindValue StructGet
++syn keyword cfFunctionName contained StructInsert StructIsEmpty StructKeyArray StructKeyExists
++syn keyword cfFunctionName contained StructKeyList StructNew StructSort StructUpdate Tan
++syn keyword cfFunctionName contained TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase
++syn keyword cfFunctionName contained URLDecode URLEncodedFormat URLSessionFormat Val ValueList
++syn keyword cfFunctionName contained Week Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat
++syn keyword cfFunctionName contained XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform
++syn keyword cfFunctionName contained XmlValidate Year YesNoFormat
++" ColdFusion 8:
++syn keyword cfFunctionName contained AjaxLink AjaxOnLoad ArrayIsDefined BinaryDecode BinaryEncode CharsetDecode CharsetEncode
++syn keyword cfFunctionName contained DecryptBinary DeserializeJSON DotNetToCFType EncryptBinary FileClose FileCopy FileDelete
++syn keyword cfFunctionName contained FileIsEOF FileMove FileOpen FileRead FileReadBinary FileReadLine FileSetAccessMode FileSetAttribute
++syn keyword cfFunctionName contained FileSetLastModified FileWrite GenerateSecretKey GetGatewayHelper GetAuthUser GetComponentMetaData
++syn keyword cfFunctionName contained GetContextRoot GetEncoding GetFileInfo GetLocaleDisplayName GetLocalHostIP GetMetaData
++syn keyword cfFunctionName contained GetPageContext GetPrinterInfo GetProfileSections GetReadableImageFormats GetSOAPRequest
++syn keyword cfFunctionName contained GetSOAPRequestHeader GetSOAPResponse GetSOAPResponseHeader GetUserRoles GetWriteableImageFormats
++syn keyword cfFunctionName contained ImageAddBorder ImageBlur ImageClearRect ImageCopy ImageCrop ImageDrawArc ImageDrawBeveledRect
++syn keyword cfFunctionName contained ImageDrawCubicCurve ImageDrawPoint ImageDrawLine ImageDrawLines ImageDrawOval
++syn keyword cfFunctionName contained ImageDrawQuadraticCurve ImageDrawRect ImageDrawRoundRect ImageDrawText ImageFlip ImageGetBlob
++syn keyword cfFunctionName contained ImageGetBufferedImage ImageGetEXIFMetadata ImageGetEXIFTag ImageGetHeight ImageGetIPTCMetadata
++syn keyword cfFunctionName contained ImageGetIPTCTag ImageGetWidth ImageGrayscale ImageInfo ImageNegative ImageNew ImageOverlay
++syn keyword cfFunctionName contained ImagePaste ImageRead ImageReadBase64 ImageResize ImageRotate ImageRotateDrawingAxis ImageScaleToFit
++" ColdFusion 9:
++syn keyword cfFunctionName contained ApplicationStop ArrayContains ArrayDelete ArrayFind ArrayFindNoCase IsSpreadsheetFile
++syn keyword cfFunctionName contained IsSpreadsheetObject FileSkipBytes Location ObjectLoad SpreadsheetFormatColumn
++syn keyword cfFunctionName contained SpreadsheetFormatColumns SpreadsheetFormatRow SpreadsheetFormatRows SpreadsheetGetCellComment
++syn keyword cfFunctionName contained CacheGetAllIds CacheGetMetadata CacheGetProperties CacheGet CachePut ObjectSave ORMClearSession
++syn keyword cfFunctionName contained ORMCloseSession ORMEvictQueries ORMEvictCollection SpreadsheetGetCellFormula SpreadsheetGetCellValue
++syn keyword cfFunctionName contained SpreadsheetInfo SpreadsheetMergeCells SpreadsheetNew CacheRemove CacheSetProperties DirectoryCreate
++syn keyword cfFunctionName contained DirectoryDelete DirectoryExists ORMEvictEntity ORMEvictQueries ORMExecuteQuery ORMFlush
++syn keyword cfFunctionName contained ORMGetSession SpreadsheetRead SpreadsheetReadBinary SpreadsheetSetActiveSheetNumber
++syn keyword cfFunctionName contained SpreadsheetSetCellComment SpreadsheetSetCellFormula DirectoryList DirectoryRename EntityDelete
++syn keyword cfFunctionName contained EntityLoad EntityLoadByExample ORMGetSessionFactory ORMReload ObjectEquals SpreadsheetAddColumn
++syn keyword cfFunctionName contained SpreadsheetAddFreezePane SpreadsheetSetCellValue SpreadsheetSetActiveSheet SpreadsheetSetFooter
++syn keyword cfFunctionName contained SpreadsheetSetHeader SpreadsheetSetColumnWidth EntityLoadByPK EntityMerge EntityNew EntityReload
++syn keyword cfFunctionName contained EntitySave SpreadsheetAddImage SpreadsheetAddInfo SpreadsheetAddRow SpreadsheetAddRows
++syn keyword cfFunctionName contained SpreadsheetAddSplitPane SpreadsheetShiftColumns SpreadsheetShiftRows SpreadsheetSetRowHeight
++syn keyword cfFunctionName contained SpreadsheetWrite Trace FileDelete FileSeek FileWriteLine GetFunctionCalledName GetVFSMetaData IsIPv6
++syn keyword cfFunctionName contained IsNull SpreadsheetCreateSheet SpreadsheetDeleteColumn SpreadsheetDeleteColumns SpreadsheetDeleteRow
++syn keyword cfFunctionName contained SpreadsheetDeleteRows SpreadsheetFormatCell TransactionCommit TransactionRollback
++syn keyword cfFunctionName contained TransactionSetSavePoint ThreadTerminate ThreadJoin Throw Writedump Writelog
++
++" Deprecated or obsoleted tags and functions.
++syn keyword cfDeprecatedTag contained cfauthenticate cfimpersonate cfgraph cfgraphdata
++syn keyword cfDeprecatedTag contained cfservlet cfservletparam cftextinput
++syn keyword cfDeprecatedTag contained cfinternaladminsecurity cfnewinternaladminsecurity
++syn keyword cfDeprecatedFunction contained GetK2ServerDocCount GetK2ServerDocCountLimit GetTemplatePath
++syn keyword cfDeprecatedFunction contained IsK2ServerABroker IsK2ServerDocCountExceeded IsK2ServerOnline
++syn keyword cfDeprecatedFunction contained ParameterExists AuthenticatedContext AuthenticatedUser
++syn keyword cfDeprecatedFunction contained isAuthenticated isAuthorized isProtected
++
++" Add to the HTML clusters.
++syn cluster htmlTagNameCluster add=cfTagName,cfCustomTagName,cfDeprecatedTag
++syn cluster htmlArgCluster add=cfArg,cfHashRegion,cfScope
++syn cluster htmlPreproc add=cfHashRegion
+
+-syn cluster cfExpressionCluster contains=cfFunctionName,cfScope,@cfOperatorCluster,cfScriptStringD,cfScriptStringS,cfScriptNumber,cfBool
++syn cluster cfExpressionCluster contains=cfFunctionName,cfScope,@cfOperatorCluster,cfScriptStringD,cfScriptStringS,cfScriptNumber,cfBool,cfComment
+
+ " Evaluation; skip strings ( this helps with cases like nested IIf() )
+-syn region cfHashRegion start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contains=@cfExpressionCluster,cfScriptParenError
++" containedin to add to the TOP of cfOutputRegion.
++syn region cfHashRegion start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contained containedin=cfOutputRegion contains=@cfExpressionCluster,cfScriptParenError
++
++" Hashmarks are significant inside cfoutput tags.
++" cfoutput tags may be nested indefinitely.
++syn region cfOutputRegion matchgroup=NONE transparent start=+<cfoutput>+ end=+</cfoutput>+ contains=TOP
+
+ " <cfset>, <cfif>, <cfelseif>, <cfreturn> are analogous to hashmarks (implicit
+ " evaluation) and have 'var'
+-syn region cfSetRegion start="<cfset " start="<cfreturn " start="<cfelseif " start="<cfif " end='>' keepend contains=@cfExpressionCluster,cfSetLHSRegion,cfSetTagEnd,cfScriptType
+-syn region cfSetLHSRegion contained start="<cfreturn" start="<cfelseif" start="<cfif" start="<cfset" end=" " keepend contains=cfTagName,htmlTag
+-syn match cfSetTagEnd contained '>'
+-
+-" CF comments: similar to SGML comments
+-syn region cfComment start='<!---' end='--->' keepend contains=cfCommentTodo
+-syn keyword cfCommentTodo contained TODO FIXME XXX TBD WTF
++syn region cfSetRegion start="<cfset\>" start="<cfreturn\>" start="<cfelseif\>" start="<cfif\>" end='>' keepend contains=@cfExpressionCluster,cfSetLHSRegion,cfSetTagEnd,cfScriptStatement
++syn region cfSetLHSRegion contained start="<cfreturn" start="<cfelseif" start="<cfif" start="<cfset" end="." keepend contains=cfTagName,htmlTag
++syn match cfSetTagEnd contained '>'
++
++" CF comments: similar to SGML comments, but can be nested.
++syn region cfComment start='<!---' end='--->' contains=cfCommentTodo,cfComment
++syn keyword cfCommentTodo contained TODO FIXME XXX TBD WTF
+
+ " CFscript
+-syn match cfScriptLineComment contained "\/\/.*$" contains=cfCommentTodo
+-syn region cfScriptComment contained start="/\*" end="\*/" contains=cfCommentTodo
++" TODO better support for new component/function def syntax
++" TODO better support for 'new'
++" TODO highlight metadata (@ ...) inside comments.
++syn match cfScriptLineComment contained "\/\/.*$" contains=cfCommentTodo
++syn region cfScriptComment contained start="/\*" end="\*/" contains=cfCommentTodo
++syn match cfScriptBraces contained "[{}]"
++syn keyword cfScriptStatement contained return var
+ " in CF, quotes are escaped by doubling
+-syn region cfScriptStringD contained start=+"+ skip=+\\\\\|""+ end=+"+ extend contains=@htmlPreproc,cfHashRegion
+-syn region cfScriptStringS contained start=+'+ skip=+\\\\\|''+ end=+'+ extend contains=@htmlPreproc,cfHashRegion
+-syn match cfScriptNumber contained "\<\d\+\>"
+-syn keyword cfScriptConditional contained if else
+-syn keyword cfScriptRepeat contained while for in
+-syn keyword cfScriptBranch contained break switch case default try catch continue
+-syn keyword cfScriptFunction contained function
+-syn keyword cfScriptType contained var
+-syn match cfScriptBraces contained "[{}]"
+-syn keyword cfScriptStatement contained return
++syn region cfScriptStringD contained start=+"+ skip=+\\\\\|""+ end=+"+ extend contains=@htmlPreproc,cfHashRegion
++syn region cfScriptStringS contained start=+'+ skip=+\\\\\|''+ end=+'+ extend contains=@htmlPreproc,cfHashRegion
++syn match cfScriptNumber contained "\<\d\+\>"
++syn keyword cfScriptConditional contained if else
++syn keyword cfScriptRepeat contained while for in
++syn keyword cfScriptBranch contained break switch case default try catch continue finally
++syn keyword cfScriptKeyword contained function
++" argumentCollection is a special argument to function calls
++syn keyword cfScriptSpecial contained argumentcollection
++" ColdFusion 9:
++syn keyword cfScriptStatement contained new import
++" CFscript equivalents of some tags
++syn keyword cfScriptKeyword contained abort component exit import include
++syn keyword cfScriptKeyword contained interface param pageencoding property rethrow thread transaction
++" function/component syntax
++syn keyword cfScriptSpecial contained required extends
+
+-syn cluster cfScriptCluster contains=cfScriptParen,cfScriptLineComment,cfScriptComment,cfScriptStringD,cfScriptStringS,cfScriptFunction,cfScriptNumber,cfScriptRegexpString,cfScriptBoolean,cfScriptBraces,cfHashRegion,cfFunctionName,cfScope,@cfOperatorCluster,cfScriptConditional,cfScriptRepeat,cfScriptBranch,cfScriptType,@cfExpressionCluster,cfScriptStatement
++
++syn cluster cfScriptCluster contains=cfScriptParen,cfScriptLineComment,cfScriptComment,cfScriptStringD,cfScriptStringS,cfScriptFunction,cfScriptNumber,cfScriptRegexpString,cfScriptBoolean,cfScriptBraces,cfHashRegion,cfFunctionName,cfDeprecatedFunction,cfScope,@cfOperatorCluster,cfScriptConditional,cfScriptRepeat,cfScriptBranch,@cfExpressionCluster,cfScriptStatement,cfScriptSpecial,cfScriptKeyword
+
+ " Errors caused by wrong parenthesis; skip strings
+-syn region cfScriptParen contained transparent skip=+"[^"]*"\|'[^']*'+ start=+(+ end=+)+ contains=@cfScriptCluster
+-syn match cfScrParenError contained +)+
++syn region cfScriptParen contained transparent skip=+"[^"]*"\|'[^']*'+ start=+(+ end=+)+ contains=@cfScriptCluster
++syn match cfScrParenError contained +)+
+
+-syn region cfscriptBlock matchgroup=NONE start="<cfscript>" end="<\/cfscript>"me=s-1 keepend contains=@cfScriptCluster,cfscriptTag,cfScrParenError
+-syn region cfscriptTag contained start='<cfscript' end='>' keepend contains=cfTagName,htmlTag
++syn region cfscriptBlock matchgroup=NONE start="<cfscript>" end="<\/cfscript>"me=s-1 keepend contains=@cfScriptCluster,cfscriptTag,cfScrParenError
++syn region cfscriptTag contained start='<cfscript' end='>' keepend contains=cfTagName,htmlTag
+
+ " CFML
+-syn cluster cfmlCluster contains=cfComment,@htmlTagNameCluster,@htmlPreproc,cfSetRegion,cfscriptBlock
++syn cluster cfmlCluster contains=cfComment,@htmlTagNameCluster,@htmlPreproc,cfSetRegion,cfscriptBlock,cfOutputRegion
+
+-" cfquery = sql
+-unlet b:current_syntax
+-syn include @cfSql <sfile>:p:h/sql.vim
++" cfquery = sql syntax
++if exists("b:current_syntax")
++ unlet b:current_syntax
++endif
++syn include @cfSql $VIMRUNTIME/syntax/sql.vim
+ unlet b:current_syntax
+-syn region cfqueryTag contained start=+<cfquery+ end=+>+ keepend contains=cfTagName,htmlTag
+-syn region cfSqlregion start=+<cfquery[^>]*>+ keepend end=+<\/cfquery>+me=s-1 matchgroup=NONE contains=@cfSql,cfComment,@htmlTagNameCluster,cfqueryTag
++syn region cfqueryTag contained start=+<cfquery+ end=+>+ keepend contains=cfTagName,htmlTag
++syn region cfSqlregion start=+<cfquery\_[^>]*>+ keepend end=+</cfquery>+me=s-1 matchgroup=NONE contains=@cfSql,cfComment,@htmlTagNameCluster,cfqueryTag,cfHashRegion
++
++" Define the highlighting.
++command -nargs=+ CfHiLink hi def link <args>
+
+-" Define the default highlighting.
+-if version >= 508 || !exists("did_cf_syn_inits")
+- if version < 508
+- let did_cf_syn_inits = 1
+- command -nargs=+ HiLink hi link <args>
+- else
+- command -nargs=+ HiLink hi def link <args>
+- endif
+-
+- HiLink cfTagName Statement
+- HiLink cfArg Type
+- HiLink cfFunctionName Function
+- HiLink cfHashRegion PreProc
+- HiLink cfComment Comment
+- HiLink cfCommentTodo Todo
+- HiLink cfOperator Operator
+- HiLink cfOperatorMatch Operator
+- HiLink cfScope Title
+- HiLink cfBool Constant
+-
+- HiLink cfscriptBlock Special
+- HiLink cfscriptTag htmlTag
+- HiLink cfSetRegion PreProc
+- HiLink cfSetLHSRegion htmlTag
+- HiLink cfSetTagEnd htmlTag
+-
+- HiLink cfScriptLineComment Comment
+- HiLink cfScriptComment Comment
+- HiLink cfScriptStringS String
+- HiLink cfScriptStringD String
+- HiLink cfScriptNumber cfScriptValue
+- HiLink cfScriptConditional Conditional
+- HiLink cfScriptRepeat Repeat
+- HiLink cfScriptBranch Conditional
+- HiLink cfScriptType Type
+- HiLink cfScriptStatement Statement
+- HiLink cfScriptBraces Function
+- HiLink cfScriptFunction Function
+- HiLink cfScriptError Error
+- HiLink cfDeprecated Error
+- HiLink cfScrParenError cfScriptError
+-
+- HiLink cfqueryTag htmlTag
+-
+- delcommand HiLink
++if exists("d_noinclude_html")
++ " The default html-style highlighting copied from html.vim.
++ CfHiLink htmlTag Function
++ CfHiLink htmlEndTag Identifier
++ CfHiLink htmlArg Type
++ CfHiLink htmlTagName htmlStatement
++ CfHiLink htmlValue String
++ CfHiLink htmlPreProc PreProc
++ CfHiLink htmlString String
++ CfHiLink htmlStatement Statement
++ CfHiLink htmlValue String
++ CfHiLink htmlTagError htmlError
++ CfHiLink htmlError Error
+ endif
+
++CfHiLink cfTagName Statement
++CfHiLink cfCustomTagName Statement
++CfHiLink cfArg Type
++CfHiLink cfFunctionName Function
++CfHiLink cfHashRegion PreProc
++CfHiLink cfComment Comment
++CfHiLink cfCommentTodo Todo
++CfHiLink cfOperator Operator
++CfHiLink cfOperatorMatch Operator
++CfHiLink cfScope Title
++CfHiLink cfBool Constant
++
++CfHiLink cfscriptBlock Special
++CfHiLink cfscriptTag htmlTag
++CfHiLink cfSetRegion PreProc
++CfHiLink cfSetLHSRegion htmlTag
++CfHiLink cfSetTagEnd htmlTag
++
++CfHiLink cfScriptLineComment Comment
++CfHiLink cfScriptComment Comment
++CfHiLink cfScriptStringS String
++CfHiLink cfScriptStringD String
++CfHiLink cfScriptNumber cfScriptValue
++CfHiLink cfScriptConditional Conditional
++CfHiLink cfScriptRepeat Repeat
++CfHiLink cfScriptBranch Conditional
++CfHiLink cfScriptSpecial Type
++CfHiLink cfScriptStatement Statement
++CfHiLink cfScriptBraces Function
++CfHiLink cfScriptKeyword Function
++CfHiLink cfScriptError Error
++CfHiLink cfDeprecatedTag Error
++CfHiLink cfDeprecatedFunction Error
++CfHiLink cfScrParenError cfScriptError
++
++CfHiLink cfqueryTag htmlTag
++
++delcommand CfHiLink
++
+ let b:current_syntax = "cf"
+
+-" vim: ts=8 sw=2
++" vim: nowrap sw=2 ts=8 noet
+diff -u -r --new-file runtime/syntax.orig/config.vim runtime/syntax/config.vim
+--- runtime/syntax.orig/config.vim 2004-06-07 09:32:35.000000000 -0500
++++ runtime/syntax/config.vim 2008-09-06 07:19:33.000000000 -0500
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: configure.in script: M4 with sh
+ " Maintainer: Christian Hammesr <ch@lathspell.westend.com>
+-" Last Change: 2001 May 09
++" Last Change: 2008 Sep 03
+
+ " Well, I actually even do not know much about m4. This explains why there
+ " is probably very much missing here, yet !
+@@ -26,7 +26,7 @@
+ syn keyword configkeyword if then else fi test for in do done
+ syn keyword configspecial cat rm eval
+ syn region configstring start=+"+ skip=+\\"+ end=+"+
+-syn region configstring start=+`+ skip=+\\'+ end=+'+
++syn region configstring start=+'+ skip=+\\'+ end=+'+
+ syn region configstring start=+`+ skip=+\\'+ end=+`+
+
+ " Define the default highlighting.
+diff -u -r --new-file runtime/syntax.orig/cs.vim runtime/syntax/cs.vim
+--- runtime/syntax.orig/cs.vim 2006-05-03 16:20:02.000000000 -0500
++++ runtime/syntax/cs.vim 2009-09-18 05:28:22.000000000 -0500
+@@ -2,7 +2,7 @@
+ " Language: C#
+ " Maintainer: Anduin Withers <awithers@anduin.com>
+ " Former Maintainer: Johannes Zellner <johannes@zellner.org>
+-" Last Change: Sun Apr 30 19:26:18 PDT 2006
++" Last Change: Fri Aug 14 13:56:37 PDT 2009
+ " Filenames: *.cs
+ " $Id: cs.vim,v 1.4 2006/05/03 21:20:02 vimboss Exp $
+ "
+@@ -78,8 +78,8 @@
+ syn cluster xmlTagHook add=csXmlTag
+
+ syn match csXmlCommentLeader +\/\/\/+ contained
+-syn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXml
+-syntax include @csXml <sfile>:p:h/xml.vim
++syn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXml,@Spell
++syntax include @csXml syntax/xml.vim
+ hi def link xmlRegion Comment
+
+
+@@ -100,7 +100,7 @@
+ " unicode characters
+ syn match csUnicodeNumber +\\\(u\x\{4}\|U\x\{8}\)+ contained contains=csUnicodeSpecifier
+ syn match csUnicodeSpecifier +\\[uU]+ contained
+-syn region csVerbatimString start=+@"+ end=+"+ end=+$+ skip=+""+ contains=csVerbatimSpec,@Spell
++syn region csVerbatimString start=+@"+ end=+"+ skip=+""+ contains=csVerbatimSpec,@Spell
+ syn match csVerbatimSpec +@"+he=s+1 contained
+ syn region csString start=+"+ end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
+ syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError
+diff -u -r --new-file runtime/syntax.orig/cucumber.vim runtime/syntax/cucumber.vim
+--- runtime/syntax.orig/cucumber.vim 1969-12-31 18:00:00.000000000 -0600
++++ runtime/syntax/cucumber.vim 2010-03-02 09:17:43.000000000 -0600
+@@ -0,0 +1,117 @@
++" Vim syntax file
++" Language: Cucumber
++" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
++" Filenames: *.feature
++
++if exists("b:current_syntax")
++ finish
++endif
++
++syn case match
++syn sync minlines=20
++
++let g:cucumber_languages = {
++ \"en": {"and": "And\\>", "background": "Background\\>", "but": "But\\>", "examples": "Scenarios\\>\\|Examples\\>", "feature": "Feature\\>", "given": "Given\\>", "scenario": "Scenario\\>", "scenario_outline": "Scenario Outline\\>", "then": "Then\\>", "when": "When\\>"},
++ \"ar": {"and": "\\%u0648\\>", "background": "\\%u0627\\%u0644\\%u062e\\%u0644\\%u0641\\%u064a\\%u0629\\>", "but": "\\%u0644\\%u0643\\%u0646\\>", "examples": "\\%u0627\\%u0645\\%u062b\\%u0644\\%u0629\\>", "feature": "\\%u062e\\%u0627\\%u0635\\%u064a\\%u0629\\>", "given": "\\%u0628\\%u0641\\%u0631\\%u0636\\>", "scenario": "\\%u0633\\%u064a\\%u0646\\%u0627\\%u0631\\%u064a\\%u0648\\>", "scenario_outline": "\\%u0633\\%u064a\\%u0646\\%u0627\\%u0631\\%u064a\\%u0648 \\%u0645\\%u062e\\%u0637\\%u0637\\>", "then": "\\%u0627\\%u0630\\%u0627\\%u064b\\>\\|\\%u062b\\%u0645\\>", "when": "\\%u0639\\%u0646\\%u062f\\%u0645\\%u0627\\>\\|\\%u0645\\%u062a\\%u0649\\>"},
++ \"bg": {"and": "\\%u0418\\>", "background": "\\%u041f\\%u0440\\%u0435\\%u0434\\%u0438\\%u0441\\%u0442\\%u043e\\%u0440\\%u0438\\%u044f\\>", "but": "\\%u041d\\%u043e\\>", "examples": "\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\%u0438\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\%u043d\\%u043e\\%u0441\\%u0442\\>", "given": "\\%u0414\\%u0430\\%u0434\\%u0435\\%u043d\\%u043e\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0420\\%u0430\\%u043c\\%u043a\\%u0430 \\%u043d\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "then": "\\%u0422\\%u043e\\>", "when": "\\%u041a\\%u043e\\%u0433\\%u0430\\%u0442\\%u043e\\>"},
++ \"cat": {"and": "I\\>", "background": "Antecedents\\>\\|Rerefons\\>", "but": "Per\\%u00f2\\>", "examples": "Exemples\\>", "feature": "Caracter\\%u00edstica\\>", "given": "Donada\\>\\|Donat\\>", "scenario": "Escenari\\>", "scenario_outline": "Esquema de l'escenari\\>", "then": "Aleshores\\>", "when": "Quan\\>"},
++ \"cs": {"and": "A tak\\%u00e9\\>\\|A\\>", "background": "Pozad\\%u00ed\\>\\|Kontext\\>", "but": "Ale\\>", "examples": "P\\%u0159\\%u00edklady\\>", "feature": "Po\\%u017eadavek\\>", "given": "Pokud\\>", "scenario": "Sc\\%u00e9n\\%u00e1\\%u0159\\>", "scenario_outline": "N\\%u00e1\\%u010drt Sc\\%u00e9n\\%u00e1\\%u0159e\\>\\|Osnova sc\\%u00e9n\\%u00e1\\%u0159e\\>", "then": "Pak\\>", "when": "Kdy\\%u017e\\>"},
++ \"cy": {"and": "A\\>", "background": "Cefndir\\>", "but": "Ond\\>", "examples": "Enghreifftiau\\>", "feature": "Arwedd\\>", "given": "anrhegedig a\\>", "scenario": "Scenario\\>", "scenario_outline": "Scenario Amlinellol\\>", "then": "Yna\\>", "when": "Pryd\\>"},
++ \"da": {"and": "Og\\>", "background": "Baggrund\\>", "but": "Men\\>", "examples": "Eksempler\\>", "feature": "Egenskab\\>", "given": "Givet\\>", "scenario": "Scenarie\\>", "scenario_outline": "Abstrakt Scenario\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e5r\\>"},
++ \"de": {"and": "Und\\>", "background": "Grundlage\\>", "but": "Aber\\>", "examples": "Beispiele\\>", "feature": "Funktionalit\\%u00e4t\\>", "given": "Gegeben sei\\>", "scenario": "Szenario\\>", "scenario_outline": "Szenariogrundriss\\>", "then": "Dann\\>", "when": "Wenn\\>"},
++ \"en-au": {"and": "N\\>", "background": "Background\\>", "but": "Cept\\>", "examples": "Cobber\\>", "feature": "Crikey\\>", "given": "Ya know how\\>", "scenario": "Mate\\>", "scenario_outline": "Blokes\\>", "then": "Ya gotta\\>", "when": "When\\>"},
++ \"en-lol": {"and": "AN\\>", "background": "B4\\>", "but": "BUT\\>", "examples": "EXAMPLZ\\>", "feature": "OH HAI\\>", "given": "I CAN HAZ\\>", "scenario": "MISHUN\\>", "scenario_outline": "MISHUN SRSLY\\>", "then": "DEN\\>", "when": "WEN\\>"},
++ \"es": {"and": "Y\\>", "background": "Antecedentes\\>", "but": "Pero\\>", "examples": "Ejemplos\\>", "feature": "Caracter\\%u00edstica\\>", "given": "Dado\\>", "scenario": "Escenario\\>", "scenario_outline": "Esquema del escenario\\>", "then": "Entonces\\>", "when": "Cuando\\>"},
++ \"et": {"and": "Ja\\>", "background": "Taust\\>", "but": "Kuid\\>", "examples": "Juhtumid\\>", "feature": "Omadus\\>", "given": "Eeldades\\>", "scenario": "Stsenaarium\\>", "scenario_outline": "Raamstsenaarium\\>", "then": "Siis\\>", "when": "Kui\\>"},
++ \"fi": {"and": "Ja\\>", "background": "Tausta\\>", "but": "Mutta\\>", "examples": "Tapaukset\\>", "feature": "Ominaisuus\\>", "given": "Oletetaan\\>", "scenario": "Tapaus\\>", "scenario_outline": "Tapausaihio\\>", "then": "Niin\\>", "when": "Kun\\>"},
++ \"fr": {"and": "Et\\>", "background": "Contexte\\>", "but": "Mais\\>", "examples": "Exemples\\>", "feature": "Fonctionnalit\\%u00e9\\>", "given": "Etant donn\\%u00e9\\>\\|Soit\\>", "scenario": "Sc\\%u00e9nario\\>", "scenario_outline": "Plan du sc\\%u00e9nario\\>\\|Plan du Sc\\%u00e9nario\\>", "then": "Alors\\>", "when": "Lorsqu'\\|Lorsque\\>\\|Quand\\>"},
++ \"he": {"and": "\\%u05d5\\%u05d2\\%u05dd\\>", "background": "\\%u05e8\\%u05e7\\%u05e2\\>", "but": "\\%u05d0\\%u05d1\\%u05dc\\>", "examples": "\\%u05d3\\%u05d5\\%u05d2\\%u05de\\%u05d0\\%u05d5\\%u05ea\\>", "feature": "\\%u05ea\\%u05db\\%u05d5\\%u05e0\\%u05d4\\>", "given": "\\%u05d1\\%u05d4\\%u05d9\\%u05e0\\%u05ea\\%u05df\\>", "scenario": "\\%u05ea\\%u05e8\\%u05d7\\%u05d9\\%u05e9\\>", "scenario_outline": "\\%u05ea\\%u05d1\\%u05e0\\%u05d9\\%u05ea \\%u05ea\\%u05e8\\%u05d7\\%u05d9\\%u05e9\\>", "then": "\\%u05d0\\%u05d6\\%u05d9\\>\\|\\%u05d0\\%u05d6\\>", "when": "\\%u05db\\%u05d0\\%u05e9\\%u05e8\\>"},
++ \"hr": {"and": "I\\>", "background": "Pozadina\\>", "but": "Ali\\>", "examples": "Scenariji\\>\\|Primjeri\\>", "feature": "Mogu\\%u0107nost\\>\\|Mogucnost\\>\\|Osobina\\>", "given": "Zadano\\>\\|Zadani\\>\\|Zadan\\>", "scenario": "Scenarij\\>", "scenario_outline": "Koncept\\>\\|Skica\\>", "then": "Onda\\>", "when": "Kada\\>\\|Kad\\>"},
++ \"hu": {"and": "\\%u00c9s\\>", "background": "H\\%u00e1tt\\%u00e9r\\>", "but": "De\\>", "examples": "P\\%u00e9ld\\%u00e1k\\>", "feature": "Jellemz\\%u0151\\>", "given": "Ha\\>", "scenario": "Forgat\\%u00f3k\\%u00f6nyv\\>", "scenario_outline": "Forgat\\%u00f3k\\%u00f6nyv v\\%u00e1zlat\\>", "then": "Akkor\\>", "when": "Majd\\>"},
++ \"id": {"and": "Dan\\>", "background": "Dasar\\>", "but": "Tapi\\>", "examples": "Contoh\\>", "feature": "Fitur\\>", "given": "Dengan\\>", "scenario": "Skenario\\>", "scenario_outline": "Skenario konsep\\>", "then": "Maka\\>", "when": "Ketika\\>"},
++ \"it": {"and": "E\\>", "background": "Contesto\\>", "but": "Ma\\>", "examples": "Esempi\\>", "feature": "Funzionalit\\%u00e0\\>", "given": "Dato\\>", "scenario": "Scenario\\>", "scenario_outline": "Schema dello scenario\\>", "then": "Allora\\>", "when": "Quando\\>"},
++ \"ja": {"and": "\\%u304b\\%u3064", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u3057\\%u304b\\%u3057\\|\\%u305f\\%u3060\\%u3057\\|\\%u4f46\\%u3057", "examples": "\\%u30b5\\%u30f3\\%u30d7\\%u30eb\\>\\|\\%u4f8b\\>", "feature": "\\%u30d5\\%u30a3\\%u30fc\\%u30c1\\%u30e3\\>\\|\\%u6a5f\\%u80fd\\>", "given": "\\%u524d\\%u63d0", "scenario": "\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\>", "scenario_outline": "\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30a2\\%u30a6\\%u30c8\\%u30e9\\%u30a4\\%u30f3\\>\\|\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\%u30fc\\%u30c8\\>\\|\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\>\\|\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\>", "then": "\\%u306a\\%u3089\\%u3070", "when": "\\%u3082\\%u3057"},
++ \"ko": {"and": "\\%uadf8\\%ub9ac\\%uace0", "background": "\\%ubc30\\%uacbd\\>", "but": "\\%ud558\\%uc9c0\\%ub9cc", "examples": "\\%uc608\\>", "feature": "\\%uae30\\%ub2a5\\>", "given": "\\%uc870\\%uac74", "scenario": "\\%uc2dc\\%ub098\\%ub9ac\\%uc624\\>", "scenario_outline": "\\%uc2dc\\%ub098\\%ub9ac\\%uc624 \\%uac1c\\%uc694\\>", "then": "\\%uadf8\\%ub7ec\\%uba74", "when": "\\%ub9cc\\%uc77c"},
++ \"lt": {"and": "Ir\\>", "background": "Kontekstas\\>", "but": "Bet\\>", "examples": "Pavyzd\\%u017eiai\\>\\|Scenarijai\\>\\|Variantai\\>", "feature": "Savyb\\%u0117\\>", "given": "Duota\\>", "scenario": "Scenarijus\\>", "scenario_outline": "Scenarijaus \\%u0161ablonas\\>", "then": "Tada\\>", "when": "Kai\\>"},
++ \"lv": {"and": "Un\\>", "background": "Situ\\%u0101cija\\>\\|Konteksts\\>", "but": "Bet\\>", "examples": "Piem\\%u0113ri\\>\\|Paraugs\\>", "feature": "Funkcionalit\\%u0101te\\>\\|F\\%u012b\\%u010da\\>", "given": "Kad\\>", "scenario": "Scen\\%u0101rijs\\>", "scenario_outline": "Scen\\%u0101rijs p\\%u0113c parauga\\>", "then": "Tad\\>", "when": "Ja\\>"},
++ \"nl": {"and": "En\\>", "background": "Achtergrond\\>", "but": "Maar\\>", "examples": "Voorbeelden\\>", "feature": "Functionaliteit\\>", "given": "Gegeven\\>\\|Stel\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstract Scenario\\>", "then": "Dan\\>", "when": "Als\\>"},
++ \"no": {"and": "Og\\>", "background": "Bakgrunn\\>", "but": "Men\\>", "examples": "Eksempler\\>", "feature": "Egenskap\\>", "given": "Gitt\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstrakt Scenario\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e5r\\>"},
++ \"pl": {"and": "Oraz\\>", "background": "Za\\%u0142o\\%u017cenia\\>", "but": "Ale\\>", "examples": "Przyk\\%u0142ady\\>", "feature": "W\\%u0142a\\%u015bciwo\\%u015b\\%u0107\\>", "given": "Zak\\%u0142adaj\\%u0105c\\>", "scenario": "Scenariusz\\>", "scenario_outline": "Szablon scenariusza\\>", "then": "Wtedy\\>", "when": "Je\\%u017celi\\>"},
++ \"pt": {"and": "E\\>", "background": "Contexto\\>", "but": "Mas\\>", "examples": "Exemplos\\>", "feature": "Funcionalidade\\>", "given": "Dado\\>", "scenario": "Cen\\%u00e1rio\\>\\|Cenario\\>", "scenario_outline": "Esquema do Cen\\%u00e1rio\\>\\|Esquema do Cenario\\>", "then": "Ent\\%u00e3o\\>\\|Entao\\>", "when": "Quando\\>"},
++ \"ro": {"and": "Si\\>", "background": "Conditii\\>", "but": "Dar\\>", "examples": "Exemplele\\>", "feature": "Functionalitate\\>", "given": "Daca\\>", "scenario": "Scenariu\\>", "scenario_outline": "Scenariul de sablon\\>", "then": "Atunci\\>", "when": "Cand\\>"},
++ \"ro2": {"and": "\\%u0218i\\>", "background": "Condi\\%u0163ii\\>", "but": "Dar\\>", "examples": "Exemplele\\>", "feature": "Func\\%u021bionalitate\\>", "given": "Dac\\%u0103\\>", "scenario": "Scenariu\\>", "scenario_outline": "Scenariul de \\%u015fablon\\>", "then": "Atunci\\>", "when": "C\\%u00e2nd\\>"},
++ \"ru": {"and": "\\%u041a \\%u0442\\%u043e\\%u043c\\%u0443 \\%u0436\\%u0435\\>\\|\\%u0418\\>", "background": "\\%u041f\\%u0440\\%u0435\\%u0434\\%u044b\\%u0441\\%u0442\\%u043e\\%u0440\\%u0438\\%u044f\\>", "but": "\\%u041d\\%u043e\\>\\|\\%u0410\\>", "examples": "\\%u0417\\%u043d\\%u0430\\%u0447\\%u0435\\%u043d\\%u0438\\%u044f\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\>", "given": "\\%u0414\\%u043e\\%u043f\\%u0443\\%u0441\\%u0442\\%u0438\\%u043c\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u044f\\>", "then": "\\%u0422\\%u043e\\>", "when": "\\%u0415\\%u0441\\%u043b\\%u0438\\>"},
++ \"se": {"and": "Och\\>", "background": "Bakgrund\\>", "but": "Men\\>", "examples": "Exempel\\>", "feature": "Egenskap\\>", "given": "Givet\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstrakt Scenario\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e4r\\>"},
++ \"sk": {"and": "A\\>", "background": "Pozadie\\>", "but": "Ale\\>", "examples": "Pr\\%u00edklady\\>", "feature": "Po\\%u017eiadavka\\>", "given": "Pokia\\%u013e\\>", "scenario": "Scen\\%u00e1r\\>", "scenario_outline": "N\\%u00e1\\%u010drt Scen\\%u00e1ru\\>", "then": "Tak\\>", "when": "Ke\\%u010f\\>"},
++ \"sr": {"and": "\\%u0418\\>", "background": "\\%u041a\\%u043e\\%u043d\\%u0442\\%u0435\\%u043a\\%u0441\\%u0442\\>\\|\\%u041f\\%u043e\\%u0437\\%u0430\\%u0434\\%u0438\\%u043d\\%u0430\\>\\|\\%u041e\\%u0441\\%u043d\\%u043e\\%u0432\\%u0430\\>", "but": "\\%u0410\\%u043b\\%u0438\\>", "examples": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0458\\%u0438\\>\\|\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\%u0438\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\%u043d\\%u043e\\%u0441\\%u0442\\>\\|\\%u041c\\%u043e\\%u0433\\%u0443\\%u045b\\%u043d\\%u043e\\%u0441\\%u0442\\>\\|\\%u041e\\%u0441\\%u043e\\%u0431\\%u0438\\%u043d\\%u0430\\>", "given": "\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u043e\\>\\|\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u0435\\>\\|\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u0438\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u043e\\>\\|\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\>", "scenario_outline": "\\%u0421\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0458\\%u0430\\>\\|\\%u041a\\%u043e\\%u043d\\%u0446\\%u0435\\%u043f\\%u0442\\>\\|\\%u0421\\%u043a\\%u0438\\%u0446\\%u0430\\>", "then": "\\%u041e\\%u043d\\%u0434\\%u0430\\>", "when": "\\%u041a\\%u0430\\%u0434\\%u0430\\>\\|\\%u041a\\%u0430\\%u0434\\>"},
++ \"sr-Latn": {"and": "I\\>", "background": "Kontekst\\>\\|Pozadina\\>\\|Osnova\\>", "but": "Ali\\>", "examples": "Scenariji\\>\\|Primeri\\>", "feature": "Mogu\\%u0107nost\\>\\|Funkcionalnost\\>\\|Mogucnost\\>\\|Osobina\\>", "given": "Zadato\\>\\|Zadate\\>\\|Zatati\\>", "scenario": "Scenario\\>\\|Primer\\>", "scenario_outline": "Struktura scenarija\\>\\|Koncept\\>\\|Skica\\>", "then": "Onda\\>", "when": "Kada\\>\\|Kad\\>"},
++ \"tr": {"and": "Ve\\>", "background": "Ge\\%u00e7mi\\%u015f\\>", "but": "Fakat\\>\\|Ama\\>", "examples": "\\%u00d6rnekler\\>", "feature": "\\%u00d6zellik\\>", "given": "Diyelim ki\\>", "scenario": "Senaryo\\>", "scenario_outline": "Senaryo tasla\\%u011f\\%u0131\\>", "then": "O zaman\\>", "when": "E\\%u011fer ki\\>"},
++ \"uz": {"and": "\\%u0412\\%u0430\\>", "background": "\\%u0422\\%u0430\\%u0440\\%u0438\\%u0445\\>", "but": "\\%u041b\\%u0435\\%u043a\\%u0438\\%u043d\\>\\|\\%u0411\\%u0438\\%u0440\\%u043e\\%u043a\\>\\|\\%u0410\\%u043c\\%u043c\\%u043e\\>", "examples": "\\%u041c\\%u0438\\%u0441\\%u043e\\%u043b\\%u043b\\%u0430\\%u0440\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\>", "given": "\\%u0410\\%u0433\\%u0430\\%u0440\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439 \\%u0441\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430\\%u0441\\%u0438\\>", "then": "\\%u0423\\%u043d\\%u0434\\%u0430\\>", "when": "\\%u0410\\%u0433\\%u0430\\%u0440\\>"},
++ \"vi": {"and": "V\\%u00e0\\>", "background": "B\\%u1ed1i c\\%u1ea3nh\\>", "but": "Nh\\%u01b0ng\\>", "examples": "D\\%u1eef li\\%u1ec7u\\>", "feature": "T\\%u00ednh n\\%u0103ng\\>", "given": "Bi\\%u1ebft\\>\\|Cho\\>", "scenario": "T\\%u00ecnh hu\\%u1ed1ng\\>\\|K\\%u1ecbch b\\%u1ea3n\\>", "scenario_outline": "Khung t\\%u00ecnh hu\\%u1ed1ng\\>\\|Khung k\\%u1ecbch b\\%u1ea3n\\>", "then": "Th\\%u00ec\\>", "when": "Khi\\>"},
++ \"zh-CN": {"and": "\\%u800c\\%u4e14", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u4f46\\%u662f", "examples": "\\%u4f8b\\%u5b50\\>", "feature": "\\%u529f\\%u80fd\\>", "given": "\\%u5047\\%u5982", "scenario": "\\%u573a\\%u666f\\>", "scenario_outline": "\\%u573a\\%u666f\\%u5927\\%u7eb2\\>", "then": "\\%u90a3\\%u4e48", "when": "\\%u5f53"},
++ \"zh-TW": {"and": "\\%u800c\\%u4e14\\|\\%u4e26\\%u4e14", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u4f46\\%u662f", "examples": "\\%u4f8b\\%u5b50\\>", "feature": "\\%u529f\\%u80fd\\>", "given": "\\%u5047\\%u8a2d", "scenario": "\\%u5834\\%u666f\\>\\|\\%u5287\\%u672c\\>", "scenario_outline": "\\%u5834\\%u666f\\%u5927\\%u7db1\\>\\|\\%u5287\\%u672c\\%u5927\\%u7db1\\>", "then": "\\%u90a3\\%u9ebc", "when": "\\%u7576"}}
++
++function! s:pattern(key)
++ let language = matchstr(getline(1),'#\s*language:\s*\zs\S\+')
++ if has_key(g:cucumber_languages, language)
++ let languages = [g:cucumber_languages[language]]
++ else
++ let languages = values(g:cucumber_languages)
++ end
++ return '\<\%('.join(map(languages,'get(v:val,a:key,"\\%(a\\&b\\)")'),'\|').'\)'
++endfunction
++
++function! s:Add(name)
++ let next = " skipempty skipwhite nextgroup=".join(map(["Region","AndRegion","ButRegion","Comment","Table"],'"cucumber".a:name.v:val'),",")
++ exe "syn region cucumber".a:name.'Region matchgroup=cucumber'.a:name.' start="\%(^\s*\)\@<=\%('.s:pattern(tolower(a:name)).'\)" end="$"'.next
++ exe 'syn region cucumber'.a:name.'AndRegion matchgroup=cucumber'.a:name.'And start="\%(^\s*\)\@<='.s:pattern('and').'" end="$" contained'.next
++ exe 'syn region cucumber'.a:name.'ButRegion matchgroup=cucumber'.a:name.'But start="\%(^\s*\)\@<='.s:pattern('but').'" end="$" contained'.next
++ exe 'syn match cucumber'.a:name.'Comment "\%(^\s*\)\@<=#.*" contained'.next
++ exe 'syn match cucumber'.a:name.'Table "\%(^\s*\)\@<=|.*" contained contains=cucumberDelimiter'.next
++ exe 'hi def link cucumber'.a:name.'Comment cucumberComment'
++ exe 'hi def link cucumber'.a:name.'But cucumber'.a:name.'And'
++ exe 'hi def link cucumber'.a:name.'And cucumber'.a:name
++ exe 'syn cluster cucumberStepRegions add=cucumber'.a:name.'Region,cucumber'.a:name.'AndRegion,cucumber'.a:name.'ButRegion'
++endfunction
++
++syn match cucumberComment "\%(^\s*\)\@<=#.*"
++syn match cucumberComment "\%(\%^\s*\)\@<=#.*" contains=cucumberLanguage
++syn match cucumberLanguage "\%(#\s*\)\@<=language:" contained
++syn match cucumberUnparsed "\S.*" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained
++syn match cucumberUnparsedComment "#.*" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained
++
++exe 'syn match cucumberFeature "\%(^\s*\)\@<='.s:pattern('feature').':" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty'
++exe 'syn match cucumberBackground "\%(^\s*\)\@<='.s:pattern('background').':"'
++exe 'syn match cucumberScenario "\%(^\s*\)\@<='.s:pattern('scenario').':"'
++exe 'syn match cucumberScenarioOutline "\%(^\s*\)\@<='.s:pattern('scenario_outline').':"'
++exe 'syn match cucumberExamples "\%(^\s*\)\@<='.s:pattern('examples').':" nextgroup=cucumberExampleTable skipempty skipwhite'
++
++syn match cucumberPlaceholder "<[^<>]*>" contained containedin=@cucumberStepRegions
++syn match cucumberExampleTable "\%(^\s*\)\@<=|.*" contains=cucumberDelimiter
++syn match cucumberDelimiter "|" contained
++syn match cucumberTags "\%(^\s*\)\@<=\%(@[^@[:space:]]\+\s\+\)*@[^@[:space:]]\+\s*$"
++syn region cucumberString start=+\%(^\s*\)\@<="""+ end=+"""+
++
++call s:Add('Then')
++call s:Add('When')
++call s:Add('Given')
++
++hi def link cucumberUnparsedComment cucumberComment
++hi def link cucumberComment Comment
++hi def link cucumberLanguage SpecialComment
++hi def link cucumberFeature Macro
++hi def link cucumberBackground Define
++hi def link cucumberScenario Define
++hi def link cucumberScenarioOutline Define
++hi def link cucumberExamples Define
++hi def link cucumberPlaceholder Constant
++hi def link cucumberDelimiter Delimiter
++hi def link cucumberTags Tag
++hi def link cucumberString String
++hi def link cucumberGiven Conditional
++hi def link cucumberWhen Function
++hi def link cucumberThen Type
++
++let b:current_syntax = "cucumber"
++
++" vim:set sts=2 sw=2:
+diff -u -r --new-file runtime/syntax.orig/d.vim runtime/syntax/d.vim
+--- runtime/syntax.orig/d.vim 2006-04-30 11:01:36.000000000 -0500
++++ runtime/syntax/d.vim 2010-01-16 07:33:01.000000000 -0600
+@@ -1,29 +1,44 @@
+-" Vim syntax file for the D programming language (version 0.149).
++" Vim syntax file for the D programming language (version 1.053 and 2.039).
+ "
+ " Language: D
+-" Maintainer: Jason Mills<jmills@cs.mun.ca>
+-" When emailing me, please put the word vim somewhere in the subject
+-" to ensure the email does not get marked as spam.
+-" Last Change: 2006 Apr 30
+-" Version: 0.15
++" Maintainer: Jason Mills<jasonmills@nf.sympatico.ca>
++" Last Change: 2010 Jan 07
++" Version: 0.18
++"
++" Contributors:
++" - Kirk McDonald: version 0.17 updates, with minor modifications
++" (http://paste.dprogramming.com/dplmb7qx?view=hidelines)
++" - Jesse K. Phillips: patch for some keywords and attributes (annotations), with modifications
++" - Tim Keating: patch to fix a bug in highlighting the `\` literal
++" - Frank Benoit: Fixed a bug that caused some identifiers and numbers to highlight as octal number errors.
++"
++" Please email me with bugs, comments, and suggestions.
+ "
+ " Options:
+-" d_comment_strings - set to highlight strings and numbers in comments
++" d_comment_strings - Set to highlight strings and numbers in comments.
+ "
+-" d_hl_operator_overload - set to highlight D's specially named functions
+-" that when overloaded implement unary and binary operators (e.g. cmp).
++" d_hl_operator_overload - Set to highlight D's specially named functions
++" that when overloaded implement unary and binary operators (e.g. opCmp).
+ "
+ " Todo:
+-" - Must determine a better method of sync'ing than simply setting minlines
+-" to a large number for /+ +/.
++" - Determine a better method of sync'ing than simply setting minlines
++" to a large number.
+ "
+-" - Several keywords (namely, in and out) are both storage class and
+-" statements, depending on their context. Must use some matching to figure
+-" out which and highlight appropriately. For now I have made such keywords
+-" statements.
++" - Several keywords (e.g., in, out, inout) are both storage class and
++" statements, depending on their context. Perhaps use pattern matching to
++" figure out which and highlight appropriately. For now I have made such
++" keywords storage classes so their highlighting is consistent with other
++" keywords that are commonly used with them, but are true storage classes,
++" such as lazy. Similarly, I made some statement keywords (e.g. body) storage
++" classes.
+ "
+ " - Mark contents of the asm statement body as special
+ "
++" - Maybe highlight the 'exit', 'failure', and 'success' parts of the
++" scope() statement.
++"
++" - Highlighting DDoc comments.
++"
+
+ " Quit when a syntax file was already loaded
+ if exists("b:current_syntax")
+@@ -33,46 +48,59 @@
+ " Keyword definitions
+ "
+ syn keyword dExternal import package module extern
+-syn keyword dConditional if else switch iftype
++syn keyword dConditional if else switch
+ syn keyword dBranch goto break continue
+-syn keyword dRepeat while for do foreach
++syn keyword dRepeat while for do foreach foreach_reverse
+ syn keyword dBoolean true false
+ syn keyword dConstant null
+-syn keyword dConstant __FILE__ __LINE__ __DATE__ __TIME__ __TIMESTAMP__
++syn keyword dConstant __FILE__ __LINE__ __EOF__ __VERSION__
++syn keyword dConstant __DATE__ __TIME__ __TIMESTAMP__ __VENDOR__
++
+ syn keyword dTypedef alias typedef
+-syn keyword dStructure template interface class enum struct union
++syn keyword dStructure template interface class struct union
++syn keyword dEnum enum
+ syn keyword dOperator new delete typeof typeid cast align is
+ syn keyword dOperator this super
+ if exists("d_hl_operator_overload")
+ syn keyword dOpOverload opNeg opCom opPostInc opPostDec opCast opAdd opSub opSub_r
+ syn keyword dOpOverload opMul opDiv opDiv_r opMod opMod_r opAnd opOr opXor
+ syn keyword dOpOverload opShl opShl_r opShr opShr_r opUShr opUShr_r opCat
+- syn keyword dOpOverload opCat_r opEquals opEquals opCmp opCmp opCmp opCmp
+- syn keyword dOpOverload opAddAssign opSubAssign opMulAssign opDivAssign
++ syn keyword dOpOverload opCat_r opEquals opEquals opCmp
++ syn keyword dOpOverload opAssign opAddAssign opSubAssign opMulAssign opDivAssign
+ syn keyword dOpOverload opModAssign opAndAssign opOrAssign opXorAssign
+ syn keyword dOpOverload opShlAssign opShrAssign opUShrAssign opCatAssign
+ syn keyword dOpOverload opIndex opIndexAssign opCall opSlice opSliceAssign opPos
+- syn keyword dOpOverload opAdd_r opMul_r opAnd_r opOr_r opXor_r
++ syn keyword dOpOverload opAdd_r opMul_r opAnd_r opOr_r opXor_r opIn opIn_r
++ syn keyword dOpOverload opPow opDispatch opStar opDot opApply opApplyReverse
+ endif
+ syn keyword dType ushort int uint long ulong float
+ syn keyword dType void byte ubyte double bit char wchar ucent cent
+-syn keyword dType short bool dchar
++syn keyword dType short bool dchar string wstring dstring
+ syn keyword dType real ireal ifloat idouble creal cfloat cdouble
+ syn keyword dDebug deprecated unittest
+ syn keyword dExceptions throw try catch finally
+ syn keyword dScopeDecl public protected private export
+-syn keyword dStatement version debug return with invariant body scope
+-syn keyword dStatement in out inout asm mixin
+-syn keyword dStatement function delegate
+-syn keyword dStorageClass auto static override final const abstract volatile
+-syn keyword dStorageClass synchronized
++syn keyword dStatement version debug return with
++syn keyword dStatement function delegate __traits asm mixin macro
++syn keyword dStorageClass in out inout ref lazy scope body
++syn keyword dStorageClass pure nothrow
++syn keyword dStorageClass auto static override final abstract volatile __gshared __thread
++syn keyword dStorageClass synchronized immutable shared const invariant lazy
+ syn keyword dPragma pragma
+
++" Attributes/annotations
++syn match dAnnotation "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>"
+
+ " Assert is a statement and a module name.
+ syn match dAssert "^assert\>"
+ syn match dAssert "[^.]\s*\<assert\>"ms=s+1
+
++" dTokens is used by the token string highlighting
++syn cluster dTokens contains=dExternal,dConditional,dBranch,dRepeat,dBoolean
++syn cluster dTokens add=dConstant,dTypedef,dStructure,dOperator,dOpOverload
++syn cluster dTokens add=dType,dDebug,dExceptions,dScopeDecl,dStatement
++syn cluster dTokens add=dStorageClass,dPragma,dAssert,dAnnotation
++
+ " Marks contents of the asm statment body as special
+ "
+ " TODO
+@@ -85,12 +113,14 @@
+ " Labels
+ "
+ " We contain dScopeDecl so public: private: etc. are not highlighted like labels
+-syn match dUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=dLabel,dScopeDecl
++syn match dUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=dLabel,dScopeDecl,dEnum
+ syn keyword dLabel case default
+
++syn cluster dTokens add=dUserLabel,dLabel
++
+ " Comments
+ "
+-syn keyword dTodo contained TODO FIXME TEMP XXX
++syn keyword dTodo contained TODO FIXME TEMP REFACTOR REVIEW HACK BUG XXX
+ syn match dCommentStar contained "^\s*\*[^/]"me=e-1
+ syn match dCommentStar contained "^\s*\*$"
+ syn match dCommentPlus contained "^\s*+[^/]"me=e-1
+@@ -114,6 +144,8 @@
+ hi link dCommentStar dBlockComment
+ hi link dCommentPlus dNestedComment
+
++syn cluster dTokens add=dBlockComment,dNestedComment,dLineComment
++
+ " /+ +/ style comments and strings that span multiple lines can cause
+ " problems. To play it safe, set minlines to a large number.
+ syn sync minlines=200
+@@ -125,24 +157,55 @@
+ syn match dSpecialCharError contained "[^']"
+
+ " Escape sequences (oct,specal char,hex,wchar, character entities \&xxx;)
+-" These are not contained because they are considered string litterals
++" These are not contained because they are considered string literals.
+ syn match dEscSequence "\\\(\o\{1,3}\|[\"\\'\\?ntbrfva]\|u\x\{4}\|U\x\{8}\|x\x\x\)"
+-syn match dEscSequence "\\&[^;& \t]\+;"
++syn match dEscSequence "\\&[^;& \t]\+;"
+ syn match dCharacter "'[^']*'" contains=dEscSequence,dSpecialCharError
+ syn match dCharacter "'\\''" contains=dEscSequence
+ syn match dCharacter "'[^\\]'"
+
++syn cluster dTokens add=dEscSequence,dCharacter
++
+ " Unicode characters
+ "
+ syn match dUnicode "\\u\d\{4\}"
+
+-
+ " String.
+ "
+-syn region dString start=+"+ end=+"[cwd]\=+ contains=dEscSequence,@Spell
+-syn region dRawString start=+`+ skip=+\\`+ end=+`[cwd]\=+ contains=@Spell
+-syn region dRawString start=+r"+ skip=+\\"+ end=+"[cwd]\=+ contains=@Spell
+-syn region dHexString start=+x"+ skip=+\\"+ end=+"[cwd]\=+ contains=@Spell
++syn region dString start=+"+ end=+"[cwd]\=+ skip=+\\\\\|\\"+ contains=dEscSequence,@Spell
++syn region dRawString start=+`+ end=+`[cwd]\=+ contains=@Spell
++syn region dRawString start=+r"+ end=+"[cwd]\=+ contains=@Spell
++syn region dHexString start=+x"+ end=+"[cwd]\=+ contains=@Spell
++syn region dDelimString start=+q"\z(.\)+ end=+\z1"+ contains=@Spell
++syn region dHereString start=+q"\z(\I\i*\)\n+ end=+\n\z1"+ contains=@Spell
++
++" Nesting delimited string contents
++"
++syn region dNestParenString start=+(+ end=+)+ contained transparent contains=dNestParenString,@Spell
++syn region dNestBrackString start=+\[+ end=+\]+ contained transparent contains=dNestBrackString,@Spell
++syn region dNestAngleString start=+<+ end=+>+ contained transparent contains=dNestAngleString,@Spell
++syn region dNestCurlyString start=+{+ end=+}+ contained transparent contains=dNestCurlyString,@Spell
++
++" Nesting delimited strings
++"
++syn region dParenString matchgroup=dParenString start=+q"(+ end=+)"+ contains=dNestParenString,@Spell
++syn region dBrackString matchgroup=dBrackString start=+q"\[+ end=+\]"+ contains=dNestBrackString,@Spell
++syn region dAngleString matchgroup=dAngleString start=+q"<+ end=+>"+ contains=dNestAngleString,@Spell
++syn region dCurlyString matchgroup=dCurlyString start=+q"{+ end=+}"+ contains=dNestCurlyString,@Spell
++
++hi link dParenString dNestString
++hi link dBrackString dNestString
++hi link dAngleString dNestString
++hi link dCurlyString dNestString
++
++syn cluster dTokens add=dString,dRawString,dHexString,dDelimString,dNestString
++
++" Token strings
++"
++syn region dNestTokenString start=+{+ end=+}+ contained contains=dNestTokenString,@dTokens
++syn region dTokenString matchgroup=dTokenStringBrack transparent start=+q{+ end=+}+ contains=dNestTokenString,@dTokens
++
++syn cluster dTokens add=dTokenString
+
+ " Numbers
+ "
+@@ -177,6 +240,8 @@
+ "floating point number, without dot, with exponent
+ syn match dHexFloat display "\<0x[0-9a-f_]\+p[-+]\=[0-9_]\+[fl]\=i\=\>"
+
++syn cluster dTokens add=dDec,dHex,dOctal,dOctalError,dBinary,dFloat,dHexFloat
++
+ syn case match
+
+ " Pragma (preprocessor) support
+@@ -205,6 +270,10 @@
+ hi def link dStorageClass StorageClass
+ hi def link dBoolean Boolean
+ hi def link dUnicode Special
++hi def link dTokenStringBrack String
++hi def link dHereString String
++hi def link dNestString String
++hi def link dDelimString String
+ hi def link dRawString String
+ hi def link dString String
+ hi def link dHexString String
+@@ -213,9 +282,10 @@
+ hi def link dSpecialCharError Error
+ hi def link dOctalError Error
+ hi def link dOperator Operator
+-hi def link dOpOverload Operator
++hi def link dOpOverload Identifier
+ hi def link dConstant Constant
+ hi def link dTypedef Typedef
++hi def link dEnum Structure
+ hi def link dStructure Structure
+ hi def link dTodo Todo
+ hi def link dType Type
+@@ -224,7 +294,8 @@
+ hi def link dNestedComment Comment
+ hi def link dExternal Include
+ hi def link dPragma PreProc
++hi def link dAnnotation PreProc
+
+ let b:current_syntax = "d"
+-
++
+ " vim: ts=8 noet
+diff -u -r --new-file runtime/syntax.orig/debchangelog.vim runtime/syntax/debchangelog.vim
+--- runtime/syntax.orig/debchangelog.vim 2008-07-06 12:51:40.000000000 -0500
++++ runtime/syntax/debchangelog.vim 2009-09-18 05:28:22.000000000 -0500
+@@ -3,7 +3,7 @@
+ " Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+ " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
+ " Wichert Akkerman <wakkerma@debian.org>
+-" Last Change: 2008-01-16
++" Last Change: 2009 Jun 05
+ " URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/debchangelog.vim;hb=debian
+
+ " Standard syntax initialization
+@@ -17,9 +17,9 @@
+ syn case ignore
+
+ " Define some common expressions we can use later on
+-syn match debchangelogName contained "^[[:alpha:]][[:alnum:].+-]\+ "
++syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ "
+ syn match debchangelogUrgency contained "; urgency=\(low\|medium\|high\|critical\|emergency\)\( \S.*\)\="
+-syn match debchangelogTarget contained "\v %(%(old)=stable|frozen|unstable|%(testing-|%(old)=stable-)=proposed-updates|experimental|%(sarge|etch|lenny)-%(backports|volatile)|%(testing|%(old)=stable)-security|%(dapper|feisty|gutsy|hardy|intrepid)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
++syn match debchangelogTarget contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(etch|lenny)-%(backports|volatile)|%(dapper|hardy|intrepid|jaunty|karmic)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
+ syn match debchangelogVersion contained "(.\{-})"
+ syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
+ syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
+diff -u -r --new-file runtime/syntax.orig/debcontrol.vim runtime/syntax/debcontrol.vim
+--- runtime/syntax.orig/debcontrol.vim 2008-07-06 12:51:40.000000000 -0500
++++ runtime/syntax/debcontrol.vim 2009-09-18 05:30:48.000000000 -0500
+@@ -3,7 +3,7 @@
+ " Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+ " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
+ " Wichert Akkerman <wakkerma@debian.org>
+-" Last Change: 2008-02-23
++" Last Change: 2009 July 14
+ " URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debcontrol.vim;hb=debian
+
+ " Comments are very welcome - but please make sure that you are commenting on
+@@ -28,10 +28,10 @@
+ syn match debControlSpace " "
+
+ " Define some common expressions we can use later on
+-syn match debcontrolArchitecture contained "\(all\|any\|alpha\|amd64\|arm\(e[bl]\)\=\|hppa\|i386\|ia64\|m32r\|m68k\|mipsel\|mips\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc64\|sparc\|hurd-i386\|kfreebsd-\(i386\|gnu\)\|knetbsd-i386\|netbsd-\(alpha\|i386\)\)"
++syn match debcontrolArchitecture contained "\(all\|any\|alpha\|amd64\|arm\(e[bl]\)\=\|avr32\|hppa\|i386\|ia64\|m32r\|m68k\|mipsel\|mips\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc64\|sparc\|hurd-i386\|kfreebsd-\(i386\|amd64\|gnu\)\|knetbsd-i386\|netbsd-\(alpha\|i386\)\)"
+ syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
+ syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
+-syn match debcontrolSection contained "\(\(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\(admin\|base\|comm\|devel\|doc\|editors\|electronics\|embedded\|games\|gnome\|graphics\|hamradio\|interpreters\|kde\|libs\|libdevel\|mail\|math\|misc\|net\|news\|oldlibs\|otherosfs\|perl\|python\|science\|shells\|sound\|text\|tex\|utils\|web\|x11\|debian-installer\)"
++syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|java|kde|kernel|libs|libdevel|lisp|localization|mail|math|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)"
+ syn match debcontrolPackageType contained "u\?deb"
+ syn match debcontrolVariable contained "\${.\{-}}"
+ syn match debcontrolDmUpload contained "\cyes"
+@@ -41,7 +41,7 @@
+ syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
+ syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
+ syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$"
+-syn match debcontrolVcsGit contained "\vgit://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
++syn match debcontrolVcsGit contained "\v%(git|http)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
+
+ " An email address
+ syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
+@@ -53,7 +53,7 @@
+ syn case ignore
+
+ " List of all legal keys
+-syn match debcontrolKey contained "^\(Source\|Package\|Section\|Priority\|Maintainer\|Uploaders\|Build-Depends\|Build-Conflicts\|Build-Depends-Indep\|Build-Conflicts-Indep\|Standards-Version\|Pre-Depends\|Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Essential\|Architecture\|Description\|Bugs\|Origin\|Enhances\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\|\%(XS-\)\=DM-Upload-Allowed\): *"
++syn match debcontrolKey contained "^\%(Source\|Package\|Section\|Priority\|\%(XSBC-Original-\)\=Maintainer\|Uploaders\|Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|Standards-Version\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Essential\|Architecture\|Description\|Bugs\|Origin\|X[SB]-Python-Version\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\|\%(XS-\)\=DM-Upload-Allowed\): *"
+
+ " Fields for which we do strict syntax checking
+ syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline
+@@ -62,15 +62,15 @@
+ syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline
+ syn region debcontrolStrictField start="^XC-Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline
+ syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
+-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
+-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
+-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
+-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
+-syn region debcontrolStrictField start="^\%(XS-\)\?DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline
++syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
++syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
++syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
++syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
++syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline
+
+ " Catch-all for the other legal fields
+-syn region debcontrolField start="^\(Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X\(S\|B\)-Python-Version\|XSBC-Original-Maintainer\|\(XS-\)\?Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
+-syn region debcontrolMultiField start="^\(Build-\(Conflicts\|Depends\)\(-Indep\)\=\|\(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ ]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable
++syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
++syn region debcontrolMultiField start="^\%(Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ #]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment
+
+ " Associate our matches and regions with pretty colours
+ if version >= 508 || !exists("did_debcontrol_syn_inits")
+diff -u -r --new-file runtime/syntax.orig/debsources.vim runtime/syntax/debsources.vim
+--- runtime/syntax.orig/debsources.vim 2008-07-06 12:51:40.000000000 -0500
++++ runtime/syntax/debsources.vim 2009-09-18 05:28:22.000000000 -0500
+@@ -2,7 +2,7 @@
+ " Language: Debian sources.list
+ " Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+ " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
+-" Last Change: 2008-04-25
++" Last Change: 2009 Apr 17
+ " URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/debsources.vim;hb=debian
+
+ " Standard syntax initialization
+@@ -19,11 +19,11 @@
+ syn match debsourcesKeyword /\(deb-src\|deb\|main\|contrib\|non-free\|restricted\|universe\|multiverse\)/
+
+ " Match comments
+-syn match debsourcesComment /#.*/
++syn match debsourcesComment /#.*/ contains=@Spell
+
+ " Match uri's
+ syn match debsourcesUri +\(http://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\++
+-syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(sarge\|etch\|lenny\|\(old\)\=stable\|testing\|unstable\|sid\|experimental\|dapper\|feisty\|gutsy\|hardy\|intrepid\)\([-[:alnum:]_./]*\)+
++syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(etch\|lenny\|squeeze\|\(old\)\=stable\|testing\|unstable\|sid\|experimental\|dapper\|hardy\|intrepid\|jaunty\|karmic\)\([-[:alnum:]_./]*\)+
+
+ " Associate our matches and regions with pretty colours
+ hi def link debsourcesLine Error
+diff -u -r --new-file runtime/syntax.orig/django.vim runtime/syntax/django.vim
+--- runtime/syntax.orig/django.vim 2007-05-06 05:32:18.000000000 -0500
++++ runtime/syntax/django.vim 2009-01-14 14:15:05.000000000 -0600
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: Django template
+ " Maintainer: Dave Hodder <dmh@dmh.org.uk>
+-" Last Change: 2007 Apr 21
++" Last Change: 2008 Dec 18
+
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -18,8 +18,9 @@
+
+ " Django template built-in tags and parameters
+ " 'comment' doesn't appear here because it gets special treatment
++syn keyword djangoStatement contained autoescape on off endautoescape
+ syn keyword djangoStatement contained and as block endblock by cycle debug else
+-syn keyword djangoStatement contained extends filter endfilter firstof for
++syn keyword djangoStatement contained extends filter endfilter firstof for empty
+ syn keyword djangoStatement contained endfor if endif ifchanged endifchanged
+ syn keyword djangoStatement contained ifequal endifequal ifnotequal
+ syn keyword djangoStatement contained endifnotequal in include load not now or
+@@ -35,15 +36,15 @@
+ " Django templete built-in filters
+ syn keyword djangoFilter contained add addslashes capfirst center cut date
+ syn keyword djangoFilter contained default default_if_none dictsort
+-syn keyword djangoFilter contained dictsortreversed divisibleby escape
++syn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs
+ syn keyword djangoFilter contained filesizeformat first fix_ampersands
+-syn keyword djangoFilter contained floatformat get_digit join length length_is
++syn keyword djangoFilter contained floatformat force_escape get_digit iriencode join last length length_is
+ syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust
+ syn keyword djangoFilter contained lower make_list phone2numeric pluralize
+-syn keyword djangoFilter contained pprint random removetags rjust slice slugify
++syn keyword djangoFilter contained pprint random removetags rjust safe slice slugify
+ syn keyword djangoFilter contained stringformat striptags
+ syn keyword djangoFilter contained time timesince timeuntil title
+-syn keyword djangoFilter contained truncatewords unordered_list upper urlencode
++syn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode
+ syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno
+
+ " Keywords to highlight within comments
+diff -u -r --new-file runtime/syntax.orig/dosbatch.vim runtime/syntax/dosbatch.vim
+--- runtime/syntax.orig/dosbatch.vim 2008-05-10 15:38:38.000000000 -0500
++++ runtime/syntax/dosbatch.vim 2009-09-18 05:28:22.000000000 -0500
+@@ -2,7 +2,7 @@
+ " Language: MSDOS batch file (with NT command extensions)
+ " Maintainer: Mike Williams <mrw@eandem.co.uk>
+ " Filenames: *.bat
+-" Last Change: 10th May 2008
++" Last Change: 6th September 2009
+ " Web Page: http://www.eandem.co.uk/mrw/vim
+ "
+ " Options Flags:
+@@ -36,7 +36,7 @@
+ syn case match
+ syn keyword dosbatchOperator EQU NEQ LSS LEQ GTR GEQ
+ syn case ignore
+-syn match dosbatchOperator "\s[-+\*/%]\s"
++syn match dosbatchOperator "\s[-+\*/%!~]\s"
+ syn match dosbatchOperator "="
+ syn match dosbatchOperator "[-+\*/%]="
+ syn match dosbatchOperator "\s\(&\||\|^\|<<\|>>\)=\=\s"
+@@ -51,10 +51,10 @@
+ syn match dosbatchCmd "(\s*'[^']*'"lc=1 contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator
+
+ " Numbers - surround with ws to not include in dir and filenames
+-syn match dosbatchInteger "[[:space:]=(/:]\d\+"lc=1
+-syn match dosbatchHex "[[:space:]=(/:]0x\x\+"lc=1
+-syn match dosbatchBinary "[[:space:]=(/:]0b[01]\+"lc=1
+-syn match dosbatchOctal "[[:space:]=(/:]0\o\+"lc=1
++syn match dosbatchInteger "[[:space:]=(/:,!~-]\d\+"lc=1
++syn match dosbatchHex "[[:space:]=(/:,!~-]0x\x\+"lc=1
++syn match dosbatchBinary "[[:space:]=(/:,!~-]0b[01]\+"lc=1
++syn match dosbatchOctal "[[:space:]=(/:,!~-]0\o\+"lc=1
+ syn cluster dosbatchNumber contains=dosbatchInteger,dosbatchHex,dosbatchBinary,dosbatchOctal
+
+ " Command line switches
+@@ -69,15 +69,15 @@
+ syn match dosbatchIdentifier contained "\s\h\w*\>"
+ syn match dosbatchVariable "%\h\w*%"
+ syn match dosbatchVariable "%\h\w*:\*\=[^=]*=[^%]*%"
+-syn match dosbatchVariable "%\h\w*:\~\d\+,\d\+%" contains=dosbatchInteger
++syn match dosbatchVariable "%\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=%" contains=dosbatchInteger
+ syn match dosbatchVariable "!\h\w*!"
+-syn match dosbatchVariable "!\h\w*:\*\=[^=]*=[^%]*!"
+-syn match dosbatchVariable "!\h\w*:\~\d\+,\d\+!" contains=dosbatchInteger
++syn match dosbatchVariable "!\h\w*:\*\=[^=]*=[^!]*!"
++syn match dosbatchVariable "!\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=!" contains=dosbatchInteger
+ syn match dosbatchSet "\s\h\w*[+-]\==\{-1}" contains=dosbatchIdentifier,dosbatchOperator
+
+ " Args to bat files and for loops, etc
+ syn match dosbatchArgument "%\(\d\|\*\)"
+-syn match dosbatchArgument "%%[a-z]\>"
++syn match dosbatchArgument "%[a-z]\>"
+ if dosbatch_cmdextversion == 1
+ syn match dosbatchArgument "%\~[fdpnxs]\+\(\($PATH:\)\=[a-z]\|\d\)\>"
+ else
+@@ -92,7 +92,9 @@
+
+ " Comments - usual rem but also two colons as first non-space is an idiom
+ syn match dosbatchComment "^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
++syn match dosbatchComment "^@rem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+ syn match dosbatchComment "\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
++syn match dosbatchComment "\s@rem\($\|\s.*$\)"lc=5 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+ syn match dosbatchComment "\s*:\s*:.*$" contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+
+ " Comments in ()'s - still to handle spaces before rem
+diff -u -r --new-file runtime/syntax.orig/doxygen.vim runtime/syntax/doxygen.vim
+--- runtime/syntax.orig/doxygen.vim 2008-07-22 13:41:00.000000000 -0500
++++ runtime/syntax/doxygen.vim 2009-01-28 10:23:36.000000000 -0600
+@@ -2,8 +2,8 @@
+ " Language: doxygen on top of c, cpp, idl, java, php
+ " Maintainer: Michael Geddes <vimmer@frog.wheelycreek.net>
+ " Author: Michael Geddes
+-" Last Change: July 2008
+-" Version: 1.22
++" Last Change: Jan 2009
++" Version: 1.23
+ "
+ " Copyright 2004-2008 Michael Geddes
+ " Please feel free to use, modify & distribute all or part of this script,
+@@ -239,7 +239,7 @@
+ " #Link hilighting.
+ syn match doxygenHashLink /\([a-zA-Z_][0-9a-zA-Z_]*\)\?#\(\.[0-9a-zA-Z_]\@=\|[a-zA-Z0-9_]\+\|::\|()\)\+/ contained contains=doxygenHashSpecial
+ syn match doxygenHashSpecial /#/ contained
+- syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@]\+/ contained
++ syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@~]\+/ contained
+
+ " Handle \page. This does not use doxygenBrief.
+ syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage
+diff -u -r --new-file runtime/syntax.orig/erlang.vim runtime/syntax/erlang.vim
+--- runtime/syntax.orig/erlang.vim 2008-03-15 09:01:37.000000000 -0500
++++ runtime/syntax/erlang.vim 2009-11-28 06:33:42.000000000 -0600
+@@ -50,7 +50,7 @@
+ " Operators
+ syn match erlangOperator "+\|-\|\*\|\/"
+ syn keyword erlangOperator div rem or xor bor bxor bsl bsr
+- syn keyword erlangOperator and band not bnot
++ syn keyword erlangOperator and band not bnot andalso orelse
+ syn match erlangOperator "==\|/=\|=:=\|=/=\|<\|=<\|>\|>="
+ syn match erlangOperator "++\|--\|=\|!\|<-"
+
+@@ -123,7 +123,7 @@
+
+ if ! exists ("erlang_keywords")
+ " Constants and Directives
+- syn match erlangDirective "-behaviour\|-behaviour"
++ syn match erlangDirective "-behaviour\|-behavior"
+ syn match erlangDirective "-compile\|-define\|-else\|-endif\|-export\|-file"
+ syn match erlangDirective "-ifdef\|-ifndef\|-import\|-include_lib\|-include"
+ syn match erlangDirective "-module\|-record\|-undef"
+diff -u -r --new-file runtime/syntax.orig/form.vim runtime/syntax/form.vim
+--- runtime/syntax.orig/form.vim 2004-06-07 09:32:35.000000000 -0500
++++ runtime/syntax/form.vim 2009-12-16 14:38:20.000000000 -0600
+@@ -1,7 +1,10 @@
+ " Vim syntax file
+ " Language: FORM
++" Version: 2.0
+ " Maintainer: Michael M. Tung <michael.tung@uni-mainz.de>
+-" Last Change: 2001 May 10
++" Last Change: <Thu Oct 23 13:11:21 CEST 2008>
++" Past Change: <October 2008 Thomas Reiter thomasr@nikhef.nl>
++" Past Change: <Wed, 2005/05/25 09:24:58 arwagner wptx44>
+
+ " First public release based on 'Symbolic Manipulation with FORM'
+ " by J.A.M. Vermaseren, CAN, Netherlands, 1991.
+@@ -18,30 +21,73 @@
+
+ syn case ignore
+
+-" A bunch of useful FORM keywords
++" a bunch of useful FORM keywords
+ syn keyword formType global local
+ syn keyword formHeaderStatement symbol symbols cfunction cfunctions
+ syn keyword formHeaderStatement function functions vector vectors
+-syn keyword formHeaderStatement set sets index indices
++syn keyword formHeaderStatement tensor tensors ctensor ctensors
++syn keyword formHeaderStatement set sets index indices table ctable
+ syn keyword formHeaderStatement dimension dimensions unittrace
+-syn keyword formStatement id identify drop skip
+-syn keyword formStatement write nwrite
+-syn keyword formStatement format print nprint load save
+-syn keyword formStatement bracket brackets
+-syn keyword formStatement multiply count match only discard
+-syn keyword formStatement trace4 traceN contract symmetrize antisymmetrize
+-syn keyword formConditional if else endif while
++syn keyword formConditional if else elseif endif while
+ syn keyword formConditional repeat endrepeat label goto
++syn keyword formConditional argument endargument exit
++syn keyword formConditional inexpression inside term
++syn keyword formConditional endinexpression endinside endterm
++syn keyword formStatement abrackets also antibrackets antisymmetrize
++syn keyword formStatement argexplode argimplode apply auto autodeclare
++syn keyword formStatement brackets chainin chainout chisholm cleartable
++syn keyword formStatement collect commuting compress contract
++syn keyword formStatement cyclesymmetrize deallocatetable delete
++syn keyword formStatement dimension discard disorder drop factarg fill
++syn keyword formStatement fillexpression fixindex format funpowers hide
++syn keyword formStatement identify idnew idold ifmatch inparallel
++syn keyword formStatement insidefirst keep load makeinteger many metric
++syn keyword formStatement moduleoption modulus multi multiply ndrop
++syn keyword formStatement nfunctions nhide normalize notinparallel
++syn keyword formStatement nprint nskip ntable ntensors nunhide nwrite
++syn keyword formStatement off on once only polyfun pophide print
++syn keyword formStatement printtable propercount pushhide ratio
++syn keyword formStatement rcyclesymmetrize redefine renumber
++syn keyword formStatement replaceinarg replaceloop save select
++syn keyword formStatement setexitflag skip slavepatchsize sort splitarg
++syn keyword formStatement splitfirstarg splitlastarg sum symmetrize
++syn keyword formStatement tablebase testuse threadbucketsize totensor
++syn keyword formStatement tovector trace4 tracen tryreplace unhide
++syn keyword formStatement unittrace vectors write
++" for compatibility with older FORM versions:
++syn keyword formStatement id bracket count match traceN
+
+ " some special functions
+-syn keyword formStatement g_ gi_ g5_ g6_ g7_ 5_ 6_ 7_
+-syn keyword formStatement e_ d_ delta_ theta_ sum_ sump_
++syn keyword formStatement abs_ bernoulli_ binom_ conjg_ count_
++syn keyword formStatement d_ dd_ delta_ deltap_ denom_ distrib_
++syn keyword formStatement dum_ dummy_ dummyten_ e_ exp_ fac_
++syn keyword formStatement factorin_ firstbracket_ g5_ g6_ g7_
++syn keyword formStatement g_ gcd_ gi_ integer_ invfac_ match_
++syn keyword formStatement max_ maxpowerof_ min_ minpowerof_
++syn keyword formStatement mod_ nargs_ nterms_ pattern_ poly_
++syn keyword formStatement polyadd_ polydiv_ polygcd_ polyintfac_
++syn keyword formStatement polymul_ polynorm_ polyrem_ polysub_
++syn keyword formStatement replace_ reverse_ root_ setfun_ sig_
++syn keyword formStatement sign_ sum_ sump_ table_ tbl_ term_
++syn keyword formStatement termsin_ termsinbracket_ theta_ thetap_
++syn keyword formStatement 5_ 6_ 7_
++
++syn keyword formReserved sqrt_ ln_ sin_ cos_ tan_ asin_ acos_
++syn keyword formReserved atan_ atan2_ sinh_ cosh_ tanh_ asinh_
++syn keyword formReserved acosh_ atanh_ li2_ lin_
++
++syn keyword formTodo contained TODO FIXME XXX
++
++syn match formSpecial display contained "\\\(n\|t\|b\|\\\|\"\)"
++syn match formSpecial display contained "%\(%\|e\|E\|s\|f\|\$\)"
++syn match formSpecial "\<N\d\+_[?]"
+
+ " pattern matching for keywords
+-syn match formComment "^\ *\*.*$"
+-syn match formComment "\;\ *\*.*$"
+-syn region formString start=+"+ end=+"+
++syn match formComment "^\ *\*.*$" contains=formTodo
++syn match formComment "\;\ *\*.*$" contains=formTodo
++syn region formString start=+"+ end=+"+ contains=formSpecial
+ syn region formString start=+'+ end=+'+
++syn region formNestedString start=+`+ end=+'+ contains=formNestedString
+ syn match formPreProc "^\=\#[a-zA-z][a-zA-Z0-9]*\>"
+ syn match formNumber "\<\d\+\>"
+ syn match formNumber "\<\d\+\.\d*\>"
+@@ -50,6 +96,13 @@
+ syn match formNumber "-\.\d" contains=Number
+ syn match formNumber "i_\+\>"
+ syn match formNumber "fac_\+\>"
++" pattern matching wildcards
++syn match formNumber "?[A-z0-9]*"
++" dollar-variables (new in 3.x)
++syn match formNumber "\\$[A-z0-9]*"
++" scalar products
++syn match formNumber "^\=[a-zA-z][a-zA-Z0-9]*\.[a-zA-z][a-zA-Z0-9]*\>"
++
+ syn match formDirective "^\=\.[a-zA-z][a-zA-Z0-9]*\>"
+
+ " hi User Labels
+@@ -74,6 +127,10 @@
+ HiLink formDirective PreProc
+ HiLink formType Type
+ HiLink formString String
++ HiLink formNestedString String
++ HiLink formReserved Error
++ HiLink formTodo Todo
++ HiLink formSpecial SpecialChar
+
+ if !exists("form_enhanced_color")
+ HiLink formHeaderStatement Statement
+diff -u -r --new-file runtime/syntax.orig/fortran.vim runtime/syntax/fortran.vim
+--- runtime/syntax.orig/fortran.vim 2006-04-22 06:22:12.000000000 -0500
++++ runtime/syntax/fortran.vim 2008-11-06 10:05:04.000000000 -0600
+@@ -2,7 +2,7 @@
+ " Language: Fortran95 (and Fortran90, Fortran77, F and elf90)
+ " Version: 0.88
+ " URL: http://www.unb.ca/chem/ajit/syntax/fortran.vim
+-" Last Change: 2006 Apr. 22
++" Last Change: 2008 Nov 01
+ " Maintainer: Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
+ " Usage: Do :help fortran-syntax from Vim
+ " Credits:
+@@ -300,7 +300,7 @@
+ syn match fortranLabelError "^.\{-,4}[^0-9 ]" contains=fortranTab
+ syn match fortranLabelError "^.\{4}\d\S"
+ endif
+- syn match fortranComment excludenl "^[!c*].*$" contains=@fortranCommentGroup
++ syn match fortranComment excludenl "^[!c*].*$" contains=@fortranCommentGroup,@spell
+ syn match fortranLeftMargin transparent "^ \{5}"
+ syn match fortranContinueMark display "^.\{5}\S"lc=5
+ else
+diff -u -r --new-file runtime/syntax.orig/fstab.vim runtime/syntax/fstab.vim
+--- runtime/syntax.orig/fstab.vim 2008-01-16 14:52:16.000000000 -0600
++++ runtime/syntax/fstab.vim 2009-02-12 16:23:26.000000000 -0600
+@@ -2,14 +2,15 @@
+ " Language: fstab file
+ " Maintaner: Radu Dineiu <radu.dineiu@gmail.com>
+ " URL: http://ld.yi.org/vim/fstab.vim
+-" Last Change: 2008 Jan 16
+-" Version: 0.92
++" Last Change: 2009 Feb 04
++" Version: 0.93
+ "
+ " Credits:
+ " David Necas (Yeti) <yeti@physics.muni.cz>
+ " Stefano Zacchiroli <zack@debian.org>
+ " Georgi Georgiev <chutz@gg3.net>
+ " James Vega <jamessan@debian.org>
++" Elias Probst <mail@eliasprobst.eu>
+ "
+ " Options:
+ " let fstab_unknown_fs_errors = 1
+@@ -46,7 +47,7 @@
+ " Type
+ syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown
+ syn match fsTypeUnknown /\s\+\zs\w\+/ contained
+-syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
++syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 ext4 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
+
+ " Options
+ " -------
+@@ -91,7 +92,21 @@
+ syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber
+ syn keyword fsOptionsExt3Journal contained update inum
+ syn keyword fsOptionsExt3Data contained journal ordered writeback
+-syn keyword fsOptionsKeywords contained noload
++syn keyword fsOptionsKeywords contained noload user_xattr nouser_xattr acl noacl
++
++" Options: ext4
++syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt4Journal
++syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt4Data
++syn match fsOptionsKeywords contained /\<barrier=/ nextgroup=fsOptionsExt4Barrier
++syn match fsOptionsKeywords contained /\<journal_dev=/ nextgroup=fsOptionsNumber
++syn match fsOptionsKeywords contained /\<resuid=/ nextgroup=fsOptionsNumber
++syn match fsOptionsKeywords contained /\<resgid=/ nextgroup=fsOptionsNumber
++syn match fsOptionsKeywords contained /\<sb=/ nextgroup=fsOptionsNumber
++syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber
++syn keyword fsOptionsExt4Journal contained update inum
++syn keyword fsOptionsExt4Data contained journal ordered writeback
++syn match fsOptionsExt4Barrier /[0-1]/
++syn keyword fsOptionsKeywords contained noload extents orlov oldalloc user_xattr nouser_xattr acl noacl reservation noreservation bsddf minixdf check=none nocheck debug grpid nogroupid sysvgroups bsdgroups quota noquota grpquota usrquota bh nobh
+
+ " Options: fat
+ syn match fsOptionsKeywords contained /\<blocksize=/ nextgroup=fsOptionsSize
+@@ -241,6 +256,9 @@
+ HiLink fsOptionsExt2Errors String
+ HiLink fsOptionsExt3Journal String
+ HiLink fsOptionsExt3Data String
++ HiLink fsOptionsExt4Journal String
++ HiLink fsOptionsExt4Data String
++ HiLink fsOptionsExt4Barrier Number
+ HiLink fsOptionsFatCheck String
+ HiLink fsOptionsConv String
+ HiLink fsOptionsFatType Number
+diff -u -r --new-file runtime/syntax.orig/gdb.vim runtime/syntax/gdb.vim
+--- runtime/syntax.orig/gdb.vim 2004-06-07 09:32:35.000000000 -0500
++++ runtime/syntax/gdb.vim 2009-06-03 05:05:43.000000000 -0500
+@@ -2,7 +2,7 @@
+ " Language: GDB command files
+ " Maintainer: Claudio Fleiner <claudio@fleiner.com>
+ " URL: http://www.fleiner.com/vim/syntax/gdb.vim
+-" Last Change: 2003 Jan 04
++" Last Change: 2009 May 25
+
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -35,7 +35,7 @@
+ " some commonly used abreviations
+ syn keyword gdbStatement c disp undisp disas p
+
+-syn region gdbDocument matchgroup=gdbFuncDef start="\<document\>.*$" matchgroup=gdbFuncDef end="^end$"
++syn region gdbDocument matchgroup=gdbFuncDef start="\<document\>.*$" matchgroup=gdbFuncDef end="^end\s*$"
+
+ syn match gdbStatement "\<add-shared-symbol-files\>"
+ syn match gdbStatement "\<add-symbol-file\>"
+diff -u -r --new-file runtime/syntax.orig/git.vim runtime/syntax/git.vim
+--- runtime/syntax.orig/git.vim 2008-04-15 22:15:49.000000000 -0500
++++ runtime/syntax/git.vim 2009-12-24 10:29:21.000000000 -0600
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: generic git output
+-" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
+-" Last Change: 2008 Mar 21
++" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
++" Last Change: 2009 Dec 24
+
+ if exists("b:current_syntax")
+ finish
+@@ -13,14 +13,19 @@
+ syn include @gitDiff syntax/diff.vim
+
+ syn region gitHead start=/\%^/ end=/^$/
+-syn region gitHead start=/\%(^commit \x\{40\}$\)\@=/ end=/^$/
++syn region gitHead start=/\%(^commit \x\{40\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/
+
+ " For git reflog and git show ...^{tree}, avoid sync issues
+ syn match gitHead /^\d\{6\} \%(\w\{4} \)\=\x\{40\}\%( [0-3]\)\=\t.*/
+ syn match gitHead /^\x\{40\} \x\{40}\t.*/
+
+-syn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --git \|$\)\@=/ contains=@gitDiff fold
+-syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --git \|$\)\@=/ contains=@gitDiff
++syn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff fold
++syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\) \|$\)\@=/ contains=@gitDiff
++
++syn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
++syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
++syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge
++syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge
+
+ syn match gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite
+ syn match gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite
+@@ -29,8 +34,6 @@
+ syn match gitIdentityKeyword /^\%(author\|committer\|tagger\)\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
+ syn match gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
+ syn match gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite
+-syn match gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite
+-syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity
+
+ syn match gitReflogHeader /^Reflog:/ contained containedin=gitHead nextgroup=gitReflogMiddle skipwhite
+ syn match gitReflogHeader /^Reflog message:/ contained containedin=gitHead skipwhite
+@@ -42,14 +45,20 @@
+ syn match gitType /\<\%(tag\|commit\|tree\|blob\)\>/ contained nextgroup=gitHash skipwhite
+ syn match gitStage /\<\d\t\@=/ contained
+ syn match gitReference /\S\+\S\@!/ contained
+-syn match gitHash /\<\x\{40\}\>/ contained nextgroup=gitIdentity,gitStage skipwhite
++syn match gitHash /\<\x\{40\}\>/ contained nextgroup=gitIdentity,gitStage,gitHash skipwhite
+ syn match gitHash /^\<\x\{40\}\>/ containedin=gitHead contained nextgroup=gitHash skipwhite
++syn match gitHashAbbrev /\<\x\{4,40\}\>/ contained nextgroup=gitHashAbbrev skipwhite
+ syn match gitHashAbbrev /\<\x\{4,39\}\.\.\./he=e-3 contained nextgroup=gitHashAbbrev skipwhite
+-syn match gitHashAbbrev /\<\x\{40\}\>/ contained nextgroup=gitHashAbbrev skipwhite
++
++syn match gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite
++syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity
++
++syn match gitNotesHeader /^Notes:\ze\n /
+
+ hi def link gitDateHeader gitIdentityHeader
+ hi def link gitIdentityHeader gitIdentityKeyword
+ hi def link gitIdentityKeyword Label
++hi def link gitNotesHeader gitKeyword
+ hi def link gitReflogHeader gitKeyword
+ hi def link gitKeyword Keyword
+ hi def link gitIdentity String
+@@ -63,5 +72,7 @@
+ hi def link gitReference Function
+ hi def link gitStage gitType
+ hi def link gitType Type
++hi def link gitDiffAdded diffAdded
++hi def link gitDiffRemoved diffRemoved
+
+ let b:current_syntax = "git"
+diff -u -r --new-file runtime/syntax.orig/gitcommit.vim runtime/syntax/gitcommit.vim
+--- runtime/syntax.orig/gitcommit.vim 2008-04-15 17:46:45.000000000 -0500
++++ runtime/syntax/gitcommit.vim 2009-12-24 10:29:21.000000000 -0600
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language: git commit file
+-" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
++" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+ " Filenames: *.git/COMMIT_EDITMSG
+-" Last Change: 2008 Apr 09
++" Last Change: 2009 Dec 24
+
+ if exists("b:current_syntax")
+ finish
+@@ -16,48 +16,66 @@
+ endif
+
+ syn include @gitcommitDiff syntax/diff.vim
+-syn region gitcommitDiff start=/\%(^diff --git \)\@=/ end=/^$\|^#\@=/ contains=@gitcommitDiff
++syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^$\|^#\@=/ contains=@gitcommitDiff
+
+ syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl
+-syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
++syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
+ syn match gitcommitOverflow ".*" contained contains=@Spell
+ syn match gitcommitBlank "^[^#].*" contained contains=@Spell
+ syn match gitcommitComment "^#.*"
+-syn region gitcommitHead start=/^# / end=/^#$/ contained transparent
++syn match gitcommitHead "^\%(# .*\n\)\+#$" contained transparent
+ syn match gitcommitOnBranch "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
+-syn match gitcommitBranch "\S\+" contained
++syn match gitcommitOnBranch "\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
++syn match gitcommitBranch "[^ \t']\+" contained
++syn match gitcommitNoBranch "\%(^# \)\@<=Not currently on any branch." contained containedin=gitcommitComment
+ syn match gitcommitHeader "\%(^# \)\@<=.*:$" contained containedin=gitcommitComment
++syn region gitcommitAuthor matchgroup=gitCommitHeader start=/\%(^# \)\@<=Author:/ end=/$/ keepend oneline contained containedin=gitcommitComment transparent
++syn match gitcommitNoChanges "\%(^# \)\@<=No changes$" contained containedin=gitcommitComment
+
+ syn region gitcommitUntracked start=/^# Untracked files:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUntrackedFile fold
+ syn match gitcommitUntrackedFile "\t\@<=.*" contained
+
+ syn region gitcommitDiscarded start=/^# Changed but not updated:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitDiscardedType fold
+ syn region gitcommitSelected start=/^# Changes to be committed:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitSelectedType fold
++syn region gitcommitUnmerged start=/^# Unmerged paths:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUnmergedType fold
+
+ syn match gitcommitDiscardedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitDiscardedFile skipwhite
+ syn match gitcommitSelectedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitSelectedFile skipwhite
++syn match gitcommitUnmergedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitUnmergedFile skipwhite
+ syn match gitcommitDiscardedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow
+ syn match gitcommitSelectedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
++syn match gitcommitUnmergedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
+ syn match gitcommitDiscardedArrow " -> " contained nextgroup=gitcommitDiscardedFile
+ syn match gitcommitSelectedArrow " -> " contained nextgroup=gitcommitSelectedFile
++syn match gitcommitUnmergedArrow " -> " contained nextgroup=gitcommitSelectedFile
++
++syn match gitcommitWarning "\%^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl
++syn match gitcommitWarning "^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl contained
++syn match gitcommitWarning "^\%(no changes added to commit\|nothing \%(added \)\=to commit\)\>.*\%$"
+
+ hi def link gitcommitSummary Keyword
+ hi def link gitcommitComment Comment
+ hi def link gitcommitUntracked gitcommitComment
+ hi def link gitcommitDiscarded gitcommitComment
+ hi def link gitcommitSelected gitcommitComment
++hi def link gitcommitUnmerged gitcommitComment
+ hi def link gitcommitOnBranch Comment
+ hi def link gitcommitBranch Special
++hi def link gitcommitNoBranch gitCommitBranch
+ hi def link gitcommitDiscardedType gitcommitType
+ hi def link gitcommitSelectedType gitcommitType
++hi def link gitcommitUnmergedType gitcommitType
+ hi def link gitcommitType Type
++hi def link gitcommitNoChanges gitcommitHeader
+ hi def link gitcommitHeader PreProc
+ hi def link gitcommitUntrackedFile gitcommitFile
+ hi def link gitcommitDiscardedFile gitcommitFile
+ hi def link gitcommitSelectedFile gitcommitFile
++hi def link gitcommitUnmergedFile gitcommitFile
+ hi def link gitcommitFile Constant
+ hi def link gitcommitDiscardedArrow gitcommitArrow
+ hi def link gitcommitSelectedArrow gitcommitArrow
++hi def link gitcommitUnmergedArrow gitcommitArrow
+ hi def link gitcommitArrow gitcommitComment
+ "hi def link gitcommitOverflow Error
+ hi def link gitcommitBlank Error
+diff -u -r --new-file runtime/syntax.orig/gitconfig.vim runtime/syntax/gitconfig.vim
+--- runtime/syntax.orig/gitconfig.vim 2008-06-04 10:45:44.000000000 -0500
++++ runtime/syntax/gitconfig.vim 2009-12-24 10:29:21.000000000 -0600
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language: git config file
+-" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
++" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+ " Filenames: gitconfig, .gitconfig, *.git/config
+-" Last Change: 2008 Jun 04
++" Last Change: 2009 Dec 24
+
+ if exists("b:current_syntax")
+ finish
+diff -u -r --new-file runtime/syntax.orig/gitrebase.vim runtime/syntax/gitrebase.vim
+--- runtime/syntax.orig/gitrebase.vim 2008-04-16 03:12:25.000000000 -0500
++++ runtime/syntax/gitrebase.vim 2009-12-24 10:29:21.000000000 -0600
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language: git rebase --interactive
+-" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
++" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+ " Filenames: git-rebase-todo
+-" Last Change: 2008 Apr 16
++" Last Change: 2009 Dec 24
+
+ if exists("b:current_syntax")
+ finish
+@@ -14,6 +14,7 @@
+ syn match gitrebaseCommit "\v<\x{7,40}>" nextgroup=gitrebaseSummary skipwhite
+ syn match gitrebasePick "\v^p%(ick)=>" nextgroup=gitrebaseCommit skipwhite
+ syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite
++syn match gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite
+ syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite
+ syn match gitrebaseSummary ".*" contains=gitrebaseHash contained
+ syn match gitrebaseComment "^#.*" contains=gitrebaseHash
+@@ -23,9 +24,10 @@
+ hi def link gitrebaseHash Identifier
+ hi def link gitrebasePick Statement
+ hi def link gitrebaseEdit PreProc
++hi def link gitrebaseReword Special
+ hi def link gitrebaseSquash Type
+ hi def link gitrebaseSummary String
+ hi def link gitrebaseComment Comment
+-hi def link gitrebaseSquashError Error
++hi def link gitrebaseSquashError Error
+
+ let b:current_syntax = "gitrebase"
+diff -u -r --new-file runtime/syntax.orig/groovy.vim runtime/syntax/groovy.vim
+--- runtime/syntax.orig/groovy.vim 2006-03-24 10:29:41.000000000 -0600
++++ runtime/syntax/groovy.vim 2009-11-28 06:33:43.000000000 -0600
+@@ -228,6 +228,7 @@
+ " syntax include @groovyHtml <sfile>:p:h/html.vim
+ syntax include @groovyHtml runtime! syntax/html.vim
+ unlet b:current_syntax
++ syntax spell default " added by Bram
+ syn region groovyDocComment start="/\*\*" end="\*/" keepend contains=groovyCommentTitle,@groovyHtml,groovyDocTags,groovyTodo,@Spell
+ syn region groovyCommentTitle contained matchgroup=groovyDocComment start="/\*\*" matchgroup=groovyCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@groovyHtml,groovyCommentStar,groovyTodo,@Spell,groovyDocTags
+
+diff -u -r --new-file runtime/syntax.orig/haskell.vim runtime/syntax/haskell.vim
+--- runtime/syntax.orig/haskell.vim 2004-06-07 09:32:35.000000000 -0500
++++ runtime/syntax/haskell.vim 2009-01-14 14:15:20.000000000 -0600
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: Haskell
+ " Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org>
+-" Last Change: 2004 Feb 23
++" Last Change: 2008 Dec 15
+ " Original Author: John Williams <jrw@pobox.com>
+ "
+ " Thanks to Ryan Crumley for suggestions and John Meacham for
+@@ -30,6 +30,7 @@
+ " in eol comment character class
+ " 2004 Feb 23: Made the leading comments somewhat clearer where it comes
+ " to attribution of work.
++" 2008 Dec 15: Added comments as contained element in import statements
+
+ " Remove any old syntax stuff hanging around
+ if version < 600
+@@ -67,7 +68,7 @@
+ " because otherwise they would match as keywords at the start of a
+ " "literate" comment (see lhs.vim).
+ syn match hsModule "\<module\>"
+-syn match hsImport "\<import\>.*"he=s+6 contains=hsImportMod
++syn match hsImport "\<import\>.*"he=s+6 contains=hsImportMod,hsLineComment,hsBlockComment
+ syn match hsImportMod contained "\<\(as\|qualified\|hiding\)\>"
+ syn match hsInfix "\<\(infix\|infixl\|infixr\)\>"
+ syn match hsStructure "\<\(class\|data\|deriving\|instance\|default\|where\)\>"
+diff -u -r --new-file runtime/syntax.orig/help.vim runtime/syntax/help.vim
+--- runtime/syntax.orig/help.vim 2006-05-13 01:42:22.000000000 -0500
++++ runtime/syntax/help.vim 2009-06-03 05:07:39.000000000 -0500
+@@ -1,14 +1,14 @@
+ " Vim syntax file
+ " Language: Vim help file
+ " Maintainer: Bram Moolenaar (Bram@vim.org)
+-" Last Change: 2006 May 13
++" Last Change: 2009 May 18
+
+ " Quit when a (custom) syntax file was already loaded
+ if exists("b:current_syntax")
+ finish
+ endif
+
+-syn match helpHeadline "^[-A-Z .]\+[ \t]\+\*"me=e-1
++syn match helpHeadline "^[-A-Z .][-A-Z0-9 .()]*[ \t]\+\*"me=e-1
+ syn match helpSectionDelim "^=\{3,}.*===$"
+ syn match helpSectionDelim "^-\{3,}.*--$"
+ syn region helpExample matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<"
+diff -u -r --new-file runtime/syntax.orig/indent.vim runtime/syntax/indent.vim
+--- runtime/syntax.orig/indent.vim 2007-06-17 10:02:22.000000000 -0500
++++ runtime/syntax/indent.vim 2010-02-11 06:48:22.000000000 -0600
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: indent(1) configuration file
+ " Maintainer: Nikolai Weibull <now@bitwi.se>
+-" Latest Revision: 2007-06-17
++" Latest Revision: 2010-01-23
+ " indent_is_bsd: If exists, will change somewhat to match BSD implementation
+ "
+ " TODO: is the deny-all (a la lilo.vim nice or no?)...
+@@ -27,7 +27,7 @@
+ \ contains=indentTodo,@Spell
+
+ if !exists("indent_is_bsd")
+- syn match indentOptions '-i\|--indentation-level'
++ syn match indentOptions '-i\|--indentation-level\|-il\|--indent-level'
+ \ nextgroup=indentNumber skipwhite skipempty
+ endif
+ syn match indentOptions '-\%(bli\|c\%([bl]i\|[dip]\)\=\|di\=\|ip\=\|lc\=\|pp\=i\|sbi\|ts\|-\%(brace-indent\|comment-indentation\|case-brace-indentation\|declaration-comment-column\|continuation-indentation\|case-indentation\|else-endif-column\|line-comments-indentation\|declaration-indentation\|indent-level\|parameter-indentation\|line-length\|comment-line-length\|paren-indentation\|preprocessor-indentation\|struct-brace-indentation\|tab-size\)\)'
+@@ -123,6 +123,7 @@
+ \ -ut --use-tabs
+ \ -v --verbose
+ \ -version --version
++ \ -linux --linux-style
+
+ if exists("indent_is_bsd")
+ syn keyword indentOptions -ip -ei -nei
+diff -u -r --new-file runtime/syntax.orig/java.vim runtime/syntax/java.vim
+--- runtime/syntax.orig/java.vim 2007-12-20 17:14:48.000000000 -0600
++++ runtime/syntax/java.vim 2009-03-22 14:39:44.000000000 -0500
+@@ -2,7 +2,7 @@
+ " Language: Java
+ " Maintainer: Claudio Fleiner <claudio@fleiner.com>
+ " URL: http://www.fleiner.com/vim/syntax/java.vim
+-" Last Change: 2007 Dec 21
++" Last Change: 2009 Mar 14
+
+ " Please check :help java.vim for comments on some of the options available.
+
+@@ -15,6 +15,7 @@
+ endif
+ " we define it here so that included files can test for it
+ let main_syntax='java'
++ syn region javaFold start="{" end="}" transparent fold
+ endif
+
+ " don't use standard HiLink, it will not work with included syntax files
+@@ -58,7 +59,7 @@
+ syn keyword javaClassDecl enum
+ syn match javaClassDecl "^class\>"
+ syn match javaClassDecl "[^.]\s*\<class\>"ms=s+1
+-syn match javaAnnotation "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>"
++syn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>"
+ syn match javaClassDecl "@interface\>"
+ syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite
+ syn match javaUserLabelRef "\k\+" contained
+@@ -121,11 +122,6 @@
+ syn keyword javaLabel default
+
+ if !exists("java_allow_cpp_keywords")
+- " The default used to be to highlight C++ keywords. But several people
+- " don't like that, so default to not highlighting these.
+- let java_allow_cpp_keywords = 1
+-endif
+-if !java_allow_cpp_keywords
+ syn keyword javaError auto delete extern friend inline redeclared
+ syn keyword javaError register signed sizeof struct template typedef union
+ syn keyword javaError unsigned operator
+@@ -161,6 +157,11 @@
+ " syntax coloring for javadoc comments (HTML)
+ syntax include @javaHtml <sfile>:p:h/html.vim
+ unlet b:current_syntax
++ " HTML enables spell checking for all text that is not in a syntax item. This
++ " is wrong for Java (all identifiers would be spell-checked), so it's undone
++ " here.
++ syntax spell default
++
+ syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell
+ syn region javaCommentTitle contained matchgroup=javaDocComment start="/\*\*" matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag
+
+@@ -179,7 +180,7 @@
+ " Strings and constants
+ syn match javaSpecialError contained "\\."
+ syn match javaSpecialCharError contained "[^']"
+-syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
++syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\+\x\{4\}\)"
+ syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
+ " next line disabled, it can cause a crash for a long line
+ "syn match javaStringError +"\([^"\\]\|\\.\)*$+
+@@ -192,7 +193,7 @@
+ syn match javaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+
+ " unicode characters
+-syn match javaSpecial "\\u\d\{4\}"
++syn match javaSpecial "\\u\+\d\{4\}"
+
+ syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
+
+diff -u -r --new-file runtime/syntax.orig/kconfig.vim runtime/syntax/kconfig.vim
+--- runtime/syntax.orig/kconfig.vim 2006-04-19 15:49:04.000000000 -0500
++++ runtime/syntax/kconfig.vim 2009-06-03 05:05:43.000000000 -0500
+@@ -1,6 +1,6 @@
+ " Vim syntax file
+ " Maintainer: Nikolai Weibull <now@bitwi.se>
+-" Latest Revision: 2006-04-14
++" Latest Revision: 2009-05-25
+
+ if exists("b:current_syntax")
+ finish
+@@ -666,9 +666,9 @@
+
+ syn match kconfigComment display '#.*$' contains=kconfigTodo
+
+-syn keyword kconfigKeyword config menuconfig comment menu mainmenu
++syn keyword kconfigKeyword config menuconfig comment mainmenu
+
+-syn keyword kconfigConditional choice endchoice if endif
++syn keyword kconfigConditional menu endmenu choice endchoice if endif
+
+ syn keyword kconfigPreProc source
+ \ nextgroup=kconfigPath
+diff -u -r --new-file runtime/syntax.orig/lex.vim runtime/syntax/lex.vim
+--- runtime/syntax.orig/lex.vim 2005-09-06 12:27:26.000000000 -0500
++++ runtime/syntax/lex.vim 2009-10-08 16:18:57.000000000 -0500
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language: Lex
+-" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
+-" Last Change: Sep 06, 2005
+-" Version: 7
++" Maintainer: Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
++" Last Change: Sep 11, 2009
++" Version: 10
+ " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+ "
+ " Option:
+@@ -16,7 +16,7 @@
+ finish
+ endif
+
+-" Read the C syntax to start with
++" Read the C/C++ syntax to start with
+ if version >= 600
+ if exists("lex_uses_cpp")
+ runtime! syntax/cpp.vim
+@@ -36,32 +36,60 @@
+ " --- Lex stuff ---
+ " --- ========= ---
+
+-"I'd prefer to use lex.* , but it doesn't handle forward definitions yet
++"I'd prefer to use lex.* , but vim doesn't handle forward definitions yet
+ syn cluster lexListGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatString,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,lexPatCode,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
+-syn cluster lexListPatCodeGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
++syn cluster lexListPatCodeGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatTagZoneStart,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
+
+ " Abbreviations Section
+-syn region lexAbbrvBlock start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
++if has("folding")
++ syn region lexAbbrvBlock fold start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
++else
++ syn region lexAbbrvBlock start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
++endif
+ syn match lexAbbrv "^\I\i*\s"me=e-1 skipwhite contained nextgroup=lexAbbrvRegExp
+ syn match lexAbbrv "^%[sx]" contained
+ syn match lexAbbrvRegExp "\s\S.*$"lc=1 contained nextgroup=lexAbbrv,lexInclude
+-syn region lexInclude matchgroup=lexSep start="^%{" end="%}" contained contains=ALLBUT,@lexListGroup
+-syn region lexAbbrvComment start="^\s\+/\*" end="\*/" contains=@Spell
+-syn region lexStartState matchgroup=lexAbbrv start="^%\a\+" end="$" contained
++if has("folding")
++ syn region lexInclude fold matchgroup=lexSep start="^%{" end="%}" contained contains=ALLBUT,@lexListGroup
++ syn region lexAbbrvComment fold start="^\s\+/\*" end="\*/" contains=@Spell
++ syn region lexStartState fold matchgroup=lexAbbrv start="^%\a\+" end="$" contained
++else
++ syn region lexInclude matchgroup=lexSep start="^%{" end="%}" contained contains=ALLBUT,@lexListGroup
++ syn region lexAbbrvComment start="^\s\+/\*" end="\*/" contains=@Spell
++ syn region lexStartState matchgroup=lexAbbrv start="^%\a\+" end="$" contained
++endif
+
+ "%% : Patterns {Actions}
+-syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPat,lexPatTag,lexPatComment
+-syn region lexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatString,lexSlashQuote,lexBrace
+-syn region lexBrace start="\[" skip=+\\\\\|\\+ end="]" contained
+-syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
+-syn match lexPatTag "^<\I\i*\(,\I\i*\)*>*" contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
++if has("folding")
++ syn region lexPatBlock fold matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat
++ syn region lexPat fold start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
++ syn region lexBrace fold start="\[" skip=+\\\\\|\\+ end="]" contained
++ syn region lexPatString fold matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
++else
++ syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat
++ syn region lexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
++ syn region lexBrace start="\[" skip=+\\\\\|\\+ end="]" contained
++ syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
++endif
++syn match lexPatTag "^<\I\i*\(,\I\i*\)*>" contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
++syn match lexPatTagZone "^<\I\i*\(,\I\i*\)*>\s*\ze{" contained nextgroup=lexPatTagZoneStart
+ syn match lexPatTag +^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+ contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
+-syn region lexPatComment start="^\s*/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
++if has("folding")
++ syn region lexPatTagZoneStart matchgroup=lexPatTag fold start='{' end='}' contained contains=lexPat,lexPatComment
++ syn region lexPatComment start="\s\+/\*" end="\*/" fold skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
++else
++ syn region lexPatTagZoneStart matchgroup=lexPatTag start='{' end='}' contained contains=lexPat,lexPatComment
++ syn region lexPatComment start="\s\+/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
++endif
+ syn match lexPatCodeLine ".*$" contained contains=ALLBUT,@lexListGroup
+ syn match lexMorePat "\s*|\s*$" skipnl contained nextgroup=lexPat,lexPatTag,lexPatComment
+ syn match lexPatSep "\s\+" contained nextgroup=lexMorePat,lexPatCode,lexPatCodeLine
+ syn match lexSlashQuote +\(\\\\\)*\\"+ contained
+-syn region lexPatCode matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" skipnl contained contains=ALLBUT,@lexListPatCodeGroup
++if has("folding")
++ syn region lexPatCode matchgroup=Delimiter start="{" end="}" fold skipnl contained contains=ALLBUT,@lexListPatCodeGroup
++else
++ syn region lexPatCode matchgroup=Delimiter start="{" end="}" skipnl contained contains=ALLBUT,@lexListPatCodeGroup
++endif
+
+ syn keyword lexCFunctions BEGIN input unput woutput yyleng yylook yytext
+ syn keyword lexCFunctions ECHO output winput wunput yyless yymore yywrap
+@@ -80,9 +108,10 @@
+ syn sync match lexSyncPat groupthere lexPatBlock "^%%$"
+
+ " The default highlighting.
+-hi def link lexSlashQuote lexPat
+-hi def link lexBrace lexPat
+ hi def link lexAbbrvComment lexPatComment
++hi def link lexBrace lexPat
++hi def link lexPatTagZone lexPatTag
++hi def link lexSlashQuote lexPat
+
+ hi def link lexAbbrvRegExp Macro
+ hi def link lexAbbrv SpecialChar
+diff -u -r --new-file runtime/syntax.orig/lhaskell.vim runtime/syntax/lhaskell.vim
+--- runtime/syntax.orig/lhaskell.vim 2008-07-01 12:47:29.000000000 -0500
++++ runtime/syntax/lhaskell.vim 2009-05-14 13:53:07.000000000 -0500
+@@ -4,8 +4,8 @@
+ " \begin{code} \end{code} blocks
+ " Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org>
+ " Original Author: Arthur van Leeuwen <arthurvl@cs.uu.nl>
+-" Last Change: 2008 Jul 01
+-" Version: 1.02
++" Last Change: 2009 May 08
++" Version: 1.04
+ "
+ " Thanks to Ian Lynagh for thoughtful comments on initial versions and
+ " for the inspiration for writing this in the first place.
+@@ -29,8 +29,10 @@
+ " 2004 February 20: Cleaned up the guessing and overriding a bit
+ " 2004 February 23: Cleaned up syntax highlighting for \begin{code} and
+ " \end{code}, added some clarification to the attributions
+-" 2008 July 1: Removed % from guess list, as it totally breaks plain
+-" text markup guessing
++" 2008 July 1: Removed % from guess list, as it totally breaks plain
++" text markup guessing
++" 2009 April 29: Fixed highlighting breakage in TeX mode,
++" thanks to Kalman Noel
+ "
+
+
+@@ -73,14 +75,14 @@
+ " - \begin{env} (for env != code)
+ " - \part, \chapter, \section, \subsection, \subsubsection, etc
+ if b:lhs_markup == "unknown"
+- if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub \)*section\|\\chapter|\\part','W') != 0
++ if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0
+ let b:lhs_markup = "tex"
+ else
+ let b:lhs_markup = "plain"
+ endif
+ endif
+
+-" If user wants us to highlight TeX syntax or guess thinks it's TeX, read it.
++" If user wants us to highlight TeX syntax or guess thinks it's TeX, read it.
+ if b:lhs_markup == "tex"
+ if version < 600
+ source <sfile>:p:h/tex.vim
+@@ -91,6 +93,9 @@
+ " Tex.vim removes "_" from 'iskeyword', but we need it for Haskell.
+ setlocal isk+=_
+ endif
++ syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract
++else
++ syntax cluster lhsTeXContainer contains=.*
+ endif
+
+ " Literate Haskell is Haskell in between text, so at least read Haskell
+@@ -101,8 +106,8 @@
+ syntax include @haskellTop syntax/haskell.vim
+ endif
+
+-syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack
+-syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,@beginCode
++syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer
++syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,@beginCode containedin=@lhsTeXContainer
+
+ syntax match lhsBirdTrack "^>" contained
+
+diff -u -r --new-file runtime/syntax.orig/lilo.vim runtime/syntax/lilo.vim
+--- runtime/syntax.orig/lilo.vim 2004-07-20 12:53:05.000000000 -0500
++++ runtime/syntax/lilo.vim 2010-02-11 06:45:15.000000000 -0600
+@@ -1,10 +1,8 @@
+ " Vim syntax file
+-" This is a GENERATED FILE. Please always refer to source file at the URI below.
+ " Language: lilo configuration (lilo.conf)
+-" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+-" Last Change: 2004-07-20
+-" URL: http://trific.ath.cx/Ftp/vim/syntax/lilo.vim
+-
++" Maintainer: Niels Horn <niels.horn@gmail.com>
++" Previous Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
++" Last Change: 2010-02-03
+
+ " Setup
+ if version >= 600
+@@ -64,7 +62,7 @@
+
+ " String
+ syn keyword liloOption menu-title nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
+-syn keyword liloKernelOpt append nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
++syn keyword liloKernelOpt append addappend nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
+ syn keyword liloImageOpt fallback literal nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
+
+ " Hex number
+diff -u -r --new-file runtime/syntax.orig/lisp.vim runtime/syntax/lisp.vim
+--- runtime/syntax.orig/lisp.vim 2007-11-14 10:37:14.000000000 -0600
++++ runtime/syntax/lisp.vim 2009-03-22 14:39:57.000000000 -0500
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language: Lisp
+ " Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
+-" Last Change: Oct 19, 2007
+-" Version: 20
++" Last Change: Mar 05, 2009
++" Version: 21
+ " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+ "
+ " Thanks to F Xavier Noria for a list of 978 Common Lisp symbols
+@@ -534,7 +534,8 @@
+
+ " ---------------------------------------------------------------------
+ " Numbers: supporting integers and floating point numbers {{{1
+-syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\(e[-+]\=\d\+\)\="
++syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\="
++syn match lispNumber "-\=\(\d\+/\d\+\)"
+
+ syn match lispSpecial "\*\w[a-z_0-9-]*\*"
+ syn match lispSpecial !#|[^()'`,"; \t]\+|#!
+diff -u -r --new-file runtime/syntax.orig/logtalk.vim runtime/syntax/logtalk.vim
+--- runtime/syntax.orig/logtalk.vim 2008-07-06 13:09:17.000000000 -0500
++++ runtime/syntax/logtalk.vim 2008-11-06 10:05:14.000000000 -0600
+@@ -2,7 +2,7 @@
+ "
+ " Language: Logtalk
+ " Maintainer: Paulo Moura <pmoura@logtalk.org>
+-" Last Change: June 16, 2008
++" Last Change: Oct 31, 2008
+
+
+ " Quit when a syntax file was already loaded:
+@@ -51,9 +51,9 @@
+
+ " Logtalk opening entity directives
+
+-syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel
+-syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
+-syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
++syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment
++syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
++syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
+
+
+ " Logtalk closing entity directives
+diff -u -r --new-file runtime/syntax.orig/mail.vim runtime/syntax/mail.vim
+--- runtime/syntax.orig/mail.vim 2008-01-18 06:28:18.000000000 -0600
++++ runtime/syntax/mail.vim 2008-11-09 07:12:28.000000000 -0600
+@@ -2,7 +2,7 @@
+ " Language: Mail file
+ " Previous Maintainer: Felix von Leitner <leitner@math.fu-berlin.de>
+ " Maintainer: Gautam Iyer <gi1242@users.sourceforge.net>
+-" Last Change: Thu 17 Jan 2008 11:25:44 AM PST
++" Last Change: Thu 06 Nov 2008 10:10:55 PM PST
+
+ " Quit when a syntax file was already loaded
+ if exists("b:current_syntax")
+@@ -24,28 +24,35 @@
+ " emails
+ " According to RFC 2822 any printable ASCII character can appear in a field
+ " name, except ':'.
+-syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1
++syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 fold
+ syn match mailHeaderKey contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$"
++
++" Nothing else depends on case.
++syn case ignore
++
++" Headers in properly quoted (with "> " or ">") emails are matched
++syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 fold
++
+ " Usenet headers
+ syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$"
+
+-syn case ignore
+-" Nothing else depends on case. Headers in properly quoted (with "> " or ">")
+-" emails are matched
+-syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1
+
+ syn region mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$"
+-syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$"
++syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" fold
+ syn match mailHeaderKey contained contains=@NoSpell "\v(^(\> ?)*)@<=date:"
+-syn match mailSubject contained "\v^subject:.*$"
++syn match mailSubject contained "\v^subject:.*$" fold
+ syn match mailSubject contained contains=@NoSpell "\v(^(\> ?)+)@<=subject:.*$"
+
+ " Anything in the header between < and > is an email address
+ syn match mailHeaderEmail contained contains=@NoSpell "<.\{-}>"
+
+ " Mail Signatures. (Begin with "-- ", end with change in quote level)
+-syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1
+-syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1
++syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1 fold
++syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1 fold
++
++" Treat verbatim Text special.
++syn region mailVerbatim contains=@NoSpell keepend start="^#v+$" end="^#v-$" fold
++syn region mailVerbatim contains=@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)#v+$" end="\z1#v-$" fold
+
+ " URLs start with a known protocol or www,web,w3.
+ syn match mailURL contains=@NoSpell `\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^' <>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^' <>"]+)[a-z0-9/]`
+@@ -59,13 +66,13 @@
+ syn match mailQuoteExp5 contained "\v^(\> ?){5}"
+ syn match mailQuoteExp6 contained "\v^(\> ?){6}"
+
+-" Even and odd quoted lines. order is imporant here!
+-syn match mailQuoted1 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\([a-z]\+>\|[]|}>]\).*$"
+-syn match mailQuoted2 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}.*$"
+-syn match mailQuoted3 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}.*$"
+-syn match mailQuoted4 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}.*$"
+-syn match mailQuoted5 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}.*$"
+-syn match mailQuoted6 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{6}.*$"
++" Even and odd quoted lines. Order is important here!
++syn region mailQuoted6 keepend contains=mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
++syn region mailQuoted5 keepend contains=mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
++syn region mailQuoted4 keepend contains=mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
++syn region mailQuoted3 keepend contains=mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
++syn region mailQuoted2 keepend contains=mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{1}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
++syn region mailQuoted1 keepend contains=mailQuoted2,mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z([a-z]\+>\|[]|}>]\)" end="^\z1\@!" fold
+
+ " Need to sync on the header. Assume we can do that within 100 lines
+ if exists("mail_minlines")
+@@ -75,6 +82,7 @@
+ endif
+
+ " Define the default highlighting.
++hi def link mailVerbatim Special
+ hi def link mailHeader Statement
+ hi def link mailHeaderKey Type
+ hi def link mailSignature PreProc
+diff -u -r --new-file runtime/syntax.orig/man.vim runtime/syntax/man.vim
+--- runtime/syntax.orig/man.vim 2007-12-30 07:19:15.000000000 -0600
++++ runtime/syntax/man.vim 2008-09-18 13:56:38.000000000 -0500
+@@ -1,9 +1,9 @@
+ " Vim syntax file
+ " Language: Man page
+-" Maintainer: Nam SungHyun <namsh@kldp.org>
++" Maintainer: SungHyun Nam <goweol@gmail.com>
+ " Previous Maintainer: Gautam H. Mudunuri <gmudunur@informatica.com>
+ " Version Info:
+-" Last Change: 2007 Dec 30
++" Last Change: 2008 Sep 17
+
+ " Additional highlighting by Johannes Tanzler <johannes.tanzler@aon.at>:
+ " * manSubHeading
+diff -u -r --new-file runtime/syntax.orig/matlab.vim runtime/syntax/matlab.vim
+--- runtime/syntax.orig/matlab.vim 2004-06-07 09:32:35.000000000 -0500
++++ runtime/syntax/matlab.vim 2010-01-16 07:33:01.000000000 -0600
+@@ -1,8 +1,10 @@
+ " Vim syntax file
+ " Language: Matlab
+-" Maintainer: Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
++" Maintainer: Maurizio Tranchero - maurizio(.)tranchero(@)gmail(.)com
++" Credits: Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
+ " Original author: Mario Eusebio
+-" Last Change: 30 May 2003
++" Last Change: Wed Jan 13 11:12:34 CET 2010
++" - 'global' and 'persistent' keyword are now recognized
+
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -16,8 +18,12 @@
+ syn keyword matlabLabel case switch
+ syn keyword matlabConditional else elseif end if otherwise
+ syn keyword matlabRepeat do for while
++" MT_ADDON - added exception-specific keywords
++syn keyword matlabExceptions try catch
++syn keyword matlabOO classdef properties events methods
+
+ syn keyword matlabTodo contained TODO
++syn keyword matlabScope global persistent
+
+ " If you do not want these operators lit, uncommment them and the "hi link" below
+ syn match matlabArithmeticOperator "[-+]"
+@@ -31,7 +37,8 @@
+ "syn match matlabIdentifier "\<\a\w*\>"
+
+ " String
+-syn region matlabString start=+'+ end=+'+ oneline
++" MT_ADDON - added 'skip' in order to deal with 'tic' escaping sequence
++syn region matlabString start=+'+ end=+'+ oneline skip=+''+
+
+ " If you don't like tabs
+ syn match matlabTab "\t"
+@@ -51,6 +58,9 @@
+ syn match matlabSemicolon ";"
+
+ syn match matlabComment "%.*$" contains=matlabTodo,matlabTab
++" MT_ADDON - correctly highlights words after '...' as comments
++syn match matlabComment "\.\.\..*$" contains=matlabTodo,matlabTab
++syn region matlabMultilineComment start=+%{+ end=+%}+ contains=matlabTodo,matlabTab
+
+ syn keyword matlabOperator break zeros default margin round ones rand
+ syn keyword matlabOperator ceil floor size clear zeros eye mean std cov
+@@ -75,10 +85,11 @@
+ endif
+
+ HiLink matlabTransposeOperator matlabOperator
+- HiLink matlabOperator Operator
+- HiLink matlabLineContinuation Special
++ HiLink matlabOperator Operator
++ HiLink matlabLineContinuation Special
+ HiLink matlabLabel Label
+ HiLink matlabConditional Conditional
++ HiLink matlabExceptions Conditional
+ HiLink matlabRepeat Repeat
+ HiLink matlabTodo Todo
+ HiLink matlabString String
+@@ -86,12 +97,15 @@
+ HiLink matlabTransposeOther Identifier
+ HiLink matlabNumber Number
+ HiLink matlabFloat Float
+- HiLink matlabFunction Function
++ HiLink matlabFunction Function
+ HiLink matlabError Error
+- HiLink matlabImplicit matlabStatement
++ HiLink matlabImplicit matlabStatement
+ HiLink matlabStatement Statement
++ HiLink matlabOO Statement
+ HiLink matlabSemicolon SpecialChar
+ HiLink matlabComment Comment
++ HiLink matlabMultilineComment Comment
++ HiLink matlabScope Type
+
+ HiLink matlabArithmeticOperator matlabOperator
+ HiLink matlabRelationalOperator matlabOperator
+diff -u -r --new-file runtime/syntax.orig/maxima.vim runtime/syntax/maxima.vim
+--- runtime/syntax.orig/maxima.vim 2006-04-10 03:17:50.000000000 -0500
++++ runtime/syntax/maxima.vim 2009-11-28 06:36:52.000000000 -0600
+@@ -227,7 +227,7 @@
+ " Comments:
+ " maxima supports /* ... */ (like C)
+ syn keyword maximaTodo contained TODO Todo DEBUG
+-syn region maximaCommentBlock start="/\*" end="\*/" contains=maximaString,maximaTodo
++syn region maximaCommentBlock start="/\*" end="\*/" contains=maximaString,maximaTodo,maximaCommentBlock
+
+ " synchronizing
+ syn sync match maximaSyncComment grouphere maximaCommentBlock "/*"
+diff -u -r --new-file runtime/syntax.orig/mysql.vim runtime/syntax/mysql.vim
+--- runtime/syntax.orig/mysql.vim 2007-12-19 22:09:52.000000000 -0600
++++ runtime/syntax/mysql.vim 2009-07-02 13:05:29.000000000 -0500
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: mysql
+ " Maintainer: Kenneth J. Pronovici <pronovic@ieee.org>
+-" Last Change: $LastChangedDate: 2007-12-19 10:59:39 -0600 (Wed, 19 Dec 2007) $
++" Last Change: $LastChangedDate: 2009-06-29 23:08:37 -0500 (Mon, 29 Jun 2009) $
+ " Filenames: *.mysql
+ " URL: ftp://cedar-solutions.com/software/mysql.vim
+ " Note: The definitions below are taken from the mysql user manual as of April 2002, for version 3.23
+@@ -36,7 +36,7 @@
+ syn keyword mysqlKeyword natural no
+ syn keyword mysqlKeyword on optimize option optionally order outer outfile
+ syn keyword mysqlKeyword pack_keys partial password primary privileges procedure process processlist
+-syn keyword mysqlKeyword read references reload rename replace restrict returns revoke row rows
++syn keyword mysqlKeyword read references reload rename replace restrict returns revoke right row rows
+ syn keyword mysqlKeyword second select show shutdown soname sql_big_result sql_big_selects sql_big_tables sql_log_off
+ syn keyword mysqlKeyword sql_log_update sql_low_priority_updates sql_select_limit sql_small_result sql_warnings starting
+ syn keyword mysqlKeyword status straight_join string
+@@ -57,7 +57,7 @@
+ " Numbers and hexidecimal values
+ syn match mysqlNumber "-\=\<[0-9]*\>"
+ syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*\>"
+-syn match mysqlNumber "-\=\<[0-9]*e[+-]\=[0-9]*\>"
++syn match mysqlNumber "-\=\<[0-9][0-9]*e[+-]\=[0-9]*\>"
+ syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>"
+ syn match mysqlNumber "\<0x[abcdefABCDEF0-9]*\>"
+
+diff -u -r --new-file runtime/syntax.orig/netrc.vim runtime/syntax/netrc.vim
+--- runtime/syntax.orig/netrc.vim 2006-04-21 07:39:13.000000000 -0500
++++ runtime/syntax/netrc.vim 2010-01-12 14:39:39.000000000 -0600
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: netrc(5) configuration file
+ " Maintainer: Nikolai Weibull <now@bitwi.se>
+-" Latest Revision: 2006-04-19
++" Latest Revision: 2010-01-03
+
+ if exists("b:current_syntax")
+ finish
+@@ -11,12 +11,13 @@
+ set cpo&vim
+
+ syn keyword netrcKeyword machine nextgroup=netrcMachine skipwhite skipnl
+-syn keyword netrcKeyword login nextgroup=netrcLogin,netrcSpecial
+- \ skipwhite skipnl
++syn keyword netrcKeyword account
++ \ login
++ \ nextgroup=netrcLogin,netrcSpecial skipwhite skipnl
+ syn keyword netrcKeyword password nextgroup=netrcPassword skipwhite skipnl
+ syn keyword netrcKeyword default
+-syn keyword netrcKeyword macdef nextgroup=netrcInit,netrcMacroName
+- \ skipwhite skipnl
++syn keyword netrcKeyword macdef
++ \ nextgroup=netrcInit,netrcMacroName skipwhite skipnl
+ syn region netrcMacro contained start='.' end='^$'
+
+ syn match netrcMachine contained display '\S\+'
+@@ -25,14 +26,14 @@
+ syn match netrcLogin contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+ syn match netrcPassword contained display '\S\+'
+ syn match netrcPassword contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+-syn match netrcMacroName contained display '\S\+' nextgroup=netrcMacro
+- \ skipwhite skipnl
++syn match netrcMacroName contained display '\S\+'
++ \ nextgroup=netrcMacro skipwhite skipnl
+ syn match netrcMacroName contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+- \ nextgroup=netrcMacro skipwhite skipnl
++ \ nextgroup=netrcMacro skipwhite skipnl
+
+ syn keyword netrcSpecial contained anonymous
+-syn match netrcInit contained '\<init$' nextgroup=netrcMacro
+- \ skipwhite skipnl
++syn match netrcInit contained '\<init$'
++ \ nextgroup=netrcMacro skipwhite skipnl
+
+ syn sync fromstart
+
+diff -u -r --new-file runtime/syntax.orig/netrw.vim runtime/syntax/netrw.vim
+--- runtime/syntax.orig/netrw.vim 2008-03-28 13:35:41.000000000 -0500
++++ runtime/syntax/netrw.vim 2010-01-12 14:33:53.000000000 -0600
+@@ -1,7 +1,7 @@
+ " Language : Netrw Remote-Directory Listing Syntax
+ " Maintainer : Charles E. Campbell, Jr.
+-" Last change: Feb 06, 2008
+-" Version : 12
++" Last change: Jan 14, 2009
++" Version : 16
+ " ---------------------------------------------------------------------
+
+ " Syntax Clearing: {{{1
+@@ -16,85 +16,91 @@
+ syn cluster NetrwGroup contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion,netrwCopyTgt
+ syn cluster NetrwTreeGroup contains=netrwDir,netrwSymLink,netrwExe
+
+-syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify
+-syn match netrwDir "\.\{1,2}/" contains=netrwClassify
+-syn match netrwDir "\%(\S\+ \)*\S\+/" contains=netrwClassify
+-syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" contains=netrwDateSep skipwhite nextgroup=netrwTime
+-syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify
+-syn match netrwExe "\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify
+-syn match netrwTreeBar "^\%(| \)*" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup
+-syn match netrwTreeBarSpace " " contained
+-
+-syn match netrwClassify "[*=|@/]\ze\%(\s\{2,}\|$\)" contained
+-syn match netrwDateSep "/" contained
+-syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep
++syn match netrwPlain "\(\S\+ \)*\S\+" contains=@NoSpell
++syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell
++syn match netrwDir "\.\{1,2}/" contains=netrwClassify,@NoSpell
++syn match netrwDir "\%(\S\+ \)*\S\+/" contains=netrwClassify,@NoSpell
++syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" skipwhite contains=netrwDateSep,@NoSpell nextgroup=netrwTime
++syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell
++syn match netrwExe "\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell
++syn match netrwTreeBar "^\%([-+|] \)\+" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup
++syn match netrwTreeBarSpace " " contained
++
++syn match netrwClassify "[*=|@/]\ze\%(\s\{2,}\|$\)" contained
++syn match netrwDateSep "/" contained
++syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep
+ syn match netrwTimeSep ":"
+
+-syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup
+-syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite nextgroup=netrwHidePat
++syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup,@NoSpell
++syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite contains=@NoSpell nextgroup=netrwHidePat
+ syn match netrwSlash "/" contained
+-syn match netrwHidePat "[^,]\+" contained skipwhite nextgroup=netrwHideSep
+-syn match netrwHideSep "," contained transparent skipwhite nextgroup=netrwHidePat
+-syn match netrwSortBy "Sorted by" contained transparent skipwhite nextgroup=netrwList
+-syn match netrwSortSeq "Sort sequence:" contained transparent skipwhite nextgroup=netrwList
+-syn match netrwCopyTgt "Copy/Move Tgt:" contained transparent skipwhite nextgroup=netrwList
+-syn match netrwList ".*$" contained contains=netrwComma
++syn match netrwHidePat "[^,]\+" contained skipwhite contains=@NoSpell nextgroup=netrwHideSep
++syn match netrwHideSep "," contained skipwhite nextgroup=netrwHidePat
++syn match netrwSortBy "Sorted by" contained transparent skipwhite nextgroup=netrwList
++syn match netrwSortSeq "Sort sequence:" contained transparent skipwhite nextgroup=netrwList
++syn match netrwCopyTgt "Copy/Move Tgt:" contained transparent skipwhite nextgroup=netrwList
++syn match netrwList ".*$" contained contains=netrwComma,@NoSpell
+ syn match netrwComma "," contained
+-syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd keepend contained
+-syn match netrwHelpCmd "\S\ze:" contained skipwhite nextgroup=netrwCmdSep
++syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd,@NoSpell keepend contained
++syn match netrwHelpCmd "\S\ze:" contained skipwhite contains=@NoSpell nextgroup=netrwCmdSep
+ syn match netrwCmdSep ":" contained nextgroup=netrwCmdNote
+-syn match netrwCmdNote ".\{-}\ze " contained
+-syn match netrwVersion "(netrw.*)" contained
++syn match netrwCmdNote ".\{-}\ze " contained contains=@NoSpell
++syn match netrwVersion "(netrw.*)" contained contains=@NoSpell
+
+ " -----------------------------
+ " Special filetype highlighting {{{1
+ " -----------------------------
+ if exists("g:netrw_special_syntax") && netrw_special_syntax
+- syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar
+- syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar
+- syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar
+- syn match netrwHdr "\(\S\+ \)*\S\+\.h\>" contains=netrwTreeBar
+- syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar
+- syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar
+- syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar
+- syn match netrwTags "\<tags\>" contains=netrwTreeBar
+- syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar
+- syn match netrwTilde "\(\S\+ \)*\S\+\~\>" contains=netrwTreeBar
+- syn match netrwTmp "\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar
++ syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell
++ syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell
++ if has("unix")
++ syn match netrwCoreDump "\<core\%(\.\d\+\)\=\>" contains=netrwTreeBar,@NoSpell
++ endif
++ syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell
++ syn match netrwHdr "\(\S\+ \)*\S\+\.h\>" contains=netrwTreeBar,@NoSpell
++ syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell
++ syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell
++ syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell
++ syn match netrwTags "\<tags\>" contains=netrwTreeBar,@NoSpell
++ syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell
++ syn match netrwTilde "\(\S\+ \)*\S\+\~\>" contains=netrwTreeBar,@NoSpell
++ syn match netrwTmp "\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell
+ endif
+
+ " ---------------------------------------------------------------------
+ " Highlighting Links: {{{1
+ if !exists("did_drchip_netrwlist_syntax")
+ let did_drchip_netrwlist_syntax= 1
+- hi link netrwClassify Function
+- hi link netrwCmdSep Delimiter
+- hi link netrwComment Comment
+- hi link netrwDir Directory
+- hi link netrwHelpCmd Function
+- hi link netrwHidePat Statement
+- hi link netrwList Statement
+- hi link netrwVersion Identifier
+- hi link netrwSymLink Question
+- hi link netrwExe PreProc
+- hi link netrwDateSep Delimiter
+-
+- hi link netrwTreeBar Special
+- hi link netrwTimeSep netrwDateSep
+- hi link netrwComma netrwComment
+- hi link netrwHide netrwComment
+- hi link netrwMarkFile Identifier
++ hi default link netrwClassify Function
++ hi default link netrwCmdSep Delimiter
++ hi default link netrwComment Comment
++ hi default link netrwDir Directory
++ hi default link netrwHelpCmd Function
++ hi default link netrwHidePat Statement
++ hi default link netrwHideSep netrwComment
++ hi default link netrwList Statement
++ hi default link netrwVersion Identifier
++ hi default link netrwSymLink Question
++ hi default link netrwExe PreProc
++ hi default link netrwDateSep Delimiter
++
++ hi default link netrwTreeBar Special
++ hi default link netrwTimeSep netrwDateSep
++ hi default link netrwComma netrwComment
++ hi default link netrwHide netrwComment
++ hi default link netrwMarkFile Identifier
+
+ " special syntax highlighting (see :he g:netrw_special_syntax)
+- hi link netrwBak NonText
+- hi link netrwCompress Folded
+- hi link netrwData DiffChange
+- hi link netrwLib DiffChange
+- hi link netrwMakefile DiffChange
+- hi link netrwObj Folded
+- hi link netrwTilde Folded
+- hi link netrwTmp Folded
+- hi link netrwTags Folded
++ hi default link netrwBak NonText
++ hi default link netrwCompress Folded
++ hi default link netrwCoreDump WarningMsg
++ hi default link netrwData DiffChange
++ hi default link netrwLib DiffChange
++ hi default link netrwMakefile DiffChange
++ hi default link netrwObj Folded
++ hi default link netrwTilde Folded
++ hi default link netrwTmp Folded
++ hi default link netrwTags Folded
+ endif
+
+ " Current Syntax: {{{1
+diff -u -r --new-file runtime/syntax.orig/papp.vim runtime/syntax/papp.vim
+--- runtime/syntax.orig/papp.vim 2004-06-07 09:32:35.000000000 -0500
++++ runtime/syntax/papp.vim 2009-11-28 06:31:38.000000000 -0600
+@@ -2,7 +2,7 @@
+ "
+ " Language: papp
+ " Maintainer: Marc Lehmann <pcg@goof.com>
+-" Last Change: 2003 May 11
++" Last Change: 2009 Nov 11
+ " Filenames: *.papp *.pxml *.pxsl
+ " URL: http://papp.plan9.de/
+
+@@ -37,6 +37,7 @@
+ syn include @PAppHtml syntax/html.vim
+ endif
+ unlet b:current_syntax
++ syntax spell default " added by Bram
+ endif
+
+ if version < 600
+diff -u -r --new-file runtime/syntax.orig/po.vim runtime/syntax/po.vim
+--- runtime/syntax.orig/po.vim 2008-06-15 06:29:12.000000000 -0500
++++ runtime/syntax/po.vim 2008-09-18 13:56:38.000000000 -0500
+@@ -1,10 +1,10 @@
+ " Vim syntax file
+ " Language: po (gettext)
+ " Maintainer: Dwayne Bailey <dwayne@translate.org.za>
+-" Last Change: 2008 Jan 08
++" Last Change: 2008 Sep 17
+ " Contributors: Dwayne Bailey (Most advanced syntax highlighting)
+ " Leonardo Fontenelle (Spell checking)
+-" Nam SungHyun <namsh@kldp.org> (Original maintainer)
++" SungHyun Nam <goweol@gmail.com> (Original maintainer)
+
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+diff -u -r --new-file runtime/syntax.orig/prolog.vim runtime/syntax/prolog.vim
+--- runtime/syntax.orig/prolog.vim 2008-05-04 14:21:09.000000000 -0500
++++ runtime/syntax/prolog.vim 2009-12-16 14:38:21.000000000 -0600
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language: PROLOG
+ " Maintainers: Thomas Koehler <jean-luc@picard.franken.de>
+-" Last Change: 2008 April 5
+-" URL: http://gott-gehabt/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim
++" Last Change: 2009 Dec 04
++" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim
+
+ " There are two sets of highlighting in here:
+ " If the "prolog_highlighting_clean" variable exists, it is rather sparse.
+@@ -63,7 +63,7 @@
+ syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|="
+ syn match prologAsIs "===\|\\===\|<=\|=>"
+
+- syn match prologNumber "\<[0123456789]*\>"
++ syn match prologNumber "\<[0123456789]*\>'\@!"
+ syn match prologCommentError "\*/"
+ syn match prologSpecialCharacter ";"
+ syn match prologSpecialCharacter "!"
+diff -u -r --new-file runtime/syntax.orig/pyrex.vim runtime/syntax/pyrex.vim
+--- runtime/syntax.orig/pyrex.vim 2004-06-07 09:32:36.000000000 -0500
++++ runtime/syntax/pyrex.vim 2009-11-28 06:31:38.000000000 -0600
+@@ -2,7 +2,7 @@
+ " Language: Pyrex
+ " Maintainer: Marco Barisione <marco.bari@people.it>
+ " URL: http://marcobari.altervista.org/pyrex_vim.html
+-" Last Change: 2004 May 16
++" Last Change: 2009 Nov 09
+
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -25,7 +25,7 @@
+ syn keyword pyrexType int long short float double char object void
+ syn keyword pyrexType signed unsigned
+ syn keyword pyrexStructure struct union enum
+-syn keyword pyrexPrecondit include cimport
++syn keyword pyrexInclude include cimport
+ syn keyword pyrexAccess public private property readonly extern
+ " If someome wants Python's built-ins highlighted probably he
+ " also wants Pyrex's built-ins highlighted
+@@ -35,9 +35,9 @@
+
+ " This deletes "from" from the keywords and re-adds it as a
+ " match with lower priority than pyrexForFrom
+-syn clear pythonPreCondit
+-syn keyword pythonPreCondit import
+-syn match pythonPreCondit "from"
++syn clear pythonInclude
++syn keyword pythonInclude import
++syn match pythonInclude "from"
+
+ " With "for[^:]*\zsfrom" VIM does not match "for" anymore, so
+ " I used the slower "\@<=" form
+@@ -54,7 +54,7 @@
+ HiLink pyrexStatement Statement
+ HiLink pyrexType Type
+ HiLink pyrexStructure Structure
+- HiLink pyrexPrecondit PreCondit
++ HiLink pyrexInclude PreCondit
+ HiLink pyrexAccess pyrexStatement
+ if exists("python_highlight_builtins") || exists("pyrex_highlight_builtins")
+ HiLink pyrexBuiltin Function
+diff -u -r --new-file runtime/syntax.orig/python.vim runtime/syntax/python.vim
+--- runtime/syntax.orig/python.vim 2006-10-15 16:04:19.000000000 -0500
++++ runtime/syntax/python.vim 2009-10-28 15:56:59.000000000 -0500
+@@ -1,143 +1,252 @@
+ " Vim syntax file
+ " Language: Python
+ " Maintainer: Neil Schemenauer <nas@python.ca>
+-" Updated: 2006-10-15
+-" Added Python 2.4 features 2006 May 4 (Dmitry Vasiliev)
++" Last Change: 2009-10-13
++" Credits: Zvezdan Petkovic <zpetkovic@acm.org>
++" Neil Schemenauer <nas@python.ca>
++" Dmitry Vasiliev
+ "
+-" Options to control Python syntax highlighting:
++" This version is a major rewrite by Zvezdan Petkovic.
+ "
+-" For highlighted numbers:
++" - introduced highlighting of doctests
++" - updated keywords, built-ins, and exceptions
++" - corrected regular expressions for
+ "
+-" let python_highlight_numbers = 1
++" * functions
++" * decorators
++" * strings
++" * escapes
++" * numbers
++" * space error
+ "
+-" For highlighted builtin functions:
++" - corrected synchronization
++" - more highlighting is ON by default, except
++" - space error highlighting is OFF by default
+ "
+-" let python_highlight_builtins = 1
++" Optional highlighting can be controlled using these variables.
+ "
+-" For highlighted standard exceptions:
++" let python_no_builtin_highlight = 1
++" let python_no_doctest_code_highlight = 1
++" let python_no_doctest_highlight = 1
++" let python_no_exception_highlight = 1
++" let python_no_number_highlight = 1
++" let python_space_error_highlight = 1
+ "
+-" let python_highlight_exceptions = 1
++" All the options above can be switched on together.
+ "
+-" Highlight erroneous whitespace:
+-"
+-" let python_highlight_space_errors = 1
+-"
+-" If you want all possible Python highlighting (the same as setting the
+-" preceding options):
+-"
+-" let python_highlight_all = 1
++" let python_highlight_all = 1
+ "
+
+-" For version 5.x: Clear all syntax items
+-" For version 6.x: Quit when a syntax file was already loaded
++" For version 5.x: Clear all syntax items.
++" For version 6.x: Quit when a syntax file was already loaded.
+ if version < 600
+ syntax clear
+ elseif exists("b:current_syntax")
+ finish
+ endif
+
+-
+-syn keyword pythonStatement break continue del
+-syn keyword pythonStatement except exec finally
+-syn keyword pythonStatement pass print raise
+-syn keyword pythonStatement return try with
+-syn keyword pythonStatement global assert
+-syn keyword pythonStatement lambda yield
+-syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite
+-syn match pythonFunction "[a-zA-Z_][a-zA-Z0-9_]*" contained
++" Keep Python keywords in alphabetical order inside groups for easy
++" comparison with the table in the 'Python Language Reference'
++" http://docs.python.org/reference/lexical_analysis.html#keywords.
++" Groups are in the order presented in NAMING CONVENTIONS in syntax.txt.
++" Exceptions come last at the end of each group (class and def below).
++"
++" Keywords 'with' and 'as' are new in Python 2.6
++" (use 'from __future__ import with_statement' in Python 2.5).
++"
++" Some compromises had to be made to support both Python 3.0 and 2.6.
++" We include Python 3.0 features, but when a definition is duplicated,
++" the last definition takes precedence.
++"
++" - 'False', 'None', and 'True' are keywords in Python 3.0 but they are
++" built-ins in 2.6 and will be highlighted as built-ins below.
++" - 'exec' is a built-in in Python 3.0 and will be highlighted as
++" built-in below.
++" - 'nonlocal' is a keyword in Python 3.0 and will be highlighted.
++" - 'print' is a built-in in Python 3.0 and will be highlighted as
++" built-in below (use 'from __future__ import print_function' in 2.6)
++"
++syn keyword pythonStatement False, None, True
++syn keyword pythonStatement as assert break continue del exec global
++syn keyword pythonStatement lambda nonlocal pass print return with yield
++syn keyword pythonStatement class def nextgroup=pythonFunction skipwhite
++syn keyword pythonConditional elif else if
+ syn keyword pythonRepeat for while
+-syn keyword pythonConditional if elif else
+ syn keyword pythonOperator and in is not or
+-" AS will be a keyword in Python 3
+-syn keyword pythonPreCondit import from as
+-syn match pythonComment "#.*$" contains=pythonTodo,@Spell
+-syn keyword pythonTodo TODO FIXME XXX contained
++syn keyword pythonException except finally raise try
++syn keyword pythonInclude from import
+
+ " Decorators (new in Python 2.4)
+ syn match pythonDecorator "@" display nextgroup=pythonFunction skipwhite
++" The zero-length non-grouping match before the function name is
++" extremely important in pythonFunction. Without it, everything is
++" interpreted as a function inside the contained environment of
++" doctests.
++" A dot must be allowed because of @MyClass.myfunc decorators.
++syn match pythonFunction
++ \ "\%(\%(def\s\|class\s\|@\)\s*\)\@<=\h\%(\w\|\.\)*" contained
++
++syn match pythonComment "#.*$" contains=pythonTodo,@Spell
++syn keyword pythonTodo FIXME NOTE NOTES TODO XXX contained
+
+-" strings
+-syn region pythonString matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape,@Spell
+-syn region pythonString matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape,@Spell
+-syn region pythonString matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=pythonEscape,@Spell
+-syn region pythonString matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=pythonEscape,@Spell
+-syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+ contains=@Spell
+-syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+ contains=@Spell
+-syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+ contains=@Spell
+-syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+ contains=@Spell
+-syn match pythonEscape +\\[abfnrtv'"\\]+ contained
+-syn match pythonEscape "\\\o\{1,3}" contained
+-syn match pythonEscape "\\x\x\{2}" contained
+-syn match pythonEscape "\(\\u\x\{4}\|\\U\x\{8}\)" contained
+-syn match pythonEscape "\\$"
++" Triple-quoted strings can contain doctests.
++syn region pythonString
++ \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
++ \ contains=pythonEscape,@Spell
++syn region pythonString
++ \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
++ \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell
++syn region pythonRawString
++ \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
++ \ contains=@Spell
++syn region pythonRawString
++ \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
++ \ contains=pythonSpaceError,pythonDoctest,@Spell
++
++syn match pythonEscape +\\[abfnrtv'"\\]+ contained
++syn match pythonEscape "\\\o\{1,3}" contained
++syn match pythonEscape "\\x\x\{2}" contained
++syn match pythonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained
++" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
++syn match pythonEscape "\\N{\a\+\%(\s\a\+\)*}" contained
++syn match pythonEscape "\\$"
+
+ if exists("python_highlight_all")
+- let python_highlight_numbers = 1
+- let python_highlight_builtins = 1
+- let python_highlight_exceptions = 1
+- let python_highlight_space_errors = 1
++ if exists("python_no_builtin_highlight")
++ unlet python_no_builtin_highlight
++ endif
++ if exists("python_no_doctest_code_highlight")
++ unlet python_no_doctest_code_highlight
++ endif
++ if exists("python_no_doctest_highlight")
++ unlet python_no_doctest_highlight
++ endif
++ if exists("python_no_exception_highlight")
++ unlet python_no_exception_highlight
++ endif
++ if exists("python_no_number_highlight")
++ unlet python_no_number_highlight
++ endif
++ let python_space_error_highlight = 1
+ endif
+
+-if exists("python_highlight_numbers")
++" It is very important to understand all details before changing the
++" regular expressions below or their order.
++" The word boundaries are *not* the floating-point number boundaries
++" because of a possible leading or trailing decimal point.
++" The expressions below ensure that all valid number literals are
++" highlighted, and invalid number literals are not. For example,
++"
++" - a decimal point in '4.' at the end of a line is highlighted,
++" - a second dot in 1.0.0 is not highlighted,
++" - 08 is not highlighted,
++" - 08e0 or 08j are highlighted,
++"
++" and so on, as specified in the 'Python Language Reference'.
++" http://docs.python.org/reference/lexical_analysis.html#numeric-literals
++if !exists("python_no_number_highlight")
+ " numbers (including longs and complex)
+- syn match pythonNumber "\<0x\x\+[Ll]\=\>"
+- syn match pythonNumber "\<\d\+[LljJ]\=\>"
+- syn match pythonNumber "\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>"
+- syn match pythonNumber "\<\d\+\.\([eE][+-]\=\d\+\)\=[jJ]\=\>"
+- syn match pythonNumber "\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>"
+-endif
+-
+-if exists("python_highlight_builtins")
+- " builtin functions, types and objects, not really part of the syntax
+- syn keyword pythonBuiltin True False bool enumerate set frozenset help
+- syn keyword pythonBuiltin reversed sorted sum
+- syn keyword pythonBuiltin Ellipsis None NotImplemented __import__ abs
+- syn keyword pythonBuiltin apply buffer callable chr classmethod cmp
+- syn keyword pythonBuiltin coerce compile complex delattr dict dir divmod
+- syn keyword pythonBuiltin eval execfile file filter float getattr globals
+- syn keyword pythonBuiltin hasattr hash hex id input int intern isinstance
+- syn keyword pythonBuiltin issubclass iter len list locals long map max
+- syn keyword pythonBuiltin min object oct open ord pow property range
+- syn keyword pythonBuiltin raw_input reduce reload repr round setattr
+- syn keyword pythonBuiltin slice staticmethod str super tuple type unichr
+- syn keyword pythonBuiltin unicode vars xrange zip
+-endif
+-
+-if exists("python_highlight_exceptions")
+- " builtin exceptions and warnings
+- syn keyword pythonException ArithmeticError AssertionError AttributeError
+- syn keyword pythonException DeprecationWarning EOFError EnvironmentError
+- syn keyword pythonException Exception FloatingPointError IOError
+- syn keyword pythonException ImportError IndentationError IndexError
+- syn keyword pythonException KeyError KeyboardInterrupt LookupError
+- syn keyword pythonException MemoryError NameError NotImplementedError
+- syn keyword pythonException OSError OverflowError OverflowWarning
+- syn keyword pythonException ReferenceError RuntimeError RuntimeWarning
+- syn keyword pythonException StandardError StopIteration SyntaxError
+- syn keyword pythonException SyntaxWarning SystemError SystemExit TabError
+- syn keyword pythonException TypeError UnboundLocalError UnicodeError
+- syn keyword pythonException UnicodeEncodeError UnicodeDecodeError
+- syn keyword pythonException UnicodeTranslateError
+- syn keyword pythonException UserWarning ValueError Warning WindowsError
+- syn keyword pythonException ZeroDivisionError
++ syn match pythonNumber "\<0[oO]\=\o\+[Ll]\=\>"
++ syn match pythonNumber "\<0[xX]\x\+[Ll]\=\>"
++ syn match pythonNumber "\<0[bB][01]\+[Ll]\=\>"
++ syn match pythonNumber "\<\%([1-9]\d*\|0\)[Ll]\=\>"
++ syn match pythonNumber "\<\d\+[jJ]\>"
++ syn match pythonNumber "\<\d\+[eE][+-]\=\d\+[jJ]\=\>"
++ syn match pythonNumber
++ \ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@="
++ syn match pythonNumber
++ \ "\%(^\|\W\)\@<=\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>"
++endif
++
++" Group the built-ins in the order in the 'Python Library Reference' for
++" easier comparison.
++" http://docs.python.org/library/constants.html
++" http://docs.python.org/library/functions.html
++" http://docs.python.org/library/functions.html#non-essential-built-in-functions
++" Python built-in functions are in alphabetical order.
++if !exists("python_no_builtin_highlight")
++ " built-in constants
++ " 'False', 'True', and 'None' are also reserved words in Python 3.0
++ syn keyword pythonBuiltin False True None
++ syn keyword pythonBuiltin NotImplemented Ellipsis __debug__
++ " built-in functions
++ syn keyword pythonBuiltin abs all any bin bool chr classmethod
++ syn keyword pythonBuiltin compile complex delattr dict dir divmod
++ syn keyword pythonBuiltin enumerate eval filter float format
++ syn keyword pythonBuiltin frozenset getattr globals hasattr hash
++ syn keyword pythonBuiltin help hex id input int isinstance
++ syn keyword pythonBuiltin issubclass iter len list locals map max
++ syn keyword pythonBuiltin min next object oct open ord pow print
++ syn keyword pythonBuiltin property range repr reversed round set
++ syn keyword pythonBuiltin setattr slice sorted staticmethod str
++ syn keyword pythonBuiltin sum super tuple type vars zip __import__
++ " Python 2.6 only
++ syn keyword pythonBuiltin basestring callable cmp execfile file
++ syn keyword pythonBuiltin long raw_input reduce reload unichr
++ syn keyword pythonBuiltin unicode xrange
++ " Python 3.0 only
++ syn keyword pythonBuiltin ascii bytearray bytes exec memoryview
++ " non-essential built-in functions; Python 2.6 only
++ syn keyword pythonBuiltin apply buffer coerce intern
++endif
++
++" From the 'Python Library Reference' class hierarchy at the bottom.
++" http://docs.python.org/library/exceptions.html
++if !exists("python_no_exception_highlight")
++ " builtin base exceptions (only used as base classes for other exceptions)
++ syn keyword pythonExceptions BaseException Exception
++ syn keyword pythonExceptions ArithmeticError EnvironmentError
++ syn keyword pythonExceptions LookupError
++ " builtin base exception removed in Python 3.0
++ syn keyword pythonExceptions StandardError
++ " builtin exceptions (actually raised)
++ syn keyword pythonExceptions AssertionError AttributeError BufferError
++ syn keyword pythonExceptions EOFError FloatingPointError GeneratorExit
++ syn keyword pythonExceptions IOError ImportError IndentationError
++ syn keyword pythonExceptions IndexError KeyError KeyboardInterrupt
++ syn keyword pythonExceptions MemoryError NameError NotImplementedError
++ syn keyword pythonExceptions OSError OverflowError ReferenceError
++ syn keyword pythonExceptions RuntimeError StopIteration SyntaxError
++ syn keyword pythonExceptions SystemError SystemExit TabError TypeError
++ syn keyword pythonExceptions UnboundLocalError UnicodeError
++ syn keyword pythonExceptions UnicodeDecodeError UnicodeEncodeError
++ syn keyword pythonExceptions UnicodeTranslateError ValueError VMSError
++ syn keyword pythonExceptions WindowsError ZeroDivisionError
++ " builtin warnings
++ syn keyword pythonExceptions BytesWarning DeprecationWarning FutureWarning
++ syn keyword pythonExceptions ImportWarning PendingDeprecationWarning
++ syn keyword pythonExceptions RuntimeWarning SyntaxWarning UnicodeWarning
++ syn keyword pythonExceptions UserWarning Warning
+ endif
+
+-if exists("python_highlight_space_errors")
++if exists("python_space_error_highlight")
+ " trailing whitespace
+- syn match pythonSpaceError display excludenl "\S\s\+$"ms=s+1
++ syn match pythonSpaceError display excludenl "\s\+$"
+ " mixed tabs and spaces
+- syn match pythonSpaceError display " \+\t"
+- syn match pythonSpaceError display "\t\+ "
++ syn match pythonSpaceError display " \+\t"
++ syn match pythonSpaceError display "\t\+ "
+ endif
+
+-" This is fast but code inside triple quoted strings screws it up. It
+-" is impossible to fix because the only way to know if you are inside a
+-" triple quoted string is to start from the beginning of the file. If
+-" you have a fast machine you can try uncommenting the "sync minlines"
+-" and commenting out the rest.
+-syn sync match pythonSync grouphere NONE "):$"
+-syn sync maxlines=200
+-"syn sync minlines=2000
++" Do not spell doctests inside strings.
++" Notice that the end of a string, either ''', or """, will end the contained
++" doctest too. Thus, we do *not* need to have it as an end pattern.
++if !exists("python_no_doctest_highlight")
++ if !exists("python_no_doctest_code_higlight")
++ syn region pythonDoctest
++ \ start="^\s*>>>\s" end="^\s*$"
++ \ contained contains=ALLBUT,pythonDoctest,@Spell
++ syn region pythonDoctestValue
++ \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$"
++ \ contained
++ else
++ syn region pythonDoctest
++ \ start="^\s*>>>" end="^\s*$"
++ \ contained contains=@NoSpell
++ endif
++endif
++
++" Sync at the beginning of class, function, or method definition.
++syn sync match pythonSync grouphere NONE "^\s*\%(def\|class\)\s\+\h\w*\s*("
+
+ if version >= 508 || !exists("did_python_syn_inits")
+ if version <= 508
+@@ -147,35 +256,40 @@
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+- " The default methods for highlighting. Can be overridden later
++ " The default highlight links. Can be overridden later.
+ HiLink pythonStatement Statement
+- HiLink pythonFunction Function
+ HiLink pythonConditional Conditional
+ HiLink pythonRepeat Repeat
+- HiLink pythonString String
+- HiLink pythonRawString String
+- HiLink pythonEscape Special
+ HiLink pythonOperator Operator
+- HiLink pythonPreCondit PreCondit
++ HiLink pythonException Exception
++ HiLink pythonInclude Include
++ HiLink pythonDecorator Define
++ HiLink pythonFunction Function
+ HiLink pythonComment Comment
+ HiLink pythonTodo Todo
+- HiLink pythonDecorator Define
+- if exists("python_highlight_numbers")
+- HiLink pythonNumber Number
++ HiLink pythonString String
++ HiLink pythonRawString String
++ HiLink pythonEscape Special
++ if !exists("python_no_number_highlight")
++ HiLink pythonNumber Number
+ endif
+- if exists("python_highlight_builtins")
++ if !exists("python_no_builtin_highlight")
+ HiLink pythonBuiltin Function
+ endif
+- if exists("python_highlight_exceptions")
+- HiLink pythonException Exception
++ if !exists("python_no_exception_highlight")
++ HiLink pythonExceptions Structure
+ endif
+- if exists("python_highlight_space_errors")
++ if exists("python_space_error_highlight")
+ HiLink pythonSpaceError Error
+ endif
++ if !exists("python_no_doctest_highlight")
++ HiLink pythonDoctest Special
++ HiLink pythonDoctestValue Define
++ endif
+
+ delcommand HiLink
+ endif
+
+ let b:current_syntax = "python"
+
+-" vim: ts=8
++" vim:set sw=2 sts=2 ts=8 noet:
+diff -u -r --new-file runtime/syntax.orig/readline.vim runtime/syntax/readline.vim
+--- runtime/syntax.orig/readline.vim 2007-06-17 10:03:20.000000000 -0500
++++ runtime/syntax/readline.vim 2009-06-13 07:38:40.000000000 -0500
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: readline(3) configuration file
+ " Maintainer: Nikolai Weibull <now@bitwi.se>
+-" Latest Revision: 2007-06-17
++" Latest Revision: 2009-05-25
+ " readline_has_bash - if defined add support for bash specific
+ " settings/functions
+
+@@ -128,6 +128,7 @@
+ \ arrow-key-prefix vi-back-to-indent vi-bword
+ \ vi-bWord vi-eword vi-eWord vi-fword vi-fWord
+ \ vi-next-word
++ \ vi-movement-mode
+
+ if exists("readline_has_bash")
+ syn keyword readlineFunctions contained
+diff -u -r --new-file runtime/syntax.orig/remind.vim runtime/syntax/remind.vim
+--- runtime/syntax.orig/remind.vim 2006-05-12 12:55:59.000000000 -0500
++++ runtime/syntax/remind.vim 2009-10-08 16:18:08.000000000 -0500
+@@ -1,12 +1,13 @@
+ " Vim syntax file
+ " Language: Remind
+ " Maintainer: Davide Alberani <alberanid@libero.it>
+-" Last Change: 10 May 2006
+-" Version: 0.3
++" Last Change: 18 Sep 2009
++" Version: 0.5
+ " URL: http://erlug.linux.it/~da/vim/syntax/remind.vim
+ "
+-" remind is a sophisticated reminder service; you can download remind from:
+-" http://www.roaringpenguin.com/penguin/open_source_remind.php
++" remind is a sophisticated reminder service
++" you can download remind from:
++" http://www.roaringpenguin.com/penguin/open_source_remind.php
+
+ if version < 600
+ syntax clear
+@@ -14,24 +15,30 @@
+ finish
+ endif
+
+-" shut case off
++" shut case off.
+ syn case ignore
+
+ syn keyword remindCommands REM OMIT SET FSET UNSET
+-syn keyword remindExpiry UNTIL SCANFROM SCAN WARN SCHED
++syn keyword remindExpiry UNTIL FROM SCANFROM SCAN WARN SCHED
+ syn keyword remindTag PRIORITY TAG
+ syn keyword remindTimed AT DURATION
+ syn keyword remindMove ONCE SKIP BEFORE AFTER
+-syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP
++syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP COLOR
+ syn keyword remindRun MSG MSF RUN CAL SATISFY SPECIAL PS PSFILE SHADE MOON
+ syn keyword remindConditional IF ELSE ENDIF IFTRIG
++syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE
+ syn match remindComment "#.*$"
+ syn region remindString start=+'+ end=+'+ skip=+\\\\\|\\'+ oneline
+ syn region remindString start=+"+ end=+"+ skip=+\\\\\|\\"+ oneline
+-syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE
+ syn match remindVar "\$[_a-zA-Z][_a-zA-Z0-9]*"
+ syn match remindSubst "%[^ ]"
+ syn match remindAdvanceNumber "\(\*\|+\|-\|++\|--\)[0-9]\+"
++" XXX: use different separators for dates and times?
++syn match remindDateSeparators "[/:@\.-]" contained
++syn match remindTimes "[0-9]\{1,2}[:\.][0-9]\{1,2}" contains=remindDateSeparators
++" XXX: why not match only valid dates? Ok, checking for 'Feb the 30' would
++" be impossible, but at least check for valid months and times.
++syn match remindDates "'[0-9]\{4}[/-][0-9]\{1,2}[/-][0-9]\{1,2}\(@[0-9]\{1,2}[:\.][0-9]\{1,2}\)\?'" contains=remindDateSeparators
+ " This will match trailing whitespaces that seem to break rem2ps.
+ " Courtesy of Michael Dunn.
+ syn match remindWarning display excludenl "\S\s\+$"ms=s+1
+@@ -54,11 +61,14 @@
+ HiLink remindRun Function
+ HiLink remindConditional Conditional
+ HiLink remindComment Comment
++ HiLink remindTimes String
+ HiLink remindString String
+ HiLink remindDebug Debug
+ HiLink remindVar Identifier
+ HiLink remindSubst Constant
+ HiLink remindAdvanceNumber Number
++ HiLink remindDateSeparators Comment
++ HiLink remindDates String
+ HiLink remindWarning Error
+
+ delcommand HiLink
+diff -u -r --new-file runtime/syntax.orig/rhelp.vim runtime/syntax/rhelp.vim
+--- runtime/syntax.orig/rhelp.vim 2008-04-10 14:24:17.000000000 -0500
++++ runtime/syntax/rhelp.vim 2009-05-14 13:53:07.000000000 -0500
+@@ -1,13 +1,14 @@
+ " Vim syntax file
+ " Language: R Help File
+ " Maintainer: Johannes Ranke <jranke@uni-bremen.de>
+-" Last Change: 2008 Apr 10
+-" Version: 0.7.1
+-" SVN: $Id: rhelp.vim 81 2008-04-10 08:30:11Z ranke $
++" Last Change: 2009 Mai 12
++" Version: 0.7.2
++" SVN: $Id: rhelp.vim 86 2009-05-12 19:23:47Z ranke $
+ " Remarks: - Now includes R syntax highlighting in the appropriate
+ " sections if an r.vim file is in the same directory or in the
+ " default debian location.
+ " - There is no Latex markup in equations
++" - Thanks to Will Gray for finding and fixing a bug
+
+ " Version Clears: {{{1
+ " For version 5.x: Clear all syntax items
+@@ -57,7 +58,7 @@
+
+ " Links {{{1
+ syn region rhelpLink matchgroup=rhelpSection start="\\link{" end="}" contained keepend
+-syn region rhelpLink matchgroup=rhelpSection start="\\link\[.*\]{" end="}" contained keepend
++syn region rhelpLink matchgroup=rhelpSection start="\\link\[.\{-}\]{" end="}" contained keepend
+ syn region rhelpLink matchgroup=rhelpSection start="\\linkS4class{" end="}" contained keepend
+
+ " Type Styles {{{1
+diff -u -r --new-file runtime/syntax.orig/rnoweb.vim runtime/syntax/rnoweb.vim
+--- runtime/syntax.orig/rnoweb.vim 2007-05-05 12:55:31.000000000 -0500
++++ runtime/syntax/rnoweb.vim 2009-05-05 14:48:52.000000000 -0500
+@@ -1,9 +1,9 @@
+ " Vim syntax file
+ " Language: R noweb Files
+ " Maintainer: Johannes Ranke <jranke@uni-bremen.de>
+-" Last Change: 2007 Mär 30
+-" Version: 0.8
+-" SVN: $Id: rnoweb.vim,v 1.3 2007/05/05 17:55:31 vimboss Exp $
++" Last Change: 2009 May 05
++" Version: 0.9
++" SVN: $Id: rnoweb.vim 84 2009-05-03 19:52:47Z ranke $
+ " Remarks: - This file is inspired by the proposal of
+ " Fernando Henrique Ferraz Pereira da Rosa <feferraz@ime.usp.br>
+ " http://www.ime.usp.br/~feferraz/en/sweavevim.html
+@@ -25,6 +25,7 @@
+ unlet b:current_syntax
+
+ syn cluster texMatchGroup add=@rnoweb
++syn cluster texMathMatchGroup add=rnowebSexpr
+ syn cluster texEnvGroup add=@rnoweb
+ syn cluster texFoldGroup add=@rnoweb
+ syn cluster texDocGroup add=@rnoweb
+diff -u -r --new-file runtime/syntax.orig/rst.vim runtime/syntax/rst.vim
+--- runtime/syntax.orig/rst.vim 2006-07-03 18:49:39.000000000 -0500
++++ runtime/syntax/rst.vim 2010-02-11 06:41:37.000000000 -0600
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: reStructuredText documentation format
+ " Maintainer: Nikolai Weibull <now@bitwi.se>
+-" Latest Revision: 2006-07-04
++" Latest Revision: 2010-01-23
+
+ if exists("b:current_syntax")
+ finish
+@@ -12,12 +12,9 @@
+
+ syn case ignore
+
+-" FIXME: The problem with these two is that Vim doesn’t seem to like
+-" matching across line boundaries.
+-"
+-" syn match rstSections /^.*\n[=`:.'"~^_*+#-]\+$/
++syn match rstSections "^\%(\([=`:.'"~^_*+#-]\)\1\+\n\)\=.\+\n\([=`:.'"~^_*+#-]\)\2\+$"
+
+-" syn match rstTransition /^\s*[=`:.'"~^_*+#-]\{4,}\s*$/
++syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/
+
+ syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis,
+ \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference,
+@@ -140,12 +137,12 @@
+
+ " TODO: Use better syncing. I don’t know the specifics of syncing well enough,
+ " though.
+-syn sync minlines=50
++syn sync minlines=50 linebreaks=1
+
+ hi def link rstTodo Todo
+ hi def link rstComment Comment
+-"hi def link rstSections Type
+-"hi def link rstTransition Type
++hi def link rstSections Type
++hi def link rstTransition Type
+ hi def link rstLiteralBlock String
+ hi def link rstQuotedLiteralBlock String
+ hi def link rstDoctestBlock PreProc
+diff -u -r --new-file runtime/syntax.orig/samba.vim runtime/syntax/samba.vim
+--- runtime/syntax.orig/samba.vim 2004-09-21 04:51:35.000000000 -0500
++++ runtime/syntax/samba.vim 2009-09-18 05:27:18.000000000 -0500
+@@ -2,8 +2,10 @@
+ " Language: samba configuration files (smb.conf)
+ " Maintainer: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
+ " URL: http://rgarciasuarez.free.fr/vim/syntax/samba.vim
+-" Last change: 2004 September 21
+-
++" Last change: 2009 Aug 06
++"
++" New maintainer wanted!
++"
+ " Don't forget to run your config file through testparm(1)!
+
+ " For version 5.x: Clear all syntax items
+@@ -51,7 +53,7 @@
+ syn keyword sambaKeyword contained netbios nis notify nt null offset ok ole
+ syn keyword sambaKeyword contained only open oplock oplocks options order os
+ syn keyword sambaKeyword contained output packet page panic passwd password
+-syn keyword sambaKeyword contained passwords path permissions pipe port
++syn keyword sambaKeyword contained passwords path permissions pipe port ports
+ syn keyword sambaKeyword contained postexec postscript prediction preexec
+ syn keyword sambaKeyword contained prefered preferred preload preserve print
+ syn keyword sambaKeyword contained printable printcap printer printers
+diff -u -r --new-file runtime/syntax.orig/scheme.vim runtime/syntax/scheme.vim
+--- runtime/syntax.orig/scheme.vim 2007-06-16 15:09:14.000000000 -0500
++++ runtime/syntax/scheme.vim 2009-11-28 06:33:43.000000000 -0600
+@@ -1,6 +1,6 @@
+ " Vim syntax file
+-" Language: Scheme (R5RS)
+-" Last Change: 2007 Jun 16
++" Language: Scheme (R5RS + some R6RS extras)
++" Last Change: 2009 Nov 27
+ " Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
+ " Original author: Dirk van Deun <dirk@igwe.vub.ac.be>
+
+@@ -26,8 +26,8 @@
+
+ " Fascist highlighting: everything that doesn't fit the rules is an error...
+
+-syn match schemeError oneline ![^ \t()\[\]";]*!
+-syn match schemeError oneline ")"
++syn match schemeError ![^ \t()\[\]";]*!
++syn match schemeError ")"
+
+ " Quoted and backquoted stuff
+
+@@ -71,6 +71,8 @@
+ syn keyword schemeSyntax begin do delay set! else =>
+ syn keyword schemeSyntax quote quasiquote unquote unquote-splicing
+ syn keyword schemeSyntax define-syntax let-syntax letrec-syntax syntax-rules
++" R6RS
++syn keyword schemeSyntax define-record-type fields protocol
+
+ syn keyword schemeFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car!
+ syn keyword schemeFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr
+@@ -109,30 +111,39 @@
+ syn keyword schemeFunc dynamic-wind port? values call-with-values
+ syn keyword schemeFunc scheme-report-environment null-environment
+ syn keyword schemeFunc interaction-environment
++" R6RS
++syn keyword schemeFunc make-eq-hashtable make-eqv-hashtable make-hashtable
++syn keyword schemeFunc hashtable? hashtable-size hashtable-ref hashtable-set!
++syn keyword schemeFunc hashtable-delete! hashtable-contains? hashtable-update!
++syn keyword schemeFunc hashtable-copy hashtable-clear! hashtable-keys
++syn keyword schemeFunc hashtable-entries hashtable-equivalence-function hashtable-hash-function
++syn keyword schemeFunc hashtable-mutable? equal-hash string-hash string-ci-hash symbol-hash
++syn keyword schemeFunc find for-all exists filter partition fold-left fold-right
++syn keyword schemeFunc remp remove remv remq memp assp cons*
+
+ " ... so that a single + or -, inside a quoted context, would not be
+ " interpreted as a number (outside such contexts, it's a schemeFunc)
+
+-syn match schemeDelimiter oneline !\.[ \t\[\]()";]!me=e-1
+-syn match schemeDelimiter oneline !\.$!
++syn match schemeDelimiter !\.[ \t\[\]()";]!me=e-1
++syn match schemeDelimiter !\.$!
+ " ... and a single dot is not a number but a delimiter
+
+ " This keeps all other stuff unhighlighted, except *stuff* and <stuff>:
+
+-syn match schemeOther oneline ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*,
+-syn match schemeError oneline ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
++syn match schemeOther ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*,
++syn match schemeError ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
+
+-syn match schemeOther oneline "\.\.\."
+-syn match schemeError oneline !\.\.\.[^ \t\[\]()";]\+!
++syn match schemeOther "\.\.\."
++syn match schemeError !\.\.\.[^ \t\[\]()";]\+!
+ " ... a special identifier
+
+-syn match schemeConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t\[\]()";],me=e-1
+-syn match schemeConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$,
+-syn match schemeError oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
+-
+-syn match schemeConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1
+-syn match schemeConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
+-syn match schemeError oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
++syn match schemeConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*[ \t\[\]()";],me=e-1
++syn match schemeConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*$,
++syn match schemeError ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
++
++syn match schemeConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1
++syn match schemeConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
++syn match schemeError ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
+
+ " Non-quoted lists, and strings:
+
+@@ -153,23 +164,27 @@
+ " Writing out the complete description of Scheme numerals without
+ " using variables is a day's work for a trained secretary...
+
+-syn match schemeOther oneline ![+-][ \t\[\]()";]!me=e-1
+-syn match schemeOther oneline ![+-]$!
++syn match schemeOther ![+-][ \t\[\]()";]!me=e-1
++syn match schemeOther ![+-]$!
+ "
+ " This is a useful lax approximation:
+-syn match schemeNumber oneline "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*"
+-syn match schemeError oneline ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t\[\]()";][^ \t\[\]()";]*!
++syn match schemeNumber "[-#+.]\=[0-9][-#+/0-9a-f@i.boxesfdl]*"
++syn match schemeError ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t\[\]()";][^ \t\[\]()";]*!
+
+-syn match schemeBoolean oneline "#[tf]"
+-syn match schemeError oneline !#[tf][^ \t\[\]()";]\+!
++syn match schemeBoolean "#[tf]"
++syn match schemeError !#[tf][^ \t\[\]()";]\+!
++
++syn match schemeCharacter "#\\"
++syn match schemeCharacter "#\\."
++syn match schemeError !#\\.[^ \t\[\]()";]\+!
++syn match schemeCharacter "#\\space"
++syn match schemeError !#\\space[^ \t\[\]()";]\+!
++syn match schemeCharacter "#\\newline"
++syn match schemeError !#\\newline[^ \t\[\]()";]\+!
++
++" R6RS
++syn match schemeCharacter "#\\x[0-9a-fA-F]\+"
+
+-syn match schemeChar oneline "#\\"
+-syn match schemeChar oneline "#\\."
+-syn match schemeError oneline !#\\.[^ \t\[\]()";]\+!
+-syn match schemeChar oneline "#\\space"
+-syn match schemeError oneline !#\\space[^ \t\[\]()";]\+!
+-syn match schemeChar oneline "#\\newline"
+-syn match schemeError oneline !#\\newline[^ \t\[\]()";]\+!
+
+ if exists("b:is_mzscheme") || exists("is_mzscheme")
+ " MzScheme extensions
+@@ -177,11 +192,11 @@
+ syn region schemeComment start="#|" end="|#"
+
+ " #%xxx are the special MzScheme identifiers
+- syn match schemeOther oneline "#%[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
++ syn match schemeOther "#%[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+ " anything limited by |'s is identifier
+- syn match schemeOther oneline "|[^|]\+|"
++ syn match schemeOther "|[^|]\+|"
+
+- syn match schemeChar oneline "#\\\%(return\|tab\)"
++ syn match schemeCharacter "#\\\%(return\|tab\)"
+
+ " Modules require stmt
+ syn keyword schemeExtSyntax module require dynamic-require lib prefix all-except prefix-all-except rename
+@@ -234,8 +249,8 @@
+ " multiline comment
+ syntax region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment
+
+- syn match schemeOther oneline "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+- syn match schemeExtSyntax oneline "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
++ syn match schemeOther "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
++ syn match schemeExtSyntax "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+
+ syn keyword schemeExtSyntax unit uses declare hide foreign-declare foreign-parse foreign-parse/spec
+ syn keyword schemeExtSyntax foreign-lambda foreign-lambda* define-external define-macro load-library
+@@ -266,7 +281,7 @@
+ endif
+
+ " suggested by Alex Queiroz
+- syn match schemeExtSyntax oneline "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
++ syn match schemeExtSyntax "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+ syn region schemeString start=+#<#\s*\z(.*\)+ end=+^\z1$+
+ endif
+
+@@ -290,7 +305,7 @@
+ HiLink schemeFunc Function
+
+ HiLink schemeString String
+- HiLink schemeChar Character
++ HiLink schemeCharacter Character
+ HiLink schemeNumber Number
+ HiLink schemeBoolean Boolean
+
+diff -u -r --new-file runtime/syntax.orig/screen.vim runtime/syntax/screen.vim
+--- runtime/syntax.orig/screen.vim 2006-04-21 07:41:02.000000000 -0500
++++ runtime/syntax/screen.vim 2010-01-12 14:33:53.000000000 -0600
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: screen(1) configuration file
+ " Maintainer: Nikolai Weibull <now@bitwi.se>
+-" Latest Revision: 2006-04-19
++" Latest Revision: 2010-01-03
+
+ if exists("b:current_syntax")
+ finish
+@@ -15,54 +15,219 @@
+ syn keyword screenTodo contained TODO FIXME XXX NOTE
+
+ syn region screenComment display oneline start='#' end='$'
+- \ contains=screenTodo,@Spell
++ \ contains=screenTodo,@Spell
+
+ syn region screenString display oneline start=+"+ skip=+\\"+ end=+"+
+- \ contains=screenVariable,screenSpecial
++ \ contains=screenVariable,screenSpecial
+
+ syn region screenLiteral display oneline start=+'+ skip=+\\'+ end=+'+
+
+-syn match screenVariable contained display '$\(\h\w*\|{\h\w*}\)'
++syn match screenVariable contained display '$\%(\h\w*\|{\h\w*}\)'
+
+ syn keyword screenBoolean on off
+
+ syn match screenNumbers display '\<\d\+\>'
+
+ syn match screenSpecials contained
+- \ '%\([%aAdDhlmMstuwWyY?:{]\|[0-9]*n\|0?cC\)'
++ \ '%\%([%aAdDhlmMstuwWyY?:{]\|[0-9]*n\|0?cC\)'
+
+-syn keyword screenCommands acladd aclchg acldel aclgrp aclumask activity
+- \ addacl allpartial at attrcolor autodetach
+- \ bell_msg bind bindkey bufferfile caption chacl
+- \ chdir clear colon command compacthist console
+- \ copy copy_regcrlf debug detach digraph dinfo
+- \ crlf displays dumptermcap echo exec fit focus
+- \ height help history info kill lastmsg license
+- \ lockscreen markkeys meta msgminwait msgwait
+- \ multiuser nethack next nonblock number only
+- \ other partial_state password paste pastefont
+- \ pow_break pow_detach_msg prev printcmd process
+- \ quit readbuf readreg redisplay register
+- \ remove removebuf reset resize screen select
+- \ sessionname setenv shelltitle silencewait
+- \ verbose sleep sorendition split startup_message
+- \ stuff su suspend time title umask version wall
+- \ width writebuf xoff xon defmode hardstatus
+- \ altscreen break breaktype copy_reg defbreaktype
+- \ defencoding deflog encoding eval ignorecase
+- \ ins_reg maxwin partial pow_detach setsid source
+- \ unsetenv windowlist windows defautonuke autonuke
+- \ defbce bce defc1 c1 defcharset charset defescape
+- \ escape defflow flow defkanji kanji deflogin
+- \ login defmonitor monitor defhstatus hstatus
+- \ defobuflimit obuflimit defscrollback scrollback
+- \ defshell shell defsilence silence defslowpaste
+- \ slowpaste defutf8 utf8 defwrap wrap defwritelock
+- \ writelock defzombie zombie defgr gr hardcopy
+- \ hardcopy_append hardcopydir hardstatus log
+- \ logfile login logtstamp mapdefault mapnotnext
+- \ maptimeout term termcap terminfo termcapinfo
+- \ vbell vbell_msg vbellwait
++syn keyword screenCommands
++ \ acladd
++ \ aclchg
++ \ acldel
++ \ aclgrp
++ \ aclumask
++ \ activity
++ \ addacl
++ \ allpartial
++ \ altscreen
++ \ at
++ \ attrcolor
++ \ autodetach
++ \ autonuke
++ \ backtick
++ \ bce
++ \ bd_bc_down
++ \ bd_bc_left
++ \ bd_bc_right
++ \ bd_bc_up
++ \ bd_bell
++ \ bd_braille_table
++ \ bd_eightdot
++ \ bd_info
++ \ bd_link
++ \ bd_lower_left
++ \ bd_lower_right
++ \ bd_ncrc
++ \ bd_port
++ \ bd_scroll
++ \ bd_skip
++ \ bd_start_braille
++ \ bd_type
++ \ bd_upper_left
++ \ bd_upper_right
++ \ bd_width
++ \ bell
++ \ bell_msg
++ \ bind
++ \ bindkey
++ \ blanker
++ \ blankerprg
++ \ break
++ \ breaktype
++ \ bufferfile
++ \ c1
++ \ caption
++ \ chacl
++ \ charset
++ \ chdir
++ \ clear
++ \ colon
++ \ command
++ \ compacthist
++ \ console
++ \ copy
++ \ crlf
++ \ debug
++ \ defautonuke
++ \ defbce
++ \ defbreaktype
++ \ defc1
++ \ defcharset
++ \ defencoding
++ \ defescape
++ \ defflow
++ \ defgr
++ \ defhstatus
++ \ defkanji
++ \ deflog
++ \ deflogin
++ \ defmode
++ \ defmonitor
++ \ defnonblock
++ \ defobuflimit
++ \ defscrollback
++ \ defshell
++ \ defsilence
++ \ defslowpaste
++ \ defutf8
++ \ defwrap
++ \ defwritelock
++ \ detach
++ \ digraph
++ \ dinfo
++ \ displays
++ \ dumptermcap
++ \ echo
++ \ encoding
++ \ escape
++ \ eval
++ \ exec
++ \ fit
++ \ flow
++ \ focus
++ \ gr
++ \ hardcopy
++ \ hardcopy_append
++ \ hardcopydir
++ \ hardstatus
++ \ height
++ \ help
++ \ history
++ \ hstatus
++ \ idle
++ \ ignorecase
++ \ info
++ \ kanji
++ \ kill
++ \ lastmsg
++ \ layout
++ \ license
++ \ lockscreen
++ \ log
++ \ logfile
++ \ login
++ \ logtstamp
++ \ mapdefault
++ \ mapnotnext
++ \ maptimeout
++ \ markkeys
++ \ maxwin
++ \ meta
++ \ monitor
++ \ msgminwait
++ \ msgwait
++ \ multiuser
++ \ nethack
++ \ next
++ \ nonblock
++ \ number
++ \ obuflimit
++ \ only
++ \ other
++ \ partial
++ \ password
++ \ paste
++ \ pastefont
++ \ pow_break
++ \ pow_detach
++ \ pow_detach_msg
++ \ prev
++ \ printcmd
++ \ process
++ \ quit
++ \ readbuf
++ \ readreg
++ \ redisplay
++ \ register
++ \ remove
++ \ removebuf
++ \ reset
++ \ resize
++ \ screen
++ \ scrollback
++ \ select
++ \ sessionname
++ \ setenv
++ \ setsid
++ \ shell
++ \ shelltitle
++ \ silence
++ \ silencewait
++ \ sleep
++ \ slowpaste
++ \ sorendition
++ \ source
++ \ split
++ \ startup_message
++ \ stuff
++ \ su
++ \ suspend
++ \ term
++ \ termcap
++ \ termcapinfo
++ \ terminfo
++ \ time
++ \ title
++ \ umask
++ \ unsetenv
++ \ utf8
++ \ vbell
++ \ vbell_msg
++ \ vbellwait
++ \ verbose
++ \ version
++ \ wall
++ \ width
++ \ windowlist
++ \ windows
++ \ wrap
++ \ writebuf
++ \ writelock
++ \ xoff
++ \ xon
++ \ zmodem
++ \ zombie
+
+ hi def link screenEscape Special
+ hi def link screenComment Comment
+diff -u -r --new-file runtime/syntax.orig/sdc.vim runtime/syntax/sdc.vim
+--- runtime/syntax.orig/sdc.vim 1969-12-31 18:00:00.000000000 -0600
++++ runtime/syntax/sdc.vim 2009-05-05 13:28:48.000000000 -0500
+@@ -0,0 +1,41 @@
++" Vim syntax file
++" Language: SDC - Synopsys Design Constraints
++" Maintainer: Maurizio Tranchero - maurizio.tranchero@gmail.com
++" Last Change: Thu Mar 25 17:35:16 CET 2009
++" Credits: based on TCL Vim syntax file
++" Version: 0.3
++
++" Quit when a syntax file was already loaded
++if exists("b:current_syntax")
++ finish
++endif
++
++" Read the TCL syntax to start with
++runtime! syntax/tcl.vim
++
++" SDC-specific keywords
++syn keyword sdcCollections foreach_in_collection
++syn keyword sdcObjectsQuery get_clocks get_ports
++syn keyword sdcObjectsInfo get_point_info get_node_info get_path_info
++syn keyword sdcObjectsInfo get_timing_paths set_attribute
++syn keyword sdcConstraints set_false_path
++syn keyword sdcNonIdealities set_min_delay set_max_delay
++syn keyword sdcNonIdealities set_input_delay set_output_delay
++syn keyword sdcNonIdealities set_load set_min_capacitance set_max_capacitance
++syn keyword sdcCreateOperations create_clock create_timing_netlist update_timing_netlist
++
++" command flags highlighting
++syn match sdcFlags "[[:space:]]-[[:alpha:]]*\>"
++
++" Define the default highlighting.
++hi def link sdcCollections Repeat
++hi def link sdcObjectsInfo Operator
++hi def link sdcCreateOperations Operator
++hi def link sdcObjectsQuery Operator
++hi def link sdcConstraints Operator
++hi def link sdcNonIdealities Operator
++hi def link sdcFlags Special
++
++let b:current_syntax = "sdc"
++
++" vim: ts=8
+diff -u -r --new-file runtime/syntax.orig/sgmllnx.vim runtime/syntax/sgmllnx.vim
+--- runtime/syntax.orig/sgmllnx.vim 2004-06-07 09:32:35.000000000 -0500
++++ runtime/syntax/sgmllnx.vim 2008-09-18 13:56:21.000000000 -0500
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language: SGML-linuxdoc (supported by old sgmltools-1.x)
+ " (for more information, visit www.sgmltools.org)
+-" Maintainer: Nam SungHyun <namsh@kldp.org>
+-" Last Change: 2001 Apr 26
++" Maintainer: SungHyun Nam <goweol@gmail.com>
++" Last Change: 2008 Sep 17
+
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+diff -u -r --new-file runtime/syntax.orig/sh.vim runtime/syntax/sh.vim
+--- runtime/syntax.orig/sh.vim 2008-07-14 15:23:42.000000000 -0500
++++ runtime/syntax/sh.vim 2010-01-12 14:45:24.000000000 -0600
+@@ -2,8 +2,8 @@
+ " Language: shell (sh) Korn shell (ksh) bash (sh)
+ " Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
+ " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
+-" Last Change: Jul 11, 2008
+-" Version: 102
++" Last Change: Nov 17, 2009
++" Version: 110
+ " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+ " For options and settings, please use: :help ft-sh-syntax
+ " This file includes many ideas from Éric Brunet (eric.brunet@ens.fr)
+@@ -67,13 +67,13 @@
+
+ " Clusters: contains=@... clusters {{{1
+ "==================================
+-syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError
++syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK
+ if exists("b:is_kornshell")
+ syn cluster ErrorList add=shDTestError
+ endif
+-syn cluster shArithParenList contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen
++syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shDeref,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement
+ syn cluster shArithList contains=@shArithParenList,shParenError
+-syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial
++syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
+ syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
+ syn cluster shColonList contains=@shCaseList
+ syn cluster shCommandSubList contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest,shCtrlSeq,shSpecial
+@@ -84,7 +84,7 @@
+ syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shExSingleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote
+ syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq
+ syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest
+-syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
++syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
+ if exists("b:is_kornshell") || exists("b:is_bash")
+ syn cluster shFunctionList add=shRepeat
+ syn cluster shFunctionList add=shDblBrace,shDblParen
+@@ -94,19 +94,18 @@
+ syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload
+ syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial
+ syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest,@shErrorList,shSet
+-syn cluster shSubShList contains=@shCaseList,shOperator
++syn cluster shSubShList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator
+ syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shTestOpr,shTest,shCtrlSeq
+
+-
+ " Echo: {{{1
+ " ====
+ " This one is needed INSIDE a CommandSub, so that `echo bla` be correct
+-syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
+-syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
+-syn match shEchoQuote contained '\%(\\\\\)*\\["`']'
++syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment
++syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment
++syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]'
+
+ " This must be after the strings, so that ... \" will be correct
+-syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shDoubleQuote,shCharClass,shCtrlSeq
++syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shDoubleQuote,shCharClass,shCtrlSeq
+
+ " Alias: {{{1
+ " =====
+@@ -125,6 +124,7 @@
+ syn match shEsacError "\<esac\>"
+ syn match shCurlyError "}"
+ syn match shParenError ")"
++syn match shOK '\.\(done\|fi\|in\|esac\)'
+ if exists("b:is_kornshell")
+ syn match shDTestError "]]"
+ endif
+@@ -152,14 +152,13 @@
+
+ " Subshells: {{{1
+ " ==========
+-syn region shExpr transparent matchgroup=shExprRegion start="{" end="}" contains=@shExprList2
+-syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")" contains=@shSubShList
++syn region shExpr transparent matchgroup=shExprRegion start="{" end="}" contains=@shExprList2 nextgroup=shMoreSpecial
++syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")" contains=@shSubShList nextgroup=shMoreSpecial
+
+ " Tests: {{{1
+ "=======
+-"syn region shExpr transparent matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
+-syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
+-syn region shTest transparent matchgroup=shStatement start="\<test\>" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
++syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList,shSpecial
++syn region shTest transparent matchgroup=shStatement start="\<test\s" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
+ syn match shTestOpr contained "<=\|>=\|!=\|==\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]"
+ syn match shTestOpr contained '=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern
+ syn match shTestPattern contained '\w\+'
+@@ -203,10 +202,11 @@
+ " ====
+ syn match shCaseBar contained skipwhite "\(^\|[^\\]\)\(\\\\\)*\zs|" nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
+ syn match shCaseStart contained skipwhite skipnl "(" nextgroup=shCase,shCaseBar
+-syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
+ if (g:sh_fold_enabled % (s:sh_fold_ifdofor * 2))/s:sh_fold_ifdofor
++ syn region shCase fold contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
+ syn region shCaseEsac fold matchgroup=shConditional start="\<case\>" end="\<esac\>" contains=@shCaseEsacList
+ else
++ syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
+ syn region shCaseEsac matchgroup=shConditional start="\<case\>" end="\<esac\>" contains=@shCaseEsacList
+ endif
+ syn keyword shCaseIn contained skipwhite skipnl in nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
+@@ -218,6 +218,7 @@
+ syn region shCaseSingleQuote matchgroup=shOperator start=+'+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained
+ syn region shCaseDoubleQuote matchgroup=shOperator start=+"+ skip=+\\\\\|\\.+ end=+"+ contains=@shDblQuoteList,shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained
+ syn region shCaseCommandSub start=+`+ skip=+\\\\\|\\.+ end=+`+ contains=@shCommandSubList skipwhite skipnl nextgroup=shCaseBar contained
++syn region shCaseRange matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+]+ contained
+
+ " Misc: {{{1
+ "======
+@@ -256,34 +257,36 @@
+
+ syn match shSource "^\.\s"
+ syn match shSource "\s\.\s"
+-syn region shColon start="^\s*:" end="$\|" end="#"me=e-1 contains=@shColonList
++"syn region shColon start="^\s*:" end="$" end="\s#"me=e-2 contains=@shColonList
++syn region shColon start="^\s*\zs:" end="$" end="\s#"me=e-2
+
+ " String And Character Constants: {{{1
+ "================================
+ syn match shNumber "-\=\<\d\+\>#\="
+ syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained
+ if exists("b:is_bash")
+- syn match shSpecial "\\\o\o\o\|\\x\x\x\|\\c.\|\\[abefnrtv]" contained
++ syn match shSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained
+ endif
+ if exists("b:is_bash")
+ syn region shExSingleQuote matchgroup=shOperator start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial
+ else
+ syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial
+ endif
+-syn region shSingleQuote matchgroup=shOperator start=+'+ end=+'+ contains=shStringSpecial,@Spell
++syn region shSingleQuote matchgroup=shOperator start=+'+ end=+'+ contains=@Spell
+ syn region shDoubleQuote matchgroup=shOperator start=+"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell
+ syn match shStringSpecial "[^[:print:] \t]" contained
+ syn match shStringSpecial "\%(\\\\\)*\\[\\"'`$()#]"
+-syn match shSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"
++syn match shSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial
+ syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]"
++syn match shMoreSpecial "\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial contained
+
+ " Comments: {{{1
+ "==========
+-syn cluster shCommentGroup contains=shTodo,@Spell
+-syn keyword shTodo contained COMBAK FIXME TODO XXX
+-syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup
+-syn match shComment "\s\zs#.*$" contains=@shCommentGroup
+-syn match shQuickComment contained "#.*$"
++syn cluster shCommentGroup contains=shTodo,@Spell
++syn keyword shTodo contained COMBAK FIXME TODO XXX
++syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup
++syn match shComment "\s\zs#.*$" contains=@shCommentGroup
++syn match shQuickComment contained "#.*$"
+
+ " Here Documents: {{{1
+ " =========================================
+@@ -338,13 +341,13 @@
+ syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shSetIdentifier
+ syn match shSetIdentifier "=" contained nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shSingleQuote,shExSingleQuote
+ if exists("b:is_bash")
+- syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze#\|=" contains=@shIdList
+- syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
++ syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList
++ syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
+ elseif exists("b:is_kornshell")
+- syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
+- syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
++ syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
++ syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
+ else
+- syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
++ syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
+ endif
+
+ " Functions: {{{1
+@@ -492,7 +495,7 @@
+ hi def link shCaseSingleQuote shSingleQuote
+ hi def link shCaseStart shConditional
+ hi def link shCmdSubRegion shShellVariables
+-hi def link shColon shStatement
++hi def link shColon shComment
+ hi def link shDerefOp shOperator
+ hi def link shDerefPOL shDerefOp
+ hi def link shDerefPPS shDerefOp
+@@ -511,6 +514,7 @@
+ hi def link shHereDoc shString
+ hi def link shHerePayload shHereDoc
+ hi def link shLoop shStatement
++hi def link shMoreSpecial shSpecial
+ hi def link shOption shCommandSub
+ hi def link shPattern shString
+ hi def link shParen shArithmetic
+diff -u -r --new-file runtime/syntax.orig/sisu.vim runtime/syntax/sisu.vim
+--- runtime/syntax.orig/sisu.vim 2008-05-27 14:24:19.000000000 -0500
++++ runtime/syntax/sisu.vim 2008-11-09 07:12:28.000000000 -0600
+@@ -1,6 +1,6 @@
+ "SiSU Vim syntax file
+ "SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
+-"SiSU Markup: SiSU (sisu-0.66.0, 2008-02-24)
++"SiSU Markup: SiSU (sisu-0.69.0, 2008-09-16)
+ "(originally looked at Ruby Vim by Mirko Nasato)
+
+ if version < 600
+@@ -81,6 +81,7 @@
+ syn region sisu_comment matchgroup=sisu_comment start="^%\{1,2\} " end="$"
+ "font face curly brackets
+ "syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline
++syn region sisu_index matchgroup=sisu_index_block start="^={" end="}"
+ syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*"
+ syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!"
+ syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_"
+@@ -162,7 +163,6 @@
+ hi def link sisu_fontface Include
+ hi def link sisu_strikeout DiffDelete
+ hi def link sisu_content_alt Special
+-hi def link sisu_sem_content String
+ hi def link sisu_sem_content SpecialKey
+ hi def link sisu_sem_block Special
+ hi def link sisu_sem_marker Visual
+@@ -173,6 +173,8 @@
+ hi def link sisu_sem_ex_content Comment
+ "hi def link sisu_sem_ex_content SpecialKey
+ hi def link sisu_sem_ex_block Comment
++hi def link sisu_index SpecialKey
++hi def link sisu_index_block Visual
+ hi def link sisu_content_endnote Special
+ hi def link sisu_control Define
+ hi def link sisu_ocn Include
+diff -u -r --new-file runtime/syntax.orig/spec.vim runtime/syntax/spec.vim
+--- runtime/syntax.orig/spec.vim 2005-01-04 03:46:51.000000000 -0600
++++ runtime/syntax/spec.vim 2009-12-16 14:42:02.000000000 -0600
+@@ -1,8 +1,7 @@
+ " Filename: spec.vim
+ " Purpose: Vim syntax file
+ " Language: SPEC: Build/install scripts for Linux RPM packages
+-" Maintainer: Donovan Rebbechi elflord@pegasus.rutgers.edu
+-" URL: http://pegasus.rutgers.edu/~elflord/vim/syntax/spec.vim
++" Maintainer: Donovan Rebbechi elflord@panix.com
+ " Last Change: Fri Dec 3 11:54 EST 2004 Marcin Dalecki
+
+ " For version 5.x: Clear all syntax items
+diff -u -r --new-file runtime/syntax.orig/spyce.vim runtime/syntax/spyce.vim
+--- runtime/syntax.orig/spyce.vim 2004-06-07 09:32:36.000000000 -0500
++++ runtime/syntax/spyce.vim 2009-11-28 06:33:43.000000000 -0600
+@@ -2,7 +2,7 @@
+ " Language: SPYCE
+ " Maintainer: Rimon Barr <rimon AT acm DOT org>
+ " URL: http://spyce.sourceforge.net
+-" Last Change: 2003 May 11
++" Last Change: 2009 Nov 11
+
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -25,6 +25,7 @@
+ else
+ runtime! syntax/html.vim
+ unlet b:current_syntax
++ syntax spell default " added by Bram
+ endif
+
+ " include python
+diff -u -r --new-file runtime/syntax.orig/sqlanywhere.vim runtime/syntax/sqlanywhere.vim
+--- runtime/syntax.orig/sqlanywhere.vim 2008-02-06 14:32:21.000000000 -0600
++++ runtime/syntax/sqlanywhere.vim 2009-10-08 16:18:57.000000000 -0500
+@@ -2,10 +2,11 @@
+ " Vim syntax file
+ " Language: SQL, Adaptive Server Anywhere
+ " Maintainer: David Fishburn <fishburn at ianywhere dot com>
+-" Last Change: Tue 29 Jan 2008 12:54:19 PM Eastern Standard Time
+-" Version: 10.0.1
++" Last Change: 2009 Mar 15
++" Version: 11.0.1
+
+-" Description: Updated to Adaptive Server Anywhere 10.0.1
++" Description: Updated to Adaptive Server Anywhere 11.0.1
++" Updated to Adaptive Server Anywhere 10.0.1
+ " Updated to Adaptive Server Anywhere 9.0.2
+ " Updated to Adaptive Server Anywhere 9.0.1
+ " Updated to Adaptive Server Anywhere 9.0.0
+@@ -54,20 +55,24 @@
+ syn keyword sqlFunction strtouuid varexists
+
+ " 9.0.1 functions
+-syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot
++syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot
+ syn keyword sqlFunction char_length coalesce dateformat datetime degrees exp
+-syn keyword sqlFunction floor getdate insertstr
++syn keyword sqlFunction floor getdate insertstr
+ syn keyword sqlFunction log log10 lower mod pi power
+-syn keyword sqlFunction property radians replicate round sign sin
++syn keyword sqlFunction property radians replicate round sign sin
+ syn keyword sqlFunction sqldialect tan truncate truncnum
+ syn keyword sqlFunction base64_encode base64_decode
+ syn keyword sqlFunction hash compress decompress encrypt decrypt
+
++" 11.0.1 functions
++syn keyword sqlFunction connection_extended_property text_handle_vector_match
++syn keyword sqlFunction read_client_file write_client_file
++
+ " string functions
+ syn keyword sqlFunction ascii char left ltrim repeat
+ syn keyword sqlFunction space right rtrim trim lcase ucase
+ syn keyword sqlFunction locate charindex patindex replace
+-syn keyword sqlFunction errormsg csconvert
++syn keyword sqlFunction errormsg csconvert
+
+ " property functions
+ syn keyword sqlFunction db_id db_name property_name
+@@ -358,125 +363,135 @@
+ syn keyword sqlFunction sa_set_http_header sa_set_http_option
+ syn keyword sqlFunction sa_http_variable_info sa_http_header_info
+
+-" http functions 9.0.1
++" http functions 9.0.1
+ syn keyword sqlFunction http_encode http_decode
+ syn keyword sqlFunction html_encode html_decode
+
+ " keywords
+-syn keyword sqlKeyword absolute accent action activ add address after
+-syn keyword sqlKeyword algorithm allow_dup_row
+-syn keyword sqlKeyword alter and any as append asc ascii ase at atomic
+-syn keyword sqlKeyword attach attended audit authorization
++syn keyword sqlKeyword absolute accent action active add address aes_decrypt
++syn keyword sqlKeyword after aggregate algorithm allow_dup_row allowed
++syn keyword sqlKeyword alter and ansi_substring any as append apply asc ascii ase
++syn keyword sqlKeyword assign at atan2 atomic attach attended audit authorization
+ syn keyword sqlKeyword autoincrement autostop batch bcp before
+-syn keyword sqlKeyword between blank blanks block
+-syn keyword sqlKeyword both bottom unbounded break bufferpool
++syn keyword sqlKeyword between bit_and bit_length bit_or bit_substr bit_xor
++syn keyword sqlKeyword blank blanks block
++syn keyword sqlKeyword both bottom unbounded break breaker bufferpool
+ syn keyword sqlKeyword build bulk by byte bytes cache calibrate calibration
+ syn keyword sqlKeyword cancel capability cascade cast
+-syn keyword sqlKeyword catalog changes char char_convert check checksum
++syn keyword sqlKeyword catalog ceil changes char char_convert check checksum
+ syn keyword sqlKeyword class classes client cmp
+-syn keyword sqlKeyword cluster clustered collation column columns
++syn keyword sqlKeyword cluster clustered collation
++syn keyword sqlKeyword column columns
+ syn keyword sqlKeyword command comment committed comparisons
+ syn keyword sqlKeyword compatible component compressed compute computes
+-syn keyword sqlKeyword concat confirm conflict connection
++syn keyword sqlKeyword concat configuration confirm conflict connection
+ syn keyword sqlKeyword console consolidate consolidated
+-syn keyword sqlKeyword constraint constraints continue
+-syn keyword sqlKeyword convert copy count crc cross cube
++syn keyword sqlKeyword constraint constraints content continue
++syn keyword sqlKeyword convert coordinator copy count count_set_bits
++syn keyword sqlKeyword crc createtime cross cube cume_dist
+ syn keyword sqlKeyword current cursor data data database
+ syn keyword sqlKeyword current_timestamp current_user
+-syn keyword sqlKeyword datatype dba dbfile
+-syn keyword sqlKeyword dbspace dbspacename debug decoupled
+-syn keyword sqlKeyword decrypted default defaults deferred definition
++syn keyword sqlKeyword databases datatype dba dbfile
++syn keyword sqlKeyword dbspace dbspaces dbspacename debug decoupled
++syn keyword sqlKeyword decrypted default defaults default_dbspace deferred
++syn keyword sqlKeyword definer definition
+ syn keyword sqlKeyword delay deleting delimited dependencies desc
+ syn keyword sqlKeyword description detach deterministic directory
+-syn keyword sqlKeyword disable disabled distinct do domain download
++syn keyword sqlKeyword disable disabled distinct do domain download duplicate
+ syn keyword sqlKeyword dsetpass dttm dynamic each editproc ejb
+-syn keyword sqlKeyword else elseif enable encapsulated encrypted end
+-syn keyword sqlKeyword encoding endif engine erase error escape escapes event
+-syn keyword sqlKeyword every except exception exclude exclusive exec
+-syn keyword sqlKeyword existing exists expanded express
++syn keyword sqlKeyword else elseif empty enable encapsulated encrypted end
++syn keyword sqlKeyword encoding endif engine environment erase error escape escapes event
++syn keyword sqlKeyword event_parameter every except exception exclude excluded exclusive exec
++syn keyword sqlKeyword existing exists expanded expiry express exprtype extended_property
+ syn keyword sqlKeyword external externlogin factor failover false
+-syn keyword sqlKeyword fastfirstrow fieldproc file filler
+-syn keyword sqlKeyword fillfactor finish first first_keyword
+-syn keyword sqlKeyword following force foreign format
+-syn keyword sqlKeyword freepage french fresh full function go global
+-syn keyword sqlKeyword group handler hash having header hexadecimal
+-syn keyword sqlKeyword hidden high history hold holdlock
+-syn keyword sqlKeyword hours id identified identity ignore
++syn keyword sqlKeyword fastfirstrow fieldproc file files filler
++syn keyword sqlKeyword fillfactor finish first first_keyword first_value
++syn keyword sqlKeyword following force foreign format forxml forxml_sep fp frame
++syn keyword sqlKeyword freepage french fresh full function gb get_bit go global
++syn keyword sqlKeyword group handler hash having header hexadecimal
++syn keyword sqlKeyword hidden high history hg hng hold holdlock host
++syn keyword sqlKeyword hours http_body http_session_timeout id identified identity ignore
+ syn keyword sqlKeyword ignore_dup_key ignore_dup_row immediate
+-syn keyword sqlKeyword in inactive inactivity incremental index info
++syn keyword sqlKeyword in inactiv inactive inactivity included incremental
++syn keyword sqlKeyword index index_enabled index_lparen indexonly info
+ syn keyword sqlKeyword inline inner inout insensitive inserting
+ syn keyword sqlKeyword instead integrated
+-syn keyword sqlKeyword internal into introduced iq is isolation jar java
++syn keyword sqlKeyword internal intersection into introduced invoker iq is isolation
++syn keyword sqlKeyword jar java java_location java_main_userid java_vm_options
+ syn keyword sqlKeyword jconnect jdk join kb key keep kerberos language last
+-syn keyword sqlKeyword last_keyword lateral left level like
+-syn keyword sqlKeyword limit local location log
+-syn keyword sqlKeyword logging login logscan long low lru main
+-syn keyword sqlKeyword match materialized max maximum membership
+-syn keyword sqlKeyword minutes mirror mode modify monitor mru
+-syn keyword sqlKeyword name named national native natural new next no
++syn keyword sqlKeyword last_keyword last_value lateral ld left len lf ln level like
++syn keyword sqlKeyword limit local location log
++syn keyword sqlKeyword logging login logscan long low lru main manual mark
++syn keyword sqlKeyword match matched materialized max maximum mb membership
++syn keyword sqlKeyword merge metadata methods minimum minutes mirror mode modify monitor move mru
++syn keyword sqlKeyword multiplex name named national native natural new next no
+ syn keyword sqlKeyword noholdlock nolock nonclustered none not
+-syn keyword sqlKeyword notify null nulls of off old on
+-syn keyword sqlKeyword only optimization optimizer option
++syn keyword sqlKeyword notify null nullable_constant nulls object oem_string of off offline
++syn keyword sqlKeyword old on online only openstring optimization optimizer option
+ syn keyword sqlKeyword or order others out outer over
+ syn keyword sqlKeyword package packetsize padding page pages
+-syn keyword sqlKeyword paglock parallel part partition partner password path
+-syn keyword sqlKeyword pctfree plan preceding precision prefetch prefix
+-syn keyword sqlKeyword preserve preview primary
+-syn keyword sqlKeyword prior priqty private privileges procedure profile
+-syn keyword sqlKeyword public publication publish publisher
+-syn keyword sqlKeyword quote quotes range readcommitted readonly
++syn keyword sqlKeyword paglock parallel part partial partition partitions partner password path
++syn keyword sqlKeyword pctfree plan policy populate port postfilter preceding precision
++syn keyword sqlKeyword prefetch prefilter prefix preserve preview primary
++syn keyword sqlKeyword prior priority priqty private privileges procedure profile
++syn keyword sqlKeyword property_is_cumulative property_is_numeric public publication publish publisher
++syn keyword sqlKeyword quiesce quote quotes range readclientfile readcommitted reader readfile readonly
+ syn keyword sqlKeyword readpast readuncommitted readwrite rebuild
+ syn keyword sqlKeyword received recompile recover recursive references
+-syn keyword sqlKeyword referencing refresh relative relocate
++syn keyword sqlKeyword referencing refresh regex regexp regexp_substr relative relocate
+ syn keyword sqlKeyword rename repeatable repeatableread
+-syn keyword sqlKeyword replicate rereceive resend reserve reset
++syn keyword sqlKeyword replicate request_timeout required rereceive resend reserve reset
+ syn keyword sqlKeyword resizing resolve resource respect
+ syn keyword sqlKeyword restrict result retain
+-syn keyword sqlKeyword returns right
+-syn keyword sqlKeyword rollup root row rowlock rows save
+-syn keyword sqlKeyword schedule schema scripted scroll seconds secqty
++syn keyword sqlKeyword returns reverse right role
++syn keyword sqlKeyword rollup root row row_number rowlock rows save
++syn keyword sqlKeyword sa_index_hash sa_internal_fk_verify sa_internal_termbreak
++syn keyword sqlKeyword sa_order_preserving_hash sa_order_preserving_hash_big sa_order_preserving_hash_prefix
++syn keyword sqlKeyword schedule schema scope scripted scroll seconds secqty security
+ syn keyword sqlKeyword send sensitive sent serializable
+-syn keyword sqlKeyword server server session sets
++syn keyword sqlKeyword server server session set_bit set_bits sets
+ syn keyword sqlKeyword share simple since site size skip
+-syn keyword sqlKeyword snapshot soapheader some sorted_data
+-syn keyword sqlKeyword sqlcode sqlid sqlstate stacker stale statement
+-syn keyword sqlKeyword statistics status stogroup store
+-syn keyword sqlKeyword strip subpages subscribe subscription
+-syn keyword sqlKeyword subtransaction synchronization
++syn keyword sqlKeyword snapshot soapheader soap_header split some sorted_data
++syn keyword sqlKeyword sqlcode sqlid sqlflagger sqlstate sqrt square
++syn keyword sqlKeyword stacker stale statement statistics status stddev_pop stddev_samp
++syn keyword sqlKeyword stemmer stogroup stoplist store
++syn keyword sqlKeyword strip stripesizekb striping subpages subscribe subscription
++syn keyword sqlKeyword subtransaction suser_id suser_name synchronization
+ syn keyword sqlKeyword syntax_error table tablock
+-syn keyword sqlKeyword tablockx tb temp template temporary then
+-syn keyword sqlKeyword ties timezone to top tracing
+-syn keyword sqlKeyword transaction transactional tries true
++syn keyword sqlKeyword tablockx tb temp template temporary term then
++syn keyword sqlKeyword ties timezone to to_char to_nchar top traced_plan tracing
++syn keyword sqlKeyword transfer transaction transactional tries true
+ syn keyword sqlKeyword tsequal type tune uncommitted unconditionally
+-syn keyword sqlKeyword unenforced unique union unknown unload
+-syn keyword sqlKeyword updating updlock upgrade upload use user
++syn keyword sqlKeyword unenforced unicode unique union unistr unknown unlimited unload
++syn keyword sqlKeyword unpartition unquiesce updatetime updating updlock upgrade upload
++syn keyword sqlKeyword upper use user
+ syn keyword sqlKeyword using utc utilities validproc
+ syn keyword sqlKeyword value values varchar variable
+-syn keyword sqlKeyword varying vcat verify view virtual wait
+-syn keyword sqlKeyword warning web when where window with with_auto
++syn keyword sqlKeyword varying var_pop var_samp vcat verify versions view virtual wait
++syn keyword sqlKeyword warning wd web when where window with with_auto
+ syn keyword sqlKeyword with_auto with_cube with_rollup without
+-syn keyword sqlKeyword with_lparen within word work workload writefile
+-syn keyword sqlKeyword writers writeserver xlock zeros
++syn keyword sqlKeyword with_lparen within word work workload write writefile
++syn keyword sqlKeyword writeclientfile writer writers writeserver xlock zeros
+ " XML function support
+-syn keyword sqlFunction openxml xmlelement xmlforest xmlgen xmlconcat xmlagg
+-syn keyword sqlFunction xmlattributes
++syn keyword sqlFunction openxml xmlelement xmlforest xmlgen xmlconcat xmlagg
++syn keyword sqlFunction xmlattributes
+ syn keyword sqlKeyword raw auto elements explicit
+ " HTTP support
+-syn keyword sqlKeyword authorization secure url service
++syn keyword sqlKeyword authorization secure url service next_soap_header
+ " HTTP 9.0.2 new procedure keywords
+ syn keyword sqlKeyword namespace certificate clientport proxy
+ " OLAP support 9.0.0
+-syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept
++syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept
+ syn keyword sqlKeyword regr_count regr_r2 regr_avgx regr_avgy
+ syn keyword sqlKeyword regr_sxx regr_syy regr_sxy
+
+ " Alternate keywords
+ syn keyword sqlKeyword character dec options proc reference
+-syn keyword sqlKeyword subtrans tran syn keyword
++syn keyword sqlKeyword subtrans tran syn keyword
+
+
+ syn keyword sqlOperator in any some all between exists
+-syn keyword sqlOperator like escape not is and or
++syn keyword sqlOperator like escape not is and or
+ syn keyword sqlOperator intersect minus
+ syn keyword sqlOperator prior distinct
+
+@@ -496,43 +511,38 @@
+
+
+ syn keyword sqlType char long varchar text
+-syn keyword sqlType bigint decimal double float int integer numeric
++syn keyword sqlType bigint decimal double float int integer numeric
+ syn keyword sqlType smallint tinyint real
+ syn keyword sqlType money smallmoney
+-syn keyword sqlType bit
+-syn keyword sqlType date datetime smalldate time timestamp
++syn keyword sqlType bit
++syn keyword sqlType date datetime smalldate time timestamp
+ syn keyword sqlType binary image varbinary uniqueidentifier
+ syn keyword sqlType xml unsigned
+ " New types 10.0.0
+ syn keyword sqlType varbit nchar nvarchar
+
+ syn keyword sqlOption Allow_nulls_by_default
++syn keyword sqlOption Allow_read_client_file
++syn keyword sqlOption Allow_snapshot_isolation
++syn keyword sqlOption Allow_write_client_file
+ syn keyword sqlOption Ansi_blanks
+ syn keyword sqlOption Ansi_close_cursors_on_rollback
+-syn keyword sqlOption Ansi_integer_overflow
+ syn keyword sqlOption Ansi_permissions
++syn keyword sqlOption Ansi_substring
+ syn keyword sqlOption Ansi_update_constraints
+ syn keyword sqlOption Ansinull
+-syn keyword sqlOption Assume_distinct_servers
+ syn keyword sqlOption Auditing
+ syn keyword sqlOption Auditing_options
+-syn keyword sqlOption Auto_commit
+-syn keyword sqlOption Auto_refetch
+-syn keyword sqlOption Automatic_timestamp
+ syn keyword sqlOption Background_priority
+-syn keyword sqlOption Bell
+-syn keyword sqlOption Blob_threshold
+ syn keyword sqlOption Blocking
+ syn keyword sqlOption Blocking_timeout
+ syn keyword sqlOption Chained
+-syn keyword sqlOption Char_OEM_Translation
+ syn keyword sqlOption Checkpoint_time
+ syn keyword sqlOption Cis_option
+ syn keyword sqlOption Cis_rowset_size
+ syn keyword sqlOption Close_on_endtrans
+-syn keyword sqlOption Command_delimiter
+-syn keyword sqlOption Commit_on_exit
+-syn keyword sqlOption Compression
++syn keyword sqlOption Collect_statistics_on_dml_updates
++syn keyword sqlOption Conn_auditing
+ syn keyword sqlOption Connection_authentication
+ syn keyword sqlOption Continue_after_raiserror
+ syn keyword sqlOption Conversion_error
+@@ -543,125 +553,90 @@
+ syn keyword sqlOption Date_order
+ syn keyword sqlOption Debug_messages
+ syn keyword sqlOption Dedicated_task
++syn keyword sqlOption Default_dbspace
+ syn keyword sqlOption Default_timestamp_increment
+ syn keyword sqlOption Delayed_commit_timeout
+ syn keyword sqlOption Delayed_commits
+-syn keyword sqlOption Delete_old_logs
+-syn keyword sqlOption Describe_Java_Format
+-syn keyword sqlOption Divide_by_zero_error
+-syn keyword sqlOption Echo
+ syn keyword sqlOption Escape_character
+ syn keyword sqlOption Exclude_operators
+ syn keyword sqlOption Extended_join_syntax
+-syn keyword sqlOption External_remote_options
+ syn keyword sqlOption Fire_triggers
+ syn keyword sqlOption First_day_of_week
+-syn keyword sqlOption Float_as_double
+ syn keyword sqlOption For_xml_null_treatment
+ syn keyword sqlOption Force_view_creation
+ syn keyword sqlOption Global_database_id
+-syn keyword sqlOption Headings
+-syn keyword sqlOption Input_format
++syn keyword sqlOption Http_session_timeout
+ syn keyword sqlOption Integrated_server_name
+ syn keyword sqlOption Isolation_level
+-syn keyword sqlOption ISQL_command_timing
+-syn keyword sqlOption ISQL_escape_character
+-syn keyword sqlOption ISQL_field_separator
+-syn keyword sqlOption ISQL_log
+-syn keyword sqlOption ISQL_plan
+-syn keyword sqlOption ISQL_plan_cursor_sensitivity
+-syn keyword sqlOption ISQL_plan_cursor_writability
+-syn keyword sqlOption ISQL_quote
+-syn keyword sqlOption Java_heap_size
+-syn keyword sqlOption Java_input_output
+-syn keyword sqlOption Java_namespace_size
+-syn keyword sqlOption Java_page_buffer_size
++syn keyword sqlOption Java_location
++syn keyword sqlOption Java_main_userid
++syn keyword sqlOption Java_vm_options
+ syn keyword sqlOption Lock_rejected_rows
+ syn keyword sqlOption Log_deadlocks
+-syn keyword sqlOption Log_detailed_plans
+-syn keyword sqlOption Log_max_requests
+ syn keyword sqlOption Login_mode
+ syn keyword sqlOption Login_procedure
++syn keyword sqlOption Materialized_view_optimization
++syn keyword sqlOption Max_client_statements_cached
+ syn keyword sqlOption Max_cursor_count
+ syn keyword sqlOption Max_hash_size
+ syn keyword sqlOption Max_plans_cached
++syn keyword sqlOption Max_priority
++syn keyword sqlOption Max_query_tasks
+ syn keyword sqlOption Max_recursive_iterations
+ syn keyword sqlOption Max_statement_count
+-syn keyword sqlOption Max_work_table_hash_size
++syn keyword sqlOption Max_temp_space
+ syn keyword sqlOption Min_password_length
+ syn keyword sqlOption Nearest_century
+ syn keyword sqlOption Non_keywords
+-syn keyword sqlOption NULLS
+-syn keyword sqlOption ODBC_describe_binary_as_varbinary
+-syn keyword sqlOption ODBC_distinguish_char_and_varchar
+-syn keyword sqlOption On_Charset_conversion_failure
+-syn keyword sqlOption On_error
++syn keyword sqlOption Odbc_describe_binary_as_varbinary
++syn keyword sqlOption Odbc_distinguish_char_and_varchar
++syn keyword sqlOption Oem_string
++syn keyword sqlOption On_charset_conversion_failure
+ syn keyword sqlOption On_tsql_error
+-syn keyword sqlOption Optimistic_wait_for_commit
+ syn keyword sqlOption Optimization_goal
+ syn keyword sqlOption Optimization_level
+-syn keyword sqlOption Optimization_logging
+ syn keyword sqlOption Optimization_workload
+-syn keyword sqlOption Output_format
+-syn keyword sqlOption Output_length
+-syn keyword sqlOption Output_nulls
+-syn keyword sqlOption Percent_as_comment
+ syn keyword sqlOption Pinned_cursor_percent_of_cache
++syn keyword sqlOption Post_login_procedure
+ syn keyword sqlOption Precision
+ syn keyword sqlOption Prefetch
+ syn keyword sqlOption Preserve_source_format
+ syn keyword sqlOption Prevent_article_pkey_update
+-syn keyword sqlOption Qualify_owners
+-syn keyword sqlOption Query_plan_on_open
+-syn keyword sqlOption Quiet
+-syn keyword sqlOption Quote_all_identifiers
++syn keyword sqlOption Priority
++syn keyword sqlOption Query_mem_timeout
+ syn keyword sqlOption Quoted_identifier
+ syn keyword sqlOption Read_past_deleted
+ syn keyword sqlOption Recovery_time
+ syn keyword sqlOption Remote_idle_timeout
+ syn keyword sqlOption Replicate_all
+-syn keyword sqlOption Replication_error
+-syn keyword sqlOption Replication_error_piece
++syn keyword sqlOption Request_timeout
+ syn keyword sqlOption Return_date_time_as_string
+-syn keyword sqlOption Return_java_as_string
+-syn keyword sqlOption RI_Trigger_time
+ syn keyword sqlOption Rollback_on_deadlock
+ syn keyword sqlOption Row_counts
+-syn keyword sqlOption Save_remote_passwords
+ syn keyword sqlOption Scale
+-syn keyword sqlOption Screen_format
+-syn keyword sqlOption Sort_Collation
+-syn keyword sqlOption SQL_flagger_error_level
+-syn keyword sqlOption SQL_flagger_warning_level
+-syn keyword sqlOption SQLConnect
+-syn keyword sqlOption SQLStart
+-syn keyword sqlOption SR_Date_Format
+-syn keyword sqlOption SR_Time_Format
+-syn keyword sqlOption SR_TimeStamp_Format
+-syn keyword sqlOption Statistics
++syn keyword sqlOption Secure_feature_key
++syn keyword sqlOption Sort_collation
++syn keyword sqlOption Sql_flagger_error_level
++syn keyword sqlOption Sql_flagger_warning_level
+ syn keyword sqlOption String_rtruncation
+-syn keyword sqlOption Subscribe_by_remote
+ syn keyword sqlOption Subsume_row_locks
+-syn keyword sqlOption Suppress_TDS_debugging
+-syn keyword sqlOption TDS_Empty_string_is_null
++syn keyword sqlOption Suppress_tds_debugging
++syn keyword sqlOption Synchronize_mirror_on_commit
++syn keyword sqlOption Tds_empty_string_is_null
+ syn keyword sqlOption Temp_space_limit_check
+-syn keyword sqlOption Thread_count
+-syn keyword sqlOption Thread_stack
+-syn keyword sqlOption Thread_swaps
+ syn keyword sqlOption Time_format
+ syn keyword sqlOption Time_zone_adjustment
+ syn keyword sqlOption Timestamp_format
+-syn keyword sqlOption Truncate_date_values
+ syn keyword sqlOption Truncate_timestamp_values
+-syn keyword sqlOption Truncate_with_auto_commit
+-syn keyword sqlOption Truncation_length
+-syn keyword sqlOption Tsql_hex_constant
++syn keyword sqlOption Tsql_outer_joins
+ syn keyword sqlOption Tsql_variables
++syn keyword sqlOption Updatable_statement_isolation
+ syn keyword sqlOption Update_statistics
++syn keyword sqlOption Upgrade_database_capability
+ syn keyword sqlOption User_estimates
+-syn keyword sqlOption Verify_all_columns
+-syn keyword sqlOption Verify_threshold
++syn keyword sqlOption Verify_password_function
+ syn keyword sqlOption Wait_for_commit
++syn keyword sqlOption Webservice_namespace_host
+
+ " Strings and characters:
+ syn region sqlString start=+"+ end=+"+ contains=@Spell
+diff -u -r --new-file runtime/syntax.orig/sshconfig.vim runtime/syntax/sshconfig.vim
+--- runtime/syntax.orig/sshconfig.vim 2006-03-05 15:55:08.000000000 -0600
++++ runtime/syntax/sshconfig.vim 2009-07-26 06:44:10.000000000 -0500
+@@ -1,23 +1,21 @@
+ " Vim syntax file
+-" This is a GENERATED FILE. Please always refer to source file at the URI below.
+-" Language: OpenSSH server configuration file (ssh_config)
+-" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+-" Last Change: 2006-03-05
+-" URL: http://trific.ath.cx/Ftp/vim/syntax/sshconfig.vim
++" Language: OpenSSH client configuration file (ssh_config)
++" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
++" Last Change: 2009-07-09
+
+ " Setup
+ if version >= 600
+- if exists("b:current_syntax")
+- finish
+- endif
++ if exists("b:current_syntax")
++ finish
++ endif
+ else
+- syntax clear
++ syntax clear
+ endif
+
+ if version >= 600
+- setlocal iskeyword=_,-,a-z,A-Z,48-57
++ setlocal iskeyword=_,-,a-z,A-Z,48-57
+ else
+- set iskeyword=_,-,a-z,A-Z,48-57
++ set iskeyword=_,-,a-z,A-Z,48-57
+ endif
+
+ syn case ignore
+@@ -28,19 +26,21 @@
+
+ " Constants
+ syn keyword sshconfigYesNo yes no ask
+-syn keyword sshconfigCipher blowfish des 3des
++syn keyword sshconfigYesNo any auto
+ syn keyword sshconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc
+ syn keyword sshconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr
+ syn keyword sshconfigCipher arcfour arcfour128 arcfour256 cast128-cbc
+ syn keyword sshconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
+ syn keyword sshconfigMAC hmac-md5-96
++syn match sshconfigMAC "\<umac-64@openssh\.com\>"
+ syn keyword sshconfigHostKeyAlg ssh-rsa ssh-dss
+ syn keyword sshconfigPreferredAuth hostbased publickey password
+ syn keyword sshconfigPreferredAuth keyboard-interactive
+ syn keyword sshconfigLogLevel QUIET FATAL ERROR INFO VERBOSE
+ syn keyword sshconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3
+-syn keyword sshconfigSysLogFacility DAEMON USER AUTH LOCAL0 LOCAL1 LOCAL2
+-syn keyword sshconfigSysLogFacility LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
++syn keyword sshconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1
++syn keyword sshconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
++syn match sshconfigVar "%[rhpldun]\>"
+ syn match sshconfigSpecial "[*?]"
+ syn match sshconfigNumber "\d\+"
+ syn match sshconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>"
+@@ -49,57 +49,68 @@
+
+ " Keywords
+ syn keyword sshconfigHostSect Host
+-syn keyword sshconfigKeyword AddressFamily BatchMode BindAddress
++syn keyword sshconfigKeyword AddressFamily
++syn keyword sshconfigKeyword BatchMode BindAddress
+ syn keyword sshconfigKeyword ChallengeResponseAuthentication CheckHostIP
+ syn keyword sshconfigKeyword Cipher Ciphers ClearAllForwardings
+ syn keyword sshconfigKeyword Compression CompressionLevel ConnectTimeout
+ syn keyword sshconfigKeyword ConnectionAttempts ControlMaster
+-syn keyword sshconfigKeyword ControlPath DynamicForward EnableSSHKeysign
+-syn keyword sshconfigKeyword EscapeChar ForwardAgent ForwardX11
+-syn keyword sshconfigKeyword ForwardX11Trusted GSSAPIAuthentication
++syn keyword sshconfigKeyword ControlPath DynamicForward
++syn keyword sshconfigKeyword EnableSSHKeysign EscapeChar ExitOnForwardFailure
++syn keyword sshconfigKeyword ForwardAgent ForwardX11
++syn keyword sshconfigKeyword ForwardX11Trusted
++syn keyword sshconfigKeyword GSSAPIAuthentication
+ syn keyword sshconfigKeyword GSSAPIDelegateCredentials GatewayPorts
+-syn keyword sshconfigKeyword GlobalKnownHostsFile HostKeyAlgorithms
+-syn keyword sshconfigKeyword HashKnownHosts KbdInteractiveDevices
++syn keyword sshconfigKeyword GlobalKnownHostsFile
++syn keyword sshconfigKeyword HostKeyAlgorithms HashKnownHosts
+ syn keyword sshconfigKeyword HostKeyAlias HostName HostbasedAuthentication
+-syn keyword sshconfigKeyword IdentitiesOnly IdentityFile LocalForward
+-syn keyword sshconfigKeyword LogLevel MACs NoHostAuthenticationForLocalhost
+-syn keyword sshconfigKeyword NumberOfPasswordPrompts PasswordAuthentication
++syn keyword sshconfigKeyword IdentitiesOnly IdentityFile
++syn keyword sshconfigKeyword KbdInteractiveAuthentication KbdInteractiveDevices
++syn keyword sshconfigKeyword LocalCommand LocalForward LogLevel
++syn keyword sshconfigKeyword MACs
++syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost
++syn keyword sshconfigKeyword NumberOfPasswordPrompts
++syn keyword sshconfigKeyword PasswordAuthentication PermitLocalCommand
+ syn keyword sshconfigKeyword Port PreferredAuthentications Protocol
+ syn keyword sshconfigKeyword ProxyCommand PubkeyAuthentication
+-syn keyword sshconfigKeyword RSAAuthentication RemoteForward
+-syn keyword sshconfigKeyword RhostsAuthentication RhostsRSAAuthentication
++syn keyword sshconfigKeyword PermitLocalCommand
++syn keyword sshconfigKeyword RSAAuthentication RemoteForward RekeyLimit
++syn keyword sshconfigKeyword RhostsRSAAuthentication
+ syn keyword sshconfigKeyword SendEnv ServerAliveCountMax ServerAliveInterval
+ syn keyword sshconfigKeyword SmartcardDevice StrictHostKeyChecking
++syn keyword sshconfigKeyword Tunnel TunnelDevice
+ syn keyword sshconfigKeyword TCPKeepAlive UsePrivilegedPort User
+-syn keyword sshconfigKeyword UserKnownHostsFile VerifyHostKeyDNS XAuthLocation
++syn keyword sshconfigKeyword UserKnownHostsFile
++syn keyword sshconfigKeyword VerifyHostKeyDNS VisualHostKey
++syn keyword sshconfigKeyword XAuthLocation
+
+ " Define the default highlighting
+ if version >= 508 || !exists("did_sshconfig_syntax_inits")
+- if version < 508
+- let did_sshconfig_syntax_inits = 1
+- command -nargs=+ HiLink hi link <args>
+- else
+- command -nargs=+ HiLink hi def link <args>
+- endif
+-
+- HiLink sshconfigComment Comment
+- HiLink sshconfigTodo Todo
+- HiLink sshconfigHostPort sshconfigConstant
+- HiLink sshconfigNumber sshconfigConstant
+- HiLink sshconfigConstant Constant
+- HiLink sshconfigYesNo sshconfigEnum
+- HiLink sshconfigCipher sshconfigEnum
+- HiLink sshconfigMAC sshconfigEnum
+- HiLink sshconfigHostKeyAlg sshconfigEnum
+- HiLink sshconfigLogLevel sshconfigEnum
+- HiLink sshconfigSysLogFacility sshconfigEnum
+- HiLink sshconfigPreferredAuth sshconfigEnum
+- HiLink sshconfigEnum Function
+- HiLink sshconfigSpecial Special
+- HiLink sshconfigKeyword Keyword
+- HiLink sshconfigHostSect Type
+- delcommand HiLink
++ if version < 508
++ let did_sshconfig_syntax_inits = 1
++ command -nargs=+ HiLink hi link <args>
++ else
++ command -nargs=+ HiLink hi def link <args>
++ endif
++
++ HiLink sshconfigComment Comment
++ HiLink sshconfigTodo Todo
++ HiLink sshconfigHostPort sshconfigConstant
++ HiLink sshconfigNumber sshconfigConstant
++ HiLink sshconfigConstant Constant
++ HiLink sshconfigYesNo sshconfigEnum
++ HiLink sshconfigCipher sshconfigEnum
++ HiLink sshconfigMAC sshconfigEnum
++ HiLink sshconfigHostKeyAlg sshconfigEnum
++ HiLink sshconfigLogLevel sshconfigEnum
++ HiLink sshconfigSysLogFacility sshconfigEnum
++ HiLink sshconfigPreferredAuth sshconfigEnum
++ HiLink sshconfigVar sshconfigEnum
++ HiLink sshconfigEnum Identifier
++ HiLink sshconfigSpecial Special
++ HiLink sshconfigKeyword Keyword
++ HiLink sshconfigHostSect Type
++ delcommand HiLink
+ endif
+
+ let b:current_syntax = "sshconfig"
+-
+diff -u -r --new-file runtime/syntax.orig/sshdconfig.vim runtime/syntax/sshdconfig.vim
+--- runtime/syntax.orig/sshdconfig.vim 2006-03-05 15:55:08.000000000 -0600
++++ runtime/syntax/sshdconfig.vim 2009-07-26 06:41:55.000000000 -0500
+@@ -1,23 +1,21 @@
+ " Vim syntax file
+-" This is a GENERATED FILE. Please always refer to source file at the URI below.
+ " Language: OpenSSH server configuration file (sshd_config)
+-" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+-" Last Change: 2006-03-05
+-" URL: http://trific.ath.cx/Ftp/vim/syntax/sshdconfig.vim
++" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
++" Last Change: 2009-07-09
+
+ " Setup
+ if version >= 600
+- if exists("b:current_syntax")
+- finish
+- endif
++ if exists("b:current_syntax")
++ finish
++ endif
+ else
+- syntax clear
++ syntax clear
+ endif
+
+ if version >= 600
+- setlocal iskeyword=_,-,a-z,A-Z,48-57
++ setlocal iskeyword=_,-,a-z,A-Z,48-57
+ else
+- set iskeyword=_,-,a-z,A-Z,48-57
++ set iskeyword=_,-,a-z,A-Z,48-57
+ endif
+
+ syn case ignore
+@@ -27,78 +25,87 @@
+ syn keyword sshdconfigTodo TODO FIXME NOT contained
+
+ " Constants
+-syn keyword sshdconfigYesNo yes no
++syn keyword sshdconfigYesNo yes no none
++syn keyword sshdconfigAddressFamily any inet inet6
+ syn keyword sshdconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc
+ syn keyword sshdconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr
+ syn keyword sshdconfigCipher arcfour arcfour128 arcfour256 cast128-cbc
+ syn keyword sshdconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
+ syn keyword sshdconfigMAC hmac-md5-96
++syn match sshdconfigMAC "\<umac-64@openssh\.com\>"
+ syn keyword sshdconfigRootLogin without-password forced-commands-only
+ syn keyword sshdconfigLogLevel QUIET FATAL ERROR INFO VERBOSE
+ syn keyword sshdconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3
+-syn keyword sshdconfigSysLogFacility DAEMON USER AUTH LOCAL0 LOCAL1 LOCAL2
+-syn keyword sshdconfigSysLogFacility LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
++syn keyword sshdconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1
++syn keyword sshdconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
+ syn match sshdconfigSpecial "[*?]"
+ syn match sshdconfigNumber "\d\+"
+ syn match sshdconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>"
+ syn match sshdconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>"
++" FIXME: this matches quite a few things which are NOT valid IPv6 addresses
+ syn match sshdconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}:\d\+\>"
+ syn match sshdconfigTime "\<\(\d\+[sSmMhHdDwW]\)\+\>"
+
+ " Keywords
+-syn keyword sshdconfigKeyword AcceptEnv AddressFamily
++syn keyword sshdconfigMatch Host User Group Address
++syn keyword sshdconfigKeyword AcceptEnv AddressFamily AllowAgentForwarding
+ syn keyword sshdconfigKeyword AllowGroups AllowTcpForwarding
+-syn keyword sshdconfigKeyword AllowUsers AuthorizedKeysFile Banner
+-syn keyword sshdconfigKeyword ChallengeResponseAuthentication
++syn keyword sshdconfigKeyword AllowUsers AuthorizedKeysFile
++syn keyword sshdconfigKeyword Banner
++syn keyword sshdconfigKeyword ChallengeResponseAuthentication ChrootDirectory
+ syn keyword sshdconfigKeyword Ciphers ClientAliveCountMax
+ syn keyword sshdconfigKeyword ClientAliveInterval Compression
+-syn keyword sshdconfigKeyword DenyGroups DenyUsers GSSAPIAuthentication
+-syn keyword sshdconfigKeyword GSSAPICleanupCredentials GatewayPorts
+-syn keyword sshdconfigKeyword HostKey HostbasedAuthentication
++syn keyword sshdconfigKeyword DenyGroups DenyUsers
++syn keyword sshdconfigKeyword ForceCommand
++syn keyword sshdconfigKeyword GatewayPorts GSSAPIAuthentication
++syn keyword sshdconfigKeyword GSSAPICleanupCredentials
++syn keyword sshdconfigKeyword HostbasedAuthentication HostKey
+ syn keyword sshdconfigKeyword IgnoreRhosts IgnoreUserKnownHosts
+-syn keyword sshdconfigKeyword KerberosAuthentication KerberosOrLocalPasswd
+-syn keyword sshdconfigKeyword KerberosTgtPassing KerberosTicketCleanup
+-syn keyword sshdconfigKeyword KerberosGetAFSToken
+-syn keyword sshdconfigKeyword KeyRegenerationInterval ListenAddress
+-syn keyword sshdconfigKeyword LogLevel LoginGraceTime MACs MaxAuthTries
+-syn keyword sshdconfigKeyword MaxStartups PasswordAuthentication
+-syn keyword sshdconfigKeyword PermitEmptyPasswords PermitRootLogin
++syn keyword sshdconfigKeyword KerberosAuthentication KerberosGetAFSToken
++syn keyword sshdconfigKeyword KerberosOrLocalPasswd KerberosTicketCleanup
++syn keyword sshdconfigKeyword KeyRegenerationInterval
++syn keyword sshdconfigKeyword ListenAddress LoginGraceTime LogLevel
++syn keyword sshdconfigKeyword MACs Match MaxAuthTries MaxSessions MaxStartups
++syn keyword sshdconfigKeyword PasswordAuthentication PermitEmptyPasswords
++syn keyword sshdconfigKeyword PermitRootLogin PermitOpen PermitTunnel
+ syn keyword sshdconfigKeyword PermitUserEnvironment PidFile Port
+ syn keyword sshdconfigKeyword PrintLastLog PrintMotd Protocol
+-syn keyword sshdconfigKeyword PubkeyAuthentication RSAAuthentication
+-syn keyword sshdconfigKeyword RhostsAuthentication RhostsRSAAuthentication
+-syn keyword sshdconfigKeyword ServerKeyBits StrictModes Subsystem
+-syn keyword sshdconfigKeyword ShowPatchLevel
+-syn keyword sshdconfigKeyword SyslogFacility TCPKeepAlive UseDNS
+-syn keyword sshdconfigKeyword UseLogin UsePAM UsePrivilegeSeparation
++syn keyword sshdconfigKeyword PubkeyAuthentication
++syn keyword sshdconfigKeyword RhostsRSAAuthentication RSAAuthentication
++syn keyword sshdconfigKeyword ServerKeyBits ShowPatchLevel StrictModes
++syn keyword sshdconfigKeyword Subsystem SyslogFacility
++syn keyword sshdconfigKeyword TCPKeepAlive
++syn keyword sshdconfigKeyword UseDNS UseLogin UsePAM UsePrivilegeSeparation
+ syn keyword sshdconfigKeyword X11DisplayOffset X11Forwarding
+ syn keyword sshdconfigKeyword X11UseLocalhost XAuthLocation
+
+ " Define the default highlighting
+ if version >= 508 || !exists("did_sshdconfig_syntax_inits")
+- if version < 508
+- let did_sshdconfig_syntax_inits = 1
+- command -nargs=+ HiLink hi link <args>
+- else
+- command -nargs=+ HiLink hi def link <args>
+- endif
+-
+- HiLink sshdconfigComment Comment
+- HiLink sshdconfigTodo Todo
+- HiLink sshdconfigHostPort sshdconfigConstant
+- HiLink sshdconfigTime sshdconfigConstant
+- HiLink sshdconfigNumber sshdconfigConstant
+- HiLink sshdconfigConstant Constant
+- HiLink sshdconfigYesNo sshdconfigEnum
+- HiLink sshdconfigCipher sshdconfigEnum
+- HiLink sshdconfigMAC sshdconfigEnum
+- HiLink sshdconfigRootLogin sshdconfigEnum
+- HiLink sshdconfigLogLevel sshdconfigEnum
+- HiLink sshdconfigSysLogFacility sshdconfigEnum
+- HiLink sshdconfigEnum Function
+- HiLink sshdconfigSpecial Special
+- HiLink sshdconfigKeyword Keyword
+- delcommand HiLink
++ if version < 508
++ let did_sshdconfig_syntax_inits = 1
++ command -nargs=+ HiLink hi link <args>
++ else
++ command -nargs=+ HiLink hi def link <args>
++ endif
++
++ HiLink sshdconfigComment Comment
++ HiLink sshdconfigTodo Todo
++ HiLink sshdconfigHostPort sshdconfigConstant
++ HiLink sshdconfigTime sshdconfigConstant
++ HiLink sshdconfigNumber sshdconfigConstant
++ HiLink sshdconfigConstant Constant
++ HiLink sshdconfigYesNo sshdconfigEnum
++ HiLink sshdconfigAddressFamily sshdconfigEnum
++ HiLink sshdconfigCipher sshdconfigEnum
++ HiLink sshdconfigMAC sshdconfigEnum
++ HiLink sshdconfigRootLogin sshdconfigEnum
++ HiLink sshdconfigLogLevel sshdconfigEnum
++ HiLink sshdconfigSysLogFacility sshdconfigEnum
++ HiLink sshdconfigEnum Function
++ HiLink sshdconfigSpecial Special
++ HiLink sshdconfigKeyword Keyword
++ HiLink sshdconfigMatch Type
++ delcommand HiLink
+ endif
+
+ let b:current_syntax = "sshdconfig"
+diff -u -r --new-file runtime/syntax.orig/taskdata.vim runtime/syntax/taskdata.vim
+--- runtime/syntax.orig/taskdata.vim 1969-12-31 18:00:00.000000000 -0600
++++ runtime/syntax/taskdata.vim 2009-07-26 06:44:44.000000000 -0500
+@@ -0,0 +1,43 @@
++" Vim syntax file
++" Language: task data
++" Maintainer: John Florian <jflorian@doubledog.org>
++" Updated: Wed Jul 8 19:46:20 EDT 2009
++
++
++" For version 5.x: Clear all syntax items.
++" For version 6.x: Quit when a syntax file was already loaded.
++if version < 600
++ syntax clear
++elseif exists("b:current_syntax")
++ finish
++endif
++
++" Key Names for values.
++syn keyword taskdataKey description due end entry imask mask parent
++syn keyword taskdataKey priority project recur start status tags uuid
++syn match taskdataKey "annotation_\d\+"
++syn match taskdataUndo "^time.*$"
++syn match taskdataUndo "^\(old \|new \|---\)"
++
++" Values associated with key names.
++"
++" Strings
++syn region taskdataString matchgroup=Normal start=+"+ end=+"+
++ \ contains=taskdataEncoded,taskdataUUID,@Spell
++"
++" Special Embedded Characters (e.g., "&comma;")
++syn match taskdataEncoded "&\a\+;" contained
++" UUIDs
++syn match taskdataUUID "\x\{8}-\(\x\{4}-\)\{3}\x\{12}" contained
++
++
++" The default methods for highlighting. Can be overridden later.
++hi def link taskdataEncoded Function
++hi def link taskdataKey Statement
++hi def link taskdataString String
++hi def link taskdataUUID Special
++hi def link taskdataUndo Type
++
++let b:current_syntax = "taskdata"
++
++" vim:noexpandtab
+diff -u -r --new-file runtime/syntax.orig/taskedit.vim runtime/syntax/taskedit.vim
+--- runtime/syntax.orig/taskedit.vim 1969-12-31 18:00:00.000000000 -0600
++++ runtime/syntax/taskedit.vim 2009-07-26 06:44:44.000000000 -0500
+@@ -0,0 +1,35 @@
++" Vim syntax file
++" Language: support for 'task 42 edit'
++" Maintainer: John Florian <jflorian@doubledog.org>
++" Updated: Wed Jul 8 19:46:32 EDT 2009
++
++
++" For version 5.x: Clear all syntax items.
++" For version 6.x: Quit when a syntax file was already loaded.
++if version < 600
++ syntax clear
++elseif exists("b:current_syntax")
++ finish
++endif
++
++syn match taskeditHeading "^\s*#\s*Name\s\+Editable details\s*$" contained
++syn match taskeditHeading "^\s*#\s*-\+\s\+-\+\s*$" contained
++syn match taskeditReadOnly "^\s*#\s*\(UU\)\?ID:.*$" contained
++syn match taskeditReadOnly "^\s*#\s*Status:.*$" contained
++syn match taskeditReadOnly "^\s*#\s*i\?Mask:.*$" contained
++syn match taskeditKey "^ *.\{-}:" nextgroup=taskeditString
++syn match taskeditComment "^\s*#.*$"
++ \ contains=taskeditReadOnly,taskeditHeading
++syn match taskeditString ".*$" contained contains=@Spell
++
++
++" The default methods for highlighting. Can be overridden later.
++hi def link taskeditComment Comment
++hi def link taskeditHeading Function
++hi def link taskeditKey Statement
++hi def link taskeditReadOnly Special
++hi def link taskeditString String
++
++let b:current_syntax = "taskedit"
++
++" vim:noexpandtab
+diff -u -r --new-file runtime/syntax.orig/tcl.vim runtime/syntax/tcl.vim
+--- runtime/syntax.orig/tcl.vim 2006-11-17 13:25:54.000000000 -0600
++++ runtime/syntax/tcl.vim 2009-06-03 05:07:39.000000000 -0500
+@@ -1,13 +1,16 @@
+ " Vim syntax file
+-" Language: TCL/TK
+-" Maintainer: Brett Cannon <brett@python.org>
++" Language: Tcl/Tk
++" Maintainer: Taylor Venable <taylor@metasyntax.net>
++" (previously Brett Cannon <brett@python.org>)
+ " (previously Dean Copsey <copsey@cs.ucdavis.edu>)
+ " (previously Matt Neumann <mattneu@purpleturtle.com>)
+ " (previously Allan Kelly <allan@fruitloaf.co.uk>)
+ " Original: Robin Becker <robin@jessikat.demon.co.uk>
+-" Last Change: 2006 Nov 17
++" Last Change: 2009/04/06 02:38:36
++" Version: 1.13
++" URL: http://real.metasyntax.net:2357/cvs/cvsweb.cgi/Config/vim/syntax/tcl.vim
+ "
+-" Keywords TODO: format clock click anchor
++" Keywords TODO: click anchor
+
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -17,19 +20,40 @@
+ finish
+ endif
+
+-" A bunch of useful keywords
+-syn keyword tclStatement tell socket subst open eof pwd glob list exec pid
+-syn keyword tclStatement auto_load_index time unknown eval lrange fblocked
+-syn keyword tclStatement lsearch auto_import gets lappend proc variable llength
+-syn keyword tclStatement auto_execok return linsert error catch clock info
+-syn keyword tclStatement split array fconfigure concat join lreplace source
+-syn keyword tclStatement fcopy global auto_qualify update close cd auto_load
+-syn keyword tclStatement file append format read package set binary namespace
+-syn keyword tclStatement scan trace seek flush after vwait uplevel lset rename
+-syn keyword tclStatement fileevent regexp upvar unset encoding expr load regsub
+-syn keyword tclStatement interp exit puts incr lindex lsort tclLog string
++" Basic Tcl commands: http://www.tcl.tk/man/tcl8.5/TclCmd/contents.htm
++syn keyword tclCommand after append apply array bgerror binary catch cd chan clock
++syn keyword tclCommand close concat dde dict encoding eof error eval exec exit
++syn keyword tclCommand expr fblocked fconfigure fcopy file fileevent filename flush
++syn keyword tclCommand format gets glob global history incr info interp join
++syn keyword tclCommand lappend lassign lindex linsert list llength load lrange lrepeat
++syn keyword tclCommand lreplace lreverse lsearch lset lsort memory namespace open package
++syn keyword tclCommand pid proc puts pwd read regexp registry regsub rename return
++syn keyword tclCommand scan seek set socket source split string subst tell time
++syn keyword tclCommand trace unknown unload unset update uplevel upvar variable vwait
++
++" The 'Tcl Standard Library' commands: http://www.tcl.tk/man/tcl8.5/TclCmd/library.htm
++syn keyword tclCommand auto_execok auto_import auto_load auto_mkindex auto_mkindex_old
++syn keyword tclCommand auto_qualify auto_reset parray tcl_endOfWord tcl_findLibrary
++syn keyword tclCommand tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter
++syn keyword tclCommand tcl_wordBreakBefore
++
++" Commands that were added in Tcl 8.6
++
++syn keyword tclCommand my oo::copy oo::define oo::objdefine self
++syn keyword tclCommand coroutine tailcall throw yield
++
++" Global variables used by Tcl: http://www.tcl.tk/man/tcl8.5/TclCmd/tclvars.htm
++syn keyword tclVars env errorCode errorInfo tcl_library tcl_patchLevel tcl_pkgPath
++syn keyword tclVars tcl_platform tcl_precision tcl_rcFileName tcl_traceCompile
++syn keyword tclVars tcl_traceExec tcl_wordchars tcl_nonwordchars tcl_version argc argv
++syn keyword tclVars argv0 tcl_interactive geometry
++
++" Strings which expr accepts as boolean values, aside from zero / non-zero.
++syn keyword tclBoolean true false on off yes no
++
+ syn keyword tclLabel case default
+ syn keyword tclConditional if then else elseif switch
++syn keyword tclConditional try finally
+ syn keyword tclRepeat while for foreach break continue
+ syn keyword tcltkSwitch contained insert create polygon fill outline tag
+
+@@ -63,9 +87,14 @@
+ syn keyword tcltkWidgetSwitch contained delete names types create
+ " variable reference
+ " ::optional::namespaces
+-syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_.]*::\)*\)\a[a-zA-Z0-9_.]*"
++syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_]*::\)*\)\a[[:alnum:]_]*"
+ " ${...} may contain any character except '}'
+ syn match tclVarRef "${[^}]*}"
++
++" The syntactic unquote-splicing replacement for [expand].
++syn match tclExpand '\s{\*}'
++syn match tclExpand '^{\*}'
++
+ " menu, mane add
+ syn keyword tcltkWidgetSwitch contained active end last none cascade checkbutton command radiobutton separator
+ syn keyword tcltkWidgetSwitch contained activebackground actveforeground accelerator background bitmap columnbreak
+@@ -130,11 +159,10 @@
+
+ " EXPR
+ " commands associated with expr
+-syn keyword tcltkMaths contained acos cos hypot sinh
+-syn keyword tcltkMaths contained asin cosh log sqrt
+-syn keyword tcltkMaths contained atan exp log10 tan
+-syn keyword tcltkMaths contained atan2 floor pow tanh
+-syn keyword tcltkMaths contained ceil fmod sin
++syn keyword tcltkMaths contained abs acos asin atan atan2 bool ceil cos cosh double entier
++syn keyword tcltkMaths contained exp floor fmod hypot int isqrt log log10 max min pow rand
++syn keyword tcltkMaths contained round sin sinh sqrt srand tan tanh wide
++
+ syn region tcltkCommand matchgroup=tcltkCommandColor start="\<expr\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf
+
+ " format
+@@ -165,17 +193,26 @@
+
+ syn keyword tclTodo contained TODO
+
++" Sequences which are backslash-escaped: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M16
++" Octal, hexadecimal, unicode codepoints, and the classics.
++" Tcl takes as many valid characters in a row as it can, so \xAZ in a string is newline followed by 'Z'.
++syn match tclSpecial contained '\\\([0-7]\{1,3}\|x\x\{1,2}\|u\x\{1,4}\|[abfnrtv]\)'
++syn match tclSpecial contained '\\[\[\]\{\}\"\$]'
+
+-" String and Character contstants
+-" Highlight special characters (those which have a backslash) differently
+-syn match tclSpecial contained "\\\d\d\d\=\|\\."
++" Command appearing inside another command or inside a string.
++syn region tclEmbeddedStatement start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement
+ " A string needs the skip argument as it may legitimately contain \".
+ " Match at start of line
+ syn region tclString start=+^"+ end=+"+ contains=tclSpecial skip=+\\\\\|\\"+
+ "Match all other legal strings.
+-syn region tclString start=+[^\\]"+ms=s+1 end=+"+ contains=tclSpecial skip=+\\\\\|\\"+
++syn region tclString start=+[^\\]"+ms=s+1 end=+"+ contains=tclSpecial,tclVarRef,tclEmbeddedStatement skip=+\\\\\|\\"+
++
++" Line continuation is backslash immediately followed by newline.
++syn match tclLineContinue '\\$'
+
+-syn match tclLineContinue "\\\s*$"
++if exists('g:tcl_warn_continuation')
++ syn match tclNotLineContinue '\\\s\+$'
++endif
+
+ "integer number, or floating point number without a dot and with "f".
+ syn case ignore
+@@ -208,13 +245,13 @@
+ endif
+
+ HiLink tcltkSwitch Special
++ HiLink tclExpand Special
+ HiLink tclLabel Label
+ HiLink tclConditional Conditional
+ HiLink tclRepeat Repeat
+ HiLink tclNumber Number
+ HiLink tclError Error
+- HiLink tclStatement Statement
+- "HiLink tclStatementColor Statement
++ HiLink tclCommand Statement
+ HiLink tclString String
+ HiLink tclComment Comment
+ HiLink tclSpecial Special
+@@ -223,6 +260,9 @@
+ HiLink tcltkCommandColor Statement
+ HiLink tcltkWidgetColor Structure
+ HiLink tclLineContinue WarningMsg
++if exists('g:tcl_warn_continuation')
++ HiLink tclNotLineContinue ErrorMsg
++endif
+ HiLink tcltkStringSwitch Special
+ HiLink tcltkArraySwitch Special
+ HiLink tcltkLsortSwitch Special
+@@ -232,7 +272,6 @@
+ HiLink tcltkNamespaceSwitch Special
+ HiLink tcltkWidgetSwitch Special
+ HiLink tcltkPackConfColor Identifier
+- "HiLink tcltkLsort Statement
+ HiLink tclVarRef Identifier
+
+ delcommand HiLink
+@@ -240,4 +279,4 @@
+
+ let b:current_syntax = "tcl"
+
+-" vim: ts=8
++" vim: ts=8 noet
+diff -u -r --new-file runtime/syntax.orig/tcsh.vim runtime/syntax/tcsh.vim
+--- runtime/syntax.orig/tcsh.vim 2007-06-17 06:20:06.000000000 -0500
++++ runtime/syntax/tcsh.vim 2009-12-24 10:29:21.000000000 -0600
+@@ -1,6 +1,6 @@
+ " tcsh.vim: Vim syntax file for tcsh scripts
+-" Maintainer: Gautam Iyer <gi1242@users.sourceforge.net>
+-" Modified: Sat 16 Jun 2007 04:52:12 PM PDT
++" Maintainer: Gautam Iyer <gi1242@gmail.com>
++" Modified: Thu 17 Dec 2009 06:05:07 PM EST
+ "
+ " Description: We break up each statement into a "command" and an "end" part.
+ " All groups are either a "command" or part of the "end" of a statement (ie
+@@ -60,7 +60,7 @@
+ " alias and unalias (contains special aliases)
+ syn keyword tcshAliases contained beepcmd cwdcmd jobcmd helpcommand periodic precmd postcmd shell
+ syn keyword tcshBuiltin nextgroup=tcshAliCmd skipwhite alias unalias
+-syn match tcshAliCmd contained nextgroup=tcshAliEnd skipwhite '\v[\w-]+' contains=tcshAliases
++syn match tcshAliCmd contained nextgroup=tcshAliEnd skipwhite '\v(\w|-)+' contains=tcshAliases
+ syn region tcshAliEnd contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$\|;' contains=@tcshStatementEnds
+
+ " if statements
+@@ -197,7 +197,11 @@
+
+ " ----- Synchronising -----
+ if exists('tcsh_minlines')
+- exec 'syn sync minlines=' . tcsh_minlines
++ if tcsh_minlines == 'fromstart'
++ syn sync fromstart
++ else
++ exec 'syn sync minlines=' . tcsh_minlines
++ endif
+ else
+ syn sync minlines=100 " Some completions can be quite long
+ endif
+diff -u -r --new-file runtime/syntax.orig/tex.vim runtime/syntax/tex.vim
+--- runtime/syntax.orig/tex.vim 2008-07-29 14:43:38.000000000 -0500
++++ runtime/syntax/tex.vim 2010-01-12 14:39:39.000000000 -0600
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language: TeX
+ " Maintainer: Dr. Charles E. Campbell, Jr. <NdrchipO@ScampbellPfamily.AbizM>
+-" Last Change: Jun 03, 2008
+-" Version: 41
++" Last Change: Dec 28, 2009
++" Version: 46
+ " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+ "
+ " Notes: {{{1
+@@ -103,6 +103,7 @@
+ syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement
+ syn cluster texFoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texSectionMarker,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract
+ syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,@Spell
++syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,@Spell,texStyleMatcher
+ syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter
+ if !exists("tex_no_math")
+ syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
+@@ -179,24 +180,24 @@
+
+ " \begin{}/\end{} section markers: {{{1
+ syn match texSectionMarker "\\begin\>\|\\end\>" nextgroup=texSectionName
+-syn region texSectionName matchgroup=Delimiter start="{" end="}" contained nextgroup=texSectionModifier
+-syn region texSectionModifier matchgroup=Delimiter start="\[" end="]" contained
++syn region texSectionName matchgroup=Delimiter start="{" end="}" contained nextgroup=texSectionModifier contains=texComment
++syn region texSectionModifier matchgroup=Delimiter start="\[" end="]" contained contains=texComment
+
+ " \documentclass, \documentstyle, \usepackage: {{{1
+ syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texSectionName,texDocTypeArgs
+-syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texSectionName
++syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texSectionName contains=texComment
+
+ " Preamble syntax-based folding support: {{{1
+ if g:tex_fold_enabled && has("folding")
+- syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=@texMatchGroup
++ syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texMatchGroup
+ endif
+
+ " TeX input: {{{1
+ syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement
+-syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies
++syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
+ syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
+ syn match texInputCurlies "[{}]" contained
+-syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained
++syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained contains=texComment
+
+ " Type Styles (LaTeX 2.09): {{{1
+ syn match texTypeStyle "\\rm\>"
+@@ -309,7 +310,7 @@
+ exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
+ exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+ exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+- exe 'HiLink '.grpname.' texMath'
++ exe 'hi def link '.grpname.' texMath'
+ if a:starform
+ let grpname = "texMathZone".a:sfx.'S'
+ let syncname = "texSyncMathZone".a:sfx.'S'
+@@ -317,7 +318,7 @@
+ exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
+ exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+ exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+- exe 'HiLink '.grpname.' texMath'
++ exe 'hi def link '.grpname.' texMath'
+ endif
+ endfun
+
+@@ -399,7 +400,7 @@
+ " Separate lines used for verb` and verb# so that the end conditions {{{1
+ " will appropriately terminate. Ideally vim would let me save a
+ " character from the start pattern and re-use it in the end-pattern.
+-syn region texZone start="\\begin{verbatim}" end="\\end{verbatim}\|%stopzone\>" contains=@Spell
++syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell
+ " listings package:
+ syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" contains=@Spell
+ " moreverb package:
+@@ -456,6 +457,14 @@
+ " TeX String Delimiters: {{{1
+ syn match texString "\(``\|''\|,,\)"
+
++" makeatletter -- makeatother sections
++if !exists("g:tex_no_error")
++ syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained
++ syn match texStyleStatement "\\[a-zA-Z@]\+" contained
++ syn region texStyleMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained
++ syn region texStyleMatcher matchgroup=Delimiter start="\[" end="]" contains=@texStyleGroup,texError contained
++endif
++
+ " LaTeX synchronization: {{{1
+ syn sync maxlines=200
+ syn sync minlines=50
+@@ -507,6 +516,7 @@
+ HiLink texMathDelimSet2 texMathDelim
+ HiLink texMathDelimKey texMathDelim
+ HiLink texMathMatcher texMath
++ HiLink texMathZoneV texMath
+ HiLink texMathZoneW texMath
+ HiLink texMathZoneX texMath
+ HiLink texMathZoneY texMath
+@@ -516,6 +526,7 @@
+ HiLink texSectionMarker texCmdName
+ HiLink texSectionName texSection
+ HiLink texSpaceCode texStatement
++ HiLink texStyleStatement texStatement
+ HiLink texTypeSize texType
+ HiLink texTypeStyle texType
+
+diff -u -r --new-file runtime/syntax.orig/uil.vim runtime/syntax/uil.vim
+--- runtime/syntax.orig/uil.vim 2004-06-07 09:32:35.000000000 -0500
++++ runtime/syntax/uil.vim 2009-12-16 14:38:21.000000000 -0600
+@@ -1,8 +1,9 @@
+ " Vim syntax file
+ " Language: Motif UIL (User Interface Language)
+ " Maintainer: Thomas Koehler <jean-luc@picard.franken.de>
+-" Last Change: 2002 Sep 20
+-" URL: http://jeanluc-picard.de/vim/syntax/uil.vim
++" Last Change: 2009 Dec 04
++" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/uil.vim
++
+
+ " Quit when a syntax file was already loaded
+ if version < 600
+diff -u -r --new-file runtime/syntax.orig/updatedb.vim runtime/syntax/updatedb.vim
+--- runtime/syntax.orig/updatedb.vim 2007-10-25 09:36:25.000000000 -0500
++++ runtime/syntax/updatedb.vim 2009-06-13 07:38:40.000000000 -0500
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: updatedb.conf(5) configuration file
+ " Maintainer: Nikolai Weibull <now@bitwi.se>
+-" Latest Revision: 2007-10-25
++" Latest Revision: 2009-05-25
+
+ if exists("b:current_syntax")
+ finish
+@@ -18,7 +18,11 @@
+ syn match updatedbBegin display '^'
+ \ nextgroup=updatedbName,updatedbComment skipwhite
+
+-syn keyword updatedbName contained PRUNEFS PRUNEPATHS PRUNE_BIND_MOUNTS
++syn keyword updatedbName contained
++ \ PRUNEFS
++ \ PRUNENAMES
++ \ PRUNEPATHS
++ \ PRUNE_BIND_MOUNTS
+ \ nextgroup=updatedbNameEq
+
+ syn match updatedbNameEq contained display '=' nextgroup=updatedbValue
+diff -u -r --new-file runtime/syntax.orig/vim.vim runtime/syntax/vim.vim
+--- runtime/syntax.orig/vim.vim 2008-07-29 14:43:38.000000000 -0500
++++ runtime/syntax/vim.vim 2010-01-12 14:33:53.000000000 -0600
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language: Vim 7.2 script
+ " Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
+-" Last Change: July 29, 2008
+-" Version: 7.2-82
++" Last Change: Nov 18, 2009
++" Version: 7.2-95
+ " Automatically generated keyword lists: {{{1
+
+ " Quit when a syntax file was already loaded {{{2
+@@ -16,11 +16,11 @@
+ syn cluster vimCommentGroup contains=vimTodo,@Spell
+
+ " regular vim commands {{{2
+-syn keyword vimCommand contained abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] endt[ry] exu[sage] fin[d] foldc[lose] fu[nction] ha[rdcopy] helpt[ags] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lla[st] lmapc[lear] lnf[ile] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] n[ext] nu[mber] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sn[ext] snor[emap] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] verb[ose] vim[grep] vmapc[lear] wh[ile] win[size] wq wv[iminfo] xm[ap] XMLent xnoremenu
+-syn keyword vimCommand contained abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endw[hile] f[ile] fini[sh] folddoc[losed] go[to] h[elp] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] lh[elpgrep] lli[st] lnew[er] lNf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] N[ext] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] smapc[lear] sN[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] ve[rsion] vimgrepa[dd] vne[w] winc[md] wn[ext] wqa[ll] X xmapc[lear] XMLns xunme
+-syn keyword vimCommand contained al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] ene[w] files fir[st] foldd[oopen] gr[ep] helpf[ind] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] l[ist] lmak[e] lne[xt] ln[oremap] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbkey nmapc[lear] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] sme sni[ff] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] vert[ical] vi[sual] vs[plit] windo wN[ext] w[rite] xa[ll] xme xn[oremap] xunmenu
+-syn keyword vimCommand contained arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ex filetype fix[del] foldo[pen] grepa[dd] helpg[rep] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] ll lm[ap] lN[ext] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] new noh[lsearch] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] smenu sno[magic] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] up[date] vie[w] viu[sage] wa[ll] winp[os] wp[revious] ws[verb] x[it] xmenu xnoreme y[ank]
+-syn keyword vimCommand contained argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif] exi[t] fina[lly] fo[ld] for
++syn keyword vimCommand contained abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] en[dif] ex files fini[sh] foldc[lose] for grepa[dd] helpg[rep] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] ll lmapc[lear] lnf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] N[ext] ol[dfiles] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sN[ext] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] vert[ical] vi[sual] vs[plit] windo wN[ext] w[rite] xa[ll] xmenu xnoremenu
++syn keyword vimCommand contained abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endt[ry] exi[t] filetype fir[st] folddoc[losed] fu[nction] ha[rdcopy] helpt[ags] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lla[st] lnew[er] lNf[ile] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbkey nmapc[lear] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] sme sni[ff] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] up[date] vie[w] viu[sage] wa[ll] winp[os] wp[revious] ws[verb] x[it] XMLent xunme
++syn keyword vimCommand contained al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] endw[hile] exu[sage] fina[lly] fix[del] foldd[oopen] go[to] h[elp] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] lh[elpgrep] lli[st] lne[xt] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] new noh[lsearch] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] smenu sno[magic] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] verb[ose] vim[grep] vmapc[lear] wh[ile] win[size] wq wv[iminfo] xmapc[lear] XMLns xunmenu
++syn keyword vimCommand contained arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ene[w] f[ile] fin[d] fo[ld] foldo[pen] gr[ep] helpf[ind] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] l[ist] lmak[e] lN[ext] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] n[ext] nu[mber] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] sn[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] ve[rsion] vimgrepa[dd] vne[w] winc[md] wn[ext] wqa[ll] X xme xnoreme y[ank]
++syn keyword vimCommand contained argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f]
+ syn match vimCommand contained "\<z[-+^.=]"
+
+ " vimOptions are caught only when contained in a vimSet {{{2
+@@ -33,7 +33,7 @@
+ syn keyword vimOption contained altkeymap arabic autowrite backupcopy bdir bin bomb bt cd ci cinw co completefunc cp cscopetag csto debug dict dir eb enc errorbells expandtab fdl fenc fileformat fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatekey iminsert inde insertmode iskeyword keymodel laststatus lisp lpl magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste pex pmbcs printencoding prompt rdt ri
+
+ " vimOptions: These are the turn-off setting variants {{{2
+-syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscopeverbose nocuc nocursorline nodg nodisable noeb noedcompatible noendofline noequalalways noesckeys noex noexrc nofk nofoldenable nogdefault nohid nohk nohkmapp nohls noic noignorecase noimc noimd noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw noremap norevins norightleft norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx novisualbell nowarn noweirdinvert nowfw nowinfixheight nowiv nowrap nowrite nowritebackup
++syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscopeverbose nocuc nocursorline nodg noimdisable noeb noedcompatible noendofline noequalalways noesckeys noex noexrc nofk nofoldenable nogdefault nohid nohk nohkmapp nohls noic noignorecase noimc noimd noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw noremap norevins norightleft norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx novisualbell nowarn noweirdinvert nowfw nowinfixheight nowiv nowrap nowrite nowritebackup
+ syn keyword vimOption contained noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa nobeval nobiosk nobl nocf nocindent noconsk nocp nocst nocul nodeco nodiff noea noed noek noeol noerrorbells noet noexpandtab nofen nofkmap nogd noguipty nohidden nohkmap nohkp nohlsearch noicon noim noimcmdline noincsearch noinfercase nois nojs nolbr nolisp noloadplugins nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly norestorescreen nori norightleftcmd norlc nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast novb nowa nowb nowfh nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows
+ syn keyword vimOption contained noakm noanti noarab noari noautoindent noautowriteall nobackup nobin nobioskey nobomb noci nocompatible noconskey nocscopetag nocsverb nocursorcolumn nodelcombine nodigraph
+
+@@ -62,7 +62,7 @@
+ syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre Cmd-event CmdwinEnter CmdwinLeave ColorScheme CursorHold CursorHoldI CursorMoved CursorMovedI EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertEnter InsertLeave MenuPopup QuickFixCmdPost QuickFixCmdPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabEnter TabLeave TermChanged TermResponse User UserGettingBored VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave
+
+ " Highlight commonly used Groupnames {{{2
+-syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
++syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo None
+
+ " Default highlighting groups {{{2
+ syn keyword vimHLGroup contained Cursor CursorColumn CursorIM CursorLine DiffAdd DiffChange DiffDelete DiffText Directory ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
+@@ -99,8 +99,9 @@
+ syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
+ syn match vimIsCommand "\<\h\w*\>" contains=vimCommand
+ syn match vimVar "\<[bwglsav]:\K\k*\>"
+-syn match vimVar contained "\<\K\k*\>"
+-syn keyword vimCommand contained in
++syn match vimVar contained "\<\K\k*\>"
++syn match vimFBVar contained "\<[bwglsav]:\K\k*\>"
++syn keyword vimCommand contained in
+
+ " Insertions And Appends: insert append {{{2
+ " =======================
+@@ -127,7 +128,7 @@
+
+ " Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
+ " ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
+-syn cluster vimAugroupList contains=vimIsCommand,vimFunction,vimFunctionError,vimLineComment,vimSpecFile,vimOper,vimNumber,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
++syn cluster vimAugroupList contains=vimIsCommand,vimFuncName,vimFunction,vimFunctionError,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
+ if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'a'
+ syn region vimAugroup fold start="\<aug\%[roup]\>\s\+\K\k*" end="\<aug\%[roup]\>\s\+[eE][nN][dD]\>" contains=vimAugroupKey,vimAutoCmd,@vimAugroupList keepend
+ else
+@@ -141,156 +142,154 @@
+
+ " Operators: {{{2
+ " =========
+-syn cluster vimOperGroup contains=vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
+-syn match vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
+-syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile
+-syn region vimOperParen oneline matchgroup=vimOper start="(" end=")" contains=@vimOperGroup
+-syn region vimOperParen oneline matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar
++syn cluster vimOperGroup contains=vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
++syn match vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
++syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile
++syn region vimOperParen oneline matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
++syn region vimOperParen oneline matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
+ if !exists("g:vimsyn_noerror")
+- syn match vimOperError ")"
++ syn match vimOperError ")"
+ endif
+
+ " Functions : Tag is provided for those who wish to highlight tagged functions {{{2
+ " =========
+-syn cluster vimFuncList contains=vimCommand,vimFuncKey,Tag,vimFuncSID
+-syn cluster vimFuncBodyList contains=vimAddress,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimFunc,vimFunction,vimFunctionError,vimFuncVar,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUserCommand
+-if !exists("g:vimsyn_noerror")
+- syn match vimFunctionError "\<fu\%[nction]!\=\s\+\zs\U\i\{-}\ze\s*(" contains=vimFuncKey,vimFuncBlank nextgroup=vimFuncBody
+-endif
+-syn match vimFunction "\<fu\%[nction]!\=\s\+\(\(<[sS][iI][dD]>\|[Ss]:\|\u\|\i\+#\)\i*\|\(g:\)\=\(\I\i*\.\)\+\I\i*\)\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
++syn cluster vimFuncList contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
++syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUserCommand
++syn match vimFunction "\<fu\%[nction]!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
++
+ if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f'
+- syn region vimFuncBody contained fold start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList
++ syn region vimFuncBody contained fold start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList
+ else
+- syn region vimFuncBody contained start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList
++ syn region vimFuncBody contained start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList
+ endif
+-syn match vimFuncVar contained "a:\(\I\i*\|\d\+\)"
+-syn match vimFuncSID contained "\c<sid>\|\<s:"
+-syn keyword vimFuncKey contained fu[nction]
+-syn match vimFuncBlank contained "\s\+"
++syn match vimFuncVar contained "a:\(\K\k*\|\d\+\)"
++syn match vimFuncSID contained "\c<sid>\|\<s:"
++syn keyword vimFuncKey contained fu[nction]
++syn match vimFuncBlank contained "\s\+"
+
+-syn keyword vimPattern contained start skip end
++syn keyword vimPattern contained start skip end
+
+ " Special Filenames, Modifiers, Extension Removal: {{{2
+ " ===============================================
+-syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFileMod "\(:[phtre]\)\+" contained
++syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst
++syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst
++syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst
++syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst
++syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst
++syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst
++syn match vimSpecFileMod "\(:[phtre]\)\+" contained
+
+ " User-Specified Commands: {{{2
+ " =======================
+-syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFunction,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
+-syn keyword vimUserCommand contained com[mand]
+-syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserCommand,@vimUserCmdList
+-syn match vimUserAttrb contained "-n\%[args]=[01*?+]" contains=vimUserAttrbKey,vimOper
+-syn match vimUserAttrb contained "-com\%[plete]=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
+-syn match vimUserAttrb contained "-ra\%[nge]\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
+-syn match vimUserAttrb contained "-cou\%[nt]=\d\+" contains=vimNumber,vimOper,vimUserAttrbKey
+-syn match vimUserAttrb contained "-bang\=\>" contains=vimOper,vimUserAttrbKey
+-syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
+-syn match vimUserAttrb contained "-re\%[gister]\>" contains=vimOper,vimUserAttrbKey
++syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
++syn keyword vimUserCommand contained com[mand]
++syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserCommand,@vimUserCmdList
++syn match vimUserAttrb contained "-n\%[args]=[01*?+]" contains=vimUserAttrbKey,vimOper
++syn match vimUserAttrb contained "-com\%[plete]=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
++syn match vimUserAttrb contained "-ra\%[nge]\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
++syn match vimUserAttrb contained "-cou\%[nt]=\d\+" contains=vimNumber,vimOper,vimUserAttrbKey
++syn match vimUserAttrb contained "-bang\=\>" contains=vimOper,vimUserAttrbKey
++syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
++syn match vimUserAttrb contained "-re\%[gister]\>" contains=vimOper,vimUserAttrbKey
+ if !exists("g:vimsyn_noerror")
+- syn match vimUserCmdError contained "\S\+\>"
++ syn match vimUserCmdError contained "\S\+\>"
+ endif
+ syn case ignore
+-syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
+-syn keyword vimUserAttrbCmplt contained augroup buffer command dir environment event expression file function help highlight mapping menu option something tag tag_listfiles var
+-syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
+-syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError
++syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
++syn keyword vimUserAttrbCmplt contained augroup buffer command dir environment event expression file function help highlight mapping menu option shellcmd something tag tag_listfiles var
++syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
++syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError
+
+ syn case match
+-syn match vimUserAttrbCmplt contained "custom,\u\w*"
++syn match vimUserAttrbCmplt contained "custom,\u\w*"
+
+ " Lower Priority Comments: after some vim commands... {{{2
+ " =======================
+-syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
+-syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
+-syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
+-syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
++syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
++syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
++syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
++syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
+
+ " Environment Variables: {{{2
+ " =====================
+-syn match vimEnvvar "\$\I\i*"
+-syn match vimEnvvar "\${\I\i*}"
++syn match vimEnvvar "\$\I\i*"
++syn match vimEnvvar "\${\I\i*}"
+
+ " In-String Specials: {{{2
+ " Try to catch strings, if nothing else matches (therefore it must precede the others!)
+ " vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
+-syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
+-syn match vimPatSepErr contained "\\)"
+-syn match vimPatSep contained "\\|"
+-syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]" contains=@vimStringGroup
+-syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
+-syn match vimNotPatSep contained "\\\\"
+-syn cluster vimStringGroup contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
+-syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=@vimStringGroup
+-syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+
+-syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup
+-syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@vimStringGroup
+-syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup
+-syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
+-syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
++syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
++syn match vimPatSepErr contained "\\)"
++syn match vimPatSep contained "\\|"
++syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]" contains=@vimStringGroup
++syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
++syn match vimNotPatSep contained "\\\\"
++syn cluster vimStringGroup contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
++syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=@vimStringGroup
++syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+
++syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup
++syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@vimStringGroup
++syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup
++syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
++syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
+
+ " Substitutions: {{{2
+ " =============
+-syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
+-syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
+-syn cluster vimSubstList add=vimCollection
+-syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat
+-syn match vimSubst "s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat contained
+-syn match vimSubst "/\zss\%[ubstitute]\ze/" nextgroup=vimSubstPat
+-syn match vimSubst1 contained "s\%[ubstitute]\>" nextgroup=vimSubstPat
+-syn region vimSubstPat contained matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1 contains=@vimSubstList nextgroup=vimSubstRep4 oneline
+-syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
+-syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
+-syn match vimCollClassErr contained "\[:.\{-\}:\]"
+-syn match vimCollClass contained transparent "\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]"
+-syn match vimSubstSubstr contained "\\z\=\d"
+-syn match vimSubstTwoBS contained "\\\\"
+-syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
+-syn match vimSubstFlags contained "[&cegiIpr]\+"
++syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
++syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
++syn cluster vimSubstList add=vimCollection
++syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat
++syn match vimSubst "s\%[ubstitute][:#[:alpha:]]\@!" nextgroup=vimSubstPat contained
++syn match vimSubst "/\zss\%[ubstitute]\ze/" nextgroup=vimSubstPat
++syn match vimSubst1 contained "s\%[ubstitute]\>" nextgroup=vimSubstPat
++syn region vimSubstPat contained matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1 contains=@vimSubstList nextgroup=vimSubstRep4 oneline
++syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
++syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
++syn match vimCollClassErr contained "\[:.\{-\}:\]"
++syn match vimCollClass contained transparent "\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]"
++syn match vimSubstSubstr contained "\\z\=\d"
++syn match vimSubstTwoBS contained "\\\\"
++syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
++syn match vimSubstFlags contained "[&cegiIpr]\+"
+
+ " 'String': {{{2
+-syn match vimString "[^(,]'[^']\{-}\zs'"
++syn match vimString "[^(,]'[^']\{-}\zs'"
+
+ " Marks, Registers, Addresses, Filters: {{{2
+-syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimOper,vimMarkNumber,vimSubst
+-syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimOper,vimMarkNumber,vimSubst
+-syn match vimMark ",\zs'[<>]\ze" nextgroup=vimOper,vimMarkNumber,vimSubst
+-syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumber,vimSubst
+-syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumber,vimSubst
+-syn match vimMarkNumber "[-+]\d\+" nextgroup=vimSubst contained contains=vimOper
+-syn match vimPlainMark contained "'[a-zA-Z0-9]"
+-
+-syn match vimRegister '[^,;]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":]'
+-syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
+-syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
+-syn match vimRegister '@"'
+-syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
++syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimOper,vimMarkNumber,vimSubst
++syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimOper,vimMarkNumber,vimSubst
++syn match vimMark ",\zs'[<>]\ze" nextgroup=vimOper,vimMarkNumber,vimSubst
++syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumber,vimSubst
++syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumber,vimSubst
++syn match vimMarkNumber "[-+]\d\+" nextgroup=vimSubst contained contains=vimOper
++syn match vimPlainMark contained "'[a-zA-Z0-9]"
++
++syn match vimRegister '[^,;[{]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":]'
++syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
++syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
++syn match vimRegister '@"'
++syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
+
+-syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
+-syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
++syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
++syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
+
+-syn match vimFilter contained "^!.\{-}\(|\|$\)" contains=vimSpecFile
+-syn match vimFilter contained "\A!.\{-}\(|\|$\)"ms=s+1 contains=vimSpecFile
++syn match vimFilter contained "^!.\{-}\(|\|$\)" contains=vimSpecFile
++syn match vimFilter contained "\A!.\{-}\(|\|$\)"ms=s+1 contains=vimSpecFile
+
+ " Complex repeats (:h complex-repeat) {{{2
+-"syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]'lc=1
+-"syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\)'
++syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]'lc=1
++syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\)'
+
+ " Set command and associated set-options (vimOptions) with comment {{{2
+-syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|set\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
+-syn region vimSetEqual contained start="=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation oneline
+-syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
+-syn match vimSetSep contained "[,:]"
+-syn match vimSetMod contained "&vim\|[!&]\|all&"
++syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|set\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
++syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation oneline
++syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
++syn match vimSetSep contained "[,:]"
++syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
+
+ " Let {{{2
+ " ===
+-syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar
++syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar
+
+ " Abbreviations {{{2
+ " =============
+@@ -298,232 +297,235 @@
+
+ " Autocmd {{{2
+ " =======
+-syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
+-syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
+-syn match vimAutoCmdSfxList contained "\S*"
+-syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
++syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
++syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
++syn match vimAutoCmdSfxList contained "\S*"
++syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
+
+ " Echo and Execute -- prefer strings! {{{2
+ " ================
+-syn region vimEcho oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimString,varVar
+-syn region vimExecute oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimIsCommand,vimString,vimOper,vimVar,vimNotation,vimOperParen
+-syn match vimEchoHL "echohl\=" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
++syn region vimEcho oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar
++syn region vimExecute oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar
++syn match vimEchoHL "echohl\=" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
+ syn case ignore
+-syn keyword vimEchoHLNone none
++syn keyword vimEchoHLNone none
+ syn case match
+
+ " Maps {{{2
+ " ====
+-syn match vimMap "\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
+-syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] snor[emap] vm[ap] vn[oremap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+-syn keyword vimMap mapc[lear]
+-syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
+-syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs
+-syn match vimMapMod contained "\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
+-syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend
+-syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue
++syn match vimMap "\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
++syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
++syn keyword vimMap mapc[lear]
++syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
++syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
++syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs
++syn match vimMapMod contained "\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
++syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend
++syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue
+ syn case ignore
+-syn keyword vimMapModKey contained buffer expr leader localleader plug script sid silent unique
++syn keyword vimMapModKey contained buffer expr leader localleader plug script sid silent unique
+ syn case match
+
+ " Menus {{{2
+ " =====
+-syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
+-syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList
+-syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap
+-syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName
+-syn match vimMenuNameMore "\c\\\s\|<tab>\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
+-syn match vimMenuMod contained "\c<\(script\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
+-syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs
+-syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vimIsCommand
+-syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList
++syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
++syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList
++syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap
++syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName
++syn match vimMenuNameMore "\c\\\s\|<tab>\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
++syn match vimMenuMod contained "\c<\(script\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
++syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs
++syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vimIsCommand
++syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList
+
+ " Angle-Bracket Notation (tnx to Michael Geddes) {{{2
+ " ======================
+ syn case ignore
+-syn match vimNotation "\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|space\|k\=\(page\)\=\(\|down\|up\)\)>" contains=vimBracket
+-syn match vimNotation "\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket
+-syn match vimNotation "\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket
+-syn match vimNotation '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
+-syn match vimNotation '\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>' contains=vimBracket
+-syn match vimNotation "\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket
+-syn match vimBracket contained "[\\<>]"
++syn match vimNotation "\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|space\|k\=\(page\)\=\(\|down\|up\)\)>" contains=vimBracket
++syn match vimNotation "\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket
++syn match vimNotation "\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket
++syn match vimNotation '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
++syn match vimNotation '\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>' contains=vimBracket
++syn match vimNotation "\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket
++syn match vimBracket contained "[\\<>]"
+ syn case match
+
+ " User Function Highlighting {{{2
+ " (following Gautam Iyer's suggestion)
+ " ==========================
+-syn match vimFunc "\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute
+-syn match vimUserFunc contained "\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation
+-syn match vimNotFunc "\<if\>\|\<el\%[seif]\>"
++syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute
++syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation
++syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>"
+
+ " Errors And Warnings: {{{2
+ " ====================
+ if !exists("g:vimsyn_noerror")
+- syn match vimElseIfErr "\<else\s\+if\>"
+- syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
++ syn match vimFunctionError "\s\zs[a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
++" syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)[0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
++ syn match vimElseIfErr "\<else\s\+if\>"
++ syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
+ endif
+
+ " Norm {{{2
+ " ====
+-syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
+-syn match vimNormCmds contained ".*$"
++syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
++syn match vimNormCmds contained ".*$"
+
+ " Syntax {{{2
+ "=======
+-syn match vimGroupList contained "@\=[^ \t,]*" contains=vimGroupSpecial,vimPatSep
+-syn match vimGroupList contained "@\=[^ \t,]*," nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
+-syn keyword vimGroupSpecial contained ALL ALLBUT
+-if !exists("g:vimsyn_noerror")
+- syn match vimSynError contained "\i\+"
+- syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
+-endif
+-syn match vimSynContains contained "\<contain\(s\|edin\)=" nextgroup=vimGroupList
+-syn match vimSynKeyContainedin contained "\<containedin=" nextgroup=vimGroupList
+-syn match vimSynNextgroup contained "nextgroup=" nextgroup=vimGroupList
++syn match vimGroupList contained "@\=[^ \t,]*" contains=vimGroupSpecial,vimPatSep
++syn match vimGroupList contained "@\=[^ \t,]*," nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
++syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
++if !exists("g:vimsyn_noerror")
++ syn match vimSynError contained "\i\+"
++ syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
++endif
++syn match vimSynContains contained "\<contain\(s\|edin\)=" nextgroup=vimGroupList
++syn match vimSynKeyContainedin contained "\<containedin=" nextgroup=vimGroupList
++syn match vimSynNextgroup contained "nextgroup=" nextgroup=vimGroupList
+
+-syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
+-syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
++syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
++syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
+
+ " Syntax: case {{{2
+-syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
++syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
+ if !exists("g:vimsyn_noerror")
+- syn match vimSynCaseError contained "\i\+"
++ syn match vimSynCaseError contained "\i\+"
+ endif
+-syn keyword vimSynCase contained ignore match
++syn keyword vimSynCase contained ignore match
+
+ " Syntax: clear {{{2
+-syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
++syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
+
+ " Syntax: cluster {{{2
+-syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
+-syn region vimClusterName contained matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
+-syn match vimGroupAdd contained "add=" nextgroup=vimGroupList
+-syn match vimGroupRem contained "remove=" nextgroup=vimGroupList
++syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
++syn region vimClusterName contained matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
++syn match vimGroupAdd contained "add=" nextgroup=vimGroupList
++syn match vimGroupRem contained "remove=" nextgroup=vimGroupList
+
+ " Syntax: include {{{2
+-syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
++syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
+
+ " Syntax: keyword {{{2
+-syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
+-syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
+-syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
+-syn match vimSynKeyOpt contained "\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
++syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
++syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
++syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
++syn match vimSynKeyOpt contained "\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
+
+ " Syntax: match {{{2
+-syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
+-syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
+-syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
+-syn match vimSynMtchOpt contained "\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
++syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
++syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
++syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
++syn match vimSynMtchOpt contained "\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
+ if has("conceal")
+- syn match vimSynMtchOpt contained "\<cchar=" nextgroup=VimSynMtchCchar
+- syn match vimSynMtchCchar contained "."
++ syn match vimSynMtchOpt contained "\<cchar=" nextgroup=VimSynMtchCchar
++ syn match vimSynMtchCchar contained "\S"
+ endif
+
+ " Syntax: off and on {{{2
+-syn keyword vimSynType contained enable list manual off on reset
++syn keyword vimSynType contained enable list manual off on reset
+
+ " Syntax: region {{{2
+-syn cluster vimSynRegPatGroup contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
+-syn cluster vimSynRegGroup contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
+-syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
+-syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
+-syn match vimSynRegOpt contained "\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
+-syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat
+-syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
+-syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
+-syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
+-syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
+-syn match vimSynPatMod contained "lc=\d\+"
+-syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
+-syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
+-syn match vimSynNotPatRange contained "\\\\\|\\\["
+-syn match vimMtchComment contained '"[^"]\+$'
++syn cluster vimSynRegPatGroup contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
++syn cluster vimSynRegGroup contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
++syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
++syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
++syn match vimSynRegOpt contained "\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
++syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat
++syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
++syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
++syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
++syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
++syn match vimSynPatMod contained "lc=\d\+"
++syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
++syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
++syn match vimSynNotPatRange contained "\\\\\|\\\["
++syn match vimMtchComment contained '"[^"]\+$'
+
+ " Syntax: sync {{{2
+ " ============
+ syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
+ if !exists("g:vimsyn_noerror")
+- syn match vimSyncError contained "\i\+"
++ syn match vimSyncError contained "\i\+"
+ endif
+-syn keyword vimSyncC contained ccomment clear fromstart
+-syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
+-syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
+-syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
+-syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
+-syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
+-syn match vimSyncGroupName contained "\k\+" skipwhite nextgroup=vimSyncKey
+-syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
+-syn match vimSyncGroup contained "\k\+" skipwhite nextgroup=vimSynRegPat,vimSyncNone
+-syn keyword vimSyncNone contained NONE
++syn keyword vimSyncC contained ccomment clear fromstart
++syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
++syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
++syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
++syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
++syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
++syn match vimSyncGroupName contained "\k\+" skipwhite nextgroup=vimSyncKey
++syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
++syn match vimSyncGroup contained "\k\+" skipwhite nextgroup=vimSynRegPat,vimSyncNone
++syn keyword vimSyncNone contained NONE
+
+ " Additional IsCommand, here by reasons of precedence {{{2
+ " ====================
+-syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
++syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
+
+ " Highlighting {{{2
+ " ============
+-syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
+-syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
+-syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster
+-
+-syn match vimHiGroup contained "\i\+"
++syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
++syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
++syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster
++
++syn match vimHiGroup contained "\i\+"
+ syn case ignore
+-syn keyword vimHiAttrib contained none bold inverse italic reverse standout underline undercurl
+-syn keyword vimFgBgAttrib contained none bg background fg foreground
++syn keyword vimHiAttrib contained none bold inverse italic reverse standout underline undercurl
++syn keyword vimFgBgAttrib contained none bg background fg foreground
+ syn case match
+-syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
+-syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
++syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
++syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
+ syn case ignore
+-syn keyword vimHiCtermColor contained black blue brown cyan darkBlue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow
++syn keyword vimHiCtermColor contained black blue brown cyan darkBlue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow
+
+ syn case match
+-syn match vimHiFontname contained "[a-zA-Z\-*]\+"
+-syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
+-syn match vimHiGuiRgb contained "#\x\{6}"
++syn match vimHiFontname contained "[a-zA-Z\-*]\+"
++syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
++syn match vimHiGuiRgb contained "#\x\{6}"
+ if !exists("g:vimsyn_noerror")
+- syn match vimHiCtermError contained "[^0-9]\i*"
++ syn match vimHiCtermError contained "[^0-9]\i*"
+ endif
+
+ " Highlighting: hi group key=arg ... {{{2
+-syn cluster vimHiCluster contains=vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
+-syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster
++syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
++syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster
+ if !exists("g:vimsyn_noerror")
+- syn match vimHiKeyError contained "\i\+="he=e-1
++ syn match vimHiKeyError contained "\i\+="he=e-1
+ endif
+-syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
+-syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
+-syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
+-syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
+-syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
+-syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
+-syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
+-syn match vimHiTermcap contained "\S\+" contains=vimNotation
++syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
++syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
++syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
++syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
++syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
++syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
++syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
++syn match vimHiTermcap contained "\S\+" contains=vimNotation
+
+ " Highlight: clear {{{2
+-syn keyword vimHiClear contained clear nextgroup=vimHiGroup
++syn keyword vimHiClear contained clear nextgroup=vimHiGroup
+
+ " Highlight: link {{{2
+-syn region vimHiLink contained oneline matchgroup=vimCommand start="\<\(def\s\+\)\=link\>\|\<def\>" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
++syn region vimHiLink contained oneline matchgroup=vimCommand start="\<\(def\s\+\)\=link\>\|\<def\>" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
+
+ " Control Characters {{{2
+ " ==================
+-syn match vimCtrlChar "[- -]"
++syn match vimCtrlChar "[- -]"
+
+ " Beginners - Patterns that involve ^ {{{2
+ " =========
+-syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
+-syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
+-syn match vimContinue "^\s*\\"
+-syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
+-syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
++syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
++syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
++syn match vimContinue "^\s*\\"
++syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
++syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
+
+ " Searches And Globals: {{{2
+ " ====================
+-syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
+-syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
+-syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/'
+-syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/'
++syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
++syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
++syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/'
++syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/'
+
+ " Scripts : perl,ruby : Benoit Cerrina {{{2
+ " ======= python,tcl: Johannes Zellner
+@@ -541,94 +543,127 @@
+ endif
+
+ " [-- perl --] {{{3
+-if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(expand("<sfile>:p:h")."/perl.vim")
++let s:perlpath= expand("<sfile>:p:h")."/perl.vim"
++if !filereadable(s:perlpath)
++ let s:perlpath= globpath(&rtp,"syntax/perl.vim")
++endif
++if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(s:perlpath)
+ unlet! b:current_syntax
+- syn include @vimPerlScript <sfile>:p:h/perl.vim
++ exe "syn include @vimPerlScript ".s:perlpath
+ if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'p'
+- syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
+- syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
++ syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
++ syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
+ else
+- syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
+- syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
++ syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
++ syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
+ endif
++ syn cluster vimFuncBodyList add=vimPerlRegion
+ else
+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
+ endif
++unlet s:perlpath
+
+ " [-- ruby --] {{{3
+-if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(expand("<sfile>:p:h")."/ruby.vim")
++let s:rubypath= expand("<sfile>:p:h")."/ruby.vim"
++if !filereadable(s:rubypath)
++ let s:rubypath= globpath(&rtp,"syntax/ruby.vim")
++endif
++if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(s:rubypath)
+ unlet! b:current_syntax
+- syn include @vimRubyScript <sfile>:p:h/ruby.vim
++ exe "syn include @vimRubyScript ".s:rubypath
+ if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'r'
+- syn region vimRubyRegion fold matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
++ syn region vimRubyRegion fold matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
+ else
+- syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
++ syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
+ endif
+- syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
++ syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
++ syn cluster vimFuncBodyList add=vimRubyRegion
+ else
+ syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
+ endif
++unlet s:rubypath
+
+ " [-- python --] {{{3
+-if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(expand("<sfile>:p:h")."/python.vim")
++let s:pythonpath= expand("<sfile>:p:h")."/python.vim"
++if !filereadable(s:pythonpath)
++ let s:pythonpath= globpath(&rtp,"syntax/python.vim")
++endif
++if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(s:pythonpath)
+ unlet! b:current_syntax
+- syn include @vimPythonScript <sfile>:p:h/python.vim
++ exe "syn include @vimPythonScript ".s:pythonpath
+ if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'P'
+- syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
+- syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
++ syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
++ syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
+ else
+- syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
+- syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
++ syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
++ syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
+ endif
++ syn cluster vimFuncBodyList add=vimPythonRegion
+ else
+ syn region vimEmbedError start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+py\%[thon]\s*<<\s*$+ end=+\.$+
+ endif
++unlet s:pythonpath
+
+ " [-- tcl --] {{{3
+ if has("win32") || has("win95") || has("win64") || has("win16")
+ " apparently has("tcl") has been hanging vim on some windows systems with cygwin
+- let trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
++ let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
+ else
+- let trytcl= 1
++ let s:trytcl= 1
+ endif
+-if trytcl
+- if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(expand("<sfile>:p:h")."/tcl.vim")
++if s:trytcl
++ let s:tclpath= expand("<sfile>:p:h")."/tcl.vim"
++ if !filereadable(s:tclpath)
++ let s:tclpath= globpath(&rtp,"syntax/tcl.vim")
++ endif
++ if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(s:tclpath)
+ unlet! b:current_syntax
+- syn include @vimTclScript <sfile>:p:h/tcl.vim
++ exe "syn include @vimTclScript ".s:tclpath
+ if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 't'
+- syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
+- syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
++ syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
++ syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
+ else
+- syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
+- syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
++ syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
++ syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
+ endif
++ syn cluster vimFuncBodyList add=vimTclScript
++ else
++ syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
++ syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+ endif
++ unlet s:tclpath
+ else
+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+ endif
+-unlet trytcl
++unlet s:trytcl
+
+ " [-- mzscheme --] {{{3
+-if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(expand("<sfile>:p:h")."/scheme.vim")
++let s:mzschemepath= expand("<sfile>:p:h")."/scheme.vim"
++if !filereadable(s:mzschemepath)
++ let s:mzschemepath= globpath(&rtp,"syntax/scheme.vim")
++endif
++if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
+ unlet! b:current_syntax
+ let iskKeep= &isk
+- syn include @vimMzSchemeScript <sfile>:p:h/scheme.vim
++ exe "syn include @vimMzSchemeScript ".s:mzschemepath
+ let &isk= iskKeep
+ if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'm'
+- syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
+- syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
++ syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
++ syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
+ else
+- syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
+- syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
++ syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
++ syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
+ endif
++ syn cluster vimFuncBodyList add=vimMzSchemeRegion
+ else
+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
+ endif
++unlet s:mzschemepath
+
+ " Synchronize (speed) {{{2
+ "============
+@@ -643,6 +678,7 @@
+ syn sync linecont "^\s\+\\"
+ syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
+
++" ====================
+ " Highlighting Settings {{{2
+ " ====================
+
+@@ -709,15 +745,15 @@
+ hi def link vimMenuNameMore vimMenuName
+ hi def link vimMtchComment vimComment
+ hi def link vimNorm vimCommand
++hi def link vimNotFunc vimCommand
+ hi def link vimNotPatSep vimString
+-hi def link vimPatSepR vimPatSep
+-hi def link vimPatSepZ vimPatSep
+ hi def link vimPatSepErr vimPatSep
++hi def link vimPatSepR vimPatSep
+ hi def link vimPatSepZone vimString
++hi def link vimPatSepZ vimPatSep
+ hi def link vimPlainMark vimMark
+ hi def link vimPlainRegister vimRegister
+ hi def link vimSearch vimString
+-hi def link vimSearchDelim Statement
+ hi def link vimSetMod vimOption
+ hi def link vimSetString vimString
+ hi def link vimSpecFileMod vimSpecFile
+@@ -738,11 +774,11 @@
+ hi def link vimSynRegPat vimString
+ hi def link vimSyntax vimCommand
+ hi def link vimSynType vimSpecial
++hi def link vimUnmap vimMap
+ hi def link vimUserAttrbCmplt vimSpecial
+ hi def link vimUserAttrbKey vimOption
+ hi def link vimUserAttrb vimSpecial
+ hi def link vimUserCommand vimCommand
+-hi def link vimUserFunc Normal
+
+ hi def link vimAutoEvent Type
+ hi def link vimBracket Delimiter
+@@ -759,24 +795,25 @@
+ hi def link vimFuncName Function
+ hi def link vimFuncSID Special
+ hi def link vimFuncVar Identifier
+-hi def link vimGroup Type
+ hi def link vimGroupSpecial Special
+-hi def link vimHLMod PreProc
++hi def link vimGroup Type
+ hi def link vimHiAttrib PreProc
+ hi def link vimHiTerm Type
++hi def link vimHLMod PreProc
+ hi def link vimKeyword Statement
+ hi def link vimMark Number
+ hi def link vimMenuName PreProc
+ hi def link vimNotation Special
+-hi def link vimNotFunc vimCommand
+ hi def link vimNumber Number
++hi def link vimOperError Error
+ hi def link vimOper Operator
+ hi def link vimOption PreProc
+-hi def link vimOperError Error
++hi def link vimParenSep Delimiter
+ hi def link vimPatSep SpecialChar
+ hi def link vimPattern Type
+ hi def link vimRegister SpecialChar
+ hi def link vimScriptDelim Comment
++hi def link vimSearchDelim Statement
+ hi def link vimSep Delimiter
+ hi def link vimSetSep Statement
+ hi def link vimSpecFile Identifier
+@@ -786,18 +823,19 @@
+ hi def link vimSubstDelim Delimiter
+ hi def link vimSubstFlags Special
+ hi def link vimSubstSubstr SpecialChar
+-hi def link vimSynCase Type
+ hi def link vimSynCaseError Error
+-hi def link vimSynError Error
+-hi def link vimSynOption Special
+-hi def link vimSynReg Type
++hi def link vimSynCase Type
+ hi def link vimSyncC Type
+ hi def link vimSyncError Error
+ hi def link vimSyncKey Type
+ hi def link vimSyncNone Type
++hi def link vimSynError Error
++hi def link vimSynOption Special
++hi def link vimSynReg Type
+ hi def link vimTodo Todo
+-hi def link vimUserCmdError Error
+ hi def link vimUserAttrbCmpltFunc Special
++hi def link vimUserCmdError Error
++hi def link vimUserFunc Normal
+ hi def link vimWarn WarningMsg
+
+ " Current Syntax Variable: {{{2
+diff -u -r --new-file runtime/syntax.orig/xml.vim runtime/syntax/xml.vim
+--- runtime/syntax.orig/xml.vim 2006-04-11 16:32:00.000000000 -0500
++++ runtime/syntax/xml.vim 2009-07-26 06:44:44.000000000 -0500
+@@ -3,7 +3,7 @@
+ " Maintainer: Johannes Zellner <johannes@zellner.org>
+ " Author and previous maintainer:
+ " Paul Siegmann <pauls@euronet.nl>
+-" Last Change: Mi, 13 Apr 2005 22:40:09 CEST
++" Last Change: 2009-07-13 21:26:55
+ " Filenames: *.xml
+ " $Id: xml.vim,v 1.3 2006/04/11 21:32:00 vimboss Exp $
+
+@@ -216,7 +216,7 @@
+ syn region xmlComment
+ \ start=+<!+
+ \ end=+>+
+- \ contains=xmlCommentPart,xmlCommentError
++ \ contains=xmlCommentStart,xmlCommentError
+ \ extend
+ \ fold
+
+@@ -228,11 +228,12 @@
+ syn region xmlComment
+ \ start=+<!+
+ \ end=+>+
+- \ contains=xmlCommentPart,xmlCommentError
++ \ contains=xmlCommentStart,xmlCommentError
+ \ extend
+
+ endif
+
++syn match xmlCommentStart contained "<!" nextgroup=xmlCommentPart
+ syn keyword xmlTodo contained TODO FIXME XXX
+ syn match xmlCommentError contained "[^><!]"
+ syn region xmlCommentPart
+@@ -320,6 +321,7 @@
+
+ hi def link xmlString String
+ hi def link xmlComment Comment
++hi def link xmlCommentStart xmlComment
+ hi def link xmlCommentPart Comment
+ hi def link xmlCommentError Error
+ hi def link xmlError Error
+diff -u -r --new-file runtime/syntax.orig/yacc.vim runtime/syntax/yacc.vim
+--- runtime/syntax.orig/yacc.vim 2008-03-03 14:33:51.000000000 -0600
++++ runtime/syntax/yacc.vim 2008-12-08 15:08:36.000000000 -0600
+@@ -1,95 +1,85 @@
+ " Vim syntax file
+ " Language: Yacc
+ " Maintainer: Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
+-" Last Change: Jan 09, 2008
+-" Version: 5
++" Last Change: Oct 21, 2008
++" Version: 7
+ " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+ "
+ " Options: {{{1
+ " g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
+-" g:yacc_minlines : see :help :he syn-sync-minlines -- default 50
+-" g:yacc_maxlines : see :help :he syn-sync-maxlines -- default 200
+
+ " ---------------------------------------------------------------------
+-" For version 5.x: Clear all syntax items {{{1
+-" For version 6.x: Quit when a syntax file was already loaded
++" this version of syntax/yacc.vim requires 6.0 or later
+ if version < 600
+- syntax clear
+-elseif exists("b:current_syntax")
+- finish
++ finish
++endif
++if exists("b:current_syntax")
++ syntax clear
++endif
++
++" ---------------------------------------------------------------------
++" Folding Support {{{1
++if has("folding")
++ com! -nargs=+ HiFold <args> fold
++else
++ com! -nargs=+ HiFold <args>
+ endif
+
+ " ---------------------------------------------------------------------
+ " Read the C syntax to start with {{{1
+-if version >= 600
+- if exists("g:yacc_uses_cpp")
+- runtime! syntax/cpp.vim
+- else
+- runtime! syntax/c.vim
+- endif
+-elseif exists("g:yacc_uses_cpp")
+- so <sfile>:p:h/cpp.vim
++if exists("g:yacc_uses_cpp")
++ syn include @yaccCode <sfile>:p:h/cpp.vim
+ else
+- so <sfile>:p:h/c.vim
++ syn include @yaccCode <sfile>:p:h/c.vim
+ endif
+
+ " ---------------------------------------------------------------------
+-" Clusters {{{1
+-syn cluster yaccActionGroup contains=yaccDelim,cInParen,cTodo,cIncluded,yaccDelim,yaccCurlyError,yaccUnionCurly,yaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCommentStartError,cParenError
+-syn cluster yaccUnionGroup contains=yaccKey,cComment,yaccCurly,cType,cStructure,cStorageClass,yaccUnionCurly
+-
+-" ---------------------------------------------------------------------
+-" Yacc stuff {{{1
+-syn match yaccDelim "^\s*[:|;]"
+-syn match yaccOper "@\d\+"
+-
+-syn match yaccKey "^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"
+-syn match yaccKey "\s%\(prec\|expect\)\>"
+-syn match yaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
+-syn keyword yaccKeyActn yyerrok yyclearin
+-
+-syn match yaccUnionStart "^%union" skipwhite skipnl nextgroup=yaccUnion
+-syn region yaccUnion contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup
+-syn region yaccUnionCurly contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup
+-syn match yaccBrkt contained "[<>]"
+-syn match yaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=yaccBrkt
+-syn match yaccDefinition "^[A-Za-z][A-Za-z0-9_]*\_s*:"
+-
+-" ---------------------------------------------------------------------
+-" special Yacc separators {{{1
+-syn match yaccSectionSep "^[ \t]*%%"
+-syn match yaccSep "^[ \t]*%{"
+-syn match yaccSep "^[ \t]*%}"
++" Yacc Clusters: {{{1
++syn cluster yaccInitCluster contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment
++syn cluster yaccRulesCluster contains=yaccNonterminal,yaccString
++
++" ---------------------------------------------------------------------
++" Yacc Sections: {{{1
++HiFold syn region yaccInit start='.'ms=s-1,rs=s-1 matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=@yaccInitCluster nextgroup=yaccRules skipwhite skipempty contained
++HiFold syn region yaccInit2 start='\%^.'ms=s-1,rs=s-1 matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=@yaccInitCluster nextgroup=yaccRules skipwhite skipempty
++HiFold syn region yaccHeader2 matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty contained
++HiFold syn region yaccHeader matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty
++HiFold syn region yaccRules matchgroup=yaccSectionSep start='^%%$' end='^%%$'me=e-2,re=e-2 contains=@yaccRulesCluster nextgroup=yaccEndCode skipwhite skipempty contained
++HiFold syn region yaccEndCode matchgroup=yaccSectionSep start='^%%$' end='\%$' contains=@yaccCode contained
++
++" ---------------------------------------------------------------------
++" Yacc Commands: {{{1
++syn match yaccDelim "[:|]" contained
++syn match yaccOper "@\d\+" contained
++
++syn match yaccKey "^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>" contained
++syn match yaccKey "\s%\(prec\|expect\)\>" contained
++syn match yaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+" contained
++syn keyword yaccKeyActn yyerrok yyclearin contained
++
++syn match yaccUnionStart "^%union" skipwhite skipnl nextgroup=yaccUnion contained
++HiFold syn region yaccUnion matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccCode contained
++syn match yaccBrkt "[<>]" contained
++syn match yaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=yaccBrkt contained
++
++HiFold syn region yaccNonterminal start="^\s*\a\w*\ze\_s*\(/\*\_.\{-}\*/\)\=\_s*:" matchgroup=yaccDelim end=";" matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=yaccAction,yaccDelim,yaccString,yaccComment contained
++syn region yaccComment start="/\*" end="\*/"
++syn match yaccString "'[^']*'" contained
++
+
+ " ---------------------------------------------------------------------
+ " I'd really like to highlight just the outer {}. Any suggestions??? {{{1
+-syn match yaccCurlyError "[{}]"
+-syn region yaccAction matchgroup=yaccCurly start="{" end="}" contains=ALLBUT,@yaccActionGroup
++syn match yaccCurlyError "[{}]"
++HiFold syn region yaccAction matchgroup=yaccCurly start="{" end="}" contains=@yaccCode contained
+
+ " ---------------------------------------------------------------------
+ " Yacc synchronization: {{{1
+-if exists("g:yacc_maxlines")
+- exe "syn sync maxlines=".g:yacc_maxlines
+-else
+- syn sync maxlines=200
+-endif
+-if exists("g:yacc_minlines")
+- exe "syn sync minlines=".g:yacc_minlines
+-else
+- syn sync minlines=50
+-endif
++syn sync fromstart
+
+ " ---------------------------------------------------------------------
+ " Define the default highlighting. {{{1
+-" For version 5.7 and earlier: only when not done already
+-" For version 5.8 and later: only when an item doesn't have highlighting yet
+-if version >= 508 || !exists("did_yacc_syn_inits")
+- if version < 508
+- let did_yacchdl_syn_inits = 1
+- command -nargs=+ HiLink hi link <args>
+- else
+- command -nargs=+ HiLink hi def link <args>
+- endif
++if !exists("did_yacc_syn_inits")
++ command -nargs=+ HiLink hi def link <args>
+
+ " Internal yacc highlighting links {{{2
+ HiLink yaccBrkt yaccStmt
+@@ -98,13 +88,15 @@
+ HiLink yaccUnionStart yaccKey
+
+ " External yacc highlighting links {{{2
++ HiLink yaccComment Comment
+ HiLink yaccCurly Delimiter
+ HiLink yaccCurlyError Error
+- HiLink yaccDefinition Function
+- HiLink yaccDelim Function
++ HiLink yaccNonterminal Function
++ HiLink yaccDelim Delimiter
+ HiLink yaccKeyActn Special
+ HiLink yaccSectionSep Todo
+ HiLink yaccSep Delimiter
++ HiLink yaccString String
+ HiLink yaccStmt Statement
+ HiLink yaccType Type
+
+@@ -113,6 +105,10 @@
+
+ delcommand HiLink
+ endif
++
++" ---------------------------------------------------------------------
++" Cleanup: {{{1
++delcommand HiFold
+ let b:current_syntax = "yacc"
+
+ " ---------------------------------------------------------------------
+diff -u -r --new-file runtime/syntax.orig/zsh.vim runtime/syntax/zsh.vim
+--- runtime/syntax.orig/zsh.vim 2008-07-18 09:48:32.000000000 -0500
++++ runtime/syntax/zsh.vim 2010-02-11 06:45:15.000000000 -0600
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language: Zsh shell script
+ " Maintainer: Nikolai Weibull <now@bitwi.se>
+-" Latest Revision: 2008-07-17
++" Latest Revision: 2010-01-23
+
+ if exists("b:current_syntax")
+ finish
+@@ -14,7 +14,7 @@
+
+ syn keyword zshTodo contained TODO FIXME XXX NOTE
+
+-syn region zshComment display oneline start='\%(^\|\s\)#' end='$'
++syn region zshComment oneline start='\%(^\|\s\)#' end='$'
+ \ contains=zshTodo,@Spell
+
+ syn match zshPreProc '^\%1l#\%(!\|compdef\|autoload\).*$'
diff --git a/source/ap/vim/vim.SlackBuild b/source/ap/vim/vim.SlackBuild
index 460b07a1e..15904bcdd 100755
--- a/source/ap/vim/vim.SlackBuild
+++ b/source/ap/vim/vim.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,10 +24,20 @@ VIMVER=7.2
CTAGSVER=5.7
# This is the directory in the VIM source archive to cd into.
DIRVER=72
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
PYVER=$(python -V 2>&1 | cut -f 2 -d' ' | cut -f 1-2 -d.)
if [ "$ARCH" = "x86_64" ]; then
@@ -109,6 +119,21 @@ CFLAGS="$SLKCFLAGS" \
}
cd $TMP/vim$DIRVER
+
+# If there's no syntax update, create one:
+if ! ls $CWD/vim-runtime-syntax-* 1> /dev/null 2> /dev/null ; then
+ rm -rf runtime/syntax.orig
+ cp -a runtime/syntax runtime/syntax.orig
+ echo "Fetching vim syntax updates from ftp.nluug.nl..."
+ rsync -avzcP ftp.nluug.nl::Vim/runtime/syntax/ runtime/syntax/
+ diff -u -r --new-file runtime/syntax.orig runtime/syntax | gzip -9c > $CWD/vim-runtime-syntax-$(date +%Y%m%d).diff.gz
+ rm -rf runtime/syntax
+ mv runtime/syntax.orig runtime/syntax
+fi
+
+# Apply the syntax update:
+zcat $CWD/vim-runtime-syntax-*.diff.gz | patch -p0 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
diff --git a/source/ap/xfsdump/xfsdump.SlackBuild b/source/ap/xfsdump/xfsdump.SlackBuild
index 378d46de2..f293b6a38 100755
--- a/source/ap/xfsdump/xfsdump.SlackBuild
+++ b/source/ap/xfsdump/xfsdump.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=3.0.1
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo xfsdump-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-xfsdump
@@ -54,7 +63,7 @@ autoconf
./configure \
--prefix=/usr \
- --sbindir=/sbin \
+ --sbindir=/usr/sbin \
--bindir=/usr/sbin \
--enable-gettext=yes \
--mandir=/usr/man \
@@ -99,6 +108,16 @@ mkdir -p $PKG/usr/doc/xfsdump-$VERSION/html
cp -a *.gif *.html $PKG/usr/doc/xfsdump-$VERSION/html
)
+rm -f $PKG/usr/doc/xfsdump-$VERSION/CHANGES.gz
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r doc/CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat doc/CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r doc/CHANGES $DOCSDIR/CHANGES
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/ap/xfsdump/xfsdump.destdir.diff b/source/ap/xfsdump/xfsdump.destdir.diff
index 1772465dc..a42bb3a20 100644
--- a/source/ap/xfsdump/xfsdump.destdir.diff
+++ b/source/ap/xfsdump/xfsdump.destdir.diff
@@ -1,32 +1,19 @@
---- ./include/buildmacros.orig 2007-09-10 21:01:12.000000000 -0500
-+++ ./include/buildmacros 2008-04-01 00:06:53.000000000 -0500
-@@ -27,7 +27,7 @@
- $(LFILES:.l=.o) \
- $(YFILES:%.y=%.tab.o)
-
--INSTALL = $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP)
-+INSTALL = $(TOPDIR)/install-sh
+--- ./include/builddefs.in.orig 2010-01-12 19:53:18.000000000 -0600
++++ ./include/builddefs.in 2010-02-09 15:17:24.000000000 -0600
+@@ -32,13 +32,13 @@
+ datarootdir = @datarootdir@
+ top_builddir = @top_builddir@
- SHELL = /bin/sh
- IMAGES_DIR = $(TOPDIR)/all-images
---- ./include/builddefs.in.orig 2007-09-10 21:01:12.000000000 -0500
-+++ ./include/builddefs.in 2008-04-01 00:06:53.000000000 -0500
-@@ -30,14 +30,14 @@
- PKG_VERSION = @pkg_version@
- PKG_PLATFORM = @pkg_platform@
- PKG_DISTRIBUTION= @pkg_distribution@
--PKG_BIN_DIR = @bindir@
-PKG_SBIN_DIR = @sbindir@
--PKG_LIB_DIR = @libdir@@libdirsuffix@
--PKG_DEVLIB_DIR = @libexecdir@@libdirsuffix@
+-PKG_ROOT_SBIN_DIR = @root_sbindir@
+-PKG_ROOT_LIB_DIR= @root_libdir@@libdirsuffix@
-PKG_INC_DIR = @includedir@
-PKG_MAN_DIR = @mandir@
-PKG_DOC_DIR = @datadir@/doc/@pkg_name@
-PKG_LOCALE_DIR = @datadir@/locale
-+PKG_BIN_DIR = $(DESTDIR)@bindir@
+PKG_SBIN_DIR = $(DESTDIR)@sbindir@
-+PKG_LIB_DIR = $(DESTDIR)@libdir@@libdirsuffix@
-+PKG_DEVLIB_DIR = $(DESTDIR)@libexecdir@@libdirsuffix@
++PKG_ROOT_SBIN_DIR = $(DESTDIR)@root_sbindir@
++PKG_ROOT_LIB_DIR= $(DESTDIR)@root_libdir@@libdirsuffix@
+PKG_INC_DIR = $(DESTDIR)@includedir@
+PKG_MAN_DIR = $(DESTDIR)@mandir@
+PKG_DOC_DIR = $(DESTDIR)@datadir@/doc/@pkg_name@
@@ -34,3 +21,14 @@
CC = @cc@
AWK = @awk@
+--- ./include/buildmacros.orig 2010-01-12 19:53:18.000000000 -0600
++++ ./include/buildmacros 2010-02-09 15:15:47.000000000 -0600
+@@ -30,7 +30,7 @@
+ $(LFILES:.l=.o) \
+ $(YFILES:%.y=%.tab.o)
+
+-INSTALL = $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP)
++INSTALL = $(TOPDIR)/install-sh
+
+ SHELL = /bin/sh
+ IMAGES_DIR = $(TOPDIR)/all-images
diff --git a/source/d/autoconf/autoconf.SlackBuild b/source/d/autoconf/autoconf.SlackBuild
index 41dbfe9ea..7ed33f754 100755
--- a/source/d/autoconf/autoconf.SlackBuild
+++ b/source/d/autoconf/autoconf.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,23 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.63
-ARCH=noarch
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=2.65
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Note: the package is _built_ as 'noarch'
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-autoconf
@@ -35,7 +47,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf autoconf-$VERSION
-tar xvf $CWD/autoconf-$VERSION.tar.?z* || exit 1
+tar xvf $CWD/autoconf-$VERSION.tar.xz || exit 1
cd autoconf-$VERSION
chown -R root:root .
find . \
@@ -47,7 +59,8 @@ find . \
./configure \
--prefix=/usr \
--infodir=/usr/info \
- --mandir=/usr/man
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
@@ -66,5 +79,5 @@ zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/autoconf-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/autoconf-$VERSION-noarch-$BUILD.txz
diff --git a/source/d/automake/automake.SlackBuild b/source/d/automake/automake.SlackBuild
index c105dfeba..b7ef13c6b 100755
--- a/source/d/automake/automake.SlackBuild
+++ b/source/d/automake/automake.SlackBuild
@@ -21,11 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.10.1
-ARCH=${ARCH:-x86_64} # note: the package is _built_ as 'noarch'
+VERSION=1.11.1
NUMJOBS=${NUMJOBS:-" -j7 "}
BUILD=${BUILD:-1}
+# Note: the package is _built_ as 'noarch'
+# Automatically determine architecture for build & packaging:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-automake
@@ -46,6 +55,7 @@ find . \
./configure \
--prefix=/usr \
+ --mandir=/usr/man \
--infodir=/usr/info \
--build=$ARCH-slackware-linux
diff --git a/source/d/binutils/binutils-2.20.51.0.8.tar.sign b/source/d/binutils/binutils-2.20.51.0.8.tar.sign
new file mode 100644
index 000000000..321434264
--- /dev/null
+++ b/source/d/binutils/binutils-2.20.51.0.8.tar.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBLxPBQyGugalF9Dw4RAq+mAKCJbsksL4Hlb/tH9dL7kTbFE/BO8QCfXStv
+0oOljJ/jyU8Z8SlaEywyfys=
+=qMqR
+-----END PGP SIGNATURE-----
diff --git a/source/d/binutils/binutils.SlackBuild b/source/d/binutils/binutils.SlackBuild
index c83c29215..b0ffefb6e 100755
--- a/source/d/binutils/binutils.SlackBuild
+++ b/source/d/binutils/binutils.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,14 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.18.50.0.9
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
+PKGNAM=binutils
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-binutils
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -41,13 +48,18 @@ elif [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
fi
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-binutils
+
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf binutils-$VERSION
-tar xvf $CWD/binutils-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/binutils-$VERSION.tar.?z* || exit 1
cd binutils-$VERSION
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -60,6 +72,8 @@ CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
--with-docdir=/usr/doc/binutils-$VERSION \
--enable-shared \
--enable-multilib \
@@ -110,6 +124,15 @@ cp \
$CWD/release.binutils-* \
COPYING* ChangeLog.linux MAI* README* \
$PKG/usr/doc/binutils-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
chown -R root:root $PKG/usr/doc/binutils-$VERSION
# Add slack-desc:
diff --git a/source/d/binutils/release.binutils-2.18.50.0.9 b/source/d/binutils/release.binutils-2.18.50.0.9
deleted file mode 100644
index ecae5c083..000000000
--- a/source/d/binutils/release.binutils-2.18.50.0.9
+++ /dev/null
@@ -1,1028 +0,0 @@
-This is the beta release of binutils 2.18.50.0.9 for Linux, which is
-based on binutils 2008 0822 in CVS on sourceware.org plus various
-changes. It is purely for Linux.
-
-All relevant patches in patches have been applied to the source tree.
-You can take a look at patches/README to see what have been applied and
-in what order they have been applied.
-
-Starting from the 2.18.50.0.4 release, the x86 assembler no longer
-accepts
-
- fnstsw %eax
-
-fnstsw stores 16bit into %ax and the upper 16bit of %eax is unchanged.
-Please use
-
- fnstsw %ax
-
-Starting from the 2.17.50.0.4 release, the default output section LMA
-(load memory address) has changed for allocatable sections from being
-equal to VMA (virtual memory address), to keeping the difference between
-LMA and VMA the same as the previous output section in the same region.
-
-For
-
-.data.init_task : { *(.data.init_task) }
-
-LMA of .data.init_task section is equal to its VMA with the old linker.
-With the new linker, it depends on the previous output section. You
-can use
-
-.data.init_task : AT (ADDR(.data.init_task)) { *(.data.init_task) }
-
-to ensure that LMA of .data.init_task section is always equal to its
-VMA. The linker script in the older 2.6 x86-64 kernel depends on the
-old behavior. You can add AT (ADDR(section)) to force LMA of
-.data.init_task section equal to its VMA. It will work with both old
-and new linkers. The x86-64 kernel linker script in kernel 2.6.13 and
-above is OK.
-
-The new x86_64 assembler no longer accepts
-
- monitor %eax,%ecx,%edx
-
-You should use
-
- monitor %rax,%ecx,%edx
-
-or
- monitor
-
-which works with both old and new x86_64 assemblers. They should
-generate the same opcode.
-
-The new i386/x86_64 assemblers no longer accept instructions for moving
-between a segment register and a 32bit memory location, i.e.,
-
- movl (%eax),%ds
- movl %ds,(%eax)
-
-To generate instructions for moving between a segment register and a
-16bit memory location without the 16bit operand size prefix, 0x66,
-
- mov (%eax),%ds
- mov %ds,(%eax)
-
-should be used. It will work with both new and old assemblers. The
-assembler starting from 2.16.90.0.1 will also support
-
- movw (%eax),%ds
- movw %ds,(%eax)
-
-without the 0x66 prefix. Patches for 2.4 and 2.6 Linux kernels are
-available at
-
-http://www.kernel.org/pub/linux/devel/binutils/linux-2.4-seg-4.patch
-http://www.kernel.org/pub/linux/devel/binutils/linux-2.6-seg-5.patch
-
-The ia64 assembler is now defaulted to tune for Itanium 2 processors.
-To build a kernel for Itanium 1 processors, you will need to add
-
-ifeq ($(CONFIG_ITANIUM),y)
- CFLAGS += -Wa,-mtune=itanium1
- AFLAGS += -Wa,-mtune=itanium1
-endif
-
-to arch/ia64/Makefile in your kernel source tree.
-
-Please report any bugs related to binutils 2.18.50.0.9 to
-hjl.tools@gmail.com
-
-and
-
-http://www.sourceware.org/bugzilla/
-
-Changes from binutils 2.18.50.0.8:
-
-1. Update from binutils 2008 0822.
-2. Add Intel AES+AVX support.
-3. Add syscall and sysret for Cpu64 in x86 assembler.
-4. Fix i386/x86-64 TLS 2 support.
-5. Disable gas generated debug info when compiler generates it. PR
-gas/6656.
-6. Fix an assembler .set bug. PR 6848.
-7. Remove 2MB section gap from linker output. PR ld/6833.
-8. Fix stab warnings caused linker errors. PR 6478.
-9. Remove AVX registers from DWARF register map.
-10. Fix linking Linux .o against FreeBSD .so. PR 4424.
-11. Fix objcopy --extract-symbol. PR 6774.
-12. Improve gold.
-13. Improve mips GOT and non-PIC support.
-14. Fix various arms bugs.
-15. Fix various bfin bugs.
-16. Fix various frv bugs.
-17. Fix various h8300 bugs.
-18. Fix various ppc bugs.
-19. Fix various spu bugs.
-20. Fix various xtensa bugs.
-
-Changes from binutils 2.18.50.0.7:
-
-1. Update from binutils 2008 0709.
-2. Allow vmovd with 64bit operand in x86 assembler.
-3. Improve -msse-check in x86 assembler.
-4. Fix an AVX assembler bug in Intel syntax. PR 6517.
-5. Improve error message in Intel syntax for x86 assembler. PR 6518.
-6. Add the ".sse_check" directive to x86 assembler.
-7. Improve gold.
-8. Improve objcopy/strip. PR 2995/6473.
-9. Improve objdump -g. PR 6483.
-10. Improve ld --sort-common. PR 6430.
-11. Add multi-GOT support for m68k.
-12. Fix various arm bugs.
-13. Fix various avr bugs.
-14. Fix various hppa bugs.
-15. Fix various m68k bugs.
-16. Fix various mips bugs.
-17. Fix various mmix bugs.
-18. Fix various ppc bugs.
-19. Fix various spu bugs.
-20. Fix various xtensa bugs.
-
-Changes from binutils 2.18.50.0.6:
-
-1. Update from binutils 2008 0502.
-2. Add Intel EPT and MOVBE support.
-3. Correct Intel FMA operand order.
-4. Change Intel CLMUL to Intel PCLMUL.
-5. Add -msse-check to x86 assembler to warn SSE instruction where
-there is AVX equivalent.
-6. Provide backward compatibility for ELF object files with more
-than 64K sections generated by the older binutils. PR 6412.
-7. Improve FDPIC support.
-8. Add -wL switch to readelf to dump decoded contents of .debug_line.
-9. Add -ag switch to assembler show general information in listings.
-10. Improve objcopy symbol filtering performance. PR 6034.
-12. Correct think archive support.
-13. Improve ELF/Sparc support.
-14. Fix various mips bugs.
-15. Fix various sh bugs.
-16. Fix various spu bugs.
-
-Changes from binutils 2.18.50.0.5:
-
-1. Update from binutils 2008 0403.
-2. Add Intel AES, CLMUL, AVX/FMA support.
-3. Improve error handling in x86 linker for undefined hidden/internal
-symbols when building a shared object. PR ld/5789/5943.
-4. Add a new ELF linker, gold.
-5. Add think archive support.
-6. Fix various arm bugs.
-7. Fix various avr bugs.
-8. Fix various bfin bugs.
-9. Fix various hppa bugs.
-10. Fix various m68k bugs.
-11. Fix various mips bugs.
-12. Fix various s390 bugs.
-13. Fix various spu bugs.
-
-Changes from binutils 2.18.50.0.4:
-
-1. Update from binutils 2008 0314.
-2. Add Intel XSAVE new instruction support.
-3. Fix an ia64 linker crash on unsupported TLS relocations. PR 5913.
-4. Fix x86 assembler for gcc 4.3.
-5. Fix a linker memory corruption. PR 5788.
-6. Correct linker 64k section support. PR 5900.
-7. Correct hidden, weak and undefined symbol handling. PR 5789.
-8. Fix linker for 64bit targets on 32bit hosts. PR 5303/5755.
-9. Fix assembler crash with .set on register. PR 5543.
-10. Fix a typo in linker. PR 5765.
-11. Fix "string -O" infinite loop. PR 5713.
-12. Fix .exitm in assembler. PR 5895.
-13. Fix a linker crash. PR 5761.
-14. Fix various arm bugs.
-15. Fix various bfin bugs.
-16. Fix various h8 bugs.
-17. Fix various ppc bugs.
-18. Fix various spu bugs.
-19. Fix various xtensa bugs.
-
-Changes from binutils 2.18.50.0.3:
-
-1. Update from binutils 2008 0208.
-2. Update readelf/objdump to dump DWARF frame info with machine
-register names on x86.
-3. Optimize x86-64 assembler to omit REX.W prefix when it is ignored.
-4. Add operand size check to x86 assembler. PR 5534.
-5. Add -march=CPU[,+EXTENSION...], -mmnemonic, -msyntax, -mindex-reg,
--mnaked-reg and -mold-gcc options to x86 assembler.
-6. Add -Mintel-mnemonic/-Mintel-mnemonic options to x86 disassembler.
-7. Update x86 disassembler to handle r12 like rsp in memory operand.
-8. Update x86 disassembler to properly support movntq, movntsd,
-movntss, movntps, movntpd, movntdq and movntdqa.
-9. Update x86 disassembler to support AMD nops.
-10. Update x86 disassembler for cvtsi2ss/cvtsi2sd.
-11. Fix x86 assembler to support new instructions on 2 different archs.
-12. Update linker not to generate incorrect debug info for 64bit target
-on 32bit host. PR 5303.
-13. Update ia64 assembler to support new registers in Itanium 9100
-series.
-14. Fix strip on PT_NOTE segment. PR 5488.
-15. Fix strip/objcopy on HPUX/ia64. PR 5449.
-16. Fix strip/objcopy for EFI. PR 5307.
-17. Remove duplicated sections from objdump for COFF/PE. PR 5299.
-18. Fix a linker corruption. PR 5522.
-19. Fix mingw for 64bit targets.
-20. Fix various arm bugs.
-21. Fix various fr30 bugs.
-22. Fix various frv bugs.
-23. Fix various hppa bugs.
-24. Fix various m10300 bugs.
-25. Fix various m32r bugs.
-26. Fix various m68k bugs.
-27. Fix various mips bugs.
-28. Fix various ppc bugs.
-29. Fix various spu bugs.
-30. Fix various xtensa bugs.
-
-Changes from binutils 2.18.50.0.2:
-
-1. Update from binutils 2007 1102.
-2. Support link in Linux object files on FreeBSD. PR 4424.
-3. Add Intel SMX instruction support to x86 assembler/diasassembler.
-4. Fix an objcopy regression where we failed to adjust section
-flags. PR 5233.
-5. Improve irregular instruction support in x86 assembler.
-6. Improve support for instructions with restricted operands in x86
-diasassembler.
-7. Fix an x86-64 assembler bug where extra REX byte generated in Intel
-mode. PR 5109.
-8. Update .pushsection directive support in assembler. PRs 5221.
-9. Improve linker -z relro support.
-10. Add support for generating wide character strings in assembler.
-11. Improve relocation process for DWARF debug info in readelf.
-12. Add a linker warning for invalid merge section with unterminated
-strings.
-13. Improve linker support of DWARF debug info for discarded sections
-during linker-relaxation.
-14. Improve fabs detection. PR 5147.
-15. Improve non-bash support. PR 5215.
-16. Improve support for non-gcc compiler. PRs 5146/5160.
-17. Improve error messages. PRs 5172/5173/5161/5158/5155/
-5121-5126/5129/5131-5137/5143/5142/5078/5089/5090.
-18. Fix various cr16 bugs.
-19. Fix various m10300 bugs.
-20. Fix various mips bugs.
-21. Fix various ppc bugs.
-22. Fix various xtensa bugs.
-
-Changes from binutils 2.18.50.0.1:
-
-1. Update from binutils 2007 1001.
-2. Speed up hash table lookup in linker.
-3. Add -c/--archive-index option to readelf.
-4. Fix an readelf crash. PR 5011.
-5. Fix an x86 assembler Intel mode bug. PR 5080.
-6. Add EIP support in x86 assembler.
-7. Add fake index registers, EIZ/RIZ, to x86 assembler/disassembler.
-8. Improve x86 assembler error message for truncated values. PR 5026.
-9. Remove a COFF assertion in COFF assembler. PR 5035.
-10. Add AMD SSE5 support to x86 assembler/disassembler.
-11. Fix x86 assembler for extrq/insertq in Intel mode.
-12. Fix x86 disassembler for invalid opcodes in 64bit. PR 5072.
-13. Fix auto-import in PE-COFF linker. PR 4844.
-14. Correct -z now in ELF linker.
-15. Fix a --build-id linker crash. PR 5025.
-16. Improved x86 assembler/disassembler infrastructure for new
-instruction support.
-17. Fix various m68k bugs.
-18. Fix various ppc bugs.
-19. Fix various spu bugs.
-
-Changes from binutils 2.17.50.0.18:
-
-1. Update from binutils 2007 0908.
-2. Fix an ELF linker for SHT_NOBITS sections. PR 2864/5006.
-3. Improve TLS transition check in i386 and x86-64 linkers.
-4. Fix a GD->LE/LD->LE TLS transition bug in i386 and x86-64 linkers.
-PR 4918.
-5. Update ELF linker to dump segment map when a section can't be allocated
-in segment. PR 4909.
-6. Clean up x86 disassembler to remove fixups and make it more
-table driven.
-7. Fix x86 disassember for SSE instructions in Intel mode. PR 4834.
-8. Properly handle bss segments in ELF linker.
-9. Add --string-dump to readelf.
-10. Fix objcopy -R .debug_* --only-keep-debug regression. PR 4888.
-11. Change x86 assembler to follow SVME specification.
-12. Fix x86 assembler for cmpxchg8b, pextrb and pinsrb in Intel mode.
-13. Update x86 assembler to better handle expressions with @GOT suffix.
-PR 4079.
-14. Properly handle section alignment >= 128 byte for PECOFF.
-15. Fix an ELF linker --build-id option crash. PR 4923.
-16. Fix binutils build on HP-UX. PR 4875.
-17. Fix a regression of the a.out linker -N option. PR 4515.
-18. Update x86 disassembler for invlpg, fxsave, fxrstor, ldmxcsr and
-stmxcsr in Intel mode.
-19. Fix x86 assembler for SSE4 instructions in Intel mode.
-20. Fix various arm bugs.
-21. Fix various mips bugs.
-22. Fix various ppc bugs.
-23. Fix various spu bugs.
-24. Fix various xtensa bugs.
-
-Changes from binutils 2.17.50.0.17:
-
-1. Update from binutils 2007 0731.
-2. Switching from GPLv2 to GPLv3.
-3. Add a new ELF linker option, --build-id, to generate a unique
-per-binary identifier embedded in a note section.
-4. Remove COFF/x86-64 from PE-COFF/x86-64.
-5. Fix a "nm -l" crash on DWARF info. PR 4797.
-6. Match symbol type when creating symbol aliase in ELF shared library.
-7. Fix addr2line on relocatable linux kernel. PR 4756.
-8. Change disassembler to print addend as signed.
-9. Support section alignment from 128 to 8192 bytes for PE-COFF.
-10. Add attribute section to ELF linker.
-11. Fix ELF linker to meet gABI alignment requirement. PR 4701.
-12. Add support for reading in debug information via a .gnu_debuglink
-section.
-13. Fix string merge for ia64 linker. PR 4590.
-14. Add --common to size to display total size for *COM* syms.
-15. Fix "strip --strip-unneeded" on relocatable files. PR 4716.
-16. Fix "objcopy/strip --only-keep-debug" for SHT_NOTE sections.
-17. Fix objdump -S with unit-at-a-time.
-18. Properly handle "-shared -pie" in linker. PR 4409.
-19. Fix x86 disassembler in Intel mode for various SIMD instruction.
-PRs 4667/4834.
-20. Update x86-64 assembler to long nop sequence by default.
-21. Fix --32 for x86-64 mingw assembler.
-22. Fix a memory corruption in assembler. PR 4722.
-22. Properly support 64bit PE-COFF on hosts where long isn't 64bit.
-23. Add #line in generated linker source files.
-24. Fix linker crash on SIZEOF. PR 4782.
-27. Add CR16 support.
-28. Add windmc tool for Windows.
-29. Generate x86 instruction/register definitions from ascii tables.
-30. Fix strip for Solaris. PR 4712.
-31. Fix various mips bugs.
-32. Fix various ppc bugs.
-33. Fix various spu bugs.
-34. Fix various xtensa bugs.
-
-Changes from binutils 2.17.50.0.16:
-
-1. Update from binutils 2007 0615.
-2. Preserve section alignment for copy relocation. PR 4504.
-3. Properly fix regression with objcopy --only-keep-debug. PR 4479.
-4. Fix ELF eh frame handling. PR 4497.
-5. Fix ia64 string merge. PR 4590.
-5. Don't use PE target on EFI files nor EFI target on PE files.
-6. Speed up linker with many input files.
-7. Support cross compiling windres. PR 2737.
-8. Fix various windres bugs.
-9. Fix various arms bugs.
-10. Fix various m68k bugs.
-11. Fix various mips bugs.
-12. Fix various ppc bugs.
-13. Fix various sparc bugs.
-14. Fix various spu bugs.
-15. Fix various xtensa bugs.
-
-Changes from binutils 2.17.50.0.15:
-
-1. Update from binutils 2007 0511.
-2. Fix objcopy --only-keep-debug and linker multiple BSS sections handling.
-PR 4479.
-3. Fix "readelf -s -D" for gnu hash. PR 4476.
-4. Fix ia64 linker crash with --unresolved-symbols=ignore-all. PR 4409.
-5. Improve crc32 support in x86 assembler/dissassembler.
-6. Improve displacement handling in x86 dissassembler. PR 4430.
-7. Correct PC relative displacement handling in x86-64 dissassembler for
-Intel mode. PR 4429.
-8. Fix various PPC bugs.
-9. Fix various SPU bugs.
-10. Fix various ARM bugs.
-11. Fix various m68k bugs.
-12. Fix various xtensa bugs.
-
-Changes from binutils 2.17.50.0.14:
-
-1. Update from binutils 2007 0418.
-2. Support Intel SSE4 instructions.
-3. Fix linker --fatal-warnings for --warn-shared-textrel. PR 4304.
-4. Improve linker error message to identify linker script error
-location. PR 4090.
-5. Fix objcopy to allow removing all sections. PR 4348.
-6. Don't print addresses of 32-bit targets as 64-bit values on 64bit
-host. PR 4292.
-7. Improve checking for corrupted input files. PR 4110.
-8. Improve alpha linker performance.
-9. Add a new linker option, -l:foo.
-10. Fix a PPC linker bug. PR 4267.
-11. Misc vxworks bug fixes.
-12. Misc SH bug fixes.
-13. Misc SPU bug fixes.
-14. Misc ARM bug fixes.
-15. Misc MIPS bug fixes.
-16. Misc xtensa bug fixes.
-
-Changes from binutils 2.17.50.0.13:
-
-1. Update from binutils 2007 0322.
-2. Fix >16byte nop padding regression in x86 assembler.
-3. Fix x86-64 disassembler for xchg. PR 4218.
-4. Optimize opcode for x86-64 xchg.
-5. Allow register operand with x86 nop.
-6. Properly handle holes between sections for PE-COFF. PR 4210.
-7. Print more PE-COFF info for objdump -p.
-8. Report missing matching LO16 relocation for HI16 relocation in mips
-linker.
-9. Use PC-relative relocation for Win64.
-10. Fix strip for Solaris. PR 3535.
-11. Fix a C++ demangler crash.
-12. Some m32c update.
-13. Fix misc ARM bugs.
-
-Changes from binutils 2.17.50.0.12:
-
-1. Update from binutils 2007 0315.
-2. Add EFI/x86-64 support.
-3. Fix ELF linker for relocation against STN_UNDEF. PR 3958.
-4. Fix ELF linker for SHT_NOBITS section whose VMA > page size. PR 4144.
-5. Make assembler and disassembler consistent for "test %eax,%ebx". PR
-4027.
-6. Fix i386 32bit address wraparound. PR 3966.
-7. Allow Linux/i386 linker to read FreeBSD/i386 object files.
-8. Fix ELF linker crash upon use of .gnu.warning.<symbol> sections. PR
-3953.
-9. Fix ELF linker to issue an error on bad section in segment. PR 4007.
-10. Support enabling both x86_64-mingw32 and i386-mingw32. PR 3945.
-11. Fix assembler to stabilize .gcc_except_table relaxation. PR 4029.
-12. Fix a MIPS linker crash. PR 3852.
-13. Fix readelf for h8300-elf. PR 3800.
-14. Fix strip for Solaris. PR 3535.
-15. Misc xtensa bug fixes.
-16. Misc PPC bug fixes.
-17. Misc SPU bug fixes.
-18. Add support for Toshiba MeP.
-
-Changes from binutils 2.17.50.0.11:
-
-1. Update from binutils 2007 0128.
-2. Remove duplicate code in x86 assembler.
-3. Fix 32bit and 64bit HPPA/ELF.
-
-Changes from binutils 2.17.50.0.10:
-
-1. Update from binutils 2007 0125.
-2. Support environment variables, LD_SYMBOLIC for -Bsymbolic and
-LD_SYMBOLIC_FUNCTIONS for -Bsymbolic-functions.
-3. Build binutils rpm with LD_SYMBOLIC_FUNCTIONS=1 and reduce PLT
-relocations in libfd.so by 84%.
-4. Enable sharable sections only for ia32, x86-64 and ia64.
-5. Properly handle PT_GNU_RELRO segment for objcopy.
-
-Changes from binutils 2.17.50.0.9:
-
-1. Update from binutils 2007 0122.
-2. Implement sharable section proposal for ia32, x86-64 and ia64:
-
-http://groups-beta.google.com/group/generic-abi
-
-3. Implement linker enhancement, -Bsymbolic-functions,
---dynamic-list-cpp-new and --dynamic-list-data. PR 3831.
-4. Implement new linker switch, --default-script=FILE/-dT FILE.
-5. Check EI_OSABI when reading ELF files. PR 3826.
-6. Fix x86 assembler error message. PR 3830.
-7. Fix a bug in ld testsuite. PR 1283.
-8. Don't include archive64.o for 32bit target. PR 3631.
-9. Support -z max-page-size and -z common-page-size in user provided
-linker script.
-10. Fix 32bit library support for GNU/kFreeBSD/x86-64. PR 3843.
-11. Fix some bugs in Score assembler. PR 3871.
-12. Fix various bugs in ARM assembler. PR 3707 and more.
-13. Add Fido support.
-
-Changes from binutils 2.17.50.0.8:
-
-1. Update from binutils 2007 0103.
-2. Fix --wrap linker bug.
-3. Improve handling ELF binaries generated by foreign ELF linkers.
-4. Various ELF M68K bug fixes.
-5. Score bug fixes.
-6. Don't read past end of archive elements. PR 3704.
-7. Improve .eh_frame_hdr section handling.
-8. Fix symbol visibility with comdat/linkonce sections in ELF linker.
-PR 3666.
-9. Fix 4 operand instruction handling in x86 assembler.
-10. Properly check the 4th operand in x86 assembler. PR 3712.
-11. Fix .cfi_endproc handling in assembler. PR 3607.
-12. Various ARM bug fixes.
-13. Various PE linker fixes.
-14. Improve x86 dissassembler for cmpxchg16b.
-
-Changes from binutils 2.17.50.0.7:
-
-1. Update from binutils 2006 1201.
-2. Fix "objcopy --only-keep-debug" crash. PR 3609.
-3. Fix various ARM ELF bugs.
-4. Fix various xtensa bugs.
-5. Update x86 disassembler.
-
-Changes from binutils 2.17.50.0.6:
-
-1. Update from binutils 2006 1127.
-2. Properly set ELF output segment address when the first section in
-input segment is removed.
-3. Better merging of CIEs in linker .eh_frame optimizations.
-4. Support .cfi_personality and .cfi_lsda assembler directives.
-5. Fix an ARM linker crash. PR 3532.
-6. Fix various PPC64 ELF bugs.
-7. Mark discarded debug info more thoroughly in linker output.
-8. Fix various MIPS ELF bugs.
-9. Fix readelf to display program interpreter path > 64 chars. PR 3384.
-10. Add support for PowerPC SPU.
-11. Properly handle cloned symbols used in relocations in assembler. PR
-3469.
-12. Update opcode for POPCNT in amdfam10 architecture.
-
-Changes from binutils 2.17.50.0.5:
-
-1. Update from binutils 2006 1020.
-2. Don't make debug symbol dynamic. PR 3290.
-3. Don't page align empty SHF_ALLOC sections, which leads to very large
-executables. PR 3314.
-4. Use a different section index for section relative symbols against
-removed empty sections.
-5. Fix a few ELF EH frame handling bugs.
-6. Don't ignore relocation overflow on branches to undefweaks for
-x86-64. PR 3283.
-7. Rename MNI to SSSE3.
-8. Properly append symbol list for --dynamic-list.
-lists.
-9. Various ARM ELF fixes.
-10. Correct 64bit library search path for Linux/x86 linker with 64bit
-support.
-11. Fix ELF linker to copy OS/PROC specific flags from input section to
-output section.
-12. Fix DW_FORM_ref_addr handling in linker dwarf reader. PR 3191.
-13. Fix ELF indirect symbol handling. PR 3351.
-14. Fix PT_GNU_RELRO segment handling for SHF_TLS sections. Don't add
-PT_GNU_RELRO segment when there are no relro sections. PR 3281.
-15. Various MIPS ELF fixes.
-16. Various Sparc ELF fixes.
-17. Various Xtensa ELF fixes.
-
-Changes from binutils 2.17.50.0.4:
-
-1. Update from binutils 2006 0927.
-2. Fix linker regressions of section address and section relative symbol
-with empty output section. PR 3223/3267.
-3. Fix "strings -T". PR 3257.
-4. Fix "objcopy --only-keep-debug". PR 3262.
-5. Add Intell iwmmxt2 support.
-6. Fix an x86 disassembler bug. PR 3100.
-
-Changes from binutils 2.17.50.0.3:
-
-1. Update from binutils 2006 0924.
-2. Speed up linker on .o files with debug info on linkonce sections.
-PR 3111.
-3. Added x86-64 PE support.
-4. Fix objcopy/strip on .o files with section groups. PR 3181.
-5. Fix "ld --hash-style=gnu" crash with gcc 3.4.6. PR 3197.
-6. Fix "strip --strip-debug" on .o files generated with
-"gcc -feliminate-dwarf2-dups". PR 3186.
-7. Fix "ld -r" on .o files generated with "gcc -feliminate-dwarf2-dups".
-PR 3249.
-8. Add --dynamic-list to linker to make global symbols dynamic.
-9. Fix magic number for EFI ia64. PR 3171.
-10. Remove PT_NULL segment for "ld -z relro". PR 3015.
-11. Make objcopy to perserve the file formats in archive elements.
-PR 3110.
-12. Optimize x86-64 assembler and fix disassembler for
-"add32 mov xx,$eax". PR 3235.
-13. Improve linker diagnostics. PR 3107.
-14. Fix "ld --sort-section name". PR 3009.
-15. Updated an x86 disassembler bug. PR 3000.
-16. Various updates for PPC, ARM, MIPS, SH, Xtensa.
-17. Added Score support.
-
-Changes from binutils 2.17.50.0.2:
-
-1. Update from binutils 2006 0715.
-2. Add --hash-style to ELF linker with DT_GNU_HASH and SHT_GNU_HASH.
-3. Fix a visibility bug in ELF linker (PR 2884).
-4. Properly fix the i386 TLS linker bug (PR 2513).
-5. Add assembler and dissassembler support for Pentium Pro nops.
-6. Optimize x86 nops for Pentium Pro and above.
-7. Add -march=/-mtune= to x86 assembler.
-8. Fix an ELF linker with TLS common symbols.
-9. Improve program header allocation in ELF linker.
-10. Improve MIPS, M68K and ARM support.
-11. Fix an ELF linker crash when reporting alignment change (PR 2735).
-12. Remove unused ELF section symbols (PR 2723).
-13. Add --localize-hidden to objcopy.
-14. Add AMD SSE4a and ABM new instruction support.
-15. Properly handle illegal x86 instructions in group 11 (PR 2829).
-16. Add "-z max-page-size=" and "-z common-page-size=" to ELF linker.
-17. Fix objcopy for .tbss sections.
-
-Changes from binutils 2.17.50.0.1:
-
-1. Update from binutils 2006 0526.
-2. Change the x86-64 maximum page size to 2MB.
-3. Support --enable-targets=all for 64bit target and host (PR 1485).
-4. Properly update CIE/FDE length and align section for .eh_frame
-section (PR 2655/2657).
-5. Properly handle removed ELF section symbols.
-6. Fix an ELF linker regression introduced on 2006-04-21.
-7. Fix an segfault in PPC ELF linker (PR 2658).
-8. Speed up the ELF linker by caching the result of kept section check.
-9. Properly create stabs section for ELF.
-10. Preserve ELF program header when copying ELF files.
-11. Properly handle ELF SHN_LOPROC/SHN_HIOS when checking section
-index (PR 2607).
-12. Misc mips updates.
-13. Misc arm updates.
-14. Misc xtensa updates.
-15. Fix an alpha assembler warning (PR 2598).
-16. Fix assembler buffer overflow.
-17. Properly disassemble sgdt/sidt for x86-64.
-
-Changes from binutils 2.16.91.0.7:
-
-1. Update from binutils 2006 0427.
-2. Fix an objcopy regression (PR 2593).
-3. Reduce ar memory usage (PR 2467).
-4. Allow application specific ELF sections (PR 2537).
-5. Fix an i386 TLS linker bug (PR 2513).
-6. Speed up ia64 linker by 1300X in some cases (PR 2442).
-7. Check illegal immediate register operand in i386 assembler (PR
-2533).
-8. Fix a strings bug (PR 2584).
-9. Better handle corrupted ELF files (PR 2257).
-10. Fix a MIPS linker bug (PR 2267).
-
-Changes from binutils 2.16.91.0.6:
-
-1. Update from binutils 2006 0317.
-2. Support Intel Merom New Instructions in assembler/disassembler.
-3. Support Intel new instructions in Montecito.
-4. Fix linker "--as-needed" (PR 2434).
-5. Fix linker "-s" regression (PR 2462).
-6. Fix REP prefix for string instructions in x86 disassembler
-(PR 2428).
-7. Fix the weak undefined symbols in PIE (PR 2218).
-8. Fix 2 DWARF reader bugs (PRs 2443, 2338).
-9. Improve ELF linker error message (PR 2322).
-10. Avoid abort with dynamic symbols in >64K sections (PR 2411).
-11. Handle mismatched symbol types for executables (PR 2404).
-12. Avoid a linker linkonce regression (PR 2342).
-
-Changes from binutils 2.16.91.0.5:
-
-1. Update from binutils 2006 0212.
-2. Correct Linux linker search order for DT_NEEDED entries (PR 2290).
-3. Fix the x86-64 disassembler for control/debug register moves.
-4. Properly handle ELF strip/objcopy with unmodified program header
-(PR 2258).
-5. Improve ELF linker error handling when there are not enough room for
-program headers (PR 2322).
-6. Properly handle weak undefined symbols in PIE (PR 2218).
-7. Support new i386/x86-64 TLS relocations.
-8. Fix addr2line for linux kernel (PR 2096).
-9. Fix an assembler memory leak with --statistics.
-10. Avoid an ia64 assembler regression (PR 2117).
-
-Changes from binutils 2.16.91.0.4:
-
-1. Update from binutils 2005 1219.
-2. Fix a MIPS linker regression (PR 1932).
-3. Fix an objcopy bug for ia64 (PR 1991).
-4. Fix a linker crash on bad input (PR 2008).
-5. Fix 64bit monitor and mwait (PR 1874).
-
-Changes from binutils 2.16.91.0.3:
-
-1. Update from binutils 2005 1111.
-2. Fix ELF orphan section handling (PR 1467)
-3. Fix ELF section attribute handleing (PR 1487).
-4. Fix IA64 unwind info dump for relocatable files. (PR 1436).
-5. Add DWARF info dump to objdump.
-6. Fix SHF_LINK_ORDER handling (PR 1321).
-7. Don't allow "ld --just-symbols" on DSO (PR 1263).
-8. Fix a "ld -u" crash on TLS symbol (PR 1301).
-9. Fix an IA64 linker crash (PR 1247).
-10. Fix a MIPS linker bug (PR 1150).
-11. Fix a M68K linker bug (PR 1775).
-12. Fix an ELF symbol versioning linker bug (PR 1540).
-13. Improve linker error handling (PR 1208).
-14. Add new SPARC processors to SunOS for objcopy (PR 1472).
-15. Add "@file" to read options from a file.
-16. Add assembler weakref support.
-
-Changes from binutils 2.16.91.0.2:
-
-1. Update from binutils 2005 0821.
-2. Support x86-64 medium model.
-3. Fix "objdump -S --adjust-vma=xxx" (PR 1179).
-4. Reduce R_IA64_NONE relocations from R_IA64_LDXMOV relaxation.
-5. Fix x86 linker regression for dosemu.
-6. Add "readelf -t/--section-details" to display section details.
-7. Fix "as -al=file" regression (PR 1118).
-
-Changes from binutils 2.16.91.0.1:
-
-1. Update from binutils 2005 0720.
-2. Add Intel VMX support.
-3. Add AMD SVME support.
-4. Add x86-64 new relocations for medium model.
-5. Fix a PIE regression (PR 975).
-6. Fix an x86_64 signed 32bit displacement regression.
-7. Fix PPC PLT (PR 1004).
-8. Improve empty section removal.
-
-Changes from binutils 2.16.90.0.3:
-
-1. Update from binutils 2005 0622.
-2. Fix a linker versioning bug exposed by gcc 4 (PR 1022/1023/1025).
-3. Optimize ia64 br->brl relaxation (PR 834).
-4. Improve linker empty section removal.
-5. Fix DWARF 2 line number reporting (PR 990).
-6. Fix DWARF 2 line number reporting regression on assembly file (PR
-1000).
-
-Changes from binutils 2.16.90.0.2:
-
-1. Update from binutils 2005 0510.
-2. Update ia64 assembler to support comdat group section generated by
-gcc 4 (PR 940).
-3. Fix a linker crash on bad input (PR 939).
-4. Fix a sh64 assembler regression (PR 936).
-5. Support linker script on executable (PR 882).
-6. Fix the linker -pie regression (PR 878).
-7. Fix an x86_64 disassembler bug (PR 843).
-8. Fix a PPC linker regression.
-9. Misc speed up.
-
-Changes from binutils 2.16.90.0.1:
-
-1. Update from binutils 2005 0429.
-2. Fix an ELF linker regression (PR 815).
-3. Fix an empty section removal related bug.
-4. Fix an ia64 linker regression (PR 855).
-5. Don't allow local symbol to be equated common/undefined symbols (PR
-857).
-6. Fix the ia64 linker to handle local dynamic symbol error reporting.
-7. Make non-debugging reference to discarded section an error (PR 858).
-8. Support Sparc/TLS.
-9. Support rpm build with newer rpm.
-10. Fix an alpha linker regression.
-11. Fix the non-gcc build regression.
-
-Changes from binutils 2.15.94.0.2.2:
-
-1. Update from binutils 2005 0408.
-2. The i386/x86_64 assemblers no longer accept instructions for moving
-between a segment register and a 32bit memory location.
-3. The x86_64 assembler now allows movq between a segment register and
-a 64bit general purpose register.
-4. 20x Speed up linker for input files with >64K sections.
-5. Properly report ia64 linker relaxation failures.
-6. Support tuning ia64 assembler for Itanium 2 processors.
-7. Linker will remove empty unused output sections.
-8. Add -N to readelf to display full section names.
-9. Fix the ia64 linker to support linkonce text sections without unwind
-sections.
-10. More unwind directive checkings in the ia64 assembler.
-11. Speed up linker with wildcard handling.
-12. Fix readelf to properly dump .debug_ranges and .debug_loc sections.
-
-Changes from binutils 2.15.94.0.2:
-
-1. Fix greater than 64K section support in linker.
-2. Properly handle i386 and x86_64 protected symbols in linker.
-3. Fix readelf for LEB128 on 64bit hosts.
-4. Speed up readelf for section group process.
-5. Include ia64 texinfo pages.
-6. Change ia64 assembler to check hint.b for Montecito.
-7. Improve relaxation failure report in ia64 linker.
-8. Fix ia64 linker to allow relax backward branch in the same section.
-
-Changes from binutils 2.15.94.0.1:
-
-1. Update from binutils 2004 1220.
-2. Fix strip for TLS symbol references.
-
-Changes from binutils 2.15.92.0.2:
-
-1. Update from binutils 2004 1121.
-2. Put ia64 .ctors/.dtors sections next to small data section for
-Intel ia64 compiler.
-3. Fix -Bdynamic/-Bstatic handling for linker script.
-4. Provide more information on relocation overflow.
-5. Add --sort-section to linker.
-6. Support icc 8.1 unwind info in readelf.
-7. Fix the infinite loop bug on bad input in the ia64 assembler.
-8. Fix ia64 SECREL relocation in linker.
-9. Fix a section group memory leak in readelf.
-
-Changes from binutils 2.15.91.0.2:
-
-1. Update from binutils 2004 0927.
-2. Work around a section header bug in Intel ia64 compiler.
-3. Fix an unwind directive bug in the ia64 assembler.
-4. Fix various PPC bugs.
-5. Update ARM support.
-6. Fix an x86-64 linker warning while building Linux kernel.
-
-Changes from binutils 2.15.91.0.1:
-
-1. Update from binutils 2004 0727.
-2. Fix the x86_64 linker to prevent non-PIC code in shared library.
-3. Fix the ia64 linker to warn the relotable files which can't be
-relaxed.
-4. Fix the comdat group support. Allow mix single-member comdat group
-with linkonce section.
-5. Added --add-needed/--no-add-needed options to linker.
-6. Fix the SHF_LINK_ORDER support.
-7. Fix the ia64 assembler for multiple sections with the same name and
-SHT_IA_64_UNWIND sections.
-8. Fix the ia64 assembler for merge section and relaxation.
-
-Changes from binutils 2.15.90.0.3:
-
-1. Update from binutils 2004 0527.
-2. Fix -x auto option in the ia64 assembler.
-3. Add the AR check in the ia64 assembler.
-4. Fix the section group support.
-5. Add a new -z relro linker option.
-6. Fix an exception section placement bug in linker.
-7. Add .serialize.data and .serialize.instruction to the ia64
-assembler.
-
-Changes from binutils 2.15.90.0.2:
-
-1. Update from binutils 2004 0415.
-2. Fix the linker for weak undefined symbol handling.
-3. Fix the ELF/Sparc and ELF/Sparc64 linker for statically linking PIC
-code.
-
-Changes from binutils 2.15.90.0.1.1:
-
-1. Update from binutils 2004 0412.
-2. Add --as-needed/--no-as-needed to linker.
-3. Fix -z defs in linker.
-4. Always reserve the memory for ia64 dynamic linker.
-5. Fix a race condition in ia64 lazy binding.
-
-Changes from binutils 2.15.90.0.1:
-
-1. Fixed an ia64 assembler bug.
-2. Install the assembler man page.
-
-Changes from binutils 2.14.90.0.8:
-
-1. Update from binutils 2004 0303.
-2. Fixed linker for undefined symbols with non-default visibility.
-3. Sped up linker weakdef symbol handling.
-4. Fixed mixing ELF32 and ELF64 object files in archive.
-5. Added ia64 linker brl optimization.
-6. Fixed ia64 linker to disallow invalid dynamic relocations.
-7. Fixed DT_TEXTREL handling in ia64 linker.
-8. Fixed alignment handling in ia64 assembler.
-9. Improved ia64 assembler unwind table handling.
-
-Changes from binutils 2.14.90.0.7:
-
-1. Update from binutils 2004 0114.
-2. Fixed an ia64 assembler unwind table bug.
-3. Better handle IPF linker relaxation overflow.
-4. Fixed misc PPC bugs.
-
-Changes from binutils 2.14.90.0.6:
-
-1. Update from binutils 2003 1029.
-2. Allow type changes for undefined symbols.
-3. Fix EH frame optimization.
-4. Fix the check for undefined versioned symbol with wildcard.
-5. Support generating code for Itanium.
-6. Detect and warn bad symbol index.
-7. Update IPF assemebler DV check.
-
-Changes from binutils 2.14.90.0.5:
-
-1. Update from binutils 2003 0820.
-2. No longer use section names for ELF section types nor flags.
-3. Fix some ELF/IA64 linker bugs.
-4. Fix some ELF/ppc bugs.
-5. Add archive support to readelf.
-
-Changes from binutils 2.14.90.0.4.1:
-
-1. Update from binutils 2003 0722.
-2. Fix an ELF/mips linker bug.
-3. Fix an ELF/hpppa linker bug.
-4. Fix an ELF/ia64 assembler bug.
-5. Fix a linkonce support with C++ debug.
-6. A new working C++ demangler.
-7. Various alpha, mips, ia64, ... bug fixes.
-8. Support for the current gcc and glibc.
-
-Changes from binutils 2.14.90.0.4:
-
-1. Fix an ia64 assembler hint@pause bug.
-2. Support Intel Prescott New Instructions.
-
-Changes from binutils 2.14.90.0.3:
-
-1. Work around the brain dead libtool.
-
-Changes from binutils 2.14.90.0.2:
-
-1. Update from binutils 2003 0523.
-2. Fix 2 ELF visibility bugs.
-3. Fix ELF/ppc linker bugs.
-
-Changes from binutils 2.14.90.0.1:
-
-1. Update from binutils 2003 0515.
-2. Fix various ELF visibility bugs.
-3. Fix some ia64 linker bugs.
-4. Add more IAS compatibilities to ia64 assembler.
-
-Changes from binutils 2.13.90.0.20:
-
-1. Update from binutils 2003 0505.
-2. Fix various ELF visibility bugs.
-3. Fix some ia64 linker bugs.
-4. Fix some ia64 assembler bugs.
-5. Add some IAS compatibilities to ia64 assembler.
-6. Fix ELF common symbol alignment.
-7. Fix ELF weak symbol handling.
-
-Changes from binutils 2.13.90.0.18:
-
-1. Update from binutils 2003 0319.
-2. Fix an ia64 linker brl relaxation bug.
-3. Fix some ELF/ppc linker bugs.
-
-Changes from binutils 2.13.90.0.16:
-
-1. Update from binutils 2003 0121.
-2. Fix an ia64 gas bug.
-3. Fix some TLS bugs.
-4. Fix some ELF/ppc bugs.
-5. Fix an ELF/m68k bug.
-
-2. Include /usr/bin/c++filt.
-Changes from binutils 2.13.90.0.14:
-
-1. Update from binutils 2002 1126.
-2. Include /usr/bin/c++filt.
-3. Fix "ld -r" with execption handling.
-
-Changes from binutils 2.13.90.0.10:
-
-1. Update from binutils 2002 1114.
-2. Fix ELF/alpha bugs.
-3. Fix an ELF/i386 assembler bug.
-
-Changes from binutils 2.13.90.0.4:
-
-1. Update from binutils 2002 1010.
-2. More ELF/PPC linker bug fixes.
-3. Fix an ELF/alpha linker bug.
-4. Fix an ELF/sparc linker bug to support Solaris.
-5. More TLS updates.
-
-Changes from binutils 2.13.90.0.3:
-
-1. Update from binutils 2002 0814.
-2. Fix symbol versioning bugs for gcc 3.2.
-3. Fix mips gas.
-
-Changes from binutils 2.13.90.0.2:
-
-1. Update from binutils 2002 0809.
-2. Fix a mips gas compatibility bug.
-3. Fix an x86 TLS bfd bug.
-4. Fix an x86 PIC gas bug.
-5. Improve symbol versioning support.
-
-The file list:
-
-1. binutils-2.18.50.0.9.tar.bz2. Source code.
-2. binutils-2.18.50.0.8-2.18.50.0.9.diff.bz2. Patch against the
- previous beta source code.
-3. binutils-2.18.50.0.9.i686.tar.bz2. IA-32 binary tar ball for RedHat
- EL 4.
-4. binutils-2.18.50.0.9.ia64.tar.bz2. IA-64 binary tar ball for RedHat
- EL 4.
-5. binutils-2.18.50.0.9.x86_64.tar.bz2. X64_64 binary tar ball for RedHat
- EL 4.
-
-The primary sites for the beta Linux binutils are:
-
-1. http://www.kernel.org/pub/linux/devel/binutils/
-
-Thanks.
-
-
-H.J. Lu
-hjl.tools@gmail.com
-08/23/2008
diff --git a/source/d/binutils/release.binutils-2.20.51.0.8 b/source/d/binutils/release.binutils-2.20.51.0.8
new file mode 100644
index 000000000..d3d2bd8a7
--- /dev/null
+++ b/source/d/binutils/release.binutils-2.20.51.0.8
@@ -0,0 +1,491 @@
+This is the beta release of binutils 2.20.51.0.8 for Linux, which is
+based on binutils 2010 0412 in CVS on sourceware.org plus various
+changes. It is purely for Linux.
+
+All relevant patches in patches have been applied to the source tree.
+You can take a look at patches/README to see what have been applied and
+in what order they have been applied.
+
+Starting from the 2.20.51.0.4 release, no diffs against the previous
+release will be provided.
+
+You can enable both gold and bfd ld with --enable-gold=both. Gold will
+be installed as ld.gold and bfd ld will be installed as ld.bfd. By
+default, ld.gold will be installed as ld. You can use the configure
+option, --enable-gold=both/bfd to choose bfd ld as the default linker,
+ld. IA-32 binary and X64_64 binary tar balls are configured with
+--enable-gold=both/bfd --enable-plugins --enable-threads.
+
+Starting from the 2.18.50.0.4 release, the x86 assembler no longer
+accepts
+
+ fnstsw %eax
+
+fnstsw stores 16bit into %ax and the upper 16bit of %eax is unchanged.
+Please use
+
+ fnstsw %ax
+
+Starting from the 2.17.50.0.4 release, the default output section LMA
+(load memory address) has changed for allocatable sections from being
+equal to VMA (virtual memory address), to keeping the difference between
+LMA and VMA the same as the previous output section in the same region.
+
+For
+
+.data.init_task : { *(.data.init_task) }
+
+LMA of .data.init_task section is equal to its VMA with the old linker.
+With the new linker, it depends on the previous output section. You
+can use
+
+.data.init_task : AT (ADDR(.data.init_task)) { *(.data.init_task) }
+
+to ensure that LMA of .data.init_task section is always equal to its
+VMA. The linker script in the older 2.6 x86-64 kernel depends on the
+old behavior. You can add AT (ADDR(section)) to force LMA of
+.data.init_task section equal to its VMA. It will work with both old
+and new linkers. The x86-64 kernel linker script in kernel 2.6.13 and
+above is OK.
+
+The new x86_64 assembler no longer accepts
+
+ monitor %eax,%ecx,%edx
+
+You should use
+
+ monitor %rax,%ecx,%edx
+
+or
+ monitor
+
+which works with both old and new x86_64 assemblers. They should
+generate the same opcode.
+
+The new i386/x86_64 assemblers no longer accept instructions for moving
+between a segment register and a 32bit memory location, i.e.,
+
+ movl (%eax),%ds
+ movl %ds,(%eax)
+
+To generate instructions for moving between a segment register and a
+16bit memory location without the 16bit operand size prefix, 0x66,
+
+ mov (%eax),%ds
+ mov %ds,(%eax)
+
+should be used. It will work with both new and old assemblers. The
+assembler starting from 2.16.90.0.1 will also support
+
+ movw (%eax),%ds
+ movw %ds,(%eax)
+
+without the 0x66 prefix. Patches for 2.4 and 2.6 Linux kernels are
+available at
+
+http://www.kernel.org/pub/linux/devel/binutils/linux-2.4-seg-4.patch
+http://www.kernel.org/pub/linux/devel/binutils/linux-2.6-seg-5.patch
+
+The ia64 assembler is now defaulted to tune for Itanium 2 processors.
+To build a kernel for Itanium 1 processors, you will need to add
+
+ifeq ($(CONFIG_ITANIUM),y)
+ CFLAGS += -Wa,-mtune=itanium1
+ AFLAGS += -Wa,-mtune=itanium1
+endif
+
+to arch/ia64/Makefile in your kernel source tree.
+
+Please report any bugs related to binutils 2.20.51.0.8 to
+hjl.tools@gmail.com
+
+and
+
+http://www.sourceware.org/bugzilla/
+
+Changes from binutils 2.20.51.0.7:
+
+1. Update from binutils 2010 0412.
+2. Don't bind unique symbol locally. PR 11434.
+3. Add DWARF 4 support to linker and readelf.
+4. Fix --no-export-dynamic for PIE. PR 11413.
+5. Speed up x86 assembler.
+6. Use memmove instead of memcpy to copy overlap memory in assembler.
+PR 11456.
+7. Improve gold.
+8. Improve VMS support.
+9. Improve PE support.
+10. Add TI C6X support.
+11. Improve arm support.
+12. Improve cris support.
+13. Improve ppc support.
+
+Changes from binutils 2.20.51.0.6:
+
+1. Update from binutils 2010 0318.
+2. Don't set ELFOSABI_LINUX for undefined STT_GNU_IFUNC symbols.
+3. Improve x86 assembler error messages.
+4. Support vpermilp[ds] for x86.
+5. Fix strip for group sections.
+6. Fix objcopy for PE PIE. PR 11396.
+7. Avoid 32bit overflow in linker.
+8. Correct backslash quote logic in assembler. PR 11356.
+9. Improve linker --section-start support. PR 11304.
+10. Properly update LMA. PR 11219.
+11. Don't combine .init_array/.fini_array sections for relocatable link.
+12. Add Solaris Sparc/x86 linker support.
+13. Support dumping .ARM.exidx/.ARM.extab.
+14. Add STT_GNU_IFUNC support for Sparc.
+15. Improve gold.
+16. Improve arm support.
+17. Improve avr support.
+18. Improve mips support.
+19. Improve ppc support.
+20. Improve xtensa support.
+
+Changes from binutils 2.20.51.0.5:
+
+1. Update from binutils 2010 0205.
+2. Support x86 XSAVE extended state core dump.
+3. Add an option, -mavxscalar=, to x86 assembler to encoding AVX
+scalar instructions with VL=256 and update x86 disassembler.
+4. Add xsave64/xrstor64 to x86 assembler/disassembler.
+5. Add all the possible aliases for VPCOM* insns to x86 assembler.
+5. Fix --gc-sections to detect unresolved symbol in DSO. PR 11218.
+6. Support number of ELF program segments > 64K.
+7. Support BSD4.4 extended archive write.
+8. Report error on bad section name with "objdump -j". PR 11225.
+9. Linker now checks if all files are present and indicates those missing.
+PR 4437.
+10. Allow adding section from empy file with objcopy.
+11. Update C++ demangler to support vector.
+12. Improve gold.
+13. Improve arm support.
+14. Improve hppa support.
+15. Improve ppc support.
+16. Improve s390 support.
+
+Changes from binutils 2.20.51.0.4:
+
+1. Update from binutils 2010 0115.
+2. Optimize x86 assembler/disassembler.
+3. Add a new program, elfedit, to edit ELF files. PR 11131.
+4. Add --dyn-syms to readelf. PR 11146.
+5. Remove "Warning: " from objcopy error message. PR 11130.
+6. Fix linker --gc-sections with undefined __start_XXX/__stop_XXX symbols.
+PR 11133.
+7. Fix linker --gc-sections with SHT_NOTE section. PR 11143.
+8. Fix a c++filt bug. PR 11137.
+9. Fix assembler listing. PR 11122.
+10. Improve gold. Change --enable-gold to --enable-gold=[both[/{gold,bfd}]].
+11. Improve arm support.
+12. Improve mips support.
+13. Improve ppc support.
+14. Improve MacOS support.
+
+Changes from binutils 2.20.51.0.3:
+
+1. Update from binutils 2009 1214.
+2. Update x86 assembler to check lockable instructions for lock prefix.
+3. Update x86 disassembler to display all prefixes.
+4. Support AMD XOP new instructions.
+5. Fix an x86 assembler regression on Intel syntax. PR 11037.
+6. Improve ia64 linker relaxation. PR 10955.
+7. Add --no-relax linker option.
+8. Update readelf to dump .debug_pubtype sections.
+9. Improve gold:
+ a. Support linking against STT_GNU_IFUNC symbols defined in
+ shared libraries.
+ b. Support linking with STB_GNU_UNIQUE symbols.
+10. Improve arm support.
+11. Improve m68k support.
+12. Improve mips support.
+13. Improve ppc support.
+
+Changes from binutils 2.20.51.0.2:
+
+1. Update from binutils 2009 1109.
+2. Fix "ld -s -static" with STT_GNU_IFUNC symbols. PR 10911.
+3. Fix file permission on PIE with objcopy. PR 10802.
+4. Fix x86 Intel syntax assembler with relocation. PR 10856.
+5. Fix x86 Intel syntax assembler with far jump. PR 10740.
+6. Add AMD LWP support.
+7. Renamed linker option --add-needed to --copy-dt-needed-entries.
+8. Support enabling both ld and gold with --enable-gold=both and
+--enable-linker=[bfd,gold].
+9. Improve gold.
+10. Improve arm support.
+11. Improve cris support.
+12. Improve hppa support.
+13. Improve m68k support.
+14. Improve RX support.
+15. Improve spu support.
+16. Improve vax support.
+17. Improve MacOS support.
+18. Improve Windows support.
+
+Changes from binutils 2.20.51.0.1:
+
+1. Update from binutils 2009 1009.
+2. Add .cfi_sections to assembler.
+3. Fix a linker bug with local dynamic symbols. PR 10630.
+4. Add DWARF-3/DWARF-4 support.
+5. Fix the x86 assembler PIC bug. PR 10677.
+6. Fix the x86-64 displacement assembler bug. PR 10636.
+7. Fix the x86 assembler bug with Intel memory syntax. PR 10637.
+8. Fix the x86 PIC assembler bug with Intel syntax. PR 10704.
+9. Add RX support.
+10. Improve gold.
+11. Improve arm support.
+12. Improve bfin support.
+13. Improve cr16 support.
+14. Improve m68k support.
+15. Improve mips support.
+16. Improve ppc support.
+
+Changes from binutils 2.19.51.0.14:
+
+1. Update from binutils 2009 0905.
+2. Add Intel L1OM support.
+3. Add MicroBlaze support.
+4. Fix assembler for DWARF info without .file/.loc directives. PR 10531.
+5. Improve -pie with TLS relocations on ia32 and x86-64. PRs 6443/10434.
+6. Fix linker page size support. PR 10569.
+7. Fix wildcard in linker version script. PR 10518.
+8. Fix strip with STB_GNU_UNIQUE. PR 10492.
+9. Fix strip on unwriteable files. PR 10364.
+10. Fix crash with "ld --build-id /usr/lib/libc.a". PR 10555.
+11. Fix linker for Linux kernel build. PR 10429.
+12. Support string merge on .comment section.
+13. Improve build with C++ compiler.
+14. Improve gold.
+15. Improve arm support.
+16. Improve bfin support.
+11. Improve m32c support.
+17. Improve m68k support.
+18. Improve mep support.
+19. Improve mips support.
+20. Improve ppc support.
+21. Improve spu support.
+22. Improve xtensa support.
+
+Changes from binutils 2.19.51.0.13:
+
+1. Update from binutils 2009 0722.
+2. Fix linker for STT_GNU_IFUNC symbols in static executables. PR 10433.
+3. Fix linker bug for Linux kernel build. PR 10429.
+
+Changes from binutils 2.19.51.0.12:
+
+1. Update from binutils 2009 0721.
+2. Fix linker for undefined STT_GNU_IFUNC symbols. PR 10426.
+3. Fix x86 assembler for nops in 64bit. PR 10420.
+4. Add a new option, --insn-width, to objdump.
+5. Improve arm support.
+6. Improve mips support.
+7. Improve gold support.
+
+Changes from binutils 2.19.51.0.11:
+
+1. Update from binutils 2009 0716.
+2. Fix x86 assembler for jumping to local STT_GNU_IFUNC symbols.
+3. Fix x86 linker for relocatable link with local STT_GNU_IFUNC symbols.
+4. Implement ppc STT_GNU_IFUNC support.
+5. Support x86 FMA4.
+6. Fix linker regression with Linux kernel build.
+7. Support unordered references in DWARF reader.
+8. Improve PE/COFF support.
+8. Improve arm support.
+9. Improve m10300 support.
+10. Improve ppc support.
+11. Improve spu support.
+12. Improve gold support.
+
+Changes from binutils 2.19.51.0.10:
+
+1. Update from binutils 2009 0627.
+2. Fix strip on static executable with STT_GNU_IFUNC symbol. PR 10337.
+3. Add STB_GNU_UNIQUE support.
+4. Fix objcopy on empty file. PR 10321.
+5. Fix debug section for PE-COFF.
+6. Suport build with gcc 4.5.0.
+7. Improve arm support.
+8. Improve ppc support.
+9. Improve m10300 support.
+10. Improve mep support.
+11. Improve MacOS support.
+12. Improve gold support.
+
+Changes from binutils 2.19.51.0.9:
+
+1. Update from binutils 2009 0618.
+2. Update STT_GNU_IFUNC symbol support. PR 10269/10270.
+3. Fix an assembler CFI bug. PR 10255.
+4. Improve objdump. PR 10263/10288
+5. Improve readelf.
+6. Improve arm support.
+7. Improve moxie support.
+8. Improve spu support.
+9. Improve vax support.
+10. Improve COFF/PE support.
+11. Improve MacOS support.
+
+Changes from binutils 2.19.51.0.8:
+
+1. Update from binutils 2009 0606.
+2. Update STT_GNU_IFUNC symbol support.
+
+Changes from binutils 2.19.51.0.7:
+
+1. Update from binutils 2009 0603.
+2. Fix STT_GNU_IFUNC symbol with pointer equality.
+
+Changes from binutils 2.19.51.0.6:
+
+1. Update from binutils 2009 0601.
+2. Update STT_GNU_IFUNC support. PR 10205.
+3. Fix x86 asssembler Intel syntax regression with '$'. PR 10198.
+
+Changes from binutils 2.19.51.0.5:
+
+1. Update from binutils 2009 0529.
+2. Rewrite STT_GNU_IFUNC, R_386_IRELATIVE and R_X86_64_IRELATIVE linker
+support for STT_GNU_IFUNC symbols in shared library, dynamic executable
+and static executable.
+3. Add plugin support.
+4. Improve spu support.
+
+Changes from binutils 2.19.51.0.4:
+
+1. Update from binutils 2009 0525.
+2. Add STT_GNU_IFUNC, R_386_IRELATIVE and R_X86_64_IRELATIVE support to
+assembler and linker.
+3. Add LD_AS_NEEDED support to linker.
+4. Remove AMD SSE5 support.
+5. A new Intel syntax parser in x86 assembler.
+6. Add DWARF discriminator support.
+7. Add --64 support for x86 PE/COFF assembler.
+8. Support common symbol with alignment for PE/COFF.
+9. Improve gold support.
+10. Improve arm support.
+11. Improve mep support.
+12. Improve mips support.
+13. Improve ppc support.
+14. Improve spu support.
+
+Changes from binutils 2.19.51.0.3:
+
+1. Update from binutils 2009 0418.
+2. Remove EFI targets and use PEI targets for EFI. Add --file-alignment,
+--heap, --image-base, --section-alignment, --stack and --subsystem command
+line options for objcopy. PR 10074.
+3. Update linker to warn alternate ELF machine code.
+4. Fix x86 linker TLS transition. PR 9938.
+5. Improve DWARF dumper to check relocations against STT_SECTION
+symbol.
+6. Guard DWARF dumper on bad DWARF input.
+7. Add EM_ETPU and EM_SLE9X. Reserve 3 ELF machine types for Intel.
+8. Adding a linker missing entry symbol warning for -pie. PR 9970.
+9. Make the -e option for linker to imply -u. PR 6766.
+10. Properly handle paging for PEI targets.
+11. Fix assembler listing with input from stdin.
+12. Update objcopy/string to generate symbol table if there is any
+relocation in output. PR 9945.
+13. Require texinfo 4.7 for build. PR 10039.
+14. Add moxie support.
+15. Improve gold support.
+16. Improve AIX support.
+17. Improve arm support.
+18. Improve cris support.
+19. Improve crx support.
+20. Improve mips support.
+21. Improve ppc support.
+22. Improve s390 support.
+23. Improve spu support.
+24. Improve vax support.
+
+Changes from binutils 2.19.51.0.2:
+
+1. Update from binutils 2009 0310.
+2. Fix strip on common symbols in relocatable file. PR 9933.
+3. Fix --enable-targets=all build.
+4. Fix ia64 build with -Wformat-security. PR 9874.
+5. Add REGION_ALIAS support in linker script.
+6. Add think archive support to readelf.
+7. Improve DWARF support in objdump.
+8. Improve alpha support.
+9. Improve arm support.
+10. Improve hppa support.
+11. Improve m68k support.
+12. Improve mips support.
+13. Improve ppc support.
+14. Improve xtensa support.
+15. Add score 7 support.
+
+Changes from binutils 2.19.51.0.1:
+
+1. Update from binutils 2009 0204.
+2. Support AVX Programming Reference (January, 2009)
+3. Improve .s suffix support in x86 disassembler.
+4. Add --prefix/--prefix-strip for objdump -S. PR 9784.
+5. Change "ld --as-needed" to resolve undefined references in DSO.
+6. Add -Ttext-segment to ld to set address of text segment.
+7. Fix "ld -r --gc-sections --entry" crash with COMDAT group. PR 9727.
+8. Improve linker compatibility for g++ 3.4 `.gnu.linkonce.r.*.
+9. Add VMS/ia64 support.
+10. Improve arm support.
+11. Improve cris support.
+12. Improve m68k support.
+13. Improve mips support.
+14. Improve spu support.
+
+Changes from binutils 2.19.50.0.1:
+
+1. Update from binutils 2009 0106.
+2. Support AVX Programming Reference (December, 2008)
+2. Encode AVX insns with 2byte VEX prefix if possible.
+4. Add .s suffix support to swap register operands to x86 assembler.
+5. Properly select NOP insns for code alignment in x86 assembler.
+6. Fix 2 symbol visibility linker bugs. PRs 9676/9679.
+7. Fix an ia64 linker relaxation bug. PR 7036.
+8. Fix a symbol versioning bug. PR 7047.
+9. Fix unitialized data in linker. PR 7028.
+10. Avoid a linker crash on bad input. PR 7023.
+11. Fix a linker memory leak. PR 7012.
+12. Fix strip/objcopy crash on PT_GNU_RELRO. PR 7011.
+13. Improve MacOS support.
+14. Fix a COFF linker bug. PR 6945.
+15. Add LM32 support.
+16. Fix various arm bugs.
+17. Fix various avr bugs.
+18. Fix various CR16 bugs.
+19. Fix various cris bugs.
+20. Fix various m32c bugs.
+21. Fix various m68k bugs.
+22. Fix various mips bugs.
+23. Fix various ppc bugs.
+24. Fix various s390 bugs.
+25. Fix various sparc bugs.
+26. Fix various spu bugs.
+27. Fix various xtensa bugs.
+
+The file list:
+
+1. binutils-2.20.51.0.8.tar.bz2. Source code.
+2. binutils-2.20.51.0.8.i686.tar.bz2. IA-32 binary tar ball for RedHat
+ EL 5.
+3. binutils-2.20.51.0.8.ia64.tar.bz2. IA-64 binary tar ball for RedHat
+ EL 5.
+4. binutils-2.20.51.0.8.x86_64.tar.bz2. X64_64 binary tar ball for RedHat
+ EL 5.
+
+The primary sites for the beta Linux binutils are:
+
+1. http://www.kernel.org/pub/linux/devel/binutils/
+
+Thanks.
+
+
+H.J. Lu
+hjl.tools@gmail.com
+04/13/2010
diff --git a/source/d/bison/bison.SlackBuild b/source/d/bison/bison.SlackBuild
index f99d23302..d41436251 100755
--- a/source/d/bison/bison.SlackBuild
+++ b/source/d/bison/bison.SlackBuild
@@ -21,10 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.4.1
-ARCH=${ARCH:-x86_64}
+VERSION=2.4.2
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-bison
@@ -38,6 +49,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -61,7 +75,7 @@ CFLAGS="$SLKCFLAGS" \
--mandir=/usr/man \
--infodir=/usr/info
-make -j3 || exit 1
+make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG
find $PKG | xargs file | grep -e "executable" -e "shared object" \
@@ -73,7 +87,7 @@ gzip -9 $PKG/usr/man/man1/bison.1
mkdir -p $PKG/usr/doc/bison-$VERSION
cp -a \
- ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README REFERENCES THANKS doc/FAQ \
+ AUTHORS COPYING* INSTALL NEWS README REFERENCES THANKS doc/FAQ \
$PKG/usr/doc/bison-$VERSION
mkdir -p $PKG/install
diff --git a/source/d/clisp/clisp.SlackBuild b/source/d/clisp/clisp.SlackBuild
index 49e4f768d..4d6b43f48 100755
--- a/source/d/clisp/clisp.SlackBuild
+++ b/source/d/clisp/clisp.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,15 +21,23 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.47
-DIRNAME=2.47
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
+VERSION=2.48
+DIRNAME=2.48
+BUILD=${BUILD:-1}
# Bundled libraries:
FFCALLVER=20080704cvs
-LIBSIGSEVVER=2.6
+LIBSIGSEVVER=2.8
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -40,8 +48,13 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-clisp
@@ -53,7 +66,7 @@ mkdir -p $TMP $PKG
# First we need this. It used to ship with CLISP, but no longer does.
cd $TMP
rm -rf libsigsegv-$LIBSIGSEVVER
-tar xvf $CWD/libsigsegv-$LIBSIGSEVVER.tar.bz2 || exit 1
+tar xvf $CWD/libsigsegv-$LIBSIGSEVVER.tar.?z* || exit 1
cd libsigsegv-$LIBSIGSEVVER || exit 1
chown -R root:root .
find . \
diff --git a/source/d/cmake/cmake.SlackBuild b/source/d/cmake/cmake.SlackBuild
index 4a05c76e9..25fd3b4f2 100755
--- a/source/d/cmake/cmake.SlackBuild
+++ b/source/d/cmake/cmake.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,12 +20,21 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-NAME=cmake
+PKGNAM=cmake
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
-VERSION=${VERSION:-2.6.2}
-ARCH=${ARCH:-x86_64}
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -m32 -march=i486 -mtune=i686"
@@ -33,19 +42,21 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$NAME
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $NAME-$VERSION
-tar xvf $CWD/$NAME-$VERSION.tar.bz2 || exit 1
-cd $NAME-$VERSION
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
@@ -63,13 +74,21 @@ CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
../configure \
--prefix=/usr \
- --docdir=/doc/$NAME-$VERSION \
+ --docdir=/doc/$PKGNAM-$VERSION \
$SLKCONFIGFLAGS \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ../ChangeLog.txt ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ../ChangeLog.txt | head -n 1000 > $DOCSDIR/ChangeLog.txt
+ touch -r ../ChangeLog.txt $DOCSDIR/ChangeLog.txt
+fi
+
# Compress and link manpages, if any:
if [ -d $PKG/usr/man ]; then
( cd $PKG/usr/man
@@ -92,5 +111,5 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$NAME-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/d/cscope/cscope.SlackBuild b/source/d/cscope/cscope.SlackBuild
index 76994691f..21e86d3f0 100755
--- a/source/d/cscope/cscope.SlackBuild
+++ b/source/d/cscope/cscope.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,14 +23,24 @@
PKGNAM=cscope
VERSION=${VERSION:-$(echo $(basename $(echo $PRGNAM-*.tar.bz2 | cut -f 2 -d -) .tar.bz2) | cut -f 2 -d -)}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-cscope
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
rm -rf $PKG
mkdir -p $TMP $PKG
@@ -47,6 +57,7 @@ find . \
./configure \
--prefix=/usr \
+ --mandir=/usr/man \
--build=${ARCH}-slackware-linux
make $NUMJOBS || make || exit 1
@@ -59,9 +70,17 @@ gzip -9 $PKG/usr/man/man1/${PKGNAM}.1
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- AUTHORS COPYING* INSTALL NEWS README TODO \
+ AUTHORS COPYING* INSTALL NEWS README* TODO \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/d/doxygen/doxygen.SlackBuild b/source/d/doxygen/doxygen.SlackBuild
index ec827f7cd..66ae4d360 100755
--- a/source/d/doxygen/doxygen.SlackBuild
+++ b/source/d/doxygen/doxygen.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,18 +21,33 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.5.8
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(basename $(echo doxygen-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev) .src)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -45,7 +60,6 @@ cd $TMP
rm -rf doxygen-$VERSION
tar xvf $CWD/doxygen-${VERSION}.src.tar.?z* || exit 1
cd doxygen-$VERSION
-zcat $CWD/doxygen.qt4.diff.gz | patch -p1 --verbose || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -53,11 +67,9 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# We want qt4 to be found, not qt3 if that is available as well:
-unset QTDIR
-
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
+QTDIR=/usr/lib${LIBDIRSUFFIX}/qt \
./configure \
--shared \
--release \
diff --git a/source/d/doxygen/doxygen.qt4.diff b/source/d/doxygen/doxygen.qt4.diff
deleted file mode 100644
index d55dced8f..000000000
--- a/source/d/doxygen/doxygen.qt4.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up doxygen-1.5.8/configure.qt4 doxygen-1.5.8/configure
---- doxygen-1.5.8/configure.qt4 2008-12-26 20:22:39.000000000 +0100
-+++ doxygen-1.5.8/configure 2009-02-06 11:00:44.000000000 +0100
-@@ -268,7 +268,7 @@ if test "$f_wizard" = YES; then
- if test -z "$QTDIR"; then
- echo " QTDIR environment variable not set!"
- echo -n " Checking for Qt..."
-- for d in /usr/{lib,share,qt}/{qt-4,qt4,qt,qt*,4}; do
-+ for d in /usr/{lib64,lib,share,qt}/{qt-4,qt4,qt,qt*,4}; do
- if test -x "$d/bin/qmake"; then
- QTDIR=$d
- fi
diff --git a/source/d/gcc/gcc.SlackBuild b/source/d/gcc/gcc.SlackBuild
index cc1745aca..b11a7c6c8 100755
--- a/source/d/gcc/gcc.SlackBuild
+++ b/source/d/gcc/gcc.SlackBuild
@@ -2,7 +2,7 @@
# GCC package build script (written by volkerdi@slackware.com)
#
# Copyright 2003, 2004 Slackware Linux, Inc., Concord, California, USA
-# Copyright 2005, 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005, 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -42,14 +42,24 @@
# I see no reason to continue 386 support in the latest Slackware (and indeed
# it's no longer easily possible).
-VERSION=4.3.3
-ARCH=${ARCH:-x86_64}
-TARGET=$ARCH-slackware-linux
-BUILD=${BUILD:-4}
+VERSION=4.4.4
+BUILD=${BUILD:-1}
# How many jobs to run in parallel:
NUMJOB=" -j 4 "
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+TARGET=$ARCH-slackware-linux
+
if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
LIBDIRSUFFIX=""
@@ -68,6 +78,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -119,14 +132,25 @@ cp $CWD/ecj-4.3.jar gcc-$VERSION/ecj.jar
find . -perm 754 -exec chmod 755 {} \;
find . -perm 664 -exec chmod 644 {} \;
mkdir -p $PKG1/usr/doc/gcc-$VERSION
- # Only the most recent ChangeLog... shouldn't be too big. :)
cp -a \
- BUGS COPYING* ChangeLog \
+ BUGS COPYING* \
ChangeLog.tree-ssa FAQ INSTALL \
- LAST_UPDATED MAINTAINERS NEWS \
+ LAST_UPDATED MAINTAINERS \
README* *.html \
$PKG1/usr/doc/gcc-$VERSION
+ # We will keep part of these, but they are really big...
+ if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+ fi
+ if [ -r NEWS ]; then
+ DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION)
+ cat NEWS | head -n 1000 > $DOCSDIR/NEWS
+ touch -r NEWS $DOCSDIR/NEWS
+ fi
+
mkdir -p $PKG1/usr/doc/gcc-${VERSION}/gcc
( cd gcc
cp -a \
@@ -135,93 +159,123 @@ cp $CWD/ecj-4.3.jar gcc-$VERSION/ecj.jar
mkdir -p $PKG3/usr/doc/gcc-${VERSION}/gcc/fortran
( cd fortran
- cp -a \
- ChangeLog \
- $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog
+ touch -r ChangeLog $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog
+ fi
)
mkdir -p $PKG4/usr/doc/gcc-${VERSION}/gcc/ada
( cd ada
cp -a \
- ChangeLog ChangeLog.tree-ssa \
+ ChangeLog.tree-ssa \
$PKG4/usr/doc/gcc-$VERSION/gcc/ada
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG4/usr/doc/gcc-$VERSION/gcc/ada/ChangeLog
+ touch -r ChangeLog $PKG4/usr/doc/gcc-$VERSION/gcc/ada/ChangeLog
+ fi
)
mkdir -p $PKG5/usr/doc/gcc-${VERSION}/gcc/java
( cd java
cp -a \
- ChangeLog ChangeLog.tree-ssa \
+ ChangeLog.tree-ssa \
$PKG5/usr/doc/gcc-${VERSION}/gcc/java
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog
+ touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog
+ fi
)
mkdir -p $PKG6/usr/doc/gcc-${VERSION}/gcc/objc
( cd objc
cp -a \
- ChangeLog README \
+ README* \
$PKG6/usr/doc/gcc-${VERSION}/gcc/objc
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG6/usr/doc/gcc-${VERSION}/gcc/objc/ChangeLog
+ touch -r ChangeLog $PKG6/usr/doc/gcc-${VERSION}/gcc/objc/ChangeLog
+ fi
)
) || exit 1
mkdir -p $PKG3/usr/doc/gcc-${VERSION}/libgfortran
( cd libgfortran
- cp -a \
- ChangeLog \
- $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog
+ touch -r ChangeLog $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog
+ fi
)
mkdir -p $PKG3/usr/doc/gcc-${VERSION}/libada
( cd libada
- cp -a \
- ChangeLog \
- $PKG3/usr/doc/gcc-${VERSION}/libada
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG3/usr/doc/gcc-${VERSION}/libada/ChangeLog
+ touch -r ChangeLog $PKG3/usr/doc/gcc-${VERSION}/libada/ChangeLog
+ fi
)
mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libffi
( cd libffi
cp -a \
- ChangeLog ChangeLog.libgcj ChangeLog.v1 \
- LICENSE README \
+ ChangeLog.libgcj ChangeLog.v1 \
+ LICENSE* README* \
$PKG5/usr/doc/gcc-${VERSION}/libffi
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/libffi/ChangeLog
+ touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/libffi/ChangeLog
+ fi
)
mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libjava
( cd libjava
cp -a \
- COPYING* ChangeLog HACKING LIBGCJ_LICENSE \
- NEWS README THANKS \
+ COPYING* HACKING LIBGCJ_LICENSE \
+ NEWS README* THANKS \
$PKG5/usr/doc/gcc-${VERSION}/libjava
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/libjava/ChangeLog
+ touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/libjava/ChangeLog
+ fi
)
mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libmudflap
( cd libmudflap
- cp -a \
- ChangeLog \
- $PKG1/usr/doc/gcc-${VERSION}/libmudflap
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog
+ touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog
+ fi
)
mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libgomp
( cd libgomp
- cp -a \
- ChangeLog \
- $PKG1/usr/doc/gcc-${VERSION}/libgomp
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog
+ touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog
+ fi
)
mkdir -p $PKG6/usr/doc/gcc-${VERSION}/libobjc
( cd libobjc
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG6/usr/doc/gcc-${VERSION}/libobjc/ChangeLog
+ touch -r ChangeLog $PKG6/usr/doc/gcc-${VERSION}/libobjc/ChangeLog
+ fi
cp -a \
- ChangeLog README README.threads THREADS THREADS.MACH \
+ README* THREADS* \
$PKG6/usr/doc/gcc-${VERSION}/libobjc
)
mkdir -p $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3
( cd libstdc++-v3
cp -a \
- ChangeLog README \
- $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3
-
- cp -a \
+ README* \
docs/html/faq \
$PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3
+ if [ -r ChangeLog ]; then
+ cat ChangeLog | head -n 1000 > $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog
+ touch -r ChangeLog $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog
+ fi
)
)
# build gcc
@@ -253,6 +307,7 @@ cp $CWD/ecj-4.3.jar gcc-$VERSION/ecj.jar
--enable-threads=posix \
--enable-checking=release \
--with-system-zlib \
+ --with-python-dir=/lib$LIBDIRSUFFIX/python2.6/site-packages \
--disable-libunwind-exceptions \
--enable-__cxa_atexit \
--enable-libssp \
@@ -409,6 +464,7 @@ fi
# gcc-java:
( cd $PKG5
mkdir -p usr/bin
+ mv $PKG1/usr/bin/aot-compile usr/bin
mv $PKG1/usr/bin/addr2name.awk usr/bin
# mv $PKG1/usr/bin/fastjar usr/bin
mv $PKG1/usr/bin/gappletviewer usr/bin
@@ -430,7 +486,9 @@ fi
mv $PKG1/usr/bin/jcf-dump usr/bin
mv $PKG1/usr/bin/jv-* usr/bin
mv $PKG1/usr/bin/rmi* usr/bin
- mkdir -p usr/include
+ mkdir -p usr/include/c++/$VERSION
+ # Move some Java only C++ headers from the C++ package:
+ mv $PKG2/usr/include/c++/$VERSION/{gcj,gnu,java,javax,org,sun} usr/include/c++/$VERSION
mv $PKG1/usr/include/ffi.h usr/include
mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jawt.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
@@ -441,6 +499,12 @@ fi
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jni_md.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jvmpi.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/libffi usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ # aot-compile Python plugins:
+ if [ ! -d $PKG1/usr/lib${LIBDIRSUFFIX}/python2.6 ]; then
+ echo "NO $PKG1/usr/lib${LIBDIRSUFFIX}/python2.6 !"
+ exit 1
+ fi
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/python2.6 usr/lib${LIBDIRSUFFIX}
mkdir -p usr/info
mv $PKG1/usr/info/gcj.* usr/info
# mv $PKG1/usr/info/fastjar.* usr/info
@@ -462,6 +526,7 @@ fi
mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/gcj usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
mkdir -p usr/man/man1
+ mv $PKG1/usr/man/man1/aot-compile.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gappletviewer.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gc-analyze.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gcj.1.gz usr/man/man1
@@ -471,6 +536,7 @@ fi
mv $PKG1/usr/man/man1/gjar.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gjarsigner.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gjavah.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gjdoc.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gjnih.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gkeytool.1.gz usr/man/man1
mv $PKG1/usr/man/man1/gnative2ascii.1.gz usr/man/man1
@@ -483,6 +549,7 @@ fi
mv $PKG1/usr/man/man1/jcf-dump.1.gz usr/man/man1
mv $PKG1/usr/man/man1/jv-convert.1.gz usr/man/man1
mv $PKG1/usr/man/man1/jv-scan.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/rebuild-gcj-db.1.gz usr/man/man1
mkdir -p usr/share
mv $PKG1/usr/share/java usr/share
)
diff --git a/source/d/gdb/gdb.SlackBuild b/source/d/gdb/gdb.SlackBuild
index ea55ec9dd..cad8c97ce 100755
--- a/source/d/gdb/gdb.SlackBuild
+++ b/source/d/gdb/gdb.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-6.8}
-ARCH=${ARCH:-x86_64}
+PKGNAM=gdb
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
@@ -41,7 +52,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf gdb-$VERSION
-tar xvf $CWD/gdb-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/gdb-$VERSION.tar.?z* || exit 1
cd gdb-$VERSION || exit 1
chown -R root:root .
find . \
@@ -75,7 +86,7 @@ rm -f $PKG/usr/bin/gdbtui $PKG/usr/man/man1/gdbtui.1*
mkdir -p $PKG/usr/doc/gdb-$VERSION/gdb
cp -a COPYING* README $PKG/usr/doc/gdb-$VERSION
cd gdb
-cp -a NEWS README TODO $PKG/usr/doc/gdb-$VERSION/gdb
+cp -a NEWS README $PKG/usr/doc/gdb-$VERSION/gdb
cp -a gdbserver/README $PKG/usr/doc/gdb-$VERSION/README.gdbserver
find $PKG/usr/doc/gdb-$VERSION -type f -exec chmod 644 {} \;
diff --git a/source/d/git/git-1.6.4.tar.sign b/source/d/git/git-1.6.4.tar.sign
deleted file mode 100644
index 2230cf7d7..000000000
--- a/source/d/git/git-1.6.4.tar.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBKcAouyGugalF9Dw4RAqFKAJ9oLB8/l1VkfFlEjcAFo4Y5SUcq8gCeIbNI
-tWNG/MK+CTVBaz3cdiWCeJ8=
-=E/iU
------END PGP SIGNATURE-----
diff --git a/source/d/git/git-1.7.1.tar.sign b/source/d/git/git-1.7.1.tar.sign
new file mode 100644
index 000000000..57c6f6975
--- /dev/null
+++ b/source/d/git/git-1.7.1.tar.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBL0lwtyGugalF9Dw4RAtrvAKCGeAZD3xiFceJH1b9YUEgIdo0S9QCfVoJM
+Yp82hUEP7iNvKovjEKccemc=
+=zw7F
+-----END PGP SIGNATURE-----
diff --git a/source/d/git/git.SlackBuild b/source/d/git/git.SlackBuild
index bf00fcaed..7c8e9e34f 100755
--- a/source/d/git/git.SlackBuild
+++ b/source/d/git/git.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,10 +20,22 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.6.4
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
BUILD=${BUILD:-1}
+
+PKGNAM=git
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
eval $(perl '-V:installvendorlib')
PERLDIR=$installvendorlib/$ARCH-linux-thread-multi/auto
@@ -42,6 +54,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
@@ -70,6 +84,7 @@ cp -a \
contrib \
$PKG/usr/doc/git-$VERSION
( cd $PKG/usr/doc/git-$VERSION/Documentation ; rm *.1 *.3 *.7 )
+( cd $PKG/usr/doc/git-$VERSION && find . -name ".git*" -exec rm -r "{}" \; )
make $NUMJOBS \
prefix=/usr \
diff --git a/source/d/guile/guile.SlackBuild b/source/d/guile/guile.SlackBuild
index 79ad575d2..ec6cd977c 100755
--- a/source/d/guile/guile.SlackBuild
+++ b/source/d/guile/guile.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,8 +22,17 @@
VERSION=1.8.7
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -31,7 +40,7 @@ CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-guile
rm -rf $PKG
-mkdir -p $TMP $PKG/usr
+mkdir -p $PKG/usr
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -42,6 +51,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
@@ -61,7 +73,7 @@ CFLAGS="$SLKCFLAGS" \
--infodir=/usr/info \
--mandir=/usr/man \
--with-threads \
- $ARCH-slackware-linux
+ --build=$ARCH-slackware-linux
# Does not like parallel make...
make $NUMJOBS || make || exit 1
diff --git a/source/d/intltool/intltool.SlackBuild b/source/d/intltool/intltool.SlackBuild
index 5afd3e154..1588d50fa 100755
--- a/source/d/intltool/intltool.SlackBuild
+++ b/source/d/intltool/intltool.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,16 +22,24 @@
PKGNAM=intltool
-VERSION=0.40.5
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -39,11 +47,15 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
@@ -99,6 +111,14 @@ cp -a \
AUTHORS COPYING* INSTALL NEWS README* TODO \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/d/libtool/libtool.SlackBuild b/source/d/libtool/libtool.SlackBuild
index fb833a720..75a0ff2c1 100755
--- a/source/d/libtool/libtool.SlackBuild
+++ b/source/d/libtool/libtool.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -9,7 +9,7 @@
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
@@ -20,11 +20,20 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+VERSION=${VERSION:-$(echo libtool-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
-VERSION=1.5.26
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -36,20 +45,21 @@ if [ "$ARCH" = "i486" ]; then
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
-
cd $TMP
rm -rf libtool-$VERSION
+
tar xvf $CWD/libtool-$VERSION.tar.?z* || exit 1
+
cd libtool-$VERSION
chown -R root:root .
find . \
@@ -60,7 +70,6 @@ find . \
zcat $CWD/libtool.no.moved.warning.diff.gz | patch -p1 --verbose || exit 1
-
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
@@ -70,7 +79,7 @@ CFLAGS="$SLKCFLAGS" \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
-make install DESTDIR=$PKG || exit 1
+make install DESTDIR=$PKG
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -81,12 +90,12 @@ gzip -9 $PKG/usr/info/*
mkdir -p $PKG/usr/doc/libtool-$VERSION
cp -a \
AUTHORS COPYING NEWS README THANKS TODO \
- $PKG/usr/doc/libtool-$VERSION
+ $PKG/usr/doc/libtool-$VERSION
mkdir $PKG/install
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/libtool-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/libtool-${VERSION}-$ARCH-$BUILD.txz
diff --git a/source/d/libtool/libtool.no.moved.warning.diff b/source/d/libtool/libtool.no.moved.warning.diff
index e5197b5c6..f6a82285a 100644
--- a/source/d/libtool/libtool.no.moved.warning.diff
+++ b/source/d/libtool/libtool.no.moved.warning.diff
@@ -1,32 +1,44 @@
-diff -Nur libtool-1.5.26.orig/libltdl/ltmain.sh libtool-1.5.26/libltdl/ltmain.sh
---- libtool-1.5.26.orig/libltdl/ltmain.sh 2008-02-01 10:39:51.000000000 -0600
-+++ libtool-1.5.26/libltdl/ltmain.sh 2008-10-01 13:59:24.654020673 -0500
-@@ -2952,9 +2952,9 @@
- $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
- exit $EXIT_FAILURE
- fi
-- if test "$absdir" != "$libdir"; then
-- $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
-- fi
-+ #if test "$absdir" != "$libdir"; then
-+ # $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
-+ #fi
- path="$absdir"
+--- ./libltdl/config/ltmain.m4sh.orig 2009-11-16 07:17:22.000000000 -0600
++++ ./libltdl/config/ltmain.m4sh 2010-02-06 18:13:00.000000000 -0600
+@@ -4965,7 +4965,7 @@
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+- func_warning "library \`$lib' was moved."
++ # func_warning "library \`$lib' was moved."
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+@@ -5496,8 +5496,8 @@
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+- test "$absdir" != "$libdir" && \
+- func_warning "\`$deplib' seems to be moved"
++ # test "$absdir" != "$libdir" && \
++ # func_warning "\`$deplib' seems to be moved"
+
+ path="-L$absdir"
fi
- depdepl=
-diff -Nur libtool-1.5.26.orig/ltmain.sh libtool-1.5.26/ltmain.sh
---- libtool-1.5.26.orig/ltmain.sh 2008-02-01 10:39:51.000000000 -0600
-+++ libtool-1.5.26/ltmain.sh 2008-10-01 13:59:24.690024584 -0500
-@@ -2952,9 +2952,9 @@
- $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
- exit $EXIT_FAILURE
- fi
-- if test "$absdir" != "$libdir"; then
-- $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
-- fi
-+ #if test "$absdir" != "$libdir"; then
-+ # $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
-+ #fi
- path="$absdir"
+--- ./libltdl/config/ltmain.sh.orig 2009-11-16 07:23:18.000000000 -0600
++++ ./libltdl/config/ltmain.sh 2010-02-06 18:13:26.000000000 -0600
+@@ -5407,7 +5407,7 @@
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+- func_warning "library \`$lib' was moved."
++ # func_warning "library \`$lib' was moved."
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+@@ -5938,8 +5938,8 @@
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+- test "$absdir" != "$libdir" && \
+- func_warning "\`$deplib' seems to be moved"
++ # test "$absdir" != "$libdir" && \
++ # func_warning "\`$deplib' seems to be moved"
+
+ path="-L$absdir"
fi
- depdepl=
diff --git a/source/d/m4/m4.SlackBuild b/source/d/m4/m4.SlackBuild
index 06c73757e..f74e022fd 100755
--- a/source/d/m4/m4.SlackBuild
+++ b/source/d/m4/m4.SlackBuild
@@ -20,11 +20,21 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.4.13
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=1.4.14
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-m4
@@ -38,6 +48,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -97,12 +110,8 @@ fi
#cat src/m4 > $PKG/usr/bin/m4
#chmod 755 $PKG/usr/bin/*
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
- xargs strip --strip-unneeded 2> /dev/null || true
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
- xargs strip --strip-unneeded 2> /dev/null
-)
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
mkdir -p $PKG/usr/doc/m4-$VERSION
cp -a \
@@ -110,7 +119,7 @@ cp -a \
$PKG/usr/doc/m4-$VERSION
head -n 357 ChangeLog > $PKG/usr/doc/m4-$VERSION/ChangeLog
touch -r ChangeLog $PKG/usr/doc/m4-$VERSION/ChangeLog
-chmod 644 $PKG/usr/doc/m4-$VERSION/COPYING*
+chmod 0644 $PKG/usr/doc/m4-$VERSION/COPYING*
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/d/mercurial/doinst.sh b/source/d/mercurial/doinst.sh
new file mode 100644
index 000000000..4cefcc343
--- /dev/null
+++ b/source/d/mercurial/doinst.sh
@@ -0,0 +1,13 @@
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/mercurial/hgrc.d/hgk.rc.new
+rm -f etc/mercurial/hgrc.d/hgk.rc.new
diff --git a/source/d/mercurial/mercurial.SlackBuild b/source/d/mercurial/mercurial.SlackBuild
index 88ccc969f..0069eac2b 100755
--- a/source/d/mercurial/mercurial.SlackBuild
+++ b/source/d/mercurial/mercurial.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,10 +20,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.2.1
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo mercurial-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-mercurial
@@ -33,7 +42,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf mercurial-$VERSION
-tar xvf $CWD/mercurial-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/mercurial-$VERSION.tar.?z* || exit 1
cd mercurial-$VERSION
chown -R root.root .
find . \
@@ -44,6 +53,36 @@ find . \
python setup.py build install --root=$PKG || exit 1
+# Ordinarily we will not add stuff that's not installed through the normal
+# default installation method, but we've had a lot of requests, and it appears
+# that installing at least the hgk extension is the ad-hoc standard.
+mkdir -p $PKG/usr/libexec/mercurial
+cp -a contrib/hgk $PKG/usr/libexec/mercurial
+chmod 0755 $PKG/usr/libexec/mercurial/hgk
+
+mkdir -p $PKG/etc/mercurial/hgrc.d
+cat << EOF > $PKG/etc/mercurial/hgrc.d/hgk.rc.new
+[extensions]
+# enable hgk extension ('hg help' shows 'view' as a command)
+hgk =
+[hgk]
+
+path=/usr/libexec/mercurial/hgk
+EOF
+
+# Bash and zsh completion:
+mkdir -p $PKG/etc/bash_completion.d
+cp -a contrib/bash_completion $PKG/etc/bash_completion.d/mercurial.sh
+chmod 644 $PKG/etc/bash_completion.d/mercurial.sh
+mkdir -p $PKG/usr/share/zsh/site-functions
+cp -a contrib/zsh_completion $PKG/usr/share/zsh/site-functions/_mercurial
+chmod 644 $PKG/usr/share/zsh/site-functions/_mercurial
+
+# Emacs Lisp extensions:
+mkdir -p $PKG/usr/share/emacs/site-lisp
+cp -a contrib/mercurial.el contrib/mq.el $PKG/usr/share/emacs/site-lisp
+chmod 644 $PKG/usr/share/emacs/site-lisp/*
+
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -62,6 +101,7 @@ cp -a \
$PKG/usr/doc/mercurial-$VERSION
mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
diff --git a/source/d/nasm/nasm.SlackBuild b/source/d/nasm/nasm.SlackBuild
index 27cbc57cd..73e1e37a8 100755
--- a/source/d/nasm/nasm.SlackBuild
+++ b/source/d/nasm/nasm.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.05.01
-ARCH=${ARCH:-x86_64}
+VERSION=2.07
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
else
diff --git a/source/d/oprofile/oprofile.SlackBuild b/source/d/oprofile/oprofile.SlackBuild
index 28feae4ab..8a9d2bef5 100755
--- a/source/d/oprofile/oprofile.SlackBuild
+++ b/source/d/oprofile/oprofile.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=0.9.4
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo oprofile-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -52,8 +61,13 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP || exit 1
rm -rf oprofile-$VERSION
-tar xvf $CWD/oprofile-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/oprofile-$VERSION.tar.?z* || exit 1
cd oprofile-$VERSION
+
+zcat $CWD/oprofile.qt4.diff.gz | patch -p1 --verbose || exit 1
+
+./autogen.sh
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -72,21 +86,46 @@ CXXFLAGS="$SLKCFLAGS" \
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
# This seems misplaced, and isn't referenced by any binaries or other files.
# I'm tempted to think it shouldn't have been installed, but will just move it:
if [ -r $PKG/usr/share/mangled-name ]; then
mv $PKG/usr/share/mangled-name $PKG/usr/share/oprofile/mangled-name
fi
-( cd $PKG/usr/bin
- strip --strip-unneeded *
-)
+
mv $PKG/usr/share/doc $PKG/usr
mv $PKG/usr/doc/oprofile $PKG/usr/doc/oprofile-$VERSION
cp -a \
COPYING README TODO \
$PKG/usr/doc/oprofile-$VERSION
-gzip -9 $PKG/usr/man/man?/*
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/d/oprofile/oprofile.qt4.diff b/source/d/oprofile/oprofile.qt4.diff
new file mode 100644
index 000000000..e5506a82e
--- /dev/null
+++ b/source/d/oprofile/oprofile.qt4.diff
@@ -0,0 +1,3194 @@
+commit 4513fe62e4517057374091092073e0940584ebe2
+Author: Tobias Doerffel <tobias.doerffel@gmail.com>
+Date: Mon Jun 29 12:05:49 2009 +0200
+
+ Port GUI to Qt4
+
+diff --git a/configure.in b/configure.in
+index 6f684a0..883a7ad 100644
+--- a/configure.in
++++ b/configure.in
+@@ -131,7 +131,7 @@ ORIG_X_SAVE_LIBS="$LIBS"
+ LIBS="$X_PRE_LIBS $LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
+ X_LIBS="$LIBS"
+ AC_SUBST(X_LIBS)
+-QT_DO_IT_ALL
++QT4_DO_IT_ALL
+ LIBS="$ORIG_X_SAVE_LIBS"
+
+ dnl enable pch for c++
+@@ -155,7 +155,7 @@ AC_SUBST(POPT_LIBS)
+
+ # do NOT put tests here, they will fail in the case X is not installed !
+
+-AM_CONDITIONAL(have_qt, test -n "$QT_LIB")
++AM_CONDITIONAL(have_qt, test -n "$QT4_LIB")
+
+ AX_CFLAGS_OPTION(OP_CFLAGS,[-W])
+ AX_CXXFLAGS_OPTION(OP_CXXFLAGS,[-W])
+@@ -258,7 +258,6 @@ AC_OUTPUT(Makefile \
+ opjitconv/Makefile \
+ pp/Makefile \
+ gui/Makefile \
+- gui/ui/Makefile \
+ module/Makefile \
+ module/x86/Makefile \
+ module/ia64/Makefile \
+@@ -268,8 +267,8 @@ AC_OUTPUT(Makefile \
+
+ AX_COPY_IF_CHANGE(doc/xsl/catalog-1.xml, doc/xsl/catalog.xml)
+
+-if test -z "$QT_LIB"; then
+- echo "Warning: a working Qt not found; no GUI will be built"
++if test -z "$QT4_LIB"; then
++ echo "Warning: a working Qt4 not found; no GUI will be built"
+ fi
+
+ if test "`getent passwd oprofile 2>/dev/null`" == "" || \
+diff --git a/gui/Makefile.am b/gui/Makefile.am
+index ba5e27c..69e01dd 100644
+--- a/gui/Makefile.am
++++ b/gui/Makefile.am
+@@ -1,5 +1,3 @@
+-SUBDIRS = ui
+-
+ dist_sources = \
+ oprof_start.cpp \
+ oprof_start_config.cpp \
+@@ -14,7 +12,7 @@ EXTRA_DIST = $(dist_sources)
+ if have_qt
+
+ AM_CPPFLAGS = \
+- @QT_INCLUDES@ \
++ @QT4_INCLUDES@ \
+ -I ${top_srcdir}/libop \
+ -I ${top_srcdir}/libutil++ \
+ -I ${top_srcdir}/libutil
+@@ -25,19 +23,22 @@ bin_PROGRAMS = oprof_start
+
+ oprof_start_SOURCES = $(dist_sources)
+ nodist_oprof_start_SOURCES = oprof_start.moc.cpp
++BUILT_SOURCES = ui_oprof_start.base.h
+ oprof_start_LDADD = \
+ ../libutil++/libutil++.a \
+ ../libop/libop.a \
+ ../libutil/libutil.a \
+- ui/liboprof_start.a \
+- @QT_LDFLAGS@ \
+- @QT_LIB@ \
++ @QT4_LDFLAGS@ \
++ @QT4_LIB@ -lQt3Support \
+ @X_LIBS@
+
+ oprof_start.moc.cpp: ${top_srcdir}/gui/oprof_start.h
+- $(MOC) -o $@ ${top_srcdir}/gui/oprof_start.h
++ $(MOC4) -o $@ ${top_srcdir}/gui/oprof_start.h
++
++ui_oprof_start.base.h: ${top_srcdir}/gui/ui/oprof_start.base.ui
++ $(UIC4) -o $@ $<
+
+ clean-local:
+- rm -f oprof_start.moc.cpp
++ rm -f oprof_start.moc.cpp ui_oprof_start.base.h
+
+ endif
+diff --git a/gui/oprof_start.cpp b/gui/oprof_start.cpp
+index 0387136..615c8d7 100644
+--- a/gui/oprof_start.cpp
++++ b/gui/oprof_start.cpp
+@@ -23,7 +23,6 @@
+ #include <qlineedit.h>
+ #include <qlistview.h>
+ #include <qcombobox.h>
+-#include <qlistbox.h>
+ #include <qfiledialog.h>
+ #include <qbuttongroup.h>
+ #include <qcheckbox.h>
+@@ -32,7 +31,8 @@
+ #include <qvalidator.h>
+ #include <qlabel.h>
+ #include <qpushbutton.h>
+-#include <qheader.h>
++#include <Qt3Support/Q3ListBox>
++#include <Qt3Support/Q3Header>
+
+ #include "config.h"
+ #include "oprof_start.h"
+@@ -106,12 +106,15 @@ op_event_descr::op_event_descr()
+
+ oprof_start::oprof_start()
+ :
+- oprof_start_base(0, 0, false, 0),
++ QDialog(0),
++ oprof_start_base(),
+ event_count_validator(new QIntValidator(event_count_edit)),
+ current_event(0),
+ cpu_speed(op_cpu_frequency()),
+ total_nr_interrupts(0)
+ {
++ setupUi( this );
++
+ green_pixmap = new QPixmap(green_xpm);
+ red_pixmap = new QPixmap(red_xpm);
+ vector<string> args;
+@@ -124,7 +127,7 @@ oprof_start::oprof_start()
+ op_nr_counters = op_get_nr_counters(cpu_type);
+
+ if (cpu_type == CPU_TIMER_INT) {
+- setup_config_tab->removePage(counter_setup_page);
++ setup_config_tab->removeTab(setup_config_tab->indexOf(counter_setup_page));
+ } else {
+ fill_events();
+ }
+@@ -268,12 +271,12 @@ void oprof_start::fill_events()
+ namespace {
+
+ /// find the first item with the given text in column 0 or return NULL
+-QListViewItem * findItem(QListView * view, char const * name)
++Q3ListViewItem * findItem(Q3ListView * view, char const * name)
+ {
+- // Qt 2.3.1 does not have QListView::findItem()
+- QListViewItem * item = view->firstChild();
++ // Qt 2.3.1 does not have Q3ListView::findItem()
++ Q3ListViewItem * item = view->firstChild();
+
+- while (item && strcmp(item->text(0).latin1(), name))
++ while (item && strcmp(item->text(0).toLatin1().constData(), name))
+ item = item->nextSibling();
+
+ return item;
+@@ -292,7 +295,7 @@ void oprof_start::setup_default_event()
+ event_cfgs[descr.name].user_ring_count = 1;
+ event_cfgs[descr.name].os_ring_count = 1;
+
+- QListViewItem * item = findItem(events_list, descr.name);
++ Q3ListViewItem * item = findItem(events_list, descr.name);
+ if (item)
+ item->setSelected(true);
+ }
+@@ -349,7 +352,7 @@ void oprof_start::read_set_events()
+ event_cfgs[ev_name].os_ring_count = 1;
+ }
+
+- QListViewItem * item = findItem(events_list, ev_name.c_str());
++ Q3ListViewItem * item = findItem(events_list, ev_name.c_str());
+ if (item)
+ item->setSelected(true);
+ }
+@@ -436,7 +439,7 @@ void oprof_start::fill_events_listbox()
+
+ for (vector<op_event_descr>::reverse_iterator cit = v_events.rbegin();
+ cit != v_events.rend(); ++cit) {
+- new QListViewItem(events_list, cit->name.c_str());
++ new Q3ListViewItem(events_list, cit->name.c_str());
+ }
+
+ setUpdatesEnabled(true);
+@@ -467,7 +470,7 @@ void oprof_start::display_event(op_event_descr const & descr)
+ }
+
+
+-bool oprof_start::is_selectable_event(QListViewItem * item)
++bool oprof_start::is_selectable_event(Q3ListViewItem * item)
+ {
+ if (item->isSelected())
+ return true;
+@@ -486,7 +489,7 @@ bool oprof_start::is_selectable_event(QListViewItem * item)
+
+ void oprof_start::draw_event_list()
+ {
+- QListViewItem * cur;
++ Q3ListViewItem * cur;
+ for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) {
+ if (is_selectable_event(cur))
+ cur->setPixmap(0, *green_pixmap);
+@@ -500,9 +503,9 @@ bool oprof_start::alloc_selected_events() const
+ {
+ vector<op_event const *> events;
+
+- set<QListViewItem *>::const_iterator it;
++ set<Q3ListViewItem *>::const_iterator it;
+ for (it = selected_events.begin(); it != selected_events.end(); ++it)
+- events.push_back(find_event_by_name((*it)->text(0).latin1(),0,0));
++ events.push_back(find_event_by_name((*it)->text(0).toLatin1().constData(),0,0));
+
+ size_t * map =
+ map_event_to_counter(&events[0], events.size(), cpu_type);
+@@ -520,24 +523,24 @@ void oprof_start::event_selected()
+ // (de)selected item so we record a set of selected items and diff
+ // it in the appropriate way with the previous list of selected items.
+
+- set<QListViewItem *> current_selection;
+- QListViewItem * cur;
++ set<Q3ListViewItem *> current_selection;
++ Q3ListViewItem * cur;
+ for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) {
+ if (cur->isSelected())
+ current_selection.insert(cur);
+ }
+
+ // First remove the deselected item.
+- vector<QListViewItem *> new_deselected;
++ vector<Q3ListViewItem *> new_deselected;
+ set_difference(selected_events.begin(), selected_events.end(),
+ current_selection.begin(), current_selection.end(),
+ back_inserter(new_deselected));
+- vector<QListViewItem *>::const_iterator it;
++ vector<Q3ListViewItem *>::const_iterator it;
+ for (it = new_deselected.begin(); it != new_deselected.end(); ++it)
+ selected_events.erase(*it);
+
+ // Now try to add the newly selected item if enough HW resource exists
+- vector<QListViewItem *> new_selected;
++ vector<Q3ListViewItem *> new_selected;
+ set_difference(current_selection.begin(), current_selection.end(),
+ selected_events.begin(), selected_events.end(),
+ back_inserter(new_selected));
+@@ -554,26 +557,26 @@ void oprof_start::event_selected()
+ draw_event_list();
+
+ if (current_event)
+- display_event(locate_event(current_event->text(0).latin1()));
++ display_event(locate_event(current_event->text(0).toLatin1().constData()));
+ }
+
+
+-void oprof_start::event_over(QListViewItem * item)
++void oprof_start::event_over(Q3ListViewItem * item)
+ {
+- op_event_descr const & descr = locate_event(item->text(0).latin1());
++ op_event_descr const & descr = locate_event(item->text(0).toLatin1().constData());
+
+ string help_str = descr.help_str.c_str();
+ if (!is_selectable_event(item)) {
+ help_str += " conflicts with:";
+
+- set<QListViewItem *>::const_iterator it;
++ set<Q3ListViewItem *>::const_iterator it;
+ for (it = selected_events.begin();
+ it != selected_events.end(); ) {
+- QListViewItem * temp = *it;
++ Q3ListViewItem * temp = *it;
+ selected_events.erase(it++);
+ if (is_selectable_event(item)) {
+ help_str += " ";
+- help_str += temp->text(0).latin1();
++ help_str += temp->text(0).toLatin1().constData();
+ }
+ selected_events.insert(temp);
+ }
+@@ -586,7 +589,7 @@ void oprof_start::event_over(QListViewItem * item)
+ /// select the kernel image filename
+ void oprof_start::choose_kernel_filename()
+ {
+- string name = kernel_filename_edit->text().latin1();
++ string name = kernel_filename_edit->text().toLatin1().constData();
+ string result = do_open_file_or_dir(name, false);
+
+ if (!result.empty())
+@@ -601,7 +604,7 @@ void oprof_start::record_selected_event_config()
+ if (!current_event)
+ return;
+
+- string name(current_event->text(0).latin1());
++ string name(current_event->text(0).toLatin1().constData());
+
+ event_setting & cfg = event_cfgs[name];
+ op_event_descr const & curr = locate_event(name);
+@@ -617,7 +620,7 @@ void oprof_start::record_selected_event_config()
+ // are not sufficient to do the validation)
+ bool oprof_start::record_config()
+ {
+- config.kernel_filename = kernel_filename_edit->text().latin1();
++ config.kernel_filename = kernel_filename_edit->text().toLatin1().constData();
+ config.no_kernel = no_vmlinux->isChecked();
+
+ uint temp = buffer_size_edit->text().toUInt();
+@@ -824,7 +827,7 @@ uint oprof_start::max_perf_count() const
+ }
+
+
+-void oprof_start::on_flush_profiler_data()
++void oprof_start::flush_profiler_data()
+ {
+ vector<string> args;
+ args.push_back("--dump");
+@@ -837,14 +840,14 @@ void oprof_start::on_flush_profiler_data()
+
+
+ // user is happy of its setting.
+-void oprof_start::on_start_profiler()
++void oprof_start::start_profiler()
+ {
+ // save the current settings
+ record_selected_event_config();
+
+ bool one_enable = false;
+
+- QListViewItem * cur;
++ Q3ListViewItem * cur;
+ for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) {
+ if (!cur->isSelected())
+ continue;
+@@ -852,9 +855,9 @@ void oprof_start::on_start_profiler()
+ // the missing reference is intended: gcc 2.91.66 can compile
+ // "op_event_descr const & descr = ..." w/o a warning
+ op_event_descr const descr =
+- locate_event(cur->text(0).latin1());
++ locate_event(cur->text(0).toLatin1().constData());
+
+- event_setting & cfg = event_cfgs[cur->text(0).latin1()];
++ event_setting & cfg = event_cfgs[cur->text(0).toLatin1().constData()];
+
+ one_enable = true;
+
+@@ -909,7 +912,7 @@ void oprof_start::on_start_profiler()
+ return;
+
+ // this flush profiler data also.
+- on_stop_profiler();
++ stop_profiler();
+ }
+
+ vector<string> args;
+@@ -946,15 +949,15 @@ bool oprof_start::save_config()
+ vector<string> tmpargs;
+ tmpargs.push_back("--setup");
+
+- QListViewItem * cur;
++ Q3ListViewItem * cur;
+ for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) {
+ if (!cur->isSelected())
+ continue;
+
+- event_setting & cfg = event_cfgs[cur->text(0).latin1()];
++ event_setting & cfg = event_cfgs[cur->text(0).toLatin1().constData()];
+
+ op_event_descr const & descr =
+- locate_event(cur->text(0).latin1());
++ locate_event(cur->text(0).toLatin1().constData());
+
+ one_enabled = true;
+
+@@ -1016,7 +1019,7 @@ bool oprof_start::save_config()
+
+
+ // flush and stop the profiler if it was started.
+-void oprof_start::on_stop_profiler()
++void oprof_start::stop_profiler()
+ {
+ vector<string> args;
+ args.push_back("--shutdown");
+@@ -1030,13 +1033,13 @@ void oprof_start::on_stop_profiler()
+ }
+
+
+-void oprof_start::on_separate_kernel_cb_changed(int state)
++void oprof_start::separate_kernel_cb_changed(int state)
+ {
+ if (state == 2)
+ separate_lib_cb->setChecked(true);
+ }
+
+-void oprof_start::on_reset_sample_files()
++void oprof_start::reset_sample_files()
+ {
+ int ret = QMessageBox::warning(this, 0, "Are you sure you want to "
+ "reset your last profile session ?", "Yes", "No", 0, 0, 1);
+diff --git a/gui/oprof_start.h b/gui/oprof_start.h
+index c2910ee..a2c5eb5 100644
+--- a/gui/oprof_start.h
++++ b/gui/oprof_start.h
+@@ -16,13 +16,16 @@
+ #include <map>
+ #include <set>
+
+-#include "ui/oprof_start.base.h"
++#include <QtGui/QDialog>
++class QColorGroup;
++
++#include "ui_oprof_start.base.h"
+ #include "oprof_start_config.h"
+
+ #include "op_events.h"
+
+ class QIntValidator;
+-class QListViewItem;
++class Q3ListViewItem;
+ class QTimerEvent;
+
+ /// a struct describing a particular event type
+@@ -43,7 +46,7 @@ struct op_event_descr {
+ uint min_count;
+ };
+
+-class oprof_start : public oprof_start_base
++class oprof_start : public QDialog, public Ui::oprof_start_base
+ {
+ Q_OBJECT
+
+@@ -54,19 +57,19 @@ protected slots:
+ /// select the kernel image filename
+ void choose_kernel_filename();
+ /// flush profiler
+- void on_flush_profiler_data();
++ void flush_profiler_data();
+ /// start profiler
+- void on_start_profiler();
++ void start_profiler();
+ /// stop profiler
+- void on_stop_profiler();
++ void stop_profiler();
+ /// events selection change
+ void event_selected();
+ /// the mouse is over an event
+- void event_over(QListViewItem *);
++ void event_over(Q3ListViewItem *);
+ /// state of separate_kernel_cb changed
+- void on_separate_kernel_cb_changed(int);
++ void separate_kernel_cb_changed(int);
+ /// reset sample files
+- void on_reset_sample_files();
++ void reset_sample_files();
+
+ /// close the dialog
+ void accept();
+@@ -121,7 +124,7 @@ private:
+ void draw_event_list();
+
+ /// return true if item is selectable or already selected
+- bool is_selectable_event(QListViewItem * item);
++ bool is_selectable_event(Q3ListViewItem * item);
+
+ /// try to alloc counters for the selected_events
+ bool alloc_selected_events() const;
+@@ -139,8 +142,8 @@ private:
+ /// The currently selected events. We must track this because
+ /// with multiple selection listbox QT doesn't allow to know
+ /// what is the last selected item. events_selected() update it
+- std::set<QListViewItem *> selected_events;
+- QListViewItem * current_event;
++ std::set<Q3ListViewItem *> selected_events;
++ Q3ListViewItem * current_event;
+
+ /// current config
+ config_setting config;
+diff --git a/gui/oprof_start_main.cpp b/gui/oprof_start_main.cpp
+index 44da5de..4930d9a 100644
+--- a/gui/oprof_start_main.cpp
++++ b/gui/oprof_start_main.cpp
+@@ -19,7 +19,7 @@ int main(int argc, char* argv[])
+
+ oprof_start* dlg = new oprof_start();
+
+- a.setMainWidget(dlg);
++ a.setActiveWindow(dlg);
+
+ dlg->show();
+
+diff --git a/gui/oprof_start_util.cpp b/gui/oprof_start_util.cpp
+index d293431..17359ae 100644
+--- a/gui/oprof_start_util.cpp
++++ b/gui/oprof_start_util.cpp
+@@ -293,17 +293,16 @@ string const do_open_file_or_dir(string const & base_dir, bool dir_only)
+ QString result;
+
+ if (dir_only) {
+- result = QFileDialog::getExistingDirectory(base_dir.c_str(), 0,
+- "open_file_or_dir", "Get directory name", true);
++ result = QFileDialog::getExistingDirectory(NULL, "Get directory name",
++ base_dir.c_str(), QFileDialog::ShowDirsOnly);
+ } else {
+- result = QFileDialog::getOpenFileName(base_dir.c_str(), 0, 0,
+- "open_file_or_dir", "Get filename");
++ result = QFileDialog::getOpenFileName(NULL, "Get filename", base_dir.c_str());
+ }
+
+ if (result.isNull())
+ return string();
+ else
+- return result.latin1();
++ return result.toLatin1().constData();
+ }
+
+ /**
+diff --git a/gui/ui/oprof_start.base.ui b/gui/ui/oprof_start.base.ui
+index 4fcc43f..b882656 100644
+--- a/gui/ui/oprof_start.base.ui
++++ b/gui/ui/oprof_start.base.ui
+@@ -1,1190 +1,1055 @@
+-<!DOCTYPE UI><UI>
+-<class>oprof_start_base</class>
+-<widget>
+- <class>QDialog</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>oprof_start_base</cstring>
+- </property>
+- <property stdset="1">
+- <name>geometry</name>
+- <rect>
+- <x>0</x>
+- <y>0</y>
+- <width>625</width>
+- <height>735</height>
+- </rect>
+- </property>
+- <property stdset="1">
+- <name>caption</name>
+- <string>Start profiler</string>
+- </property>
+- <property stdset="1">
+- <name>sizeGripEnabled</name>
+- <bool>true</bool>
+- </property>
+- <vbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>11</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QTabWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>setup_config_tab</cstring>
++<?xml version="1.0" encoding="UTF-8"?>
++<ui version="4.0">
++ <class>oprof_start_base</class>
++ <widget class="QDialog" name="oprof_start_base">
++ <property name="geometry">
++ <rect>
++ <x>0</x>
++ <y>0</y>
++ <width>625</width>
++ <height>735</height>
++ </rect>
++ </property>
++ <property name="windowTitle">
++ <string>Start profiler</string>
++ </property>
++ <property name="sizeGripEnabled">
++ <bool>true</bool>
++ </property>
++ <layout class="QVBoxLayout">
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <property name="margin">
++ <number>11</number>
++ </property>
++ <item>
++ <widget class="QTabWidget" name="setup_config_tab">
++ <widget class="QWidget" name="counter_setup_page">
++ <attribute name="title">
++ <string>&amp;Setup</string>
++ </attribute>
++ <layout class="QVBoxLayout">
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <property name="margin">
++ <number>11</number>
++ </property>
++ <item>
++ <widget class="Q3GroupBox" name="counter_group">
++ <property name="title">
++ <string>Events</string>
++ </property>
++ <layout class="QVBoxLayout">
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <property name="margin">
++ <number>11</number>
++ </property>
++ <item>
++ <layout class="QHBoxLayout">
++ <property name="spacing">
++ <number>6</number>
+ </property>
+- <widget>
+- <class>QWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>counter_setup_page</cstring>
++ <property name="margin">
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="Q3ListView" name="events_list">
++ <property name="minimumSize">
++ <size>
++ <width>250</width>
++ <height>0</height>
++ </size>
++ </property>
++ <property name="toolTip">
++ <string>Available events</string>
++ </property>
++ <property name="selectionMode">
++ <enum>Q3ListView::Multi</enum>
++ </property>
++ <column>
++ <property name="text">
++ <string>Removedincode</string>
++ </property>
++ <property name="clickable">
++ <bool>false</bool>
++ </property>
++ <property name="resizable">
++ <bool>true</bool>
++ </property>
++ </column>
++ </widget>
++ </item>
++ <item>
++ <layout class="QVBoxLayout">
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <property name="margin">
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="QCheckBox" name="os_ring_count_cb">
++ <property name="toolTip">
++ <string>Profile kernel code</string>
+ </property>
+- <attribute>
+- <name>title</name>
+- <string>&amp;Setup</string>
+- </attribute>
+- <vbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>11</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QGroupBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>counter_group</cstring>
+- </property>
+- <property stdset="1">
+- <name>title</name>
+- <string>Events</string>
+- </property>
+- <vbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>11</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QLayoutWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>Layout10</cstring>
+- </property>
+- <hbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>0</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QListView</class>
+- <column>
+- <property>
+- <name>text</name>
+- <string>Removedincode</string>
+- </property>
+- <property>
+- <name>clickable</name>
+- <bool>false</bool>
+- </property>
+- <property>
+- <name>resizeable</name>
+- <bool>true</bool>
+- </property>
+- </column>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>events_list</cstring>
+- </property>
+- <property stdset="1">
+- <name>minimumSize</name>
+- <size>
+- <width>250</width>
+- <height>0</height>
+- </size>
+- </property>
+- <property stdset="1">
+- <name>selectionMode</name>
+- <enum>Multi</enum>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>Available events</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QLayoutWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>Layout9</cstring>
+- </property>
+- <vbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>0</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>os_ring_count_cb</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Profile &amp;kernel</string>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>Profile kernel code</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>user_ring_count_cb</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Profile &amp;user binaries</string>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>Profile user libraries and applications</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QLayoutWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>Layout16</cstring>
+- </property>
+- <hbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>0</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QLabel</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>TextLabel1_2</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>C&amp;ount</string>
+- </property>
+- <property>
+- <name>buddy</name>
+- <cstring>event_count_edit</cstring>
+- </property>
+- </widget>
+- <widget>
+- <class>QLineEdit</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>event_count_edit</cstring>
+- </property>
+- <property stdset="1">
+- <name>sizePolicy</name>
+- <sizepolicy>
+- <hsizetype>1</hsizetype>
+- <vsizetype>0</vsizetype>
+- </sizepolicy>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>Set the count value</string>
+- </property>
+- </widget>
+- <spacer>
+- <property>
+- <name>name</name>
+- <cstring>Spacer13_2</cstring>
+- </property>
+- <property stdset="1">
+- <name>orientation</name>
+- <enum>Horizontal</enum>
+- </property>
+- <property stdset="1">
+- <name>sizeType</name>
+- <enum>Expanding</enum>
+- </property>
+- <property>
+- <name>sizeHint</name>
+- <size>
+- <width>20</width>
+- <height>20</height>
+- </size>
+- </property>
+- </spacer>
+- </hbox>
+- </widget>
+- <widget>
+- <class>QButtonGroup</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>unit_mask_group</cstring>
+- </property>
+- <property stdset="1">
+- <name>sizePolicy</name>
+- <sizepolicy>
+- <hsizetype>1</hsizetype>
+- <vsizetype>5</vsizetype>
+- </sizepolicy>
+- </property>
+- <property stdset="1">
+- <name>title</name>
+- <string>Unit mask</string>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>Unit mask settings for this event</string>
+- </property>
+- <grid>
+- <property stdset="1">
+- <name>margin</name>
+- <number>11</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget row="0" column="0" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check0</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check0</string>
+- </property>
+- </widget>
+- <widget row="1" column="0" rowspan="2" colspan="2" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check1</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check1</string>
+- </property>
+- </widget>
+- <widget row="3" column="0" rowspan="2" colspan="2" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check2</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check2</string>
+- </property>
+- </widget>
+- <widget row="5" column="0" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check3</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check3</string>
+- </property>
+- </widget>
+- <widget row="6" column="0" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check4</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check4</string>
+- </property>
+- </widget>
+- <widget row="7" column="0" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check5</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check5</string>
+- </property>
+- </widget>
+- <widget row="8" column="0" rowspan="2" colspan="2" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check6</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check6</string>
+- </property>
+- </widget>
+- <widget row="10" column="0" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check7</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check7</string>
+- </property>
+- </widget>
+- <spacer row="11" column="1" >
+- <property>
+- <name>name</name>
+- <cstring>Spacer14</cstring>
+- </property>
+- <property stdset="1">
+- <name>orientation</name>
+- <enum>Vertical</enum>
+- </property>
+- <property stdset="1">
+- <name>sizeType</name>
+- <enum>Expanding</enum>
+- </property>
+- <property>
+- <name>sizeHint</name>
+- <size>
+- <width>20</width>
+- <height>20</height>
+- </size>
+- </property>
+- </spacer>
+- <widget row="5" column="1" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check11</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check11</string>
+- </property>
+- </widget>
+- <widget row="7" column="1" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check13</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check13</string>
+- </property>
+- </widget>
+- <widget row="10" column="1" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check15</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check15</string>
+- </property>
+- </widget>
+- <widget row="4" column="1" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check10</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check10</string>
+- </property>
+- </widget>
+- <widget row="9" column="1" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check14</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check14</string>
+- </property>
+- </widget>
+- <widget row="2" column="1" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check9</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check9</string>
+- </property>
+- </widget>
+- <widget row="0" column="1" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check8</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check8</string>
+- </property>
+- </widget>
+- <widget row="6" column="1" >
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>check12</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>check12</string>
+- </property>
+- </widget>
+- </grid>
+- </widget>
+- </vbox>
+- </widget>
+- </hbox>
+- </widget>
+- <widget>
+- <class>QLabel</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>event_help_label</cstring>
+- </property>
+- <property stdset="1">
+- <name>enabled</name>
+- <bool>true</bool>
+- </property>
+- <property stdset="1">
+- <name>sizePolicy</name>
+- <sizepolicy>
+- <hsizetype>1</hsizetype>
+- <vsizetype>1</vsizetype>
+- </sizepolicy>
+- </property>
+- <property stdset="1">
+- <name>frameShape</name>
+- <enum>WinPanel</enum>
+- </property>
+- <property stdset="1">
+- <name>frameShadow</name>
+- <enum>Sunken</enum>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string></string>
+- </property>
+- </widget>
+- </vbox>
+- </widget>
+- </vbox>
+- </widget>
+- <widget>
+- <class>QWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>configuration_page</cstring>
++ <property name="text">
++ <string>Profile &amp;kernel</string>
+ </property>
+- <attribute>
+- <name>title</name>
+- <string>&amp;Configuration</string>
+- </attribute>
+- <vbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>11</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QLayoutWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>Layout11</cstring>
+- </property>
+- <hbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>0</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QLabel</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>TextLabel1</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>&amp;Kernel image file</string>
+- </property>
+- <property>
+- <name>buddy</name>
+- <cstring>kernel_filename_edit</cstring>
+- </property>
+- </widget>
+- <widget>
+- <class>QLineEdit</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>kernel_filename_edit</cstring>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>The vmlinux file of the running kernel</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QToolButton</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>kernel_filename_tb</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>...</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>no_vmlinux</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>No kernel image</string>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>No kernel image available. Disables kernel profiling.</string>
+- </property>
+- </widget>
+- </hbox>
+- </widget>
+- <widget>
+- <class>QLayoutWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>Layout12</cstring>
+- </property>
+- <hbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>0</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QLayoutWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>Layout11</cstring>
+- </property>
+- <grid>
+- <property stdset="1">
+- <name>margin</name>
+- <number>0</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget row="0" column="1" >
+- <class>QLineEdit</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>buffer_size_edit</cstring>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>The size of the profiler's buffers</string>
+- </property>
+- </widget>
+- <widget row="1" column="1" >
+- <class>QLineEdit</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>note_table_size_edit</cstring>
+- </property>
+- </widget>
+- <widget row="3" column="0" >
+- <class>QLabel</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>cpu_buffer_size_label</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Cpu buffer size</string>
+- </property>
+- <property>
+- <name>buddy</name>
+- <cstring>cpu_buffer_size_edit</cstring>
+- </property>
+- </widget>
+- <widget row="3" column="1" >
+- <class>QLineEdit</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>cpu_buffer_size_edit</cstring>
+- </property>
+- </widget>
+- <widget row="0" column="0" >
+- <class>QLabel</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>buffer_size_label</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>&amp;Buffer size</string>
+- </property>
+- <property>
+- <name>buddy</name>
+- <cstring>buffer_size_edit</cstring>
+- </property>
+- </widget>
+- <widget row="1" column="0" >
+- <class>QLabel</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>note_table_size_label</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Note Size</string>
+- </property>
+- <property>
+- <name>buddy</name>
+- <cstring>note_table_size_edit</cstring>
+- </property>
+- </widget>
+- <widget row="2" column="1" >
+- <class>QLineEdit</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>buffer_watershed_edit</cstring>
+- </property>
+- </widget>
+- <widget row="2" column="0" >
+- <class>QLabel</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>buffer_watershed_label</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Buffer watershed</string>
+- </property>
+- <property>
+- <name>buddy</name>
+- <cstring>buffer_watershed_edit</cstring>
+- </property>
+- </widget>
+- </grid>
+- </widget>
+- <spacer>
+- <property>
+- <name>name</name>
+- <cstring>Spacer11</cstring>
+- </property>
+- <property stdset="1">
+- <name>orientation</name>
+- <enum>Horizontal</enum>
+- </property>
+- <property stdset="1">
+- <name>sizeType</name>
+- <enum>Expanding</enum>
+- </property>
+- <property>
+- <name>sizeHint</name>
+- <size>
+- <width>20</width>
+- <height>20</height>
+- </size>
+- </property>
+- </spacer>
+- </hbox>
+- </widget>
+- <widget>
+- <class>QLayoutWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>Layout36</cstring>
+- </property>
+- <grid>
+- <property stdset="1">
+- <name>margin</name>
+- <number>0</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget row="0" column="0" >
+- <class>QLayoutWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>Layout34</cstring>
+- </property>
+- <vbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>0</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>verbose</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>&amp;Verbose</string>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>Very verbose output in log file</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>separate_lib_cb</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Per-application profiles</string>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>Separate samples for each shared library. This increases the time and space overhead of OProfile.</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>separate_kernel_cb</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Per-application profiles, including kernel</string>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile.</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>separate_cpu_cb</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Per-CPU profiles</string>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile.</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QCheckBox</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>separate_thread_cb</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Per-thread/task profiles</string>
+- </property>
+- <property>
+- <name>toolTip</name>
+- <string>Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile.</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QLayoutWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>Layout33</cstring>
+- </property>
+- <hbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>0</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QLabel</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>callgraph_depth_label</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>callgraph depth, zero to disable</string>
+- </property>
+- <property>
+- <name>buddy</name>
+- <cstring>callgraph_depth_edit</cstring>
+- </property>
+- </widget>
+- <widget>
+- <class>QLineEdit</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>callgraph_depth_edit</cstring>
+- </property>
+- </widget>
+- </hbox>
+- </widget>
+- </vbox>
+- </widget>
+- <spacer row="0" column="1" >
+- <property>
+- <name>name</name>
+- <cstring>Spacer12</cstring>
+- </property>
+- <property stdset="1">
+- <name>orientation</name>
+- <enum>Horizontal</enum>
+- </property>
+- <property stdset="1">
+- <name>sizeType</name>
+- <enum>Expanding</enum>
+- </property>
+- <property>
+- <name>sizeHint</name>
+- <size>
+- <width>20</width>
+- <height>20</height>
+- </size>
+- </property>
+- </spacer>
+- </grid>
+- </widget>
+- <spacer>
+- <property>
+- <name>name</name>
+- <cstring>Spacer9</cstring>
+- </property>
+- <property stdset="1">
+- <name>orientation</name>
+- <enum>Vertical</enum>
+- </property>
+- <property stdset="1">
+- <name>sizeType</name>
+- <enum>Expanding</enum>
+- </property>
+- <property>
+- <name>sizeHint</name>
+- <size>
+- <width>20</width>
+- <height>20</height>
+- </size>
+- </property>
+- </spacer>
+- </vbox>
+- </widget>
+- </widget>
+- <widget>
+- <class>QLabel</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>daemon_label</cstring>
++ </widget>
++ </item>
++ <item>
++ <widget class="QCheckBox" name="user_ring_count_cb">
++ <property name="toolTip">
++ <string>Profile user libraries and applications</string>
++ </property>
++ <property name="text">
++ <string>Profile &amp;user binaries</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <layout class="QHBoxLayout">
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <property name="margin">
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="QLabel" name="TextLabel1_2">
++ <property name="text">
++ <string>C&amp;ount</string>
++ </property>
++ <property name="wordWrap">
++ <bool>false</bool>
++ </property>
++ <property name="buddy">
++ <cstring>event_count_edit</cstring>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLineEdit" name="event_count_edit">
++ <property name="sizePolicy">
++ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="toolTip">
++ <string>Set the count value</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <spacer name="Spacer13_2">
++ <property name="orientation">
++ <enum>Qt::Horizontal</enum>
++ </property>
++ <property name="sizeType">
++ <enum>QSizePolicy::Expanding</enum>
++ </property>
++ <property name="sizeHint" stdset="0">
++ <size>
++ <width>20</width>
++ <height>20</height>
++ </size>
++ </property>
++ </spacer>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <widget class="Q3ButtonGroup" name="unit_mask_group">
++ <property name="sizePolicy">
++ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="toolTip">
++ <string>Unit mask settings for this event</string>
++ </property>
++ <property name="title">
++ <string>Unit mask</string>
++ </property>
++ <layout class="QGridLayout">
++ <property name="margin">
++ <number>11</number>
++ </property>
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <item row="0" column="0">
++ <widget class="QCheckBox" name="check0">
++ <property name="text">
++ <string>check0</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="1" column="0" rowspan="2" colspan="2">
++ <widget class="QCheckBox" name="check1">
++ <property name="text">
++ <string>check1</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="3" column="0" rowspan="2" colspan="2">
++ <widget class="QCheckBox" name="check2">
++ <property name="text">
++ <string>check2</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="5" column="0">
++ <widget class="QCheckBox" name="check3">
++ <property name="text">
++ <string>check3</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="6" column="0">
++ <widget class="QCheckBox" name="check4">
++ <property name="text">
++ <string>check4</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="7" column="0">
++ <widget class="QCheckBox" name="check5">
++ <property name="text">
++ <string>check5</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="8" column="0" rowspan="2" colspan="2">
++ <widget class="QCheckBox" name="check6">
++ <property name="text">
++ <string>check6</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="10" column="0">
++ <widget class="QCheckBox" name="check7">
++ <property name="text">
++ <string>check7</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="11" column="1">
++ <spacer name="Spacer14">
++ <property name="orientation">
++ <enum>Qt::Vertical</enum>
++ </property>
++ <property name="sizeType">
++ <enum>QSizePolicy::Expanding</enum>
++ </property>
++ <property name="sizeHint" stdset="0">
++ <size>
++ <width>20</width>
++ <height>20</height>
++ </size>
++ </property>
++ </spacer>
++ </item>
++ <item row="5" column="1">
++ <widget class="QCheckBox" name="check11">
++ <property name="text">
++ <string>check11</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="7" column="1">
++ <widget class="QCheckBox" name="check13">
++ <property name="text">
++ <string>check13</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="10" column="1">
++ <widget class="QCheckBox" name="check15">
++ <property name="text">
++ <string>check15</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="4" column="1">
++ <widget class="QCheckBox" name="check10">
++ <property name="text">
++ <string>check10</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="9" column="1">
++ <widget class="QCheckBox" name="check14">
++ <property name="text">
++ <string>check14</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="2" column="1">
++ <widget class="QCheckBox" name="check9">
++ <property name="text">
++ <string>check9</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="0" column="1">
++ <widget class="QCheckBox" name="check8">
++ <property name="text">
++ <string>check8</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ <item row="6" column="1">
++ <widget class="QCheckBox" name="check12">
++ <property name="text">
++ <string>check12</string>
++ </property>
++ <attribute name="buttonGroup">
++ <string/>
++ </attribute>
++ </widget>
++ </item>
++ </layout>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <widget class="QLabel" name="event_help_label">
++ <property name="enabled">
++ <bool>true</bool>
+ </property>
+- <property stdset="1">
+- <name>frameShape</name>
+- <enum>Panel</enum>
++ <property name="sizePolicy">
++ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
+ </property>
+- <property stdset="1">
+- <name>frameShadow</name>
+- <enum>Sunken</enum>
++ <property name="frameShape">
++ <enum>QFrame::Panel</enum>
+ </property>
+- <property stdset="1">
+- <name>text</name>
+- <string></string>
++ <property name="frameShadow">
++ <enum>QFrame::Sunken</enum>
+ </property>
+- <property>
+- <name>toolTip</name>
+- <string>Current daemon status</string>
++ <property name="text">
++ <string/>
+ </property>
+- </widget>
+- <widget>
+- <class>QLayoutWidget</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>Layout37</cstring>
++ <property name="wordWrap">
++ <bool>false</bool>
+ </property>
+- <hbox>
+- <property stdset="1">
+- <name>margin</name>
+- <number>0</number>
+- </property>
+- <property stdset="1">
+- <name>spacing</name>
+- <number>6</number>
+- </property>
+- <widget>
+- <class>QPushButton</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>start_profiler_btn</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>St&amp;art</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QPushButton</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>flush_profiler_data_btn</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>&amp;Flush</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QPushButton</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>stop_profiler_btn</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Stop</string>
+- </property>
+- </widget>
+- <spacer>
+- <property>
+- <name>name</name>
+- <cstring>Spacer5</cstring>
+- </property>
+- <property stdset="1">
+- <name>orientation</name>
+- <enum>Horizontal</enum>
+- </property>
+- <property stdset="1">
+- <name>sizeType</name>
+- <enum>Expanding</enum>
+- </property>
+- <property>
+- <name>sizeHint</name>
+- <size>
+- <width>20</width>
+- <height>20</height>
+- </size>
+- </property>
+- </spacer>
+- <widget>
+- <class>QPushButton</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>reset_sample_files_btn</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Reset sample files</string>
+- </property>
+- </widget>
+- <widget>
+- <class>QPushButton</class>
+- <property stdset="1">
+- <name>name</name>
+- <cstring>quit_and_save_btn</cstring>
+- </property>
+- <property stdset="1">
+- <name>text</name>
+- <string>Save and &amp;quit</string>
+- </property>
+- <property stdset="1">
+- <name>autoDefault</name>
+- <bool>true</bool>
+- </property>
+- </widget>
+- </hbox>
++ </widget>
++ </item>
++ </layout>
+ </widget>
+- </vbox>
+-</widget>
+-<connections>
+- <connection>
+- <sender>start_profiler_btn</sender>
+- <signal>clicked()</signal>
+- <receiver>oprof_start_base</receiver>
+- <slot>on_start_profiler()</slot>
+- </connection>
+- <connection>
+- <sender>stop_profiler_btn</sender>
+- <signal>clicked()</signal>
+- <receiver>oprof_start_base</receiver>
+- <slot>on_stop_profiler()</slot>
+- </connection>
+- <connection>
+- <sender>flush_profiler_data_btn</sender>
+- <signal>clicked()</signal>
+- <receiver>oprof_start_base</receiver>
+- <slot>on_flush_profiler_data()</slot>
+- </connection>
+- <connection>
+- <sender>quit_and_save_btn</sender>
+- <signal>clicked()</signal>
+- <receiver>oprof_start_base</receiver>
+- <slot>accept()</slot>
+- </connection>
+- <connection>
+- <sender>kernel_filename_tb</sender>
+- <signal>clicked()</signal>
+- <receiver>oprof_start_base</receiver>
+- <slot>choose_kernel_filename()</slot>
+- </connection>
+- <connection>
+- <sender>no_vmlinux</sender>
+- <signal>toggled(bool)</signal>
+- <receiver>kernel_filename_tb</receiver>
+- <slot>setDisabled(bool)</slot>
+- </connection>
+- <connection>
+- <sender>no_vmlinux</sender>
+- <signal>toggled(bool)</signal>
+- <receiver>kernel_filename_edit</receiver>
+- <slot>setDisabled(bool)</slot>
+- </connection>
+- <connection>
+- <sender>no_vmlinux</sender>
+- <signal>toggled(bool)</signal>
+- <receiver>TextLabel1</receiver>
+- <slot>setDisabled(bool)</slot>
+- </connection>
+- <connection>
+- <sender>separate_kernel_cb</sender>
+- <signal>stateChanged(int)</signal>
+- <receiver>oprof_start_base</receiver>
+- <slot>on_separate_kernel_cb_changed(int)</slot>
+- </connection>
+- <connection>
+- <sender>reset_sample_files_btn</sender>
+- <signal>clicked()</signal>
+- <receiver>oprof_start_base</receiver>
+- <slot>on_reset_sample_files()</slot>
+- </connection>
+- <connection>
+- <sender>events_list</sender>
+- <signal>selectionChanged()</signal>
+- <receiver>oprof_start_base</receiver>
+- <slot>event_selected()</slot>
+- </connection>
+- <connection>
+- <sender>events_list</sender>
+- <signal>currentChanged(QListViewItem*)</signal>
+- <receiver>oprof_start_base</receiver>
+- <slot>event_over(QListViewItem *)</slot>
+- </connection>
+- <connection>
+- <sender>events_list</sender>
+- <signal>onItem(QListViewItem*)</signal>
+- <receiver>oprof_start_base</receiver>
+- <slot>event_over(QListViewItem *)</slot>
+- </connection>
+- <slot access="protected">choose_kernel_filename()</slot>
+- <slot access="protected">event_over(QListViewItem *)</slot>
+- <slot access="protected">event_selected()</slot>
+- <slot access="protected">on_reset_sample_files()</slot>
+- <slot access="protected">on_flush_profiler_data()</slot>
+- <slot access="protected">on_separate_kernel_cb_changed(int)</slot>
+- <slot access="protected">on_start_profiler()</slot>
+- <slot access="protected">on_stop_profiler()</slot>
+-</connections>
+-<tabstops>
+- <tabstop>setup_config_tab</tabstop>
+- <tabstop>events_list</tabstop>
+- <tabstop>os_ring_count_cb</tabstop>
+- <tabstop>user_ring_count_cb</tabstop>
+- <tabstop>event_count_edit</tabstop>
+- <tabstop>check0</tabstop>
+- <tabstop>check1</tabstop>
+- <tabstop>check2</tabstop>
+- <tabstop>check3</tabstop>
+- <tabstop>check4</tabstop>
+- <tabstop>check5</tabstop>
+- <tabstop>check6</tabstop>
+- <tabstop>check7</tabstop>
+- <tabstop>check8</tabstop>
+- <tabstop>check9</tabstop>
+- <tabstop>check10</tabstop>
+- <tabstop>check11</tabstop>
+- <tabstop>check12</tabstop>
+- <tabstop>check13</tabstop>
+- <tabstop>check14</tabstop>
+- <tabstop>check15</tabstop>
+- <tabstop>start_profiler_btn</tabstop>
+- <tabstop>flush_profiler_data_btn</tabstop>
+- <tabstop>stop_profiler_btn</tabstop>
+- <tabstop>reset_sample_files_btn</tabstop>
+- <tabstop>quit_and_save_btn</tabstop>
+- <tabstop>kernel_filename_edit</tabstop>
+- <tabstop>no_vmlinux</tabstop>
+- <tabstop>buffer_size_edit</tabstop>
+- <tabstop>note_table_size_edit</tabstop>
+- <tabstop>buffer_watershed_edit</tabstop>
+- <tabstop>verbose</tabstop>
+- <tabstop>separate_lib_cb</tabstop>
+- <tabstop>separate_kernel_cb</tabstop>
+- <tabstop>separate_cpu_cb</tabstop>
+- <tabstop>separate_thread_cb</tabstop>
+- <tabstop>callgraph_depth_edit</tabstop>
+-</tabstops>
+-</UI>
++ </item>
++ </layout>
++ </widget>
++ <widget class="QWidget" name="configuration_page">
++ <attribute name="title">
++ <string>&amp;Configuration</string>
++ </attribute>
++ <layout class="QVBoxLayout">
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <property name="margin">
++ <number>11</number>
++ </property>
++ <item>
++ <layout class="QHBoxLayout">
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <property name="margin">
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="QLabel" name="TextLabel1">
++ <property name="text">
++ <string>&amp;Kernel image file</string>
++ </property>
++ <property name="wordWrap">
++ <bool>false</bool>
++ </property>
++ <property name="buddy">
++ <cstring>kernel_filename_edit</cstring>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLineEdit" name="kernel_filename_edit">
++ <property name="toolTip">
++ <string>The vmlinux file of the running kernel</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QToolButton" name="kernel_filename_tb">
++ <property name="text">
++ <string>...</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QCheckBox" name="no_vmlinux">
++ <property name="toolTip">
++ <string>No kernel image available. Disables kernel profiling.</string>
++ </property>
++ <property name="text">
++ <string>No kernel image</string>
++ </property>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <layout class="QHBoxLayout">
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <property name="margin">
++ <number>0</number>
++ </property>
++ <item>
++ <layout class="QGridLayout">
++ <property name="margin">
++ <number>0</number>
++ </property>
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <item row="0" column="1">
++ <widget class="QLineEdit" name="buffer_size_edit">
++ <property name="toolTip">
++ <string>The size of the profiler's buffers</string>
++ </property>
++ </widget>
++ </item>
++ <item row="1" column="1">
++ <widget class="QLineEdit" name="note_table_size_edit"/>
++ </item>
++ <item row="3" column="0">
++ <widget class="QLabel" name="cpu_buffer_size_label">
++ <property name="text">
++ <string>Cpu buffer size</string>
++ </property>
++ <property name="wordWrap">
++ <bool>false</bool>
++ </property>
++ <property name="buddy">
++ <cstring>cpu_buffer_size_edit</cstring>
++ </property>
++ </widget>
++ </item>
++ <item row="3" column="1">
++ <widget class="QLineEdit" name="cpu_buffer_size_edit"/>
++ </item>
++ <item row="0" column="0">
++ <widget class="QLabel" name="buffer_size_label">
++ <property name="text">
++ <string>&amp;Buffer size</string>
++ </property>
++ <property name="wordWrap">
++ <bool>false</bool>
++ </property>
++ <property name="buddy">
++ <cstring>buffer_size_edit</cstring>
++ </property>
++ </widget>
++ </item>
++ <item row="1" column="0">
++ <widget class="QLabel" name="note_table_size_label">
++ <property name="text">
++ <string>Note Size</string>
++ </property>
++ <property name="wordWrap">
++ <bool>false</bool>
++ </property>
++ <property name="buddy">
++ <cstring>note_table_size_edit</cstring>
++ </property>
++ </widget>
++ </item>
++ <item row="2" column="1">
++ <widget class="QLineEdit" name="buffer_watershed_edit"/>
++ </item>
++ <item row="2" column="0">
++ <widget class="QLabel" name="buffer_watershed_label">
++ <property name="text">
++ <string>Buffer watershed</string>
++ </property>
++ <property name="wordWrap">
++ <bool>false</bool>
++ </property>
++ <property name="buddy">
++ <cstring>buffer_watershed_edit</cstring>
++ </property>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <spacer name="Spacer11">
++ <property name="orientation">
++ <enum>Qt::Horizontal</enum>
++ </property>
++ <property name="sizeType">
++ <enum>QSizePolicy::Expanding</enum>
++ </property>
++ <property name="sizeHint" stdset="0">
++ <size>
++ <width>20</width>
++ <height>20</height>
++ </size>
++ </property>
++ </spacer>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <layout class="QGridLayout">
++ <property name="margin">
++ <number>0</number>
++ </property>
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <item row="0" column="0">
++ <layout class="QVBoxLayout">
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <property name="margin">
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="QCheckBox" name="verbose">
++ <property name="toolTip">
++ <string>Very verbose output in log file</string>
++ </property>
++ <property name="text">
++ <string>&amp;Verbose</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QCheckBox" name="separate_lib_cb">
++ <property name="toolTip">
++ <string>Separate samples for each shared library. This increases the time and space overhead of OProfile.</string>
++ </property>
++ <property name="text">
++ <string>Per-application profiles</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QCheckBox" name="separate_kernel_cb">
++ <property name="toolTip">
++ <string>Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile.</string>
++ </property>
++ <property name="text">
++ <string>Per-application profiles, including kernel</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QCheckBox" name="separate_cpu_cb">
++ <property name="toolTip">
++ <string>Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile.</string>
++ </property>
++ <property name="text">
++ <string>Per-CPU profiles</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QCheckBox" name="separate_thread_cb">
++ <property name="toolTip">
++ <string>Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile.</string>
++ </property>
++ <property name="text">
++ <string>Per-thread/task profiles</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <layout class="QHBoxLayout">
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <property name="margin">
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="QLabel" name="callgraph_depth_label">
++ <property name="text">
++ <string>callgraph depth, zero to disable</string>
++ </property>
++ <property name="wordWrap">
++ <bool>false</bool>
++ </property>
++ <property name="buddy">
++ <cstring>callgraph_depth_edit</cstring>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLineEdit" name="callgraph_depth_edit"/>
++ </item>
++ </layout>
++ </item>
++ </layout>
++ </item>
++ <item row="0" column="1">
++ <spacer name="Spacer12">
++ <property name="orientation">
++ <enum>Qt::Horizontal</enum>
++ </property>
++ <property name="sizeType">
++ <enum>QSizePolicy::Expanding</enum>
++ </property>
++ <property name="sizeHint" stdset="0">
++ <size>
++ <width>20</width>
++ <height>20</height>
++ </size>
++ </property>
++ </spacer>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <spacer name="Spacer9">
++ <property name="orientation">
++ <enum>Qt::Vertical</enum>
++ </property>
++ <property name="sizeType">
++ <enum>QSizePolicy::Expanding</enum>
++ </property>
++ <property name="sizeHint" stdset="0">
++ <size>
++ <width>20</width>
++ <height>20</height>
++ </size>
++ </property>
++ </spacer>
++ </item>
++ </layout>
++ </widget>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLabel" name="daemon_label">
++ <property name="toolTip">
++ <string>Current daemon status</string>
++ </property>
++ <property name="frameShape">
++ <enum>QFrame::Panel</enum>
++ </property>
++ <property name="frameShadow">
++ <enum>QFrame::Sunken</enum>
++ </property>
++ <property name="text">
++ <string/>
++ </property>
++ <property name="wordWrap">
++ <bool>false</bool>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <layout class="QHBoxLayout">
++ <property name="spacing">
++ <number>6</number>
++ </property>
++ <property name="margin">
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="QPushButton" name="start_profiler_btn">
++ <property name="text">
++ <string>St&amp;art</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QPushButton" name="flush_profiler_data_btn">
++ <property name="text">
++ <string>&amp;Flush</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QPushButton" name="stop_profiler_btn">
++ <property name="text">
++ <string>Stop</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <spacer name="Spacer5">
++ <property name="orientation">
++ <enum>Qt::Horizontal</enum>
++ </property>
++ <property name="sizeType">
++ <enum>QSizePolicy::Expanding</enum>
++ </property>
++ <property name="sizeHint" stdset="0">
++ <size>
++ <width>20</width>
++ <height>20</height>
++ </size>
++ </property>
++ </spacer>
++ </item>
++ <item>
++ <widget class="QPushButton" name="reset_sample_files_btn">
++ <property name="text">
++ <string>Reset sample files</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QPushButton" name="quit_and_save_btn">
++ <property name="text">
++ <string>Save and &amp;quit</string>
++ </property>
++ <property name="autoDefault">
++ <bool>true</bool>
++ </property>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ </layout>
++ </widget>
++ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
++ <customwidgets>
++ <customwidget>
++ <class>Q3GroupBox</class>
++ <extends>QGroupBox</extends>
++ <header>Qt3Support/Q3GroupBox</header>
++ <container>1</container>
++ </customwidget>
++ <customwidget>
++ <class>Q3Frame</class>
++ <extends>QFrame</extends>
++ <header>Qt3Support/Q3Frame</header>
++ <container>1</container>
++ </customwidget>
++ <customwidget>
++ <class>Q3ButtonGroup</class>
++ <extends>Q3GroupBox</extends>
++ <header>Qt3Support/Q3ButtonGroup</header>
++ <container>1</container>
++ </customwidget>
++ <customwidget>
++ <class>Q3ListView</class>
++ <extends>Q3Frame</extends>
++ <header>q3listview.h</header>
++ </customwidget>
++ </customwidgets>
++ <tabstops>
++ <tabstop>setup_config_tab</tabstop>
++ <tabstop>events_list</tabstop>
++ <tabstop>os_ring_count_cb</tabstop>
++ <tabstop>user_ring_count_cb</tabstop>
++ <tabstop>event_count_edit</tabstop>
++ <tabstop>check0</tabstop>
++ <tabstop>check1</tabstop>
++ <tabstop>check2</tabstop>
++ <tabstop>check3</tabstop>
++ <tabstop>check4</tabstop>
++ <tabstop>check5</tabstop>
++ <tabstop>check6</tabstop>
++ <tabstop>check7</tabstop>
++ <tabstop>check8</tabstop>
++ <tabstop>check9</tabstop>
++ <tabstop>check10</tabstop>
++ <tabstop>check11</tabstop>
++ <tabstop>check12</tabstop>
++ <tabstop>check13</tabstop>
++ <tabstop>check14</tabstop>
++ <tabstop>check15</tabstop>
++ <tabstop>start_profiler_btn</tabstop>
++ <tabstop>flush_profiler_data_btn</tabstop>
++ <tabstop>stop_profiler_btn</tabstop>
++ <tabstop>reset_sample_files_btn</tabstop>
++ <tabstop>quit_and_save_btn</tabstop>
++ <tabstop>kernel_filename_edit</tabstop>
++ <tabstop>no_vmlinux</tabstop>
++ <tabstop>buffer_size_edit</tabstop>
++ <tabstop>note_table_size_edit</tabstop>
++ <tabstop>buffer_watershed_edit</tabstop>
++ <tabstop>verbose</tabstop>
++ <tabstop>separate_lib_cb</tabstop>
++ <tabstop>separate_kernel_cb</tabstop>
++ <tabstop>separate_cpu_cb</tabstop>
++ <tabstop>separate_thread_cb</tabstop>
++ <tabstop>callgraph_depth_edit</tabstop>
++ </tabstops>
++ <resources/>
++ <connections>
++ <connection>
++ <sender>start_profiler_btn</sender>
++ <signal>clicked(bool)</signal>
++ <receiver>oprof_start_base</receiver>
++ <slot>start_profiler()</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>stop_profiler_btn</sender>
++ <signal>clicked(bool)</signal>
++ <receiver>oprof_start_base</receiver>
++ <slot>stop_profiler()</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>flush_profiler_data_btn</sender>
++ <signal>clicked(bool)</signal>
++ <receiver>oprof_start_base</receiver>
++ <slot>flush_profiler_data()</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>quit_and_save_btn</sender>
++ <signal>clicked(bool)</signal>
++ <receiver>oprof_start_base</receiver>
++ <slot>accept()</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>kernel_filename_tb</sender>
++ <signal>clicked(bool)</signal>
++ <receiver>oprof_start_base</receiver>
++ <slot>choose_kernel_filename()</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>no_vmlinux</sender>
++ <signal>toggled(bool)</signal>
++ <receiver>kernel_filename_tb</receiver>
++ <slot>setDisabled(bool)</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>no_vmlinux</sender>
++ <signal>toggled(bool)</signal>
++ <receiver>kernel_filename_edit</receiver>
++ <slot>setDisabled(bool)</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>no_vmlinux</sender>
++ <signal>toggled(bool)</signal>
++ <receiver>TextLabel1</receiver>
++ <slot>setDisabled(bool)</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>separate_kernel_cb</sender>
++ <signal>stateChanged(int)</signal>
++ <receiver>oprof_start_base</receiver>
++ <slot>separate_kernel_cb_changed(int)</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>reset_sample_files_btn</sender>
++ <signal>clicked(bool)</signal>
++ <receiver>oprof_start_base</receiver>
++ <slot>reset_sample_files()</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>events_list</sender>
++ <signal>selectionChanged()</signal>
++ <receiver>oprof_start_base</receiver>
++ <slot>event_selected()</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>events_list</sender>
++ <signal>currentChanged(Q3ListViewItem*)</signal>
++ <receiver>oprof_start_base</receiver>
++ <slot>event_over(Q3ListViewItem*)</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ <connection>
++ <sender>events_list</sender>
++ <signal>onItem(Q3ListViewItem*)</signal>
++ <receiver>oprof_start_base</receiver>
++ <slot>event_over(Q3ListViewItem*)</slot>
++ <hints>
++ <hint type="sourcelabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ <hint type="destinationlabel">
++ <x>20</x>
++ <y>20</y>
++ </hint>
++ </hints>
++ </connection>
++ </connections>
++</ui>
+diff --git a/m4/qt.m4 b/m4/qt.m4
+deleted file mode 100644
+index b0e30ef..0000000
+--- a/m4/qt.m4
++++ /dev/null
+@@ -1,217 +0,0 @@
+-dnl find a binary in the path
+-AC_DEFUN([QT_FIND_PATH],
+-[
+- AC_MSG_CHECKING([for $1])
+- AC_CACHE_VAL(qt_cv_path_$1,
+- [
+- qt_cv_path_$1="NONE"
+- if test -n "$$2"; then
+- qt_cv_path_$1="$$2";
+- else
+- dirs="$3"
+- qt_save_IFS=$IFS
+- IFS=':'
+- for dir in $PATH; do
+- dirs="$dirs $dir"
+- done
+- IFS=$qt_save_IFS
+-
+- for dir in $dirs; do
+- if test -x "$dir/$1"; then
+- if test -n "$5"; then
+- evalstr="$dir/$1 $5 2>&1 "
+- if eval $evalstr; then
+- qt_cv_path_$1="$dir/$1"
+- break
+- fi
+- else
+- qt_cv_path_$1="$dir/$1"
+- break
+- fi
+- fi
+- done
+- fi
+- ])
+-
+- if test -z "$qt_cv_path_$1" || test "$qt_cv_path_$1" = "NONE"; then
+- AC_MSG_RESULT(not found)
+- $4
+- else
+- AC_MSG_RESULT($qt_cv_path_$1)
+- $2=$qt_cv_path_$1
+- fi
+-])
+-
+-dnl Find the uic compiler on the path or in qt_cv_dir
+-AC_DEFUN([QT_FIND_UIC],
+-[
+- QT_FIND_PATH(uic, ac_uic, $qt_cv_dir/bin)
+- if test -z "$ac_uic" -a "$FATAL" = 1; then
+- AC_MSG_ERROR([uic binary not found in \$PATH or $qt_cv_dir/bin !])
+- fi
+-])
+-
+-dnl Find the right moc in path/qt_cv_dir
+-AC_DEFUN([QT_FIND_MOC],
+-[
+- QT_FIND_PATH(moc2, ac_moc2, $qt_cv_dir/bin)
+- QT_FIND_PATH(moc, ac_moc1, $qt_cv_dir/bin)
+-
+- if test -n "$ac_moc1" -a -n "$ac_moc2"; then
+- dnl found both. Prefer Qt3's if it exists else moc2
+- $ac_moc1 -v 2>&1 | grep "Qt 3" >/dev/null
+- if test "$?" = 0; then
+- ac_moc=$ac_moc1;
+- else
+- ac_moc=$ac_moc2;
+- fi
+- else
+- if test -n "$ac_moc1"; then
+- ac_moc=$ac_moc1;
+- else
+- ac_moc=$ac_moc2;
+- fi
+- fi
+-
+- if test -z "$ac_moc" -a "$FATAL" = 1; then
+- AC_MSG_ERROR([moc binary not found in \$PATH or $qt_cv_dir/bin !])
+- fi
+-])
+-
+-dnl check a particular libname
+-AC_DEFUN([QT_TRY_LINK],
+-[
+- SAVE_LIBS="$LIBS"
+- LIBS="$LIBS $1"
+- AC_TRY_LINK([
+- #include <qglobal.h>
+- #include <qstring.h>
+- ],
+- [
+- QString s("mangle_failure");
+- #if (QT_VERSION < 221)
+- break_me_(\\\);
+- #endif
+- ],
+- qt_cv_libname=$1,
+- )
+- LIBS="$SAVE_LIBS"
+-])
+-
+-dnl check we can do a compile
+-AC_DEFUN([QT_CHECK_COMPILE],
+-[
+- AC_MSG_CHECKING([for Qt library name])
+-
+- AC_CACHE_VAL(qt_cv_libname,
+- [
+- AC_LANG_CPLUSPLUS
+- SAVE_CXXFLAGS=$CXXFLAGS
+- CXXFLAGS="$CXXFLAGS $QT_INCLUDES $QT_LDFLAGS"
+-
+- for libname in -lqt-mt -lqt3 -lqt2 -lqt;
+- do
+- QT_TRY_LINK($libname)
+- if test -n "$qt_cv_libname"; then
+- break;
+- fi
+- done
+-
+- CXXFLAGS=$SAVE_CXXFLAGS
+- ])
+-
+- if test -z "$qt_cv_libname"; then
+- AC_MSG_RESULT([failed])
+- if test "$FATAL" = 1 ; then
+- AC_MSG_ERROR([Cannot compile a simple Qt executable. Check you have the right \$QTDIR !])
+- fi
+- else
+- AC_MSG_RESULT([$qt_cv_libname])
+- fi
+-])
+-
+-dnl get Qt version we're using
+-AC_DEFUN([QT_GET_VERSION],
+-[
+- AC_CACHE_CHECK([Qt version],lyx_cv_qtversion,
+- [
+- AC_LANG_CPLUSPLUS
+- SAVE_CPPFLAGS=$CPPFLAGS
+- CPPFLAGS="$CPPFLAGS $QT_INCLUDES"
+-
+- cat > conftest.$ac_ext <<EOF
+-#line __oline__ "configure"
+-#include "confdefs.h"
+-#include <qglobal.h>
+-"%%%"QT_VERSION_STR"%%%"
+-EOF
+- lyx_cv_qtversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
+- grep '^"%%%"' 2>/dev/null | \
+- sed -e 's/"%%%"//g' -e 's/"//g'`
+- rm -f conftest.$ac_ext
+- CPPFLAGS=$SAVE_CPPFLAGS
+- ])
+-
+- QT_VERSION=$lyx_cv_qtversion
+- AC_SUBST(QT_VERSION)
+-])
+-
+-dnl start here
+-AC_DEFUN([QT_DO_IT_ALL],
+-[
+- dnl Please leave this alone. I use this file in
+- dnl oprofile.
+- FATAL=0
+-
+- AC_ARG_WITH(qt-dir, [ --with-qt-dir where the root of Qt is installed ],
+- [ qt_cv_dir=`eval echo "$withval"/` ])
+-
+- AC_ARG_WITH(qt-includes, [ --with-qt-includes where the Qt includes are. ],
+- [ qt_cv_includes=`eval echo "$withval"` ])
+-
+- AC_ARG_WITH(qt-libraries, [ --with-qt-libraries where the Qt library is installed.],
+- [ qt_cv_libraries=`eval echo "$withval"` ])
+-
+- dnl pay attention to $QTDIR unless overridden
+- if test -z "$qt_cv_dir"; then
+- qt_cv_dir=$QTDIR
+- fi
+-
+- dnl derive inc/lib if needed
+- if test -n "$qt_cv_dir"; then
+- if test -z "$qt_cv_includes"; then
+- qt_cv_includes=$qt_cv_dir/include
+- fi
+- if test -z "$qt_cv_libraries"; then
+- qt_cv_libraries=$qt_cv_dir/lib
+- fi
+- fi
+-
+- dnl flags for compilation
+- QT_INCLUDES=
+- QT_LDFLAGS=
+- if test -n "$qt_cv_includes"; then
+- QT_INCLUDES="-isystem $qt_cv_includes"
+- fi
+- if test -n "$qt_cv_libraries"; then
+- QT_LDFLAGS="-L$qt_cv_libraries"
+- fi
+- AC_SUBST(QT_INCLUDES)
+- AC_SUBST(QT_LDFLAGS)
+-
+- QT_FIND_MOC
+- MOC=$ac_moc
+- AC_SUBST(MOC)
+- QT_FIND_UIC
+- UIC=$ac_uic
+- AC_SUBST(UIC)
+-
+- QT_CHECK_COMPILE
+-
+- QT_LIB=$qt_cv_libname;
+- AC_SUBST(QT_LIB)
+-
+- if test -n "$qt_cv_libname"; then
+- QT_GET_VERSION
+- fi
+-])
+diff --git a/m4/qt4.m4 b/m4/qt4.m4
+new file mode 100644
+index 0000000..0df96f7
+--- /dev/null
++++ b/m4/qt4.m4
+@@ -0,0 +1,211 @@
++dnl check a particular libname
++AC_DEFUN([QT4_TRY_LINK],
++[
++ SAVE_LIBS="$LIBS"
++ LIBS="$LIBS $1"
++ AC_TRY_LINK([
++ #include <qglobal.h>
++ #include <qstring.h>
++ ],
++ [
++ QString s("mangle_failure");
++ #if (QT_VERSION < 400)
++ break_me_(\\\);
++ #endif
++ ],
++ qt4_cv_libname=$1,
++ )
++ LIBS="$SAVE_LIBS"
++])
++
++dnl check we can do a compile
++AC_DEFUN([QT4_CHECK_COMPILE],
++[
++ AC_MSG_CHECKING([for Qt 4 library name])
++
++ AC_CACHE_VAL(qt4_cv_libname,
++ [
++ AC_LANG_CPLUSPLUS
++ SAVE_CXXFLAGS=$CXXFLAGS
++ CXXFLAGS="$CXXFLAGS $QT4_INCLUDES $QT4_LDFLAGS"
++ for libname in -lQtCore -lQtCore4
++ do
++ QT4_TRY_LINK($libname)
++ if test -n "$qt4_cv_libname"; then
++ QT4_CORE_LIB="$qt4_cv_libname"
++ break;
++ fi
++ done
++ qt4_cv_libname=
++ for libname in '-lQtCore -lQtGui' \
++ '-lQtCore4 -lQtGui4'
++ do
++ QT4_TRY_LINK($libname)
++ if test -n "$qt4_cv_libname"; then
++ break;
++ fi
++ done
++ CXXFLAGS=$SAVE_CXXFLAGS
++ ])
++
++ if test -z "$qt4_cv_libname"; then
++ AC_MSG_RESULT([failed])
++ if test "$FATAL" = 1 ; then
++ AC_MSG_ERROR([Cannot compile a simple Qt 4 executable. Check you have the right \$QT4DIR !])
++ fi
++ else
++ AC_MSG_RESULT([$qt4_cv_libname])
++ fi
++])
++
++dnl get Qt version we're using
++AC_DEFUN([QT4_GET_VERSION],
++[
++ AC_CACHE_CHECK([Qt 4 version],lyx_cv_qt4version,
++ [
++ AC_LANG_CPLUSPLUS
++ SAVE_CPPFLAGS=$CPPFLAGS
++ CPPFLAGS="$CPPFLAGS $QT4_INCLUDES"
++
++ cat > conftest.$ac_ext <<EOF
++#line __oline__ "configure"
++#include "confdefs.h"
++#include <qglobal.h>
++"%%%"QT_VERSION_STR"%%%"
++EOF
++ lyx_cv_qt4version=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
++ grep '^"%%%"' 2>/dev/null | \
++ sed -e 's/"%%%"//g' -e 's/"//g'`
++ rm -f conftest.$ac_ext
++ CPPFLAGS=$SAVE_CPPFLAGS
++ ])
++
++ QT4_VERSION=$lyx_cv_qt4version
++ AC_SUBST(QT4_VERSION)
++])
++
++dnl start here
++AC_DEFUN([QT4_DO_IT_ALL],
++[
++ dnl this variable is precious
++ AC_ARG_VAR(QT4DIR, [the place where the Qt 4 files are, e.g. /usr/lib/qt4])
++
++ dnl Please leave this alone. I use this file in
++ dnl oprofile.
++ FATAL=0
++
++ AC_ARG_WITH(qt4-dir, [ --with-qt4-dir where the root of Qt 4 is installed ],
++ [ qt4_cv_dir=`eval echo "$withval"/` ])
++
++ AC_ARG_WITH(qt4-includes, [ --with-qt4-includes where the Qt 4 includes are. ],
++ [ qt4_cv_includes=`eval echo "$withval"` ])
++
++ AC_ARG_WITH(qt4-libraries, [ --with-qt4-libraries where the Qt 4 library is installed.],
++ [ qt4_cv_libraries=`eval echo "$withval"` ])
++
++ dnl pay attention to $QT4DIR unless overridden
++ if test -z "$qt4_cv_dir"; then
++ qt4_cv_dir=$QT4DIR
++ fi
++
++ dnl derive inc/lib if needed
++ if test -n "$qt4_cv_dir"; then
++ if test -z "$qt4_cv_includes"; then
++ qt4_cv_includes=$qt4_cv_dir/include
++ fi
++ if test -z "$qt4_cv_libraries"; then
++ qt4_cv_libraries=$qt4_cv_dir/lib
++ fi
++ fi
++
++ dnl compute the binary dir too
++ if test -n "$qt4_cv_dir"; then
++ qt4_cv_bin=$qt4_cv_dir/bin
++ fi
++
++ dnl Preprocessor flags
++ QT4_CPPFLAGS="-DQT_NO_STL -DQT_NO_KEYWORDS"
++ case ${host} in
++ *mingw*) QT4_CPPFLAGS="-DQT_DLL $QT4_CPPFLAGS";;
++ esac
++ AC_SUBST(QT4_CPPFLAGS)
++
++ dnl Check if it possible to do a pkg-config
++ PKG_PROG_PKG_CONFIG
++ if test -n "$PKG_CONFIG" ; then
++ QT4_DO_PKG_CONFIG
++ fi
++ if test "$pkg_failed" != "no" ; then
++ QT4_DO_MANUAL_CONFIG
++ fi
++ AC_PATH_PROGS(MOC4, [moc-qt4 moc],[],$qt4_cv_bin:$PATH)
++ AC_PATH_PROGS(UIC4, [uic-qt4 uic],[],$qt4_cv_bin:$PATH)
++ AC_PATH_PROGS(RCC4, [rcc-qt4 rcc],[],$qt4_cv_bin:$PATH)
++])
++
++AC_DEFUN([QT4_DO_PKG_CONFIG],
++[
++ dnl tell pkg-config to look also in $qt4_cv_dir/lib.
++ save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
++ if test -n "$qt4_cv_dir" ; then
++ PKG_CONFIG_PATH=$qt4_cv_dir/lib:$qt4_cv_dir/lib/pkgconfig:$PKG_CONFIG_PATH
++ export PKG_CONFIG_PATH
++ fi
++ PKG_CHECK_MODULES(QT4_CORE, QtCore,,[:])
++ if test "$pkg_failed" = "no" ; then
++ QT4_CORE_INCLUDES=$QT4_CORE_CFLAGS
++ AC_SUBST(QT4_CORE_INCLUDES)
++ QT4_CORE_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore`
++ AC_SUBST(QT4_CORE_LDFLAGS)
++ QT4_CORE_LIB=`$PKG_CONFIG --libs-only-l QtCore`
++ AC_SUBST(QT4_CORE_LIB)
++ fi
++ PKG_CHECK_MODULES(QT4_FRONTEND, QtCore QtGui,,[:])
++ if test "$pkg_failed" = "no" ; then
++ QT4_INCLUDES=$QT4_FRONTEND_CFLAGS
++ dnl QT4_LDFLAGS=$QT4_FRONTEND_LIBS
++ QT4_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore QtGui`
++ AC_SUBST(QT4_INCLUDES)
++ AC_SUBST(QT4_LDFLAGS)
++ QT4_VERSION=`$PKG_CONFIG --modversion QtCore`
++ AC_SUBST(QT4_VERSION)
++ QT4_LIB=`$PKG_CONFIG --libs-only-l QtCore QtGui`
++ AC_SUBST(QT4_LIB)
++ LIBS="$LIBS `$PKG_CONFIG --libs-only-other QtCore QtGui`"
++ fi
++ PKG_CONFIG_PATH=$save_PKG_CONFIG_PATH
++])
++
++AC_DEFUN([QT4_DO_MANUAL_CONFIG],
++[
++ dnl flags for compilation
++ QT4_INCLUDES=
++ QT4_LDFLAGS=
++ QT4_CORE_INCLUDES=
++ QT4_CORE_LDFLAGS=
++ if test -n "$qt4_cv_includes"; then
++ QT4_INCLUDES="-I$qt4_cv_includes"
++ for i in Qt QtCore QtGui; do
++ QT4_INCLUDES="$QT4_INCLUDES -I$qt4_cv_includes/$i"
++ done
++ QT4_CORE_INCLUDES="-I$qt4_cv_includes -I$qt4_cv_includes/QtCore"
++ fi
++ if test -n "$qt4_cv_libraries"; then
++ QT4_LDFLAGS="-L$qt4_cv_libraries"
++ QT4_CORE_LDFLAGS="-L$qt4_cv_libraries"
++ fi
++ AC_SUBST(QT4_INCLUDES)
++ AC_SUBST(QT4_CORE_INCLUDES)
++ AC_SUBST(QT4_LDFLAGS)
++ AC_SUBST(QT4_CORE_LDFLAGS)
++
++ QT4_CHECK_COMPILE
++
++ QT4_LIB=$qt4_cv_libname;
++ AC_SUBST(QT4_LIB)
++ AC_SUBST(QT4_CORE_LIB)
++
++ if test -n "$qt4_cv_libname"; then
++ QT4_GET_VERSION
++ fi
++])
diff --git a/source/d/perl/doinst.sh b/source/d/perl/doinst.sh
deleted file mode 100644
index 8d2debb06..000000000
--- a/source/d/perl/doinst.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-config() {
- NEW="$1"
- OLD="`dirname $NEW`/`basename $NEW .new`"
- # If there's no config file by that name, mv it over:
- if [ ! -r $OLD ]; then
- mv $NEW $OLD
- elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
- rm $NEW
- fi
- # Otherwise, we leave the .new copy for the admin to consider...
-}
-config usr/lib/perl5/5.10.0/i486-linux-thread-multi/perllocal.pod.new
diff --git a/source/d/perl/perl.SlackBuild b/source/d/perl/perl.SlackBuild
index 9aa963d6a..a58d8a7ed 100755
--- a/source/d/perl/perl.SlackBuild
+++ b/source/d/perl/perl.SlackBuild
@@ -24,22 +24,24 @@
# originally by: David Cantrell <david@slackware.com>
# maintained by: <volkerdi@slackware.com>
-VERSION=5.10.0
+VERSION=5.10.1
# IMPORTANT: also update -Dinc_version_list in ./configure below!
ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j6}
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-perl
# Additional required modules:
-DBI=1.607
-DBDMYSQL=4.008
+DBDMYSQL=4.013
+DBI=1.609
+URI=1.40
XMLPARSER=2.36
XMLSIMPLE=2.18
-URI=1.37
if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
@@ -70,7 +72,7 @@ mkdir -p $PKG
# Extract the source code:
cd $TMP
rm -rf perl-$VERSION
-tar xvf $CWD/perl-$VERSION.tar.bz2
+tar xvf $CWD/perl-$VERSION.tar.?z* || exit 1
# Change into the source directory:
cd perl-$VERSION
@@ -115,7 +117,7 @@ fi
-Doptimize="$SLKCFLAGS" \
$USE_THREADS \
-Dpager='/usr/bin/less -isr' \
- -Dinc_version_list='5.8.8 5.8.7 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0' \
+ -Dinc_version_list='5.10.0 5.8.8 5.8.7 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0' \
-Darchname=$ARCH-linux
# Kludge for gcc-4.2.4's needlessly changed output:
@@ -125,7 +127,7 @@ cat x2p/makefile | grep -v '\<command-line\>' > foo
mv foo x2p/makefile
# Build perl
-make -j6 || exit 1
+make $NUMJOBS || exit 1
make test
# Install perl (needed to build modules):
@@ -257,11 +259,26 @@ fi
# Insert the slack-desc:
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
-zcat $CWD/doinst.sh.gz | \
- sed -e "s#/lib/#/lib${LIBDIRSUFFIX}/#" | sed -e "s#i486#$ARCH#" \
+
+
+cat << EOF | sed -e "s#/lib/#/lib${LIBDIRSUFFIX}/#" | sed -e "s#i486#$ARCH#" \
> $PKG/install/doinst.sh
+#!/bin/sh
+config() {
+ NEW="\$1"
+ OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r \$OLD ]; then
+ mv \$NEW \$OLD
+ elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then # toss the redundant copy
+ rm \$NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config usr/lib/perl5/${VERSION}/i486-linux-thread-multi/perllocal.pod.new
+EOF
# Build the package:
cd $PKG
-makepkg -l y -c n $TMP/perl-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/perl-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/d/python/python.SlackBuild b/source/d/python/python.SlackBuild
index 88445fd8d..faa2b2523 100755
--- a/source/d/python/python.SlackBuild
+++ b/source/d/python/python.SlackBuild
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-2.6.2}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+VERSION=${VERSION:-2.6.4}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-python
diff --git a/source/d/rcs/rcs.SlackBuild b/source/d/rcs/rcs.SlackBuild
index 4ea46e465..7a3980179 100755
--- a/source/d/rcs/rcs.SlackBuild
+++ b/source/d/rcs/rcs.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,15 +21,26 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
VERSION=5.7
-ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-2}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
@@ -48,7 +59,7 @@ echo "| rcs-$VERSION |"
echo "+=========+"
cd $TMP
rm -rf rcs-$VERSION
-tar xvf $CWD/rcs-$VERSION.tar.gz | exit 1
+tar xvf $CWD/rcs-$VERSION.tar.gz || exit 1
cd rcs-$VERSION
chown -R root:root .
diff --git a/source/d/ruby/ruby.SlackBuild b/source/d/ruby/ruby.SlackBuild
index 96234b8ff..0ff662102 100755
--- a/source/d/ruby/ruby.SlackBuild
+++ b/source/d/ruby/ruby.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.8.7-p174
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+PKGNAM=ruby
+VERSION=$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1,2 -d - | rev)
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-ruby
@@ -48,10 +59,6 @@ rm -rf ruby-$VERSION
tar xvf $CWD/ruby-$VERSION.tar.?z* || exit 1
cd ruby-$VERSION || exit 1
-if [ "$ARCH" = "x86_64" ]; then
- zcat $CWD/ruby.x86_64.diff.gz | patch -p1 --verbose || exit 1
-fi
-
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -70,20 +77,40 @@ CFLAGS="$SLKCFLAGS" \
--datadir=/usr/share \
--docdir=/usr/doc/ruby-$VERSION \
--enable-shared \
+ --enable-pthread \
--enable-install-doc \
- --enable-static \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
+# This symlink is needed by things that include ruby/config.h.
+( cd $PKG/usr/include/
+ if [ ! -e ruby -a -d ruby-*/*-*/ruby ]; then
+ ln -s ruby-*/*-*/ruby .
+ fi
+)
+
+# These include files are no longer installed as of ruby-1.9.1, but
+# kdebindings will not compile without them. Try to remove these
+# from the package later if the situation changes.
+mkdir -p $PKG/usr/include/ruby-$(echo $VERSION | cut -f 1 -d -)/ruby
+cp -a node.h version.h revision.h \
+ $PKG/usr/include/ruby-$(echo $VERSION | cut -f 1 -d -)/ruby
+
mkdir -p $PKG/usr/doc/ruby-$VERSION
cp -a \
- COPYING* *GPL* LEGAL NEWS README* ToDo \
+ COPYING* *GPL* ChangeLog LEGAL NEWS README* ToDo \
$PKG/usr/doc/ruby-$VERSION
+# The entire ChangeLog is excessive for most users:
+cat $PKG/usr/doc/ruby-$VERSION/ChangeLog | head -n 1000 > $PKG/usr/doc/ruby-$VERSION/CL
+mv $PKG/usr/doc/ruby-$VERSION/CL $PKG/usr/doc/ruby-$VERSION/ChangeLog
+
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+find $PKG | xargs file | grep -e "current ar archive" \
+ | cut -f 1 -d : | xargs strip --strip-debug 2> /dev/null
# Compress and if needed symlink the man pages:
if [ -d $PKG/usr/man ]; then
diff --git a/source/d/ruby/ruby.x86_64.diff b/source/d/ruby/ruby.x86_64.diff
deleted file mode 100644
index c557546d7..000000000
--- a/source/d/ruby/ruby.x86_64.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ruby-1.8.7-p160.orig/mkconfig.rb 2008-06-06 12:39:57.000000000 +0200
-+++ ruby-1.8.7-p160/mkconfig.rb 2009-04-29 20:33:58.000000000 +0200
-@@ -102,7 +102,7 @@
-
- drive = File::PATH_SEPARATOR == ';'
-
--prefix = '/lib/ruby/' + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM
-+prefix = '/lib64/ruby/' + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM
- print " TOPDIR = File.dirname(__FILE__).chomp!(#{prefix.dump})\n"
- print " DESTDIR = ", (drive ? "TOPDIR && TOPDIR[/\\A[a-z]:/i] || " : ""), "'' unless defined? DESTDIR\n"
- print " CONFIG = {}\n"
diff --git a/source/d/subversion/slack-desc b/source/d/subversion/slack-desc
index 935a52212..af2ef0b61 100644
--- a/source/d/subversion/slack-desc
+++ b/source/d/subversion/slack-desc
@@ -15,5 +15,5 @@ subversion: systems like CVS, RCS or SCCS. Subversion keeps all the information
subversion: to permit extracting previous versions of those files at any time.
subversion:
subversion: For more information about the Subversion project, visit:
-subversion: http://subversion.tigris.org
+subversion: http://subversion.apache.org
subversion:
diff --git a/source/d/subversion/subversion.SlackBuild b/source/d/subversion/subversion.SlackBuild
index 87a7114e0..c2b01e83b 100755
--- a/source/d/subversion/subversion.SlackBuild
+++ b/source/d/subversion/subversion.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.6.4
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo subversion-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -35,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -46,7 +59,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf subversion-$VERSION
-tar xvf $CWD/subversion-$VERSION.tar.xz || exit 1
+tar xvf $CWD/subversion-$VERSION.tar.?z* || exit 1
cd subversion-$VERSION || exit 1
chown -R root:root .
@@ -115,7 +128,7 @@ rm -rf $PKG/usr/build
mkdir -p $PKG/usr/doc/subversion-$VERSION
cp -a \
- BUGS CHANGES COMMITTERS COPYING* HACKING INSTALL README TRANSLATING doc \
+ BUGS COMMITTERS COPYING* HACKING INSTALL README TRANSLATING doc \
$PKG/usr/doc/subversion-$VERSION
# too big && useless for most || if you think not, can be found in the source tarball
rm -rf $PKG/usr/doc/subversion-$VERSION/doc/tools
@@ -135,20 +148,20 @@ rm -rf $PKG/usr/doc/subversion-$VERSION/doc/tools
-exec chmod 644 {} \;
)
+# If there's a CHANGES file, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
+
# This removes our DESTDIR from the packlist filenames, to keep perl's
# internal inventories consistent and correct.
find $PKG -name .packlist | while read plist ; do
- sed -e "s%/share/man%/man%g" \
- -e "s%$PKG%%g" \
- -e "s%\.1$%\.1\.gz%g" \
- -e "s%\.2$%\.2\.gz%g" \
- -e "s%\.3$%\.3\.gz%g" \
- -e "s%\.3pm$%\.3pm\.gz%g" \
- -e "s%\.4$%\.4\.gz%g" \
- -e "s%\.5$%\.5\.gz%g" \
- -e "s%\.6$%\.6\.gz%g" \
- -e "s%\.7$%\.7\.gz%g" \
- -e "s%\.8$%\.8\.gz%g" \
+ sed -e "s%$PKG%%g" \
+ -e "s%/share/man%/man%g" \
+ -re "s%\.([1-9]n?|3pm)$%&.gz%g # extend man filenames for .gz" \
${plist} > ${plist}.new
mv -f ${plist}.new ${plist}
done
diff --git a/source/e/emacs/emacs.SlackBuild b/source/e/emacs/emacs.SlackBuild
index 962e9ee4c..77b1fb636 100755
--- a/source/e/emacs/emacs.SlackBuild
+++ b/source/e/emacs/emacs.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -26,11 +26,19 @@
# Modified by Robby Workman <rworkman@slackbuilds.org>
# Modified by Patrick Volkerding <volkerdi@slackware.com>
-PRGNAM=emacs
-VERSION=22.3
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-3}
+PKGNAM=emacs
+VERSION=${VERSION:-23.2}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -42,16 +50,18 @@ elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -86,9 +96,9 @@ make install DESTDIR=$PKG || exit 1
# Also add a version of the binary that is not linked to X11:
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -96,6 +106,9 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+zcat $CWD/emacs.gtk-menu.patch.gz | patch -p1 || exit 1
+zcat $CWD/emacs.libpng14.patch.gz | patch -p1 || exit 1
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -139,33 +152,15 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
gzip -9 *
)
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING* ChangeLog INSTALL README \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-# Make the .desktop file
-mkdir -p $PKG/usr/share/applications
-cat << "EOF" > $PKG/usr/share/applications/$PRGNAM.desktop
-[Desktop Entry]
-Encoding=UTF-8
-Type=Application
-Exec=emacs
-Icon=emacs.png
-Terminal=0
-Name=Emacs
-Comment=Text Editor
-Categories=Application;Development;
-EOF
-
-# Make the package freedesktop compliant
-mkdir -p $PKG/usr/share/icons/hicolor/48x48/apps
-cat $PKG/usr/share/$PRGNAM/$VERSION/etc/images/icons/emacs_48.png > $PKG/usr/share/icons/hicolor/48x48/apps/emacs.png
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/installer/busybox-1.12.1_inotify.diff b/source/installer/busybox-1.12.1_inotify.diff
deleted file mode 100644
index 151d16ce9..000000000
--- a/source/installer/busybox-1.12.1_inotify.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- busybox-1.12.1.orig/miscutils/inotifyd.c 2008-11-07 01:39:21.000000000 +0000
-+++ busybox-1.12.1/miscutils/inotifyd.c 2008-11-07 01:37:05.000000000 +0000
-@@ -28,7 +28,7 @@
- */
-
- #include "libbb.h"
--#include <linux/inotify.h>
-+#include <sys/inotify.h>
-
- static volatile smallint signalled;
-
diff --git a/source/installer/busybox-dot-config b/source/installer/busybox-dot-config
index 69b07295c..4c77cb6ff 100644
--- a/source/installer/busybox-dot-config
+++ b/source/installer/busybox-dot-config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Busybox version: 1.12.1
-# Mon Mar 30 16:14:53 2009
+# Busybox version: 1.15.3
+# Wed Dec 30 20:01:35 2009
#
CONFIG_HAVE_DOT_CONFIG=y
@@ -14,7 +14,6 @@ CONFIG_HAVE_DOT_CONFIG=y
#
CONFIG_DESKTOP=y
# CONFIG_EXTRA_COMPAT is not set
-# CONFIG_FEATURE_ASSUME_UNICODE is not set
CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
@@ -23,7 +22,9 @@ CONFIG_FEATURE_VERBOSE_USAGE=y
CONFIG_FEATURE_COMPRESS_USAGE=y
CONFIG_FEATURE_INSTALLER=y
CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
+# CONFIG_FEATURE_ASSUME_UNICODE is not set
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_LONG_OPTS=y
CONFIG_FEATURE_DEVPTS=y
# CONFIG_FEATURE_CLEAN_UP is not set
CONFIG_FEATURE_PIDFILE=y
@@ -34,7 +35,7 @@ CONFIG_FEATURE_SUID_CONFIG_QUIET=y
# CONFIG_FEATURE_PREFER_APPLETS is not set
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
CONFIG_FEATURE_SYSLOG=y
-CONFIG_FEATURE_HAVE_RPC=y
+# CONFIG_FEATURE_HAVE_RPC is not set
#
# Build Options
@@ -47,6 +48,7 @@ CONFIG_FEATURE_HAVE_RPC=y
# CONFIG_FEATURE_SHARED_BUSYBOX is not set
CONFIG_LFS=y
CONFIG_CROSS_COMPILER_PREFIX=""
+CONFIG_EXTRA_CFLAGS=""
#
# Debugging Options
@@ -58,7 +60,6 @@ CONFIG_NO_DEBUG_LIB=y
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set
CONFIG_INCLUDE_SUSv2=y
-# CONFIG_PARSE is not set
#
# Installation Options
@@ -88,6 +89,8 @@ CONFIG_FEATURE_EDITING_HISTORY=64
CONFIG_FEATURE_TAB_COMPLETION=y
# CONFIG_FEATURE_USERNAME_COMPLETION is not set
CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
+CONFIG_FEATURE_NON_POSIX_CP=y
CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
CONFIG_FEATURE_COPYBUF_KB=4
CONFIG_MONOTONIC_SYSCALL=y
@@ -111,11 +114,14 @@ CONFIG_BUNZIP2=y
CONFIG_BZIP2=y
CONFIG_CPIO=y
CONFIG_FEATURE_CPIO_O=y
+# CONFIG_FEATURE_CPIO_P is not set
# CONFIG_DPKG is not set
# CONFIG_DPKG_DEB is not set
# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
# CONFIG_GUNZIP is not set
# CONFIG_GZIP is not set
+# CONFIG_LZOP is not set
+# CONFIG_LZOP_COMPR_HIGH is not set
# CONFIG_RPM2CPIO is not set
# CONFIG_RPM is not set
# CONFIG_TAR is not set
@@ -153,7 +159,7 @@ CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
CONFIG_FEATURE_DD_IBS_OBS=y
CONFIG_DF=y
-CONFIG_FEATURE_DF_INODE=y
+CONFIG_FEATURE_DF_FANCY=y
CONFIG_DIRNAME=y
CONFIG_DOS2UNIX=y
CONFIG_UNIX2DOS=y
@@ -169,6 +175,7 @@ CONFIG_EXPR=y
CONFIG_EXPR_MATH_SUPPORT_64=y
CONFIG_FALSE=y
# CONFIG_FOLD is not set
+CONFIG_FSYNC=y
CONFIG_HEAD=y
CONFIG_FEATURE_FANCY_HEAD=y
# CONFIG_HOSTID is not set
@@ -208,6 +215,8 @@ CONFIG_RMDIR=y
# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
# CONFIG_SEQ is not set
# CONFIG_SHA1SUM is not set
+# CONFIG_SHA256SUM is not set
+# CONFIG_SHA512SUM is not set
CONFIG_SLEEP=y
CONFIG_FEATURE_FANCY_SLEEP=y
# CONFIG_FEATURE_FLOAT_SLEEP is not set
@@ -283,6 +292,8 @@ CONFIG_FEATURE_RESIZE_PRINT=y
CONFIG_SETCONSOLE=y
CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
# CONFIG_SETFONT is not set
+# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set
+CONFIG_DEFAULT_SETFONT_DIR=""
CONFIG_SETKEYCODES=y
CONFIG_SETLOGCONS=y
CONFIG_SHOWKEY=y
@@ -304,7 +315,7 @@ CONFIG_WHICH=y
# Editors
#
CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
+CONFIG_FEATURE_AWK_LIBM=y
# CONFIG_CMP is not set
CONFIG_DIFF=y
CONFIG_FEATURE_DIFF_BINARY=y
@@ -367,7 +378,6 @@ CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
# Init Utilities
#
CONFIG_INIT=y
-# CONFIG_DEBUG_INIT is not set
CONFIG_FEATURE_USE_INITTAB=y
CONFIG_FEATURE_KILL_REMOVED=y
CONFIG_FEATURE_KILL_DELAY=10
@@ -377,6 +387,8 @@ CONFIG_FEATURE_EXTRA_QUIET=y
# CONFIG_FEATURE_INIT_COREDUMPS is not set
# CONFIG_FEATURE_INITRD is not set
CONFIG_HALT=y
+# CONFIG_FEATURE_CALL_TELINIT is not set
+CONFIG_TELINIT_PATH=""
CONFIG_MESG=y
#
@@ -386,13 +398,17 @@ CONFIG_FEATURE_SHADOWPASSWDS=y
# CONFIG_USE_BB_PWD_GRP is not set
# CONFIG_USE_BB_SHADOW is not set
CONFIG_USE_BB_CRYPT=y
+# CONFIG_USE_BB_CRYPT_SHA is not set
CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS=y
CONFIG_FEATURE_ADDUSER_TO_GROUP=y
CONFIG_DELGROUP=y
CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
CONFIG_FEATURE_CHECK_NAMES=y
CONFIG_ADDUSER=y
# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
+CONFIG_FIRST_SYSTEM_ID=100
+CONFIG_LAST_SYSTEM_ID=9999
CONFIG_DELUSER=y
# CONFIG_GETTY is not set
CONFIG_FEATURE_UTMP=y
@@ -425,32 +441,35 @@ CONFIG_FEATURE_SU_CHECKS_SHELLS=y
# CONFIG_MODPROBE_SMALL is not set
# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
-# CONFIG_DEPMOD is not set
-# CONFIG_FEATURE_DEPMOD_PRUNE_FANCY is not set
-# CONFIG_FEATURE_DEPMOD_ALIAS is not set
# CONFIG_INSMOD is not set
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
# CONFIG_RMMOD is not set
# CONFIG_LSMOD is not set
# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
# CONFIG_MODPROBE is not set
-# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set
-# CONFIG_FEATURE_MODPROBE_FANCY_ALIAS is not set
# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
-# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
+# CONFIG_DEPMOD is not set
+
+#
+# Options common to multiple modutils
+#
# CONFIG_FEATURE_2_4_MODULES is not set
-# CONFIG_FEATURE_2_6_MODULES is not set
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
+# CONFIG_FEATURE_MODUTILS_ALIAS is not set
+# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set
CONFIG_DEFAULT_MODULES_DIR=""
CONFIG_DEFAULT_DEPMOD_FILE=""
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
#
# Linux System Utilities
#
+# CONFIG_ACPID is not set
+# CONFIG_FEATURE_ACPID_COMPAT is not set
+# CONFIG_BLKID is not set
CONFIG_DMESG=y
CONFIG_FEATURE_DMESG_PRETTY=y
CONFIG_FBSET=y
@@ -471,7 +490,9 @@ CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
# CONFIG_FSCK_MINIX is not set
# CONFIG_MKFS_MINIX is not set
# CONFIG_FEATURE_MINIX2 is not set
+# CONFIG_MKFS_VFAT is not set
# CONFIG_GETOPT is not set
+# CONFIG_FEATURE_GETOPT_LONG is not set
CONFIG_HEXDUMP=y
# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
# CONFIG_HD is not set
@@ -488,10 +509,10 @@ CONFIG_LOSETUP=y
# CONFIG_FEATURE_MDEV_EXEC is not set
# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
# CONFIG_MKSWAP is not set
-# CONFIG_FEATURE_MKSWAP_V0 is not set
+# CONFIG_FEATURE_MKSWAP_UUID is not set
CONFIG_MORE=y
CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_VOLUMEID=y
+# CONFIG_VOLUMEID is not set
# CONFIG_FEATURE_VOLUMEID_EXT is not set
# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
# CONFIG_FEATURE_VOLUMEID_FAT is not set
@@ -523,6 +544,7 @@ CONFIG_RDEV=y
# CONFIG_READPROFILE is not set
# CONFIG_RTCWAKE is not set
# CONFIG_SCRIPT is not set
+# CONFIG_SCRIPTREPLAY is not set
# CONFIG_SETARCH is not set
CONFIG_SWAPONOFF=y
CONFIG_FEATURE_SWAPON_PRI=y
@@ -537,6 +559,9 @@ CONFIG_SWITCH_ROOT=y
#
# CONFIG_ADJTIMEX is not set
CONFIG_BBCONFIG=y
+# CONFIG_BEEP is not set
+CONFIG_FEATURE_BEEP_FREQ=0
+CONFIG_FEATURE_BEEP_LENGTH_MS=0
# CONFIG_CHAT is not set
# CONFIG_FEATURE_CHAT_NOFAIL is not set
# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
@@ -547,18 +572,25 @@ CONFIG_BBCONFIG=y
# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
# CONFIG_CHRT is not set
# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_D is not set
# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_FEATURE_CROND_DIR=""
# CONFIG_CRONTAB is not set
# CONFIG_DC is not set
+# CONFIG_FEATURE_DC_LIBM is not set
# CONFIG_DEVFSD is not set
# CONFIG_DEVFSD_MODLOAD is not set
# CONFIG_DEVFSD_FG_NP is not set
# CONFIG_DEVFSD_VERBOSE is not set
# CONFIG_FEATURE_DEVFS is not set
+# CONFIG_DEVMEM is not set
CONFIG_EJECT=y
CONFIG_FEATURE_EJECT_SCSI=y
# CONFIG_FBSPLASH is not set
+# CONFIG_FLASH_LOCK is not set
+# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASH_ERASEALL is not set
+CONFIG_IONICE=y
# CONFIG_INOTIFYD is not set
# CONFIG_LAST is not set
# CONFIG_FEATURE_LAST_SMALL is not set
@@ -567,9 +599,11 @@ CONFIG_LESS=y
CONFIG_FEATURE_LESS_MAXLINES=9999999
CONFIG_FEATURE_LESS_BRACKETS=y
CONFIG_FEATURE_LESS_FLAGS=y
-CONFIG_FEATURE_LESS_FLAGCS=y
CONFIG_FEATURE_LESS_MARKS=y
CONFIG_FEATURE_LESS_REGEXP=y
+# CONFIG_FEATURE_LESS_WINCH is not set
+# CONFIG_FEATURE_LESS_DASHCMD is not set
+# CONFIG_FEATURE_LESS_LINENUMS is not set
# CONFIG_HDPARM is not set
# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
@@ -593,13 +627,16 @@ CONFIG_RUNLEVEL=y
# CONFIG_TASKSET is not set
# CONFIG_FEATURE_TASKSET_FANCY is not set
CONFIG_TIME=y
+CONFIG_TIMEOUT=y
CONFIG_TTYSIZE=y
+# CONFIG_VOLNAME is not set
# CONFIG_WATCHDOG is not set
#
# Networking Utilities
#
CONFIG_FEATURE_IPV6=y
+# CONFIG_FEATURE_UNIX_LOCAL is not set
CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
CONFIG_ARP=y
@@ -610,6 +647,8 @@ CONFIG_BRCTL=y
# CONFIG_DNSD is not set
CONFIG_ETHER_WAKE=y
# CONFIG_FAKEIDENTD is not set
+# CONFIG_FTPD is not set
+# CONFIG_FEATURE_FTP_WRITE is not set
CONFIG_FTPGET=y
CONFIG_FTPPUT=y
CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
@@ -617,11 +656,9 @@ CONFIG_HOSTNAME=y
# CONFIG_HTTPD is not set
# CONFIG_FEATURE_HTTPD_RANGES is not set
# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
# CONFIG_FEATURE_HTTPD_SETUID is not set
# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
# CONFIG_FEATURE_HTTPD_CGI is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
@@ -635,6 +672,7 @@ CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
CONFIG_FEATURE_IFCONFIG_HW=y
CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
CONFIG_IFENSLAVE=y
+# CONFIG_IFPLUGD is not set
CONFIG_IFUPDOWN=y
CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
# CONFIG_FEATURE_IFUPDOWN_IP is not set
@@ -681,8 +719,6 @@ CONFIG_PING6=y
CONFIG_FEATURE_FANCY_PING=y
CONFIG_PSCAN=y
CONFIG_ROUTE=y
-# CONFIG_SENDMAIL is not set
-# CONFIG_FETCHMAIL is not set
CONFIG_SLATTACH=y
CONFIG_TELNET=y
CONFIG_FEATURE_TELNET_TTYPE=y
@@ -694,7 +730,7 @@ CONFIG_TFTP=y
CONFIG_FEATURE_TFTP_GET=y
CONFIG_FEATURE_TFTP_PUT=y
CONFIG_FEATURE_TFTP_BLOCKSIZE=y
-# CONFIG_DEBUG_TFTP is not set
+# CONFIG_TFTP_DEBUG is not set
CONFIG_TRACEROUTE=y
# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
@@ -707,10 +743,11 @@ CONFIG_DHCPD_LEASES_FILE=""
# CONFIG_APP_UDHCPC is not set
# CONFIG_FEATURE_UDHCPC_ARPING is not set
# CONFIG_FEATURE_UDHCP_PORT is not set
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_FEATURE_RFC3397 is not set
-CONFIG_DHCPC_DEFAULT_SCRIPT=""
-CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=
+CONFIG_UDHCP_DEBUG=0
+# CONFIG_FEATURE_UDHCP_RFC3397 is not set
+CONFIG_UDHCPC_DEFAULT_SCRIPT=""
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
CONFIG_VCONFIG=y
CONFIG_WGET=y
CONFIG_FEATURE_WGET_STATUSBAR=y
@@ -718,9 +755,29 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
CONFIG_ZCIP=y
CONFIG_TCPSVD=y
+# CONFIG_TUNCTL is not set
+# CONFIG_FEATURE_TUNCTL_UG is not set
CONFIG_UDPSVD=y
#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+# CONFIG_LPR is not set
+# CONFIG_LPQ is not set
+
+#
+# Mail Utilities
+#
+# CONFIG_MAKEMIME is not set
+CONFIG_FEATURE_MIME_CHARSET=""
+# CONFIG_POPMAILDIR is not set
+# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
+# CONFIG_REFORMIME is not set
+# CONFIG_FEATURE_REFORMIME_COMPAT is not set
+# CONFIG_SENDMAIL is not set
+
+#
# Process Utilities
#
CONFIG_FREE=y
@@ -737,36 +794,62 @@ CONFIG_PKILL=y
CONFIG_PS=y
CONFIG_FEATURE_PS_WIDE=y
CONFIG_FEATURE_PS_TIME=y
+# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
CONFIG_RENICE=y
CONFIG_BB_SYSCTL=y
CONFIG_TOP=y
CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+# CONFIG_FEATURE_TOP_SMP_CPU is not set
CONFIG_FEATURE_TOP_DECIMALS=y
+# CONFIG_FEATURE_TOP_SMP_PROCESS is not set
CONFIG_FEATURE_TOPMEM=y
CONFIG_UPTIME=y
CONFIG_WATCH=y
#
+# Runit Utilities
+#
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_FEATURE_RUNSVDIR_LOG is not set
+# CONFIG_SV is not set
+CONFIG_SV_DEFAULT_SERVICE_DIR=""
+# CONFIG_SVLOGD is not set
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_SETSEBOOL is not set
+# CONFIG_SESTATUS is not set
+
+#
# Shells
#
CONFIG_FEATURE_SH_IS_ASH=y
# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
# CONFIG_FEATURE_SH_IS_NONE is not set
CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
CONFIG_ASH_BASH_COMPAT=y
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_READ_NCHARS=y
CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-CONFIG_ASH_MATH_SUPPORT_64=y
CONFIG_ASH_GETOPTS=y
CONFIG_ASH_BUILTIN_ECHO=y
CONFIG_ASH_BUILTIN_PRINTF=y
@@ -777,6 +860,7 @@ CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
CONFIG_ASH_RANDOM_SUPPORT=y
CONFIG_ASH_EXPAND_PRMT=y
# CONFIG_HUSH is not set
+# CONFIG_HUSH_BASH_COMPAT is not set
# CONFIG_HUSH_HELP is not set
# CONFIG_HUSH_INTERACTIVE is not set
# CONFIG_HUSH_JOB is not set
@@ -784,12 +868,13 @@ CONFIG_ASH_EXPAND_PRMT=y
# CONFIG_HUSH_IF is not set
# CONFIG_HUSH_LOOPS is not set
# CONFIG_HUSH_CASE is not set
+# CONFIG_HUSH_FUNCTIONS is not set
+# CONFIG_HUSH_LOCAL is not set
+# CONFIG_HUSH_EXPORT_N is not set
# CONFIG_LASH is not set
# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
+CONFIG_SH_MATH_SUPPORT=y
+# CONFIG_SH_MATH_SUPPORT_64 is not set
CONFIG_FEATURE_SH_EXTRA_QUIET=y
# CONFIG_FEATURE_SH_STANDALONE is not set
# CONFIG_FEATURE_SH_NOFORK is not set
@@ -808,38 +893,3 @@ CONFIG_LOGREAD=y
CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
CONFIG_KLOGD=y
# CONFIG_LOGGER is not set
-
-#
-# Runit Utilities
-#
-# CONFIG_RUNSV is not set
-# CONFIG_RUNSVDIR is not set
-# CONFIG_SV is not set
-# CONFIG_SVLOGD is not set
-# CONFIG_CHPST is not set
-# CONFIG_SETUIDGID is not set
-# CONFIG_ENVUIDGID is not set
-# CONFIG_ENVDIR is not set
-# CONFIG_SOFTLIMIT is not set
-# CONFIG_CHCON is not set
-# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
-# CONFIG_GETENFORCE is not set
-# CONFIG_GETSEBOOL is not set
-# CONFIG_LOAD_POLICY is not set
-# CONFIG_MATCHPATHCON is not set
-# CONFIG_RESTORECON is not set
-# CONFIG_RUNCON is not set
-# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
-# CONFIG_SELINUXENABLED is not set
-# CONFIG_SETENFORCE is not set
-# CONFIG_SETFILES is not set
-# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
-# CONFIG_SETSEBOOL is not set
-# CONFIG_SESTATUS is not set
-
-#
-# Print Utilities
-#
-# CONFIG_LPD is not set
-# CONFIG_LPR is not set
-# CONFIG_LPQ is not set
diff --git a/source/installer/busybox.2.6.32.2.diff b/source/installer/busybox.2.6.32.2.diff
new file mode 100644
index 000000000..15757775c
--- /dev/null
+++ b/source/installer/busybox.2.6.32.2.diff
@@ -0,0 +1,13 @@
+--- ./miscutils/eject.c.orig 2009-12-12 15:13:28.000000000 -0600
++++ ./miscutils/eject.c 2009-12-31 14:04:20.000000000 -0600
+@@ -13,6 +13,10 @@
+ * Most of the dirty work blatantly ripped off from cat.c =)
+ */
+
++/* kludge for 2.6.32.2 /usr/include/scsi/scsi.h */
++#include <stdint.h>
++typedef uint8_t u8;
++
+ #include <sys/mount.h>
+ #include "libbb.h"
+ /* Must be after libbb.h: they need size_t */
diff --git a/source/installer/busybox.SlackBuild b/source/installer/busybox.SlackBuild
index adceb07c0..a80631e3b 100755
--- a/source/installer/busybox.SlackBuild
+++ b/source/installer/busybox.SlackBuild
@@ -21,7 +21,7 @@
PKGNAM=busybox
-VERSION=${VERSION:-1.12.1}
+VERSION=${VERSION:-1.15.3}
ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-1}
@@ -36,7 +36,7 @@ rm -rf ${PKGNAM}-${VERSION}
tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
cd ${PKGNAM}-$VERSION || exit 1
-zcat $CWD/busybox-1.12.1_inotify.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/busybox.2.6.32.2.diff.gz | patch -p1 || exit 1
# Make sure ownerships and permissions are sane:
chown -R root:root .
diff --git a/source/n/dhcpcd/patches/config.h.diff b/source/installer/dhcpcd/config.h.diff
index 7bdefb600..7bdefb600 100644
--- a/source/n/dhcpcd/patches/config.h.diff
+++ b/source/installer/dhcpcd/config.h.diff
diff --git a/source/n/dhcpcd/patches/dhcpcd.sh.diff b/source/installer/dhcpcd/dhcpcd.sh.diff
index 290665a98..290665a98 100644
--- a/source/n/dhcpcd/patches/dhcpcd.sh.diff
+++ b/source/installer/dhcpcd/dhcpcd.sh.diff
diff --git a/source/k/2.6.29.x-intel-crash-patch.diff b/source/k/2.6.29.x-intel-crash-patch.diff
deleted file mode 100644
index a4fcb4686..000000000
--- a/source/k/2.6.29.x-intel-crash-patch.diff
+++ /dev/null
@@ -1,37 +0,0 @@
- [Intel-gfx] [PATCH] drm/i915: Don't allow binding objects into the last page of the aperture.
-
- Eric Anholt eric at anholt.net
- Tue May 12 15:29:56 PDT 2009
-
- This should avoid a class of bugs where the hardware prefetches past the
- end of the object, and walks into unallocated memory when the object is
- bound to the last page of the aperture.
-
- fd.o bug #21488
- ---
- drivers/gpu/drm/i915/i915_dma.c | 12 ++++++++++--
- 1 files changed, 10 insertions(+), 2 deletions(-)
-
- diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
- index 051134c..3133f99 100644
- --- a/drivers/gpu/drm/i915/i915_dma.c
- +++ b/drivers/gpu/drm/i915/i915_dma.c
- @@ -1011,8 +1011,16 @@ static int i915_load_modeset_init(struct drm_device *dev)
- /* Basic memrange allocator for stolen space (aka vram) */
- drm_mm_init(&dev_priv->vram, 0, prealloc_size);
-
- - /* Let GEM Manage from end of prealloc space to end of aperture */
- - i915_gem_do_init(dev, prealloc_size, agp_size);
- + /* Let GEM Manage from end of prealloc space to end of aperture.
- + *
- + * However, leave one page at the end still bound to the scratch page.
- + * There are a number of places where the hardware apparently
- + * prefetches past the end of the object, and we've seen multiple
- + * hangs with the GPU head pointer stuck in a batchbuffer bound
- + * at the last page of the aperture. One page should be enough to
- + * keep any prefetching inside of the aperture.
- + */
- + i915_gem_do_init(dev, prealloc_size, agp_size - 4096);
-
- ret = i915_gem_init_ringbuffer(dev);
-
diff --git a/source/k/README.TXT b/source/k/README.TXT
index 13cdcb71d..1f45bfb20 100644
--- a/source/k/README.TXT
+++ b/source/k/README.TXT
@@ -13,7 +13,7 @@ For a 2.6.x kernel (much easier):
Install a suitable .config, or use make menuconfig, etc.
An example would be to use one of the config files here:
- # cat config-generic-2.6.29.6 > /usr/src/linux-2.6.29.6/.config
+ # cat config-generic-2.6.33.4 > /usr/src/linux-2.6.33.4/.config
Then run the build programs:
diff --git a/source/k/README_SECURITY.TXT b/source/k/README_SECURITY.TXT
deleted file mode 100644
index 6aaa7d665..000000000
--- a/source/k/README_SECURITY.TXT
+++ /dev/null
@@ -1,11 +0,0 @@
-Applying these patches:
-
-linux-2.6.29.6-01-sendpage.diff.gz
-linux-2.6.29.6-02-default-mmap_min_addr-4096.diff.gz
-
-Is highly recommended if you are planning to use the 2.6.29.6
-kernel source in this directory.
-
-The kernel-source-2.6.29.6_smp-noarch-2.txz package already has
-them preapplied.
-
diff --git a/source/k/README_SPEAKUP_PATCH.TXT b/source/k/README_SPEAKUP_PATCH.TXT
index 9a9979b0b..8fd155961 100644
--- a/source/k/README_SPEAKUP_PATCH.TXT
+++ b/source/k/README_SPEAKUP_PATCH.TXT
@@ -10,19 +10,19 @@ need to do this:
Untar the speakup archive, and cd into the speakup directory:
-tar xf speakup-3.0.3_20081026.tar.bz2
-cd speakup-3.0.3_20081026
+tar xf speakup-2009-12-30.tar.xz
+cd speakup-2009-12-30
Patch whatever kernel you happen to want to compile:
-./install /usr/src/linux-2.6.29.6
+./install /usr/src/linux-2.6.33.4
Change to the kernel directory:
-cd /usr/src/linux-2.6.29.6
+cd /usr/src/linux-2.6.33.4
If you want to start with the defaults one of Slackware's kernels, you can do
that like this:
-cat /boot/vmlinuz-huge-2.6.29.6 > .config
+cat /boot/vmlinuz-huge-2.6.33.4 > .config
Or, better yet, if you have access to the Slackware tree use the
Speakup .config that was used:
@@ -33,11 +33,14 @@ Then do any additional configuation to the kernel that you may require:
make menuconfig
+You might want to check in Device Drivers -> Accessibility -> Speakup
+to make sure that Speakup support is configured to your liking.
+
After that, it's build and install:
make
make modules_install
make bzImage
-cat arch/x86/boot/bzImage > /boot/vmlinuz-huge-2.6.29.6-speakup
+cat arch/x86/boot/bzImage > /boot/vmlinuz-huge-2.6.33.4-speakup
I put the -speakup on the end of the kernel name so that I can remember
which kernel I've patched, but that part is entirely optional.
diff --git a/source/k/config-generic-2.6.29.6 b/source/k/config-generic-2.6.29.6
deleted file mode 100644
index 4a88a8ec9..000000000
--- a/source/k/config-generic-2.6.29.6
+++ /dev/null
@@ -1,4178 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.29.6
-# Mon Aug 17 02:22:45 2009
-#
-CONFIG_64BIT=y
-# CONFIG_X86_32 is not set
-CONFIG_X86_64=y
-CONFIG_X86=y
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_FAST_CMPXCHG_LOCAL=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
-CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_HAVE_SETUP_PER_CPU_AREA=y
-CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ZONE_DMA32=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_AUDIT_ARCH=y
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
-CONFIG_X86_64_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-# CONFIG_KTIME_SCALAR is not set
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-
-#
-# RCU Subsystem
-#
-CONFIG_CLASSIC_RCU=y
-# CONFIG_TREE_RCU is not set
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_PREEMPT_RCU_TRACE is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=15
-CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-# CONFIG_GROUP_SCHED is not set
-# CONFIG_CGROUPS is not set
-# CONFIG_SYSFS_DEPRECATED_V2 is not set
-# CONFIG_RELAY is not set
-CONFIG_NAMESPACES=y
-# CONFIG_UTS_NS is not set
-# CONFIG_IPC_NS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_NET_NS is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-# CONFIG_EMBEDDED is not set
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_PCSPKR_PLATFORM=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_PCI_QUIRKS=y
-CONFIG_SLUB_DEBUG=y
-CONFIG_COMPAT_BRK=y
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-# CONFIG_SLOB is not set
-CONFIG_PROFILING=y
-CONFIG_TRACEPOINTS=y
-CONFIG_MARKERS=y
-CONFIG_OPROFILE=m
-# CONFIG_OPROFILE_IBS is not set
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_HAVE_IOREMAP_PROT=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-CONFIG_BLK_DEV_BSG=y
-# CONFIG_BLK_DEV_INTEGRITY is not set
-CONFIG_BLOCK_COMPAT=y
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_PREEMPT_NOTIFIERS=y
-CONFIG_FREEZER=y
-
-#
-# Processor type and features
-#
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_SMP=y
-# CONFIG_SPARSE_IRQ is not set
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-# CONFIG_PARAVIRT_GUEST is not set
-CONFIG_MEMTEST=y
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MPSC is not set
-# CONFIG_MCORE2 is not set
-CONFIG_GENERIC_CPU=y
-CONFIG_X86_CPU=y
-CONFIG_X86_L1_CACHE_BYTES=128
-CONFIG_X86_INTERNODE_CACHE_BYTES=128
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=64
-CONFIG_X86_DEBUGCTLMSR=y
-CONFIG_CPU_SUP_INTEL=y
-CONFIG_CPU_SUP_AMD=y
-CONFIG_CPU_SUP_CENTAUR_64=y
-# CONFIG_X86_DS is not set
-CONFIG_HPET_TIMER=y
-CONFIG_HPET_EMULATE_RTC=y
-CONFIG_DMI=y
-CONFIG_GART_IOMMU=y
-# CONFIG_CALGARY_IOMMU is not set
-# CONFIG_AMD_IOMMU is not set
-CONFIG_SWIOTLB=y
-CONFIG_IOMMU_HELPER=y
-# CONFIG_IOMMU_API is not set
-CONFIG_NR_CPUS=32
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_INTEL=y
-CONFIG_X86_MCE_AMD=y
-CONFIG_I8K=m
-CONFIG_MICROCODE=m
-CONFIG_MICROCODE_INTEL=y
-CONFIG_MICROCODE_AMD=y
-CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_X86_MSR=m
-CONFIG_X86_CPUID=m
-CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
-CONFIG_DIRECT_GBPAGES=y
-# CONFIG_NUMA is not set
-CONFIG_ARCH_SPARSEMEM_DEFAULT=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_FLATMEM_MANUAL is not set
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-CONFIG_SPARSEMEM_MANUAL=y
-CONFIG_SPARSEMEM=y
-CONFIG_HAVE_MEMORY_PRESENT=y
-CONFIG_SPARSEMEM_EXTREME=y
-CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
-CONFIG_SPARSEMEM_VMEMMAP=y
-
-#
-# Memory hotplug is currently incompatible with Software Suspend
-#
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_UNEVICTABLE_LRU=y
-CONFIG_MMU_NOTIFIER=y
-# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
-CONFIG_X86_RESERVE_LOW_64K=y
-CONFIG_MTRR=y
-CONFIG_MTRR_SANITIZER=y
-CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
-CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
-# CONFIG_X86_PAT is not set
-# CONFIG_EFI is not set
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-# CONFIG_HZ_250 is not set
-# CONFIG_HZ_300 is not set
-CONFIG_HZ_1000=y
-CONFIG_HZ=1000
-# CONFIG_SCHED_HRTICK is not set
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-CONFIG_PHYSICAL_START=0x200000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x200000
-CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
-# CONFIG_CMDLINE_BOOL is not set
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
-
-#
-# Power management and ACPI options
-#
-CONFIG_ARCH_HIBERNATION_HEADER=y
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_HIBERNATION=y
-CONFIG_PM_STD_PARTITION="\"\""
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
-CONFIG_ACPI_PROCFS_POWER=y
-CONFIG_ACPI_SYSFS_POWER=y
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=m
-CONFIG_ACPI_BATTERY=m
-CONFIG_ACPI_BUTTON=m
-CONFIG_ACPI_VIDEO=m
-CONFIG_ACPI_FAN=m
-CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_PROCESSOR=m
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_THERMAL=m
-# CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_PCI_SLOT=m
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=m
-# CONFIG_ACPI_SBS is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=m
-# CONFIG_CPU_FREQ_DEBUG is not set
-CONFIG_CPU_FREQ_STAT=m
-CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=m
-CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=m
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
-
-#
-# CPUFreq processor drivers
-#
-CONFIG_X86_ACPI_CPUFREQ=m
-CONFIG_X86_POWERNOW_K8=m
-CONFIG_X86_POWERNOW_K8_ACPI=y
-CONFIG_X86_SPEEDSTEP_CENTRINO=m
-CONFIG_X86_P4_CLOCKMOD=m
-
-#
-# shared options
-#
-CONFIG_X86_SPEEDSTEP_LIB=m
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-
-#
-# Memory power savings
-#
-CONFIG_I7300_IDLE_IOAT_CHANNEL=y
-CONFIG_I7300_IDLE=m
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_DMAR is not set
-# CONFIG_INTR_REMAP is not set
-CONFIG_PCIEPORTBUS=y
-CONFIG_HOTPLUG_PCI_PCIE=m
-CONFIG_PCIEAER=y
-# CONFIG_PCIEASPM is not set
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_LEGACY=y
-# CONFIG_PCI_STUB is not set
-CONFIG_HT_IRQ=y
-CONFIG_ISA_DMA_API=y
-CONFIG_K8_NB=y
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-CONFIG_CARDBUS=y
-
-#
-# PC-card bridges
-#
-CONFIG_YENTA=m
-CONFIG_YENTA_O2=y
-CONFIG_YENTA_RICOH=y
-CONFIG_YENTA_TI=y
-CONFIG_YENTA_ENE_TUNE=y
-CONFIG_YENTA_TOSHIBA=y
-CONFIG_PD6729=m
-CONFIG_I82092=m
-CONFIG_PCCARD_NONSTATIC=m
-CONFIG_HOTPLUG_PCI=y
-CONFIG_HOTPLUG_PCI_FAKE=m
-CONFIG_HOTPLUG_PCI_ACPI=m
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-CONFIG_HOTPLUG_PCI_SHPC=m
-
-#
-# Executable file formats / Emulations
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_COMPAT_BINFMT_ELF=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-# CONFIG_HAVE_AOUT is not set
-CONFIG_BINFMT_MISC=m
-CONFIG_IA32_EMULATION=y
-CONFIG_IA32_AOUT=m
-CONFIG_COMPAT=y
-CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
-CONFIG_SYSVIPC_COMPAT=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_COMPAT_NET_DEV_OPS=y
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=y
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=m
-# CONFIG_NET_KEY_MIGRATE is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_ASK_IP_FIB_HASH=y
-# CONFIG_IP_FIB_TRIE is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=m
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_NDISC_NODETYPE=y
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETLABEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-# CONFIG_NF_CONNTRACK_EVENTS is not set
-CONFIG_NF_CT_PROTO_DCCP=m
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_RATEEST=m
-CONFIG_NETFILTER_XT_TARGET_TPROXY=m
-CONFIG_NETFILTER_XT_TARGET_TRACE=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_OWNER=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_RATEEST=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_RECENT=m
-CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_SOCKET=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_TIME=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-CONFIG_IP_VS=m
-# CONFIG_IP_VS_IPV6 is not set
-# CONFIG_IP_VS_DEBUG is not set
-CONFIG_IP_VS_TAB_BITS=12
-
-#
-# IPVS transport protocol load balancing support
-#
-CONFIG_IP_VS_PROTO_TCP=y
-CONFIG_IP_VS_PROTO_UDP=y
-CONFIG_IP_VS_PROTO_AH_ESP=y
-CONFIG_IP_VS_PROTO_ESP=y
-CONFIG_IP_VS_PROTO_AH=y
-
-#
-# IPVS scheduler
-#
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-
-#
-# IPVS application helper
-#
-CONFIG_IP_VS_FTP=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_SECURITY=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_IP6_NF_SECURITY=m
-
-#
-# DECnet: Netfilter Configuration
-#
-# CONFIG_DECNET_NF_GRABULATOR is not set
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_IP6=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-CONFIG_BRIDGE_EBT_NFLOG=m
-CONFIG_IP_DCCP=m
-CONFIG_INET_DCCP_DIAG=m
-
-#
-# DCCP CCIDs Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP_CCID2_DEBUG is not set
-# CONFIG_IP_DCCP_CCID3 is not set
-CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
-# CONFIG_SCTP_DBG_OBJCNT is not set
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
-CONFIG_TIPC=m
-# CONFIG_TIPC_ADVANCED is not set
-# CONFIG_TIPC_DEBUG is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
-# CONFIG_NET_DSA is not set
-CONFIG_VLAN_8021Q=m
-CONFIG_VLAN_8021Q_GVRP=y
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-CONFIG_LLC=y
-CONFIG_LLC2=m
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=m
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-CONFIG_WAN_ROUTER=m
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_MULTIQ=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_DRR=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-# CONFIG_CLS_U32_PERF is not set
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_FLOW=m
-# CONFIG_NET_EMATCH is not set
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=y
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_NAT=m
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-CONFIG_NET_ACT_SKBEDIT=m
-# CONFIG_NET_CLS_IND is not set
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_DCB is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_HAMRADIO=y
-
-#
-# Packet Radio protocols
-#
-CONFIG_AX25=m
-# CONFIG_AX25_DAMA_SLAVE is not set
-CONFIG_NETROM=m
-CONFIG_ROSE=m
-
-#
-# AX.25 network device drivers
-#
-CONFIG_MKISS=m
-CONFIG_6PACK=m
-CONFIG_BPQETHER=m
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_BAYCOM_PAR=m
-CONFIG_YAM=m
-CONFIG_CAN=m
-CONFIG_CAN_RAW=m
-CONFIG_CAN_BCM=m
-
-#
-# CAN Device Drivers
-#
-CONFIG_CAN_VCAN=m
-# CONFIG_CAN_DEBUG_DEVICES is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-CONFIG_DONGLE=y
-CONFIG_ESI_DONGLE=m
-CONFIG_ACTISYS_DONGLE=m
-CONFIG_TEKRAM_DONGLE=m
-CONFIG_TOIM3232_DONGLE=m
-CONFIG_LITELINK_DONGLE=m
-CONFIG_MA600_DONGLE=m
-CONFIG_GIRBIL_DONGLE=m
-CONFIG_MCP2120_DONGLE=m
-CONFIG_OLD_BELKIN_DONGLE=m
-CONFIG_ACT200L_DONGLE=m
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_NSC_FIR=m
-CONFIG_WINBOND_FIR=m
-CONFIG_SMC_IRCC_FIR=m
-CONFIG_ALI_FIR=m
-CONFIG_VLSI_FIR=m
-CONFIG_VIA_FIR=m
-CONFIG_MCS_FIR=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_CMTP=m
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIBTUSB=m
-CONFIG_BT_HCIBTSDIO=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
-CONFIG_PHONET=m
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-CONFIG_CFG80211=m
-# CONFIG_CFG80211_REG_DEBUG is not set
-CONFIG_NL80211=y
-CONFIG_WIRELESS_OLD_REGULATORY=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-CONFIG_LIB80211=m
-CONFIG_LIB80211_CRYPT_WEP=m
-CONFIG_LIB80211_CRYPT_CCMP=m
-CONFIG_LIB80211_CRYPT_TKIP=m
-# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=m
-
-#
-# Rate control algorithm selection
-#
-CONFIG_MAC80211_RC_MINSTREL=y
-# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-CONFIG_MAC80211_RC_DEFAULT="minstrel"
-CONFIG_MAC80211_MESH=y
-CONFIG_MAC80211_LEDS=y
-# CONFIG_MAC80211_DEBUGFS is not set
-# CONFIG_MAC80211_DEBUG_MENU is not set
-CONFIG_WIMAX=m
-CONFIG_WIMAX_DEBUG_LEVEL=8
-CONFIG_RFKILL=m
-CONFIG_RFKILL_INPUT=m
-CONFIG_RFKILL_LEDS=y
-CONFIG_NET_9P=m
-CONFIG_NET_9P_VIRTIO=m
-CONFIG_NET_9P_RDMA=m
-# CONFIG_NET_9P_DEBUG is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_FIRMWARE_IN_KERNEL is not set
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=m
-CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=m
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_TESTS=m
-CONFIG_MTD_REDBOOT_PARTS=m
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-CONFIG_MTD_AR7_PARTS=m
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_HAVE_MTD_OTP=y
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-CONFIG_RFD_FTL=m
-CONFIG_SSFDC=m
-CONFIG_MTD_OOPS=m
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-CONFIG_MTD_MAP_BANK_WIDTH_8=y
-CONFIG_MTD_MAP_BANK_WIDTH_16=y
-CONFIG_MTD_MAP_BANK_WIDTH_32=y
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-CONFIG_MTD_CFI_I4=y
-CONFIG_MTD_CFI_I8=y
-CONFIG_MTD_OTP=y
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-CONFIG_MTD_CFI_STAA=m
-CONFIG_MTD_CFI_UTIL=m
-CONFIG_MTD_RAM=m
-CONFIG_MTD_ROM=m
-CONFIG_MTD_ABSENT=m
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-CONFIG_MTD_SC520CDP=m
-CONFIG_MTD_NETSC520=m
-CONFIG_MTD_TS5500=m
-CONFIG_MTD_SBC_GXX=m
-CONFIG_MTD_AMD76XROM=m
-CONFIG_MTD_ICHXROM=m
-CONFIG_MTD_ESB2ROM=m
-CONFIG_MTD_CK804XROM=m
-CONFIG_MTD_SCB2_FLASH=m
-CONFIG_MTD_NETtel=m
-CONFIG_MTD_DILNETPC=m
-CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000
-CONFIG_MTD_L440GX=m
-CONFIG_MTD_PCI=m
-CONFIG_MTD_INTEL_VR_NOR=m
-CONFIG_MTD_PLATRAM=m
-
-#
-# Self-contained MTD device drivers
-#
-CONFIG_MTD_PMC551=m
-CONFIG_MTD_PMC551_BUGFIX=y
-# CONFIG_MTD_PMC551_DEBUG is not set
-CONFIG_MTD_SLRAM=m
-CONFIG_MTD_PHRAM=m
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLOCK2MTD=m
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-CONFIG_MTD_DOC2001PLUS=m
-CONFIG_MTD_DOCPROBE=m
-CONFIG_MTD_DOCECC=m
-CONFIG_MTD_DOCPROBE_ADVANCED=y
-CONFIG_MTD_DOCPROBE_ADDRESS=0x0000
-CONFIG_MTD_DOCPROBE_HIGH=y
-CONFIG_MTD_DOCPROBE_55AA=y
-CONFIG_MTD_NAND=m
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-CONFIG_MTD_NAND_ECC_SMC=y
-CONFIG_MTD_NAND_MUSEUM_IDS=y
-CONFIG_MTD_NAND_IDS=m
-CONFIG_MTD_NAND_DISKONCHIP=m
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y
-CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y
-CONFIG_MTD_NAND_CAFE=m
-CONFIG_MTD_NAND_NANDSIM=m
-CONFIG_MTD_NAND_PLATFORM=m
-CONFIG_MTD_ALAUDA=m
-CONFIG_MTD_ONENAND=m
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-CONFIG_MTD_ONENAND_OTP=y
-CONFIG_MTD_ONENAND_2X_PROGRAM=y
-CONFIG_MTD_ONENAND_SIM=m
-
-#
-# LPDDR flash memory drivers
-#
-CONFIG_MTD_LPDDR=m
-CONFIG_MTD_QINFO_PROBE=m
-
-#
-# UBI - Unsorted block images
-#
-CONFIG_MTD_UBI=m
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-CONFIG_MTD_UBI_GLUEBI=y
-
-#
-# UBI debugging options
-#
-# CONFIG_MTD_UBI_DEBUG is not set
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-CONFIG_PARPORT_SERIAL=m
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-CONFIG_PARPORT_PC_PCMCIA=m
-# CONFIG_PARPORT_GSC is not set
-CONFIG_PARPORT_AX88796=m
-CONFIG_PARPORT_1284=y
-CONFIG_PARPORT_NOT_PC=y
-CONFIG_PNP=y
-CONFIG_PNP_DEBUG_MESSAGES=y
-
-#
-# Protocols
-#
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-CONFIG_BLK_DEV_FD=y
-CONFIG_PARIDE=m
-
-#
-# Parallel IDE high-level drivers
-#
-CONFIG_PARIDE_PD=m
-CONFIG_PARIDE_PCD=m
-CONFIG_PARIDE_PF=m
-CONFIG_PARIDE_PT=m
-CONFIG_PARIDE_PG=m
-
-#
-# Parallel IDE protocol modules
-#
-CONFIG_PARIDE_ATEN=m
-CONFIG_PARIDE_BPCK=m
-CONFIG_PARIDE_COMM=m
-CONFIG_PARIDE_DSTR=m
-CONFIG_PARIDE_FIT2=m
-CONFIG_PARIDE_FIT3=m
-CONFIG_PARIDE_EPAT=m
-CONFIG_PARIDE_EPATC8=y
-CONFIG_PARIDE_EPIA=m
-CONFIG_PARIDE_FRIQ=m
-CONFIG_PARIDE_FRPW=m
-CONFIG_PARIDE_KBIC=m
-CONFIG_PARIDE_KTTI=m
-CONFIG_PARIDE_ON20=m
-CONFIG_PARIDE_ON26=m
-CONFIG_BLK_CPQ_DA=m
-CONFIG_BLK_CPQ_CISS_DA=m
-CONFIG_CISS_SCSI_TAPE=y
-CONFIG_BLK_DEV_DAC960=m
-CONFIG_BLK_DEV_UMEM=m
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
-CONFIG_VIRTIO_BLK=m
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_MISC_DEVICES=y
-CONFIG_IBM_ASM=m
-CONFIG_PHANTOM=m
-CONFIG_SGI_IOC4=m
-CONFIG_TIFM_CORE=m
-CONFIG_TIFM_7XX1=m
-CONFIG_ICS932S401=m
-CONFIG_ENCLOSURE_SERVICES=m
-CONFIG_SGI_XP=m
-CONFIG_HP_ILO=m
-CONFIG_SGI_GRU=m
-# CONFIG_SGI_GRU_DEBUG is not set
-CONFIG_DELL_LAPTOP=m
-# CONFIG_C2PORT is not set
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=m
-CONFIG_EEPROM_LEGACY=m
-CONFIG_EEPROM_93CX6=m
-CONFIG_HAVE_IDE=y
-CONFIG_IDE=y
-
-#
-# Please see Documentation/ide/ide.txt for help/info on IDE drives
-#
-CONFIG_IDE_TIMINGS=y
-CONFIG_IDE_ATAPI=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=y
-CONFIG_IDE_GD_ATA=y
-CONFIG_IDE_GD_ATAPI=y
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_DELKIN=m
-CONFIG_BLK_DEV_IDECD=y
-CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEACPI=y
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=m
-CONFIG_BLK_DEV_PLATFORM=m
-CONFIG_BLK_DEV_CMD640=y
-CONFIG_BLK_DEV_CMD640_ENHANCED=y
-CONFIG_BLK_DEV_IDEPNP=y
-CONFIG_BLK_DEV_IDEDMA_SFF=y
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_PCIBUS_ORDER=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-CONFIG_BLK_DEV_AEC62XX=y
-CONFIG_BLK_DEV_ALI15X3=y
-CONFIG_BLK_DEV_AMD74XX=y
-CONFIG_BLK_DEV_ATIIXP=y
-CONFIG_BLK_DEV_CMD64X=y
-CONFIG_BLK_DEV_TRIFLEX=y
-CONFIG_BLK_DEV_CS5520=y
-CONFIG_BLK_DEV_CS5530=y
-CONFIG_BLK_DEV_HPT366=y
-CONFIG_BLK_DEV_JMICRON=y
-CONFIG_BLK_DEV_SC1200=y
-CONFIG_BLK_DEV_PIIX=y
-CONFIG_BLK_DEV_IT8172=y
-CONFIG_BLK_DEV_IT8213=y
-CONFIG_BLK_DEV_IT821X=y
-# CONFIG_BLK_DEV_NS87415 is not set
-CONFIG_BLK_DEV_PDC202XX_OLD=y
-CONFIG_BLK_DEV_PDC202XX_NEW=y
-CONFIG_BLK_DEV_SVWKS=y
-CONFIG_BLK_DEV_SIIMAGE=y
-CONFIG_BLK_DEV_SIS5513=y
-CONFIG_BLK_DEV_SLC90E66=y
-CONFIG_BLK_DEV_TRM290=y
-CONFIG_BLK_DEV_VIA82CXXX=y
-CONFIG_BLK_DEV_TC86C001=y
-CONFIG_BLK_DEV_IDEDMA=y
-
-#
-# SCSI device support
-#
-CONFIG_RAID_ATTRS=y
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=y
-CONFIG_SCSI_NETLINK=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_ENCLOSURE=m
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_FC_TGT_ATTRS=y
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_SCSI_SAS_LIBSAS=m
-CONFIG_SCSI_SAS_ATA=y
-CONFIG_SCSI_SAS_HOST_SMP=y
-# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
-CONFIG_SCSI_SRP_ATTRS=m
-CONFIG_SCSI_SRP_TGT_ATTRS=y
-CONFIG_SCSI_LOWLEVEL=y
-CONFIG_ISCSI_TCP=m
-CONFIG_SCSI_CXGB3_ISCSI=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
-CONFIG_AIC7XXX_DEBUG_MASK=0
-# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
-CONFIG_SCSI_AIC7XXX_OLD=m
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=4
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-# CONFIG_AIC79XX_DEBUG_ENABLE is not set
-CONFIG_AIC79XX_DEBUG_MASK=0
-# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
-CONFIG_SCSI_AIC94XX=m
-# CONFIG_AIC94XX_DEBUG is not set
-CONFIG_SCSI_DPT_I2O=m
-CONFIG_SCSI_ADVANSYS=m
-CONFIG_SCSI_ARCMSR=m
-# CONFIG_SCSI_ARCMSR_AER is not set
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=m
-CONFIG_MEGARAID_MAILBOX=m
-CONFIG_MEGARAID_LEGACY=m
-CONFIG_MEGARAID_SAS=m
-CONFIG_SCSI_HPTIOP=m
-CONFIG_SCSI_BUSLOGIC=m
-CONFIG_LIBFC=m
-CONFIG_FCOE=m
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_EATA=m
-# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
-# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
-CONFIG_SCSI_EATA_MAX_TAGS=16
-CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_GDTH=m
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_INIA100=m
-CONFIG_SCSI_PPA=m
-CONFIG_SCSI_IMM=m
-# CONFIG_SCSI_IZIP_EPP16 is not set
-# CONFIG_SCSI_IZIP_SLOW_CTR is not set
-CONFIG_SCSI_MVSAS=m
-CONFIG_SCSI_STEX=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-CONFIG_SCSI_QLOGIC_1280=m
-CONFIG_SCSI_QLA_FC=m
-CONFIG_SCSI_QLA_ISCSI=m
-CONFIG_SCSI_LPFC=m
-# CONFIG_SCSI_LPFC_DEBUG_FS is not set
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_DEBUG=m
-CONFIG_SCSI_SRP=m
-CONFIG_SCSI_LOWLEVEL_PCMCIA=y
-CONFIG_PCMCIA_FDOMAIN=m
-CONFIG_PCMCIA_QLOGIC=m
-CONFIG_PCMCIA_SYM53C500=m
-CONFIG_SCSI_DH=m
-CONFIG_SCSI_DH_RDAC=m
-CONFIG_SCSI_DH_HP_SW=m
-CONFIG_SCSI_DH_EMC=m
-CONFIG_SCSI_DH_ALUA=m
-CONFIG_ATA=y
-# CONFIG_ATA_NONSTANDARD is not set
-CONFIG_ATA_ACPI=y
-CONFIG_SATA_PMP=y
-CONFIG_SATA_AHCI=y
-CONFIG_SATA_SIL24=y
-CONFIG_ATA_SFF=y
-CONFIG_SATA_SVW=y
-CONFIG_ATA_PIIX=y
-CONFIG_SATA_MV=y
-CONFIG_SATA_NV=y
-CONFIG_PDC_ADMA=y
-CONFIG_SATA_QSTOR=y
-CONFIG_SATA_PROMISE=y
-CONFIG_SATA_SX4=y
-CONFIG_SATA_SIL=y
-CONFIG_SATA_SIS=y
-CONFIG_SATA_ULI=y
-CONFIG_SATA_VIA=y
-CONFIG_SATA_VITESSE=y
-CONFIG_SATA_INIC162X=y
-CONFIG_PATA_ACPI=y
-CONFIG_PATA_ALI=m
-CONFIG_PATA_AMD=m
-CONFIG_PATA_ARTOP=m
-CONFIG_PATA_ATIIXP=m
-CONFIG_PATA_CMD640_PCI=m
-CONFIG_PATA_CMD64X=m
-CONFIG_PATA_CS5520=m
-CONFIG_PATA_CS5530=m
-CONFIG_PATA_CYPRESS=m
-CONFIG_PATA_EFAR=m
-CONFIG_ATA_GENERIC=y
-CONFIG_PATA_HPT366=m
-CONFIG_PATA_HPT37X=m
-CONFIG_PATA_HPT3X2N=m
-CONFIG_PATA_HPT3X3=m
-CONFIG_PATA_HPT3X3_DMA=y
-CONFIG_PATA_IT821X=m
-CONFIG_PATA_IT8213=m
-CONFIG_PATA_JMICRON=m
-CONFIG_PATA_TRIFLEX=m
-CONFIG_PATA_MARVELL=m
-CONFIG_PATA_MPIIX=m
-CONFIG_PATA_OLDPIIX=m
-CONFIG_PATA_NETCELL=m
-CONFIG_PATA_NINJA32=m
-CONFIG_PATA_NS87410=m
-CONFIG_PATA_NS87415=m
-CONFIG_PATA_OPTI=m
-CONFIG_PATA_OPTIDMA=m
-CONFIG_PATA_PCMCIA=m
-CONFIG_PATA_PDC_OLD=m
-CONFIG_PATA_RADISYS=m
-CONFIG_PATA_RZ1000=m
-CONFIG_PATA_SC1200=m
-CONFIG_PATA_SERVERWORKS=m
-CONFIG_PATA_PDC2027X=m
-CONFIG_PATA_SIL680=m
-CONFIG_PATA_SIS=y
-CONFIG_PATA_VIA=m
-CONFIG_PATA_WINBOND=m
-CONFIG_PATA_SCH=m
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=y
-CONFIG_MD_AUTODETECT=y
-CONFIG_MD_LINEAR=y
-CONFIG_MD_RAID0=y
-CONFIG_MD_RAID1=y
-CONFIG_MD_RAID10=y
-CONFIG_MD_RAID456=y
-CONFIG_MD_RAID5_RESHAPE=y
-CONFIG_MD_MULTIPATH=y
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=y
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=y
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=y
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-CONFIG_FUSION=y
-CONFIG_FUSION_SPI=m
-CONFIG_FUSION_FC=m
-CONFIG_FUSION_SAS=m
-CONFIG_FUSION_MAX_SGE=128
-CONFIG_FUSION_CTL=m
-CONFIG_FUSION_LAN=m
-# CONFIG_FUSION_LOGGING is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# Enable only one of the two stacks, unless you know what you are doing
-#
-# CONFIG_FIREWIRE is not set
-CONFIG_IEEE1394=m
-CONFIG_IEEE1394_OHCI1394=m
-CONFIG_IEEE1394_PCILYNX=m
-CONFIG_IEEE1394_SBP2=m
-# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
-CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
-CONFIG_IEEE1394_ETH1394=m
-CONFIG_IEEE1394_RAWIO=m
-CONFIG_IEEE1394_VIDEO1394=m
-CONFIG_IEEE1394_DV1394=m
-# CONFIG_IEEE1394_VERBOSEDEBUG is not set
-CONFIG_I2O=m
-CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_EXT_ADAPTEC_DMA64=y
-CONFIG_I2O_CONFIG=m
-# CONFIG_I2O_CONFIG_OLD_IOCTL is not set
-CONFIG_I2O_BUS=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
-CONFIG_MACINTOSH_DRIVERS=y
-CONFIG_MAC_EMUMOUSEBTN=y
-CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_MACVLAN=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_VETH=m
-CONFIG_NET_SB1000=m
-CONFIG_ARCNET=m
-CONFIG_ARCNET_1201=m
-CONFIG_ARCNET_1051=m
-CONFIG_ARCNET_RAW=m
-CONFIG_ARCNET_CAP=m
-CONFIG_ARCNET_COM90xx=m
-CONFIG_ARCNET_COM90xxIO=m
-CONFIG_ARCNET_RIM_I=m
-CONFIG_ARCNET_COM20020=m
-CONFIG_ARCNET_COM20020_PCI=m
-CONFIG_PHYLIB=m
-
-#
-# MII PHY device drivers
-#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
-CONFIG_LSI_ET1011C_PHY=m
-CONFIG_MDIO_BITBANG=m
-CONFIG_MDIO_GPIO=m
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-CONFIG_HAPPYMEAL=m
-CONFIG_SUNGEM=m
-CONFIG_CASSINI=m
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_DNET=m
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-CONFIG_TULIP_MMIO=y
-# CONFIG_TULIP_NAPI is not set
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_PCMCIA_XIRCOM=m
-CONFIG_HP100=m
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
-CONFIG_FORCEDETH_NAPI=y
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_R6040=m
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SMSC9420=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_SC92031=m
-CONFIG_NET_POCKET=y
-CONFIG_ATP=m
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_ATL2=m
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000E=m
-CONFIG_IP1000=m
-CONFIG_IGB=m
-# CONFIG_IGB_LRO is not set
-CONFIG_IGB_DCA=y
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_R8169_VLAN=y
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-# CONFIG_SKGE_DEBUG is not set
-CONFIG_SKY2=m
-# CONFIG_SKY2_DEBUG is not set
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_ATL1E=m
-CONFIG_ATL1C=m
-CONFIG_JME=m
-CONFIG_NETDEV_10000=y
-CONFIG_CHELSIO_T1=m
-CONFIG_CHELSIO_T1_1G=y
-CONFIG_CHELSIO_T3_DEPENDS=y
-CONFIG_CHELSIO_T3=m
-CONFIG_ENIC=m
-CONFIG_IXGBE=m
-CONFIG_IXGBE_DCA=y
-CONFIG_IXGB=m
-CONFIG_S2IO=m
-CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
-CONFIG_NETXEN_NIC=m
-CONFIG_NIU=m
-CONFIG_MLX4_EN=m
-CONFIG_MLX4_CORE=m
-CONFIG_MLX4_DEBUG=y
-CONFIG_TEHUTI=m
-CONFIG_BNX2X=m
-CONFIG_QLGE=m
-CONFIG_SFC=m
-CONFIG_SFC_MTD=y
-CONFIG_BE2NET=m
-CONFIG_TR=y
-CONFIG_IBMOL=m
-CONFIG_3C359=m
-CONFIG_TMS380TR=m
-CONFIG_TMSPCI=m
-CONFIG_ABYSS=m
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_CS=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM=m
-CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_AIRO=m
-CONFIG_HERMES=m
-CONFIG_HERMES_CACHE_FW_ON_INIT=y
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_NORTEL_HERMES=m
-CONFIG_PCI_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-CONFIG_PRISM54=m
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8180=m
-CONFIG_RTL8187=m
-CONFIG_ADM8211=m
-# CONFIG_MAC80211_HWSIM is not set
-CONFIG_P54_COMMON=m
-CONFIG_P54_USB=m
-CONFIG_P54_PCI=m
-CONFIG_ATH5K=m
-# CONFIG_ATH5K_DEBUG is not set
-CONFIG_ATH9K=m
-# CONFIG_ATH9K_DEBUG is not set
-CONFIG_IPW2100=m
-CONFIG_IPW2100_MONITOR=y
-# CONFIG_IPW2100_DEBUG is not set
-CONFIG_IPW2200=m
-CONFIG_IPW2200_MONITOR=y
-CONFIG_IPW2200_RADIOTAP=y
-CONFIG_IPW2200_PROMISCUOUS=y
-CONFIG_IPW2200_QOS=y
-# CONFIG_IPW2200_DEBUG is not set
-CONFIG_LIBIPW=m
-# CONFIG_LIBIPW_DEBUG is not set
-CONFIG_IWLWIFI=m
-CONFIG_IWLCORE=m
-CONFIG_IWLWIFI_LEDS=y
-# CONFIG_IWLWIFI_RFKILL is not set
-# CONFIG_IWLWIFI_DEBUG is not set
-CONFIG_IWLAGN=m
-CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y
-CONFIG_IWLAGN_LEDS=y
-CONFIG_IWL4965=y
-CONFIG_IWL5000=y
-CONFIG_IWL3945=m
-# CONFIG_IWL3945_RFKILL is not set
-CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
-CONFIG_IWL3945_LEDS=y
-# CONFIG_IWL3945_DEBUG is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-CONFIG_HOSTAP_CS=m
-CONFIG_B43=m
-CONFIG_B43_PCI_AUTOSELECT=y
-CONFIG_B43_PCICORE_AUTOSELECT=y
-CONFIG_B43_PCMCIA=y
-CONFIG_B43_PIO=y
-CONFIG_B43_LEDS=y
-CONFIG_B43_RFKILL=y
-# CONFIG_B43_DEBUG is not set
-CONFIG_B43LEGACY=m
-CONFIG_B43LEGACY_PCI_AUTOSELECT=y
-CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
-CONFIG_B43LEGACY_LEDS=y
-CONFIG_B43LEGACY_RFKILL=y
-# CONFIG_B43LEGACY_DEBUG is not set
-CONFIG_B43LEGACY_DMA=y
-CONFIG_B43LEGACY_PIO=y
-CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
-# CONFIG_B43LEGACY_DMA_MODE is not set
-# CONFIG_B43LEGACY_PIO_MODE is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_RT2X00=m
-CONFIG_RT2400PCI=m
-CONFIG_RT2500PCI=m
-CONFIG_RT61PCI=m
-CONFIG_RT2500USB=m
-CONFIG_RT73USB=m
-CONFIG_RT2X00_LIB_PCI=m
-CONFIG_RT2X00_LIB_USB=m
-CONFIG_RT2X00_LIB=m
-CONFIG_RT2X00_LIB_FIRMWARE=y
-CONFIG_RT2X00_LIB_CRYPTO=y
-CONFIG_RT2X00_LIB_RFKILL=y
-CONFIG_RT2X00_LIB_LEDS=y
-# CONFIG_RT2X00_DEBUG is not set
-
-#
-# WiMAX Wireless Broadband devices
-#
-CONFIG_WIMAX_I2400M=m
-CONFIG_WIMAX_I2400M_USB=m
-CONFIG_WIMAX_I2400M_SDIO=m
-CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-# CONFIG_USB_EPSON2888 is not set
-# CONFIG_USB_KC2190 is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_HSO=m
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_ARCNET_COM20020_CS=m
-CONFIG_PCMCIA_IBMTR=m
-CONFIG_WAN=y
-CONFIG_LANMEDIA=m
-CONFIG_HDLC=m
-CONFIG_HDLC_RAW=m
-CONFIG_HDLC_RAW_ETH=m
-CONFIG_HDLC_CISCO=m
-CONFIG_HDLC_FR=m
-CONFIG_HDLC_PPP=m
-
-#
-# X.25/LAPB support is disabled
-#
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-# CONFIG_PC300TOO is not set
-CONFIG_FARSYNC=m
-CONFIG_DSCC4=m
-# CONFIG_DSCC4_PCISYNC is not set
-# CONFIG_DSCC4_PCI_RST is not set
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
-CONFIG_WAN_ROUTER_DRIVERS=m
-CONFIG_CYCLADES_SYNC=m
-CONFIG_CYCLOMX_X25=y
-CONFIG_SBNI=m
-# CONFIG_SBNI_MULTILINE is not set
-CONFIG_ATM_DRIVERS=y
-CONFIG_ATM_DUMMY=m
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-# CONFIG_ATM_ENI_DEBUG is not set
-# CONFIG_ATM_ENI_TUNE_BURST is not set
-CONFIG_ATM_FIRESTREAM=m
-CONFIG_ATM_ZATM=m
-# CONFIG_ATM_ZATM_DEBUG is not set
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_IDT77252_USE_SUNI=y
-CONFIG_ATM_AMBASSADOR=m
-# CONFIG_ATM_AMBASSADOR_DEBUG is not set
-CONFIG_ATM_HORIZON=m
-# CONFIG_ATM_HORIZON_DEBUG is not set
-CONFIG_ATM_IA=m
-# CONFIG_ATM_IA_DEBUG is not set
-CONFIG_ATM_FORE200E=m
-# CONFIG_ATM_FORE200E_USE_TASKLET is not set
-CONFIG_ATM_FORE200E_TX_RETRY=16
-CONFIG_ATM_FORE200E_DEBUG=0
-CONFIG_ATM_HE=m
-# CONFIG_ATM_HE_USE_SUNI is not set
-CONFIG_ATM_SOLOS=m
-CONFIG_FDDI=y
-CONFIG_DEFXX=m
-# CONFIG_DEFXX_MMIO is not set
-CONFIG_SKFP=m
-CONFIG_HIPPI=y
-CONFIG_ROADRUNNER=m
-# CONFIG_ROADRUNNER_LARGE_RINGS is not set
-CONFIG_PLIP=m
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-CONFIG_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLHC=m
-CONFIG_SLIP_SMART=y
-# CONFIG_SLIP_MODE_SLIP6 is not set
-CONFIG_NET_FC=y
-CONFIG_NETCONSOLE=m
-CONFIG_NETCONSOLE_DYNAMIC=y
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-CONFIG_VIRTIO_NET=m
-CONFIG_ISDN=y
-CONFIG_MISDN=m
-CONFIG_MISDN_DSP=m
-CONFIG_MISDN_L1OIP=m
-
-#
-# mISDN hardware drivers
-#
-CONFIG_MISDN_HFCPCI=m
-CONFIG_MISDN_HFCMULTI=m
-CONFIG_MISDN_HFCUSB=m
-CONFIG_ISDN_I4L=m
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-
-#
-# ISDN feature submodules
-#
-CONFIG_ISDN_DIVERSION=m
-
-#
-# ISDN4Linux hardware drivers
-#
-
-#
-# Passive cards
-#
-CONFIG_ISDN_DRV_HISAX=m
-
-#
-# D-channel protocol features
-#
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-CONFIG_HISAX_NO_SENDCOMPLETE=y
-CONFIG_HISAX_NO_LLC=y
-CONFIG_HISAX_NO_KEYPAD=y
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-
-#
-# HiSax supported cards
-#
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_TELESPCI=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NETJET=y
-CONFIG_HISAX_NETJET_U=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_BKM_A4T=y
-CONFIG_HISAX_SCT_QUADRO=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_HFC_PCI=y
-CONFIG_HISAX_W6692=y
-CONFIG_HISAX_HFC_SX=y
-CONFIG_HISAX_ENTERNOW_PCI=y
-# CONFIG_HISAX_DEBUG is not set
-
-#
-# HiSax PCMCIA card service modules
-#
-CONFIG_HISAX_SEDLBAUER_CS=m
-CONFIG_HISAX_ELSA_CS=m
-CONFIG_HISAX_AVM_A1_CS=m
-CONFIG_HISAX_TELES_CS=m
-
-#
-# HiSax sub driver modules
-#
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-CONFIG_HISAX_FRITZ_PCIPNP=m
-CONFIG_HISAX_HDLC=y
-
-#
-# Active cards
-#
-CONFIG_HYSDN=m
-CONFIG_HYSDN_CAPI=y
-CONFIG_ISDN_DRV_GIGASET=m
-CONFIG_GIGASET_BASE=m
-CONFIG_GIGASET_M105=m
-# CONFIG_GIGASET_M101 is not set
-# CONFIG_GIGASET_DEBUG is not set
-# CONFIG_GIGASET_UNDOCREQ is not set
-CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_CAPI_TRACE=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
-CONFIG_ISDN_CAPI_CAPIFS=m
-CONFIG_ISDN_CAPI_CAPIDRV=m
-
-#
-# CAPI hardware drivers
-#
-CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1PCI=m
-CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
-CONFIG_ISDN_DRV_AVMB1_T1PCI=m
-CONFIG_ISDN_DRV_AVMB1_C4=m
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DIVAS=m
-CONFIG_ISDN_DIVAS_BRIPCI=y
-CONFIG_ISDN_DIVAS_PRIPCI=y
-CONFIG_ISDN_DIVAS_DIVACAPI=m
-CONFIG_ISDN_DIVAS_USERIDI=m
-CONFIG_ISDN_DIVAS_MAINT=m
-CONFIG_PHONE=m
-CONFIG_PHONE_IXJ=m
-CONFIG_PHONE_IXJ_PCMCIA=m
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=y
-CONFIG_INPUT_POLLDEV=m
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_GPIO=m
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=m
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_ELANTECH is not set
-CONFIG_MOUSE_PS2_TOUCHKIT=y
-CONFIG_MOUSE_SERIAL=m
-CONFIG_MOUSE_APPLETOUCH=m
-CONFIG_MOUSE_BCM5974=m
-CONFIG_MOUSE_VSXXXAA=m
-CONFIG_MOUSE_GPIO=m
-CONFIG_INPUT_JOYSTICK=y
-CONFIG_JOYSTICK_ANALOG=m
-CONFIG_JOYSTICK_A3D=m
-CONFIG_JOYSTICK_ADI=m
-CONFIG_JOYSTICK_COBRA=m
-CONFIG_JOYSTICK_GF2K=m
-CONFIG_JOYSTICK_GRIP=m
-CONFIG_JOYSTICK_GRIP_MP=m
-CONFIG_JOYSTICK_GUILLEMOT=m
-CONFIG_JOYSTICK_INTERACT=m
-CONFIG_JOYSTICK_SIDEWINDER=m
-CONFIG_JOYSTICK_TMDC=m
-CONFIG_JOYSTICK_IFORCE=m
-CONFIG_JOYSTICK_IFORCE_USB=y
-CONFIG_JOYSTICK_IFORCE_232=y
-CONFIG_JOYSTICK_WARRIOR=m
-CONFIG_JOYSTICK_MAGELLAN=m
-CONFIG_JOYSTICK_SPACEORB=m
-CONFIG_JOYSTICK_SPACEBALL=m
-CONFIG_JOYSTICK_STINGER=m
-CONFIG_JOYSTICK_TWIDJOY=m
-CONFIG_JOYSTICK_ZHENHUA=m
-CONFIG_JOYSTICK_DB9=m
-CONFIG_JOYSTICK_GAMECON=m
-CONFIG_JOYSTICK_TURBOGRAFX=m
-CONFIG_JOYSTICK_JOYDUMP=m
-CONFIG_JOYSTICK_XPAD=m
-CONFIG_JOYSTICK_XPAD_FF=y
-CONFIG_JOYSTICK_XPAD_LEDS=y
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_FUJITSU=m
-CONFIG_TOUCHSCREEN_GUNZE=m
-CONFIG_TOUCHSCREEN_ELO=m
-CONFIG_TOUCHSCREEN_WACOM_W8001=m
-CONFIG_TOUCHSCREEN_MTOUCH=m
-CONFIG_TOUCHSCREEN_INEXIO=m
-CONFIG_TOUCHSCREEN_MK712=m
-CONFIG_TOUCHSCREEN_PENMOUNT=m
-CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
-CONFIG_TOUCHSCREEN_TOUCHWIN=m
-CONFIG_TOUCHSCREEN_UCB1400=m
-CONFIG_TOUCHSCREEN_WM97XX=m
-CONFIG_TOUCHSCREEN_WM9705=y
-CONFIG_TOUCHSCREEN_WM9712=y
-CONFIG_TOUCHSCREEN_WM9713=y
-CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
-CONFIG_TOUCHSCREEN_USB_EGALAX=y
-CONFIG_TOUCHSCREEN_USB_PANJIT=y
-CONFIG_TOUCHSCREEN_USB_3M=y
-CONFIG_TOUCHSCREEN_USB_ITM=y
-CONFIG_TOUCHSCREEN_USB_ETURBO=y
-CONFIG_TOUCHSCREEN_USB_GUNZE=y
-CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
-CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
-CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
-CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
-CONFIG_TOUCHSCREEN_USB_GOTOP=y
-CONFIG_TOUCHSCREEN_TOUCHIT213=m
-CONFIG_TOUCHSCREEN_TSC2007=m
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_PCSPKR=m
-CONFIG_INPUT_APANEL=m
-CONFIG_INPUT_ATLAS_BTNS=m
-CONFIG_INPUT_ATI_REMOTE=m
-CONFIG_INPUT_ATI_REMOTE2=m
-CONFIG_INPUT_KEYSPAN_REMOTE=m
-CONFIG_INPUT_POWERMATE=m
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_CM109=m
-CONFIG_INPUT_UINPUT=m
-CONFIG_INPUT_PCF50633_PMU=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=m
-CONFIG_SERIO_CT82C710=m
-CONFIG_SERIO_PARKBD=m
-CONFIG_SERIO_PCIPS2=m
-CONFIG_SERIO_LIBPS2=y
-CONFIG_SERIO_RAW=m
-CONFIG_GAMEPORT=m
-CONFIG_GAMEPORT_NS558=m
-CONFIG_GAMEPORT_L4=m
-CONFIG_GAMEPORT_EMU10K1=m
-CONFIG_GAMEPORT_FM801=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_DEVKMEM=y
-CONFIG_SERIAL_NONSTANDARD=y
-CONFIG_COMPUTONE=m
-CONFIG_ROCKETPORT=m
-CONFIG_CYCLADES=m
-# CONFIG_CYZ_INTR is not set
-CONFIG_DIGIEPCA=m
-CONFIG_MOXA_INTELLIO=m
-CONFIG_MOXA_SMARTIO=m
-CONFIG_ISI=m
-CONFIG_SYNCLINK=m
-CONFIG_SYNCLINKMP=m
-CONFIG_SYNCLINK_GT=m
-CONFIG_N_HDLC=m
-CONFIG_RISCOM8=m
-CONFIG_SPECIALIX=m
-CONFIG_SX=m
-CONFIG_RIO=m
-# CONFIG_RIO_OLDPCI is not set
-CONFIG_STALDRV=y
-CONFIG_STALLION=m
-CONFIG_ISTALLION=m
-CONFIG_NOZOMI=m
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_SERIAL_JSM=m
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-CONFIG_PRINTER=m
-CONFIG_LP_CONSOLE=y
-CONFIG_PPDEV=m
-CONFIG_HVC_DRIVER=y
-CONFIG_VIRTIO_CONSOLE=m
-CONFIG_IPMI_HANDLER=m
-# CONFIG_IPMI_PANIC_EVENT is not set
-CONFIG_IPMI_DEVICE_INTERFACE=m
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_INTEL=m
-CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_NVRAM=m
-CONFIG_R3964=m
-CONFIG_APPLICOM=m
-
-#
-# PCMCIA character devices
-#
-CONFIG_SYNCLINK_CS=m
-CONFIG_CARDMAN_4000=m
-CONFIG_CARDMAN_4040=m
-CONFIG_IPWIRELESS=m
-CONFIG_MWAVE=m
-CONFIG_PC8736x_GPIO=m
-CONFIG_NSC_GPIO=m
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HPET is not set
-CONFIG_HANGCHECK_TIMER=m
-CONFIG_TCG_TPM=m
-# CONFIG_TCG_TIS is not set
-# CONFIG_TCG_NSC is not set
-CONFIG_TCG_ATMEL=m
-# CONFIG_TCG_INFINEON is not set
-CONFIG_TELCLOCK=m
-CONFIG_DEVPORT=y
-CONFIG_I2C=m
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_ALGOBIT=m
-CONFIG_I2C_ALGOPCA=m
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# PC SMBus host controller drivers
-#
-CONFIG_I2C_ALI1535=m
-CONFIG_I2C_ALI1563=m
-CONFIG_I2C_ALI15X3=m
-CONFIG_I2C_AMD756=m
-CONFIG_I2C_AMD756_S4882=m
-CONFIG_I2C_AMD8111=m
-CONFIG_I2C_I801=m
-CONFIG_I2C_ISCH=m
-CONFIG_I2C_PIIX4=m
-CONFIG_I2C_NFORCE2=m
-CONFIG_I2C_NFORCE2_S4985=m
-CONFIG_I2C_SIS5595=m
-CONFIG_I2C_SIS630=m
-CONFIG_I2C_SIS96X=m
-CONFIG_I2C_VIA=m
-CONFIG_I2C_VIAPRO=m
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-CONFIG_I2C_GPIO=m
-CONFIG_I2C_OCORES=m
-CONFIG_I2C_SIMTEC=m
-
-#
-# External I2C/SMBus adapter drivers
-#
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_TAOS_EVM=m
-CONFIG_I2C_TINY_USB=m
-
-#
-# Graphics adapter I2C/DDC channel drivers
-#
-CONFIG_I2C_VOODOO3=m
-
-#
-# Other I2C/SMBus bus drivers
-#
-CONFIG_I2C_PCA_PLATFORM=m
-CONFIG_I2C_STUB=m
-
-#
-# Miscellaneous I2C Chip support
-#
-CONFIG_DS1682=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_SENSORS_MAX6875=m
-CONFIG_SENSORS_TSL2550=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-# CONFIG_SPI is not set
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_SYSFS=y
-
-#
-# Memory mapped GPIO expanders:
-#
-
-#
-# I2C GPIO expanders:
-#
-CONFIG_GPIO_MAX732X=m
-CONFIG_GPIO_PCA953X=m
-CONFIG_GPIO_PCF857X=m
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-CONFIG_W1=m
-CONFIG_W1_CON=y
-
-#
-# 1-wire Bus Masters
-#
-CONFIG_W1_MASTER_MATROX=m
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-CONFIG_W1_MASTER_GPIO=m
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2431=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-CONFIG_W1_SLAVE_DS2760=m
-CONFIG_W1_SLAVE_BQ27000=m
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-CONFIG_PDA_POWER=m
-CONFIG_WM8350_POWER=m
-CONFIG_BATTERY_DS2760=m
-CONFIG_BATTERY_BQ27x00=m
-CONFIG_CHARGER_PCF50633=m
-CONFIG_HWMON=m
-CONFIG_HWMON_VID=m
-CONFIG_SENSORS_ABITUGURU=m
-CONFIG_SENSORS_ABITUGURU3=m
-CONFIG_SENSORS_AD7414=m
-CONFIG_SENSORS_AD7418=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1029=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ADM9240=m
-CONFIG_SENSORS_ADT7462=m
-CONFIG_SENSORS_ADT7470=m
-CONFIG_SENSORS_ADT7473=m
-CONFIG_SENSORS_ADT7475=m
-CONFIG_SENSORS_K8TEMP=m
-CONFIG_SENSORS_ASB100=m
-CONFIG_SENSORS_ATXP1=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_I5K_AMB=m
-CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_F71882FG=m
-CONFIG_SENSORS_F75375S=m
-CONFIG_SENSORS_FSCHER=m
-CONFIG_SENSORS_FSCPOS=m
-CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_CORETEMP=m
-CONFIG_SENSORS_IBMAEM=m
-CONFIG_SENSORS_IBMPEX=m
-CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_PC87427=m
-CONFIG_SENSORS_SIS5595=m
-CONFIG_SENSORS_DME1737=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_SMSC47M192=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_ADS7828=m
-CONFIG_SENSORS_THMC50=m
-CONFIG_SENSORS_VIA686A=m
-CONFIG_SENSORS_VT1211=m
-CONFIG_SENSORS_VT8231=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83791D=m
-CONFIG_SENSORS_W83792D=m
-CONFIG_SENSORS_W83793=m
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83L786NG=m
-CONFIG_SENSORS_W83627HF=m
-CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_HDAPS=m
-CONFIG_SENSORS_LIS3LV02D=m
-CONFIG_SENSORS_APPLESMC=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-CONFIG_THERMAL=m
-CONFIG_THERMAL_HWMON=y
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-CONFIG_SOFT_WATCHDOG=m
-CONFIG_WM8350_WATCHDOG=m
-CONFIG_ACQUIRE_WDT=m
-CONFIG_ADVANTECH_WDT=m
-CONFIG_ALIM1535_WDT=m
-CONFIG_ALIM7101_WDT=m
-CONFIG_SC520_WDT=m
-CONFIG_EUROTECH_WDT=m
-CONFIG_IB700_WDT=m
-CONFIG_IBMASR=m
-CONFIG_WAFER_WDT=m
-CONFIG_I6300ESB_WDT=m
-CONFIG_ITCO_WDT=m
-CONFIG_ITCO_VENDOR_SUPPORT=y
-CONFIG_IT8712F_WDT=m
-CONFIG_IT87_WDT=m
-CONFIG_HP_WATCHDOG=m
-CONFIG_SC1200_WDT=m
-CONFIG_PC87413_WDT=m
-CONFIG_60XX_WDT=m
-CONFIG_SBC8360_WDT=m
-CONFIG_CPU5_WDT=m
-CONFIG_SMSC_SCH311X_WDT=m
-CONFIG_SMSC37B787_WDT=m
-CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
-CONFIG_W83877F_WDT=m
-CONFIG_W83977F_WDT=m
-CONFIG_MACHZ_WDT=m
-CONFIG_SBC_EPX_C3_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
-
-#
-# USB-based Watchdog Cards
-#
-CONFIG_USBPCWATCHDOG=m
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB=m
-CONFIG_SSB_SPROM=y
-CONFIG_SSB_BLOCKIO=y
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-CONFIG_SSB_B43_PCI_BRIDGE=y
-CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
-CONFIG_SSB_PCMCIAHOST=y
-# CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_DRIVER_PCICORE=y
-
-#
-# Multifunction device drivers
-#
-CONFIG_MFD_CORE=m
-# CONFIG_MFD_SM501 is not set
-CONFIG_HTC_PASIC3=m
-CONFIG_UCB1400_CORE=m
-CONFIG_TPS65010=m
-# CONFIG_MFD_TMIO is not set
-CONFIG_MFD_WM8400=m
-CONFIG_MFD_WM8350=m
-CONFIG_MFD_WM8350_I2C=m
-CONFIG_MFD_PCF50633=m
-CONFIG_PCF50633_ADC=m
-CONFIG_PCF50633_GPIO=m
-# CONFIG_REGULATOR is not set
-
-#
-# Multimedia devices
-#
-
-#
-# Multimedia core support
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
-CONFIG_VIDEO_ALLOW_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_DVB_CORE=m
-CONFIG_VIDEO_MEDIA=m
-
-#
-# Multimedia drivers
-#
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-CONFIG_MEDIA_TUNER_CUSTOMIZE=y
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_MT2060=m
-CONFIG_MEDIA_TUNER_MT2266=m
-CONFIG_MEDIA_TUNER_MT2131=m
-CONFIG_MEDIA_TUNER_QT1010=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_MXL5005S=m
-CONFIG_MEDIA_TUNER_MXL5007T=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEO_V4L1=m
-CONFIG_VIDEOBUF_GEN=m
-CONFIG_VIDEOBUF_DMA_SG=m
-CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DVB=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_IR=m
-CONFIG_VIDEO_TVEEPROM=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Encoders/decoders and other helper chips
-#
-
-#
-# Audio decoders
-#
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
-CONFIG_VIDEO_TDA9840=m
-CONFIG_VIDEO_TDA9875=m
-CONFIG_VIDEO_TEA6415C=m
-CONFIG_VIDEO_TEA6420=m
-CONFIG_VIDEO_MSP3400=m
-CONFIG_VIDEO_CS5345=m
-CONFIG_VIDEO_CS53L32A=m
-CONFIG_VIDEO_M52790=m
-CONFIG_VIDEO_TLV320AIC23B=m
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_WM8739=m
-CONFIG_VIDEO_VP27SMPX=m
-
-#
-# Video decoders
-#
-CONFIG_VIDEO_BT819=m
-CONFIG_VIDEO_BT856=m
-CONFIG_VIDEO_BT866=m
-CONFIG_VIDEO_KS0127=m
-CONFIG_VIDEO_OV7670=m
-CONFIG_VIDEO_TCM825X=m
-CONFIG_VIDEO_SAA7110=m
-CONFIG_VIDEO_SAA7111=m
-CONFIG_VIDEO_SAA7114=m
-CONFIG_VIDEO_SAA711X=m
-CONFIG_VIDEO_SAA717X=m
-CONFIG_VIDEO_SAA7191=m
-CONFIG_VIDEO_TVP514X=m
-CONFIG_VIDEO_TVP5150=m
-CONFIG_VIDEO_VPX3220=m
-
-#
-# Video and audio decoders
-#
-CONFIG_VIDEO_CX25840=m
-
-#
-# MPEG video encoders
-#
-CONFIG_VIDEO_CX2341X=m
-
-#
-# Video encoders
-#
-CONFIG_VIDEO_SAA7127=m
-CONFIG_VIDEO_SAA7185=m
-CONFIG_VIDEO_ADV7170=m
-CONFIG_VIDEO_ADV7175=m
-
-#
-# Video improvement chips
-#
-CONFIG_VIDEO_UPD64031A=m
-CONFIG_VIDEO_UPD64083=m
-CONFIG_VIDEO_VIVI=m
-CONFIG_VIDEO_BT848=m
-CONFIG_VIDEO_BT848_DVB=y
-CONFIG_VIDEO_SAA6588=m
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_W9966=m
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_PP=m
-CONFIG_VIDEO_CPIA_USB=m
-CONFIG_VIDEO_CPIA2=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_VIDEO_STRADIS=m
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_ZR36060=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_ZORAN_AVS6EYES=m
-CONFIG_VIDEO_MEYE=m
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_ALSA=m
-CONFIG_VIDEO_SAA7134_DVB=m
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-CONFIG_VIDEO_CX88_BLACKBIRD=m
-CONFIG_VIDEO_CX88_DVB=m
-CONFIG_VIDEO_CX88_MPEG=m
-CONFIG_VIDEO_CX88_VP3054=m
-CONFIG_VIDEO_CX23885=m
-CONFIG_VIDEO_AU0828=m
-CONFIG_VIDEO_IVTV=m
-CONFIG_VIDEO_FB_IVTV=m
-CONFIG_VIDEO_CX18=m
-CONFIG_VIDEO_CAFE_CCIC=m
-CONFIG_SOC_CAMERA=m
-CONFIG_SOC_CAMERA_MT9M001=m
-CONFIG_MT9M001_PCA9536_SWITCH=y
-CONFIG_SOC_CAMERA_MT9M111=m
-CONFIG_SOC_CAMERA_MT9T031=m
-CONFIG_SOC_CAMERA_MT9V022=m
-CONFIG_MT9V022_PCA9536_SWITCH=y
-CONFIG_SOC_CAMERA_TW9910=m
-CONFIG_SOC_CAMERA_PLATFORM=m
-CONFIG_SOC_CAMERA_OV772X=m
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=m
-CONFIG_USB_M5602=m
-CONFIG_USB_STV06XX=m
-CONFIG_USB_GSPCA_CONEX=m
-CONFIG_USB_GSPCA_ETOMS=m
-CONFIG_USB_GSPCA_FINEPIX=m
-CONFIG_USB_GSPCA_MARS=m
-CONFIG_USB_GSPCA_OV519=m
-CONFIG_USB_GSPCA_OV534=m
-CONFIG_USB_GSPCA_PAC207=m
-CONFIG_USB_GSPCA_PAC7311=m
-CONFIG_USB_GSPCA_SONIXB=m
-CONFIG_USB_GSPCA_SONIXJ=m
-CONFIG_USB_GSPCA_SPCA500=m
-CONFIG_USB_GSPCA_SPCA501=m
-CONFIG_USB_GSPCA_SPCA505=m
-CONFIG_USB_GSPCA_SPCA506=m
-CONFIG_USB_GSPCA_SPCA508=m
-CONFIG_USB_GSPCA_SPCA561=m
-CONFIG_USB_GSPCA_STK014=m
-CONFIG_USB_GSPCA_SUNPLUS=m
-CONFIG_USB_GSPCA_T613=m
-CONFIG_USB_GSPCA_TV8532=m
-CONFIG_USB_GSPCA_VC032X=m
-CONFIG_USB_GSPCA_ZC3XX=m
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-CONFIG_VIDEO_PVRUSB2_DVB=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-CONFIG_VIDEO_EM28XX=m
-CONFIG_VIDEO_EM28XX_ALSA=m
-CONFIG_VIDEO_EM28XX_DVB=m
-CONFIG_VIDEO_USBVISION=m
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_QUICKCAM_MESSENGER=m
-CONFIG_USB_ET61X251=m
-CONFIG_VIDEO_OVCAMCHIP=m
-CONFIG_USB_W9968CF=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-CONFIG_USB_ZC0301=m
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-CONFIG_USB_ZR364XX=m
-CONFIG_USB_STKWEBCAM=m
-CONFIG_USB_S2255=m
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_RADIO_GEMTEK_PCI=m
-CONFIG_RADIO_MAXIRADIO=m
-CONFIG_RADIO_MAESTRO=m
-CONFIG_USB_DSBR=m
-CONFIG_USB_SI470X=m
-CONFIG_USB_MR800=m
-CONFIG_RADIO_TEA5764=m
-# CONFIG_DVB_DYNAMIC_MINORS is not set
-CONFIG_DVB_CAPTURE_DRIVERS=y
-
-#
-# Supported SAA7146 based PCI Adapters
-#
-CONFIG_TTPCI_EEPROM=m
-CONFIG_DVB_AV7110=m
-CONFIG_DVB_AV7110_OSD=y
-CONFIG_DVB_BUDGET_CORE=m
-CONFIG_DVB_BUDGET=m
-CONFIG_DVB_BUDGET_CI=m
-CONFIG_DVB_BUDGET_AV=m
-CONFIG_DVB_BUDGET_PATCH=m
-
-#
-# Supported USB Adapters
-#
-CONFIG_DVB_USB=m
-# CONFIG_DVB_USB_DEBUG is not set
-CONFIG_DVB_USB_A800=m
-CONFIG_DVB_USB_DIBUSB_MB=m
-# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
-CONFIG_DVB_USB_DIBUSB_MC=m
-CONFIG_DVB_USB_DIB0700=m
-CONFIG_DVB_USB_UMT_010=m
-CONFIG_DVB_USB_CXUSB=m
-CONFIG_DVB_USB_M920X=m
-CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_AU6610=m
-CONFIG_DVB_USB_DIGITV=m
-CONFIG_DVB_USB_VP7045=m
-CONFIG_DVB_USB_VP702X=m
-CONFIG_DVB_USB_GP8PSK=m
-CONFIG_DVB_USB_NOVA_T_USB2=m
-CONFIG_DVB_USB_TTUSB2=m
-CONFIG_DVB_USB_DTT200U=m
-CONFIG_DVB_USB_OPERA1=m
-CONFIG_DVB_USB_AF9005=m
-CONFIG_DVB_USB_AF9005_REMOTE=m
-CONFIG_DVB_USB_DW2102=m
-CONFIG_DVB_USB_CINERGY_T2=m
-CONFIG_DVB_USB_ANYSEE=m
-CONFIG_DVB_USB_DTV5100=m
-CONFIG_DVB_USB_AF9015=m
-CONFIG_DVB_TTUSB_BUDGET=m
-CONFIG_DVB_TTUSB_DEC=m
-CONFIG_DVB_SIANO_SMS1XXX=m
-CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-CONFIG_DVB_B2C2_FLEXCOP=m
-CONFIG_DVB_B2C2_FLEXCOP_PCI=m
-CONFIG_DVB_B2C2_FLEXCOP_USB=m
-# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
-
-#
-# Supported BT878 Adapters
-#
-CONFIG_DVB_BT8XX=m
-
-#
-# Supported Pluto2 Adapters
-#
-CONFIG_DVB_PLUTO2=m
-
-#
-# Supported SDMC DM1105 Adapters
-#
-CONFIG_DVB_DM1105=m
-
-#
-# Supported FireWire (IEEE 1394) Adapters
-#
-CONFIG_DVB_FIREDTV=m
-CONFIG_DVB_FIREDTV_IEEE1394=y
-CONFIG_DVB_FIREDTV_INPUT=y
-
-#
-# Supported DVB Frontends
-#
-
-#
-# Customise DVB Frontends
-#
-CONFIG_DVB_FE_CUSTOMISE=y
-
-#
-# Multistandard (satellite) frontends
-#
-CONFIG_DVB_STB0899=m
-CONFIG_DVB_STB6100=m
-
-#
-# DVB-S (satellite) frontends
-#
-CONFIG_DVB_CX24110=m
-CONFIG_DVB_CX24123=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_S5H1420=m
-CONFIG_DVB_STV0288=m
-CONFIG_DVB_STB6000=m
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA10086=m
-CONFIG_DVB_TDA8261=m
-CONFIG_DVB_VES1X93=m
-CONFIG_DVB_TUNER_ITD1000=m
-CONFIG_DVB_TUNER_CX24113=m
-CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
-CONFIG_DVB_CX24116=m
-CONFIG_DVB_SI21XX=m
-
-#
-# DVB-T (terrestrial) frontends
-#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
-CONFIG_DVB_CX22700=m
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_DRX397XD=m
-CONFIG_DVB_L64781=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
-CONFIG_DVB_ZL10353=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-CONFIG_DVB_DIB7000M=m
-CONFIG_DVB_DIB7000P=m
-CONFIG_DVB_TDA10048=m
-
-#
-# DVB-C (cable) frontends
-#
-CONFIG_DVB_VES1820=m
-CONFIG_DVB_TDA10021=m
-CONFIG_DVB_TDA10023=m
-CONFIG_DVB_STV0297=m
-
-#
-# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
-#
-CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
-CONFIG_DVB_OR51132=m
-CONFIG_DVB_BCM3510=m
-CONFIG_DVB_LGDT330X=m
-CONFIG_DVB_LGDT3304=m
-CONFIG_DVB_S5H1409=m
-CONFIG_DVB_AU8522=m
-CONFIG_DVB_S5H1411=m
-
-#
-# ISDB-T (terrestrial) frontends
-#
-CONFIG_DVB_S921=m
-
-#
-# Digital terrestrial only tuners/PLL
-#
-CONFIG_DVB_PLL=m
-CONFIG_DVB_TUNER_DIB0070=m
-
-#
-# SEC control devices for DVB-S
-#
-CONFIG_DVB_LNBP21=m
-CONFIG_DVB_ISL6405=m
-CONFIG_DVB_ISL6421=m
-CONFIG_DVB_LGS8GL5=m
-
-#
-# Tools to develop new frontends
-#
-# CONFIG_DVB_DUMMY_FE is not set
-CONFIG_DVB_AF9013=m
-CONFIG_DAB=y
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-CONFIG_AGP=y
-CONFIG_AGP_AMD64=y
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_VIA=m
-CONFIG_DRM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_I810=m
-CONFIG_DRM_I830=m
-CONFIG_DRM_I915=m
-# CONFIG_DRM_I915_KMS is not set
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-CONFIG_FB_DDC=m
-CONFIG_FB_BOOT_VESA_SUPPORT=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=m
-CONFIG_FB_SYS_COPYAREA=m
-CONFIG_FB_SYS_IMAGEBLIT=m
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=m
-CONFIG_FB_DEFERRED_IO=y
-CONFIG_FB_HECUBA=m
-CONFIG_FB_SVGALIB=m
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_BACKLIGHT=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-CONFIG_FB_CIRRUS=m
-CONFIG_FB_PM2=m
-# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
-CONFIG_FB_CYBER2000=m
-CONFIG_FB_ARC=m
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=m
-# CONFIG_FB_UVESA is not set
-CONFIG_FB_VESA=y
-CONFIG_FB_N411=m
-CONFIG_FB_HGA=m
-# CONFIG_FB_HGA_ACCEL is not set
-CONFIG_FB_S1D13XXX=m
-CONFIG_FB_NVIDIA=m
-CONFIG_FB_NVIDIA_I2C=y
-# CONFIG_FB_NVIDIA_DEBUG is not set
-CONFIG_FB_NVIDIA_BACKLIGHT=y
-CONFIG_FB_RIVA=m
-CONFIG_FB_RIVA_I2C=y
-# CONFIG_FB_RIVA_DEBUG is not set
-CONFIG_FB_RIVA_BACKLIGHT=y
-CONFIG_FB_LE80578=m
-CONFIG_FB_CARILLO_RANCH=m
-CONFIG_FB_INTEL=m
-# CONFIG_FB_INTEL_DEBUG is not set
-CONFIG_FB_INTEL_I2C=y
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY128_BACKLIGHT=y
-CONFIG_FB_ATY=m
-CONFIG_FB_ATY_CT=y
-CONFIG_FB_ATY_GENERIC_LCD=y
-CONFIG_FB_ATY_GX=y
-CONFIG_FB_ATY_BACKLIGHT=y
-CONFIG_FB_S3=m
-CONFIG_FB_SAVAGE=m
-CONFIG_FB_SAVAGE_I2C=y
-CONFIG_FB_SAVAGE_ACCEL=y
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_VIA=m
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_3DFX=m
-# CONFIG_FB_3DFX_ACCEL is not set
-CONFIG_FB_VOODOO1=m
-CONFIG_FB_VT8623=m
-CONFIG_FB_TRIDENT=m
-# CONFIG_FB_TRIDENT_ACCEL is not set
-CONFIG_FB_ARK=m
-CONFIG_FB_PM3=m
-CONFIG_FB_CARMINE=m
-CONFIG_FB_CARMINE_DRAM_EVAL=y
-# CONFIG_CARMINE_DRAM_CUSTOM is not set
-CONFIG_FB_GEODE=y
-CONFIG_FB_GEODE_LX=m
-CONFIG_FB_GEODE_GX=m
-CONFIG_FB_GEODE_GX1=m
-CONFIG_FB_TMIO=m
-CONFIG_FB_TMIO_ACCELL=y
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FB_METRONOME=m
-CONFIG_FB_MB862XX=m
-CONFIG_FB_MB862XX_PCI_GDC=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-# CONFIG_LCD_ILI9320 is not set
-CONFIG_LCD_PLATFORM=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
-CONFIG_BACKLIGHT_PROGEAR=m
-CONFIG_BACKLIGHT_CARILLO_RANCH=m
-CONFIG_BACKLIGHT_MBP_NVIDIA=m
-CONFIG_BACKLIGHT_SAHARA=m
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=m
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-CONFIG_VGACON_SOFT_SCROLLBACK=y
-CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=m
-CONFIG_SOUND_OSS_CORE=y
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_JACK=y
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-CONFIG_SND_VMASTER=y
-CONFIG_SND_MPU401_UART=m
-CONFIG_SND_OPL3_LIB=m
-CONFIG_SND_VX_LIB=m
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_DRIVERS=y
-CONFIG_SND_DUMMY=m
-CONFIG_SND_VIRMIDI=m
-CONFIG_SND_MTPAV=m
-CONFIG_SND_MTS64=m
-CONFIG_SND_SERIAL_U16550=m
-CONFIG_SND_MPU401=m
-CONFIG_SND_PORTMAN2X4=m
-CONFIG_SND_AC97_POWER_SAVE=y
-CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
-CONFIG_SND_SB_COMMON=m
-CONFIG_SND_SB16_DSP=m
-CONFIG_SND_PCI=y
-CONFIG_SND_AD1889=m
-CONFIG_SND_ALS300=m
-CONFIG_SND_ALS4000=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ATIIXP=m
-CONFIG_SND_ATIIXP_MODEM=m
-CONFIG_SND_AU8810=m
-CONFIG_SND_AU8820=m
-CONFIG_SND_AU8830=m
-CONFIG_SND_AW2=m
-CONFIG_SND_AZT3328=m
-CONFIG_SND_BT87X=m
-# CONFIG_SND_BT87X_OVERCLOCK is not set
-CONFIG_SND_CA0106=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_OXYGEN_LIB=m
-CONFIG_SND_OXYGEN=m
-CONFIG_SND_CS4281=m
-CONFIG_SND_CS46XX=m
-CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_CS5530=m
-CONFIG_SND_DARLA20=m
-CONFIG_SND_GINA20=m
-CONFIG_SND_LAYLA20=m
-CONFIG_SND_DARLA24=m
-CONFIG_SND_GINA24=m
-CONFIG_SND_LAYLA24=m
-CONFIG_SND_MONA=m
-CONFIG_SND_MIA=m
-CONFIG_SND_ECHO3G=m
-CONFIG_SND_INDIGO=m
-CONFIG_SND_INDIGOIO=m
-CONFIG_SND_INDIGODJ=m
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_FM801_TEA575X=m
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_HWDEP=y
-# CONFIG_SND_HDA_RECONFIG is not set
-# CONFIG_SND_HDA_INPUT_BEEP is not set
-CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_CODEC_ANALOG=y
-CONFIG_SND_HDA_CODEC_SIGMATEL=y
-CONFIG_SND_HDA_CODEC_VIA=y
-CONFIG_SND_HDA_CODEC_ATIHDMI=y
-CONFIG_SND_HDA_CODEC_NVHDMI=y
-CONFIG_SND_HDA_CODEC_INTELHDMI=y
-CONFIG_SND_HDA_ELD=y
-CONFIG_SND_HDA_CODEC_CONEXANT=y
-CONFIG_SND_HDA_CODEC_CMEDIA=y
-CONFIG_SND_HDA_CODEC_SI3054=y
-CONFIG_SND_HDA_GENERIC=y
-# CONFIG_SND_HDA_POWER_SAVE is not set
-CONFIG_SND_HDSP=m
-CONFIG_SND_HDSPM=m
-CONFIG_SND_HIFIER=m
-CONFIG_SND_ICE1712=m
-CONFIG_SND_ICE1724=m
-CONFIG_SND_INTEL8X0=m
-CONFIG_SND_INTEL8X0M=m
-CONFIG_SND_KORG1212=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MIXART=m
-CONFIG_SND_NM256=m
-CONFIG_SND_PCXHR=m
-CONFIG_SND_RIPTIDE=m
-CONFIG_SND_RME32=m
-CONFIG_SND_RME96=m
-CONFIG_SND_RME9652=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-CONFIG_SND_VIRTUOSO=m
-CONFIG_SND_VX222=m
-CONFIG_SND_YMFPCI=m
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_USX2Y=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-CONFIG_SND_USB_US122L=m
-CONFIG_SND_PCMCIA=y
-CONFIG_SND_VXPOCKET=m
-CONFIG_SND_PDAUDIOCF=m
-# CONFIG_SND_SOC is not set
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-CONFIG_HIDRAW=y
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_HID_PID=y
-CONFIG_USB_HIDDEV=y
-
-#
-# Special HID drivers
-#
-# CONFIG_HID_COMPAT is not set
-CONFIG_HID_A4TECH=m
-CONFIG_HID_APPLE=m
-CONFIG_HID_BELKIN=m
-CONFIG_HID_CHERRY=m
-CONFIG_HID_CHICONY=m
-CONFIG_HID_CYPRESS=m
-CONFIG_HID_EZKEY=m
-CONFIG_HID_GYRATION=m
-CONFIG_HID_LOGITECH=m
-CONFIG_LOGITECH_FF=y
-CONFIG_LOGIRUMBLEPAD2_FF=y
-CONFIG_HID_MICROSOFT=m
-CONFIG_HID_MONTEREY=m
-CONFIG_HID_NTRIG=m
-CONFIG_HID_PANTHERLORD=m
-CONFIG_PANTHERLORD_FF=y
-CONFIG_HID_PETALYNX=m
-CONFIG_HID_SAMSUNG=m
-CONFIG_HID_SONY=m
-CONFIG_HID_SUNPLUS=m
-CONFIG_GREENASIA_FF=m
-CONFIG_HID_TOPSEED=m
-CONFIG_THRUSTMASTER_FF=m
-CONFIG_ZEROPLUS_FF=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-CONFIG_USB_MON=y
-CONFIG_USB_WUSB=m
-CONFIG_USB_WUSB_CBAF=m
-# CONFIG_USB_WUSB_CBAF_DEBUG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_C67X00_HCD=m
-CONFIG_USB_EHCI_HCD=m
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_OXU210HP_HCD=m
-CONFIG_USB_ISP116X_HCD=m
-CONFIG_USB_ISP1760_HCD=m
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_OHCI_HCD_SSB=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=m
-CONFIG_USB_U132_HCD=m
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-CONFIG_USB_R8A66597_HCD=m
-CONFIG_USB_WHCI_HCD=m
-CONFIG_USB_HWA_HCD=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_WDM=m
-CONFIG_USB_TMC=m
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
-#
-
-#
-# see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-CONFIG_USB_STORAGE_CYPRESS_ATACB=y
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB port drivers
-#
-CONFIG_USB_USS720=m
-CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_SAFE_PADDED=y
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_DEBUG=m
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_ADUTUX=m
-CONFIG_USB_SEVSEG=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_BERRY_CHARGE=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGET=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETMOTORCONTROL=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-CONFIG_USB_APPLEDISPLAY=m
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_IOWARRIOR=m
-CONFIG_USB_TEST=m
-CONFIG_USB_ISIGHTFW=m
-CONFIG_USB_VST=m
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
-# CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-CONFIG_USB_GPIO_VBUS=m
-CONFIG_UWB=m
-CONFIG_UWB_HWA=m
-CONFIG_UWB_WHCI=m
-CONFIG_UWB_WLP=m
-CONFIG_UWB_I1480U=m
-CONFIG_UWB_I1480U_WLP=m
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=m
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-CONFIG_MMC_SDHCI=m
-CONFIG_MMC_SDHCI_PCI=m
-CONFIG_MMC_RICOH_MMC=m
-CONFIG_MMC_WBSD=m
-CONFIG_MMC_TIFM_SD=m
-CONFIG_MMC_SDRICOH_CS=m
-CONFIG_MEMSTICK=m
-# CONFIG_MEMSTICK_DEBUG is not set
-
-#
-# MemoryStick drivers
-#
-# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
-CONFIG_MSPRO_BLOCK=m
-
-#
-# MemoryStick Host Controller Drivers
-#
-CONFIG_MEMSTICK_TIFM_MS=m
-CONFIG_MEMSTICK_JMICRON_38X=m
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
-
-#
-# LED drivers
-#
-CONFIG_LEDS_ALIX2=m
-CONFIG_LEDS_PCA9532=m
-CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_CLEVO_MAIL=m
-CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_WM8350=m
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
-CONFIG_LEDS_TRIGGER_BACKLIGHT=m
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
-CONFIG_ACCESSIBILITY=y
-CONFIG_A11Y_BRAILLE_CONSOLE=y
-CONFIG_INFINIBAND=m
-CONFIG_INFINIBAND_USER_MAD=m
-CONFIG_INFINIBAND_USER_ACCESS=m
-CONFIG_INFINIBAND_USER_MEM=y
-CONFIG_INFINIBAND_ADDR_TRANS=y
-CONFIG_INFINIBAND_MTHCA=m
-CONFIG_INFINIBAND_MTHCA_DEBUG=y
-CONFIG_INFINIBAND_IPATH=m
-CONFIG_INFINIBAND_AMSO1100=m
-# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
-# CONFIG_INFINIBAND_CXGB3 is not set
-CONFIG_MLX4_INFINIBAND=m
-CONFIG_INFINIBAND_NES=m
-# CONFIG_INFINIBAND_NES_DEBUG is not set
-CONFIG_INFINIBAND_IPOIB=m
-# CONFIG_INFINIBAND_IPOIB_CM is not set
-CONFIG_INFINIBAND_IPOIB_DEBUG=y
-# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
-CONFIG_INFINIBAND_SRP=m
-CONFIG_INFINIBAND_ISER=m
-# CONFIG_EDAC is not set
-CONFIG_RTC_LIB=m
-CONFIG_RTC_CLASS=m
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-CONFIG_RTC_INTF_DEV_UIE_EMUL=y
-CONFIG_RTC_DRV_TEST=m
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_MAX6900=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_M41T80=m
-CONFIG_RTC_DRV_M41T80_WDT=y
-CONFIG_RTC_DRV_S35390A=m
-CONFIG_RTC_DRV_FM3130=m
-CONFIG_RTC_DRV_RX8581=m
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-CONFIG_RTC_DRV_CMOS=m
-CONFIG_RTC_DRV_DS1286=m
-CONFIG_RTC_DRV_DS1511=m
-CONFIG_RTC_DRV_DS1553=m
-CONFIG_RTC_DRV_DS1742=m
-CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
-CONFIG_RTC_DRV_M48T35=m
-CONFIG_RTC_DRV_M48T59=m
-CONFIG_RTC_DRV_BQ4802=m
-CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_WM8350=m
-CONFIG_RTC_DRV_PCF50633=m
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_DMADEVICES=y
-
-#
-# DMA Devices
-#
-CONFIG_INTEL_IOATDMA=m
-CONFIG_DMA_ENGINE=y
-
-#
-# DMA Clients
-#
-CONFIG_NET_DMA=y
-CONFIG_DMATEST=m
-CONFIG_DCA=m
-CONFIG_AUXDISPLAY=y
-# CONFIG_KS0108 is not set
-CONFIG_UIO=m
-CONFIG_UIO_CIF=m
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
-CONFIG_UIO_SMX=m
-CONFIG_UIO_SERCOS3=m
-CONFIG_STAGING=y
-# CONFIG_STAGING_EXCLUDE_BUILD is not set
-# CONFIG_ET131X is not set
-# CONFIG_SLICOSS is not set
-# CONFIG_SXG is not set
-# CONFIG_ME4000 is not set
-# CONFIG_MEILHAUS is not set
-# CONFIG_VIDEO_GO7007 is not set
-# CONFIG_USB_IP_COMMON is not set
-# CONFIG_W35UND is not set
-# CONFIG_PRISM2_USB is not set
-# CONFIG_ECHO is not set
-# CONFIG_USB_ATMEL is not set
-# CONFIG_POCH is not set
-# CONFIG_AGNX is not set
-# CONFIG_OTUS is not set
-CONFIG_RT2860=m
-CONFIG_RT2870=m
-# CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
-# CONFIG_PANEL is not set
-# CONFIG_ALTERA_PCIE_CHDMA is not set
-CONFIG_RTL8187SE=m
-# CONFIG_INPUT_MIMIO is not set
-# CONFIG_TRANZPORT is not set
-
-#
-# Android
-#
-# CONFIG_ANDROID is not set
-# CONFIG_ANDROID_BINDER_IPC is not set
-# CONFIG_ANDROID_LOGGER is not set
-# CONFIG_ANDROID_RAM_CONSOLE is not set
-# CONFIG_ANDROID_TIMED_GPIO is not set
-# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set
-CONFIG_X86_PLATFORM_DEVICES=y
-CONFIG_ACER_WMI=m
-CONFIG_ASUS_LAPTOP=m
-CONFIG_FUJITSU_LAPTOP=m
-# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
-CONFIG_HP_WMI=m
-CONFIG_MSI_LAPTOP=m
-CONFIG_PANASONIC_LAPTOP=m
-CONFIG_COMPAL_LAPTOP=m
-CONFIG_SONY_LAPTOP=m
-CONFIG_SONYPI_COMPAT=y
-CONFIG_THINKPAD_ACPI=m
-# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
-# CONFIG_THINKPAD_ACPI_DEBUG is not set
-CONFIG_THINKPAD_ACPI_BAY=y
-CONFIG_THINKPAD_ACPI_VIDEO=y
-CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
-CONFIG_INTEL_MENLOW=m
-CONFIG_EEEPC_LAPTOP=m
-CONFIG_ACPI_WMI=m
-CONFIG_ACPI_ASUS=m
-CONFIG_ACPI_TOSHIBA=m
-
-#
-# Firmware Drivers
-#
-CONFIG_EDD=m
-# CONFIG_EDD_OFF is not set
-CONFIG_FIRMWARE_MEMMAP=y
-CONFIG_DELL_RBU=m
-CONFIG_DCDBAS=m
-CONFIG_DMIID=y
-CONFIG_ISCSI_IBFT_FIND=y
-CONFIG_ISCSI_IBFT=m
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-CONFIG_EXT4_FS=m
-# CONFIG_EXT4DEV_COMPAT is not set
-CONFIG_EXT4_FS_XATTR=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_JBD2=m
-# CONFIG_JBD2_DEBUG is not set
-CONFIG_FS_MBCACHE=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-CONFIG_JFS_FS=m
-CONFIG_JFS_POSIX_ACL=y
-CONFIG_JFS_SECURITY=y
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_FILE_LOCKING=y
-CONFIG_XFS_FS=m
-CONFIG_XFS_QUOTA=y
-CONFIG_XFS_POSIX_ACL=y
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_DEBUG is not set
-CONFIG_GFS2_FS=m
-CONFIG_GFS2_FS_LOCKING_DLM=m
-CONFIG_OCFS2_FS=m
-CONFIG_OCFS2_FS_O2CB=m
-CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
-# CONFIG_OCFS2_FS_STATS is not set
-CONFIG_OCFS2_DEBUG_MASKLOG=y
-# CONFIG_OCFS2_DEBUG_FS is not set
-CONFIG_OCFS2_FS_POSIX_ACL=y
-CONFIG_BTRFS_FS=m
-CONFIG_BTRFS_FS_POSIX_ACL=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_QUOTA=y
-CONFIG_QUOTA_NETLINK_INTERFACE=y
-# CONFIG_PRINT_QUOTA_WARNING is not set
-CONFIG_QUOTA_TREE=m
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
-CONFIG_QUOTACTL=y
-CONFIG_AUTOFS_FS=m
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-CONFIG_GENERIC_ACL=y
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_CONFIGFS_FS=m
-CONFIG_MISC_FILESYSTEMS=y
-CONFIG_ADFS_FS=m
-# CONFIG_ADFS_FS_RW is not set
-CONFIG_AFFS_FS=m
-# CONFIG_ECRYPT_FS is not set
-CONFIG_HFS_FS=m
-CONFIG_HFSPLUS_FS=m
-CONFIG_BEFS_FS=m
-# CONFIG_BEFS_DEBUG is not set
-CONFIG_BFS_FS=m
-CONFIG_EFS_FS=m
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_UBIFS_FS=m
-CONFIG_UBIFS_FS_XATTR=y
-CONFIG_UBIFS_FS_ADVANCED_COMPR=y
-CONFIG_UBIFS_FS_LZO=y
-CONFIG_UBIFS_FS_ZLIB=y
-# CONFIG_UBIFS_FS_DEBUG is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-CONFIG_SQUASHFS_EMBEDDED=y
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-CONFIG_VXFS_FS=m
-CONFIG_MINIX_FS=m
-CONFIG_OMFS_FS=m
-CONFIG_HPFS_FS=m
-CONFIG_QNX4FS_FS=m
-CONFIG_ROMFS_FS=y
-CONFIG_SYSV_FS=m
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_UFS_DEBUG is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_SUNRPC_XPRT_RDMA=m
-# CONFIG_SUNRPC_REGISTER_V4 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-CONFIG_RPCSEC_GSS_SPKM3=m
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_WEAK_PW_HASH=y
-# CONFIG_CIFS_UPCALL is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-CONFIG_NCP_FS=m
-CONFIG_NCPFS_PACKET_SIGNING=y
-CONFIG_NCPFS_IOCTL_LOCKING=y
-CONFIG_NCPFS_STRONG=y
-CONFIG_NCPFS_NFS_NS=y
-CONFIG_NCPFS_OS2_NS=y
-CONFIG_NCPFS_SMALLDOS=y
-CONFIG_NCPFS_NLS=y
-CONFIG_NCPFS_EXTRAS=y
-CONFIG_CODA_FS=m
-CONFIG_AFS_FS=m
-# CONFIG_AFS_DEBUG is not set
-CONFIG_9P_FS=m
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-CONFIG_SOLARIS_X86_PARTITION=y
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_KARMA_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-CONFIG_DLM=m
-# CONFIG_DLM_DEBUG is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=0
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_UNUSED_SYMBOLS=y
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-CONFIG_STACKTRACE=y
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_MEMORY_INIT=y
-CONFIG_ARCH_WANT_FRAME_POINTERS=y
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-CONFIG_USER_STACKTRACE_SUPPORT=y
-CONFIG_NOP_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_RING_BUFFER=y
-CONFIG_TRACING=y
-
-#
-# Tracers
-#
-CONFIG_SYSPROF_TRACER=y
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-CONFIG_STRICT_DEVMEM=y
-CONFIG_X86_VERBOSE_BOOTUP=y
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EARLY_PRINTK_DBGP is not set
-CONFIG_HAVE_MMIOTRACE_SUPPORT=y
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-# CONFIG_OPTIMIZE_INLINING is not set
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
-CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
-CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_NETWORK_XFRM=y
-# CONFIG_SECURITY_PATH is not set
-CONFIG_SECURITY_FILE_CAPABILITIES=y
-# CONFIG_SECURITY_ROOTPLUG is not set
-CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_XOR_BLOCKS=y
-CONFIG_ASYNC_CORE=y
-CONFIG_ASYNC_MEMCPY=y
-CONFIG_ASYNC_XOR=y
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_FIPS=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=y
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=m
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-CONFIG_CRYPTO_GF128MUL=y
-CONFIG_CRYPTO_NULL=y
-CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_AUTHENC=y
-CONFIG_CRYPTO_TEST=m
-
-#
-# Authenticated Encryption with Associated Data
-#
-CONFIG_CRYPTO_CCM=m
-CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=m
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_CTR=m
-CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_LRW=y
-CONFIG_CRYPTO_PCBC=y
-CONFIG_CRYPTO_XTS=y
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=y
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_CRC32C_INTEL=m
-CONFIG_CRYPTO_MD4=y
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_MICHAEL_MIC=y
-CONFIG_CRYPTO_RMD128=m
-CONFIG_CRYPTO_RMD160=m
-CONFIG_CRYPTO_RMD256=m
-CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256=y
-CONFIG_CRYPTO_SHA512=y
-CONFIG_CRYPTO_TGR192=y
-CONFIG_CRYPTO_WP512=y
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_AES_X86_64=y
-CONFIG_CRYPTO_ANUBIS=y
-CONFIG_CRYPTO_ARC4=y
-CONFIG_CRYPTO_BLOWFISH=y
-CONFIG_CRYPTO_CAMELLIA=y
-CONFIG_CRYPTO_CAST5=y
-CONFIG_CRYPTO_CAST6=y
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=y
-CONFIG_CRYPTO_KHAZAD=y
-CONFIG_CRYPTO_SALSA20=m
-CONFIG_CRYPTO_SALSA20_X86_64=m
-CONFIG_CRYPTO_SEED=y
-CONFIG_CRYPTO_SERPENT=y
-CONFIG_CRYPTO_TEA=y
-CONFIG_CRYPTO_TWOFISH=y
-CONFIG_CRYPTO_TWOFISH_COMMON=y
-CONFIG_CRYPTO_TWOFISH_X86_64=y
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_LZO=m
-
-#
-# Random Number Generation
-#
-CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_HIFN_795X=m
-CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
-CONFIG_HAVE_KVM=y
-CONFIG_HAVE_KVM_IRQCHIP=y
-CONFIG_VIRTUALIZATION=y
-CONFIG_KVM=m
-CONFIG_KVM_INTEL=m
-CONFIG_KVM_AMD=m
-# CONFIG_KVM_TRACE is not set
-CONFIG_VIRTIO=m
-CONFIG_VIRTIO_RING=m
-CONFIG_VIRTIO_PCI=m
-CONFIG_VIRTIO_BALLOON=m
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_FIND_LAST_BIT=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC_T10DIF=m
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=m
-CONFIG_LZO_DECOMPRESS=m
-CONFIG_REED_SOLOMON=m
-CONFIG_REED_SOLOMON_DEC16=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_CHECK_SIGNATURE=y
diff --git a/source/k/config-generic-2.6.33.4 b/source/k/config-generic-2.6.33.4
new file mode 100644
index 000000000..8877fca68
--- /dev/null
+++ b/source/k/config-generic-2.6.33.4
@@ -0,0 +1,4699 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.33.4
+# Wed May 12 22:00:50 2010
+#
+CONFIG_64BIT=y
+# CONFIG_X86_32 is not set
+CONFIG_X86_64=y
+CONFIG_X86=y
+CONFIG_OUTPUT_FORMAT="elf64-x86-64"
+CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_MMU=y
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_ARCH_HAS_CPU_RELAX=y
+CONFIG_ARCH_HAS_DEFAULT_IDLE=y
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
+CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
+CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
+CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ZONE_DMA32=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_X86_64_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_TRAMPOLINE=y
+# CONFIG_KTIME_SCALAR is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_BZIP2=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_LZO=y
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_BZIP2 is not set
+CONFIG_KERNEL_LZMA=y
+# CONFIG_KERNEL_LZO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_TREE=y
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_TREE_PREEMPT_RCU is not set
+# CONFIG_TINY_RCU is not set
+# CONFIG_RCU_TRACE is not set
+CONFIG_RCU_FANOUT=32
+# CONFIG_RCU_FANOUT_EXACT is not set
+# CONFIG_TREE_RCU_TRACE is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=15
+CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
+# CONFIG_GROUP_SCHED is not set
+# CONFIG_CGROUPS is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+CONFIG_RELAY=y
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+CONFIG_NET_NS=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_LZO=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_PCSPKR_PLATFORM=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_HAVE_PERF_EVENTS=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+CONFIG_EVENT_PROFILE=y
+# CONFIG_PERF_COUNTERS is not set
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+CONFIG_OPROFILE=m
+# CONFIG_OPROFILE_IBS is not set
+# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_USER_RETURN_NOTIFIER=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_USER_RETURN_NOTIFIER=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_SLOW_WORK=y
+# CONFIG_SLOW_WORK_DEBUG is not set
+# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_STOP_MACHINE=y
+CONFIG_BLOCK=y
+CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_INTEGRITY is not set
+CONFIG_BLOCK_COMPAT=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_PREEMPT_NOTIFIERS=y
+# CONFIG_INLINE_SPIN_TRYLOCK is not set
+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK is not set
+# CONFIG_INLINE_SPIN_LOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
+CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_READ_TRYLOCK is not set
+# CONFIG_INLINE_READ_LOCK is not set
+# CONFIG_INLINE_READ_LOCK_BH is not set
+# CONFIG_INLINE_READ_LOCK_IRQ is not set
+# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
+CONFIG_INLINE_READ_UNLOCK=y
+# CONFIG_INLINE_READ_UNLOCK_BH is not set
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_WRITE_TRYLOCK is not set
+# CONFIG_INLINE_WRITE_LOCK is not set
+# CONFIG_INLINE_WRITE_LOCK_BH is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
+CONFIG_INLINE_WRITE_UNLOCK=y
+# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_FREEZER=y
+
+#
+# Processor type and features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_SMP=y
+# CONFIG_SPARSE_IRQ is not set
+CONFIG_X86_MPPARSE=y
+# CONFIG_X86_EXTENDED_PLATFORM is not set
+CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+# CONFIG_PARAVIRT_GUEST is not set
+CONFIG_MEMTEST=y
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MATOM is not set
+CONFIG_GENERIC_CPU=y
+CONFIG_X86_CPU=y
+CONFIG_X86_INTERNODE_CACHE_SHIFT=6
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_XADD=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_TSC=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=64
+CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_CENTAUR=y
+# CONFIG_X86_DS is not set
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+CONFIG_DMI=y
+CONFIG_GART_IOMMU=y
+# CONFIG_CALGARY_IOMMU is not set
+# CONFIG_AMD_IOMMU is not set
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
+# CONFIG_IOMMU_API is not set
+# CONFIG_MAXSMP is not set
+CONFIG_NR_CPUS=32
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_VOLUNTARY=y
+# CONFIG_PREEMPT is not set
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+CONFIG_X86_MCE_THRESHOLD=y
+CONFIG_X86_MCE_INJECT=m
+CONFIG_X86_THERMAL_VECTOR=y
+CONFIG_I8K=m
+CONFIG_MICROCODE=m
+CONFIG_MICROCODE_INTEL=y
+CONFIG_MICROCODE_AMD=y
+CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_X86_MSR=m
+CONFIG_X86_CPUID=m
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
+CONFIG_DIRECT_GBPAGES=y
+# CONFIG_NUMA is not set
+CONFIG_ARCH_PROC_KCORE_TEXT=y
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_MEMORY_PROBE=y
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_HAVE_MEMORY_PRESENT=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_MEMORY_HOTPLUG=y
+CONFIG_MEMORY_HOTPLUG_SPARSE=y
+CONFIG_MEMORY_HOTREMOVE=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_MIGRATION=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_MMU_NOTIFIER=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
+# CONFIG_MEMORY_FAILURE is not set
+# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
+CONFIG_X86_RESERVE_LOW_64K=y
+CONFIG_MTRR=y
+CONFIG_MTRR_SANITIZER=y
+CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
+CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
+CONFIG_X86_PAT=y
+CONFIG_ARCH_USES_PG_UNCACHED=y
+CONFIG_EFI=y
+CONFIG_SECCOMP=y
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
+CONFIG_SCHED_HRTICK=y
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+CONFIG_PHYSICAL_START=0x1000000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x1000000
+CONFIG_HOTPLUG_CPU=y
+CONFIG_COMPAT_VDSO=y
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
+
+#
+# Power management and ACPI options
+#
+CONFIG_ARCH_HIBERNATION_HEADER=y
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_HIBERNATION_NVS=y
+CONFIG_HIBERNATION=y
+CONFIG_PM_STD_PARTITION="\"\""
+CONFIG_PM_RUNTIME=y
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_PROCFS=y
+CONFIG_ACPI_PROCFS_POWER=y
+CONFIG_ACPI_POWER_METER=m
+CONFIG_ACPI_SYSFS_POWER=y
+CONFIG_ACPI_PROC_EVENT=y
+CONFIG_ACPI_AC=m
+CONFIG_ACPI_BATTERY=m
+CONFIG_ACPI_BUTTON=m
+CONFIG_ACPI_VIDEO=m
+CONFIG_ACPI_FAN=m
+CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
+CONFIG_ACPI_THERMAL=m
+# CONFIG_ACPI_CUSTOM_DSDT is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_PCI_SLOT=m
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=m
+CONFIG_ACPI_HOTPLUG_MEMORY=m
+CONFIG_ACPI_SBS=m
+CONFIG_SFI=y
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=m
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=m
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=m
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+
+#
+# CPUFreq processor drivers
+#
+CONFIG_X86_ACPI_CPUFREQ=m
+CONFIG_X86_POWERNOW_K8=m
+CONFIG_X86_SPEEDSTEP_CENTRINO=m
+CONFIG_X86_P4_CLOCKMOD=m
+
+#
+# shared options
+#
+CONFIG_X86_SPEEDSTEP_LIB=m
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+
+#
+# Memory power savings
+#
+CONFIG_I7300_IDLE_IOAT_CHANNEL=y
+CONFIG_I7300_IDLE=m
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_DMAR is not set
+# CONFIG_INTR_REMAP is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=m
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ECRC is not set
+CONFIG_PCIEAER_INJECT=m
+# CONFIG_PCIEASPM is not set
+CONFIG_ARCH_SUPPORTS_MSI=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCI_DEBUG is not set
+CONFIG_PCI_STUB=m
+CONFIG_HT_IRQ=y
+# CONFIG_PCI_IOV is not set
+CONFIG_PCI_IOAPIC=y
+CONFIG_ISA_DMA_API=y
+CONFIG_K8_NB=y
+CONFIG_PCCARD=m
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+CONFIG_PD6729=m
+CONFIG_I82092=m
+CONFIG_PCCARD_NONSTATIC=m
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_FAKE=m
+CONFIG_HOTPLUG_PCI_ACPI=m
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+CONFIG_HOTPLUG_PCI_SHPC=m
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_COMPAT_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+# CONFIG_HAVE_AOUT is not set
+CONFIG_BINFMT_MISC=m
+CONFIG_IA32_EMULATION=y
+# CONFIG_IA32_AOUT is not set
+CONFIG_COMPAT=y
+CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
+CONFIG_SYSVIPC_COMPAT=y
+CONFIG_NET=y
+CONFIG_COMPAT_NETLINK_MESSAGES=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=y
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_IPCOMP=m
+CONFIG_NET_KEY=m
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_LRO=y
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_SIT_6RD is not set
+CONFIG_IPV6_NDISC_NODETYPE=y
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETLABEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+CONFIG_NF_CT_PROTO_DCCP=m
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_IP_VS=m
+# CONFIG_IP_VS_IPV6 is not set
+# CONFIG_IP_VS_DEBUG is not set
+CONFIG_IP_VS_TAB_BITS=12
+
+#
+# IPVS transport protocol load balancing support
+#
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_PROTO_AH_ESP=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_AH=y
+
+#
+# IPVS scheduler
+#
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_NQ=m
+
+#
+# IPVS application helper
+#
+CONFIG_IP_VS_FTP=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+
+#
+# DECnet: Netfilter Configuration
+#
+# CONFIG_DECNET_NF_GRABULATOR is not set
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_IP6=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+CONFIG_BRIDGE_EBT_NFLOG=m
+CONFIG_IP_DCCP=m
+CONFIG_INET_DCCP_DIAG=m
+
+#
+# DCCP CCIDs Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP_CCID2_DEBUG is not set
+# CONFIG_IP_DCCP_CCID3 is not set
+
+#
+# DCCP Kernel Hacking
+#
+# CONFIG_IP_DCCP_DEBUG is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_HMAC_NONE is not set
+# CONFIG_SCTP_HMAC_SHA1 is not set
+CONFIG_SCTP_HMAC_MD5=y
+CONFIG_RDS=m
+CONFIG_RDS_RDMA=m
+CONFIG_RDS_TCP=m
+# CONFIG_RDS_DEBUG is not set
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_STP=m
+CONFIG_GARP=m
+CONFIG_BRIDGE=m
+# CONFIG_NET_DSA is not set
+CONFIG_VLAN_8021Q=m
+CONFIG_VLAN_8021Q_GVRP=y
+CONFIG_DECNET=m
+# CONFIG_DECNET_ROUTER is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+CONFIG_WAN_ROUTER=m
+CONFIG_PHONET=m
+CONFIG_IEEE802154=m
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+# CONFIG_CLS_U32_PERF is not set
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=y
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_DROP_MONITOR is not set
+CONFIG_HAMRADIO=y
+
+#
+# Packet Radio protocols
+#
+CONFIG_AX25=m
+# CONFIG_AX25_DAMA_SLAVE is not set
+CONFIG_NETROM=m
+CONFIG_ROSE=m
+
+#
+# AX.25 network device drivers
+#
+CONFIG_MKISS=m
+CONFIG_6PACK=m
+CONFIG_BPQETHER=m
+CONFIG_BAYCOM_SER_FDX=m
+CONFIG_BAYCOM_SER_HDX=m
+CONFIG_BAYCOM_PAR=m
+CONFIG_YAM=m
+CONFIG_CAN=m
+CONFIG_CAN_RAW=m
+CONFIG_CAN_BCM=m
+
+#
+# CAN Device Drivers
+#
+CONFIG_CAN_VCAN=m
+CONFIG_CAN_DEV=m
+# CONFIG_CAN_CALC_BITTIMING is not set
+CONFIG_CAN_SJA1000=m
+CONFIG_CAN_SJA1000_PLATFORM=m
+CONFIG_CAN_EMS_PCI=m
+CONFIG_CAN_KVASER_PCI=m
+
+#
+# CAN USB interfaces
+#
+CONFIG_CAN_EMS_USB=m
+# CONFIG_CAN_DEBUG_DEVICES is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+CONFIG_DONGLE=y
+CONFIG_ESI_DONGLE=m
+CONFIG_ACTISYS_DONGLE=m
+CONFIG_TEKRAM_DONGLE=m
+CONFIG_TOIM3232_DONGLE=m
+CONFIG_LITELINK_DONGLE=m
+CONFIG_MA600_DONGLE=m
+CONFIG_GIRBIL_DONGLE=m
+CONFIG_MCP2120_DONGLE=m
+CONFIG_OLD_BELKIN_DONGLE=m
+CONFIG_ACT200L_DONGLE=m
+CONFIG_KINGSUN_DONGLE=m
+CONFIG_KSDAZZLE_DONGLE=m
+CONFIG_KS959_DONGLE=m
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+CONFIG_NSC_FIR=m
+CONFIG_WINBOND_FIR=m
+CONFIG_SMC_IRCC_FIR=m
+CONFIG_ALI_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_VIA_FIR=m
+CONFIG_MCS_FIR=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_BT_MRVL=m
+CONFIG_BT_MRVL_SDIO=m
+CONFIG_BT_ATH3K=m
+CONFIG_AF_RXRPC=m
+# CONFIG_AF_RXRPC_DEBUG is not set
+CONFIG_RXKAD=m
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WEXT_CORE=y
+CONFIG_WEXT_PROC=y
+CONFIG_WEXT_SPY=y
+CONFIG_WEXT_PRIV=y
+CONFIG_CFG80211=m
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+# CONFIG_CFG80211_REG_DEBUG is not set
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEBUGFS is not set
+CONFIG_WIRELESS_OLD_REGULATORY=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_LIB80211=m
+CONFIG_LIB80211_CRYPT_WEP=m
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=m
+CONFIG_MAC80211_RC_MINSTREL=y
+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel"
+CONFIG_MAC80211_MESH=y
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_WIMAX=m
+CONFIG_WIMAX_DEBUG_LEVEL=8
+CONFIG_RFKILL=m
+CONFIG_RFKILL_LEDS=y
+CONFIG_RFKILL_INPUT=y
+CONFIG_NET_9P=m
+CONFIG_NET_9P_VIRTIO=m
+CONFIG_NET_9P_RDMA=m
+# CONFIG_NET_9P_DEBUG is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=m
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_TESTS=m
+CONFIG_MTD_CONCAT=m
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=m
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+CONFIG_MTD_AR7_PARTS=m
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_HAVE_MTD_OTP=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+CONFIG_MTD_BLOCK_RO=m
+CONFIG_FTL=m
+CONFIG_NFTL=m
+CONFIG_NFTL_RW=y
+CONFIG_INFTL=m
+CONFIG_RFD_FTL=m
+CONFIG_SSFDC=m
+CONFIG_MTD_OOPS=m
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=m
+CONFIG_MTD_JEDECPROBE=m
+CONFIG_MTD_GEN_PROBE=m
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+CONFIG_MTD_MAP_BANK_WIDTH_8=y
+CONFIG_MTD_MAP_BANK_WIDTH_16=y
+CONFIG_MTD_MAP_BANK_WIDTH_32=y
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+CONFIG_MTD_CFI_I4=y
+CONFIG_MTD_CFI_I8=y
+CONFIG_MTD_OTP=y
+CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
+CONFIG_MTD_CFI_UTIL=m
+CONFIG_MTD_RAM=m
+CONFIG_MTD_ROM=m
+CONFIG_MTD_ABSENT=m
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_PHYSMAP=m
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
+CONFIG_MTD_SC520CDP=m
+CONFIG_MTD_NETSC520=m
+CONFIG_MTD_TS5500=m
+CONFIG_MTD_SBC_GXX=m
+CONFIG_MTD_AMD76XROM=m
+CONFIG_MTD_ICHXROM=m
+CONFIG_MTD_ESB2ROM=m
+CONFIG_MTD_CK804XROM=m
+CONFIG_MTD_SCB2_FLASH=m
+CONFIG_MTD_NETtel=m
+CONFIG_MTD_L440GX=m
+CONFIG_MTD_PCI=m
+CONFIG_MTD_GPIO_ADDR=m
+CONFIG_MTD_INTEL_VR_NOR=m
+CONFIG_MTD_PLATRAM=m
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_PMC551=m
+CONFIG_MTD_PMC551_BUGFIX=y
+# CONFIG_MTD_PMC551_DEBUG is not set
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_PHRAM=m
+CONFIG_MTD_MTDRAM=m
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTDRAM_ERASE_SIZE=128
+CONFIG_MTD_BLOCK2MTD=m
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+CONFIG_MTD_DOC2001PLUS=m
+CONFIG_MTD_DOCPROBE=m
+CONFIG_MTD_DOCECC=m
+CONFIG_MTD_DOCPROBE_ADVANCED=y
+CONFIG_MTD_DOCPROBE_ADDRESS=0x0000
+CONFIG_MTD_DOCPROBE_HIGH=y
+CONFIG_MTD_DOCPROBE_55AA=y
+CONFIG_MTD_NAND=m
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+CONFIG_MTD_NAND_ECC_SMC=y
+CONFIG_MTD_NAND_MUSEUM_IDS=y
+CONFIG_MTD_NAND_IDS=m
+CONFIG_MTD_NAND_DISKONCHIP=m
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y
+CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y
+CONFIG_MTD_NAND_CAFE=m
+CONFIG_MTD_NAND_NANDSIM=m
+CONFIG_MTD_NAND_PLATFORM=m
+CONFIG_MTD_ALAUDA=m
+CONFIG_MTD_ONENAND=m
+CONFIG_MTD_ONENAND_VERIFY_WRITE=y
+CONFIG_MTD_ONENAND_GENERIC=m
+CONFIG_MTD_ONENAND_OTP=y
+CONFIG_MTD_ONENAND_2X_PROGRAM=y
+CONFIG_MTD_ONENAND_SIM=m
+
+#
+# LPDDR flash memory drivers
+#
+CONFIG_MTD_LPDDR=m
+CONFIG_MTD_QINFO_PROBE=m
+
+#
+# UBI - Unsorted block images
+#
+CONFIG_MTD_UBI=m
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_RESERVE=1
+CONFIG_MTD_UBI_GLUEBI=m
+
+#
+# UBI debugging options
+#
+# CONFIG_MTD_UBI_DEBUG is not set
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+CONFIG_PARPORT_SERIAL=m
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+CONFIG_PARPORT_PC_PCMCIA=m
+# CONFIG_PARPORT_GSC is not set
+CONFIG_PARPORT_AX88796=m
+CONFIG_PARPORT_1284=y
+CONFIG_PARPORT_NOT_PC=y
+CONFIG_PNP=y
+CONFIG_PNP_DEBUG_MESSAGES=y
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_FD=y
+CONFIG_PARIDE=m
+
+#
+# Parallel IDE high-level drivers
+#
+CONFIG_PARIDE_PD=m
+CONFIG_PARIDE_PCD=m
+CONFIG_PARIDE_PF=m
+CONFIG_PARIDE_PT=m
+CONFIG_PARIDE_PG=m
+
+#
+# Parallel IDE protocol modules
+#
+CONFIG_PARIDE_ATEN=m
+CONFIG_PARIDE_BPCK=m
+CONFIG_PARIDE_COMM=m
+CONFIG_PARIDE_DSTR=m
+CONFIG_PARIDE_FIT2=m
+CONFIG_PARIDE_FIT3=m
+CONFIG_PARIDE_EPAT=m
+CONFIG_PARIDE_EPATC8=y
+CONFIG_PARIDE_EPIA=m
+CONFIG_PARIDE_FRIQ=m
+CONFIG_PARIDE_FRPW=m
+CONFIG_PARIDE_KBIC=m
+CONFIG_PARIDE_KTTI=m
+CONFIG_PARIDE_ON20=m
+CONFIG_PARIDE_ON26=m
+CONFIG_BLK_CPQ_DA=m
+CONFIG_BLK_CPQ_CISS_DA=m
+CONFIG_CISS_SCSI_TAPE=y
+CONFIG_BLK_DEV_DAC960=m
+CONFIG_BLK_DEV_UMEM=m
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_DRBD=m
+# CONFIG_DRBD_FAULT_INJECTION is not set
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_OSD=m
+CONFIG_BLK_DEV_SX8=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+CONFIG_VIRTIO_BLK=m
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_MISC_DEVICES=y
+CONFIG_AD525X_DPOT=m
+CONFIG_IBM_ASM=m
+CONFIG_PHANTOM=m
+CONFIG_SGI_IOC4=m
+CONFIG_TIFM_CORE=m
+CONFIG_TIFM_7XX1=m
+CONFIG_ICS932S401=m
+CONFIG_ENCLOSURE_SERVICES=m
+CONFIG_CS5535_MFGPT=m
+CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
+CONFIG_HP_ILO=m
+CONFIG_ISL29003=m
+CONFIG_DS1682=m
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+CONFIG_EEPROM_AT24=m
+CONFIG_EEPROM_LEGACY=m
+CONFIG_EEPROM_MAX6875=m
+CONFIG_EEPROM_93CX6=m
+CONFIG_CB710_CORE=m
+# CONFIG_CB710_DEBUG is not set
+CONFIG_CB710_DEBUG_ASSUMPTIONS=y
+CONFIG_IWMC3200TOP=m
+# CONFIG_IWMC3200TOP_DEBUG is not set
+# CONFIG_IWMC3200TOP_DEBUGFS is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+CONFIG_RAID_ATTRS=y
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+CONFIG_SCSI_TGT=y
+CONFIG_SCSI_NETLINK=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SCH=m
+CONFIG_SCSI_ENCLOSURE=m
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=y
+CONFIG_SCSI_FC_ATTRS=m
+CONFIG_SCSI_FC_TGT_ATTRS=y
+CONFIG_SCSI_ISCSI_ATTRS=y
+CONFIG_SCSI_SAS_ATTRS=y
+CONFIG_SCSI_SAS_LIBSAS=y
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_SCSI_SAS_HOST_SMP=y
+# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
+CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_SRP_TGT_ATTRS=y
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_BE2ISCSI=m
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_SCSI_HPSA=m
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_3W_SAS=m
+CONFIG_SCSI_ACARD=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=m
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_AIC7XXX_OLD=m
+CONFIG_SCSI_AIC79XX=m
+CONFIG_AIC79XX_CMDS_PER_DEVICE=4
+CONFIG_AIC79XX_RESET_DELAY_MS=15000
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_AIC94XX=m
+# CONFIG_AIC94XX_DEBUG is not set
+CONFIG_SCSI_MVSAS=m
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_DPT_I2O=m
+CONFIG_SCSI_ADVANSYS=m
+CONFIG_SCSI_ARCMSR=m
+# CONFIG_SCSI_ARCMSR_AER is not set
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_LEGACY=m
+CONFIG_MEGARAID_SAS=m
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
+# CONFIG_SCSI_MPT2SAS_LOGGING is not set
+CONFIG_SCSI_HPTIOP=m
+CONFIG_SCSI_BUSLOGIC=m
+CONFIG_VMWARE_PVSCSI=m
+CONFIG_LIBFC=m
+CONFIG_LIBFCOE=m
+CONFIG_FCOE=m
+CONFIG_FCOE_FNIC=m
+CONFIG_SCSI_DMX3191D=m
+CONFIG_SCSI_EATA=m
+# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
+# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_FUTURE_DOMAIN=m
+CONFIG_SCSI_GDTH=m
+CONFIG_SCSI_IPS=m
+CONFIG_SCSI_INITIO=m
+CONFIG_SCSI_INIA100=m
+CONFIG_SCSI_PPA=m
+CONFIG_SCSI_IMM=m
+# CONFIG_SCSI_IZIP_EPP16 is not set
+# CONFIG_SCSI_IZIP_SLOW_CTR is not set
+CONFIG_SCSI_STEX=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+CONFIG_SCSI_IPR=m
+# CONFIG_SCSI_IPR_TRACE is not set
+# CONFIG_SCSI_IPR_DUMP is not set
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_DEBUG=m
+CONFIG_SCSI_PMCRAID=m
+CONFIG_SCSI_PM8001=m
+CONFIG_SCSI_SRP=m
+CONFIG_SCSI_BFA_FC=m
+CONFIG_SCSI_LOWLEVEL_PCMCIA=y
+CONFIG_PCMCIA_FDOMAIN=m
+CONFIG_PCMCIA_QLOGIC=m
+CONFIG_PCMCIA_SYM53C500=m
+CONFIG_SCSI_DH=m
+CONFIG_SCSI_DH_RDAC=m
+CONFIG_SCSI_DH_HP_SW=m
+CONFIG_SCSI_DH_EMC=m
+CONFIG_SCSI_DH_ALUA=m
+CONFIG_SCSI_OSD_INITIATOR=m
+CONFIG_SCSI_OSD_ULD=m
+CONFIG_SCSI_OSD_DPRINT_SENSE=1
+# CONFIG_SCSI_OSD_DEBUG is not set
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_ATA_VERBOSE_ERROR=y
+CONFIG_ATA_ACPI=y
+CONFIG_SATA_PMP=y
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_SIL24=y
+CONFIG_ATA_SFF=y
+CONFIG_SATA_SVW=y
+CONFIG_ATA_PIIX=y
+CONFIG_SATA_MV=y
+CONFIG_SATA_NV=y
+CONFIG_PDC_ADMA=y
+CONFIG_SATA_QSTOR=y
+CONFIG_SATA_PROMISE=y
+CONFIG_SATA_SX4=y
+CONFIG_SATA_SIL=y
+CONFIG_SATA_SIS=y
+CONFIG_SATA_ULI=y
+CONFIG_SATA_VIA=y
+CONFIG_SATA_VITESSE=y
+CONFIG_SATA_INIC162X=y
+CONFIG_PATA_ACPI=y
+CONFIG_PATA_ALI=y
+CONFIG_PATA_AMD=y
+CONFIG_PATA_ARTOP=y
+CONFIG_PATA_ATP867X=y
+CONFIG_PATA_ATIIXP=y
+CONFIG_PATA_CMD640_PCI=y
+CONFIG_PATA_CMD64X=y
+CONFIG_PATA_CS5520=y
+CONFIG_PATA_CS5530=y
+CONFIG_PATA_CYPRESS=y
+CONFIG_PATA_EFAR=y
+CONFIG_ATA_GENERIC=y
+CONFIG_PATA_HPT366=y
+CONFIG_PATA_HPT37X=y
+CONFIG_PATA_HPT3X2N=y
+CONFIG_PATA_HPT3X3=y
+CONFIG_PATA_HPT3X3_DMA=y
+CONFIG_PATA_IT821X=y
+CONFIG_PATA_IT8213=y
+CONFIG_PATA_JMICRON=y
+CONFIG_PATA_TRIFLEX=y
+CONFIG_PATA_MARVELL=y
+CONFIG_PATA_MPIIX=y
+CONFIG_PATA_OLDPIIX=y
+CONFIG_PATA_NETCELL=y
+CONFIG_PATA_NINJA32=y
+CONFIG_PATA_NS87410=y
+CONFIG_PATA_NS87415=y
+CONFIG_PATA_OPTI=y
+CONFIG_PATA_OPTIDMA=y
+CONFIG_PATA_PCMCIA=m
+CONFIG_PATA_PDC2027X=y
+CONFIG_PATA_PDC_OLD=y
+CONFIG_PATA_RADISYS=y
+CONFIG_PATA_RDC=y
+CONFIG_PATA_RZ1000=y
+CONFIG_PATA_SC1200=y
+CONFIG_PATA_SERVERWORKS=y
+CONFIG_PATA_SIL680=y
+CONFIG_PATA_SIS=y
+CONFIG_PATA_TOSHIBA=m
+CONFIG_PATA_VIA=y
+CONFIG_PATA_WINBOND=y
+CONFIG_PATA_SCH=y
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_AUTODETECT=y
+CONFIG_MD_LINEAR=y
+CONFIG_MD_RAID0=y
+CONFIG_MD_RAID1=y
+CONFIG_MD_RAID10=y
+CONFIG_MD_RAID456=y
+# CONFIG_MULTICORE_RAID456 is not set
+CONFIG_MD_RAID6_PQ=y
+CONFIG_ASYNC_RAID6_TEST=m
+CONFIG_MD_MULTIPATH=y
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=y
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=y
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_QL=m
+CONFIG_DM_MULTIPATH_ST=m
+# CONFIG_DM_DELAY is not set
+CONFIG_DM_UEVENT=y
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=m
+CONFIG_FUSION_FC=m
+CONFIG_FUSION_SAS=m
+CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_CTL=m
+CONFIG_FUSION_LAN=m
+# CONFIG_FUSION_LOGGING is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# You can enable one or both FireWire driver stacks.
+#
+
+#
+# The newer stack is recommended.
+#
+# CONFIG_FIREWIRE is not set
+CONFIG_IEEE1394=m
+CONFIG_IEEE1394_OHCI1394=m
+CONFIG_IEEE1394_PCILYNX=m
+CONFIG_IEEE1394_SBP2=m
+# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
+CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_RAWIO=m
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_DV1394=m
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+CONFIG_I2O=m
+CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
+CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_EXT_ADAPTEC_DMA64=y
+CONFIG_I2O_CONFIG=m
+# CONFIG_I2O_CONFIG_OLD_IOCTL is not set
+CONFIG_I2O_BUS=m
+CONFIG_I2O_BLOCK=m
+CONFIG_I2O_SCSI=m
+CONFIG_I2O_PROC=m
+CONFIG_MACINTOSH_DRIVERS=y
+CONFIG_MAC_EMUMOUSEBTN=y
+CONFIG_NETDEVICES=y
+CONFIG_IFB=m
+CONFIG_DUMMY=m
+CONFIG_BONDING=m
+CONFIG_MACVLAN=m
+CONFIG_EQUALIZER=m
+CONFIG_TUN=m
+CONFIG_VETH=m
+CONFIG_NET_SB1000=m
+CONFIG_ARCNET=m
+CONFIG_ARCNET_1201=m
+CONFIG_ARCNET_1051=m
+CONFIG_ARCNET_RAW=m
+CONFIG_ARCNET_CAP=m
+CONFIG_ARCNET_COM90xx=m
+CONFIG_ARCNET_COM90xxIO=m
+CONFIG_ARCNET_RIM_I=m
+CONFIG_ARCNET_COM20020=m
+CONFIG_ARCNET_COM20020_PCI=m
+CONFIG_PHYLIB=m
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_ICPLUS_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_STE10XP=m
+CONFIG_LSI_ET1011C_PHY=m
+CONFIG_MDIO_BITBANG=m
+CONFIG_MDIO_GPIO=m
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_CASSINI=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_ETHOC=m
+CONFIG_DNET=m
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_DE2104X_DSL=0
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+CONFIG_TULIP_MMIO=y
+# CONFIG_TULIP_NAPI is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+CONFIG_PCMCIA_XIRCOM=m
+CONFIG_HP100=m
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+CONFIG_AMD8111_ETH=m
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_FORCEDETH=m
+CONFIG_FORCEDETH_NAPI=y
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R6040=m
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SMSC9420=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_KS8842=m
+CONFIG_KS8851_MLL=m
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_SC92031=m
+CONFIG_NET_POCKET=y
+CONFIG_ATP=m
+CONFIG_DE600=m
+CONFIG_DE620=m
+CONFIG_ATL2=m
+CONFIG_NETDEV_1000=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IP1000=m
+CONFIG_IGB=m
+CONFIG_IGB_DCA=y
+CONFIG_IGBVF=m
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+CONFIG_R8169_VLAN=y
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+CONFIG_CNIC=m
+CONFIG_QLA3XXX=m
+CONFIG_ATL1=m
+CONFIG_ATL1E=m
+CONFIG_ATL1C=m
+CONFIG_JME=m
+CONFIG_NETDEV_10000=y
+CONFIG_MDIO=m
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T1_1G=y
+CONFIG_CHELSIO_T3_DEPENDS=y
+CONFIG_CHELSIO_T3=m
+CONFIG_ENIC=m
+CONFIG_IXGBE=m
+CONFIG_IXGBE_DCA=y
+CONFIG_IXGB=m
+CONFIG_S2IO=m
+CONFIG_VXGE=m
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
+CONFIG_MYRI10GE=m
+CONFIG_MYRI10GE_DCA=y
+CONFIG_NETXEN_NIC=m
+CONFIG_NIU=m
+CONFIG_MLX4_EN=m
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
+CONFIG_TEHUTI=m
+CONFIG_BNX2X=m
+CONFIG_QLGE=m
+CONFIG_SFC=m
+CONFIG_SFC_MTD=y
+CONFIG_BE2NET=m
+CONFIG_TR=m
+CONFIG_IBMOL=m
+CONFIG_3C359=m
+CONFIG_TMS380TR=m
+CONFIG_TMSPCI=m
+CONFIG_ABYSS=m
+CONFIG_WLAN=y
+CONFIG_PCMCIA_RAYCS=m
+CONFIG_LIBERTAS_THINFIRM=m
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_AIRO=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_AT76C50X_USB=m
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_WL3501=m
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
+CONFIG_ADM8211=m
+# CONFIG_MAC80211_HWSIM is not set
+CONFIG_MWL8K=m
+CONFIG_ATH_COMMON=m
+# CONFIG_ATH_DEBUG is not set
+CONFIG_ATH5K=m
+# CONFIG_ATH5K_DEBUG is not set
+CONFIG_ATH9K_HW=m
+CONFIG_ATH9K_COMMON=m
+CONFIG_ATH9K=m
+# CONFIG_ATH9K_DEBUGFS is not set
+CONFIG_AR9170_USB=m
+CONFIG_AR9170_LEDS=y
+CONFIG_B43=m
+CONFIG_B43_PCI_AUTOSELECT=y
+CONFIG_B43_PCICORE_AUTOSELECT=y
+CONFIG_B43_PCMCIA=y
+CONFIG_B43_SDIO=y
+CONFIG_B43_PIO=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_LEDS=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_PCI_AUTOSELECT=y
+CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+CONFIG_B43LEGACY_LEDS=y
+CONFIG_B43LEGACY_HWRNG=y
+# CONFIG_B43LEGACY_DEBUG is not set
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_HOSTAP_CS=m
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBIPW=m
+# CONFIG_LIBIPW_DEBUG is not set
+CONFIG_IWLWIFI=m
+CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y
+# CONFIG_IWLWIFI_DEBUG is not set
+# CONFIG_IWLWIFI_DEVICE_TRACING is not set
+CONFIG_IWLAGN=m
+CONFIG_IWL4965=y
+CONFIG_IWL5000=y
+CONFIG_IWL3945=m
+CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
+CONFIG_IWM=m
+# CONFIG_IWM_DEBUG is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_HERMES=m
+CONFIG_HERMES_CACHE_FW_ON_INIT=y
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
+CONFIG_P54_PCI=m
+CONFIG_P54_LEDS=y
+CONFIG_RT2X00=m
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT61PCI=m
+CONFIG_RT2800PCI_PCI=m
+CONFIG_RT2800PCI=m
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800_LIB=m
+CONFIG_RT2X00_LIB_PCI=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_HT=y
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_WL12XX=m
+CONFIG_WL1251=m
+CONFIG_WL1251_SDIO=m
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+
+#
+# WiMAX Wireless Broadband devices
+#
+CONFIG_WIMAX_I2400M=m
+CONFIG_WIMAX_I2400M_USB=m
+CONFIG_WIMAX_I2400M_SDIO=m
+# CONFIG_WIMAX_IWMC3200_SDIO is not set
+CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+# CONFIG_USB_EPSON2888 is not set
+# CONFIG_USB_KC2190 is not set
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_CDC_PHONET=m
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+CONFIG_ARCNET_COM20020_CS=m
+CONFIG_PCMCIA_IBMTR=m
+CONFIG_WAN=y
+CONFIG_LANMEDIA=m
+CONFIG_HDLC=m
+CONFIG_HDLC_RAW=m
+CONFIG_HDLC_RAW_ETH=m
+CONFIG_HDLC_CISCO=m
+CONFIG_HDLC_FR=m
+CONFIG_HDLC_PPP=m
+
+#
+# X.25/LAPB support is disabled
+#
+CONFIG_PCI200SYN=m
+CONFIG_WANXL=m
+# CONFIG_PC300TOO is not set
+CONFIG_FARSYNC=m
+CONFIG_DSCC4=m
+# CONFIG_DSCC4_PCISYNC is not set
+# CONFIG_DSCC4_PCI_RST is not set
+CONFIG_DLCI=m
+CONFIG_DLCI_MAX=8
+CONFIG_WAN_ROUTER_DRIVERS=m
+CONFIG_CYCLADES_SYNC=m
+CONFIG_CYCLOMX_X25=y
+CONFIG_SBNI=m
+# CONFIG_SBNI_MULTILINE is not set
+CONFIG_ATM_DRIVERS=y
+CONFIG_ATM_DUMMY=m
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_FIRESTREAM=m
+CONFIG_ATM_ZATM=m
+# CONFIG_ATM_ZATM_DEBUG is not set
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+# CONFIG_ATM_IDT77252_RCV_ALL is not set
+CONFIG_ATM_IDT77252_USE_SUNI=y
+CONFIG_ATM_AMBASSADOR=m
+# CONFIG_ATM_AMBASSADOR_DEBUG is not set
+CONFIG_ATM_HORIZON=m
+# CONFIG_ATM_HORIZON_DEBUG is not set
+CONFIG_ATM_IA=m
+# CONFIG_ATM_IA_DEBUG is not set
+CONFIG_ATM_FORE200E=m
+# CONFIG_ATM_FORE200E_USE_TASKLET is not set
+CONFIG_ATM_FORE200E_TX_RETRY=16
+CONFIG_ATM_FORE200E_DEBUG=0
+CONFIG_ATM_HE=m
+# CONFIG_ATM_HE_USE_SUNI is not set
+CONFIG_ATM_SOLOS=m
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKEHARD=m
+CONFIG_FDDI=y
+CONFIG_DEFXX=m
+# CONFIG_DEFXX_MMIO is not set
+CONFIG_SKFP=m
+CONFIG_HIPPI=y
+CONFIG_ROADRUNNER=m
+# CONFIG_ROADRUNNER_LARGE_RINGS is not set
+CONFIG_PLIP=m
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_PPPOL2TP=m
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=m
+CONFIG_SLIP_SMART=y
+# CONFIG_SLIP_MODE_SLIP6 is not set
+CONFIG_NET_FC=y
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_VIRTIO_NET=m
+CONFIG_VMXNET3=m
+CONFIG_ISDN=y
+CONFIG_ISDN_I4L=m
+CONFIG_MISDN=m
+CONFIG_MISDN_DSP=m
+CONFIG_MISDN_L1OIP=m
+
+#
+# mISDN hardware drivers
+#
+CONFIG_MISDN_HFCPCI=m
+CONFIG_MISDN_HFCMULTI=m
+CONFIG_MISDN_HFCUSB=m
+CONFIG_MISDN_AVMFRITZ=m
+CONFIG_MISDN_SPEEDFAX=m
+CONFIG_MISDN_INFINEON=m
+CONFIG_MISDN_W6692=m
+CONFIG_MISDN_NETJET=m
+CONFIG_MISDN_IPAC=m
+CONFIG_MISDN_ISAR=m
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+CONFIG_ISDN_PPP_BSDCOMP=m
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+
+#
+# ISDN feature submodules
+#
+CONFIG_ISDN_DIVERSION=m
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+CONFIG_HISAX_NO_SENDCOMPLETE=y
+CONFIG_HISAX_NO_LLC=y
+CONFIG_HISAX_NO_KEYPAD=y
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NETJET=y
+CONFIG_HISAX_NETJET_U=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+CONFIG_HISAX_ENTERNOW_PCI=y
+# CONFIG_HISAX_DEBUG is not set
+
+#
+# HiSax PCMCIA card service modules
+#
+CONFIG_HISAX_SEDLBAUER_CS=m
+CONFIG_HISAX_ELSA_CS=m
+CONFIG_HISAX_AVM_A1_CS=m
+CONFIG_HISAX_TELES_CS=m
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+
+#
+# Active cards
+#
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_ISDN_HDLC=m
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIFS=m
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+#
+# CAPI hardware drivers
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+CONFIG_ISDN_DRV_GIGASET=m
+# CONFIG_GIGASET_CAPI is not set
+CONFIG_GIGASET_I4L=y
+# CONFIG_GIGASET_DUMMYLL is not set
+CONFIG_GIGASET_BASE=m
+CONFIG_GIGASET_M105=m
+# CONFIG_GIGASET_M101 is not set
+# CONFIG_GIGASET_DEBUG is not set
+CONFIG_PHONE=m
+CONFIG_PHONE_IXJ=m
+CONFIG_PHONE_IXJ_PCMCIA=m
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=y
+CONFIG_INPUT_POLLDEV=m
+CONFIG_INPUT_SPARSEKMAP=m
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_JOYDEV=m
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ADP5588=m
+CONFIG_KEYBOARD_ATKBD=y
+CONFIG_QT2160=m
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_MATRIX=m
+CONFIG_KEYBOARD_LM8323=m
+CONFIG_KEYBOARD_MAX7359=m
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_KEYBOARD_OPENCORES=m
+CONFIG_KEYBOARD_STOWAWAY=m
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+CONFIG_MOUSE_PS2_SENTELIC=y
+CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_SERIAL=m
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_VSXXXAA=m
+CONFIG_MOUSE_GPIO=m
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_ANALOG=m
+CONFIG_JOYSTICK_A3D=m
+CONFIG_JOYSTICK_ADI=m
+CONFIG_JOYSTICK_COBRA=m
+CONFIG_JOYSTICK_GF2K=m
+CONFIG_JOYSTICK_GRIP=m
+CONFIG_JOYSTICK_GRIP_MP=m
+CONFIG_JOYSTICK_GUILLEMOT=m
+CONFIG_JOYSTICK_INTERACT=m
+CONFIG_JOYSTICK_SIDEWINDER=m
+CONFIG_JOYSTICK_TMDC=m
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=y
+CONFIG_JOYSTICK_IFORCE_232=y
+CONFIG_JOYSTICK_WARRIOR=m
+CONFIG_JOYSTICK_MAGELLAN=m
+CONFIG_JOYSTICK_SPACEORB=m
+CONFIG_JOYSTICK_SPACEBALL=m
+CONFIG_JOYSTICK_STINGER=m
+CONFIG_JOYSTICK_TWIDJOY=m
+CONFIG_JOYSTICK_ZHENHUA=m
+CONFIG_JOYSTICK_DB9=m
+CONFIG_JOYSTICK_GAMECON=m
+CONFIG_JOYSTICK_TURBOGRAFX=m
+CONFIG_JOYSTICK_JOYDUMP=m
+CONFIG_JOYSTICK_XPAD=m
+CONFIG_JOYSTICK_XPAD_FF=y
+CONFIG_JOYSTICK_XPAD_LEDS=y
+# CONFIG_JOYSTICK_WALKERA0701 is not set
+CONFIG_INPUT_TABLET=y
+CONFIG_TABLET_USB_ACECAD=m
+CONFIG_TABLET_USB_AIPTEK=m
+CONFIG_TABLET_USB_GTCO=m
+CONFIG_TABLET_USB_KBTAB=m
+CONFIG_TABLET_USB_WACOM=m
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_AD7879_I2C=m
+CONFIG_TOUCHSCREEN_AD7879=m
+CONFIG_TOUCHSCREEN_DYNAPRO=m
+CONFIG_TOUCHSCREEN_EETI=m
+CONFIG_TOUCHSCREEN_FUJITSU=m
+CONFIG_TOUCHSCREEN_GUNZE=m
+CONFIG_TOUCHSCREEN_ELO=m
+CONFIG_TOUCHSCREEN_WACOM_W8001=m
+CONFIG_TOUCHSCREEN_MCS5000=m
+CONFIG_TOUCHSCREEN_MTOUCH=m
+CONFIG_TOUCHSCREEN_INEXIO=m
+CONFIG_TOUCHSCREEN_MK712=m
+CONFIG_TOUCHSCREEN_PENMOUNT=m
+CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
+CONFIG_TOUCHSCREEN_TOUCHWIN=m
+CONFIG_TOUCHSCREEN_UCB1400=m
+CONFIG_TOUCHSCREEN_WM97XX=m
+CONFIG_TOUCHSCREEN_WM9705=y
+CONFIG_TOUCHSCREEN_WM9712=y
+CONFIG_TOUCHSCREEN_WM9713=y
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
+CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
+CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
+CONFIG_TOUCHSCREEN_USB_GOTOP=y
+CONFIG_TOUCHSCREEN_USB_JASTEC=y
+CONFIG_TOUCHSCREEN_USB_E2I=y
+CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
+CONFIG_TOUCHSCREEN_USB_ETT_TC5UH=y
+CONFIG_TOUCHSCREEN_TOUCHIT213=m
+CONFIG_TOUCHSCREEN_TSC2007=m
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_APANEL=m
+CONFIG_INPUT_ATLAS_BTNS=m
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_POWERMATE=m
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_CM109=m
+CONFIG_INPUT_UINPUT=m
+CONFIG_INPUT_WINBOND_CIR=m
+CONFIG_INPUT_PCF50633_PMU=m
+CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_CT82C710=m
+CONFIG_SERIO_PARKBD=m
+CONFIG_SERIO_PCIPS2=m
+CONFIG_SERIO_LIBPS2=y
+CONFIG_SERIO_RAW=m
+CONFIG_SERIO_ALTERA_PS2=m
+CONFIG_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+CONFIG_GAMEPORT_L4=m
+CONFIG_GAMEPORT_EMU10K1=m
+CONFIG_GAMEPORT_FM801=m
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_DEVKMEM=y
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_COMPUTONE=m
+CONFIG_ROCKETPORT=m
+CONFIG_CYCLADES=m
+# CONFIG_CYZ_INTR is not set
+CONFIG_DIGIEPCA=m
+CONFIG_MOXA_INTELLIO=m
+CONFIG_MOXA_SMARTIO=m
+CONFIG_ISI=m
+CONFIG_SYNCLINK=m
+CONFIG_SYNCLINKMP=m
+CONFIG_SYNCLINK_GT=m
+CONFIG_N_HDLC=m
+CONFIG_RISCOM8=m
+CONFIG_SPECIALIX=m
+CONFIG_STALDRV=y
+CONFIG_STALLION=m
+CONFIG_ISTALLION=m
+CONFIG_NOZOMI=m
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+CONFIG_SERIAL_8250_RSA=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_JSM=m
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+CONFIG_PRINTER=m
+CONFIG_LP_CONSOLE=y
+CONFIG_PPDEV=m
+CONFIG_HVC_DRIVER=y
+CONFIG_VIRTIO_CONSOLE=m
+CONFIG_IPMI_HANDLER=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_TIMERIOMEM=m
+CONFIG_HW_RANDOM_INTEL=m
+CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_VIA=m
+CONFIG_HW_RANDOM_VIRTIO=m
+CONFIG_NVRAM=m
+CONFIG_R3964=m
+CONFIG_APPLICOM=m
+
+#
+# PCMCIA character devices
+#
+CONFIG_SYNCLINK_CS=m
+CONFIG_CARDMAN_4000=m
+CONFIG_CARDMAN_4040=m
+CONFIG_IPWIRELESS=m
+CONFIG_MWAVE=m
+CONFIG_PC8736x_GPIO=m
+CONFIG_NSC_GPIO=m
+CONFIG_RAW_DRIVER=m
+CONFIG_MAX_RAW_DEVS=256
+CONFIG_HPET=y
+CONFIG_HPET_MMAP=y
+CONFIG_HANGCHECK_TIMER=m
+CONFIG_TCG_TPM=m
+# CONFIG_TCG_TIS is not set
+# CONFIG_TCG_NSC is not set
+CONFIG_TCG_ATMEL=m
+# CONFIG_TCG_INFINEON is not set
+CONFIG_TELCLOCK=m
+CONFIG_DEVPORT=y
+CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_ISCH=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_NFORCE2_S4985=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+
+#
+# ACPI drivers
+#
+CONFIG_I2C_SCMI=m
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+CONFIG_I2C_GPIO=m
+CONFIG_I2C_OCORES=m
+CONFIG_I2C_SIMTEC=m
+
+#
+# External I2C/SMBus adapter drivers
+#
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_TAOS_EVM=m
+CONFIG_I2C_TINY_USB=m
+
+#
+# Other I2C/SMBus bus drivers
+#
+CONFIG_I2C_PCA_PLATFORM=m
+CONFIG_I2C_STUB=m
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_SENSORS_TSL2550=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+# CONFIG_SPI is not set
+
+#
+# PPS support
+#
+CONFIG_PPS=m
+# CONFIG_PPS_DEBUG is not set
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+
+#
+# Memory mapped GPIO expanders:
+#
+
+#
+# I2C GPIO expanders:
+#
+CONFIG_GPIO_MAX732X=m
+CONFIG_GPIO_PCA953X=m
+CONFIG_GPIO_PCF857X=m
+CONFIG_GPIO_ADP5588=m
+
+#
+# PCI GPIO expanders:
+#
+CONFIG_GPIO_CS5535=m
+# CONFIG_GPIO_LANGWELL is not set
+
+#
+# SPI GPIO expanders:
+#
+
+#
+# AC97 GPIO expanders:
+#
+# CONFIG_GPIO_UCB1400 is not set
+CONFIG_W1=m
+CONFIG_W1_CON=y
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_MATROX=m
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+CONFIG_W1_MASTER_GPIO=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2431=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+CONFIG_W1_SLAVE_DS2760=m
+CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_PDA_POWER=m
+CONFIG_WM8350_POWER=m
+CONFIG_BATTERY_DS2760=m
+CONFIG_BATTERY_DS2782=m
+CONFIG_BATTERY_BQ27x00=m
+CONFIG_BATTERY_MAX17040=m
+CONFIG_CHARGER_PCF50633=m
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ABITUGURU3=m
+CONFIG_SENSORS_AD7414=m
+CONFIG_SENSORS_AD7418=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1029=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADT7462=m
+CONFIG_SENSORS_ADT7470=m
+CONFIG_SENSORS_ADT7473=m
+CONFIG_SENSORS_ADT7475=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_K10TEMP=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_I5K_AMB=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_F71882FG=m
+CONFIG_SENSORS_F75375S=m
+CONFIG_SENSORS_FSCHMD=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_CORETEMP=m
+CONFIG_SENSORS_IBMAEM=m
+CONFIG_SENSORS_IBMPEX=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM73=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_LM93=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_SHT15=m
+CONFIG_SENSORS_SIS5595=m
+CONFIG_SENSORS_DME1737=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_ADS7828=m
+CONFIG_SENSORS_AMC6821=m
+CONFIG_SENSORS_THMC50=m
+CONFIG_SENSORS_TMP401=m
+CONFIG_SENSORS_TMP421=m
+CONFIG_SENSORS_VIA_CPUTEMP=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83L786NG=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_WM8350=m
+CONFIG_SENSORS_HDAPS=m
+CONFIG_SENSORS_LIS3_I2C=m
+CONFIG_SENSORS_APPLESMC=m
+
+#
+# ACPI drivers
+#
+CONFIG_SENSORS_ATK0110=m
+CONFIG_SENSORS_LIS3LV02D=m
+CONFIG_THERMAL=m
+CONFIG_THERMAL_HWMON=y
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_WM8350_WATCHDOG=m
+CONFIG_ACQUIRE_WDT=m
+CONFIG_ADVANTECH_WDT=m
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_GEODE_WDT=m
+CONFIG_SC520_WDT=m
+CONFIG_SBC_FITPC2_WATCHDOG=m
+CONFIG_EUROTECH_WDT=m
+CONFIG_IB700_WDT=m
+CONFIG_IBMASR=m
+CONFIG_WAFER_WDT=m
+CONFIG_I6300ESB_WDT=m
+CONFIG_ITCO_WDT=m
+CONFIG_ITCO_VENDOR_SUPPORT=y
+CONFIG_IT8712F_WDT=m
+CONFIG_IT87_WDT=m
+CONFIG_HP_WATCHDOG=m
+CONFIG_SC1200_WDT=m
+CONFIG_PC87413_WDT=m
+CONFIG_60XX_WDT=m
+CONFIG_SBC8360_WDT=m
+CONFIG_CPU5_WDT=m
+CONFIG_SMSC_SCH311X_WDT=m
+CONFIG_SMSC37B787_WDT=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83697HF_WDT=m
+CONFIG_W83697UG_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_W83977F_WDT=m
+CONFIG_MACHZ_WDT=m
+CONFIG_SBC_EPX_C3_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB=m
+CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+CONFIG_SSB_B43_PCI_BRIDGE=y
+CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
+CONFIG_SSB_PCMCIAHOST=y
+CONFIG_SSB_SDIOHOST_POSSIBLE=y
+CONFIG_SSB_SDIOHOST=y
+# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=m
+# CONFIG_MFD_SM501 is not set
+CONFIG_HTC_PASIC3=m
+CONFIG_UCB1400_CORE=m
+CONFIG_TPS65010=m
+# CONFIG_MFD_TMIO is not set
+CONFIG_MFD_WM8400=m
+CONFIG_MFD_WM8350=m
+CONFIG_MFD_WM8350_I2C=m
+CONFIG_MFD_PCF50633=m
+CONFIG_PCF50633_ADC=m
+CONFIG_PCF50633_GPIO=m
+CONFIG_AB3100_CORE=m
+CONFIG_AB3100_OTP=m
+# CONFIG_REGULATOR is not set
+CONFIG_MEDIA_SUPPORT=m
+
+#
+# Multimedia core support
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_DVB_CORE=m
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_IR_CORE=m
+CONFIG_VIDEO_IR=m
+CONFIG_MEDIA_ATTACH=y
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_MT2131=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_MEDIA_TUNER_MAX2165=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DVB=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
+CONFIG_VIDEO_IR_I2C=m
+
+#
+# Encoders/decoders and other helper chips
+#
+
+#
+# Audio decoders
+#
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TDA9875=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_M52790=m
+CONFIG_VIDEO_TLV320AIC23B=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_VP27SMPX=m
+
+#
+# RDS decoders
+#
+CONFIG_VIDEO_SAA6588=m
+
+#
+# Video decoders
+#
+CONFIG_VIDEO_ADV7180=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_BT866=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9V011=m
+CONFIG_VIDEO_TCM825X=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_SAA717X=m
+CONFIG_VIDEO_SAA7191=m
+CONFIG_VIDEO_TVP514X=m
+CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_VPX3220=m
+
+#
+# Video and audio decoders
+#
+CONFIG_VIDEO_CX25840=m
+
+#
+# MPEG video encoders
+#
+CONFIG_VIDEO_CX2341X=m
+
+#
+# Video encoders
+#
+CONFIG_VIDEO_SAA7127=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+CONFIG_VIDEO_THS7303=m
+CONFIG_VIDEO_ADV7343=m
+
+#
+# Video improvement chips
+#
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_BT848=m
+CONFIG_VIDEO_BT848_DVB=y
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_W9966=m
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_PP=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
+CONFIG_VIDEO_MEYE=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_MPEG=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_CX23885=m
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_SAA7164=m
+CONFIG_VIDEO_CAFE_CCIC=m
+CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_MT9M001=m
+CONFIG_SOC_CAMERA_MT9M111=m
+CONFIG_SOC_CAMERA_MT9T031=m
+CONFIG_SOC_CAMERA_MT9T112=m
+CONFIG_SOC_CAMERA_MT9V022=m
+CONFIG_SOC_CAMERA_RJ54N1=m
+CONFIG_SOC_CAMERA_TW9910=m
+CONFIG_SOC_CAMERA_PLATFORM=m
+CONFIG_SOC_CAMERA_OV772X=m
+CONFIG_SOC_CAMERA_OV9640=m
+CONFIG_V4L_USB_DRIVERS=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SN9C20X_EVDEV=y
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+CONFIG_USB_ET61X251=m
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+CONFIG_USB_ZC0301=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_USB_ZR364XX=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_S2255=m
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_I2C_SI4713=m
+CONFIG_RADIO_SI4713=m
+CONFIG_USB_DSBR=m
+# CONFIG_RADIO_SI470X is not set
+CONFIG_USB_MR800=m
+CONFIG_RADIO_TEA5764=m
+CONFIG_RADIO_TEF6862=m
+CONFIG_DVB_MAX_ADAPTERS=8
+# CONFIG_DVB_DYNAMIC_MINORS is not set
+CONFIG_DVB_CAPTURE_DRIVERS=y
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_FRIIO=m
+CONFIG_DVB_USB_EC168=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_SMS_SIANO_MDTV=m
+
+#
+# Siano module components
+#
+CONFIG_SMS_USB_DRV=m
+CONFIG_SMS_SDIO_DRV=m
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
+
+#
+# Supported BT878 Adapters
+#
+CONFIG_DVB_BT8XX=m
+
+#
+# Supported Pluto2 Adapters
+#
+CONFIG_DVB_PLUTO2=m
+
+#
+# Supported SDMC DM1105 Adapters
+#
+CONFIG_DVB_DM1105=m
+
+#
+# Supported FireWire (IEEE 1394) Adapters
+#
+CONFIG_DVB_FIREDTV=m
+# CONFIG_DVB_FIREDTV_FIREWIRE is not set
+CONFIG_DVB_FIREDTV_IEEE1394=y
+CONFIG_DVB_FIREDTV_INPUT=y
+
+#
+# Supported Earthsoft PT1 Adapters
+#
+CONFIG_DVB_PT1=m
+
+#
+# Supported Mantis Adapters
+#
+CONFIG_MANTIS_CORE=m
+CONFIG_DVB_MANTIS=m
+CONFIG_DVB_HOPPER=m
+
+#
+# Supported DVB Frontends
+#
+CONFIG_DVB_FE_CUSTOMISE=y
+
+#
+# Customise DVB Frontends
+#
+
+#
+# Multistandard (satellite) frontends
+#
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_STV090x=m
+CONFIG_DVB_STV6110x=m
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10036=m
+CONFIG_DVB_ZL10039=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_DS3000=m
+CONFIG_DVB_MB86A16=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_DRX397XD=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_EC100=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGDT3304=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_S5H1411=m
+
+#
+# ISDB-T (terrestrial) frontends
+#
+CONFIG_DVB_S921=m
+CONFIG_DVB_DIB8000=m
+
+#
+# Digital terrestrial only tuners/PLL
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_TUNER_DIB0090=m
+
+#
+# SEC control devices for DVB-S
+#
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_ISL6405=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_ISL6423=m
+CONFIG_DVB_LGS8GL5=m
+CONFIG_DVB_LGS8GXX=m
+CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_TDA665x=m
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+CONFIG_AGP=m
+CONFIG_AGP_AMD64=m
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_VIA=m
+CONFIG_VGA_ARB=y
+CONFIG_DRM=m
+CONFIG_DRM_KMS_HELPER=m
+CONFIG_DRM_TTM=m
+CONFIG_DRM_TDFX=m
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+# CONFIG_DRM_RADEON_KMS is not set
+CONFIG_DRM_I810=m
+CONFIG_DRM_I830=m
+CONFIG_DRM_I915=m
+CONFIG_DRM_I915_KMS=y
+CONFIG_DRM_MGA=m
+CONFIG_DRM_SIS=m
+CONFIG_DRM_VIA=m
+CONFIG_DRM_SAVAGE=m
+CONFIG_VGASTATE=m
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_DDC=m
+CONFIG_FB_BOOT_VESA_SUPPORT=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+CONFIG_FB_SYS_FILLRECT=m
+CONFIG_FB_SYS_COPYAREA=m
+CONFIG_FB_SYS_IMAGEBLIT=m
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=m
+CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_HECUBA=m
+CONFIG_FB_SVGALIB=m
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_BACKLIGHT=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_CIRRUS=m
+CONFIG_FB_PM2=m
+# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
+CONFIG_FB_CYBER2000=m
+CONFIG_FB_ARC=m
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+CONFIG_FB_VGA16=m
+# CONFIG_FB_UVESA is not set
+CONFIG_FB_VESA=y
+# CONFIG_FB_EFI is not set
+CONFIG_FB_N411=m
+CONFIG_FB_HGA=m
+# CONFIG_FB_HGA_ACCEL is not set
+CONFIG_FB_S1D13XXX=m
+CONFIG_FB_NVIDIA=m
+CONFIG_FB_NVIDIA_I2C=y
+# CONFIG_FB_NVIDIA_DEBUG is not set
+CONFIG_FB_NVIDIA_BACKLIGHT=y
+CONFIG_FB_RIVA=m
+CONFIG_FB_RIVA_I2C=y
+# CONFIG_FB_RIVA_DEBUG is not set
+CONFIG_FB_RIVA_BACKLIGHT=y
+CONFIG_FB_LE80578=m
+CONFIG_FB_CARILLO_RANCH=m
+CONFIG_FB_MATROX=m
+CONFIG_FB_MATROX_MILLENIUM=y
+CONFIG_FB_MATROX_MYSTIQUE=y
+CONFIG_FB_MATROX_G=y
+CONFIG_FB_MATROX_I2C=m
+CONFIG_FB_MATROX_MAVEN=m
+CONFIG_FB_RADEON=m
+CONFIG_FB_RADEON_I2C=y
+CONFIG_FB_RADEON_BACKLIGHT=y
+# CONFIG_FB_RADEON_DEBUG is not set
+CONFIG_FB_ATY128=m
+CONFIG_FB_ATY128_BACKLIGHT=y
+CONFIG_FB_ATY=m
+CONFIG_FB_ATY_CT=y
+CONFIG_FB_ATY_GENERIC_LCD=y
+CONFIG_FB_ATY_GX=y
+CONFIG_FB_ATY_BACKLIGHT=y
+CONFIG_FB_S3=m
+CONFIG_FB_SAVAGE=m
+CONFIG_FB_SAVAGE_I2C=y
+CONFIG_FB_SAVAGE_ACCEL=y
+CONFIG_FB_SIS=m
+CONFIG_FB_SIS_300=y
+CONFIG_FB_SIS_315=y
+CONFIG_FB_VIA=m
+CONFIG_FB_NEOMAGIC=m
+CONFIG_FB_KYRO=m
+CONFIG_FB_3DFX=m
+# CONFIG_FB_3DFX_ACCEL is not set
+CONFIG_FB_3DFX_I2C=y
+CONFIG_FB_VOODOO1=m
+CONFIG_FB_VT8623=m
+CONFIG_FB_TRIDENT=m
+CONFIG_FB_ARK=m
+CONFIG_FB_PM3=m
+CONFIG_FB_CARMINE=m
+CONFIG_FB_CARMINE_DRAM_EVAL=y
+# CONFIG_CARMINE_DRAM_CUSTOM is not set
+CONFIG_FB_GEODE=y
+CONFIG_FB_GEODE_LX=m
+CONFIG_FB_GEODE_GX=m
+CONFIG_FB_GEODE_GX1=m
+CONFIG_FB_TMIO=m
+CONFIG_FB_TMIO_ACCELL=y
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FB_METRONOME=m
+CONFIG_FB_MB862XX=m
+CONFIG_FB_MB862XX_PCI_GDC=y
+CONFIG_FB_BROADSHEET=m
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_LCD_ILI9320 is not set
+CONFIG_LCD_PLATFORM=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_GENERIC=m
+CONFIG_BACKLIGHT_PROGEAR=m
+CONFIG_BACKLIGHT_CARILLO_RANCH=m
+CONFIG_BACKLIGHT_MBP_NVIDIA=m
+CONFIG_BACKLIGHT_SAHARA=m
+
+#
+# Display device support
+#
+CONFIG_DISPLAY_SUPPORT=m
+
+#
+# Display hardware drivers
+#
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_VGACON_SOFT_SCROLLBACK=y
+CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS_CORE=y
+CONFIG_SOUND_OSS_CORE_PRECLAIM=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_JACK=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_HRTIMER=m
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_DYNAMIC_MINORS=y
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+CONFIG_SND_VMASTER=y
+CONFIG_SND_DMA_SGBUF=y
+CONFIG_SND_RAWMIDI_SEQ=m
+CONFIG_SND_OPL3_LIB_SEQ=m
+# CONFIG_SND_OPL4_LIB_SEQ is not set
+# CONFIG_SND_SBAWE_SEQ is not set
+CONFIG_SND_EMU10K1_SEQ=m
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DRIVERS=y
+# CONFIG_SND_PCSP is not set
+CONFIG_SND_DUMMY=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_MTS64=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_MPU401=m
+CONFIG_SND_PORTMAN2X4=m
+CONFIG_SND_AC97_POWER_SAVE=y
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
+CONFIG_SND_SB_COMMON=m
+CONFIG_SND_SB16_DSP=m
+CONFIG_SND_PCI=y
+CONFIG_SND_AD1889=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AW2=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_OXYGEN_LIB=m
+CONFIG_SND_OXYGEN=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5530=m
+CONFIG_SND_CS5535AUDIO=m
+CONFIG_SND_CTXFI=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_GINA20=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_DARLA24=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_MONA=m
+CONFIG_SND_MIA=m
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_INDIGO=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_INDIGOIOX=m
+CONFIG_SND_INDIGODJX=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X_BOOL=y
+CONFIG_SND_FM801_TEA575X=m
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+# CONFIG_SND_HDA_INPUT_BEEP is not set
+CONFIG_SND_HDA_INPUT_JACK=y
+CONFIG_SND_HDA_PATCH_LOADER=y
+CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_CODEC_ANALOG=y
+CONFIG_SND_HDA_CODEC_SIGMATEL=y
+CONFIG_SND_HDA_CODEC_VIA=y
+CONFIG_SND_HDA_CODEC_ATIHDMI=y
+CONFIG_SND_HDA_CODEC_NVHDMI=y
+CONFIG_SND_HDA_CODEC_INTELHDMI=y
+CONFIG_SND_HDA_ELD=y
+CONFIG_SND_HDA_CODEC_CIRRUS=y
+CONFIG_SND_HDA_CODEC_CONEXANT=y
+CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CMEDIA=y
+CONFIG_SND_HDA_CODEC_SI3054=y
+CONFIG_SND_HDA_GENERIC=y
+# CONFIG_SND_HDA_POWER_SAVE is not set
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_HIFIER=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_LX6464ES=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_PCXHR=m
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VIRTUOSO=m
+CONFIG_SND_VX222=m
+CONFIG_SND_YMFPCI=m
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_USB_US122L=m
+CONFIG_SND_PCMCIA=y
+CONFIG_SND_VXPOCKET=m
+CONFIG_SND_PDAUDIOCF=m
+# CONFIG_SND_SOC is not set
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+CONFIG_HIDRAW=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+#
+# Special HID drivers
+#
+CONFIG_HID_A4TECH=m
+CONFIG_HID_APPLE=m
+CONFIG_HID_BELKIN=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_DRAGONRISE=m
+CONFIG_DRAGONRISE_FF=y
+CONFIG_HID_EZKEY=m
+CONFIG_HID_KYE=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_TWINHAN=m
+CONFIG_HID_KENSINGTON=m
+CONFIG_HID_LOGITECH=m
+CONFIG_LOGITECH_FF=y
+CONFIG_LOGIRUMBLEPAD2_FF=y
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_NTRIG=m
+CONFIG_HID_PANTHERLORD=m
+CONFIG_PANTHERLORD_FF=y
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SONY=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_HID_GREENASIA=m
+CONFIG_GREENASIA_FF=y
+CONFIG_HID_SMARTJOYPLUS=m
+CONFIG_SMARTJOYPLUS_FF=y
+CONFIG_HID_TOPSEED=m
+CONFIG_HID_THRUSTMASTER=m
+CONFIG_THRUSTMASTER_FF=y
+CONFIG_HID_WACOM=m
+CONFIG_HID_ZEROPLUS=m
+CONFIG_ZEROPLUS_FF=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+CONFIG_USB_SUSPEND=y
+# CONFIG_USB_OTG is not set
+CONFIG_USB_MON=y
+CONFIG_USB_WUSB=m
+CONFIG_USB_WUSB_CBAF=m
+# CONFIG_USB_WUSB_CBAF_DEBUG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_C67X00_HCD=m
+CONFIG_USB_XHCI_HCD=m
+# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_OXU210HP_HCD=m
+CONFIG_USB_ISP116X_HCD=m
+CONFIG_USB_ISP1760_HCD=m
+CONFIG_USB_ISP1362_HCD=m
+CONFIG_USB_OHCI_HCD=m
+CONFIG_USB_OHCI_HCD_SSB=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+CONFIG_USB_U132_HCD=m
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+CONFIG_USB_R8A66597_HCD=m
+CONFIG_USB_WHCI_HCD=m
+CONFIG_USB_HWA_HCD=m
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_WDM=m
+CONFIG_USB_TMC=m
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=m
+CONFIG_USB_STORAGE_FREECOM=m
+CONFIG_USB_STORAGE_ISD200=m
+CONFIG_USB_STORAGE_USBAT=m
+CONFIG_USB_STORAGE_SDDR09=m
+CONFIG_USB_STORAGE_SDDR55=m
+CONFIG_USB_STORAGE_JUMPSHOT=m
+CONFIG_USB_STORAGE_ALAUDA=m
+CONFIG_USB_STORAGE_ONETOUCH=m
+CONFIG_USB_STORAGE_KARMA=m
+CONFIG_USB_STORAGE_CYPRESS_ATACB=m
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+CONFIG_USB_SERIAL=m
+CONFIG_USB_EZUSB=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_QUALCOMM=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+CONFIG_USB_SERIAL_SAFE_PADDED=y
+CONFIG_USB_SERIAL_SIEMENS_MPI=m
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_SYMBOL=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_OPTICON=m
+CONFIG_USB_SERIAL_DEBUG=m
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_SEVSEG=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_SISUSBVGA=m
+CONFIG_USB_SISUSBVGA_CON=y
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_IOWARRIOR=m
+CONFIG_USB_TEST=m
+CONFIG_USB_ISIGHTFW=m
+CONFIG_USB_VST=m
+CONFIG_USB_ATM=m
+CONFIG_USB_SPEEDTOUCH=m
+CONFIG_USB_CXACRU=m
+CONFIG_USB_UEAGLEATM=m
+CONFIG_USB_XUSBATM=m
+# CONFIG_USB_GADGET is not set
+
+#
+# OTG and related infrastructure
+#
+CONFIG_USB_OTG_UTILS=y
+CONFIG_USB_GPIO_VBUS=m
+CONFIG_NOP_USB_XCEIV=m
+CONFIG_UWB=m
+CONFIG_UWB_HWA=m
+CONFIG_UWB_WHCI=m
+CONFIG_UWB_WLP=m
+CONFIG_UWB_I1480U=m
+CONFIG_UWB_I1480U_WLP=m
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=m
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_SDHCI=m
+CONFIG_MMC_SDHCI_PCI=m
+CONFIG_MMC_RICOH_MMC=m
+CONFIG_MMC_SDHCI_PLTFM=m
+CONFIG_MMC_WBSD=m
+# CONFIG_MMC_AT91 is not set
+# CONFIG_MMC_ATMELMCI is not set
+CONFIG_MMC_TIFM_SD=m
+CONFIG_MMC_SDRICOH_CS=m
+CONFIG_MMC_CB710=m
+CONFIG_MMC_VIA_SDMMC=m
+CONFIG_MEMSTICK=m
+# CONFIG_MEMSTICK_DEBUG is not set
+
+#
+# MemoryStick drivers
+#
+# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
+CONFIG_MSPRO_BLOCK=m
+
+#
+# MemoryStick Host Controller Drivers
+#
+CONFIG_MEMSTICK_TIFM_MS=m
+CONFIG_MEMSTICK_JMICRON_38X=m
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_ALIX2=m
+CONFIG_LEDS_PCA9532=m
+CONFIG_LEDS_GPIO=m
+CONFIG_LEDS_GPIO_PLATFORM=y
+CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_CLEVO_MAIL=m
+CONFIG_LEDS_PCA955X=m
+CONFIG_LEDS_WM8350=m
+CONFIG_LEDS_BD2802=m
+CONFIG_LEDS_INTEL_SS4200=m
+CONFIG_LEDS_LT3593=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_GPIO=m
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+CONFIG_ACCESSIBILITY=y
+CONFIG_A11Y_BRAILLE_CONSOLE=y
+CONFIG_INFINIBAND=m
+CONFIG_INFINIBAND_USER_MAD=m
+CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_USER_MEM=y
+CONFIG_INFINIBAND_ADDR_TRANS=y
+CONFIG_INFINIBAND_MTHCA=m
+CONFIG_INFINIBAND_MTHCA_DEBUG=y
+# CONFIG_INFINIBAND_IPATH is not set
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+# CONFIG_INFINIBAND_CXGB3 is not set
+CONFIG_MLX4_INFINIBAND=m
+CONFIG_INFINIBAND_NES=m
+# CONFIG_INFINIBAND_NES_DEBUG is not set
+CONFIG_INFINIBAND_IPOIB=m
+# CONFIG_INFINIBAND_IPOIB_CM is not set
+CONFIG_INFINIBAND_IPOIB_DEBUG=y
+# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
+CONFIG_INFINIBAND_ISER=m
+CONFIG_EDAC=y
+
+#
+# Reporting subsystems
+#
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_DECODE_MCE=y
+# CONFIG_EDAC_MM_EDAC is not set
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_TEST=m
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_MAX6900=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+CONFIG_RTC_DRV_M41T80=m
+CONFIG_RTC_DRV_M41T80_WDT=y
+CONFIG_RTC_DRV_BQ32K=m
+CONFIG_RTC_DRV_S35390A=m
+CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8581=m
+CONFIG_RTC_DRV_RX8025=m
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+CONFIG_RTC_DRV_CMOS=m
+CONFIG_RTC_DRV_DS1286=m
+CONFIG_RTC_DRV_DS1511=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_STK17TA8=m
+CONFIG_RTC_DRV_M48T86=m
+CONFIG_RTC_DRV_M48T35=m
+CONFIG_RTC_DRV_M48T59=m
+CONFIG_RTC_DRV_MSM6242=m
+CONFIG_RTC_DRV_BQ4802=m
+CONFIG_RTC_DRV_RP5C01=m
+CONFIG_RTC_DRV_V3020=m
+CONFIG_RTC_DRV_WM8350=m
+CONFIG_RTC_DRV_PCF50633=m
+CONFIG_RTC_DRV_AB3100=m
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_CS5535_CLOCK_EVENT_SRC=m
+CONFIG_DMADEVICES=y
+
+#
+# DMA Devices
+#
+CONFIG_ASYNC_TX_DISABLE_CHANNEL_SWITCH=y
+CONFIG_INTEL_IOATDMA=m
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+# CONFIG_ASYNC_TX_DMA is not set
+CONFIG_DMATEST=m
+CONFIG_DCA=m
+CONFIG_AUXDISPLAY=y
+# CONFIG_KS0108 is not set
+CONFIG_UIO=m
+CONFIG_UIO_CIF=m
+CONFIG_UIO_PDRV=m
+CONFIG_UIO_PDRV_GENIRQ=m
+CONFIG_UIO_SMX=m
+CONFIG_UIO_AEC=m
+CONFIG_UIO_SERCOS3=m
+CONFIG_UIO_PCI_GENERIC=m
+
+#
+# TI VLYNQ
+#
+CONFIG_STAGING=y
+# CONFIG_STAGING_EXCLUDE_BUILD is not set
+# CONFIG_ET131X is not set
+# CONFIG_SLICOSS is not set
+# CONFIG_VIDEO_GO7007 is not set
+CONFIG_VIDEO_CX25821=m
+CONFIG_VIDEO_CX25821_ALSA=m
+# CONFIG_USB_IP_COMMON is not set
+# CONFIG_W35UND is not set
+# CONFIG_PRISM2_USB is not set
+# CONFIG_ECHO is not set
+# CONFIG_POCH is not set
+# CONFIG_OTUS is not set
+CONFIG_RT2860=m
+CONFIG_RT2870=m
+# CONFIG_COMEDI is not set
+# CONFIG_ASUS_OLED is not set
+# CONFIG_PANEL is not set
+# CONFIG_ALTERA_PCIE_CHDMA is not set
+CONFIG_R8187SE=m
+CONFIG_RTL8192SU=m
+CONFIG_RTL8192U=m
+CONFIG_RTL8192E=m
+# CONFIG_TRANZPORT is not set
+
+#
+# Qualcomm MSM Camera And Video
+#
+
+#
+# Camera Sensor Selection
+#
+CONFIG_INPUT_GPIO=m
+CONFIG_POHMELFS=m
+# CONFIG_POHMELFS_DEBUG is not set
+CONFIG_POHMELFS_CRYPTO=y
+CONFIG_B3DFG=m
+CONFIG_IDE_PHISON=m
+CONFIG_PLAN9AUTH=m
+CONFIG_LINE6_USB=m
+CONFIG_DRM_VMWGFX=m
+CONFIG_DRM_NOUVEAU=m
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+CONFIG_DRM_NOUVEAU_DEBUG=y
+
+#
+# I2C encoder or helper chips
+#
+CONFIG_DRM_I2C_CH7006=m
+CONFIG_USB_SERIAL_QUATECH2=m
+CONFIG_USB_SERIAL_QUATECH_USB2=m
+CONFIG_VT6655=m
+CONFIG_VT6656=m
+CONFIG_FB_UDL=m
+# CONFIG_HYPERV is not set
+# CONFIG_VME_BUS is not set
+
+#
+# RAR Register Driver
+#
+CONFIG_RAR_REGISTER=m
+# CONFIG_DX_SEP is not set
+# CONFIG_IIO is not set
+CONFIG_RAMZSWAP=m
+CONFIG_RAMZSWAP_STATS=y
+CONFIG_BATMAN_ADV=m
+# CONFIG_BATMAN_DEBUG is not set
+CONFIG_SAMSUNG_LAPTOP=m
+CONFIG_STRIP=m
+CONFIG_PCMCIA_WAVELAN=m
+CONFIG_PCMCIA_NETWAVE=m
+CONFIG_FB_SM7XX=m
+# CONFIG_FB_SM7XX_ACCEL is not set
+CONFIG_X86_PLATFORM_DEVICES=y
+CONFIG_ACER_WMI=m
+CONFIG_ACERHDF=m
+CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_WMI=m
+CONFIG_FUJITSU_LAPTOP=m
+# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
+CONFIG_HP_WMI=m
+CONFIG_MSI_LAPTOP=m
+CONFIG_PANASONIC_LAPTOP=m
+CONFIG_COMPAL_LAPTOP=m
+CONFIG_SONY_LAPTOP=m
+CONFIG_SONYPI_COMPAT=y
+CONFIG_THINKPAD_ACPI=m
+CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
+# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
+# CONFIG_THINKPAD_ACPI_DEBUG is not set
+# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
+CONFIG_THINKPAD_ACPI_VIDEO=y
+CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
+CONFIG_INTEL_MENLOW=m
+CONFIG_EEEPC_LAPTOP=m
+CONFIG_ACPI_WMI=m
+CONFIG_MSI_WMI=m
+CONFIG_ACPI_ASUS=m
+CONFIG_TOPSTAR_LAPTOP=m
+CONFIG_ACPI_TOSHIBA=m
+CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_ACPI_CMPC=m
+
+#
+# Firmware Drivers
+#
+CONFIG_EDD=m
+CONFIG_EDD_OFF=y
+CONFIG_FIRMWARE_MEMMAP=y
+CONFIG_EFI_VARS=m
+CONFIG_DELL_RBU=m
+CONFIG_DCDBAS=m
+CONFIG_DMIID=y
+CONFIG_ISCSI_IBFT_FIND=y
+CONFIG_ISCSI_IBFT=m
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT4_FS=m
+CONFIG_EXT4_FS_XATTR=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_JBD2=m
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+CONFIG_JFS_FS=m
+CONFIG_JFS_POSIX_ACL=y
+CONFIG_JFS_SECURITY=y
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_POSIX_ACL=y
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_DEBUG is not set
+CONFIG_GFS2_FS=m
+CONFIG_GFS2_FS_LOCKING_DLM=y
+CONFIG_OCFS2_FS=m
+CONFIG_OCFS2_FS_O2CB=m
+CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
+# CONFIG_OCFS2_FS_STATS is not set
+CONFIG_OCFS2_DEBUG_MASKLOG=y
+# CONFIG_OCFS2_DEBUG_FS is not set
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+CONFIG_NILFS2_FS=m
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_QUOTA_TREE=m
+CONFIG_QFMT_V1=m
+CONFIG_QFMT_V2=m
+CONFIG_QUOTACTL=y
+CONFIG_AUTOFS_FS=m
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+CONFIG_CUSE=m
+CONFIG_GENERIC_ACL=y
+
+#
+# Caches
+#
+CONFIG_FSCACHE=m
+# CONFIG_FSCACHE_STATS is not set
+# CONFIG_FSCACHE_HISTOGRAM is not set
+# CONFIG_FSCACHE_DEBUG is not set
+# CONFIG_FSCACHE_OBJECT_LIST is not set
+CONFIG_CACHEFILES=m
+# CONFIG_CACHEFILES_DEBUG is not set
+# CONFIG_CACHEFILES_HISTOGRAM is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=y
+CONFIG_MISC_FILESYSTEMS=y
+CONFIG_ADFS_FS=m
+# CONFIG_ADFS_FS_RW is not set
+CONFIG_AFFS_FS=m
+# CONFIG_ECRYPT_FS is not set
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BFS_FS=m
+CONFIG_EFS_FS=m
+CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_UBIFS_FS=m
+CONFIG_UBIFS_FS_XATTR=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+# CONFIG_UBIFS_FS_DEBUG is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+CONFIG_SQUASHFS_EMBEDDED=y
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+CONFIG_VXFS_FS=m
+CONFIG_MINIX_FS=m
+CONFIG_OMFS_FS=m
+CONFIG_HPFS_FS=m
+CONFIG_QNX4FS_FS=m
+CONFIG_ROMFS_FS=y
+CONFIG_ROMFS_BACKED_BY_BLOCK=y
+# CONFIG_ROMFS_BACKED_BY_MTD is not set
+# CONFIG_ROMFS_BACKED_BY_BOTH is not set
+CONFIG_ROMFS_ON_BLOCK=y
+CONFIG_SYSV_FS=m
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG is not set
+CONFIG_EXOFS_FS=m
+# CONFIG_EXOFS_DEBUG is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_V4_1 is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_SUNRPC_XPRT_RDMA=m
+CONFIG_RPCSEC_GSS_KRB5=y
+CONFIG_RPCSEC_GSS_SPKM3=m
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_UPCALL is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_DFS_UPCALL is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+CONFIG_NCP_FS=m
+CONFIG_NCPFS_PACKET_SIGNING=y
+CONFIG_NCPFS_IOCTL_LOCKING=y
+CONFIG_NCPFS_STRONG=y
+CONFIG_NCPFS_NFS_NS=y
+CONFIG_NCPFS_OS2_NS=y
+CONFIG_NCPFS_SMALLDOS=y
+CONFIG_NCPFS_NLS=y
+CONFIG_NCPFS_EXTRAS=y
+CONFIG_CODA_FS=m
+CONFIG_AFS_FS=m
+# CONFIG_AFS_DEBUG is not set
+# CONFIG_AFS_FSCACHE is not set
+CONFIG_9P_FS=m
+# CONFIG_9P_FSCACHE is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+CONFIG_OSF_PARTITION=y
+CONFIG_AMIGA_PARTITION=y
+# CONFIG_ATARI_PARTITION is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+CONFIG_MINIX_SUBPARTITION=y
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_UNIXWARE_DISKLABEL=y
+# CONFIG_LDM_PARTITION is not set
+CONFIG_SGI_PARTITION=y
+# CONFIG_ULTRIX_PARTITION is not set
+CONFIG_SUN_PARTITION=y
+CONFIG_KARMA_PARTITION=y
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+CONFIG_DLM=m
+# CONFIG_DLM_DEBUG is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=0
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_UNUSED_SYMBOLS=y
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FTRACE_NMI_ENTER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
+CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_RING_BUFFER=y
+CONFIG_FTRACE_NMI_ENTER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_RING_BUFFER_ALLOW_SWAP=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+# CONFIG_IRQSOFF_TRACER is not set
+CONFIG_SYSPROF_TRACER=y
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_FTRACE_SYSCALLS is not set
+# CONFIG_BOOT_TRACER is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_POWER_TRACER is not set
+# CONFIG_KSYM_TRACER is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_KMEMTRACE is not set
+# CONFIG_WORKQUEUE_TRACER is not set
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_DYNAMIC_FTRACE=y
+# CONFIG_FUNCTION_PROFILER is not set
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_STARTUP_TEST is not set
+# CONFIG_MMIOTRACE is not set
+CONFIG_RING_BUFFER_BENCHMARK=m
+# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_HAVE_ARCH_KMEMCHECK=y
+CONFIG_STRICT_DEVMEM=y
+CONFIG_X86_VERBOSE_BOOTUP=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_EARLY_PRINTK_DBGP is not set
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_X86_PTDUMP is not set
+CONFIG_DEBUG_RODATA=y
+CONFIG_DEBUG_RODATA_TEST=y
+# CONFIG_DEBUG_NX_TEST is not set
+# CONFIG_IOMMU_DEBUG is not set
+# CONFIG_IOMMU_STRESS is not set
+CONFIG_HAVE_MMIOTRACE_SUPPORT=y
+CONFIG_IO_DELAY_TYPE_0X80=0
+CONFIG_IO_DELAY_TYPE_0XED=1
+CONFIG_IO_DELAY_TYPE_UDELAY=2
+CONFIG_IO_DELAY_TYPE_NONE=3
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IO_DELAY_NONE is not set
+CONFIG_DEFAULT_IO_DELAY_TYPE=0
+# CONFIG_DEBUG_BOOT_PARAMS is not set
+# CONFIG_CPA_DEBUG is not set
+CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_PATH is not set
+# CONFIG_SECURITY_SELINUX is not set
+# CONFIG_SECURITY_TOMOYO is not set
+# CONFIG_IMA is not set
+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
+# CONFIG_DEFAULT_SECURITY_SMACK is not set
+# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+CONFIG_XOR_BLOCKS=y
+CONFIG_ASYNC_CORE=y
+CONFIG_ASYNC_MEMCPY=y
+CONFIG_ASYNC_XOR=y
+CONFIG_ASYNC_PQ=y
+CONFIG_ASYNC_RAID6_RECOV=y
+CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
+CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_FIPS=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=m
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_GF128MUL=y
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_WORKQUEUE=y
+CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_AUTHENC=y
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+CONFIG_CRYPTO_CCM=m
+CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_SEQIV=m
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTR=m
+CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_PCBC=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_FPU=y
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=y
+CONFIG_CRYPTO_VMAC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32C_INTEL=m
+CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_RMD128=m
+CONFIG_CRYPTO_RMD160=m
+CONFIG_CRYPTO_RMD256=m
+CONFIG_CRYPTO_RMD320=m
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_AES_X86_64=y
+CONFIG_CRYPTO_AES_NI_INTEL=y
+CONFIG_CRYPTO_ANUBIS=y
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_CAMELLIA=y
+CONFIG_CRYPTO_CAST5=y
+CONFIG_CRYPTO_CAST6=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=y
+CONFIG_CRYPTO_KHAZAD=y
+CONFIG_CRYPTO_SALSA20=m
+CONFIG_CRYPTO_SALSA20_X86_64=m
+CONFIG_CRYPTO_SEED=y
+CONFIG_CRYPTO_SERPENT=y
+CONFIG_CRYPTO_TEA=y
+CONFIG_CRYPTO_TWOFISH=y
+CONFIG_CRYPTO_TWOFISH_COMMON=y
+CONFIG_CRYPTO_TWOFISH_X86_64=y
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_ZLIB=m
+CONFIG_CRYPTO_LZO=m
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_ANSI_CPRNG=m
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_CRYPTO_DEV_HIFN_795X=m
+CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+CONFIG_HAVE_KVM=y
+CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_HAVE_KVM_EVENTFD=y
+CONFIG_KVM_APIC_ARCHITECTURE=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM=m
+CONFIG_KVM_INTEL=m
+CONFIG_KVM_AMD=m
+CONFIG_VIRTIO=m
+CONFIG_VIRTIO_RING=m
+CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_BALLOON=m
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=m
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=m
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_REED_SOLOMON=m
+CONFIG_REED_SOLOMON_DEC16=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_CHECK_SIGNATURE=y
+CONFIG_NLATTR=y
+CONFIG_LRU_CACHE=m
diff --git a/source/k/config-huge-2.6.29.6 b/source/k/config-huge-2.6.29.6
deleted file mode 100644
index 452900eac..000000000
--- a/source/k/config-huge-2.6.29.6
+++ /dev/null
@@ -1,4179 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.29.6
-# Mon Aug 17 11:55:29 2009
-#
-CONFIG_64BIT=y
-# CONFIG_X86_32 is not set
-CONFIG_X86_64=y
-CONFIG_X86=y
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_FAST_CMPXCHG_LOCAL=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
-CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_HAVE_SETUP_PER_CPU_AREA=y
-CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ZONE_DMA32=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_AUDIT_ARCH=y
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
-CONFIG_X86_64_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-# CONFIG_KTIME_SCALAR is not set
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-
-#
-# RCU Subsystem
-#
-CONFIG_CLASSIC_RCU=y
-# CONFIG_TREE_RCU is not set
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_PREEMPT_RCU_TRACE is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=15
-CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-# CONFIG_GROUP_SCHED is not set
-# CONFIG_CGROUPS is not set
-# CONFIG_SYSFS_DEPRECATED_V2 is not set
-# CONFIG_RELAY is not set
-CONFIG_NAMESPACES=y
-# CONFIG_UTS_NS is not set
-# CONFIG_IPC_NS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_NET_NS is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-# CONFIG_EMBEDDED is not set
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_PCSPKR_PLATFORM=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_PCI_QUIRKS=y
-CONFIG_SLUB_DEBUG=y
-CONFIG_COMPAT_BRK=y
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-# CONFIG_SLOB is not set
-CONFIG_PROFILING=y
-CONFIG_TRACEPOINTS=y
-CONFIG_MARKERS=y
-CONFIG_OPROFILE=m
-# CONFIG_OPROFILE_IBS is not set
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_HAVE_IOREMAP_PROT=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-CONFIG_BLK_DEV_BSG=y
-# CONFIG_BLK_DEV_INTEGRITY is not set
-CONFIG_BLOCK_COMPAT=y
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_PREEMPT_NOTIFIERS=y
-CONFIG_FREEZER=y
-
-#
-# Processor type and features
-#
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_SMP=y
-# CONFIG_SPARSE_IRQ is not set
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-# CONFIG_PARAVIRT_GUEST is not set
-CONFIG_MEMTEST=y
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MPSC is not set
-# CONFIG_MCORE2 is not set
-CONFIG_GENERIC_CPU=y
-CONFIG_X86_CPU=y
-CONFIG_X86_L1_CACHE_BYTES=128
-CONFIG_X86_INTERNODE_CACHE_BYTES=128
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=64
-CONFIG_X86_DEBUGCTLMSR=y
-CONFIG_CPU_SUP_INTEL=y
-CONFIG_CPU_SUP_AMD=y
-CONFIG_CPU_SUP_CENTAUR_64=y
-# CONFIG_X86_DS is not set
-CONFIG_HPET_TIMER=y
-CONFIG_HPET_EMULATE_RTC=y
-CONFIG_DMI=y
-CONFIG_GART_IOMMU=y
-# CONFIG_CALGARY_IOMMU is not set
-# CONFIG_AMD_IOMMU is not set
-CONFIG_SWIOTLB=y
-CONFIG_IOMMU_HELPER=y
-# CONFIG_IOMMU_API is not set
-CONFIG_NR_CPUS=32
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_INTEL=y
-CONFIG_X86_MCE_AMD=y
-CONFIG_I8K=m
-CONFIG_MICROCODE=m
-CONFIG_MICROCODE_INTEL=y
-CONFIG_MICROCODE_AMD=y
-CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_X86_MSR=m
-CONFIG_X86_CPUID=m
-CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
-CONFIG_DIRECT_GBPAGES=y
-# CONFIG_NUMA is not set
-CONFIG_ARCH_SPARSEMEM_DEFAULT=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_FLATMEM_MANUAL is not set
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-CONFIG_SPARSEMEM_MANUAL=y
-CONFIG_SPARSEMEM=y
-CONFIG_HAVE_MEMORY_PRESENT=y
-CONFIG_SPARSEMEM_EXTREME=y
-CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
-CONFIG_SPARSEMEM_VMEMMAP=y
-
-#
-# Memory hotplug is currently incompatible with Software Suspend
-#
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_UNEVICTABLE_LRU=y
-CONFIG_MMU_NOTIFIER=y
-# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
-CONFIG_X86_RESERVE_LOW_64K=y
-CONFIG_MTRR=y
-CONFIG_MTRR_SANITIZER=y
-CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
-CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
-# CONFIG_X86_PAT is not set
-# CONFIG_EFI is not set
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-# CONFIG_HZ_250 is not set
-# CONFIG_HZ_300 is not set
-CONFIG_HZ_1000=y
-CONFIG_HZ=1000
-# CONFIG_SCHED_HRTICK is not set
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-CONFIG_PHYSICAL_START=0x200000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x200000
-CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
-# CONFIG_CMDLINE_BOOL is not set
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
-
-#
-# Power management and ACPI options
-#
-CONFIG_ARCH_HIBERNATION_HEADER=y
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_HIBERNATION=y
-CONFIG_PM_STD_PARTITION="\"\""
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
-CONFIG_ACPI_PROCFS_POWER=y
-CONFIG_ACPI_SYSFS_POWER=y
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=m
-CONFIG_ACPI_BATTERY=m
-CONFIG_ACPI_BUTTON=m
-CONFIG_ACPI_VIDEO=m
-CONFIG_ACPI_FAN=m
-CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_PROCESSOR=m
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_THERMAL=m
-# CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_PCI_SLOT=m
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=m
-# CONFIG_ACPI_SBS is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=m
-# CONFIG_CPU_FREQ_DEBUG is not set
-CONFIG_CPU_FREQ_STAT=m
-CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=m
-CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=m
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
-
-#
-# CPUFreq processor drivers
-#
-CONFIG_X86_ACPI_CPUFREQ=m
-CONFIG_X86_POWERNOW_K8=m
-CONFIG_X86_POWERNOW_K8_ACPI=y
-CONFIG_X86_SPEEDSTEP_CENTRINO=m
-CONFIG_X86_P4_CLOCKMOD=m
-
-#
-# shared options
-#
-CONFIG_X86_SPEEDSTEP_LIB=m
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-
-#
-# Memory power savings
-#
-CONFIG_I7300_IDLE_IOAT_CHANNEL=y
-CONFIG_I7300_IDLE=m
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_DMAR is not set
-# CONFIG_INTR_REMAP is not set
-CONFIG_PCIEPORTBUS=y
-CONFIG_HOTPLUG_PCI_PCIE=m
-CONFIG_PCIEAER=y
-# CONFIG_PCIEASPM is not set
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_LEGACY=y
-# CONFIG_PCI_STUB is not set
-CONFIG_HT_IRQ=y
-CONFIG_ISA_DMA_API=y
-CONFIG_K8_NB=y
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-CONFIG_CARDBUS=y
-
-#
-# PC-card bridges
-#
-CONFIG_YENTA=m
-CONFIG_YENTA_O2=y
-CONFIG_YENTA_RICOH=y
-CONFIG_YENTA_TI=y
-CONFIG_YENTA_ENE_TUNE=y
-CONFIG_YENTA_TOSHIBA=y
-CONFIG_PD6729=m
-CONFIG_I82092=m
-CONFIG_PCCARD_NONSTATIC=m
-CONFIG_HOTPLUG_PCI=y
-CONFIG_HOTPLUG_PCI_FAKE=m
-CONFIG_HOTPLUG_PCI_ACPI=m
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-CONFIG_HOTPLUG_PCI_SHPC=m
-
-#
-# Executable file formats / Emulations
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_COMPAT_BINFMT_ELF=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-# CONFIG_HAVE_AOUT is not set
-CONFIG_BINFMT_MISC=m
-CONFIG_IA32_EMULATION=y
-CONFIG_IA32_AOUT=m
-CONFIG_COMPAT=y
-CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
-CONFIG_SYSVIPC_COMPAT=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_COMPAT_NET_DEV_OPS=y
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=y
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=m
-# CONFIG_NET_KEY_MIGRATE is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_ASK_IP_FIB_HASH=y
-# CONFIG_IP_FIB_TRIE is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=m
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_NDISC_NODETYPE=y
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETLABEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-# CONFIG_NF_CONNTRACK_EVENTS is not set
-CONFIG_NF_CT_PROTO_DCCP=m
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_RATEEST=m
-CONFIG_NETFILTER_XT_TARGET_TPROXY=m
-CONFIG_NETFILTER_XT_TARGET_TRACE=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_OWNER=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_RATEEST=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_RECENT=m
-CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_SOCKET=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_TIME=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-CONFIG_IP_VS=m
-# CONFIG_IP_VS_IPV6 is not set
-# CONFIG_IP_VS_DEBUG is not set
-CONFIG_IP_VS_TAB_BITS=12
-
-#
-# IPVS transport protocol load balancing support
-#
-CONFIG_IP_VS_PROTO_TCP=y
-CONFIG_IP_VS_PROTO_UDP=y
-CONFIG_IP_VS_PROTO_AH_ESP=y
-CONFIG_IP_VS_PROTO_ESP=y
-CONFIG_IP_VS_PROTO_AH=y
-
-#
-# IPVS scheduler
-#
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-
-#
-# IPVS application helper
-#
-CONFIG_IP_VS_FTP=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_SECURITY=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_IP6_NF_SECURITY=m
-
-#
-# DECnet: Netfilter Configuration
-#
-# CONFIG_DECNET_NF_GRABULATOR is not set
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_IP6=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-CONFIG_BRIDGE_EBT_NFLOG=m
-CONFIG_IP_DCCP=m
-CONFIG_INET_DCCP_DIAG=m
-
-#
-# DCCP CCIDs Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP_CCID2_DEBUG is not set
-# CONFIG_IP_DCCP_CCID3 is not set
-CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
-# CONFIG_SCTP_DBG_OBJCNT is not set
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
-CONFIG_TIPC=m
-# CONFIG_TIPC_ADVANCED is not set
-# CONFIG_TIPC_DEBUG is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
-# CONFIG_NET_DSA is not set
-CONFIG_VLAN_8021Q=m
-CONFIG_VLAN_8021Q_GVRP=y
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-CONFIG_LLC=y
-CONFIG_LLC2=m
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=m
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-CONFIG_WAN_ROUTER=m
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_MULTIQ=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_DRR=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-# CONFIG_CLS_U32_PERF is not set
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_FLOW=m
-# CONFIG_NET_EMATCH is not set
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=y
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_NAT=m
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-CONFIG_NET_ACT_SKBEDIT=m
-# CONFIG_NET_CLS_IND is not set
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_DCB is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_HAMRADIO=y
-
-#
-# Packet Radio protocols
-#
-CONFIG_AX25=m
-# CONFIG_AX25_DAMA_SLAVE is not set
-CONFIG_NETROM=m
-CONFIG_ROSE=m
-
-#
-# AX.25 network device drivers
-#
-CONFIG_MKISS=m
-CONFIG_6PACK=m
-CONFIG_BPQETHER=m
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_BAYCOM_PAR=m
-CONFIG_YAM=m
-CONFIG_CAN=m
-CONFIG_CAN_RAW=m
-CONFIG_CAN_BCM=m
-
-#
-# CAN Device Drivers
-#
-CONFIG_CAN_VCAN=m
-# CONFIG_CAN_DEBUG_DEVICES is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-CONFIG_DONGLE=y
-CONFIG_ESI_DONGLE=m
-CONFIG_ACTISYS_DONGLE=m
-CONFIG_TEKRAM_DONGLE=m
-CONFIG_TOIM3232_DONGLE=m
-CONFIG_LITELINK_DONGLE=m
-CONFIG_MA600_DONGLE=m
-CONFIG_GIRBIL_DONGLE=m
-CONFIG_MCP2120_DONGLE=m
-CONFIG_OLD_BELKIN_DONGLE=m
-CONFIG_ACT200L_DONGLE=m
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_NSC_FIR=m
-CONFIG_WINBOND_FIR=m
-CONFIG_SMC_IRCC_FIR=m
-CONFIG_ALI_FIR=m
-CONFIG_VLSI_FIR=m
-CONFIG_VIA_FIR=m
-CONFIG_MCS_FIR=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_CMTP=m
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIBTUSB=m
-CONFIG_BT_HCIBTSDIO=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
-CONFIG_PHONET=m
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-CONFIG_CFG80211=m
-# CONFIG_CFG80211_REG_DEBUG is not set
-CONFIG_NL80211=y
-CONFIG_WIRELESS_OLD_REGULATORY=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-CONFIG_LIB80211=m
-CONFIG_LIB80211_CRYPT_WEP=m
-CONFIG_LIB80211_CRYPT_CCMP=m
-CONFIG_LIB80211_CRYPT_TKIP=m
-# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=m
-
-#
-# Rate control algorithm selection
-#
-CONFIG_MAC80211_RC_MINSTREL=y
-# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-CONFIG_MAC80211_RC_DEFAULT="minstrel"
-CONFIG_MAC80211_MESH=y
-CONFIG_MAC80211_LEDS=y
-# CONFIG_MAC80211_DEBUGFS is not set
-# CONFIG_MAC80211_DEBUG_MENU is not set
-CONFIG_WIMAX=m
-CONFIG_WIMAX_DEBUG_LEVEL=8
-CONFIG_RFKILL=m
-CONFIG_RFKILL_INPUT=m
-CONFIG_RFKILL_LEDS=y
-CONFIG_NET_9P=m
-CONFIG_NET_9P_VIRTIO=m
-CONFIG_NET_9P_RDMA=m
-# CONFIG_NET_9P_DEBUG is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_FIRMWARE_IN_KERNEL is not set
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=m
-CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=m
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_TESTS=m
-CONFIG_MTD_REDBOOT_PARTS=m
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-CONFIG_MTD_AR7_PARTS=m
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_HAVE_MTD_OTP=y
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-CONFIG_RFD_FTL=m
-CONFIG_SSFDC=m
-CONFIG_MTD_OOPS=m
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-CONFIG_MTD_MAP_BANK_WIDTH_8=y
-CONFIG_MTD_MAP_BANK_WIDTH_16=y
-CONFIG_MTD_MAP_BANK_WIDTH_32=y
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-CONFIG_MTD_CFI_I4=y
-CONFIG_MTD_CFI_I8=y
-CONFIG_MTD_OTP=y
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-CONFIG_MTD_CFI_STAA=m
-CONFIG_MTD_CFI_UTIL=m
-CONFIG_MTD_RAM=m
-CONFIG_MTD_ROM=m
-CONFIG_MTD_ABSENT=m
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-CONFIG_MTD_SC520CDP=m
-CONFIG_MTD_NETSC520=m
-CONFIG_MTD_TS5500=m
-CONFIG_MTD_SBC_GXX=m
-CONFIG_MTD_AMD76XROM=m
-CONFIG_MTD_ICHXROM=m
-CONFIG_MTD_ESB2ROM=m
-CONFIG_MTD_CK804XROM=m
-CONFIG_MTD_SCB2_FLASH=m
-CONFIG_MTD_NETtel=m
-CONFIG_MTD_DILNETPC=m
-CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000
-CONFIG_MTD_L440GX=m
-CONFIG_MTD_PCI=m
-CONFIG_MTD_INTEL_VR_NOR=m
-CONFIG_MTD_PLATRAM=m
-
-#
-# Self-contained MTD device drivers
-#
-CONFIG_MTD_PMC551=m
-CONFIG_MTD_PMC551_BUGFIX=y
-# CONFIG_MTD_PMC551_DEBUG is not set
-CONFIG_MTD_SLRAM=m
-CONFIG_MTD_PHRAM=m
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLOCK2MTD=m
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-CONFIG_MTD_DOC2001PLUS=m
-CONFIG_MTD_DOCPROBE=m
-CONFIG_MTD_DOCECC=m
-CONFIG_MTD_DOCPROBE_ADVANCED=y
-CONFIG_MTD_DOCPROBE_ADDRESS=0x0000
-CONFIG_MTD_DOCPROBE_HIGH=y
-CONFIG_MTD_DOCPROBE_55AA=y
-CONFIG_MTD_NAND=m
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-CONFIG_MTD_NAND_ECC_SMC=y
-CONFIG_MTD_NAND_MUSEUM_IDS=y
-CONFIG_MTD_NAND_IDS=m
-CONFIG_MTD_NAND_DISKONCHIP=m
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y
-CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y
-CONFIG_MTD_NAND_CAFE=m
-CONFIG_MTD_NAND_NANDSIM=m
-CONFIG_MTD_NAND_PLATFORM=m
-CONFIG_MTD_ALAUDA=m
-CONFIG_MTD_ONENAND=m
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-CONFIG_MTD_ONENAND_OTP=y
-CONFIG_MTD_ONENAND_2X_PROGRAM=y
-CONFIG_MTD_ONENAND_SIM=m
-
-#
-# LPDDR flash memory drivers
-#
-CONFIG_MTD_LPDDR=m
-CONFIG_MTD_QINFO_PROBE=m
-
-#
-# UBI - Unsorted block images
-#
-CONFIG_MTD_UBI=m
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-CONFIG_MTD_UBI_GLUEBI=y
-
-#
-# UBI debugging options
-#
-# CONFIG_MTD_UBI_DEBUG is not set
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-CONFIG_PARPORT_SERIAL=m
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-CONFIG_PARPORT_PC_PCMCIA=m
-# CONFIG_PARPORT_GSC is not set
-CONFIG_PARPORT_AX88796=m
-CONFIG_PARPORT_1284=y
-CONFIG_PARPORT_NOT_PC=y
-CONFIG_PNP=y
-CONFIG_PNP_DEBUG_MESSAGES=y
-
-#
-# Protocols
-#
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-CONFIG_BLK_DEV_FD=y
-CONFIG_PARIDE=m
-
-#
-# Parallel IDE high-level drivers
-#
-CONFIG_PARIDE_PD=m
-CONFIG_PARIDE_PCD=m
-CONFIG_PARIDE_PF=m
-CONFIG_PARIDE_PT=m
-CONFIG_PARIDE_PG=m
-
-#
-# Parallel IDE protocol modules
-#
-CONFIG_PARIDE_ATEN=m
-CONFIG_PARIDE_BPCK=m
-CONFIG_PARIDE_COMM=m
-CONFIG_PARIDE_DSTR=m
-CONFIG_PARIDE_FIT2=m
-CONFIG_PARIDE_FIT3=m
-CONFIG_PARIDE_EPAT=m
-CONFIG_PARIDE_EPATC8=y
-CONFIG_PARIDE_EPIA=m
-CONFIG_PARIDE_FRIQ=m
-CONFIG_PARIDE_FRPW=m
-CONFIG_PARIDE_KBIC=m
-CONFIG_PARIDE_KTTI=m
-CONFIG_PARIDE_ON20=m
-CONFIG_PARIDE_ON26=m
-CONFIG_BLK_CPQ_DA=y
-CONFIG_BLK_CPQ_CISS_DA=y
-CONFIG_CISS_SCSI_TAPE=y
-CONFIG_BLK_DEV_DAC960=y
-CONFIG_BLK_DEV_UMEM=m
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_SX8=y
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
-CONFIG_VIRTIO_BLK=m
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_MISC_DEVICES=y
-CONFIG_IBM_ASM=m
-CONFIG_PHANTOM=m
-CONFIG_SGI_IOC4=m
-CONFIG_TIFM_CORE=m
-CONFIG_TIFM_7XX1=m
-CONFIG_ICS932S401=m
-CONFIG_ENCLOSURE_SERVICES=m
-CONFIG_SGI_XP=m
-CONFIG_HP_ILO=m
-CONFIG_SGI_GRU=m
-# CONFIG_SGI_GRU_DEBUG is not set
-CONFIG_DELL_LAPTOP=m
-# CONFIG_C2PORT is not set
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=m
-CONFIG_EEPROM_LEGACY=m
-CONFIG_EEPROM_93CX6=m
-CONFIG_HAVE_IDE=y
-CONFIG_IDE=y
-
-#
-# Please see Documentation/ide/ide.txt for help/info on IDE drives
-#
-CONFIG_IDE_TIMINGS=y
-CONFIG_IDE_ATAPI=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=y
-CONFIG_IDE_GD_ATA=y
-CONFIG_IDE_GD_ATAPI=y
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_DELKIN=m
-CONFIG_BLK_DEV_IDECD=y
-CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEACPI=y
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=m
-CONFIG_BLK_DEV_PLATFORM=m
-CONFIG_BLK_DEV_CMD640=y
-CONFIG_BLK_DEV_CMD640_ENHANCED=y
-CONFIG_BLK_DEV_IDEPNP=y
-CONFIG_BLK_DEV_IDEDMA_SFF=y
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_PCIBUS_ORDER=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-CONFIG_BLK_DEV_AEC62XX=y
-CONFIG_BLK_DEV_ALI15X3=y
-CONFIG_BLK_DEV_AMD74XX=y
-CONFIG_BLK_DEV_ATIIXP=y
-CONFIG_BLK_DEV_CMD64X=y
-CONFIG_BLK_DEV_TRIFLEX=y
-CONFIG_BLK_DEV_CS5520=y
-CONFIG_BLK_DEV_CS5530=y
-CONFIG_BLK_DEV_HPT366=y
-CONFIG_BLK_DEV_JMICRON=y
-CONFIG_BLK_DEV_SC1200=y
-CONFIG_BLK_DEV_PIIX=y
-CONFIG_BLK_DEV_IT8172=y
-CONFIG_BLK_DEV_IT8213=y
-CONFIG_BLK_DEV_IT821X=y
-# CONFIG_BLK_DEV_NS87415 is not set
-CONFIG_BLK_DEV_PDC202XX_OLD=y
-CONFIG_BLK_DEV_PDC202XX_NEW=y
-CONFIG_BLK_DEV_SVWKS=y
-CONFIG_BLK_DEV_SIIMAGE=y
-CONFIG_BLK_DEV_SIS5513=y
-CONFIG_BLK_DEV_SLC90E66=y
-CONFIG_BLK_DEV_TRM290=y
-CONFIG_BLK_DEV_VIA82CXXX=y
-CONFIG_BLK_DEV_TC86C001=y
-CONFIG_BLK_DEV_IDEDMA=y
-
-#
-# SCSI device support
-#
-CONFIG_RAID_ATTRS=y
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=y
-CONFIG_SCSI_NETLINK=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=y
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_ENCLOSURE=m
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=y
-CONFIG_SCSI_FC_ATTRS=y
-CONFIG_SCSI_FC_TGT_ATTRS=y
-CONFIG_SCSI_ISCSI_ATTRS=y
-CONFIG_SCSI_SAS_ATTRS=y
-CONFIG_SCSI_SAS_LIBSAS=y
-CONFIG_SCSI_SAS_ATA=y
-CONFIG_SCSI_SAS_HOST_SMP=y
-# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
-CONFIG_SCSI_SRP_ATTRS=y
-CONFIG_SCSI_SRP_TGT_ATTRS=y
-CONFIG_SCSI_LOWLEVEL=y
-CONFIG_ISCSI_TCP=m
-CONFIG_SCSI_CXGB3_ISCSI=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=y
-CONFIG_SCSI_3W_9XXX=y
-CONFIG_SCSI_ACARD=y
-CONFIG_SCSI_AACRAID=y
-CONFIG_SCSI_AIC7XXX=y
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
-CONFIG_AIC7XXX_DEBUG_MASK=0
-# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
-CONFIG_SCSI_AIC7XXX_OLD=y
-CONFIG_SCSI_AIC79XX=y
-CONFIG_AIC79XX_CMDS_PER_DEVICE=4
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-# CONFIG_AIC79XX_DEBUG_ENABLE is not set
-CONFIG_AIC79XX_DEBUG_MASK=0
-# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
-CONFIG_SCSI_AIC94XX=m
-# CONFIG_AIC94XX_DEBUG is not set
-CONFIG_SCSI_DPT_I2O=m
-CONFIG_SCSI_ADVANSYS=y
-CONFIG_SCSI_ARCMSR=y
-# CONFIG_SCSI_ARCMSR_AER is not set
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=y
-CONFIG_MEGARAID_MAILBOX=y
-CONFIG_MEGARAID_LEGACY=y
-CONFIG_MEGARAID_SAS=y
-CONFIG_SCSI_HPTIOP=y
-CONFIG_SCSI_BUSLOGIC=y
-CONFIG_LIBFC=y
-CONFIG_FCOE=y
-CONFIG_SCSI_DMX3191D=y
-CONFIG_SCSI_EATA=y
-# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
-# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
-CONFIG_SCSI_EATA_MAX_TAGS=16
-CONFIG_SCSI_FUTURE_DOMAIN=y
-CONFIG_SCSI_GDTH=y
-CONFIG_SCSI_IPS=y
-CONFIG_SCSI_INITIO=y
-CONFIG_SCSI_INIA100=y
-CONFIG_SCSI_PPA=m
-CONFIG_SCSI_IMM=m
-# CONFIG_SCSI_IZIP_EPP16 is not set
-# CONFIG_SCSI_IZIP_SLOW_CTR is not set
-CONFIG_SCSI_MVSAS=y
-CONFIG_SCSI_STEX=y
-CONFIG_SCSI_SYM53C8XX_2=y
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-CONFIG_SCSI_IPR=y
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-CONFIG_SCSI_QLOGIC_1280=y
-CONFIG_SCSI_QLA_FC=y
-CONFIG_SCSI_QLA_ISCSI=y
-CONFIG_SCSI_LPFC=y
-# CONFIG_SCSI_LPFC_DEBUG_FS is not set
-CONFIG_SCSI_DC395x=y
-CONFIG_SCSI_DC390T=y
-CONFIG_SCSI_DEBUG=m
-CONFIG_SCSI_SRP=y
-CONFIG_SCSI_LOWLEVEL_PCMCIA=y
-CONFIG_PCMCIA_FDOMAIN=m
-CONFIG_PCMCIA_QLOGIC=m
-CONFIG_PCMCIA_SYM53C500=m
-CONFIG_SCSI_DH=y
-CONFIG_SCSI_DH_RDAC=y
-CONFIG_SCSI_DH_HP_SW=y
-CONFIG_SCSI_DH_EMC=y
-CONFIG_SCSI_DH_ALUA=y
-CONFIG_ATA=y
-# CONFIG_ATA_NONSTANDARD is not set
-CONFIG_ATA_ACPI=y
-CONFIG_SATA_PMP=y
-CONFIG_SATA_AHCI=y
-CONFIG_SATA_SIL24=y
-CONFIG_ATA_SFF=y
-CONFIG_SATA_SVW=y
-CONFIG_ATA_PIIX=y
-CONFIG_SATA_MV=y
-CONFIG_SATA_NV=y
-CONFIG_PDC_ADMA=y
-CONFIG_SATA_QSTOR=y
-CONFIG_SATA_PROMISE=y
-CONFIG_SATA_SX4=y
-CONFIG_SATA_SIL=y
-CONFIG_SATA_SIS=y
-CONFIG_SATA_ULI=y
-CONFIG_SATA_VIA=y
-CONFIG_SATA_VITESSE=y
-CONFIG_SATA_INIC162X=y
-CONFIG_PATA_ACPI=y
-CONFIG_PATA_ALI=m
-CONFIG_PATA_AMD=m
-CONFIG_PATA_ARTOP=m
-CONFIG_PATA_ATIIXP=m
-CONFIG_PATA_CMD640_PCI=m
-CONFIG_PATA_CMD64X=m
-CONFIG_PATA_CS5520=m
-CONFIG_PATA_CS5530=m
-CONFIG_PATA_CYPRESS=m
-CONFIG_PATA_EFAR=m
-CONFIG_ATA_GENERIC=y
-CONFIG_PATA_HPT366=m
-CONFIG_PATA_HPT37X=m
-CONFIG_PATA_HPT3X2N=m
-CONFIG_PATA_HPT3X3=m
-CONFIG_PATA_HPT3X3_DMA=y
-CONFIG_PATA_IT821X=m
-CONFIG_PATA_IT8213=m
-CONFIG_PATA_JMICRON=m
-CONFIG_PATA_TRIFLEX=m
-CONFIG_PATA_MARVELL=y
-CONFIG_PATA_MPIIX=m
-CONFIG_PATA_OLDPIIX=m
-CONFIG_PATA_NETCELL=m
-CONFIG_PATA_NINJA32=m
-CONFIG_PATA_NS87410=m
-CONFIG_PATA_NS87415=m
-CONFIG_PATA_OPTI=m
-CONFIG_PATA_OPTIDMA=m
-CONFIG_PATA_PCMCIA=m
-CONFIG_PATA_PDC_OLD=m
-CONFIG_PATA_RADISYS=m
-CONFIG_PATA_RZ1000=m
-CONFIG_PATA_SC1200=m
-CONFIG_PATA_SERVERWORKS=m
-CONFIG_PATA_PDC2027X=m
-CONFIG_PATA_SIL680=m
-CONFIG_PATA_SIS=y
-CONFIG_PATA_VIA=m
-CONFIG_PATA_WINBOND=m
-CONFIG_PATA_SCH=m
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=y
-CONFIG_MD_AUTODETECT=y
-CONFIG_MD_LINEAR=y
-CONFIG_MD_RAID0=y
-CONFIG_MD_RAID1=y
-CONFIG_MD_RAID10=y
-CONFIG_MD_RAID456=y
-CONFIG_MD_RAID5_RESHAPE=y
-CONFIG_MD_MULTIPATH=y
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=y
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=y
-CONFIG_DM_SNAPSHOT=y
-CONFIG_DM_MIRROR=y
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-CONFIG_FUSION=y
-CONFIG_FUSION_SPI=y
-CONFIG_FUSION_FC=y
-CONFIG_FUSION_SAS=y
-CONFIG_FUSION_MAX_SGE=128
-CONFIG_FUSION_CTL=m
-CONFIG_FUSION_LAN=m
-# CONFIG_FUSION_LOGGING is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# Enable only one of the two stacks, unless you know what you are doing
-#
-# CONFIG_FIREWIRE is not set
-CONFIG_IEEE1394=y
-CONFIG_IEEE1394_OHCI1394=y
-CONFIG_IEEE1394_PCILYNX=y
-CONFIG_IEEE1394_SBP2=y
-# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
-CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
-CONFIG_IEEE1394_ETH1394=m
-CONFIG_IEEE1394_RAWIO=m
-CONFIG_IEEE1394_VIDEO1394=m
-CONFIG_IEEE1394_DV1394=m
-# CONFIG_IEEE1394_VERBOSEDEBUG is not set
-CONFIG_I2O=y
-CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_EXT_ADAPTEC_DMA64=y
-CONFIG_I2O_CONFIG=y
-# CONFIG_I2O_CONFIG_OLD_IOCTL is not set
-CONFIG_I2O_BUS=y
-CONFIG_I2O_BLOCK=y
-CONFIG_I2O_SCSI=y
-CONFIG_I2O_PROC=y
-CONFIG_MACINTOSH_DRIVERS=y
-CONFIG_MAC_EMUMOUSEBTN=y
-CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_MACVLAN=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_VETH=m
-CONFIG_NET_SB1000=m
-CONFIG_ARCNET=m
-CONFIG_ARCNET_1201=m
-CONFIG_ARCNET_1051=m
-CONFIG_ARCNET_RAW=m
-CONFIG_ARCNET_CAP=m
-CONFIG_ARCNET_COM90xx=m
-CONFIG_ARCNET_COM90xxIO=m
-CONFIG_ARCNET_RIM_I=m
-CONFIG_ARCNET_COM20020=m
-CONFIG_ARCNET_COM20020_PCI=m
-CONFIG_PHYLIB=m
-
-#
-# MII PHY device drivers
-#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
-CONFIG_LSI_ET1011C_PHY=m
-CONFIG_MDIO_BITBANG=m
-CONFIG_MDIO_GPIO=m
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-CONFIG_HAPPYMEAL=m
-CONFIG_SUNGEM=m
-CONFIG_CASSINI=m
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_DNET=m
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-CONFIG_TULIP_MMIO=y
-# CONFIG_TULIP_NAPI is not set
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_PCMCIA_XIRCOM=m
-CONFIG_HP100=m
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
-CONFIG_FORCEDETH_NAPI=y
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_R6040=m
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SMSC9420=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_SC92031=m
-CONFIG_NET_POCKET=y
-CONFIG_ATP=m
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_ATL2=m
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000E=m
-CONFIG_IP1000=m
-CONFIG_IGB=m
-# CONFIG_IGB_LRO is not set
-CONFIG_IGB_DCA=y
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_R8169_VLAN=y
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-# CONFIG_SKGE_DEBUG is not set
-CONFIG_SKY2=m
-# CONFIG_SKY2_DEBUG is not set
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_ATL1E=m
-CONFIG_ATL1C=m
-CONFIG_JME=m
-CONFIG_NETDEV_10000=y
-CONFIG_CHELSIO_T1=m
-CONFIG_CHELSIO_T1_1G=y
-CONFIG_CHELSIO_T3_DEPENDS=y
-CONFIG_CHELSIO_T3=m
-CONFIG_ENIC=m
-CONFIG_IXGBE=m
-CONFIG_IXGBE_DCA=y
-CONFIG_IXGB=m
-CONFIG_S2IO=m
-CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
-CONFIG_NETXEN_NIC=m
-CONFIG_NIU=m
-CONFIG_MLX4_EN=m
-CONFIG_MLX4_CORE=m
-CONFIG_MLX4_DEBUG=y
-CONFIG_TEHUTI=m
-CONFIG_BNX2X=m
-CONFIG_QLGE=m
-CONFIG_SFC=m
-CONFIG_SFC_MTD=y
-CONFIG_BE2NET=m
-CONFIG_TR=y
-CONFIG_IBMOL=m
-CONFIG_3C359=m
-CONFIG_TMS380TR=m
-CONFIG_TMSPCI=m
-CONFIG_ABYSS=m
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_CS=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM=m
-CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_AIRO=m
-CONFIG_HERMES=m
-CONFIG_HERMES_CACHE_FW_ON_INIT=y
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_NORTEL_HERMES=m
-CONFIG_PCI_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-CONFIG_PRISM54=m
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8180=m
-CONFIG_RTL8187=m
-CONFIG_ADM8211=m
-# CONFIG_MAC80211_HWSIM is not set
-CONFIG_P54_COMMON=m
-CONFIG_P54_USB=m
-CONFIG_P54_PCI=m
-CONFIG_ATH5K=m
-# CONFIG_ATH5K_DEBUG is not set
-CONFIG_ATH9K=m
-# CONFIG_ATH9K_DEBUG is not set
-CONFIG_IPW2100=m
-CONFIG_IPW2100_MONITOR=y
-# CONFIG_IPW2100_DEBUG is not set
-CONFIG_IPW2200=m
-CONFIG_IPW2200_MONITOR=y
-CONFIG_IPW2200_RADIOTAP=y
-CONFIG_IPW2200_PROMISCUOUS=y
-CONFIG_IPW2200_QOS=y
-# CONFIG_IPW2200_DEBUG is not set
-CONFIG_LIBIPW=m
-# CONFIG_LIBIPW_DEBUG is not set
-CONFIG_IWLWIFI=m
-CONFIG_IWLCORE=m
-CONFIG_IWLWIFI_LEDS=y
-# CONFIG_IWLWIFI_RFKILL is not set
-# CONFIG_IWLWIFI_DEBUG is not set
-CONFIG_IWLAGN=m
-CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y
-CONFIG_IWLAGN_LEDS=y
-CONFIG_IWL4965=y
-CONFIG_IWL5000=y
-CONFIG_IWL3945=m
-# CONFIG_IWL3945_RFKILL is not set
-CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
-CONFIG_IWL3945_LEDS=y
-# CONFIG_IWL3945_DEBUG is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-CONFIG_HOSTAP_CS=m
-CONFIG_B43=m
-CONFIG_B43_PCI_AUTOSELECT=y
-CONFIG_B43_PCICORE_AUTOSELECT=y
-CONFIG_B43_PCMCIA=y
-CONFIG_B43_PIO=y
-CONFIG_B43_LEDS=y
-CONFIG_B43_RFKILL=y
-# CONFIG_B43_DEBUG is not set
-CONFIG_B43LEGACY=m
-CONFIG_B43LEGACY_PCI_AUTOSELECT=y
-CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
-CONFIG_B43LEGACY_LEDS=y
-CONFIG_B43LEGACY_RFKILL=y
-# CONFIG_B43LEGACY_DEBUG is not set
-CONFIG_B43LEGACY_DMA=y
-CONFIG_B43LEGACY_PIO=y
-CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
-# CONFIG_B43LEGACY_DMA_MODE is not set
-# CONFIG_B43LEGACY_PIO_MODE is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_RT2X00=m
-CONFIG_RT2400PCI=m
-CONFIG_RT2500PCI=m
-CONFIG_RT61PCI=m
-CONFIG_RT2500USB=m
-CONFIG_RT73USB=m
-CONFIG_RT2X00_LIB_PCI=m
-CONFIG_RT2X00_LIB_USB=m
-CONFIG_RT2X00_LIB=m
-CONFIG_RT2X00_LIB_FIRMWARE=y
-CONFIG_RT2X00_LIB_CRYPTO=y
-CONFIG_RT2X00_LIB_RFKILL=y
-CONFIG_RT2X00_LIB_LEDS=y
-# CONFIG_RT2X00_DEBUG is not set
-
-#
-# WiMAX Wireless Broadband devices
-#
-CONFIG_WIMAX_I2400M=m
-CONFIG_WIMAX_I2400M_USB=m
-CONFIG_WIMAX_I2400M_SDIO=m
-CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-# CONFIG_USB_EPSON2888 is not set
-# CONFIG_USB_KC2190 is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_HSO=m
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_ARCNET_COM20020_CS=m
-CONFIG_PCMCIA_IBMTR=m
-CONFIG_WAN=y
-CONFIG_LANMEDIA=m
-CONFIG_HDLC=m
-CONFIG_HDLC_RAW=m
-CONFIG_HDLC_RAW_ETH=m
-CONFIG_HDLC_CISCO=m
-CONFIG_HDLC_FR=m
-CONFIG_HDLC_PPP=m
-
-#
-# X.25/LAPB support is disabled
-#
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-# CONFIG_PC300TOO is not set
-CONFIG_FARSYNC=m
-CONFIG_DSCC4=m
-# CONFIG_DSCC4_PCISYNC is not set
-# CONFIG_DSCC4_PCI_RST is not set
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
-CONFIG_WAN_ROUTER_DRIVERS=m
-CONFIG_CYCLADES_SYNC=m
-CONFIG_CYCLOMX_X25=y
-CONFIG_SBNI=m
-# CONFIG_SBNI_MULTILINE is not set
-CONFIG_ATM_DRIVERS=y
-CONFIG_ATM_DUMMY=m
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-# CONFIG_ATM_ENI_DEBUG is not set
-# CONFIG_ATM_ENI_TUNE_BURST is not set
-CONFIG_ATM_FIRESTREAM=m
-CONFIG_ATM_ZATM=m
-# CONFIG_ATM_ZATM_DEBUG is not set
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_IDT77252_USE_SUNI=y
-CONFIG_ATM_AMBASSADOR=m
-# CONFIG_ATM_AMBASSADOR_DEBUG is not set
-CONFIG_ATM_HORIZON=m
-# CONFIG_ATM_HORIZON_DEBUG is not set
-CONFIG_ATM_IA=m
-# CONFIG_ATM_IA_DEBUG is not set
-CONFIG_ATM_FORE200E=m
-# CONFIG_ATM_FORE200E_USE_TASKLET is not set
-CONFIG_ATM_FORE200E_TX_RETRY=16
-CONFIG_ATM_FORE200E_DEBUG=0
-CONFIG_ATM_HE=m
-# CONFIG_ATM_HE_USE_SUNI is not set
-CONFIG_ATM_SOLOS=m
-CONFIG_FDDI=y
-CONFIG_DEFXX=m
-# CONFIG_DEFXX_MMIO is not set
-CONFIG_SKFP=m
-CONFIG_HIPPI=y
-CONFIG_ROADRUNNER=m
-# CONFIG_ROADRUNNER_LARGE_RINGS is not set
-CONFIG_PLIP=m
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-CONFIG_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLHC=m
-CONFIG_SLIP_SMART=y
-# CONFIG_SLIP_MODE_SLIP6 is not set
-CONFIG_NET_FC=y
-CONFIG_NETCONSOLE=m
-CONFIG_NETCONSOLE_DYNAMIC=y
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-CONFIG_VIRTIO_NET=m
-CONFIG_ISDN=y
-CONFIG_MISDN=m
-CONFIG_MISDN_DSP=m
-CONFIG_MISDN_L1OIP=m
-
-#
-# mISDN hardware drivers
-#
-CONFIG_MISDN_HFCPCI=m
-CONFIG_MISDN_HFCMULTI=m
-CONFIG_MISDN_HFCUSB=m
-CONFIG_ISDN_I4L=m
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-
-#
-# ISDN feature submodules
-#
-CONFIG_ISDN_DIVERSION=m
-
-#
-# ISDN4Linux hardware drivers
-#
-
-#
-# Passive cards
-#
-CONFIG_ISDN_DRV_HISAX=m
-
-#
-# D-channel protocol features
-#
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-CONFIG_HISAX_NO_SENDCOMPLETE=y
-CONFIG_HISAX_NO_LLC=y
-CONFIG_HISAX_NO_KEYPAD=y
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-
-#
-# HiSax supported cards
-#
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_TELESPCI=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NETJET=y
-CONFIG_HISAX_NETJET_U=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_BKM_A4T=y
-CONFIG_HISAX_SCT_QUADRO=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_HFC_PCI=y
-CONFIG_HISAX_W6692=y
-CONFIG_HISAX_HFC_SX=y
-CONFIG_HISAX_ENTERNOW_PCI=y
-# CONFIG_HISAX_DEBUG is not set
-
-#
-# HiSax PCMCIA card service modules
-#
-CONFIG_HISAX_SEDLBAUER_CS=m
-CONFIG_HISAX_ELSA_CS=m
-CONFIG_HISAX_AVM_A1_CS=m
-CONFIG_HISAX_TELES_CS=m
-
-#
-# HiSax sub driver modules
-#
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-CONFIG_HISAX_FRITZ_PCIPNP=m
-CONFIG_HISAX_HDLC=y
-
-#
-# Active cards
-#
-CONFIG_HYSDN=m
-CONFIG_HYSDN_CAPI=y
-CONFIG_ISDN_DRV_GIGASET=m
-CONFIG_GIGASET_BASE=m
-CONFIG_GIGASET_M105=m
-# CONFIG_GIGASET_M101 is not set
-# CONFIG_GIGASET_DEBUG is not set
-# CONFIG_GIGASET_UNDOCREQ is not set
-CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_CAPI_TRACE=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
-CONFIG_ISDN_CAPI_CAPIFS=m
-CONFIG_ISDN_CAPI_CAPIDRV=m
-
-#
-# CAPI hardware drivers
-#
-CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1PCI=m
-CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
-CONFIG_ISDN_DRV_AVMB1_T1PCI=m
-CONFIG_ISDN_DRV_AVMB1_C4=m
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DIVAS=m
-CONFIG_ISDN_DIVAS_BRIPCI=y
-CONFIG_ISDN_DIVAS_PRIPCI=y
-CONFIG_ISDN_DIVAS_DIVACAPI=m
-CONFIG_ISDN_DIVAS_USERIDI=m
-CONFIG_ISDN_DIVAS_MAINT=m
-CONFIG_PHONE=m
-CONFIG_PHONE_IXJ=m
-CONFIG_PHONE_IXJ_PCMCIA=m
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=y
-CONFIG_INPUT_POLLDEV=m
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_GPIO=m
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=m
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_ELANTECH is not set
-CONFIG_MOUSE_PS2_TOUCHKIT=y
-CONFIG_MOUSE_SERIAL=m
-CONFIG_MOUSE_APPLETOUCH=m
-CONFIG_MOUSE_BCM5974=m
-CONFIG_MOUSE_VSXXXAA=m
-CONFIG_MOUSE_GPIO=m
-CONFIG_INPUT_JOYSTICK=y
-CONFIG_JOYSTICK_ANALOG=m
-CONFIG_JOYSTICK_A3D=m
-CONFIG_JOYSTICK_ADI=m
-CONFIG_JOYSTICK_COBRA=m
-CONFIG_JOYSTICK_GF2K=m
-CONFIG_JOYSTICK_GRIP=m
-CONFIG_JOYSTICK_GRIP_MP=m
-CONFIG_JOYSTICK_GUILLEMOT=m
-CONFIG_JOYSTICK_INTERACT=m
-CONFIG_JOYSTICK_SIDEWINDER=m
-CONFIG_JOYSTICK_TMDC=m
-CONFIG_JOYSTICK_IFORCE=m
-CONFIG_JOYSTICK_IFORCE_USB=y
-CONFIG_JOYSTICK_IFORCE_232=y
-CONFIG_JOYSTICK_WARRIOR=m
-CONFIG_JOYSTICK_MAGELLAN=m
-CONFIG_JOYSTICK_SPACEORB=m
-CONFIG_JOYSTICK_SPACEBALL=m
-CONFIG_JOYSTICK_STINGER=m
-CONFIG_JOYSTICK_TWIDJOY=m
-CONFIG_JOYSTICK_ZHENHUA=m
-CONFIG_JOYSTICK_DB9=m
-CONFIG_JOYSTICK_GAMECON=m
-CONFIG_JOYSTICK_TURBOGRAFX=m
-CONFIG_JOYSTICK_JOYDUMP=m
-CONFIG_JOYSTICK_XPAD=m
-CONFIG_JOYSTICK_XPAD_FF=y
-CONFIG_JOYSTICK_XPAD_LEDS=y
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_FUJITSU=m
-CONFIG_TOUCHSCREEN_GUNZE=m
-CONFIG_TOUCHSCREEN_ELO=m
-CONFIG_TOUCHSCREEN_WACOM_W8001=m
-CONFIG_TOUCHSCREEN_MTOUCH=m
-CONFIG_TOUCHSCREEN_INEXIO=m
-CONFIG_TOUCHSCREEN_MK712=m
-CONFIG_TOUCHSCREEN_PENMOUNT=m
-CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
-CONFIG_TOUCHSCREEN_TOUCHWIN=m
-CONFIG_TOUCHSCREEN_UCB1400=m
-CONFIG_TOUCHSCREEN_WM97XX=m
-CONFIG_TOUCHSCREEN_WM9705=y
-CONFIG_TOUCHSCREEN_WM9712=y
-CONFIG_TOUCHSCREEN_WM9713=y
-CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
-CONFIG_TOUCHSCREEN_USB_EGALAX=y
-CONFIG_TOUCHSCREEN_USB_PANJIT=y
-CONFIG_TOUCHSCREEN_USB_3M=y
-CONFIG_TOUCHSCREEN_USB_ITM=y
-CONFIG_TOUCHSCREEN_USB_ETURBO=y
-CONFIG_TOUCHSCREEN_USB_GUNZE=y
-CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
-CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
-CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
-CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
-CONFIG_TOUCHSCREEN_USB_GOTOP=y
-CONFIG_TOUCHSCREEN_TOUCHIT213=m
-CONFIG_TOUCHSCREEN_TSC2007=m
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_PCSPKR=m
-CONFIG_INPUT_APANEL=m
-CONFIG_INPUT_ATLAS_BTNS=m
-CONFIG_INPUT_ATI_REMOTE=m
-CONFIG_INPUT_ATI_REMOTE2=m
-CONFIG_INPUT_KEYSPAN_REMOTE=m
-CONFIG_INPUT_POWERMATE=m
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_CM109=m
-CONFIG_INPUT_UINPUT=m
-CONFIG_INPUT_PCF50633_PMU=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=m
-CONFIG_SERIO_CT82C710=m
-CONFIG_SERIO_PARKBD=m
-CONFIG_SERIO_PCIPS2=m
-CONFIG_SERIO_LIBPS2=y
-CONFIG_SERIO_RAW=m
-CONFIG_GAMEPORT=m
-CONFIG_GAMEPORT_NS558=m
-CONFIG_GAMEPORT_L4=m
-CONFIG_GAMEPORT_EMU10K1=m
-CONFIG_GAMEPORT_FM801=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_DEVKMEM=y
-CONFIG_SERIAL_NONSTANDARD=y
-CONFIG_COMPUTONE=m
-CONFIG_ROCKETPORT=m
-CONFIG_CYCLADES=m
-# CONFIG_CYZ_INTR is not set
-CONFIG_DIGIEPCA=m
-CONFIG_MOXA_INTELLIO=m
-CONFIG_MOXA_SMARTIO=m
-CONFIG_ISI=m
-CONFIG_SYNCLINK=m
-CONFIG_SYNCLINKMP=m
-CONFIG_SYNCLINK_GT=m
-CONFIG_N_HDLC=m
-CONFIG_RISCOM8=m
-CONFIG_SPECIALIX=m
-CONFIG_SX=m
-CONFIG_RIO=m
-# CONFIG_RIO_OLDPCI is not set
-CONFIG_STALDRV=y
-CONFIG_STALLION=m
-CONFIG_ISTALLION=m
-CONFIG_NOZOMI=m
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_SERIAL_JSM=m
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-CONFIG_PRINTER=m
-CONFIG_LP_CONSOLE=y
-CONFIG_PPDEV=m
-CONFIG_HVC_DRIVER=y
-CONFIG_VIRTIO_CONSOLE=m
-CONFIG_IPMI_HANDLER=m
-# CONFIG_IPMI_PANIC_EVENT is not set
-CONFIG_IPMI_DEVICE_INTERFACE=m
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_INTEL=m
-CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_NVRAM=m
-CONFIG_R3964=m
-CONFIG_APPLICOM=m
-
-#
-# PCMCIA character devices
-#
-CONFIG_SYNCLINK_CS=m
-CONFIG_CARDMAN_4000=m
-CONFIG_CARDMAN_4040=m
-CONFIG_IPWIRELESS=m
-CONFIG_MWAVE=m
-CONFIG_PC8736x_GPIO=m
-CONFIG_NSC_GPIO=m
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HPET is not set
-CONFIG_HANGCHECK_TIMER=m
-CONFIG_TCG_TPM=m
-# CONFIG_TCG_TIS is not set
-# CONFIG_TCG_NSC is not set
-CONFIG_TCG_ATMEL=m
-# CONFIG_TCG_INFINEON is not set
-CONFIG_TELCLOCK=m
-CONFIG_DEVPORT=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_ALGOBIT=y
-CONFIG_I2C_ALGOPCA=m
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# PC SMBus host controller drivers
-#
-CONFIG_I2C_ALI1535=m
-CONFIG_I2C_ALI1563=m
-CONFIG_I2C_ALI15X3=m
-CONFIG_I2C_AMD756=m
-CONFIG_I2C_AMD756_S4882=m
-CONFIG_I2C_AMD8111=m
-CONFIG_I2C_I801=m
-CONFIG_I2C_ISCH=m
-CONFIG_I2C_PIIX4=m
-CONFIG_I2C_NFORCE2=m
-CONFIG_I2C_NFORCE2_S4985=m
-CONFIG_I2C_SIS5595=m
-CONFIG_I2C_SIS630=m
-CONFIG_I2C_SIS96X=m
-CONFIG_I2C_VIA=m
-CONFIG_I2C_VIAPRO=m
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-CONFIG_I2C_GPIO=m
-CONFIG_I2C_OCORES=m
-CONFIG_I2C_SIMTEC=m
-
-#
-# External I2C/SMBus adapter drivers
-#
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_TAOS_EVM=m
-CONFIG_I2C_TINY_USB=m
-
-#
-# Graphics adapter I2C/DDC channel drivers
-#
-CONFIG_I2C_VOODOO3=m
-
-#
-# Other I2C/SMBus bus drivers
-#
-CONFIG_I2C_PCA_PLATFORM=m
-CONFIG_I2C_STUB=m
-
-#
-# Miscellaneous I2C Chip support
-#
-CONFIG_DS1682=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_SENSORS_MAX6875=m
-CONFIG_SENSORS_TSL2550=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-# CONFIG_SPI is not set
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_SYSFS=y
-
-#
-# Memory mapped GPIO expanders:
-#
-
-#
-# I2C GPIO expanders:
-#
-CONFIG_GPIO_MAX732X=m
-CONFIG_GPIO_PCA953X=m
-CONFIG_GPIO_PCF857X=m
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-CONFIG_W1=m
-CONFIG_W1_CON=y
-
-#
-# 1-wire Bus Masters
-#
-CONFIG_W1_MASTER_MATROX=m
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-CONFIG_W1_MASTER_GPIO=m
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2431=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-CONFIG_W1_SLAVE_DS2760=m
-CONFIG_W1_SLAVE_BQ27000=m
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-CONFIG_PDA_POWER=m
-CONFIG_WM8350_POWER=m
-CONFIG_BATTERY_DS2760=m
-CONFIG_BATTERY_BQ27x00=m
-CONFIG_CHARGER_PCF50633=m
-CONFIG_HWMON=m
-CONFIG_HWMON_VID=m
-CONFIG_SENSORS_ABITUGURU=m
-CONFIG_SENSORS_ABITUGURU3=m
-CONFIG_SENSORS_AD7414=m
-CONFIG_SENSORS_AD7418=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1029=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ADM9240=m
-CONFIG_SENSORS_ADT7462=m
-CONFIG_SENSORS_ADT7470=m
-CONFIG_SENSORS_ADT7473=m
-CONFIG_SENSORS_ADT7475=m
-CONFIG_SENSORS_K8TEMP=m
-CONFIG_SENSORS_ASB100=m
-CONFIG_SENSORS_ATXP1=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_I5K_AMB=m
-CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_F71882FG=m
-CONFIG_SENSORS_F75375S=m
-CONFIG_SENSORS_FSCHER=m
-CONFIG_SENSORS_FSCPOS=m
-CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_CORETEMP=m
-CONFIG_SENSORS_IBMAEM=m
-CONFIG_SENSORS_IBMPEX=m
-CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_PC87427=m
-CONFIG_SENSORS_SIS5595=m
-CONFIG_SENSORS_DME1737=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_SMSC47M192=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_ADS7828=m
-CONFIG_SENSORS_THMC50=m
-CONFIG_SENSORS_VIA686A=m
-CONFIG_SENSORS_VT1211=m
-CONFIG_SENSORS_VT8231=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83791D=m
-CONFIG_SENSORS_W83792D=m
-CONFIG_SENSORS_W83793=m
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83L786NG=m
-CONFIG_SENSORS_W83627HF=m
-CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_HDAPS=m
-CONFIG_SENSORS_LIS3LV02D=m
-CONFIG_SENSORS_APPLESMC=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-CONFIG_THERMAL=m
-CONFIG_THERMAL_HWMON=y
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-CONFIG_SOFT_WATCHDOG=m
-CONFIG_WM8350_WATCHDOG=m
-CONFIG_ACQUIRE_WDT=m
-CONFIG_ADVANTECH_WDT=m
-CONFIG_ALIM1535_WDT=m
-CONFIG_ALIM7101_WDT=m
-CONFIG_SC520_WDT=m
-CONFIG_EUROTECH_WDT=m
-CONFIG_IB700_WDT=m
-CONFIG_IBMASR=m
-CONFIG_WAFER_WDT=m
-CONFIG_I6300ESB_WDT=m
-CONFIG_ITCO_WDT=m
-CONFIG_ITCO_VENDOR_SUPPORT=y
-CONFIG_IT8712F_WDT=m
-CONFIG_IT87_WDT=m
-CONFIG_HP_WATCHDOG=m
-CONFIG_SC1200_WDT=m
-CONFIG_PC87413_WDT=m
-CONFIG_60XX_WDT=m
-CONFIG_SBC8360_WDT=m
-CONFIG_CPU5_WDT=m
-CONFIG_SMSC_SCH311X_WDT=m
-CONFIG_SMSC37B787_WDT=m
-CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
-CONFIG_W83877F_WDT=m
-CONFIG_W83977F_WDT=m
-CONFIG_MACHZ_WDT=m
-CONFIG_SBC_EPX_C3_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
-
-#
-# USB-based Watchdog Cards
-#
-CONFIG_USBPCWATCHDOG=m
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB=m
-CONFIG_SSB_SPROM=y
-CONFIG_SSB_BLOCKIO=y
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-CONFIG_SSB_B43_PCI_BRIDGE=y
-CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
-CONFIG_SSB_PCMCIAHOST=y
-# CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_DRIVER_PCICORE=y
-
-#
-# Multifunction device drivers
-#
-CONFIG_MFD_CORE=m
-# CONFIG_MFD_SM501 is not set
-CONFIG_HTC_PASIC3=m
-CONFIG_UCB1400_CORE=m
-CONFIG_TPS65010=m
-# CONFIG_TWL4030_CORE is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_PMIC_DA903X is not set
-CONFIG_MFD_WM8400=m
-CONFIG_MFD_WM8350=m
-CONFIG_MFD_WM8350_I2C=m
-CONFIG_MFD_PCF50633=m
-CONFIG_PCF50633_ADC=m
-CONFIG_PCF50633_GPIO=m
-# CONFIG_REGULATOR is not set
-
-#
-# Multimedia devices
-#
-
-#
-# Multimedia core support
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
-CONFIG_VIDEO_ALLOW_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_DVB_CORE=m
-CONFIG_VIDEO_MEDIA=m
-
-#
-# Multimedia drivers
-#
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-CONFIG_MEDIA_TUNER_CUSTOMIZE=y
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_MT2060=m
-CONFIG_MEDIA_TUNER_MT2266=m
-CONFIG_MEDIA_TUNER_MT2131=m
-CONFIG_MEDIA_TUNER_QT1010=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_MXL5005S=m
-CONFIG_MEDIA_TUNER_MXL5007T=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEO_V4L1=m
-CONFIG_VIDEOBUF_GEN=m
-CONFIG_VIDEOBUF_DMA_SG=m
-CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DVB=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_IR=m
-CONFIG_VIDEO_TVEEPROM=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Encoders/decoders and other helper chips
-#
-
-#
-# Audio decoders
-#
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
-CONFIG_VIDEO_TDA9840=m
-CONFIG_VIDEO_TDA9875=m
-CONFIG_VIDEO_TEA6415C=m
-CONFIG_VIDEO_TEA6420=m
-CONFIG_VIDEO_MSP3400=m
-CONFIG_VIDEO_CS5345=m
-CONFIG_VIDEO_CS53L32A=m
-CONFIG_VIDEO_M52790=m
-CONFIG_VIDEO_TLV320AIC23B=m
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_WM8739=m
-CONFIG_VIDEO_VP27SMPX=m
-
-#
-# Video decoders
-#
-CONFIG_VIDEO_BT819=m
-CONFIG_VIDEO_BT856=m
-CONFIG_VIDEO_BT866=m
-CONFIG_VIDEO_KS0127=m
-CONFIG_VIDEO_OV7670=m
-CONFIG_VIDEO_TCM825X=m
-CONFIG_VIDEO_SAA7110=m
-CONFIG_VIDEO_SAA7111=m
-CONFIG_VIDEO_SAA7114=m
-CONFIG_VIDEO_SAA711X=m
-CONFIG_VIDEO_SAA717X=m
-CONFIG_VIDEO_SAA7191=m
-CONFIG_VIDEO_TVP514X=m
-CONFIG_VIDEO_TVP5150=m
-CONFIG_VIDEO_VPX3220=m
-
-#
-# Video and audio decoders
-#
-CONFIG_VIDEO_CX25840=m
-
-#
-# MPEG video encoders
-#
-CONFIG_VIDEO_CX2341X=m
-
-#
-# Video encoders
-#
-CONFIG_VIDEO_SAA7127=m
-CONFIG_VIDEO_SAA7185=m
-CONFIG_VIDEO_ADV7170=m
-CONFIG_VIDEO_ADV7175=m
-
-#
-# Video improvement chips
-#
-CONFIG_VIDEO_UPD64031A=m
-CONFIG_VIDEO_UPD64083=m
-CONFIG_VIDEO_VIVI=m
-CONFIG_VIDEO_BT848=m
-CONFIG_VIDEO_BT848_DVB=y
-CONFIG_VIDEO_SAA6588=m
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_W9966=m
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_PP=m
-CONFIG_VIDEO_CPIA_USB=m
-CONFIG_VIDEO_CPIA2=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_VIDEO_STRADIS=m
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_ZR36060=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_ZORAN_AVS6EYES=m
-CONFIG_VIDEO_MEYE=m
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_ALSA=m
-CONFIG_VIDEO_SAA7134_DVB=m
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-CONFIG_VIDEO_CX88_BLACKBIRD=m
-CONFIG_VIDEO_CX88_DVB=m
-CONFIG_VIDEO_CX88_MPEG=m
-CONFIG_VIDEO_CX88_VP3054=m
-CONFIG_VIDEO_CX23885=m
-CONFIG_VIDEO_AU0828=m
-CONFIG_VIDEO_IVTV=m
-CONFIG_VIDEO_FB_IVTV=m
-CONFIG_VIDEO_CX18=m
-CONFIG_VIDEO_CAFE_CCIC=m
-CONFIG_SOC_CAMERA=m
-CONFIG_SOC_CAMERA_MT9M001=m
-CONFIG_MT9M001_PCA9536_SWITCH=y
-CONFIG_SOC_CAMERA_MT9M111=m
-CONFIG_SOC_CAMERA_MT9T031=m
-CONFIG_SOC_CAMERA_MT9V022=m
-CONFIG_MT9V022_PCA9536_SWITCH=y
-CONFIG_SOC_CAMERA_TW9910=m
-CONFIG_SOC_CAMERA_PLATFORM=m
-CONFIG_SOC_CAMERA_OV772X=m
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=m
-CONFIG_USB_M5602=m
-CONFIG_USB_STV06XX=m
-CONFIG_USB_GSPCA_CONEX=m
-CONFIG_USB_GSPCA_ETOMS=m
-CONFIG_USB_GSPCA_FINEPIX=m
-CONFIG_USB_GSPCA_MARS=m
-CONFIG_USB_GSPCA_OV519=m
-CONFIG_USB_GSPCA_OV534=m
-CONFIG_USB_GSPCA_PAC207=m
-CONFIG_USB_GSPCA_PAC7311=m
-CONFIG_USB_GSPCA_SONIXB=m
-CONFIG_USB_GSPCA_SONIXJ=m
-CONFIG_USB_GSPCA_SPCA500=m
-CONFIG_USB_GSPCA_SPCA501=m
-CONFIG_USB_GSPCA_SPCA505=m
-CONFIG_USB_GSPCA_SPCA506=m
-CONFIG_USB_GSPCA_SPCA508=m
-CONFIG_USB_GSPCA_SPCA561=m
-CONFIG_USB_GSPCA_STK014=m
-CONFIG_USB_GSPCA_SUNPLUS=m
-CONFIG_USB_GSPCA_T613=m
-CONFIG_USB_GSPCA_TV8532=m
-CONFIG_USB_GSPCA_VC032X=m
-CONFIG_USB_GSPCA_ZC3XX=m
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-CONFIG_VIDEO_PVRUSB2_DVB=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-CONFIG_VIDEO_EM28XX=m
-CONFIG_VIDEO_EM28XX_ALSA=m
-CONFIG_VIDEO_EM28XX_DVB=m
-CONFIG_VIDEO_USBVISION=m
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_QUICKCAM_MESSENGER=m
-CONFIG_USB_ET61X251=m
-CONFIG_VIDEO_OVCAMCHIP=m
-CONFIG_USB_W9968CF=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-CONFIG_USB_ZC0301=m
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-CONFIG_USB_ZR364XX=m
-CONFIG_USB_STKWEBCAM=m
-CONFIG_USB_S2255=m
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_RADIO_GEMTEK_PCI=m
-CONFIG_RADIO_MAXIRADIO=m
-CONFIG_RADIO_MAESTRO=m
-CONFIG_USB_DSBR=m
-CONFIG_USB_SI470X=m
-CONFIG_USB_MR800=m
-CONFIG_RADIO_TEA5764=m
-# CONFIG_DVB_DYNAMIC_MINORS is not set
-CONFIG_DVB_CAPTURE_DRIVERS=y
-
-#
-# Supported SAA7146 based PCI Adapters
-#
-CONFIG_TTPCI_EEPROM=m
-CONFIG_DVB_AV7110=m
-CONFIG_DVB_AV7110_OSD=y
-CONFIG_DVB_BUDGET_CORE=m
-CONFIG_DVB_BUDGET=m
-CONFIG_DVB_BUDGET_CI=m
-CONFIG_DVB_BUDGET_AV=m
-CONFIG_DVB_BUDGET_PATCH=m
-
-#
-# Supported USB Adapters
-#
-CONFIG_DVB_USB=m
-# CONFIG_DVB_USB_DEBUG is not set
-CONFIG_DVB_USB_A800=m
-CONFIG_DVB_USB_DIBUSB_MB=m
-# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
-CONFIG_DVB_USB_DIBUSB_MC=m
-CONFIG_DVB_USB_DIB0700=m
-CONFIG_DVB_USB_UMT_010=m
-CONFIG_DVB_USB_CXUSB=m
-CONFIG_DVB_USB_M920X=m
-CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_AU6610=m
-CONFIG_DVB_USB_DIGITV=m
-CONFIG_DVB_USB_VP7045=m
-CONFIG_DVB_USB_VP702X=m
-CONFIG_DVB_USB_GP8PSK=m
-CONFIG_DVB_USB_NOVA_T_USB2=m
-CONFIG_DVB_USB_TTUSB2=m
-CONFIG_DVB_USB_DTT200U=m
-CONFIG_DVB_USB_OPERA1=m
-CONFIG_DVB_USB_AF9005=m
-CONFIG_DVB_USB_AF9005_REMOTE=m
-CONFIG_DVB_USB_DW2102=m
-CONFIG_DVB_USB_CINERGY_T2=m
-CONFIG_DVB_USB_ANYSEE=m
-CONFIG_DVB_USB_DTV5100=m
-CONFIG_DVB_USB_AF9015=m
-CONFIG_DVB_TTUSB_BUDGET=m
-CONFIG_DVB_TTUSB_DEC=m
-CONFIG_DVB_SIANO_SMS1XXX=m
-CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-CONFIG_DVB_B2C2_FLEXCOP=m
-CONFIG_DVB_B2C2_FLEXCOP_PCI=m
-CONFIG_DVB_B2C2_FLEXCOP_USB=m
-# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
-
-#
-# Supported BT878 Adapters
-#
-CONFIG_DVB_BT8XX=m
-
-#
-# Supported Pluto2 Adapters
-#
-CONFIG_DVB_PLUTO2=m
-
-#
-# Supported SDMC DM1105 Adapters
-#
-CONFIG_DVB_DM1105=m
-
-#
-# Supported FireWire (IEEE 1394) Adapters
-#
-CONFIG_DVB_FIREDTV=m
-CONFIG_DVB_FIREDTV_IEEE1394=y
-CONFIG_DVB_FIREDTV_INPUT=y
-
-#
-# Supported DVB Frontends
-#
-
-#
-# Customise DVB Frontends
-#
-CONFIG_DVB_FE_CUSTOMISE=y
-
-#
-# Multistandard (satellite) frontends
-#
-CONFIG_DVB_STB0899=m
-CONFIG_DVB_STB6100=m
-
-#
-# DVB-S (satellite) frontends
-#
-CONFIG_DVB_CX24110=m
-CONFIG_DVB_CX24123=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_S5H1420=m
-CONFIG_DVB_STV0288=m
-CONFIG_DVB_STB6000=m
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA10086=m
-CONFIG_DVB_TDA8261=m
-CONFIG_DVB_VES1X93=m
-CONFIG_DVB_TUNER_ITD1000=m
-CONFIG_DVB_TUNER_CX24113=m
-CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
-CONFIG_DVB_CX24116=m
-CONFIG_DVB_SI21XX=m
-
-#
-# DVB-T (terrestrial) frontends
-#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
-CONFIG_DVB_CX22700=m
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_DRX397XD=m
-CONFIG_DVB_L64781=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
-CONFIG_DVB_ZL10353=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-CONFIG_DVB_DIB7000M=m
-CONFIG_DVB_DIB7000P=m
-CONFIG_DVB_TDA10048=m
-
-#
-# DVB-C (cable) frontends
-#
-CONFIG_DVB_VES1820=m
-CONFIG_DVB_TDA10021=m
-CONFIG_DVB_TDA10023=m
-CONFIG_DVB_STV0297=m
-
-#
-# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
-#
-CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
-CONFIG_DVB_OR51132=m
-CONFIG_DVB_BCM3510=m
-CONFIG_DVB_LGDT330X=m
-CONFIG_DVB_LGDT3304=m
-CONFIG_DVB_S5H1409=m
-CONFIG_DVB_AU8522=m
-CONFIG_DVB_S5H1411=m
-
-#
-# ISDB-T (terrestrial) frontends
-#
-CONFIG_DVB_S921=m
-
-#
-# Digital terrestrial only tuners/PLL
-#
-CONFIG_DVB_PLL=m
-CONFIG_DVB_TUNER_DIB0070=m
-
-#
-# SEC control devices for DVB-S
-#
-CONFIG_DVB_LNBP21=m
-CONFIG_DVB_ISL6405=m
-CONFIG_DVB_ISL6421=m
-CONFIG_DVB_LGS8GL5=m
-
-#
-# Tools to develop new frontends
-#
-# CONFIG_DVB_DUMMY_FE is not set
-CONFIG_DVB_AF9013=m
-CONFIG_DAB=y
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-CONFIG_AGP=y
-CONFIG_AGP_AMD64=y
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_VIA=m
-CONFIG_DRM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_I810=m
-CONFIG_DRM_I830=m
-CONFIG_DRM_I915=m
-# CONFIG_DRM_I915_KMS is not set
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-CONFIG_FB_DDC=m
-CONFIG_FB_BOOT_VESA_SUPPORT=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=m
-CONFIG_FB_SYS_COPYAREA=m
-CONFIG_FB_SYS_IMAGEBLIT=m
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=m
-CONFIG_FB_DEFERRED_IO=y
-CONFIG_FB_HECUBA=m
-CONFIG_FB_SVGALIB=m
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_BACKLIGHT=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-CONFIG_FB_CIRRUS=m
-CONFIG_FB_PM2=m
-# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
-CONFIG_FB_CYBER2000=m
-CONFIG_FB_ARC=m
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=m
-# CONFIG_FB_UVESA is not set
-CONFIG_FB_VESA=y
-CONFIG_FB_N411=m
-CONFIG_FB_HGA=m
-# CONFIG_FB_HGA_ACCEL is not set
-CONFIG_FB_S1D13XXX=m
-CONFIG_FB_NVIDIA=m
-CONFIG_FB_NVIDIA_I2C=y
-# CONFIG_FB_NVIDIA_DEBUG is not set
-CONFIG_FB_NVIDIA_BACKLIGHT=y
-CONFIG_FB_RIVA=m
-CONFIG_FB_RIVA_I2C=y
-# CONFIG_FB_RIVA_DEBUG is not set
-CONFIG_FB_RIVA_BACKLIGHT=y
-CONFIG_FB_LE80578=m
-CONFIG_FB_CARILLO_RANCH=m
-CONFIG_FB_INTEL=m
-# CONFIG_FB_INTEL_DEBUG is not set
-CONFIG_FB_INTEL_I2C=y
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY128_BACKLIGHT=y
-CONFIG_FB_ATY=m
-CONFIG_FB_ATY_CT=y
-CONFIG_FB_ATY_GENERIC_LCD=y
-CONFIG_FB_ATY_GX=y
-CONFIG_FB_ATY_BACKLIGHT=y
-CONFIG_FB_S3=m
-CONFIG_FB_SAVAGE=m
-CONFIG_FB_SAVAGE_I2C=y
-CONFIG_FB_SAVAGE_ACCEL=y
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_VIA=m
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_3DFX=m
-# CONFIG_FB_3DFX_ACCEL is not set
-CONFIG_FB_VOODOO1=m
-CONFIG_FB_VT8623=m
-CONFIG_FB_TRIDENT=m
-# CONFIG_FB_TRIDENT_ACCEL is not set
-CONFIG_FB_ARK=m
-CONFIG_FB_PM3=m
-CONFIG_FB_CARMINE=m
-CONFIG_FB_CARMINE_DRAM_EVAL=y
-# CONFIG_CARMINE_DRAM_CUSTOM is not set
-CONFIG_FB_GEODE=y
-CONFIG_FB_GEODE_LX=m
-CONFIG_FB_GEODE_GX=m
-CONFIG_FB_GEODE_GX1=m
-CONFIG_FB_TMIO=m
-CONFIG_FB_TMIO_ACCELL=y
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FB_METRONOME=m
-CONFIG_FB_MB862XX=m
-CONFIG_FB_MB862XX_PCI_GDC=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-# CONFIG_LCD_ILI9320 is not set
-CONFIG_LCD_PLATFORM=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
-CONFIG_BACKLIGHT_PROGEAR=m
-CONFIG_BACKLIGHT_CARILLO_RANCH=m
-CONFIG_BACKLIGHT_MBP_NVIDIA=m
-CONFIG_BACKLIGHT_SAHARA=m
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=m
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-CONFIG_VGACON_SOFT_SCROLLBACK=y
-CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=m
-CONFIG_SOUND_OSS_CORE=y
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_JACK=y
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-CONFIG_SND_VMASTER=y
-CONFIG_SND_MPU401_UART=m
-CONFIG_SND_OPL3_LIB=m
-CONFIG_SND_VX_LIB=m
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_DRIVERS=y
-CONFIG_SND_DUMMY=m
-CONFIG_SND_VIRMIDI=m
-CONFIG_SND_MTPAV=m
-CONFIG_SND_MTS64=m
-CONFIG_SND_SERIAL_U16550=m
-CONFIG_SND_MPU401=m
-CONFIG_SND_PORTMAN2X4=m
-CONFIG_SND_AC97_POWER_SAVE=y
-CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
-CONFIG_SND_SB_COMMON=m
-CONFIG_SND_SB16_DSP=m
-CONFIG_SND_PCI=y
-CONFIG_SND_AD1889=m
-CONFIG_SND_ALS300=m
-CONFIG_SND_ALS4000=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ATIIXP=m
-CONFIG_SND_ATIIXP_MODEM=m
-CONFIG_SND_AU8810=m
-CONFIG_SND_AU8820=m
-CONFIG_SND_AU8830=m
-CONFIG_SND_AW2=m
-CONFIG_SND_AZT3328=m
-CONFIG_SND_BT87X=m
-# CONFIG_SND_BT87X_OVERCLOCK is not set
-CONFIG_SND_CA0106=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_OXYGEN_LIB=m
-CONFIG_SND_OXYGEN=m
-CONFIG_SND_CS4281=m
-CONFIG_SND_CS46XX=m
-CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_CS5530=m
-CONFIG_SND_DARLA20=m
-CONFIG_SND_GINA20=m
-CONFIG_SND_LAYLA20=m
-CONFIG_SND_DARLA24=m
-CONFIG_SND_GINA24=m
-CONFIG_SND_LAYLA24=m
-CONFIG_SND_MONA=m
-CONFIG_SND_MIA=m
-CONFIG_SND_ECHO3G=m
-CONFIG_SND_INDIGO=m
-CONFIG_SND_INDIGOIO=m
-CONFIG_SND_INDIGODJ=m
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_FM801_TEA575X=m
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_HWDEP=y
-# CONFIG_SND_HDA_RECONFIG is not set
-# CONFIG_SND_HDA_INPUT_BEEP is not set
-CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_CODEC_ANALOG=y
-CONFIG_SND_HDA_CODEC_SIGMATEL=y
-CONFIG_SND_HDA_CODEC_VIA=y
-CONFIG_SND_HDA_CODEC_ATIHDMI=y
-CONFIG_SND_HDA_CODEC_NVHDMI=y
-CONFIG_SND_HDA_CODEC_INTELHDMI=y
-CONFIG_SND_HDA_ELD=y
-CONFIG_SND_HDA_CODEC_CONEXANT=y
-CONFIG_SND_HDA_CODEC_CMEDIA=y
-CONFIG_SND_HDA_CODEC_SI3054=y
-CONFIG_SND_HDA_GENERIC=y
-# CONFIG_SND_HDA_POWER_SAVE is not set
-CONFIG_SND_HDSP=m
-CONFIG_SND_HDSPM=m
-CONFIG_SND_HIFIER=m
-CONFIG_SND_ICE1712=m
-CONFIG_SND_ICE1724=m
-CONFIG_SND_INTEL8X0=m
-CONFIG_SND_INTEL8X0M=m
-CONFIG_SND_KORG1212=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MIXART=m
-CONFIG_SND_NM256=m
-CONFIG_SND_PCXHR=m
-CONFIG_SND_RIPTIDE=m
-CONFIG_SND_RME32=m
-CONFIG_SND_RME96=m
-CONFIG_SND_RME9652=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-CONFIG_SND_VIRTUOSO=m
-CONFIG_SND_VX222=m
-CONFIG_SND_YMFPCI=m
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_USX2Y=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-CONFIG_SND_USB_US122L=m
-CONFIG_SND_PCMCIA=y
-CONFIG_SND_VXPOCKET=m
-CONFIG_SND_PDAUDIOCF=m
-# CONFIG_SND_SOC is not set
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-CONFIG_HIDRAW=y
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-CONFIG_HID_PID=y
-CONFIG_USB_HIDDEV=y
-
-#
-# Special HID drivers
-#
-CONFIG_HID_COMPAT=y
-CONFIG_HID_A4TECH=y
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-CONFIG_HID_CYPRESS=y
-CONFIG_HID_EZKEY=y
-CONFIG_HID_GYRATION=y
-CONFIG_HID_LOGITECH=y
-CONFIG_LOGITECH_FF=y
-CONFIG_LOGIRUMBLEPAD2_FF=y
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-CONFIG_HID_NTRIG=y
-CONFIG_HID_PANTHERLORD=y
-CONFIG_PANTHERLORD_FF=y
-CONFIG_HID_PETALYNX=y
-CONFIG_HID_SAMSUNG=y
-CONFIG_HID_SONY=y
-CONFIG_HID_SUNPLUS=y
-CONFIG_GREENASIA_FF=m
-CONFIG_HID_TOPSEED=y
-CONFIG_THRUSTMASTER_FF=m
-CONFIG_ZEROPLUS_FF=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-CONFIG_USB_MON=y
-CONFIG_USB_WUSB=m
-CONFIG_USB_WUSB_CBAF=m
-# CONFIG_USB_WUSB_CBAF_DEBUG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_C67X00_HCD=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_OXU210HP_HCD=y
-CONFIG_USB_ISP116X_HCD=y
-CONFIG_USB_ISP1760_HCD=y
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_U132_HCD=m
-CONFIG_USB_SL811_HCD=y
-CONFIG_USB_SL811_CS=m
-CONFIG_USB_R8A66597_HCD=y
-CONFIG_USB_WHCI_HCD=m
-CONFIG_USB_HWA_HCD=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_WDM=m
-CONFIG_USB_TMC=m
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
-#
-
-#
-# see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-CONFIG_USB_STORAGE_CYPRESS_ATACB=y
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB port drivers
-#
-CONFIG_USB_USS720=m
-CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_SAFE_PADDED=y
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_DEBUG=m
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_ADUTUX=m
-CONFIG_USB_SEVSEG=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_BERRY_CHARGE=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGET=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETMOTORCONTROL=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-CONFIG_USB_APPLEDISPLAY=m
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_IOWARRIOR=m
-CONFIG_USB_TEST=m
-CONFIG_USB_ISIGHTFW=m
-CONFIG_USB_VST=m
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
-# CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-CONFIG_USB_GPIO_VBUS=m
-CONFIG_UWB=m
-CONFIG_UWB_HWA=m
-CONFIG_UWB_WHCI=m
-CONFIG_UWB_WLP=m
-CONFIG_UWB_I1480U=m
-CONFIG_UWB_I1480U_WLP=m
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=m
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-CONFIG_MMC_SDHCI=m
-CONFIG_MMC_SDHCI_PCI=m
-CONFIG_MMC_RICOH_MMC=m
-CONFIG_MMC_WBSD=m
-CONFIG_MMC_TIFM_SD=m
-CONFIG_MMC_SDRICOH_CS=m
-CONFIG_MEMSTICK=m
-# CONFIG_MEMSTICK_DEBUG is not set
-
-#
-# MemoryStick drivers
-#
-# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
-CONFIG_MSPRO_BLOCK=m
-
-#
-# MemoryStick Host Controller Drivers
-#
-CONFIG_MEMSTICK_TIFM_MS=m
-CONFIG_MEMSTICK_JMICRON_38X=m
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
-
-#
-# LED drivers
-#
-CONFIG_LEDS_ALIX2=m
-CONFIG_LEDS_PCA9532=m
-CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_CLEVO_MAIL=m
-CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_WM8350=m
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
-CONFIG_LEDS_TRIGGER_BACKLIGHT=m
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
-CONFIG_ACCESSIBILITY=y
-CONFIG_A11Y_BRAILLE_CONSOLE=y
-CONFIG_INFINIBAND=m
-CONFIG_INFINIBAND_USER_MAD=m
-CONFIG_INFINIBAND_USER_ACCESS=m
-CONFIG_INFINIBAND_USER_MEM=y
-CONFIG_INFINIBAND_ADDR_TRANS=y
-CONFIG_INFINIBAND_MTHCA=m
-CONFIG_INFINIBAND_MTHCA_DEBUG=y
-CONFIG_INFINIBAND_IPATH=m
-CONFIG_INFINIBAND_AMSO1100=m
-# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
-# CONFIG_INFINIBAND_CXGB3 is not set
-CONFIG_MLX4_INFINIBAND=m
-CONFIG_INFINIBAND_NES=m
-# CONFIG_INFINIBAND_NES_DEBUG is not set
-CONFIG_INFINIBAND_IPOIB=m
-# CONFIG_INFINIBAND_IPOIB_CM is not set
-CONFIG_INFINIBAND_IPOIB_DEBUG=y
-# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
-CONFIG_INFINIBAND_SRP=m
-CONFIG_INFINIBAND_ISER=m
-# CONFIG_EDAC is not set
-CONFIG_RTC_LIB=m
-CONFIG_RTC_CLASS=m
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-CONFIG_RTC_INTF_DEV_UIE_EMUL=y
-CONFIG_RTC_DRV_TEST=m
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_MAX6900=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_M41T80=m
-CONFIG_RTC_DRV_M41T80_WDT=y
-CONFIG_RTC_DRV_S35390A=m
-CONFIG_RTC_DRV_FM3130=m
-CONFIG_RTC_DRV_RX8581=m
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-CONFIG_RTC_DRV_CMOS=m
-CONFIG_RTC_DRV_DS1286=m
-CONFIG_RTC_DRV_DS1511=m
-CONFIG_RTC_DRV_DS1553=m
-CONFIG_RTC_DRV_DS1742=m
-CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
-CONFIG_RTC_DRV_M48T35=m
-CONFIG_RTC_DRV_M48T59=m
-CONFIG_RTC_DRV_BQ4802=m
-CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_WM8350=m
-CONFIG_RTC_DRV_PCF50633=m
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_DMADEVICES=y
-
-#
-# DMA Devices
-#
-CONFIG_INTEL_IOATDMA=m
-CONFIG_DMA_ENGINE=y
-
-#
-# DMA Clients
-#
-CONFIG_NET_DMA=y
-CONFIG_DMATEST=m
-CONFIG_DCA=m
-CONFIG_AUXDISPLAY=y
-# CONFIG_KS0108 is not set
-CONFIG_UIO=m
-CONFIG_UIO_CIF=m
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
-CONFIG_UIO_SMX=m
-CONFIG_UIO_SERCOS3=m
-CONFIG_STAGING=y
-# CONFIG_STAGING_EXCLUDE_BUILD is not set
-# CONFIG_ET131X is not set
-# CONFIG_SLICOSS is not set
-# CONFIG_SXG is not set
-# CONFIG_ME4000 is not set
-# CONFIG_MEILHAUS is not set
-# CONFIG_VIDEO_GO7007 is not set
-# CONFIG_USB_IP_COMMON is not set
-# CONFIG_W35UND is not set
-# CONFIG_PRISM2_USB is not set
-# CONFIG_ECHO is not set
-# CONFIG_USB_ATMEL is not set
-# CONFIG_POCH is not set
-# CONFIG_AGNX is not set
-# CONFIG_OTUS is not set
-CONFIG_RT2860=m
-CONFIG_RT2870=m
-# CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
-# CONFIG_PANEL is not set
-# CONFIG_ALTERA_PCIE_CHDMA is not set
-CONFIG_RTL8187SE=m
-# CONFIG_INPUT_MIMIO is not set
-# CONFIG_TRANZPORT is not set
-
-#
-# Android
-#
-# CONFIG_ANDROID is not set
-# CONFIG_ANDROID_BINDER_IPC is not set
-# CONFIG_ANDROID_LOGGER is not set
-# CONFIG_ANDROID_RAM_CONSOLE is not set
-# CONFIG_ANDROID_TIMED_GPIO is not set
-# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set
-CONFIG_X86_PLATFORM_DEVICES=y
-CONFIG_ACER_WMI=m
-CONFIG_ASUS_LAPTOP=m
-CONFIG_FUJITSU_LAPTOP=m
-# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
-CONFIG_HP_WMI=m
-CONFIG_MSI_LAPTOP=m
-CONFIG_PANASONIC_LAPTOP=m
-CONFIG_COMPAL_LAPTOP=m
-CONFIG_SONY_LAPTOP=m
-CONFIG_SONYPI_COMPAT=y
-CONFIG_THINKPAD_ACPI=m
-# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
-# CONFIG_THINKPAD_ACPI_DEBUG is not set
-CONFIG_THINKPAD_ACPI_BAY=y
-CONFIG_THINKPAD_ACPI_VIDEO=y
-CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
-CONFIG_INTEL_MENLOW=m
-CONFIG_EEEPC_LAPTOP=m
-CONFIG_ACPI_WMI=m
-CONFIG_ACPI_ASUS=m
-CONFIG_ACPI_TOSHIBA=m
-
-#
-# Firmware Drivers
-#
-CONFIG_EDD=m
-# CONFIG_EDD_OFF is not set
-CONFIG_FIRMWARE_MEMMAP=y
-CONFIG_DELL_RBU=m
-CONFIG_DCDBAS=m
-CONFIG_DMIID=y
-CONFIG_ISCSI_IBFT_FIND=y
-CONFIG_ISCSI_IBFT=m
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-CONFIG_EXT4_FS=y
-# CONFIG_EXT4DEV_COMPAT is not set
-CONFIG_EXT4_FS_XATTR=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_JBD2=y
-# CONFIG_JBD2_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-CONFIG_REISERFS_FS=y
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-CONFIG_JFS_FS=y
-CONFIG_JFS_POSIX_ACL=y
-CONFIG_JFS_SECURITY=y
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_FILE_LOCKING=y
-CONFIG_XFS_FS=y
-CONFIG_XFS_QUOTA=y
-CONFIG_XFS_POSIX_ACL=y
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_DEBUG is not set
-CONFIG_GFS2_FS=y
-CONFIG_GFS2_FS_LOCKING_DLM=m
-CONFIG_OCFS2_FS=m
-CONFIG_OCFS2_FS_O2CB=m
-CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
-# CONFIG_OCFS2_FS_STATS is not set
-CONFIG_OCFS2_DEBUG_MASKLOG=y
-# CONFIG_OCFS2_DEBUG_FS is not set
-CONFIG_OCFS2_FS_POSIX_ACL=y
-CONFIG_BTRFS_FS=m
-CONFIG_BTRFS_FS_POSIX_ACL=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_QUOTA=y
-CONFIG_QUOTA_NETLINK_INTERFACE=y
-# CONFIG_PRINT_QUOTA_WARNING is not set
-CONFIG_QUOTA_TREE=m
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
-CONFIG_QUOTACTL=y
-CONFIG_AUTOFS_FS=m
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-CONFIG_GENERIC_ACL=y
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=y
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-CONFIG_NTFS_FS=y
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_CONFIGFS_FS=y
-CONFIG_MISC_FILESYSTEMS=y
-CONFIG_ADFS_FS=m
-# CONFIG_ADFS_FS_RW is not set
-CONFIG_AFFS_FS=m
-# CONFIG_ECRYPT_FS is not set
-CONFIG_HFS_FS=m
-CONFIG_HFSPLUS_FS=m
-CONFIG_BEFS_FS=m
-# CONFIG_BEFS_DEBUG is not set
-CONFIG_BFS_FS=m
-CONFIG_EFS_FS=m
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_UBIFS_FS=m
-CONFIG_UBIFS_FS_XATTR=y
-CONFIG_UBIFS_FS_ADVANCED_COMPR=y
-CONFIG_UBIFS_FS_LZO=y
-CONFIG_UBIFS_FS_ZLIB=y
-# CONFIG_UBIFS_FS_DEBUG is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-CONFIG_SQUASHFS_EMBEDDED=y
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-CONFIG_VXFS_FS=m
-CONFIG_MINIX_FS=m
-CONFIG_OMFS_FS=m
-CONFIG_HPFS_FS=m
-CONFIG_QNX4FS_FS=m
-CONFIG_ROMFS_FS=y
-CONFIG_SYSV_FS=m
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_UFS_DEBUG is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=m
-CONFIG_SUNRPC_XPRT_RDMA=m
-# CONFIG_SUNRPC_REGISTER_V4 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-CONFIG_RPCSEC_GSS_SPKM3=m
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_WEAK_PW_HASH=y
-# CONFIG_CIFS_UPCALL is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-CONFIG_NCP_FS=m
-CONFIG_NCPFS_PACKET_SIGNING=y
-CONFIG_NCPFS_IOCTL_LOCKING=y
-CONFIG_NCPFS_STRONG=y
-CONFIG_NCPFS_NFS_NS=y
-CONFIG_NCPFS_OS2_NS=y
-CONFIG_NCPFS_SMALLDOS=y
-CONFIG_NCPFS_NLS=y
-CONFIG_NCPFS_EXTRAS=y
-CONFIG_CODA_FS=m
-CONFIG_AFS_FS=m
-# CONFIG_AFS_DEBUG is not set
-CONFIG_9P_FS=m
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-CONFIG_SOLARIS_X86_PARTITION=y
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_KARMA_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-CONFIG_DLM=m
-# CONFIG_DLM_DEBUG is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=0
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_UNUSED_SYMBOLS=y
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-CONFIG_STACKTRACE=y
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_MEMORY_INIT=y
-CONFIG_ARCH_WANT_FRAME_POINTERS=y
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-CONFIG_USER_STACKTRACE_SUPPORT=y
-CONFIG_NOP_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_RING_BUFFER=y
-CONFIG_TRACING=y
-
-#
-# Tracers
-#
-CONFIG_SYSPROF_TRACER=y
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-CONFIG_STRICT_DEVMEM=y
-CONFIG_X86_VERBOSE_BOOTUP=y
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EARLY_PRINTK_DBGP is not set
-CONFIG_HAVE_MMIOTRACE_SUPPORT=y
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-# CONFIG_OPTIMIZE_INLINING is not set
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
-CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
-CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_NETWORK_XFRM=y
-# CONFIG_SECURITY_PATH is not set
-CONFIG_SECURITY_FILE_CAPABILITIES=y
-# CONFIG_SECURITY_ROOTPLUG is not set
-CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_XOR_BLOCKS=y
-CONFIG_ASYNC_CORE=y
-CONFIG_ASYNC_MEMCPY=y
-CONFIG_ASYNC_XOR=y
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_FIPS=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=y
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=m
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-CONFIG_CRYPTO_GF128MUL=y
-CONFIG_CRYPTO_NULL=y
-CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_AUTHENC=y
-CONFIG_CRYPTO_TEST=m
-
-#
-# Authenticated Encryption with Associated Data
-#
-CONFIG_CRYPTO_CCM=m
-CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=m
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_CTR=m
-CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_LRW=y
-CONFIG_CRYPTO_PCBC=y
-CONFIG_CRYPTO_XTS=y
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=y
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_CRC32C_INTEL=m
-CONFIG_CRYPTO_MD4=y
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_MICHAEL_MIC=y
-CONFIG_CRYPTO_RMD128=m
-CONFIG_CRYPTO_RMD160=m
-CONFIG_CRYPTO_RMD256=m
-CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256=y
-CONFIG_CRYPTO_SHA512=y
-CONFIG_CRYPTO_TGR192=y
-CONFIG_CRYPTO_WP512=y
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_AES_X86_64=y
-CONFIG_CRYPTO_ANUBIS=y
-CONFIG_CRYPTO_ARC4=y
-CONFIG_CRYPTO_BLOWFISH=y
-CONFIG_CRYPTO_CAMELLIA=y
-CONFIG_CRYPTO_CAST5=y
-CONFIG_CRYPTO_CAST6=y
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=y
-CONFIG_CRYPTO_KHAZAD=y
-CONFIG_CRYPTO_SALSA20=m
-CONFIG_CRYPTO_SALSA20_X86_64=m
-CONFIG_CRYPTO_SEED=y
-CONFIG_CRYPTO_SERPENT=y
-CONFIG_CRYPTO_TEA=y
-CONFIG_CRYPTO_TWOFISH=y
-CONFIG_CRYPTO_TWOFISH_COMMON=y
-CONFIG_CRYPTO_TWOFISH_X86_64=y
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_LZO=m
-
-#
-# Random Number Generation
-#
-CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_HIFN_795X=m
-CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
-CONFIG_HAVE_KVM=y
-CONFIG_HAVE_KVM_IRQCHIP=y
-CONFIG_VIRTUALIZATION=y
-CONFIG_KVM=m
-CONFIG_KVM_INTEL=m
-CONFIG_KVM_AMD=m
-# CONFIG_KVM_TRACE is not set
-CONFIG_VIRTIO=m
-CONFIG_VIRTIO_RING=m
-CONFIG_VIRTIO_PCI=m
-CONFIG_VIRTIO_BALLOON=m
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_FIND_LAST_BIT=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=m
-CONFIG_CRC_ITU_T=y
-CONFIG_CRC32=y
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=m
-CONFIG_LZO_DECOMPRESS=m
-CONFIG_REED_SOLOMON=m
-CONFIG_REED_SOLOMON_DEC16=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_CHECK_SIGNATURE=y
diff --git a/source/k/config-huge-2.6.33.4 b/source/k/config-huge-2.6.33.4
new file mode 100644
index 000000000..1b2d932e5
--- /dev/null
+++ b/source/k/config-huge-2.6.33.4
@@ -0,0 +1,4698 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.33.4
+# Wed May 12 23:07:13 2010
+#
+CONFIG_64BIT=y
+# CONFIG_X86_32 is not set
+CONFIG_X86_64=y
+CONFIG_X86=y
+CONFIG_OUTPUT_FORMAT="elf64-x86-64"
+CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_MMU=y
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_ARCH_HAS_CPU_RELAX=y
+CONFIG_ARCH_HAS_DEFAULT_IDLE=y
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
+CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
+CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
+CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ZONE_DMA32=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_X86_64_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_TRAMPOLINE=y
+# CONFIG_KTIME_SCALAR is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_BZIP2=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_LZO=y
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_BZIP2 is not set
+CONFIG_KERNEL_LZMA=y
+# CONFIG_KERNEL_LZO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_TREE=y
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_TREE_PREEMPT_RCU is not set
+# CONFIG_TINY_RCU is not set
+# CONFIG_RCU_TRACE is not set
+CONFIG_RCU_FANOUT=32
+# CONFIG_RCU_FANOUT_EXACT is not set
+# CONFIG_TREE_RCU_TRACE is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=15
+CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
+# CONFIG_GROUP_SCHED is not set
+# CONFIG_CGROUPS is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+CONFIG_RELAY=y
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+CONFIG_NET_NS=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_LZO=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_PCSPKR_PLATFORM=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_HAVE_PERF_EVENTS=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+CONFIG_EVENT_PROFILE=y
+# CONFIG_PERF_COUNTERS is not set
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+CONFIG_OPROFILE=m
+# CONFIG_OPROFILE_IBS is not set
+# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_USER_RETURN_NOTIFIER=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_USER_RETURN_NOTIFIER=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_SLOW_WORK=y
+# CONFIG_SLOW_WORK_DEBUG is not set
+# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_STOP_MACHINE=y
+CONFIG_BLOCK=y
+CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_INTEGRITY is not set
+CONFIG_BLOCK_COMPAT=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_PREEMPT_NOTIFIERS=y
+# CONFIG_INLINE_SPIN_TRYLOCK is not set
+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK is not set
+# CONFIG_INLINE_SPIN_LOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
+CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_READ_TRYLOCK is not set
+# CONFIG_INLINE_READ_LOCK is not set
+# CONFIG_INLINE_READ_LOCK_BH is not set
+# CONFIG_INLINE_READ_LOCK_IRQ is not set
+# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
+CONFIG_INLINE_READ_UNLOCK=y
+# CONFIG_INLINE_READ_UNLOCK_BH is not set
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_WRITE_TRYLOCK is not set
+# CONFIG_INLINE_WRITE_LOCK is not set
+# CONFIG_INLINE_WRITE_LOCK_BH is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
+CONFIG_INLINE_WRITE_UNLOCK=y
+# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_FREEZER=y
+
+#
+# Processor type and features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_SMP=y
+# CONFIG_SPARSE_IRQ is not set
+CONFIG_X86_MPPARSE=y
+# CONFIG_X86_EXTENDED_PLATFORM is not set
+CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+# CONFIG_PARAVIRT_GUEST is not set
+CONFIG_MEMTEST=y
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MATOM is not set
+CONFIG_GENERIC_CPU=y
+CONFIG_X86_CPU=y
+CONFIG_X86_INTERNODE_CACHE_SHIFT=6
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_XADD=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_TSC=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=64
+CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_CENTAUR=y
+# CONFIG_X86_DS is not set
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+CONFIG_DMI=y
+CONFIG_GART_IOMMU=y
+# CONFIG_CALGARY_IOMMU is not set
+# CONFIG_AMD_IOMMU is not set
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
+# CONFIG_IOMMU_API is not set
+# CONFIG_MAXSMP is not set
+CONFIG_NR_CPUS=32
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_VOLUNTARY=y
+# CONFIG_PREEMPT is not set
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+CONFIG_X86_MCE_THRESHOLD=y
+CONFIG_X86_MCE_INJECT=m
+CONFIG_X86_THERMAL_VECTOR=y
+CONFIG_I8K=m
+CONFIG_MICROCODE=m
+CONFIG_MICROCODE_INTEL=y
+CONFIG_MICROCODE_AMD=y
+CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_X86_MSR=m
+CONFIG_X86_CPUID=m
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
+CONFIG_DIRECT_GBPAGES=y
+# CONFIG_NUMA is not set
+CONFIG_ARCH_PROC_KCORE_TEXT=y
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_MEMORY_PROBE=y
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_HAVE_MEMORY_PRESENT=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_MEMORY_HOTPLUG=y
+CONFIG_MEMORY_HOTPLUG_SPARSE=y
+CONFIG_MEMORY_HOTREMOVE=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_MIGRATION=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_MMU_NOTIFIER=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
+# CONFIG_MEMORY_FAILURE is not set
+# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
+CONFIG_X86_RESERVE_LOW_64K=y
+CONFIG_MTRR=y
+CONFIG_MTRR_SANITIZER=y
+CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
+CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
+CONFIG_X86_PAT=y
+CONFIG_ARCH_USES_PG_UNCACHED=y
+CONFIG_EFI=y
+CONFIG_SECCOMP=y
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
+CONFIG_SCHED_HRTICK=y
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+CONFIG_PHYSICAL_START=0x1000000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x1000000
+CONFIG_HOTPLUG_CPU=y
+CONFIG_COMPAT_VDSO=y
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
+
+#
+# Power management and ACPI options
+#
+CONFIG_ARCH_HIBERNATION_HEADER=y
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_HIBERNATION_NVS=y
+CONFIG_HIBERNATION=y
+CONFIG_PM_STD_PARTITION="\"\""
+CONFIG_PM_RUNTIME=y
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_PROCFS=y
+CONFIG_ACPI_PROCFS_POWER=y
+CONFIG_ACPI_POWER_METER=m
+CONFIG_ACPI_SYSFS_POWER=y
+CONFIG_ACPI_PROC_EVENT=y
+CONFIG_ACPI_AC=m
+CONFIG_ACPI_BATTERY=m
+CONFIG_ACPI_BUTTON=m
+CONFIG_ACPI_VIDEO=m
+CONFIG_ACPI_FAN=m
+CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
+CONFIG_ACPI_THERMAL=m
+# CONFIG_ACPI_CUSTOM_DSDT is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_PCI_SLOT=m
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=m
+CONFIG_ACPI_HOTPLUG_MEMORY=m
+CONFIG_ACPI_SBS=m
+CONFIG_SFI=y
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=m
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=m
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=m
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+
+#
+# CPUFreq processor drivers
+#
+CONFIG_X86_ACPI_CPUFREQ=m
+CONFIG_X86_POWERNOW_K8=m
+CONFIG_X86_SPEEDSTEP_CENTRINO=m
+CONFIG_X86_P4_CLOCKMOD=m
+
+#
+# shared options
+#
+CONFIG_X86_SPEEDSTEP_LIB=m
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+
+#
+# Memory power savings
+#
+CONFIG_I7300_IDLE_IOAT_CHANNEL=y
+CONFIG_I7300_IDLE=m
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_DMAR is not set
+# CONFIG_INTR_REMAP is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=m
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ECRC is not set
+CONFIG_PCIEAER_INJECT=m
+# CONFIG_PCIEASPM is not set
+CONFIG_ARCH_SUPPORTS_MSI=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCI_DEBUG is not set
+CONFIG_PCI_STUB=m
+CONFIG_HT_IRQ=y
+# CONFIG_PCI_IOV is not set
+CONFIG_PCI_IOAPIC=y
+CONFIG_ISA_DMA_API=y
+CONFIG_K8_NB=y
+CONFIG_PCCARD=m
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+CONFIG_PD6729=m
+CONFIG_I82092=m
+CONFIG_PCCARD_NONSTATIC=m
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_FAKE=m
+CONFIG_HOTPLUG_PCI_ACPI=m
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+CONFIG_HOTPLUG_PCI_SHPC=m
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_COMPAT_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+# CONFIG_HAVE_AOUT is not set
+CONFIG_BINFMT_MISC=m
+CONFIG_IA32_EMULATION=y
+# CONFIG_IA32_AOUT is not set
+CONFIG_COMPAT=y
+CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
+CONFIG_SYSVIPC_COMPAT=y
+CONFIG_NET=y
+CONFIG_COMPAT_NETLINK_MESSAGES=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=y
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_IPCOMP=m
+CONFIG_NET_KEY=m
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_LRO=y
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_SIT_6RD is not set
+CONFIG_IPV6_NDISC_NODETYPE=y
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETLABEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+CONFIG_NF_CT_PROTO_DCCP=m
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_IP_VS=m
+# CONFIG_IP_VS_IPV6 is not set
+# CONFIG_IP_VS_DEBUG is not set
+CONFIG_IP_VS_TAB_BITS=12
+
+#
+# IPVS transport protocol load balancing support
+#
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_PROTO_AH_ESP=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_AH=y
+
+#
+# IPVS scheduler
+#
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_NQ=m
+
+#
+# IPVS application helper
+#
+CONFIG_IP_VS_FTP=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+
+#
+# DECnet: Netfilter Configuration
+#
+# CONFIG_DECNET_NF_GRABULATOR is not set
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_IP6=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+CONFIG_BRIDGE_EBT_NFLOG=m
+CONFIG_IP_DCCP=m
+CONFIG_INET_DCCP_DIAG=m
+
+#
+# DCCP CCIDs Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP_CCID2_DEBUG is not set
+# CONFIG_IP_DCCP_CCID3 is not set
+
+#
+# DCCP Kernel Hacking
+#
+# CONFIG_IP_DCCP_DEBUG is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_HMAC_NONE is not set
+# CONFIG_SCTP_HMAC_SHA1 is not set
+CONFIG_SCTP_HMAC_MD5=y
+CONFIG_RDS=m
+CONFIG_RDS_RDMA=m
+CONFIG_RDS_TCP=m
+# CONFIG_RDS_DEBUG is not set
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_STP=m
+CONFIG_GARP=m
+CONFIG_BRIDGE=m
+# CONFIG_NET_DSA is not set
+CONFIG_VLAN_8021Q=m
+CONFIG_VLAN_8021Q_GVRP=y
+CONFIG_DECNET=m
+# CONFIG_DECNET_ROUTER is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+CONFIG_WAN_ROUTER=m
+CONFIG_PHONET=m
+CONFIG_IEEE802154=m
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+# CONFIG_CLS_U32_PERF is not set
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=y
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_DROP_MONITOR is not set
+CONFIG_HAMRADIO=y
+
+#
+# Packet Radio protocols
+#
+CONFIG_AX25=m
+# CONFIG_AX25_DAMA_SLAVE is not set
+CONFIG_NETROM=m
+CONFIG_ROSE=m
+
+#
+# AX.25 network device drivers
+#
+CONFIG_MKISS=m
+CONFIG_6PACK=m
+CONFIG_BPQETHER=m
+CONFIG_BAYCOM_SER_FDX=m
+CONFIG_BAYCOM_SER_HDX=m
+CONFIG_BAYCOM_PAR=m
+CONFIG_YAM=m
+CONFIG_CAN=m
+CONFIG_CAN_RAW=m
+CONFIG_CAN_BCM=m
+
+#
+# CAN Device Drivers
+#
+CONFIG_CAN_VCAN=m
+CONFIG_CAN_DEV=m
+# CONFIG_CAN_CALC_BITTIMING is not set
+CONFIG_CAN_SJA1000=m
+CONFIG_CAN_SJA1000_PLATFORM=m
+CONFIG_CAN_EMS_PCI=m
+CONFIG_CAN_KVASER_PCI=m
+
+#
+# CAN USB interfaces
+#
+CONFIG_CAN_EMS_USB=m
+# CONFIG_CAN_DEBUG_DEVICES is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+CONFIG_DONGLE=y
+CONFIG_ESI_DONGLE=m
+CONFIG_ACTISYS_DONGLE=m
+CONFIG_TEKRAM_DONGLE=m
+CONFIG_TOIM3232_DONGLE=m
+CONFIG_LITELINK_DONGLE=m
+CONFIG_MA600_DONGLE=m
+CONFIG_GIRBIL_DONGLE=m
+CONFIG_MCP2120_DONGLE=m
+CONFIG_OLD_BELKIN_DONGLE=m
+CONFIG_ACT200L_DONGLE=m
+CONFIG_KINGSUN_DONGLE=m
+CONFIG_KSDAZZLE_DONGLE=m
+CONFIG_KS959_DONGLE=m
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+CONFIG_NSC_FIR=m
+CONFIG_WINBOND_FIR=m
+CONFIG_SMC_IRCC_FIR=m
+CONFIG_ALI_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_VIA_FIR=m
+CONFIG_MCS_FIR=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_BT_MRVL=m
+CONFIG_BT_MRVL_SDIO=m
+CONFIG_BT_ATH3K=m
+CONFIG_AF_RXRPC=m
+# CONFIG_AF_RXRPC_DEBUG is not set
+CONFIG_RXKAD=m
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WEXT_CORE=y
+CONFIG_WEXT_PROC=y
+CONFIG_WEXT_SPY=y
+CONFIG_WEXT_PRIV=y
+CONFIG_CFG80211=m
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+# CONFIG_CFG80211_REG_DEBUG is not set
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEBUGFS is not set
+CONFIG_WIRELESS_OLD_REGULATORY=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_LIB80211=m
+CONFIG_LIB80211_CRYPT_WEP=m
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=m
+CONFIG_MAC80211_RC_MINSTREL=y
+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel"
+CONFIG_MAC80211_MESH=y
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_WIMAX=m
+CONFIG_WIMAX_DEBUG_LEVEL=8
+CONFIG_RFKILL=m
+CONFIG_RFKILL_LEDS=y
+CONFIG_RFKILL_INPUT=y
+CONFIG_NET_9P=m
+CONFIG_NET_9P_VIRTIO=m
+CONFIG_NET_9P_RDMA=m
+# CONFIG_NET_9P_DEBUG is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=m
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_TESTS=m
+CONFIG_MTD_CONCAT=m
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=m
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+CONFIG_MTD_AR7_PARTS=m
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_HAVE_MTD_OTP=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+CONFIG_MTD_BLOCK_RO=m
+CONFIG_FTL=m
+CONFIG_NFTL=m
+CONFIG_NFTL_RW=y
+CONFIG_INFTL=m
+CONFIG_RFD_FTL=m
+CONFIG_SSFDC=m
+CONFIG_MTD_OOPS=m
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=m
+CONFIG_MTD_JEDECPROBE=m
+CONFIG_MTD_GEN_PROBE=m
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+CONFIG_MTD_MAP_BANK_WIDTH_8=y
+CONFIG_MTD_MAP_BANK_WIDTH_16=y
+CONFIG_MTD_MAP_BANK_WIDTH_32=y
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+CONFIG_MTD_CFI_I4=y
+CONFIG_MTD_CFI_I8=y
+CONFIG_MTD_OTP=y
+CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
+CONFIG_MTD_CFI_UTIL=m
+CONFIG_MTD_RAM=m
+CONFIG_MTD_ROM=m
+CONFIG_MTD_ABSENT=m
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_PHYSMAP=m
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
+CONFIG_MTD_SC520CDP=m
+CONFIG_MTD_NETSC520=m
+CONFIG_MTD_TS5500=m
+CONFIG_MTD_SBC_GXX=m
+CONFIG_MTD_AMD76XROM=m
+CONFIG_MTD_ICHXROM=m
+CONFIG_MTD_ESB2ROM=m
+CONFIG_MTD_CK804XROM=m
+CONFIG_MTD_SCB2_FLASH=m
+CONFIG_MTD_NETtel=m
+CONFIG_MTD_L440GX=m
+CONFIG_MTD_PCI=m
+CONFIG_MTD_GPIO_ADDR=m
+CONFIG_MTD_INTEL_VR_NOR=m
+CONFIG_MTD_PLATRAM=m
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_PMC551=m
+CONFIG_MTD_PMC551_BUGFIX=y
+# CONFIG_MTD_PMC551_DEBUG is not set
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_PHRAM=m
+CONFIG_MTD_MTDRAM=m
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTDRAM_ERASE_SIZE=128
+CONFIG_MTD_BLOCK2MTD=m
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+CONFIG_MTD_DOC2001PLUS=m
+CONFIG_MTD_DOCPROBE=m
+CONFIG_MTD_DOCECC=m
+CONFIG_MTD_DOCPROBE_ADVANCED=y
+CONFIG_MTD_DOCPROBE_ADDRESS=0x0000
+CONFIG_MTD_DOCPROBE_HIGH=y
+CONFIG_MTD_DOCPROBE_55AA=y
+CONFIG_MTD_NAND=m
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+CONFIG_MTD_NAND_ECC_SMC=y
+CONFIG_MTD_NAND_MUSEUM_IDS=y
+CONFIG_MTD_NAND_IDS=m
+CONFIG_MTD_NAND_DISKONCHIP=m
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y
+CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y
+CONFIG_MTD_NAND_CAFE=m
+CONFIG_MTD_NAND_NANDSIM=m
+CONFIG_MTD_NAND_PLATFORM=m
+CONFIG_MTD_ALAUDA=m
+CONFIG_MTD_ONENAND=m
+CONFIG_MTD_ONENAND_VERIFY_WRITE=y
+CONFIG_MTD_ONENAND_GENERIC=m
+CONFIG_MTD_ONENAND_OTP=y
+CONFIG_MTD_ONENAND_2X_PROGRAM=y
+CONFIG_MTD_ONENAND_SIM=m
+
+#
+# LPDDR flash memory drivers
+#
+CONFIG_MTD_LPDDR=m
+CONFIG_MTD_QINFO_PROBE=m
+
+#
+# UBI - Unsorted block images
+#
+CONFIG_MTD_UBI=m
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_RESERVE=1
+CONFIG_MTD_UBI_GLUEBI=m
+
+#
+# UBI debugging options
+#
+# CONFIG_MTD_UBI_DEBUG is not set
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+CONFIG_PARPORT_SERIAL=m
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+CONFIG_PARPORT_PC_PCMCIA=m
+# CONFIG_PARPORT_GSC is not set
+CONFIG_PARPORT_AX88796=m
+CONFIG_PARPORT_1284=y
+CONFIG_PARPORT_NOT_PC=y
+CONFIG_PNP=y
+CONFIG_PNP_DEBUG_MESSAGES=y
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_FD=y
+CONFIG_PARIDE=m
+
+#
+# Parallel IDE high-level drivers
+#
+CONFIG_PARIDE_PD=m
+CONFIG_PARIDE_PCD=m
+CONFIG_PARIDE_PF=m
+CONFIG_PARIDE_PT=m
+CONFIG_PARIDE_PG=m
+
+#
+# Parallel IDE protocol modules
+#
+CONFIG_PARIDE_ATEN=m
+CONFIG_PARIDE_BPCK=m
+CONFIG_PARIDE_COMM=m
+CONFIG_PARIDE_DSTR=m
+CONFIG_PARIDE_FIT2=m
+CONFIG_PARIDE_FIT3=m
+CONFIG_PARIDE_EPAT=m
+CONFIG_PARIDE_EPATC8=y
+CONFIG_PARIDE_EPIA=m
+CONFIG_PARIDE_FRIQ=m
+CONFIG_PARIDE_FRPW=m
+CONFIG_PARIDE_KBIC=m
+CONFIG_PARIDE_KTTI=m
+CONFIG_PARIDE_ON20=m
+CONFIG_PARIDE_ON26=m
+CONFIG_BLK_CPQ_DA=y
+CONFIG_BLK_CPQ_CISS_DA=y
+CONFIG_CISS_SCSI_TAPE=y
+CONFIG_BLK_DEV_DAC960=y
+CONFIG_BLK_DEV_UMEM=m
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_DRBD=m
+# CONFIG_DRBD_FAULT_INJECTION is not set
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_OSD=m
+CONFIG_BLK_DEV_SX8=y
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+CONFIG_VIRTIO_BLK=m
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_MISC_DEVICES=y
+CONFIG_AD525X_DPOT=m
+CONFIG_IBM_ASM=m
+CONFIG_PHANTOM=m
+CONFIG_SGI_IOC4=m
+CONFIG_TIFM_CORE=m
+CONFIG_TIFM_7XX1=m
+CONFIG_ICS932S401=m
+CONFIG_ENCLOSURE_SERVICES=m
+CONFIG_CS5535_MFGPT=m
+CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
+CONFIG_HP_ILO=m
+CONFIG_ISL29003=m
+CONFIG_DS1682=m
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+CONFIG_EEPROM_AT24=m
+CONFIG_EEPROM_LEGACY=m
+CONFIG_EEPROM_MAX6875=m
+CONFIG_EEPROM_93CX6=m
+CONFIG_CB710_CORE=m
+# CONFIG_CB710_DEBUG is not set
+CONFIG_CB710_DEBUG_ASSUMPTIONS=y
+CONFIG_IWMC3200TOP=m
+# CONFIG_IWMC3200TOP_DEBUG is not set
+# CONFIG_IWMC3200TOP_DEBUGFS is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+CONFIG_RAID_ATTRS=y
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+CONFIG_SCSI_TGT=y
+CONFIG_SCSI_NETLINK=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=y
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SCH=m
+CONFIG_SCSI_ENCLOSURE=m
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=y
+CONFIG_SCSI_FC_ATTRS=y
+CONFIG_SCSI_FC_TGT_ATTRS=y
+CONFIG_SCSI_ISCSI_ATTRS=y
+CONFIG_SCSI_SAS_ATTRS=y
+CONFIG_SCSI_SAS_LIBSAS=y
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_SCSI_SAS_HOST_SMP=y
+# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
+CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_SRP_TGT_ATTRS=y
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_BE2ISCSI=m
+CONFIG_BLK_DEV_3W_XXXX_RAID=y
+CONFIG_SCSI_HPSA=y
+CONFIG_SCSI_3W_9XXX=y
+CONFIG_SCSI_3W_SAS=y
+CONFIG_SCSI_ACARD=y
+CONFIG_SCSI_AACRAID=y
+CONFIG_SCSI_AIC7XXX=y
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_AIC7XXX_OLD=y
+CONFIG_SCSI_AIC79XX=y
+CONFIG_AIC79XX_CMDS_PER_DEVICE=4
+CONFIG_AIC79XX_RESET_DELAY_MS=15000
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_AIC94XX=y
+# CONFIG_AIC94XX_DEBUG is not set
+CONFIG_SCSI_MVSAS=y
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_DPT_I2O=m
+CONFIG_SCSI_ADVANSYS=y
+CONFIG_SCSI_ARCMSR=y
+# CONFIG_SCSI_ARCMSR_AER is not set
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=y
+CONFIG_MEGARAID_MAILBOX=y
+CONFIG_MEGARAID_LEGACY=y
+CONFIG_MEGARAID_SAS=y
+CONFIG_SCSI_MPT2SAS=y
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
+# CONFIG_SCSI_MPT2SAS_LOGGING is not set
+CONFIG_SCSI_HPTIOP=y
+CONFIG_SCSI_BUSLOGIC=y
+CONFIG_VMWARE_PVSCSI=m
+CONFIG_LIBFC=y
+CONFIG_LIBFCOE=y
+CONFIG_FCOE=y
+CONFIG_FCOE_FNIC=y
+CONFIG_SCSI_DMX3191D=y
+CONFIG_SCSI_EATA=y
+# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
+# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_FUTURE_DOMAIN=y
+CONFIG_SCSI_GDTH=y
+CONFIG_SCSI_IPS=y
+CONFIG_SCSI_INITIO=y
+CONFIG_SCSI_INIA100=y
+CONFIG_SCSI_PPA=m
+CONFIG_SCSI_IMM=m
+# CONFIG_SCSI_IZIP_EPP16 is not set
+# CONFIG_SCSI_IZIP_SLOW_CTR is not set
+CONFIG_SCSI_STEX=y
+CONFIG_SCSI_SYM53C8XX_2=y
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+CONFIG_SCSI_IPR=y
+# CONFIG_SCSI_IPR_TRACE is not set
+# CONFIG_SCSI_IPR_DUMP is not set
+CONFIG_SCSI_QLOGIC_1280=y
+CONFIG_SCSI_QLA_FC=y
+CONFIG_SCSI_QLA_ISCSI=y
+CONFIG_SCSI_LPFC=y
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
+CONFIG_SCSI_DC395x=y
+CONFIG_SCSI_DC390T=y
+CONFIG_SCSI_DEBUG=m
+CONFIG_SCSI_PMCRAID=y
+CONFIG_SCSI_PM8001=y
+CONFIG_SCSI_SRP=y
+CONFIG_SCSI_BFA_FC=y
+CONFIG_SCSI_LOWLEVEL_PCMCIA=y
+CONFIG_PCMCIA_FDOMAIN=m
+CONFIG_PCMCIA_QLOGIC=m
+CONFIG_PCMCIA_SYM53C500=m
+CONFIG_SCSI_DH=m
+CONFIG_SCSI_DH_RDAC=m
+CONFIG_SCSI_DH_HP_SW=m
+CONFIG_SCSI_DH_EMC=m
+CONFIG_SCSI_DH_ALUA=m
+CONFIG_SCSI_OSD_INITIATOR=m
+CONFIG_SCSI_OSD_ULD=m
+CONFIG_SCSI_OSD_DPRINT_SENSE=1
+# CONFIG_SCSI_OSD_DEBUG is not set
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_ATA_VERBOSE_ERROR=y
+CONFIG_ATA_ACPI=y
+CONFIG_SATA_PMP=y
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_SIL24=y
+CONFIG_ATA_SFF=y
+CONFIG_SATA_SVW=y
+CONFIG_ATA_PIIX=y
+CONFIG_SATA_MV=y
+CONFIG_SATA_NV=y
+CONFIG_PDC_ADMA=y
+CONFIG_SATA_QSTOR=y
+CONFIG_SATA_PROMISE=y
+CONFIG_SATA_SX4=y
+CONFIG_SATA_SIL=y
+CONFIG_SATA_SIS=y
+CONFIG_SATA_ULI=y
+CONFIG_SATA_VIA=y
+CONFIG_SATA_VITESSE=y
+CONFIG_SATA_INIC162X=y
+CONFIG_PATA_ACPI=y
+CONFIG_PATA_ALI=y
+CONFIG_PATA_AMD=y
+CONFIG_PATA_ARTOP=y
+CONFIG_PATA_ATP867X=y
+CONFIG_PATA_ATIIXP=y
+CONFIG_PATA_CMD640_PCI=y
+CONFIG_PATA_CMD64X=y
+CONFIG_PATA_CS5520=y
+CONFIG_PATA_CS5530=y
+CONFIG_PATA_CYPRESS=y
+CONFIG_PATA_EFAR=y
+CONFIG_ATA_GENERIC=y
+CONFIG_PATA_HPT366=y
+CONFIG_PATA_HPT37X=y
+CONFIG_PATA_HPT3X2N=y
+CONFIG_PATA_HPT3X3=y
+CONFIG_PATA_HPT3X3_DMA=y
+CONFIG_PATA_IT821X=y
+CONFIG_PATA_IT8213=y
+CONFIG_PATA_JMICRON=y
+CONFIG_PATA_TRIFLEX=y
+CONFIG_PATA_MARVELL=y
+CONFIG_PATA_MPIIX=y
+CONFIG_PATA_OLDPIIX=y
+CONFIG_PATA_NETCELL=y
+CONFIG_PATA_NINJA32=y
+CONFIG_PATA_NS87410=y
+CONFIG_PATA_NS87415=y
+CONFIG_PATA_OPTI=y
+CONFIG_PATA_OPTIDMA=y
+CONFIG_PATA_PCMCIA=m
+CONFIG_PATA_PDC2027X=y
+CONFIG_PATA_PDC_OLD=y
+CONFIG_PATA_RADISYS=y
+CONFIG_PATA_RDC=y
+CONFIG_PATA_RZ1000=y
+CONFIG_PATA_SC1200=y
+CONFIG_PATA_SERVERWORKS=y
+CONFIG_PATA_SIL680=y
+CONFIG_PATA_SIS=y
+CONFIG_PATA_TOSHIBA=m
+CONFIG_PATA_VIA=y
+CONFIG_PATA_WINBOND=y
+CONFIG_PATA_SCH=y
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_AUTODETECT=y
+CONFIG_MD_LINEAR=y
+CONFIG_MD_RAID0=y
+CONFIG_MD_RAID1=y
+CONFIG_MD_RAID10=y
+CONFIG_MD_RAID456=y
+# CONFIG_MULTICORE_RAID456 is not set
+CONFIG_MD_RAID6_PQ=y
+CONFIG_ASYNC_RAID6_TEST=m
+CONFIG_MD_MULTIPATH=y
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=y
+CONFIG_DM_SNAPSHOT=y
+CONFIG_DM_MIRROR=y
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_QL=m
+CONFIG_DM_MULTIPATH_ST=m
+# CONFIG_DM_DELAY is not set
+CONFIG_DM_UEVENT=y
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=y
+CONFIG_FUSION_FC=y
+CONFIG_FUSION_SAS=y
+CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_CTL=y
+CONFIG_FUSION_LAN=y
+# CONFIG_FUSION_LOGGING is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# You can enable one or both FireWire driver stacks.
+#
+
+#
+# The newer stack is recommended.
+#
+# CONFIG_FIREWIRE is not set
+CONFIG_IEEE1394=m
+CONFIG_IEEE1394_OHCI1394=m
+CONFIG_IEEE1394_PCILYNX=m
+CONFIG_IEEE1394_SBP2=m
+# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
+CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_RAWIO=m
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_DV1394=m
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+CONFIG_I2O=y
+CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
+CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_EXT_ADAPTEC_DMA64=y
+CONFIG_I2O_CONFIG=y
+# CONFIG_I2O_CONFIG_OLD_IOCTL is not set
+CONFIG_I2O_BUS=y
+CONFIG_I2O_BLOCK=y
+CONFIG_I2O_SCSI=y
+CONFIG_I2O_PROC=y
+CONFIG_MACINTOSH_DRIVERS=y
+CONFIG_MAC_EMUMOUSEBTN=y
+CONFIG_NETDEVICES=y
+CONFIG_IFB=m
+CONFIG_DUMMY=m
+CONFIG_BONDING=m
+CONFIG_MACVLAN=m
+CONFIG_EQUALIZER=m
+CONFIG_TUN=m
+CONFIG_VETH=m
+CONFIG_NET_SB1000=m
+CONFIG_ARCNET=m
+CONFIG_ARCNET_1201=m
+CONFIG_ARCNET_1051=m
+CONFIG_ARCNET_RAW=m
+CONFIG_ARCNET_CAP=m
+CONFIG_ARCNET_COM90xx=m
+CONFIG_ARCNET_COM90xxIO=m
+CONFIG_ARCNET_RIM_I=m
+CONFIG_ARCNET_COM20020=m
+CONFIG_ARCNET_COM20020_PCI=m
+CONFIG_PHYLIB=m
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_ICPLUS_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_STE10XP=m
+CONFIG_LSI_ET1011C_PHY=m
+CONFIG_MDIO_BITBANG=m
+CONFIG_MDIO_GPIO=m
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_CASSINI=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_ETHOC=m
+CONFIG_DNET=m
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_DE2104X_DSL=0
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+CONFIG_TULIP_MMIO=y
+# CONFIG_TULIP_NAPI is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+CONFIG_PCMCIA_XIRCOM=m
+CONFIG_HP100=m
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+CONFIG_AMD8111_ETH=m
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_FORCEDETH=m
+CONFIG_FORCEDETH_NAPI=y
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R6040=m
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SMSC9420=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_KS8842=m
+CONFIG_KS8851_MLL=m
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_SC92031=m
+CONFIG_NET_POCKET=y
+CONFIG_ATP=m
+CONFIG_DE600=m
+CONFIG_DE620=m
+CONFIG_ATL2=m
+CONFIG_NETDEV_1000=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IP1000=m
+CONFIG_IGB=m
+CONFIG_IGB_DCA=y
+CONFIG_IGBVF=m
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+CONFIG_R8169_VLAN=y
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+CONFIG_CNIC=m
+CONFIG_QLA3XXX=m
+CONFIG_ATL1=m
+CONFIG_ATL1E=m
+CONFIG_ATL1C=m
+CONFIG_JME=m
+CONFIG_NETDEV_10000=y
+CONFIG_MDIO=m
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T1_1G=y
+CONFIG_CHELSIO_T3_DEPENDS=y
+CONFIG_CHELSIO_T3=m
+CONFIG_ENIC=m
+CONFIG_IXGBE=m
+CONFIG_IXGBE_DCA=y
+CONFIG_IXGB=m
+CONFIG_S2IO=m
+CONFIG_VXGE=m
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
+CONFIG_MYRI10GE=m
+CONFIG_MYRI10GE_DCA=y
+CONFIG_NETXEN_NIC=m
+CONFIG_NIU=m
+CONFIG_MLX4_EN=m
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
+CONFIG_TEHUTI=m
+CONFIG_BNX2X=m
+CONFIG_QLGE=m
+CONFIG_SFC=m
+CONFIG_SFC_MTD=y
+CONFIG_BE2NET=m
+CONFIG_TR=m
+CONFIG_IBMOL=m
+CONFIG_3C359=m
+CONFIG_TMS380TR=m
+CONFIG_TMSPCI=m
+CONFIG_ABYSS=m
+CONFIG_WLAN=y
+CONFIG_PCMCIA_RAYCS=m
+CONFIG_LIBERTAS_THINFIRM=m
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_AIRO=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_AT76C50X_USB=m
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_WL3501=m
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
+CONFIG_ADM8211=m
+# CONFIG_MAC80211_HWSIM is not set
+CONFIG_MWL8K=m
+CONFIG_ATH_COMMON=m
+# CONFIG_ATH_DEBUG is not set
+CONFIG_ATH5K=m
+# CONFIG_ATH5K_DEBUG is not set
+CONFIG_ATH9K_HW=m
+CONFIG_ATH9K_COMMON=m
+CONFIG_ATH9K=m
+# CONFIG_ATH9K_DEBUGFS is not set
+CONFIG_AR9170_USB=m
+CONFIG_AR9170_LEDS=y
+CONFIG_B43=m
+CONFIG_B43_PCI_AUTOSELECT=y
+CONFIG_B43_PCICORE_AUTOSELECT=y
+CONFIG_B43_PCMCIA=y
+CONFIG_B43_SDIO=y
+CONFIG_B43_PIO=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_LEDS=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_PCI_AUTOSELECT=y
+CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+CONFIG_B43LEGACY_LEDS=y
+CONFIG_B43LEGACY_HWRNG=y
+# CONFIG_B43LEGACY_DEBUG is not set
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_HOSTAP_CS=m
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBIPW=m
+# CONFIG_LIBIPW_DEBUG is not set
+CONFIG_IWLWIFI=m
+CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y
+# CONFIG_IWLWIFI_DEBUG is not set
+# CONFIG_IWLWIFI_DEVICE_TRACING is not set
+CONFIG_IWLAGN=m
+CONFIG_IWL4965=y
+CONFIG_IWL5000=y
+CONFIG_IWL3945=m
+CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
+CONFIG_IWM=m
+# CONFIG_IWM_DEBUG is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_HERMES=m
+CONFIG_HERMES_CACHE_FW_ON_INIT=y
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
+CONFIG_P54_PCI=m
+CONFIG_P54_LEDS=y
+CONFIG_RT2X00=m
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT61PCI=m
+CONFIG_RT2800PCI_PCI=m
+CONFIG_RT2800PCI=m
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800_LIB=m
+CONFIG_RT2X00_LIB_PCI=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_HT=y
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_WL12XX=m
+CONFIG_WL1251=m
+CONFIG_WL1251_SDIO=m
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+
+#
+# WiMAX Wireless Broadband devices
+#
+CONFIG_WIMAX_I2400M=m
+CONFIG_WIMAX_I2400M_USB=m
+CONFIG_WIMAX_I2400M_SDIO=m
+# CONFIG_WIMAX_IWMC3200_SDIO is not set
+CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+# CONFIG_USB_EPSON2888 is not set
+# CONFIG_USB_KC2190 is not set
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_CDC_PHONET=m
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+CONFIG_ARCNET_COM20020_CS=m
+CONFIG_PCMCIA_IBMTR=m
+CONFIG_WAN=y
+CONFIG_LANMEDIA=m
+CONFIG_HDLC=m
+CONFIG_HDLC_RAW=m
+CONFIG_HDLC_RAW_ETH=m
+CONFIG_HDLC_CISCO=m
+CONFIG_HDLC_FR=m
+CONFIG_HDLC_PPP=m
+
+#
+# X.25/LAPB support is disabled
+#
+CONFIG_PCI200SYN=m
+CONFIG_WANXL=m
+# CONFIG_PC300TOO is not set
+CONFIG_FARSYNC=m
+CONFIG_DSCC4=m
+# CONFIG_DSCC4_PCISYNC is not set
+# CONFIG_DSCC4_PCI_RST is not set
+CONFIG_DLCI=m
+CONFIG_DLCI_MAX=8
+CONFIG_WAN_ROUTER_DRIVERS=m
+CONFIG_CYCLADES_SYNC=m
+CONFIG_CYCLOMX_X25=y
+CONFIG_SBNI=m
+# CONFIG_SBNI_MULTILINE is not set
+CONFIG_ATM_DRIVERS=y
+CONFIG_ATM_DUMMY=m
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_FIRESTREAM=m
+CONFIG_ATM_ZATM=m
+# CONFIG_ATM_ZATM_DEBUG is not set
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+# CONFIG_ATM_IDT77252_RCV_ALL is not set
+CONFIG_ATM_IDT77252_USE_SUNI=y
+CONFIG_ATM_AMBASSADOR=m
+# CONFIG_ATM_AMBASSADOR_DEBUG is not set
+CONFIG_ATM_HORIZON=m
+# CONFIG_ATM_HORIZON_DEBUG is not set
+CONFIG_ATM_IA=m
+# CONFIG_ATM_IA_DEBUG is not set
+CONFIG_ATM_FORE200E=m
+# CONFIG_ATM_FORE200E_USE_TASKLET is not set
+CONFIG_ATM_FORE200E_TX_RETRY=16
+CONFIG_ATM_FORE200E_DEBUG=0
+CONFIG_ATM_HE=m
+# CONFIG_ATM_HE_USE_SUNI is not set
+CONFIG_ATM_SOLOS=m
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKEHARD=m
+CONFIG_FDDI=y
+CONFIG_DEFXX=m
+# CONFIG_DEFXX_MMIO is not set
+CONFIG_SKFP=m
+CONFIG_HIPPI=y
+CONFIG_ROADRUNNER=m
+# CONFIG_ROADRUNNER_LARGE_RINGS is not set
+CONFIG_PLIP=m
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_PPPOL2TP=m
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=m
+CONFIG_SLIP_SMART=y
+# CONFIG_SLIP_MODE_SLIP6 is not set
+CONFIG_NET_FC=y
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_VIRTIO_NET=m
+CONFIG_VMXNET3=m
+CONFIG_ISDN=y
+CONFIG_ISDN_I4L=m
+CONFIG_MISDN=m
+CONFIG_MISDN_DSP=m
+CONFIG_MISDN_L1OIP=m
+
+#
+# mISDN hardware drivers
+#
+CONFIG_MISDN_HFCPCI=m
+CONFIG_MISDN_HFCMULTI=m
+CONFIG_MISDN_HFCUSB=m
+CONFIG_MISDN_AVMFRITZ=m
+CONFIG_MISDN_SPEEDFAX=m
+CONFIG_MISDN_INFINEON=m
+CONFIG_MISDN_W6692=m
+CONFIG_MISDN_NETJET=m
+CONFIG_MISDN_IPAC=m
+CONFIG_MISDN_ISAR=m
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+CONFIG_ISDN_PPP_BSDCOMP=m
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+
+#
+# ISDN feature submodules
+#
+CONFIG_ISDN_DIVERSION=m
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+CONFIG_HISAX_NO_SENDCOMPLETE=y
+CONFIG_HISAX_NO_LLC=y
+CONFIG_HISAX_NO_KEYPAD=y
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NETJET=y
+CONFIG_HISAX_NETJET_U=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+CONFIG_HISAX_ENTERNOW_PCI=y
+# CONFIG_HISAX_DEBUG is not set
+
+#
+# HiSax PCMCIA card service modules
+#
+CONFIG_HISAX_SEDLBAUER_CS=m
+CONFIG_HISAX_ELSA_CS=m
+CONFIG_HISAX_AVM_A1_CS=m
+CONFIG_HISAX_TELES_CS=m
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+
+#
+# Active cards
+#
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_ISDN_HDLC=m
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIFS=m
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+#
+# CAPI hardware drivers
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+CONFIG_ISDN_DRV_GIGASET=m
+# CONFIG_GIGASET_CAPI is not set
+CONFIG_GIGASET_I4L=y
+# CONFIG_GIGASET_DUMMYLL is not set
+CONFIG_GIGASET_BASE=m
+CONFIG_GIGASET_M105=m
+# CONFIG_GIGASET_M101 is not set
+# CONFIG_GIGASET_DEBUG is not set
+CONFIG_PHONE=m
+CONFIG_PHONE_IXJ=m
+CONFIG_PHONE_IXJ_PCMCIA=m
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=y
+CONFIG_INPUT_POLLDEV=m
+CONFIG_INPUT_SPARSEKMAP=m
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_JOYDEV=m
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ADP5588=m
+CONFIG_KEYBOARD_ATKBD=y
+CONFIG_QT2160=m
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_MATRIX=m
+CONFIG_KEYBOARD_LM8323=m
+CONFIG_KEYBOARD_MAX7359=m
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_KEYBOARD_OPENCORES=m
+CONFIG_KEYBOARD_STOWAWAY=m
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+CONFIG_MOUSE_PS2_SENTELIC=y
+CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_SERIAL=m
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_VSXXXAA=m
+CONFIG_MOUSE_GPIO=m
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_ANALOG=m
+CONFIG_JOYSTICK_A3D=m
+CONFIG_JOYSTICK_ADI=m
+CONFIG_JOYSTICK_COBRA=m
+CONFIG_JOYSTICK_GF2K=m
+CONFIG_JOYSTICK_GRIP=m
+CONFIG_JOYSTICK_GRIP_MP=m
+CONFIG_JOYSTICK_GUILLEMOT=m
+CONFIG_JOYSTICK_INTERACT=m
+CONFIG_JOYSTICK_SIDEWINDER=m
+CONFIG_JOYSTICK_TMDC=m
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=y
+CONFIG_JOYSTICK_IFORCE_232=y
+CONFIG_JOYSTICK_WARRIOR=m
+CONFIG_JOYSTICK_MAGELLAN=m
+CONFIG_JOYSTICK_SPACEORB=m
+CONFIG_JOYSTICK_SPACEBALL=m
+CONFIG_JOYSTICK_STINGER=m
+CONFIG_JOYSTICK_TWIDJOY=m
+CONFIG_JOYSTICK_ZHENHUA=m
+CONFIG_JOYSTICK_DB9=m
+CONFIG_JOYSTICK_GAMECON=m
+CONFIG_JOYSTICK_TURBOGRAFX=m
+CONFIG_JOYSTICK_JOYDUMP=m
+CONFIG_JOYSTICK_XPAD=m
+CONFIG_JOYSTICK_XPAD_FF=y
+CONFIG_JOYSTICK_XPAD_LEDS=y
+# CONFIG_JOYSTICK_WALKERA0701 is not set
+CONFIG_INPUT_TABLET=y
+CONFIG_TABLET_USB_ACECAD=m
+CONFIG_TABLET_USB_AIPTEK=m
+CONFIG_TABLET_USB_GTCO=m
+CONFIG_TABLET_USB_KBTAB=m
+CONFIG_TABLET_USB_WACOM=m
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_AD7879_I2C=m
+CONFIG_TOUCHSCREEN_AD7879=m
+CONFIG_TOUCHSCREEN_DYNAPRO=m
+CONFIG_TOUCHSCREEN_EETI=m
+CONFIG_TOUCHSCREEN_FUJITSU=m
+CONFIG_TOUCHSCREEN_GUNZE=m
+CONFIG_TOUCHSCREEN_ELO=m
+CONFIG_TOUCHSCREEN_WACOM_W8001=m
+CONFIG_TOUCHSCREEN_MCS5000=m
+CONFIG_TOUCHSCREEN_MTOUCH=m
+CONFIG_TOUCHSCREEN_INEXIO=m
+CONFIG_TOUCHSCREEN_MK712=m
+CONFIG_TOUCHSCREEN_PENMOUNT=m
+CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
+CONFIG_TOUCHSCREEN_TOUCHWIN=m
+CONFIG_TOUCHSCREEN_UCB1400=m
+CONFIG_TOUCHSCREEN_WM97XX=m
+CONFIG_TOUCHSCREEN_WM9705=y
+CONFIG_TOUCHSCREEN_WM9712=y
+CONFIG_TOUCHSCREEN_WM9713=y
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
+CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
+CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
+CONFIG_TOUCHSCREEN_USB_GOTOP=y
+CONFIG_TOUCHSCREEN_USB_JASTEC=y
+CONFIG_TOUCHSCREEN_USB_E2I=y
+CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
+CONFIG_TOUCHSCREEN_USB_ETT_TC5UH=y
+CONFIG_TOUCHSCREEN_TOUCHIT213=m
+CONFIG_TOUCHSCREEN_TSC2007=m
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_APANEL=m
+CONFIG_INPUT_ATLAS_BTNS=m
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_POWERMATE=m
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_CM109=m
+CONFIG_INPUT_UINPUT=m
+CONFIG_INPUT_WINBOND_CIR=m
+CONFIG_INPUT_PCF50633_PMU=m
+CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_CT82C710=m
+CONFIG_SERIO_PARKBD=m
+CONFIG_SERIO_PCIPS2=m
+CONFIG_SERIO_LIBPS2=y
+CONFIG_SERIO_RAW=m
+CONFIG_SERIO_ALTERA_PS2=m
+CONFIG_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+CONFIG_GAMEPORT_L4=m
+CONFIG_GAMEPORT_EMU10K1=m
+CONFIG_GAMEPORT_FM801=m
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_DEVKMEM=y
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_COMPUTONE=m
+CONFIG_ROCKETPORT=m
+CONFIG_CYCLADES=m
+# CONFIG_CYZ_INTR is not set
+CONFIG_DIGIEPCA=m
+CONFIG_MOXA_INTELLIO=m
+CONFIG_MOXA_SMARTIO=m
+CONFIG_ISI=m
+CONFIG_SYNCLINK=m
+CONFIG_SYNCLINKMP=m
+CONFIG_SYNCLINK_GT=m
+CONFIG_N_HDLC=m
+CONFIG_RISCOM8=m
+CONFIG_SPECIALIX=m
+CONFIG_STALDRV=y
+CONFIG_STALLION=m
+CONFIG_ISTALLION=m
+CONFIG_NOZOMI=m
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+CONFIG_SERIAL_8250_RSA=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_JSM=m
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+CONFIG_PRINTER=m
+CONFIG_LP_CONSOLE=y
+CONFIG_PPDEV=m
+CONFIG_HVC_DRIVER=y
+CONFIG_VIRTIO_CONSOLE=m
+CONFIG_IPMI_HANDLER=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_TIMERIOMEM=m
+CONFIG_HW_RANDOM_INTEL=m
+CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_VIA=m
+CONFIG_HW_RANDOM_VIRTIO=m
+CONFIG_NVRAM=m
+CONFIG_R3964=m
+CONFIG_APPLICOM=m
+
+#
+# PCMCIA character devices
+#
+CONFIG_SYNCLINK_CS=m
+CONFIG_CARDMAN_4000=m
+CONFIG_CARDMAN_4040=m
+CONFIG_IPWIRELESS=m
+CONFIG_MWAVE=m
+CONFIG_PC8736x_GPIO=m
+CONFIG_NSC_GPIO=m
+CONFIG_RAW_DRIVER=m
+CONFIG_MAX_RAW_DEVS=256
+CONFIG_HPET=y
+CONFIG_HPET_MMAP=y
+CONFIG_HANGCHECK_TIMER=m
+CONFIG_TCG_TPM=m
+# CONFIG_TCG_TIS is not set
+# CONFIG_TCG_NSC is not set
+CONFIG_TCG_ATMEL=m
+# CONFIG_TCG_INFINEON is not set
+CONFIG_TELCLOCK=m
+CONFIG_DEVPORT=y
+CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_ISCH=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_NFORCE2_S4985=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+
+#
+# ACPI drivers
+#
+CONFIG_I2C_SCMI=m
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+CONFIG_I2C_GPIO=m
+CONFIG_I2C_OCORES=m
+CONFIG_I2C_SIMTEC=m
+
+#
+# External I2C/SMBus adapter drivers
+#
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_TAOS_EVM=m
+CONFIG_I2C_TINY_USB=m
+
+#
+# Other I2C/SMBus bus drivers
+#
+CONFIG_I2C_PCA_PLATFORM=m
+CONFIG_I2C_STUB=m
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_SENSORS_TSL2550=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+# CONFIG_SPI is not set
+
+#
+# PPS support
+#
+CONFIG_PPS=m
+# CONFIG_PPS_DEBUG is not set
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+
+#
+# Memory mapped GPIO expanders:
+#
+
+#
+# I2C GPIO expanders:
+#
+CONFIG_GPIO_MAX732X=m
+CONFIG_GPIO_PCA953X=m
+CONFIG_GPIO_PCF857X=m
+CONFIG_GPIO_ADP5588=m
+
+#
+# PCI GPIO expanders:
+#
+CONFIG_GPIO_CS5535=m
+# CONFIG_GPIO_LANGWELL is not set
+
+#
+# SPI GPIO expanders:
+#
+
+#
+# AC97 GPIO expanders:
+#
+# CONFIG_GPIO_UCB1400 is not set
+CONFIG_W1=m
+CONFIG_W1_CON=y
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_MATROX=m
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+CONFIG_W1_MASTER_GPIO=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2431=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+CONFIG_W1_SLAVE_DS2760=m
+CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_PDA_POWER=m
+CONFIG_WM8350_POWER=m
+CONFIG_BATTERY_DS2760=m
+CONFIG_BATTERY_DS2782=m
+CONFIG_BATTERY_BQ27x00=m
+CONFIG_BATTERY_MAX17040=m
+CONFIG_CHARGER_PCF50633=m
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ABITUGURU3=m
+CONFIG_SENSORS_AD7414=m
+CONFIG_SENSORS_AD7418=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1029=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADT7462=m
+CONFIG_SENSORS_ADT7470=m
+CONFIG_SENSORS_ADT7473=m
+CONFIG_SENSORS_ADT7475=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_K10TEMP=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_I5K_AMB=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_F71882FG=m
+CONFIG_SENSORS_F75375S=m
+CONFIG_SENSORS_FSCHMD=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_CORETEMP=m
+CONFIG_SENSORS_IBMAEM=m
+CONFIG_SENSORS_IBMPEX=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM73=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_LM93=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_SHT15=m
+CONFIG_SENSORS_SIS5595=m
+CONFIG_SENSORS_DME1737=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_ADS7828=m
+CONFIG_SENSORS_AMC6821=m
+CONFIG_SENSORS_THMC50=m
+CONFIG_SENSORS_TMP401=m
+CONFIG_SENSORS_TMP421=m
+CONFIG_SENSORS_VIA_CPUTEMP=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83L786NG=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_WM8350=m
+CONFIG_SENSORS_HDAPS=m
+CONFIG_SENSORS_LIS3_I2C=m
+CONFIG_SENSORS_APPLESMC=m
+
+#
+# ACPI drivers
+#
+CONFIG_SENSORS_ATK0110=m
+CONFIG_SENSORS_LIS3LV02D=m
+CONFIG_THERMAL=m
+CONFIG_THERMAL_HWMON=y
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_WM8350_WATCHDOG=m
+CONFIG_ACQUIRE_WDT=m
+CONFIG_ADVANTECH_WDT=m
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_GEODE_WDT=m
+CONFIG_SC520_WDT=m
+CONFIG_SBC_FITPC2_WATCHDOG=m
+CONFIG_EUROTECH_WDT=m
+CONFIG_IB700_WDT=m
+CONFIG_IBMASR=m
+CONFIG_WAFER_WDT=m
+CONFIG_I6300ESB_WDT=m
+CONFIG_ITCO_WDT=m
+CONFIG_ITCO_VENDOR_SUPPORT=y
+CONFIG_IT8712F_WDT=m
+CONFIG_IT87_WDT=m
+CONFIG_HP_WATCHDOG=m
+CONFIG_SC1200_WDT=m
+CONFIG_PC87413_WDT=m
+CONFIG_60XX_WDT=m
+CONFIG_SBC8360_WDT=m
+CONFIG_CPU5_WDT=m
+CONFIG_SMSC_SCH311X_WDT=m
+CONFIG_SMSC37B787_WDT=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83697HF_WDT=m
+CONFIG_W83697UG_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_W83977F_WDT=m
+CONFIG_MACHZ_WDT=m
+CONFIG_SBC_EPX_C3_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB=m
+CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+CONFIG_SSB_B43_PCI_BRIDGE=y
+CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
+CONFIG_SSB_PCMCIAHOST=y
+CONFIG_SSB_SDIOHOST_POSSIBLE=y
+CONFIG_SSB_SDIOHOST=y
+# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=m
+# CONFIG_MFD_SM501 is not set
+CONFIG_HTC_PASIC3=m
+CONFIG_UCB1400_CORE=m
+CONFIG_TPS65010=m
+# CONFIG_MFD_TMIO is not set
+CONFIG_MFD_WM8400=m
+CONFIG_MFD_WM8350=m
+CONFIG_MFD_WM8350_I2C=m
+CONFIG_MFD_PCF50633=m
+CONFIG_PCF50633_ADC=m
+CONFIG_PCF50633_GPIO=m
+CONFIG_AB3100_CORE=m
+CONFIG_AB3100_OTP=m
+# CONFIG_REGULATOR is not set
+CONFIG_MEDIA_SUPPORT=m
+
+#
+# Multimedia core support
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_DVB_CORE=m
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_IR_CORE=m
+CONFIG_VIDEO_IR=m
+CONFIG_MEDIA_ATTACH=y
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_MT2131=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_MEDIA_TUNER_MAX2165=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DVB=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
+CONFIG_VIDEO_IR_I2C=m
+
+#
+# Encoders/decoders and other helper chips
+#
+
+#
+# Audio decoders
+#
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TDA9875=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_M52790=m
+CONFIG_VIDEO_TLV320AIC23B=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_VP27SMPX=m
+
+#
+# RDS decoders
+#
+CONFIG_VIDEO_SAA6588=m
+
+#
+# Video decoders
+#
+CONFIG_VIDEO_ADV7180=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_BT866=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9V011=m
+CONFIG_VIDEO_TCM825X=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_SAA717X=m
+CONFIG_VIDEO_SAA7191=m
+CONFIG_VIDEO_TVP514X=m
+CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_VPX3220=m
+
+#
+# Video and audio decoders
+#
+CONFIG_VIDEO_CX25840=m
+
+#
+# MPEG video encoders
+#
+CONFIG_VIDEO_CX2341X=m
+
+#
+# Video encoders
+#
+CONFIG_VIDEO_SAA7127=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+CONFIG_VIDEO_THS7303=m
+CONFIG_VIDEO_ADV7343=m
+
+#
+# Video improvement chips
+#
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_BT848=m
+CONFIG_VIDEO_BT848_DVB=y
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_W9966=m
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_PP=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
+CONFIG_VIDEO_MEYE=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_MPEG=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_CX23885=m
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_SAA7164=m
+CONFIG_VIDEO_CAFE_CCIC=m
+CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_MT9M001=m
+CONFIG_SOC_CAMERA_MT9M111=m
+CONFIG_SOC_CAMERA_MT9T031=m
+CONFIG_SOC_CAMERA_MT9T112=m
+CONFIG_SOC_CAMERA_MT9V022=m
+CONFIG_SOC_CAMERA_RJ54N1=m
+CONFIG_SOC_CAMERA_TW9910=m
+CONFIG_SOC_CAMERA_PLATFORM=m
+CONFIG_SOC_CAMERA_OV772X=m
+CONFIG_SOC_CAMERA_OV9640=m
+CONFIG_V4L_USB_DRIVERS=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SN9C20X_EVDEV=y
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+CONFIG_USB_ET61X251=m
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+CONFIG_USB_ZC0301=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_USB_ZR364XX=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_S2255=m
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_I2C_SI4713=m
+CONFIG_RADIO_SI4713=m
+CONFIG_USB_DSBR=m
+# CONFIG_RADIO_SI470X is not set
+CONFIG_USB_MR800=m
+CONFIG_RADIO_TEA5764=m
+CONFIG_RADIO_TEF6862=m
+CONFIG_DVB_MAX_ADAPTERS=8
+# CONFIG_DVB_DYNAMIC_MINORS is not set
+CONFIG_DVB_CAPTURE_DRIVERS=y
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_FRIIO=m
+CONFIG_DVB_USB_EC168=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_SMS_SIANO_MDTV=m
+
+#
+# Siano module components
+#
+CONFIG_SMS_USB_DRV=m
+CONFIG_SMS_SDIO_DRV=m
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
+
+#
+# Supported BT878 Adapters
+#
+CONFIG_DVB_BT8XX=m
+
+#
+# Supported Pluto2 Adapters
+#
+CONFIG_DVB_PLUTO2=m
+
+#
+# Supported SDMC DM1105 Adapters
+#
+CONFIG_DVB_DM1105=m
+
+#
+# Supported FireWire (IEEE 1394) Adapters
+#
+CONFIG_DVB_FIREDTV=m
+# CONFIG_DVB_FIREDTV_FIREWIRE is not set
+CONFIG_DVB_FIREDTV_IEEE1394=y
+CONFIG_DVB_FIREDTV_INPUT=y
+
+#
+# Supported Earthsoft PT1 Adapters
+#
+CONFIG_DVB_PT1=m
+
+#
+# Supported Mantis Adapters
+#
+CONFIG_MANTIS_CORE=m
+CONFIG_DVB_MANTIS=m
+CONFIG_DVB_HOPPER=m
+
+#
+# Supported DVB Frontends
+#
+CONFIG_DVB_FE_CUSTOMISE=y
+
+#
+# Customise DVB Frontends
+#
+
+#
+# Multistandard (satellite) frontends
+#
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_STV090x=m
+CONFIG_DVB_STV6110x=m
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10036=m
+CONFIG_DVB_ZL10039=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_DS3000=m
+CONFIG_DVB_MB86A16=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_DRX397XD=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_EC100=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGDT3304=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_S5H1411=m
+
+#
+# ISDB-T (terrestrial) frontends
+#
+CONFIG_DVB_S921=m
+CONFIG_DVB_DIB8000=m
+
+#
+# Digital terrestrial only tuners/PLL
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_TUNER_DIB0090=m
+
+#
+# SEC control devices for DVB-S
+#
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_ISL6405=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_ISL6423=m
+CONFIG_DVB_LGS8GL5=m
+CONFIG_DVB_LGS8GXX=m
+CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_TDA665x=m
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+CONFIG_AGP=m
+CONFIG_AGP_AMD64=m
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_VIA=m
+CONFIG_VGA_ARB=y
+CONFIG_DRM=m
+CONFIG_DRM_KMS_HELPER=m
+CONFIG_DRM_TTM=m
+CONFIG_DRM_TDFX=m
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+# CONFIG_DRM_RADEON_KMS is not set
+CONFIG_DRM_I810=m
+CONFIG_DRM_I830=m
+CONFIG_DRM_I915=m
+CONFIG_DRM_I915_KMS=y
+CONFIG_DRM_MGA=m
+CONFIG_DRM_SIS=m
+CONFIG_DRM_VIA=m
+CONFIG_DRM_SAVAGE=m
+CONFIG_VGASTATE=m
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_DDC=m
+CONFIG_FB_BOOT_VESA_SUPPORT=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+CONFIG_FB_SYS_FILLRECT=m
+CONFIG_FB_SYS_COPYAREA=m
+CONFIG_FB_SYS_IMAGEBLIT=m
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=m
+CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_HECUBA=m
+CONFIG_FB_SVGALIB=m
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_BACKLIGHT=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_CIRRUS=m
+CONFIG_FB_PM2=m
+# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
+CONFIG_FB_CYBER2000=m
+CONFIG_FB_ARC=m
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+CONFIG_FB_VGA16=m
+# CONFIG_FB_UVESA is not set
+CONFIG_FB_VESA=y
+# CONFIG_FB_EFI is not set
+CONFIG_FB_N411=m
+CONFIG_FB_HGA=m
+# CONFIG_FB_HGA_ACCEL is not set
+CONFIG_FB_S1D13XXX=m
+CONFIG_FB_NVIDIA=m
+CONFIG_FB_NVIDIA_I2C=y
+# CONFIG_FB_NVIDIA_DEBUG is not set
+CONFIG_FB_NVIDIA_BACKLIGHT=y
+CONFIG_FB_RIVA=m
+CONFIG_FB_RIVA_I2C=y
+# CONFIG_FB_RIVA_DEBUG is not set
+CONFIG_FB_RIVA_BACKLIGHT=y
+CONFIG_FB_LE80578=m
+CONFIG_FB_CARILLO_RANCH=m
+CONFIG_FB_MATROX=m
+CONFIG_FB_MATROX_MILLENIUM=y
+CONFIG_FB_MATROX_MYSTIQUE=y
+CONFIG_FB_MATROX_G=y
+CONFIG_FB_MATROX_I2C=m
+CONFIG_FB_MATROX_MAVEN=m
+CONFIG_FB_RADEON=m
+CONFIG_FB_RADEON_I2C=y
+CONFIG_FB_RADEON_BACKLIGHT=y
+# CONFIG_FB_RADEON_DEBUG is not set
+CONFIG_FB_ATY128=m
+CONFIG_FB_ATY128_BACKLIGHT=y
+CONFIG_FB_ATY=m
+CONFIG_FB_ATY_CT=y
+CONFIG_FB_ATY_GENERIC_LCD=y
+CONFIG_FB_ATY_GX=y
+CONFIG_FB_ATY_BACKLIGHT=y
+CONFIG_FB_S3=m
+CONFIG_FB_SAVAGE=m
+CONFIG_FB_SAVAGE_I2C=y
+CONFIG_FB_SAVAGE_ACCEL=y
+CONFIG_FB_SIS=m
+CONFIG_FB_SIS_300=y
+CONFIG_FB_SIS_315=y
+CONFIG_FB_VIA=m
+CONFIG_FB_NEOMAGIC=m
+CONFIG_FB_KYRO=m
+CONFIG_FB_3DFX=m
+# CONFIG_FB_3DFX_ACCEL is not set
+CONFIG_FB_3DFX_I2C=y
+CONFIG_FB_VOODOO1=m
+CONFIG_FB_VT8623=m
+CONFIG_FB_TRIDENT=m
+CONFIG_FB_ARK=m
+CONFIG_FB_PM3=m
+CONFIG_FB_CARMINE=m
+CONFIG_FB_CARMINE_DRAM_EVAL=y
+# CONFIG_CARMINE_DRAM_CUSTOM is not set
+CONFIG_FB_GEODE=y
+CONFIG_FB_GEODE_LX=m
+CONFIG_FB_GEODE_GX=m
+CONFIG_FB_GEODE_GX1=m
+CONFIG_FB_TMIO=m
+CONFIG_FB_TMIO_ACCELL=y
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FB_METRONOME=m
+CONFIG_FB_MB862XX=m
+CONFIG_FB_MB862XX_PCI_GDC=y
+CONFIG_FB_BROADSHEET=m
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_LCD_ILI9320 is not set
+CONFIG_LCD_PLATFORM=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_GENERIC=m
+CONFIG_BACKLIGHT_PROGEAR=m
+CONFIG_BACKLIGHT_CARILLO_RANCH=m
+CONFIG_BACKLIGHT_MBP_NVIDIA=m
+CONFIG_BACKLIGHT_SAHARA=m
+
+#
+# Display device support
+#
+CONFIG_DISPLAY_SUPPORT=m
+
+#
+# Display hardware drivers
+#
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_VGACON_SOFT_SCROLLBACK=y
+CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS_CORE=y
+CONFIG_SOUND_OSS_CORE_PRECLAIM=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_JACK=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_HRTIMER=m
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_DYNAMIC_MINORS=y
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+CONFIG_SND_VMASTER=y
+CONFIG_SND_DMA_SGBUF=y
+CONFIG_SND_RAWMIDI_SEQ=m
+CONFIG_SND_OPL3_LIB_SEQ=m
+# CONFIG_SND_OPL4_LIB_SEQ is not set
+# CONFIG_SND_SBAWE_SEQ is not set
+CONFIG_SND_EMU10K1_SEQ=m
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DRIVERS=y
+# CONFIG_SND_PCSP is not set
+CONFIG_SND_DUMMY=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_MTS64=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_MPU401=m
+CONFIG_SND_PORTMAN2X4=m
+CONFIG_SND_AC97_POWER_SAVE=y
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
+CONFIG_SND_SB_COMMON=m
+CONFIG_SND_SB16_DSP=m
+CONFIG_SND_PCI=y
+CONFIG_SND_AD1889=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AW2=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_OXYGEN_LIB=m
+CONFIG_SND_OXYGEN=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5530=m
+CONFIG_SND_CS5535AUDIO=m
+CONFIG_SND_CTXFI=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_GINA20=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_DARLA24=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_MONA=m
+CONFIG_SND_MIA=m
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_INDIGO=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_INDIGOIOX=m
+CONFIG_SND_INDIGODJX=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X_BOOL=y
+CONFIG_SND_FM801_TEA575X=m
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+# CONFIG_SND_HDA_INPUT_BEEP is not set
+CONFIG_SND_HDA_INPUT_JACK=y
+CONFIG_SND_HDA_PATCH_LOADER=y
+CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_CODEC_ANALOG=y
+CONFIG_SND_HDA_CODEC_SIGMATEL=y
+CONFIG_SND_HDA_CODEC_VIA=y
+CONFIG_SND_HDA_CODEC_ATIHDMI=y
+CONFIG_SND_HDA_CODEC_NVHDMI=y
+CONFIG_SND_HDA_CODEC_INTELHDMI=y
+CONFIG_SND_HDA_ELD=y
+CONFIG_SND_HDA_CODEC_CIRRUS=y
+CONFIG_SND_HDA_CODEC_CONEXANT=y
+CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CMEDIA=y
+CONFIG_SND_HDA_CODEC_SI3054=y
+CONFIG_SND_HDA_GENERIC=y
+# CONFIG_SND_HDA_POWER_SAVE is not set
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_HIFIER=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_LX6464ES=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_PCXHR=m
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VIRTUOSO=m
+CONFIG_SND_VX222=m
+CONFIG_SND_YMFPCI=m
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_USB_US122L=m
+CONFIG_SND_PCMCIA=y
+CONFIG_SND_VXPOCKET=m
+CONFIG_SND_PDAUDIOCF=m
+# CONFIG_SND_SOC is not set
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+CONFIG_HIDRAW=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+#
+# Special HID drivers
+#
+CONFIG_HID_A4TECH=m
+CONFIG_HID_APPLE=m
+CONFIG_HID_BELKIN=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_DRAGONRISE=m
+CONFIG_DRAGONRISE_FF=y
+CONFIG_HID_EZKEY=m
+CONFIG_HID_KYE=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_TWINHAN=m
+CONFIG_HID_KENSINGTON=m
+CONFIG_HID_LOGITECH=m
+CONFIG_LOGITECH_FF=y
+CONFIG_LOGIRUMBLEPAD2_FF=y
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_NTRIG=m
+CONFIG_HID_PANTHERLORD=m
+CONFIG_PANTHERLORD_FF=y
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SONY=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_HID_GREENASIA=m
+CONFIG_GREENASIA_FF=y
+CONFIG_HID_SMARTJOYPLUS=m
+CONFIG_SMARTJOYPLUS_FF=y
+CONFIG_HID_TOPSEED=m
+CONFIG_HID_THRUSTMASTER=m
+CONFIG_THRUSTMASTER_FF=y
+CONFIG_HID_WACOM=m
+CONFIG_HID_ZEROPLUS=m
+CONFIG_ZEROPLUS_FF=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+CONFIG_USB_SUSPEND=y
+# CONFIG_USB_OTG is not set
+CONFIG_USB_MON=y
+CONFIG_USB_WUSB=m
+CONFIG_USB_WUSB_CBAF=m
+# CONFIG_USB_WUSB_CBAF_DEBUG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_C67X00_HCD=y
+CONFIG_USB_XHCI_HCD=y
+# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_OXU210HP_HCD=y
+CONFIG_USB_ISP116X_HCD=y
+CONFIG_USB_ISP1760_HCD=y
+CONFIG_USB_ISP1362_HCD=y
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+CONFIG_USB_U132_HCD=m
+CONFIG_USB_SL811_HCD=y
+CONFIG_USB_SL811_CS=m
+CONFIG_USB_R8A66597_HCD=y
+CONFIG_USB_WHCI_HCD=m
+CONFIG_USB_HWA_HCD=m
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_WDM=m
+CONFIG_USB_TMC=m
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+CONFIG_USB_STORAGE_CYPRESS_ATACB=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+CONFIG_USB_SERIAL=m
+CONFIG_USB_EZUSB=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_QUALCOMM=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+CONFIG_USB_SERIAL_SAFE_PADDED=y
+CONFIG_USB_SERIAL_SIEMENS_MPI=m
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_SYMBOL=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_OPTICON=m
+CONFIG_USB_SERIAL_DEBUG=m
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_SEVSEG=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_SISUSBVGA=m
+CONFIG_USB_SISUSBVGA_CON=y
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_IOWARRIOR=m
+CONFIG_USB_TEST=m
+CONFIG_USB_ISIGHTFW=m
+CONFIG_USB_VST=m
+CONFIG_USB_ATM=m
+CONFIG_USB_SPEEDTOUCH=m
+CONFIG_USB_CXACRU=m
+CONFIG_USB_UEAGLEATM=m
+CONFIG_USB_XUSBATM=m
+# CONFIG_USB_GADGET is not set
+
+#
+# OTG and related infrastructure
+#
+CONFIG_USB_OTG_UTILS=y
+CONFIG_USB_GPIO_VBUS=m
+CONFIG_NOP_USB_XCEIV=m
+CONFIG_UWB=m
+CONFIG_UWB_HWA=m
+CONFIG_UWB_WHCI=m
+CONFIG_UWB_WLP=m
+CONFIG_UWB_I1480U=m
+CONFIG_UWB_I1480U_WLP=m
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=m
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_SDHCI=m
+CONFIG_MMC_SDHCI_PCI=m
+CONFIG_MMC_RICOH_MMC=m
+CONFIG_MMC_SDHCI_PLTFM=m
+CONFIG_MMC_WBSD=m
+# CONFIG_MMC_AT91 is not set
+# CONFIG_MMC_ATMELMCI is not set
+CONFIG_MMC_TIFM_SD=m
+CONFIG_MMC_SDRICOH_CS=m
+CONFIG_MMC_CB710=m
+CONFIG_MMC_VIA_SDMMC=m
+CONFIG_MEMSTICK=m
+# CONFIG_MEMSTICK_DEBUG is not set
+
+#
+# MemoryStick drivers
+#
+# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
+CONFIG_MSPRO_BLOCK=m
+
+#
+# MemoryStick Host Controller Drivers
+#
+CONFIG_MEMSTICK_TIFM_MS=m
+CONFIG_MEMSTICK_JMICRON_38X=m
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_ALIX2=m
+CONFIG_LEDS_PCA9532=m
+CONFIG_LEDS_GPIO=m
+CONFIG_LEDS_GPIO_PLATFORM=y
+CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_CLEVO_MAIL=m
+CONFIG_LEDS_PCA955X=m
+CONFIG_LEDS_WM8350=m
+CONFIG_LEDS_BD2802=m
+CONFIG_LEDS_INTEL_SS4200=m
+CONFIG_LEDS_LT3593=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_GPIO=m
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+CONFIG_ACCESSIBILITY=y
+CONFIG_A11Y_BRAILLE_CONSOLE=y
+CONFIG_INFINIBAND=m
+CONFIG_INFINIBAND_USER_MAD=m
+CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_USER_MEM=y
+CONFIG_INFINIBAND_ADDR_TRANS=y
+CONFIG_INFINIBAND_MTHCA=m
+CONFIG_INFINIBAND_MTHCA_DEBUG=y
+# CONFIG_INFINIBAND_IPATH is not set
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+# CONFIG_INFINIBAND_CXGB3 is not set
+CONFIG_MLX4_INFINIBAND=m
+CONFIG_INFINIBAND_NES=m
+# CONFIG_INFINIBAND_NES_DEBUG is not set
+CONFIG_INFINIBAND_IPOIB=m
+# CONFIG_INFINIBAND_IPOIB_CM is not set
+CONFIG_INFINIBAND_IPOIB_DEBUG=y
+# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
+CONFIG_INFINIBAND_ISER=m
+CONFIG_EDAC=y
+
+#
+# Reporting subsystems
+#
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_DECODE_MCE=y
+# CONFIG_EDAC_MM_EDAC is not set
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_TEST=m
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_MAX6900=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+CONFIG_RTC_DRV_M41T80=m
+CONFIG_RTC_DRV_M41T80_WDT=y
+CONFIG_RTC_DRV_BQ32K=m
+CONFIG_RTC_DRV_S35390A=m
+CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8581=m
+CONFIG_RTC_DRV_RX8025=m
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+CONFIG_RTC_DRV_CMOS=m
+CONFIG_RTC_DRV_DS1286=m
+CONFIG_RTC_DRV_DS1511=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_STK17TA8=m
+CONFIG_RTC_DRV_M48T86=m
+CONFIG_RTC_DRV_M48T35=m
+CONFIG_RTC_DRV_M48T59=m
+CONFIG_RTC_DRV_MSM6242=m
+CONFIG_RTC_DRV_BQ4802=m
+CONFIG_RTC_DRV_RP5C01=m
+CONFIG_RTC_DRV_V3020=m
+CONFIG_RTC_DRV_WM8350=m
+CONFIG_RTC_DRV_PCF50633=m
+CONFIG_RTC_DRV_AB3100=m
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_CS5535_CLOCK_EVENT_SRC=m
+CONFIG_DMADEVICES=y
+
+#
+# DMA Devices
+#
+CONFIG_ASYNC_TX_DISABLE_CHANNEL_SWITCH=y
+CONFIG_INTEL_IOATDMA=m
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+# CONFIG_ASYNC_TX_DMA is not set
+CONFIG_DMATEST=m
+CONFIG_DCA=m
+CONFIG_AUXDISPLAY=y
+# CONFIG_KS0108 is not set
+CONFIG_UIO=m
+CONFIG_UIO_CIF=m
+CONFIG_UIO_PDRV=m
+CONFIG_UIO_PDRV_GENIRQ=m
+CONFIG_UIO_SMX=m
+CONFIG_UIO_AEC=m
+CONFIG_UIO_SERCOS3=m
+CONFIG_UIO_PCI_GENERIC=m
+
+#
+# TI VLYNQ
+#
+CONFIG_STAGING=y
+# CONFIG_STAGING_EXCLUDE_BUILD is not set
+# CONFIG_ET131X is not set
+# CONFIG_SLICOSS is not set
+# CONFIG_VIDEO_GO7007 is not set
+CONFIG_VIDEO_CX25821=m
+CONFIG_VIDEO_CX25821_ALSA=m
+# CONFIG_USB_IP_COMMON is not set
+# CONFIG_W35UND is not set
+# CONFIG_PRISM2_USB is not set
+# CONFIG_ECHO is not set
+# CONFIG_POCH is not set
+# CONFIG_OTUS is not set
+CONFIG_RT2860=m
+CONFIG_RT2870=m
+# CONFIG_COMEDI is not set
+# CONFIG_ASUS_OLED is not set
+# CONFIG_PANEL is not set
+# CONFIG_ALTERA_PCIE_CHDMA is not set
+CONFIG_R8187SE=m
+CONFIG_RTL8192SU=m
+CONFIG_RTL8192U=m
+CONFIG_RTL8192E=m
+# CONFIG_TRANZPORT is not set
+
+#
+# Qualcomm MSM Camera And Video
+#
+
+#
+# Camera Sensor Selection
+#
+CONFIG_INPUT_GPIO=m
+CONFIG_POHMELFS=m
+# CONFIG_POHMELFS_DEBUG is not set
+CONFIG_POHMELFS_CRYPTO=y
+CONFIG_B3DFG=m
+CONFIG_IDE_PHISON=m
+CONFIG_PLAN9AUTH=m
+CONFIG_LINE6_USB=m
+CONFIG_DRM_VMWGFX=m
+CONFIG_DRM_NOUVEAU=m
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+CONFIG_DRM_NOUVEAU_DEBUG=y
+
+#
+# I2C encoder or helper chips
+#
+CONFIG_DRM_I2C_CH7006=m
+CONFIG_USB_SERIAL_QUATECH2=m
+CONFIG_USB_SERIAL_QUATECH_USB2=m
+CONFIG_VT6655=m
+CONFIG_VT6656=m
+CONFIG_FB_UDL=m
+# CONFIG_HYPERV is not set
+# CONFIG_VME_BUS is not set
+
+#
+# RAR Register Driver
+#
+CONFIG_RAR_REGISTER=m
+# CONFIG_DX_SEP is not set
+# CONFIG_IIO is not set
+CONFIG_RAMZSWAP=m
+CONFIG_RAMZSWAP_STATS=y
+CONFIG_BATMAN_ADV=m
+# CONFIG_BATMAN_DEBUG is not set
+CONFIG_SAMSUNG_LAPTOP=m
+CONFIG_STRIP=m
+CONFIG_PCMCIA_WAVELAN=m
+CONFIG_PCMCIA_NETWAVE=m
+CONFIG_FB_SM7XX=m
+# CONFIG_FB_SM7XX_ACCEL is not set
+CONFIG_X86_PLATFORM_DEVICES=y
+CONFIG_ACER_WMI=m
+CONFIG_ACERHDF=m
+CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_WMI=m
+CONFIG_FUJITSU_LAPTOP=m
+# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
+CONFIG_HP_WMI=m
+CONFIG_MSI_LAPTOP=m
+CONFIG_PANASONIC_LAPTOP=m
+CONFIG_COMPAL_LAPTOP=m
+CONFIG_SONY_LAPTOP=m
+CONFIG_SONYPI_COMPAT=y
+CONFIG_THINKPAD_ACPI=m
+CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
+# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
+# CONFIG_THINKPAD_ACPI_DEBUG is not set
+# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
+CONFIG_THINKPAD_ACPI_VIDEO=y
+CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
+CONFIG_INTEL_MENLOW=m
+CONFIG_EEEPC_LAPTOP=m
+CONFIG_ACPI_WMI=m
+CONFIG_MSI_WMI=m
+CONFIG_ACPI_ASUS=m
+CONFIG_TOPSTAR_LAPTOP=m
+CONFIG_ACPI_TOSHIBA=m
+CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_ACPI_CMPC=m
+
+#
+# Firmware Drivers
+#
+CONFIG_EDD=m
+CONFIG_EDD_OFF=y
+CONFIG_FIRMWARE_MEMMAP=y
+CONFIG_EFI_VARS=m
+CONFIG_DELL_RBU=m
+CONFIG_DCDBAS=m
+CONFIG_DMIID=y
+CONFIG_ISCSI_IBFT_FIND=y
+CONFIG_ISCSI_IBFT=m
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_XATTR=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=y
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+CONFIG_JFS_FS=y
+CONFIG_JFS_POSIX_ACL=y
+CONFIG_JFS_SECURITY=y
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=y
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_POSIX_ACL=y
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_DEBUG is not set
+CONFIG_GFS2_FS=y
+CONFIG_GFS2_FS_LOCKING_DLM=y
+CONFIG_OCFS2_FS=y
+CONFIG_OCFS2_FS_O2CB=y
+CONFIG_OCFS2_FS_USERSPACE_CLUSTER=y
+# CONFIG_OCFS2_FS_STATS is not set
+CONFIG_OCFS2_DEBUG_MASKLOG=y
+# CONFIG_OCFS2_DEBUG_FS is not set
+CONFIG_BTRFS_FS=y
+CONFIG_BTRFS_FS_POSIX_ACL=y
+CONFIG_NILFS2_FS=m
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_QUOTA_TREE=y
+CONFIG_QFMT_V1=m
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+CONFIG_AUTOFS_FS=m
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+CONFIG_CUSE=m
+CONFIG_GENERIC_ACL=y
+
+#
+# Caches
+#
+CONFIG_FSCACHE=m
+# CONFIG_FSCACHE_STATS is not set
+# CONFIG_FSCACHE_HISTOGRAM is not set
+# CONFIG_FSCACHE_DEBUG is not set
+# CONFIG_FSCACHE_OBJECT_LIST is not set
+CONFIG_CACHEFILES=m
+# CONFIG_CACHEFILES_DEBUG is not set
+# CONFIG_CACHEFILES_HISTOGRAM is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=y
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=y
+CONFIG_MISC_FILESYSTEMS=y
+CONFIG_ADFS_FS=m
+# CONFIG_ADFS_FS_RW is not set
+CONFIG_AFFS_FS=m
+# CONFIG_ECRYPT_FS is not set
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BFS_FS=m
+CONFIG_EFS_FS=m
+CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_UBIFS_FS=m
+CONFIG_UBIFS_FS_XATTR=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+# CONFIG_UBIFS_FS_DEBUG is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+CONFIG_SQUASHFS_EMBEDDED=y
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+CONFIG_VXFS_FS=m
+CONFIG_MINIX_FS=m
+CONFIG_OMFS_FS=m
+CONFIG_HPFS_FS=m
+CONFIG_QNX4FS_FS=m
+CONFIG_ROMFS_FS=y
+CONFIG_ROMFS_BACKED_BY_BLOCK=y
+# CONFIG_ROMFS_BACKED_BY_MTD is not set
+# CONFIG_ROMFS_BACKED_BY_BOTH is not set
+CONFIG_ROMFS_ON_BLOCK=y
+CONFIG_SYSV_FS=m
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG is not set
+CONFIG_EXOFS_FS=m
+# CONFIG_EXOFS_DEBUG is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_V4_1 is not set
+CONFIG_NFSD=y
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_SUNRPC_XPRT_RDMA=m
+CONFIG_RPCSEC_GSS_KRB5=y
+CONFIG_RPCSEC_GSS_SPKM3=m
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_UPCALL is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_DFS_UPCALL is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+CONFIG_NCP_FS=m
+CONFIG_NCPFS_PACKET_SIGNING=y
+CONFIG_NCPFS_IOCTL_LOCKING=y
+CONFIG_NCPFS_STRONG=y
+CONFIG_NCPFS_NFS_NS=y
+CONFIG_NCPFS_OS2_NS=y
+CONFIG_NCPFS_SMALLDOS=y
+CONFIG_NCPFS_NLS=y
+CONFIG_NCPFS_EXTRAS=y
+CONFIG_CODA_FS=m
+CONFIG_AFS_FS=m
+# CONFIG_AFS_DEBUG is not set
+# CONFIG_AFS_FSCACHE is not set
+CONFIG_9P_FS=m
+# CONFIG_9P_FSCACHE is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+CONFIG_OSF_PARTITION=y
+CONFIG_AMIGA_PARTITION=y
+# CONFIG_ATARI_PARTITION is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+CONFIG_MINIX_SUBPARTITION=y
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_UNIXWARE_DISKLABEL=y
+# CONFIG_LDM_PARTITION is not set
+CONFIG_SGI_PARTITION=y
+# CONFIG_ULTRIX_PARTITION is not set
+CONFIG_SUN_PARTITION=y
+CONFIG_KARMA_PARTITION=y
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+CONFIG_DLM=y
+# CONFIG_DLM_DEBUG is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=0
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_UNUSED_SYMBOLS=y
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FTRACE_NMI_ENTER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
+CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_RING_BUFFER=y
+CONFIG_FTRACE_NMI_ENTER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_RING_BUFFER_ALLOW_SWAP=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+# CONFIG_IRQSOFF_TRACER is not set
+CONFIG_SYSPROF_TRACER=y
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_FTRACE_SYSCALLS is not set
+# CONFIG_BOOT_TRACER is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_POWER_TRACER is not set
+# CONFIG_KSYM_TRACER is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_KMEMTRACE is not set
+# CONFIG_WORKQUEUE_TRACER is not set
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_DYNAMIC_FTRACE=y
+# CONFIG_FUNCTION_PROFILER is not set
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_STARTUP_TEST is not set
+# CONFIG_MMIOTRACE is not set
+CONFIG_RING_BUFFER_BENCHMARK=m
+# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_HAVE_ARCH_KMEMCHECK=y
+CONFIG_STRICT_DEVMEM=y
+CONFIG_X86_VERBOSE_BOOTUP=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_EARLY_PRINTK_DBGP is not set
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_X86_PTDUMP is not set
+CONFIG_DEBUG_RODATA=y
+CONFIG_DEBUG_RODATA_TEST=y
+# CONFIG_DEBUG_NX_TEST is not set
+# CONFIG_IOMMU_DEBUG is not set
+# CONFIG_IOMMU_STRESS is not set
+CONFIG_HAVE_MMIOTRACE_SUPPORT=y
+CONFIG_IO_DELAY_TYPE_0X80=0
+CONFIG_IO_DELAY_TYPE_0XED=1
+CONFIG_IO_DELAY_TYPE_UDELAY=2
+CONFIG_IO_DELAY_TYPE_NONE=3
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IO_DELAY_NONE is not set
+CONFIG_DEFAULT_IO_DELAY_TYPE=0
+# CONFIG_DEBUG_BOOT_PARAMS is not set
+# CONFIG_CPA_DEBUG is not set
+CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_PATH is not set
+# CONFIG_SECURITY_SELINUX is not set
+# CONFIG_SECURITY_TOMOYO is not set
+# CONFIG_IMA is not set
+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
+# CONFIG_DEFAULT_SECURITY_SMACK is not set
+# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+CONFIG_XOR_BLOCKS=y
+CONFIG_ASYNC_CORE=y
+CONFIG_ASYNC_MEMCPY=y
+CONFIG_ASYNC_XOR=y
+CONFIG_ASYNC_PQ=y
+CONFIG_ASYNC_RAID6_RECOV=y
+CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
+CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_FIPS=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=m
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_GF128MUL=y
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_WORKQUEUE=y
+CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_AUTHENC=y
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+CONFIG_CRYPTO_CCM=m
+CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_SEQIV=m
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTR=m
+CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_PCBC=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_FPU=y
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=y
+CONFIG_CRYPTO_VMAC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32C_INTEL=m
+CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_RMD128=m
+CONFIG_CRYPTO_RMD160=m
+CONFIG_CRYPTO_RMD256=m
+CONFIG_CRYPTO_RMD320=m
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_AES_X86_64=y
+CONFIG_CRYPTO_AES_NI_INTEL=y
+CONFIG_CRYPTO_ANUBIS=y
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_CAMELLIA=y
+CONFIG_CRYPTO_CAST5=y
+CONFIG_CRYPTO_CAST6=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=y
+CONFIG_CRYPTO_KHAZAD=y
+CONFIG_CRYPTO_SALSA20=m
+CONFIG_CRYPTO_SALSA20_X86_64=m
+CONFIG_CRYPTO_SEED=y
+CONFIG_CRYPTO_SERPENT=y
+CONFIG_CRYPTO_TEA=y
+CONFIG_CRYPTO_TWOFISH=y
+CONFIG_CRYPTO_TWOFISH_COMMON=y
+CONFIG_CRYPTO_TWOFISH_X86_64=y
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_ZLIB=m
+CONFIG_CRYPTO_LZO=m
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_ANSI_CPRNG=m
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_CRYPTO_DEV_HIFN_795X=m
+CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+CONFIG_HAVE_KVM=y
+CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_HAVE_KVM_EVENTFD=y
+CONFIG_KVM_APIC_ARCHITECTURE=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM=m
+CONFIG_KVM_INTEL=m
+CONFIG_KVM_AMD=m
+CONFIG_VIRTIO=m
+CONFIG_VIRTIO_RING=m
+CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_BALLOON=m
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=m
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=m
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_REED_SOLOMON=m
+CONFIG_REED_SOLOMON_DEC16=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_CHECK_SIGNATURE=y
+CONFIG_NLATTR=y
+CONFIG_LRU_CACHE=m
diff --git a/source/k/config-speakup-2.6.29.6 b/source/k/config-speakup-2.6.29.6
deleted file mode 100644
index 36fb889dd..000000000
--- a/source/k/config-speakup-2.6.29.6
+++ /dev/null
@@ -1,4199 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.29.6
-# Mon Aug 17 12:03:53 2009
-#
-CONFIG_64BIT=y
-# CONFIG_X86_32 is not set
-CONFIG_X86_64=y
-CONFIG_X86=y
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_FAST_CMPXCHG_LOCAL=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
-CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_HAVE_SETUP_PER_CPU_AREA=y
-CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ZONE_DMA32=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_AUDIT_ARCH=y
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
-CONFIG_X86_64_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-# CONFIG_KTIME_SCALAR is not set
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-
-#
-# RCU Subsystem
-#
-CONFIG_CLASSIC_RCU=y
-# CONFIG_TREE_RCU is not set
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_PREEMPT_RCU_TRACE is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=15
-CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-# CONFIG_GROUP_SCHED is not set
-# CONFIG_CGROUPS is not set
-# CONFIG_SYSFS_DEPRECATED_V2 is not set
-# CONFIG_RELAY is not set
-CONFIG_NAMESPACES=y
-# CONFIG_UTS_NS is not set
-# CONFIG_IPC_NS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_NET_NS is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-# CONFIG_EMBEDDED is not set
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_PCSPKR_PLATFORM=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_PCI_QUIRKS=y
-CONFIG_SLUB_DEBUG=y
-CONFIG_COMPAT_BRK=y
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-# CONFIG_SLOB is not set
-CONFIG_PROFILING=y
-CONFIG_TRACEPOINTS=y
-CONFIG_MARKERS=y
-CONFIG_OPROFILE=m
-# CONFIG_OPROFILE_IBS is not set
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_HAVE_IOREMAP_PROT=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-CONFIG_BLK_DEV_BSG=y
-# CONFIG_BLK_DEV_INTEGRITY is not set
-CONFIG_BLOCK_COMPAT=y
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_PREEMPT_NOTIFIERS=y
-CONFIG_FREEZER=y
-
-#
-# Processor type and features
-#
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_SMP=y
-# CONFIG_SPARSE_IRQ is not set
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-# CONFIG_PARAVIRT_GUEST is not set
-CONFIG_MEMTEST=y
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MPSC is not set
-# CONFIG_MCORE2 is not set
-CONFIG_GENERIC_CPU=y
-CONFIG_X86_CPU=y
-CONFIG_X86_L1_CACHE_BYTES=128
-CONFIG_X86_INTERNODE_CACHE_BYTES=128
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=64
-CONFIG_X86_DEBUGCTLMSR=y
-CONFIG_CPU_SUP_INTEL=y
-CONFIG_CPU_SUP_AMD=y
-CONFIG_CPU_SUP_CENTAUR_64=y
-# CONFIG_X86_DS is not set
-CONFIG_HPET_TIMER=y
-CONFIG_HPET_EMULATE_RTC=y
-CONFIG_DMI=y
-CONFIG_GART_IOMMU=y
-# CONFIG_CALGARY_IOMMU is not set
-# CONFIG_AMD_IOMMU is not set
-CONFIG_SWIOTLB=y
-CONFIG_IOMMU_HELPER=y
-# CONFIG_IOMMU_API is not set
-CONFIG_NR_CPUS=32
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_INTEL=y
-CONFIG_X86_MCE_AMD=y
-CONFIG_I8K=m
-CONFIG_MICROCODE=m
-CONFIG_MICROCODE_INTEL=y
-CONFIG_MICROCODE_AMD=y
-CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_X86_MSR=m
-CONFIG_X86_CPUID=m
-CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
-CONFIG_DIRECT_GBPAGES=y
-# CONFIG_NUMA is not set
-CONFIG_ARCH_SPARSEMEM_DEFAULT=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_FLATMEM_MANUAL is not set
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-CONFIG_SPARSEMEM_MANUAL=y
-CONFIG_SPARSEMEM=y
-CONFIG_HAVE_MEMORY_PRESENT=y
-CONFIG_SPARSEMEM_EXTREME=y
-CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
-CONFIG_SPARSEMEM_VMEMMAP=y
-
-#
-# Memory hotplug is currently incompatible with Software Suspend
-#
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_UNEVICTABLE_LRU=y
-CONFIG_MMU_NOTIFIER=y
-# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
-CONFIG_X86_RESERVE_LOW_64K=y
-CONFIG_MTRR=y
-CONFIG_MTRR_SANITIZER=y
-CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
-CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
-# CONFIG_X86_PAT is not set
-# CONFIG_EFI is not set
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-# CONFIG_HZ_250 is not set
-# CONFIG_HZ_300 is not set
-CONFIG_HZ_1000=y
-CONFIG_HZ=1000
-# CONFIG_SCHED_HRTICK is not set
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-CONFIG_PHYSICAL_START=0x200000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x200000
-CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
-# CONFIG_CMDLINE_BOOL is not set
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
-
-#
-# Power management and ACPI options
-#
-CONFIG_ARCH_HIBERNATION_HEADER=y
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_HIBERNATION=y
-CONFIG_PM_STD_PARTITION="\"\""
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
-CONFIG_ACPI_PROCFS_POWER=y
-CONFIG_ACPI_SYSFS_POWER=y
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=m
-CONFIG_ACPI_BATTERY=m
-CONFIG_ACPI_BUTTON=m
-CONFIG_ACPI_VIDEO=m
-CONFIG_ACPI_FAN=m
-CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_PROCESSOR=m
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_THERMAL=m
-# CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_PCI_SLOT=m
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=m
-# CONFIG_ACPI_SBS is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=m
-# CONFIG_CPU_FREQ_DEBUG is not set
-CONFIG_CPU_FREQ_STAT=m
-CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=m
-CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=m
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
-
-#
-# CPUFreq processor drivers
-#
-CONFIG_X86_ACPI_CPUFREQ=m
-CONFIG_X86_POWERNOW_K8=m
-CONFIG_X86_POWERNOW_K8_ACPI=y
-CONFIG_X86_SPEEDSTEP_CENTRINO=m
-CONFIG_X86_P4_CLOCKMOD=m
-
-#
-# shared options
-#
-CONFIG_X86_SPEEDSTEP_LIB=m
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-
-#
-# Memory power savings
-#
-CONFIG_I7300_IDLE_IOAT_CHANNEL=y
-CONFIG_I7300_IDLE=m
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_DMAR is not set
-# CONFIG_INTR_REMAP is not set
-CONFIG_PCIEPORTBUS=y
-CONFIG_HOTPLUG_PCI_PCIE=m
-CONFIG_PCIEAER=y
-# CONFIG_PCIEASPM is not set
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_LEGACY=y
-# CONFIG_PCI_STUB is not set
-CONFIG_HT_IRQ=y
-CONFIG_ISA_DMA_API=y
-CONFIG_K8_NB=y
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-CONFIG_CARDBUS=y
-
-#
-# PC-card bridges
-#
-CONFIG_YENTA=m
-CONFIG_YENTA_O2=y
-CONFIG_YENTA_RICOH=y
-CONFIG_YENTA_TI=y
-CONFIG_YENTA_ENE_TUNE=y
-CONFIG_YENTA_TOSHIBA=y
-CONFIG_PD6729=m
-CONFIG_I82092=m
-CONFIG_PCCARD_NONSTATIC=m
-CONFIG_HOTPLUG_PCI=y
-CONFIG_HOTPLUG_PCI_FAKE=m
-CONFIG_HOTPLUG_PCI_ACPI=m
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-CONFIG_HOTPLUG_PCI_SHPC=m
-
-#
-# Executable file formats / Emulations
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_COMPAT_BINFMT_ELF=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-# CONFIG_HAVE_AOUT is not set
-CONFIG_BINFMT_MISC=m
-CONFIG_IA32_EMULATION=y
-CONFIG_IA32_AOUT=m
-CONFIG_COMPAT=y
-CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
-CONFIG_SYSVIPC_COMPAT=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_COMPAT_NET_DEV_OPS=y
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=y
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=m
-# CONFIG_NET_KEY_MIGRATE is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_ASK_IP_FIB_HASH=y
-# CONFIG_IP_FIB_TRIE is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=m
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_NDISC_NODETYPE=y
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETLABEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-# CONFIG_NF_CONNTRACK_EVENTS is not set
-CONFIG_NF_CT_PROTO_DCCP=m
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_RATEEST=m
-CONFIG_NETFILTER_XT_TARGET_TPROXY=m
-CONFIG_NETFILTER_XT_TARGET_TRACE=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_OWNER=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_RATEEST=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_RECENT=m
-CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_SOCKET=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_TIME=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-CONFIG_IP_VS=m
-# CONFIG_IP_VS_IPV6 is not set
-# CONFIG_IP_VS_DEBUG is not set
-CONFIG_IP_VS_TAB_BITS=12
-
-#
-# IPVS transport protocol load balancing support
-#
-CONFIG_IP_VS_PROTO_TCP=y
-CONFIG_IP_VS_PROTO_UDP=y
-CONFIG_IP_VS_PROTO_AH_ESP=y
-CONFIG_IP_VS_PROTO_ESP=y
-CONFIG_IP_VS_PROTO_AH=y
-
-#
-# IPVS scheduler
-#
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-
-#
-# IPVS application helper
-#
-CONFIG_IP_VS_FTP=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_SECURITY=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_IP6_NF_SECURITY=m
-
-#
-# DECnet: Netfilter Configuration
-#
-# CONFIG_DECNET_NF_GRABULATOR is not set
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_IP6=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-CONFIG_BRIDGE_EBT_NFLOG=m
-CONFIG_IP_DCCP=m
-CONFIG_INET_DCCP_DIAG=m
-
-#
-# DCCP CCIDs Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP_CCID2_DEBUG is not set
-# CONFIG_IP_DCCP_CCID3 is not set
-CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
-# CONFIG_SCTP_DBG_OBJCNT is not set
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
-CONFIG_TIPC=m
-# CONFIG_TIPC_ADVANCED is not set
-# CONFIG_TIPC_DEBUG is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
-# CONFIG_NET_DSA is not set
-CONFIG_VLAN_8021Q=m
-CONFIG_VLAN_8021Q_GVRP=y
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-CONFIG_LLC=y
-CONFIG_LLC2=m
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=m
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-CONFIG_WAN_ROUTER=m
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_MULTIQ=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_DRR=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-# CONFIG_CLS_U32_PERF is not set
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_FLOW=m
-# CONFIG_NET_EMATCH is not set
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=y
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_NAT=m
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-CONFIG_NET_ACT_SKBEDIT=m
-# CONFIG_NET_CLS_IND is not set
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_DCB is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_HAMRADIO=y
-
-#
-# Packet Radio protocols
-#
-CONFIG_AX25=m
-# CONFIG_AX25_DAMA_SLAVE is not set
-CONFIG_NETROM=m
-CONFIG_ROSE=m
-
-#
-# AX.25 network device drivers
-#
-CONFIG_MKISS=m
-CONFIG_6PACK=m
-CONFIG_BPQETHER=m
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_BAYCOM_PAR=m
-CONFIG_YAM=m
-CONFIG_CAN=m
-CONFIG_CAN_RAW=m
-CONFIG_CAN_BCM=m
-
-#
-# CAN Device Drivers
-#
-CONFIG_CAN_VCAN=m
-# CONFIG_CAN_DEBUG_DEVICES is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-CONFIG_DONGLE=y
-CONFIG_ESI_DONGLE=m
-CONFIG_ACTISYS_DONGLE=m
-CONFIG_TEKRAM_DONGLE=m
-CONFIG_TOIM3232_DONGLE=m
-CONFIG_LITELINK_DONGLE=m
-CONFIG_MA600_DONGLE=m
-CONFIG_GIRBIL_DONGLE=m
-CONFIG_MCP2120_DONGLE=m
-CONFIG_OLD_BELKIN_DONGLE=m
-CONFIG_ACT200L_DONGLE=m
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_NSC_FIR=m
-CONFIG_WINBOND_FIR=m
-CONFIG_SMC_IRCC_FIR=m
-CONFIG_ALI_FIR=m
-CONFIG_VLSI_FIR=m
-CONFIG_VIA_FIR=m
-CONFIG_MCS_FIR=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_CMTP=m
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIBTUSB=m
-CONFIG_BT_HCIBTSDIO=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
-CONFIG_PHONET=m
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-CONFIG_CFG80211=m
-# CONFIG_CFG80211_REG_DEBUG is not set
-CONFIG_NL80211=y
-CONFIG_WIRELESS_OLD_REGULATORY=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-CONFIG_LIB80211=m
-CONFIG_LIB80211_CRYPT_WEP=m
-CONFIG_LIB80211_CRYPT_CCMP=m
-CONFIG_LIB80211_CRYPT_TKIP=m
-# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=m
-
-#
-# Rate control algorithm selection
-#
-CONFIG_MAC80211_RC_MINSTREL=y
-# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-CONFIG_MAC80211_RC_DEFAULT="minstrel"
-CONFIG_MAC80211_MESH=y
-CONFIG_MAC80211_LEDS=y
-# CONFIG_MAC80211_DEBUGFS is not set
-# CONFIG_MAC80211_DEBUG_MENU is not set
-CONFIG_WIMAX=m
-CONFIG_WIMAX_DEBUG_LEVEL=8
-CONFIG_RFKILL=m
-CONFIG_RFKILL_INPUT=m
-CONFIG_RFKILL_LEDS=y
-CONFIG_NET_9P=m
-CONFIG_NET_9P_VIRTIO=m
-CONFIG_NET_9P_RDMA=m
-# CONFIG_NET_9P_DEBUG is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_FIRMWARE_IN_KERNEL is not set
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=m
-CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=m
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_TESTS=m
-CONFIG_MTD_REDBOOT_PARTS=m
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-CONFIG_MTD_AR7_PARTS=m
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_HAVE_MTD_OTP=y
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-CONFIG_RFD_FTL=m
-CONFIG_SSFDC=m
-CONFIG_MTD_OOPS=m
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-CONFIG_MTD_MAP_BANK_WIDTH_8=y
-CONFIG_MTD_MAP_BANK_WIDTH_16=y
-CONFIG_MTD_MAP_BANK_WIDTH_32=y
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-CONFIG_MTD_CFI_I4=y
-CONFIG_MTD_CFI_I8=y
-CONFIG_MTD_OTP=y
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-CONFIG_MTD_CFI_STAA=m
-CONFIG_MTD_CFI_UTIL=m
-CONFIG_MTD_RAM=m
-CONFIG_MTD_ROM=m
-CONFIG_MTD_ABSENT=m
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-CONFIG_MTD_SC520CDP=m
-CONFIG_MTD_NETSC520=m
-CONFIG_MTD_TS5500=m
-CONFIG_MTD_SBC_GXX=m
-CONFIG_MTD_AMD76XROM=m
-CONFIG_MTD_ICHXROM=m
-CONFIG_MTD_ESB2ROM=m
-CONFIG_MTD_CK804XROM=m
-CONFIG_MTD_SCB2_FLASH=m
-CONFIG_MTD_NETtel=m
-CONFIG_MTD_DILNETPC=m
-CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000
-CONFIG_MTD_L440GX=m
-CONFIG_MTD_PCI=m
-CONFIG_MTD_INTEL_VR_NOR=m
-CONFIG_MTD_PLATRAM=m
-
-#
-# Self-contained MTD device drivers
-#
-CONFIG_MTD_PMC551=m
-CONFIG_MTD_PMC551_BUGFIX=y
-# CONFIG_MTD_PMC551_DEBUG is not set
-CONFIG_MTD_SLRAM=m
-CONFIG_MTD_PHRAM=m
-CONFIG_MTD_MTDRAM=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-CONFIG_MTD_BLOCK2MTD=m
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-CONFIG_MTD_DOC2001PLUS=m
-CONFIG_MTD_DOCPROBE=m
-CONFIG_MTD_DOCECC=m
-CONFIG_MTD_DOCPROBE_ADVANCED=y
-CONFIG_MTD_DOCPROBE_ADDRESS=0x0000
-CONFIG_MTD_DOCPROBE_HIGH=y
-CONFIG_MTD_DOCPROBE_55AA=y
-CONFIG_MTD_NAND=m
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-CONFIG_MTD_NAND_ECC_SMC=y
-CONFIG_MTD_NAND_MUSEUM_IDS=y
-CONFIG_MTD_NAND_IDS=m
-CONFIG_MTD_NAND_DISKONCHIP=m
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y
-CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y
-CONFIG_MTD_NAND_CAFE=m
-CONFIG_MTD_NAND_NANDSIM=m
-CONFIG_MTD_NAND_PLATFORM=m
-CONFIG_MTD_ALAUDA=m
-CONFIG_MTD_ONENAND=m
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-CONFIG_MTD_ONENAND_OTP=y
-CONFIG_MTD_ONENAND_2X_PROGRAM=y
-CONFIG_MTD_ONENAND_SIM=m
-
-#
-# LPDDR flash memory drivers
-#
-CONFIG_MTD_LPDDR=m
-CONFIG_MTD_QINFO_PROBE=m
-
-#
-# UBI - Unsorted block images
-#
-CONFIG_MTD_UBI=m
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-CONFIG_MTD_UBI_GLUEBI=y
-
-#
-# UBI debugging options
-#
-# CONFIG_MTD_UBI_DEBUG is not set
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-CONFIG_PARPORT_SERIAL=m
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-CONFIG_PARPORT_PC_PCMCIA=m
-# CONFIG_PARPORT_GSC is not set
-CONFIG_PARPORT_AX88796=m
-CONFIG_PARPORT_1284=y
-CONFIG_PARPORT_NOT_PC=y
-CONFIG_PNP=y
-CONFIG_PNP_DEBUG_MESSAGES=y
-
-#
-# Protocols
-#
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-CONFIG_BLK_DEV_FD=y
-CONFIG_PARIDE=m
-
-#
-# Parallel IDE high-level drivers
-#
-CONFIG_PARIDE_PD=m
-CONFIG_PARIDE_PCD=m
-CONFIG_PARIDE_PF=m
-CONFIG_PARIDE_PT=m
-CONFIG_PARIDE_PG=m
-
-#
-# Parallel IDE protocol modules
-#
-CONFIG_PARIDE_ATEN=m
-CONFIG_PARIDE_BPCK=m
-CONFIG_PARIDE_COMM=m
-CONFIG_PARIDE_DSTR=m
-CONFIG_PARIDE_FIT2=m
-CONFIG_PARIDE_FIT3=m
-CONFIG_PARIDE_EPAT=m
-CONFIG_PARIDE_EPATC8=y
-CONFIG_PARIDE_EPIA=m
-CONFIG_PARIDE_FRIQ=m
-CONFIG_PARIDE_FRPW=m
-CONFIG_PARIDE_KBIC=m
-CONFIG_PARIDE_KTTI=m
-CONFIG_PARIDE_ON20=m
-CONFIG_PARIDE_ON26=m
-CONFIG_BLK_CPQ_DA=y
-CONFIG_BLK_CPQ_CISS_DA=y
-CONFIG_CISS_SCSI_TAPE=y
-CONFIG_BLK_DEV_DAC960=y
-CONFIG_BLK_DEV_UMEM=m
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_SX8=y
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
-CONFIG_VIRTIO_BLK=m
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_MISC_DEVICES=y
-CONFIG_IBM_ASM=m
-CONFIG_PHANTOM=m
-CONFIG_SGI_IOC4=m
-CONFIG_TIFM_CORE=m
-CONFIG_TIFM_7XX1=m
-CONFIG_ICS932S401=m
-CONFIG_ENCLOSURE_SERVICES=m
-CONFIG_SGI_XP=m
-CONFIG_HP_ILO=m
-CONFIG_SGI_GRU=m
-# CONFIG_SGI_GRU_DEBUG is not set
-CONFIG_DELL_LAPTOP=m
-# CONFIG_C2PORT is not set
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=m
-CONFIG_EEPROM_LEGACY=m
-CONFIG_EEPROM_93CX6=m
-CONFIG_HAVE_IDE=y
-CONFIG_IDE=y
-
-#
-# Please see Documentation/ide/ide.txt for help/info on IDE drives
-#
-CONFIG_IDE_TIMINGS=y
-CONFIG_IDE_ATAPI=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=y
-CONFIG_IDE_GD_ATA=y
-CONFIG_IDE_GD_ATAPI=y
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_DELKIN=m
-CONFIG_BLK_DEV_IDECD=y
-CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEACPI=y
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=m
-CONFIG_BLK_DEV_PLATFORM=m
-CONFIG_BLK_DEV_CMD640=y
-CONFIG_BLK_DEV_CMD640_ENHANCED=y
-CONFIG_BLK_DEV_IDEPNP=y
-CONFIG_BLK_DEV_IDEDMA_SFF=y
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_PCIBUS_ORDER=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-CONFIG_BLK_DEV_AEC62XX=y
-CONFIG_BLK_DEV_ALI15X3=y
-CONFIG_BLK_DEV_AMD74XX=y
-CONFIG_BLK_DEV_ATIIXP=y
-CONFIG_BLK_DEV_CMD64X=y
-CONFIG_BLK_DEV_TRIFLEX=y
-CONFIG_BLK_DEV_CS5520=y
-CONFIG_BLK_DEV_CS5530=y
-CONFIG_BLK_DEV_HPT366=y
-CONFIG_BLK_DEV_JMICRON=y
-CONFIG_BLK_DEV_SC1200=y
-CONFIG_BLK_DEV_PIIX=y
-CONFIG_BLK_DEV_IT8172=y
-CONFIG_BLK_DEV_IT8213=y
-CONFIG_BLK_DEV_IT821X=y
-# CONFIG_BLK_DEV_NS87415 is not set
-CONFIG_BLK_DEV_PDC202XX_OLD=y
-CONFIG_BLK_DEV_PDC202XX_NEW=y
-CONFIG_BLK_DEV_SVWKS=y
-CONFIG_BLK_DEV_SIIMAGE=y
-CONFIG_BLK_DEV_SIS5513=y
-CONFIG_BLK_DEV_SLC90E66=y
-CONFIG_BLK_DEV_TRM290=y
-CONFIG_BLK_DEV_VIA82CXXX=y
-CONFIG_BLK_DEV_TC86C001=y
-CONFIG_BLK_DEV_IDEDMA=y
-
-#
-# SCSI device support
-#
-CONFIG_RAID_ATTRS=y
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=y
-CONFIG_SCSI_NETLINK=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=y
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_ENCLOSURE=m
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=y
-CONFIG_SCSI_FC_ATTRS=y
-CONFIG_SCSI_FC_TGT_ATTRS=y
-CONFIG_SCSI_ISCSI_ATTRS=y
-CONFIG_SCSI_SAS_ATTRS=y
-CONFIG_SCSI_SAS_LIBSAS=y
-CONFIG_SCSI_SAS_ATA=y
-CONFIG_SCSI_SAS_HOST_SMP=y
-# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
-CONFIG_SCSI_SRP_ATTRS=y
-CONFIG_SCSI_SRP_TGT_ATTRS=y
-CONFIG_SCSI_LOWLEVEL=y
-CONFIG_ISCSI_TCP=m
-CONFIG_SCSI_CXGB3_ISCSI=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=y
-CONFIG_SCSI_3W_9XXX=y
-CONFIG_SCSI_ACARD=y
-CONFIG_SCSI_AACRAID=y
-CONFIG_SCSI_AIC7XXX=y
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
-CONFIG_AIC7XXX_DEBUG_MASK=0
-# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
-CONFIG_SCSI_AIC7XXX_OLD=y
-CONFIG_SCSI_AIC79XX=y
-CONFIG_AIC79XX_CMDS_PER_DEVICE=4
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-# CONFIG_AIC79XX_DEBUG_ENABLE is not set
-CONFIG_AIC79XX_DEBUG_MASK=0
-# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
-CONFIG_SCSI_AIC94XX=m
-# CONFIG_AIC94XX_DEBUG is not set
-CONFIG_SCSI_DPT_I2O=m
-CONFIG_SCSI_ADVANSYS=y
-CONFIG_SCSI_ARCMSR=y
-# CONFIG_SCSI_ARCMSR_AER is not set
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=y
-CONFIG_MEGARAID_MAILBOX=y
-CONFIG_MEGARAID_LEGACY=y
-CONFIG_MEGARAID_SAS=y
-CONFIG_SCSI_HPTIOP=y
-CONFIG_SCSI_BUSLOGIC=y
-CONFIG_LIBFC=y
-CONFIG_FCOE=y
-CONFIG_SCSI_DMX3191D=y
-CONFIG_SCSI_EATA=y
-# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
-# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
-CONFIG_SCSI_EATA_MAX_TAGS=16
-CONFIG_SCSI_FUTURE_DOMAIN=y
-CONFIG_SCSI_GDTH=y
-CONFIG_SCSI_IPS=y
-CONFIG_SCSI_INITIO=y
-CONFIG_SCSI_INIA100=y
-CONFIG_SCSI_PPA=m
-CONFIG_SCSI_IMM=m
-# CONFIG_SCSI_IZIP_EPP16 is not set
-# CONFIG_SCSI_IZIP_SLOW_CTR is not set
-CONFIG_SCSI_MVSAS=y
-CONFIG_SCSI_STEX=y
-CONFIG_SCSI_SYM53C8XX_2=y
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-CONFIG_SCSI_IPR=y
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-CONFIG_SCSI_QLOGIC_1280=y
-CONFIG_SCSI_QLA_FC=y
-CONFIG_SCSI_QLA_ISCSI=y
-CONFIG_SCSI_LPFC=y
-# CONFIG_SCSI_LPFC_DEBUG_FS is not set
-CONFIG_SCSI_DC395x=y
-CONFIG_SCSI_DC390T=y
-CONFIG_SCSI_DEBUG=m
-CONFIG_SCSI_SRP=y
-CONFIG_SCSI_LOWLEVEL_PCMCIA=y
-CONFIG_PCMCIA_FDOMAIN=m
-CONFIG_PCMCIA_QLOGIC=m
-CONFIG_PCMCIA_SYM53C500=m
-CONFIG_SCSI_DH=y
-CONFIG_SCSI_DH_RDAC=y
-CONFIG_SCSI_DH_HP_SW=y
-CONFIG_SCSI_DH_EMC=y
-CONFIG_SCSI_DH_ALUA=y
-CONFIG_ATA=y
-# CONFIG_ATA_NONSTANDARD is not set
-CONFIG_ATA_ACPI=y
-CONFIG_SATA_PMP=y
-CONFIG_SATA_AHCI=y
-CONFIG_SATA_SIL24=y
-CONFIG_ATA_SFF=y
-CONFIG_SATA_SVW=y
-CONFIG_ATA_PIIX=y
-CONFIG_SATA_MV=y
-CONFIG_SATA_NV=y
-CONFIG_PDC_ADMA=y
-CONFIG_SATA_QSTOR=y
-CONFIG_SATA_PROMISE=y
-CONFIG_SATA_SX4=y
-CONFIG_SATA_SIL=y
-CONFIG_SATA_SIS=y
-CONFIG_SATA_ULI=y
-CONFIG_SATA_VIA=y
-CONFIG_SATA_VITESSE=y
-CONFIG_SATA_INIC162X=y
-CONFIG_PATA_ACPI=y
-CONFIG_PATA_ALI=m
-CONFIG_PATA_AMD=m
-CONFIG_PATA_ARTOP=m
-CONFIG_PATA_ATIIXP=m
-CONFIG_PATA_CMD640_PCI=m
-CONFIG_PATA_CMD64X=m
-CONFIG_PATA_CS5520=m
-CONFIG_PATA_CS5530=m
-CONFIG_PATA_CYPRESS=m
-CONFIG_PATA_EFAR=m
-CONFIG_ATA_GENERIC=y
-CONFIG_PATA_HPT366=m
-CONFIG_PATA_HPT37X=m
-CONFIG_PATA_HPT3X2N=m
-CONFIG_PATA_HPT3X3=m
-CONFIG_PATA_HPT3X3_DMA=y
-CONFIG_PATA_IT821X=m
-CONFIG_PATA_IT8213=m
-CONFIG_PATA_JMICRON=m
-CONFIG_PATA_TRIFLEX=m
-CONFIG_PATA_MARVELL=y
-CONFIG_PATA_MPIIX=m
-CONFIG_PATA_OLDPIIX=m
-CONFIG_PATA_NETCELL=m
-CONFIG_PATA_NINJA32=m
-CONFIG_PATA_NS87410=m
-CONFIG_PATA_NS87415=m
-CONFIG_PATA_OPTI=m
-CONFIG_PATA_OPTIDMA=m
-CONFIG_PATA_PCMCIA=m
-CONFIG_PATA_PDC_OLD=m
-CONFIG_PATA_RADISYS=m
-CONFIG_PATA_RZ1000=m
-CONFIG_PATA_SC1200=m
-CONFIG_PATA_SERVERWORKS=m
-CONFIG_PATA_PDC2027X=m
-CONFIG_PATA_SIL680=m
-CONFIG_PATA_SIS=y
-CONFIG_PATA_VIA=m
-CONFIG_PATA_WINBOND=m
-CONFIG_PATA_SCH=m
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=y
-CONFIG_MD_AUTODETECT=y
-CONFIG_MD_LINEAR=y
-CONFIG_MD_RAID0=y
-CONFIG_MD_RAID1=y
-CONFIG_MD_RAID10=y
-CONFIG_MD_RAID456=y
-CONFIG_MD_RAID5_RESHAPE=y
-CONFIG_MD_MULTIPATH=y
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=y
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=y
-CONFIG_DM_SNAPSHOT=y
-CONFIG_DM_MIRROR=y
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-CONFIG_FUSION=y
-CONFIG_FUSION_SPI=y
-CONFIG_FUSION_FC=y
-CONFIG_FUSION_SAS=y
-CONFIG_FUSION_MAX_SGE=128
-CONFIG_FUSION_CTL=m
-CONFIG_FUSION_LAN=m
-# CONFIG_FUSION_LOGGING is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# Enable only one of the two stacks, unless you know what you are doing
-#
-# CONFIG_FIREWIRE is not set
-CONFIG_IEEE1394=y
-CONFIG_IEEE1394_OHCI1394=y
-CONFIG_IEEE1394_PCILYNX=y
-CONFIG_IEEE1394_SBP2=y
-# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
-CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
-CONFIG_IEEE1394_ETH1394=m
-CONFIG_IEEE1394_RAWIO=m
-CONFIG_IEEE1394_VIDEO1394=m
-CONFIG_IEEE1394_DV1394=m
-# CONFIG_IEEE1394_VERBOSEDEBUG is not set
-CONFIG_I2O=y
-CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_EXT_ADAPTEC_DMA64=y
-CONFIG_I2O_CONFIG=y
-# CONFIG_I2O_CONFIG_OLD_IOCTL is not set
-CONFIG_I2O_BUS=y
-CONFIG_I2O_BLOCK=y
-CONFIG_I2O_SCSI=y
-CONFIG_I2O_PROC=y
-CONFIG_MACINTOSH_DRIVERS=y
-CONFIG_MAC_EMUMOUSEBTN=y
-CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_MACVLAN=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-CONFIG_VETH=m
-CONFIG_NET_SB1000=m
-CONFIG_ARCNET=m
-CONFIG_ARCNET_1201=m
-CONFIG_ARCNET_1051=m
-CONFIG_ARCNET_RAW=m
-CONFIG_ARCNET_CAP=m
-CONFIG_ARCNET_COM90xx=m
-CONFIG_ARCNET_COM90xxIO=m
-CONFIG_ARCNET_RIM_I=m
-CONFIG_ARCNET_COM20020=m
-CONFIG_ARCNET_COM20020_PCI=m
-CONFIG_PHYLIB=m
-
-#
-# MII PHY device drivers
-#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
-CONFIG_LSI_ET1011C_PHY=m
-CONFIG_MDIO_BITBANG=m
-CONFIG_MDIO_GPIO=m
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-CONFIG_HAPPYMEAL=m
-CONFIG_SUNGEM=m
-CONFIG_CASSINI=m
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_DNET=m
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-CONFIG_TULIP_MMIO=y
-# CONFIG_TULIP_NAPI is not set
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_PCMCIA_XIRCOM=m
-CONFIG_HP100=m
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
-CONFIG_FORCEDETH_NAPI=y
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_R6040=m
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SMSC9420=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_SC92031=m
-CONFIG_NET_POCKET=y
-CONFIG_ATP=m
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_ATL2=m
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000E=m
-CONFIG_IP1000=m
-CONFIG_IGB=m
-# CONFIG_IGB_LRO is not set
-CONFIG_IGB_DCA=y
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_R8169_VLAN=y
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-# CONFIG_SKGE_DEBUG is not set
-CONFIG_SKY2=m
-# CONFIG_SKY2_DEBUG is not set
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_ATL1E=m
-CONFIG_ATL1C=m
-CONFIG_JME=m
-CONFIG_NETDEV_10000=y
-CONFIG_CHELSIO_T1=m
-CONFIG_CHELSIO_T1_1G=y
-CONFIG_CHELSIO_T3_DEPENDS=y
-CONFIG_CHELSIO_T3=m
-CONFIG_ENIC=m
-CONFIG_IXGBE=m
-CONFIG_IXGBE_DCA=y
-CONFIG_IXGB=m
-CONFIG_S2IO=m
-CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
-CONFIG_NETXEN_NIC=m
-CONFIG_NIU=m
-CONFIG_MLX4_EN=m
-CONFIG_MLX4_CORE=m
-CONFIG_MLX4_DEBUG=y
-CONFIG_TEHUTI=m
-CONFIG_BNX2X=m
-CONFIG_QLGE=m
-CONFIG_SFC=m
-CONFIG_SFC_MTD=y
-CONFIG_BE2NET=m
-CONFIG_TR=y
-CONFIG_IBMOL=m
-CONFIG_3C359=m
-CONFIG_TMS380TR=m
-CONFIG_TMSPCI=m
-CONFIG_ABYSS=m
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_CS=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM=m
-CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_AIRO=m
-CONFIG_HERMES=m
-CONFIG_HERMES_CACHE_FW_ON_INIT=y
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_NORTEL_HERMES=m
-CONFIG_PCI_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-CONFIG_PRISM54=m
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8180=m
-CONFIG_RTL8187=m
-CONFIG_ADM8211=m
-# CONFIG_MAC80211_HWSIM is not set
-CONFIG_P54_COMMON=m
-CONFIG_P54_USB=m
-CONFIG_P54_PCI=m
-CONFIG_ATH5K=m
-# CONFIG_ATH5K_DEBUG is not set
-CONFIG_ATH9K=m
-# CONFIG_ATH9K_DEBUG is not set
-CONFIG_IPW2100=m
-CONFIG_IPW2100_MONITOR=y
-# CONFIG_IPW2100_DEBUG is not set
-CONFIG_IPW2200=m
-CONFIG_IPW2200_MONITOR=y
-CONFIG_IPW2200_RADIOTAP=y
-CONFIG_IPW2200_PROMISCUOUS=y
-CONFIG_IPW2200_QOS=y
-# CONFIG_IPW2200_DEBUG is not set
-CONFIG_LIBIPW=m
-# CONFIG_LIBIPW_DEBUG is not set
-CONFIG_IWLWIFI=m
-CONFIG_IWLCORE=m
-CONFIG_IWLWIFI_LEDS=y
-# CONFIG_IWLWIFI_RFKILL is not set
-# CONFIG_IWLWIFI_DEBUG is not set
-CONFIG_IWLAGN=m
-CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y
-CONFIG_IWLAGN_LEDS=y
-CONFIG_IWL4965=y
-CONFIG_IWL5000=y
-CONFIG_IWL3945=m
-# CONFIG_IWL3945_RFKILL is not set
-CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
-CONFIG_IWL3945_LEDS=y
-# CONFIG_IWL3945_DEBUG is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-CONFIG_HOSTAP_CS=m
-CONFIG_B43=m
-CONFIG_B43_PCI_AUTOSELECT=y
-CONFIG_B43_PCICORE_AUTOSELECT=y
-CONFIG_B43_PCMCIA=y
-CONFIG_B43_PIO=y
-CONFIG_B43_LEDS=y
-CONFIG_B43_RFKILL=y
-# CONFIG_B43_DEBUG is not set
-CONFIG_B43LEGACY=m
-CONFIG_B43LEGACY_PCI_AUTOSELECT=y
-CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
-CONFIG_B43LEGACY_LEDS=y
-CONFIG_B43LEGACY_RFKILL=y
-# CONFIG_B43LEGACY_DEBUG is not set
-CONFIG_B43LEGACY_DMA=y
-CONFIG_B43LEGACY_PIO=y
-CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
-# CONFIG_B43LEGACY_DMA_MODE is not set
-# CONFIG_B43LEGACY_PIO_MODE is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_RT2X00=m
-CONFIG_RT2400PCI=m
-CONFIG_RT2500PCI=m
-CONFIG_RT61PCI=m
-CONFIG_RT2500USB=m
-CONFIG_RT73USB=m
-CONFIG_RT2X00_LIB_PCI=m
-CONFIG_RT2X00_LIB_USB=m
-CONFIG_RT2X00_LIB=m
-CONFIG_RT2X00_LIB_FIRMWARE=y
-CONFIG_RT2X00_LIB_CRYPTO=y
-CONFIG_RT2X00_LIB_RFKILL=y
-CONFIG_RT2X00_LIB_LEDS=y
-# CONFIG_RT2X00_DEBUG is not set
-
-#
-# WiMAX Wireless Broadband devices
-#
-CONFIG_WIMAX_I2400M=m
-CONFIG_WIMAX_I2400M_USB=m
-CONFIG_WIMAX_I2400M_SDIO=m
-CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-# CONFIG_USB_EPSON2888 is not set
-# CONFIG_USB_KC2190 is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_HSO=m
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-CONFIG_PCMCIA_AXNET=m
-CONFIG_ARCNET_COM20020_CS=m
-CONFIG_PCMCIA_IBMTR=m
-CONFIG_WAN=y
-CONFIG_LANMEDIA=m
-CONFIG_HDLC=m
-CONFIG_HDLC_RAW=m
-CONFIG_HDLC_RAW_ETH=m
-CONFIG_HDLC_CISCO=m
-CONFIG_HDLC_FR=m
-CONFIG_HDLC_PPP=m
-
-#
-# X.25/LAPB support is disabled
-#
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-# CONFIG_PC300TOO is not set
-CONFIG_FARSYNC=m
-CONFIG_DSCC4=m
-# CONFIG_DSCC4_PCISYNC is not set
-# CONFIG_DSCC4_PCI_RST is not set
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
-CONFIG_WAN_ROUTER_DRIVERS=m
-CONFIG_CYCLADES_SYNC=m
-CONFIG_CYCLOMX_X25=y
-CONFIG_SBNI=m
-# CONFIG_SBNI_MULTILINE is not set
-CONFIG_ATM_DRIVERS=y
-CONFIG_ATM_DUMMY=m
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-# CONFIG_ATM_ENI_DEBUG is not set
-# CONFIG_ATM_ENI_TUNE_BURST is not set
-CONFIG_ATM_FIRESTREAM=m
-CONFIG_ATM_ZATM=m
-# CONFIG_ATM_ZATM_DEBUG is not set
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_IDT77252_USE_SUNI=y
-CONFIG_ATM_AMBASSADOR=m
-# CONFIG_ATM_AMBASSADOR_DEBUG is not set
-CONFIG_ATM_HORIZON=m
-# CONFIG_ATM_HORIZON_DEBUG is not set
-CONFIG_ATM_IA=m
-# CONFIG_ATM_IA_DEBUG is not set
-CONFIG_ATM_FORE200E=m
-# CONFIG_ATM_FORE200E_USE_TASKLET is not set
-CONFIG_ATM_FORE200E_TX_RETRY=16
-CONFIG_ATM_FORE200E_DEBUG=0
-CONFIG_ATM_HE=m
-# CONFIG_ATM_HE_USE_SUNI is not set
-CONFIG_ATM_SOLOS=m
-CONFIG_FDDI=y
-CONFIG_DEFXX=m
-# CONFIG_DEFXX_MMIO is not set
-CONFIG_SKFP=m
-CONFIG_HIPPI=y
-CONFIG_ROADRUNNER=m
-# CONFIG_ROADRUNNER_LARGE_RINGS is not set
-CONFIG_PLIP=m
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-CONFIG_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLHC=m
-CONFIG_SLIP_SMART=y
-# CONFIG_SLIP_MODE_SLIP6 is not set
-CONFIG_NET_FC=y
-CONFIG_NETCONSOLE=m
-CONFIG_NETCONSOLE_DYNAMIC=y
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-CONFIG_VIRTIO_NET=m
-CONFIG_ISDN=y
-CONFIG_MISDN=m
-CONFIG_MISDN_DSP=m
-CONFIG_MISDN_L1OIP=m
-
-#
-# mISDN hardware drivers
-#
-CONFIG_MISDN_HFCPCI=m
-CONFIG_MISDN_HFCMULTI=m
-CONFIG_MISDN_HFCUSB=m
-CONFIG_ISDN_I4L=m
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-
-#
-# ISDN feature submodules
-#
-CONFIG_ISDN_DIVERSION=m
-
-#
-# ISDN4Linux hardware drivers
-#
-
-#
-# Passive cards
-#
-CONFIG_ISDN_DRV_HISAX=m
-
-#
-# D-channel protocol features
-#
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-CONFIG_HISAX_NO_SENDCOMPLETE=y
-CONFIG_HISAX_NO_LLC=y
-CONFIG_HISAX_NO_KEYPAD=y
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-
-#
-# HiSax supported cards
-#
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_TELESPCI=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NETJET=y
-CONFIG_HISAX_NETJET_U=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_BKM_A4T=y
-CONFIG_HISAX_SCT_QUADRO=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_HFC_PCI=y
-CONFIG_HISAX_W6692=y
-CONFIG_HISAX_HFC_SX=y
-CONFIG_HISAX_ENTERNOW_PCI=y
-# CONFIG_HISAX_DEBUG is not set
-
-#
-# HiSax PCMCIA card service modules
-#
-CONFIG_HISAX_SEDLBAUER_CS=m
-CONFIG_HISAX_ELSA_CS=m
-CONFIG_HISAX_AVM_A1_CS=m
-CONFIG_HISAX_TELES_CS=m
-
-#
-# HiSax sub driver modules
-#
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-CONFIG_HISAX_FRITZ_PCIPNP=m
-CONFIG_HISAX_HDLC=y
-
-#
-# Active cards
-#
-CONFIG_HYSDN=m
-CONFIG_HYSDN_CAPI=y
-CONFIG_ISDN_DRV_GIGASET=m
-CONFIG_GIGASET_BASE=m
-CONFIG_GIGASET_M105=m
-# CONFIG_GIGASET_M101 is not set
-# CONFIG_GIGASET_DEBUG is not set
-# CONFIG_GIGASET_UNDOCREQ is not set
-CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_CAPI_TRACE=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
-CONFIG_ISDN_CAPI_CAPIFS=m
-CONFIG_ISDN_CAPI_CAPIDRV=m
-
-#
-# CAPI hardware drivers
-#
-CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1PCI=m
-CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
-CONFIG_ISDN_DRV_AVMB1_T1PCI=m
-CONFIG_ISDN_DRV_AVMB1_C4=m
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DIVAS=m
-CONFIG_ISDN_DIVAS_BRIPCI=y
-CONFIG_ISDN_DIVAS_PRIPCI=y
-CONFIG_ISDN_DIVAS_DIVACAPI=m
-CONFIG_ISDN_DIVAS_USERIDI=m
-CONFIG_ISDN_DIVAS_MAINT=m
-CONFIG_PHONE=m
-CONFIG_PHONE_IXJ=m
-CONFIG_PHONE_IXJ_PCMCIA=m
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=y
-CONFIG_INPUT_POLLDEV=m
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_GPIO=m
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=m
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_ELANTECH is not set
-CONFIG_MOUSE_PS2_TOUCHKIT=y
-CONFIG_MOUSE_SERIAL=m
-CONFIG_MOUSE_APPLETOUCH=m
-CONFIG_MOUSE_BCM5974=m
-CONFIG_MOUSE_VSXXXAA=m
-CONFIG_MOUSE_GPIO=m
-CONFIG_INPUT_JOYSTICK=y
-CONFIG_JOYSTICK_ANALOG=m
-CONFIG_JOYSTICK_A3D=m
-CONFIG_JOYSTICK_ADI=m
-CONFIG_JOYSTICK_COBRA=m
-CONFIG_JOYSTICK_GF2K=m
-CONFIG_JOYSTICK_GRIP=m
-CONFIG_JOYSTICK_GRIP_MP=m
-CONFIG_JOYSTICK_GUILLEMOT=m
-CONFIG_JOYSTICK_INTERACT=m
-CONFIG_JOYSTICK_SIDEWINDER=m
-CONFIG_JOYSTICK_TMDC=m
-CONFIG_JOYSTICK_IFORCE=m
-CONFIG_JOYSTICK_IFORCE_USB=y
-CONFIG_JOYSTICK_IFORCE_232=y
-CONFIG_JOYSTICK_WARRIOR=m
-CONFIG_JOYSTICK_MAGELLAN=m
-CONFIG_JOYSTICK_SPACEORB=m
-CONFIG_JOYSTICK_SPACEBALL=m
-CONFIG_JOYSTICK_STINGER=m
-CONFIG_JOYSTICK_TWIDJOY=m
-CONFIG_JOYSTICK_ZHENHUA=m
-CONFIG_JOYSTICK_DB9=m
-CONFIG_JOYSTICK_GAMECON=m
-CONFIG_JOYSTICK_TURBOGRAFX=m
-CONFIG_JOYSTICK_JOYDUMP=m
-CONFIG_JOYSTICK_XPAD=m
-CONFIG_JOYSTICK_XPAD_FF=y
-CONFIG_JOYSTICK_XPAD_LEDS=y
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_FUJITSU=m
-CONFIG_TOUCHSCREEN_GUNZE=m
-CONFIG_TOUCHSCREEN_ELO=m
-CONFIG_TOUCHSCREEN_WACOM_W8001=m
-CONFIG_TOUCHSCREEN_MTOUCH=m
-CONFIG_TOUCHSCREEN_INEXIO=m
-CONFIG_TOUCHSCREEN_MK712=m
-CONFIG_TOUCHSCREEN_PENMOUNT=m
-CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
-CONFIG_TOUCHSCREEN_TOUCHWIN=m
-CONFIG_TOUCHSCREEN_UCB1400=m
-CONFIG_TOUCHSCREEN_WM97XX=m
-CONFIG_TOUCHSCREEN_WM9705=y
-CONFIG_TOUCHSCREEN_WM9712=y
-CONFIG_TOUCHSCREEN_WM9713=y
-CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
-CONFIG_TOUCHSCREEN_USB_EGALAX=y
-CONFIG_TOUCHSCREEN_USB_PANJIT=y
-CONFIG_TOUCHSCREEN_USB_3M=y
-CONFIG_TOUCHSCREEN_USB_ITM=y
-CONFIG_TOUCHSCREEN_USB_ETURBO=y
-CONFIG_TOUCHSCREEN_USB_GUNZE=y
-CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
-CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
-CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
-CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
-CONFIG_TOUCHSCREEN_USB_GOTOP=y
-CONFIG_TOUCHSCREEN_TOUCHIT213=m
-CONFIG_TOUCHSCREEN_TSC2007=m
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_PCSPKR=m
-CONFIG_INPUT_APANEL=m
-CONFIG_INPUT_ATLAS_BTNS=m
-CONFIG_INPUT_ATI_REMOTE=m
-CONFIG_INPUT_ATI_REMOTE2=m
-CONFIG_INPUT_KEYSPAN_REMOTE=m
-CONFIG_INPUT_POWERMATE=m
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_CM109=m
-CONFIG_INPUT_UINPUT=m
-CONFIG_INPUT_PCF50633_PMU=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=m
-CONFIG_SERIO_CT82C710=m
-CONFIG_SERIO_PARKBD=m
-CONFIG_SERIO_PCIPS2=m
-CONFIG_SERIO_LIBPS2=y
-CONFIG_SERIO_RAW=m
-CONFIG_GAMEPORT=m
-CONFIG_GAMEPORT_NS558=m
-CONFIG_GAMEPORT_L4=m
-CONFIG_GAMEPORT_EMU10K1=m
-CONFIG_GAMEPORT_FM801=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_DEVKMEM=y
-CONFIG_SERIAL_NONSTANDARD=y
-CONFIG_COMPUTONE=m
-CONFIG_ROCKETPORT=m
-CONFIG_CYCLADES=m
-# CONFIG_CYZ_INTR is not set
-CONFIG_DIGIEPCA=m
-CONFIG_MOXA_INTELLIO=m
-CONFIG_MOXA_SMARTIO=m
-CONFIG_ISI=m
-CONFIG_SYNCLINK=m
-CONFIG_SYNCLINKMP=m
-CONFIG_SYNCLINK_GT=m
-CONFIG_N_HDLC=m
-CONFIG_RISCOM8=m
-CONFIG_SPECIALIX=m
-CONFIG_SX=m
-CONFIG_RIO=m
-# CONFIG_RIO_OLDPCI is not set
-CONFIG_STALDRV=y
-CONFIG_STALLION=m
-CONFIG_ISTALLION=m
-CONFIG_NOZOMI=m
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_SERIAL_JSM=m
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-CONFIG_PRINTER=m
-CONFIG_LP_CONSOLE=y
-CONFIG_PPDEV=m
-CONFIG_HVC_DRIVER=y
-CONFIG_VIRTIO_CONSOLE=m
-CONFIG_IPMI_HANDLER=m
-# CONFIG_IPMI_PANIC_EVENT is not set
-CONFIG_IPMI_DEVICE_INTERFACE=m
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_INTEL=m
-CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_NVRAM=m
-CONFIG_R3964=m
-CONFIG_APPLICOM=m
-
-#
-# PCMCIA character devices
-#
-CONFIG_SYNCLINK_CS=m
-CONFIG_CARDMAN_4000=m
-CONFIG_CARDMAN_4040=m
-CONFIG_IPWIRELESS=m
-CONFIG_MWAVE=m
-CONFIG_PC8736x_GPIO=m
-CONFIG_NSC_GPIO=m
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HPET is not set
-CONFIG_HANGCHECK_TIMER=m
-CONFIG_TCG_TPM=m
-# CONFIG_TCG_TIS is not set
-# CONFIG_TCG_NSC is not set
-CONFIG_TCG_ATMEL=m
-# CONFIG_TCG_INFINEON is not set
-CONFIG_TELCLOCK=m
-CONFIG_DEVPORT=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_ALGOBIT=y
-CONFIG_I2C_ALGOPCA=m
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# PC SMBus host controller drivers
-#
-CONFIG_I2C_ALI1535=m
-CONFIG_I2C_ALI1563=m
-CONFIG_I2C_ALI15X3=m
-CONFIG_I2C_AMD756=m
-CONFIG_I2C_AMD756_S4882=m
-CONFIG_I2C_AMD8111=m
-CONFIG_I2C_I801=m
-CONFIG_I2C_ISCH=m
-CONFIG_I2C_PIIX4=m
-CONFIG_I2C_NFORCE2=m
-CONFIG_I2C_NFORCE2_S4985=m
-CONFIG_I2C_SIS5595=m
-CONFIG_I2C_SIS630=m
-CONFIG_I2C_SIS96X=m
-CONFIG_I2C_VIA=m
-CONFIG_I2C_VIAPRO=m
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-CONFIG_I2C_GPIO=m
-CONFIG_I2C_OCORES=m
-CONFIG_I2C_SIMTEC=m
-
-#
-# External I2C/SMBus adapter drivers
-#
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_TAOS_EVM=m
-CONFIG_I2C_TINY_USB=m
-
-#
-# Graphics adapter I2C/DDC channel drivers
-#
-CONFIG_I2C_VOODOO3=m
-
-#
-# Other I2C/SMBus bus drivers
-#
-CONFIG_I2C_PCA_PLATFORM=m
-CONFIG_I2C_STUB=m
-
-#
-# Miscellaneous I2C Chip support
-#
-CONFIG_DS1682=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_SENSORS_MAX6875=m
-CONFIG_SENSORS_TSL2550=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-# CONFIG_SPI is not set
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_SYSFS=y
-
-#
-# Memory mapped GPIO expanders:
-#
-
-#
-# I2C GPIO expanders:
-#
-CONFIG_GPIO_MAX732X=m
-CONFIG_GPIO_PCA953X=m
-CONFIG_GPIO_PCF857X=m
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-CONFIG_W1=m
-CONFIG_W1_CON=y
-
-#
-# 1-wire Bus Masters
-#
-CONFIG_W1_MASTER_MATROX=m
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-CONFIG_W1_MASTER_GPIO=m
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2431=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-CONFIG_W1_SLAVE_DS2760=m
-CONFIG_W1_SLAVE_BQ27000=m
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-CONFIG_PDA_POWER=m
-CONFIG_WM8350_POWER=m
-CONFIG_BATTERY_DS2760=m
-CONFIG_BATTERY_BQ27x00=m
-CONFIG_CHARGER_PCF50633=m
-CONFIG_HWMON=m
-CONFIG_HWMON_VID=m
-CONFIG_SENSORS_ABITUGURU=m
-CONFIG_SENSORS_ABITUGURU3=m
-CONFIG_SENSORS_AD7414=m
-CONFIG_SENSORS_AD7418=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1029=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ADM9240=m
-CONFIG_SENSORS_ADT7462=m
-CONFIG_SENSORS_ADT7470=m
-CONFIG_SENSORS_ADT7473=m
-CONFIG_SENSORS_ADT7475=m
-CONFIG_SENSORS_K8TEMP=m
-CONFIG_SENSORS_ASB100=m
-CONFIG_SENSORS_ATXP1=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_I5K_AMB=m
-CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_F71882FG=m
-CONFIG_SENSORS_F75375S=m
-CONFIG_SENSORS_FSCHER=m
-CONFIG_SENSORS_FSCPOS=m
-CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_CORETEMP=m
-CONFIG_SENSORS_IBMAEM=m
-CONFIG_SENSORS_IBMPEX=m
-CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_PC87427=m
-CONFIG_SENSORS_SIS5595=m
-CONFIG_SENSORS_DME1737=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_SMSC47M192=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_ADS7828=m
-CONFIG_SENSORS_THMC50=m
-CONFIG_SENSORS_VIA686A=m
-CONFIG_SENSORS_VT1211=m
-CONFIG_SENSORS_VT8231=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83791D=m
-CONFIG_SENSORS_W83792D=m
-CONFIG_SENSORS_W83793=m
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83L786NG=m
-CONFIG_SENSORS_W83627HF=m
-CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_HDAPS=m
-CONFIG_SENSORS_LIS3LV02D=m
-CONFIG_SENSORS_APPLESMC=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-CONFIG_THERMAL=m
-CONFIG_THERMAL_HWMON=y
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-CONFIG_SOFT_WATCHDOG=m
-CONFIG_WM8350_WATCHDOG=m
-CONFIG_ACQUIRE_WDT=m
-CONFIG_ADVANTECH_WDT=m
-CONFIG_ALIM1535_WDT=m
-CONFIG_ALIM7101_WDT=m
-CONFIG_SC520_WDT=m
-CONFIG_EUROTECH_WDT=m
-CONFIG_IB700_WDT=m
-CONFIG_IBMASR=m
-CONFIG_WAFER_WDT=m
-CONFIG_I6300ESB_WDT=m
-CONFIG_ITCO_WDT=m
-CONFIG_ITCO_VENDOR_SUPPORT=y
-CONFIG_IT8712F_WDT=m
-CONFIG_IT87_WDT=m
-CONFIG_HP_WATCHDOG=m
-CONFIG_SC1200_WDT=m
-CONFIG_PC87413_WDT=m
-CONFIG_60XX_WDT=m
-CONFIG_SBC8360_WDT=m
-CONFIG_CPU5_WDT=m
-CONFIG_SMSC_SCH311X_WDT=m
-CONFIG_SMSC37B787_WDT=m
-CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
-CONFIG_W83877F_WDT=m
-CONFIG_W83977F_WDT=m
-CONFIG_MACHZ_WDT=m
-CONFIG_SBC_EPX_C3_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
-
-#
-# USB-based Watchdog Cards
-#
-CONFIG_USBPCWATCHDOG=m
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB=m
-CONFIG_SSB_SPROM=y
-CONFIG_SSB_BLOCKIO=y
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-CONFIG_SSB_B43_PCI_BRIDGE=y
-CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
-CONFIG_SSB_PCMCIAHOST=y
-# CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_DRIVER_PCICORE=y
-
-#
-# Multifunction device drivers
-#
-CONFIG_MFD_CORE=m
-# CONFIG_MFD_SM501 is not set
-CONFIG_HTC_PASIC3=m
-CONFIG_UCB1400_CORE=m
-CONFIG_TPS65010=m
-# CONFIG_TWL4030_CORE is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_PMIC_DA903X is not set
-CONFIG_MFD_WM8400=m
-CONFIG_MFD_WM8350=m
-CONFIG_MFD_WM8350_I2C=m
-CONFIG_MFD_PCF50633=m
-CONFIG_PCF50633_ADC=m
-CONFIG_PCF50633_GPIO=m
-# CONFIG_REGULATOR is not set
-
-#
-# Multimedia devices
-#
-
-#
-# Multimedia core support
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
-CONFIG_VIDEO_ALLOW_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_DVB_CORE=m
-CONFIG_VIDEO_MEDIA=m
-
-#
-# Multimedia drivers
-#
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-CONFIG_MEDIA_TUNER_CUSTOMIZE=y
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_MT2060=m
-CONFIG_MEDIA_TUNER_MT2266=m
-CONFIG_MEDIA_TUNER_MT2131=m
-CONFIG_MEDIA_TUNER_QT1010=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_MXL5005S=m
-CONFIG_MEDIA_TUNER_MXL5007T=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEO_V4L1=m
-CONFIG_VIDEOBUF_GEN=m
-CONFIG_VIDEOBUF_DMA_SG=m
-CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DVB=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_IR=m
-CONFIG_VIDEO_TVEEPROM=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Encoders/decoders and other helper chips
-#
-
-#
-# Audio decoders
-#
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
-CONFIG_VIDEO_TDA9840=m
-CONFIG_VIDEO_TDA9875=m
-CONFIG_VIDEO_TEA6415C=m
-CONFIG_VIDEO_TEA6420=m
-CONFIG_VIDEO_MSP3400=m
-CONFIG_VIDEO_CS5345=m
-CONFIG_VIDEO_CS53L32A=m
-CONFIG_VIDEO_M52790=m
-CONFIG_VIDEO_TLV320AIC23B=m
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_WM8739=m
-CONFIG_VIDEO_VP27SMPX=m
-
-#
-# Video decoders
-#
-CONFIG_VIDEO_BT819=m
-CONFIG_VIDEO_BT856=m
-CONFIG_VIDEO_BT866=m
-CONFIG_VIDEO_KS0127=m
-CONFIG_VIDEO_OV7670=m
-CONFIG_VIDEO_TCM825X=m
-CONFIG_VIDEO_SAA7110=m
-CONFIG_VIDEO_SAA7111=m
-CONFIG_VIDEO_SAA7114=m
-CONFIG_VIDEO_SAA711X=m
-CONFIG_VIDEO_SAA717X=m
-CONFIG_VIDEO_SAA7191=m
-CONFIG_VIDEO_TVP514X=m
-CONFIG_VIDEO_TVP5150=m
-CONFIG_VIDEO_VPX3220=m
-
-#
-# Video and audio decoders
-#
-CONFIG_VIDEO_CX25840=m
-
-#
-# MPEG video encoders
-#
-CONFIG_VIDEO_CX2341X=m
-
-#
-# Video encoders
-#
-CONFIG_VIDEO_SAA7127=m
-CONFIG_VIDEO_SAA7185=m
-CONFIG_VIDEO_ADV7170=m
-CONFIG_VIDEO_ADV7175=m
-
-#
-# Video improvement chips
-#
-CONFIG_VIDEO_UPD64031A=m
-CONFIG_VIDEO_UPD64083=m
-CONFIG_VIDEO_VIVI=m
-CONFIG_VIDEO_BT848=m
-CONFIG_VIDEO_BT848_DVB=y
-CONFIG_VIDEO_SAA6588=m
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_W9966=m
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_PP=m
-CONFIG_VIDEO_CPIA_USB=m
-CONFIG_VIDEO_CPIA2=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_VIDEO_STRADIS=m
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_ZR36060=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_ZORAN_AVS6EYES=m
-CONFIG_VIDEO_MEYE=m
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_ALSA=m
-CONFIG_VIDEO_SAA7134_DVB=m
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-CONFIG_VIDEO_CX88_BLACKBIRD=m
-CONFIG_VIDEO_CX88_DVB=m
-CONFIG_VIDEO_CX88_MPEG=m
-CONFIG_VIDEO_CX88_VP3054=m
-CONFIG_VIDEO_CX23885=m
-CONFIG_VIDEO_AU0828=m
-CONFIG_VIDEO_IVTV=m
-CONFIG_VIDEO_FB_IVTV=m
-CONFIG_VIDEO_CX18=m
-CONFIG_VIDEO_CAFE_CCIC=m
-CONFIG_SOC_CAMERA=m
-CONFIG_SOC_CAMERA_MT9M001=m
-CONFIG_MT9M001_PCA9536_SWITCH=y
-CONFIG_SOC_CAMERA_MT9M111=m
-CONFIG_SOC_CAMERA_MT9T031=m
-CONFIG_SOC_CAMERA_MT9V022=m
-CONFIG_MT9V022_PCA9536_SWITCH=y
-CONFIG_SOC_CAMERA_TW9910=m
-CONFIG_SOC_CAMERA_PLATFORM=m
-CONFIG_SOC_CAMERA_OV772X=m
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=m
-CONFIG_USB_M5602=m
-CONFIG_USB_STV06XX=m
-CONFIG_USB_GSPCA_CONEX=m
-CONFIG_USB_GSPCA_ETOMS=m
-CONFIG_USB_GSPCA_FINEPIX=m
-CONFIG_USB_GSPCA_MARS=m
-CONFIG_USB_GSPCA_OV519=m
-CONFIG_USB_GSPCA_OV534=m
-CONFIG_USB_GSPCA_PAC207=m
-CONFIG_USB_GSPCA_PAC7311=m
-CONFIG_USB_GSPCA_SONIXB=m
-CONFIG_USB_GSPCA_SONIXJ=m
-CONFIG_USB_GSPCA_SPCA500=m
-CONFIG_USB_GSPCA_SPCA501=m
-CONFIG_USB_GSPCA_SPCA505=m
-CONFIG_USB_GSPCA_SPCA506=m
-CONFIG_USB_GSPCA_SPCA508=m
-CONFIG_USB_GSPCA_SPCA561=m
-CONFIG_USB_GSPCA_STK014=m
-CONFIG_USB_GSPCA_SUNPLUS=m
-CONFIG_USB_GSPCA_T613=m
-CONFIG_USB_GSPCA_TV8532=m
-CONFIG_USB_GSPCA_VC032X=m
-CONFIG_USB_GSPCA_ZC3XX=m
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-CONFIG_VIDEO_PVRUSB2_DVB=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-CONFIG_VIDEO_EM28XX=m
-CONFIG_VIDEO_EM28XX_ALSA=m
-CONFIG_VIDEO_EM28XX_DVB=m
-CONFIG_VIDEO_USBVISION=m
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_QUICKCAM_MESSENGER=m
-CONFIG_USB_ET61X251=m
-CONFIG_VIDEO_OVCAMCHIP=m
-CONFIG_USB_W9968CF=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-CONFIG_USB_ZC0301=m
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-CONFIG_USB_ZR364XX=m
-CONFIG_USB_STKWEBCAM=m
-CONFIG_USB_S2255=m
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_RADIO_GEMTEK_PCI=m
-CONFIG_RADIO_MAXIRADIO=m
-CONFIG_RADIO_MAESTRO=m
-CONFIG_USB_DSBR=m
-CONFIG_USB_SI470X=m
-CONFIG_USB_MR800=m
-CONFIG_RADIO_TEA5764=m
-# CONFIG_DVB_DYNAMIC_MINORS is not set
-CONFIG_DVB_CAPTURE_DRIVERS=y
-
-#
-# Supported SAA7146 based PCI Adapters
-#
-CONFIG_TTPCI_EEPROM=m
-CONFIG_DVB_AV7110=m
-CONFIG_DVB_AV7110_OSD=y
-CONFIG_DVB_BUDGET_CORE=m
-CONFIG_DVB_BUDGET=m
-CONFIG_DVB_BUDGET_CI=m
-CONFIG_DVB_BUDGET_AV=m
-CONFIG_DVB_BUDGET_PATCH=m
-
-#
-# Supported USB Adapters
-#
-CONFIG_DVB_USB=m
-# CONFIG_DVB_USB_DEBUG is not set
-CONFIG_DVB_USB_A800=m
-CONFIG_DVB_USB_DIBUSB_MB=m
-# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
-CONFIG_DVB_USB_DIBUSB_MC=m
-CONFIG_DVB_USB_DIB0700=m
-CONFIG_DVB_USB_UMT_010=m
-CONFIG_DVB_USB_CXUSB=m
-CONFIG_DVB_USB_M920X=m
-CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_AU6610=m
-CONFIG_DVB_USB_DIGITV=m
-CONFIG_DVB_USB_VP7045=m
-CONFIG_DVB_USB_VP702X=m
-CONFIG_DVB_USB_GP8PSK=m
-CONFIG_DVB_USB_NOVA_T_USB2=m
-CONFIG_DVB_USB_TTUSB2=m
-CONFIG_DVB_USB_DTT200U=m
-CONFIG_DVB_USB_OPERA1=m
-CONFIG_DVB_USB_AF9005=m
-CONFIG_DVB_USB_AF9005_REMOTE=m
-CONFIG_DVB_USB_DW2102=m
-CONFIG_DVB_USB_CINERGY_T2=m
-CONFIG_DVB_USB_ANYSEE=m
-CONFIG_DVB_USB_DTV5100=m
-CONFIG_DVB_USB_AF9015=m
-CONFIG_DVB_TTUSB_BUDGET=m
-CONFIG_DVB_TTUSB_DEC=m
-CONFIG_DVB_SIANO_SMS1XXX=m
-CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-CONFIG_DVB_B2C2_FLEXCOP=m
-CONFIG_DVB_B2C2_FLEXCOP_PCI=m
-CONFIG_DVB_B2C2_FLEXCOP_USB=m
-# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
-
-#
-# Supported BT878 Adapters
-#
-CONFIG_DVB_BT8XX=m
-
-#
-# Supported Pluto2 Adapters
-#
-CONFIG_DVB_PLUTO2=m
-
-#
-# Supported SDMC DM1105 Adapters
-#
-CONFIG_DVB_DM1105=m
-
-#
-# Supported FireWire (IEEE 1394) Adapters
-#
-CONFIG_DVB_FIREDTV=m
-CONFIG_DVB_FIREDTV_IEEE1394=y
-CONFIG_DVB_FIREDTV_INPUT=y
-
-#
-# Supported DVB Frontends
-#
-
-#
-# Customise DVB Frontends
-#
-CONFIG_DVB_FE_CUSTOMISE=y
-
-#
-# Multistandard (satellite) frontends
-#
-CONFIG_DVB_STB0899=m
-CONFIG_DVB_STB6100=m
-
-#
-# DVB-S (satellite) frontends
-#
-CONFIG_DVB_CX24110=m
-CONFIG_DVB_CX24123=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_S5H1420=m
-CONFIG_DVB_STV0288=m
-CONFIG_DVB_STB6000=m
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA10086=m
-CONFIG_DVB_TDA8261=m
-CONFIG_DVB_VES1X93=m
-CONFIG_DVB_TUNER_ITD1000=m
-CONFIG_DVB_TUNER_CX24113=m
-CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
-CONFIG_DVB_CX24116=m
-CONFIG_DVB_SI21XX=m
-
-#
-# DVB-T (terrestrial) frontends
-#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
-CONFIG_DVB_CX22700=m
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_DRX397XD=m
-CONFIG_DVB_L64781=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
-CONFIG_DVB_ZL10353=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-CONFIG_DVB_DIB7000M=m
-CONFIG_DVB_DIB7000P=m
-CONFIG_DVB_TDA10048=m
-
-#
-# DVB-C (cable) frontends
-#
-CONFIG_DVB_VES1820=m
-CONFIG_DVB_TDA10021=m
-CONFIG_DVB_TDA10023=m
-CONFIG_DVB_STV0297=m
-
-#
-# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
-#
-CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
-CONFIG_DVB_OR51132=m
-CONFIG_DVB_BCM3510=m
-CONFIG_DVB_LGDT330X=m
-CONFIG_DVB_LGDT3304=m
-CONFIG_DVB_S5H1409=m
-CONFIG_DVB_AU8522=m
-CONFIG_DVB_S5H1411=m
-
-#
-# ISDB-T (terrestrial) frontends
-#
-CONFIG_DVB_S921=m
-
-#
-# Digital terrestrial only tuners/PLL
-#
-CONFIG_DVB_PLL=m
-CONFIG_DVB_TUNER_DIB0070=m
-
-#
-# SEC control devices for DVB-S
-#
-CONFIG_DVB_LNBP21=m
-CONFIG_DVB_ISL6405=m
-CONFIG_DVB_ISL6421=m
-CONFIG_DVB_LGS8GL5=m
-
-#
-# Tools to develop new frontends
-#
-# CONFIG_DVB_DUMMY_FE is not set
-CONFIG_DVB_AF9013=m
-CONFIG_DAB=y
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-CONFIG_AGP=y
-CONFIG_AGP_AMD64=y
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_VIA=m
-CONFIG_DRM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_I810=m
-CONFIG_DRM_I830=m
-CONFIG_DRM_I915=m
-# CONFIG_DRM_I915_KMS is not set
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-CONFIG_FB_DDC=m
-CONFIG_FB_BOOT_VESA_SUPPORT=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=m
-CONFIG_FB_SYS_COPYAREA=m
-CONFIG_FB_SYS_IMAGEBLIT=m
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=m
-CONFIG_FB_DEFERRED_IO=y
-CONFIG_FB_HECUBA=m
-CONFIG_FB_SVGALIB=m
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_BACKLIGHT=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-CONFIG_FB_CIRRUS=m
-CONFIG_FB_PM2=m
-# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
-CONFIG_FB_CYBER2000=m
-CONFIG_FB_ARC=m
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=m
-# CONFIG_FB_UVESA is not set
-CONFIG_FB_VESA=y
-CONFIG_FB_N411=m
-CONFIG_FB_HGA=m
-# CONFIG_FB_HGA_ACCEL is not set
-CONFIG_FB_S1D13XXX=m
-CONFIG_FB_NVIDIA=m
-CONFIG_FB_NVIDIA_I2C=y
-# CONFIG_FB_NVIDIA_DEBUG is not set
-CONFIG_FB_NVIDIA_BACKLIGHT=y
-CONFIG_FB_RIVA=m
-CONFIG_FB_RIVA_I2C=y
-# CONFIG_FB_RIVA_DEBUG is not set
-CONFIG_FB_RIVA_BACKLIGHT=y
-CONFIG_FB_LE80578=m
-CONFIG_FB_CARILLO_RANCH=m
-CONFIG_FB_INTEL=m
-# CONFIG_FB_INTEL_DEBUG is not set
-CONFIG_FB_INTEL_I2C=y
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY128_BACKLIGHT=y
-CONFIG_FB_ATY=m
-CONFIG_FB_ATY_CT=y
-CONFIG_FB_ATY_GENERIC_LCD=y
-CONFIG_FB_ATY_GX=y
-CONFIG_FB_ATY_BACKLIGHT=y
-CONFIG_FB_S3=m
-CONFIG_FB_SAVAGE=m
-CONFIG_FB_SAVAGE_I2C=y
-CONFIG_FB_SAVAGE_ACCEL=y
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_VIA=m
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_3DFX=m
-# CONFIG_FB_3DFX_ACCEL is not set
-CONFIG_FB_VOODOO1=m
-CONFIG_FB_VT8623=m
-CONFIG_FB_TRIDENT=m
-# CONFIG_FB_TRIDENT_ACCEL is not set
-CONFIG_FB_ARK=m
-CONFIG_FB_PM3=m
-CONFIG_FB_CARMINE=m
-CONFIG_FB_CARMINE_DRAM_EVAL=y
-# CONFIG_CARMINE_DRAM_CUSTOM is not set
-CONFIG_FB_GEODE=y
-CONFIG_FB_GEODE_LX=m
-CONFIG_FB_GEODE_GX=m
-CONFIG_FB_GEODE_GX1=m
-CONFIG_FB_TMIO=m
-CONFIG_FB_TMIO_ACCELL=y
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FB_METRONOME=m
-CONFIG_FB_MB862XX=m
-CONFIG_FB_MB862XX_PCI_GDC=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-# CONFIG_LCD_ILI9320 is not set
-CONFIG_LCD_PLATFORM=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
-CONFIG_BACKLIGHT_PROGEAR=m
-CONFIG_BACKLIGHT_CARILLO_RANCH=m
-CONFIG_BACKLIGHT_MBP_NVIDIA=m
-CONFIG_BACKLIGHT_SAHARA=m
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=m
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-CONFIG_VGACON_SOFT_SCROLLBACK=y
-CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=m
-CONFIG_SOUND_OSS_CORE=y
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_JACK=y
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-CONFIG_SND_VMASTER=y
-CONFIG_SND_MPU401_UART=m
-CONFIG_SND_OPL3_LIB=m
-CONFIG_SND_VX_LIB=m
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_DRIVERS=y
-CONFIG_SND_DUMMY=m
-CONFIG_SND_VIRMIDI=m
-CONFIG_SND_MTPAV=m
-CONFIG_SND_MTS64=m
-CONFIG_SND_SERIAL_U16550=m
-CONFIG_SND_MPU401=m
-CONFIG_SND_PORTMAN2X4=m
-CONFIG_SND_AC97_POWER_SAVE=y
-CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
-CONFIG_SND_SB_COMMON=m
-CONFIG_SND_SB16_DSP=m
-CONFIG_SND_PCI=y
-CONFIG_SND_AD1889=m
-CONFIG_SND_ALS300=m
-CONFIG_SND_ALS4000=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ATIIXP=m
-CONFIG_SND_ATIIXP_MODEM=m
-CONFIG_SND_AU8810=m
-CONFIG_SND_AU8820=m
-CONFIG_SND_AU8830=m
-CONFIG_SND_AW2=m
-CONFIG_SND_AZT3328=m
-CONFIG_SND_BT87X=m
-# CONFIG_SND_BT87X_OVERCLOCK is not set
-CONFIG_SND_CA0106=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_OXYGEN_LIB=m
-CONFIG_SND_OXYGEN=m
-CONFIG_SND_CS4281=m
-CONFIG_SND_CS46XX=m
-CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_CS5530=m
-CONFIG_SND_DARLA20=m
-CONFIG_SND_GINA20=m
-CONFIG_SND_LAYLA20=m
-CONFIG_SND_DARLA24=m
-CONFIG_SND_GINA24=m
-CONFIG_SND_LAYLA24=m
-CONFIG_SND_MONA=m
-CONFIG_SND_MIA=m
-CONFIG_SND_ECHO3G=m
-CONFIG_SND_INDIGO=m
-CONFIG_SND_INDIGOIO=m
-CONFIG_SND_INDIGODJ=m
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_FM801_TEA575X=m
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_HWDEP=y
-# CONFIG_SND_HDA_RECONFIG is not set
-# CONFIG_SND_HDA_INPUT_BEEP is not set
-CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_CODEC_ANALOG=y
-CONFIG_SND_HDA_CODEC_SIGMATEL=y
-CONFIG_SND_HDA_CODEC_VIA=y
-CONFIG_SND_HDA_CODEC_ATIHDMI=y
-CONFIG_SND_HDA_CODEC_NVHDMI=y
-CONFIG_SND_HDA_CODEC_INTELHDMI=y
-CONFIG_SND_HDA_ELD=y
-CONFIG_SND_HDA_CODEC_CONEXANT=y
-CONFIG_SND_HDA_CODEC_CMEDIA=y
-CONFIG_SND_HDA_CODEC_SI3054=y
-CONFIG_SND_HDA_GENERIC=y
-# CONFIG_SND_HDA_POWER_SAVE is not set
-CONFIG_SND_HDSP=m
-CONFIG_SND_HDSPM=m
-CONFIG_SND_HIFIER=m
-CONFIG_SND_ICE1712=m
-CONFIG_SND_ICE1724=m
-CONFIG_SND_INTEL8X0=m
-CONFIG_SND_INTEL8X0M=m
-CONFIG_SND_KORG1212=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MIXART=m
-CONFIG_SND_NM256=m
-CONFIG_SND_PCXHR=m
-CONFIG_SND_RIPTIDE=m
-CONFIG_SND_RME32=m
-CONFIG_SND_RME96=m
-CONFIG_SND_RME9652=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-CONFIG_SND_VIRTUOSO=m
-CONFIG_SND_VX222=m
-CONFIG_SND_YMFPCI=m
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_USX2Y=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-CONFIG_SND_USB_US122L=m
-CONFIG_SND_PCMCIA=y
-CONFIG_SND_VXPOCKET=m
-CONFIG_SND_PDAUDIOCF=m
-# CONFIG_SND_SOC is not set
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-CONFIG_HIDRAW=y
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-CONFIG_HID_PID=y
-CONFIG_USB_HIDDEV=y
-
-#
-# Special HID drivers
-#
-CONFIG_HID_COMPAT=y
-CONFIG_HID_A4TECH=y
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-CONFIG_HID_CYPRESS=y
-CONFIG_HID_EZKEY=y
-CONFIG_HID_GYRATION=y
-CONFIG_HID_LOGITECH=y
-CONFIG_LOGITECH_FF=y
-CONFIG_LOGIRUMBLEPAD2_FF=y
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-CONFIG_HID_NTRIG=y
-CONFIG_HID_PANTHERLORD=y
-CONFIG_PANTHERLORD_FF=y
-CONFIG_HID_PETALYNX=y
-CONFIG_HID_SAMSUNG=y
-CONFIG_HID_SONY=y
-CONFIG_HID_SUNPLUS=y
-CONFIG_GREENASIA_FF=m
-CONFIG_HID_TOPSEED=y
-CONFIG_THRUSTMASTER_FF=m
-CONFIG_ZEROPLUS_FF=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-CONFIG_USB_MON=y
-CONFIG_USB_WUSB=m
-CONFIG_USB_WUSB_CBAF=m
-# CONFIG_USB_WUSB_CBAF_DEBUG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_C67X00_HCD=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_OXU210HP_HCD=y
-CONFIG_USB_ISP116X_HCD=y
-CONFIG_USB_ISP1760_HCD=y
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_U132_HCD=m
-CONFIG_USB_SL811_HCD=y
-CONFIG_USB_SL811_CS=m
-CONFIG_USB_R8A66597_HCD=y
-CONFIG_USB_WHCI_HCD=m
-CONFIG_USB_HWA_HCD=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_WDM=m
-CONFIG_USB_TMC=m
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
-#
-
-#
-# see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-CONFIG_USB_STORAGE_CYPRESS_ATACB=y
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB port drivers
-#
-CONFIG_USB_USS720=m
-CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_SAFE_PADDED=y
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_DEBUG=m
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_ADUTUX=m
-CONFIG_USB_SEVSEG=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_BERRY_CHARGE=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGET=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETMOTORCONTROL=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-CONFIG_USB_APPLEDISPLAY=m
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_IOWARRIOR=m
-CONFIG_USB_TEST=m
-CONFIG_USB_ISIGHTFW=m
-CONFIG_USB_VST=m
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
-# CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-CONFIG_USB_GPIO_VBUS=m
-CONFIG_UWB=m
-CONFIG_UWB_HWA=m
-CONFIG_UWB_WHCI=m
-CONFIG_UWB_WLP=m
-CONFIG_UWB_I1480U=m
-CONFIG_UWB_I1480U_WLP=m
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=m
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-CONFIG_MMC_SDHCI=m
-CONFIG_MMC_SDHCI_PCI=m
-CONFIG_MMC_RICOH_MMC=m
-CONFIG_MMC_WBSD=m
-CONFIG_MMC_TIFM_SD=m
-CONFIG_MMC_SDRICOH_CS=m
-CONFIG_MEMSTICK=m
-# CONFIG_MEMSTICK_DEBUG is not set
-
-#
-# MemoryStick drivers
-#
-# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
-CONFIG_MSPRO_BLOCK=m
-
-#
-# MemoryStick Host Controller Drivers
-#
-CONFIG_MEMSTICK_TIFM_MS=m
-CONFIG_MEMSTICK_JMICRON_38X=m
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
-
-#
-# LED drivers
-#
-CONFIG_LEDS_ALIX2=m
-CONFIG_LEDS_PCA9532=m
-CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_CLEVO_MAIL=m
-CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_WM8350=m
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
-CONFIG_LEDS_TRIGGER_BACKLIGHT=m
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
-CONFIG_ACCESSIBILITY=y
-CONFIG_A11Y_BRAILLE_CONSOLE=y
-
-#
-# Speakup console speech
-#
-CONFIG_SPEAKUP=y
-CONFIG_SPEAKUP_SYNTH_ACNTSA=y
-CONFIG_SPEAKUP_SYNTH_ACNTPC=y
-CONFIG_SPEAKUP_SYNTH_APOLLO=y
-CONFIG_SPEAKUP_SYNTH_AUDPTR=y
-CONFIG_SPEAKUP_SYNTH_BNS=y
-CONFIG_SPEAKUP_SYNTH_DECTLK=y
-CONFIG_SPEAKUP_SYNTH_DECEXT=y
-CONFIG_SPEAKUP_SYNTH_DECPC=m
-CONFIG_SPEAKUP_SYNTH_DTLK=y
-CONFIG_SPEAKUP_SYNTH_KEYPC=y
-CONFIG_SPEAKUP_SYNTH_LTLK=y
-CONFIG_SPEAKUP_SYNTH_SOFT=y
-CONFIG_SPEAKUP_SYNTH_SPKOUT=y
-CONFIG_SPEAKUP_SYNTH_TXPRT=y
-CONFIG_SPEAKUP_SYNTH_DUMMY=y
-CONFIG_INFINIBAND=m
-CONFIG_INFINIBAND_USER_MAD=m
-CONFIG_INFINIBAND_USER_ACCESS=m
-CONFIG_INFINIBAND_USER_MEM=y
-CONFIG_INFINIBAND_ADDR_TRANS=y
-CONFIG_INFINIBAND_MTHCA=m
-CONFIG_INFINIBAND_MTHCA_DEBUG=y
-CONFIG_INFINIBAND_IPATH=m
-CONFIG_INFINIBAND_AMSO1100=m
-# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
-# CONFIG_INFINIBAND_CXGB3 is not set
-CONFIG_MLX4_INFINIBAND=m
-CONFIG_INFINIBAND_NES=m
-# CONFIG_INFINIBAND_NES_DEBUG is not set
-CONFIG_INFINIBAND_IPOIB=m
-# CONFIG_INFINIBAND_IPOIB_CM is not set
-CONFIG_INFINIBAND_IPOIB_DEBUG=y
-# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
-CONFIG_INFINIBAND_SRP=m
-CONFIG_INFINIBAND_ISER=m
-# CONFIG_EDAC is not set
-CONFIG_RTC_LIB=m
-CONFIG_RTC_CLASS=m
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-CONFIG_RTC_INTF_DEV_UIE_EMUL=y
-CONFIG_RTC_DRV_TEST=m
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_MAX6900=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_M41T80=m
-CONFIG_RTC_DRV_M41T80_WDT=y
-CONFIG_RTC_DRV_S35390A=m
-CONFIG_RTC_DRV_FM3130=m
-CONFIG_RTC_DRV_RX8581=m
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-CONFIG_RTC_DRV_CMOS=m
-CONFIG_RTC_DRV_DS1286=m
-CONFIG_RTC_DRV_DS1511=m
-CONFIG_RTC_DRV_DS1553=m
-CONFIG_RTC_DRV_DS1742=m
-CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
-CONFIG_RTC_DRV_M48T35=m
-CONFIG_RTC_DRV_M48T59=m
-CONFIG_RTC_DRV_BQ4802=m
-CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_WM8350=m
-CONFIG_RTC_DRV_PCF50633=m
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_DMADEVICES=y
-
-#
-# DMA Devices
-#
-CONFIG_INTEL_IOATDMA=m
-CONFIG_DMA_ENGINE=y
-
-#
-# DMA Clients
-#
-CONFIG_NET_DMA=y
-CONFIG_DMATEST=m
-CONFIG_DCA=m
-CONFIG_AUXDISPLAY=y
-# CONFIG_KS0108 is not set
-CONFIG_UIO=m
-CONFIG_UIO_CIF=m
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
-CONFIG_UIO_SMX=m
-CONFIG_UIO_SERCOS3=m
-CONFIG_STAGING=y
-# CONFIG_STAGING_EXCLUDE_BUILD is not set
-# CONFIG_ET131X is not set
-# CONFIG_SLICOSS is not set
-# CONFIG_SXG is not set
-# CONFIG_ME4000 is not set
-# CONFIG_MEILHAUS is not set
-# CONFIG_VIDEO_GO7007 is not set
-# CONFIG_USB_IP_COMMON is not set
-# CONFIG_W35UND is not set
-# CONFIG_PRISM2_USB is not set
-# CONFIG_ECHO is not set
-# CONFIG_USB_ATMEL is not set
-# CONFIG_POCH is not set
-# CONFIG_AGNX is not set
-# CONFIG_OTUS is not set
-CONFIG_RT2860=m
-CONFIG_RT2870=m
-# CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
-# CONFIG_PANEL is not set
-# CONFIG_ALTERA_PCIE_CHDMA is not set
-CONFIG_RTL8187SE=m
-# CONFIG_INPUT_MIMIO is not set
-# CONFIG_TRANZPORT is not set
-
-#
-# Android
-#
-# CONFIG_ANDROID is not set
-# CONFIG_ANDROID_BINDER_IPC is not set
-# CONFIG_ANDROID_LOGGER is not set
-# CONFIG_ANDROID_RAM_CONSOLE is not set
-# CONFIG_ANDROID_TIMED_GPIO is not set
-# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set
-CONFIG_X86_PLATFORM_DEVICES=y
-CONFIG_ACER_WMI=m
-CONFIG_ASUS_LAPTOP=m
-CONFIG_FUJITSU_LAPTOP=m
-# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
-CONFIG_HP_WMI=m
-CONFIG_MSI_LAPTOP=m
-CONFIG_PANASONIC_LAPTOP=m
-CONFIG_COMPAL_LAPTOP=m
-CONFIG_SONY_LAPTOP=m
-CONFIG_SONYPI_COMPAT=y
-CONFIG_THINKPAD_ACPI=m
-# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
-# CONFIG_THINKPAD_ACPI_DEBUG is not set
-CONFIG_THINKPAD_ACPI_BAY=y
-CONFIG_THINKPAD_ACPI_VIDEO=y
-CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
-CONFIG_INTEL_MENLOW=m
-CONFIG_EEEPC_LAPTOP=m
-CONFIG_ACPI_WMI=m
-CONFIG_ACPI_ASUS=m
-CONFIG_ACPI_TOSHIBA=m
-
-#
-# Firmware Drivers
-#
-CONFIG_EDD=m
-# CONFIG_EDD_OFF is not set
-CONFIG_FIRMWARE_MEMMAP=y
-CONFIG_DELL_RBU=m
-CONFIG_DCDBAS=m
-CONFIG_DMIID=y
-CONFIG_ISCSI_IBFT_FIND=y
-CONFIG_ISCSI_IBFT=m
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-CONFIG_EXT4_FS=y
-# CONFIG_EXT4DEV_COMPAT is not set
-CONFIG_EXT4_FS_XATTR=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_JBD2=y
-# CONFIG_JBD2_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-CONFIG_REISERFS_FS=y
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-CONFIG_JFS_FS=y
-CONFIG_JFS_POSIX_ACL=y
-CONFIG_JFS_SECURITY=y
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_FILE_LOCKING=y
-CONFIG_XFS_FS=y
-CONFIG_XFS_QUOTA=y
-CONFIG_XFS_POSIX_ACL=y
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_DEBUG is not set
-CONFIG_GFS2_FS=y
-CONFIG_GFS2_FS_LOCKING_DLM=m
-CONFIG_OCFS2_FS=m
-CONFIG_OCFS2_FS_O2CB=m
-CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
-# CONFIG_OCFS2_FS_STATS is not set
-CONFIG_OCFS2_DEBUG_MASKLOG=y
-# CONFIG_OCFS2_DEBUG_FS is not set
-CONFIG_OCFS2_FS_POSIX_ACL=y
-CONFIG_BTRFS_FS=m
-CONFIG_BTRFS_FS_POSIX_ACL=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_QUOTA=y
-CONFIG_QUOTA_NETLINK_INTERFACE=y
-# CONFIG_PRINT_QUOTA_WARNING is not set
-CONFIG_QUOTA_TREE=m
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
-CONFIG_QUOTACTL=y
-CONFIG_AUTOFS_FS=m
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-CONFIG_GENERIC_ACL=y
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=y
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-CONFIG_NTFS_FS=y
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_CONFIGFS_FS=y
-CONFIG_MISC_FILESYSTEMS=y
-CONFIG_ADFS_FS=m
-# CONFIG_ADFS_FS_RW is not set
-CONFIG_AFFS_FS=m
-# CONFIG_ECRYPT_FS is not set
-CONFIG_HFS_FS=m
-CONFIG_HFSPLUS_FS=m
-CONFIG_BEFS_FS=m
-# CONFIG_BEFS_DEBUG is not set
-CONFIG_BFS_FS=m
-CONFIG_EFS_FS=m
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_UBIFS_FS=m
-CONFIG_UBIFS_FS_XATTR=y
-CONFIG_UBIFS_FS_ADVANCED_COMPR=y
-CONFIG_UBIFS_FS_LZO=y
-CONFIG_UBIFS_FS_ZLIB=y
-# CONFIG_UBIFS_FS_DEBUG is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-CONFIG_SQUASHFS_EMBEDDED=y
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-CONFIG_VXFS_FS=m
-CONFIG_MINIX_FS=m
-CONFIG_OMFS_FS=m
-CONFIG_HPFS_FS=m
-CONFIG_QNX4FS_FS=m
-CONFIG_ROMFS_FS=y
-CONFIG_SYSV_FS=m
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_UFS_DEBUG is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=m
-CONFIG_SUNRPC_XPRT_RDMA=m
-# CONFIG_SUNRPC_REGISTER_V4 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-CONFIG_RPCSEC_GSS_SPKM3=m
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_WEAK_PW_HASH=y
-# CONFIG_CIFS_UPCALL is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-CONFIG_NCP_FS=m
-CONFIG_NCPFS_PACKET_SIGNING=y
-CONFIG_NCPFS_IOCTL_LOCKING=y
-CONFIG_NCPFS_STRONG=y
-CONFIG_NCPFS_NFS_NS=y
-CONFIG_NCPFS_OS2_NS=y
-CONFIG_NCPFS_SMALLDOS=y
-CONFIG_NCPFS_NLS=y
-CONFIG_NCPFS_EXTRAS=y
-CONFIG_CODA_FS=m
-CONFIG_AFS_FS=m
-# CONFIG_AFS_DEBUG is not set
-CONFIG_9P_FS=m
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-CONFIG_SOLARIS_X86_PARTITION=y
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_KARMA_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-CONFIG_DLM=m
-# CONFIG_DLM_DEBUG is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=0
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_UNUSED_SYMBOLS=y
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-CONFIG_STACKTRACE=y
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_MEMORY_INIT=y
-CONFIG_ARCH_WANT_FRAME_POINTERS=y
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-CONFIG_USER_STACKTRACE_SUPPORT=y
-CONFIG_NOP_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_RING_BUFFER=y
-CONFIG_TRACING=y
-
-#
-# Tracers
-#
-CONFIG_SYSPROF_TRACER=y
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-CONFIG_STRICT_DEVMEM=y
-CONFIG_X86_VERBOSE_BOOTUP=y
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EARLY_PRINTK_DBGP is not set
-CONFIG_HAVE_MMIOTRACE_SUPPORT=y
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-# CONFIG_OPTIMIZE_INLINING is not set
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
-CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
-CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_NETWORK_XFRM=y
-# CONFIG_SECURITY_PATH is not set
-CONFIG_SECURITY_FILE_CAPABILITIES=y
-# CONFIG_SECURITY_ROOTPLUG is not set
-CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_XOR_BLOCKS=y
-CONFIG_ASYNC_CORE=y
-CONFIG_ASYNC_MEMCPY=y
-CONFIG_ASYNC_XOR=y
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_FIPS=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=y
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=m
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-CONFIG_CRYPTO_GF128MUL=y
-CONFIG_CRYPTO_NULL=y
-CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_AUTHENC=y
-CONFIG_CRYPTO_TEST=m
-
-#
-# Authenticated Encryption with Associated Data
-#
-CONFIG_CRYPTO_CCM=m
-CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=m
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_CTR=m
-CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_LRW=y
-CONFIG_CRYPTO_PCBC=y
-CONFIG_CRYPTO_XTS=y
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=y
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_CRC32C_INTEL=m
-CONFIG_CRYPTO_MD4=y
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_MICHAEL_MIC=y
-CONFIG_CRYPTO_RMD128=m
-CONFIG_CRYPTO_RMD160=m
-CONFIG_CRYPTO_RMD256=m
-CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256=y
-CONFIG_CRYPTO_SHA512=y
-CONFIG_CRYPTO_TGR192=y
-CONFIG_CRYPTO_WP512=y
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_AES_X86_64=y
-CONFIG_CRYPTO_ANUBIS=y
-CONFIG_CRYPTO_ARC4=y
-CONFIG_CRYPTO_BLOWFISH=y
-CONFIG_CRYPTO_CAMELLIA=y
-CONFIG_CRYPTO_CAST5=y
-CONFIG_CRYPTO_CAST6=y
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=y
-CONFIG_CRYPTO_KHAZAD=y
-CONFIG_CRYPTO_SALSA20=m
-CONFIG_CRYPTO_SALSA20_X86_64=m
-CONFIG_CRYPTO_SEED=y
-CONFIG_CRYPTO_SERPENT=y
-CONFIG_CRYPTO_TEA=y
-CONFIG_CRYPTO_TWOFISH=y
-CONFIG_CRYPTO_TWOFISH_COMMON=y
-CONFIG_CRYPTO_TWOFISH_X86_64=y
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_LZO=m
-
-#
-# Random Number Generation
-#
-CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_HIFN_795X=m
-CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
-CONFIG_HAVE_KVM=y
-CONFIG_HAVE_KVM_IRQCHIP=y
-CONFIG_VIRTUALIZATION=y
-CONFIG_KVM=m
-CONFIG_KVM_INTEL=m
-CONFIG_KVM_AMD=m
-# CONFIG_KVM_TRACE is not set
-CONFIG_VIRTIO=m
-CONFIG_VIRTIO_RING=m
-CONFIG_VIRTIO_PCI=m
-CONFIG_VIRTIO_BALLOON=m
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_FIND_LAST_BIT=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=m
-CONFIG_CRC_ITU_T=y
-CONFIG_CRC32=y
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=m
-CONFIG_LZO_DECOMPRESS=m
-CONFIG_REED_SOLOMON=m
-CONFIG_REED_SOLOMON_DEC16=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_CHECK_SIGNATURE=y
diff --git a/source/k/config-speakup-2.6.33.4 b/source/k/config-speakup-2.6.33.4
new file mode 100644
index 000000000..b241c4dfa
--- /dev/null
+++ b/source/k/config-speakup-2.6.33.4
@@ -0,0 +1,4718 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.33.4
+# Wed May 12 23:14:51 2010
+#
+CONFIG_64BIT=y
+# CONFIG_X86_32 is not set
+CONFIG_X86_64=y
+CONFIG_X86=y
+CONFIG_OUTPUT_FORMAT="elf64-x86-64"
+CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_MMU=y
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_ARCH_HAS_CPU_RELAX=y
+CONFIG_ARCH_HAS_DEFAULT_IDLE=y
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
+CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
+CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
+CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ZONE_DMA32=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_X86_64_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_TRAMPOLINE=y
+# CONFIG_KTIME_SCALAR is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_BZIP2=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_LZO=y
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_BZIP2 is not set
+CONFIG_KERNEL_LZMA=y
+# CONFIG_KERNEL_LZO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_TREE=y
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_TREE_PREEMPT_RCU is not set
+# CONFIG_TINY_RCU is not set
+# CONFIG_RCU_TRACE is not set
+CONFIG_RCU_FANOUT=32
+# CONFIG_RCU_FANOUT_EXACT is not set
+# CONFIG_TREE_RCU_TRACE is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=15
+CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
+# CONFIG_GROUP_SCHED is not set
+# CONFIG_CGROUPS is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+CONFIG_RELAY=y
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+CONFIG_NET_NS=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_LZO=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_PCSPKR_PLATFORM=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_HAVE_PERF_EVENTS=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+CONFIG_EVENT_PROFILE=y
+# CONFIG_PERF_COUNTERS is not set
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+CONFIG_OPROFILE=m
+# CONFIG_OPROFILE_IBS is not set
+# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_USER_RETURN_NOTIFIER=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_USER_RETURN_NOTIFIER=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_SLOW_WORK=y
+# CONFIG_SLOW_WORK_DEBUG is not set
+# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_STOP_MACHINE=y
+CONFIG_BLOCK=y
+CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_INTEGRITY is not set
+CONFIG_BLOCK_COMPAT=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_PREEMPT_NOTIFIERS=y
+# CONFIG_INLINE_SPIN_TRYLOCK is not set
+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK is not set
+# CONFIG_INLINE_SPIN_LOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
+CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_READ_TRYLOCK is not set
+# CONFIG_INLINE_READ_LOCK is not set
+# CONFIG_INLINE_READ_LOCK_BH is not set
+# CONFIG_INLINE_READ_LOCK_IRQ is not set
+# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
+CONFIG_INLINE_READ_UNLOCK=y
+# CONFIG_INLINE_READ_UNLOCK_BH is not set
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_WRITE_TRYLOCK is not set
+# CONFIG_INLINE_WRITE_LOCK is not set
+# CONFIG_INLINE_WRITE_LOCK_BH is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
+CONFIG_INLINE_WRITE_UNLOCK=y
+# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_FREEZER=y
+
+#
+# Processor type and features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_SMP=y
+# CONFIG_SPARSE_IRQ is not set
+CONFIG_X86_MPPARSE=y
+# CONFIG_X86_EXTENDED_PLATFORM is not set
+CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+# CONFIG_PARAVIRT_GUEST is not set
+CONFIG_MEMTEST=y
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MATOM is not set
+CONFIG_GENERIC_CPU=y
+CONFIG_X86_CPU=y
+CONFIG_X86_INTERNODE_CACHE_SHIFT=6
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_XADD=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_TSC=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=64
+CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_CENTAUR=y
+# CONFIG_X86_DS is not set
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+CONFIG_DMI=y
+CONFIG_GART_IOMMU=y
+# CONFIG_CALGARY_IOMMU is not set
+# CONFIG_AMD_IOMMU is not set
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
+# CONFIG_IOMMU_API is not set
+# CONFIG_MAXSMP is not set
+CONFIG_NR_CPUS=32
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_VOLUNTARY=y
+# CONFIG_PREEMPT is not set
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+CONFIG_X86_MCE_THRESHOLD=y
+CONFIG_X86_MCE_INJECT=m
+CONFIG_X86_THERMAL_VECTOR=y
+CONFIG_I8K=m
+CONFIG_MICROCODE=m
+CONFIG_MICROCODE_INTEL=y
+CONFIG_MICROCODE_AMD=y
+CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_X86_MSR=m
+CONFIG_X86_CPUID=m
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
+CONFIG_DIRECT_GBPAGES=y
+# CONFIG_NUMA is not set
+CONFIG_ARCH_PROC_KCORE_TEXT=y
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_MEMORY_PROBE=y
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_HAVE_MEMORY_PRESENT=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_MEMORY_HOTPLUG=y
+CONFIG_MEMORY_HOTPLUG_SPARSE=y
+CONFIG_MEMORY_HOTREMOVE=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_MIGRATION=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_MMU_NOTIFIER=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
+# CONFIG_MEMORY_FAILURE is not set
+# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
+CONFIG_X86_RESERVE_LOW_64K=y
+CONFIG_MTRR=y
+CONFIG_MTRR_SANITIZER=y
+CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
+CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
+CONFIG_X86_PAT=y
+CONFIG_ARCH_USES_PG_UNCACHED=y
+CONFIG_EFI=y
+CONFIG_SECCOMP=y
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
+CONFIG_SCHED_HRTICK=y
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+CONFIG_PHYSICAL_START=0x1000000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x1000000
+CONFIG_HOTPLUG_CPU=y
+CONFIG_COMPAT_VDSO=y
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
+
+#
+# Power management and ACPI options
+#
+CONFIG_ARCH_HIBERNATION_HEADER=y
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_HIBERNATION_NVS=y
+CONFIG_HIBERNATION=y
+CONFIG_PM_STD_PARTITION="\"\""
+CONFIG_PM_RUNTIME=y
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_PROCFS=y
+CONFIG_ACPI_PROCFS_POWER=y
+CONFIG_ACPI_POWER_METER=m
+CONFIG_ACPI_SYSFS_POWER=y
+CONFIG_ACPI_PROC_EVENT=y
+CONFIG_ACPI_AC=m
+CONFIG_ACPI_BATTERY=m
+CONFIG_ACPI_BUTTON=m
+CONFIG_ACPI_VIDEO=m
+CONFIG_ACPI_FAN=m
+CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
+CONFIG_ACPI_THERMAL=m
+# CONFIG_ACPI_CUSTOM_DSDT is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_PCI_SLOT=m
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=m
+CONFIG_ACPI_HOTPLUG_MEMORY=m
+CONFIG_ACPI_SBS=m
+CONFIG_SFI=y
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=m
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=m
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=m
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+
+#
+# CPUFreq processor drivers
+#
+CONFIG_X86_ACPI_CPUFREQ=m
+CONFIG_X86_POWERNOW_K8=m
+CONFIG_X86_SPEEDSTEP_CENTRINO=m
+CONFIG_X86_P4_CLOCKMOD=m
+
+#
+# shared options
+#
+CONFIG_X86_SPEEDSTEP_LIB=m
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+
+#
+# Memory power savings
+#
+CONFIG_I7300_IDLE_IOAT_CHANNEL=y
+CONFIG_I7300_IDLE=m
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_DMAR is not set
+# CONFIG_INTR_REMAP is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=m
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ECRC is not set
+CONFIG_PCIEAER_INJECT=m
+# CONFIG_PCIEASPM is not set
+CONFIG_ARCH_SUPPORTS_MSI=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCI_DEBUG is not set
+CONFIG_PCI_STUB=m
+CONFIG_HT_IRQ=y
+# CONFIG_PCI_IOV is not set
+CONFIG_PCI_IOAPIC=y
+CONFIG_ISA_DMA_API=y
+CONFIG_K8_NB=y
+CONFIG_PCCARD=m
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+CONFIG_PD6729=m
+CONFIG_I82092=m
+CONFIG_PCCARD_NONSTATIC=m
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_FAKE=m
+CONFIG_HOTPLUG_PCI_ACPI=m
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+CONFIG_HOTPLUG_PCI_SHPC=m
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_COMPAT_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+# CONFIG_HAVE_AOUT is not set
+CONFIG_BINFMT_MISC=m
+CONFIG_IA32_EMULATION=y
+# CONFIG_IA32_AOUT is not set
+CONFIG_COMPAT=y
+CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
+CONFIG_SYSVIPC_COMPAT=y
+CONFIG_NET=y
+CONFIG_COMPAT_NETLINK_MESSAGES=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=y
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_IPCOMP=m
+CONFIG_NET_KEY=m
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_LRO=y
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_SIT_6RD is not set
+CONFIG_IPV6_NDISC_NODETYPE=y
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETLABEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+CONFIG_NF_CT_PROTO_DCCP=m
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_IP_VS=m
+# CONFIG_IP_VS_IPV6 is not set
+# CONFIG_IP_VS_DEBUG is not set
+CONFIG_IP_VS_TAB_BITS=12
+
+#
+# IPVS transport protocol load balancing support
+#
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_PROTO_AH_ESP=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_AH=y
+
+#
+# IPVS scheduler
+#
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_NQ=m
+
+#
+# IPVS application helper
+#
+CONFIG_IP_VS_FTP=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+
+#
+# DECnet: Netfilter Configuration
+#
+# CONFIG_DECNET_NF_GRABULATOR is not set
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_IP6=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+CONFIG_BRIDGE_EBT_NFLOG=m
+CONFIG_IP_DCCP=m
+CONFIG_INET_DCCP_DIAG=m
+
+#
+# DCCP CCIDs Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP_CCID2_DEBUG is not set
+# CONFIG_IP_DCCP_CCID3 is not set
+
+#
+# DCCP Kernel Hacking
+#
+# CONFIG_IP_DCCP_DEBUG is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_HMAC_NONE is not set
+# CONFIG_SCTP_HMAC_SHA1 is not set
+CONFIG_SCTP_HMAC_MD5=y
+CONFIG_RDS=m
+CONFIG_RDS_RDMA=m
+CONFIG_RDS_TCP=m
+# CONFIG_RDS_DEBUG is not set
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_STP=m
+CONFIG_GARP=m
+CONFIG_BRIDGE=m
+# CONFIG_NET_DSA is not set
+CONFIG_VLAN_8021Q=m
+CONFIG_VLAN_8021Q_GVRP=y
+CONFIG_DECNET=m
+# CONFIG_DECNET_ROUTER is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+CONFIG_WAN_ROUTER=m
+CONFIG_PHONET=m
+CONFIG_IEEE802154=m
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+# CONFIG_CLS_U32_PERF is not set
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=y
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_DROP_MONITOR is not set
+CONFIG_HAMRADIO=y
+
+#
+# Packet Radio protocols
+#
+CONFIG_AX25=m
+# CONFIG_AX25_DAMA_SLAVE is not set
+CONFIG_NETROM=m
+CONFIG_ROSE=m
+
+#
+# AX.25 network device drivers
+#
+CONFIG_MKISS=m
+CONFIG_6PACK=m
+CONFIG_BPQETHER=m
+CONFIG_BAYCOM_SER_FDX=m
+CONFIG_BAYCOM_SER_HDX=m
+CONFIG_BAYCOM_PAR=m
+CONFIG_YAM=m
+CONFIG_CAN=m
+CONFIG_CAN_RAW=m
+CONFIG_CAN_BCM=m
+
+#
+# CAN Device Drivers
+#
+CONFIG_CAN_VCAN=m
+CONFIG_CAN_DEV=m
+# CONFIG_CAN_CALC_BITTIMING is not set
+CONFIG_CAN_SJA1000=m
+CONFIG_CAN_SJA1000_PLATFORM=m
+CONFIG_CAN_EMS_PCI=m
+CONFIG_CAN_KVASER_PCI=m
+
+#
+# CAN USB interfaces
+#
+CONFIG_CAN_EMS_USB=m
+# CONFIG_CAN_DEBUG_DEVICES is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+CONFIG_DONGLE=y
+CONFIG_ESI_DONGLE=m
+CONFIG_ACTISYS_DONGLE=m
+CONFIG_TEKRAM_DONGLE=m
+CONFIG_TOIM3232_DONGLE=m
+CONFIG_LITELINK_DONGLE=m
+CONFIG_MA600_DONGLE=m
+CONFIG_GIRBIL_DONGLE=m
+CONFIG_MCP2120_DONGLE=m
+CONFIG_OLD_BELKIN_DONGLE=m
+CONFIG_ACT200L_DONGLE=m
+CONFIG_KINGSUN_DONGLE=m
+CONFIG_KSDAZZLE_DONGLE=m
+CONFIG_KS959_DONGLE=m
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+CONFIG_NSC_FIR=m
+CONFIG_WINBOND_FIR=m
+CONFIG_SMC_IRCC_FIR=m
+CONFIG_ALI_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_VIA_FIR=m
+CONFIG_MCS_FIR=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_BT_MRVL=m
+CONFIG_BT_MRVL_SDIO=m
+CONFIG_BT_ATH3K=m
+CONFIG_AF_RXRPC=m
+# CONFIG_AF_RXRPC_DEBUG is not set
+CONFIG_RXKAD=m
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WEXT_CORE=y
+CONFIG_WEXT_PROC=y
+CONFIG_WEXT_SPY=y
+CONFIG_WEXT_PRIV=y
+CONFIG_CFG80211=m
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+# CONFIG_CFG80211_REG_DEBUG is not set
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEBUGFS is not set
+CONFIG_WIRELESS_OLD_REGULATORY=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_LIB80211=m
+CONFIG_LIB80211_CRYPT_WEP=m
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=m
+CONFIG_MAC80211_RC_MINSTREL=y
+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel"
+CONFIG_MAC80211_MESH=y
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_WIMAX=m
+CONFIG_WIMAX_DEBUG_LEVEL=8
+CONFIG_RFKILL=m
+CONFIG_RFKILL_LEDS=y
+CONFIG_RFKILL_INPUT=y
+CONFIG_NET_9P=m
+CONFIG_NET_9P_VIRTIO=m
+CONFIG_NET_9P_RDMA=m
+# CONFIG_NET_9P_DEBUG is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=m
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_TESTS=m
+CONFIG_MTD_CONCAT=m
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=m
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+CONFIG_MTD_AR7_PARTS=m
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_HAVE_MTD_OTP=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+CONFIG_MTD_BLOCK_RO=m
+CONFIG_FTL=m
+CONFIG_NFTL=m
+CONFIG_NFTL_RW=y
+CONFIG_INFTL=m
+CONFIG_RFD_FTL=m
+CONFIG_SSFDC=m
+CONFIG_MTD_OOPS=m
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=m
+CONFIG_MTD_JEDECPROBE=m
+CONFIG_MTD_GEN_PROBE=m
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+CONFIG_MTD_MAP_BANK_WIDTH_8=y
+CONFIG_MTD_MAP_BANK_WIDTH_16=y
+CONFIG_MTD_MAP_BANK_WIDTH_32=y
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+CONFIG_MTD_CFI_I4=y
+CONFIG_MTD_CFI_I8=y
+CONFIG_MTD_OTP=y
+CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
+CONFIG_MTD_CFI_UTIL=m
+CONFIG_MTD_RAM=m
+CONFIG_MTD_ROM=m
+CONFIG_MTD_ABSENT=m
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_PHYSMAP=m
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
+CONFIG_MTD_SC520CDP=m
+CONFIG_MTD_NETSC520=m
+CONFIG_MTD_TS5500=m
+CONFIG_MTD_SBC_GXX=m
+CONFIG_MTD_AMD76XROM=m
+CONFIG_MTD_ICHXROM=m
+CONFIG_MTD_ESB2ROM=m
+CONFIG_MTD_CK804XROM=m
+CONFIG_MTD_SCB2_FLASH=m
+CONFIG_MTD_NETtel=m
+CONFIG_MTD_L440GX=m
+CONFIG_MTD_PCI=m
+CONFIG_MTD_GPIO_ADDR=m
+CONFIG_MTD_INTEL_VR_NOR=m
+CONFIG_MTD_PLATRAM=m
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_PMC551=m
+CONFIG_MTD_PMC551_BUGFIX=y
+# CONFIG_MTD_PMC551_DEBUG is not set
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_PHRAM=m
+CONFIG_MTD_MTDRAM=m
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTDRAM_ERASE_SIZE=128
+CONFIG_MTD_BLOCK2MTD=m
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+CONFIG_MTD_DOC2001PLUS=m
+CONFIG_MTD_DOCPROBE=m
+CONFIG_MTD_DOCECC=m
+CONFIG_MTD_DOCPROBE_ADVANCED=y
+CONFIG_MTD_DOCPROBE_ADDRESS=0x0000
+CONFIG_MTD_DOCPROBE_HIGH=y
+CONFIG_MTD_DOCPROBE_55AA=y
+CONFIG_MTD_NAND=m
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+CONFIG_MTD_NAND_ECC_SMC=y
+CONFIG_MTD_NAND_MUSEUM_IDS=y
+CONFIG_MTD_NAND_IDS=m
+CONFIG_MTD_NAND_DISKONCHIP=m
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y
+CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y
+CONFIG_MTD_NAND_CAFE=m
+CONFIG_MTD_NAND_NANDSIM=m
+CONFIG_MTD_NAND_PLATFORM=m
+CONFIG_MTD_ALAUDA=m
+CONFIG_MTD_ONENAND=m
+CONFIG_MTD_ONENAND_VERIFY_WRITE=y
+CONFIG_MTD_ONENAND_GENERIC=m
+CONFIG_MTD_ONENAND_OTP=y
+CONFIG_MTD_ONENAND_2X_PROGRAM=y
+CONFIG_MTD_ONENAND_SIM=m
+
+#
+# LPDDR flash memory drivers
+#
+CONFIG_MTD_LPDDR=m
+CONFIG_MTD_QINFO_PROBE=m
+
+#
+# UBI - Unsorted block images
+#
+CONFIG_MTD_UBI=m
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_RESERVE=1
+CONFIG_MTD_UBI_GLUEBI=m
+
+#
+# UBI debugging options
+#
+# CONFIG_MTD_UBI_DEBUG is not set
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+CONFIG_PARPORT_SERIAL=m
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+CONFIG_PARPORT_PC_PCMCIA=m
+# CONFIG_PARPORT_GSC is not set
+CONFIG_PARPORT_AX88796=m
+CONFIG_PARPORT_1284=y
+CONFIG_PARPORT_NOT_PC=y
+CONFIG_PNP=y
+CONFIG_PNP_DEBUG_MESSAGES=y
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_FD=y
+CONFIG_PARIDE=m
+
+#
+# Parallel IDE high-level drivers
+#
+CONFIG_PARIDE_PD=m
+CONFIG_PARIDE_PCD=m
+CONFIG_PARIDE_PF=m
+CONFIG_PARIDE_PT=m
+CONFIG_PARIDE_PG=m
+
+#
+# Parallel IDE protocol modules
+#
+CONFIG_PARIDE_ATEN=m
+CONFIG_PARIDE_BPCK=m
+CONFIG_PARIDE_COMM=m
+CONFIG_PARIDE_DSTR=m
+CONFIG_PARIDE_FIT2=m
+CONFIG_PARIDE_FIT3=m
+CONFIG_PARIDE_EPAT=m
+CONFIG_PARIDE_EPATC8=y
+CONFIG_PARIDE_EPIA=m
+CONFIG_PARIDE_FRIQ=m
+CONFIG_PARIDE_FRPW=m
+CONFIG_PARIDE_KBIC=m
+CONFIG_PARIDE_KTTI=m
+CONFIG_PARIDE_ON20=m
+CONFIG_PARIDE_ON26=m
+CONFIG_BLK_CPQ_DA=y
+CONFIG_BLK_CPQ_CISS_DA=y
+CONFIG_CISS_SCSI_TAPE=y
+CONFIG_BLK_DEV_DAC960=y
+CONFIG_BLK_DEV_UMEM=m
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_DRBD=m
+# CONFIG_DRBD_FAULT_INJECTION is not set
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_OSD=m
+CONFIG_BLK_DEV_SX8=y
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+CONFIG_VIRTIO_BLK=m
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_MISC_DEVICES=y
+CONFIG_AD525X_DPOT=m
+CONFIG_IBM_ASM=m
+CONFIG_PHANTOM=m
+CONFIG_SGI_IOC4=m
+CONFIG_TIFM_CORE=m
+CONFIG_TIFM_7XX1=m
+CONFIG_ICS932S401=m
+CONFIG_ENCLOSURE_SERVICES=m
+CONFIG_CS5535_MFGPT=m
+CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
+CONFIG_HP_ILO=m
+CONFIG_ISL29003=m
+CONFIG_DS1682=m
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+CONFIG_EEPROM_AT24=m
+CONFIG_EEPROM_LEGACY=m
+CONFIG_EEPROM_MAX6875=m
+CONFIG_EEPROM_93CX6=m
+CONFIG_CB710_CORE=m
+# CONFIG_CB710_DEBUG is not set
+CONFIG_CB710_DEBUG_ASSUMPTIONS=y
+CONFIG_IWMC3200TOP=m
+# CONFIG_IWMC3200TOP_DEBUG is not set
+# CONFIG_IWMC3200TOP_DEBUGFS is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+CONFIG_RAID_ATTRS=y
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+CONFIG_SCSI_TGT=y
+CONFIG_SCSI_NETLINK=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=y
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SCH=m
+CONFIG_SCSI_ENCLOSURE=m
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=y
+CONFIG_SCSI_FC_ATTRS=y
+CONFIG_SCSI_FC_TGT_ATTRS=y
+CONFIG_SCSI_ISCSI_ATTRS=y
+CONFIG_SCSI_SAS_ATTRS=y
+CONFIG_SCSI_SAS_LIBSAS=y
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_SCSI_SAS_HOST_SMP=y
+# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
+CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_SRP_TGT_ATTRS=y
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_BE2ISCSI=m
+CONFIG_BLK_DEV_3W_XXXX_RAID=y
+CONFIG_SCSI_HPSA=y
+CONFIG_SCSI_3W_9XXX=y
+CONFIG_SCSI_3W_SAS=y
+CONFIG_SCSI_ACARD=y
+CONFIG_SCSI_AACRAID=y
+CONFIG_SCSI_AIC7XXX=y
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_AIC7XXX_OLD=y
+CONFIG_SCSI_AIC79XX=y
+CONFIG_AIC79XX_CMDS_PER_DEVICE=4
+CONFIG_AIC79XX_RESET_DELAY_MS=15000
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_AIC94XX=y
+# CONFIG_AIC94XX_DEBUG is not set
+CONFIG_SCSI_MVSAS=y
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_DPT_I2O=m
+CONFIG_SCSI_ADVANSYS=y
+CONFIG_SCSI_ARCMSR=y
+# CONFIG_SCSI_ARCMSR_AER is not set
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=y
+CONFIG_MEGARAID_MAILBOX=y
+CONFIG_MEGARAID_LEGACY=y
+CONFIG_MEGARAID_SAS=y
+CONFIG_SCSI_MPT2SAS=y
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
+# CONFIG_SCSI_MPT2SAS_LOGGING is not set
+CONFIG_SCSI_HPTIOP=y
+CONFIG_SCSI_BUSLOGIC=y
+CONFIG_VMWARE_PVSCSI=m
+CONFIG_LIBFC=y
+CONFIG_LIBFCOE=y
+CONFIG_FCOE=y
+CONFIG_FCOE_FNIC=y
+CONFIG_SCSI_DMX3191D=y
+CONFIG_SCSI_EATA=y
+# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
+# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_FUTURE_DOMAIN=y
+CONFIG_SCSI_GDTH=y
+CONFIG_SCSI_IPS=y
+CONFIG_SCSI_INITIO=y
+CONFIG_SCSI_INIA100=y
+CONFIG_SCSI_PPA=m
+CONFIG_SCSI_IMM=m
+# CONFIG_SCSI_IZIP_EPP16 is not set
+# CONFIG_SCSI_IZIP_SLOW_CTR is not set
+CONFIG_SCSI_STEX=y
+CONFIG_SCSI_SYM53C8XX_2=y
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+CONFIG_SCSI_IPR=y
+# CONFIG_SCSI_IPR_TRACE is not set
+# CONFIG_SCSI_IPR_DUMP is not set
+CONFIG_SCSI_QLOGIC_1280=y
+CONFIG_SCSI_QLA_FC=y
+CONFIG_SCSI_QLA_ISCSI=y
+CONFIG_SCSI_LPFC=y
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
+CONFIG_SCSI_DC395x=y
+CONFIG_SCSI_DC390T=y
+CONFIG_SCSI_DEBUG=m
+CONFIG_SCSI_PMCRAID=y
+CONFIG_SCSI_PM8001=y
+CONFIG_SCSI_SRP=y
+CONFIG_SCSI_BFA_FC=y
+CONFIG_SCSI_LOWLEVEL_PCMCIA=y
+CONFIG_PCMCIA_FDOMAIN=m
+CONFIG_PCMCIA_QLOGIC=m
+CONFIG_PCMCIA_SYM53C500=m
+CONFIG_SCSI_DH=m
+CONFIG_SCSI_DH_RDAC=m
+CONFIG_SCSI_DH_HP_SW=m
+CONFIG_SCSI_DH_EMC=m
+CONFIG_SCSI_DH_ALUA=m
+CONFIG_SCSI_OSD_INITIATOR=m
+CONFIG_SCSI_OSD_ULD=m
+CONFIG_SCSI_OSD_DPRINT_SENSE=1
+# CONFIG_SCSI_OSD_DEBUG is not set
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_ATA_VERBOSE_ERROR=y
+CONFIG_ATA_ACPI=y
+CONFIG_SATA_PMP=y
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_SIL24=y
+CONFIG_ATA_SFF=y
+CONFIG_SATA_SVW=y
+CONFIG_ATA_PIIX=y
+CONFIG_SATA_MV=y
+CONFIG_SATA_NV=y
+CONFIG_PDC_ADMA=y
+CONFIG_SATA_QSTOR=y
+CONFIG_SATA_PROMISE=y
+CONFIG_SATA_SX4=y
+CONFIG_SATA_SIL=y
+CONFIG_SATA_SIS=y
+CONFIG_SATA_ULI=y
+CONFIG_SATA_VIA=y
+CONFIG_SATA_VITESSE=y
+CONFIG_SATA_INIC162X=y
+CONFIG_PATA_ACPI=y
+CONFIG_PATA_ALI=y
+CONFIG_PATA_AMD=y
+CONFIG_PATA_ARTOP=y
+CONFIG_PATA_ATP867X=y
+CONFIG_PATA_ATIIXP=y
+CONFIG_PATA_CMD640_PCI=y
+CONFIG_PATA_CMD64X=y
+CONFIG_PATA_CS5520=y
+CONFIG_PATA_CS5530=y
+CONFIG_PATA_CYPRESS=y
+CONFIG_PATA_EFAR=y
+CONFIG_ATA_GENERIC=y
+CONFIG_PATA_HPT366=y
+CONFIG_PATA_HPT37X=y
+CONFIG_PATA_HPT3X2N=y
+CONFIG_PATA_HPT3X3=y
+CONFIG_PATA_HPT3X3_DMA=y
+CONFIG_PATA_IT821X=y
+CONFIG_PATA_IT8213=y
+CONFIG_PATA_JMICRON=y
+CONFIG_PATA_TRIFLEX=y
+CONFIG_PATA_MARVELL=y
+CONFIG_PATA_MPIIX=y
+CONFIG_PATA_OLDPIIX=y
+CONFIG_PATA_NETCELL=y
+CONFIG_PATA_NINJA32=y
+CONFIG_PATA_NS87410=y
+CONFIG_PATA_NS87415=y
+CONFIG_PATA_OPTI=y
+CONFIG_PATA_OPTIDMA=y
+CONFIG_PATA_PCMCIA=m
+CONFIG_PATA_PDC2027X=y
+CONFIG_PATA_PDC_OLD=y
+CONFIG_PATA_RADISYS=y
+CONFIG_PATA_RDC=y
+CONFIG_PATA_RZ1000=y
+CONFIG_PATA_SC1200=y
+CONFIG_PATA_SERVERWORKS=y
+CONFIG_PATA_SIL680=y
+CONFIG_PATA_SIS=y
+CONFIG_PATA_TOSHIBA=m
+CONFIG_PATA_VIA=y
+CONFIG_PATA_WINBOND=y
+CONFIG_PATA_SCH=y
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_AUTODETECT=y
+CONFIG_MD_LINEAR=y
+CONFIG_MD_RAID0=y
+CONFIG_MD_RAID1=y
+CONFIG_MD_RAID10=y
+CONFIG_MD_RAID456=y
+# CONFIG_MULTICORE_RAID456 is not set
+CONFIG_MD_RAID6_PQ=y
+CONFIG_ASYNC_RAID6_TEST=m
+CONFIG_MD_MULTIPATH=y
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=y
+CONFIG_DM_SNAPSHOT=y
+CONFIG_DM_MIRROR=y
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_QL=m
+CONFIG_DM_MULTIPATH_ST=m
+# CONFIG_DM_DELAY is not set
+CONFIG_DM_UEVENT=y
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=y
+CONFIG_FUSION_FC=y
+CONFIG_FUSION_SAS=y
+CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_CTL=y
+CONFIG_FUSION_LAN=y
+# CONFIG_FUSION_LOGGING is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# You can enable one or both FireWire driver stacks.
+#
+
+#
+# The newer stack is recommended.
+#
+# CONFIG_FIREWIRE is not set
+CONFIG_IEEE1394=m
+CONFIG_IEEE1394_OHCI1394=m
+CONFIG_IEEE1394_PCILYNX=m
+CONFIG_IEEE1394_SBP2=m
+# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
+CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_RAWIO=m
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_DV1394=m
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+CONFIG_I2O=y
+CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
+CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_EXT_ADAPTEC_DMA64=y
+CONFIG_I2O_CONFIG=y
+# CONFIG_I2O_CONFIG_OLD_IOCTL is not set
+CONFIG_I2O_BUS=y
+CONFIG_I2O_BLOCK=y
+CONFIG_I2O_SCSI=y
+CONFIG_I2O_PROC=y
+CONFIG_MACINTOSH_DRIVERS=y
+CONFIG_MAC_EMUMOUSEBTN=y
+CONFIG_NETDEVICES=y
+CONFIG_IFB=m
+CONFIG_DUMMY=m
+CONFIG_BONDING=m
+CONFIG_MACVLAN=m
+CONFIG_EQUALIZER=m
+CONFIG_TUN=m
+CONFIG_VETH=m
+CONFIG_NET_SB1000=m
+CONFIG_ARCNET=m
+CONFIG_ARCNET_1201=m
+CONFIG_ARCNET_1051=m
+CONFIG_ARCNET_RAW=m
+CONFIG_ARCNET_CAP=m
+CONFIG_ARCNET_COM90xx=m
+CONFIG_ARCNET_COM90xxIO=m
+CONFIG_ARCNET_RIM_I=m
+CONFIG_ARCNET_COM20020=m
+CONFIG_ARCNET_COM20020_PCI=m
+CONFIG_PHYLIB=m
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_ICPLUS_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_STE10XP=m
+CONFIG_LSI_ET1011C_PHY=m
+CONFIG_MDIO_BITBANG=m
+CONFIG_MDIO_GPIO=m
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_CASSINI=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_ETHOC=m
+CONFIG_DNET=m
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_DE2104X_DSL=0
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+CONFIG_TULIP_MMIO=y
+# CONFIG_TULIP_NAPI is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+CONFIG_PCMCIA_XIRCOM=m
+CONFIG_HP100=m
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+CONFIG_AMD8111_ETH=m
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_FORCEDETH=m
+CONFIG_FORCEDETH_NAPI=y
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R6040=m
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SMSC9420=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_KS8842=m
+CONFIG_KS8851_MLL=m
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_SC92031=m
+CONFIG_NET_POCKET=y
+CONFIG_ATP=m
+CONFIG_DE600=m
+CONFIG_DE620=m
+CONFIG_ATL2=m
+CONFIG_NETDEV_1000=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IP1000=m
+CONFIG_IGB=m
+CONFIG_IGB_DCA=y
+CONFIG_IGBVF=m
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+CONFIG_R8169_VLAN=y
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+CONFIG_CNIC=m
+CONFIG_QLA3XXX=m
+CONFIG_ATL1=m
+CONFIG_ATL1E=m
+CONFIG_ATL1C=m
+CONFIG_JME=m
+CONFIG_NETDEV_10000=y
+CONFIG_MDIO=m
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T1_1G=y
+CONFIG_CHELSIO_T3_DEPENDS=y
+CONFIG_CHELSIO_T3=m
+CONFIG_ENIC=m
+CONFIG_IXGBE=m
+CONFIG_IXGBE_DCA=y
+CONFIG_IXGB=m
+CONFIG_S2IO=m
+CONFIG_VXGE=m
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
+CONFIG_MYRI10GE=m
+CONFIG_MYRI10GE_DCA=y
+CONFIG_NETXEN_NIC=m
+CONFIG_NIU=m
+CONFIG_MLX4_EN=m
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
+CONFIG_TEHUTI=m
+CONFIG_BNX2X=m
+CONFIG_QLGE=m
+CONFIG_SFC=m
+CONFIG_SFC_MTD=y
+CONFIG_BE2NET=m
+CONFIG_TR=m
+CONFIG_IBMOL=m
+CONFIG_3C359=m
+CONFIG_TMS380TR=m
+CONFIG_TMSPCI=m
+CONFIG_ABYSS=m
+CONFIG_WLAN=y
+CONFIG_PCMCIA_RAYCS=m
+CONFIG_LIBERTAS_THINFIRM=m
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_AIRO=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_AT76C50X_USB=m
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_WL3501=m
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
+CONFIG_ADM8211=m
+# CONFIG_MAC80211_HWSIM is not set
+CONFIG_MWL8K=m
+CONFIG_ATH_COMMON=m
+# CONFIG_ATH_DEBUG is not set
+CONFIG_ATH5K=m
+# CONFIG_ATH5K_DEBUG is not set
+CONFIG_ATH9K_HW=m
+CONFIG_ATH9K_COMMON=m
+CONFIG_ATH9K=m
+# CONFIG_ATH9K_DEBUGFS is not set
+CONFIG_AR9170_USB=m
+CONFIG_AR9170_LEDS=y
+CONFIG_B43=m
+CONFIG_B43_PCI_AUTOSELECT=y
+CONFIG_B43_PCICORE_AUTOSELECT=y
+CONFIG_B43_PCMCIA=y
+CONFIG_B43_SDIO=y
+CONFIG_B43_PIO=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_LEDS=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_PCI_AUTOSELECT=y
+CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+CONFIG_B43LEGACY_LEDS=y
+CONFIG_B43LEGACY_HWRNG=y
+# CONFIG_B43LEGACY_DEBUG is not set
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_HOSTAP_CS=m
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBIPW=m
+# CONFIG_LIBIPW_DEBUG is not set
+CONFIG_IWLWIFI=m
+CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y
+# CONFIG_IWLWIFI_DEBUG is not set
+# CONFIG_IWLWIFI_DEVICE_TRACING is not set
+CONFIG_IWLAGN=m
+CONFIG_IWL4965=y
+CONFIG_IWL5000=y
+CONFIG_IWL3945=m
+CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
+CONFIG_IWM=m
+# CONFIG_IWM_DEBUG is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_HERMES=m
+CONFIG_HERMES_CACHE_FW_ON_INIT=y
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
+CONFIG_P54_PCI=m
+CONFIG_P54_LEDS=y
+CONFIG_RT2X00=m
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT61PCI=m
+CONFIG_RT2800PCI_PCI=m
+CONFIG_RT2800PCI=m
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800_LIB=m
+CONFIG_RT2X00_LIB_PCI=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_HT=y
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_WL12XX=m
+CONFIG_WL1251=m
+CONFIG_WL1251_SDIO=m
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+
+#
+# WiMAX Wireless Broadband devices
+#
+CONFIG_WIMAX_I2400M=m
+CONFIG_WIMAX_I2400M_USB=m
+CONFIG_WIMAX_I2400M_SDIO=m
+# CONFIG_WIMAX_IWMC3200_SDIO is not set
+CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+# CONFIG_USB_EPSON2888 is not set
+# CONFIG_USB_KC2190 is not set
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_CDC_PHONET=m
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+CONFIG_ARCNET_COM20020_CS=m
+CONFIG_PCMCIA_IBMTR=m
+CONFIG_WAN=y
+CONFIG_LANMEDIA=m
+CONFIG_HDLC=m
+CONFIG_HDLC_RAW=m
+CONFIG_HDLC_RAW_ETH=m
+CONFIG_HDLC_CISCO=m
+CONFIG_HDLC_FR=m
+CONFIG_HDLC_PPP=m
+
+#
+# X.25/LAPB support is disabled
+#
+CONFIG_PCI200SYN=m
+CONFIG_WANXL=m
+# CONFIG_PC300TOO is not set
+CONFIG_FARSYNC=m
+CONFIG_DSCC4=m
+# CONFIG_DSCC4_PCISYNC is not set
+# CONFIG_DSCC4_PCI_RST is not set
+CONFIG_DLCI=m
+CONFIG_DLCI_MAX=8
+CONFIG_WAN_ROUTER_DRIVERS=m
+CONFIG_CYCLADES_SYNC=m
+CONFIG_CYCLOMX_X25=y
+CONFIG_SBNI=m
+# CONFIG_SBNI_MULTILINE is not set
+CONFIG_ATM_DRIVERS=y
+CONFIG_ATM_DUMMY=m
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_FIRESTREAM=m
+CONFIG_ATM_ZATM=m
+# CONFIG_ATM_ZATM_DEBUG is not set
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+# CONFIG_ATM_IDT77252_RCV_ALL is not set
+CONFIG_ATM_IDT77252_USE_SUNI=y
+CONFIG_ATM_AMBASSADOR=m
+# CONFIG_ATM_AMBASSADOR_DEBUG is not set
+CONFIG_ATM_HORIZON=m
+# CONFIG_ATM_HORIZON_DEBUG is not set
+CONFIG_ATM_IA=m
+# CONFIG_ATM_IA_DEBUG is not set
+CONFIG_ATM_FORE200E=m
+# CONFIG_ATM_FORE200E_USE_TASKLET is not set
+CONFIG_ATM_FORE200E_TX_RETRY=16
+CONFIG_ATM_FORE200E_DEBUG=0
+CONFIG_ATM_HE=m
+# CONFIG_ATM_HE_USE_SUNI is not set
+CONFIG_ATM_SOLOS=m
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKEHARD=m
+CONFIG_FDDI=y
+CONFIG_DEFXX=m
+# CONFIG_DEFXX_MMIO is not set
+CONFIG_SKFP=m
+CONFIG_HIPPI=y
+CONFIG_ROADRUNNER=m
+# CONFIG_ROADRUNNER_LARGE_RINGS is not set
+CONFIG_PLIP=m
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_PPPOL2TP=m
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=m
+CONFIG_SLIP_SMART=y
+# CONFIG_SLIP_MODE_SLIP6 is not set
+CONFIG_NET_FC=y
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_VIRTIO_NET=m
+CONFIG_VMXNET3=m
+CONFIG_ISDN=y
+CONFIG_ISDN_I4L=m
+CONFIG_MISDN=m
+CONFIG_MISDN_DSP=m
+CONFIG_MISDN_L1OIP=m
+
+#
+# mISDN hardware drivers
+#
+CONFIG_MISDN_HFCPCI=m
+CONFIG_MISDN_HFCMULTI=m
+CONFIG_MISDN_HFCUSB=m
+CONFIG_MISDN_AVMFRITZ=m
+CONFIG_MISDN_SPEEDFAX=m
+CONFIG_MISDN_INFINEON=m
+CONFIG_MISDN_W6692=m
+CONFIG_MISDN_NETJET=m
+CONFIG_MISDN_IPAC=m
+CONFIG_MISDN_ISAR=m
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+CONFIG_ISDN_PPP_BSDCOMP=m
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+
+#
+# ISDN feature submodules
+#
+CONFIG_ISDN_DIVERSION=m
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+CONFIG_HISAX_NO_SENDCOMPLETE=y
+CONFIG_HISAX_NO_LLC=y
+CONFIG_HISAX_NO_KEYPAD=y
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NETJET=y
+CONFIG_HISAX_NETJET_U=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+CONFIG_HISAX_ENTERNOW_PCI=y
+# CONFIG_HISAX_DEBUG is not set
+
+#
+# HiSax PCMCIA card service modules
+#
+CONFIG_HISAX_SEDLBAUER_CS=m
+CONFIG_HISAX_ELSA_CS=m
+CONFIG_HISAX_AVM_A1_CS=m
+CONFIG_HISAX_TELES_CS=m
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+
+#
+# Active cards
+#
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_ISDN_HDLC=m
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIFS=m
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+#
+# CAPI hardware drivers
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+CONFIG_ISDN_DRV_GIGASET=m
+# CONFIG_GIGASET_CAPI is not set
+CONFIG_GIGASET_I4L=y
+# CONFIG_GIGASET_DUMMYLL is not set
+CONFIG_GIGASET_BASE=m
+CONFIG_GIGASET_M105=m
+# CONFIG_GIGASET_M101 is not set
+# CONFIG_GIGASET_DEBUG is not set
+CONFIG_PHONE=m
+CONFIG_PHONE_IXJ=m
+CONFIG_PHONE_IXJ_PCMCIA=m
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=y
+CONFIG_INPUT_POLLDEV=m
+CONFIG_INPUT_SPARSEKMAP=m
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_JOYDEV=m
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ADP5588=m
+CONFIG_KEYBOARD_ATKBD=y
+CONFIG_QT2160=m
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_MATRIX=m
+CONFIG_KEYBOARD_LM8323=m
+CONFIG_KEYBOARD_MAX7359=m
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_KEYBOARD_OPENCORES=m
+CONFIG_KEYBOARD_STOWAWAY=m
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+CONFIG_MOUSE_PS2_SENTELIC=y
+CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_SERIAL=m
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_VSXXXAA=m
+CONFIG_MOUSE_GPIO=m
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_ANALOG=m
+CONFIG_JOYSTICK_A3D=m
+CONFIG_JOYSTICK_ADI=m
+CONFIG_JOYSTICK_COBRA=m
+CONFIG_JOYSTICK_GF2K=m
+CONFIG_JOYSTICK_GRIP=m
+CONFIG_JOYSTICK_GRIP_MP=m
+CONFIG_JOYSTICK_GUILLEMOT=m
+CONFIG_JOYSTICK_INTERACT=m
+CONFIG_JOYSTICK_SIDEWINDER=m
+CONFIG_JOYSTICK_TMDC=m
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=y
+CONFIG_JOYSTICK_IFORCE_232=y
+CONFIG_JOYSTICK_WARRIOR=m
+CONFIG_JOYSTICK_MAGELLAN=m
+CONFIG_JOYSTICK_SPACEORB=m
+CONFIG_JOYSTICK_SPACEBALL=m
+CONFIG_JOYSTICK_STINGER=m
+CONFIG_JOYSTICK_TWIDJOY=m
+CONFIG_JOYSTICK_ZHENHUA=m
+CONFIG_JOYSTICK_DB9=m
+CONFIG_JOYSTICK_GAMECON=m
+CONFIG_JOYSTICK_TURBOGRAFX=m
+CONFIG_JOYSTICK_JOYDUMP=m
+CONFIG_JOYSTICK_XPAD=m
+CONFIG_JOYSTICK_XPAD_FF=y
+CONFIG_JOYSTICK_XPAD_LEDS=y
+# CONFIG_JOYSTICK_WALKERA0701 is not set
+CONFIG_INPUT_TABLET=y
+CONFIG_TABLET_USB_ACECAD=m
+CONFIG_TABLET_USB_AIPTEK=m
+CONFIG_TABLET_USB_GTCO=m
+CONFIG_TABLET_USB_KBTAB=m
+CONFIG_TABLET_USB_WACOM=m
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_AD7879_I2C=m
+CONFIG_TOUCHSCREEN_AD7879=m
+CONFIG_TOUCHSCREEN_DYNAPRO=m
+CONFIG_TOUCHSCREEN_EETI=m
+CONFIG_TOUCHSCREEN_FUJITSU=m
+CONFIG_TOUCHSCREEN_GUNZE=m
+CONFIG_TOUCHSCREEN_ELO=m
+CONFIG_TOUCHSCREEN_WACOM_W8001=m
+CONFIG_TOUCHSCREEN_MCS5000=m
+CONFIG_TOUCHSCREEN_MTOUCH=m
+CONFIG_TOUCHSCREEN_INEXIO=m
+CONFIG_TOUCHSCREEN_MK712=m
+CONFIG_TOUCHSCREEN_PENMOUNT=m
+CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
+CONFIG_TOUCHSCREEN_TOUCHWIN=m
+CONFIG_TOUCHSCREEN_UCB1400=m
+CONFIG_TOUCHSCREEN_WM97XX=m
+CONFIG_TOUCHSCREEN_WM9705=y
+CONFIG_TOUCHSCREEN_WM9712=y
+CONFIG_TOUCHSCREEN_WM9713=y
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
+CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
+CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
+CONFIG_TOUCHSCREEN_USB_GOTOP=y
+CONFIG_TOUCHSCREEN_USB_JASTEC=y
+CONFIG_TOUCHSCREEN_USB_E2I=y
+CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
+CONFIG_TOUCHSCREEN_USB_ETT_TC5UH=y
+CONFIG_TOUCHSCREEN_TOUCHIT213=m
+CONFIG_TOUCHSCREEN_TSC2007=m
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_APANEL=m
+CONFIG_INPUT_ATLAS_BTNS=m
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_POWERMATE=m
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_CM109=m
+CONFIG_INPUT_UINPUT=m
+CONFIG_INPUT_WINBOND_CIR=m
+CONFIG_INPUT_PCF50633_PMU=m
+CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_CT82C710=m
+CONFIG_SERIO_PARKBD=m
+CONFIG_SERIO_PCIPS2=m
+CONFIG_SERIO_LIBPS2=y
+CONFIG_SERIO_RAW=m
+CONFIG_SERIO_ALTERA_PS2=m
+CONFIG_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+CONFIG_GAMEPORT_L4=m
+CONFIG_GAMEPORT_EMU10K1=m
+CONFIG_GAMEPORT_FM801=m
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_DEVKMEM=y
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_COMPUTONE=m
+CONFIG_ROCKETPORT=m
+CONFIG_CYCLADES=m
+# CONFIG_CYZ_INTR is not set
+CONFIG_DIGIEPCA=m
+CONFIG_MOXA_INTELLIO=m
+CONFIG_MOXA_SMARTIO=m
+CONFIG_ISI=m
+CONFIG_SYNCLINK=m
+CONFIG_SYNCLINKMP=m
+CONFIG_SYNCLINK_GT=m
+CONFIG_N_HDLC=m
+CONFIG_RISCOM8=m
+CONFIG_SPECIALIX=m
+CONFIG_STALDRV=y
+CONFIG_STALLION=m
+CONFIG_ISTALLION=m
+CONFIG_NOZOMI=m
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+CONFIG_SERIAL_8250_RSA=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_JSM=m
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+CONFIG_PRINTER=m
+CONFIG_LP_CONSOLE=y
+CONFIG_PPDEV=m
+CONFIG_HVC_DRIVER=y
+CONFIG_VIRTIO_CONSOLE=m
+CONFIG_IPMI_HANDLER=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_TIMERIOMEM=m
+CONFIG_HW_RANDOM_INTEL=m
+CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_VIA=m
+CONFIG_HW_RANDOM_VIRTIO=m
+CONFIG_NVRAM=m
+CONFIG_R3964=m
+CONFIG_APPLICOM=m
+
+#
+# PCMCIA character devices
+#
+CONFIG_SYNCLINK_CS=m
+CONFIG_CARDMAN_4000=m
+CONFIG_CARDMAN_4040=m
+CONFIG_IPWIRELESS=m
+CONFIG_MWAVE=m
+CONFIG_PC8736x_GPIO=m
+CONFIG_NSC_GPIO=m
+CONFIG_RAW_DRIVER=m
+CONFIG_MAX_RAW_DEVS=256
+CONFIG_HPET=y
+CONFIG_HPET_MMAP=y
+CONFIG_HANGCHECK_TIMER=m
+CONFIG_TCG_TPM=m
+# CONFIG_TCG_TIS is not set
+# CONFIG_TCG_NSC is not set
+CONFIG_TCG_ATMEL=m
+# CONFIG_TCG_INFINEON is not set
+CONFIG_TELCLOCK=m
+CONFIG_DEVPORT=y
+CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_ISCH=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_NFORCE2_S4985=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+
+#
+# ACPI drivers
+#
+CONFIG_I2C_SCMI=m
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+CONFIG_I2C_GPIO=m
+CONFIG_I2C_OCORES=m
+CONFIG_I2C_SIMTEC=m
+
+#
+# External I2C/SMBus adapter drivers
+#
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_TAOS_EVM=m
+CONFIG_I2C_TINY_USB=m
+
+#
+# Other I2C/SMBus bus drivers
+#
+CONFIG_I2C_PCA_PLATFORM=m
+CONFIG_I2C_STUB=m
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_SENSORS_TSL2550=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+# CONFIG_SPI is not set
+
+#
+# PPS support
+#
+CONFIG_PPS=m
+# CONFIG_PPS_DEBUG is not set
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+
+#
+# Memory mapped GPIO expanders:
+#
+
+#
+# I2C GPIO expanders:
+#
+CONFIG_GPIO_MAX732X=m
+CONFIG_GPIO_PCA953X=m
+CONFIG_GPIO_PCF857X=m
+CONFIG_GPIO_ADP5588=m
+
+#
+# PCI GPIO expanders:
+#
+CONFIG_GPIO_CS5535=m
+# CONFIG_GPIO_LANGWELL is not set
+
+#
+# SPI GPIO expanders:
+#
+
+#
+# AC97 GPIO expanders:
+#
+# CONFIG_GPIO_UCB1400 is not set
+CONFIG_W1=m
+CONFIG_W1_CON=y
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_MATROX=m
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+CONFIG_W1_MASTER_GPIO=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2431=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+CONFIG_W1_SLAVE_DS2760=m
+CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_PDA_POWER=m
+CONFIG_WM8350_POWER=m
+CONFIG_BATTERY_DS2760=m
+CONFIG_BATTERY_DS2782=m
+CONFIG_BATTERY_BQ27x00=m
+CONFIG_BATTERY_MAX17040=m
+CONFIG_CHARGER_PCF50633=m
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ABITUGURU3=m
+CONFIG_SENSORS_AD7414=m
+CONFIG_SENSORS_AD7418=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1029=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADT7462=m
+CONFIG_SENSORS_ADT7470=m
+CONFIG_SENSORS_ADT7473=m
+CONFIG_SENSORS_ADT7475=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_K10TEMP=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_I5K_AMB=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_F71882FG=m
+CONFIG_SENSORS_F75375S=m
+CONFIG_SENSORS_FSCHMD=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_CORETEMP=m
+CONFIG_SENSORS_IBMAEM=m
+CONFIG_SENSORS_IBMPEX=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM73=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_LM93=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_SHT15=m
+CONFIG_SENSORS_SIS5595=m
+CONFIG_SENSORS_DME1737=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_ADS7828=m
+CONFIG_SENSORS_AMC6821=m
+CONFIG_SENSORS_THMC50=m
+CONFIG_SENSORS_TMP401=m
+CONFIG_SENSORS_TMP421=m
+CONFIG_SENSORS_VIA_CPUTEMP=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83L786NG=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_WM8350=m
+CONFIG_SENSORS_HDAPS=m
+CONFIG_SENSORS_LIS3_I2C=m
+CONFIG_SENSORS_APPLESMC=m
+
+#
+# ACPI drivers
+#
+CONFIG_SENSORS_ATK0110=m
+CONFIG_SENSORS_LIS3LV02D=m
+CONFIG_THERMAL=m
+CONFIG_THERMAL_HWMON=y
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_WM8350_WATCHDOG=m
+CONFIG_ACQUIRE_WDT=m
+CONFIG_ADVANTECH_WDT=m
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_GEODE_WDT=m
+CONFIG_SC520_WDT=m
+CONFIG_SBC_FITPC2_WATCHDOG=m
+CONFIG_EUROTECH_WDT=m
+CONFIG_IB700_WDT=m
+CONFIG_IBMASR=m
+CONFIG_WAFER_WDT=m
+CONFIG_I6300ESB_WDT=m
+CONFIG_ITCO_WDT=m
+CONFIG_ITCO_VENDOR_SUPPORT=y
+CONFIG_IT8712F_WDT=m
+CONFIG_IT87_WDT=m
+CONFIG_HP_WATCHDOG=m
+CONFIG_SC1200_WDT=m
+CONFIG_PC87413_WDT=m
+CONFIG_60XX_WDT=m
+CONFIG_SBC8360_WDT=m
+CONFIG_CPU5_WDT=m
+CONFIG_SMSC_SCH311X_WDT=m
+CONFIG_SMSC37B787_WDT=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83697HF_WDT=m
+CONFIG_W83697UG_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_W83977F_WDT=m
+CONFIG_MACHZ_WDT=m
+CONFIG_SBC_EPX_C3_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB=m
+CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+CONFIG_SSB_B43_PCI_BRIDGE=y
+CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
+CONFIG_SSB_PCMCIAHOST=y
+CONFIG_SSB_SDIOHOST_POSSIBLE=y
+CONFIG_SSB_SDIOHOST=y
+# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=m
+# CONFIG_MFD_SM501 is not set
+CONFIG_HTC_PASIC3=m
+CONFIG_UCB1400_CORE=m
+CONFIG_TPS65010=m
+# CONFIG_MFD_TMIO is not set
+CONFIG_MFD_WM8400=m
+CONFIG_MFD_WM8350=m
+CONFIG_MFD_WM8350_I2C=m
+CONFIG_MFD_PCF50633=m
+CONFIG_PCF50633_ADC=m
+CONFIG_PCF50633_GPIO=m
+CONFIG_AB3100_CORE=m
+CONFIG_AB3100_OTP=m
+# CONFIG_REGULATOR is not set
+CONFIG_MEDIA_SUPPORT=m
+
+#
+# Multimedia core support
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_DVB_CORE=m
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_IR_CORE=m
+CONFIG_VIDEO_IR=m
+CONFIG_MEDIA_ATTACH=y
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_MT2131=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_MEDIA_TUNER_MAX2165=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DVB=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
+CONFIG_VIDEO_IR_I2C=m
+
+#
+# Encoders/decoders and other helper chips
+#
+
+#
+# Audio decoders
+#
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TDA9875=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_M52790=m
+CONFIG_VIDEO_TLV320AIC23B=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_VP27SMPX=m
+
+#
+# RDS decoders
+#
+CONFIG_VIDEO_SAA6588=m
+
+#
+# Video decoders
+#
+CONFIG_VIDEO_ADV7180=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_BT866=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9V011=m
+CONFIG_VIDEO_TCM825X=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_SAA717X=m
+CONFIG_VIDEO_SAA7191=m
+CONFIG_VIDEO_TVP514X=m
+CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_VPX3220=m
+
+#
+# Video and audio decoders
+#
+CONFIG_VIDEO_CX25840=m
+
+#
+# MPEG video encoders
+#
+CONFIG_VIDEO_CX2341X=m
+
+#
+# Video encoders
+#
+CONFIG_VIDEO_SAA7127=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+CONFIG_VIDEO_THS7303=m
+CONFIG_VIDEO_ADV7343=m
+
+#
+# Video improvement chips
+#
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_BT848=m
+CONFIG_VIDEO_BT848_DVB=y
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_W9966=m
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_PP=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
+CONFIG_VIDEO_MEYE=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_MPEG=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_CX23885=m
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_SAA7164=m
+CONFIG_VIDEO_CAFE_CCIC=m
+CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_MT9M001=m
+CONFIG_SOC_CAMERA_MT9M111=m
+CONFIG_SOC_CAMERA_MT9T031=m
+CONFIG_SOC_CAMERA_MT9T112=m
+CONFIG_SOC_CAMERA_MT9V022=m
+CONFIG_SOC_CAMERA_RJ54N1=m
+CONFIG_SOC_CAMERA_TW9910=m
+CONFIG_SOC_CAMERA_PLATFORM=m
+CONFIG_SOC_CAMERA_OV772X=m
+CONFIG_SOC_CAMERA_OV9640=m
+CONFIG_V4L_USB_DRIVERS=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SN9C20X_EVDEV=y
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+CONFIG_USB_ET61X251=m
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+CONFIG_USB_ZC0301=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_USB_ZR364XX=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_S2255=m
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_I2C_SI4713=m
+CONFIG_RADIO_SI4713=m
+CONFIG_USB_DSBR=m
+# CONFIG_RADIO_SI470X is not set
+CONFIG_USB_MR800=m
+CONFIG_RADIO_TEA5764=m
+CONFIG_RADIO_TEF6862=m
+CONFIG_DVB_MAX_ADAPTERS=8
+# CONFIG_DVB_DYNAMIC_MINORS is not set
+CONFIG_DVB_CAPTURE_DRIVERS=y
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_FRIIO=m
+CONFIG_DVB_USB_EC168=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_SMS_SIANO_MDTV=m
+
+#
+# Siano module components
+#
+CONFIG_SMS_USB_DRV=m
+CONFIG_SMS_SDIO_DRV=m
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
+
+#
+# Supported BT878 Adapters
+#
+CONFIG_DVB_BT8XX=m
+
+#
+# Supported Pluto2 Adapters
+#
+CONFIG_DVB_PLUTO2=m
+
+#
+# Supported SDMC DM1105 Adapters
+#
+CONFIG_DVB_DM1105=m
+
+#
+# Supported FireWire (IEEE 1394) Adapters
+#
+CONFIG_DVB_FIREDTV=m
+# CONFIG_DVB_FIREDTV_FIREWIRE is not set
+CONFIG_DVB_FIREDTV_IEEE1394=y
+CONFIG_DVB_FIREDTV_INPUT=y
+
+#
+# Supported Earthsoft PT1 Adapters
+#
+CONFIG_DVB_PT1=m
+
+#
+# Supported Mantis Adapters
+#
+CONFIG_MANTIS_CORE=m
+CONFIG_DVB_MANTIS=m
+CONFIG_DVB_HOPPER=m
+
+#
+# Supported DVB Frontends
+#
+CONFIG_DVB_FE_CUSTOMISE=y
+
+#
+# Customise DVB Frontends
+#
+
+#
+# Multistandard (satellite) frontends
+#
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_STV090x=m
+CONFIG_DVB_STV6110x=m
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10036=m
+CONFIG_DVB_ZL10039=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_DS3000=m
+CONFIG_DVB_MB86A16=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_DRX397XD=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_EC100=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGDT3304=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_S5H1411=m
+
+#
+# ISDB-T (terrestrial) frontends
+#
+CONFIG_DVB_S921=m
+CONFIG_DVB_DIB8000=m
+
+#
+# Digital terrestrial only tuners/PLL
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_TUNER_DIB0090=m
+
+#
+# SEC control devices for DVB-S
+#
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_ISL6405=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_ISL6423=m
+CONFIG_DVB_LGS8GL5=m
+CONFIG_DVB_LGS8GXX=m
+CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_TDA665x=m
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+CONFIG_AGP=m
+CONFIG_AGP_AMD64=m
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_VIA=m
+CONFIG_VGA_ARB=y
+CONFIG_DRM=m
+CONFIG_DRM_KMS_HELPER=m
+CONFIG_DRM_TTM=m
+CONFIG_DRM_TDFX=m
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+# CONFIG_DRM_RADEON_KMS is not set
+CONFIG_DRM_I810=m
+CONFIG_DRM_I830=m
+CONFIG_DRM_I915=m
+CONFIG_DRM_I915_KMS=y
+CONFIG_DRM_MGA=m
+CONFIG_DRM_SIS=m
+CONFIG_DRM_VIA=m
+CONFIG_DRM_SAVAGE=m
+CONFIG_VGASTATE=m
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_DDC=m
+CONFIG_FB_BOOT_VESA_SUPPORT=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+CONFIG_FB_SYS_FILLRECT=m
+CONFIG_FB_SYS_COPYAREA=m
+CONFIG_FB_SYS_IMAGEBLIT=m
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=m
+CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_HECUBA=m
+CONFIG_FB_SVGALIB=m
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_BACKLIGHT=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_CIRRUS=m
+CONFIG_FB_PM2=m
+# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
+CONFIG_FB_CYBER2000=m
+CONFIG_FB_ARC=m
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+CONFIG_FB_VGA16=m
+# CONFIG_FB_UVESA is not set
+CONFIG_FB_VESA=y
+# CONFIG_FB_EFI is not set
+CONFIG_FB_N411=m
+CONFIG_FB_HGA=m
+# CONFIG_FB_HGA_ACCEL is not set
+CONFIG_FB_S1D13XXX=m
+CONFIG_FB_NVIDIA=m
+CONFIG_FB_NVIDIA_I2C=y
+# CONFIG_FB_NVIDIA_DEBUG is not set
+CONFIG_FB_NVIDIA_BACKLIGHT=y
+CONFIG_FB_RIVA=m
+CONFIG_FB_RIVA_I2C=y
+# CONFIG_FB_RIVA_DEBUG is not set
+CONFIG_FB_RIVA_BACKLIGHT=y
+CONFIG_FB_LE80578=m
+CONFIG_FB_CARILLO_RANCH=m
+CONFIG_FB_MATROX=m
+CONFIG_FB_MATROX_MILLENIUM=y
+CONFIG_FB_MATROX_MYSTIQUE=y
+CONFIG_FB_MATROX_G=y
+CONFIG_FB_MATROX_I2C=m
+CONFIG_FB_MATROX_MAVEN=m
+CONFIG_FB_RADEON=m
+CONFIG_FB_RADEON_I2C=y
+CONFIG_FB_RADEON_BACKLIGHT=y
+# CONFIG_FB_RADEON_DEBUG is not set
+CONFIG_FB_ATY128=m
+CONFIG_FB_ATY128_BACKLIGHT=y
+CONFIG_FB_ATY=m
+CONFIG_FB_ATY_CT=y
+CONFIG_FB_ATY_GENERIC_LCD=y
+CONFIG_FB_ATY_GX=y
+CONFIG_FB_ATY_BACKLIGHT=y
+CONFIG_FB_S3=m
+CONFIG_FB_SAVAGE=m
+CONFIG_FB_SAVAGE_I2C=y
+CONFIG_FB_SAVAGE_ACCEL=y
+CONFIG_FB_SIS=m
+CONFIG_FB_SIS_300=y
+CONFIG_FB_SIS_315=y
+CONFIG_FB_VIA=m
+CONFIG_FB_NEOMAGIC=m
+CONFIG_FB_KYRO=m
+CONFIG_FB_3DFX=m
+# CONFIG_FB_3DFX_ACCEL is not set
+CONFIG_FB_3DFX_I2C=y
+CONFIG_FB_VOODOO1=m
+CONFIG_FB_VT8623=m
+CONFIG_FB_TRIDENT=m
+CONFIG_FB_ARK=m
+CONFIG_FB_PM3=m
+CONFIG_FB_CARMINE=m
+CONFIG_FB_CARMINE_DRAM_EVAL=y
+# CONFIG_CARMINE_DRAM_CUSTOM is not set
+CONFIG_FB_GEODE=y
+CONFIG_FB_GEODE_LX=m
+CONFIG_FB_GEODE_GX=m
+CONFIG_FB_GEODE_GX1=m
+CONFIG_FB_TMIO=m
+CONFIG_FB_TMIO_ACCELL=y
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FB_METRONOME=m
+CONFIG_FB_MB862XX=m
+CONFIG_FB_MB862XX_PCI_GDC=y
+CONFIG_FB_BROADSHEET=m
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_LCD_ILI9320 is not set
+CONFIG_LCD_PLATFORM=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_GENERIC=m
+CONFIG_BACKLIGHT_PROGEAR=m
+CONFIG_BACKLIGHT_CARILLO_RANCH=m
+CONFIG_BACKLIGHT_MBP_NVIDIA=m
+CONFIG_BACKLIGHT_SAHARA=m
+
+#
+# Display device support
+#
+CONFIG_DISPLAY_SUPPORT=m
+
+#
+# Display hardware drivers
+#
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_VGACON_SOFT_SCROLLBACK=y
+CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS_CORE=y
+CONFIG_SOUND_OSS_CORE_PRECLAIM=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_JACK=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_HRTIMER=m
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_DYNAMIC_MINORS=y
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+CONFIG_SND_VMASTER=y
+CONFIG_SND_DMA_SGBUF=y
+CONFIG_SND_RAWMIDI_SEQ=m
+CONFIG_SND_OPL3_LIB_SEQ=m
+# CONFIG_SND_OPL4_LIB_SEQ is not set
+# CONFIG_SND_SBAWE_SEQ is not set
+CONFIG_SND_EMU10K1_SEQ=m
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DRIVERS=y
+# CONFIG_SND_PCSP is not set
+CONFIG_SND_DUMMY=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_MTS64=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_MPU401=m
+CONFIG_SND_PORTMAN2X4=m
+CONFIG_SND_AC97_POWER_SAVE=y
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
+CONFIG_SND_SB_COMMON=m
+CONFIG_SND_SB16_DSP=m
+CONFIG_SND_PCI=y
+CONFIG_SND_AD1889=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AW2=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_OXYGEN_LIB=m
+CONFIG_SND_OXYGEN=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5530=m
+CONFIG_SND_CS5535AUDIO=m
+CONFIG_SND_CTXFI=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_GINA20=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_DARLA24=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_MONA=m
+CONFIG_SND_MIA=m
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_INDIGO=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_INDIGOIOX=m
+CONFIG_SND_INDIGODJX=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X_BOOL=y
+CONFIG_SND_FM801_TEA575X=m
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+# CONFIG_SND_HDA_INPUT_BEEP is not set
+CONFIG_SND_HDA_INPUT_JACK=y
+CONFIG_SND_HDA_PATCH_LOADER=y
+CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_CODEC_ANALOG=y
+CONFIG_SND_HDA_CODEC_SIGMATEL=y
+CONFIG_SND_HDA_CODEC_VIA=y
+CONFIG_SND_HDA_CODEC_ATIHDMI=y
+CONFIG_SND_HDA_CODEC_NVHDMI=y
+CONFIG_SND_HDA_CODEC_INTELHDMI=y
+CONFIG_SND_HDA_ELD=y
+CONFIG_SND_HDA_CODEC_CIRRUS=y
+CONFIG_SND_HDA_CODEC_CONEXANT=y
+CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CMEDIA=y
+CONFIG_SND_HDA_CODEC_SI3054=y
+CONFIG_SND_HDA_GENERIC=y
+# CONFIG_SND_HDA_POWER_SAVE is not set
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_HIFIER=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_LX6464ES=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_PCXHR=m
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VIRTUOSO=m
+CONFIG_SND_VX222=m
+CONFIG_SND_YMFPCI=m
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_USB_US122L=m
+CONFIG_SND_PCMCIA=y
+CONFIG_SND_VXPOCKET=m
+CONFIG_SND_PDAUDIOCF=m
+# CONFIG_SND_SOC is not set
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+CONFIG_HIDRAW=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+#
+# Special HID drivers
+#
+CONFIG_HID_A4TECH=m
+CONFIG_HID_APPLE=m
+CONFIG_HID_BELKIN=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_DRAGONRISE=m
+CONFIG_DRAGONRISE_FF=y
+CONFIG_HID_EZKEY=m
+CONFIG_HID_KYE=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_TWINHAN=m
+CONFIG_HID_KENSINGTON=m
+CONFIG_HID_LOGITECH=m
+CONFIG_LOGITECH_FF=y
+CONFIG_LOGIRUMBLEPAD2_FF=y
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_NTRIG=m
+CONFIG_HID_PANTHERLORD=m
+CONFIG_PANTHERLORD_FF=y
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SONY=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_HID_GREENASIA=m
+CONFIG_GREENASIA_FF=y
+CONFIG_HID_SMARTJOYPLUS=m
+CONFIG_SMARTJOYPLUS_FF=y
+CONFIG_HID_TOPSEED=m
+CONFIG_HID_THRUSTMASTER=m
+CONFIG_THRUSTMASTER_FF=y
+CONFIG_HID_WACOM=m
+CONFIG_HID_ZEROPLUS=m
+CONFIG_ZEROPLUS_FF=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+CONFIG_USB_SUSPEND=y
+# CONFIG_USB_OTG is not set
+CONFIG_USB_MON=y
+CONFIG_USB_WUSB=m
+CONFIG_USB_WUSB_CBAF=m
+# CONFIG_USB_WUSB_CBAF_DEBUG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_C67X00_HCD=y
+CONFIG_USB_XHCI_HCD=y
+# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_OXU210HP_HCD=y
+CONFIG_USB_ISP116X_HCD=y
+CONFIG_USB_ISP1760_HCD=y
+CONFIG_USB_ISP1362_HCD=y
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+CONFIG_USB_U132_HCD=m
+CONFIG_USB_SL811_HCD=y
+CONFIG_USB_SL811_CS=m
+CONFIG_USB_R8A66597_HCD=y
+CONFIG_USB_WHCI_HCD=m
+CONFIG_USB_HWA_HCD=m
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_WDM=m
+CONFIG_USB_TMC=m
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+CONFIG_USB_STORAGE_CYPRESS_ATACB=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+CONFIG_USB_SERIAL=m
+CONFIG_USB_EZUSB=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_QUALCOMM=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+CONFIG_USB_SERIAL_SAFE_PADDED=y
+CONFIG_USB_SERIAL_SIEMENS_MPI=m
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_SYMBOL=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_OPTICON=m
+CONFIG_USB_SERIAL_DEBUG=m
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_SEVSEG=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_SISUSBVGA=m
+CONFIG_USB_SISUSBVGA_CON=y
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_IOWARRIOR=m
+CONFIG_USB_TEST=m
+CONFIG_USB_ISIGHTFW=m
+CONFIG_USB_VST=m
+CONFIG_USB_ATM=m
+CONFIG_USB_SPEEDTOUCH=m
+CONFIG_USB_CXACRU=m
+CONFIG_USB_UEAGLEATM=m
+CONFIG_USB_XUSBATM=m
+# CONFIG_USB_GADGET is not set
+
+#
+# OTG and related infrastructure
+#
+CONFIG_USB_OTG_UTILS=y
+CONFIG_USB_GPIO_VBUS=m
+CONFIG_NOP_USB_XCEIV=m
+CONFIG_UWB=m
+CONFIG_UWB_HWA=m
+CONFIG_UWB_WHCI=m
+CONFIG_UWB_WLP=m
+CONFIG_UWB_I1480U=m
+CONFIG_UWB_I1480U_WLP=m
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=m
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_SDHCI=m
+CONFIG_MMC_SDHCI_PCI=m
+CONFIG_MMC_RICOH_MMC=m
+CONFIG_MMC_SDHCI_PLTFM=m
+CONFIG_MMC_WBSD=m
+# CONFIG_MMC_AT91 is not set
+# CONFIG_MMC_ATMELMCI is not set
+CONFIG_MMC_TIFM_SD=m
+CONFIG_MMC_SDRICOH_CS=m
+CONFIG_MMC_CB710=m
+CONFIG_MMC_VIA_SDMMC=m
+CONFIG_MEMSTICK=m
+# CONFIG_MEMSTICK_DEBUG is not set
+
+#
+# MemoryStick drivers
+#
+# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
+CONFIG_MSPRO_BLOCK=m
+
+#
+# MemoryStick Host Controller Drivers
+#
+CONFIG_MEMSTICK_TIFM_MS=m
+CONFIG_MEMSTICK_JMICRON_38X=m
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_ALIX2=m
+CONFIG_LEDS_PCA9532=m
+CONFIG_LEDS_GPIO=m
+CONFIG_LEDS_GPIO_PLATFORM=y
+CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_CLEVO_MAIL=m
+CONFIG_LEDS_PCA955X=m
+CONFIG_LEDS_WM8350=m
+CONFIG_LEDS_BD2802=m
+CONFIG_LEDS_INTEL_SS4200=m
+CONFIG_LEDS_LT3593=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_GPIO=m
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+CONFIG_ACCESSIBILITY=y
+CONFIG_A11Y_BRAILLE_CONSOLE=y
+
+#
+# Speakup console speech
+#
+CONFIG_SPEAKUP=y
+CONFIG_SPEAKUP_SYNTH_ACNTSA=y
+CONFIG_SPEAKUP_SYNTH_ACNTPC=y
+CONFIG_SPEAKUP_SYNTH_APOLLO=y
+CONFIG_SPEAKUP_SYNTH_AUDPTR=y
+CONFIG_SPEAKUP_SYNTH_BNS=y
+CONFIG_SPEAKUP_SYNTH_DECTLK=y
+CONFIG_SPEAKUP_SYNTH_DECEXT=y
+CONFIG_SPEAKUP_SYNTH_DECPC=m
+CONFIG_SPEAKUP_SYNTH_DTLK=y
+CONFIG_SPEAKUP_SYNTH_KEYPC=y
+CONFIG_SPEAKUP_SYNTH_LTLK=y
+CONFIG_SPEAKUP_SYNTH_SOFT=y
+CONFIG_SPEAKUP_SYNTH_SPKOUT=y
+CONFIG_SPEAKUP_SYNTH_TXPRT=y
+CONFIG_SPEAKUP_SYNTH_DUMMY=y
+CONFIG_INFINIBAND=m
+CONFIG_INFINIBAND_USER_MAD=m
+CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_USER_MEM=y
+CONFIG_INFINIBAND_ADDR_TRANS=y
+CONFIG_INFINIBAND_MTHCA=m
+CONFIG_INFINIBAND_MTHCA_DEBUG=y
+# CONFIG_INFINIBAND_IPATH is not set
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+# CONFIG_INFINIBAND_CXGB3 is not set
+CONFIG_MLX4_INFINIBAND=m
+CONFIG_INFINIBAND_NES=m
+# CONFIG_INFINIBAND_NES_DEBUG is not set
+CONFIG_INFINIBAND_IPOIB=m
+# CONFIG_INFINIBAND_IPOIB_CM is not set
+CONFIG_INFINIBAND_IPOIB_DEBUG=y
+# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
+CONFIG_INFINIBAND_ISER=m
+CONFIG_EDAC=y
+
+#
+# Reporting subsystems
+#
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_DECODE_MCE=y
+# CONFIG_EDAC_MM_EDAC is not set
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_TEST=m
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_MAX6900=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+CONFIG_RTC_DRV_M41T80=m
+CONFIG_RTC_DRV_M41T80_WDT=y
+CONFIG_RTC_DRV_BQ32K=m
+CONFIG_RTC_DRV_S35390A=m
+CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8581=m
+CONFIG_RTC_DRV_RX8025=m
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+CONFIG_RTC_DRV_CMOS=m
+CONFIG_RTC_DRV_DS1286=m
+CONFIG_RTC_DRV_DS1511=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_STK17TA8=m
+CONFIG_RTC_DRV_M48T86=m
+CONFIG_RTC_DRV_M48T35=m
+CONFIG_RTC_DRV_M48T59=m
+CONFIG_RTC_DRV_MSM6242=m
+CONFIG_RTC_DRV_BQ4802=m
+CONFIG_RTC_DRV_RP5C01=m
+CONFIG_RTC_DRV_V3020=m
+CONFIG_RTC_DRV_WM8350=m
+CONFIG_RTC_DRV_PCF50633=m
+CONFIG_RTC_DRV_AB3100=m
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_CS5535_CLOCK_EVENT_SRC=m
+CONFIG_DMADEVICES=y
+
+#
+# DMA Devices
+#
+CONFIG_ASYNC_TX_DISABLE_CHANNEL_SWITCH=y
+CONFIG_INTEL_IOATDMA=m
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+# CONFIG_ASYNC_TX_DMA is not set
+CONFIG_DMATEST=m
+CONFIG_DCA=m
+CONFIG_AUXDISPLAY=y
+# CONFIG_KS0108 is not set
+CONFIG_UIO=m
+CONFIG_UIO_CIF=m
+CONFIG_UIO_PDRV=m
+CONFIG_UIO_PDRV_GENIRQ=m
+CONFIG_UIO_SMX=m
+CONFIG_UIO_AEC=m
+CONFIG_UIO_SERCOS3=m
+CONFIG_UIO_PCI_GENERIC=m
+
+#
+# TI VLYNQ
+#
+CONFIG_STAGING=y
+# CONFIG_STAGING_EXCLUDE_BUILD is not set
+# CONFIG_ET131X is not set
+# CONFIG_SLICOSS is not set
+# CONFIG_VIDEO_GO7007 is not set
+CONFIG_VIDEO_CX25821=m
+CONFIG_VIDEO_CX25821_ALSA=m
+# CONFIG_USB_IP_COMMON is not set
+# CONFIG_W35UND is not set
+# CONFIG_PRISM2_USB is not set
+# CONFIG_ECHO is not set
+# CONFIG_POCH is not set
+# CONFIG_OTUS is not set
+CONFIG_RT2860=m
+CONFIG_RT2870=m
+# CONFIG_COMEDI is not set
+# CONFIG_ASUS_OLED is not set
+# CONFIG_PANEL is not set
+# CONFIG_ALTERA_PCIE_CHDMA is not set
+CONFIG_R8187SE=m
+CONFIG_RTL8192SU=m
+CONFIG_RTL8192U=m
+CONFIG_RTL8192E=m
+# CONFIG_TRANZPORT is not set
+
+#
+# Qualcomm MSM Camera And Video
+#
+
+#
+# Camera Sensor Selection
+#
+CONFIG_INPUT_GPIO=m
+CONFIG_POHMELFS=m
+# CONFIG_POHMELFS_DEBUG is not set
+CONFIG_POHMELFS_CRYPTO=y
+CONFIG_B3DFG=m
+CONFIG_IDE_PHISON=m
+CONFIG_PLAN9AUTH=m
+CONFIG_LINE6_USB=m
+CONFIG_DRM_VMWGFX=m
+CONFIG_DRM_NOUVEAU=m
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+CONFIG_DRM_NOUVEAU_DEBUG=y
+
+#
+# I2C encoder or helper chips
+#
+CONFIG_DRM_I2C_CH7006=m
+CONFIG_USB_SERIAL_QUATECH2=m
+CONFIG_USB_SERIAL_QUATECH_USB2=m
+CONFIG_VT6655=m
+CONFIG_VT6656=m
+CONFIG_FB_UDL=m
+# CONFIG_HYPERV is not set
+# CONFIG_VME_BUS is not set
+
+#
+# RAR Register Driver
+#
+CONFIG_RAR_REGISTER=m
+# CONFIG_DX_SEP is not set
+# CONFIG_IIO is not set
+CONFIG_RAMZSWAP=m
+CONFIG_RAMZSWAP_STATS=y
+CONFIG_BATMAN_ADV=m
+# CONFIG_BATMAN_DEBUG is not set
+CONFIG_SAMSUNG_LAPTOP=m
+CONFIG_STRIP=m
+CONFIG_PCMCIA_WAVELAN=m
+CONFIG_PCMCIA_NETWAVE=m
+CONFIG_FB_SM7XX=m
+# CONFIG_FB_SM7XX_ACCEL is not set
+CONFIG_X86_PLATFORM_DEVICES=y
+CONFIG_ACER_WMI=m
+CONFIG_ACERHDF=m
+CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_WMI=m
+CONFIG_FUJITSU_LAPTOP=m
+# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
+CONFIG_HP_WMI=m
+CONFIG_MSI_LAPTOP=m
+CONFIG_PANASONIC_LAPTOP=m
+CONFIG_COMPAL_LAPTOP=m
+CONFIG_SONY_LAPTOP=m
+CONFIG_SONYPI_COMPAT=y
+CONFIG_THINKPAD_ACPI=m
+CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
+# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
+# CONFIG_THINKPAD_ACPI_DEBUG is not set
+# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
+CONFIG_THINKPAD_ACPI_VIDEO=y
+CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
+CONFIG_INTEL_MENLOW=m
+CONFIG_EEEPC_LAPTOP=m
+CONFIG_ACPI_WMI=m
+CONFIG_MSI_WMI=m
+CONFIG_ACPI_ASUS=m
+CONFIG_TOPSTAR_LAPTOP=m
+CONFIG_ACPI_TOSHIBA=m
+CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_ACPI_CMPC=m
+
+#
+# Firmware Drivers
+#
+CONFIG_EDD=m
+CONFIG_EDD_OFF=y
+CONFIG_FIRMWARE_MEMMAP=y
+CONFIG_EFI_VARS=m
+CONFIG_DELL_RBU=m
+CONFIG_DCDBAS=m
+CONFIG_DMIID=y
+CONFIG_ISCSI_IBFT_FIND=y
+CONFIG_ISCSI_IBFT=m
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_XATTR=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=y
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+CONFIG_JFS_FS=y
+CONFIG_JFS_POSIX_ACL=y
+CONFIG_JFS_SECURITY=y
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=y
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_POSIX_ACL=y
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_DEBUG is not set
+CONFIG_GFS2_FS=y
+CONFIG_GFS2_FS_LOCKING_DLM=y
+CONFIG_OCFS2_FS=y
+CONFIG_OCFS2_FS_O2CB=y
+CONFIG_OCFS2_FS_USERSPACE_CLUSTER=y
+# CONFIG_OCFS2_FS_STATS is not set
+CONFIG_OCFS2_DEBUG_MASKLOG=y
+# CONFIG_OCFS2_DEBUG_FS is not set
+CONFIG_BTRFS_FS=y
+CONFIG_BTRFS_FS_POSIX_ACL=y
+CONFIG_NILFS2_FS=m
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_QUOTA_TREE=y
+CONFIG_QFMT_V1=m
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+CONFIG_AUTOFS_FS=m
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+CONFIG_CUSE=m
+CONFIG_GENERIC_ACL=y
+
+#
+# Caches
+#
+CONFIG_FSCACHE=m
+# CONFIG_FSCACHE_STATS is not set
+# CONFIG_FSCACHE_HISTOGRAM is not set
+# CONFIG_FSCACHE_DEBUG is not set
+# CONFIG_FSCACHE_OBJECT_LIST is not set
+CONFIG_CACHEFILES=m
+# CONFIG_CACHEFILES_DEBUG is not set
+# CONFIG_CACHEFILES_HISTOGRAM is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=y
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=y
+CONFIG_MISC_FILESYSTEMS=y
+CONFIG_ADFS_FS=m
+# CONFIG_ADFS_FS_RW is not set
+CONFIG_AFFS_FS=m
+# CONFIG_ECRYPT_FS is not set
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BFS_FS=m
+CONFIG_EFS_FS=m
+CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_UBIFS_FS=m
+CONFIG_UBIFS_FS_XATTR=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+# CONFIG_UBIFS_FS_DEBUG is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+CONFIG_SQUASHFS_EMBEDDED=y
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+CONFIG_VXFS_FS=m
+CONFIG_MINIX_FS=m
+CONFIG_OMFS_FS=m
+CONFIG_HPFS_FS=m
+CONFIG_QNX4FS_FS=m
+CONFIG_ROMFS_FS=y
+CONFIG_ROMFS_BACKED_BY_BLOCK=y
+# CONFIG_ROMFS_BACKED_BY_MTD is not set
+# CONFIG_ROMFS_BACKED_BY_BOTH is not set
+CONFIG_ROMFS_ON_BLOCK=y
+CONFIG_SYSV_FS=m
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG is not set
+CONFIG_EXOFS_FS=m
+# CONFIG_EXOFS_DEBUG is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_V4_1 is not set
+CONFIG_NFSD=y
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_SUNRPC_XPRT_RDMA=m
+CONFIG_RPCSEC_GSS_KRB5=y
+CONFIG_RPCSEC_GSS_SPKM3=m
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_UPCALL is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_DFS_UPCALL is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+CONFIG_NCP_FS=m
+CONFIG_NCPFS_PACKET_SIGNING=y
+CONFIG_NCPFS_IOCTL_LOCKING=y
+CONFIG_NCPFS_STRONG=y
+CONFIG_NCPFS_NFS_NS=y
+CONFIG_NCPFS_OS2_NS=y
+CONFIG_NCPFS_SMALLDOS=y
+CONFIG_NCPFS_NLS=y
+CONFIG_NCPFS_EXTRAS=y
+CONFIG_CODA_FS=m
+CONFIG_AFS_FS=m
+# CONFIG_AFS_DEBUG is not set
+# CONFIG_AFS_FSCACHE is not set
+CONFIG_9P_FS=m
+# CONFIG_9P_FSCACHE is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+CONFIG_OSF_PARTITION=y
+CONFIG_AMIGA_PARTITION=y
+# CONFIG_ATARI_PARTITION is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+CONFIG_MINIX_SUBPARTITION=y
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_UNIXWARE_DISKLABEL=y
+# CONFIG_LDM_PARTITION is not set
+CONFIG_SGI_PARTITION=y
+# CONFIG_ULTRIX_PARTITION is not set
+CONFIG_SUN_PARTITION=y
+CONFIG_KARMA_PARTITION=y
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+CONFIG_DLM=y
+# CONFIG_DLM_DEBUG is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=0
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_UNUSED_SYMBOLS=y
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FTRACE_NMI_ENTER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
+CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_RING_BUFFER=y
+CONFIG_FTRACE_NMI_ENTER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_RING_BUFFER_ALLOW_SWAP=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+# CONFIG_IRQSOFF_TRACER is not set
+CONFIG_SYSPROF_TRACER=y
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_FTRACE_SYSCALLS is not set
+# CONFIG_BOOT_TRACER is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_POWER_TRACER is not set
+# CONFIG_KSYM_TRACER is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_KMEMTRACE is not set
+# CONFIG_WORKQUEUE_TRACER is not set
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_DYNAMIC_FTRACE=y
+# CONFIG_FUNCTION_PROFILER is not set
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_STARTUP_TEST is not set
+# CONFIG_MMIOTRACE is not set
+CONFIG_RING_BUFFER_BENCHMARK=m
+# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_HAVE_ARCH_KMEMCHECK=y
+CONFIG_STRICT_DEVMEM=y
+CONFIG_X86_VERBOSE_BOOTUP=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_EARLY_PRINTK_DBGP is not set
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_X86_PTDUMP is not set
+CONFIG_DEBUG_RODATA=y
+CONFIG_DEBUG_RODATA_TEST=y
+# CONFIG_DEBUG_NX_TEST is not set
+# CONFIG_IOMMU_DEBUG is not set
+# CONFIG_IOMMU_STRESS is not set
+CONFIG_HAVE_MMIOTRACE_SUPPORT=y
+CONFIG_IO_DELAY_TYPE_0X80=0
+CONFIG_IO_DELAY_TYPE_0XED=1
+CONFIG_IO_DELAY_TYPE_UDELAY=2
+CONFIG_IO_DELAY_TYPE_NONE=3
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IO_DELAY_NONE is not set
+CONFIG_DEFAULT_IO_DELAY_TYPE=0
+# CONFIG_DEBUG_BOOT_PARAMS is not set
+# CONFIG_CPA_DEBUG is not set
+CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_PATH is not set
+# CONFIG_SECURITY_SELINUX is not set
+# CONFIG_SECURITY_TOMOYO is not set
+# CONFIG_IMA is not set
+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
+# CONFIG_DEFAULT_SECURITY_SMACK is not set
+# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+CONFIG_XOR_BLOCKS=y
+CONFIG_ASYNC_CORE=y
+CONFIG_ASYNC_MEMCPY=y
+CONFIG_ASYNC_XOR=y
+CONFIG_ASYNC_PQ=y
+CONFIG_ASYNC_RAID6_RECOV=y
+CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
+CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_FIPS=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=m
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_GF128MUL=y
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_WORKQUEUE=y
+CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_AUTHENC=y
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+CONFIG_CRYPTO_CCM=m
+CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_SEQIV=m
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTR=m
+CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_PCBC=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_FPU=y
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=y
+CONFIG_CRYPTO_VMAC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32C_INTEL=m
+CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_RMD128=m
+CONFIG_CRYPTO_RMD160=m
+CONFIG_CRYPTO_RMD256=m
+CONFIG_CRYPTO_RMD320=m
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_AES_X86_64=y
+CONFIG_CRYPTO_AES_NI_INTEL=y
+CONFIG_CRYPTO_ANUBIS=y
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_CAMELLIA=y
+CONFIG_CRYPTO_CAST5=y
+CONFIG_CRYPTO_CAST6=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=y
+CONFIG_CRYPTO_KHAZAD=y
+CONFIG_CRYPTO_SALSA20=m
+CONFIG_CRYPTO_SALSA20_X86_64=m
+CONFIG_CRYPTO_SEED=y
+CONFIG_CRYPTO_SERPENT=y
+CONFIG_CRYPTO_TEA=y
+CONFIG_CRYPTO_TWOFISH=y
+CONFIG_CRYPTO_TWOFISH_COMMON=y
+CONFIG_CRYPTO_TWOFISH_X86_64=y
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_ZLIB=m
+CONFIG_CRYPTO_LZO=m
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_ANSI_CPRNG=m
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_CRYPTO_DEV_HIFN_795X=m
+CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+CONFIG_HAVE_KVM=y
+CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_HAVE_KVM_EVENTFD=y
+CONFIG_KVM_APIC_ARCHITECTURE=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM=m
+CONFIG_KVM_INTEL=m
+CONFIG_KVM_AMD=m
+CONFIG_VIRTIO=m
+CONFIG_VIRTIO_RING=m
+CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_BALLOON=m
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=m
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=m
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_REED_SOLOMON=m
+CONFIG_REED_SOLOMON_DEC16=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_CHECK_SIGNATURE=y
+CONFIG_NLATTR=y
+CONFIG_LRU_CACHE=m
diff --git a/source/k/kernel-firmware/kernel-firmware.SlackBuild b/source/k/kernel-firmware/kernel-firmware.SlackBuild
index 5299ee4ac..400200042 100755
--- a/source/k/kernel-firmware/kernel-firmware.SlackBuild
+++ b/source/k/kernel-firmware/kernel-firmware.SlackBuild
@@ -25,17 +25,17 @@ CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-kernel-firmware
-VERSION=${VERSION:-2.6.29.6}
+VERSION=${VERSION:-2.6.33.4}
ARCH=${ARCH:-noarch}
BUILD=${BUILD:-1}
rm -rf $PKG
mkdir -p $TMP $PKG
-echo "Using /usr/src/linux-2.6.29.6/"
+echo "Using /usr/src/linux-2.6.33.4/"
echo "Make sure this is *ready*..."
mkdir -p $PKG/lib/firmware
-( cd /usr/src/linux-2.6.29.6 && make firmware_install INSTALL_FW_PATH=$PKG/lib/firmware )
-cp -a /usr/src/linux-2.6.29.6/firmware/WHENCE $PKG/lib/firmware
+( cd /usr/src/linux-2.6.33.4 && make firmware_install INSTALL_FW_PATH=$PKG/lib/firmware )
+cp -a /usr/src/linux-2.6.33.4/firmware/WHENCE $PKG/lib/firmware
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/k/kernel-generic/kernel-generic.SlackBuild b/source/k/kernel-generic/kernel-generic.SlackBuild
index 57450f86b..02978595b 100755
--- a/source/k/kernel-generic/kernel-generic.SlackBuild
+++ b/source/k/kernel-generic/kernel-generic.SlackBuild
@@ -22,7 +22,7 @@
KERNNAME=generic
-VERSION=${VERSION:-2.6.29.6}
+VERSION=${VERSION:-2.6.33.4}
ARCH=${ARCH:-x86_64}
KARCH=${KARCH:-x86}
BUILD=${BUILD:-1}
diff --git a/source/k/kernel-huge/kernel-huge.SlackBuild b/source/k/kernel-huge/kernel-huge.SlackBuild
index 79497d2d8..9961e876c 100755
--- a/source/k/kernel-huge/kernel-huge.SlackBuild
+++ b/source/k/kernel-huge/kernel-huge.SlackBuild
@@ -22,7 +22,7 @@
KERNNAME=huge
-VERSION=${VERSION:-2.6.29.6}
+VERSION=${VERSION:-2.6.33.4}
ARCH=${ARCH:-x86_64}
KARCH=${KARCH:-x86}
BUILD=${BUILD:-1}
diff --git a/source/k/kernel-modules/kernel-modules.SlackBuild b/source/k/kernel-modules/kernel-modules.SlackBuild
index 8ff699aad..369c39c26 100755
--- a/source/k/kernel-modules/kernel-modules.SlackBuild
+++ b/source/k/kernel-modules/kernel-modules.SlackBuild
@@ -21,7 +21,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-2.6.29.6}
+VERSION=${VERSION:-2.6.33.4}
ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-1}
diff --git a/source/k/linux-2.6.29.6-01-sendpage.diff b/source/k/linux-2.6.29.6-01-sendpage.diff
deleted file mode 100644
index d1e7a07af..000000000
--- a/source/k/linux-2.6.29.6-01-sendpage.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./net/socket.c.orig 2009-08-02 14:29:53.000000000 -0500
-+++ ./net/socket.c 2009-08-15 13:03:44.000000000 -0500
-@@ -694,7 +694,7 @@
- if (more)
- flags |= MSG_MORE;
-
-- return sock->ops->sendpage(sock, page, offset, size, flags);
-+ return kernel_sendpage(sock, page, offset, size, flags);
- }
-
- static ssize_t sock_splice_read(struct file *file, loff_t *ppos,
diff --git a/source/k/linux-2.6.29.6-02-default-mmap_min_addr-4096.diff b/source/k/linux-2.6.29.6-02-default-mmap_min_addr-4096.diff
deleted file mode 100644
index 53d2b5a02..000000000
--- a/source/k/linux-2.6.29.6-02-default-mmap_min_addr-4096.diff
+++ /dev/null
@@ -1,22 +0,0 @@
---- ./arch/x86/configs/i386_defconfig.orig 2009-07-02 18:41:20.000000000 -0500
-+++ ./arch/x86/configs/i386_defconfig 2009-08-16 21:03:21.000000000 -0500
-@@ -2127,7 +2127,7 @@
- # CONFIG_SECURITY_NETWORK_XFRM is not set
- CONFIG_SECURITY_FILE_CAPABILITIES=y
- # CONFIG_SECURITY_ROOTPLUG is not set
--CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=65536
-+CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=4096
- CONFIG_SECURITY_SELINUX=y
- CONFIG_SECURITY_SELINUX_BOOTPARAM=y
- CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
---- ./arch/x86/configs/x86_64_defconfig.orig 2009-07-02 18:41:20.000000000 -0500
-+++ ./arch/x86/configs/x86_64_defconfig 2009-08-16 21:03:33.000000000 -0500
-@@ -2096,7 +2096,7 @@
- # CONFIG_SECURITY_NETWORK_XFRM is not set
- CONFIG_SECURITY_FILE_CAPABILITIES=y
- # CONFIG_SECURITY_ROOTPLUG is not set
--CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=65536
-+CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=4096
- CONFIG_SECURITY_SELINUX=y
- CONFIG_SECURITY_SELINUX_BOOTPARAM=y
- CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
diff --git a/source/k/linux-2.6.29.6.tar.sign b/source/k/linux-2.6.29.6.tar.sign
deleted file mode 100644
index fa432ec7d..000000000
--- a/source/k/linux-2.6.29.6.tar.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBKTUqsyGugalF9Dw4RArSTAJ41YYTLEModFq0I2OTLHXHC9g30BwCeNmzb
-SkmIKll6naRQ31L1l0FP1wQ=
-=oPqh
------END PGP SIGNATURE-----
diff --git a/source/k/linux-2.6.33.4.tar.sign b/source/k/linux-2.6.33.4.tar.sign
new file mode 100644
index 000000000..df6df4764
--- /dev/null
+++ b/source/k/linux-2.6.33.4.tar.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBL6yrhyGugalF9Dw4RAl8SAKCGZjbaryAxyoi9JGPRpL3JRTTyEQCeMJIf
+A492a4GfHfenmWC5lfRpckw=
+=2DYq
+-----END PGP SIGNATURE-----
diff --git a/source/kde/KDE.SlackBuild b/source/kde/KDE.SlackBuild
index d8914eb54..19f6ba5b8 100755
--- a/source/kde/KDE.SlackBuild
+++ b/source/kde/KDE.SlackBuild
@@ -1,8 +1,9 @@
#!/bin/sh
-# Build (and install) all KDE packages.
+# Build (and install) all KDE core packages.
# Written for Slackware by volkerdi@slackware.com.
# Modified for KDE4 by Robby Workman <rworkman@slackware.com>
+# Modified for KDE4 by Eric Hameleers <alien@slackware.com>
# kdeaccessibility builds plugins for epos, festival, flite, freetts, and
# hadifix, so they should work with kde if any of those are installed later
@@ -17,36 +18,31 @@ QTDIR=/usr/lib${LIBDIRSUFFIX}/qt ; export QTDIR
[ -d kdebase ] && eval $(sed -e "s#/lib#/lib${LIBDIRSUFFIX}#" ./kdebase/profile.d/kde.sh)
KDEMODS=" \
+ polkit-qt-1 \
kdelibs \
kdepimlibs \
- kdebase-workspace \
kdebase \
kdebase-workspace \
kdebase-runtime \
+ kdesdk \
+ kdegraphics \
+ kdebindings \
+ kdebase-workspace \
kdeaccessibility \
kdeutils \
kdemultimedia \
kdenetwork \
+ oxygen-icons \
kdeadmin \
kdeartwork \
kdegames \
kdetoys \
- kdegraphics \
- kdesdk \
kdepim \
+ kdepim-runtime \
kdeedu \
- kdeplasma-addons \
- kdebindings \
kdewebdev \
- kdevplatform \
- kdevelop \
- konq-plugins \
- koffice \
- amarok \
- guidance-power-manager \
- kaudiocreator \
- ktorrent \
- skanlite"
+ kdeplasma-addons \
+ polkit-kde-1 "
# Allow for specification of individual packages to be built:
if [ -z "$1" ]; then
diff --git a/source/kde/KDE.options b/source/kde/KDE.options
index d5e478fec..730f3f460 100644
--- a/source/kde/KDE.options
+++ b/source/kde/KDE.options
@@ -3,10 +3,19 @@
# usually has a different version number), or by setting your own
# environment variables.
-[ -z $VERSION ] && export VERSION=4.2.4
-[ -z $ARCH ] && export ARCH=x86_64
+[ -z $VERSION ] && export VERSION=4.4.3
[ -z $BUILD ] && export BUILD=1
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
# Use this as CFLAGS and CXXFLAGS:
if [ -z "$SLKCFLAGS" ]; then
if [ "$ARCH" = "i486" ]; then
@@ -24,6 +33,9 @@ if [ -z "$SLKCFLAGS" ]; then
elif [ "$ARCH" = "armel" ]; then
export SLKCFLAGS="-O2 -march=armv4t"
export LIBDIRSUFFIX=""
+ else
+ export SLKCFLAGS="-O2"
+ export LIBDIRSUFFIX=""
fi
fi
@@ -32,3 +44,8 @@ if [ -z "$NUMJOBS" ]; then
export NUMJOBS="-j7"
fi
+# Additional cmake flags that are spanned across the KDE modules
+# Do not use "final build" unless we build an actual release.
+#export KDE_OPT_ARGS=" -DKDE4_ENABLE_FINAL=\"ON\" -DSITE=\"slackware.com\" "
+export KDE_OPT_ARGS=" -DSITE=\"slackware.com\" "
+
diff --git a/source/kde/KDE_extra.SlackBuild b/source/kde/KDE_extra.SlackBuild
new file mode 100755
index 000000000..9b702457d
--- /dev/null
+++ b/source/kde/KDE_extra.SlackBuild
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# Build (and install) all KDE "extra" packages.
+# Written for Slackware by volkerdi@slackware.com.
+# Modified for KDE4 by Robby Workman <rworkman@slackware.com>
+# Modified for KDE4 by Eric Hameleers <alien@slackware.com>
+
+# Set the config option variables if they are not already set:
+[ -r ./KDE.options ] && . ./KDE.options
+
+# This avoids compiling a version number into KDE's .la files:
+QTDIR=/usr/lib${LIBDIRSUFFIX}/qt ; export QTDIR
+
+# Get the kde environment variables
+[ -d kdebase ] && eval $(sed -e "s#/lib#/lib${LIBDIRSUFFIX}#" ./kdebase/profile.d/kde.sh)
+
+KDEMODS=" \
+ kdevplatform \
+ kdevelop \
+ konq-plugins \
+ guidance-power-manager \
+ kopete-cryptography \
+ ktorrent \
+ skanlite \
+ koffice \
+ kaudiocreator \
+ amarok \
+ k3b"
+
+# Allow for specification of individual packages to be built:
+if [ -z "$1" ]; then
+ MODQUEUE=$KDEMODS
+else
+ MODQUEUE=$*
+fi
+
+for module in \
+ $MODQUEUE ;
+do
+ cd $module
+ ./$module.SlackBuild
+ if [ $? = 0 ]; then
+ # Yes, I will build with the fresh packages installed:
+ upgradepkg --install-new --reinstall /tmp/${module}-*.txz
+ # Keep MIME database current:
+ /usr/bin/update-mime-database /usr/share/mime 1> /dev/null 2> /dev/null &
+ rm -rf /tmp/package-${module} /tmp/${module}-$VERSION
+ else
+ echo "${module} failed to build."
+ exit 1
+ fi
+ cd - ;
+done
+
diff --git a/source/kde/amarok/amarok.SlackBuild b/source/kde/amarok/amarok.SlackBuild
index e7d60e69c..2a6fc0829 100755
--- a/source/kde/amarok/amarok.SlackBuild
+++ b/source/kde/amarok/amarok.SlackBuild
@@ -39,47 +39,14 @@ if [ -d /usr/lib${LIBDIRSUFFIX}/qt ]; then
QTDIR=/usr/lib${LIBDIRSUFFIX}/qt
fi
-# If there's no libmysqld.a, we have to build it:
+# Notify the user if libmysqld.a (embedded mysql) is missing:
if [ ! -r /usr/lib${LIBDIRSUFFIX}/mysql/libmysqld.a ]; then
- MYSQL="$CWD/../../ap/mysql/mysql*.tar.?z*"
- if [ ! -e "$MYSQL" ]; then
- if [ -e "$CWD/mysql*.tar.?z*" ]; then
- MYSQL="$CWD/mysql*.tar.?z*"
- fi
- fi
- ( cd $TMP
- tar xvf $MYSQL
- MYSQLDIR="mysql-$(basename $(echo $MYSQL | rev | cut -f 1 -d - | rev) .tar.bz2)"
- if [ -d "$MYSQLDIR" ]; then
- cd "$MYSQLDIR"
- CFLAGS=" $SLKCFLAGS -fPIC" CXXFLAGS=" $SLKCFLAGS -fPIC" \
- ./configure \
- --prefix=/usr \
- --with-mysqld-user=mysql \
- --with-unix-socket-path=/var/run/mysql/mysql.sock \
- --localstatedir=/var/lib${LIBDIRSUFFIX}/mysql \
- --enable-assembler \
- --with-raid \
- --without-debug \
- --enable-thread-safe-client \
- --without-bench \
- --with-extra-charsets=complex \
- --with-embedded-server \
- --with-vio \
- --with-pic \
- --with-openssl \
- --build=$ARCH-slackware-linux
- make $NUMJOBS || make || exit 1
- mkdir -p /usr/lib${LIBDIRSUFFIX}/mysql
- cp libmysqld/libmysqld.a /usr/lib${LIBDIRSUFFIX}/mysql
- fi
- )
-fi
-
-if [ ! -r /usr/lib${LIBDIRSUFFIX}/mysql/libmysqld.a ]; then
- echo "ERROR: No libmysqld.a. Strongly advised to put a MySQL source .tar.bz2 in"
- echo "this directory and try again..."
- sleep 10
+ cat << EOF
+ERROR: missing /usr/lib${LIBDIRSUFFIX}/mysql/libmysqld.a
+ please use mysql-embedded.build in source/ap/mysql/
+ to build and install this, and then try again.
+EOF
+ exit 1
fi
rm -rf $PKG
@@ -89,9 +56,6 @@ echo "Building amarok-$VERSION..."
tar xvf $CWD/../src/extragear/amarok-$VERSION.tar.?z* || exit 1
cd amarok-$VERSION
-# Make qtscript optional instead of required:
-#zcat $CWD/amarok.qtscript.optional.diff.gz | patch -p1 --verbose || exit 1
-
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -109,6 +73,7 @@ export QTSCRIPTS=/usr/lib${LIBDIRSUFFIX}/qt4/plugins/script
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/amarok/amarok.qtscript.optional.diff b/source/kde/amarok/amarok.qtscript.optional.diff
deleted file mode 100644
index 1cf3af716..000000000
--- a/source/kde/amarok/amarok.qtscript.optional.diff
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up amarok-2.0.90/CMakeLists.txt.qtscript_not_required amarok-2.0.90/CMakeLists.txt
---- amarok-2.0.90/CMakeLists.txt.qtscript_not_required 2009-04-06 16:29:12.000000000 -0500
-+++ amarok-2.0.90/CMakeLists.txt 2009-04-10 13:00:07.000000000 -0500
-@@ -38,8 +38,8 @@ if( WITH_PLAYER )
-
- macro_log_feature( KDE4_FOUND "kdelibs" "The toolkit Amarok uses to build" "http://www.kde.org" TRUE "4.2.0" "" )
-
-- find_package( QtScriptQtBindings REQUIRED )
-- macro_log_feature( QTSCRIPTQTBINDINGS_FOUND "qtscript-qt" "QtScript Qt Bindings" "http://code.google.com/p/qtscriptgenerator/" TRUE "" "" )
-+ macro_optional_find_package(QtScriptQtBindings)
-+ macro_log_feature( QTSCRIPTQTBINDINGS_FOUND "qtscript-qt" "QtScript Qt Bindings" "http://code.google.com/p/qtscriptgenerator/" FALSE "" "" )
-
- add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
-
diff --git a/source/kde/amarok/local.options b/source/kde/amarok/local.options
index 3b7a8b384..b086e127c 100644
--- a/source/kde/amarok/local.options
+++ b/source/kde/amarok/local.options
@@ -1,3 +1 @@
-VERSION=2.1.1
-BUILD=1
-
+VERSION=2.3.0
diff --git a/source/kde/guidance-power-manager/guidance-power-manager.SlackBuild b/source/kde/guidance-power-manager/guidance-power-manager.SlackBuild
index afefec2a1..5147c9789 100755
--- a/source/kde/guidance-power-manager/guidance-power-manager.SlackBuild
+++ b/source/kde/guidance-power-manager/guidance-power-manager.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# Copyright 2008 Robby Workman, Northport, AL, USA
# All rights reserved.
#
@@ -60,9 +60,9 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX:PATH=/usr \
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc/kde \
diff --git a/source/kde/guidance-power-manager/local.options b/source/kde/guidance-power-manager/local.options
new file mode 100644
index 000000000..dc6e9bd41
--- /dev/null
+++ b/source/kde/guidance-power-manager/local.options
@@ -0,0 +1 @@
+VERSION=4.4.0
diff --git a/source/kde/guidance-power-manager/slack-desc b/source/kde/guidance-power-manager/slack-desc
index 4e3c196b2..e0c200ccf 100644
--- a/source/kde/guidance-power-manager/slack-desc
+++ b/source/kde/guidance-power-manager/slack-desc
@@ -6,7 +6,7 @@
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-guidance-power-manager: guidance-power-manager (kde4's power manager daemon)
+guidance-power-manager: guidance-power-manager (KDE4 power manager daemon)
guidance-power-manager:
guidance-power-manager: This is a frontend to HAL's power features for KDE.
guidance-power-manager:
diff --git a/source/kde/k3b/k3b.SlackBuild b/source/kde/k3b/k3b.SlackBuild
index 495edf62e..a32bbc74b 100755
--- a/source/kde/k3b/k3b.SlackBuild
+++ b/source/kde/k3b/k3b.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -43,12 +43,11 @@ fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
+rm -rf k3b-$VERSION
echo "Building k3b-$VERSION..."
tar xvf $CWD/../src/extragear/k3b-$VERSION.tar.?z*
cd k3b-$VERSION
-zcat $CWD/k3b.internal.libsamplerate.diff.gz | patch -p1 || exit 1
-
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -56,17 +55,23 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+mkdir build
+cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
- .
+ ..
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
+cd -
+
+# Move the dbus configuration files to the proper place:
+mv $PKG/etc/kde/dbus-1 $PKG/etc/
if [ -d $PKG/usr/man ]; then
gzip -9 $PKG/usr/man/man?/*
@@ -77,10 +82,8 @@ cp -a \
AUTHORS COPYING* FAQ INSTALL KNOWNBUGS PERMISSIONS README RELEASE_HOWTO TODO \
$PKG/usr/doc/k3b-$VERSION
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-)
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/kde/k3b/k3b.internal.libsamplerate.diff b/source/kde/k3b/k3b.internal.libsamplerate.diff
deleted file mode 100644
index 3c6079598..000000000
--- a/source/kde/k3b/k3b.internal.libsamplerate.diff
+++ /dev/null
@@ -1,26697 +0,0 @@
-diff -r -u --new-file k3b-r948463/CMakeLists.txt k3b-r948463.patched/CMakeLists.txt
---- k3b-r948463/CMakeLists.txt 2009-04-03 01:16:29.000000000 -0500
-+++ k3b-r948463.patched/CMakeLists.txt 2009-04-03 14:00:42.000000000 -0500
-@@ -61,12 +61,6 @@
- FALSE "1.4.0" "")
- endif(K3B_ENABLE_TAGLIB)
-
--macro_optional_find_package(Samplerate)
--macro_log_feature( SAMPLERATE_FOUND "Samplerate"
-- "Audio sampling rate conversion."
-- "http://www.mega-nerd.com/SRC/"
-- TRUE "" "")
--
- if(K3B_ENABLE_MUSICBRAINZ)
- find_package(MusicBrainz)
- macro_log_feature( MUSICBRAINZ_FOUND "Musicbrainz"
-@@ -143,10 +137,6 @@
- endif(K3B_BUILD_OGGVORBIS_DECODER_PLUGIN OR K3B_BUILD_OGGVORBIS_ENCODER_PLUGIN)
-
-
--if (WIN32)
--find_library(SAMPLERATE_LIBRARIES samplerate-0)
--endif(WIN32)
--
- ################## K3b build settings #################################
- include(ConfigureChecks.cmake)
-
-diff -r -u --new-file k3b-r948463/ConfigureChecks.cmake k3b-r948463.patched/ConfigureChecks.cmake
---- k3b-r948463/ConfigureChecks.cmake 2009-04-03 01:16:29.000000000 -0500
-+++ k3b-r948463.patched/ConfigureChecks.cmake 2009-04-03 14:13:45.000000000 -0500
-@@ -9,5 +9,8 @@
-
- check_function_exists(stat64 HAVE_STAT64)
-
-+check_type_size("int" SIZEOF_INT)
-+check_type_size("long" SIZEOF_LONG)
-+
- check_include_files(sys/vfs.h HAVE_SYS_VFS_H)
- check_include_files(sys/statvfs.h HAVE_SYS_STATVFS_H)
-diff -r -u --new-file k3b-r948463/cmake/modules/FindSamplerate.cmake k3b-r948463.patched/cmake/modules/FindSamplerate.cmake
---- k3b-r948463/cmake/modules/FindSamplerate.cmake 2009-04-03 01:16:03.000000000 -0500
-+++ k3b-r948463.patched/cmake/modules/FindSamplerate.cmake 2009-04-03 14:00:42.000000000 -0500
-@@ -19,7 +19,7 @@
- FIND_PATH(SAMPLERATE_INCLUDE_DIR NAMES samplerate.h
- )
-
--FIND_LIBRARY(SAMPLERATE_LIBRARIES NAMES samplerate samplerate-0
-+FIND_LIBRARY(SAMPLERATE_LIBRARIES NAMES samplerate
- )
-
- include(FindPackageHandleStandardArgs)
-diff -r -u --new-file k3b-r948463/libk3b/CMakeLists.txt k3b-r948463.patched/libk3b/CMakeLists.txt
---- k3b-r948463/libk3b/CMakeLists.txt 2009-04-03 01:16:29.000000000 -0500
-+++ k3b-r948463.patched/libk3b/CMakeLists.txt 2009-04-03 14:00:42.000000000 -0500
-@@ -33,6 +33,8 @@
- add_subdirectory( projects )
- add_subdirectory( jobs )
-
-+macro_optional_find_package(Samplerate)
-+
- set(k3b_jobs_SRCS
- jobs/k3bdatatrackreader.cpp
- jobs/k3breadcdreader.cpp
-@@ -206,6 +208,12 @@
- projects/videodvd/k3bvideodvdimager.cpp
- )
-
-+set(k3b_samplerate_SRCS
-+ plugin/libsamplerate/samplerate.c
-+ plugin/libsamplerate/src_sinc.c
-+ plugin/libsamplerate/src_zoh.c
-+ plugin/libsamplerate/src_linear.c)
-+
-
- set(k3b_LIB_SRCS
- ${k3b_core_SRCS}
-@@ -229,6 +237,11 @@
- )
- endif (ENABLE_DVD_RIPPING)
-
-+if(NOT SAMPLERATE_FOUND)
-+ set(k3b_LIB_SRCS ${k3b_LIB_SRCS} ${k3b_samplerate_SRCS})
-+endif(NOT SAMPLERATE_FOUND)
-+
-+
- kde4_add_library(k3b SHARED ${k3b_LIB_SRCS})
-
- target_link_libraries(k3b
-@@ -238,12 +251,16 @@
- ${KDE4_KDE3SUPPORT_LIBS}
- ${KDE4_KPTY_LIBS}
- ${KCDDB_LIBRARIES}
-- ${SAMPLERATE_LIBRARIES}
- k3bdevice
- )
- if(NOT WIN32)
- target_link_libraries(k3b dl)
- endif(NOT WIN32)
-+
-+if(SAMPLERATE_FOUND)
-+ target_link_libraries(k3b ${SAMPLERATE_LIBRARIES})
-+endif(SAMPLERATE_FOUND)
-+
-
- if(ENABLE_DVD_RIPPING)
- target_link_libraries(k3b ${DVDREAD_LIBRARIES})
-diff -r -u --new-file k3b-r948463/libk3b/plugin/k3baudiodecoder.cpp k3b-r948463.patched/libk3b/plugin/k3baudiodecoder.cpp
---- k3b-r948463/libk3b/plugin/k3baudiodecoder.cpp 2009-04-03 01:16:29.000000000 -0500
-+++ k3b-r948463.patched/libk3b/plugin/k3baudiodecoder.cpp 2009-04-03 14:00:42.000000000 -0500
-@@ -26,7 +26,11 @@
-
- #include <math.h>
-
-+#ifdef HAVE_LIBSAMPLERATE
- #include <samplerate.h>
-+#else
-+#include "libsamplerate/samplerate.h"
-+#endif
-
- #if !(HAVE_LRINT && HAVE_LRINTF)
- #define lrint(dbl) ((int) (dbl))
-diff -r -u --new-file k3b-r948463/libk3b/plugin/libsamplerate/common.h k3b-r948463.patched/libk3b/plugin/libsamplerate/common.h
---- k3b-r948463/libk3b/plugin/libsamplerate/common.h 1969-12-31 18:00:00.000000000 -0600
-+++ k3b-r948463.patched/libk3b/plugin/libsamplerate/common.h 2009-04-03 14:00:42.000000000 -0500
-@@ -0,0 +1,105 @@
-+/*
-+** Copyright (C) 2002,2003 Erik de Castro Lopo <erikd@mega-nerd.com>
-+**
-+** This program is free software; you can redistribute it and/or modify
-+** it under the terms of the GNU General Public License as published by
-+** the Free Software Foundation; either version 2 of the License, or
-+** (at your option) any later version.
-+**
-+** This program is distributed in the hope that it will be useful,
-+** but WITHOUT ANY WARRANTY; without even the implied warranty of
-+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+** GNU General Public License for more details.
-+**
-+** You should have received a copy of the GNU General Public License
-+** along with this program; if not, write to the Free Software
-+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+
-+#ifndef COMMON_H_INCLUDED
-+#define COMMON_H_INCLUDED
-+
-+#ifdef HAVE_STDINT_H
-+#include <stdint.h>
-+#elif (SIZEOF_INT == 4)
-+typedef int int32_t ;
-+#elif (SIZEOF_LONG == 4)
-+typedef long int32_t ;
-+#endif
-+
-+#define SRC_MAX_RATIO 12
-+#define SRC_MIN_RATIO_DIFF (1e-20)
-+
-+#define MAX(a,b) (((a) > (b)) ? (a) : (b))
-+#define MIN(a,b) (((a) < (b)) ? (a) : (b))
-+
-+#define MAKE_MAGIC(a,b,c,d,e,f) ((a)+((b)<<4)+((c)<<8)+((d)<<12)+((e)<<16)+((f)<<20))
-+
-+#include "samplerate.h"
-+
-+enum
-+{ SRC_FALSE = 0,
-+ SRC_TRUE = 1
-+} ;
-+
-+enum
-+{ SRC_ERR_NO_ERROR = 0,
-+
-+ SRC_ERR_MALLOC_FAILED,
-+ SRC_ERR_BAD_STATE,
-+ SRC_ERR_BAD_DATA,
-+ SRC_ERR_BAD_DATA_PTR,
-+ SRC_ERR_NO_PRIVATE,
-+ SRC_ERR_BAD_SRC_RATIO,
-+ SRC_ERR_BAD_PROC_PTR,
-+ SRC_ERR_SHIFT_BITS,
-+ SRC_ERR_FILTER_LEN,
-+ SRC_ERR_BAD_CONVERTER,
-+ SRC_ERR_BAD_CHANNEL_COUNT,
-+ SRC_ERR_SINC_BAD_BUFFER_LEN,
-+ SRC_ERR_SIZE_INCOMPATIBILITY,
-+ SRC_ERR_BAD_PRIV_PTR,
-+ SRC_ERR_BAD_SINC_STATE,
-+ SRC_ERR_DATA_OVERLAP,
-+
-+ /* This must be the last error number. */
-+ SRC_ERR_MAX_ERROR
-+} ;
-+
-+typedef struct SRC_PRIVATE_tag
-+{ double last_ratio, last_position ;
-+
-+ void *private_data ;
-+
-+ int (*process) (struct SRC_PRIVATE_tag *psrc, SRC_DATA *data) ;
-+ void (*reset) (struct SRC_PRIVATE_tag *psrc) ;
-+
-+ int error ;
-+ int channels ;
-+} SRC_PRIVATE ;
-+
-+/* In src_sinc.c */
-+int sinc_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
-+
-+const char* sinc_get_name (int src_enum) ;
-+const char* sinc_get_description (int src_enum) ;
-+
-+int sinc_set_converter (SRC_PRIVATE *psrc, int src_enum) ;
-+
-+/* In src_linear.c */
-+int linear_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
-+
-+const char* linear_get_name (int src_enum) ;
-+const char* linear_get_description (int src_enum) ;
-+
-+int linear_set_converter (SRC_PRIVATE *psrc, int src_enum) ;
-+
-+/* In src_zoh.c */
-+int zoh_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
-+
-+const char* zoh_get_name (int src_enum) ;
-+const char* zoh_get_description (int src_enum) ;
-+
-+int zoh_set_converter (SRC_PRIVATE *psrc, int src_enum) ;
-+
-+#endif /* COMMON_H_INCLUDED */
-diff -r -u --new-file k3b-r948463/libk3b/plugin/libsamplerate/fastest_coeffs.h k3b-r948463.patched/libk3b/plugin/libsamplerate/fastest_coeffs.h
---- k3b-r948463/libk3b/plugin/libsamplerate/fastest_coeffs.h 1969-12-31 18:00:00.000000000 -0600
-+++ k3b-r948463.patched/libk3b/plugin/libsamplerate/fastest_coeffs.h 2009-04-03 14:00:42.000000000 -0500
-@@ -0,0 +1,2493 @@
-+/*
-+** Copyright (C) 2002,2003 Erik de Castro Lopo <erikd@mega-nerd.com>
-+**
-+** This program is free software; you can redistribute it and/or modify
-+** it under the terms of the GNU General Public License as published by
-+** the Free Software Foundation; either version 2 of the License, or
-+** (at your option) any later version.
-+**
-+** This program is distributed in the hope that it will be useful,
-+** but WITHOUT ANY WARRANTY; without even the implied warranty of
-+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+** GNU General Public License for more details.
-+**
-+** You should have received a copy of the GNU General Public License
-+** along with this program; if not, write to the Free Software
-+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+
-+
-+/*
-+** f = make_filter (8, 128, 100.3) ;
-+** Pass band width : 0.0039062 (should be 0.0039062)
-+** Stop band atten. : 100.71 dB
-+** -3dB band width : 0.484
-+** half length : 2463
-+** increment : 128
-+*/
-+
-+ 8.31472372954840555082e-01,
-+ 8.31414005540308198583e-01,
-+ 8.31238918266223869580e-01,
-+ 8.30947156036480505392e-01,
-+ 8.30538793675450581766e-01,
-+ 8.30013935904800659316e-01,
-+ 8.29372717311066987023e-01,
-+ 8.28615302303967515840e-01,
-+ 8.27741885065490623496e-01,
-+ 8.26752689489751890761e-01,
-+ 8.25647969113678215081e-01,
-+ 8.24428007038499943704e-01,
-+ 8.23093115842108757896e-01,
-+ 8.21643637482293187624e-01,
-+ 8.20079943190897053817e-01,
-+ 8.18402433358933589780e-01,
-+ 8.16611537412689103554e-01,
-+ 8.14707713680854150873e-01,
-+ 8.12691449252757824873e-01,
-+ 8.10563259827706050764e-01,
-+ 8.08323689555523805517e-01,
-+ 8.05973310868314363198e-01,
-+ 8.03512724303517833491e-01,
-+ 8.00942558318331943035e-01,
-+ 7.98263469095534694553e-01,
-+ 7.95476140340800830231e-01,
-+ 7.92581283071560838138e-01,
-+ 7.89579635397499868255e-01,
-+ 7.86471962292734527722e-01,
-+ 7.83259055359786127148e-01,
-+ 7.79941732585400893107e-01,
-+ 7.76520838088307852054e-01,
-+ 7.72997241859018080490e-01,
-+ 7.69371839491718167992e-01,
-+ 7.65645551908390675777e-01,
-+ 7.61819325075220210586e-01,
-+ 7.57894129711408459649e-01,
-+ 7.53870960990470018181e-01,
-+ 7.49750838234153449413e-01,
-+ 7.45534804599028211314e-01,
-+ 7.41223926755909090502e-01,
-+ 7.36819294562192195208e-01,
-+ 7.32322020727209643809e-01,
-+ 7.27733240470738174110e-01,
-+ 7.23054111174766811487e-01,
-+ 7.18285812028632841830e-01,
-+ 7.13429543667664534112e-01,
-+ 7.08486527805442301009e-01,
-+ 7.03458006859804640953e-01,
-+ 6.98345243572719653891e-01,
-+ 6.93149520624175785599e-01,
-+ 6.87872140240182283755e-01,
-+ 6.82514423795047564525e-01,
-+ 6.77077711408058502407e-01,
-+ 6.71563361534684655219e-01,
-+ 6.65972750552474845875e-01,
-+ 6.60307272341742135247e-01,
-+ 6.54568337861228477514e-01,
-+ 6.48757374718860524432e-01,
-+ 6.42875826737744904271e-01,
-+ 6.36925153517562181449e-01,
-+ 6.30906829991492501541e-01,
-+ 6.24822345978837789815e-01,
-+ 6.18673205733470954470e-01,
-+ 6.12460927488293727095e-01,
-+ 6.06187042995817604307e-01,
-+ 5.99853097065060292259e-01,
-+ 5.93460647094893878339e-01,
-+ 5.87011262603992944875e-01,
-+ 5.80506524757569142281e-01,
-+ 5.73948025891025337408e-01,
-+ 5.67337369030688098981e-01,
-+ 5.60676167411809700525e-01,
-+ 5.53966043993961543279e-01,
-+ 5.47208630974010734604e-01,
-+ 5.40405569296826038261e-01,
-+ 5.33558508163880174102e-01,
-+ 5.26669104539922661168e-01,
-+ 5.19739022657876970079e-01,
-+ 5.12769933522119303326e-01,
-+ 5.05763514410336290084e-01,
-+ 4.98721448374081555155e-01,
-+ 4.91645423738241937883e-01,
-+ 4.84537133599546865348e-01,
-+ 4.77398275324308896117e-01,
-+ 4.70230550045545592219e-01,
-+ 4.63035662159660077464e-01,
-+ 4.55815318822846149427e-01,
-+ 4.48571229447379538069e-01,
-+ 4.41305105197960123586e-01,
-+ 4.34018658488283970431e-01,
-+ 4.26713602477997000495e-01,
-+ 4.19391650570203500248e-01,
-+ 4.12054515909689722530e-01,
-+ 4.04703910882034223473e-01,
-+ 3.97341546613763640927e-01,
-+ 3.89969132473721613596e-01,
-+ 3.82588375575806771689e-01,
-+ 3.75200980283257823356e-01,
-+ 3.67808647714624070701e-01,
-+ 3.60413075251609871241e-01,
-+ 3.53015956048925771960e-01,
-+ 3.45618978546330835044e-01,
-+ 3.38223825983006376461e-01,
-+ 3.30832175914426429575e-01,
-+ 3.23445699731881031180e-01,
-+ 3.16066062184803764357e-01,
-+ 3.08694920906066150312e-01,
-+ 3.01333925940378832831e-01,
-+ 2.93984719275965256102e-01,
-+ 2.86648934379644393378e-01,
-+ 2.79328195735489559492e-01,
-+ 2.72024118387182545220e-01,
-+ 2.64738307484245039003e-01,
-+ 2.57472357832259801658e-01,
-+ 2.50227853447243409057e-01,
-+ 2.43006367114305704691e-01,
-+ 2.35809459950733935063e-01,
-+ 2.28638680973647728800e-01,
-+ 2.21495566672345989279e-01,
-+ 2.14381640585498134399e-01,
-+ 2.07298412883298144305e-01,
-+ 2.00247379954717363848e-01,
-+ 1.93230023999986955108e-01,
-+ 1.86247812628430653437e-01,
-+ 1.79302198461779749294e-01,
-+ 1.72394618743085786816e-01,
-+ 1.65526494951356295537e-01,
-+ 1.58699232422028796430e-01,
-+ 1.51914219973401071195e-01,
-+ 1.45172829539132269838e-01,
-+ 1.38476415806921215879e-01,
-+ 1.31826315863480453272e-01,
-+ 1.25223848845901208904e-01,
-+ 1.18670315599523901184e-01,
-+ 1.12166998342411894374e-01,
-+ 1.05715160336527447260e-01,
-+ 9.93160455657086521652e-02,
-+ 9.29708784205405536216e-02,
-+ 8.66808633902153846673e-02,
-+ 8.04471847614677826321e-02,
-+ 7.42710063246745516574e-02,
-+ 6.81534710872001986415e-02,
-+ 6.20957009940759641076e-02,
-+ 5.60987966560835549235e-02,
-+ 5.01638370853247708703e-02,
-+ 4.42918794383505357026e-02,
-+ 3.84839587669171534490e-02,
-+ 3.27410877764400740086e-02,
-+ 2.70642565922108620236e-02,
-+ 2.14544325334371267788e-02,
-+ 1.59125598951669576520e-02,
-+ 1.04395597381551803740e-02,
-+ 5.03632968672305773861e-03,
-+-2.96256265336385191805e-04,
-+-5.55734794075828358179e-03,
-+-1.07461191566687631893e-02,
-+-1.58617678942645466689e-02,
-+-2.09035164602743607498e-02,
-+-2.58706116401622790435e-02,
-+-3.07623248430414844568e-02,
-+-3.55779522382659724178e-02,
-+-4.03168148836769782428e-02,
-+-4.49782588454727128013e-02,
-+-4.95616553096875425699e-02,
-+-5.40664006852556791594e-02,
-+-5.84919166986474642345e-02,
-+-6.28376504800633867154e-02,
-+-6.71030746411782619276e-02,
-+-7.12876873444269476554e-02,
-+-7.53910123638282386738e-02,
-+-7.94125991373483691715e-02,
-+-8.33520228108008270906e-02,
-+-8.72088842732959695914e-02,
-+-9.09828101842390379872e-02,
-+-9.46734529918955292072e-02,
-+-9.82804909435327500589e-02,
-+-1.01803628087157427284e-01,
-+-1.05242594264867719844e-01,
-+-1.08597145097841310535e-01,
-+-1.11867061962988789681e-01,
-+-1.15052151961296145188e-01,
-+-1.18152247877890054228e-01,
-+-1.21167208133862752684e-01,
-+-1.24096916729885473063e-01,
-+-1.26941283181660202750e-01,
-+-1.29700242447243679900e-01,
-+-1.32373754846295377252e-01,
-+-1.34961805971292009287e-01,
-+-1.37464406590764143257e-01,
-+-1.39881592544604443917e-01,
-+-1.42213424631507739937e-01,
-+-1.44459988488595730827e-01,
-+-1.46621394463294696386e-01,
-+-1.48697777477524800682e-01,
-+-1.50689296884269657850e-01,
-+-1.52596136316595465399e-01,
-+-1.54418503529190731527e-01,
-+-1.56156630232500315270e-01,
-+-1.57810771919529219121e-01,
-+-1.59381207685401427021e-01,
-+-1.60868240039743037872e-01,
-+-1.62272194711985145998e-01,
-+-1.63593420449666626659e-01,
-+-1.64832288809824062392e-01,
-+-1.65989193943563151379e-01,
-+-1.67064552373901109572e-01,
-+-1.68058802766975601273e-01,
-+-1.68972405696717037360e-01,
-+-1.69805843403086798027e-01,
-+-1.70559619543971530131e-01,
-+-1.71234258940853617537e-01,
-+-1.71830307318344255307e-01,
-+-1.72348331037702334756e-01,
-+-1.72788916824434257702e-01,
-+-1.73152671490098081231e-01,
-+-1.73440221648409775845e-01,
-+-1.73652213425782242506e-01,
-+-1.73789312166397952319e-01,
-+-1.73852202131942051855e-01,
-+-1.73841586196111674845e-01,
-+-1.73758185534021086793e-01,
-+-1.73602739306629005878e-01,
-+-1.73376004340306061335e-01,
-+-1.73078754801670009478e-01,
-+-1.72711781867818603420e-01,
-+-1.72275893392080048372e-01,
-+-1.71771913565416961545e-01,
-+-1.71200682573611373538e-01,
-+-1.70563056250360139954e-01,
-+-1.69859905726417126370e-01,
-+-1.69092117074913228514e-01,
-+-1.68260590952989147473e-01,
-+-1.67366242239875284703e-01,
-+-1.66409999671557895518e-01,
-+-1.65392805472166642966e-01,
-+-1.64315614982222552021e-01,
-+-1.63179396283883837437e-01,
-+-1.61985129823331186483e-01,
-+-1.60733808030429803360e-01,
-+-1.59426434935813571281e-01,
-+-1.58064025785527417778e-01,
-+-1.56647606653372045704e-01,
-+-1.55178214051094831571e-01,
-+-1.53656894536566474008e-01,
-+-1.52084704320088470730e-01,
-+-1.50462708868975059140e-01,
-+-1.48791982510548842500e-01,
-+-1.47073608033699704256e-01,
-+-1.45308676289147314931e-01,
-+-1.43498285788550977715e-01,
-+-1.41643542302611558092e-01,
-+-1.39745558458309881988e-01,
-+-1.37805453335422323224e-01,
-+-1.35824352062461073398e-01,
-+-1.33803385412180564362e-01,
-+-1.31743689396791985313e-01,
-+-1.29646404863030306753e-01,
-+-1.27512677087215337002e-01,
-+-1.25343655370452389253e-01,
-+-1.23140492634104758984e-01,
-+-1.20904345015691472298e-01,
-+-1.18636371465341922127e-01,
-+-1.16337733342949820048e-01,
-+-1.14009594016166518338e-01,
-+-1.11653118459372716065e-01,
-+-1.09269472853762789066e-01,
-+-1.06859824188683741331e-01,
-+-1.04425339864360325337e-01,
-+-1.01967187296145456177e-01,
-+-9.94865335204263567803e-02,
-+-9.69845448023236023083e-02,
-+-9.44623862453117940641e-02,
-+-9.19212214028948121358e-02,
-+-8.93622118924671249296e-02,
-+-8.67865170114848205607e-02,
-+-8.41952933560805999447e-02,
-+-8.15896944422443981537e-02,
-+-7.89708703296961439522e-02,
-+-7.63399672485739477779e-02,
-+-7.36981272290610500697e-02,
-+-7.10464877340710454501e-02,
-+-6.83861812951113146042e-02,
-+-6.57183351514422919859e-02,
-+-6.30440708926501142129e-02,
-+-6.03645041047437408421e-02,
-+-5.76807440198948140342e-02,
-+-5.49938931699267691267e-02,
-+-5.23050470436661057994e-02,
-+-4.96152937482609926456e-02,
-+-4.69257136745778041798e-02,
-+-4.42373791667729082677e-02,
-+-4.15513541961495605492e-02,
-+-3.88686940393953503370e-02,
-+-3.61904449613011935938e-02,
-+-3.35176439020573244121e-02,
-+-3.08513181692228674602e-02,
-+-2.81924851344595717162e-02,
-+-2.55421519351213023585e-02,
-+-2.29013151807887539724e-02,
-+-2.02709606648342685609e-02,
-+-1.76520630811025022733e-02,
-+-1.50455857457888787787e-02,
-+-1.24524803245954687053e-02,
-+-9.87368656524285036313e-03,
-+-7.31013203541311037958e-03,
-+-4.76273186619807602227e-03,
-+-2.23238850112297869746e-03,
-+ 2.80008549183706099625e-04,
-+ 2.77358294660976899965e-03,
-+ 5.24747175940274562800e-03,
-+ 7.70082569017439908660e-03,
-+ 1.01328092980087648006e-02,
-+ 1.25426012146140665460e-02,
-+ 1.49293943544662570388e-02,
-+ 1.72923961188884665885e-02,
-+ 1.96308285940195309527e-02,
-+ 2.19439287426209730936e-02,
-+ 2.42309485896793734561e-02,
-+ 2.64911554017603391442e-02,
-+ 2.87238318600733545660e-02,
-+ 3.09282762272103349532e-02,
-+ 3.31038025075217068327e-02,
-+ 3.52497406010981520486e-02,
-+ 3.73654364513253609004e-02,
-+ 3.94502521859858221176e-02,
-+ 4.15035662518817155542e-02,
-+ 4.35247735429537541130e-02,
-+ 4.55132855218787699125e-02,
-+ 4.74685303351244439196e-02,
-+ 4.93899529214478216765e-02,
-+ 5.12770151138242716304e-02,
-+ 5.31291957347935772660e-02,
-+ 5.49459906852194576721e-02,
-+ 5.67269130264521220797e-02,
-+ 5.84714930558940249039e-02,
-+ 6.01792783759655322551e-02,
-+ 6.18498339564735599705e-02,
-+ 6.34827421903864652641e-02,
-+ 6.50776029430226859995e-02,
-+ 6.66340335946605799577e-02,
-+ 6.81516690765814614483e-02,
-+ 6.96301619005592065115e-02,
-+ 7.10691821818139612965e-02,
-+ 7.24684176554465098175e-02,
-+ 7.38275736863740761340e-02,
-+ 7.51463732727930683319e-02,
-+ 7.64245570431912463194e-02,
-+ 7.76618832469397474272e-02,
-+ 7.88581277384926976337e-02,
-+ 8.00130839552289779837e-02,
-+ 8.11265628889681067459e-02,
-+ 8.21983930512013155623e-02,
-+ 8.32284204320703352442e-02,
-+ 8.42165084531432683868e-02,
-+ 8.51625379140240473808e-02,
-+ 8.60664069328434949702e-02,
-+ 8.69280308806818224898e-02,
-+ 8.77473423099686122839e-02,
-+ 8.85242908769151987114e-02,
-+ 8.92588432580306151420e-02,
-+ 8.99509830607803234637e-02,
-+ 9.06007107284422380511e-02,
-+ 9.12080434392217309636e-02,
-+ 9.17730149996878741270e-02,
-+ 9.22956757325926607782e-02,
-+ 9.27760923591415126443e-02,
-+ 9.32143478757788968014e-02,
-+ 9.36105414255621187669e-02,
-+ 9.39647881641913207407e-02,
-+ 9.42772191207702781046e-02,
-+ 9.45479810533706027664e-02,
-+ 9.47772362994778183598e-02,
-+ 9.49651626213951355338e-02,
-+ 9.51119530466846413441e-02,
-+ 9.52178157037280176178e-02,
-+ 9.52829736524876819148e-02,
-+ 9.53076647105531166160e-02,
-+ 9.52921412745576373871e-02,
-+ 9.52366701370536278271e-02,
-+ 9.51415322989309503177e-02,
-+ 9.50070227774735681647e-02,
-+ 9.48334504101390751707e-02,
-+ 9.46211376541590265532e-02,
-+ 9.43704203820504156086e-02,
-+ 9.40816476731309581094e-02,
-+ 9.37551816011396865758e-02,
-+ 9.33913970180541563870e-02,
-+ 9.29906813342047527948e-02,
-+ 9.25534342947849225647e-02,
-+ 9.20800677528557931506e-02,
-+ 9.15710054389489019888e-02,
-+ 9.10266827273659706599e-02,
-+ 9.04475463992783224043e-02,
-+ 8.98340544027328158361e-02,
-+ 8.91866756096650198371e-02,
-+ 8.85058895700238101867e-02,
-+ 8.77921862631190763615e-02,
-+ 8.70460658462897246546e-02,
-+ 8.62680384010083983748e-02,
-+ 8.54586236765221690659e-02,
-+ 8.46183508311429133375e-02,
-+ 8.37477581712920277068e-02,
-+ 8.28473928884114751980e-02,
-+ 8.19178107938471483651e-02,
-+ 8.09595760518180135312e-02,
-+ 7.99732609105757996648e-02,
-+ 7.89594454318716387764e-02,
-+ 7.79187172188340326784e-02,
-+ 7.68516711423724852015e-02,
-+ 7.57589090662164482692e-02,
-+ 7.46410395707000073884e-02,
-+ 7.34986776754032733461e-02,
-+ 7.23324445607601979047e-02,
-+ 7.11429672887474440213e-02,
-+ 6.99308785227581580779e-02,
-+ 6.86968162467783832748e-02,
-+ 6.74414234839716131287e-02,
-+ 6.61653480147834510694e-02,
-+ 6.48692420946761771905e-02,
-+ 6.35537621716019962559e-02,
-+ 6.22195686033254202751e-02,
-+ 6.08673253747022482973e-02,
-+ 5.94976998150253330588e-02,
-+ 5.81113623155428762890e-02,
-+ 5.67089860472591994478e-02,
-+ 5.52912466791220663653e-02,
-+ 5.38588220967053943333e-02,
-+ 5.24123921214928872869e-02,
-+ 5.09526382308646275110e-02,
-+ 4.94802432788957607945e-02,
-+ 4.79958912180662375380e-02,
-+ 4.65002668219884549017e-02,
-+ 4.49940554092515265783e-02,
-+ 4.34779425684853407241e-02,
-+ 4.19526138847447563340e-02,
-+ 4.04187546673120054463e-02,
-+ 3.88770496790168534895e-02,
-+ 3.73281828671714888124e-02,
-+ 3.57728370962169389680e-02,
-+ 3.42116938821758476141e-02,
-+ 3.26454331290065291604e-02,
-+ 3.10747328669506231447e-02,
-+ 2.95002689929673225788e-02,
-+ 2.79227150133440210622e-02,
-+ 2.63427417885741359249e-02,
-+ 2.47610172805882329528e-02,
-+ 2.31782063024293799591e-02,
-+ 2.15949702704538760989e-02,
-+ 2.00119669591453143431e-02,
-+ 1.84298502586232419709e-02,
-+ 1.68492699349288496680e-02,
-+ 1.52708713931675090641e-02,
-+ 1.36952954435869880129e-02,
-+ 1.21231780706691841254e-02,
-+ 1.05551502053105091677e-02,
-+ 8.99183750016553651196e-03,
-+ 7.43386010822696258193e-03,
-+ 5.88183246471273707412e-03,
-+ 4.33636307232945251988e-03,
-+ 2.79805428998205086427e-03,
-+ 1.26750212499337003291e-03,
-+-2.54703971099550386531e-04,
-+-1.76798130311027175757e-03,
-+-3.27175412906725469539e-03,
-+-4.76545385331804925710e-03,
-+-6.24851921581533794464e-03,
-+-7.72039647752874400727e-03,
-+-9.18053960192777122884e-03,
-+-1.06284104324833178490e-02,
-+-1.20634788661366718077e-02,
-+-1.34852230226875247771e-02,
-+-1.48931294100519973078e-02,
-+-1.62866930853476296615e-02,
-+-1.76654178117594401476e-02,
-+-1.90288162111466874205e-02,
-+-2.03764099123495759369e-02,
-+-2.17077296951579609696e-02,
-+-2.30223156299061669505e-02,
-+-2.43197172126588360974e-02,
-+-2.55994934959561624976e-02,
-+-2.68612132150869431513e-02,
-+-2.81044549098614510063e-02,
-+-2.93288070418574950415e-02,
-+-3.05338681071131295974e-02,
-+-3.17192467442452205595e-02,
-+-3.28845618379712614776e-02,
-+-3.40294426180154721551e-02,
-+-3.51535287533818185945e-02,
-+-3.62564704419792716017e-02,
-+-3.73379284955845242022e-02,
-+-3.83975744201309962533e-02,
-+-3.94350904913155775322e-02,
-+-4.04501698255130062720e-02,
-+-4.14425164459938585870e-02,
-+-4.24118453444415760556e-02,
-+-4.33578825377650758921e-02,
-+-4.42803651202084772032e-02,
-+-4.51790413107587551789e-02,
-+-4.60536704958539877541e-02,
-+-4.69040232673985507672e-02,
-+-4.77298814560914094751e-02,
-+-4.85310381600771723054e-02,
-+-4.93072977689298017068e-02,
-+-5.00584759829825892696e-02,
-+-5.07843998280173986037e-02,
-+-5.14849076653303427964e-02,
-+-5.21598491971914657306e-02,
-+-5.28090854677170859488e-02,
-+-5.34324888591782357072e-02,
-+-5.40299430837655400572e-02,
-+-5.46013431708381041796e-02,
-+-5.51465954496810906171e-02,
-+-5.56656175277993395256e-02,
-+-5.61583382647804357779e-02,
-+-5.66246977417538960298e-02,
-+-5.70646472264832865795e-02,
-+-5.74781491341238848225e-02,
-+-5.78651769836829588112e-02,
-+-5.82257153502198851469e-02,
-+-5.85597598128258789441e-02,
-+-5.88673168984241990120e-02,
-+-5.91484040214318093631e-02,
-+-5.94030494193287308957e-02,
-+-5.96312920841784027681e-02,
-+-5.98331816901454746627e-02,
-+-6.00087785170606569096e-02,
-+-6.01581533700810480725e-02,
-+-6.02813874954959694197e-02,
-+-6.03785724927326447609e-02,
-+-6.04498102226119424230e-02,
-+-6.04952127119116611631e-02,
-+-6.05149020542914278797e-02,
-+-6.05090103076376881197e-02,
-+-6.04776793878847099273e-02,
-+-6.04210609593744951695e-02,
-+-6.03393163218124903291e-02,
-+-6.02326162938837256222e-02,
-+-6.01011410935896536745e-02,
-+-5.99450802153716350018e-02,
-+-5.97646323040843391317e-02,
-+-5.95600050258849322837e-02,
-+-5.93314149361059764431e-02,
-+-5.90790873441773764507e-02,
-+-5.88032561756684640786e-02,
-+-5.85041638315173181950e-02,
-+-5.81820610445198463379e-02,
-+-5.78372067331465664064e-02,
-+-5.74698678527617162759e-02,
-+-5.70803192443151696800e-02,
-+-5.66688434805820984153e-02,
-+-5.62357307100216502471e-02,
-+-5.57812784983319834287e-02,
-+-5.53057916677746758127e-02,
-+-5.48095821343453915020e-02,
-+-5.42929687428649263015e-02,
-+-5.37562771000702349644e-02,
-+-5.31998394057807341695e-02,
-+-5.26239942822169029513e-02,
-+-5.20290866015511582754e-02,
-+-5.14154673117670768523e-02,
-+-5.07834932609073572141e-02,
-+-5.01335270197884388943e-02,
-+-4.94659367032617980353e-02,
-+-4.87810957901005926018e-02,
-+-4.80793829415919610204e-02,
-+-4.73611818189140221236e-02,
-+-4.66268808993793651418e-02,
-+-4.58768732916221277929e-02,
-+-4.51115565498113532672e-02,
-+-4.43313324869706107401e-02,
-+-4.35366069874822472774e-02,
-+-4.27277898188581847783e-02,
-+-4.19052944428566706558e-02,
-+-4.10695378260253277092e-02,
-+-4.02209402497498702544e-02,
-+-3.93599251198885058400e-02,
-+-3.84869187760717781921e-02,
-+-3.76023503007467674308e-02,
-+-3.67066513280452297319e-02,
-+-3.58002558525536487832e-02,
-+-3.48836000380640318119e-02,
-+-3.39571220263849699039e-02,
-+-3.30212617462878818553e-02,
-+-3.20764607226682249563e-02,
-+-3.11231618859974003277e-02,
-+-3.01618093821427596390e-02,
-+-2.91928483826300218251e-02,
-+-2.82167248954252464221e-02,
-+-2.72338855763107207109e-02,
-+-2.62447775409285488646e-02,
-+-2.52498481775659533444e-02,
-+-2.42495449607560524530e-02,
-+-2.32443152657647901516e-02,
-+-2.22346061840382018537e-02,
-+-2.12208643396787077773e-02,
-+-2.02035357070221716080e-02,
-+-1.91830654293842946256e-02,
-+-1.81598976390459701524e-02,
-+-1.71344752785447841659e-02,
-+-1.61072399233397958729e-02,
-+-1.50786316059164128556e-02,
-+-1.40490886413957953571e-02,
-+-1.30190474547137412242e-02,
-+-1.19889424094323342185e-02,
-+-1.09592056382471266657e-02,
-+-9.93026687525074697183e-03,
-+-8.90255329001433948211e-03,
-+-7.87648932354562125724e-03,
-+-6.85249652618241146540e-03,
-+-5.83099339747908569642e-03,
-+-4.81239522814202146106e-03,
-+-3.79711394406930576734e-03,
-+-2.78555795254968683455e-03,
-+-1.77813199067227692071e-03,
-+-7.75236976000132386663e-04,
-+ 2.22730140442126654798e-04,
-+ 1.21537651881706244492e-03,
-+ 2.20231357271108733539e-03,
-+ 3.18315710891246220898e-03,
-+ 4.15752746468348553799e-03,
-+ 5.12504964248380791986e-03,
-+ 6.08535344210042478813e-03,
-+ 7.03807359014245199208e-03,
-+ 7.98284986685961206465e-03,
-+ 8.91932723024580452476e-03,
-+ 9.84715593738785290034e-03,
-+ 1.07659916630240357766e-02,
-+ 1.16754956152756248638e-02,
-+ 1.25753346485176220604e-02,
-+ 1.34651813733560731662e-02,
-+ 1.43447142636787781933e-02,
-+ 1.52136177607511777904e-02,
-+ 1.60715823743268690360e-02,
-+ 1.69183047807457617728e-02,
-+ 1.77534879179936204430e-02,
-+ 1.85768410776981605925e-02,
-+ 1.93880799940382604618e-02,
-+ 2.01869269295435888045e-02,
-+ 2.09731107577651766649e-02,
-+ 2.17463670427963037812e-02,
-+ 2.25064381156266125894e-02,
-+ 2.32530731473125917841e-02,
-+ 2.39860282189490944815e-02,
-+ 2.47050663884288181082e-02,
-+ 2.54099577539762186418e-02,
-+ 2.61004795144461655687e-02,
-+ 2.67764160263764816605e-02,
-+ 2.74375588577874841845e-02,
-+ 2.80837068387202806741e-02,
-+ 2.87146661085097808230e-02,
-+ 2.93302501597869115513e-02,
-+ 2.99302798792087168533e-02,
-+ 3.05145835849139068774e-02,
-+ 3.10829970607048658437e-02,
-+ 3.16353635869560598226e-02,
-+ 3.21715339682534032240e-02,
-+ 3.26913665577675052742e-02,
-+ 3.31947272783659833029e-02,
-+ 3.36814896404726560331e-02,
-+ 3.41515347566807569990e-02,
-+ 3.46047513531298478462e-02,
-+ 3.50410357776568884280e-02,
-+ 3.54602920047340924858e-02,
-+ 3.58624316372060172875e-02,
-+ 3.62473739048404727803e-02,
-+ 3.66150456597097023748e-02,
-+ 3.69653813684179058385e-02,
-+ 3.72983231011940682964e-02,
-+ 3.76138205178691634178e-02,
-+ 3.79118308507581658340e-02,
-+ 3.81923188844700278732e-02,
-+ 3.84552569326661666804e-02,
-+ 3.87006248117945095277e-02,
-+ 3.89284098118221136287e-02,
-+ 3.91386066639944005252e-02,
-+ 3.93312175056476295842e-02,
-+ 3.95062518421033306848e-02,
-+ 3.96637265056755394799e-02,
-+ 3.98036656118202977761e-02,
-+ 3.99261005124597820326e-02,
-+ 4.00310697465144360585e-02,
-+ 4.01186189876763035778e-02,
-+ 4.01888009894591641258e-02,
-+ 4.02416755275608953313e-02,
-+ 4.02773093395744422041e-02,
-+ 4.02957760620868618573e-02,
-+ 4.02971561652026855072e-02,
-+ 4.02815368845340013304e-02,
-+ 4.02490121506946865737e-02,
-+ 4.01996825163432602857e-02,
-+ 4.01336550808131173329e-02,
-+ 4.00510434123766412284e-02,
-+ 3.99519674681838021790e-02,
-+ 3.98365535119223901361e-02,
-+ 3.97049340292425986809e-02,
-+ 3.95572476409943238340e-02,
-+ 3.93936390143226622396e-02,
-+ 3.92142587716682866628e-02,
-+ 3.90192633977227906761e-02,
-+ 3.88088151443859719070e-02,
-+ 3.85830819337740632546e-02,
-+ 3.83422372593309676581e-02,
-+ 3.80864600850902706997e-02,
-+ 3.78159347431409609275e-02,
-+ 3.75308508293468318096e-02,
-+ 3.72314030973733209318e-02,
-+ 3.69177913510723085255e-02,
-+ 3.65902203352790472701e-02,
-+ 3.62488996250740352911e-02,
-+ 3.58940435135636018438e-02,
-+ 3.55258708982338911042e-02,
-+ 3.51446051659309519066e-02,
-+ 3.47504740765239503175e-02,
-+ 3.43437096453047957523e-02,
-+ 3.39245480241803926136e-02,
-+ 3.34932293817127510471e-02,
-+ 3.30499977820627663383e-02,
-+ 3.25951010628938789293e-02,
-+ 3.21287907122915217251e-02,
-+ 3.16513217447548164674e-02,
-+ 3.11629525763171093267e-02,
-+ 3.06639448988514501382e-02,
-+ 3.01545635536184866710e-02,
-+ 2.96350764041116987446e-02,
-+ 2.91057542082603579181e-02,
-+ 2.85668704900414009706e-02,
-+ 2.80187014105628129368e-02,
-+ 2.74615256386703497637e-02,
-+ 2.68956242211381771345e-02,
-+ 2.63212804524964143205e-02,
-+ 2.57387797445546746833e-02,
-+ 2.51484094956766456030e-02,
-+ 2.45504589598617914414e-02,
-+ 2.39452191156906725455e-02,
-+ 2.33329825351894608321e-02,
-+ 2.27140432526683408443e-02,
-+ 2.20886966335908999093e-02,
-+ 2.14572392435271874778e-02,
-+ 2.08199687172471933905e-02,
-+ 2.01771836280079629178e-02,
-+ 1.95291833570884962312e-02,
-+ 1.88762679636269269101e-02,
-+ 1.82187380548123403767e-02,
-+ 1.75568946564845403124e-02,
-+ 1.68910390841945853846e-02,
-+ 1.62214728147774996103e-02,
-+ 1.55484973584896369464e-02,
-+ 1.48724141317607399387e-02,
-+ 1.41935243306124080076e-02,
-+ 1.35121288047925294795e-02,
-+ 1.28285279326754275003e-02,
-+ 1.21430214969758445281e-02,
-+ 1.14559085613274869858e-02,
-+ 1.07674873477713456404e-02,
-+ 1.00780551152029641815e-02,
-+ 9.38790803882408146641e-03,
-+ 8.69734109064560119429e-03,
-+ 8.00664792108640895052e-03,
-+ 7.31612074171312902482e-03,
-+ 6.62605020916498532735e-03,
-+ 5.93672531030635993593e-03,
-+ 5.24843324865020312286e-03,
-+ 4.56145933209378684481e-03,
-+ 3.87608686200798923521e-03,
-+ 3.19259702372048361982e-03,
-+ 2.51126877843176705626e-03,
-+ 1.83237875660391988202e-03,
-+ 1.15620115285868549186e-03,
-+ 4.83007622422852007059e-04,
-+-1.86932820843070034112e-04,
-+-8.53353904797455329115e-04,
-+-1.51599219771675255281e-03,
-+-2.17458720530792556924e-03,
-+-2.82888146600037857989e-03,
-+-3.47862064448672828401e-03,
-+-4.12355362347965707925e-03,
-+-4.76343259365718217635e-03,
-+-5.39801314176371720144e-03,
-+-6.02705433684159932323e-03,
-+-6.65031881456398799024e-03,
-+-7.26757285964317947813e-03,
-+-7.87858648628854928153e-03,
-+-8.48313351669007821576e-03,
-+-9.08099165750268083608e-03,
-+-9.67194257431004678072e-03,
-+-1.02557719640449674509e-02,
-+-1.08322696253466653482e-02,
-+-1.14012295268339416271e-02,
-+-1.19624498732761111452e-02,
-+-1.25157331696445651287e-02,
-+-1.30608862830260651078e-02,
-+-1.35977205023845738180e-02,
-+-1.41260515961539080687e-02,
-+-1.46456998676501564532e-02,
-+-1.51564902082884610246e-02,
-+-1.56582521485937077588e-02,
-+-1.61508199069943896020e-02,
-+-1.66340324363880263936e-02,
-+-1.71077334684716746149e-02,
-+-1.75717715558275228149e-02,
-+-1.80260001117568194329e-02,
-+-1.84702774478586080609e-02,
-+-1.89044668093441003975e-02,
-+-1.93284364080869922042e-02,
-+-1.97420594534034529732e-02,
-+-2.01452141805614354242e-02,
-+-2.05377838770183090977e-02,
-+-2.09196569063852221004e-02,
-+-2.12907267301215390176e-02,
-+-2.16508919269584217127e-02,
-+-2.20000562100566773860e-02,
-+-2.23381284419012192399e-02,
-+-2.26650226469371808558e-02,
-+-2.29806580219539050014e-02,
-+-2.32849589442222955349e-02,
-+-2.35778549773940013234e-02,
-+-2.38592808751701725145e-02,
-+-2.41291765827496146324e-02,
-+-2.43874872360661625048e-02,
-+-2.46341631588262027774e-02,
-+-2.48691598573592027865e-02,
-+-2.50924380132932847709e-02,
-+-2.53039634740697960691e-02,
-+-2.55037072413113186098e-02,
-+-2.56916454570593408291e-02,
-+-2.58677593878966008423e-02,
-+-2.60320354069717534162e-02,
-+-2.61844649739453247395e-02,
-+-2.63250446128731642459e-02,
-+-2.64537758880496950975e-02,
-+-2.65706653778289558776e-02,
-+-2.66757246464459155111e-02,
-+-2.67689702138592805492e-02,
-+-2.68504235236379437679e-02,
-+-2.69201109089152179621e-02,
-+-2.69780635564342181898e-02,
-+-2.70243174687087896191e-02,
-+-2.70589134243261995871e-02,
-+-2.70818969364167577707e-02,
-+-2.70933182093176481986e-02,
-+-2.70932320934577017257e-02,
-+-2.70816980384915410862e-02,
-+-2.70587800447114543156e-02,
-+-2.70245466127663376554e-02,
-+-2.69790706917171427270e-02,
-+-2.69224296254590607369e-02,
-+-2.68547050975419879237e-02,
-+-2.67759830744198866481e-02,
-+-2.66863537471611969587e-02,
-+-2.65859114716531889921e-02,
-+-2.64747547073322930800e-02,
-+-2.63529859544745573285e-02,
-+-2.62207116900796607939e-02,
-+-2.60780423023825730366e-02,
-+-2.59250920240284947471e-02,
-+-2.57619788639449828760e-02,
-+-2.55888245379471308827e-02,
-+-2.54057543981124761556e-02,
-+-2.52128973609604678519e-02,
-+-2.50103858344739478359e-02,
-+-2.47983556439997539222e-02,
-+-2.45769459570643403201e-02,
-+-2.43462992071435090080e-02,
-+-2.41065610164222128564e-02,
-+-2.38578801175844575078e-02,
-+-2.36004082746693114037e-02,
-+-2.33343002030331689300e-02,
-+-2.30597134884559483436e-02,
-+-2.27768085054302904524e-02,
-+-2.24857483346725776918e-02,
-+-2.21866986798954189675e-02,
-+-2.18798277838799307138e-02,
-+-2.15653063438876642366e-02,
-+-2.12433074264517691987e-02,
-+-2.09140063815867055519e-02,
-+-2.05775807564556566243e-02,
-+-2.02342102085360346642e-02,
-+-1.98840764183222142025e-02,
-+-1.95273630016047500257e-02,
-+-1.91642554213670816832e-02,
-+-1.87949408993371563925e-02,
-+-1.84196083272362247374e-02,
-+-1.80384481777610752862e-02,
-+-1.76516524153425696797e-02,
-+-1.72594144067167720724e-02,
-+-1.68619288313498413845e-02,
-+-1.64593915917550098760e-02,
-+-1.60519997237402040069e-02,
-+-1.56399513066264282679e-02,
-+-1.52234453734734331148e-02,
-+-1.48026818213531103502e-02,
-+-1.43778613217079923037e-02,
-+-1.39491852308316760523e-02,
-+-1.35168555005115483686e-02,
-+-1.30810745888681710658e-02,
-+-1.26420453714316226301e-02,
-+-1.21999710524887047813e-02,
-+-1.17550550767402828961e-02,
-+-1.13075010413035727252e-02,
-+-1.08575126080952908542e-02,
-+-1.04052934166326063736e-02,
-+-9.95104699728536351566e-03,
-+-9.49497668501652312967e-03,
-+-9.03728553364356763933e-03,
-+-8.57817623065582068875e-03,
-+-8.11785101262214349449e-03,
-+-7.65651158122056946231e-03,
-+-7.19435901992488725798e-03,
-+-6.73159371137851351291e-03,
-+-6.26841525548942068990e-03,
-+-5.80502238827697216589e-03,
-+-5.34161290150089295564e-03,
-+-4.87838356310490647849e-03,
-+-4.41553003850264462471e-03,
-+-3.95324681273798422126e-03,
-+-3.49172711354636287548e-03,
-+-3.03116283534747218975e-03,
-+-2.57174446419663202748e-03,
-+-2.11366100372138449731e-03,
-+-1.65709990207213789248e-03,
-+-1.20224697991074881177e-03,
-+-7.49286359465203312402e-04,
-+-2.98400394673150758020e-04,
-+ 1.50230397559290287587e-04,
-+ 5.96427404960260163468e-04,
-+ 1.04001398633389997676e-03,
-+ 1.48081553681653948010e-03,
-+ 1.91865955192711671630e-03,
-+ 2.35337569038958404136e-03,
-+ 2.78479583570576333731e-03,
-+ 3.21275415646031688166e-03,
-+ 3.63708716533605539573e-03,
-+ 4.05763377682291995208e-03,
-+ 4.47423536360066955581e-03,
-+ 4.88673581157838838457e-03,
-+ 5.29498157357465894235e-03,
-+ 5.69882172162047926506e-03,
-+ 6.09810799787139853900e-03,
-+ 6.49269486411187517899e-03,
-+ 6.88243954983998491859e-03,
-+ 7.26720209891677272618e-03,
-+ 7.64684541476874993227e-03,
-+ 8.02123530413159993580e-03,
-+ 8.39024051932213063565e-03,
-+ 8.75373279902990839019e-03,
-+ 9.11158690761618844656e-03,
-+ 9.46368067291306243327e-03,
-+ 9.80989502251233651264e-03,
-+ 1.01501140185368699670e-02,
-+ 1.04842248908878447194e-02,
-+ 1.08121180689596009528e-02,
-+ 1.11336872118183785596e-02,
-+ 1.14488292368375710328e-02,
-+ 1.17574443467867335855e-02,
-+ 1.20594360553697797084e-02,
-+ 1.23547112112087492664e-02,
-+ 1.26431800202723137322e-02,
-+ 1.29247560667452802280e-02,
-+ 1.31993563323394361153e-02,
-+ 1.34669012140451026943e-02,
-+ 1.37273145403230718842e-02,
-+ 1.39805235857388930609e-02,
-+ 1.42264590840399576116e-02,
-+ 1.44650552396788801418e-02,
-+ 1.46962497377853603536e-02,
-+ 1.49199837525900817770e-02,
-+ 1.51362019543059365262e-02,
-+ 1.53448525144697818512e-02,
-+ 1.55458871097522988158e-02,
-+ 1.57392609242401407266e-02,
-+ 1.59249326501989980909e-02,
-+ 1.61028644873237487822e-02,
-+ 1.62730221404839558996e-02,
-+ 1.64353748159745995105e-02,
-+ 1.65898952162792344411e-02,
-+ 1.67365595333573702330e-02,
-+ 1.68753474404654685292e-02,
-+ 1.70062420825228405308e-02,
-+ 1.71292300650343690127e-02,
-+ 1.72443014415816948948e-02,
-+ 1.73514496998961910423e-02,
-+ 1.74506717465267233158e-02,
-+ 1.75419678901157470585e-02,
-+ 1.76253418232991503067e-02,
-+ 1.77008006032431768062e-02,
-+ 1.77683546308354950449e-02,
-+ 1.78280176285450023266e-02,
-+ 1.78798066169677284665e-02,
-+ 1.79237418900749095885e-02,
-+ 1.79598469891815541721e-02,
-+ 1.79881486756524357207e-02,
-+ 1.80086769023645003329e-02,
-+ 1.80214647839439801036e-02,
-+ 1.80265485657978320744e-02,
-+ 1.80239675919585257136e-02,
-+ 1.80137642717629609113e-02,
-+ 1.79959840453853894826e-02,
-+ 1.79706753482452019632e-02,
-+ 1.79378895743111561878e-02,
-+ 1.78976810383233188306e-02,
-+ 1.78501069369546815080e-02,
-+ 1.77952273089348571300e-02,
-+ 1.77331049941585293384e-02,
-+ 1.76638055918014250101e-02,
-+ 1.75873974174670689996e-02,
-+ 1.75039514593883366311e-02,
-+ 1.74135413337067820883e-02,
-+ 1.73162432388551425222e-02,
-+ 1.72121359090659648006e-02,
-+ 1.71013005670323306462e-02,
-+ 1.69838208757447130248e-02,
-+ 1.68597828895295613616e-02,
-+ 1.67292750043147309125e-02,
-+ 1.65923879071472879509e-02,
-+ 1.64492145249898746862e-02,
-+ 1.62998499728209574056e-02,
-+ 1.61443915010654574782e-02,
-+ 1.59829384423819872985e-02,
-+ 1.58155921578329479449e-02,
-+ 1.56424559824643004402e-02,
-+ 1.54636351703211580993e-02,
-+ 1.52792368389266484952e-02,
-+ 1.50893699132506348831e-02,
-+ 1.48941450691946284529e-02,
-+ 1.46936746766213478105e-02,
-+ 1.44880727419542387757e-02,
-+ 1.42774548503756936596e-02,
-+ 1.40619381076500047506e-02,
-+ 1.38416410815988405458e-02,
-+ 1.36166837432563775367e-02,
-+ 1.33871874077307433104e-02,
-+ 1.31532746747999255282e-02,
-+ 1.29150693692685249875e-02,
-+ 1.26726964811125480254e-02,
-+ 1.24262821054400597609e-02,
-+ 1.21759533822933443264e-02,
-+ 1.19218384363212748234e-02,
-+ 1.16640663163469111840e-02,
-+ 1.14027669348586990772e-02,
-+ 1.11380710074510391738e-02,
-+ 1.08701099922405512027e-02,
-+ 1.05990160292857588803e-02,
-+ 1.03249218800347264402e-02,
-+ 1.00479608668283364181e-02,
-+ 9.76826681248407595326e-03,
-+ 9.48597397998680001707e-03,
-+ 9.20121701231205180171e-03,
-+ 8.91413087240663405686e-03,
-+ 8.62485078335300560382e-03,
-+ 8.33351216874106057175e-03,
-+ 8.04025059327335284154e-03,
-+ 7.74520170362733365033e-03,
-+ 7.44850116959968472363e-03,
-+ 7.15028462555652392224e-03,
-+ 6.85068761221313375642e-03,
-+ 6.54984551876693164157e-03,
-+ 6.24789352540736173808e-03,
-+ 5.94496654622468298501e-03,
-+ 5.64119917254172174859e-03,
-+ 5.33672561668945780872e-03,
-+ 5.03167965625017643561e-03,
-+ 4.72619457878821046942e-03,
-+ 4.42040312709122713147e-03,
-+ 4.11443744494245557813e-03,
-+ 3.80842902344421868274e-03,
-+ 3.50250864791438413365e-03,
-+ 3.19680634537424174582e-03,
-+ 2.89145133264915015631e-03,
-+ 2.58657196509964968506e-03,
-+ 2.28229568600325869593e-03,
-+ 1.97874897660506266980e-03,
-+ 1.67605730685465247574e-03,
-+ 1.37434508684857771554e-03,
-+ 1.07373561899400072825e-03,
-+ 7.74351050912206037222e-04,
-+ 4.76312329096932108620e-04,
-+ 1.79739153344913828647e-04,
-+-1.15250068026150436743e-04,
-+-4.08538262157430215240e-04,
-+-7.00009734810518881830e-04,
-+-9.89550212697529359140e-04,
-+-1.27704688496522110984e-03,
-+-1.56238844381914230262e-03,
-+-1.84546512427596291067e-03,
-+-2.12616874302977649017e-03,
-+-2.40439273642179809562e-03,
-+-2.68003219750039467159e-03,
-+-2.95298391216083011210e-03,
-+-3.22314639435426720723e-03,
-+-3.49041992035452591087e-03,
-+-3.75470656207426648626e-03,
-+-4.01591021941965966441e-03,
-+-4.27393665167596914500e-03,
-+-4.52869350791463860101e-03,
-+-4.78009035641408387002e-03,
-+-5.02803871308742881402e-03,
-+-5.27245206890878791856e-03,
-+-5.51324591633307794364e-03,
-+-5.75033777470175880286e-03,
-+-5.98364721463032038506e-03,
-+-6.21309588137129026331e-03,
-+-6.43860751714846711591e-03,
-+-6.66010798245885143193e-03,
-+-6.87752527633716734257e-03,
-+-7.09078955558135361203e-03,
-+-7.29983315293484570641e-03,
-+-7.50459059422442856246e-03,
-+-7.70499861445137022159e-03,
-+-7.90099617283428028169e-03,
-+-8.09252446680348673513e-03,
-+-8.27952694494581836748e-03,
-+-8.46194931890021165288e-03,
-+-8.63973957420479179992e-03,
-+-8.81284798009584514900e-03,
-+-8.98122709826090423468e-03,
-+-9.14483179054685624276e-03,
-+-9.30361922562642808254e-03,
-+-9.45754888462495800494e-03,
-+-9.60658256571109842037e-03,
-+-9.75068438765514661215e-03,
-+-9.88982079235872779677e-03,
-+-1.00239605463608785763e-02,
-+-1.01530747413246837108e-02,
-+-1.02771367935108499936e-02,
-+-1.03961224422430293518e-02,
-+-1.05100097473716045521e-02,
-+-1.06187790857425311958e-02,
-+-1.07224131466778661165e-02,
-+-1.08208969264758890494e-02,
-+-1.09142177219381259629e-02,
-+-1.10023651229317290939e-02,
-+-1.10853310039956218930e-02,
-+-1.11631095149994884197e-02,
-+-1.12356970708646971419e-02,
-+-1.13030923403568215463e-02,
-+-1.13652962339602110059e-02,
-+-1.14223118908440956359e-02,
-+-1.14741446649318026840e-02,
-+-1.15208021100836454503e-02,
-+-1.15622939644049946284e-02,
-+-1.15986321336910645080e-02,
-+-1.16298306740207010868e-02,
-+-1.16559057735113307669e-02,
-+-1.16768757332475214827e-02,
-+-1.16927609473963332182e-02,
-+-1.17035838825226608945e-02,
-+-1.17093690561177760784e-02,
-+-1.17101430143551586693e-02,
-+-1.17059343090872795129e-02,
-+-1.16967734740980097013e-02,
-+-1.16826930006248379257e-02,
-+-1.16637273121658596037e-02,
-+-1.16399127385864407935e-02,
-+-1.16112874895409699111e-02,
-+-1.15778916272246922003e-02,
-+-1.15397670384720374415e-02,
-+-1.14969574062164479888e-02,
-+-1.14495081803284975280e-02,
-+-1.13974665478479546959e-02,
-+-1.13408814026266253211e-02,
-+-1.12798033143984600957e-02,
-+-1.12142844972935168402e-02,
-+-1.11443787778127377519e-02,
-+-1.10701415622809114236e-02,
-+-1.09916298037944538957e-02,
-+-1.09089019686816925125e-02,
-+-1.08220180024931385970e-02,
-+-1.07310392955389764802e-02,
-+-1.06360286479915983754e-02,
-+-1.05370502345710423397e-02,
-+-1.04341695688310136247e-02,
-+-1.03274534670632443106e-02,
-+-1.02169700118386209270e-02,
-+-1.01027885152025192345e-02,
-+-9.98497948154308812008e-03,
-+-9.86361457015006402871e-03,
-+-9.73876655748246930488e-03,
-+-9.61050929916365190286e-03,
-+-9.47891769172138146105e-03,
-+-9.34406763409175583623e-03,
-+-9.20603598890469380922e-03,
-+-9.06490054356958417647e-03,
-+-8.92073997117914622990e-03,
-+-8.77363379124968326139e-03,
-+-8.62366233031589164704e-03,
-+-8.47090668239862398803e-03,
-+-8.31544866936306283078e-03,
-+-8.15737080118616487978e-03,
-+-7.99675623615058242533e-03,
-+-7.83368874098351944402e-03,
-+-7.66825265095798756787e-03,
-+-7.50053282997436773782e-03,
-+-7.33061463064018075525e-03,
-+-7.15858385436481461928e-03,
-+-6.98452671148786126409e-03,
-+-6.80852978145714965441e-03,
-+-6.63067997307481386826e-03,
-+-6.45106448482760802543e-03,
-+-6.26977076531890029770e-03,
-+-6.08688647381931853542e-03,
-+-5.90249944095203298716e-03,
-+-5.71669762953000513278e-03,
-+-5.52956909556100162373e-03,
-+-5.34120194943696596085e-03,
-+-5.15168431732329797079e-03,
-+-4.96110430276443595266e-03,
-+-4.76954994852103134756e-03,
-+-4.57710919865432410564e-03,
-+-4.38386986087277181340e-03,
-+-4.18991956915663876782e-03,
-+-3.99534574667439676410e-03,
-+-3.80023556900675307108e-03,
-+-3.60467592769156538676e-03,
-+-3.40875339410503987864e-03,
-+-3.21255418369197943973e-03,
-+-3.01616412055992575564e-03,
-+-2.81966860245005685598e-03,
-+-2.62315256609809257030e-03,
-+-2.42670045299875130826e-03,
-+-2.23039617558575898118e-03,
-+-2.03432308384080993632e-03,
-+-1.83856393234277533909e-03,
-+-1.64320084776991355742e-03,
-+-1.44831529686655904529e-03,
-+-1.25398805488530435195e-03,
-+-1.06029917451672204415e-03,
-+-8.67327955316482155854e-04,
-+-6.75152913641518712638e-04,
-+-4.83851753104545291573e-04,
-+-2.93501335557769932588e-04,
-+-1.04177652615230481180e-04,
-+ 8.40442022771478958144e-05,
-+ 2.71090061213828637746e-04,
-+ 4.56886708636217294885e-04,
-+ 6.41361907564611910364e-04,
-+ 8.24444425246958221068e-04,
-+ 1.00606405821750295726e-03,
-+ 1.18615165675600578790e-03,
-+ 1.36463914874257485378e-03,
-+ 1.54145956289825905236e-03,
-+ 1.71654705140769636706e-03,
-+ 1.88983691191461173828e-03,
-+ 2.06126560888645086675e-03,
-+ 2.23077079434063144103e-03,
-+ 2.39829132792830895110e-03,
-+ 2.56376729636941056573e-03,
-+ 2.72714003223500402184e-03,
-+ 2.88835213207216685155e-03,
-+ 3.04734747386685260462e-03,
-+ 3.20407123384176817371e-03,
-+ 3.35846990258462183704e-03,
-+ 3.51049130050470068257e-03,
-+ 3.66008459261367522647e-03,
-+ 3.80720030262936314294e-03,
-+ 3.95179032639856198800e-03,
-+ 4.09380794463911311387e-03,
-+ 4.23320783499702736619e-03,
-+ 4.36994608342004212803e-03,
-+ 4.50398019484403704799e-03,
-+ 4.63526910319382156461e-03,
-+ 4.76377318069614620610e-03,
-+ 4.88945424650618146178e-03,
-+ 5.01227557464674778470e-03,
-+ 5.13220190126144337750e-03,
-+ 5.24919943118207308480e-03,
-+ 5.36323584381190321402e-03,
-+ 5.47428029832571112767e-03,
-+ 5.58230343818897148389e-03,
-+ 5.68727739499729628703e-03,
-+ 5.78917579163970574818e-03,
-+ 5.88797374478673089110e-03,
-+ 5.98364786670789981782e-03,
-+ 6.07617626642060343345e-03,
-+ 6.16553855017385084303e-03,
-+ 6.25171582127166582804e-03,
-+ 6.33469067923863194541e-03,
-+ 6.41444721833308011821e-03,
-+ 6.49097102541174898749e-03,
-+ 6.56424917715103632687e-03,
-+ 6.63427023662958338657e-03,
-+ 6.70102424927795491810e-03,
-+ 6.76450273820044644529e-03,
-+ 6.82469869887525251023e-03,
-+ 6.88160659323871527759e-03,
-+ 6.93522234316026366108e-03,
-+ 6.98554332331408935064e-03,
-+ 7.03256835345506155222e-03,
-+ 7.07629769010476809138e-03,
-+ 7.11673301765615093362e-03,
-+ 7.15387743890304877992e-03,
-+ 7.18773546500291789924e-03,
-+ 7.21831300488032408247e-03,
-+ 7.24561735407938580650e-03,
-+ 7.26965718307318129604e-03,
-+ 7.29044252503875406940e-03,
-+ 7.30798476310635155423e-03,
-+ 7.32229661709144288850e-03,
-+ 7.33339212971884264747e-03,
-+ 7.34128665234775375920e-03,
-+ 7.34599683020745793799e-03,
-+ 7.34754058715258225737e-03,
-+ 7.34593710994830336597e-03,
-+ 7.34120683209452638829e-03,
-+ 7.33337141719967496728e-03,
-+ 7.32245374191355016119e-03,
-+ 7.30847787843014878861e-03,
-+ 7.29146907657012011139e-03,
-+ 7.27145374545387114529e-03,
-+ 7.24845943477565521351e-03,
-+ 7.22251481568945107037e-03,
-+ 7.19364966131744686118e-03,
-+ 7.16189482689201083881e-03,
-+ 7.12728222954231872138e-03,
-+ 7.08984482773655864257e-03,
-+ 7.04961660039112210374e-03,
-+ 7.00663252565801673161e-03,
-+ 6.96092855940177307472e-03,
-+ 6.91254161337735619636e-03,
-+ 6.86150953312070904788e-03,
-+ 6.80787107556324582597e-03,
-+ 6.75166588638215301593e-03,
-+ 6.69293447709806265528e-03,
-+ 6.63171820193170571955e-03,
-+ 6.56805923443159328512e-03,
-+ 6.50200054388410785683e-03,
-+ 6.43358587151825807998e-03,
-+ 6.36285970651646794888e-03,
-+ 6.28986726184373092646e-03,
-+ 6.21465444990643503531e-03,
-+ 6.13726785805332464285e-03,
-+ 6.05775472392990760317e-03,
-+ 5.97616291069856791357e-03,
-+ 5.89254088213594148099e-03,
-+ 5.80693767761965816410e-03,
-+ 5.71940288701587758180e-03,
-+ 5.62998662548002196115e-03,
-+ 5.53873950818146131014e-03,
-+ 5.44571262496510149348e-03,
-+ 5.35095751496040238082e-03,
-+ 5.25452614115022934027e-03,
-+ 5.15647086491062122543e-03,
-+ 5.05684442053339500839e-03,
-+ 4.95569988974256699088e-03,
-+ 4.85309067621648645985e-03,
-+ 4.74907048012647350216e-03,
-+ 4.64369327270371719946e-03,
-+ 4.53701327084515566163e-03,
-+ 4.42908491176951992635e-03,
-+ 4.31996282773485212186e-03,
-+ 4.20970182082771107734e-03,
-+ 4.09835683783572966160e-03,
-+ 3.98598294521311340144e-03,
-+ 3.87263530415101094040e-03,
-+ 3.75836914576165720403e-03,
-+ 3.64323974638825019007e-03,
-+ 3.52730240304928790995e-03,
-+ 3.41061240902878646739e-03,
-+ 3.29322502962129748730e-03,
-+ 3.17519547804233142826e-03,
-+ 3.05657889151338601694e-03,
-+ 2.93743030753160130203e-03,
-+ 2.81780464033296821486e-03,
-+ 2.69775665755896121301e-03,
-+ 2.57734095713514719389e-03,
-+ 2.45661194437134461702e-03,
-+ 2.33562380929147129019e-03,
-+ 2.21443050420279223534e-03,
-+ 2.09308572151161147862e-03,
-+ 1.97164287179554201940e-03,
-+ 1.85015506213867531038e-03,
-+ 1.72867507473943343883e-03,
-+ 1.60725534579748128607e-03,
-+ 1.48594794468843234732e-03,
-+ 1.36480455343317803527e-03,
-+ 1.24387644646943291808e-03,
-+ 1.12321447073277739387e-03,
-+ 1.00286902605367005473e-03,
-+ 8.82890045877847201225e-04,
-+ 7.63326978315998568199e-04,
-+ 6.44228767529792380013e-04,
-+ 5.25643835459782418976e-04,
-+ 4.07620063901896608968e-04,
-+ 2.90204776937506045247e-04,
-+ 1.73444723723805766706e-04,
-+ 5.73860616484244659592e-05,
-+-5.79256601447129809831e-05,
-+-1.72445516855139978872e-04,
-+-2.86129223744603178401e-04,
-+-3.98933151471683798521e-04,
-+-5.10814341036775051638e-04,
-+-6.21730518333987194034e-04,
-+-7.31640108305292775383e-04,
-+-8.40502248693749103720e-04,
-+-9.48276803391555388537e-04,
-+-1.05492437538016840815e-03,
-+-1.16040631925863960139e-03,
-+-1.26468475335793167046e-03,
-+-1.36772257143744795961e-03,
-+-1.46948345396231690001e-03,
-+-1.56993187895820992227e-03,
-+-1.66903313244173671925e-03,
-+-1.76675331842487395514e-03,
-+-1.86305936849075486246e-03,
-+-1.95791905094055886799e-03,
-+-2.05130097950870097026e-03,
-+-2.14317462164644121497e-03,
-+-2.23351030637205421117e-03,
-+-2.32227923168745655630e-03,
-+-2.40945347156019864382e-03,
-+-2.49500598247101752769e-03,
-+-2.57891060952624437755e-03,
-+-2.66114209213571661222e-03,
-+-2.74167606925580006200e-03,
-+-2.82048908419860059130e-03,
-+-2.89755858900738426376e-03,
-+-2.97286294839969704451e-03,
-+-3.04638144327833843006e-03,
-+-3.11809427381250833106e-03,
-+-3.18798256208930414976e-03,
-+-3.25602835433819615824e-03,
-+-3.32221462272949338845e-03,
-+-3.38652526674922864716e-03,
-+-3.44894511415224942069e-03,
-+-3.50945992149601917673e-03,
-+-3.56805637425754813494e-03,
-+-3.62472208653601482564e-03,
-+-3.67944560034401835918e-03,
-+-3.73221638449032109761e-03,
-+-3.78302483305743104600e-03,
-+-3.83186226347697993233e-03,
-+-3.87872091420681094562e-03,
-+-3.92359394201303914723e-03,
-+-3.96647541886111301701e-03,
-+-4.00736032841956212047e-03,
-+-4.04624456218095809173e-03,
-+-4.08312491520368761599e-03,
-+-4.11799908147960237043e-03,
-+-4.15086564893147550587e-03,
-+-4.18172409404541419592e-03,
-+-4.21057477614258761356e-03,
-+-4.23741893129556731340e-03,
-+-4.26225866589410255086e-03,
-+-4.28509694986558761776e-03,
-+-4.30593760955555893838e-03,
-+-4.32478532027361865092e-03,
-+-4.34164559851025946141e-03,
-+-4.35652479383043678834e-03,
-+-4.36943008044940375129e-03,
-+-4.38036944849687272935e-03,
-+-4.38935169497548655082e-03,
-+-4.39638641441941844384e-03,
-+-4.40148398925969356471e-03,
-+-4.40465557990201740657e-03,
-+-4.40591311452397972614e-03,
-+-4.40526927859759102890e-03,
-+-4.40273750414399336200e-03,
-+-4.39833195872687317957e-03,
-+-4.39206753419116562726e-03,
-+-4.38395983515392842489e-03,
-+-4.37402516725410826781e-03,
-+-4.36228052516814471251e-03,
-+-4.34874358039834783829e-03,
-+-4.33343266884099378305e-03,
-+-4.31636677814128347924e-03,
-+-4.29756553484226828249e-03,
-+-4.27704919133478460302e-03,
-+-4.25483861261575103258e-03,
-+-4.23095526286197242544e-03,
-+-4.20542119182673330285e-03,
-+-4.17825902106652539991e-03,
-+-4.14949193000528453179e-03,
-+-4.11914364184333848390e-03,
-+-4.08723840931864319803e-03,
-+-4.05380100032764340012e-03,
-+-4.01885668341308427420e-03,
-+-3.98243121312639048598e-03,
-+-3.94455081527187324114e-03,
-+-3.90524217204034265055e-03,
-+-3.86453240703949710971e-03,
-+-3.82244907022857112119e-03,
-+-3.77902012276458334344e-03,
-+-3.73427392176791782957e-03,
-+-3.68823920501411533363e-03,
-+-3.64094507555994461798e-03,
-+-3.59242098631046497328e-03,
-+-3.54269672453505143905e-03,
-+-3.49180239633924225512e-03,
-+-3.43976841109999795926e-03,
-+-3.38662546587152699790e-03,
-+-3.33240452976901182711e-03,
-+-3.27713682833726460339e-03,
-+-3.22085382791172753977e-03,
-+-3.16358721997866921757e-03,
-+-3.10536890554190866259e-03,
-+-3.04623097950279270868e-03,
-+-2.98620571506079835605e-03,
-+-2.92532554814109750294e-03,
-+-2.86362306185669341502e-03,
-+-2.80113097101106212072e-03,
-+-2.73788210664884781517e-03,
-+-2.67390940066071719841e-03,
-+-2.60924587044905360173e-03,
-+-2.54392460366138209102e-03,
-+-2.47797874299740972931e-03,
-+-2.41144147109654920225e-03,
-+-2.34434599551184728525e-03,
-+-2.27672553377682423265e-03,
-+-2.20861329857108918892e-03,
-+-2.14004248299099744321e-03,
-+-2.07104624593109319652e-03,
-+-2.00165769758243626206e-03,
-+-1.93190988505322330110e-03,
-+-1.86183577811795423693e-03,
-+-1.79146825509988766485e-03,
-+-1.72084008889326943795e-03,
-+-1.64998393312966343087e-03,
-+-1.57893230849462818527e-03,
-+-1.50771758919912264932e-03,
-+-1.43637198961127387532e-03,
-+-1.36492755105304883201e-03,
-+-1.29341612876705033125e-03,
-+-1.22186937905778840625e-03,
-+-1.15031874661246304344e-03,
-+-1.07879545200534983015e-03,
-+-1.00733047939059738862e-03,
-+-9.35954564387392199190e-04,
-+-8.64698182161781326270e-04,
-+-7.93591535709335898878e-04,
-+-7.22664544342259342231e-04,
-+-6.51946832385152269008e-04,
-+-5.81467718082645003419e-04,
-+-5.11256202723101406751e-04,
-+-4.41340959980976682391e-04,
-+-3.71750325482115011495e-04,
-+-3.02512286594312090893e-04,
-+-2.33654472446860898751e-04,
-+-1.65204144181543805632e-04,
-+-9.71881854382950145007e-05,
-+-2.96330930778333087529e-05,
-+ 3.74350318557888840534e-05,
-+ 1.03990492930665522531e-04,
-+ 1.70008006877860913661e-04,
-+ 2.35462711895771908792e-04,
-+ 3.00330175705594570618e-04,
-+ 3.64586403356421419591e-04,
-+ 4.28207844777551787079e-04,
-+ 4.91171402077186748311e-04,
-+ 5.53454436585029511952e-04,
-+ 6.15034775638214118408e-04,
-+ 6.75890719108685204992e-04,
-+ 7.36001045671158494674e-04,
-+ 7.95345018810736208159e-04,
-+ 8.53902392568785988461e-04,
-+ 9.11653417026953884206e-04,
-+ 9.68578843528107927274e-04,
-+ 1.02465992963409239201e-03,
-+ 1.07987844381954517861e-03,
-+ 1.13421666990184857697e-03,
-+ 1.18765741120669863183e-03,
-+ 1.24018399446962118877e-03,
-+ 1.29178027347317181048e-03,
-+ 1.34243063242041153760e-03,
-+ 1.39211998904448393775e-03,
-+ 1.44083379745542361494e-03,
-+ 1.48855805072399061464e-03,
-+ 1.53527928320389963832e-03,
-+ 1.58098457259274222282e-03,
-+ 1.62566154173287799080e-03,
-+ 1.66929836015300469068e-03,
-+ 1.71188374535185877309e-03,
-+ 1.75340696382495094506e-03,
-+ 1.79385783183615881223e-03,
-+ 1.83322671593499951850e-03,
-+ 1.87150453322187351919e-03,
-+ 1.90868275136241117781e-03,
-+ 1.94475338835288632730e-03,
-+ 1.97970901203875114180e-03,
-+ 2.01354273938795765367e-03,
-+ 2.04624823552140497340e-03,
-+ 2.07781971250251560127e-03,
-+ 2.10825192788842950831e-03,
-+ 2.13754018304492627786e-03,
-+ 2.16568032122775241954e-03,
-+ 2.19266872543273649843e-03,
-+ 2.21850231601753312277e-03,
-+ 2.24317854809751244041e-03,
-+ 2.26669540871874157159e-03,
-+ 2.28905141381085521987e-03,
-+ 2.31024560492300908704e-03,
-+ 2.33027754574556848419e-03,
-+ 2.34914731842113299123e-03,
-+ 2.36685551964774167771e-03,
-+ 2.38340325657774047483e-03,
-+ 2.39879214251553785076e-03,
-+ 2.41302429241780800814e-03,
-+ 2.42610231819949092105e-03,
-+ 2.43802932384921434983e-03,
-+ 2.44880890035772524199e-03,
-+ 2.45844512046309356806e-03,
-+ 2.46694253321619750424e-03,
-+ 2.47430615837057783779e-03,
-+ 2.48054148060029584083e-03,
-+ 2.48565444354972896537e-03,
-+ 2.48965144371932805070e-03,
-+ 2.49253932419119233338e-03,
-+ 2.49432536819870756192e-03,
-+ 2.49501729254406187306e-03,
-+ 2.49462324086802481049e-03,
-+ 2.49315177677595679884e-03,
-+ 2.49061187682437026880e-03,
-+ 2.48701292337218105022e-03,
-+ 2.48236469730101589823e-03,
-+ 2.47667737060877201499e-03,
-+ 2.46996149888082565729e-03,
-+ 2.46222801364318543901e-03,
-+ 2.45348821460201170497e-03,
-+ 2.44375376177385136151e-03,
-+ 2.43303666751100867299e-03,
-+ 2.42134928842652587602e-03,
-+ 2.40870431722312039469e-03,
-+ 2.39511477443066006163e-03,
-+ 2.38059400005651662299e-03,
-+ 2.36515564515335941637e-03,
-+ 2.34881366330883401689e-03,
-+ 2.33158230206161314751e-03,
-+ 2.31347609424828503169e-03,
-+ 2.29450984928561332182e-03,
-+ 2.27469864439260342423e-03,
-+ 2.25405781575686164908e-03,
-+ 2.23260294964972971082e-03,
-+ 2.21034987349466626252e-03,
-+ 2.18731464689328946802e-03,
-+ 2.16351355261355186160e-03,
-+ 2.13896308754443764677e-03,
-+ 2.11367995362164717843e-03,
-+ 2.08768104872860673846e-03,
-+ 2.06098345757712827012e-03,
-+ 2.03360444257223585765e-03,
-+ 2.00556143466523338278e-03,
-+ 1.97687202419953838434e-03,
-+ 1.94755395175337346625e-03,
-+ 1.91762509898370150235e-03,
-+ 1.88710347947544372464e-03,
-+ 1.85600722960030926380e-03,
-+ 1.82435459938927956557e-03,
-+ 1.79216394342290039413e-03,
-+ 1.75945371174334418141e-03,
-+ 1.72624244079242210488e-03,
-+ 1.69254874437936271916e-03,
-+ 1.65839130468247841071e-03,
-+ 1.62378886328829906069e-03,
-+ 1.58876021227249563002e-03,
-+ 1.55332418532590395277e-03,
-+ 1.51749964892962602506e-03,
-+ 1.48130549358308134279e-03,
-+ 1.44476062508820820261e-03,
-+ 1.40788395589385340219e-03,
-+ 1.37069439650360901800e-03,
-+ 1.33321084695073701146e-03,
-+ 1.29545218834344489506e-03,
-+ 1.25743727448406820806e-03,
-+ 1.21918492356532437090e-03,
-+ 1.18071390994699786103e-03,
-+ 1.14204295601606406994e-03,
-+ 1.10319072413361980722e-03,
-+ 1.06417580867146756643e-03,
-+ 1.02501672814153568618e-03,
-+ 9.85731917420752321024e-04,
-+ 9.46339720074761028661e-04,
-+ 9.06858380782653099826e-04,
-+ 8.67306037865940180828e-04,
-+ 8.27700715924154601863e-04,
-+ 7.88060318579825755218e-04,
-+ 7.48402621335140681366e-04,
-+ 7.08745264542995573667e-04,
-+ 6.69105746494616255432e-04,
-+ 6.29501416626196083105e-04,
-+ 5.89949468846577432593e-04,
-+ 5.50466934988384673337e-04,
-+ 5.11070678384569518186e-04,
-+ 4.71777387572266644969e-04,
-+ 4.32603570126133903009e-04,
-+ 3.93565546622840108093e-04,
-+ 3.54679444738640930936e-04,
-+ 3.15961193481461178213e-04,
-+ 2.77426517559644606348e-04,
-+ 2.39090931888283949464e-04,
-+ 2.00969736235134577339e-04,
-+ 1.63078010007227617185e-04,
-+ 1.25430607179671989044e-04,
-+ 8.80421513676910678318e-05,
-+ 5.09270310433270975443e-05,
-+ 1.40993948977051206995e-05,
-+-2.24268526499689963992e-05,
-+-5.86380557959355767418e-05,
-+-9.45208115468090933828e-05,
-+-1.30061973765318488264e-04,
-+-1.65248657065980185041e-04,
-+-2.00068240560348736649e-04,
-+-2.34508371450769772170e-04,
-+-2.68556968472767403858e-04,
-+-3.02202225185153135114e-04,
-+-3.35432613107714699702e-04,
-+-3.68236884706315019053e-04,
-+-4.00604076224976460123e-04,
-+-4.32523510365022737217e-04,
-+-4.63984798811095579957e-04,
-+-4.94977844604242624843e-04,
-+-5.25492844361963827582e-04,
-+-5.55520290345540247376e-04,
-+-5.85050972374773735341e-04,
-+-6.14075979590610184985e-04,
-+-6.42586702065795259929e-04,
-+-6.70574832264203037069e-04,
-+-6.98032366349193725621e-04,
-+-7.24951605341828033552e-04,
-+-7.51325156129156322866e-04,
-+-7.77145932323820387393e-04,
-+-8.02407154975299293648e-04,
-+-8.27102353133903219450e-04,
-+-8.51225364268258727699e-04,
-+-8.74770334537431802288e-04,
-+-8.97731718918501797773e-04,
-+-9.20104281190827605862e-04,
-+-9.41883093778050233848e-04,
-+-9.63063537449165905750e-04,
-+-9.83641300879760935652e-04,
-+-1.00361238007481306557e-03,
-+-1.02297307765449128208e-03,
-+-1.04172000200423238610e-03,
-+-1.05985006629069969386e-03,
-+-1.07736048734502422482e-03,
-+-1.09424878441514257174e-03,
-+-1.11051277778848088776e-03,
-+-1.12615058728708443934e-03,
-+-1.14116063063659394818e-03,
-+-1.15554162171100749217e-03,
-+-1.16929256865495575027e-03,
-+-1.18241277188544584124e-03,
-+-1.19490182197486941203e-03,
-+-1.20675959741726535404e-03,
-+-1.21798626227982297217e-03,
-+-1.22858226374166065384e-03,
-+-1.23854832952187280184e-03,
-+-1.24788546519901061629e-03,
-+-1.25659495142406364872e-03,
-+-1.26467834102919943727e-03,
-+-1.27213745603428412742e-03,
-+-1.27897438455362244883e-03,
-+-1.28519147760499177768e-03,
-+-1.29079134582336268501e-03,
-+-1.29577685608154116216e-03,
-+-1.30015112802015094483e-03,
-+-1.30391753048923449490e-03,
-+-1.30707967790388737521e-03,
-+-1.30964142651636395419e-03,
-+-1.31160687060702277167e-03,
-+-1.31298033859659005196e-03,
-+-1.31376638908218385492e-03,
-+-1.31396980679961724973e-03,
-+-1.31359559851441281067e-03,
-+-1.31264898884408520024e-03,
-+-1.31113541601419526274e-03,
-+-1.30906052755070225271e-03,
-+-1.30643017591116055581e-03,
-+-1.30325041405731484843e-03,
-+-1.29952749097163636725e-03,
-+-1.29526784712039586857e-03,
-+-1.29047810986578645812e-03,
-+-1.28516508882973415524e-03,
-+-1.27933577121191956356e-03,
-+-1.27299731706460124078e-03,
-+-1.26615705452684046764e-03,
-+-1.25882247502064623448e-03,
-+-1.25100122841167137044e-03,
-+-1.24270111813698665680e-03,
-+-1.23393009630251375940e-03,
-+-1.22469625875265661526e-03,
-+-1.21500784011470538623e-03,
-+-1.20487320882053006339e-03,
-+-1.19430086210808427544e-03,
-+-1.18329942100529298017e-03,
-+-1.17187762529875026674e-03,
-+-1.16004432848981092231e-03,
-+-1.14780849274044756403e-03,
-+-1.13517918381147498753e-03,
-+-1.12216556599544479457e-03,
-+-1.10877689704675665670e-03,
-+-1.09502252311132830878e-03,
-+-1.08091187365826806380e-03,
-+-1.06645445641585442931e-03,
-+-1.05165985231426076241e-03,
-+-1.03653771043727446592e-03,
-+-1.02109774298538512859e-03,
-+-1.00534972025243104707e-03,
-+-9.89303465618205854493e-04,
-+-9.72968850559070386023e-04,
-+-9.56355789678956110487e-04,
-+-9.39474235762757228438e-04,
-+-9.22334174854466432199e-04,
-+-9.04945621361946477522e-04,
-+-8.87318613190598128385e-04,
-+-8.69463206907894578697e-04,
-+-8.51389472940857513876e-04,
-+-8.33107490808391681729e-04,
-+-8.14627344390523211622e-04,
-+-7.95959117236444131487e-04,
-+-7.77112887913182157074e-04,
-+-7.58098725396869001399e-04,
-+-7.38926684508335205812e-04,
-+-7.19606801394884719458e-04,
-+-7.00149089059903611230e-04,
-+-6.80563532942129469604e-04,
-+-6.60860086546161931871e-04,
-+-6.41048667125920334890e-04,
-+-6.21139151422514545521e-04,
-+-6.01141371458319205383e-04,
-+-5.81065110388481308873e-04,
-+-5.60920098411564179222e-04,
-+-5.40716008740645473485e-04,
-+-5.20462453636329636791e-04,
-+-5.00168980502928035153e-04,
-+-4.79845068049252442000e-04,
-+-4.59500122515179752151e-04,
-+-4.39143473965308969373e-04,
-+-4.18784372650737749064e-04,
-+-3.98431985440370181519e-04,
-+-3.78095392322528038760e-04,
-+-3.57783582978218623466e-04,
-+-3.37505453426840712917e-04,
-+-3.17269802745462131330e-04,
-+-2.97085329862539673351e-04,
-+-2.76960630426857884294e-04,
-+-2.56904193752789059696e-04,
-+-2.36924399842341755311e-04,
-+-2.17029516485020210204e-04,
-+-1.97227696436049984184e-04,
-+-1.77526974673721080374e-04,
-+-1.57935265736364822877e-04,
-+-1.38460361139671443579e-04,
-+-1.19109926874780676581e-04,
-+-9.98915009877096604120e-05,
-+-8.08124912404658787314e-05,
-+-6.18801728543761411219e-05,
-+-4.31016863358901726119e-05,
-+-2.44840353852607290751e-05,
-+-6.03408488822807525549e-06,
-+ 1.22414410087942923482e-05,
-+ 3.03359607401630166279e-05,
-+ 4.82430370786643698930e-05,
-+ 6.59563788094303331657e-05,
-+ 8.34698423199615796228e-05,
-+ 1.00777433106333784039e-04,
-+ 1.17873307195481496850e-04,
-+ 1.34751772483674884346e-04,
-+ 1.51407289991337552218e-04,
-+ 1.67834475034225882872e-04,
-+ 1.84028098311239825778e-04,
-+ 1.99983086909011169297e-04,
-+ 2.15694525223608961004e-04,
-+ 2.31157655799539194473e-04,
-+ 2.46367880086458945071e-04,
-+ 2.61320759113890506518e-04,
-+ 2.76012014084471178285e-04,
-+ 2.90437526885940853344e-04,
-+ 3.04593340522622661477e-04,
-+ 3.18475659466672001308e-04,
-+ 3.32080849929764377465e-04,
-+ 3.45405440055728798956e-04,
-+ 3.58446120034815369788e-04,
-+ 3.71199742140139986053e-04,
-+ 3.83663320687053425832e-04,
-+ 3.95834031916090828447e-04,
-+ 4.07709213800306149479e-04,
-+ 4.19286365777668133727e-04,
-+ 4.30563148409382728376e-04,
-+ 4.41537382964913725693e-04,
-+ 4.52207050934656925797e-04,
-+ 4.62570293470961546242e-04,
-+ 4.72625410758635230730e-04,
-+ 4.82370861315684551149e-04,
-+ 4.91805261225328150740e-04,
-+ 5.00927383300294468485e-04,
-+ 5.09736156180340470138e-04,
-+ 5.18230663364083014855e-04,
-+ 5.26410142176160977465e-04,
-+ 5.34273982670858136115e-04,
-+ 5.41821726473215733132e-04,
-+ 5.49053065558819199977e-04,
-+ 5.55967840973343140065e-04,
-+ 5.62566041493084596781e-04,
-+ 5.68847802227587348751e-04,
-+ 5.74813403165606124842e-04,
-+ 5.80463267665585255090e-04,
-+ 5.85797960891953992807e-04,
-+ 5.90818188198352634011e-04,
-+ 5.95524793459205619046e-04,
-+ 5.99918757350793364382e-04,
-+ 6.04001195583171897330e-04,
-+ 6.07773357084216074402e-04,
-+ 6.11236622137123529822e-04,
-+ 6.14392500472671181100e-04,
-+ 6.17242629317575641247e-04,
-+ 6.19788771400296852575e-04,
-+ 6.22032812915646266330e-04,
-+ 6.23976761449542352556e-04,
-+ 6.25622743865282679096e-04,
-+ 6.26973004152734866845e-04,
-+ 6.28029901241785953013e-04,
-+ 6.28795906781460817864e-04,
-+ 6.29273602886090081127e-04,
-+ 6.29465679849935955126e-04,
-+ 6.29374933831637162034e-04,
-+ 6.29004264509917614644e-04,
-+ 6.28356672711923979618e-04,
-+ 6.27435258015602670238e-04,
-+ 6.26243216327530610385e-04,
-+ 6.24783837437580067548e-04,
-+ 6.23060502551831571320e-04,
-+ 6.21076681805128117189e-04,
-+ 6.18835931754663313292e-04,
-+ 6.16341892855999597296e-04,
-+ 6.13598286922899423257e-04,
-+ 6.10608914572360016171e-04,
-+ 6.07377652656219848941e-04,
-+ 6.03908451680720608987e-04,
-+ 6.00205333215381750360e-04,
-+ 5.96272387292547546150e-04,
-+ 5.92113769798962869678e-04,
-+ 5.87733699860716260477e-04,
-+ 5.83136457222883410056e-04,
-+ 5.78326379625196070923e-04,
-+ 5.73307860175058681823e-04,
-+ 5.68085344719199331932e-04,
-+ 5.62663329215264671791e-04,
-+ 5.57046357104629347515e-04,
-+ 5.51239016687691835844e-04,
-+ 5.45245938502918582949e-04,
-+ 5.39071792710859535452e-04,
-+ 5.32721286484389919269e-04,
-+ 5.26199161406370888652e-04,
-+ 5.19510190875949965511e-04,
-+ 5.12659177524647379116e-04,
-+ 5.05650950643461694588e-04,
-+ 4.98490363622070692395e-04,
-+ 4.91182291401325650700e-04,
-+ 4.83731627940122419548e-04,
-+ 4.76143283697776802978e-04,
-+ 4.68422183132952726740e-04,
-+ 4.60573262220249240485e-04,
-+ 4.52601465985464203410e-04,
-+ 4.44511746060588389465e-04,
-+ 4.36309058259498746754e-04,
-+ 4.27998360175392566791e-04,
-+ 4.19584608800889610671e-04,
-+ 4.11072758171783069880e-04,
-+ 4.02467757035333936928e-04,
-+ 3.93774546544049656484e-04,
-+ 3.84998057975832470683e-04,
-+ 3.76143210481313700240e-04,
-+ 3.67214908859312392543e-04,
-+ 3.58218041361136620669e-04,
-+ 3.49157477524604336044e-04,
-+ 3.40038066038525694287e-04,
-+ 3.30864632638427479810e-04,
-+ 3.21641978034209344382e-04,
-+ 3.12374875870502510550e-04,
-+ 3.03068070720368721877e-04,
-+ 2.93726276113044930307e-04,
-+ 2.84354172596324122988e-04,
-+ 2.74956405834251703824e-04,
-+ 2.65537584740686090270e-04,
-+ 2.56102279649332684359e-04,
-+ 2.46655020520732712157e-04,
-+ 2.37200295186851598233e-04,
-+ 2.27742547633623577692e-04,
-+ 2.18286176322046336163e-04,
-+ 2.08835532548216017655e-04,
-+ 1.99394918842769620351e-04,
-+ 1.89968587410093434423e-04,
-+ 1.80560738607737464008e-04,
-+ 1.71175519466368710516e-04,
-+ 1.61817022250571095152e-04,
-+ 1.52489283060860649410e-04,
-+ 1.43196280477158617963e-04,
-+ 1.33941934244020521144e-04,
-+ 1.24730103997818122337e-04,
-+ 1.15564588036148766046e-04,
-+ 1.06449122129624024050e-04,
-+ 9.73873783762444747338e-05,
-+ 8.83829640984437603628e-05,
-+ 7.94394207830501368397e-05,
-+ 7.05602230641164422306e-05,
-+ 6.17487777488439845697e-05,
-+ 5.30084228865277819307e-05,
-+ 4.43424268807018922721e-05,
-+ 3.57539876443504868529e-05,
-+ 2.72462317982963840894e-05,
-+ 1.88222139126731892130e-05,
-+ 1.04849157914673770899e-05,
-+ 2.23724580001398245952e-06,
-+-5.91796176458841909860e-06,
-+-1.39779472603022615363e-05,
-+-2.19400262443108254274e-05,
-+-2.98015899747312779436e-05,
-+-3.75601058699388188874e-05,
-+-4.52131179258346812058e-05,
-+-5.27582470911579511194e-05,
-+-6.01931916011169823111e-05,
-+-6.75157272696155086192e-05,
-+-7.47237077402686759994e-05,
-+-8.18150646965978259242e-05,
-+-8.87878080315813176041e-05,
-+-9.56400259770174112402e-05,
-+-1.02369885192932295447e-04,
-+-1.08975630817447491838e-04,
-+-1.15455586477445233109e-04,
-+-1.21808154260462635915e-04,
-+-1.28031814648165977134e-04,
-+-1.34125126411867404445e-04,
-+-1.40086726470483718130e-04,
-+-1.45915329711446663599e-04,
-+-1.51609728774925367391e-04,
-+-1.57168793801964925671e-04,
-+-1.62591472146915872604e-04,
-+-1.67876788054762332352e-04,
-+-1.73023842303760092562e-04,
-+-1.78031811814023872061e-04,
-+-1.82899949222519527144e-04,
-+-1.87627582425063416539e-04,
-+-1.92214114085866635134e-04,
-+-1.96659021115234305434e-04,
-+-2.00961854115964548605e-04,
-+-2.05122236799067813760e-04,
-+-2.09139865369424642018e-04,
-+-2.13014507881963919287e-04,
-+-2.16746003569016719827e-04,
-+-2.20334262139455170628e-04,
-+-2.23779263050288623272e-04,
-+-2.27081054751326671731e-04,
-+-2.30239753903598189230e-04,
-+-2.33255544572162539776e-04,
-+-2.36128677394024743099e-04,
-+-2.38859468721759089912e-04,
-+-2.41448299743606627134e-04,
-+-2.43895615580664562507e-04,
-+-2.46201924361897988517e-04,
-+-2.48367796277648787261e-04,
-+-2.50393862612362249915e-04,
-+-2.52280814757210175570e-04,
-+-2.54029403203337271477e-04,
-+-2.55640436516424906718e-04,
-+-2.57114780293308988878e-04,
-+-2.58453356101321892260e-04,
-+-2.59657140401130335366e-04,
-+-2.60727163453730896234e-04,
-+-2.61664508212373382850e-04,
-+-2.62470309200077975623e-04,
-+-2.63145751373508769710e-04,
-+-2.63692068973905575490e-04,
-+-2.64110544365773612825e-04,
-+-2.64402506864084673854e-04,
-+-2.64569331550674807438e-04,
-+-2.64612438080565591254e-04,
-+-2.64533289478916812908e-04,
-+-2.64333390929326621406e-04,
-+-2.64014288554176887285e-04,
-+-2.63577568187730454374e-04,
-+-2.63024854142685936189e-04,
-+-2.62357807970878796362e-04,
-+-2.61578127218826830911e-04,
-+-2.60687544178804346540e-04,
-+-2.59687824636131118095e-04,
-+-2.58580766613355161020e-04,
-+-2.57368199111998000473e-04,
-+-2.56051980852535184582e-04,
-+-2.54633999013272917245e-04,
-+-2.53116167968770410229e-04,
-+-2.51500428028467203686e-04,
-+-2.49788744176148520739e-04,
-+-2.47983104810888498049e-04,
-+-2.46085520490098991209e-04,
-+-2.44098022675305284133e-04,
-+-2.42022662481256641692e-04,
-+-2.39861509428983846149e-04,
-+-2.37616650203396260988e-04,
-+-2.35290187416002671578e-04,
-+-2.32884238373345356290e-04,
-+-2.30400933851706944807e-04,
-+-2.27842416878660760553e-04,
-+-2.25210841522004905167e-04,
-+-2.22508371686640725982e-04,
-+-2.19737179919906623887e-04,
-+-2.16899446225907947382e-04,
-+-2.13997356889345798732e-04,
-+-2.11033103309352538255e-04,
-+-2.08008880843819519632e-04,
-+-2.04926887664708660573e-04,
-+-2.01789323624807442155e-04,
-+-1.98598389136399967663e-04,
-+-1.95356284062287273917e-04,
-+-1.92065206619610498147e-04,
-+-1.88727352296894345393e-04,
-+-1.85344912784731391314e-04,
-+-1.81920074920499755819e-04,
-+-1.78455019647530454055e-04,
-+-1.74951920989073971512e-04,
-+-1.71412945037461607323e-04,
-+-1.67840248958807175192e-04,
-+-1.64235980013589989322e-04,
-+-1.60602274593463965847e-04,
-+-1.56941257274607583660e-04,
-+-1.53255039887926981963e-04,
-+-1.49545720606400077326e-04,
-+-1.45815383049865629223e-04,
-+-1.42066095407511174204e-04,
-+-1.38299909578337953649e-04,
-+-1.34518860329830815736e-04,
-+-1.30724964475093245915e-04,
-+-1.26920220068654472992e-04,
-+-1.23106605621173758290e-04,
-+-1.19286079333219134950e-04,
-+-1.15460578348350841244e-04,
-+-1.11632018025632952099e-04,
-+-1.07802291231779830637e-04,
-+-1.03973267653065606659e-04,
-+-1.00146793127148565233e-04,
-+-9.63246889949230804435e-05,
-+-9.25087514725346873358e-05,
-+-8.87007510436452450671e-05,
-+-8.49024318720545515026e-05,
-+-8.11155112347393549661e-05,
-+-7.73416789754019609908e-05,
-+-7.35825969785674924512e-05,
-+-6.98398986642887023612e-05,
-+-6.61151885034750767074e-05,
-+-6.24100415538899748772e-05,
-+-5.87260030168200428450e-05,
-+-5.50645878143974986741e-05,
-+-5.14272801876128782695e-05,
-+-4.78155333149380714058e-05,
-+-4.42307689515766361233e-05,
-+-4.06743770892715146635e-05,
-+-3.71477156366324749162e-05,
-+-3.36521101199027279356e-05,
-+-3.01888534041130525139e-05,
-+-2.67592054345224943665e-05,
-+-2.33643929982665948157e-05,
-+-2.00056095060906951114e-05,
-+-1.66840147940797201324e-05,
-+-1.34007349452439661363e-05,
-+-1.01568621308437851693e-05,
-+-6.95345447128813701427e-06,
-+-3.79153591650250810366e-06,
-+-6.72096145553293655593e-07,
-+ 2.40390951459279597616e-06,
-+ 5.43556015137456058426e-06,
-+ 8.42196931017640123499e-06,
-+ 1.13622850193110927676e-05,
-+ 1.42556897966238257746e-05,
-+ 1.71014006379341248229e-05,
-+ 1.98986689875390831126e-05,
-+ 2.26467806909793172563e-05,
-+ 2.53450559303131682314e-05,
-+ 2.79928491421220740245e-05,
-+ 3.05895489185053302676e-05,
-+ 3.31345778912925430443e-05,
-+ 3.56273925997451632237e-05,
-+ 3.80674833419947510364e-05,
-+ 4.04543740105068599521e-05,
-+ 4.27876219118044463113e-05,
-+ 4.50668175707753267513e-05,
-+ 4.72915845198089502860e-05,
-+ 4.94615790730713200283e-05,
-+ 5.15764900862005805371e-05,
-+ 5.36360387017334339240e-05,
-+ 5.56399780805481871900e-05,
-+ 5.75880931196438774090e-05,
-+ 5.94802001565561985590e-05,
-+ 6.13161466607366493955e-05,
-+ 6.30958109121965409621e-05,
-+ 6.48191016677504891876e-05,
-+ 6.64859578151715343739e-05,
-+ 6.80963480156043240521e-05,
-+ 6.96502703345347587470e-05,
-+ 7.11477518616810702089e-05,
-+ 7.25888483201263885920e-05,
-+ 7.39736436650163245096e-05,
-+ 7.53022496721903708853e-05,
-+ 7.65748055170595645635e-05,
-+ 7.77914773440878826866e-05,
-+ 7.89524578272120806021e-05,
-+ 8.00579657215541123884e-05,
-+ 8.11082454067584148567e-05,
-+ 8.21035664223097817662e-05,
-+ 8.30442229951717527346e-05,
-+ 8.39305335600990616227e-05,
-+ 8.47628402729624154692e-05,
-+ 8.55415085174379832356e-05,
-+ 8.62669264054029689666e-05,
-+ 8.69395042713942022743e-05,
-+ 8.75596741614536786501e-05,
-+ 8.81278893167311284636e-05,
-+ 8.86446236521661512422e-05,
-+ 8.91103712306026604075e-05,
-+ 8.95256457326717546962e-05,
-+ 8.98909799227875892661e-05,
-+ 9.02069251115862640782e-05,
-+ 9.04740506151490363976e-05,
-+ 9.06929432113401867103e-05,
-+ 9.08642065935940279782e-05,
-+ 9.09884608224771455898e-05,
-+ 9.10663417753510066833e-05,
-+ 9.10985005944656069544e-05,
-+ 9.10856031337957275460e-05,
-+ 9.10283294049456589850e-05,
-+ 9.09273730224310103125e-05,
-+ 9.07834406486567112131e-05,
-+ 9.05972514388884682737e-05,
-+ 9.03695364865346147717e-05,
-+ 9.01010382690298824038e-05,
-+ 8.97925100946232214449e-05,
-+ 8.94447155503604388049e-05,
-+ 8.90584279515538464710e-05,
-+ 8.86344297930203114553e-05,
-+ 8.81735122023717546660e-05,
-+ 8.76764743956322256668e-05,
-+ 8.71441231354561004216e-05,
-+ 8.65772721922116491981e-05,
-+ 8.59767418081955635050e-05,
-+ 8.53433581652348287718e-05,
-+ 8.46779528559294970011e-05,
-+ 8.39813623587842351167e-05,
-+ 8.32544275174723505482e-05,
-+ 8.24979930244696123580e-05,
-+ 8.17129069092911340059e-05,
-+ 8.09000200315580515319e-05,
-+ 8.00601855791177764851e-05,
-+ 7.91942585714318722121e-05,
-+ 7.83030953684469709260e-05,
-+ 7.73875531851490379041e-05,
-+ 7.64484896120066966278e-05,
-+ 7.54867621414943666810e-05,
-+ 7.45032277008856680736e-05,
-+ 7.34987421914997258445e-05,
-+ 7.24741600345781298914e-05,
-+ 7.14303337239639759421e-05,
-+ 7.03681133857495075701e-05,
-+ 6.92883463450485250238e-05,
-+ 6.81918767000556897513e-05,
-+ 6.70795449035298084342e-05,
-+ 6.59521873518545653477e-05,
-+ 6.48106359818019012913e-05,
-+ 6.36557178751403541801e-05,
-+ 6.24882548712000070136e-05,
-+ 6.13090631875229413088e-05,
-+ 6.01189530487050480105e-05,
-+ 5.89187283235398522627e-05,
-+ 5.77091861705600261078e-05,
-+ 5.64911166920768371556e-05,
-+ 5.52653025968012133018e-05,
-+ 5.40325188711331935503e-05,
-+ 5.27935324591918643858e-05,
-+ 5.15491019516612150597e-05,
-+ 5.02999772835162253098e-05,
-+ 4.90468994406823114189e-05,
-+ 4.77906001756943685883e-05,
-+ 4.65318017323872241855e-05,
-+ 4.52712165796745444508e-05,
-+ 4.40095471544385224527e-05,
-+ 4.27474856135762158195e-05,
-+ 4.14857135952114382585e-05,
-+ 4.02249019891050019768e-05,
-+ 3.89657107162695045101e-05,
-+ 3.77087885178019617646e-05,
-+ 3.64547727529321324196e-05,
-+ 3.52042892062907349744e-05,
-+ 3.39579519043854685862e-05,
-+ 3.27163629412759540162e-05,
-+ 3.14801123134230239524e-05,
-+ 3.02497777637023744978e-05,
-+ 2.90259246345387218443e-05,
-+ 2.78091057301432964695e-05,
-+ 2.65998611878025348972e-05,
-+ 2.53987183581919854364e-05,
-+ 2.42061916946511448772e-05,
-+ 2.30227826513813061706e-05,
-+ 2.18489795905047869758e-05,
-+ 2.06852576979222047276e-05,
-+ 1.95320789079097866306e-05,
-+ 1.83898918363816234168e-05,
-+ 1.72591317227478167385e-05,
-+ 1.61402203802856600485e-05,
-+ 1.50335661549492530784e-05,
-+ 1.39395638925266073790e-05,
-+ 1.28585949140593193966e-05,
-+ 1.17910269994264146578e-05,
-+ 1.07372143790027249535e-05,
-+ 9.69749773328629209753e-06,
-+ 8.67220420039572420566e-06,
-+ 7.66164739132314657512e-06,
-+ 6.66612741284622437347e-06,
-+ 5.68593089796976951548e-06,
-+ 4.72133104379410701050e-06,
-+ 3.77258765668374723169e-06,
-+ 2.83994720461857994069e-06,
-+ 1.92364287659795633360e-06,
-+ 1.02389464897677183691e-06,
-+ 1.40909358598783243636e-07,
-+-7.25119217400925882488e-07,
-+-1.57401027526573751796e-06,
-+-2.40559589188401177682e-06,
-+-3.21972092580435969379e-06,
-+-4.01624291213239929447e-06,
-+-4.79503195145223449727e-06,
-+-5.55597059291959898474e-06,
-+-6.29895371166915398527e-06,
-+-7.02388838068995278969e-06,
-+-7.73069373730662337714e-06,
-+-8.41930084443043260571e-06,
-+-9.08965254672049638874e-06,
-+-9.74170332181420186798e-06,
-+-1.03754191267770145960e-05,
-+-1.09907772399306088372e-05,
-+-1.15877660982095854786e-05,
-+-1.21663851302071818753e-05,
-+-1.27266445850638015879e-05,
-+-1.32685653573596831328e-05,
-+-1.37921788081646564831e-05,
-+-1.42975265824070264185e-05,
-+-1.47846604227169150120e-05,
-+-1.52536419799077777845e-05,
-+-1.57045426202454864190e-05,
-+-1.61374432296745794440e-05,
-+-1.65524340151509907705e-05,
-+-1.69496143032443776877e-05,
-+-1.73290923361651281922e-05,
-+-1.76909850653765942752e-05,
-+-1.80354179429455134585e-05,
-+-1.83625247107888849940e-05,
-+-1.86724471879742999741e-05,
-+-1.89653350562250020523e-05,
-+-1.92413456437866339777e-05,
-+-1.95006437078064384194e-05,
-+-1.97434012153796016272e-05,
-+-1.99697971234102591856e-05,
-+-2.01800171574394671614e-05,
-+-2.03742535895865872536e-05,
-+-2.05527050157544749519e-05,
-+-2.07155761322383869926e-05,
-+-2.08630775118898238230e-05,
-+-2.09954253799722451970e-05,
-+-2.11128413898529763743e-05,
-+-2.12155523986690494219e-05,
-+-2.13037902431062623279e-05,
-+-2.13777915154254429865e-05,
-+-2.14377973398712400380e-05,
-+-2.14840531495946086989e-05,
-+-2.15168084642204138245e-05,
-+-2.15363166681862903517e-05,
-+-2.15428347899803886579e-05,
-+-2.15366232824005027408e-05,
-+-2.15179458039577262574e-05,
-+-2.14870690015422825217e-05,
-+-2.14442622944694083432e-05,
-+-2.13897976600211963056e-05,
-+-2.13239494205938423077e-05,
-+-2.12469940325636042692e-05,
-+-2.11592098769767039874e-05,
-+-2.10608770521689021838e-05,
-+-2.09522771684173563140e-05,
-+-2.08336931447246940868e-05,
-+-2.07054090078323760555e-05,
-+-2.05677096935581607638e-05,
-+-2.04208808505498906150e-05,
-+-2.02652086465450858026e-05,
-+-2.01009795772225878085e-05,
-+-1.99284802777307897448e-05,
-+-1.97479973369733553508e-05,
-+-1.95598171147313057406e-05,
-+-1.93642255616965921713e-05,
-+-1.91615080424908975211e-05,
-+-1.89519491617392180451e-05,
-+-1.87358325932659067312e-05,
-+-1.85134409124775290410e-05,
-+-1.82850554319945745078e-05,
-+-1.80509560405904254164e-05,
-+-1.78114210454942761765e-05,
-+-1.75667270181107023892e-05,
-+-1.73171486432067083623e-05,
-+-1.70629585716134836285e-05,
-+-1.68044272764881711800e-05,
-+-1.65418229131769521309e-05,
-+-1.62754111827191523261e-05,
-+-1.60054551990284544996e-05,
-+-1.57322153597849753270e-05,
-+-1.54559492210684566130e-05,
-+-1.51769113757617390406e-05,
-+-1.48953533357483810943e-05,
-+-1.46115234179280960335e-05,
-+-1.43256666340692667526e-05,
-+-1.40380245845161517285e-05,
-+-1.37488353557644599467e-05,
-+-1.34583334219182035850e-05,
-+-1.31667495500361276861e-05,
-+-1.28743107093750131593e-05,
-+-1.25812399845332226092e-05,
-+-1.22877564924967183814e-05,
-+-1.19940753035859587103e-05,
-+-1.17004073663007361519e-05,
-+-1.14069594360560160192e-05,
-+-1.11139340078022052344e-05,
-+-1.08215292525168970740e-05,
-+-1.05299389575568482923e-05,
-+-1.02393524708539662493e-05,
-+-9.94995464893742348120e-06,
-+-9.66192580876271611343e-06,
-+-9.37544168332491989210e-06,
-+-9.09067338103246418157e-06,
-+-8.80778734881422739372e-06,
-+-8.52694533893248795902e-06,
-+-8.24830437947059051977e-06,
-+-7.97201674846333152320e-06,
-+-7.69822995163491404110e-06,
-+-7.42708670370925303302e-06,
-+-7.15872491325360909230e-06,
-+-6.89327767101633304933e-06,
-+-6.63087324171573705124e-06,
-+-6.37163505923899323223e-06,
-+-6.11568172520321447157e-06,
-+-5.86312701083429459631e-06,
-+-5.61407986211404469277e-06,
-+-5.36864440814655013182e-06,
-+-5.12691997269171846217e-06,
-+-4.88900108881444233564e-06,
-+-4.65497751659457443244e-06,
-+-4.42493426384305196255e-06,
-+-4.19895160976678087265e-06,
-+-3.97710513152554464493e-06,
-+-3.75946573362158312445e-06,
-+-3.54609968006129461300e-06,
-+-3.33706862922910230812e-06,
-+-3.13242967141053148128e-06,
-+-2.93223536890220278037e-06,
-+-2.73653379864365903313e-06,
-+-2.54536859730841838172e-06,
-+-2.35877900878616331091e-06,
-+-2.17679993399191934131e-06,
-+-1.99946198293410626841e-06,
-+-1.82679152897453787459e-06,
-+-1.65881076521146377169e-06,
-+-1.49553776291791911430e-06,
-+-1.33698653196547020166e-06,
-+-1.18316708316432299485e-06,
-+-1.03408549244911473199e-06,
-+-8.89743966841013678409e-07,
-+-7.50140912114827378233e-07,
-+-6.15271002100918799020e-07,
-+-4.85125249549975873449e-07,
-+-3.59691078491283933177e-07,
-+-2.38952398011216803052e-07,
-+-1.22889677382464548894e-07,
-+ 0 /* Need a final zero coefficient */
-+
-diff -r -u --new-file k3b-r948463/libk3b/plugin/libsamplerate/float_cast.h k3b-r948463.patched/libk3b/plugin/libsamplerate/float_cast.h
---- k3b-r948463/libk3b/plugin/libsamplerate/float_cast.h 1969-12-31 18:00:00.000000000 -0600
-+++ k3b-r948463.patched/libk3b/plugin/libsamplerate/float_cast.h 2009-04-03 14:00:42.000000000 -0500
-@@ -0,0 +1,205 @@
-+/*
-+** Copyright (C) 2001-2003 Erik de Castro Lopo <erikd@mega-nerd.com>
-+**
-+** This program is free software; you can redistribute it and/or modify
-+** it under the terms of the GNU General Public License as published by
-+** the Free Software Foundation; either version 2 of the License, or
-+** (at your option) any later version.
-+**
-+** This program is distributed in the hope that it will be useful,
-+** but WITHOUT ANY WARRANTY; without even the implied warranty of
-+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+** GNU General Public License for more details.
-+**
-+** You should have received a copy of the GNU General Public License
-+** along with this program; if not, write to the Free Software
-+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+
-+/* Version 1.3 */
-+
-+
-+/*============================================================================
-+** On Intel Pentium processors (especially PIII and probably P4), converting
-+** from float to int is very slow. To meet the C specs, the code produced by
-+** most C compilers targeting Pentium needs to change the FPU rounding mode
-+** before the float to int conversion is performed.
-+**
-+** Changing the FPU rounding mode causes the FPU pipeline to be flushed. It
-+** is this flushing of the pipeline which is so slow.
-+**
-+** Fortunately the ISO C99 specifications define the functions lrint, lrintf,
-+** llrint and llrintf which fix this problem as a side effect.
-+**
-+** On Unix-like systems, the configure process should have detected the
-+** presence of these functions. If they weren't found we have to replace them
-+** here with a standard C cast.
-+*/
-+
-+/*
-+** The C99 prototypes for lrint and lrintf are as follows:
-+**
-+** long int lrintf (float x) ;
-+** long int lrint (double x) ;
-+*/
-+
-+#include "config-k3b.h"
-+
-+/*
-+** The presence of the required functions are detected during the configure
-+** process and the values HAVE_LRINT and HAVE_LRINTF are set accordingly in
-+** the config.h file.
-+*/
-+
-+#define HAVE_LRINT_REPLACEMENT 0
-+
-+#if (HAVE_LRINT && HAVE_LRINTF)
-+
-+ /*
-+ ** These defines enable functionality introduced with the 1999 ISO C
-+ ** standard. They must be defined before the inclusion of math.h to
-+ ** engage them. If optimization is enabled, these functions will be
-+ ** inlined. With optimization switched off, you have to link in the
-+ ** maths library using -lm.
-+ */
-+
-+ #define _ISOC9X_SOURCE 1
-+ #define _ISOC99_SOURCE 1
-+
-+ #define __USE_ISOC9X 1
-+ #define __USE_ISOC99 1
-+
-+ #include <math.h>
-+
-+#elif (defined (WIN32) || defined (_WIN32))
-+
-+ #undef HAVE_LRINT_REPLACEMENT
-+ #define HAVE_LRINT_REPLACEMENT 1
-+ #include <math.h>
-+
-+ /*
-+ ** Win32 doesn't seem to have these functions.
-+ ** Therefore implement inline versions of these functions here.
-+ */
-+
-+ __inline long int
-+ lrint (double flt)
-+ { int intgr;
-+
-+ _asm
-+ { fld flt
-+ fistp intgr
-+ } ;
-+
-+ return intgr ;
-+ }
-+
-+ __inline long int
-+ lrintf (float flt)
-+ { int intgr;
-+
-+ _asm
-+ { fld flt
-+ fistp intgr
-+ } ;
-+
-+ return intgr ;
-+ }
-+
-+#elif (defined (__MWERKS__) && defined (macintosh))
-+
-+ /* This MacOS 9 solution was provided by Stephane Letz */
-+
-+ #undef HAVE_LRINT_REPLACEMENT
-+ #define HAVE_LRINT_REPLACEMENT 1
-+ #include <math.h>
-+
-+ #undef lrint
-+ #undef lrintf
-+
-+ #define lrint double2int
-+ #define lrintf float2int
-+
-+ inline int
-+ float2int (register float in)
-+ { long res [2] ;
-+
-+ asm
-+ { fctiw in,in
-+ stfd in,res
-+ }
-+ return res [1] ;
-+ } /* float2int */
-+
-+ inline int
-+ double2int (register double in)
-+ { long res [2] ;
-+
-+ asm
-+ { fctiw in,in
-+ stfd in,res
-+ }
-+ return res [1] ;
-+ } /* double2int */
-+
-+#elif (defined (__MACH__) && defined (__APPLE__))
-+
-+ /* For Apple MacOSX. */
-+
-+ #undef HAVE_LRINT_REPLACEMENT
-+ #define HAVE_LRINT_REPLACEMENT 1
-+ #include <math.h>
-+
-+ #undef lrint
-+ #undef lrintf
-+
-+ #define lrint double2int
-+ #define lrintf float2int
-+
-+ inline static long int
-+ float2int (register float in)
-+ { int res [2] ;
-+
-+ __asm__ __volatile__
-+ ( "fctiw %1, %1\n\t"
-+ "stfd %1, %0"
-+ : "=m" (res) /* Output */
-+ : "f" (in) /* Input */
-+ : "memory"
-+ ) ;
-+
-+ return res [1] ;
-+ } /* lrintf */
-+
-+ inline static long int
-+ double2int (register double in)
-+ { int res [2] ;
-+
-+ __asm__ __volatile__
-+ ( "fctiw %1, %1\n\t"
-+ "stfd %1, %0"
-+ : "=m" (res) /* Output */
-+ : "f" (in) /* Input */
-+ : "memory"
-+ ) ;
-+
-+ return res [1] ;
-+ } /* lrint */
-+
-+#else
-+ #ifndef __sgi
-+#ifdef __GNUC__
-+ #warning "Don't have the functions lrint() and lrintf()."
-+#endif
-+ #warning "Replacing these functions with a standard C cast."
-+ #endif
-+
-+ #include <math.h>
-+
-+ #define lrint(dbl) ((int) (dbl))
-+ #define lrintf(flt) ((int) (flt))
-+
-+#endif
-+
-+
-+
-diff -r -u --new-file k3b-r948463/libk3b/plugin/libsamplerate/high_qual_coeffs.h k3b-r948463.patched/libk3b/plugin/libsamplerate/high_qual_coeffs.h
---- k3b-r948463/libk3b/plugin/libsamplerate/high_qual_coeffs.h 1969-12-31 18:00:00.000000000 -0600
-+++ k3b-r948463.patched/libk3b/plugin/libsamplerate/high_qual_coeffs.h 2009-04-03 14:00:42.000000000 -0500
-@@ -0,0 +1,17116 @@
-+/*
-+** Copyright (C) 2002,2003 Erik de Castro Lopo <erikd@mega-nerd.com>
-+**
-+** This program is free software; you can redistribute it and/or modify
-+** it under the terms of the GNU General Public License as published by
-+** the Free Software Foundation; either version 2 of the License, or
-+** (at your option) any later version.
-+**
-+** This program is distributed in the hope that it will be useful,
-+** but WITHOUT ANY WARRANTY; without even the implied warranty of
-+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+** GNU General Public License for more details.
-+**
-+** You should have received a copy of the GNU General Public License
-+** along with this program; if not, write to the Free Software
-+** Foundation, Inc., 51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+
-+/*
-+** f = make_filter (65, 128, 100.3) ;
-+** Pass band width : 0.0039062 (should be 0.0039062)
-+** Stop band atten. : 101.20 dB
-+** -3dB band width : 0.846
-+** half length : 17087
-+** increment : 128
-+*/
-+
-+ 9.73822959712628111184e-01,
-+ 9.73730227534126968614e-01,
-+ 9.73452062795049033461e-01,
-+ 9.72988560871685836950e-01,
-+ 9.72339880681256651940e-01,
-+ 9.71506244617024061760e-01,
-+ 9.70487938457503807044e-01,
-+ 9.69285311249795999977e-01,
-+ 9.67898775167100988703e-01,
-+ 9.66328805340476049146e-01,
-+ 9.64575939664910952942e-01,
-+ 9.62640778579811451365e-01,
-+ 9.60523984823974497083e-01,
-+ 9.58226283165186876190e-01,
-+ 9.55748460104550945360e-01,
-+ 9.53091363555660264772e-01,
-+ 9.50255902498805649081e-01,
-+ 9.47243046610318550904e-01,
-+ 9.44053825867236739988e-01,
-+ 9.40689330127495004774e-01,
-+ 9.37150708685763667027e-01,
-+ 9.33439169805209578712e-01,
-+ 9.29555980225306610620e-01,
-+ 9.25502464645995059911e-01,
-+ 9.21280005188352291157e-01,
-+ 9.16890040832049391106e-01,
-+ 9.12334066829837087020e-01,
-+ 9.07613634099317501125e-01,
-+ 9.02730348592271192310e-01,
-+ 8.97685870641828032035e-01,
-+ 8.92481914287746591619e-01,
-+ 8.87120246580144211634e-01,
-+ 8.81602686861939210949e-01,
-+ 8.75931106030353401337e-01,
-+ 8.70107425777795429056e-01,
-+ 8.64133617812459453589e-01,
-+ 8.58011703058984220860e-01,
-+ 8.51743750839512703266e-01,
-+ 8.45331878035551986805e-01,
-+ 8.38778248230970913113e-01,
-+ 8.32085070836509732572e-01,
-+ 8.25254600196225540643e-01,
-+ 8.18289134676235541122e-01,
-+ 8.11191015736170029093e-01,
-+ 8.03962626983747541409e-01,
-+ 7.96606393212902830214e-01,
-+ 7.89124779425847022729e-01,
-+ 7.81520289839554460620e-01,
-+ 7.73795466877067239508e-01,
-+ 7.65952890144075193568e-01,
-+ 7.57995175391232733908e-01,
-+ 7.49924973462656851986e-01,
-+ 7.41744969231072803773e-01,
-+ 7.33457880520075322650e-01,
-+ 7.25066457013996301662e-01,
-+ 7.16573479155810266761e-01,
-+ 7.07981757033636860399e-01,
-+ 6.99294129256251117965e-01,
-+ 6.90513461818149987259e-01,
-+ 6.81642646954653708136e-01,
-+ 6.72684601987533770107e-01,
-+ 6.63642268161698578588e-01,
-+ 6.54518609473419998857e-01,
-+ 6.45316611490632463521e-01,
-+ 6.36039280165809350898e-01,
-+ 6.26689640641951539735e-01,
-+ 6.17270736052177193542e-01,
-+ 6.07785626313482429950e-01,
-+ 5.98237386915153934730e-01,
-+ 5.88629107702400733437e-01,
-+ 5.78963891655698170702e-01,
-+ 5.69244853666411754212e-01,
-+ 5.59475119309209012464e-01,
-+ 5.49657823611788054485e-01,
-+ 5.39796109822496594788e-01,
-+ 5.29893128176318617406e-01,
-+ 5.19952034659813655537e-01,
-+ 5.09975989775514948477e-01,
-+ 4.99968157306331650869e-01,
-+ 4.89931703080488667457e-01,
-+ 4.79869793737535021982e-01,
-+ 4.69785595495954833023e-01,
-+ 4.59682272922913082169e-01,
-+ 4.49562987706663808041e-01,
-+ 4.39430897432148248605e-01,
-+ 4.29289154360313895964e-01,
-+ 4.19140904211673437363e-01,
-+ 4.08989284954621334922e-01,
-+ 3.98837425599043837732e-01,
-+ 3.88688444995713366925e-01,
-+ 3.78545450641997294206e-01,
-+ 3.68411537494394758507e-01,
-+ 3.58289786788378861182e-01,
-+ 3.48183264866087693878e-01,
-+ 3.38095022012320112204e-01,
-+ 3.28028091299366553191e-01,
-+ 3.17985487441129255348e-01,
-+ 3.07970205657046469661e-01,
-+ 2.97985220546282070231e-01,
-+ 2.88033484972657738421e-01,
-+ 2.78117928960799731808e-01,
-+ 2.68241458603957205753e-01,
-+ 2.58406954983961600902e-01,
-+ 2.48617273103761360353e-01,
-+ 2.38875240832987723039e-01,
-+ 2.29183657866993378827e-01,
-+ 2.19545294699780346726e-01,
-+ 2.09962891611264163005e-01,
-+ 2.00439157669269424344e-01,
-+ 1.90976769746686869667e-01,
-+ 1.81578371554184297976e-01,
-+ 1.72246572688870225321e-01,
-+ 1.62983947699301107148e-01,
-+ 1.53793035167208436143e-01,
-+ 1.44676336806320998685e-01,
-+ 1.35636316578646581865e-01,
-+ 1.26675399828566487281e-01,
-+ 1.17795972435093473929e-01,
-+ 1.09000379982627515485e-01,
-+ 1.00290926950544131979e-01,
-+ 9.16698759219308212387e-02,
-+ 8.31394468117901269677e-02,
-+ 7.47018161150024284645e-02,
-+ 6.63591161743508073378e-02,
-+ 5.81134344688867474082e-02,
-+ 4.99668129229093108123e-02,
-+ 4.19212472358281990070e-02,
-+ 3.39786862331567796058e-02,
-+ 2.61410312388884458201e-02,
-+ 1.84101354694814652035e-02,
-+ 1.07878034496857889285e-02,
-+ 3.27579045041895364904e-03,
-+-4.12419805110235924983e-03,
-+-1.14105068887806991584e-02,
-+-1.85815317024259456236e-02,
-+-2.56357194097392264431e-02,
-+-3.25715686553301464468e-02,
-+-3.93876302366183567161e-02,
-+-4.60825075064776670808e-02,
-+-5.26548567524927901840e-02,
-+-5.91033875527125010518e-02,
-+-6.54268631077873363822e-02,
-+-7.16241005493989252306e-02,
-+-7.76939712248916614090e-02,
-+-8.36354009580342477870e-02,
-+-8.94473702858456093390e-02,
-+-9.51289146714309197250e-02,
-+-1.00679124692788404816e-01,
-+-1.06097146207554629549e-01,
-+-1.11382180493666688159e-01,
-+-1.16533484365933040494e-01,
-+-1.21550370268516991223e-01,
-+-1.26432206343341957400e-01,
-+-1.31178416474445280748e-01,
-+-1.35788480308313530553e-01,
-+-1.40261933250244968940e-01,
-+-1.44598366436796466061e-01,
-+-1.48797426684381700612e-01,
-+-1.52858816414098541703e-01,
-+-1.56782293552872986631e-01,
-+-1.60567671411021850592e-01,
-+-1.64214818536340179111e-01,
-+-1.67723658544838616358e-01,
-+-1.71094169928257461288e-01,
-+-1.74326385838498049141e-01,
-+-1.77420393849128360531e-01,
-+-1.80376335694119815933e-01,
-+-1.83194406983985758064e-01,
-+-1.85874856899509832697e-01,
-+-1.88417987863249564162e-01,
-+-1.90824155189017602430e-01,
-+-1.93093766709557357331e-01,
-+-1.95227282382623990031e-01,
-+-1.97225213875713484279e-01,
-+-1.99088124129663118778e-01,
-+-2.00816626901390404836e-01,
-+-2.02411386286012268121e-01,
-+-2.03873116218622224549e-01,
-+-2.05202579955993086314e-01,
-+-2.06400589538496825881e-01,
-+-2.07468005232528396320e-01,
-+-2.08405734953734406156e-01,
-+-2.09214733671363894985e-01,
-+-2.09896002794046132589e-01,
-+-2.10450589537331811396e-01,
-+-2.10879586273321456558e-01,
-+-2.11184129862729524918e-01,
-+-2.11365400969725530933e-01,
-+-2.11424623359909302778e-01,
-+-2.11363063181782606659e-01,
-+-2.11182028232088397912e-01,
-+-2.10882867205385543530e-01,
-+-2.10466968928249342774e-01,
-+-2.09935761578479540557e-01,
-+-2.09290711889717429006e-01,
-+-2.08533324341858283812e-01,
-+-2.07665140337684211991e-01,
-+-2.06687737366111012882e-01,
-+-2.05602728152473046563e-01,
-+-2.04411759796272074485e-01,
-+-2.03116512896803713684e-01,
-+-2.01718700667107064817e-01,
-+-2.00220068036660509003e-01,
-+-1.98622390743273286029e-01,
-+-1.96927474414606312747e-01,
-+-1.95137153639780930314e-01,
-+-1.93253291031515200826e-01,
-+-1.91277776279251604530e-01,
-+-1.89212525193726166517e-01,
-+-1.87059478743444584925e-01,
-+-1.84820602083524743176e-01,
-+-1.82497883577372205233e-01,
-+-1.80093333811659150889e-01,
-+-1.77608984605069908369e-01,
-+-1.75046888011289869524e-01,
-+-1.72409115316711214483e-01,
-+-1.69697756033324376190e-01,
-+-1.66914916887274944468e-01,
-+-1.64062720803562822613e-01,
-+-1.61143305887356008688e-01,
-+-1.58158824402401171350e-01,
-+-1.55111441747006084668e-01,
-+-1.52003335428069458191e-01,
-+-1.48836694033641553370e-01,
-+-1.45613716204482351868e-01,
-+-1.42336609605105829379e-01,
-+-1.39007589894771910188e-01,
-+-1.35628879698910465024e-01,
-+-1.32202707581443923424e-01,
-+-1.28731307018481316851e-01,
-+-1.25216915373852127891e-01,
-+-1.21661772876947515964e-01,
-+-1.18068121603333617275e-01,
-+-1.14438204458597023172e-01,
-+-1.10774264165883040700e-01,
-+-1.07078542257586659114e-01,
-+-1.03353278071642365465e-01,
-+-9.96007077528702211566e-02,
-+-9.58230632598184722815e-02,
-+-9.20225713775505993475e-02,
-+-8.82014527368129436224e-02,
-+-8.43619208400154807492e-02,
-+-8.05061810944624617337e-02,
-+-7.66364298532504761852e-02,
-+-7.27548534642616651080e-02,
-+-6.88636273276640731300e-02,
-+-6.49649149623320182334e-02,
-+-6.10608670815911136476e-02,
-+-5.71536206786884617981e-02,
-+-5.32452981223815041689e-02,
-+-4.93380062630371721277e-02,
-+-4.54338355496189602589e-02,
-+-4.15348591579423748188e-02,
-+-3.76431321305677607514e-02,
-+-3.37606905286930644716e-02,
-+-2.98895505964036217739e-02,
-+-2.60317079376298707305e-02,
-+-2.21891367061550388862e-02,
-+-1.83637888090092127324e-02,
-+-1.45575931235783270074e-02,
-+-1.07724547287478406021e-02,
-+-7.01025415039811198442e-03,
-+-3.27284662155273445641e-03,
-+ 4.37938642517908310794e-04,
-+ 4.12029915395035594566e-03,
-+ 7.77245984641533344678e-03,
-+ 1.13926737534469080249e-02,
-+ 1.49792226707046640527e-02,
-+ 1.85304178019153227563e-02,
-+ 2.20446003882424183817e-02,
-+ 2.55201423208448671676e-02,
-+ 2.89554467363942642788e-02,
-+ 3.23489485953257979722e-02,
-+ 3.56991152426125377128e-02,
-+ 3.90044469508545738057e-02,
-+ 4.22634774454904785235e-02,
-+ 4.54747744119432459331e-02,
-+ 4.86369399845229810619e-02,
-+ 5.17486112169195516808e-02,
-+ 5.48084605341252126265e-02,
-+ 5.78151961656372809228e-02,
-+ 6.07675625598040544673e-02,
-+ 6.36643407791787629968e-02,
-+ 6.65043488767638746317e-02,
-+ 6.92864422530337364936e-02,
-+ 7.20095139936314521112e-02,
-+ 7.46724951876515663507e-02,
-+ 7.72743552264206767788e-02,
-+ 7.98141020827076302924e-02,
-+ 8.22907825702981904348e-02,
-+ 8.47034825838767768680e-02,
-+ 8.70513273191783898408e-02,
-+ 8.93334814733681981114e-02,
-+ 9.15491494256309712441e-02,
-+ 9.36975753979484987655e-02,
-+ 9.57780435960658566019e-02,
-+ 9.77898783306437036078e-02,
-+ 9.97324441186170501661e-02,
-+ 1.01605145764776208517e-01,
-+ 1.03407428423609545898e-01,
-+ 1.05138777641444206012e-01,
-+ 1.06798719378940032421e-01,
-+ 1.08386820013995285872e-01,
-+ 1.09902686325133475131e-01,
-+ 1.11345965455456150095e-01,
-+ 1.12716344857240108324e-01,
-+ 1.14013552217288011148e-01,
-+ 1.15237355363129817531e-01,
-+ 1.16387562150195578159e-01,
-+ 1.17464020330083573906e-01,
-+ 1.18466617400054957665e-01,
-+ 1.19395280433899547701e-01,
-+ 1.20249975894323096748e-01,
-+ 1.21030709427012495016e-01,
-+ 1.21737525636550936170e-01,
-+ 1.22370507844354617366e-01,
-+ 1.22929777828819461472e-01,
-+ 1.23415495547866391202e-01,
-+ 1.23827858844088756207e-01,
-+ 1.24167103132708178670e-01,
-+ 1.24433501072553173716e-01,
-+ 1.24627362220290069383e-01,
-+ 1.24749032668130088730e-01,
-+ 1.24798894665256510095e-01,
-+ 1.24777366223214461471e-01,
-+ 1.24684900705517007213e-01,
-+ 1.24521986401729317651e-01,
-+ 1.24289146086293156301e-01,
-+ 1.23986936562369309822e-01,
-+ 1.23615948190973698462e-01,
-+ 1.23176804405697795652e-01,
-+ 1.22670161213299697134e-01,
-+ 1.22096706680470845630e-01,
-+ 1.21457160407075034914e-01,
-+ 1.20752272986177383585e-01,
-+ 1.19982825451170740938e-01,
-+ 1.19149628710327484815e-01,
-+ 1.18253522969096608319e-01,
-+ 1.17295377140480550082e-01,
-+ 1.16276088243826986046e-01,
-+ 1.15196580792372674229e-01,
-+ 1.14057806169890793568e-01,
-+ 1.12860741996784086361e-01,
-+ 1.11606391485979145051e-01,
-+ 1.10295782788982596467e-01,
-+ 1.08929968332454704671e-01,
-+ 1.07510024145666946427e-01,
-+ 1.06037049179214082351e-01,
-+ 1.04512164615345154450e-01,
-+ 1.02936513170294341446e-01,
-+ 1.01311258388983055356e-01,
-+ 9.96375839324763756810e-02,
-+ 9.79166928585712137423e-02,
-+ 9.61498068959035084857e-02,
-+ 9.43381657119597566430e-02,
-+ 9.24830261753778609668e-02,
-+ 9.05856616129300240559e-02,
-+ 8.86473610615743090602e-02,
-+ 8.66694285159709948418e-02,
-+ 8.46531821718525673282e-02,
-+ 8.25999536656427529868e-02,
-+ 8.05110873107188207420e-02,
-+ 7.83879393307109761935e-02,
-+ 7.62318770902338793682e-02,
-+ 7.40442783234440127238e-02,
-+ 7.18265303608213723230e-02,
-+ 6.95800293545625059277e-02,
-+ 6.73061795029863685347e-02,
-+ 6.50063922743394223547e-02,
-+ 6.26820856303954981881e-02,
-+ 6.03346832502406754672e-02,
-+ 5.79656137546301838959e-02,
-+ 5.55763099313076533448e-02,
-+ 5.31682079616711544823e-02,
-+ 5.07427466491714163066e-02,
-+ 4.83013666498223193102e-02,
-+ 4.58455097052048524131e-02,
-+ 4.33766178783417805098e-02,
-+ 4.08961327928156204159e-02,
-+ 3.84054948755038344510e-02,
-+ 3.59061426032981009793e-02,
-+ 3.33995117541749445000e-02,
-+ 3.08870346629779371495e-02,
-+ 2.83701394822698481357e-02,
-+ 2.58502494486117818939e-02,
-+ 2.33287821546176998844e-02,
-+ 2.08071488271321346220e-02,
-+ 1.82867536118745781237e-02,
-+ 1.57689928648852076276e-02,
-+ 1.32552544511122961240e-02,
-+ 1.07469170504618516393e-02,
-+ 8.24534947164058847069e-03,
-+ 5.75190997410870291651e-03,
-+ 3.26794559845353929303e-03,
-+ 7.94791505500461897306e-04,
-+-1.66622967554532603295e-03,
-+-4.11380848962069559788e-03,
-+-6.54664928870115660209e-03,
-+-8.96347085478857441565e-03,
-+-1.13630070127026094190e-02,
-+-1.37440072324107598334e-02,
-+-1.61052372206219249207e-02,
-+-1.84454795013846463425e-02,
-+-2.07635339854373018875e-02,
-+-2.30582185280550702733e-02,
-+-2.53283694751598974226e-02,
-+-2.75728421974516593740e-02,
-+-2.97905116123358577884e-02,
-+-3.19802726934248146562e-02,
-+-3.41410409673992970570e-02,
-+-3.62717529980220235175e-02,
-+-3.83713668571045649069e-02,
-+-4.04388625822339128901e-02,
-+-4.24732426210736174754e-02,
-+-4.44735322620624928813e-02,
-+-4.64387800513385851087e-02,
-+-4.83680581957297989204e-02,
-+-5.02604629516505974074e-02,
-+-5.21151149997620341536e-02,
-+-5.39311598052534396652e-02,
-+-5.57077679636137287900e-02,
-+-5.74441355317703919448e-02,
-+-5.91394843444778550712e-02,
-+-6.07930623158483146584e-02,
-+-6.24041437259244130553e-02,
-+-6.39720294922026394557e-02,
-+-6.54960474260223579623e-02,
-+-6.69755524737441765293e-02,
-+-6.84099269426502037961e-02,
-+-6.97985807115074213813e-02,
-+-7.11409514257386743630e-02,
-+-7.24365046771608261933e-02,
-+-7.36847341682554390907e-02,
-+-7.48851618609372993163e-02,
-+-7.60373381098108092058e-02,
-+-7.71408417798946782762e-02,
-+-7.81952803488157183187e-02,
-+-7.92002899934755172362e-02,
-+-8.01555356612003028216e-02,
-+-8.10607111253977136167e-02,
-+-8.19155390257452209468e-02,
-+-8.27197708929510444609e-02,
-+-8.34731871581248646708e-02,
-+-8.41755971468178959549e-02,
-+-8.48268390577856662427e-02,
-+-8.54267799265437804968e-02,
-+-8.59753155737910251810e-02,
-+-8.64723705387828583957e-02,
-+-8.69178979977427990100e-02,
-+-8.73118796674136471436e-02,
-+-8.76543256938471931905e-02,
-+-8.79452745265522362050e-02,
-+-8.81847927781117119084e-02,
-+-8.83729750694022264668e-02,
-+-8.85099438605464611252e-02,
-+-8.85958492677388215197e-02,
-+-8.86308688660923243985e-02,
-+-8.86152074786611815282e-02,
-+-8.85490969517982173809e-02,
-+-8.84327959170169153325e-02,
-+-8.82665895395295801995e-02,
-+-8.80507892536431108210e-02,
-+-8.77857324851982756542e-02,
-+-8.74717823612454203897e-02,
-+-8.71093274071546297410e-02,
-+-8.66987812313650407781e-02,
-+-8.62405821979837367008e-02,
-+-8.57351930874506312774e-02,
-+-8.51831007454873639917e-02,
-+-8.45848157205629364030e-02,
-+-8.39408718901024919479e-02,
-+-8.32518260756789918453e-02,
-+-8.25182576474303292047e-02,
-+-8.17407681179471573563e-02,
-+-8.09199807258840636548e-02,
-+-8.00565400095505641520e-02,
-+-7.91511113707415864260e-02,
-+-7.82043806290729365260e-02,
-+-7.72170535670915342275e-02,
-+-7.61898554664313942819e-02,
-+-7.51235306352922710404e-02,
-+-7.40188419275257664109e-02,
-+-7.28765702536047221827e-02,
-+-7.16975140837712299202e-02,
-+-7.04824889436477669546e-02,
-+-6.92323269026086512978e-02,
-+-6.79478760552057331479e-02,
-+-6.66299999959486799472e-02,
-+-6.52795772877406560442e-02,
-+-6.38975009242730290770e-02,
-+-6.24846777866859409700e-02,
-+-6.10420280948025528733e-02,
-+-5.95704848532464525945e-02,
-+-5.80709932927548425075e-02,
-+-5.65445103069988283528e-02,
-+-5.49920038852278469932e-02,
-+-5.34144525410520376596e-02,
-+-5.18128447376807535485e-02,
-+-5.01881783099329334408e-02,
-+-4.85414598833405000478e-02,
-+-4.68737042906593598390e-02,
-+-4.51859339861135078653e-02,
-+-4.34791784576844600463e-02,
-+-4.17544736377706837693e-02,
-+-4.00128613125346824231e-02,
-+-3.82553885302546123337e-02,
-+-3.64831070090038678266e-02,
-+-3.46970725439699687054e-02,
-+-3.28983444147356932086e-02,
-+-3.10879847928346199348e-02,
-+-2.92670581498969371859e-02,
-+-2.74366306667012324616e-02,
-+-2.55977696434401616465e-02,
-+-2.37515429115148085648e-02,
-+-2.18990182471639621697e-02,
-+-2.00412627872342125057e-02,
-+-1.81793424474003748048e-02,
-+-1.63143213431318143125e-02,
-+-1.44472612137104394064e-02,
-+-1.25792208495948080321e-02,
-+-1.07112555234262843418e-02,
-+-8.84441642496919776251e-03,
-+-6.97975010027273440327e-03,
-+-5.11829789534247545785e-03,
-+-3.26109540460238272672e-03,
-+-1.40917192442717876394e-03,
-+ 4.36450087979504280662e-04,
-+ 2.27475555008947467189e-03,
-+ 4.10473728366783034011e-03,
-+ 5.92539653824247346953e-03,
-+ 7.73574350816149444027e-03,
-+ 9.53479784298774321605e-03,
-+ 1.13215891509725555958e-02,
-+ 1.30951574953684958535e-02,
-+ 1.48545538833333903156e-02,
-+ 1.65988407471903930135e-02,
-+ 1.83270924178097725787e-02,
-+ 2.00383955898867233136e-02,
-+ 2.17318497788877018628e-02,
-+ 2.34065677694524146291e-02,
-+ 2.50616760550354221448e-02,
-+ 2.66963152685791259289e-02,
-+ 2.83096406040205736399e-02,
-+ 2.99008222284305145988e-02,
-+ 3.14690456845965957355e-02,
-+ 3.30135122838646696830e-02,
-+ 3.45334394890581680704e-02,
-+ 3.60280612873039099431e-02,
-+ 3.74966285525929615696e-02,
-+ 3.89384093979178655398e-02,
-+ 4.03526895168305685391e-02,
-+ 4.17387725142676843659e-02,
-+ 4.30959802265037661417e-02,
-+ 4.44236530300948923022e-02,
-+ 4.57211501396783959184e-02,
-+ 4.69878498945072997639e-02,
-+ 4.82231500336007049001e-02,
-+ 4.94264679593977643290e-02,
-+ 5.05972409898094652170e-02,
-+ 5.17349265985714082405e-02,
-+ 5.28390026438036938816e-02,
-+ 5.39089675846917554258e-02,
-+ 5.49443406862122687984e-02,
-+ 5.59446622118279432434e-02,
-+ 5.69094936040880627903e-02,
-+ 5.78384176530744725797e-02,
-+ 5.87310386526413361064e-02,
-+ 5.95869825444026307570e-02,
-+ 6.04058970494284683261e-02,
-+ 6.11874517876177664855e-02,
-+ 6.19313383847234916191e-02,
-+ 6.26372705670065754724e-02,
-+ 6.33049842435138704344e-02,
-+ 6.39342375759682501890e-02,
-+ 6.45248110362744708990e-02,
-+ 6.50765074516480857003e-02,
-+ 6.55891520373845793301e-02,
-+ 6.60625924172834749770e-02,
-+ 6.64966986317623437452e-02,
-+ 6.68913631336883612866e-02,
-+ 6.72465007719728613544e-02,
-+ 6.75620487629735172463e-02,
-+ 6.78379666497569006056e-02,
-+ 6.80742362492841729393e-02,
-+ 6.82708615875821517305e-02,
-+ 6.84278688229765230666e-02,
-+ 6.85453061574607669382e-02,
-+ 6.86232437362914587942e-02,
-+ 6.86617735358941577717e-02,
-+ 6.86610092401827576403e-02,
-+ 6.86210861053920678776e-02,
-+ 6.85421608135311638543e-02,
-+ 6.84244113145758836581e-02,
-+ 6.82680366575164482290e-02,
-+ 6.80732568103898511014e-02,
-+ 6.78403124694252068760e-02,
-+ 6.75694648574412526365e-02,
-+ 6.72609955116377500328e-02,
-+ 6.69152060609276150283e-02,
-+ 6.65324179929640407982e-02,
-+ 6.61129724110185862385e-02,
-+ 6.56572297808763333249e-02,
-+ 6.51655696679120516324e-02,
-+ 6.46383904645234791397e-02,
-+ 6.40761091080973010925e-02,
-+ 6.34791607896909026998e-02,
-+ 6.28479986536143592213e-02,
-+ 6.21830934881068692066e-02,
-+ 6.14849334072996994704e-02,
-+ 6.07540235246672929992e-02,
-+ 5.99908856181665117724e-02,
-+ 5.91960577872764140417e-02,
-+ 5.83700941021449495882e-02,
-+ 5.75135642450580880647e-02,
-+ 5.66270531444532515541e-02,
-+ 5.57111606016933366692e-02,
-+ 5.47665009108296851892e-02,
-+ 5.37937024715815850784e-02,
-+ 5.27934073957626870399e-02,
-+ 5.17662711073889059143e-02,
-+ 5.07129619367031950206e-02,
-+ 4.96341607083598743144e-02,
-+ 4.85305603240058919257e-02,
-+ 4.74028653395071053467e-02,
-+ 4.62517915370636301109e-02,
-+ 4.50780654924642990022e-02,
-+ 4.38824241377281029641e-02,
-+ 4.26656143193894568655e-02,
-+ 4.14283923526756400757e-02,
-+ 4.01715235718370783369e-02,
-+ 3.88957818768817381594e-02,
-+ 3.76019492769772492591e-02,
-+ 3.62908154307766822599e-02,
-+ 3.49631771839265942381e-02,
-+ 3.36198381040227756156e-02,
-+ 3.22616080132712215733e-02,
-+ 3.08893025191169512400e-02,
-+ 2.95037425431055044811e-02,
-+ 2.81057538482372380739e-02,
-+ 2.66961665650768086022e-02,
-+ 2.52758147168840839603e-02,
-+ 2.38455357440239580635e-02,
-+ 2.24061700279218310727e-02,
-+ 2.09585604148223095256e-02,
-+ 1.95035517396166743764e-02,
-+ 1.80419903499945237513e-02,
-+ 1.65747236311830255240e-02,
-+ 1.51025995315297069388e-02,
-+ 1.36264660891878813115e-02,
-+ 1.21471709601575494908e-02,
-+ 1.06655609479410495855e-02,
-+ 9.18248153506075540098e-03,
-+ 7.69877641669523653245e-03,
-+ 6.21528703667832953944e-03,
-+ 4.73285212611389023013e-03,
-+ 3.25230724484593071086e-03,
-+ 1.77448432603104764606e-03,
-+ 3.00211224053546050453e-04,
-+-1.16968873398075085164e-03,
-+-2.63439719293501574751e-03,
-+-4.09310121028114842767e-03,
-+-5.54499369246326881400e-03,
-+-6.98927382675401144552e-03,
-+-8.42514750838012187184e-03,
-+-9.85182776269834421801e-03,
-+-1.12685351622023224166e-02,
-+-1.26744982381468297011e-02,
-+-1.40689538865774264181e-02,
-+-1.54511477685608713400e-02,
-+-1.68203347044119586040e-02,
-+-1.81757790617144907031e-02,
-+-1.95167551369457396848e-02,
-+-2.08425475305089903666e-02,
-+-2.21524515149872230912e-02,
-+-2.34457733964363347623e-02,
-+-2.47218308685369890509e-02,
-+-2.59799533594318662888e-02,
-+-2.72194823710760064328e-02,
-+-2.84397718109379513129e-02,
-+-2.96401883158870678436e-02,
-+-3.08201115681125577261e-02,
-+-3.19789346029227747326e-02,
-+-3.31160641082781370681e-02,
-+-3.42309207159130005071e-02,
-+-3.53229392839145145411e-02,
-+-3.63915691706218277779e-02,
-+-3.74362744997228866217e-02,
-+-3.84565344164232020274e-02,
-+-3.94518433345735566875e-02,
-+-4.04217111746440760367e-02,
-+-4.13656635924379983971e-02,
-+-4.22832421984465703368e-02,
-+-4.31740047677477145616e-02,
-+-4.40375254403603463849e-02,
-+-4.48733949119690250784e-02,
-+-4.56812206149411689782e-02,
-+-4.64606268895620885817e-02,
-+-4.72112551454219875335e-02,
-+-4.79327640128901638628e-02,
-+-4.86248294846227807620e-02,
-+-4.92871450470508051800e-02,
-+-4.99194218018040730689e-02,
-+-5.05213885770312357004e-02,
-+-5.10927920285815725943e-02,
-+-5.16333967310192848421e-02,
-+-5.21429852584503056301e-02,
-+-5.26213582551397357490e-02,
-+-5.30683344959132635710e-02,
-+-5.34837509363331325973e-02,
-+-5.38674627526497529217e-02,
-+-5.42193433715342787416e-02,
-+-5.45392844896020398404e-02,
-+-5.48271960827455065446e-02,
-+-5.50830064052948084607e-02,
-+-5.53066619790379757071e-02,
-+-5.54981275721307884541e-02,
-+-5.56573861679344195075e-02,
-+-5.57844389238277491017e-02,
-+-5.58793051200398085965e-02,
-+-5.59420220985603691699e-02,
-+-5.59726451921854703531e-02,
-+-5.59712476437655773176e-02,
-+-5.59379205157255615655e-02,
-+-5.58727725899317365088e-02,
-+-5.57759302579874938210e-02,
-+-5.56475374020423893540e-02,
-+-5.54877552662062720201e-02,
-+-5.52967623186622694864e-02,
-+-5.50747541045816801919e-02,
-+-5.48219430899443069261e-02,
-+-5.45385584963738595521e-02,
-+-5.42248461271042508924e-02,
-+-5.38810681841958433180e-02,
-+-5.35075030771247142636e-02,
-+-5.31044452228734698007e-02,
-+-5.26722048376558060756e-02,
-+-5.22111077204129997442e-02,
-+-5.17214950282209942611e-02,
-+-5.12037230437547910555e-02,
-+-5.06581629349584436350e-02,
-+-5.00852005070748507176e-02,
-+-4.94852359471897595977e-02,
-+-4.88586835614527661975e-02,
-+-4.82059715051387852047e-02,
-+-4.75275415057165098731e-02,
-+-4.68238485790967787215e-02,
-+-4.60953607392339606563e-02,
-+-4.53425587012589517699e-02,
-+-4.45659355783224117586e-02,
-+-4.37659965723364227652e-02,
-+-4.29432586587956896529e-02,
-+-4.20982502658717866462e-02,
-+-4.12315109479716793150e-02,
-+-4.03435910539542696984e-02,
-+-3.94350513902031810098e-02,
-+-3.85064628787541649024e-02,
-+-3.75584062106811000792e-02,
-+-3.65914714949422334445e-02,
-+-3.56062579028932485459e-02,
-+-3.46033733086755293518e-02,
-+-3.35834339256887229319e-02,
-+-3.25470639393581201437e-02,
-+-3.14948951364113841067e-02,
-+-3.04275665308768074324e-02,
-+-2.93457239870188353603e-02,
-+-2.82500198394295444493e-02,
-+-2.71411125104896906735e-02,
-+-2.60196661254226829785e-02,
-+-2.48863501251557692195e-02,
-+-2.37418388772132477049e-02,
-+-2.25868112848582602847e-02,
-+-2.14219503947065334493e-02,
-+-2.02479430030328977352e-02,
-+-1.90654792609915822721e-02,
-+-1.78752522789717531448e-02,
-+-1.66779577303104824260e-02,
-+-1.54742934545847657390e-02,
-+-1.42649590607015902544e-02,
-+-1.30506555300084672172e-02,
-+-1.18320848196448689948e-02,
-+-1.06099494663520910881e-02,
-+-9.38495219096077346044e-03,
-+-8.15779550377599728395e-03,
-+-6.92918131107302364552e-03,
-+-5.69981052292132129439e-03,
-+-4.47038266255170985142e-03,
-+-3.24159547747867194528e-03,
-+-2.01414455258872894527e-03,
-+-7.88722925405390719311e-04,
-+ 4.33979296259515102616e-04,
-+ 1.65327531406484059748e-03,
-+ 2.86848201610344138643e-03,
-+ 4.07892035086573293695e-03,
-+ 5.28391569800646006272e-03,
-+ 6.48279823571479112132e-03,
-+ 7.67490330449144362440e-03,
-+ 8.85957176714050748112e-03,
-+ 1.00361503647855877797e-02,
-+ 1.12039920687220222878e-02,
-+ 1.23624564279179102733e-02,
-+ 1.35109099119845744302e-02,
-+ 1.46487262494354297110e-02,
-+ 1.57752867610552773014e-02,
-+ 1.68899806882093564409e-02,
-+ 1.79922055159205465658e-02,
-+ 1.90813672905472929420e-02,
-+ 2.01568809318992299418e-02,
-+ 2.12181705396309386313e-02,
-+ 2.22646696937574897768e-02,
-+ 2.32958217491361675722e-02,
-+ 2.43110801237692714105e-02,
-+ 2.53099085807794131620e-02,
-+ 2.62917815039164816382e-02,
-+ 2.72561841664596578305e-02,
-+ 2.82026129933784439063e-02,
-+ 2.91305758166261995201e-02,
-+ 3.00395921234366258812e-02,
-+ 3.09291932975059961908e-02,
-+ 3.17989228529399620138e-02,
-+ 3.26483366608550443222e-02,
-+ 3.34770031685240748720e-02,
-+ 3.42845036109633918842e-02,
-+ 3.50704322148587890884e-02,
-+ 3.58343963947392735170e-02,
-+ 3.65760169413035240993e-02,
-+ 3.72949282018151320739e-02,
-+ 3.79907782524846540650e-02,
-+ 3.86632290627611160949e-02,
-+ 3.93119566514606166852e-02,
-+ 3.99366512346636878816e-02,
-+ 4.05370173653198731523e-02,
-+ 4.11127740644999239983e-02,
-+ 4.16636549442422551848e-02,
-+ 4.21894083219462659451e-02,
-+ 4.26897973262660088145e-02,
-+ 4.31645999944682140503e-02,
-+ 4.36136093612174424727e-02,
-+ 4.40366335387612217733e-02,
-+ 4.44334957884889164559e-02,
-+ 4.48040345838451384286e-02,
-+ 4.51481036645831335097e-02,
-+ 4.54655720823471248826e-02,
-+ 4.57563242375793044481e-02,
-+ 4.60202599077495430602e-02,
-+ 4.62572942669144740457e-02,
-+ 4.64673578966120978673e-02,
-+ 4.66503967881086306635e-02,
-+ 4.68063723360144789964e-02,
-+ 4.69352613232939530619e-02,
-+ 4.70370558976949404428e-02,
-+ 4.71117635396342340770e-02,
-+ 4.71594070215737987128e-02,
-+ 4.71800243589305737246e-02,
-+ 4.71736687525673714649e-02,
-+ 4.71404085229153516079e-02,
-+ 4.70803270357842834626e-02,
-+ 4.69935226199208050391e-02,
-+ 4.68801084763797309973e-02,
-+ 4.67402125797770004456e-02,
-+ 4.65739775714988368804e-02,
-+ 4.63815606449435313685e-02,
-+ 4.61631334228796152974e-02,
-+ 4.59188818270049037285e-02,
-+ 4.56490059397985786793e-02,
-+ 4.53537198587595224986e-02,
-+ 4.50332515431300858810e-02,
-+ 4.46878426532076045152e-02,
-+ 4.43177483823498988280e-02,
-+ 4.39232372817854738178e-02,
-+ 4.35045910783411482470e-02,
-+ 4.30621044852065107400e-02,
-+ 4.25960850058553150421e-02,
-+ 4.21068527312480900271e-02,
-+ 4.15947401304457009541e-02,
-+ 4.10600918347645213458e-02,
-+ 4.05032644156081075848e-02,
-+ 3.99246261561139251239e-02,
-+ 3.93245568167555487049e-02,
-+ 3.87034473950466154091e-02,
-+ 3.80616998794914215831e-02,
-+ 3.73997269979330568268e-02,
-+ 3.67179519604542980993e-02,
-+ 3.60168081969824901978e-02,
-+ 3.52967390897612337541e-02,
-+ 3.45581977008463520074e-02,
-+ 3.38016464947914485606e-02,
-+ 3.30275570566867723854e-02,
-+ 3.22364098057202272396e-02,
-+ 3.14286937044311875944e-02,
-+ 3.06049059638265272265e-02,
-+ 2.97655517445348863359e-02,
-+ 2.89111438541742558905e-02,
-+ 2.80422024411093630258e-02,
-+ 2.71592546847793693543e-02,
-+ 2.62628344827749958534e-02,
-+ 2.53534821348480460257e-02,
-+ 2.44317440240356988090e-02,
-+ 2.34981722950843643916e-02,
-+ 2.25533245303600957121e-02,
-+ 2.15977634234290963300e-02,
-+ 2.06320564504986307675e-02,
-+ 1.96567755399048478548e-02,
-+ 1.86724967398384719686e-02,
-+ 1.76797998844943696217e-02,
-+ 1.66792682588392839060e-02,
-+ 1.56714882621848752842e-02,
-+ 1.46570490707573775069e-02,
-+ 1.36365422994567421500e-02,
-+ 1.26105616629926826217e-02,
-+ 1.15797026365911225748e-02,
-+ 1.05445621164599462327e-02,
-+ 9.50573808020578961409e-03,
-+ 8.46382924739110323320e-03,
-+ 7.41943474041982693745e-03,
-+ 6.37315374594339158210e-03,
-+ 5.32558517697237672472e-03,
-+ 4.27732733588230377986e-03,
-+ 3.22897757850148679412e-03,
-+ 2.18113197946379544154e-03,
-+ 1.13438499901297824499e-03,
-+ 8.93291514401199637785e-05,
-+-9.53445324662180308285e-04,
-+-1.99335079414908163467e-03,
-+-3.02980255089889101774e-03,
-+-4.06221914103327592926e-03,
-+-5.09002268361045690642e-03,
-+-6.11263918861550906853e-03,
-+-7.12949887207463706834e-03,
-+-8.14003646812562139945e-03,
-+-9.14369153787539246103e-03,
-+-1.01399087748766797423e-02,
-+-1.11281383070643315192e-02,
-+-1.21078359949849043153e-02,
-+-1.30784637261652115364e-02,
-+-1.40394897054589556235e-02,
-+-1.49903887412209321783e-02,
-+-1.59306425271560810064e-02,
-+-1.68597399196934796817e-02,
-+-1.77771772107420643338e-02,
-+-1.86824583956837868282e-02,
-+-1.95750954364632238913e-02,
-+-2.04546085196391988492e-02,
-+-2.13205263092617232357e-02,
-+-2.21723861944465271134e-02,
-+-2.30097345315165013879e-02,
-+-2.38321268805886041231e-02,
-+-2.46391282364846579689e-02,
-+-2.54303132538467105417e-02,
-+-2.62052664663464558725e-02,
-+-2.69635824998752660075e-02,
-+-2.77048662796101873018e-02,
-+-2.84287332308504510359e-02,
-+-2.91348094735277007850e-02,
-+-2.98227320102924450818e-02,
-+-3.04921489080843266528e-02,
-+-3.11427194730996177718e-02,
-+-3.17741144190714572271e-02,
-+-3.23860160287801970846e-02,
-+-3.29781183087202514614e-02,
-+-3.35501271368501066683e-02,
-+-3.41017604033561905208e-02,
-+-3.46327481443660725735e-02,
-+-3.51428326685533573559e-02,
-+-3.56317686765738189658e-02,
-+-3.60993233732840035355e-02,
-+-3.65452765726929293399e-02,
-+-3.69694207956033291107e-02,
-+-3.73715613599018697810e-02,
-+-3.77515164634644601049e-02,
-+-3.81091172596444149878e-02,
-+-3.84442079253161372865e-02,
-+-3.87566457214516685292e-02,
-+-3.90463010462121923316e-02,
-+-3.93130574805393290250e-02,
-+-3.95568118262348833447e-02,
-+-3.97774741365262002324e-02,
-+-3.99749677391120911141e-02,
-+-4.01492292516929735746e-02,
-+-4.03002085899928502721e-02,
-+-4.04278689682822170437e-02,
-+-4.05321868924172351578e-02,
-+-4.06131521454162341955e-02,
-+-4.06707677655930785465e-02,
-+-4.07050500172784421316e-02,
-+-4.07160283541586343059e-02,
-+-4.07037453752667754969e-02,
-+-4.06682567736679767556e-02,
-+-4.06096312778803508747e-02,
-+-4.05279505860795044581e-02,
-+-4.04233092931398294012e-02,
-+-4.02958148105644620163e-02,
-+-4.01455872793672688403e-02,
-+-3.99727594759664850432e-02,
-+-3.97774767111586519119e-02,
-+-3.95598967222433872681e-02,
-+-3.93201895583720484328e-02,
-+-3.90585374591997241955e-02,
-+-3.87751347269212551239e-02,
-+-3.84701875917762628476e-02,
-+-3.81439140711113400251e-02,
-+-3.77965438220935409652e-02,
-+-3.74283179881668356948e-02,
-+-3.70394890393534528816e-02,
-+-3.66303206065006978220e-02,
-+-3.62010873095778978881e-02,
-+-3.57520745801320274926e-02,
-+-3.52835784780144504080e-02,
-+-3.47959055024906621645e-02,
-+-3.42893723978519651685e-02,
-+-3.37643059536492443073e-02,
-+-3.32210427996700446984e-02,
-+-3.26599291957861484481e-02,
-+-3.20813208167984795227e-02,
-+-3.14855825324110299990e-02,
-+-3.08730881824660075008e-02,
-+-3.02442203475766398235e-02,
-+-2.95993701152947666366e-02,
-+-2.89389368419537100496e-02,
-+-2.82633279103284111577e-02,
-+-2.75729584832571511521e-02,
-+-2.68682512533715799063e-02,
-+-2.61496361890828643570e-02,
-+-2.54175502769729139141e-02,
-+-2.46724372607451357398e-02,
-+-2.39147473768850267473e-02,
-+-2.31449370871867204924e-02,
-+-2.23634688083034216532e-02,
-+-2.15708106384762607344e-02,
-+-2.07674360816027074594e-02,
-+-1.99538237688046717067e-02,
-+-1.91304571776571320785e-02,
-+-1.82978243492389613944e-02,
-+-1.74564176031696584313e-02,
-+-1.66067332507972391376e-02,
-+-1.57492713066995013160e-02,
-+-1.48845351986653506166e-02,
-+-1.40130314763233891628e-02,
-+-1.31352695185807718387e-02,
-+-1.22517612400427650804e-02,
-+-1.13630207965765197414e-02,
-+-1.04695642901892153193e-02,
-+-9.57190947338527192700e-03,
-+-8.67057545317061195700e-03,
-+-7.76608239487228645126e-03,
-+-6.85895122593805847688e-03,
-+-5.94970333988319773771e-03,
-+-5.03886030055244581866e-03,
-+-4.12694354685914054082e-03,
-+-3.21447409816993977597e-03,
-+-2.30197226049791555877e-03,
-+-1.38995733366734314576e-03,
-+-4.78947319613120116137e-04,
-+ 4.30541368021724365611e-04,
-+ 1.33799419283328071238e-03,
-+ 2.24289878298409997917e-03,
-+ 3.14474521675841243995e-03,
-+ 4.04302630618200674328e-03,
-+ 4.93723787855436784672e-03,
-+ 5.82687905573941924281e-03,
-+ 6.71145253105821966433e-03,
-+ 7.59046484363825723490e-03,
-+ 8.46342665006433181318e-03,
-+ 9.32985299318577973593e-03,
-+ 1.01892635679366270335e-02,
-+ 1.10411829840201432262e-02,
-+ 1.18851410253191149685e-02,
-+ 1.27206729058918742437e-02,
-+ 1.35473195224164386086e-02,
-+ 1.43646277029455919638e-02,
-+ 1.51721504518438701781e-02,
-+ 1.59694471907719792725e-02,
-+ 1.67560839955920790056e-02,
-+ 1.75316338290704282210e-02,
-+ 1.82956767692504761180e-02,
-+ 1.90478002333781711031e-02,
-+ 1.97875991972636944283e-02,
-+ 2.05146764099610016963e-02,
-+ 2.12286426036550797403e-02,
-+ 2.19291166986495568436e-02,
-+ 2.26157260033451115722e-02,
-+ 2.32881064091071711408e-02,
-+ 2.39459025799248388655e-02,
-+ 2.45887681367592640658e-02,
-+ 2.52163658364931847489e-02,
-+ 2.58283677453865524731e-02,
-+ 2.64244554069528701790e-02,
-+ 2.70043200041730317718e-02,
-+ 2.75676625159635493856e-02,
-+ 2.81141938678234649951e-02,
-+ 2.86436350765866577783e-02,
-+ 2.91557173892062447551e-02,
-+ 2.96501824155063799238e-02,
-+ 3.01267822548387659287e-02,
-+ 3.05852796165800439043e-02,
-+ 3.10254479344173710043e-02,
-+ 3.14470714743682391856e-02,
-+ 3.18499454364842490839e-02,
-+ 3.22338760501942114822e-02,
-+ 3.25986806632450124011e-02,
-+ 3.29441878242012764488e-02,
-+ 3.32702373584682215002e-02,
-+ 3.35766804378105562789e-02,
-+ 3.38633796433344125276e-02,
-+ 3.41302090219154988238e-02,
-+ 3.43770541360479547910e-02,
-+ 3.46038121071011867125e-02,
-+ 3.48103916519715006483e-02,
-+ 3.49967131131205394512e-02,
-+ 3.51627084819939664251e-02,
-+ 3.53083214158219776957e-02,
-+ 3.54335072478019763587e-02,
-+ 3.55382329906705415890e-02,
-+ 3.56224773336756214692e-02,
-+ 3.56862306329609538236e-02,
-+ 3.57294948953816096648e-02,
-+ 3.57522837557707126588e-02,
-+ 3.57546224476834179073e-02,
-+ 3.57365477676438725307e-02,
-+ 3.56981080329308309018e-02,
-+ 3.56393630329330246553e-02,
-+ 3.55603839741180857703e-02,
-+ 3.54612534186531380698e-02,
-+ 3.53420652167257473564e-02,
-+ 3.52029244326149889921e-02,
-+ 3.50439472645631341918e-02,
-+ 3.48652609585071091014e-02,
-+ 3.46670037157273194794e-02,
-+ 3.44493245944778661571e-02,
-+ 3.42123834056644454682e-02,
-+ 3.39563506026385533709e-02,
-+ 3.36814071651815385988e-02,
-+ 3.33877444777541942944e-02,
-+ 3.30755642020896523103e-02,
-+ 3.27450781442136518162e-02,
-+ 3.23965081159751852602e-02,
-+ 3.20300857911755970653e-02,
-+ 3.16460525563882003053e-02,
-+ 3.12446593565609519183e-02,
-+ 3.08261665354972284880e-02,
-+ 3.03908436713170998500e-02,
-+ 2.99389694069978791469e-02,
-+ 2.94708312760984421363e-02,
-+ 2.89867255237756110686e-02,
-+ 2.84869569232016131566e-02,
-+ 2.79718385874915022316e-02,
-+ 2.74416917772590980562e-02,
-+ 2.68968457039136660258e-02,
-+ 2.63376373288174668585e-02,
-+ 2.57644111584257248793e-02,
-+ 2.51775190355282320331e-02,
-+ 2.45773199267213977859e-02,
-+ 2.39641797062345729419e-02,
-+ 2.33384709362384548670e-02,
-+ 2.27005726437677947394e-02,
-+ 2.20508700943889204837e-02,
-+ 2.13897545627447401018e-02,
-+ 2.07176231001132207798e-02,
-+ 2.00348782991160503930e-02,
-+ 1.93419280557122104380e-02,
-+ 1.86391853286192524242e-02,
-+ 1.79270678963008890661e-02,
-+ 1.72059981116597301987e-02,
-+ 1.64764026545822124536e-02,
-+ 1.57387122824750626260e-02,
-+ 1.49933615789394694695e-02,
-+ 1.42407887007263995321e-02,
-+ 1.34814351231214504812e-02,
-+ 1.27157453839016106739e-02,
-+ 1.19441668260144781555e-02,
-+ 1.11671493391258293271e-02,
-+ 1.03851451001812210978e-02,
-+ 9.59860831313457708858e-03,
-+ 8.80799494798568949339e-03,
-+ 8.01376247928074769700e-03,
-+ 7.21636962422106571780e-03,
-+ 6.41627608052837850733e-03,
-+ 5.61394226421643282449e-03,
-+ 4.80982904741692092465e-03,
-+ 4.00439749640451800317e-03,
-+ 3.19810860997276008924e-03,
-+ 2.39142305830572152181e-03,
-+ 1.58480092248966769435e-03,
-+ 7.78701434814883992376e-04,
-+-2.64172799899629922237e-05,
-+-8.30098462447035776932e-04,
-+-1.63188697479669402902e-03,
-+-2.43132955610078941786e-03,
-+-3.22797507584321246785e-03,
-+-4.02137478588284608128e-03,
-+-4.81108257062173427093e-03,
-+-5.59665519525267239620e-03,
-+-6.37765255194445643272e-03,
-+-7.15363790383393653022e-03,
-+-7.92417812668915269581e-03,
-+-8.68884394811023953731e-03,
-+-9.44721018414002543240e-03,
-+-1.01988559731527404090e-02,
-+-1.09433650068938154165e-02,
-+-1.16803257585482624797e-02,
-+-1.24093317077095619677e-02,
-+-1.31299815621298259644e-02,
-+-1.38418794761330250093e-02,
-+-1.45446352655703541046e-02,
-+-1.52378646192042489088e-02,
-+-1.59211893064089386740e-02,
-+-1.65942373810739063344e-02,
-+-1.72566433816031643278e-02,
-+-1.79080485269053901742e-02,
-+-1.85481009082684548950e-02,
-+-1.91764556770177840850e-02,
-+-1.97927752278625780635e-02,
-+-2.03967293778293395912e-02,
-+-2.09879955406921600569e-02,
-+-2.15662588968082193086e-02,
-+-2.21312125582700525150e-02,
-+-2.26825577292899260851e-02,
-+-2.32200038617330316304e-02,
-+-2.37432688057198117149e-02,
-+-2.42520789552232059194e-02,
-+-2.47461693885826818085e-02,
-+-2.52252840038678892431e-02,
-+-2.56891756490234268728e-02,
-+-2.61376062467286660040e-02,
-+-2.65703469139121004061e-02,
-+-2.69871780758624488228e-02,
-+-2.73878895748791845177e-02,
-+-2.77722807734117477230e-02,
-+-2.81401606516388999579e-02,
-+-2.84913478994407130818e-02,
-+-2.88256710027211988934e-02,
-+-2.91429683240446539549e-02,
-+-2.94430881775452554794e-02,
-+-2.97258888980813616720e-02,
-+-2.99912389046026704731e-02,
-+-3.02390167577045836100e-02,
-+-3.04691112113477519108e-02,
-+-3.06814212587221760153e-02,
-+-3.08758561722402014027e-02,
-+-3.10523355376465907962e-02,
-+-3.12107892822333435334e-02,
-+-3.13511576971570726791e-02,
-+-3.14733914538524867099e-02,
-+-3.15774516145448311266e-02,
-+-3.16633096368639233020e-02,
-+-3.17309473725677151923e-02,
-+-3.17803570603852336696e-02,
-+-3.18115413129928040203e-02,
-+-3.18245130981409940496e-02,
-+-3.18192957139523252552e-02,
-+-3.17959227584129339172e-02,
-+-3.17544380930855907330e-02,
-+-3.16948958010739717528e-02,
-+-3.16173601392711264846e-02,
-+-3.15219054849285862385e-02,
-+-3.14086162765858309398e-02,
-+-3.12775869494028441187e-02,
-+-3.11289218649403939820e-02,
-+-3.09627352354390518452e-02,
-+-3.07791510426457977367e-02,
-+-3.05783029512460211019e-02,
-+-3.03603342169560183605e-02,
-+-3.01253975893385171625e-02,
-+-2.98736552094041353522e-02,
-+-2.96052785020640661651e-02,
-+-2.93204480635056198568e-02,
-+-2.90193535435597504968e-02,
-+-2.87021935231378082232e-02,
-+-2.83691753868116139370e-02,
-+-2.80205151906207892976e-02,
-+-2.76564375251866501060e-02,
-+-2.72771753742177547331e-02,
-+-2.68829699684970599427e-02,
-+-2.64740706354380586629e-02,
-+-2.60507346443026310823e-02,
-+-2.56132270471758974328e-02,
-+-2.51618205157945855344e-02,
-+-2.46967951743263178233e-02,
-+-2.42184384282035404523e-02,
-+-2.37270447891129755702e-02,
-+-2.32229156962464287906e-02,
-+-2.27063593339205324617e-02,
-+-2.21776904456732447402e-02,
-+-2.16372301449491780123e-02,
-+-2.10853057224852889762e-02,
-+-2.05222504505109502870e-02,
-+-1.99484033838788939186e-02,
-+-1.93641091582448833519e-02,
-+-1.87697177854121780016e-02,
-+-1.81655844459648781186e-02,
-+-1.75520692793087393357e-02,
-+-1.69295371712437116296e-02,
-+-1.62983575391910488761e-02,
-+-1.56589041152024530112e-02,
-+-1.50115547268741284653e-02,
-+-1.43566910762958008241e-02,
-+-1.36946985171622712812e-02,
-+-1.30259658301738225072e-02,
-+-1.23508849968591849500e-02,
-+-1.16698509719491937131e-02,
-+-1.09832614544311153726e-02,
-+-1.02915166574176798753e-02,
-+-9.59501907696169199780e-03,
-+-8.89417325994698755587e-03,
-+-8.18938557119236638926e-03,
-+-7.48106395989599822632e-03,
-+-6.76961772555855368499e-03,
-+-6.05545728351598779721e-03,
-+-5.33899393021318099950e-03,
-+-4.62063960835571319735e-03,
-+-3.90080667206999139041e-03,
-+-3.17990765220415401091e-03,
-+-2.45835502190418740687e-03,
-+-1.73656096259670639399e-03,
-+-1.01493713050778409414e-03,
-+-2.93894423852804689834e-04,
-+ 4.26157249173980906629e-04,
-+ 1.14480920148214617565e-03,
-+ 1.86165419710703351590e-03,
-+ 2.57628668004443710932e-03,
-+ 3.28830300177243139287e-03,
-+ 3.99730164732982774095e-03,
-+ 4.70288345982820387564e-03,
-+ 5.40465186327331818111e-03,
-+ 6.10221308357093879249e-03,
-+ 6.79517636759518171841e-03,
-+ 7.48315420020127710504e-03,
-+ 8.16576251905792339925e-03,
-+ 8.84262092718743515640e-03,
-+ 9.51335290309166317635e-03,
-+ 1.01775860083515076043e-02,
-+ 1.08349520925866381338e-02,
-+ 1.14850874956621031020e-02,
-+ 1.21276332470322649459e-02,
-+ 1.27622352621157286734e-02,
-+ 1.33885445355916270910e-02,
-+ 1.40062173315140241908e-02,
-+ 1.46149153701442997833e-02,
-+ 1.52143060113965177677e-02,
-+ 1.58040624348002624322e-02,
-+ 1.63838638158842961334e-02,
-+ 1.69533954988862062274e-02,
-+ 1.75123491656954573259e-02,
-+ 1.80604230009418498248e-02,
-+ 1.85973218531409432985e-02,
-+ 1.91227573918102446149e-02,
-+ 1.96364482604763183893e-02,
-+ 2.01381202254901497950e-02,
-+ 2.06275063205740884220e-02,
-+ 2.11043469870254470078e-02,
-+ 2.15683902095024221390e-02,
-+ 2.20193916473261919187e-02,
-+ 2.24571147612263599669e-02,
-+ 2.28813309354701996390e-02,
-+ 2.32918195953102993845e-02,
-+ 2.36883683196934501092e-02,
-+ 2.40707729491726543647e-02,
-+ 2.44388376889697125915e-02,
-+ 2.47923752071377255513e-02,
-+ 2.51312067277732788251e-02,
-+ 2.54551621192373560276e-02,
-+ 2.57640799773376678872e-02,
-+ 2.60578077034374286369e-02,
-+ 2.63362015774511563915e-02,
-+ 2.65991268256962030969e-02,
-+ 2.68464576835671930866e-02,
-+ 2.70780774530085012464e-02,
-+ 2.72938785547578652291e-02,
-+ 2.74937625753404746298e-02,
-+ 2.76776403087958637605e-02,
-+ 2.78454317931197334324e-02,
-+ 2.79970663414113134226e-02,
-+ 2.81324825677129637669e-02,
-+ 2.82516284075390901320e-02,
-+ 2.83544611330882809219e-02,
-+ 2.84409473631392593906e-02,
-+ 2.85110630676332979516e-02,
-+ 2.85647935669472025078e-02,
-+ 2.86021335258679100522e-02,
-+ 2.86230869422767590649e-02,
-+ 2.86276671305612032126e-02,
-+ 2.86158966997688939127e-02,
-+ 2.85878075265257568238e-02,
-+ 2.85434407227408461216e-02,
-+ 2.84828465981240355753e-02,
-+ 2.84060846175463004026e-02,
-+ 2.83132233532735408388e-02,
-+ 2.82043404321091033260e-02,
-+ 2.80795224774836003900e-02,
-+ 2.79388650465300265868e-02,
-+ 2.77824725621904008999e-02,
-+ 2.76104582403968873416e-02,
-+ 2.74229440123787519823e-02,
-+ 2.72200604421439854019e-02,
-+ 2.70019466391913931513e-02,
-+ 2.67687501665088492531e-02,
-+ 2.65206269439171582469e-02,
-+ 2.62577411468211084633e-02,
-+ 2.59802651004316341454e-02,
-+ 2.56883791695271083977e-02,
-+ 2.53822716438199466604e-02,
-+ 2.50621386190043350661e-02,
-+ 2.47281838735542228158e-02,
-+ 2.43806187413515146334e-02,
-+ 2.40196619802195698856e-02,
-+ 2.36455396364462083758e-02,
-+ 2.32584849053751770154e-02,
-+ 2.28587379881527788528e-02,
-+ 2.24465459447181145403e-02,
-+ 2.20221625431206817491e-02,
-+ 2.15858481052626192953e-02,
-+ 2.11378693491531578774e-02,
-+ 2.06784992277722831644e-02,
-+ 2.02080167646385595870e-02,
-+ 1.97267068861813506253e-02,
-+ 1.92348602510139590760e-02,
-+ 1.87327730762112433516e-02,
-+ 1.82207469606941833973e-02,
-+ 1.76990887058239218521e-02,
-+ 1.71681101333155360089e-02,
-+ 1.66281279005709090035e-02,
-+ 1.60794633135482208097e-02,
-+ 1.55224421372705916056e-02,
-+ 1.49573944040871566891e-02,
-+ 1.43846542198004401919e-02,
-+ 1.38045595677690705744e-02,
-+ 1.32174521111029039805e-02,
-+ 1.26236769930632777847e-02,
-+ 1.20235826357873512582e-02,
-+ 1.14175205374468860531e-02,
-+ 1.08058450679664186378e-02,
-+ 1.01889132634121089283e-02,
-+ 9.56708461917343822023e-03,
-+ 8.94072088205428300300e-03,
-+ 8.31018584139599399141e-03,
-+ 7.67584511934790540699e-03,
-+ 7.03806596040880416698e-03,
-+ 6.39721702035818493709e-03,
-+ 5.75366815469682043455e-03,
-+ 5.10779020672127558739e-03,
-+ 4.45995479534525007814e-03,
-+ 3.81053410279771258631e-03,
-+ 3.15990066231072903868e-03,
-+ 2.50842714592023827147e-03,
-+ 1.85648615250139353144e-03,
-+ 1.20444999615454471746e-03,
-+ 5.52690495064260415084e-04,
-+-9.84212390521464980473e-05,
-+-7.48515010783776918966e-04,
-+-1.39722175004304473983e-03,
-+-2.04417372013348868851e-03,
-+-2.68900472475985721083e-03,
-+-3.33135031386035986023e-03,
-+-3.97084798814866836436e-03,
-+-4.60713740224857979527e-03,
-+-5.23986056631194768718e-03,
-+-5.86866204600630658739e-03,
-+-6.49318916075832062301e-03,
-+-7.11309218015082015546e-03,
-+-7.72802451835431433724e-03,
-+-8.33764292649709012895e-03,
-+-8.94160768285747094286e-03,
-+-9.53958278078098804997e-03,
-+-1.01312361142165130445e-02,
-+-1.07162396607681370542e-02,
-+-1.12942696621660988721e-02,
-+-1.18650068020553327297e-02,
-+-1.24281363810071557308e-02,
-+-1.29833484886548687631e-02,
-+-1.35303381728667914546e-02,
-+-1.40688056058569672252e-02,
-+-1.45984562471500062958e-02,
-+-1.51190010033104265535e-02,
-+-1.56301563843482677063e-02,
-+-1.61316446567209455243e-02,
-+-1.66231939928469449330e-02,
-+-1.71045386170529077619e-02,
-+-1.75754189478743681752e-02,
-+-1.80355817366393243739e-02,
-+-1.84847802022550938839e-02,
-+-1.89227741621333586663e-02,
-+-1.93493301591808192219e-02,
-+-1.97642215847910959758e-02,
-+-2.01672287977736237885e-02,
-+-2.05581392391563748390e-02,
-+-2.09367475428056254438e-02,
-+-2.13028556418044003051e-02,
-+-2.16562728705364630766e-02,
-+-2.19968160624214870147e-02,
-+-2.23243096432573610854e-02,
-+-2.26385857201165559272e-02,
-+-2.29394841657579208472e-02,
-+-2.32268526985093780313e-02,
-+-2.35005469575834645413e-02,
-+-2.37604305737897300577e-02,
-+-2.40063752356104789798e-02,
-+-2.42382607506086561466e-02,
-+-2.44559751021389444603e-02,
-+-2.46594145013394015764e-02,
-+-2.48484834343765149944e-02,
-+-2.50230947049280248728e-02,
-+-2.51831694718824584955e-02,
-+-2.53286372822437155783e-02,
-+-2.54594360992264553967e-02,
-+-2.55755123255348194855e-02,
-+-2.56768208218174157076e-02,
-+-2.57633249202947785250e-02,
-+-2.58349964335584103559e-02,
-+-2.58918156585436348704e-02,
-+-2.59337713756803804610e-02,
-+-2.59608608432293705426e-02,
-+-2.59730897868132928896e-02,
-+-2.59704723841564268094e-02,
-+-2.59530312450472130936e-02,
-+-2.59207973865424462501e-02,
-+-2.58738102034334269130e-02,
-+-2.58121174339979962686e-02,
-+-2.57357751210636476191e-02,
-+-2.56448475684109972184e-02,
-+-2.55394072925489191983e-02,
-+-2.54195349698946651551e-02,
-+-2.52853193793951269708e-02,
-+-2.51368573406296827444e-02,
-+-2.49742536474338513997e-02,
-+-2.47976209970892889911e-02,
-+-2.46070799151258470805e-02,
-+-2.44027586757840746212e-02,
-+-2.41847932181901530135e-02,
-+-2.39533270582963850326e-02,
-+-2.37085111966422665275e-02,
-+-2.34505040219958535430e-02,
-+-2.31794712109343950535e-02,
-+-2.28955856234271913630e-02,
-+-2.25990271944861188802e-02,
-+-2.22899828219497650461e-02,
-+-2.19686462504703923504e-02,
-+-2.16352179517750840831e-02,
-+-2.12899050012748461413e-02,
-+-2.09329209510937253036e-02,
-+-2.05644856995994759763e-02,
-+-2.01848253575104240320e-02,
-+-1.97941721106610450664e-02,
-+-1.93927640795097180892e-02,
-+-1.89808451754700721614e-02,
-+-1.85586649541545842257e-02,
-+-1.81264784656151936582e-02,
-+-1.76845461016740639060e-02,
-+-1.72331334404288091799e-02,
-+-1.67725110880316378992e-02,
-+-1.63029545178296972341e-02,
-+-1.58247439069643912324e-02,
-+-1.53381639705272194985e-02,
-+-1.48435037933645017777e-02,
-+-1.43410566596358455410e-02,
-+-1.38311198802215200299e-02,
-+-1.33139946180815798432e-02,
-+-1.27899857116674387641e-02,
-+-1.22594014964915645066e-02,
-+-1.17225536249535751410e-02,
-+-1.11797568845337768478e-02,
-+-1.06313290144546303273e-02,
-+-1.00775905209177212701e-02,
-+-9.51886449102469674177e-03,
-+-8.95547640548645211556e-03,
-+-8.38775395023088309043e-03,
-+-7.81602682701561073120e-03,
-+-7.24062656315801675411e-03,
-+-6.66188632048521009454e-03,
-+-6.08014070362140109788e-03,
-+-5.49572556771589591090e-03,
-+-4.90897782572374818955e-03,
-+-4.32023525535186938423e-03,
-+-3.72983630577348361859e-03,
-+-3.13811990422953454236e-03,
-+-2.54542526261991586267e-03,
-+-1.95209168419812327012e-03,
-+-1.35845837047655643853e-03,
-+-7.64864228454678000274e-04,
-+-1.71647678275262160000e-04,
-+ 4.20853538580006714207e-04,
-+ 1.01230255044841479378e-03,
-+ 1.60236354589089790082e-03,
-+ 2.19070196323387957060e-03,
-+ 2.77698467914542839949e-03,
-+ 3.36088019613725542609e-03,
-+ 3.94205882888990985502e-03,
-+ 4.52019288929302043289e-03,
-+ 5.09495687010455642479e-03,
-+ 5.66602762711795274880e-03,
-+ 6.23308455974283786433e-03,
-+ 6.79580978989625592024e-03,
-+ 7.35388833910371412378e-03,
-+ 7.90700830371526483531e-03,
-+ 8.45486102813735630745e-03,
-+ 8.99714127598559912369e-03,
-+ 9.53354739906401085769e-03,
-+ 1.00637815040785765647e-02,
-+ 1.05875496169915012112e-02,
-+ 1.11045618449284663742e-02,
-+ 1.16145325355499640790e-02,
-+ 1.21171804337962679687e-02,
-+ 1.26122288359273460739e-02,
-+ 1.30994057407662432141e-02,
-+ 1.35784439980698272421e-02,
-+ 1.40490814539434016872e-02,
-+ 1.45110610932224059350e-02,
-+ 1.49641311787415132173e-02,
-+ 1.54080453874216524723e-02,
-+ 1.58425629430952868981e-02,
-+ 1.62674487460044807363e-02,
-+ 1.66824734989000737773e-02,
-+ 1.70874138296747413168e-02,
-+ 1.74820524104663498066e-02,
-+ 1.78661780731680860934e-02,
-+ 1.82395859212837498087e-02,
-+ 1.86020774380712544671e-02,
-+ 1.89534605909168415994e-02,
-+ 1.92935499318850137151e-02,
-+ 1.96221666943946111694e-02,
-+ 1.99391388859692132718e-02,
-+ 2.02443013770143460939e-02,
-+ 2.05374959855790205354e-02,
-+ 2.08185715580545618875e-02,
-+ 2.10873840457748047694e-02,
-+ 2.13437965774761310989e-02,
-+ 2.15876795275838501142e-02,
-+ 2.18189105802902433284e-02,
-+ 2.20373747893947494192e-02,
-+ 2.22429646338771422331e-02,
-+ 2.24355800691775179867e-02,
-+ 2.26151285741611890456e-02,
-+ 2.27815251937450065356e-02,
-+ 2.29346925771693951890e-02,
-+ 2.30745610118978684844e-02,
-+ 2.32010684531324534730e-02,
-+ 2.33141605489318240463e-02,
-+ 2.34137906609261335633e-02,
-+ 2.34999198806205046586e-02,
-+ 2.35725170412852368107e-02,
-+ 2.36315587254308061282e-02,
-+ 2.36770292678692914623e-02,
-+ 2.37089207543672679523e-02,
-+ 2.37272330158955317703e-02,
-+ 2.37319736184848778526e-02,
-+ 2.37231578487003234856e-02,
-+ 2.37008086947469512329e-02,
-+ 2.36649568232238372012e-02,
-+ 2.36156405515453339528e-02,
-+ 2.35529058160507051567e-02,
-+ 2.34768061358264293337e-02,
-+ 2.33874025722661145477e-02,
-+ 2.32847636843980104748e-02,
-+ 2.31689654800100834631e-02,
-+ 2.30400913626058086170e-02,
-+ 2.28982320742268929958e-02,
-+ 2.27434856341802542345e-02,
-+ 2.25759572737094099670e-02,
-+ 2.23957593666531708243e-02,
-+ 2.22030113561352687723e-02,
-+ 2.19978396773321642488e-02,
-+ 2.17803776763693009155e-02,
-+ 2.15507655253935614947e-02,
-+ 2.13091501338791566855e-02,
-+ 2.10556850562188986598e-02,
-+ 2.07905303956600374937e-02,
-+ 2.05138527046431831669e-02,
-+ 2.02258248816056598884e-02,
-+ 1.99266260643129536345e-02,
-+ 1.96164415197817541825e-02,
-+ 1.92954625308645287551e-02,
-+ 1.89638862795599161259e-02,
-+ 1.86219157271243600238e-02,
-+ 1.82697594910530766721e-02,
-+ 1.79076317190069930763e-02,
-+ 1.75357519597588440430e-02,
-+ 1.71543450312383258249e-02,
-+ 1.67636408857523670768e-02,
-+ 1.63638744724620595339e-02,
-+ 1.59552855971977040894e-02,
-+ 1.55381187796942588780e-02,
-+ 1.51126231083333045085e-02,
-+ 1.46790520924749527676e-02,
-+ 1.42376635124681055061e-02,
-+ 1.37887192674271304160e-02,
-+ 1.33324852208636900064e-02,
-+ 1.28692310442640404228e-02,
-+ 1.23992300587048714933e-02,
-+ 1.19227590745975605552e-02,
-+ 1.14400982296555958628e-02,
-+ 1.09515308251813669321e-02,
-+ 1.04573431607620833533e-02,
-+ 9.95782436747753331441e-03,
-+ 9.45326623971061603957e-03,
-+ 8.94396306566137833105e-03,
-+ 8.43021145666009164010e-03,
-+ 7.91231017538069313078e-03,
-+ 7.39055996305047670919e-03,
-+ 6.86526336575661762229e-03,
-+ 6.33672455995178390137e-03,
-+ 5.80524917725282890713e-03,
-+ 5.27114412864063391212e-03,
-+ 4.73471742815538901294e-03,
-+ 4.19627801619143914885e-03,
-+ 3.65613558249144616347e-03,
-+ 3.11460038894114266822e-03,
-+ 2.57198309226452578868e-03,
-+ 2.02859456672282133238e-03,
-+ 1.48474572691466213253e-03,
-+ 9.40747350779479814438e-04,
-+ 3.96909902906757746776e-04,
-+-1.46456641755227459385e-04,
-+-6.89042973683567970891e-04,
-+-1.23054062396519788870e-03,
-+-1.77064213877926087543e-03,
-+-2.30904125308122910865e-03,
-+-2.84543306338863035906e-03,
-+-3.37951419957442612471e-03,
-+-3.91098299557036087337e-03,
-+-4.43953965888237763598e-03,
-+-4.96488643882942240482e-03,
-+-5.48672779340401636783e-03,
-+-6.00477055466794654159e-03,
-+-6.51872409258721658559e-03,
-+-7.02830047721765636265e-03,
-+-7.53321463914807636086e-03,
-+-8.03318452811570618555e-03,
-+-8.52793126970340098492e-03,
-+-9.01717932003300026711e-03,
-+-9.50065661837041358639e-03,
-+-9.97809473755507415904e-03,
-+-1.04492290321770483347e-02,
-+-1.09137987844132033910e-02,
-+-1.13715473474486038208e-02,
-+-1.18222222864012831839e-02,
-+-1.22655755166751010560e-02,
-+-1.27013634396638160073e-02,
-+-1.31293470757343818528e-02,
-+-1.35492921944166400117e-02,
-+-1.39609694417272556244e-02,
-+-1.43641544645633414262e-02,
-+-1.47586280320936603927e-02,
-+-1.51441761540860777430e-02,
-+-1.55205901961063368055e-02,
-+-1.58876669915270080091e-02,
-+-1.62452089502858505743e-02,
-+-1.65930241643379994265e-02,
-+-1.69309265097449777870e-02,
-+-1.72587357453450260247e-02,
-+-1.75762776079578519894e-02,
-+-1.78833839040674798249e-02,
-+-1.81798925979421467647e-02,
-+-1.84656478961397856053e-02,
-+-1.87405003283600303521e-02,
-+-1.90043068245987142872e-02,
-+-1.92569307885670955305e-02,
-+-1.94982421673372645354e-02,
-+-1.97281175171806696933e-02,
-+-1.99464400655660206718e-02,
-+-2.01530997692852438530e-02,
-+-2.03479933686821802541e-02,
-+-2.05310244379545009386e-02,
-+-2.07021034315073952647e-02,
-+-2.08611477263374693603e-02,
-+-2.10080816604267042735e-02,
-+-2.11428365671300945439e-02,
-+-2.12653508055429402157e-02,
-+-2.13755697868347541157e-02,
-+-2.14734459965394662573e-02,
-+-2.15589390127965130350e-02,
-+-2.16320155205337663618e-02,
-+-2.16926493215929237779e-02,
-+-2.17408213407943202988e-02,
-+-2.17765196279432124427e-02,
-+-2.17997393557822147225e-02,
-+-2.18104828138950025684e-02,
-+-2.18087593985702259125e-02,
-+-2.17945855986363228041e-02,
-+-2.17679849772805522612e-02,
-+-2.17289881498666827275e-02,
-+-2.16776327577697588977e-02,
-+-2.16139634382471537699e-02,
-+-2.15380317903683393688e-02,
-+-2.14498963370269787876e-02,
-+-2.13496224830621826596e-02,
-+-2.12372824695176258547e-02,
-+-2.11129553240687953264e-02,
-+-2.09767268076514190600e-02,
-+-2.08286893573265061153e-02,
-+-2.06689420254178614356e-02,
-+-2.04975904149630808182e-02,
-+-2.03147466115173279400e-02,
-+-2.01205291113544029735e-02,
-+-1.99150627461096366155e-02,
-+-1.96984786039120784995e-02,
-+-1.94709139470550414430e-02,
-+-1.92325121262560613800e-02,
-+-1.89834224915587240767e-02,
-+-1.87238002999316095754e-02,
-+-1.84538066196213920711e-02,
-+-1.81736082313160018931e-02,
-+-1.78833775261818227198e-02,
-+-1.75832924008327562415e-02,
-+-1.72735361492968621244e-02,
-+-1.69542973520454935688e-02,
-+-1.66257697621504420271e-02,
-+-1.62881521886383481834e-02,
-+-1.59416483771111401613e-02,
-+-1.55864668877057875596e-02,
-+-1.52228209704614383946e-02,
-+-1.48509284381741404196e-02,
-+-1.44710115368087768872e-02,
-+-1.40832968135484268984e-02,
-+-1.36880149825567599964e-02,
-+-1.32854007885348044532e-02,
-+-1.28756928681500511930e-02,
-+-1.24591336094203239404e-02,
-+-1.20359690091351341501e-02,
-+-1.16064485283965002776e-02,
-+-1.11708249463664966578e-02,
-+-1.07293542123018670331e-02,
-+-1.02822952959679969620e-02,
-+-9.82991003651416048181e-03,
-+-9.37246298989989796990e-03,
-+-8.91022127496175937733e-03,
-+-8.44345441820766075269e-03,
-+-7.97243419742989060939e-03,
-+-7.49743448422606276194e-03,
-+-7.01873108552144003153e-03,
-+-6.53660158417858263430e-03,
-+-6.05132517879274946238e-03,
-+-5.56318252275954730490e-03,
-+-5.07245556271012591060e-03,
-+-4.57942737640496932289e-03,
-+-4.08438201018109132978e-03,
-+-3.58760431604305358652e-03,
-+-3.08937978849174819246e-03,
-+-2.58999440118657569057e-03,
-+-2.08973444352780410305e-03,
-+-1.58888635726068356765e-03,
-+-1.08773657318487516898e-03,
-+-5.86571348070346666216e-04,
-+-8.56766018661410432358e-05,
-+ 4.14662244703500838458e-04,
-+ 9.14160432062568030845e-04,
-+ 1.41253402313765564872e-03,
-+ 1.90950006404986844660e-03,
-+ 2.40477674405564865318e-03,
-+ 2.89808355464306636670e-03,
-+ 3.38914144770032432427e-03,
-+ 3.87767299266011901057e-03,
-+ 4.36340253253783821180e-03,
-+ 4.84605633877375780588e-03,
-+ 5.32536276479152106272e-03,
-+ 5.80105239818985360389e-03,
-+ 6.27285821148045302093e-03,
-+ 6.74051571128982465742e-03,
-+ 7.20376308593877450609e-03,
-+ 7.66234135132374139660e-03,
-+ 8.11599449501146374963e-03,
-+ 8.56446961847351709296e-03,
-+ 9.00751707737854762081e-03,
-+ 9.44489061986596677156e-03,
-+ 9.87634752272530808126e-03,
-+ 1.03016487254043390825e-02,
-+ 1.07205589617752304610e-02,
-+ 1.11328468895841945635e-02,
-+ 1.15382852175153500368e-02,
-+ 1.19366508297968510616e-02,
-+ 1.23277249082861840856e-02,
-+ 1.27112930519620286746e-02,
-+ 1.30871453937629941139e-02,
-+ 1.34550767147076835023e-02,
-+ 1.38148865552336977403e-02,
-+ 1.41663793236976622014e-02,
-+ 1.45093644019762355729e-02,
-+ 1.48436562481129210450e-02,
-+ 1.51690744959529933561e-02,
-+ 1.54854440517186581205e-02,
-+ 1.57925951874666216368e-02,
-+ 1.60903636313842884897e-02,
-+ 1.63785906548734767896e-02,
-+ 1.66571231563775630502e-02,
-+ 1.69258137419078108499e-02,
-+ 1.71845208022262455061e-02,
-+ 1.74331085866468830925e-02,
-+ 1.76714472734152173994e-02,
-+ 1.78994130366322383441e-02,
-+ 1.81168881096860183433e-02,
-+ 1.83237608451629584161e-02,
-+ 1.85199257712043326152e-02,
-+ 1.87052836442837197573e-02,
-+ 1.88797414983780387221e-02,
-+ 1.90432126905080711943e-02,
-+ 1.91956169426277314938e-02,
-+ 1.93368803798427274510e-02,
-+ 1.94669355649397177177e-02,
-+ 1.95857215292121362993e-02,
-+ 1.96931837995691326471e-02,
-+ 1.97892744219159630314e-02,
-+ 1.98739519807974267251e-02,
-+ 1.99471816152978105585e-02,
-+ 2.00089350311917421599e-02,
-+ 2.00591905093446473685e-02,
-+ 2.00979329103609591356e-02,
-+ 2.01251536754834259302e-02,
-+ 2.01408508237461286727e-02,
-+ 2.01450289453875622248e-02,
-+ 2.01376991915322746396e-02,
-+ 2.01188792601508376068e-02,
-+ 2.00885933783103917682e-02,
-+ 2.00468722807307861422e-02,
-+ 1.99937531846619727383e-02,
-+ 1.99292797611018770998e-02,
-+ 1.98535021023752838998e-02,
-+ 1.97664766860958553141e-02,
-+ 1.96682663355367028102e-02,
-+ 1.95589401764357864733e-02,
-+ 1.94385735902649521567e-02,
-+ 1.93072481639931514685e-02,
-+ 1.91650516363770367922e-02,
-+ 1.90120778408122484415e-02,
-+ 1.88484266447838007263e-02,
-+ 1.86742038859517046900e-02,
-+ 1.84895213049142380368e-02,
-+ 1.82944964746886706841e-02,
-+ 1.80892527269562349013e-02,
-+ 1.78739190751135354485e-02,
-+ 1.76486301341811334387e-02,
-+ 1.74135260376162073759e-02,
-+ 1.71687523510813504213e-02,
-+ 1.69144599832216704915e-02,
-+ 1.66508050935038308393e-02,
-+ 1.63779489971747002630e-02,
-+ 1.60960580673943053076e-02,
-+ 1.58053036346042924398e-02,
-+ 1.55058618831906466079e-02,
-+ 1.51979137455046566657e-02,
-+ 1.48816447933020276628e-02,
-+ 1.45572451266690657684e-02,
-+ 1.42249092604983910781e-02,
-+ 1.38848360085833399946e-02,
-+ 1.35372283653998979475e-02,
-+ 1.31822933856448436252e-02,
-+ 1.28202420616024131972e-02,
-+ 1.24512891984102161413e-02,
-+ 1.20756532873008502055e-02,
-+ 1.16935563768882661712e-02,
-+ 1.13052239425808411649e-02,
-+ 1.09108847541921957086e-02,
-+ 1.05107707418293280094e-02,
-+ 1.01051168601380188944e-02,
-+ 9.69416095097974661599e-03,
-+ 9.27814360462589186873e-03,
-+ 8.85730801954525207020e-03,
-+ 8.43189986086877521498e-03,
-+ 8.00216711761173211948e-03,
-+ 7.56835995873902413200e-03,
-+ 7.13073058815158738327e-03,
-+ 6.68953309868379475400e-03,
-+ 6.24502332519116971910e-03,
-+ 5.79745869681476747037e-03,
-+ 5.34709808850850412676e-03,
-+ 4.89420167191210314650e-03,
-+ 4.43903076565723645613e-03,
-+ 3.98184768519108632512e-03,
-+ 3.52291559220632970878e-03,
-+ 3.06249834375802321845e-03,
-+ 2.60086034116042237249e-03,
-+ 2.13826637874443706636e-03,
-+ 1.67498149256396322397e-03,
-+ 1.21127080913929915072e-03,
-+ 7.47399394318058719021e-04,
-+ 2.83632102346346049587e-04,
-+-1.79766574769843468212e-04,
-+-6.42532657524515324506e-04,
-+-1.10440282870957989618e-03,
-+-1.56511458266390263150e-03,
-+-2.02440637389199361643e-03,
-+-2.48201776496643914185e-03,
-+-2.93768957363143169009e-03,
-+-3.39116401902536928475e-03,
-+-3.84218486693827703318e-03,
-+-4.29049757402515802296e-03,
-+-4.73584943089246784842e-03,
-+-5.17798970397907992042e-03,
-+-5.61666977614957031034e-03,
-+-6.05164328592657299599e-03,
-+-6.48266626527806404806e-03,
-+-6.90949727588800570455e-03,
-+-7.33189754383248466774e-03,
-+-7.74963109258556843290e-03,
-+-8.16246487428337087755e-03,
-+-8.57016889917199681248e-03,
-+-8.97251636316816550409e-03,
-+-9.36928377346218227428e-03,
-+-9.76025107209459868995e-03,
-+-1.01452017574365904035e-02,
-+-1.05239230035099728261e-02,
-+-1.08962057770798960432e-02,
-+-1.12618449524549517349e-02,
-+-1.16206394239357687498e-02,
-+-1.19723922158460008985e-02,
-+-1.23169105900894394756e-02,
-+-1.26540061511731961180e-02,
-+-1.29834949486409296365e-02,
-+-1.33051975768588605364e-02,
-+-1.36189392721043061457e-02,
-+-1.39245500069003491639e-02,
-+-1.42218645815492452517e-02,
-+-1.45107227128146703404e-02,
-+-1.47909691197041746891e-02,
-+-1.50624536063089509152e-02,
-+-1.53250311416544826582e-02,
-+-1.55785619365223330923e-02,
-+-1.58229115171997537781e-02,
-+-1.60579507961227489765e-02,
-+-1.62835561393713836031e-02,
-+-1.64996094309859363258e-02,
-+-1.67059981340693386453e-02,
-+-1.69026153486439532914e-02,
-+-1.70893598662360153562e-02,
-+-1.72661362211572987080e-02,
-+-1.74328547384603599335e-02,
-+-1.75894315785435489952e-02,
-+-1.77357887783837660234e-02,
-+-1.78718542893771675795e-02,
-+-1.79975620117707353629e-02,
-+-1.81128518256681338150e-02,
-+-1.82176696185966900676e-02,
-+-1.83119673096232941922e-02,
-+-1.83957028700091167195e-02,
-+-1.84688403403957639159e-02,
-+-1.85313498445167090800e-02,
-+-1.85832075994299093791e-02,
-+-1.86243959222697728906e-02,
-+-1.86549032335186701359e-02,
-+-1.86747240567995964611e-02,
-+-1.86838590151944261564e-02,
-+-1.86823148240932573882e-02,
-+-1.86701042805831954330e-02,
-+-1.86472462493857613075e-02,
-+-1.86137656453560576542e-02,
-+-1.85696934125556128992e-02,
-+-1.85150664999163827584e-02,
-+-1.84499278335122293693e-02,
-+-1.83743262854581951293e-02,
-+-1.82883166394587175219e-02,
-+-1.81919595530277734829e-02,
-+-1.80853215164069915100e-02,
-+-1.79684748082077037912e-02,
-+-1.78414974478062274277e-02,
-+-1.77044731445240056955e-02,
-+-1.75574912436227900669e-02,
-+-1.74006466691516183121e-02,
-+-1.72340398636801027388e-02,
-+-1.70577767249556339069e-02,
-+-1.68719685395252033677e-02,
-+-1.66767319133613971249e-02,
-+-1.64721886995365836281e-02,
-+-1.62584659229890703125e-02,
-+-1.60356957024269768108e-02,
-+-1.58040151694183554631e-02,
-+-1.55635663847157393325e-02,
-+-1.53144962518665349316e-02,
-+-1.50569564281600679762e-02,
-+-1.47911032329673657743e-02,
-+-1.45170975535258116318e-02,
-+-1.42351047482265624655e-02,
-+-1.39452945474637136913e-02,
-+-1.36478409521007416211e-02,
-+-1.33429221296188608992e-02,
-+-1.30307203080056444033e-02,
-+-1.27114216674486905923e-02,
-+-1.23852162298968091619e-02,
-+-1.20522977465561034055e-02,
-+-1.17128635833847836306e-02,
-+-1.13671146046554968900e-02,
-+-1.10152550546535922538e-02,
-+-1.06574924375795083986e-02,
-+-1.02940373957274844408e-02,
-+-9.92510358600978345733e-03,
-+-9.55090755489973984582e-03,
-+-9.17166861186629808755e-03,
-+-8.78760870137362294641e-03,
-+-8.39895227351954501427e-03,
-+-8.00592615338992057150e-03,
-+-7.60875940920200354023e-03,
-+-7.20768321931454427481e-03,
-+-6.80293073818321551022e-03,
-+-6.39473696133400267699e-03,
-+-5.98333858943855649570e-03,
-+-5.56897389156482680583e-03,
-+-5.15188256768454866386e-03,
-+-4.73230561051499881708e-03,
-+-4.31048516677632470584e-03,
-+-3.88666439794171014385e-03,
-+-3.46108734056119323949e-03,
-+-3.03399876624102851630e-03,
-+-2.60564404135369374893e-03,
-+-2.17626898656492900885e-03,
-+-1.74611973625276640544e-03,
-+-1.31544259790159325310e-03,
-+-8.84483911549698064228e-04,
-+-4.53489909372157390909e-04,
-+-2.27065754763732153979e-05,
-+ 4.07620494008173754521e-04,
-+ 8.37246230468182989909e-04,
-+ 1.26592623189187344218e-03,
-+ 1.69341690142426519808e-03,
-+ 2.11947558531578586147e-03,
-+ 2.54386071017997711027e-03,
-+ 2.96633191949158747311e-03,
-+ 3.38665020924181978113e-03,
-+ 3.80457806267612890991e-03,
-+ 4.21987958404042469429e-03,
-+ 4.63232063125803249226e-03,
-+ 5.04166894746706922836e-03,
-+ 5.44769429133779015118e-03,
-+ 5.85016856610528698801e-03,
-+ 6.24886594723963670339e-03,
-+ 6.64356300868360755141e-03,
-+ 7.03403884758925946469e-03,
-+ 7.42007520748272191013e-03,
-+ 7.80145659978820089214e-03,
-+ 8.17797042364491223732e-03,
-+ 8.54940708395133565356e-03,
-+ 8.91556010756844319332e-03,
-+ 9.27622625762106536862e-03,
-+ 9.63120564583299677841e-03,
-+ 9.98030184283307808535e-03,
-+ 1.03233219863735226768e-02,
-+ 1.06600768874003729025e-02,
-+ 1.09903811339163819116e-02,
-+ 1.13140531925830963023e-02,
-+ 1.16309155080034538898e-02,
-+ 1.19407945996319476284e-02,
-+ 1.22435211562607008245e-02,
-+ 1.25389301280292575491e-02,
-+ 1.28268608159079269826e-02,
-+ 1.31071569586075614006e-02,
-+ 1.33796668168697750756e-02,
-+ 1.36442432550884507059e-02,
-+ 1.39007438202245533349e-02,
-+ 1.41490308179680942396e-02,
-+ 1.43889713861080018736e-02,
-+ 1.46204375650716145163e-02,
-+ 1.48433063655967166505e-02,
-+ 1.50574598334992579285e-02,
-+ 1.52627851115045704011e-02,
-+ 1.54591744981103021428e-02,
-+ 1.56465255034476218021e-02,
-+ 1.58247409021165554022e-02,
-+ 1.59937287829656459015e-02,
-+ 1.61534025957906987592e-02,
-+ 1.63036811949317031467e-02,
-+ 1.64444888797439722761e-02,
-+ 1.65757554319247296659e-02,
-+ 1.66974161496777871727e-02,
-+ 1.68094118786993561299e-02,
-+ 1.69116890399709611514e-02,
-+ 1.70041996543472719028e-02,
-+ 1.70869013639282085748e-02,
-+ 1.71597574502064462165e-02,
-+ 1.72227368489833373988e-02,
-+ 1.72758141620482467971e-02,
-+ 1.73189696656185082579e-02,
-+ 1.73521893155377665563e-02,
-+ 1.73754647492341991744e-02,
-+ 1.73887932844398809817e-02,
-+ 1.73921779146764994561e-02,
-+ 1.73856273015124823678e-02,
-+ 1.73691557636001317477e-02,
-+ 1.73427832625017742940e-02,
-+ 1.73065353853169359710e-02,
-+ 1.72604433241233257146e-02,
-+ 1.72045438522471921816e-02,
-+ 1.71388792973795056618e-02,
-+ 1.70634975115566134285e-02,
-+ 1.69784518380263448056e-02,
-+ 1.68838010750209793764e-02,
-+ 1.67796094364609134353e-02,
-+ 1.66659465096161037156e-02,
-+ 1.65428872097501365734e-02,
-+ 1.64105117317781858122e-02,
-+ 1.62689054989683147545e-02,
-+ 1.61181591087189469980e-02,
-+ 1.59583682754456043784e-02,
-+ 1.57896337706140629797e-02,
-+ 1.56120613599556659623e-02,
-+ 1.54257617379032624383e-02,
-+ 1.52308504592903026092e-02,
-+ 1.50274478683518758482e-02,
-+ 1.48156790250726522890e-02,
-+ 1.45956736289267492018e-02,
-+ 1.43675659400543699606e-02,
-+ 1.41314946979236334690e-02,
-+ 1.38876030375264993694e-02,
-+ 1.36360384031594637777e-02,
-+ 1.33769524598382864855e-02,
-+ 1.31105010024045141870e-02,
-+ 1.28368438623721048408e-02,
-+ 1.25561448125739872489e-02,
-+ 1.22685714696633887261e-02,
-+ 1.19742951945275791920e-02,
-+ 1.16734909906738484192e-02,
-+ 1.13663374006453127274e-02,
-+ 1.10530164005323595922e-02,
-+ 1.07337132926358554130e-02,
-+ 1.04086165963493543218e-02,
-+ 1.00779179373233617606e-02,
-+ 9.74181193497532758874e-03,
-+ 9.40049608841225445288e-03,
-+ 9.05417066083279500899e-03,
-+ 8.70303856247552944103e-03,
-+ 8.34730523218016502718e-03,
-+ 7.98717851763572177226e-03,
-+ 7.62286855437785230982e-03,
-+ 7.25458764361144089333e-03,
-+ 6.88255012892701172750e-03,
-+ 6.50697227198192371805e-03,
-+ 6.12807212721856470888e-03,
-+ 5.74606941569283727334e-03,
-+ 5.36118539808457146567e-03,
-+ 4.97364274696218688909e-03,
-+ 4.58366541837830314410e-03,
-+ 4.19147852286664863303e-03,
-+ 3.79730819591561500129e-03,
-+ 3.40138146799415100677e-03,
-+ 3.00392613420201199520e-03,
-+ 2.60517062362004749726e-03,
-+ 2.20534386843704386522e-03,
-+ 1.80467517292383881899e-03,
-+ 1.40339408233299683948e-03,
-+ 1.00173025179804741150e-03,
-+ 5.99913315305479412538e-04,
-+ 1.98172754814968598257e-04,
-+-2.03262230396802987941e-04,
-+-6.04162854095924620711e-04,
-+-1.00430087308224437644e-03,
-+-1.40344871673197396644e-03,
-+-1.80137961602673795508e-03,
-+-2.19786773199013999239e-03,
-+-2.59268828346089896114e-03,
-+-2.98561767413182141753e-03,
-+-3.37643361878200423329e-03,
-+-3.76491526863040370035e-03,
-+-4.15084333574143593548e-03,
-+-4.53400021641445216680e-03,
-+-4.91417011348194241599e-03,
-+-5.29113915745588105771e-03,
-+-5.66469552644815847742e-03,
-+-6.03462956480155590655e-03,
-+-6.40073390036281514998e-03,
-+-6.76280356033400701504e-03,
-+-7.12063608563857919354e-03,
-+-7.47403164373383350344e-03,
-+-7.82279313981379918752e-03,
-+-8.16672632633589495876e-03,
-+-8.50563991081211730194e-03,
-+-8.83934566180608928543e-03,
-+-9.16765851307686438498e-03,
-+-9.49039666581114917110e-03,
-+-9.80738168888878152074e-03,
-+-1.01184386171277399674e-02,
-+-1.04233960474500557403e-02,
-+-1.07220862329222184350e-02,
-+-1.10143451746142415071e-02,
-+-1.13000127112285256303e-02,
-+-1.15789326064506051250e-02,
-+-1.18509526339738002071e-02,
-+-1.21159246601509965058e-02,
-+-1.23737047242299964128e-02,
-+-1.26241531161297524527e-02,
-+-1.28671344517128152796e-02,
-+-1.31025177455174803715e-02,
-+-1.33301764809086713964e-02,
-+-1.35499886776097172580e-02,
-+-1.37618369565811367317e-02,
-+-1.39656086022109764133e-02,
-+-1.41611956217838150934e-02,
-+-1.43484948021984325128e-02,
-+-1.45274077639039357612e-02,
-+-1.46978410120258608934e-02,
-+-1.48597059846577242426e-02,
-+-1.50129190982918585967e-02,
-+-1.51574017903672395718e-02,
-+-1.52930805589124932387e-02,
-+-1.54198869992662364325e-02,
-+-1.55377578378534803027e-02,
-+-1.56466349630057406650e-02,
-+-1.57464654528072754702e-02,
-+-1.58372015999561979727e-02,
-+-1.59188009336289001960e-02,
-+-1.59912262383383775577e-02,
-+-1.60544455697791341175e-02,
-+-1.61084322676517156803e-02,
-+-1.61531649654640882541e-02,
-+-1.61886275973061356803e-02,
-+-1.62148094015971411253e-02,
-+-1.62317049218069497929e-02,
-+-1.62393140041536092333e-02,
-+-1.62376417922817130324e-02,
-+-1.62266987189277553383e-02,
-+-1.62065004945800873737e-02,
-+-1.61770680931431522220e-02,
-+-1.61384277346172493040e-02,
-+-1.60906108648061207944e-02,
-+-1.60336541320681771894e-02,
-+-1.59675993611263326855e-02,
-+-1.58924935239547066024e-02,
-+-1.58083887077626328299e-02,
-+-1.57153420800955900827e-02,
-+-1.56134158510770112288e-02,
-+-1.55026772328152578212e-02,
-+-1.53831983960010937329e-02,
-+-1.52550564237238350102e-02,
-+-1.51183332625351458250e-02,
-+-1.49731156707911920722e-02,
-+-1.48194951643046812090e-02,
-+-1.46575679593417048524e-02,
-+-1.44874349129977750272e-02,
-+-1.43092014609884597698e-02,
-+-1.41229775528962445130e-02,
-+-1.39288775849084438263e-02,
-+-1.37270203300904457960e-02,
-+-1.35175288662355702618e-02,
-+-1.33005305013339011205e-02,
-+-1.30761566967065763489e-02,
-+-1.28445429878512040744e-02,
-+-1.26058289030446593615e-02,
-+-1.23601578797534680798e-02,
-+-1.21076771789009329794e-02,
-+-1.18485377970418380433e-02,
-+-1.15828943764964987367e-02,
-+-1.13109051134989493925e-02,
-+-1.10327316644120605738e-02,
-+-1.07485390500640064226e-02,
-+-1.04584955582669985458e-02,
-+-1.01627726445692283253e-02,
-+-9.86154483130371323218e-03,
-+-9.55498960498988268719e-03,
-+-9.24328731215033269630e-03,
-+-8.92662105360215486771e-03,
-+-8.60517657728362625469e-03,
-+-8.27914216968341290515e-03,
-+-7.94870854592883563372e-03,
-+-7.61406873860231547119e-03,
-+-7.27541798534921645147e-03,
-+-6.93295361534090708033e-03,
-+-6.58687493466020984600e-03,
-+-6.23738311067596751247e-03,
-+-5.88468105547270119854e-03,
-+-5.52897330840119299866e-03,
-+-5.17046591782320454772e-03,
-+-4.80936632211110496465e-03,
-+-4.44588322997643489720e-03,
-+-4.08022650019468531568e-03,
-+-3.71260702079436550813e-03,
-+-3.34323658778045351356e-03,
-+-2.97232778346277022249e-03,
-+-2.60009385445763652536e-03,
-+-2.22674858943125442146e-03,
-+-1.85250619666033739495e-03,
-+-1.47758118147215886107e-03,
-+-1.10218822363969577716e-03,
-+-7.26542054800227666764e-04,
-+-3.50857335965947274205e-04,
-+ 2.46514648028058004550e-05,
-+ 3.99770194491305848588e-04,
-+ 7.74285136923100344129e-04,
-+ 1.14798313418393348531e-03,
-+ 1.52065170760259482478e-03,
-+ 1.89207917822773732594e-03,
-+ 2.26205478672706098917e-03,
-+ 2.63036881264248683862e-03,
-+ 2.99681269293534556161e-03,
-+ 3.36117913975389048103e-03,
-+ 3.72326225735529307836e-03,
-+ 4.08285765811985511958e-03,
-+ 4.43976257758913958607e-03,
-+ 4.79377598846415613199e-03,
-+ 5.14469871350105301122e-03,
-+ 5.49233353723946847447e-03,
-+ 5.83648531650244987989e-03,
-+ 6.17696108960405759064e-03,
-+ 6.51357018420694721533e-03,
-+ 6.84612432376711325249e-03,
-+ 7.17443773250708155542e-03,
-+ 7.49832723886042704087e-03,
-+ 7.81761237732933426947e-03,
-+ 8.13211548869811375051e-03,
-+ 8.44166181854820452113e-03,
-+ 8.74607961402130464068e-03,
-+ 9.04520021877286591050e-03,
-+ 9.33885816606978835797e-03,
-+ 9.62689126997642689865e-03,
-+ 9.90914071458013148708e-03,
-+ 1.01854511412086366773e-02,
-+ 1.04556707335903883299e-02,
-+ 1.07196513009111780990e-02,
-+ 1.09772483587224512630e-02,
-+ 1.12283212076583951283e-02,
-+ 1.14727330099153260884e-02,
-+ 1.17103508634570831898e-02,
-+ 1.19410458739028241953e-02,
-+ 1.21646932240592649255e-02,
-+ 1.23811722410611373818e-02,
-+ 1.25903664610832344978e-02,
-+ 1.27921636915890018366e-02,
-+ 1.29864560710836914048e-02,
-+ 1.31731401263407224556e-02,
-+ 1.33521168270687006635e-02,
-+ 1.35232916379940497353e-02,
-+ 1.36865745683296211738e-02,
-+ 1.38418802186039205382e-02,
-+ 1.39891278248280535867e-02,
-+ 1.41282412999769145523e-02,
-+ 1.42591492727635726218e-02,
-+ 1.43817851236876445564e-02,
-+ 1.44960870183408006145e-02,
-+ 1.46019979379505230460e-02,
-+ 1.46994657071504129797e-02,
-+ 1.47884430189622918805e-02,
-+ 1.48688874569784020702e-02,
-+ 1.49407615147348158541e-02,
-+ 1.50040326122672287162e-02,
-+ 1.50586731098424179975e-02,
-+ 1.51046603188603172779e-02,
-+ 1.51419765099236949824e-02,
-+ 1.51706089180728420640e-02,
-+ 1.51905497451859678587e-02,
-+ 1.52017961595458175883e-02,
-+ 1.52043502925764267841e-02,
-+ 1.51982192327537388166e-02,
-+ 1.51834150166969984036e-02,
-+ 1.51599546174485608208e-02,
-+ 1.51278599299513004384e-02,
-+ 1.50871577537351683751e-02,
-+ 1.50378797728247023263e-02,
-+ 1.49800625328825147420e-02,
-+ 1.49137474156039364498e-02,
-+ 1.48389806103799235665e-02,
-+ 1.47558130832480607908e-02,
-+ 1.46643005431505314001e-02,
-+ 1.45645034055218620950e-02,
-+ 1.44564867532300453390e-02,
-+ 1.43403202948947962325e-02,
-+ 1.42160783206099778503e-02,
-+ 1.40838396550982923594e-02,
-+ 1.39436876083266405452e-02,
-+ 1.37957099236124917929e-02,
-+ 1.36399987232554212313e-02,
-+ 1.34766504517241942490e-02,
-+ 1.33057658164359091102e-02,
-+ 1.31274497261638489060e-02,
-+ 1.29418112271095040594e-02,
-+ 1.27489634366789363756e-02,
-+ 1.25490234750032566419e-02,
-+ 1.23421123942442402532e-02,
-+ 1.21283551057263516704e-02,
-+ 1.19078803049420742233e-02,
-+ 1.16808203944710996269e-02,
-+ 1.14473114048624195760e-02,
-+ 1.12074929135256729645e-02,
-+ 1.09615079616787580025e-02,
-+ 1.07095029694022052941e-02,
-+ 1.04516276488501973219e-02,
-+ 1.01880349156695994978e-02,
-+ 9.91888079867737047779e-03,
-+ 9.64432434785405211242e-03,
-+ 9.36452754070147760923e-03,
-+ 9.07965518702451984678e-03,
-+ 8.78987483218966227094e-03,
-+ 8.49535665891908500780e-03,
-+ 8.19627338767603061398e-03,
-+ 7.89280017569949157719e-03,
-+ 7.58511451474948479590e-03,
-+ 7.27339612761909639488e-03,
-+ 6.95782686347547630473e-03,
-+ 6.63859059209071476759e-03,
-+ 6.31587309702252765881e-03,
-+ 5.98986196780740103029e-03,
-+ 5.66074649122982193061e-03,
-+ 5.32871754172747295192e-03,
-+ 4.99396747099837244599e-03,
-+ 4.65668999687305143476e-03,
-+ 4.31708009151461624686e-03,
-+ 3.97533386901183748152e-03,
-+ 3.63164847243082006614e-03,
-+ 3.28622196038877781299e-03,
-+ 2.93925319321392116909e-03,
-+ 2.59094171876164420382e-03,
-+ 2.24148765794563754883e-03,
-+ 1.89109159005432995830e-03,
-+ 1.53995443791703993247e-03,
-+ 1.18827735298423120720e-03,
-+ 8.36261600388259543348e-04,
-+ 4.84108444050918994457e-04,
-+ 1.32019031902150203511e-04,
-+-2.19805718726241933539e-04,
-+-5.71165235461442008166e-04,
-+-9.21859404947263896997e-04,
-+-1.27168868652862017930e-03,
-+-1.62045422549978823494e-03,
-+-1.96795796585350459343e-03,
-+-2.31400276246625583032e-03,
-+-2.65839249265560281787e-03,
-+-3.00093216704766258679e-03,
-+-3.34142803969362210681e-03,
-+-3.67968771736809294182e-03,
-+-4.01552026799475991758e-03,
-+-4.34873632813331280345e-03,
-+-4.67914820946864051104e-03,
-+-5.00657000424378773040e-03,
-+-5.33081768957552153132e-03,
-+-5.65170923059745127642e-03,
-+-5.96906468236742954181e-03,
-+-6.28270629048909966946e-03,
-+-6.59245859038667947338e-03,
-+-6.89814850517884731868e-03,
-+-7.19960544209851966563e-03,
-+-7.49666138740393440260e-03,
-+-7.78915099972798865430e-03,
-+-8.07691170181503576009e-03,
-+-8.35978377059490469769e-03,
-+-8.63761042554191810217e-03,
-+-8.91023791527316942618e-03,
-+-9.17751560233688937207e-03,
-+-9.43929604614376221994e-03,
-+-9.69543508399723329150e-03,
-+-9.94579191017774290329e-03,
-+-1.01902291530364327854e-02,
-+-1.04286129500589536817e-02,
-+-1.06608130208563391117e-02,
-+-1.08867027380436017653e-02,
-+-1.11061591959687958747e-02,
-+-1.13190632772547025708e-02,
-+-1.15252997171166309681e-02,
-+-1.17247571654230976768e-02,
-+-1.19173282464660659080e-02,
-+-1.21029096164066742036e-02,
-+-1.22814020183694711658e-02,
-+-1.24527103351532476838e-02,
-+-1.26167436395315489539e-02,
-+-1.27734152421167899277e-02,
-+-1.29226427367628814158e-02,
-+-1.30643480434822645969e-02,
-+-1.31984574488560428562e-02,
-+-1.33249016439166492742e-02,
-+-1.34436157594821689004e-02,
-+-1.35545393989273295354e-02,
-+-1.36576166683727209111e-02,
-+-1.37527962042781285584e-02,
-+-1.38400311984271696952e-02,
-+-1.39192794202912337870e-02,
-+-1.39905032367616116717e-02,
-+-1.40536696292427546601e-02,
-+-1.41087502080980680547e-02,
-+-1.41557212244426133818e-02,
-+-1.41945635792792845820e-02,
-+-1.42252628299752575947e-02,
-+-1.42478091940773932134e-02,
-+-1.42621975504671379131e-02,
-+-1.42684274378570910558e-02,
-+-1.42665030506319845394e-02,
-+-1.42564332320393345743e-02,
-+-1.42382314647362499815e-02,
-+-1.42119158586999447952e-02,
-+-1.41775091365116089059e-02,
-+-1.41350386160245498901e-02,
-+-1.40845361904284333693e-02,
-+-1.40260383057241797000e-02,
-+-1.39595859356245310251e-02,
-+-1.38852245538964112065e-02,
-+-1.38030041041644433580e-02,
-+-1.37129789671941813151e-02,
-+-1.36152079256764129561e-02,
-+-1.35097541265353955631e-02,
-+-1.33966850407841280013e-02,
-+-1.32760724209521549510e-02,
-+-1.31479922561130030401e-02,
-+-1.30125247245378994343e-02,
-+-1.28697541440061513640e-02,
-+-1.27197689198022458740e-02,
-+-1.25626614904315592192e-02,
-+-1.23985282710872991158e-02,
-+-1.22274695949040924925e-02,
-+-1.20495896520329080076e-02,
-+-1.18649964265733695590e-02,
-+-1.16738016314043534238e-02,
-+-1.14761206409479885049e-02,
-+-1.12720724219102334807e-02,
-+-1.10617794620386598187e-02,
-+-1.08453676969394192248e-02,
-+-1.06229664349969266796e-02,
-+-1.03947082804420436186e-02,
-+-1.01607290546128509884e-02,
-+-9.92116771545450623626e-03,
-+-9.67616627530844784777e-03,
-+-9.42586971703506318332e-03,
-+-9.17042590852275470159e-03,
-+-8.90998551563223703531e-03,
-+-8.64470191362698078819e-03,
-+-8.37473109714258721892e-03,
-+-8.10023158874558640852e-03,
-+-7.82136434613948418326e-03,
-+-7.53829266806671071527e-03,
-+-7.25118209896521460911e-03,
-+-6.96020033243441478554e-03,
-+-6.66551711356555987714e-03,
-+-6.36730414019388325786e-03,
-+-6.06573496313063138113e-03,
-+-5.76098488543169522103e-03,
-+-5.45323086076018610086e-03,
-+-5.14265139090599315841e-03,
-+-4.82942642251557672367e-03,
-+-4.51373724309595599630e-03,
-+-4.19576637635184213071e-03,
-+-3.87569747691505085002e-03,
-+-3.55371522452749104282e-03,
-+-3.23000521773942998738e-03,
-+-2.90475386718291829144e-03,
-+-2.57814828848035217795e-03,
-+-2.25037619485449289641e-03,
-+-1.92162578949469156631e-03,
-+-1.59208565774584761589e-03,
-+-1.26194465918040934528e-03,
-+-9.31391819614034682621e-04,
-+-6.00616223127062396486e-04,
-+-2.69806904154944583816e-04,
-+ 6.08472602942396962656e-05,
-+ 3.91157658230999324359e-04,
-+ 7.20936050023826264892e-04,
-+ 1.04999467542699867657e-03,
-+ 1.37814636023528779528e-03,
-+ 1.70520462250435696737e-03,
-+ 2.03098377827778953097e-03,
-+ 2.35529904676215007600e-03,
-+ 2.67796665488591583565e-03,
-+ 2.99880394118968215261e-03,
-+ 3.31762945898433653930e-03,
-+ 3.63426307872031237670e-03,
-+ 3.94852608951128981885e-03,
-+ 4.26024129975459756037e-03,
-+ 4.56923313679098372364e-03,
-+ 4.87532774554888699570e-03,
-+ 5.17835308611915706711e-03,
-+ 5.47813903020093976443e-03,
-+ 5.77451745637115685522e-03,
-+ 6.06732234411917498856e-03,
-+ 6.35638986659726578504e-03,
-+ 6.64155848203327753981e-03,
-+ 6.92266902375569294359e-03,
-+ 7.19956478878218397721e-03,
-+ 7.47209162491841317327e-03,
-+ 7.74009801632427347357e-03,
-+ 8.00343516749617983619e-03,
-+ 8.26195708562018661658e-03,
-+ 8.51552066125116358108e-03,
-+ 8.76398574727313937893e-03,
-+ 9.00721523609652845177e-03,
-+ 9.24507513505131058029e-03,
-+ 9.47743463993477690266e-03,
-+ 9.70416620667113177801e-03,
-+ 9.92514562104791428498e-03,
-+ 1.01402520664879789575e-02,
-+ 1.03493681898213143316e-02,
-+ 1.05523801650215433984e-02,
-+ 1.07491777548722518970e-02,
-+ 1.09396543705291681564e-02,
-+ 1.11237071289475124292e-02,
-+ 1.13012369081435404966e-02,
-+ 1.14721484002587425371e-02,
-+ 1.16363501624019635705e-02,
-+ 1.17937546652395908869e-02,
-+ 1.19442783393092378380e-02,
-+ 1.20878416190330750107e-02,
-+ 1.22243689844071853207e-02,
-+ 1.23537890003452277554e-02,
-+ 1.24760343536569357631e-02,
-+ 1.25910418876418357670e-02,
-+ 1.26987526342805939761e-02,
-+ 1.27991118440086270452e-02,
-+ 1.28920690130565843839e-02,
-+ 1.29775779083439509604e-02,
-+ 1.30555965899154108323e-02,
-+ 1.31260874309076600724e-02,
-+ 1.31890171350384308863e-02,
-+ 1.32443567516100473014e-02,
-+ 1.32920816880211477284e-02,
-+ 1.33321717197816842077e-02,
-+ 1.33646109980275606260e-02,
-+ 1.33893880545334492682e-02,
-+ 1.34064958042229027263e-02,
-+ 1.34159315451764481197e-02,
-+ 1.34176969561404253045e-02,
-+ 1.34117980915397661673e-02,
-+ 1.33982453740004014281e-02,
-+ 1.33770535843872502568e-02,
-+ 1.33482418493662668285e-02,
-+ 1.33118336264995938689e-02,
-+ 1.32678566868845784765e-02,
-+ 1.32163430953490413505e-02,
-+ 1.31573291882161602651e-02,
-+ 1.30908555486537094698e-02,
-+ 1.30169669796242129522e-02,
-+ 1.29357124744537473754e-02,
-+ 1.28471451850375104065e-02,
-+ 1.27513223877034967413e-02,
-+ 1.26483054467555582068e-02,
-+ 1.25381597757181027092e-02,
-+ 1.24209547963076202132e-02,
-+ 1.22967638951557260707e-02,
-+ 1.21656643783110817586e-02,
-+ 1.20277374235470257274e-02,
-+ 1.18830680305065279623e-02,
-+ 1.17317449687113807555e-02,
-+ 1.15738607234699020926e-02,
-+ 1.14095114397158373110e-02,
-+ 1.12387968638101957974e-02,
-+ 1.10618202833434337712e-02,
-+ 1.08786884649728424201e-02,
-+ 1.06895115903328993823e-02,
-+ 1.04944031900558870651e-02,
-+ 1.02934800759447477037e-02,
-+ 1.00868622713343389363e-02,
-+ 9.87467293968604525878e-03,
-+ 9.65703831145729371666e-03,
-+ 9.43408760928757944564e-03,
-+ 9.20595297154692439323e-03,
-+ 8.97276937429128222667e-03,
-+ 8.73467455167086133383e-03,
-+ 8.49180891483720598489e-03,
-+ 8.24431546939977458188e-03,
-+ 7.99233973147535532722e-03,
-+ 7.73602964238361088395e-03,
-+ 7.47553548203802858269e-03,
-+ 7.21100978108041128223e-03,
-+ 6.94260723181349802963e-03,
-+ 6.67048459797950268196e-03,
-+ 6.39480062344236106775e-03,
-+ 6.11571593982157112740e-03,
-+ 5.83339297313448506416e-03,
-+ 5.54799584949982379362e-03,
-+ 5.25969029995765075675e-03,
-+ 4.96864356445977841531e-03,
-+ 4.67502429508827137272e-03,
-+ 4.37900245855606801149e-03,
-+ 4.08074923804454484794e-03,
-+ 3.78043693443984004168e-03,
-+ 3.47823886701886190315e-03,
-+ 3.17432927364564567915e-03,
-+ 2.86888321053426365720e-03,
-+ 2.56207645163618802017e-03,
-+ 2.25408538770850491381e-03,
-+ 1.94508692512463700341e-03,
-+ 1.63525838447931698427e-03,
-+ 1.32477739905105789536e-03,
-+ 1.01382181317911045614e-03,
-+ 7.02569580610471595104e-04,
-+ 3.91198662877513612512e-04,
-+ 7.98869277630744821202e-05,
-+-2.31187952088860002205e-04,
-+-5.41848600360482837712e-04,
-+-8.51918037984115972261e-04,
-+-1.16121978375175968247e-03,
-+-1.46957795454782155081e-03,
-+-1.77681736514933067382e-03,
-+-2.08276362753950002732e-03,
-+-2.38724324967590261284e-03,
-+-2.69008373365854430367e-03,
-+-2.99111367324205812759e-03,
-+-3.29016285063819195061e-03,
-+-3.58706233255040498470e-03,
-+-3.88164456539251325612e-03,
-+-4.17374346963266494581e-03,
-+-4.46319453321069280205e-03,
-+-4.74983490397884282330e-03,
-+-5.03350348111142233826e-03,
-+-5.31404100543327127110e-03,
-+-5.59129014861656486318e-03,
-+-5.86509560119571633080e-03,
-+-6.13530415935167362795e-03,
-+-6.40176481041693050400e-03,
-+-6.66432881705371002456e-03,
-+-6.92284980005934951625e-03,
-+-7.17718381975063907108e-03,
-+-7.42718945588436395278e-03,
-+-7.67272788607022311613e-03,
-+-7.91366296262873900047e-03,
-+-8.14986128785674147912e-03,
-+-8.38119228765579413198e-03,
-+-8.60752828348398772718e-03,
-+-8.82874456259165676930e-03,
-+-9.04471944650279101319e-03,
-+-9.25533435770336740389e-03,
-+-9.46047388450147082317e-03,
-+-9.66002584402477111614e-03,
-+-9.85388134331765391805e-03,
-+-1.00419348385086572295e-02,
-+-1.02240841920141073418e-02,
-+-1.04002307277476988001e-02,
-+-1.05702792843059330957e-02,
-+-1.07341382661022052142e-02,
-+-1.08917196924194058932e-02,
-+-1.10429392443588056394e-02,
-+-1.11877163096573035983e-02,
-+-1.13259740253500613971e-02,
-+-1.14576393182570599599e-02,
-+-1.15826429432718831097e-02,
-+-1.17009195194323206701e-02,
-+-1.18124075637551975010e-02,
-+-1.19170495228175868374e-02,
-+-1.20147918020679297935e-02,
-+-1.21055847928538372338e-02,
-+-1.21893828971518514148e-02,
-+-1.22661445499873279080e-02,
-+-1.23358322395343555922e-02,
-+-1.23984125248859967938e-02,
-+-1.24538560514863300838e-02,
-+-1.25021375642184340987e-02,
-+-1.25432359181423137146e-02,
-+-1.25771340868788758516e-02,
-+-1.26038191686375488504e-02,
-+-1.26232823898858471240e-02,
-+-1.26355191066611412948e-02,
-+-1.26405288035257891421e-02,
-+-1.26383150901686648615e-02,
-+-1.26288856956566081235e-02,
-+-1.26122524603418419142e-02,
-+-1.25884313254311982350e-02,
-+-1.25574423202261184485e-02,
-+-1.25193095470420810711e-02,
-+-1.24740611638184551585e-02,
-+-1.24217293644305545874e-02,
-+-1.23623503567175385687e-02,
-+-1.22959643382403553680e-02,
-+-1.22226154697852723574e-02,
-+-1.21423518466312625047e-02,
-+-1.20552254675984453491e-02,
-+-1.19612922018975387228e-02,
-+-1.18606117538015195384e-02,
-+-1.17532476251614014656e-02,
-+-1.16392670757887554955e-02,
-+-1.15187410817310965927e-02,
-+-1.13917442914640253127e-02,
-+-1.12583549800273283181e-02,
-+-1.11186550011346148292e-02,
-+-1.09727297372832800770e-02,
-+-1.08206680478965637515e-02,
-+-1.06625622155284947856e-02,
-+-1.04985078901642363974e-02,
-+-1.03286040316486818491e-02,
-+-1.01529528502798636891e-02,
-+-9.97165974559921335085e-03,
-+-9.78483324341799902413e-03,
-+-9.59258493111724702684e-03,
-+-9.39502939125761923900e-03,
-+-9.19228413354054689488e-03,
-+-8.98446952515993303712e-03,
-+-8.77170871958610903762e-03,
-+-8.55412758382280251357e-03,
-+-8.33185462418275894769e-03,
-+-8.10502091062164677082e-03,
-+-7.87375999967769406307e-03,
-+-7.63820785606213713270e-03,
-+-7.39850277294432437381e-03,
-+-7.15478529097991495372e-03,
-+-6.90719811612892573005e-03,
-+-6.65588603631140588585e-03,
-+-6.40099583694948154333e-03,
-+-6.14267621544471731365e-03,
-+-5.88107769464080425842e-03,
-+-5.61635253532167481177e-03,
-+-5.34865464779504806714e-03,
-+-5.07813950261468052133e-03,
-+-4.80496404049110190093e-03,
-+-4.52928658144188898277e-03,
-+-4.25126673323850644282e-03,
-+-3.97106529919719845184e-03,
-+-3.68884418537053504483e-03,
-+-3.40476630719170527545e-03,
-+-3.11899549562579155026e-03,
-+-2.83169640288094461716e-03,
-+-2.54303440773591491603e-03,
-+-2.25317552053609778881e-03,
-+-1.96228628791152723623e-03,
-+-1.67053369727637865058e-03,
-+-1.37808508115876398453e-03,
-+-1.08510802141915333602e-03,
-+-7.91770253410941553598e-04,
-+-4.98239570138193856204e-04,
-+-2.04683726464174046067e-04,
-+ 8.87296565722855913767e-05,
-+ 3.81833187280424608996e-04,
-+ 6.74459798627879405716e-04,
-+ 9.66442843278491714280e-04,
-+ 1.25761618830957477670e-03,
-+ 1.54781430955123577679e-03,
-+ 1.83687238549551422676e-03,
-+ 2.12462639072184518788e-03,
-+ 2.41091318878710377666e-03,
-+ 2.69557062452432027663e-03,
-+ 2.97843761570351769560e-03,
-+ 3.25935424399821128960e-03,
-+ 3.53816184520730405566e-03,
-+ 3.81470309868363116265e-03,
-+ 4.08882211591671436424e-03,
-+ 4.36036452822079721725e-03,
-+ 4.62917757347863778605e-03,
-+ 4.89511018189369654513e-03,
-+ 5.15801306069900780682e-03,
-+ 5.41773877778122490978e-03,
-+ 5.67414184416796703314e-03,
-+ 5.92707879533384274229e-03,
-+ 6.17640827128176569949e-03,
-+ 6.42199109535173794788e-03,
-+ 6.66369035171747361307e-03,
-+ 6.90137146152226561152e-03,
-+ 7.13490225761727499265e-03,
-+ 7.36415305785760327534e-03,
-+ 7.58899673691662904340e-03,
-+ 7.80930879657879342681e-03,
-+ 8.02496743447280412587e-03,
-+ 8.23585361120545214608e-03,
-+ 8.44185111586123922145e-03,
-+ 8.64284662983217863430e-03,
-+ 8.83872978893951791179e-03,
-+ 9.02939324381753054272e-03,
-+ 9.21473271852386519032e-03,
-+ 9.39464706734555871082e-03,
-+ 9.56903832976962673285e-03,
-+ 9.73781178358892364477e-03,
-+ 9.90087599611340699046e-03,
-+ 1.00581428734606900116e-02,
-+ 1.02095277078994902537e-02,
-+ 1.03549492232184597862e-02,
-+ 1.04943296180992785144e-02,
-+ 1.06275946074688987242e-02,
-+ 1.07546734618099455033e-02,
-+ 1.08754990444085344187e-02,
-+ 1.09900078465200706085e-02,
-+ 1.10981400204346221383e-02,
-+ 1.11998394104246661029e-02,
-+ 1.12950535815609064139e-02,
-+ 1.13837338463788559362e-02,
-+ 1.14658352893853201365e-02,
-+ 1.15413167893916573242e-02,
-+ 1.16101410396627392763e-02,
-+ 1.16722745658728050550e-02,
-+ 1.17276877418591822522e-02,
-+ 1.17763548031668534993e-02,
-+ 1.18182538583788306064e-02,
-+ 1.18533668982268927672e-02,
-+ 1.18816798024796634742e-02,
-+ 1.19031823446065308097e-02,
-+ 1.19178681942160510920e-02,
-+ 1.19257349172696772155e-02,
-+ 1.19267839740727354947e-02,
-+ 1.19210207150453346286e-02,
-+ 1.19084543742781455433e-02,
-+ 1.18890980608779301547e-02,
-+ 1.18629687481103703039e-02,
-+ 1.18300872603478539336e-02,
-+ 1.17904782578316710134e-02,
-+ 1.17441702192595375659e-02,
-+ 1.16911954222092898115e-02,
-+ 1.16315899214134987893e-02,
-+ 1.15653935248972560695e-02,
-+ 1.14926497679962574816e-02,
-+ 1.14134058852708338005e-02,
-+ 1.13277127803342991114e-02,
-+ 1.12356249936141419643e-02,
-+ 1.11372006680669592693e-02,
-+ 1.10325015128680588988e-02,
-+ 1.09215927650972884078e-02,
-+ 1.08045431494469181682e-02,
-+ 1.06814248359739724648e-02,
-+ 1.05523133959240563579e-02,
-+ 1.04172877556533635679e-02,
-+ 1.02764301486764821764e-02,
-+ 1.01298260658689662922e-02,
-+ 9.97756420385554482211e-03,
-+ 9.81973641161405612354e-03,
-+ 9.65643763532623641832e-03,
-+ 9.48776586151135747915e-03,
-+ 9.31382205847339390836e-03,
-+ 9.13471011609818910049e-03,
-+ 8.95053678403625804783e-03,
-+ 8.76141160830776546953e-03,
-+ 8.56744686636650917833e-03,
-+ 8.36875750066302069585e-03,
-+ 8.16546105074440926874e-03,
-+ 7.95767758393019740415e-03,
-+ 7.74552962460837469971e-03,
-+ 7.52914208218922759858e-03,
-+ 7.30864217776142511412e-03,
-+ 7.08415936949292109753e-03,
-+ 6.85582527682011919762e-03,
-+ 6.62377360346902248345e-03,
-+ 6.38814005935512633366e-03,
-+ 6.14906228140583120678e-03,
-+ 5.90667975335047463342e-03,
-+ 5.66113372452884365538e-03,
-+ 5.41256712776044118796e-03,
-+ 5.16112449632528166171e-03,
-+ 4.90695188010295546555e-03,
-+ 4.65019676091923093997e-03,
-+ 4.39100796714859270553e-03,
-+ 4.12953558762247860403e-03,
-+ 3.86593088489268566291e-03,
-+ 3.60034620790024339002e-03,
-+ 3.33293490409898975416e-03,
-+ 3.06385123108688468482e-03,
-+ 2.79325026779358087312e-03,
-+ 2.52128782527450854764e-03,
-+ 2.24812035716717229308e-03,
-+ 1.97390486985574153955e-03,
-+ 1.69879883239866091155e-03,
-+ 1.42296008626978756108e-03,
-+ 1.14654675496503560654e-03,
-+ 8.69717153525156449340e-04,
-+ 5.92629698028697892917e-04,
-+ 3.15442815104587483740e-04,
-+ 3.83148515150130003753e-05,
-+-2.38596016135179852516e-04,
-+-5.15131871516745108372e-04,
-+-7.91135148467245652611e-04,
-+-1.06644872060530828545e-03,
-+-1.34091599061669417524e-03,
-+-1.61438097916256320837e-03,
-+-1.88668841335719902723e-03,
-+-2.15768381476730232091e-03,
-+-2.42721358688397208930e-03,
-+-2.69512510201327460183e-03,
-+-2.96126678754182314640e-03,
-+-3.22548821152533965809e-03,
-+-3.48764016755303369807e-03,
-+-3.74757475883982088538e-03,
-+-4.00514548149979391495e-03,
-+-4.26020730695223729528e-03,
-+-4.51261676341580680871e-03,
-+-4.76223201644600246940e-03,
-+-5.00891294846663153589e-03,
-+-5.25252123725567128532e-03,
-+-5.49292043333865411675e-03,
-+-5.72997603624744288736e-03,
-+-5.96355556960147161621e-03,
-+-6.19352865496984421323e-03,
-+-6.41976708447395284091e-03,
-+-6.64214489208741348802e-03,
-+-6.86053842359856183575e-03,
-+-7.07482640519247439614e-03,
-+-7.28489001061597037101e-03,
-+-7.49061292688948335977e-03,
-+-7.69188141852844651375e-03,
-+-7.88858439023906905796e-03,
-+-8.08061344805422777926e-03,
-+-8.26786295887581117181e-03,
-+-8.45023010839095374547e-03,
-+-8.62761495733049832424e-03,
-+-8.79992049603937377678e-03,
-+-8.96705269732801270310e-03,
-+-9.12892056757751840790e-03,
-+-9.28543619607121589743e-03,
-+-9.43651480252325272624e-03,
-+-9.58207478278219441925e-03,
-+-9.72203775268269676513e-03,
-+-9.85632859002284582306e-03,
-+-9.98487547464438525424e-03,
-+-1.01076099265952259326e-02,
-+-1.02244668423529874723e-02,
-+-1.03353845290914767713e-02,
-+-1.04403047369727476623e-02,
-+-1.05391726894459199226e-02,
-+-1.06319371115395251703e-02,
-+-1.07185502561315034592e-02,
-+-1.07989679281840673941e-02,
-+-1.08731495069313705004e-02,
-+-1.09410579660090354764e-02,
-+-1.10026598915155138930e-02,
-+-1.10579254979971536299e-02,
-+-1.11068286423497506604e-02,
-+-1.11493468356296306782e-02,
-+-1.11854612527701267194e-02,
-+-1.12151567401993432216e-02,
-+-1.12384218213567241285e-02,
-+-1.12552487001068551170e-02,
-+-1.12656332620508243397e-02,
-+-1.12695750737355805671e-02,
-+-1.12670773797639463265e-02,
-+-1.12581470978087311990e-02,
-+-1.12427948115352074887e-02,
-+-1.12210347614381672487e-02,
-+-1.11928848336002705749e-02,
-+-1.11583665463801332690e-02,
-+-1.11175050350392178033e-02,
-+-1.10703290343182984834e-02,
-+-1.10168708589748198801e-02,
-+-1.09571663822947782535e-02,
-+-1.08912550125919559835e-02,
-+-1.08191796677104181551e-02,
-+-1.07409867475466505593e-02,
-+-1.06567261046078953085e-02,
-+-1.05664510126258718442e-02,
-+-1.04702181332450312140e-02,
-+-1.03680874808063875486e-02,
-+-1.02601223852479897514e-02,
-+-1.01463894531454990044e-02,
-+-1.00269585269162232050e-02,
-+-9.90190264221126568989e-03,
-+-9.77129798352259666683e-03,
-+-9.63522383803080625930e-03,
-+-9.49376254772124616998e-03,
-+-9.34699945979887078518e-03,
-+-9.19502287542989238389e-03,
-+-9.03792399684144424910e-03,
-+-8.87579687281107691799e-03,
-+-8.70873834257845577667e-03,
-+-8.53684797821176177823e-03,
-+-8.36022802546492783959e-03,
-+-8.17898334315863943800e-03,
-+-7.99322134112125451399e-03,
-+-7.80305191672834696365e-03,
-+-7.60858739007534007337e-03,
-+-7.40994243782330200970e-03,
-+-7.20723402575608202564e-03,
-+-7.00058134008851255109e-03,
-+-6.79010571756536070176e-03,
-+-6.57593057439340850090e-03,
-+-6.35818133404676254922e-03,
-+-6.13698535398672032765e-03,
-+-5.91247185134246861643e-03,
-+-5.68477182759180490329e-03,
-+-5.45401799228807746683e-03,
-+-5.22034468587699671677e-03,
-+-4.98388780164810921841e-03,
-+-4.74478470686644573928e-03,
-+-4.50317416312886326102e-03,
-+-4.25919624599436445062e-03,
-+-4.01299226392974606181e-03,
-+-3.76470467662182433494e-03,
-+-3.51447701270230384446e-03,
-+-3.26245378693090131231e-03,
-+-3.00878041688648536350e-03,
-+-2.75360313921323108730e-03,
-+-2.49706892547035515587e-03,
-+-2.23932539763252707460e-03,
-+-1.98052074329282566320e-03,
-+-1.72080363061157654535e-03,
-+-1.46032312306425922019e-03,
-+-1.19922859403635969841e-03,
-+-9.37669641312056218428e-04,
-+-6.75796001507703134221e-04,
-+-4.13757464498088920954e-04,
-+-1.51703787884435286606e-04,
-+ 1.10215388447121949347e-04,
-+ 3.71850627627885114545e-04,
-+ 6.33052780921098995522e-04,
-+ 8.93673072601122806674e-04,
-+ 1.15356318454689905743e-03,
-+ 1.41257534050370911136e-03,
-+ 1.67056238996633678491e-03,
-+ 1.92737789163165596125e-03,
-+ 2.18287619637864190730e-03,
-+ 2.43691252972557228021e-03,
-+ 2.68934307371902769912e-03,
-+ 2.94002504820795344462e-03,
-+ 3.18881679145808279857e-03,
-+ 3.43557784005892952531e-03,
-+ 3.68016900808052979666e-03,
-+ 3.92245246543618079904e-03,
-+ 4.16229181540278981438e-03,
-+ 4.39955217126052674365e-03,
-+ 4.63410023200553494727e-03,
-+ 4.86580435709433288538e-03,
-+ 5.09453464017795010221e-03,
-+ 5.32016298178517119816e-03,
-+ 5.54256316091259002704e-03,
-+ 5.76161090548329372224e-03,
-+ 5.97718396163549221811e-03,
-+ 6.18916216179911122391e-03,
-+ 6.39742749152663690154e-03,
-+ 6.60186415503853565173e-03,
-+ 6.80235863944797080477e-03,
-+ 6.99879977762879034592e-03,
-+ 7.19107880969246070213e-03,
-+ 7.37908944304029295463e-03,
-+ 7.56272791095595735972e-03,
-+ 7.74189302970967625078e-03,
-+ 7.91648625413953442587e-03,
-+ 8.08641173168029268881e-03,
-+ 8.25157635481136783606e-03,
-+ 8.41188981189416006001e-03,
-+ 8.56726463637145184415e-03,
-+ 8.71761625430204217801e-03,
-+ 8.86286303020573928979e-03,
-+ 9.00292631119170398690e-03,
-+ 9.13773046934988723844e-03,
-+ 9.26720294237984125452e-03,
-+ 9.39127427243598503215e-03,
-+ 9.50987814316970984929e-03,
-+ 9.62295141494749588229e-03,
-+ 9.73043415822708555873e-03,
-+ 9.83226968507381650364e-03,
-+ 9.92840457880114421463e-03,
-+ 1.00187887217194990935e-02,
-+ 1.01033753209798602551e-02,
-+ 1.01821209324982810823e-02,
-+ 1.02549854829495166314e-02,
-+ 1.03219322898189282134e-02,
-+ 1.03829280795032750928e-02,
-+ 1.04379430034503180302e-02,
-+ 1.04869506523312169127e-02,
-+ 1.05299280682385320435e-02,
-+ 1.05668557549043577726e-02,
-+ 1.05977176859349212640e-02,
-+ 1.06225013110582688913e-02,
-+ 1.06411975603831251286e-02,
-+ 1.06538008466682248415e-02,
-+ 1.06603090656027660321e-02,
-+ 1.06607235940987827433e-02,
-+ 1.06550492865989197139e-02,
-+ 1.06432944694025734267e-02,
-+ 1.06254709330158968877e-02,
-+ 1.06015939225314811956e-02,
-+ 1.05716821260445053426e-02,
-+ 1.05357576611141614403e-02,
-+ 1.04938460592794574611e-02,
-+ 1.04459762486396531833e-02,
-+ 1.03921805345111133156e-02,
-+ 1.03324945781732863842e-02,
-+ 1.02669573737173662475e-02,
-+ 1.01956112230122235285e-02,
-+ 1.01185017088040590805e-02,
-+ 1.00356776659660425211e-02,
-+ 9.94719115091608624413e-03,
-+ 9.85309740922234687799e-03,
-+ 9.75345484141500011777e-03,
-+ 9.64832496702668768185e-03,
-+ 9.53777238688333431349e-03,
-+ 9.42186474366750112419e-03,
-+ 9.30067268077903845647e-03,
-+ 9.17426979951779277001e-03,
-+ 9.04273261461393390581e-03,
-+ 8.90614050813234511828e-03,
-+ 8.76457568178037361994e-03,
-+ 8.61812310764482544800e-03,
-+ 8.46687047738961182097e-03,
-+ 8.31090814994421903106e-03,
-+ 8.15032909771297095491e-03,
-+ 7.98522885133778372035e-03,
-+ 7.81570544304719359852e-03,
-+ 7.64185934862476878848e-03,
-+ 7.46379342803140874429e-03,
-+ 7.28161286471641980289e-03,
-+ 7.09542510365326374588e-03,
-+ 6.90533978813562872995e-03,
-+ 6.71146869537252947074e-03,
-+ 6.51392567091878173929e-03,
-+ 6.31282656197840099516e-03,
-+ 6.10828914962330098148e-03,
-+ 5.90043307996295039036e-03,
-+ 5.68937979430757592714e-03,
-+ 5.47525245836473755529e-03,
-+ 5.25817589051068290384e-03,
-+ 5.03827648917754868096e-03,
-+ 4.81568215940014407450e-03,
-+ 4.59052223856344730063e-03,
-+ 4.36292742139295433579e-03,
-+ 4.13302968423510681123e-03,
-+ 3.90096220866709446004e-03,
-+ 3.66685930448303705129e-03,
-+ 3.43085633209993298015e-03,
-+ 3.19308962442840099660e-03,
-+ 2.95369640825326627495e-03,
-+ 2.71281472516826487051e-03,
-+ 2.47058335211343968810e-03,
-+ 2.22714172155590722779e-03,
-+ 1.98262984136404274774e-03,
-+ 1.73718821442020768774e-03,
-+ 1.49095775801618085979e-03,
-+ 1.24407972307950527406e-03,
-+ 9.96695613276132701130e-04,
-+ 7.48947104035837802997e-04,
-+ 5.00975961545737855096e-04,
-+ 2.52923961761159811490e-04,
-+ 4.93280947509291801083e-06,
-+-2.42855942503384357196e-04,
-+-4.90300974016580110200e-04,
-+-7.37261278027570056415e-04,
-+-9.83596240843677242782e-04,
-+-1.22916572204938767329e-03,
-+-1.47383013410300081451e-03,
-+-1.71745052155293964798e-03,
-+-1.95988863982576476050e-03,
-+-2.20100703354622747807e-03,
-+-2.44066911434088866517e-03,
-+-2.67873923808214847372e-03,
-+-2.91508278153101421312e-03,
-+-3.14956621833333222718e-03,
-+-3.38205719432752276860e-03,
-+-3.61242460212125989991e-03,
-+-3.84053865489516728718e-03,
-+-4.06627095939203833663e-03,
-+-4.28949458805057831645e-03,
-+-4.51008415024378109953e-03,
-+-4.72791586258040994611e-03,
-+-4.94286761823193362270e-03,
-+-5.15481905524671577684e-03,
-+-5.36365162380991484375e-03,
-+-5.56924865241561605628e-03,
-+-5.77149541291191014308e-03,
-+-5.97027918438345836516e-03,
-+-6.16548931583604711143e-03,
-+-6.35701728764813140532e-03,
-+-6.54475677175619420523e-03,
-+-6.72860369053819660362e-03,
-+-6.90845627436653328401e-03,
-+-7.08421511779518033730e-03,
-+-7.25578323435132135910e-03,
-+-7.42306610990221913543e-03,
-+-7.58597175456684601896e-03,
-+-7.74441075314436476462e-03,
-+-7.89829631403181527116e-03,
-+-8.04754431660486060918e-03,
-+-8.19207335703401803850e-03,
-+-8.33180479251450362144e-03,
-+-8.46666278388312140701e-03,
-+-8.59657433660001440989e-03,
-+-8.72146934007399753097e-03,
-+-8.84128060530934949124e-03,
-+-8.95594390085470426488e-03,
-+-9.06539798703423320425e-03,
-+-9.16958464844403950411e-03,
-+-9.26844872469488080535e-03,
-+-9.36193813938749827552e-03,
-+-9.45000392730357963167e-03,
-+-9.53260025979855117606e-03,
-+-9.60968446838431425427e-03,
-+-9.68121706648877346224e-03,
-+-9.74716176938165805577e-03,
-+-9.80748551225691343747e-03,
-+-9.86215846646274103826e-03,
-+-9.91115405387120278202e-03,
-+-9.95444895938146258330e-03,
-+-9.99202314155041813881e-03,
-+-1.00238598413463411013e-02,
-+-1.00499455890222209875e-02,
-+-1.00702702091063772682e-02,
-+-1.00848268235089154332e-02,
-+-1.00936118527438327408e-02,
-+-1.00966250152679168361e-02,
-+-1.00938693249378146077e-02,
-+-1.00853510865886227682e-02,
-+-1.00710798897381062500e-02,
-+-1.00510686004214797040e-02,
-+-1.00253333511630630254e-02,
-+-9.99389352909173418749e-03,
-+-9.95677176220922943717e-03,
-+-9.91399390381976150510e-03,
-+-9.86558901513197826494e-03,
-+-9.81158934604420447656e-03,
-+-9.75203031412597010075e-03,
-+-9.68695048180868989451e-03,
-+-9.61639153180029321311e-03,
-+-9.54039824073970449403e-03,
-+-9.45901845110641917302e-03,
-+-9.37230304140389963719e-03,
-+-9.28030589463477509349e-03,
-+-9.18308386508685792204e-03,
-+-9.08069674345089207501e-03,
-+-8.97320722029071662917e-03,
-+-8.86068084788880529212e-03,
-+-8.74318600048899774446e-03,
-+-8.62079383296257897862e-03,
-+-8.49357823791978966410e-03,
-+-8.36161580129450403287e-03,
-+-8.22498575642871369851e-03,
-+-8.08376993668271683069e-03,
-+-7.93805272660061574108e-03,
-+-7.78792101165969724574e-03,
-+-7.63346412663362498818e-03,
-+-7.47477380259930785505e-03,
-+-7.31194411262098796500e-03,
-+-7.14507141614020412773e-03,
-+-6.97425430210722122754e-03,
-+-6.79959353088687573630e-03,
-+-6.62119197497169301864e-03,
-+-6.43915455853849138385e-03,
-+-6.25358819588309883253e-03,
-+-6.06460172876989358354e-03,
-+-5.87230586273140842124e-03,
-+-5.67681310235816811993e-03,
-+-5.47823768561213342299e-03,
-+-5.27669551720578392656e-03,
-+-5.07230410108449637774e-03,
-+-4.86518247205038317088e-03,
-+-4.65545112656870225393e-03,
-+-4.44323195279612039033e-03,
-+-4.22864815987201558140e-03,
-+-4.01182420651321949151e-03,
-+-3.79288572895385015307e-03,
-+-3.57195946827177420596e-03,
-+-3.34917319714373535808e-03,
-+-3.12465564607069309216e-03,
-+-2.89853642911835473334e-03,
-+-2.67094596921149977573e-03,
-+-2.44201542302870371753e-03,
-+-2.21187660553990271539e-03,
-+-1.98066191422849313675e-03,
-+-1.74850425304324988245e-03,
-+-1.51553695612283568887e-03,
-+-1.28189371133704578531e-03,
-+-1.04770848368741461600e-03,
-+-8.13115438614004488148e-04,
-+-5.78248865247532866513e-04,
-+-3.43243099654593679469e-04,
-+-1.08232448119056134180e-04,
-+ 1.26648889498497872709e-04,
-+ 3.61266896277643255724e-04,
-+ 5.95487814588576617851e-04,
-+ 8.29178222232456471966e-04,
-+ 1.06220510832932932450e-03,
-+ 1.29443594890761418982e-03,
-+ 1.52573878215697851524e-03,
-+ 1.75598228329790738422e-03,
-+ 1.98503583902642517095e-03,
-+ 2.21276962149356305753e-03,
-+ 2.43905466177587538015e-03,
-+ 2.66376292279626092005e-03,
-+ 2.88676737165370449201e-03,
-+ 3.10794205132203151670e-03,
-+ 3.32716215167451348847e-03,
-+ 3.54430407979887786632e-03,
-+ 3.75924552955919340572e-03,
-+ 3.97186555036659408313e-03,
-+ 4.18204461512168643861e-03,
-+ 4.38966468728887570377e-03,
-+ 4.59460928706578036751e-03,
-+ 4.79676355661041737416e-03,
-+ 4.99601432429057183693e-03,
-+ 5.19225016791701170921e-03,
-+ 5.38536147692926601277e-03,
-+ 5.57524051349589811616e-03,
-+ 5.76178147249606278230e-03,
-+ 5.94488054035048445189e-03,
-+ 6.12443595266757775941e-03,
-+ 6.30034805067354337221e-03,
-+ 6.47251933639503632123e-03,
-+ 6.64085452656393640525e-03,
-+ 6.80526060521449791679e-03,
-+ 6.96564687494400421736e-03,
-+ 7.12192500680845601291e-03,
-+ 7.27400908882688563423e-03,
-+ 7.42181567306544106438e-03,
-+ 7.56526382127895545560e-03,
-+ 7.70427514908233069396e-03,
-+ 7.83877386862820088598e-03,
-+ 7.96868682976907029281e-03,
-+ 8.09394355968027362502e-03,
-+ 8.21447630092295155713e-03,
-+ 8.33022004792652141780e-03,
-+ 8.44111258187129308295e-03,
-+ 8.54709450395172223858e-03,
-+ 8.64810926700426002567e-03,
-+ 8.74410320548165559407e-03,
-+ 8.83502556375806609446e-03,
-+ 8.92082852275120734287e-03,
-+ 9.00146722484649296214e-03,
-+ 9.07689979711120281669e-03,
-+ 9.14708737278599470777e-03,
-+ 9.21199411104400324446e-03,
-+ 9.27158721500605589871e-03,
-+ 9.32583694800504132971e-03,
-+ 9.37471664808996879570e-03,
-+ 9.41820274076340252511e-03,
-+ 9.45627474994699748767e-03,
-+ 9.48891530716929401668e-03,
-+ 9.51611015897272857766e-03,
-+ 9.53784817253677981441e-03,
-+ 9.55412133951539892240e-03,
-+ 9.56492477808816750351e-03,
-+ 9.57025673322536851728e-03,
-+ 9.57011857516825228953e-03,
-+ 9.56451479612665210472e-03,
-+ 9.55345300519767903769e-03,
-+ 9.53694392150929680374e-03,
-+ 9.51500136559463131902e-03,
-+ 9.48764224900292864329e-03,
-+ 9.45488656215475072042e-03,
-+ 9.41675736044983967277e-03,
-+ 9.37328074863657233207e-03,
-+ 9.32448586345385396768e-03,
-+ 9.27040485455623772260e-03,
-+ 9.21107286373510844579e-03,
-+ 9.14652800244862389245e-03,
-+ 9.07681132767460333022e-03,
-+ 9.00196681610215994340e-03,
-+ 8.92204133667740678648e-03,
-+ 8.83708462152045341742e-03,
-+ 8.74714923523178117248e-03,
-+ 8.65229054260652913344e-03,
-+ 8.55256667477650479869e-03,
-+ 8.44803849380110737088e-03,
-+ 8.33876955572694297802e-03,
-+ 8.22482607214039367072e-03,
-+ 8.10627687023531343091e-03,
-+ 7.98319335141973659975e-03,
-+ 7.85564944848663425370e-03,
-+ 7.72372158137452947957e-03,
-+ 7.58748861154383627547e-03,
-+ 7.44703179499617545084e-03,
-+ 7.30243473396576317502e-03,
-+ 7.15378332730893639474e-03,
-+ 7.00116571962369673571e-03,
-+ 6.84467224912835292550e-03,
-+ 6.68439539432962807203e-03,
-+ 6.52042971951210560688e-03,
-+ 6.35287181908096316302e-03,
-+ 6.18182026079089775444e-03,
-+ 6.00737552789352719645e-03,
-+ 5.82963996023949920094e-03,
-+ 5.64871769436637964634e-03,
-+ 5.46471460260989760210e-03,
-+ 5.27773823127398664101e-03,
-+ 5.08789773789389884046e-03,
-+ 4.89530382763052763356e-03,
-+ 4.70006868883239992823e-03,
-+ 4.50230592780280144960e-03,
-+ 4.30213050280925293073e-03,
-+ 4.09965865737595570178e-03,
-+ 3.89500785289395058675e-03,
-+ 3.68829670059122758860e-03,
-+ 3.47964489290170791991e-03,
-+ 3.26917313427090060543e-03,
-+ 3.05700307144005523768e-03,
-+ 2.84325722324815094444e-03,
-+ 2.62805890999240517047e-03,
-+ 2.41153218238787615466e-03,
-+ 2.19380175016706995342e-03,
-+ 1.97499291036058082296e-03,
-+ 1.75523147530006872613e-03,
-+ 1.53464370038409927272e-03,
-+ 1.31335621165009405059e-03,
-+ 1.09149593319219089145e-03,
-+ 8.69190014465733669022e-04,
-+ 6.46565757523822519717e-04,
-+ 4.23750544222993737447e-04,
-+ 2.00871763442388796871e-04,
-+-2.19432616430028802536e-05,
-+-2.44567346193297504003e-04,
-+-4.66873516198418401623e-04,
-+-6.88735080792504629141e-04,
-+-9.10025704351406588243e-04,
-+-1.13061947832844914008e-03,
-+-1.35039099278848459193e-03,
-+-1.56921540760134731185e-03,
-+-1.78696852325255445618e-03,
-+-2.00352685123184786134e-03,
-+-2.21876768395961026376e-03,
-+-2.43256916421236753928e-03,
-+-2.64481035400563951540e-03,
-+-2.85537130289943187622e-03,
-+-3.06413311568427739612e-03,
-+-3.27097801941039290421e-03,
-+-3.47578942972392133937e-03,
-+-3.67845201647113524343e-03,
-+-3.87885176853450686779e-03,
-+-4.07687605786403312047e-03,
-+-4.27241370266879562367e-03,
-+-4.46535502973073768207e-03,
-+-4.65559193580989804512e-03,
-+-4.84301794810346793868e-03,
-+-5.02752828372539546653e-03,
-+-5.20901990817508944720e-03,
-+-5.38739159276095062184e-03,
-+-5.56254397094743408686e-03,
-+-5.73437959359436588702e-03,
-+-5.90280298305815697563e-03,
-+-6.06772068612327578757e-03,
-+-6.22904132573793255234e-03,
-+-6.38667565152189597305e-03,
-+-6.54053658902132174086e-03,
-+-6.69053928768123529203e-03,
-+-6.83660116751098716203e-03,
-+-6.97864196441732535098e-03,
-+-7.11658377417776714241e-03,
-+-7.25035109503333486530e-03,
-+-7.37987086887549603720e-03,
-+-7.50507252100559608954e-03,
-+-7.62588799844512044840e-03,
-+-7.74225180677637174476e-03,
-+-7.85410104549275414620e-03,
-+-7.96137544184076853537e-03,
-+-8.06401738313571557482e-03,
-+-8.16197194753211924256e-03,
-+-8.25518693323474758716e-03,
-+-8.34361288613344465048e-03,
-+-8.42720312584763903141e-03,
-+-8.50591377016694447089e-03,
-+-8.57970375787523234501e-03,
-+-8.64853486994612667693e-03,
-+-8.71237174909944220302e-03,
-+-8.77118191770899502391e-03,
-+-8.82493579405169495389e-03,
-+-8.87360670689150109192e-03,
-+-8.91717090839015333326e-03,
-+-8.95560758533894135658e-03,
-+-8.98889886870667467744e-03,
-+-9.01702984149947012193e-03,
-+-9.03998854492910064451e-03,
-+-9.05776598288827831940e-03,
-+-9.07035612473096330977e-03,
-+-9.07775590635802147321e-03,
-+-9.07996522960853764961e-03,
-+-9.07698695995886803423e-03,
-+-9.06882692253164167384e-03,
-+-9.05549389641891432079e-03,
-+-9.03699960732328583246e-03,
-+-9.01335871852335275556e-03,
-+-8.98458882016932476600e-03,
-+-8.95071041691646723804e-03,
-+-8.91174691390494294607e-03,
-+-8.86772460109508213477e-03,
-+-8.81867263596835572470e-03,
-+-8.76462302460546613392e-03,
-+-8.70561060115330326292e-03,
-+-8.64167300569398770527e-03,
-+-8.57285066052993274810e-03,
-+-8.49918674489946214534e-03,
-+-8.42072716813898301813e-03,
-+-8.33752054130776007468e-03,
-+-8.24961814729350748077e-03,
-+-8.15707390941654633676e-03,
-+-8.05994435855085684939e-03,
-+-7.95828859878412557538e-03,
-+-7.85216827163510294740e-03,
-+-7.74164751885155454081e-03,
-+-7.62679294381024292654e-03,
-+-7.50767357154260520785e-03,
-+-7.38436080740939235212e-03,
-+-7.25692839445000407311e-03,
-+-7.12545236943096498700e-03,
-+-6.99001101761916477512e-03,
-+-6.85068482630888687945e-03,
-+-6.70755643712759620778e-03,
-+-6.56071059715018171238e-03,
-+-6.41023410885009203158e-03,
-+-6.25621577891687877943e-03,
-+-6.09874636596976875402e-03,
-+-5.93791852719933836713e-03,
-+-5.77382676396723509143e-03,
-+-5.60656736639539039074e-03,
-+-5.43623835697979850695e-03,
-+-5.26293943325864543858e-03,
-+-5.08677190957020682743e-03,
-+-4.90783865793382578085e-03,
-+-4.72624404808862780270e-03,
-+-4.54209388672411652765e-03,
-+-4.35549535594014370493e-03,
-+-4.16655695096843255165e-03,
-+-3.97538841719484881826e-03,
-+-3.78210068651828800954e-03,
-+-3.58680581308160571774e-03,
-+-3.38961690841329795279e-03,
-+-3.19064807601676572041e-03,
-+-2.99001434544510355171e-03,
-+-2.78783160589872848825e-03,
-+-2.58421653938650406832e-03,
-+-2.37928655348473936521e-03,
-+-2.17315971373707597994e-03,
-+-1.96595467573080053339e-03,
-+-1.75779061689126871355e-03,
-+-1.54878716803180682161e-03,
-+-1.33906434469759582327e-03,
-+-1.12874247834651849839e-03,
-+-9.17942147402158120997e-04,
-+-7.06784108220954348026e-04,
-+-4.95389226012176797989e-04,
-+-2.83878405750408527308e-04,
-+-7.23725231191953317922e-05,
-+ 1.39007644472942073393e-04,
-+ 3.50141486766494293426e-04,
-+ 5.60908629376450848514e-04,
-+ 7.71189002326557382014e-04,
-+ 9.80862908357632698117e-04,
-+ 1.18981109096850837074e-03,
-+ 1.39791480215185285468e-03,
-+ 1.60505586978618446266e-03,
-+ 1.81111676464667430489e-03,
-+ 2.01598066699498323223e-03,
-+ 2.21953153271216372527e-03,
-+ 2.42165415893787249260e-03,
-+ 2.62223424917535025483e-03,
-+ 2.82115847782954658890e-03,
-+ 3.01831455413943379809e-03,
-+ 3.21359128546936040696e-03,
-+ 3.40687863992359188381e-03,
-+ 3.59806780824958004350e-03,
-+ 3.78705126499338838933e-03,
-+ 3.97372282887472824675e-03,
-+ 4.15797772234820922632e-03,
-+ 4.33971263031428678564e-03,
-+ 4.51882575795083032272e-03,
-+ 4.69521688763073485884e-03,
-+ 4.86878743489439942682e-03,
-+ 5.03944050344600283364e-03,
-+ 5.20708093914320439138e-03,
-+ 5.37161538294856407555e-03,
-+ 5.53295232281637763133e-03,
-+ 5.69100214448343532520e-03,
-+ 5.84567718113605111485e-03,
-+ 5.99689176192734485493e-03,
-+ 6.14456225931638965604e-03,
-+ 6.28860713520388876080e-03,
-+ 6.42894698583886935878e-03,
-+ 6.56550458547169348000e-03,
-+ 6.69820492872941122137e-03,
-+ 6.82697527169041310652e-03,
-+ 6.95174517163579808177e-03,
-+ 7.07244652545614607003e-03,
-+ 7.18901360669207869364e-03,
-+ 7.30138310118917405883e-03,
-+ 7.40949414134865064208e-03,
-+ 7.51328833895314410901e-03,
-+ 7.61270981655247976766e-03,
-+ 7.70770523739102830091e-03,
-+ 7.79822383386149457080e-03,
-+ 7.88421743446952177914e-03,
-+ 7.96564048929547866007e-03,
-+ 8.04245009393938191378e-03,
-+ 8.11460601193707622980e-03,
-+ 8.18207069563602756856e-03,
-+ 8.24480930551941583462e-03,
-+ 8.30278972796945347046e-03,
-+ 8.35598259146062144476e-03,
-+ 8.40436128117489321399e-03,
-+ 8.44790195203182735229e-03,
-+ 8.48658354012752670636e-03,
-+ 8.52038777257667530318e-03,
-+ 8.54929917575385743544e-03,
-+ 8.57330508193055763899e-03,
-+ 8.59239563430499141139e-03,
-+ 8.60656379042347950692e-03,
-+ 8.61580532399272396027e-03,
-+ 8.62011882508288869442e-03,
-+ 8.61950569872288463458e-03,
-+ 8.61397016188992017960e-03,
-+ 8.60351923889614116081e-03,
-+ 8.58816275517627555902e-03,
-+ 8.56791332948142643489e-03,
-+ 8.54278636448400040260e-03,
-+ 8.51280003580121708007e-03,
-+ 8.47797527944401177469e-03,
-+ 8.43833577770019410691e-03,
-+ 8.39390794346085364341e-03,
-+ 8.34472090300016587638e-03,
-+ 8.29080647722033568792e-03,
-+ 8.23219916137209704876e-03,
-+ 8.16893610326531807719e-03,
-+ 8.10105707998175217366e-03,
-+ 8.02860447310570039814e-03,
-+ 7.95162324248711339936e-03,
-+ 7.87016089855287724608e-03,
-+ 7.78426747318477444543e-03,
-+ 7.69399548918007353260e-03,
-+ 7.59939992831438169973e-03,
-+ 7.50053819802581206444e-03,
-+ 7.39747009674054673695e-03,
-+ 7.29025777786024634097e-03,
-+ 7.17896571243396234424e-03,
-+ 7.06366065053597690093e-03,
-+ 6.94441158137212768281e-03,
-+ 6.82128969214047548714e-03,
-+ 6.69436832566827795532e-03,
-+ 6.56372293685217843284e-03,
-+ 6.42943104792645641482e-03,
-+ 6.29157220258638738564e-03,
-+ 6.15022791899296188828e-03,
-+ 6.00548164168810023889e-03,
-+ 5.85741869244729099903e-03,
-+ 5.70612622009830997016e-03,
-+ 5.55169314933761943315e-03,
-+ 5.39421012857201238877e-03,
-+ 5.23376947681718652367e-03,
-+ 5.07046512968433327889e-03,
-+ 4.90439258448602602436e-03,
-+ 4.73564884449306690989e-03,
-+ 4.56433236237605791802e-03,
-+ 4.39054298286334701573e-03,
-+ 4.21438188464811746420e-03,
-+ 4.03595152158122121716e-03,
-+ 3.85535556318054341285e-03,
-+ 3.67269883449336575001e-03,
-+ 3.48808725534603724164e-03,
-+ 3.30162777901616766654e-03,
-+ 3.11342833036215701700e-03,
-+ 2.92359774344746591729e-03,
-+ 2.73224569869404739636e-03,
-+ 2.53948265960054347934e-03,
-+ 2.34541980906500472509e-03,
-+ 2.15016898534491464681e-03,
-+ 1.95384261769374848600e-03,
-+ 1.75655366171025071990e-03,
-+ 1.55841553443768969338e-03,
-+ 1.35954204925029724198e-03,
-+ 1.16004735056427139318e-03,
-+ 9.60045848410695946279e-04,
-+ 7.59652152908002432571e-04,
-+ 5.58981008670681638398e-04,
-+ 3.58147229193453995114e-04,
-+ 1.57265631246792758451e-04,
-+-4.35490306794674293363e-05,
-+-2.44182129843599320107e-04,
-+-4.44519232597282950344e-04,
-+-6.44446163569028346828e-04,
-+-8.43849070649477944230e-04,
-+-1.04261448974139812711e-03,
-+-1.24062940923833162771e-03,
-+-1.43778133419359788019e-03,
-+-1.63395835014485757766e-03,
-+-1.82904918655875121242e-03,
-+-2.02294327985625636140e-03,
-+-2.21553083598718210043e-03,
-+-2.40670289251588859908e-03,
-+-2.59635138018404895352e-03,
-+-2.78436918391547104032e-03,
-+-2.97065020322924595864e-03,
-+-3.15508941202569071979e-03,
-+-3.33758291771281195501e-03,
-+-3.51802801964081748518e-03,
-+-3.69632326680855837625e-03,
-+-3.87236851481334142661e-03,
-+-4.04606498200982094005e-03,
-+-4.21731530484743474818e-03,
-+-4.38602359235502371748e-03,
-+-4.55209547974291459105e-03,
-+-4.71543818109126672972e-03,
-+-4.87596054109631048268e-03,
-+-5.03357308584660798761e-03,
-+-5.18818807259795525266e-03,
-+-5.33971953852289266118e-03,
-+-5.48808334840551401146e-03,
-+-5.63319724125592186798e-03,
-+-5.77498087581854776390e-03,
-+-5.91335587494941708475e-03,
-+-6.04824586883698656764e-03,
-+-6.17957653704386423305e-03,
-+-6.30727564934618813858e-03,
-+-6.43127310534771529787e-03,
-+-6.55150097284682483151e-03,
-+-6.66789352493667251270e-03,
-+-6.78038727581722639598e-03,
-+-6.88892101529996712939e-03,
-+-6.99343584198691605586e-03,
-+-7.09387519510564119873e-03,
-+-7.19018488498349497839e-03,
-+-7.28231312214434444580e-03,
-+-7.37021054501293959582e-03,
-+-7.45383024621102448920e-03,
-+-7.53312779743236203556e-03,
-+-7.60806127288360129618e-03,
-+-7.67859127127740528906e-03,
-+-7.74468093636805719054e-03,
-+-7.80629597601776963056e-03,
-+-7.86340467978466871324e-03,
-+-7.91597793502309132752e-03,
-+-7.96398924148845367699e-03,
-+-8.00741472443937570003e-03,
-+-8.04623314623062815820e-03,
-+-8.08042591639200093179e-03,
-+-8.10997710018770794071e-03,
-+-8.13487342565317322896e-03,
-+-8.15510428910632897970e-03,
-+-8.17066175913122756669e-03,
-+-8.18154057903300313548e-03,
-+-8.18773816776408903950e-03,
-+-8.18925461932203113680e-03,
-+-8.18609270062076350982e-03,
-+-8.17825784783763644337e-03,
-+-8.16575816123921681411e-03,
-+-8.14860439849041627569e-03,
-+-8.12680996645165354408e-03,
-+-8.10039091146990027081e-03,
-+-8.06936590817051296876e-03,
-+-8.03375624675719754442e-03,
-+-7.99358581882871586932e-03,
-+-7.94888110172140179011e-03,
-+-7.89967114138754450403e-03,
-+-7.84598753382080051078e-03,
-+-7.78786440504017178632e-03,
-+-7.72533838964500462615e-03,
-+-7.65844860795453739877e-03,
-+-7.58723664174604933708e-03,
-+-7.51174650860678399383e-03,
-+-7.43202463491451133931e-03,
-+-7.34811982746492921986e-03,
-+-7.26008324376091473962e-03,
-+-7.16796836098336151433e-03,
-+-7.07183094366188418067e-03,
-+-6.97172901006430818793e-03,
-+-6.86772279732582834055e-03,
-+-6.75987472533817052023e-03,
-+-6.64824935942080145340e-03,
-+-6.53291337179604837682e-03,
-+-6.41393550189129496575e-03,
-+-6.29138651549170698635e-03,
-+-6.16533916276751359220e-03,
-+-6.03586813520128485228e-03,
-+-5.90305002144024624361e-03,
-+-5.76696326209861012679e-03,
-+-5.62768810353925751089e-03,
-+-5.48530655065889230504e-03,
-+-5.33990231870646887141e-03,
-+-5.19156078416207946574e-03,
-+-5.04036893470575456805e-03,
-+-4.88641531830454143442e-03,
-+-4.72978999144895145140e-03,
-+-4.57058446656796041330e-03,
-+-4.40889165865240156839e-03,
-+-4.24480583112071818697e-03,
-+-4.07842254095536725644e-03,
-+-3.90983858314355049030e-03,
-+-3.73915193445415730208e-03,
-+-3.56646169658344580969e-03,
-+-3.39186803870199487382e-03,
-+-3.21547213943741911138e-03,
-+-3.03737612832535950474e-03,
-+-2.85768302676162435152e-03,
-+-2.67649668849279489050e-03,
-+-2.49392173967607306759e-03,
-+-2.31006351854499665868e-03,
-+-2.12502801471515026521e-03,
-+-1.93892180816497236052e-03,
-+-1.75185200792604364207e-03,
-+-1.56392619051968551937e-03,
-+-1.37525233817362515544e-03,
-+-1.18593877685428585739e-03,
-+-9.96094114151082135611e-04,
-+-8.05827177048465143755e-04,
-+-6.15246949619699455385e-04,
-+-4.24462510679590970634e-04,
-+-2.33582971431131201836e-04,
-+-4.27174131418600218075e-05,
-+ 1.48025175115281873829e-04,
-+ 3.38535958618741729398e-04,
-+ 5.28706319021235741570e-04,
-+ 7.18427916200129542020e-04,
-+ 9.07592749900823655106e-04,
-+ 1.09609322113959862730e-03,
-+ 1.28382219332944988964e-03,
-+ 1.47067305309492128707e-03,
-+ 1.65653977074134688835e-03,
-+ 1.84131696034424701021e-03,
-+ 2.02489993942486920173e-03,
-+ 2.20718478817801639844e-03,
-+ 2.38806840821935862512e-03,
-+ 2.56744858081750862433e-03,
-+ 2.74522402457949956170e-03,
-+ 2.92129445255769277026e-03,
-+ 3.09556062874293989526e-03,
-+ 3.26792442391583577016e-03,
-+ 3.43828887082240275061e-03,
-+ 3.60655821864397721499e-03,
-+ 3.77263798673060360075e-03,
-+ 3.93643501756839753886e-03,
-+ 4.09785752894968862553e-03,
-+ 4.25681516531844095913e-03,
-+ 4.41321904826232503521e-03,
-+ 4.56698182612100180705e-03,
-+ 4.71801772268583795300e-03,
-+ 4.86624258496219565945e-03,
-+ 5.01157392996826912823e-03,
-+ 5.15393099054442353768e-03,
-+ 5.29323476014809113366e-03,
-+ 5.42940803660817671028e-03,
-+ 5.56237546481617214228e-03,
-+ 5.69206357833054472223e-03,
-+ 5.81840083986934729354e-03,
-+ 5.94131768067147035539e-03,
-+ 6.06074653870333594774e-03,
-+ 6.17662189569052801769e-03,
-+ 6.28888031295409682953e-03,
-+ 6.39746046603201657527e-03,
-+ 6.50230317806734740144e-03,
-+ 6.60335145194352116094e-03,
-+ 6.70055050115188084031e-03,
-+ 6.79384777937258772795e-03,
-+ 6.88319300875362728720e-03,
-+ 6.96853820687349644752e-03,
-+ 7.04983771237240302437e-03,
-+ 7.12704820923858520243e-03,
-+ 7.20012874973695923136e-03,
-+ 7.26904077596829921448e-03,
-+ 7.33374814004676342516e-03,
-+ 7.39421712288685674397e-03,
-+ 7.45041645158874780291e-03,
-+ 7.50231731541360375576e-03,
-+ 7.54989338034125958415e-03,
-+ 7.59312080220247119511e-03,
-+ 7.63197823837959577614e-03,
-+ 7.66644685807015349721e-03,
-+ 7.69651035110831445440e-03,
-+ 7.72215493534070089587e-03,
-+ 7.74336936255298931286e-03,
-+ 7.76014492294555859042e-03,
-+ 7.77247544815607566138e-03,
-+ 7.78035731282916958457e-03,
-+ 7.78378943473276123377e-03,
-+ 7.78277327342252397968e-03,
-+ 7.77731282745607217788e-03,
-+ 7.76741463015983343160e-03,
-+ 7.75308774395181993927e-03,
-+ 7.73434375322510497819e-03,
-+ 7.71119675579651046859e-03,
-+ 7.68366335292724762090e-03,
-+ 7.65176263792180597761e-03,
-+ 7.61551618331250072119e-03,
-+ 7.57494802663899804984e-03,
-+ 7.53008465483087727904e-03,
-+ 7.48095498720392076963e-03,
-+ 7.42759035708089564165e-03,
-+ 7.37002449204788440129e-03,
-+ 7.30829349285897541394e-03,
-+ 7.24243581100231150621e-03,
-+ 7.17249222494118019583e-03,
-+ 7.09850581504455676457e-03,
-+ 7.02052193722279248289e-03,
-+ 6.93858819528464596665e-03,
-+ 6.85275441203157895803e-03,
-+ 6.76307259910770459943e-03,
-+ 6.66959692562291064227e-03,
-+ 6.57238368556857608521e-03,
-+ 6.47149126404455293793e-03,
-+ 6.36698010231910756229e-03,
-+ 6.25891266174058436000e-03,
-+ 6.14735338652398939641e-03,
-+ 6.03236866543420662684e-03,
-+ 5.91402679238786036647e-03,
-+ 5.79239792599798089534e-03,
-+ 5.66755404808486160789e-03,
-+ 5.53956892117803134656e-03,
-+ 5.40851804503346585140e-03,
-+ 5.27447861219351547823e-03,
-+ 5.13752946261299917735e-03,
-+ 4.99775103738003996512e-03,
-+ 4.85522533155877469846e-03,
-+ 4.71003584618005094464e-03,
-+ 4.56226753940958736772e-03,
-+ 4.41200677692144428016e-03,
-+ 4.25934128150591128498e-03,
-+ 4.10436008194120516279e-03,
-+ 3.94715346115854636561e-03,
-+ 3.78781290373112009690e-03,
-+ 3.62643104271654281509e-03,
-+ 3.46310160588530037765e-03,
-+ 3.29791936136483157180e-03,
-+ 3.13098006273033763885e-03,
-+ 2.96238039357679455374e-03,
-+ 2.79221791160092977502e-03,
-+ 2.62059099222753267427e-03,
-+ 2.44759877181191781020e-03,
-+ 2.27334109045146740002e-03,
-+ 2.09791843443869838876e-03,
-+ 1.92143187839023546828e-03,
-+ 1.74398302708383490592e-03,
-+ 1.56567395703608109106e-03,
-+ 1.38660715785749919481e-03,
-+ 1.20688547341501702971e-03,
-+ 1.02661204283784578128e-03,
-+ 8.45890241399772859106e-04,
-+ 6.64823621311828307986e-04,
-+ 4.83515852459311156267e-04,
-+ 3.02070663116303390200e-04,
-+ 1.20591780673772898239e-04,
-+-6.08171275885414341889e-05,
-+-2.42052513649585246663e-04,
-+-4.23011007780704729672e-04,
-+-6.03589477433417857279e-04,
-+-7.83685085946226591899e-04,
-+-9.63195351037734169043e-04,
-+-1.14201820305262708236e-03,
-+-1.32005204292819870032e-03,
-+-1.49719579984629639312e-03,
-+-1.67334898854166894480e-03,
-+-1.84841176623110319682e-03,
-+-2.02228498913186371597e-03,
-+-2.19487026853879690913e-03,
-+-2.36607002642698479797e-03,
-+-2.53578755054913694555e-03,
-+-2.70392704899653085748e-03,
-+-2.87039370419339950197e-03,
-+-3.03509372629227804768e-03,
-+-3.19793440594374599878e-03,
-+-3.35882416640786475581e-03,
-+-3.51767261497890407207e-03,
-+-3.67439059369556366569e-03,
-+-3.82889022930704356340e-03,
-+-3.98108498246762219919e-03,
-+-4.13088969613195546721e-03,
-+-4.27822064312436464023e-03,
-+-4.42299557285530213491e-03,
-+-4.56513375715911651903e-03,
-+-4.70455603522795286209e-03,
-+-4.84118485761577625054e-03,
-+-4.97494432928909796621e-03,
-+-5.10576025170110612411e-03,
-+-5.23356016386354247483e-03,
-+-5.35827338239640901113e-03,
-+-5.47983104053158340957e-03,
-+-5.59816612604972611844e-03,
-+-5.71321351812927209768e-03,
-+-5.82491002308763421852e-03,
-+-5.93319440899438971249e-03,
-+-6.03800743913827410447e-03,
-+-6.13929190432966741947e-03,
-+-6.23699265402067378611e-03,
-+-6.33105662622569179826e-03,
-+-6.42143287622725950775e-03,
-+-6.50807260405082601412e-03,
-+-6.59092918069416680571e-03,
-+-6.66995817309711056670e-03,
-+-6.74511736783881075269e-03,
-+-6.81636679354884200688e-03,
-+-6.88366874202207389838e-03,
-+-6.94698778802482330014e-03,
-+-7.00629080778204620106e-03,
-+-7.06154699613719197271e-03,
-+-7.11272788237445920123e-03,
-+-7.15980734469658271213e-03,
-+-7.20276162335014690646e-03,
-+-7.24156933239256637991e-03,
-+-7.27621147009427024499e-03,
-+-7.30667142797224253986e-03,
-+-7.33293499844991664843e-03,
-+-7.35499038114030730118e-03,
-+-7.37282818775028547797e-03,
-+-7.38644144560350775219e-03,
-+-7.39582559978183007310e-03,
-+-7.40097851388428658315e-03,
-+-7.40190046940486859328e-03,
-+-7.39859416373013153989e-03,
-+-7.39106470675889026811e-03,
-+-7.37931961614715723613e-03,
-+-7.36336881118193880419e-03,
-+-7.34322460528822728437e-03,
-+-7.31890169717512584224e-03,
-+-7.29041716062642924934e-03,
-+-7.25779043294308163353e-03,
-+-7.22104330204492456807e-03,
-+-7.18019989224008559070e-03,
-+-7.13528664867118991161e-03,
-+-7.08633232044840466468e-03,
-+-7.03336794247966679700e-03,
-+-6.97642681600977102030e-03,
-+-6.91554448788011654620e-03,
-+-6.85075872852217854225e-03,
-+-6.78210950869807035341e-03,
-+-6.70963897500246285455e-03,
-+-6.63339142414092006877e-03,
-+-6.55341327599992442415e-03,
-+-6.46975304552541326253e-03,
-+-6.38246131342605754061e-03,
-+-6.29159069572002467574e-03,
-+-6.19719581214200551655e-03,
-+-6.09933325343054149464e-03,
-+-5.99806154751515805540e-03,
-+-5.89344112462262485069e-03,
-+-5.78553428132379601867e-03,
-+-5.67440514354219504439e-03,
-+-5.56011962854616095114e-03,
-+-5.44274540594681839611e-03,
-+-5.32235185772599213305e-03,
-+-5.19901003731562585258e-03,
-+-5.07279262775460568907e-03,
-+-4.94377389894712446911e-03,
-+-4.81202966404692660668e-03,
-+-4.67763723499383179960e-03,
-+-4.54067537722822531232e-03,
-+-4.40122426361012723806e-03,
-+-4.25936542756916083213e-03,
-+-4.11518171551450429035e-03,
-+-3.96875723852973399941e-03,
-+-3.82017732338308995885e-03,
-+-3.66952846288120431220e-03,
-+-3.51689826559387639163e-03,
-+-3.36237540498054293669e-03,
-+-3.20604956794714058416e-03,
-+-3.04801140286350535219e-03,
-+-2.88835246707072135566e-03,
-+-2.72716517391074315599e-03,
-+-2.56454273930563836012e-03,
-+-2.40057912792011364511e-03,
-+-2.23536899893777120732e-03,
-+-2.06900765148108206626e-03,
-+-1.90159096970791930900e-03,
-+-1.73321536761559679037e-03,
-+-1.56397773358425175305e-03,
-+-1.39397537469151283109e-03,
-+-1.22330596083027954082e-03,
-+-1.05206746866192031586e-03,
-+-8.80358125436270775623e-04,
-+-7.08276352712239277640e-04,
-+-5.35920710009009110958e-04,
-+-3.63389838422367814508e-04,
-+-1.90782404235573607330e-04,
-+-1.81970425606722737690e-05,
-+ 1.54267698961177570456e-04,
-+ 3.26513416366015622218e-04,
-+ 4.98441905449340362869e-04,
-+ 6.69955217690751999443e-04,
-+ 8.40955715991319185942e-04,
-+ 1.01134613018985628115e-03,
-+ 1.18102961232867528438e-03,
-+ 1.34990979163519928159e-03,
-+ 1.51789082919096310863e-03,
-+ 1.68487747225296133520e-03,
-+ 1.85077510820205867401e-03,
-+ 2.01548981808303672575e-03,
-+ 2.17892842970867023702e-03,
-+ 2.34099857029698189825e-03,
-+ 2.50160871861258458579e-03,
-+ 2.66066825658141034583e-03,
-+ 2.81808752035150444221e-03,
-+ 2.97377785076984252691e-03,
-+ 3.12765164324742489868e-03,
-+ 3.27962239698395725818e-03,
-+ 3.42960476352574062178e-03,
-+ 3.57751459462877022255e-03,
-+ 3.72326898939903325192e-03,
-+ 3.86678634068614995867e-03,
-+ 4.00798638070307827741e-03,
-+ 4.14679022584586980810e-03,
-+ 4.28312042068948461981e-03,
-+ 4.41690098113505479061e-03,
-+ 4.54805743668363141041e-03,
-+ 4.67651687181444911112e-03,
-+ 4.80220796644356944655e-03,
-+ 4.92506103544097621760e-03,
-+ 5.04500806718418456226e-03,
-+ 5.16198276112742483052e-03,
-+ 5.27592056436465041414e-03,
-+ 5.38675870716774727459e-03,
-+ 5.49443623747928808210e-03,
-+ 5.59889405434115926957e-03,
-+ 5.70007494024133646443e-03,
-+ 5.79792359236085651231e-03,
-+ 5.89238665270259628914e-03,
-+ 5.98341273708859113650e-03,
-+ 6.07095246300716831489e-03,
-+ 6.15495847629641840842e-03,
-+ 6.23538547664926560282e-03,
-+ 6.31219024192670834228e-03,
-+ 6.38533165126559023456e-03,
-+ 6.45477070696955871482e-03,
-+ 6.52047055517085416554e-03,
-+ 6.58239650525249079399e-03,
-+ 6.64051604802040618125e-03,
-+ 6.69479887261659797199e-03,
-+ 6.74521688216371366476e-03,
-+ 6.79174420813415374160e-03,
-+ 6.83435722343555315111e-03,
-+ 6.87303455420689574096e-03,
-+ 6.90775709031867489462e-03,
-+ 6.93850799457300902728e-03,
-+ 6.96527271059846700418e-03,
-+ 6.98803896943703088673e-03,
-+ 7.00679679481976212113e-03,
-+ 7.02153850712936879186e-03,
-+ 7.03225872604836682589e-03,
-+ 7.03895437189253850990e-03,
-+ 7.04162466562946627591e-03,
-+ 7.04027112758361280076e-03,
-+ 7.03489757482926060528e-03,
-+ 7.02551011727416043623e-03,
-+ 7.01211715243688429866e-03,
-+ 6.99472935892183310391e-03,
-+ 6.97335968859667636177e-03,
-+ 6.94802335747783921666e-03,
-+ 6.91873783532993662237e-03,
-+ 6.88552283398612303966e-03,
-+ 6.84840029439715090170e-03,
-+ 6.80739437241735696749e-03,
-+ 6.76253142333664569730e-03,
-+ 6.71383998516838706450e-03,
-+ 6.66135076070345499843e-03,
-+ 6.60509659834187211336e-03,
-+ 6.54511247171371459558e-03,
-+ 6.48143545810195200602e-03,
-+ 6.41410471568024109779e-03,
-+ 6.34316145958003368976e-03,
-+ 6.26864893680093449718e-03,
-+ 6.19061239997995525763e-03,
-+ 6.10909908003542511529e-03,
-+ 6.02415815770170753884e-03,
-+ 5.93584073397201983369e-03,
-+ 5.84419979946794454495e-03,
-+ 5.74929020275181338478e-03,
-+ 5.65116861760294342948e-03,
-+ 5.54989350927625503529e-03,
-+ 5.44552509976333788677e-03,
-+ 5.33812533207639414862e-03,
-+ 5.22775783357706802512e-03,
-+ 5.11448787837056554478e-03,
-+ 4.99838234878814680062e-03,
-+ 4.87950969598033648666e-03,
-+ 4.75793989964418302663e-03,
-+ 4.63374442690764765801e-03,
-+ 4.50699619039651548646e-03,
-+ 4.37776950550668349227e-03,
-+ 4.24614004690850900536e-03,
-+ 4.11218480430692711475e-03,
-+ 3.97598203748505876071e-03,
-+ 3.83761123065512682953e-03,
-+ 3.69715304614688265381e-03,
-+ 3.55468927745570878116e-03,
-+ 3.41030280168198429019e-03,
-+ 3.26407753138687091454e-03,
-+ 3.11609836589335845169e-03,
-+ 2.96645114206062080267e-03,
-+ 2.81522258455971620753e-03,
-+ 2.66250025568077076238e-03,
-+ 2.50837250469876198167e-03,
-+ 2.35292841682855887256e-03,
-+ 2.19625776179852754202e-03,
-+ 2.03845094207133958539e-03,
-+ 1.87959894074250246331e-03,
-+ 1.71979326914796590980e-03,
-+ 1.55912591420826569452e-03,
-+ 1.39768928554081183456e-03,
-+ 1.23557616237141834267e-03,
-+ 1.07287964027444793387e-03,
-+ 9.09693077772073983855e-04,
-+ 7.46110042824598817396e-04,
-+ 5.82224259240568249411e-04,
-+ 4.18129553038750639577e-04,
-+ 2.53919798792089188456e-04,
-+ 8.96888659844675517445e-05,
-+-7.44694345896905772258e-05,
-+-2.38461404350935065157e-04,
-+-4.02193510356873369562e-04,
-+-5.65572438589027263849e-04,
-+-7.28505147074144480956e-04,
-+-8.90898918810926966801e-04,
-+-1.05266141447140325338e-03,
-+-1.21370072484502889917e-03,
-+-1.37392542300045520862e-03,
-+-1.53324461613069552152e-03,
-+-1.69156799705494180486e-03,
-+-1.84880589534694829770e-03,
-+-2.00486932806183924816e-03,
-+-2.15967005003114657924e-03,
-+-2.31312060369968800280e-03,
-+-2.46513436847466778021e-03,
-+-2.61562560955978882365e-03,
-+-2.76450952624671683969e-03,
-+-2.91170229963722427408e-03,
-+-3.05712113976792237979e-03,
-+-3.20068433211290236454e-03,
-+-3.34231128343639950426e-03,
-+-3.48192256697167851556e-03,
-+-3.61943996689886252766e-03,
-+-3.75478652209826086611e-03,
-+-3.88788656915454566149e-03,
-+-4.01866578458679943320e-03,
-+-4.14705122628237707327e-03,
-+-4.27297137411052248279e-03,
-+-4.39635616969335368820e-03,
-+-4.51713705531228693069e-03,
-+-4.63524701192860166116e-03,
-+-4.75062059629599835880e-03,
-+-4.86319397714623982004e-03,
-+-4.97290497042671315875e-03,
-+-5.07969307357067009767e-03,
-+-5.18349949878208187543e-03,
-+-5.28426720531614563942e-03,
-+-5.38194093073713492048e-03,
-+-5.47646722113816729338e-03,
-+-5.56779446030545265012e-03,
-+-5.65587289781075818612e-03,
-+-5.74065467601772051742e-03,
-+-5.82209385598695533526e-03,
-+-5.90014644226589859283e-03,
-+-5.97477040655035752242e-03,
-+-6.04592571020508891960e-03,
-+-6.11357432563106647366e-03,
-+-6.17768025646842598719e-03,
-+-6.23820955662453009022e-03,
-+-6.29513034811653680867e-03,
-+-6.34841283772002301644e-03,
-+-6.39802933241444878737e-03,
-+-6.44395425361771970879e-03,
-+-6.48616415020282759824e-03,
-+-6.52463771028981894679e-03,
-+-6.55935577180693108607e-03,
-+-6.59030133181688366345e-03,
-+-6.61745955460281767846e-03,
-+-6.64081777851058003420e-03,
-+-6.66036552154464483316e-03,
-+-6.67609448571504417863e-03,
-+-6.68799856013396580579e-03,
-+-6.69607382286100619867e-03,
-+-6.70031854149736628978e-03,
-+-6.70073317252893423113e-03,
-+-6.69732035942032649656e-03,
-+-6.69008492946125080808e-03,
-+-6.67903388936833767447e-03,
-+-6.66417641964580503844e-03,
-+-6.64552386770900921364e-03,
-+-6.62308973977570117353e-03,
-+-6.59688969153084895508e-03,
-+-6.56694151757089734922e-03,
-+-6.53326513963461280587e-03,
-+-6.49588259362816715370e-03,
-+-6.45481801545267231540e-03,
-+-6.41009762564318658074e-03,
-+-6.36174971282886698998e-03,
-+-6.30980461602472040422e-03,
-+-6.25429470576554895345e-03,
-+-6.19525436409436129626e-03,
-+-6.13271996341689488996e-03,
-+-6.06672984423554158967e-03,
-+-5.99732429177634272788e-03,
-+-5.92454551152269380532e-03,
-+-5.84843760367088558172e-03,
-+-5.76904653652344102249e-03,
-+-5.68642011883526560245e-03,
-+-5.60060797112928252656e-03,
-+-5.51166149599965557448e-03,
-+-5.41963384741940817219e-03,
-+-5.32457989907073915570e-03,
-+-5.22655621171772520606e-03,
-+-5.12562099963942419123e-03,
-+-5.02183409614448406089e-03,
-+-4.91525691818681109702e-03,
-+-4.80595243010374650883e-03,
-+-4.69398510649735815209e-03,
-+-4.57942089428194781808e-03,
-+-4.46232717391857429401e-03,
-+-4.34277271986037178425e-03,
-+-4.22082766023175893350e-03,
-+-4.09656343576443940369e-03,
-+-3.97005275801442028549e-03,
-+-3.84136956688634241541e-03,
-+-3.71058898748600606704e-03,
-+-3.57778728632999511172e-03,
-+-3.44304182693580453772e-03,
-+-3.30643102481900002035e-03,
-+-3.16803430192340654270e-03,
-+-3.02793204051044796687e-03,
-+-2.88620553653542132044e-03,
-+-2.74293695253627518860e-03,
-+-2.59820927006318425079e-03,
-+-2.45210624167601677625e-03,
-+-2.30471234253809770590e-03,
-+-2.15611272163192388071e-03,
-+-2.00639315262918054017e-03,
-+-1.85563998443917131317e-03,
-+-1.70394009146592178422e-03,
-+-1.55138082360318694218e-03,
-+-1.39804995599510811267e-03,
-+-1.24403563859131600054e-03,
-+-1.08942634552675727232e-03,
-+-9.34310824353430722893e-04,
-+-7.78778045154488265424e-04,
-+-6.22917149569355557345e-04,
-+-4.66817399759168381000e-04,
-+-3.10568127341177748629e-04,
-+-1.54258682322715390484e-04,
-+ 2.02161793800758804308e-06,
-+ 1.58183539713823383393e-04,
-+ 3.14137983804192602675e-04,
-+ 4.69796036316565991924e-04,
-+ 6.25069019303870366394e-04,
-+ 7.79868541228004980535e-04,
-+ 9.34106547223279145772e-04,
-+ 1.08769536912991875675e-03,
-+ 1.24054777526851588154e-03,
-+ 1.39257701992830692887e-03,
-+ 1.54369689254121996921e-03,
-+ 1.69382176651257680342e-03,
-+ 1.84286664768265498297e-03,
-+ 1.99074722239030730067e-03,
-+ 2.13737990511212458747e-03,
-+ 2.28268188564996954079e-03,
-+ 2.42657117584086636994e-03,
-+ 2.56896665576163141242e-03,
-+ 2.70978811940393539068e-03,
-+ 2.84895631979290410787e-03,
-+ 2.98639301352399176917e-03,
-+ 3.12202100469403682342e-03,
-+ 3.25576418820130086482e-03,
-+ 3.38754759238860721909e-03,
-+ 3.51729742100961384824e-03,
-+ 3.64494109449081107530e-03,
-+ 3.77040729046844522859e-03,
-+ 3.89362598357706262905e-03,
-+ 4.01452848446753798178e-03,
-+ 4.13304747803329777800e-03,
-+ 4.24911706082250345551e-03,
-+ 4.36267277761673982761e-03,
-+ 4.47365165715500091859e-03,
-+ 4.58199224698366443242e-03,
-+ 4.68763464741256234702e-03,
-+ 4.79052054456022714107e-03,
-+ 4.89059324246701558614e-03,
-+ 4.98779769426149852812e-03,
-+ 5.08208053236177022260e-03,
-+ 5.17339009769468647498e-03,
-+ 5.26167646791786663280e-03,
-+ 5.34689148462896227804e-03,
-+ 5.42898877954677526458e-03,
-+ 5.50792379965109931556e-03,
-+ 5.58365383126675513675e-03,
-+ 5.65613802307947735604e-03,
-+ 5.72533740807081026336e-03,
-+ 5.79121492436091966222e-03,
-+ 5.85373543494751170241e-03,
-+ 5.91286574633094908632e-03,
-+ 5.96857462601572963390e-03,
-+ 6.02083281887862576537e-03,
-+ 6.06961306239588074124e-03,
-+ 6.11489010072096151466e-03,
-+ 6.15664069760550429489e-03,
-+ 6.19484364815777593938e-03,
-+ 6.22947978943221101350e-03,
-+ 6.26053200984478218361e-03,
-+ 6.28798525741010132240e-03,
-+ 6.31182654679610100068e-03,
-+ 6.33204496519319988412e-03,
-+ 6.34863167699579490633e-03,
-+ 6.36157992729387798680e-03,
-+ 6.37088504417378069522e-03,
-+ 6.37654443982793583956e-03,
-+ 6.37855761047346776077e-03,
-+ 6.37692613508076319023e-03,
-+ 6.37165367291377907760e-03,
-+ 6.36274595988404155500e-03,
-+ 6.35021080372164415523e-03,
-+ 6.33405807796656641212e-03,
-+ 6.31429971478498618803e-03,
-+ 6.29094969661516800058e-03,
-+ 6.26402404664898240089e-03,
-+ 6.23354081815498742292e-03,
-+ 6.19952008265027120631e-03,
-+ 6.16198391692862612601e-03,
-+ 6.12095638895326834422e-03,
-+ 6.07646354262293339477e-03,
-+ 6.02853338142123572341e-03,
-+ 5.97719585095891989962e-03,
-+ 5.92248282042035986694e-03,
-+ 5.86442806292514912103e-03,
-+ 5.80306723481761356498e-03,
-+ 5.73843785389547937636e-03,
-+ 5.67057927659296145267e-03,
-+ 5.59953267413014401516e-03,
-+ 5.52534100764390679467e-03,
-+ 5.44804900231556955836e-03,
-+ 5.36770312051036008194e-03,
-+ 5.28435153394469885046e-03,
-+ 5.19804409489867894761e-03,
-+ 5.10883230648978472338e-03,
-+ 5.01676929202641425087e-03,
-+ 4.92190976345897174271e-03,
-+ 4.82430998894739331007e-03,
-+ 4.72402775956395210022e-03,
-+ 4.62112235515180647810e-03,
-+ 4.51565450935827780027e-03,
-+ 4.40768637386434840308e-03,
-+ 4.29728148183127715148e-03,
-+ 4.18450471058511973971e-03,
-+ 4.06942224356152213588e-03,
-+ 3.95210153153399603582e-03,
-+ 3.83261125314650298243e-03,
-+ 3.71102127477429544200e-03,
-+ 3.58740260973707415088e-03,
-+ 3.46182737688722997824e-03,
-+ 3.33436875859757829790e-03,
-+ 3.20510095817370162935e-03,
-+ 3.07409915671442122986e-03,
-+ 2.94143946944645578653e-03,
-+ 2.80719890155818000560e-03,
-+ 2.67145530355801606032e-03,
-+ 2.53428732618405597871e-03,
-+ 2.39577437488870843840e-03,
-+ 2.25599656392876232389e-03,
-+ 2.11503467008288762591e-03,
-+ 1.97297008602663600726e-03,
-+ 1.82988477338951447716e-03,
-+ 1.68586121552325774765e-03,
-+ 1.54098237000600303548e-03,
-+ 1.39533162091338329772e-03,
-+ 1.24899273087909832951e-03,
-+ 1.10204979297680240487e-03,
-+ 9.54587182448630219150e-04,
-+ 8.06689508308766145897e-04,
-+ 6.58441564849216722996e-04,
-+ 5.09928283076855021032e-04,
-+ 3.61234682107735086132e-04,
-+ 2.12445820547849437534e-04,
-+ 6.36467478874062951924e-05,
-+-8.50775440627651754989e-05,
-+-2.33642169667408998316e-04,
-+-3.81962397863639291536e-04,
-+-5.29953700435123313019e-04,
-+-6.77531800134304070492e-04,
-+-8.24612718624688793498e-04,
-+-9.71112824217015813653e-04,
-+-1.11694887937219939321e-03,
-+-1.26203808794284771423e-03,
-+-1.40629814212836251781e-03,
-+-1.54964726911566716763e-03,
-+-1.69200427737972594958e-03,
-+-1.83328860261746241604e-03,
-+-1.97342035328964800558e-03,
-+-2.11232035574377557952e-03,
-+-2.24991019889414630914e-03,
-+-2.38611227843281599459e-03,
-+-2.52084984054647175469e-03,
-+-2.65404702511572903115e-03,
-+-2.78562890837174507302e-03,
-+-2.91552154498523870621e-03,
-+-3.04365200956643270486e-03,
-+-3.16994843755161225321e-03,
-+-3.29434006545274672348e-03,
-+-3.41675727044862646842e-03,
-+-3.53713160929501439778e-03,
-+-3.65539585653244531588e-03,
-+-3.77148404196936751220e-03,
-+-3.88533148742125408054e-03,
-+-3.99687484268407104693e-03,
-+-4.10605212072268164342e-03,
-+-4.21280273205412725268e-03,
-+-4.31706751830841783946e-03,
-+-4.41878878494509144681e-03,
-+-4.51791033311113327670e-03,
-+-4.61437749061991125260e-03,
-+-4.70813714203596311164e-03,
-+-4.79913775784764073951e-03,
-+-4.88732942271308690857e-03,
-+-4.97266386276206447808e-03,
-+-5.05509447194163030054e-03,
-+-5.13457633738856073641e-03,
-+-5.21106626381633106920e-03,
-+-5.28452279690304685400e-03,
-+-5.35490624566773484178e-03,
-+-5.42217870382271597413e-03,
-+-5.48630407009116985440e-03,
-+-5.54724806747858376760e-03,
-+-5.60497826148812720165e-03,
-+-5.65946407726994771964e-03,
-+-5.71067681569638677108e-03,
-+-5.75858966835306532173e-03,
-+-5.80317773143970965649e-03,
-+-5.84441801857288768113e-03,
-+-5.88228947248397703723e-03,
-+-5.91677297560679570088e-03,
-+-5.94785135954983314177e-03,
-+-5.97550941344791256699e-03,
-+-5.99973389119013312404e-03,
-+-6.02051351752001286111e-03,
-+-6.03783899300595460619e-03,
-+-6.05170299787924879931e-03,
-+-6.06210019473904081905e-03,
-+-6.06902723012296262811e-03,
-+-6.07248273494360914920e-03,
-+-6.07246732379158708770e-03,
-+-6.06898359310613279977e-03,
-+-6.06203611821533403653e-03,
-+-6.05163144924839458555e-03,
-+-6.03777810592327594807e-03,
-+-6.02048657121333555264e-03,
-+-5.99976928389753336873e-03,
-+-5.97564062999924889424e-03,
-+-5.94811693311943397167e-03,
-+-5.91721644367056848202e-03,
-+-5.88295932701797356923e-03,
-+-5.84536765053670151482e-03,
-+-5.80446536959165673014e-03,
-+-5.76027831244998057142e-03,
-+-5.71283416413511518916e-03,
-+-5.66216244923269020756e-03,
-+-5.60829451365809760616e-03,
-+-5.55126350539837404990e-03,
-+-5.49110435423857436155e-03,
-+-5.42785375048610279486e-03,
-+-5.36155012270514343825e-03,
-+-5.29223361447536504165e-03,
-+-5.21994606018790722329e-03,
-+-5.14473095989484690421e-03,
-+-5.06663345322490039219e-03,
-+-4.98570029238308044806e-03,
-+-4.90197981424923389521e-03,
-+-4.81552191159239240809e-03,
-+-4.72637800341784222735e-03,
-+-4.63460100446517250100e-03,
-+-4.54024529387421233589e-03,
-+-4.44336668303834617794e-03,
-+-4.34402238266374564335e-03,
-+-4.24227096905429278129e-03,
-+-4.13817234964060018387e-03,
-+-4.03178772777628563473e-03,
-+-3.92317956681902026833e-03,
-+-3.81241155351897623854e-03,
-+-3.69954856073620007989e-03,
-+-3.58465660950824235517e-03,
-+-3.46780283048990500827e-03,
-+-3.34905542478881141852e-03,
-+-3.22848362421805775910e-03,
-+-3.10615765099010905648e-03,
-+-2.98214867687515662251e-03,
-+-2.85652878184750828178e-03,
-+-2.72937091224384606111e-03,
-+-2.60074883845852087780e-03,
-+-2.47073711219897686545e-03,
-+-2.33941102332713016590e-03,
-+-2.20684655631157985653e-03,
-+-2.07312034631475673035e-03,
-+-1.93830963494213536630e-03,
-+-1.80249222567671618656e-03,
-+-1.66574643902788789573e-03,
-+-1.52815106741598333122e-03,
-+-1.38978532982251450426e-03,
-+-1.25072882622996486672e-03,
-+-1.11106149187807385498e-03,
-+-9.70863551362263440571e-04,
-+-8.30215472601808523491e-04,
-+-6.89197920702451245073e-04,
-+-5.47891711741154406080e-04,
-+-4.06377766498845327103e-04,
-+-2.64737064168374847291e-04,
-+-1.23050596061868546460e-04,
-+ 1.86006806518760801038e-05,
-+ 1.60135889158271910344e-04,
-+ 3.01474279126209918772e-04,
-+ 4.42535272731790253753e-04,
-+ 5.83238510548296702242e-04,
-+ 7.23503897278638991204e-04,
-+ 8.63251647300782411557e-04,
-+ 1.00240233000493386348e-03,
-+ 1.14087691489260295227e-03,
-+ 1.27859681641420436932e-03,
-+ 1.41548393851902284610e-03,
-+ 1.55146071889291931739e-03,
-+ 1.68645017285750319601e-03,
-+ 1.82037593690758878195e-03,
-+ 1.95316231186109341353e-03,
-+ 2.08473430559764265693e-03,
-+ 2.21501767536104888362e-03,
-+ 2.34393896960388269796e-03,
-+ 2.47142556934688362516e-03,
-+ 2.59740572903363739141e-03,
-+ 2.72180861685599774502e-03,
-+ 2.84456435452711767914e-03,
-+ 2.96560405648055866804e-03,
-+ 3.08485986847369889757e-03,
-+ 3.20226500557270433653e-03,
-+ 3.31775378949923562683e-03,
-+ 3.43126168531712261514e-03,
-+ 3.54272533743877921647e-03,
-+ 3.65208260493136678895e-03,
-+ 3.75927259610300519913e-03,
-+ 3.86423570235000643155e-03,
-+ 3.96691363124569706944e-03,
-+ 4.06724943885357868856e-03,
-+ 4.16518756124574941052e-03,
-+ 4.26067384521043503870e-03,
-+ 4.35365557813031326534e-03,
-+ 4.44408151701685457530e-03,
-+ 4.53190191668225664939e-03,
-+ 4.61706855703673899743e-03,
-+ 4.69953476949353052966e-03,
-+ 4.77925546246841040365e-03,
-+ 4.85618714595966241565e-03,
-+ 4.93028795519530847746e-03,
-+ 5.00151767333411288730e-03,
-+ 5.06983775320908342660e-03,
-+ 5.13521133810092809957e-03,
-+ 5.19760328153088136532e-03,
-+ 5.25698016606174298865e-03,
-+ 5.31331032109820002030e-03,
-+ 5.36656383967527069595e-03,
-+ 5.41671259422796692179e-03,
-+ 5.46373025133245135421e-03,
-+ 5.50759228541199737789e-03,
-+ 5.54827599139992924671e-03,
-+ 5.58576049635388805631e-03,
-+ 5.62002677001447251137e-03,
-+ 5.65105763430437738060e-03,
-+ 5.67883777176233280753e-03,
-+ 5.70335373290816339403e-03,
-+ 5.72459394253559995802e-03,
-+ 5.74254870493012391924e-03,
-+ 5.75721020800935671946e-03,
-+ 5.76857252638474007206e-03,
-+ 5.77663162334343931875e-03,
-+ 5.78138535175009606049e-03,
-+ 5.78283345386879782390e-03,
-+ 5.78097756010611391053e-03,
-+ 5.77582118667672138324e-03,
-+ 5.76736973219383122768e-03,
-+ 5.75563047318704626432e-03,
-+ 5.74061255855102051116e-03,
-+ 5.72232700292902695532e-03,
-+ 5.70078667903584773713e-03,
-+ 5.67600630892513106918e-03,
-+ 5.64800245420722570738e-03,
-+ 5.61679350522356971021e-03,
-+ 5.58239966918474238289e-03,
-+ 5.54484295727977402612e-03,
-+ 5.50414717076463597123e-03,
-+ 5.46033788603883952356e-03,
-+ 5.41344243871932310347e-03,
-+ 5.36348990672138540431e-03,
-+ 5.31051109235732010649e-03,
-+ 5.25453850346318130510e-03,
-+ 5.19560633356600486132e-03,
-+ 5.13375044110239622114e-03,
-+ 5.06900832770268514743e-03,
-+ 5.00141911555166893133e-03,
-+ 4.93102352384138312158e-03,
-+ 4.85786384432904984332e-03,
-+ 4.78198391601513880800e-03,
-+ 4.70342909895635295087e-03,
-+ 4.62224624722982427999e-03,
-+ 4.53848368106374473741e-03,
-+ 4.45219115815146792431e-03,
-+ 4.36341984416594753926e-03,
-+ 4.27222228249233334368e-03,
-+ 4.17865236319510044427e-03,
-+ 4.08276529124071765886e-03,
-+ 3.98461755399166870500e-03,
-+ 3.88426688799294646953e-03,
-+ 3.78177224506918985281e-03,
-+ 3.67719375775360296163e-03,
-+ 3.57059270406730406081e-03,
-+ 3.46203147167215485522e-03,
-+ 3.35157352141467277523e-03,
-+ 3.23928335028530935830e-03,
-+ 3.12522645381305575613e-03,
-+ 3.00946928791781488297e-03,
-+ 2.89207923024227455538e-03,
-+ 2.77312454098672077352e-03,
-+ 2.65267432326827179087e-03,
-+ 2.53079848302840103302e-03,
-+ 2.40756768851164678139e-03,
-+ 2.28305332933951632760e-03,
-+ 2.15732747520132111738e-03,
-+ 2.03046283418941569954e-03,
-+ 1.90253271079930631401e-03,
-+ 1.77361096362036439224e-03,
-+ 1.64377196274210417119e-03,
-+ 1.51309054689958370071e-03,
-+ 1.38164198038311938042e-03,
-+ 1.24950190973654160810e-03,
-+ 1.11674632027006139751e-03,
-+ 9.83451492411185164075e-04,
-+ 8.49693957919833188497e-04,
-+ 7.15550455992367039418e-04,
-+ 5.81097889279802068928e-04,
-+ 4.46413279844896004802e-04,
-+ 3.11573725084547952131e-04,
-+ 1.76656353640993331018e-04,
-+ 4.17382813286828151375e-05,
-+-9.31034328996876200512e-05,
-+-2.27791830921029737336e-04,
-+-3.62250099320780654093e-04,
-+-4.96401613154530668010e-04,
-+-6.30169979571938514672e-04,
-+-7.63479081274113916857e-04,
-+-8.96253119781942569726e-04,
-+-1.02841665849006422100e-03,
-+-1.15989466548260746100e-03,
-+-1.29061255608525294117e-03,
-+-1.42049623513107697685e-03,
-+-1.54947213891506270153e-03,
-+-1.67746727681411891310e-03,
-+-1.80440927254837480201e-03,
-+-1.93022640506252275011e-03,
-+-2.05484764900032337159e-03,
-+-2.17820271475373814299e-03,
-+-2.30022208806093461653e-03,
-+-2.42083706913298482913e-03,
-+-2.53997981128547666713e-03,
-+-2.65758335905543320934e-03,
-+-2.77358168577903838048e-03,
-+-2.88790973061320895704e-03,
-+-3.00050343497665914297e-03,
-+-3.11129977839202497697e-03,
-+-3.22023681370834334581e-03,
-+-3.32725370168476981825e-03,
-+-3.43229074491519740159e-03,
-+-3.53528942107627329461e-03,
-+-3.63619241547926243599e-03,
-+-3.73494365290821112024e-03,
-+-3.83148832872629279550e-03,
-+-3.92577293923390257396e-03,
-+-4.01774531126125340058e-03,
-+-4.10735463097804467947e-03,
-+-4.19455147190698693360e-03,
-+-4.27928782212313139899e-03,
-+-4.36151711062546069975e-03,
-+-4.44119423286594081079e-03,
-+-4.51827557542231091070e-03,
-+-4.59271903980044363808e-03,
-+-4.66448406535440850823e-03,
-+-4.73353165131090974221e-03,
-+-4.79982437788653917843e-03,
-+-4.86332642648651045092e-03,
-+-4.92400359897397343206e-03,
-+-4.98182333599925253331e-03,
-+-5.03675473437993799497e-03,
-+-5.08876856352186244387e-03,
-+-5.13783728087296304166e-03,
-+-5.18393504640126713545e-03,
-+-5.22703773609024553021e-03,
-+-5.26712295444329344635e-03,
-+-5.30417004599272740029e-03,
-+-5.33816010580571553151e-03,
-+-5.36907598898301533646e-03,
-+-5.39690231914530423041e-03,
-+-5.42162549590326486165e-03,
-+-5.44323370130771460457e-03,
-+-5.46171690527704530721e-03,
-+-5.47706686999947442440e-03,
-+-5.48927715330848470243e-03,
-+-5.49834311103008545329e-03,
-+-5.50426189830165689398e-03,
-+-5.50703246986195688040e-03,
-+-5.50665557931325801155e-03,
-+-5.50313377735658394718e-03,
-+-5.49647140900193838936e-03,
-+-5.48667460975575324578e-03,
-+-5.47375130078852495386e-03,
-+-5.45771118308641025457e-03,
-+-5.43856573059035668105e-03,
-+-5.41632818232791902330e-03,
-+-5.39101353354278986507e-03,
-+-5.36263852582782342415e-03,
-+-5.33122163626806137848e-03,
-+-5.29678306560053737545e-03,
-+-5.25934472539848259925e-03,
-+-5.21893022428794508411e-03,
-+-5.17556485320526133559e-03,
-+-5.12927556970489868793e-03,
-+-5.08009098132678089954e-03,
-+-5.02804132803355476738e-03,
-+-4.97315846372916019885e-03,
-+-4.91547583686848584689e-03,
-+-4.85502847017122741990e-03,
-+-4.79185293945155309919e-03,
-+-4.72598735157650148841e-03,
-+-4.65747132156595338576e-03,
-+-4.58634594884884446570e-03,
-+-4.51265379268859113254e-03,
-+-4.43643884679333078136e-03,
-+-4.35774651312552125521e-03,
-+-4.27662357492689104710e-03,
-+-4.19311816897408994737e-03,
-+-4.10727975708242813713e-03,
-+-4.01915909687342119000e-03,
-+-3.92880821182439374240e-03,
-+-3.83628036061678823893e-03,
-+-3.74163000580234744730e-03,
-+-3.64491278180403876011e-03,
-+-3.54618546227291209921e-03,
-+-3.44550592681680360740e-03,
-+-3.34293312712312645080e-03,
-+-3.23852705249417973515e-03,
-+-3.13234869481537631791e-03,
-+-3.02446001297665325452e-03,
-+-2.91492389676846486157e-03,
-+-2.80380413027231812501e-03,
-+-2.69116535476798942814e-03,
-+-2.57707303117848647925e-03,
-+-2.46159340207523572031e-03,
-+-2.34479345326362147856e-03,
-+-2.22674087497457245249e-03,
-+-2.10750402268079263524e-03,
-+-1.98715187756321907606e-03,
-+-1.86575400664854376166e-03,
-+-1.74338052264242380010e-03,
-+-1.62010204348048895799e-03,
-+-1.49598965162051219212e-03,
-+-1.37111485310015116836e-03,
-+-1.24554953638238521431e-03,
-+-1.11936593101341890638e-03,
-+-9.92636566116329244550e-04,
-+-8.65434228744452519431e-04,
-+-7.37831922117954900481e-04,
-+-6.09902823768643741718e-04,
-+-4.81720243615482051399e-04,
-+-3.53357581995873909833e-04,
-+-2.24888287676710109473e-04,
-+-9.63858158682636068570e-05,
-+ 3.20764137345539367911e-05,
-+ 1.60425058858032064824e-04,
-+ 2.88586896482438703439e-04,
-+ 4.16488864574161247057e-04,
-+ 5.44058103695506324778e-04,
-+ 6.71221998467804803826e-04,
-+ 7.97908218864774886926e-04,
-+ 9.24044761311549125993e-04,
-+ 1.04955998956755358967e-03,
-+ 1.17438267536891884947e-03,
-+ 1.29844203880782817391e-03,
-+ 1.42166778842579637730e-03,
-+ 1.54399016099864027675e-03,
-+ 1.66533996098952152137e-03,
-+ 1.78564859964935114707e-03,
-+ 1.90484813374091114212e-03,
-+ 2.02287130386640369786e-03,
-+ 2.13965157237518523517e-03,
-+ 2.25512316083227538563e-03,
-+ 2.36922108702373405281e-03,
-+ 2.48188120148188241104e-03,
-+ 2.59304022350648980672e-03,
-+ 2.70263577666357253729e-03,
-+ 2.81060642374125237153e-03,
-+ 2.91689170114364185876e-03,
-+ 3.02143215270252868399e-03,
-+ 3.12416936288921476272e-03,
-+ 3.22504598940713581648e-03,
-+ 3.32400579514743541032e-03,
-+ 3.42099367948939334788e-03,
-+ 3.51595570892898222001e-03,
-+ 3.60883914701814589171e-03,
-+ 3.69959248359746136620e-03,
-+ 3.78816546330745101967e-03,
-+ 3.87450911336219023379e-03,
-+ 3.95857577056929390430e-03,
-+ 4.04031910758215120211e-03,
-+ 4.11969415836998739677e-03,
-+ 4.19665734289097897003e-03,
-+ 4.27116649095604910408e-03,
-+ 4.34318086526945621589e-03,
-+ 4.41266118363398390095e-03,
-+ 4.47956964030860743664e-03,
-+ 4.54386992650717726205e-03,
-+ 4.60552725002660520714e-03,
-+ 4.66450835399471325227e-03,
-+ 4.72078153472709621807e-03,
-+ 4.77431665868354501020e-03,
-+ 4.82508517851539756732e-03,
-+ 4.87306014819507884311e-03,
-+ 4.91821623721916140887e-03,
-+ 4.96052974387923596711e-03,
-+ 4.99997860759186524976e-03,
-+ 5.03654242028247437629e-03,
-+ 5.07020243681679735892e-03,
-+ 5.10094158447498870201e-03,
-+ 5.12874447146327485519e-03,
-+ 5.15359739445947657999e-03,
-+ 5.17548834518845573410e-03,
-+ 5.19440701602455999486e-03,
-+ 5.21034480461868027695e-03,
-+ 5.22329481754779667568e-03,
-+ 5.23325187298585500772e-03,
-+ 5.24021250239507709739e-03,
-+ 5.24417495123738995610e-03,
-+ 5.24513917870653937486e-03,
-+ 5.24310685648145778648e-03,
-+ 5.23808136650251530281e-03,
-+ 5.23006779777264278752e-03,
-+ 5.21907294218578940437e-03,
-+ 5.20510528938584581676e-03,
-+ 5.18817502065979652137e-03,
-+ 5.16829400186912500670e-03,
-+ 5.14547577542429773745e-03,
-+ 5.11973555130774103661e-03,
-+ 5.09109019715092269570e-03,
-+ 5.05955822737205133249e-03,
-+ 5.02515979138124391917e-03,
-+ 4.98791666086073268160e-03,
-+ 4.94785221612767823346e-03,
-+ 4.90499143158841868773e-03,
-+ 4.85936086029322127783e-03,
-+ 4.81098861760061516368e-03,
-+ 4.75990436396146916753e-03,
-+ 4.70613928683348472365e-03,
-+ 4.64972608173691136918e-03,
-+ 4.59069893246278216276e-03,
-+ 4.52909349044612261070e-03,
-+ 4.46494685331585636212e-03,
-+ 4.39829754263475290049e-03,
-+ 4.32918548084257250735e-03,
-+ 4.25765196741618740656e-03,
-+ 4.18373965426069652218e-03,
-+ 4.10749252034667798605e-03,
-+ 4.02895584560788132256e-03,
-+ 3.94817618411542111539e-03,
-+ 3.86520133654418484789e-03,
-+ 3.78008032194739225507e-03,
-+ 3.69286334885604366693e-03,
-+ 3.60360178572117573551e-03,
-+ 3.51234813071479813271e-03,
-+ 3.41915598090793311503e-03,
-+ 3.32408000084427699555e-03,
-+ 3.22717589052724015269e-03,
-+ 3.12850035283901645525e-03,
-+ 3.02811106041162708680e-03,
-+ 2.92606662196800764927e-03,
-+ 2.82242654815364601290e-03,
-+ 2.71725121687837328777e-03,
-+ 2.61060183818851918036e-03,
-+ 2.50254041868949728133e-03,
-+ 2.39312972554039504053e-03,
-+ 2.28243325004017514127e-03,
-+ 2.17051517082786447205e-03,
-+ 2.05744031671671037328e-03,
-+ 1.94327412918531700070e-03,
-+ 1.82808262454552442576e-03,
-+ 1.71193235581180232437e-03,
-+ 1.59489037429026681535e-03,
-+ 1.47702419091290675264e-03,
-+ 1.35840173733748205247e-03,
-+ 1.23909132683596356558e-03,
-+ 1.11916161499407847656e-03,
-+ 9.98681560244074617572e-04,
-+ 8.77720384254470167330e-04,
-+ 7.56347532198058721681e-04,
-+ 6.34632632921996054504e-04,
-+ 5.12645459042746680714e-04,
-+ 3.90455886987906247536e-04,
-+ 2.68133857008314943106e-04,
-+ 1.45749333184361831153e-04,
-+ 2.33722634472747536666e-05,
-+-9.89274603607503039181e-05,
-+-2.21080042364225074413e-04,
-+-3.43015822447986784560e-04,
-+-4.64665315944092405156e-04,
-+-5.85959253188382740186e-04,
-+-7.06828618925680403524e-04,
-+-8.27204691540118683922e-04,
-+-9.47019082088787164143e-04,
-+-1.06620377311637771697e-03,
-+-1.18469115722925682696e-03,
-+-1.30241407540605423285e-03,
-+-1.41930585502448507011e-03,
-+-1.53530034758192469001e-03,
-+-1.65033196608840252578e-03,
-+-1.76433572211173142659e-03,
-+-1.87724726245334949150e-03,
-+-1.98900290543319513067e-03,
-+-2.09953967676512883930e-03,
-+-2.20879534500175757350e-03,
-+-2.31670845652815794724e-03,
-+-2.42321837008570468985e-03,
-+-2.52826529080659367574e-03,
-+-2.63179030373909264226e-03,
-+-2.73373540684600496026e-03,
-+-2.83404354345699518308e-03,
-+-2.93265863415691175817e-03,
-+-3.02952560809236284833e-03,
-+-3.12459043367923185522e-03,
-+-3.21780014869336387223e-03,
-+-3.30910288972877109082e-03,
-+-3.39844792100587331576e-03,
-+-3.48578566251492739242e-03,
-+-3.57106771747796791425e-03,
-+-3.65424689911476559614e-03,
-+-3.73527725669808635320e-03,
-+-3.81411410088312429617e-03,
-+-3.89071402829827646050e-03,
-+-3.96503494538289445737e-03,
-+-4.03703609145932267727e-03,
-+-4.10667806102655782996e-03,
-+-4.17392282526347826316e-03,
-+-4.23873375272956244564e-03,
-+-4.30107562925237472268e-03,
-+-4.36091467699083017162e-03,
-+-4.41821857266369143885e-03,
-+-4.47295646493412607514e-03,
-+-4.52509899094063333669e-03,
-+-4.57461829196504320139e-03,
-+-4.62148802823035640547e-03,
-+-4.66568339281999474449e-03,
-+-4.70718112471093987764e-03,
-+-4.74595952091446966065e-03,
-+-4.78199844771800587628e-03,
-+-4.81527935102211632201e-03,
-+-4.84578526576791637770e-03,
-+-4.87350082444968323026e-03,
-+-4.89841226470876054538e-03,
-+-4.92050743600499964486e-03,
-+-4.93977580536274565870e-03,
-+-4.95620846218847079662e-03,
-+-4.96979812215835037303e-03,
-+-4.98053913017405553570e-03,
-+-4.98842746238571579237e-03,
-+-4.99346072728172954425e-03,
-+-4.99563816584549461736e-03,
-+-4.99496065077936236831e-03,
-+-4.99143068479745467825e-03,
-+-4.98505239798852691629e-03,
-+-4.97583154425139829319e-03,
-+-4.96377549680547796446e-03,
-+-4.94889324277973576688e-03,
-+-4.93119537688388714231e-03,
-+-4.91069409416598247342e-03,
-+-4.88740318186142198853e-03,
-+-4.86133801033847897516e-03,
-+-4.83251552314631609847e-03,
-+-4.80095422617195580206e-03,
-+-4.76667417591256168535e-03,
-+-4.72969696687120574191e-03,
-+-4.69004571808321647775e-03,
-+-4.64774505878175377138e-03,
-+-4.60282111321146884114e-03,
-+-4.55530148459956044787e-03,
-+-4.50521523829377698589e-03,
-+-4.45259288407801132742e-03,
-+-4.39746635767579701487e-03,
-+-4.33986900145311854660e-03,
-+-4.27983554433203870759e-03,
-+-4.21740208092733371431e-03,
-+-4.15260604991831393240e-03,
-+-4.08548621166932371396e-03,
-+-4.01608262511158123353e-03,
-+-3.94443662390054836098e-03,
-+-3.87059079186303405321e-03,
-+-3.79458893774812806160e-03,
-+-3.71647606929711776455e-03,
-+-3.63629836664845860345e-03,
-+-3.55410315509214558630e-03,
-+-3.46993887719018040405e-03,
-+-3.38385506427993278805e-03,
-+-3.29590230737648436782e-03,
-+-3.20613222749113312843e-03,
-+-3.11459744538398987032e-03,
-+-3.02135155076756461295e-03,
-+-2.92644907097984593655e-03,
-+-2.82994543914506487339e-03,
-+-2.73189696184072483912e-03,
-+-2.63236078628936763860e-03,
-+-2.53139486709509815843e-03,
-+-2.42905793254300297890e-03,
-+-2.32540945048183896743e-03,
-+-2.22050959380982104382e-03,
-+-2.11441920558280097714e-03,
-+-2.00719976376547218355e-03,
-+-1.89891334564696082597e-03,
-+-1.78962259193952521845e-03,
-+-1.67939067058208314070e-03,
-+-1.56828124026987358701e-03,
-+-1.45635841373061535042e-03,
-+-1.34368672076823521266e-03,
-+-1.23033107109642224179e-03,
-+-1.11635671698205856534e-03,
-+-1.00182921572098456581e-03,
-+-8.86814391967279472273e-04,
-+-7.71378299937657582568e-04,
-+-6.55587185513229354222e-04,
-+-5.39507448258485936346e-04,
-+-4.23205603382631467824e-04,
-+-3.06748243661661022710e-04,
-+-1.90202001344411987527e-04,
-+-7.36335100648440309687e-05,
-+ 4.28906332185422347128e-05,
-+ 1.59303906234412831922e-04,
-+ 2.75539899338800254799e-04,
-+ 3.91532353363562794085e-04,
-+ 5.07215197350502681149e-04,
-+ 6.22522586150107753653e-04,
-+ 7.37388937863388033329e-04,
-+ 8.51748971105957086540e-04,
-+ 9.65537742072175879035e-04,
-+ 1.07869068137969592591e-03,
-+ 1.19114363067259008272e-03,
-+ 1.30283287896230275983e-03,
-+ 1.41369519868671613717e-03,
-+ 1.52366788146634829677e-03,
-+ 1.63268877353659261353e-03,
-+ 1.74069631083787878384e-03,
-+ 1.84762955374296743323e-03,
-+ 1.95342822140135439005e-03,
-+ 2.05803272568219793037e-03,
-+ 2.16138420469669332441e-03,
-+ 2.26342455588016133738e-03,
-+ 2.36409646861654226466e-03,
-+ 2.46334345638605676718e-03,
-+ 2.56110988841841760721e-03,
-+ 2.65734102083372766834e-03,
-+ 2.75198302725402016780e-03,
-+ 2.84498302886748277024e-03,
-+ 2.93628912392977997961e-03,
-+ 3.02585041668512657459e-03,
-+ 3.11361704569121855099e-03,
-+ 3.19954021153272608058e-03,
-+ 3.28357220390771429100e-03,
-+ 3.36566642807112174907e-03,
-+ 3.44577743062223634807e-03,
-+ 3.52386092462112724549e-03,
-+ 3.59987381401977125581e-03,
-+ 3.67377421739513865956e-03,
-+ 3.74552149097084462886e-03,
-+ 3.81507625091497340475e-03,
-+ 3.88240039490136924424e-03,
-+ 3.94745712292331966259e-03,
-+ 4.01021095734782184045e-03,
-+ 4.07062776219968818631e-03,
-+ 4.12867476166478130500e-03,
-+ 4.18432055780340594886e-03,
-+ 4.23753514746243783312e-03,
-+ 4.28828993837902447406e-03,
-+ 4.33655776446637518384e-03,
-+ 4.38231290027339768361e-03,
-+ 4.42553107461083304608e-03,
-+ 4.46618948333678180557e-03,
-+ 4.50426680129448111373e-03,
-+ 4.53974319339683820423e-03,
-+ 4.57260032485135199665e-03,
-+ 4.60282137052065234983e-03,
-+ 4.63039102341378759620e-03,
-+ 4.65529550230404237654e-03,
-+ 4.67752255846963938685e-03,
-+ 4.69706148155405248112e-03,
-+ 4.71390310454339756668e-03,
-+ 4.72803980785840502477e-03,
-+ 4.73946552255972292089e-03,
-+ 4.74817573266493424267e-03,
-+ 4.75416747657694122031e-03,
-+ 4.75743934762336718319e-03,
-+ 4.75799149370748075683e-03,
-+ 4.75582561607138833149e-03,
-+ 4.75094496717288084647e-03,
-+ 4.74335434767782487125e-03,
-+ 4.73306010257048929979e-03,
-+ 4.72007011638460489966e-03,
-+ 4.70439380755864264283e-03,
-+ 4.68604212191906475959e-03,
-+ 4.66502752529606660309e-03,
-+ 4.64136399527643843388e-03,
-+ 4.61506701209918757806e-03,
-+ 4.58615354869955273859e-03,
-+ 4.55464205990770056726e-03,
-+ 4.52055247080917176061e-03,
-+ 4.48390616427393924603e-03,
-+ 4.44472596766223859710e-03,
-+ 4.40303613871486330955e-03,
-+ 4.35886235063746938639e-03,
-+ 4.31223167638676834618e-03,
-+ 4.26317257216925812185e-03,
-+ 4.21171486016196257307e-03,
-+ 4.15788971046581433411e-03,
-+ 4.10172962230226281072e-03,
-+ 4.04326840446501793724e-03,
-+ 3.98254115503794432068e-03,
-+ 3.91958424039167124125e-03,
-+ 3.85443527347131180763e-03,
-+ 3.78713309138849164512e-03,
-+ 3.71771773232995421388e-03,
-+ 3.64623041179842725945e-03,
-+ 3.57271349819778243767e-03,
-+ 3.49721048777782827360e-03,
-+ 3.41976597895377260397e-03,
-+ 3.34042564601502072266e-03,
-+ 3.25923621223874176306e-03,
-+ 3.17624542242462160752e-03,
-+ 3.09150201486607309476e-03,
-+ 3.00505569277494284652e-03,
-+ 2.91695709517621800527e-03,
-+ 2.82725776728985633834e-03,
-+ 2.73601013041636529841e-03,
-+ 2.64326745134584257038e-03,
-+ 2.54908381130463648420e-03,
-+ 2.45351407446147209979e-03,
-+ 2.35661385600897553202e-03,
-+ 2.25843948984021103410e-03,
-+ 2.15904799583798876969e-03,
-+ 2.05849704679780722699e-03,
-+ 1.95684493500119767798e-03,
-+ 1.85415053846056882350e-03,
-+ 1.75047328685429747983e-03,
-+ 1.64587312717267382142e-03,
-+ 1.54041048909200266152e-03,
-+ 1.43414625010112694974e-03,
-+ 1.32714170039615556723e-03,
-+ 1.21945850756623999298e-03,
-+ 1.11115868108982397341e-03,
-+ 1.00230453666194673813e-03,
-+ 8.92958660373076220512e-04,
-+ 7.83183872760047513316e-04,
-+ 6.73043192749742938061e-04,
-+ 5.62599801516196619360e-04,
-+ 4.51917006271797402298e-04,
-+ 3.41058204013367112766e-04,
-+ 2.30086845243956402514e-04,
-+ 1.19066397690317975016e-04,
-+ 8.06031003876342309552e-06,
-+-1.02868024292534745090e-04,
-+-2.13655303322282262481e-04,
-+-3.24238352595229727994e-04,
-+-4.34554161172920089696e-04,
-+-5.44539917503692838356e-04,
-+-6.54133045151543304589e-04,
-+-7.63271238365370997651e-04,
-+-8.71892497466585482749e-04,
-+-9.79935164035776202357e-04,
-+-1.08733795587835245164e-03,
-+-1.19404000174937055881e-03,
-+-1.29998087581786859156e-03,
-+-1.40510063185121983863e-03,
-+-1.50933983710020702684e-03,
-+-1.61263960586564250761e-03,
-+-1.71494163272752683097e-03,
-+-1.81618822541869504202e-03,
-+-1.91632233732264294253e-03,
-+-2.01528759957979742429e-03,
-+-2.11302835278164621163e-03,
-+-2.20948967823741222391e-03,
-+-2.30461742879315041599e-03,
-+-2.39835825918845125734e-03,
-+-2.49065965593134232975e-03,
-+-2.58146996667703255632e-03,
-+-2.67073842909245186619e-03,
-+-2.75841519919107873438e-03,
-+-2.84445137912224619431e-03,
-+-2.92879904439931598031e-03,
-+-3.01141127055178960126e-03,
-+-3.09224215918633147174e-03,
-+-3.17124686344243166339e-03,
-+-3.24838161282851346778e-03,
-+-3.32360373742473678635e-03,
-+-3.39687169143964044424e-03,
-+-3.46814507610627249454e-03,
-+-3.53738466190720588292e-03,
-+-3.60455241011424683262e-03,
-+-3.66961149363298272039e-03,
-+-3.73252631713888970155e-03,
-+-3.79326253649527652539e-03,
-+-3.85178707744242114497e-03,
-+-3.90806815354677143659e-03,
-+-3.96207528340193453065e-03,
-+-4.01377930707108587782e-03,
-+-4.06315240176249869997e-03,
-+-4.11016809672954883115e-03,
-+-4.15480128738748670514e-03,
-+-4.19702824863931681781e-03,
-+-4.23682664740382061708e-03,
-+-4.27417555433919245378e-03,
-+-4.30905545475612165168e-03,
-+-4.34144825871471493756e-03,
-+-4.37133731030028924863e-03,
-+-4.39870739607276222544e-03,
-+-4.42354475268612757494e-03,
-+-4.44583707367407054284e-03,
-+-4.46557351539804588125e-03,
-+-4.48274470215558658998e-03,
-+-4.49734273044633849070e-03,
-+-4.50936117239380054866e-03,
-+-4.51879507832192439665e-03,
-+-4.52564097848520176248e-03,
-+-4.52989688395227449447e-03,
-+-4.53156228664297524439e-03,
-+-4.53063815851947795238e-03,
-+-4.52712694993263019272e-03,
-+-4.52103258712507720396e-03,
-+-4.51236046889318294373e-03,
-+-4.50111746241027566029e-03,
-+-4.48731189821427022685e-03,
-+-4.47095356436308811326e-03,
-+-4.45205369976202098431e-03,
-+-4.43062498666702171690e-03,
-+-4.40668154236938374585e-03,
-+-4.38023891006674489373e-03,
-+-4.35131404892644905319e-03,
-+-4.31992532334727567106e-03,
-+-4.28609249142686190431e-03,
-+-4.24983669264115699465e-03,
-+-4.21118043474420344213e-03,
-+-4.17014757989600526322e-03,
-+-4.12676333002717343063e-03,
-+-4.08105421144885384399e-03,
-+-4.03304805871769478376e-03,
-+-3.98277399776586060048e-03,
-+-3.93026242830538889012e-03,
-+-3.87554500551830520202e-03,
-+-3.81865462104316469652e-03,
-+-3.75962538326934676142e-03,
-+-3.69849259695105700083e-03,
-+-3.63529274215302917322e-03,
-+-3.57006345254048127261e-03,
-+-3.50284349302629844855e-03,
-+-3.43367273678861842368e-03,
-+-3.36259214167245173294e-03,
-+-3.28964372598887933724e-03,
-+-3.21487054372729570695e-03,
-+-3.13831665919360848840e-03,
-+-3.06002712109050643147e-03,
-+-2.98004793605501560813e-03,
-+-2.89842604166773779029e-03,
-+-2.81520927895077040931e-03,
-+-2.73044636437046704669e-03,
-+-2.64418686136011710577e-03,
-+-2.55648115138037068314e-03,
-+-2.46738040453385034864e-03,
-+-2.37693654975105290658e-03,
-+-2.28520224456495602700e-03,
-+-2.19223084449187820971e-03,
-+-2.09807637203635911904e-03,
-+-2.00279348533807409136e-03,
-+-1.90643744647894558715e-03,
-+-1.80906408946890644336e-03,
-+-1.71072978792818604712e-03,
-+-1.61149142248648530144e-03,
-+-1.51140634791550681169e-03,
-+-1.41053236001619538946e-03,
-+-1.30892766227735197690e-03,
-+-1.20665083232744858345e-03,
-+-1.10376078819640946992e-03,
-+-1.00031675440937460608e-03,
-+-8.96378227929317322395e-04,
-+-7.92004943969952133684e-04,
-+-6.87256841697829728294e-04,
-+-5.82194029843374478810e-04,
-+-4.76876752240620047432e-04,
-+-3.71365353315354857280e-04,
-+-2.65720243541443139953e-04,
-+-1.60001864885065504330e-04,
-+-5.42706562566359684624e-05,
-+ 5.14129810098762333082e-05,
-+ 1.56988717630401143676e-04,
-+ 2.62396330778088919793e-04,
-+ 3.67575738403138686013e-04,
-+ 4.72467033447351674163e-04,
-+ 5.77010517933939639720e-04,
-+ 6.81146736911458490320e-04,
-+ 7.84816512234211456633e-04,
-+ 8.87960976159937634238e-04,
-+ 9.90521604744005372892e-04,
-+ 1.09244025101365264951e-03,
-+ 1.19365917790164059384e-03,
-+ 1.29412109092141174894e-03,
-+ 1.39376917056518003293e-03,
-+ 1.49254710440663968495e-03,
-+ 1.59039911889015199951e-03,
-+ 1.68727001078853872801e-03,
-+ 1.78310517831170383361e-03,
-+ 1.87785065184860474295e-03,
-+ 1.97145312432514584547e-03,
-+ 2.06385998116165444646e-03,
-+ 2.15501932981150296637e-03,
-+ 2.24488002886593339402e-03,
-+ 2.33339171670872728634e-03,
-+ 2.42050483970316981583e-03,
-+ 2.50617067989698880798e-03,
-+ 2.59034138222976727944e-03,
-+ 2.67296998122616528970e-03,
-+ 2.75401042716228762475e-03,
-+ 2.83341761168887876915e-03,
-+ 2.91114739289797088209e-03,
-+ 2.98715661981875787653e-03,
-+ 3.06140315632929442893e-03,
-+ 3.13384590447068249811e-03,
-+ 3.20444482715097822209e-03,
-+ 3.27316097022614747175e-03,
-+ 3.33995648394608485657e-03,
-+ 3.40479464375383631194e-03,
-+ 3.46763987042658736876e-03,
-+ 3.52845774954753865424e-03,
-+ 3.58721505029781922991e-03,
-+ 3.64387974355847871905e-03,
-+ 3.69842101931248078139e-03,
-+ 3.75080930333746573671e-03,
-+ 3.80101627318009003750e-03,
-+ 3.84901487340377030863e-03,
-+ 3.89477933010077409515e-03,
-+ 3.93828516466203197577e-03,
-+ 3.97950920679663710383e-03,
-+ 4.01842960679405468427e-03,
-+ 4.05502584702343085721e-03,
-+ 4.08927875266308724772e-03,
-+ 4.12117050165479448243e-03,
-+ 4.15068463387839852591e-03,
-+ 4.17780605954134933583e-03,
-+ 4.20252106677934406803e-03,
-+ 4.22481732846414353988e-03,
-+ 4.24468390821542990859e-03,
-+ 4.26211126561366546173e-03,
-+ 4.27709126061177457440e-03,
-+ 4.28961715714353680751e-03,
-+ 4.29968362592737362443e-03,
-+ 4.30728674646440722745e-03,
-+ 4.31242400823038558866e-03,
-+ 4.31509431106120045635e-03,
-+ 4.31529796473259855127e-03,
-+ 4.31303668773473300457e-03,
-+ 4.30831360524300700093e-03,
-+ 4.30113324628681858303e-03,
-+ 4.29150154011852507513e-03,
-+ 4.27942581178534283554e-03,
-+ 4.26491477690706718290e-03,
-+ 4.24797853566351822641e-03,
-+ 4.22862856599543705111e-03,
-+ 4.20687771602348218464e-03,
-+ 4.18274019569020352044e-03,
-+ 4.15623156763024730748e-03,
-+ 4.12736873727475445106e-03,
-+ 4.09616994219598982985e-03,
-+ 4.06265474069904698046e-03,
-+ 4.02684399966749852207e-03,
-+ 3.98875988167053836808e-03,
-+ 3.94842583133988254962e-03,
-+ 3.90586656102404668894e-03,
-+ 3.86110803572960138361e-03,
-+ 3.81417745735749278216e-03,
-+ 3.76510324824506480840e-03,
-+ 3.71391503402302824294e-03,
-+ 3.66064362579748142634e-03,
-+ 3.60532100166869413568e-03,
-+ 3.54798028759637515753e-03,
-+ 3.48865573762383116702e-03,
-+ 3.42738271347229261563e-03,
-+ 3.36419766351780209421e-03,
-+ 3.29913810116290494648e-03,
-+ 3.23224258261611266038e-03,
-+ 3.16355068409222362283e-03,
-+ 3.09310297844691411973e-03,
-+ 3.02094101125942446004e-03,
-+ 2.94710727637745740354e-03,
-+ 2.87164519093818793039e-03,
-+ 2.79459906988119548971e-03,
-+ 2.71601409996710457459e-03,
-+ 2.63593631331708773413e-03,
-+ 2.55441256048993380751e-03,
-+ 2.47149048311133935976e-03,
-+ 2.38721848607121494082e-03,
-+ 2.30164570930673547527e-03,
-+ 2.21482199918544885378e-03,
-+ 2.12679787950668637911e-03,
-+ 2.03762452213744876123e-03,
-+ 1.94735371729998175613e-03,
-+ 1.85603784352819439415e-03,
-+ 1.76372983731039952200e-03,
-+ 1.67048316243592642229e-03,
-+ 1.57635177906330727939e-03,
-+ 1.48139011252795978722e-03,
-+ 1.38565302190747641209e-03,
-+ 1.28919576836194387306e-03,
-+ 1.19207398326919835826e-03,
-+ 1.09434363617172251450e-03,
-+ 9.96061002553666387932e-04,
-+ 8.97282631468103723978e-04,
-+ 7.98065313031665838489e-04,
-+ 6.98466045805186700954e-04,
-+ 5.98542004080726075879e-04,
-+ 4.98350505091392156909e-04,
-+ 3.97948976164492736543e-04,
-+ 2.97394921836138706028e-04,
-+ 1.96745890946085639616e-04,
-+ 9.60594437324946328737e-05,
-+-4.60688105713253110850e-06,
-+-1.05195599015863548308e-04,
-+-2.05649312873547269803e-04,
-+-3.05910745218120614427e-04,
-+-4.05922771124209050102e-04,
-+-5.05628450670332911694e-04,
-+-6.04971061326233742333e-04,
-+-7.03894130191895397823e-04,
-+-8.02341466069983314836e-04,
-+-9.00257191353478103575e-04,
-+-9.97585773710441469850e-04,
-+-1.09427205754784526159e-03,
-+-1.19026129523734734011e-03,
-+-1.28549917808361388767e-03,
-+-1.37993186702002005456e-03,
-+-1.47350602301274868564e-03,
-+-1.56616883715618676436e-03,
-+-1.65786806044407471726e-03,
-+-1.74855203319811505248e-03,
-+-1.83816971413744510017e-03,
-+-1.92667070907424605244e-03,
-+-2.01400529921775661019e-03,
-+-2.10012446907152346490e-03,
-+-2.18497993390813667614e-03,
-+-2.26852416680606251351e-03,
-+-2.35071042523344675770e-03,
-+-2.43149277716405484012e-03,
-+-2.51082612671079579217e-03,
-+-2.58866623926247820323e-03,
-+-2.66496976610981501504e-03,
-+-2.73969426854743253880e-03,
-+-2.81279824143723829188e-03,
-+-2.88424113622183812475e-03,
-+-2.95398338337400341927e-03,
-+-3.02198641426984970434e-03,
-+-3.08821268247472897547e-03,
-+-3.15262568442887820136e-03,
-+-3.21518997952162247436e-03,
-+-3.27587120954407487808e-03,
-+-3.33463611750868180184e-03,
-+-3.39145256582575700330e-03,
-+-3.44628955382705274429e-03,
-+-3.49911723462676847382e-03,
-+-3.54990693131099601179e-03,
-+-3.59863115244673462817e-03,
-+-3.64526360690210944615e-03,
-+-3.68977921797001727142e-03,
-+-3.73215413678737884667e-03,
-+-3.77236575504307771953e-03,
-+-3.81039271696794737063e-03,
-+-3.84621493059991411204e-03,
-+-3.87981357831906903399e-03,
-+-3.91117112664715865095e-03,
-+-3.94027133530578613924e-03,
-+-3.96709926552936235911e-03,
-+-3.99164128762850064364e-03,
-+-4.01388508779965472173e-03,
-+-4.03381967417829664230e-03,
-+-4.05143538213234219447e-03,
-+-4.06672387879341342559e-03,
-+-4.07967816682406215351e-03,
-+-4.09029258741918071846e-03,
-+-4.09856282254066582593e-03,
-+-4.10448589638437531107e-03,
-+-4.10806017607942119269e-03,
-+-4.10928537161966977997e-03,
-+-4.10816253502826328470e-03,
-+-4.10469405875612397550e-03,
-+-4.09888367331595702275e-03,
-+-4.09073644415366196453e-03,
-+-4.08025876775947385355e-03,
-+-4.06745836702175275756e-03,
-+-4.05234428582641227623e-03,
-+-4.03492688290585550803e-03,
-+-4.01521782494141353526e-03,
-+-3.99323007892370650251e-03,
-+-3.96897790377597620148e-03,
-+-3.94247684124562208785e-03,
-+-3.91374370606971909436e-03,
-+-3.88279657542071584067e-03,
-+-3.84965477763883840226e-03,
-+-3.81433888025815110920e-03,
-+-3.77687067733369942479e-03,
-+-3.73727317607745312261e-03,
-+-3.69557058281119732435e-03,
-+-3.65178828824497432592e-03,
-+-3.60595285208962579651e-03,
-+-3.55809198701380119054e-03,
-+-3.50823454195329457322e-03,
-+-3.45641048478445914172e-03,
-+-3.40265088437114587849e-03,
-+-3.34698789199610203388e-03,
-+-3.28945472218769140865e-03,
-+-3.23008563295407733276e-03,
-+-3.16891590543550479703e-03,
-+-3.10598182298758417746e-03,
-+-3.04132064970752489380e-03,
-+-2.97497060841662606598e-03,
-+-2.90697085811037359698e-03,
-+-2.83736147089205630045e-03,
-+-2.76618340840093044491e-03,
-+-2.69347849775016792359e-03,
-+-2.61928940698839384654e-03,
-+-2.54365962009905433386e-03,
-+-2.46663341155241517058e-03,
-+-2.38825582042492129409e-03,
-+-2.30857262410112847040e-03,
-+-2.22763031157348617012e-03,
-+-2.14547605635553037887e-03,
-+-2.06215768902437597554e-03,
-+-1.97772366940784189923e-03,
-+-1.89222305843385276043e-03,
-+-1.80570548965651076455e-03,
-+-1.71822114047665615993e-03,
-+-1.62982070307368252966e-03,
-+-1.54055535506404249653e-03,
-+-1.45047672990482020075e-03,
-+-1.35963688705958486193e-03,
-+-1.26808828194214899543e-03,
-+-1.17588373565714085327e-03,
-+-1.08307640455412444898e-03,
-+-9.89719749612947034476e-04,
-+-8.95867505677916593256e-04,
-+-8.01573650558492470548e-04,
-+-7.06892374014246962534e-04,
-+-6.11878046641902415860e-04,
-+-5.16585188682274517973e-04,
-+-4.21068438765152331434e-04,
-+-3.25382522609281570492e-04,
-+-2.29582221697126570396e-04,
-+-1.33722341940000448565e-04,
-+-3.78576823531001234436e-05,
-+ 5.79569962416860487149e-05,
-+ 1.53667002468926312949e-04,
-+ 2.49217745588539837595e-04,
-+ 3.44554766605055051796e-04,
-+ 4.39623769277135254159e-04,
-+ 5.34370651012117960608e-04,
-+ 6.28741533626295430459e-04,
-+ 7.22682793954151111819e-04,
-+ 8.16141094289066942359e-04,
-+ 9.09063412638226858026e-04,
-+ 1.00139707277458692852e-03,
-+ 1.09308977406887886975e-03,
-+ 1.18408962108478813154e-03,
-+ 1.27434515292056300961e-03,
-+ 1.36380537228036891051e-03,
-+ 1.45241977425964634632e-03,
-+ 1.54013837482673316033e-03,
-+ 1.62691173898619058195e-03,
-+ 1.71269100860800766242e-03,
-+ 1.79742792990551444876e-03,
-+ 1.88107488054797562099e-03,
-+ 1.96358489639263892462e-03,
-+ 2.04491169781978020942e-03,
-+ 2.12500971565807118477e-03,
-+ 2.20383411668426208024e-03,
-+ 2.28134082868343369618e-03,
-+ 2.35748656505591286728e-03,
-+ 2.43222884895690980023e-03,
-+ 2.50552603695564177905e-03,
-+ 2.57733734220062273013e-03,
-+ 2.64762285707839271562e-03,
-+ 2.71634357535300218975e-03,
-+ 2.78346141377399823244e-03,
-+ 2.84893923314137337971e-03,
-+ 2.91274085881481313576e-03,
-+ 2.97483110065697737429e-03,
-+ 3.03517577239990551941e-03,
-+ 3.09374171042274635074e-03,
-+ 3.15049679193164094970e-03,
-+ 3.20540995253164491541e-03,
-+ 3.25845120318029885659e-03,
-+ 3.30959164651485658951e-03,
-+ 3.35880349254337635945e-03,
-+ 3.40606007369155918199e-03,
-+ 3.45133585919722533919e-03,
-+ 3.49460646884427843240e-03,
-+ 3.53584868602997270254e-03,
-+ 3.57504047015665300802e-03,
-+ 3.61216096834317094977e-03,
-+ 3.64719052644881403663e-03,
-+ 3.68011069940423060295e-03,
-+ 3.71090426084389433947e-03,
-+ 3.73955521203543422501e-03,
-+ 3.76604879010044787946e-03,
-+ 3.79037147552388660465e-03,
-+ 3.81251099894702218107e-03,
-+ 3.83245634724140764663e-03,
-+ 3.85019776886061934965e-03,
-+ 3.86572677846735036217e-03,
-+ 3.87903616083361702654e-03,
-+ 3.89011997401263057497e-03,
-+ 3.89897355178084716390e-03,
-+ 3.90559350534943564709e-03,
-+ 3.90997772434472940645e-03,
-+ 3.91212537705771124658e-03,
-+ 3.91203690996272997887e-03,
-+ 3.90971404650655458141e-03,
-+ 3.90515978516874822171e-03,
-+ 3.89837839679519444422e-03,
-+ 3.88937542120674139765e-03,
-+ 3.87815766308545256322e-03,
-+ 3.86473318714143513133e-03,
-+ 3.84911131256343097898e-03,
-+ 3.83130260675695194506e-03,
-+ 3.81131887837403860592e-03,
-+ 3.78917316963920574116e-03,
-+ 3.76487974797630508064e-03,
-+ 3.73845409694197614373e-03,
-+ 3.70991290647096740377e-03,
-+ 3.67927406243961268098e-03,
-+ 3.64655663555414144908e-03,
-+ 3.61178086957013007655e-03,
-+ 3.57496816885076278136e-03,
-+ 3.53614108527169294233e-03,
-+ 3.49532330447974940585e-03,
-+ 3.45253963151448796734e-03,
-+ 3.40781597580096327210e-03,
-+ 3.36117933552288828195e-03,
-+ 3.31265778138546554757e-03,
-+ 3.26228043977774525078e-03,
-+ 3.21007747534444651261e-03,
-+ 3.15608007297777824404e-03,
-+ 3.10032041923983094425e-03,
-+ 3.04283168322677004605e-03,
-+ 2.98364799688597944274e-03,
-+ 2.92280443479772233245e-03,
-+ 2.86033699343400974954e-03,
-+ 2.79628256990564587336e-03,
-+ 2.73067894021140553096e-03,
-+ 2.66356473700054630430e-03,
-+ 2.59497942686348799513e-03,
-+ 2.52496328716229770719e-03,
-+ 2.45355738241618799925e-03,
-+ 2.38080354025428783324e-03,
-+ 2.30674432695083695896e-03,
-+ 2.23142302255665983882e-03,
-+ 2.15488359564151290768e-03,
-+ 2.07717067766201215345e-03,
-+ 1.99832953697007134966e-03,
-+ 1.91840605247694541945e-03,
-+ 1.83744668698823622119e-03,
-+ 1.75549846022528331473e-03,
-+ 1.67260892154870227308e-03,
-+ 1.58882612239931203697e-03,
-+ 1.50419858847373826526e-03,
-+ 1.41877529164945908116e-03,
-+ 1.33260562167547579916e-03,
-+ 1.24573935764636829771e-03,
-+ 1.15822663927488351057e-03,
-+ 1.07011793797963318704e-03,
-+ 9.81464027805968499546e-04,
-+ 8.92315956194724064533e-04,
-+ 8.02725014617197869804e-04,
-+ 7.12742709092594579033e-04,
-+ 6.22420730605006554577e-04,
-+ 5.31810925436872606979e-04,
-+ 4.40965265435949780974e-04,
-+ 3.49935818232817224746e-04,
-+ 2.58774717425973744146e-04,
-+ 1.67534132751585059917e-04,
-+ 7.62662402549235993827e-05,
-+-1.49768075193361299620e-05,
-+-1.06142911301720894524e-04,
-+-1.97180054818197052647e-04,
-+-2.88036334442900109586e-04,
-+-3.78659988762671830508e-04,
-+-4.68999428038859239934e-04,
-+-5.59003263548750505343e-04,
-+-6.48620336790735633678e-04,
-+-7.37799748534993023869e-04,
-+-8.26490887705368343190e-04,
-+-9.14643460074474100654e-04,
-+-1.00220751675647416767e-03,
-+-1.08913348248064457101e-03,
-+-1.17537218363183721542e-03,
-+-1.26087487603843595614e-03,
-+-1.34559327249569936173e-03,
-+-1.42947957000680455318e-03,
-+-1.51248647672699333688e-03,
-+-1.59456723859538701364e-03,
-+-1.67567566564024317960e-03,
-+-1.75576615794077609337e-03,
-+-1.83479373123439024051e-03,
-+-1.91271404215155051663e-03,
-+-1.98948341306622901448e-03,
-+-2.06505885654718109729e-03,
-+-2.13939809939708890443e-03,
-+-2.21245960626475536570e-03,
-+-2.28420260281900038002e-03,
-+-2.35458709846996828985e-03,
-+-2.42357390862588594968e-03,
-+-2.49112467647214820554e-03,
-+-2.55720189426249895279e-03,
-+-2.62176892410749236631e-03,
-+-2.68479001825172808662e-03,
-+-2.74623033882684950205e-03,
-+-2.80605597707006462066e-03,
-+-2.86423397199746590513e-03,
-+-2.92073232852189295164e-03,
-+-2.97552003500548174764e-03,
-+-3.02856708023718085299e-03,
-+-3.07984446982606822549e-03,
-+-3.12932424200147371596e-03,
-+-3.17697948281127698356e-03,
-+-3.22278434071057110627e-03,
-+-3.26671404053182311278e-03,
-+-3.30874489683027862494e-03,
-+-3.34885432659656149396e-03,
-+-3.38702086132979581640e-03,
-+-3.42322415846545938939e-03,
-+-3.45744501215092866347e-03,
-+-3.48966536336403100604e-03,
-+-3.51986830936835840347e-03,
-+-3.54803811250142776476e-03,
-+-3.57416020829039995585e-03,
-+-3.59822121289160232194e-03,
-+-3.62020892984994159536e-03,
-+-3.64011235617500532313e-03,
-+-3.65792168773078438943e-03,
-+-3.67362832393644143589e-03,
-+-3.68722487177608991560e-03,
-+-3.69870514911562918089e-03,
-+-3.70806418732541956396e-03,
-+-3.71529823320771324796e-03,
-+-3.72040475022829665933e-03,
-+-3.72338241905218391911e-03,
-+-3.72423113738358209715e-03,
-+-3.72295201911065475747e-03,
-+-3.71954739275624172296e-03,
-+-3.71402079923576107501e-03,
-+-3.70637698892428832029e-03,
-+-3.69662191803482587105e-03,
-+-3.68476274431051497790e-03,
-+-3.67080782203360296914e-03,
-+-3.65476669635465692756e-03,
-+-3.63665009694570488807e-03,
-+-3.61646993098150822468e-03,
-+-3.59423927545334974051e-03,
-+-3.56997236882036642416e-03,
-+-3.54368460200365923210e-03,
-+-3.51539250872874575737e-03,
-+-3.48511375522234101432e-03,
-+-3.45286712927017321387e-03,
-+-3.41867252864195810338e-03,
-+-3.38255094889135894329e-03,
-+-3.34452447053745815023e-03,
-+-3.30461624563659203332e-03,
-+-3.26285048375162325951e-03,
-+-3.21925243732817121037e-03,
-+-3.17384838648557959795e-03,
-+-3.12666562323245288482e-03,
-+-3.07773243511595077232e-03,
-+-3.02707808831462633209e-03,
-+-2.97473281018491211153e-03,
-+-2.92072777127162135427e-03,
-+-2.86509506679312160940e-03,
-+-2.80786769761221183597e-03,
-+-2.74907955070388763247e-03,
-+-2.68876537913161550372e-03,
-+-2.62696078154390838186e-03,
-+-2.56370218120280770127e-03,
-+-2.49902680455817757105e-03,
-+-2.43297265937776879124e-03,
-+-2.36557851244843493979e-03,
-+-2.29688386686014139187e-03,
-+-2.22692893888647245465e-03,
-+-2.15575463447475546355e-03,
-+-2.08340252536062418495e-03,
-+-2.00991482481939400667e-03,
-+-1.93533436306957584878e-03,
-+-1.85970456234225522789e-03,
-+-1.78306941163151812420e-03,
-+-1.70547344113878836074e-03,
-+-1.62696169642893568967e-03,
-+-1.54757971231007083503e-03,
-+-1.46737348645403320284e-03,
-+-1.38638945277216006635e-03,
-+-1.30467445456199375615e-03,
-+-1.22227571743970366350e-03,
-+-1.13924082207588254177e-03,
-+-1.05561767674710021286e-03,
-+-9.71454489722374482305e-04,
-+-8.86799741498446592036e-04,
-+-8.01702156900612784851e-04,
-+-7.16210677064451489704e-04,
-+-6.30374431316047391209e-04,
-+-5.44242708964845500752e-04,
-+-4.57864931026830763918e-04,
-+-3.71290621893513930751e-04,
-+-2.84569380963795102567e-04,
-+-1.97750854252763154373e-04,
-+-1.10884705997269506742e-04,
-+-2.40205902709113495357e-05,
-+ 6.27918773732192452876e-05,
-+ 1.49503148216553689897e-04,
-+ 2.36063768629587555480e-04,
-+ 3.22424408250847381943e-04,
-+ 4.08535888074242200738e-04,
-+ 4.94349208428819172911e-04,
-+ 5.79815576835024100270e-04,
-+ 6.64886435721643610786e-04,
-+ 7.49513489987693693958e-04,
-+ 8.33648734393532949913e-04,
-+ 9.17244480766279870337e-04,
-+ 1.00025338500262374157e-03,
-+ 1.08262847385585773974e-03,
-+ 1.16432317148991437694e-03,
-+ 1.24529132578744816673e-03,
-+ 1.32548723439501444157e-03,
-+ 1.40486567049264701387e-03,
-+ 1.48338190827135567480e-03,
-+ 1.56099174810615912330e-03,
-+ 1.63765154140913405528e-03,
-+ 1.71331821514903869137e-03,
-+ 1.78794929602366808354e-03,
-+ 1.86150293427143464359e-03,
-+ 1.93393792710878204520e-03,
-+ 2.00521374178037978947e-03,
-+ 2.07529053820916823889e-03,
-+ 2.14412919123365373897e-03,
-+ 2.21169131241997444365e-03,
-+ 2.27793927143706215546e-03,
-+ 2.34283621698181060769e-03,
-+ 2.40634609724435857836e-03,
-+ 2.46843367990040021484e-03,
-+ 2.52906457162119062410e-03,
-+ 2.58820523708867778964e-03,
-+ 2.64582301750689681194e-03,
-+ 2.70188614859793313494e-03,
-+ 2.75636377807397716516e-03,
-+ 2.80922598257490408261e-03,
-+ 2.86044378406247841104e-03,
-+ 2.90998916566214413729e-03,
-+ 2.95783508694383865181e-03,
-+ 3.00395549863343705108e-03,
-+ 3.04832535674689130908e-03,
-+ 3.09092063613944411163e-03,
-+ 3.13171834346257340134e-03,
-+ 3.17069652952171746399e-03,
-+ 3.20783430102820335192e-03,
-+ 3.24311183173923859094e-03,
-+ 3.27651037297958976080e-03,
-+ 3.30801226353996018562e-03,
-+ 3.33760093894684218077e-03,
-+ 3.36526094009848182609e-03,
-+ 3.39097792126302451446e-03,
-+ 3.41473865743472130771e-03,
-+ 3.43653105104400240569e-03,
-+ 3.45634413801872283564e-03,
-+ 3.47416809319318680913e-03,
-+ 3.48999423506242021850e-03,
-+ 3.50381502987956103268e-03,
-+ 3.51562409509444421737e-03,
-+ 3.52541620213190926708e-03,
-+ 3.53318727850884806152e-03,
-+ 3.53893440928911917967e-03,
-+ 3.54265583787610402466e-03,
-+ 3.54435096614294726028e-03,
-+ 3.54402035390087273917e-03,
-+ 3.54166571770637159458e-03,
-+ 3.53728992900847680203e-03,
-+ 3.53089701163765857378e-03,
-+ 3.52249213863829475218e-03,
-+ 3.51208162844697177607e-03,
-+ 3.49967294041929766896e-03,
-+ 3.48527466970839335317e-03,
-+ 3.46889654149831836577e-03,
-+ 3.45054940459623565863e-03,
-+ 3.43024522438756772347e-03,
-+ 3.40799707515864217997e-03,
-+ 3.38381913179134578146e-03,
-+ 3.35772666083566971931e-03,
-+ 3.32973601096507977951e-03,
-+ 3.29986460282096893265e-03,
-+ 3.26813091825231636506e-03,
-+ 3.23455448895733962272e-03,
-+ 3.19915588453362383092e-03,
-+ 3.16195669994496055336e-03,
-+ 3.12297954241108925363e-03,
-+ 3.08224801772958309845e-03,
-+ 3.03978671603739392451e-03,
-+ 2.99562119702084100892e-03,
-+ 2.94977797458266955549e-03,
-+ 2.90228450097598702356e-03,
-+ 2.85316915041365507313e-03,
-+ 2.80246120216355544194e-03,
-+ 2.75019082313949451285e-03,
-+ 2.69638904999837305393e-03,
-+ 2.64108777075355415781e-03,
-+ 2.58431970591592842859e-03,
-+ 2.52611838917400372689e-03,
-+ 2.46651814762340482884e-03,
-+ 2.40555408155839313758e-03,
-+ 2.34326204383680314694e-03,
-+ 2.27967861883065755005e-03,
-+ 2.21484110097475844769e-03,
-+ 2.14878747292579150296e-03,
-+ 2.08155638334478173060e-03,
-+ 2.01318712431581723840e-03,
-+ 1.94371960841423544429e-03,
-+ 1.87319434543773495790e-03,
-+ 1.80165241881343461162e-03,
-+ 1.72913546169589605814e-03,
-+ 1.65568563276817190023e-03,
-+ 1.58134559176179804313e-03,
-+ 1.50615847470803379538e-03,
-+ 1.43016786893666826216e-03,
-+ 1.35341778783496088576e-03,
-+ 1.27595264538327276757e-03,
-+ 1.19781723048013573688e-03,
-+ 1.11905668107298707052e-03,
-+ 1.03971645810893640986e-03,
-+ 9.59842319320685158357e-04,
-+ 8.79480292862680045757e-04,
-+ 7.98676650812700722817e-04,
-+ 7.17477882554103476610e-04,
-+ 6.35930668054020351715e-04,
-+ 5.54081851052870642121e-04,
-+ 4.71978412180657619888e-04,
-+ 3.89667442014872736876e-04,
-+ 3.07196114096923401319e-04,
-+ 2.24611657920471623987e-04,
-+ 1.41961331909191799819e-04,
-+ 5.92923963973368171269e-05,
-+-2.33479133692958273222e-05,
-+-1.05912414198647058736e-04,
-+-1.88354001866488713528e-04,
-+-2.70625677966048025676e-04,
-+-3.52680576676401690700e-04,
-+-4.34471991434995103831e-04,
-+-5.15953401499023248805e-04,
-+-5.97078498380584432939e-04,
-+-6.77801212140594598610e-04,
-+-7.58075737526550121580e-04,
-+-8.37856559939326346609e-04,
-+-9.17098481214296688997e-04,
-+-9.95756645202195691743e-04,
-+-1.07378656313515804741e-03,
-+-1.15114413876416595180e-03,
-+-1.22778569325242541826e-03,
-+-1.30366798981191894975e-03,
-+-1.37874825806924973352e-03,
-+-1.45298421814578576985e-03,
-+-1.52633410443975465511e-03,
-+-1.59875668909689456869e-03,
-+-1.67021130515527735372e-03,
-+-1.74065786935308415041e-03,
-+-1.81005690458521380053e-03,
-+-1.87836956199671648374e-03,
-+-1.94555764270060572822e-03,
-+-2.01158361910792719829e-03,
-+-2.07641065585818058656e-03,
-+-2.14000263033844919519e-03,
-+-2.20232415277983682028e-03,
-+-2.26334058592000822788e-03,
-+-2.32301806422092246146e-03,
-+-2.38132351263152302820e-03,
-+-2.43822466488363524817e-03,
-+-2.49369008131333563458e-03,
-+-2.54768916619557087705e-03,
-+-2.60019218458394001450e-03,
-+-2.65117027864584945199e-03,
-+-2.70059548348453026811e-03,
-+-2.74844074243833736901e-03,
-+-2.79467992185021508675e-03,
-+-2.83928782529839322801e-03,
-+-2.88224020728095487592e-03,
-+-2.92351378634650351657e-03,
-+-2.96308625766492647960e-03,
-+-3.00093630502965393395e-03,
-+-3.03704361228680124254e-03,
-+-3.07138887418407363628e-03,
-+-3.10395380663392372531e-03,
-+-3.13472115638562150164e-03,
-+-3.16367471010103352980e-03,
-+-3.19079930282948481812e-03,
-+-3.21608082587721087059e-03,
-+-3.23950623406747337252e-03,
-+-3.26106355238757342555e-03,
-+-3.28074188201942212179e-03,
-+-3.29853140575076496377e-03,
-+-3.31442339276444199875e-03,
-+-3.32841020280317178778e-03,
-+-3.34048528970836431165e-03,
-+-3.35064320433112964454e-03,
-+-3.35887959681426418596e-03,
-+-3.36519121824467148246e-03,
-+-3.36957592167543267675e-03,
-+-3.37203266251754653349e-03,
-+-3.37256149830169856332e-03,
-+-3.37116358781047254292e-03,
-+-3.36784118958214327699e-03,
-+-3.36259765978729266434e-03,
-+-3.35543744947994172431e-03,
-+-3.34636610122527418040e-03,
-+-3.33539024510636330015e-03,
-+-3.32251759411259645072e-03,
-+-3.30775693891291596924e-03,
-+-3.29111814201739957125e-03,
-+-3.27261213133083796178e-03,
-+-3.25225089310266250384e-03,
-+-3.23004746427743008250e-03,
-+-3.20601592425105112044e-03,
-+-3.18017138603743105413e-03,
-+-3.15252998685158682818e-03,
-+-3.12310887811450286003e-03,
-+-3.09192621488647281444e-03,
-+-3.05900114473474978721e-03,
-+-3.02435379604281111970e-03,
-+-2.98800526576807482307e-03,
-+-2.94997760665555814816e-03,
-+-2.91029381391519391745e-03,
-+-2.86897781137080603100e-03,
-+-2.82605443708909163589e-03,
-+-2.78154942849715867623e-03,
-+-2.73548940699755568570e-03,
-+-2.68790186208995533074e-03,
-+-2.63881513500899191754e-03,
-+-2.58825840188760128782e-03,
-+-2.53626165645667129775e-03,
-+-2.48285569229048054193e-03,
-+-2.42807208460824822810e-03,
-+-2.37194317164358134745e-03,
-+-2.31450203559181158161e-03,
-+-2.25578248314654231793e-03,
-+-2.19581902563767547218e-03,
-+-2.13464685878131952071e-03,
-+-2.07230184205435888356e-03,
-+-2.00882047770541138920e-03,
-+-1.94423988941450141647e-03,
-+-1.87859780061385762441e-03,
-+-1.81193251248255946667e-03,
-+-1.74428288162779420063e-03,
-+-1.67568829746571096480e-03,
-+-1.60618865931505343768e-03,
-+-1.53582435321696704651e-03,
-+-1.46463622849387254017e-03,
-+-1.39266557406221786267e-03,
-+-1.31995409451166924308e-03,
-+-1.24654388596452171158e-03,
-+-1.17247741173051502755e-03,
-+-1.09779747777003140220e-03,
-+-1.02254720797977159512e-03,
-+-9.46770019316456627398e-04,
-+-8.70509596771090981941e-04,
-+-7.93809868209522859206e-04,
-+-7.16714979093283142790e-04,
-+-6.39269267095267379464e-04,
-+-5.61517236624901622949e-04,
-+-4.83503533277372383840e-04,
-+-4.05272918221601325187e-04,
-+-3.26870242541634718064e-04,
-+-2.48340421546139789206e-04,
-+-1.69728409060813500292e-04,
-+-9.10791717177389864102e-05,
-+-1.24376632583528602298e-05,
-+ 6.61512011385834202077e-05,
-+ 1.44642570486082041627e-04,
-+ 2.22991683562456983764e-04,
-+ 3.01153894413956873654e-04,
-+ 3.79084697772648165047e-04,
-+ 4.56739754373683643027e-04,
-+ 5.34074916159440896482e-04,
-+ 6.11046251354811493887e-04,
-+ 6.87610069400060091790e-04,
-+ 7.63722945726494719700e-04,
-+ 8.39341746362165606193e-04,
-+ 9.14423652352394037562e-04,
-+ 9.88926183981333204245e-04,
-+ 1.06280722478213824657e-03,
-+ 1.13602504532090125416e-03,
-+ 1.20853832674150526647e-03,
-+ 1.28030618405801659317e-03,
-+ 1.35128818918151915977e-03,
-+ 1.42144439366839823308e-03,
-+ 1.49073535117733935521e-03,
-+ 1.55912213962240372468e-03,
-+ 1.62656638300974010561e-03,
-+ 1.69303027294565532589e-03,
-+ 1.75847658980445606218e-03,
-+ 1.82286872354303674040e-03,
-+ 1.88617069415219075317e-03,
-+ 1.94834717173209578771e-03,
-+ 2.00936349618086648045e-03,
-+ 2.06918569648611430298e-03,
-+ 2.12778050960779879092e-03,
-+ 2.18511539894190561298e-03,
-+ 2.24115857235570323583e-03,
-+ 2.29587899978361603334e-03,
-+ 2.34924643037442331187e-03,
-+ 2.40123140918023199666e-03,
-+ 2.45180529337806233856e-03,
-+ 2.50094026801512278949e-03,
-+ 2.54860936126915377242e-03,
-+ 2.59478645921546943742e-03,
-+ 2.63944632009264395014e-03,
-+ 2.68256458805902911827e-03,
-+ 2.72411780643292029958e-03,
-+ 2.76408343040847976832e-03,
-+ 2.80243983924151687792e-03,
-+ 2.83916634789766180597e-03,
-+ 2.87424321815756868281e-03,
-+ 2.90765166917223739917e-03,
-+ 2.93937388746383842716e-03,
-+ 2.96939303636573146555e-03,
-+ 2.99769326489773184699e-03,
-+ 3.02425971607121193627e-03,
-+ 3.04907853462010837095e-03,
-+ 3.07213687415372471712e-03,
-+ 3.09342290372770093235e-03,
-+ 3.11292581382988705480e-03,
-+ 3.13063582177805889775e-03,
-+ 3.14654417652693004295e-03,
-+ 3.16064316288211652126e-03,
-+ 3.17292610511905577922e-03,
-+ 3.18338737000537549265e-03,
-+ 3.19202236922536521438e-03,
-+ 3.19882756120557767629e-03,
-+ 3.20380045234103065510e-03,
-+ 3.20693959762191095619e-03,
-+ 3.20824460066048821466e-03,
-+ 3.20771611311912148781e-03,
-+ 3.20535583353980316201e-03,
-+ 3.20116650557659455922e-03,
-+ 3.19515191563226816363e-03,
-+ 3.18731688990105815895e-03,
-+ 3.17766729081954413250e-03,
-+ 3.16621001292834072099e-03,
-+ 3.15295297814715538495e-03,
-+ 3.13790513046660092533e-03,
-+ 3.12107643006004570677e-03,
-+ 3.10247784681945935892e-03,
-+ 3.08212135331927200924e-03,
-+ 3.06001991721279766046e-03,
-+ 3.03618749306580832173e-03,
-+ 3.01063901363274712478e-03,
-+ 2.98339038058057295921e-03,
-+ 2.95445845466603060347e-03,
-+ 2.92386104537267895939e-03,
-+ 2.89161690001368777356e-03,
-+ 2.85774569230700953987e-03,
-+ 2.82226801043036334277e-03,
-+ 2.78520534456247253682e-03,
-+ 2.74658007391870816194e-03,
-+ 2.70641545328861908917e-03,
-+ 2.66473559908350773537e-03,
-+ 2.62156547490237238143e-03,
-+ 2.57693087662487496647e-03,
-+ 2.53085841704014631939e-03,
-+ 2.48337551002058860156e-03,
-+ 2.43451035425012096355e-03,
-+ 2.38429191651639985419e-03,
-+ 2.33274991457697866704e-03,
-+ 2.27991479960949847833e-03,
-+ 2.22581773825620892956e-03,
-+ 2.17049059427346612006e-03,
-+ 2.11396590979692159534e-03,
-+ 2.05627688623344091062e-03,
-+ 1.99745736479101619609e-03,
-+ 1.93754180665763118922e-03,
-+ 1.87656527284175219002e-03,
-+ 1.81456340368482097088e-03,
-+ 1.75157239805861998823e-03,
-+ 1.68762899225976484990e-03,
-+ 1.62277043861255095177e-03,
-+ 1.55703448379367948885e-03,
-+ 1.49045934689147926804e-03,
-+ 1.42308369721128166394e-03,
-+ 1.35494663184088722126e-03,
-+ 1.28608765298868091623e-03,
-+ 1.21654664510756371255e-03,
-+ 1.14636385181799576628e-03,
-+ 1.07557985264340023011e-03,
-+ 1.00423553957145047719e-03,
-+ 9.32372093454700246948e-04,
-+ 8.60030960264205842671e-04,
-+ 7.87253827209889473632e-04,
-+ 7.14082598740849215993e-04,
-+ 6.40559372440761354631e-04,
-+ 5.66726414830463851718e-04,
-+ 4.92626137092837322433e-04,
-+ 4.18301070733919581456e-04,
-+ 3.43793843193061820010e-04,
-+ 2.69147153417339558834e-04,
-+ 1.94403747414189487621e-04,
-+ 1.19606393795037383994e-04,
-+ 4.47978593251173554416e-05,
-+-2.99791155070713611101e-05,
-+-1.04681840886644762128e-04,
-+-1.79267702021634553217e-04,
-+-2.53694183430834704039e-04,
-+-3.27918893156363931707e-04,
-+-4.01899586887169662890e-04,
-+-4.75594191979749616409e-04,
-+-5.48960831362461866741e-04,
-+-6.21957847309750270874e-04,
-+-6.94543825073334680428e-04,
-+-7.66677616355743358524e-04,
-+-8.38318362614142603174e-04,
-+-9.09425518181231052305e-04,
-+-9.79958873188954042791e-04,
-+-1.04987857628321295568e-03,
-+-1.11914515711671069299e-03,
-+-1.18771954860611567151e-03,
-+-1.25556310894265384798e-03,
-+-1.32263764334250685968e-03,
-+-1.38890542552527339500e-03,
-+-1.45432921890835268122e-03,
-+-1.51887229750536853490e-03,
-+-1.58249846651689705240e-03,
-+-1.64517208260199325476e-03,
-+-1.70685807381915056156e-03,
-+-1.76752195922558370811e-03,
-+-1.82712986812380161379e-03,
-+-1.88564855894518047276e-03,
-+-1.94304543775902804383e-03,
-+-1.99928857639786617534e-03,
-+-2.05434673018880555040e-03,
-+-2.10818935528026517312e-03,
-+-2.16078662555535365442e-03,
-+-2.21210944912246043961e-03,
-+-2.26212948437317816139e-03,
-+-2.31081915559989232653e-03,
-+-2.35815166816356804741e-03,
-+-2.40410102320373414084e-03,
-+-2.44864203188258338501e-03,
-+-2.49175032915539568928e-03,
-+-2.53340238705979841141e-03,
-+-2.57357552751657147824e-03,
-+-2.61224793463516640271e-03,
-+-2.64939866651717941329e-03,
-+-2.68500766655144999101e-03,
-+-2.71905577419492448452e-03,
-+-2.75152473523297344538e-03,
-+-2.78239721151426859513e-03,
-+-2.81165679015500094215e-03,
-+-2.83928799220713222809e-03,
-+-2.86527628078656016949e-03,
-+-2.88960806865697647852e-03,
-+-2.91227072526506090486e-03,
-+-2.93325258322398594105e-03,
-+-2.95254294424161442545e-03,
-+-2.97013208449042583406e-03,
-+-2.98601125941669364242e-03,
-+-3.00017270798633986159e-03,
-+-3.01260965636595103370e-03,
-+-3.02331632103655656429e-03,
-+-3.03228791133956007003e-03,
-+-3.03952063145331409857e-03,
-+-3.04501168179985596748e-03,
-+-3.04875925988140573583e-03,
-+-3.05076256054652829655e-03,
-+-3.05102177568631911103e-03,
-+-3.04953809336118561099e-03,
-+-3.04631369635912632385e-03,
-+-3.04135176018685343333e-03,
-+-3.03465645049527405624e-03,
-+-3.02623291994119940004e-03,
-+-3.01608730448767094895e-03,
-+-3.00422671914520132003e-03,
-+-2.99065925315701369377e-03,
-+-2.97539396463139928575e-03,
-+-2.95844087462449664011e-03,
-+-2.93981096067755893683e-03,
-+-2.91951614981275815730e-03,
-+-2.89756931099181044148e-03,
-+-2.87398424704220179990e-03,
-+-2.84877568605616283970e-03,
-+-2.82195927226750430117e-03,
-+-2.79355155641210087594e-03,
-+-2.76356998557781771697e-03,
-+-2.73203289255012551212e-03,
-+-2.69895948465983821080e-03,
-+-2.66436983213977395327e-03,
-+-2.62828485599736526648e-03,
-+-2.59072631541029923391e-03,
-+-2.55171679465334083972e-03,
-+-2.51127968956342670012e-03,
-+-2.46943919355152629105e-03,
-+-2.42622028316987056393e-03,
-+-2.38164870324227831086e-03,
-+-2.33575095156724138815e-03,
-+-2.28855426320279282948e-03,
-+-2.24008659434175860792e-03,
-+-2.19037660578759365432e-03,
-+-2.13945364604031535577e-03,
-+-2.08734773400249444888e-03,
-+-2.03408954131547529270e-03,
-+-1.97971037433622041798e-03,
-+-1.92424215576537916382e-03,
-+-1.86771740593727280343e-03,
-+-1.81016922378279560696e-03,
-+-1.75163126747638459545e-03,
-+-1.69213773477834518097e-03,
-+-1.63172334308366137785e-03,
-+-1.57042330918990852978e-03,
-+-1.50827332879462073199e-03,
-+-1.44530955573546056152e-03,
-+-1.38156858098379938318e-03,
-+-1.31708741140545613178e-03,
-+-1.25190344829938021362e-03,
-+-1.18605446572830376673e-03,
-+-1.11957858865226037894e-03,
-+-1.05251427087881964557e-03,
-+-9.84900272842268017723e-04,
-+-9.16775639224670039346e-04,
-+-8.48179676431708726506e-04,
-+-7.79151929936275832941e-04,
-+-7.09732161502877071865e-04,
-+-6.39960326305943926796e-04,
-+-5.69876549955214807899e-04,
-+-4.99521105441456947371e-04,
-+-4.28934390015275781964e-04,
-+-3.58156902013427212109e-04,
-+-2.87229217644762195236e-04,
-+-2.16191967749079295199e-04,
-+-1.45085814543370996213e-04,
-+-7.39514283676623567637e-05,
-+-2.82946444373383170840e-06,
-+ 6.82394603388270838424e-05,
-+ 1.39214790597688687322e-04,
-+ 2.10056055579472498182e-04,
-+ 2.80722892215425577894e-04,
-+ 3.51175068097857930472e-04,
-+ 4.21372504364276407804e-04,
-+ 4.91275298476219653143e-04,
-+ 5.60843746879846811494e-04,
-+ 6.30038367535434352430e-04,
-+ 6.98819922302998017792e-04,
-+ 7.67149439171379990757e-04,
-+ 8.34988234318114982448e-04,
-+ 9.02297933988172430955e-04,
-+ 9.69040496177550657667e-04,
-+ 1.03517823211224553603e-03,
-+ 1.10067382750771766003e-03,
-+ 1.16549036359852469825e-03,
-+ 1.22959133792568584519e-03,
-+ 1.29294068487057216450e-03,
-+ 1.35550279592269035112e-03,
-+ 1.41724253967147762606e-03,
-+ 1.47812528150976737508e-03,
-+ 1.53811690303841180558e-03,
-+ 1.59718382116064388891e-03,
-+ 1.65529300685696286952e-03,
-+ 1.71241200362764220237e-03,
-+ 1.76850894559496454178e-03,
-+ 1.82355257525374002750e-03,
-+ 1.87751226086060006570e-03,
-+ 1.93035801345242652959e-03,
-+ 1.98206050348444977674e-03,
-+ 2.03259107707881624474e-03,
-+ 2.08192177187458684826e-03,
-+ 2.13002533247049928231e-03,
-+ 2.17687522545193749141e-03,
-+ 2.22244565399375279199e-03,
-+ 2.26671157203132793423e-03,
-+ 2.30964869799124257813e-03,
-+ 2.35123352807515510060e-03,
-+ 2.39144334908883470295e-03,
-+ 2.43025625080947474746e-03,
-+ 2.46765113788514900417e-03,
-+ 2.50360774125928499736e-03,
-+ 2.53810662911404865891e-03,
-+ 2.57112921732736803004e-03,
-+ 2.60265777943738526798e-03,
-+ 2.63267545610921865559e-03,
-+ 2.66116626409909065240e-03,
-+ 2.68811510471097300096e-03,
-+ 2.71350777174133141537e-03,
-+ 2.73733095890790929794e-03,
-+ 2.75957226675855411477e-03,
-+ 2.78022020905670675522e-03,
-+ 2.79926421864012953122e-03,
-+ 2.81669465275010289657e-03,
-+ 2.83250279782839122292e-03,
-+ 2.84668087377948006433e-03,
-+ 2.85922203769641003479e-03,
-+ 2.87012038704810915068e-03,
-+ 2.87937096232720231986e-03,
-+ 2.88696974915680091081e-03,
-+ 2.89291367985583221592e-03,
-+ 2.89720063446215116837e-03,
-+ 2.89982944121351280883e-03,
-+ 2.90079987648640116524e-03,
-+ 2.90011266419314345591e-03,
-+ 2.89776947463821947862e-03,
-+ 2.89377292283466130279e-03,
-+ 2.88812656628207459208e-03,
-+ 2.88083490220782285907e-03,
-+ 2.87190336427351573453e-03,
-+ 2.86133831874895577796e-03,
-+ 2.84914706015623872201e-03,
-+ 2.83533780638680265804e-03,
-+ 2.81991969329480843959e-03,
-+ 2.80290276877008005807e-03,
-+ 2.78429798629470500945e-03,
-+ 2.76411719798695795433e-03,
-+ 2.74237314713741920855e-03,
-+ 2.71907946024148436046e-03,
-+ 2.69425063853359278432e-03,
-+ 2.66790204902807304155e-03,
-+ 2.64004991507226990932e-03,
-+ 2.61071130641776349285e-03,
-+ 2.57990412881558845576e-03,
-+ 2.54764711314187488125e-03,
-+ 2.51395980406045370728e-03,
-+ 2.47886254822925330629e-03,
-+ 2.44237648205756618242e-03,
-+ 2.40452351902155575872e-03,
-+ 2.36532633654565121670e-03,
-+ 2.32480836245730617881e-03,
-+ 2.28299376102392148624e-03,
-+ 2.23990741857956789096e-03,
-+ 2.19557492874996457166e-03,
-+ 2.15002257728523623811e-03,
-+ 2.10327732650867141317e-03,
-+ 2.05536679939101810111e-03,
-+ 2.00631926325935171576e-03,
-+ 1.95616361315094399245e-03,
-+ 1.90492935482074665296e-03,
-+ 1.85264658741337391243e-03,
-+ 1.79934598580928591972e-03,
-+ 1.74505878265607109780e-03,
-+ 1.68981675009393424863e-03,
-+ 1.63365218118834728926e-03,
-+ 1.57659787107846988304e-03,
-+ 1.51868709785361530318e-03,
-+ 1.45995360316849881639e-03,
-+ 1.40043157260870475105e-03,
-+ 1.34015561581719584022e-03,
-+ 1.27916074639499105850e-03,
-+ 1.21748236158513117693e-03,
-+ 1.15515622175421423141e-03,
-+ 1.09221842968186999730e-03,
-+ 1.02870540967075650360e-03,
-+ 9.64653886488606908747e-04,
-+ 9.00100864155625344717e-04,
-+ 8.35083604587965547955e-04,
-+ 7.69639606110740720837e-04,
-+ 7.03806581852404870327e-04,
-+ 6.37622438033560502181e-04,
-+ 5.71125252161062339600e-04,
-+ 5.04353251142653142593e-04,
-+ 4.37344789331979761672e-04,
-+ 3.70138326518233945050e-04,
-+ 3.02772405872475636971e-04,
-+ 2.35285631863361933882e-04,
-+ 1.67716648154917370023e-04,
-+ 1.00104115498995325769e-04,
-+ 3.24866896350573601776e-05,
-+-3.50970007900988141157e-05,
-+-1.02608376270067855503e-04,
-+-1.70008928441366460871e-04,
-+-2.37260242028708613496e-04,
-+-3.04324016719330044459e-04,
-+-3.71162088955520488940e-04,
-+-4.37736453631852389604e-04,
-+-5.04009285684787491054e-04,
-+-5.69942961563439155249e-04,
-+-6.35500080568199678457e-04,
-+-7.00643486045153811477e-04,
-+-7.65336286425376288202e-04,
-+-8.29541876096107381675e-04,
-+-8.93223956092492241653e-04,
-+-9.56346554598112288600e-04,
-+-1.01887404724274391321e-03,
-+-1.08077117718591146113e-03,
-+-1.14200307497491554062e-03,
-+-1.20253527816616481716e-03,
-+-1.26233375069880002922e-03,
-+-1.32136490200969610419e-03,
-+-1.37959560587909771390e-03,
-+-1.43699321899669958842e-03,
-+-1.49352559923677944212e-03,
-+-1.54916112363357523669e-03,
-+-1.60386870604548384400e-03,
-+-1.65761781449959505821e-03,
-+-1.71037848820545417342e-03,
-+-1.76212135422995869009e-03,
-+-1.81281764382279454370e-03,
-+-1.86243920838466956759e-03,
-+-1.91095853506853020909e-03,
-+-1.95834876200555885878e-03,
-+-2.00458369314743039755e-03,
-+-2.04963781271666782222e-03,
-+-2.09348629925715234990e-03,
-+-2.13610503927705698904e-03,
-+-2.17747064047668550252e-03,
-+-2.21756044455409095234e-03,
-+-2.25635253958129250451e-03,
-+-2.29382577194474921237e-03,
-+-2.32995975784284353738e-03,
-+-2.36473489433514528352e-03,
-+-2.39813236993652442383e-03,
-+-2.43013417475133235504e-03,
-+-2.46072311014130552798e-03,
-+-2.48988279792284553787e-03,
-+-2.51759768908801960866e-03,
-+-2.54385307204538875167e-03,
-+-2.56863508037586708854e-03,
-+-2.59193070009968232204e-03,
-+-2.61372777645068558178e-03,
-+-2.63401502015447874783e-03,
-+-2.65278201320723284670e-03,
-+-2.67001921415216522324e-03,
-+-2.68571796285115840450e-03,
-+-2.69987048474913367627e-03,
-+-2.71246989462914107200e-03,
-+-2.72351019985639722365e-03,
-+-2.73298630310992796480e-03,
-+-2.74089400460035331406e-03,
-+-2.74723000377341628614e-03,
-+-2.75199190049820862497e-03,
-+-2.75517819574011687753e-03,
-+-2.75678829171838255668e-03,
-+-2.75682249154861379672e-03,
-+-2.75528199837085348636e-03,
-+-2.75216891396407340939e-03,
-+-2.74748623684835597061e-03,
-+-2.74123785987614347961e-03,
-+-2.73342856731443109575e-03,
-+-2.72406403141984849309e-03,
-+-2.71315080850912087457e-03,
-+-2.70069633452742902113e-03,
-+-2.68670892011764299301e-03,
-+-2.67119774519362050691e-03,
-+-2.65417285302107976847e-03,
-+-2.63564514380968837812e-03,
-+-2.61562636782076193137e-03,
-+-2.59412911799431541299e-03,
-+-2.57116682210057310998e-03,
-+-2.54675373442056615300e-03,
-+-2.52090492696093165098e-03,
-+-2.49363628020824292311e-03,
-+-2.46496447342882049614e-03,
-+-2.43490697451945311766e-03,
-+-2.40348202941552966175e-03,
-+-2.37070865106279527260e-03,
-+-2.33660660795969189057e-03,
-+-2.30119641227629137537e-03,
-+-2.26449930755836560670e-03,
-+-2.22653725602254669996e-03,
-+-2.18733292545093653547e-03,
-+-2.14690967569279187940e-03,
-+-2.10529154478122275743e-03,
-+-2.06250323467321427379e-03,
-+-2.01857009662140480036e-03,
-+-1.97351811618623213668e-03,
-+-1.92737389789730405483e-03,
-+-1.88016464957305564146e-03,
-+-1.83191816630788313451e-03,
-+-1.78266281413625186578e-03,
-+-1.73242751338296301945e-03,
-+-1.68124172171028180012e-03,
-+-1.62913541687057699184e-03,
-+-1.57613907917578230551e-03,
-+-1.52228367369270224489e-03,
-+-1.46760063217584650445e-03,
-+-1.41212183474704526358e-03,
-+-1.35587959133381627010e-03,
-+-1.29890662287597178325e-03,
-+-1.24123604231228925124e-03,
-+-1.18290133535796414613e-03,
-+-1.12393634108397949545e-03,
-+-1.06437523230972224016e-03,
-+-1.00425249582011886888e-03,
-+-9.43602912418799676629e-04,
-+-8.82461536828750689118e-04,
-+-8.20863677452122195502e-04,
-+-7.58844876000883323576e-04,
-+-6.96440887009666122730e-04,
-+-6.33687657243661695526e-04,
-+-5.70621305011907871928e-04,
-+-5.07278099399384235432e-04,
-+-4.43694439428299856887e-04,
-+-3.79906833162163342851e-04,
-+-3.15951876763069777060e-04,
-+-2.51866233515757136346e-04,
-+-1.87686612828893105692e-04,
-+-1.23449749226707587929e-04,
-+-5.91923813425564756662e-05,
-+ 5.04876907352367874530e-06,
-+ 6.92370181212766702379e-05,
-+ 1.33335740678748094525e-04,
-+ 1.97308391280935971606e-04,
-+ 2.61118524936681541647e-04,
-+ 3.24729817871949365607e-04,
-+ 3.88106088187632042828e-04,
-+ 4.51211316420591741425e-04,
-+ 5.14009665995129438193e-04,
-+ 5.76465503554872784643e-04,
-+ 6.38543419161980286940e-04,
-+ 7.00208246353774092785e-04,
-+ 7.61425082043918786609e-04,
-+ 8.22159306257914143483e-04,
-+ 8.82376601691744100360e-04,
-+ 9.42042973081658576232e-04,
-+ 1.00112476637558055551e-03,
-+ 1.05958868769426566188e-03,
-+ 1.11740182207199128042e-03,
-+ 1.17453165196615329918e-03,
-+ 1.23094607552536169578e-03,
-+ 1.28661342460581668880e-03,
-+ 1.34150248252584160767e-03,
-+ 1.39558250154863013048e-03,
-+ 1.44882322008345787619e-03,
-+ 1.50119487959565409141e-03,
-+ 1.55266824121634344422e-03,
-+ 1.60321460204141557661e-03,
-+ 1.65280581111278590707e-03,
-+ 1.70141428507094454904e-03,
-+ 1.74901302347134422581e-03,
-+ 1.79557562375571026954e-03,
-+ 1.84107629587033070663e-03,
-+ 1.88548987652245613779e-03,
-+ 1.92879184306802143982e-03,
-+ 1.97095832702225181102e-03,
-+ 2.01196612718603342132e-03,
-+ 2.05179272238057222588e-03,
-+ 2.09041628378424165433e-03,
-+ 2.12781568686330919971e-03,
-+ 2.16397052289168034464e-03,
-+ 2.19886111005235902402e-03,
-+ 2.23246850411500585495e-03,
-+ 2.26477450868369997727e-03,
-+ 2.29576168500963484834e-03,
-+ 2.32541336136273067009e-03,
-+ 2.35371364195842858874e-03,
-+ 2.38064741543364153872e-03,
-+ 2.40620036286810995776e-03,
-+ 2.43035896534666076563e-03,
-+ 2.45311051105864775732e-03,
-+ 2.47444310193039576293e-03,
-+ 2.49434565978784222526e-03,
-+ 2.51280793204573761265e-03,
-+ 2.52982049692079043884e-03,
-+ 2.54537476816590630541e-03,
-+ 2.55946299932366090960e-03,
-+ 2.57207828749620934228e-03,
-+ 2.58321457663059431131e-03,
-+ 2.59286666031753468623e-03,
-+ 2.60103018410256332446e-03,
-+ 2.60770164730860518412e-03,
-+ 2.61287840436931441054e-03,
-+ 2.61655866567281477839e-03,
-+ 2.61874149791569560408e-03,
-+ 2.61942682396747910170e-03,
-+ 2.61861542224603579751e-03,
-+ 2.61630892560461673912e-03,
-+ 2.61250981973162573271e-03,
-+ 2.60722144106427262261e-03,
-+ 2.60044797421789914901e-03,
-+ 2.59219444893257419671e-03,
-+ 2.58246673653929684211e-03,
-+ 2.57127154594804412449e-03,
-+ 2.55861641916043432848e-03,
-+ 2.54450972630984205078e-03,
-+ 2.52896066023234862910e-03,
-+ 2.51197923057173110040e-03,
-+ 2.49357625742245613346e-03,
-+ 2.47376336451454867035e-03,
-+ 2.45255297194462698260e-03,
-+ 2.42995828845761051989e-03,
-+ 2.40599330328385152544e-03,
-+ 2.38067277753669032450e-03,
-+ 2.35401223517576205571e-03,
-+ 2.32602795354144506468e-03,
-+ 2.29673695346632733560e-03,
-+ 2.26615698896941598212e-03,
-+ 2.23430653653983570320e-03,
-+ 2.20120478401572821497e-03,
-+ 2.16687161906578855050e-03,
-+ 2.13132761727950238717e-03,
-+ 2.09459402987411226829e-03,
-+ 2.05669277102470907798e-03,
-+ 2.01764640482596626161e-03,
-+ 1.97747813189227050409e-03,
-+ 1.93621177560486024995e-03,
-+ 1.89387176801387676663e-03,
-+ 1.85048313540364336473e-03,
-+ 1.80607148352974512806e-03,
-+ 1.76066298253653116292e-03,
-+ 1.71428435156398707023e-03,
-+ 1.66696284305293466847e-03,
-+ 1.61872622675783670206e-03,
-+ 1.56960277347651289311e-03,
-+ 1.51962123850639114868e-03,
-+ 1.46881084483655192582e-03,
-+ 1.41720126608627463617e-03,
-+ 1.36482260919915132126e-03,
-+ 1.31170539690283571681e-03,
-+ 1.25788054994554945182e-03,
-+ 1.20337936911878791608e-03,
-+ 1.14823351707673366670e-03,
-+ 1.09247499996376496584e-03,
-+ 1.03613614885946750573e-03,
-+ 9.79249601052817287769e-04,
-+ 9.21848281156024094984e-04,
-+ 8.63965382068984373391e-04,
-+ 8.05634345805350776497e-04,
-+ 7.46888844191288077054e-04,
-+ 6.87762759448037191978e-04,
-+ 6.28290164669462083795e-04,
-+ 5.68505304205851338083e-04,
-+ 5.08442573965285464499e-04,
-+ 4.48136501643423001973e-04,
-+ 3.87621726894541677056e-04,
-+ 3.26932981452717592256e-04,
-+ 2.66105069217038663586e-04,
-+ 2.05172846310758418649e-04,
-+ 1.44171201126380563911e-04,
-+ 8.31350343675788742547e-05,
-+ 2.20992391004467811420e-05,
-+-3.89013191759796718742e-05,
-+-9.98318224274676811183e-05,
-+-1.60657519939763258031e-04,
-+-2.21343748119307129384e-04,
-+-2.81855950229735626421e-04,
-+-3.42159696050412485968e-04,
-+-4.02220701448342615129e-04,
-+-4.62004847850846784695e-04,
-+-5.21478201608437975934e-04,
-+-5.80607033236791485534e-04,
-+-6.39357836527398360783e-04,
-+-6.97697347514598421869e-04,
-+-7.55592563290745562223e-04,
-+-8.13010760656402635231e-04,
-+-8.69919514596503569252e-04,
-+-9.26286716571595044288e-04,
-+-9.82080592613842522434e-04,
-+-1.03726972121798914454e-03,
-+-1.09182305101626067265e-03,
-+-1.14570991822856215955e-03,
-+-1.19890006387727231750e-03,
-+-1.25136365075697989814e-03,
-+-1.30307128015050440427e-03,
-+-1.35399400828092701665e-03,
-+-1.40410336249047434758e-03,
-+-1.45337135713807666729e-03,
-+-1.50177050920588701921e-03,
-+-1.54927385360641156620e-03,
-+-1.59585495818171090726e-03,
-+-1.64148793838632899543e-03,
-+-1.68614747164579970896e-03,
-+-1.72980881138278994556e-03,
-+-1.77244780070314389073e-03,
-+-1.81404088573422256521e-03,
-+-1.85456512860821833531e-03,
-+-1.89399822008349183119e-03,
-+-1.93231849179640994586e-03,
-+-1.96950492813784778720e-03,
-+-2.00553717774697637041e-03,
-+-2.04039556461697076800e-03,
-+-2.07406109880563802386e-03,
-+-2.10651548674606337030e-03,
-+-2.13774114115079620635e-03,
-+-2.16772119050517375963e-03,
-+-2.19643948814392904120e-03,
-+-2.22388062090664783907e-03,
-+-2.25002991736723010133e-03,
-+-2.27487345563314293309e-03,
-+-2.29839807071028278881e-03,
-+-2.32059136142953635965e-03,
-+-2.34144169693150825881e-03,
-+-2.36093822270602455432e-03,
-+-2.37907086618326232483e-03,
-+-2.39583034187382639194e-03,
-+-2.41120815605485715877e-03,
-+-2.42519661100030125764e-03,
-+-2.43778880875283833138e-03,
-+-2.44897865443608397581e-03,
-+-2.45876085910516064756e-03,
-+-2.46713094213460307561e-03,
-+-2.47408523314259810866e-03,
-+-2.47962087345062007909e-03,
-+-2.48373581707827476711e-03,
-+-2.48642883127294603979e-03,
-+-2.48769949657436095780e-03,
-+-2.48754820641444327964e-03,
-+-2.48597616625299746435e-03,
-+-2.48298539225010744813e-03,
-+-2.47857870947639034181e-03,
-+-2.47275974966242300529e-03,
-+-2.46553294848908619713e-03,
-+-2.45690354242066423887e-03,
-+-2.44687756508286339413e-03,
-+-2.43546184318826561266e-03,
-+-2.42266399201183056655e-03,
-+-2.40849241041931304286e-03,
-+-2.39295627545196452554e-03,
-+-2.37606553647086871789e-03,
-+-2.35783090886447369364e-03,
-+-2.33826386732362018900e-03,
-+-2.31737663868781000251e-03,
-+-2.29518219436743642001e-03,
-+-2.27169424234655459999e-03,
-+-2.24692721877107516593e-03,
-+-2.22089627912754614472e-03,
-+-2.19361728901783497453e-03,
-+-2.16510681453538442881e-03,
-+-2.13538211224875490099e-03,
-+-2.10446111879856838367e-03,
-+-2.07236244011410305002e-03,
-+-2.03910534025573964012e-03,
-+-2.00470972989070942219e-03,
-+-1.96919615440774254875e-03,
-+-1.93258578167894933507e-03,
-+-1.89490038947546677803e-03,
-+-1.85616235254462648083e-03,
-+-1.81639462935595909568e-03,
-+-1.77562074852458812169e-03,
-+-1.73386479491910482434e-03,
-+-1.69115139546278155785e-03,
-+-1.64750570463616328315e-03,
-+-1.60295338968996568633e-03,
-+-1.55752061557586866242e-03,
-+-1.51123402960583901912e-03,
-+-1.46412074584717846748e-03,
-+-1.41620832926347625658e-03,
-+-1.36752477961040201301e-03,
-+-1.31809851509572971071e-03,
-+-1.26795835581320162112e-03,
-+-1.21713350695978428199e-03,
-+-1.16565354184613783825e-03,
-+-1.11354838471016369394e-03,
-+-1.06084829334356697123e-03,
-+-1.00758384154156217620e-03,
-+-9.53785901385918667879e-04,
-+-8.99485625371226915105e-04,
-+-8.44714428385682711276e-04,
-+-7.89503969555520172287e-04,
-+-7.33886133964478507875e-04,
-+-6.77893014258843288299e-04,
-+-6.21556892147806690219e-04,
-+-5.64910219810742480866e-04,
-+-5.07985601222065157219e-04,
-+-4.50815773403514705956e-04,
-+-3.93433587615536740044e-04,
-+-3.35871990498167328609e-04,
-+-2.78164005172315390892e-04,
-+-2.20342712312250957329e-04,
-+-1.62441231200158043299e-04,
-+-1.04492700773580143945e-04,
-+-4.65302606765986506319e-05,
-+ 1.14129676744331286925e-05,
-+ 6.93038999997214335376e-05,
-+ 1.27109508029058849467e-04,
-+ 1.84796838327256962358e-04,
-+ 2.42333031062709627164e-04,
-+ 2.99685338706966609285e-04,
-+ 3.56821144656121883639e-04,
-+ 4.13707981761937345928e-04,
-+ 4.70313550763611239701e-04,
-+ 5.26605738608316954405e-04,
-+ 5.82552636651546872429e-04,
-+ 6.38122558725952955180e-04,
-+ 6.93284059068853498672e-04,
-+ 7.48005950098214232938e-04,
-+ 8.02257320027068118913e-04,
-+ 8.56007550306428347843e-04,
-+ 9.09226332886875140971e-04,
-+ 9.61883687289077828758e-04,
-+ 1.01394997747366656139e-03,
-+ 1.06539592850096254475e-03,
-+ 1.11619264297115245756e-03,
-+ 1.16631161723606104411e-03,
-+ 1.21572475737255643845e-03,
-+ 1.26440439490956338907e-03,
-+ 1.31232330229981257463e-03,
-+ 1.35945470812689692131e-03,
-+ 1.40577231203991388428e-03,
-+ 1.45125029940738111550e-03,
-+ 1.49586335568145547929e-03,
-+ 1.53958668046561540123e-03,
-+ 1.58239600127717565045e-03,
-+ 1.62426758699731900969e-03,
-+ 1.66517826100116947581e-03,
-+ 1.70510541396065628053e-03,
-+ 1.74402701631310862347e-03,
-+ 1.78192163038870358960e-03,
-+ 1.81876842219015340089e-03,
-+ 1.85454717281811399567e-03,
-+ 1.88923828953608337507e-03,
-+ 1.92282281646894998711e-03,
-+ 1.95528244492883035086e-03,
-+ 1.98659952336315047752e-03,
-+ 2.01675706691958021854e-03,
-+ 2.04573876662207838895e-03,
-+ 2.07352899815367369349e-03,
-+ 2.10011283024123633634e-03,
-+ 2.12547603263724084119e-03,
-+ 2.14960508369503545609e-03,
-+ 2.17248717753304627920e-03,
-+ 2.19411023078435168249e-03,
-+ 2.21446288892813546861e-03,
-+ 2.23353453219959832005e-03,
-+ 2.25131528107543575634e-03,
-+ 2.26779600133197476938e-03,
-+ 2.28296830867344077709e-03,
-+ 2.29682457292811666866e-03,
-+ 2.30935792181020602132e-03,
-+ 2.32056224424581451771e-03,
-+ 2.33043219326110580616e-03,
-+ 2.33896318843187242878e-03,
-+ 2.34615141789296230077e-03,
-+ 2.35199383990705723768e-03,
-+ 2.35648818399214129982e-03,
-+ 2.35963295160742693446e-03,
-+ 2.36142741639763483266e-03,
-+ 2.36187162399587079545e-03,
-+ 2.36096639138556364801e-03,
-+ 2.35871330582219018365e-03,
-+ 2.35511472331569049476e-03,
-+ 2.35017376667488861117e-03,
-+ 2.34389432311526155553e-03,
-+ 2.33628104143192337830e-03,
-+ 2.32733932873959879425e-03,
-+ 2.31707534678196646130e-03,
-+ 2.30549600781271638028e-03,
-+ 2.29260897005103539067e-03,
-+ 2.27842263271448887407e-03,
-+ 2.26294613063242897391e-03,
-+ 2.24618932844335367563e-03,
-+ 2.22816281437991214193e-03,
-+ 2.20887789364531414785e-03,
-+ 2.18834658138542404587e-03,
-+ 2.16658159526062063169e-03,
-+ 2.14359634762239202599e-03,
-+ 2.11940493729897636022e-03,
-+ 2.09402214099534654534e-03,
-+ 2.06746340431283176509e-03,
-+ 2.03974483239339685059e-03,
-+ 2.01088318019464239519e-03,
-+ 1.98089584240138030097e-03,
-+ 1.94980084297942022308e-03,
-+ 1.91761682437821957652e-03,
-+ 1.88436303638870564399e-03,
-+ 1.85005932466290553585e-03,
-+ 1.81472611890221816218e-03,
-+ 1.77838442072136338791e-03,
-+ 1.74105579119516714129e-03,
-+ 1.70276233809558063745e-03,
-+ 1.66352670282644788877e-03,
-+ 1.62337204706380910935e-03,
-+ 1.58232203910926546089e-03,
-+ 1.54040083996521471633e-03,
-+ 1.49763308913912528489e-03,
-+ 1.45404389018587740061e-03,
-+ 1.40965879599663345551e-03,
-+ 1.36450379384215388784e-03,
-+ 1.31860529018035092276e-03,
-+ 1.27199009523587059159e-03,
-+ 1.22468540736182600857e-03,
-+ 1.17671879719162628813e-03,
-+ 1.12811819159096510083e-03,
-+ 1.07891185741895972300e-03,
-+ 1.02912838510792908377e-03,
-+ 9.78796672071337260299e-04,
-+ 9.27945905949520053434e-04,
-+ 8.76605547702895976370e-04,
-+ 8.24805314562447990448e-04,
-+ 7.72575162847333337356e-04,
-+ 7.19945270659597320352e-04,
-+ 6.66946020465617123510e-04,
-+ 6.13607981575178514436e-04,
-+ 5.59961892527424567705e-04,
-+ 5.06038643393795593145e-04,
-+ 4.51869258009022058478e-04,
-+ 3.97484876139576502260e-04,
-+ 3.42916735599798760004e-04,
-+ 2.88196154326876910479e-04,
-+ 2.33354512423656609626e-04,
-+ 1.78423234180534077487e-04,
-+ 1.23433770086348173567e-04,
-+ 6.84175788386079240409e-05,
-+ 1.34061093633470900020e-05,
-+-4.15692171451308774711e-05,
-+-9.64770251543709412689e-05,
-+-1.51286002683524126340e-04,
-+-2.05964919142553784092e-04,
-+-2.60482643110675150724e-04,
-+-3.14808160044301459275e-04,
-+-3.68910589903529524333e-04,
-+-4.22759204688063789518e-04,
-+-4.76323445872630008881e-04,
-+-5.29572941731087281150e-04,
-+-5.82477524540275987987e-04,
-+-6.35007247653846472989e-04,
-+-6.87132402435543243602e-04,
-+-7.38823535043645019879e-04,
-+-7.90051463056118570549e-04,
-+-8.40787291927532235911e-04,
-+-8.91002431268342548823e-04,
-+-9.40668610937454570224e-04,
-+-9.89757896938941268347e-04,
-+-1.03824270711407040668e-03,
-+-1.08609582661974403764e-03,
-+-1.13329042318477575535e-03,
-+-1.17980006213536797732e-03,
-+-1.22559872118147396639e-03,
-+-1.27066080495571239080e-03,
-+-1.31496115929677771621e-03,
-+-1.35847508526934588474e-03,
-+-1.40117835291272236839e-03,
-+-1.44304721471052890651e-03,
-+-1.48405841877397026707e-03,
-+-1.52418922173162092390e-03,
-+-1.56341740131789178406e-03,
-+-1.60172126865418262831e-03,
-+-1.63907968021530041879e-03,
-+-1.67547204947450902382e-03,
-+-1.71087835822147623158e-03,
-+-1.74527916754618566374e-03,
-+-1.77865562848291466208e-03,
-+-1.81098949230900328755e-03,
-+-1.84226312049221930059e-03,
-+-1.87245949428157002978e-03,
-+-1.90156222393633397329e-03,
-+-1.92955555758831764739e-03,
-+-1.95642438973256090409e-03,
-+-1.98215426934193923725e-03,
-+-2.00673140760134708499e-03,
-+-2.03014268525729749126e-03,
-+-2.05237565957906665723e-03,
-+-2.07341857092785582239e-03,
-+-2.09326034893013391766e-03,
-+-2.11189061825244484699e-03,
-+-2.12929970397441031132e-03,
-+-2.14547863655709580497e-03,
-+-2.16041915640460824299e-03,
-+-2.17411371801621297953e-03,
-+-2.18655549372708977660e-03,
-+-2.19773837703605891963e-03,
-+-2.20765698551850719430e-03,
-+-2.21630666332326515741e-03,
-+-2.22368348325234152507e-03,
-+-2.22978424842263864281e-03,
-+-2.23460649350903971591e-03,
-+-2.23814848556852345751e-03,
-+-2.24040922444509972219e-03,
-+-2.24138844275575217432e-03,
-+-2.24108660545765600580e-03,
-+-2.23950490899731862252e-03,
-+-2.23664528004239790415e-03,
-+-2.23251037379732560767e-03,
-+-2.22710357190395455765e-03,
-+-2.22042897992885809519e-03,
-+-2.21249142443891893065e-03,
-+-2.20329644966735498784e-03,
-+-2.19285031377223701976e-03,
-+-2.18115998469021890940e-03,
-+-2.16823313558786156391e-03,
-+-2.15407813991372407841e-03,
-+-2.13870406605424102225e-03,
-+-2.12212067159678200237e-03,
-+-2.10433839720351734126e-03,
-+-2.08536836009985638782e-03,
-+-2.06522234718151120880e-03,
-+-2.04391280774443356502e-03,
-+-2.02145284584207300324e-03,
-+-1.99785621227463244462e-03,
-+-1.97313729621508525403e-03,
-+-1.94731111647731430260e-03,
-+-1.92039331243139960170e-03,
-+-1.89240013457138639766e-03,
-+-1.86334843474168982726e-03,
-+-1.83325565602760116347e-03,
-+-1.80213982231590299880e-03,
-+-1.77001952753231455231e-03,
-+-1.73691392456148648374e-03,
-+-1.70284271385666495340e-03,
-+-1.66782613174552775577e-03,
-+-1.63188493843921685576e-03,
-+-1.59504040575159230717e-03,
-+-1.55731430453603003801e-03,
-+-1.51872889184707753063e-03,
-+-1.47930689783463205529e-03,
-+-1.43907151237822393368e-03,
-+-1.39804637146942033893e-03,
-+-1.35625554334995140730e-03,
-+-1.31372351441438970504e-03,
-+-1.27047517488496053938e-03,
-+-1.22653580426682431471e-03,
-+-1.18193105659301824634e-03,
-+-1.13668694546695714549e-03,
-+-1.09082982891158691320e-03,
-+-1.04438639403357878127e-03,
-+-9.97383641512322120098e-04,
-+-9.49848869921641547967e-04,
-+-9.01809659894115857315e-04,
-+-8.53293858136809635351e-04,
-+-8.04329561308134524146e-04,
-+-7.54945099763940303053e-04,
-+-7.05169021184243009770e-04,
-+-6.55030074088056891990e-04,
-+-6.04557191246998305335e-04,
-+-5.53779473006872830811e-04,
-+-5.02726170526861184003e-04,
-+-4.51426668945984269337e-04,
-+-3.99910470486500410799e-04,
-+-3.48207177503949535848e-04,
-+-2.96346475493580014358e-04,
-+-2.44358116062887999707e-04,
-+-1.92271899880109192792e-04,
-+-1.40117659608033219131e-04,
-+-8.79252428338516013985e-05,
-+-3.57244950035476513677e-05,
-+ 1.64547576285501491889e-05,
-+ 6.85827250253236744533e-05,
-+ 1.20629670358623862633e-04,
-+ 1.72565926956682051847e-04,
-+ 2.24361915197526828099e-04,
-+ 2.75988159339660512649e-04,
-+ 3.27415304279563739234e-04,
-+ 3.78614132226878525450e-04,
-+ 4.29555579287748767834e-04,
-+ 4.80210751946913818114e-04,
-+ 5.30550943439215389429e-04,
-+ 5.80547650001254260735e-04,
-+ 6.30172586994006268639e-04,
-+ 6.79397704887282211095e-04,
-+ 7.28195205096961932327e-04,
-+ 7.76537555666397547385e-04,
-+ 8.24397506782311470346e-04,
-+ 8.71748106117578472167e-04,
-+ 9.18562713991485446999e-04,
-+ 9.64815018338932312708e-04,
-+ 1.01047904948097389682e-03,
-+ 1.05552919468725366070e-03,
-+ 1.09994021252330666759e-03,
-+ 1.14368724697360216180e-03,
-+ 1.18674584133354179757e-03,
-+ 1.22909195186185872875e-03,
-+ 1.27070196118612760081e-03,
-+ 1.31155269145389143971e-03,
-+ 1.35162141722206191954e-03,
-+ 1.39088587807745310380e-03,
-+ 1.42932429098146206170e-03,
-+ 1.46691536233205330891e-03,
-+ 1.50363829973637033906e-03,
-+ 1.53947282348746166021e-03,
-+ 1.57439917773903939602e-03,
-+ 1.60839814137149570566e-03,
-+ 1.64145103854408192304e-03,
-+ 1.67353974892666301950e-03,
-+ 1.70464671760622052225e-03,
-+ 1.73475496466189292762e-03,
-+ 1.76384809440413852129e-03,
-+ 1.79191030427224506048e-03,
-+ 1.81892639338610754944e-03,
-+ 1.84488177074716187820e-03,
-+ 1.86976246308427976328e-03,
-+ 1.89355512234033978962e-03,
-+ 1.91624703279555906599e-03,
-+ 1.93782611782377474016e-03,
-+ 1.95828094627808731512e-03,
-+ 1.97760073850255548022e-03,
-+ 1.99577537196677290074e-03,
-+ 2.01279538652043366379e-03,
-+ 2.02865198926522683279e-03,
-+ 2.04333705904144154533e-03,
-+ 2.05684315052714027094e-03,
-+ 2.06916349794801935486e-03,
-+ 2.08029201839576892777e-03,
-+ 2.09022331475368274706e-03,
-+ 2.09895267822806817423e-03,
-+ 2.10647609048419644576e-03,
-+ 2.11279022538611149090e-03,
-+ 2.11789245033947156824e-03,
-+ 2.12178082723701432605e-03,
-+ 2.12445411300643061461e-03,
-+ 2.12591175976064054517e-03,
-+ 2.12615391455073503985e-03,
-+ 2.12518141872201785439e-03,
-+ 2.12299580687382158026e-03,
-+ 2.11959930542408034673e-03,
-+ 2.11499483077969572045e-03,
-+ 2.10918598711416641414e-03,
-+ 2.10217706375393116602e-03,
-+ 2.09397303217547263096e-03,
-+ 2.08457954261486583247e-03,
-+ 2.07400292029235070942e-03,
-+ 2.06225016125420471461e-03,
-+ 2.04932892783467367551e-03,
-+ 2.03524754374076423044e-03,
-+ 2.02001498876324889209e-03,
-+ 2.00364089311688611111e-03,
-+ 1.98613553141360494464e-03,
-+ 1.96750981627234018331e-03,
-+ 1.94777529156955181953e-03,
-+ 1.92694412533416631859e-03,
-+ 1.90502910229207360684e-03,
-+ 1.88204361606385760751e-03,
-+ 1.85800166102108787677e-03,
-+ 1.83291782380585869562e-03,
-+ 1.80680727451872601141e-03,
-+ 1.77968575758040859630e-03,
-+ 1.75156958227263453466e-03,
-+ 1.72247561296389362258e-03,
-+ 1.69242125902588661998e-03,
-+ 1.66142446444668846067e-03,
-+ 1.62950369714685090912e-03,
-+ 1.59667793800455284220e-03,
-+ 1.56296666959689989698e-03,
-+ 1.52838986466322470682e-03,
-+ 1.49296797429780258443e-03,
-+ 1.45672191587891005325e-03,
-+ 1.41967306074082186274e-03,
-+ 1.38184322159656857235e-03,
-+ 1.34325463971886609367e-03,
-+ 1.30392997188612789518e-03,
-+ 1.26389227710180132407e-03,
-+ 1.22316500309457604385e-03,
-+ 1.18177197260732505350e-03,
-+ 1.13973736948289701074e-03,
-+ 1.09708572455475997058e-03,
-+ 1.05384190135080434668e-03,
-+ 1.01003108161856368016e-03,
-+ 9.65678750680322895046e-04,
-+ 9.20810682626568323406e-04,
-+ 8.75452925356471657603e-04,
-+ 8.29631785473724093875e-04,
-+ 7.83373813047290703040e-04,
-+ 7.36705786244772238558e-04,
-+ 6.89654695848395987885e-04,
-+ 6.42247729661416769283e-04,
-+ 5.94512256815164243616e-04,
-+ 5.46475811984593212202e-04,
-+ 4.98166079522630966640e-04,
-+ 4.49610877521255665294e-04,
-+ 4.00838141809322300816e-04,
-+ 3.51875909896002484617e-04,
-+ 3.02752304869100116388e-04,
-+ 2.53495519257492917930e-04,
-+ 2.04133798866942952959e-04,
-+ 1.54695426598542049934e-04,
-+ 1.05208706259043055812e-04,
-+ 5.57019463723481029365e-05,
-+ 6.20344400145258794332e-06,
-+-4.32585314102668224909e-05,
-+-9.26557541683200246944e-05,
-+-1.41960058418968396079e-04,
-+-1.91143354193288721741e-04,
-+-2.40177643395536041327e-04,
-+-2.89035035725425371294e-04,
-+-3.37687764526517215750e-04,
-+-3.86108202550481673879e-04,
-+-4.34268877629523874194e-04,
-+-4.82142488247218933394e-04,
-+-5.29701918999288495597e-04,
-+-5.76920255935507784832e-04,
-+-6.23770801774083051734e-04,
-+-6.70227090979901799633e-04,
-+-7.16262904698151416615e-04,
-+-7.61852285534880065317e-04,
-+-8.06969552176199341267e-04,
-+-8.51589313837822735331e-04,
-+-8.95686484537168122258e-04,
-+-9.39236297179238443025e-04,
-+-9.82214317449158023227e-04,
-+-1.02459645750355089928e-03,
-+-1.06635898945237213818e-03,
-+-1.10747855862441241769e-03,
-+-1.14793219660866787669e-03,
-+-1.18769733406468773300e-03,
-+-1.22675181329402055441e-03,
-+-1.26507390056672754976e-03,
-+-1.30264229819540794213e-03,
-+-1.33943615635037714499e-03,
-+-1.37543508460907315874e-03,
-+-1.41061916323427321250e-03,
-+-1.44496895417330940836e-03,
-+-1.47846551177379173514e-03,
-+-1.51109039320902033797e-03,
-+-1.54282566860766408127e-03,
-+-1.57365393088206863802e-03,
-+-1.60355830525010312551e-03,
-+-1.63252245844455485396e-03,
-+-1.66053060760636725206e-03,
-+-1.68756752885559392630e-03,
-+-1.71361856553621906898e-03,
-+-1.73866963613010581773e-03,
-+-1.76270724183600984401e-03,
-+-1.78571847380921077363e-03,
-+-1.80769102005840930254e-03,
-+-1.82861317199587238881e-03,
-+-1.84847383063749628497e-03,
-+-1.86726251244936523530e-03,
-+-1.88496935483824668706e-03,
-+-1.90158512128234106521e-03,
-+-1.91710120610045944671e-03,
-+-1.93150963885675339658e-03,
-+-1.94480308839885176336e-03,
-+-1.95697486652746934985e-03,
-+-1.96801893129561937881e-03,
-+-1.97792988993586308158e-03,
-+-1.98670300141425048082e-03,
-+-1.99433417860976971991e-03,
-+-2.00081999011835322613e-03,
-+-2.00615766168074291520e-03,
-+-2.01034507723373218405e-03,
-+-2.01338077958435448037e-03,
-+-2.01526397070713597648e-03,
-+-2.01599451166439066346e-03,
-+-2.01557292214997766863e-03,
-+-2.01400037965709585719e-03,
-+-2.01127871827083996512e-03,
-+-2.00741042708658728663e-03,
-+-2.00239864825537024207e-03,
-+-1.99624717465765773305e-03,
-+-1.98896044720722623214e-03,
-+-1.98054355178687831532e-03,
-+-1.97100221581815275573e-03,
-+-1.96034280446718981242e-03,
-+-1.94857231648931650270e-03,
-+-1.93569837971491794798e-03,
-+-1.92172924617953493238e-03,
-+-1.90667378690126333891e-03,
-+-1.89054148630866990580e-03,
-+-1.87334243632268355843e-03,
-+-1.85508733009632424509e-03,
-+-1.83578745541577732087e-03,
-+-1.81545468776724309642e-03,
-+-1.79410148307337815980e-03,
-+-1.77174087010420694757e-03,
-+-1.74838644256665020488e-03,
-+-1.72405235087792502863e-03,
-+-1.69875329362731528234e-03,
-+-1.67250450873173686292e-03,
-+-1.64532176429031608451e-03,
-+-1.61722134914345358134e-03,
-+-1.58822006314201439985e-03,
-+-1.55833520713242958296e-03,
-+-1.52758457266367842983e-03,
-+-1.49598643142224508110e-03,
-+-1.46355952440134539153e-03,
-+-1.43032305081079724740e-03,
-+-1.39629665673392786875e-03,
-+-1.36150042353874842389e-03,
-+-1.32595485604938292078e-03,
-+-1.28968087048560815441e-03,
-+-1.25269978217663175389e-03,
-+-1.21503329305731573931e-03,
-+-1.17670347895322481742e-03,
-+-1.13773277666287834717e-03,
-+-1.09814397084380963379e-03,
-+-1.05796018071076876506e-03,
-+-1.01720484655352786697e-03,
-+-9.75901716082224163044e-04,
-+-9.34074830608162560291e-04,
-+-8.91748511068093702332e-04,
-+-8.48947343900121774093e-04,
-+-8.05696166779400137388e-04,
-+-7.62020054221886175734e-04,
-+-7.17944303064517799773e-04,
-+-6.73494417830223287419e-04,
-+-6.28696095985875375196e-04,
-+-5.83575213102809943477e-04,
-+-5.38157807926610857671e-04,
-+-4.92470067366625467893e-04,
-+-4.46538311412741039091e-04,
-+-4.00388977988523500975e-04,
-+-3.54048607749048280420e-04,
-+-3.07543828832976284295e-04,
-+-2.60901341576534541618e-04,
-+-2.14147903198978289919e-04,
-+-1.67310312467942520764e-04,
-+-1.20415394353891940199e-04,
-+-7.34899846812865148926e-05,
-+-2.65609147871840793706e-05,
-+ 2.03450038059074316498e-05,
-+ 6.72009946930133205637e-05,
-+ 1.13980331857172184195e-04,
-+ 1.60656354898604009258e-04,
-+ 2.07202484214283008147e-04,
-+ 2.53592236118117483629e-04,
-+ 2.99799237895086720992e-04,
-+ 3.45797242778839468078e-04,
-+ 3.91560144845429106229e-04,
-+ 4.37061993814294241171e-04,
-+ 4.82277009748485958104e-04,
-+ 5.27179597645008367682e-04,
-+ 5.71744361908107438623e-04,
-+ 6.15946120696525068264e-04,
-+ 6.59759920136990252182e-04,
-+ 7.03161048395523806745e-04,
-+ 7.46125049599718473056e-04,
-+ 7.88627737602340720367e-04,
-+ 8.30645209580345455537e-04,
-+ 8.72153859460560415377e-04,
-+ 9.13130391164877785494e-04,
-+ 9.53551831667496553602e-04,
-+ 9.93395543856891161116e-04,
-+ 1.03263923919528978652e-03,
-+ 1.07126099016866677127e-03,
-+ 1.10923924252022128127e-03,
-+ 1.14655282726058328768e-03,
-+ 1.18318097244805918271e-03,
-+ 1.21910331473228323099e-03,
-+ 1.25429991065521308224e-03,
-+ 1.28875124770248187904e-03,
-+ 1.32243825509993726680e-03,
-+ 1.35534231434853292934e-03,
-+ 1.38744526949258163359e-03,
-+ 1.41872943711487042515e-03,
-+ 1.44917761605398002535e-03,
-+ 1.47877309683764539099e-03,
-+ 1.50749967082781347223e-03,
-+ 1.53534163907186548513e-03,
-+ 1.56228382085535594075e-03,
-+ 1.58831156195163563510e-03,
-+ 1.61341074256387195449e-03,
-+ 1.63756778495518346382e-03,
-+ 1.66076966076276837624e-03,
-+ 1.68300389799214892943e-03,
-+ 1.70425858768773869599e-03,
-+ 1.72452239027620483382e-03,
-+ 1.74378454157939760671e-03,
-+ 1.76203485849330421936e-03,
-+ 1.77926374433060529266e-03,
-+ 1.79546219382350027462e-03,
-+ 1.81062179778474288683e-03,
-+ 1.82473474742401477189e-03,
-+ 1.83779383831785469647e-03,
-+ 1.84979247403080490283e-03,
-+ 1.86072466938634346195e-03,
-+ 1.87058505338575297924e-03,
-+ 1.87936887177368445838e-03,
-+ 1.88707198924914281921e-03,
-+ 1.89369089132102150393e-03,
-+ 1.89922268580736391258e-03,
-+ 1.90366510397775167036e-03,
-+ 1.90701650133855821721e-03,
-+ 1.90927585806080512588e-03,
-+ 1.91044277905074734968e-03,
-+ 1.91051749366339122978e-03,
-+ 1.90950085505942339544e-03,
-+ 1.90739433920622124437e-03,
-+ 1.90420004352378135701e-03,
-+ 1.89992068517663812051e-03,
-+ 1.89455959901305625789e-03,
-+ 1.88812073515295573110e-03,
-+ 1.88060865622618881600e-03,
-+ 1.87202853426315300560e-03,
-+ 1.86238614723965899625e-03,
-+ 1.85168787527840192179e-03,
-+ 1.83994069650947789270e-03,
-+ 1.82715218259254900957e-03,
-+ 1.81333049390355882657e-03,
-+ 1.79848437438895314942e-03,
-+ 1.78262314609068240993e-03,
-+ 1.76575670334532712838e-03,
-+ 1.74789550666099805648e-03,
-+ 1.72905057627572287561e-03,
-+ 1.70923348540114126287e-03,
-+ 1.68845635315613591676e-03,
-+ 1.66673183719381174349e-03,
-+ 1.64407312602717807851e-03,
-+ 1.62049393105762528852e-03,
-+ 1.59600847831119999759e-03,
-+ 1.57063149988747046033e-03,
-+ 1.54437822512650262292e-03,
-+ 1.51726437149865382714e-03,
-+ 1.48930613522309045725e-03,
-+ 1.46052018162035729919e-03,
-+ 1.43092363520500552576e-03,
-+ 1.40053406952348629723e-03,
-+ 1.36936949674445118327e-03,
-+ 1.33744835700646668569e-03,
-+ 1.30478950753013271321e-03,
-+ 1.27141221150076761358e-03,
-+ 1.23733612672830939165e-03,
-+ 1.20258129409077482892e-03,
-+ 1.16716812576892663492e-03,
-+ 1.13111739327765117337e-03,
-+ 1.09445021530241268400e-03,
-+ 1.05718804534711313843e-03,
-+ 1.01935265920083785798e-03,
-+ 9.80966142230535508365e-04,
-+ 9.42050876507689177730e-04,
-+ 9.02629527775573197758e-04,
-+ 8.62725032265359496712e-04,
-+ 8.22360583368397595437e-04,
-+ 7.81559618172762574431e-04,
-+ 7.40345803871171343619e-04,
-+ 6.98743024048840326648e-04,
-+ 6.56775364859214197573e-04,
-+ 6.14467101094864410517e-04,
-+ 5.71842682162310611722e-04,
-+ 5.28926717968548746641e-04,
-+ 4.85743964727467576921e-04,
-+ 4.42319310694356789340e-04,
-+ 3.98677761836690037860e-04,
-+ 3.54844427449443563551e-04,
-+ 3.10844505723203393555e-04,
-+ 2.66703269273363180372e-04,
-+ 2.22446050638747323033e-04,
-+ 1.78098227757677587350e-04,
-+ 1.33685209430572742549e-04,
-+ 8.92324207763590298084e-05,
-+ 4.47652886917426873583e-05,
-+ 3.09227321650505732558e-07,
-+-4.41103764515531808835e-05,
-+-8.84681774910541152872e-05,
-+-1.32738886852529214266e-04,
-+-1.76897286187552060842e-04,
-+-2.20918242094528819363e-04,
-+-2.64776720409321865164e-04,
-+-3.08447800427395421845e-04,
-+-3.51906689049402091746e-04,
-+-3.95128734842202674043e-04,
-+-4.38089442007342469865e-04,
-+-4.80764484249080186352e-04,
-+-5.23129718534129112967e-04,
-+-5.65161198735287346670e-04,
-+-6.06835189151545676724e-04,
-+-6.48128177896318104570e-04,
-+-6.89016890147269131690e-04,
-+-7.29478301249281038503e-04,
-+-7.69489649664180678720e-04,
-+-8.09028449758908115366e-04,
-+-8.48072504425961999630e-04,
-+-8.86599917528026388626e-04,
-+-9.24589106160850367731e-04,
-+-9.62018812726749862618e-04,
-+-9.98868116812330619769e-04,
-+-1.03511644686372960081e-03,
-+-1.07074359165286784289e-03,
-+-1.10572971152834206160e-03,
-+-1.14005534944471237715e-03,
-+-1.17370144176403299122e-03,
-+-1.20664932882368503703e-03,
-+-1.23888076526462546922e-03,
-+-1.27037793011433868158e-03,
-+-1.30112343661913792969e-03,
-+-1.33110034181987751598e-03,
-+-1.36029215586637268476e-03,
-+-1.38868285106535536630e-03,
-+-1.41625687065657750174e-03,
-+-1.44299913731265943770e-03,
-+-1.46889506135814513696e-03,
-+-1.49393054870271117275e-03,
-+-1.51809200848501517356e-03,
-+-1.54136636042246982434e-03,
-+-1.56374104186323185060e-03,
-+-1.58520401453656292236e-03,
-+-1.60574377099796661295e-03,
-+-1.62534934076566579299e-03,
-+-1.64401029614518693484e-03,
-+-1.66171675773892622320e-03,
-+-1.67845939963788895466e-03,
-+-1.69422945429279826236e-03,
-+-1.70901871706225839433e-03,
-+-1.72281955043516879847e-03,
-+-1.73562488792599364622e-03,
-+-1.74742823764018669758e-03,
-+-1.75822368550844964838e-03,
-+-1.76800589818810072879e-03,
-+-1.77677012563024231892e-03,
-+-1.78451220331139900031e-03,
-+-1.79122855412879207482e-03,
-+-1.79691618995835998736e-03,
-+-1.80157271287491316247e-03,
-+-1.80519631603399109167e-03,
-+-1.80778578421531151664e-03,
-+-1.80934049402758445960e-03,
-+-1.80986041377503045595e-03,
-+-1.80934610298588618299e-03,
-+-1.80779871160341876896e-03,
-+-1.80521997884027364349e-03,
-+-1.80161223169698209157e-03,
-+-1.79697838314586038136e-03,
-+-1.79132192998154664808e-03,
-+-1.78464695033966652855e-03,
-+-1.77695810088541257706e-03,
-+-1.76826061367380709712e-03,
-+-1.75856029268379684440e-03,
-+-1.74786351002833607871e-03,
-+-1.73617720184306720613e-03,
-+-1.72350886385598295499e-03,
-+-1.70986654664103516175e-03,
-+-1.69525885055866825345e-03,
-+-1.67969492038625377826e-03,
-+-1.66318443964190258721e-03,
-+-1.64573762460525812104e-03,
-+-1.62736521803862185451e-03,
-+-1.60807848261251156753e-03,
-+-1.58788919403957031612e-03,
-+-1.56680963392096320175e-03,
-+-1.54485258230964710331e-03,
-+-1.52203130999494277119e-03,
-+-1.49835957051309000103e-03,
-+-1.47385159188855594317e-03,
-+-1.44852206811105200211e-03,
-+-1.42238615035335702781e-03,
-+-1.39545943793505230687e-03,
-+-1.36775796903791223985e-03,
-+-1.33929821117795126197e-03,
-+-1.31009705144011874209e-03,
-+-1.28017178648149091390e-03,
-+-1.24954011230838865631e-03,
-+-1.21822011383393023938e-03,
-+-1.18623025422220701106e-03,
-+-1.15358936402481875548e-03,
-+-1.12031663011664538339e-03,
-+-1.08643158443716956497e-03,
-+-1.05195409254393249660e-03,
-+-1.01690434198485049264e-03,
-+-9.81302830496187097550e-04,
-+-9.45170354033052825121e-04,
-+-9.08527994639429640512e-04,
-+-8.71397108164778015985e-04,
-+-8.33799311834413085960e-04,
-+-7.95756471680627718197e-04,
-+-7.57290689842498644137e-04,
-+-7.18424291740831638675e-04,
-+-6.79179813136611995432e-04,
-+-6.39579987079505734443e-04,
-+-5.99647730754900086352e-04,
-+-5.59406132236475598166e-04,
-+-5.18878437151933970262e-04,
-+-4.78088035270234697639e-04,
-+-4.37058447017129952060e-04,
-+-3.95813309927481478661e-04,
-+-3.54376365041849988782e-04,
-+-3.12771443255252100824e-04,
-+-2.71022451625898674193e-04,
-+-2.29153359651793514821e-04,
-+-1.87188185523051535668e-04,
-+-1.45150982357815703074e-04,
-+-1.03065824429653753224e-04,
-+-6.09567933943611181980e-05,
-+-1.88479645237432815287e-05,
-+ 2.32366070450612883841e-05,
-+ 6.52729000375716606440e-05,
-+ 1.07236940739442618243e-04,
-+ 1.49104816654926491124e-04,
-+ 1.90852690119197040226e-04,
-+ 2.32456811856789096653e-04,
-+ 2.73893534477760703088e-04,
-+ 3.15139325904901243872e-04,
-+ 3.56170782723636393866e-04,
-+ 3.96964643447348004834e-04,
-+ 4.37497801690561933553e-04,
-+ 4.77747319242539513363e-04,
-+ 5.17690439033898983090e-04,
-+ 5.57304597988927475152e-04,
-+ 5.96567439756349820155e-04,
-+ 6.35456827311364227072e-04,
-+ 6.73950855421827322786e-04,
-+ 7.12027862971859829694e-04,
-+ 7.49666445135031877037e-04,
-+ 7.86845465391861000233e-04,
-+ 8.23544067383306889127e-04,
-+ 8.59741686594572016369e-04,
-+ 8.95418061862311427494e-04,
-+ 9.30553246699131696683e-04,
-+ 9.65127620428410772438e-04,
-+ 9.99121899124090018587e-04,
-+ 1.03251714634870848247e-03,
-+ 1.06529478368399947198e-03,
-+ 1.09743660104794104639e-03,
-+ 1.12892476679308227140e-03,
-+ 1.15974183757998469332e-03,
-+ 1.18987076802038013908e-03,
-+ 1.21929492008520171109e-03,
-+ 1.24799807227183364583e-03,
-+ 1.27596442852571370294e-03,
-+ 1.30317862691138467227e-03,
-+ 1.32962574802824510904e-03,
-+ 1.35529132316640921890e-03,
-+ 1.38016134219821656921e-03,
-+ 1.40422226120109406612e-03,
-+ 1.42746100980768492357e-03,
-+ 1.44986499827917236088e-03,
-+ 1.47142212429823100381e-03,
-+ 1.49212077947745262729e-03,
-+ 1.51194985558042080918e-03,
-+ 1.53089875045162937886e-03,
-+ 1.54895737365219089698e-03,
-+ 1.56611615179862813038e-03,
-+ 1.58236603360162059878e-03,
-+ 1.59769849460209630194e-03,
-+ 1.61210554160250824594e-03,
-+ 1.62557971679072794415e-03,
-+ 1.63811410155455141995e-03,
-+ 1.64970231998493792151e-03,
-+ 1.66033854206613972274e-03,
-+ 1.67001748655128297305e-03,
-+ 1.67873442352191011920e-03,
-+ 1.68648517663034331823e-03,
-+ 1.69326612502385489591e-03,
-+ 1.69907420494976057514e-03,
-+ 1.70390691104087862832e-03,
-+ 1.70776229728072394785e-03,
-+ 1.71063897764836807952e-03,
-+ 1.71253612644269893883e-03,
-+ 1.71345347828618104098e-03,
-+ 1.71339132780851089409e-03,
-+ 1.71235052901041605485e-03,
-+ 1.71033249430839581935e-03,
-+ 1.70733919326115121499e-03,
-+ 1.70337315097866446277e-03,
-+ 1.69843744621518731933e-03,
-+ 1.69253570914738513120e-03,
-+ 1.68567211883928003494e-03,
-+ 1.67785140039562329257e-03,
-+ 1.66907882180561645095e-03,
-+ 1.65936019047902743109e-03,
-+ 1.64870184947697967330e-03,
-+ 1.63711067343976380412e-03,
-+ 1.62459406421430947211e-03,
-+ 1.61115994618396237217e-03,
-+ 1.59681676130369741735e-03,
-+ 1.58157346384365333700e-03,
-+ 1.56543951484419598813e-03,
-+ 1.54842487628618539174e-03,
-+ 1.53054000497979212497e-03,
-+ 1.51179584617556041562e-03,
-+ 1.49220382690190903063e-03,
-+ 1.47177584903268165312e-03,
-+ 1.45052428208925355928e-03,
-+ 1.42846195578139154199e-03,
-+ 1.40560215229139080610e-03,
-+ 1.38195859830608975584e-03,
-+ 1.35754545680155853417e-03,
-+ 1.33237731858531225151e-03,
-+ 1.30646919360115246027e-03,
-+ 1.27983650200173999789e-03,
-+ 1.25249506499428768340e-03,
-+ 1.22446109546453757271e-03,
-+ 1.19575118838507522302e-03,
-+ 1.16638231101316865689e-03,
-+ 1.13637179288388632040e-03,
-+ 1.10573731560490210422e-03,
-+ 1.07449690245847175561e-03,
-+ 1.04266890781677537894e-03,
-+ 1.01027200637724160967e-03,
-+ 9.77325182223491746580e-04,
-+ 9.43847717718836014267e-04,
-+ 9.09859182238561756129e-04,
-+ 8.75379420747673811856e-04,
-+ 8.40428542230697460044e-04,
-+ 8.05026907980306420144e-04,
-+ 7.69195119751593810696e-04,
-+ 7.32954007788833667922e-04,
-+ 6.96324618731728513937e-04,
-+ 6.59328203408161448926e-04,
-+ 6.21986204520240414974e-04,
-+ 5.84320244231672147536e-04,
-+ 5.46352111662109520517e-04,
-+ 5.08103750297240336353e-04,
-+ 4.69597245320941603965e-04,
-+ 4.30854810877143471967e-04,
-+ 3.91898777268710394022e-04,
-+ 3.52751578100453573074e-04,
-+ 3.13435737374358550089e-04,
-+ 2.73973856543509894194e-04,
-+ 2.34388601532805235282e-04,
-+ 1.94702689733898895181e-04,
-+ 1.54938876981224293557e-04,
-+ 1.15119944517208389599e-04,
-+ 7.52686859541390425104e-05,
-+ 3.54078942394808599795e-05,
-+-4.43965136725644293991e-06,
-+-4.42511982989445055948e-05,
-+-8.40040336590952227153e-05,
-+-1.23675497166556415483e-04,
-+-1.63242994059274422816e-04,
-+-2.02684007949782501144e-04,
-+-2.41976113625108971150e-04,
-+-2.81096989783838162574e-04,
-+-3.20024431703046653274e-04,
-+-3.58736363828217243860e-04,
-+-3.97210852278301535575e-04,
-+-4.35426117259783847756e-04,
-+-4.73360545382079051305e-04,
-+-5.10992701867309432294e-04,
-+-5.48301342648169556804e-04,
-+-5.85265426346414513459e-04,
-+-6.21864126125226549316e-04,
-+-6.58076841409443590199e-04,
-+-6.93883209466395465582e-04,
-+-7.29263116841149562630e-04,
-+-7.64196710639690078223e-04,
-+-7.98664409653720487083e-04,
-+-8.32646915320844871987e-04,
-+-8.66125222514040646153e-04,
-+-8.99080630154340944109e-04,
-+-9.31494751640883481870e-04,
-+-9.63349525092406142567e-04,
-+-9.94627223394778684981e-04,
-+-1.02531046404839951310e-03,
-+-1.05538221881074458820e-03,
-+-1.08482582312822528441e-03,
-+-1.11362498535213291090e-03,
-+-1.14176379573408177427e-03,
-+-1.16922673519527877718e-03,
-+-1.19599868386546836010e-03,
-+-1.22206492938624691758e-03,
-+-1.24741117497479086888e-03,
-+-1.27202354724320165595e-03,
-+-1.29588860376930693416e-03,
-+-1.31899334041485176428e-03,
-+-1.34132519838702510620e-03,
-+-1.36287207103959304329e-03,
-+-1.38362231040987894090e-03,
-+-1.40356473348816814667e-03,
-+-1.42268862821608036220e-03,
-+-1.44098375921079607451e-03,
-+-1.45844037321212166396e-03,
-+-1.47504920424929150333e-03,
-+-1.49080147852505740143e-03,
-+-1.50568891901449236279e-03,
-+-1.51970374977587058263e-03,
-+-1.53283869997163850300e-03,
-+-1.54508700759743169105e-03,
-+-1.55644242291698388023e-03,
-+-1.56689921160158636589e-03,
-+-1.57645215757227954816e-03,
-+-1.58509656554349596252e-03,
-+-1.59282826326696629569e-03,
-+-1.59964360347482673595e-03,
-+-1.60553946552108848557e-03,
-+-1.61051325672077034167e-03,
-+-1.61456291338620840613e-03,
-+-1.61768690156018470419e-03,
-+-1.61988421744570839506e-03,
-+-1.62115438753249706261e-03,
-+-1.62149746842027214430e-03,
-+-1.62091404633929480651e-03,
-+-1.61940523636864598667e-03,
-+-1.61697268135293863688e-03,
-+-1.61361855051833538548e-03,
-+-1.60934553778894714506e-03,
-+-1.60415685980480290408e-03,
-+-1.59805625364277783043e-03,
-+-1.59104797424202554224e-03,
-+-1.58313679153566032841e-03,
-+-1.57432798729054113616e-03,
-+-1.56462735165729103538e-03,
-+-1.55404117943255706651e-03,
-+-1.54257626603623507200e-03,
-+-1.53023990320586564598e-03,
-+-1.51703987441107932509e-03,
-+-1.50298444999091796934e-03,
-+-1.48808238201701193738e-03,
-+-1.47234289888582359565e-03,
-+-1.45577569964323665606e-03,
-+-1.43839094804500198903e-03,
-+-1.42019926635660867151e-03,
-+-1.40121172889639514399e-03,
-+-1.38143985532579059369e-03,
-+-1.36089560369062070010e-03,
-+-1.33959136321799648049e-03,
-+-1.31753994687265748795e-03,
-+-1.29475458367754288694e-03,
-+-1.27124891080319826590e-03,
-+-1.24703696543038513624e-03,
-+-1.22213317639110834699e-03,
-+-1.19655235559304484218e-03,
-+-1.17030968923203648052e-03,
-+-1.14342072879827219220e-03,
-+-1.11590138188130184350e-03,
-+-1.08776790277930086870e-03,
-+-1.05903688291816215454e-03,
-+-1.02972524108603069419e-03,
-+-9.99850213489021427335e-04,
-+-9.69429343633939504844e-04,
-+-9.38480472043964680448e-04,
-+-9.07021725813329186133e-04,
-+-8.75071508006883031112e-04,
-+-8.42648486911279294594e-04,
-+-8.09771585143337466368e-04,
-+-7.76459968622407611070e-04,
-+-7.42733035413201104179e-04,
-+-7.08610404445038041289e-04,
-+-6.74111904114616314332e-04,
-+-6.39257560778936587825e-04,
-+-6.04067587144468801964e-04,
-+-5.68562370559859918927e-04,
-+-5.32762461218706014771e-04,
-+-4.96688560279258763987e-04,
-+-4.60361507907912782377e-04,
-+-4.23802271253376780860e-04,
-+-3.87031932358470730920e-04,
-+-3.50071676016493139785e-04,
-+-3.12942777579159074532e-04,
-+-2.75666590723110279098e-04,
-+-2.38264535182076194354e-04,
-+-2.00758084451451004676e-04,
-+-1.63168753473010485957e-04,
-+-1.25518086305888461329e-04,
-+-8.78276437918047763126e-05,
-+-5.01189912206633324926e-05,
-+-1.24136860045527507159e-05,
-+ 2.52667346337536352944e-05,
-+ 6.29007659498319457100e-05,
-+ 1.00466947938114190518e-04,
-+ 1.37943877556209900086e-04,
-+ 1.75310220906359231921e-04,
-+ 2.12544725367042178004e-04,
-+ 2.49626231667856310695e-04,
-+ 2.86533685900810760391e-04,
-+ 3.23246151461219666419e-04,
-+ 3.59742820911436455861e-04,
-+ 3.96003027760712372068e-04,
-+ 4.32006258154472920323e-04,
-+ 4.67732162466665663501e-04,
-+ 5.03160566788037619604e-04,
-+ 5.38271484304469029561e-04,
-+ 5.73045126558938025356e-04,
-+ 6.07461914590199476491e-04,
-+ 6.41502489942463185145e-04,
-+ 6.75147725539870118862e-04,
-+ 7.08378736419115317274e-04,
-+ 7.41176890315008965633e-04,
-+ 7.73523818092431607665e-04,
-+ 8.05401424019106036527e-04,
-+ 8.36791895873423112462e-04,
-+ 8.67677714881635517297e-04,
-+ 8.98041665478958536263e-04,
-+ 9.27866844889067626453e-04,
-+ 9.57136672516743498666e-04,
-+ 9.85834899148405139485e-04,
-+ 1.01394561595543404760e-03,
-+ 1.04145326329548363296e-03,
-+ 1.06834263930647441546e-03,
-+ 1.09459890828899372543e-03,
-+ 1.12020760887248218077e-03,
-+ 1.14515466196026915839e-03,
-+ 1.16942637844957234711e-03,
-+ 1.19300946672199316770e-03,
-+ 1.21589103990064808375e-03,
-+ 1.23805862286953697812e-03,
-+ 1.25950015905194477768e-03,
-+ 1.28020401694373142133e-03,
-+ 1.30015899639822005152e-03,
-+ 1.31935433465907368637e-03,
-+ 1.33777971213847393650e-03,
-+ 1.35542525793661992536e-03,
-+ 1.37228155510049436815e-03,
-+ 1.38833964561861015856e-03,
-+ 1.40359103514923078820e-03,
-+ 1.41802769747961950574e-03,
-+ 1.43164207871396926761e-03,
-+ 1.44442710118785071390e-03,
-+ 1.45637616710717282889e-03,
-+ 1.46748316190982897207e-03,
-+ 1.47774245734831524007e-03,
-+ 1.48714891429181411860e-03,
-+ 1.49569788524642525128e-03,
-+ 1.50338521659217202661e-03,
-+ 1.51020725053600747730e-03,
-+ 1.51616082677973940986e-03,
-+ 1.52124328390220494439e-03,
-+ 1.52545246045525904888e-03,
-+ 1.52878669577304190583e-03,
-+ 1.53124483049437549141e-03,
-+ 1.53282620679826551459e-03,
-+ 1.53353066835256834737e-03,
-+ 1.53335855997613302801e-03,
-+ 1.53231072701479021855e-03,
-+ 1.53038851443190564161e-03,
-+ 1.52759376561413247157e-03,
-+ 1.52392882089336643460e-03,
-+ 1.51939651578598348275e-03,
-+ 1.51400017895056589190e-03,
-+ 1.50774362986558999739e-03,
-+ 1.50063117622853013297e-03,
-+ 1.49266761107828566796e-03,
-+ 1.48385820964260146428e-03,
-+ 1.47420872591265969889e-03,
-+ 1.46372538894702294843e-03,
-+ 1.45241489890715028306e-03,
-+ 1.44028442282717193852e-03,
-+ 1.42734159012037307990e-03,
-+ 1.41359448782537428478e-03,
-+ 1.39905165559475546354e-03,
-+ 1.38372208042934524870e-03,
-+ 1.36761519116132632817e-03,
-+ 1.35074085268957954850e-03,
-+ 1.33310935997071780372e-03,
-+ 1.31473143176951009180e-03,
-+ 1.29561820417240587851e-03,
-+ 1.27578122386814139279e-03,
-+ 1.25523244119940383980e-03,
-+ 1.23398420298978994322e-03,
-+ 1.21204924515017141255e-03,
-+ 1.18944068506927815715e-03,
-+ 1.16617201379247414916e-03,
-+ 1.14225708799397369063e-03,
-+ 1.11771012174662520873e-03,
-+ 1.09254567809480241866e-03,
-+ 1.06677866043477544145e-03,
-+ 1.04042430370825892544e-03,
-+ 1.01349816541371835939e-03,
-+ 9.86016116441160682393e-04,
-+ 9.57994331735642526242e-04,
-+ 9.29449280794978792072e-04,
-+ 9.00397718007248429838e-04,
-+ 8.70856672833736898155e-04,
-+ 8.40843439843083260109e-04,
-+ 8.10375568602425999827e-04,
-+ 7.79470853431471315254e-04,
-+ 7.48147323025479091436e-04,
-+ 7.16423229952991972615e-04,
-+ 6.84317040034933634675e-04,
-+ 6.51847421610750755311e-04,
-+ 6.19033234697776140604e-04,
-+ 5.85893520050684464551e-04,
-+ 5.52447488126856715678e-04,
-+ 5.18714507964034747881e-04,
-+ 4.84714095977265707355e-04,
-+ 4.50465904680799719868e-04,
-+ 4.15989711342059980889e-04,
-+ 3.81305406573980180604e-04,
-+ 3.46432982872289069957e-04,
-+ 3.11392523104614979499e-04,
-+ 2.76204188957184101297e-04,
-+ 2.40888209347176124927e-04,
-+ 2.05464868805964193327e-04,
-+ 1.69954495840752130374e-04,
-+ 1.34377451281002371951e-04,
-+ 9.87541166164100474301e-05,
-+ 6.31048823327933465369e-05,
-+ 2.74501362534655310964e-05,
-+-8.18974810873998083655e-06,
-+-4.37944231806596304514e-05,
-+-7.93435789334627901382e-05,
-+-1.14816954455838874283e-04,
-+-1.50194349489415440680e-04,
-+-1.85455635919215376531e-04,
-+-2.20580769213464333118e-04,
-+-2.55549799805626501933e-04,
-+-2.90342884412502183315e-04,
-+-3.24940297281641648271e-04,
-+-3.59322441362583172488e-04,
-+-3.93469859394135197499e-04,
-+-4.27363244902898627587e-04,
-+-4.60983453105939474694e-04,
-+-4.94311511711763339541e-04,
-+-5.27328631613451729448e-04,
-+-5.60016217467949450198e-04,
-+-5.92355878155555572520e-04,
-+-6.24329437113732110647e-04,
-+-6.55918942539445706461e-04,
-+-6.87106677454311985491e-04,
-+-7.17875169626881314694e-04,
-+-7.48207201346719435846e-04,
-+-7.78085819044304792189e-04,
-+-8.07494342752076792701e-04,
-+-8.36416375400828135574e-04,
-+-8.64835811946538645517e-04,
-+-8.92736848322267452678e-04,
-+-9.20103990210890628799e-04,
-+-9.46922061632605917975e-04,
-+-9.73176213343664533485e-04,
-+-9.98851931040956823177e-04,
-+-1.02393504336819934561e-03,
-+-1.04841172971923139896e-03,
-+-1.07226852783420443203e-03,
-+-1.09549234118443920144e-03,
-+-1.11807044614193923544e-03,
-+-1.13999049892964587558e-03,
-+-1.16124054234865384944e-03,
-+-1.18180901227872168710e-03,
-+-1.20168474394853771157e-03,
-+-1.22085697797251154818e-03,
-+-1.23931536615045907561e-03,
-+-1.25704997702758545543e-03,
-+-1.27405130121131457410e-03,
-+-1.29031025644257271376e-03,
-+-1.30581819241839158958e-03,
-+-1.32056689536371330701e-03,
-+-1.33454859234959002240e-03,
-+-1.34775595535592540575e-03,
-+-1.36018210507637331112e-03,
-+-1.37182061446355658269e-03,
-+-1.38266551201276610521e-03,
-+-1.39271128478253266095e-03,
-+-1.40195288115051316068e-03,
-+-1.41038571330337893055e-03,
-+-1.41800565945951256505e-03,
-+-1.42480906582346297101e-03,
-+-1.43079274827126803893e-03,
-+-1.43595399376592503145e-03,
-+-1.44029056150241801561e-03,
-+-1.44380068378189055887e-03,
-+-1.44648306661469805943e-03,
-+-1.44833689005223324210e-03,
-+-1.44936180824753674604e-03,
-+-1.44955794924493913504e-03,
-+-1.44892591449903443759e-03,
-+-1.44746677812355745846e-03,
-+-1.44518208587075661954e-03,
-+-1.44207385384213272739e-03,
-+-1.43814456693148930849e-03,
-+-1.43339717700140213338e-03,
-+-1.42783510079440463525e-03,
-+-1.42146221758030649220e-03,
-+-1.41428286654118624127e-03,
-+-1.40630184389584447259e-03,
-+-1.39752439976549721300e-03,
-+-1.38795623478277815703e-03,
-+-1.37760349644625219347e-03,
-+-1.36647277522266587767e-03,
-+-1.35457110039932790077e-03,
-+-1.34190593568940877423e-03,
-+-1.32848517459267919869e-03,
-+-1.31431713551467539529e-03,
-+-1.29941055664714501944e-03,
-+-1.28377459061317523298e-03,
-+-1.26741879887994307423e-03,
-+-1.25035314594268138870e-03,
-+-1.23258799328333345374e-03,
-+-1.21413409310764655244e-03,
-+-1.19500258186405750038e-03,
-+-1.17520497354900595698e-03,
-+-1.15475315280194222242e-03,
-+-1.13365936779458078426e-03,
-+-1.11193622291853085743e-03,
-+-1.08959667127568366092e-03,
-+-1.06665400697560715411e-03,
-+-1.04312185724514980105e-03,
-+-1.01901417435390105257e-03,
-+-9.94345227361283657413e-04,
-+-9.69129593689562135808e-04,
-+-9.43382150527953696438e-04,
-+-9.17118066072678981768e-04,
-+-8.90352790608596130796e-04,
-+-8.63102047436990239826e-04,
-+-8.35381823655337134304e-04,
-+-8.07208360794198893050e-04,
-+-7.78598145316998046898e-04,
-+-7.49567898987517377586e-04,
-+-7.20134569111909820377e-04,
-+-6.90315318659743713467e-04,
-+-6.60127516270525181372e-04,
-+-6.29588726151278908240e-04,
-+-5.98716697871097070296e-04,
-+-5.67529356058555788274e-04,
-+-5.36044790008002544103e-04,
-+-5.04281243200707597792e-04,
-+-4.72257102746954785574e-04,
-+-4.39990888755171366542e-04,
-+-4.07501243634276436468e-04,
-+-3.74806921335187493566e-04,
-+-3.41926776538259847692e-04,
-+-3.08879753792126179272e-04,
-+-2.75684876610755174881e-04,
-+-2.42361236534725988821e-04,
-+-2.08927982163283266397e-04,
-+-1.75404308162909107092e-04,
-+-1.41809444259267161117e-04,
-+-1.08162644218829444537e-04,
-+-7.44831748259327543465e-05,
-+-4.07903048621291604812e-05,
-+-7.10329409388432176530e-06,
-+ 2.65586177250463047000e-05,
-+ 6.01762218302914552804e-05,
-+ 9.37303513963725428056e-05,
-+ 1.27201892452491753700e-04,
-+ 1.60571794759468988462e-04,
-+ 1.93821082639647593359e-04,
-+ 2.26930865755815396869e-04,
-+ 2.59882349831586946780e-04,
-+ 2.92656847307690018770e-04,
-+ 3.25235787928080961190e-04,
-+ 3.57600729249660839303e-04,
-+ 3.89733367070243196494e-04,
-+ 4.21615545768098812836e-04,
-+ 4.53229268547830762767e-04,
-+ 4.84556707586572316029e-04,
-+ 5.15580214074757778309e-04,
-+ 5.46282328146297608759e-04,
-+ 5.76645788691256379679e-04,
-+ 6.06653543047546025234e-04,
-+ 6.36288756564360792091e-04,
-+ 6.65534822032997838703e-04,
-+ 6.94375368979479354152e-04,
-+ 7.22794272813854533910e-04,
-+ 7.50775663831016056536e-04,
-+ 7.78303936058092520403e-04,
-+ 8.05363755943419535807e-04,
-+ 8.31940070882321368144e-04,
-+ 8.58018117574883202973e-04,
-+ 8.83583430211330928851e-04,
-+ 9.08621848479962369513e-04,
-+ 9.33119525393878300641e-04,
-+ 9.57062934931689960998e-04,
-+ 9.80438879488230432754e-04,
-+ 1.00323449713107977488e-03,
-+ 1.02543726865899926387e-03,
-+ 1.04703502445835567626e-03,
-+ 1.06801595115381007736e-03,
-+ 1.08836859804968565969e-03,
-+ 1.10808188335835252139e-03,
-+ 1.12714510021262159095e-03,
-+ 1.14554792245836578428e-03,
-+ 1.16328041022489597940e-03,
-+ 1.18033301526926739412e-03,
-+ 1.19669658609257542788e-03,
-+ 1.21236237282488557888e-03,
-+ 1.22732203187633261143e-03,
-+ 1.24156763035219172911e-03,
-+ 1.25509165022920821282e-03,
-+ 1.26788699229131874430e-03,
-+ 1.27994697982256044888e-03,
-+ 1.29126536205536050946e-03,
-+ 1.30183631737235691941e-03,
-+ 1.31165445626020235083e-03,
-+ 1.32071482401390893208e-03,
-+ 1.32901290319023448333e-03,
-+ 1.33654461580914787205e-03,
-+ 1.34330632530221187430e-03,
-+ 1.34929483820697367936e-03,
-+ 1.35450740560668671242e-03,
-+ 1.35894172431470653187e-03,
-+ 1.36259593780313340884e-03,
-+ 1.36546863687537654505e-03,
-+ 1.36755886008250635531e-03,
-+ 1.36886609388332716047e-03,
-+ 1.36939027254837260295e-03,
-+ 1.36913177780802522952e-03,
-+ 1.36809143824524986725e-03,
-+ 1.36627052843346185988e-03,
-+ 1.36367076782027457811e-03,
-+ 1.36029431935798012128e-03,
-+ 1.35614378788172988514e-03,
-+ 1.35122221823664079472e-03,
-+ 1.34553309315501787302e-03,
-+ 1.33908033088521731709e-03,
-+ 1.33186828257363392043e-03,
-+ 1.32390172940159678815e-03,
-+ 1.31518587947901410308e-03,
-+ 1.30572636449661312261e-03,
-+ 1.29552923613923372595e-03,
-+ 1.28460096226200824743e-03,
-+ 1.27294842283218667331e-03,
-+ 1.26057890563882179363e-03,
-+ 1.24750010177327374725e-03,
-+ 1.23372010088306036796e-03,
-+ 1.21924738620211555243e-03,
-+ 1.20409082936042593007e-03,
-+ 1.18825968497621972837e-03,
-+ 1.17176358503399751995e-03,
-+ 1.15461253305178279151e-03,
-+ 1.13681689804116217886e-03,
-+ 1.11838740826359175386e-03,
-+ 1.09933514478704010865e-03,
-+ 1.07967153484642012021e-03,
-+ 1.05940834501207096011e-03,
-+ 1.03855767417023879713e-03,
-+ 1.01713194631976918542e-03,
-+ 9.95143903189260560158e-04,
-+ 9.72606596679090784803e-04,
-+ 9.49533381132751461845e-04,
-+ 9.25937905442090168628e-04,
-+ 9.01834104991060562725e-04,
-+ 8.77236193442972891042e-04,
-+ 8.52158654375306323994e-04,
-+ 8.26616232768399242931e-04,
-+ 8.00623926351481181481e-04,
-+ 7.74196976812098437357e-04,
-+ 7.47350860873750573281e-04,
-+ 7.20101281246932219647e-04,
-+ 6.92464157459100611118e-04,
-+ 6.64455616568401037821e-04,
-+ 6.36091983767215129672e-04,
-+ 6.07389772880511497576e-04,
-+ 5.78365676764722234753e-04,
-+ 5.49036557612754723412e-04,
-+ 5.19419437170334677249e-04,
-+ 4.89531486870367453512e-04,
-+ 4.59390017889853828105e-04,
-+ 4.29012471135610442413e-04,
-+ 3.98416407164879030761e-04,
-+ 3.67619496046182284588e-04,
-+ 3.36639507166480267224e-04,
-+ 3.05494298990473505794e-04,
-+ 2.74201808777935912304e-04,
-+ 2.42780042265004216643e-04,
-+ 2.11247063315343980641e-04,
-+ 1.79620983547136846585e-04,
-+ 1.47919951941878261405e-04,
-+ 1.16162144440711673481e-04,
-+ 8.43657535348246083538e-05,
-+ 5.25489778551051491483e-05,
-+ 2.07300117675779430298e-05,
-+-1.10729650196668325771e-05,
-+-4.28417978320822792019e-05,
-+-7.45583673808965783410e-05,
-+-1.06204600086071425293e-04,
-+-1.37762478364149087246e-04,
-+-1.69214050874914927148e-04,
-+-2.00541442721614891851e-04,
-+-2.31726865598118244574e-04,
-+-2.62752627878274269604e-04,
-+-2.93601144640412165671e-04,
-+-3.24254947622835021804e-04,
-+-3.54696695103594577137e-04,
-+-3.84909181699200184275e-04,
-+-4.14875348077196936039e-04,
-+-4.44578290576414924141e-04,
-+-4.74001270730014352076e-04,
-+-5.03127724685752076780e-04,
-+-5.31941272518206861690e-04,
-+-5.60425727427743720910e-04,
-+-5.88565104821016545078e-04,
-+-6.16343631268131183359e-04,
-+-6.43745753330938032602e-04,
-+-6.70756146258231328826e-04,
-+-6.97359722542432612299e-04,
-+-7.23541640333268576586e-04,
-+-7.49287311703654272145e-04,
-+-7.74582410763238315282e-04,
-+-7.99412881615075860547e-04,
-+-8.23764946151039185139e-04,
-+-8.47625111681623221935e-04,
-+-8.70980178395970995424e-04,
-+-8.93817246647941095888e-04,
-+-9.16123724064377706680e-04,
-+-9.37887332471280203011e-04,
-+-9.59096114634606271634e-04,
-+-9.79738440811607448275e-04,
-+-9.99803015109290834847e-04,
-+-1.01927888164651272128e-03,
-+-1.03815543051633853155e-03,
-+-1.05642240354548912901e-03,
-+-1.07406989984759745557e-03,
-+-1.09108838116762723279e-03,
-+-1.10746867701414018585e-03,
-+-1.12320198957698577993e-03,
-+-1.13827989842765417428e-03,
-+-1.15269436499997502028e-03,
-+-1.16643773684832734866e-03,
-+-1.17950275168172556868e-03,
-+-1.19188254117136706138e-03,
-+-1.20357063452954798910e-03,
-+-1.21456096185834725582e-03,
-+-1.22484785726622159678e-03,
-+-1.23442606175099434812e-03,
-+-1.24329072584775926144e-03,
-+-1.25143741204040113979e-03,
-+-1.25886209693559965317e-03,
-+-1.26556117319820459269e-03,
-+-1.27153145124719456523e-03,
-+-1.27677016071131685555e-03,
-+-1.28127495164393639428e-03,
-+-1.28504389549651746975e-03,
-+-1.28807548585040771913e-03,
-+-1.29036863890675851559e-03,
-+-1.29192269373445381593e-03,
-+-1.29273741227616803182e-03,
-+-1.29281297911274461153e-03,
-+-1.29215000098622341193e-03,
-+-1.29074950608205050485e-03,
-+-1.28861294307102769788e-03,
-+-1.28574217991181470426e-03,
-+-1.28213950241485154062e-03,
-+-1.27780761256874805798e-03,
-+-1.27274962663027619951e-03,
-+-1.26696907297930137261e-03,
-+-1.26046988974006066338e-03,
-+-1.25325642217039056117e-03,
-+-1.24533341982049493464e-03,
-+-1.23670603346324884178e-03,
-+-1.22737981179783643172e-03,
-+-1.21736069792890478670e-03,
-+-1.20665502562341490217e-03,
-+-1.19526951534740743209e-03,
-+-1.18321127008547502014e-03,
-+-1.17048777094514431553e-03,
-+-1.15710687254899267061e-03,
-+-1.14307679821747196908e-03,
-+-1.12840613494519497600e-03,
-+-1.11310382817380736260e-03,
-+-1.09717917636461301072e-03,
-+-1.08064182537422016558e-03,
-+-1.06350176263660047178e-03,
-+-1.04576931115505939590e-03,
-+-1.02745512330771390092e-03,
-+-1.00857017447020984660e-03,
-+-9.89125756459348273036e-04,
-+-9.69133470801857087144e-04,
-+-9.48605221831876478482e-04,
-+-9.27553209621573911299e-04,
-+-9.05989922748946536341e-04,
-+-8.83928130907113245029e-04,
-+-8.61380877359472856523e-04,
-+-8.38361471245136369995e-04,
-+-8.14883479739194086997e-04,
-+-7.90960720072537894904e-04,
-+-7.66607251415539741463e-04,
-+-7.41837366630958413780e-04,
-+-7.16665583900111865384e-04,
-+-6.91106638228288503237e-04,
-+-6.65175472833141076361e-04,
-+-6.38887230421945938666e-04,
-+-6.12257244362626436643e-04,
-+-5.85301029753312320944e-04,
-+-5.58034274396206606862e-04,
-+-5.30472829680567778236e-04,
-+-5.02632701380270412693e-04,
-+-4.74530040371252698900e-04,
-+-4.46181133274236403283e-04,
-+-4.17602393028139700758e-04,
-+-3.88810349399469656114e-04,
-+-3.59821639433645487551e-04,
-+-3.30652997853107073409e-04,
-+-3.01321247408244021881e-04,
-+-2.71843289186502834551e-04,
-+-2.42236092885274642951e-04,
-+-2.12516687054165319707e-04,
-+-1.82702149312243965380e-04,
-+-1.52809596545888838484e-04,
-+-1.22856175092848034355e-04,
-+-9.28590509181383036126e-05,
-+-6.28353997874044387486e-05,
-+-3.28023974433953014970e-05,
-+-2.77720979095154411141e-06,
-+ 2.72230169033535440140e-05,
-+ 5.71811657920477271538e-05,
-+ 8.70801592019578094960e-05,
-+ 1.16902968358433966434e-04,
-+ 1.46632623073032026736e-04,
-+ 1.76252221389186882524e-04,
-+ 2.05744939180186014712e-04,
-+ 2.35094039694530468169e-04,
-+ 2.64282883042567088867e-04,
-+ 2.93294935619551385558e-04,
-+ 3.22113779459532194229e-04,
-+ 3.50723121515214011305e-04,
-+ 3.79106802857572401221e-04,
-+ 4.07248807791192634405e-04,
-+ 4.35133272879688717035e-04,
-+ 4.62744495875839806538e-04,
-+ 4.90066944551884237959e-04,
-+ 5.17085265424790572163e-04,
-+ 5.43784292371653644321e-04,
-+ 5.70149055130390425110e-04,
-+ 5.96164787680977456552e-04,
-+ 6.21816936502533586587e-04,
-+ 6.47091168701626482176e-04,
-+ 6.71973380007443560867e-04,
-+ 6.96449702628909074476e-04,
-+ 7.20506512970012593690e-04,
-+ 7.44130439198579488221e-04,
-+ 7.67308368664491478525e-04,
-+ 7.90027455163207908972e-04,
-+ 8.12275126040571966018e-04,
-+ 8.34039089134997737793e-04,
-+ 8.55307339553189088961e-04,
-+ 8.76068166275680644713e-04,
-+ 8.96310158588609247332e-04,
-+ 9.16022212337969966855e-04,
-+ 9.35193536003619163739e-04,
-+ 9.53813656588502287864e-04,
-+ 9.71872425321206783247e-04,
-+ 9.89360023167912576089e-04,
-+ 1.00626696615104373536e-03,
-+ 1.02258411047174220705e-03,
-+ 1.03830265743327931904e-03,
-+ 1.05341415816306632411e-03,
-+ 1.06791051813036243917e-03,
-+ 1.08178400145754450255e-03,
-+ 1.09502723502257035167e-03,
-+ 1.10763321235048616507e-03,
-+ 1.11959529729188916186e-03,
-+ 1.13090722748666861440e-03,
-+ 1.14156311761065294014e-03,
-+ 1.15155746240435427445e-03,
-+ 1.16088513948151006439e-03,
-+ 1.16954141191641532681e-03,
-+ 1.17752193060865497330e-03,
-+ 1.18482273642408174330e-03,
-+ 1.19144026211101582494e-03,
-+ 1.19737133399079663347e-03,
-+ 1.20261317342187467987e-03,
-+ 1.20716339803685892770e-03,
-+ 1.21102002275194891440e-03,
-+ 1.21418146054847906831e-03,
-+ 1.21664652302620073833e-03,
-+ 1.21841442072828740756e-03,
-+ 1.21948476323806070595e-03,
-+ 1.21985755904754564205e-03,
-+ 1.21953321519817120717e-03,
-+ 1.21851253669401512168e-03,
-+ 1.21679672568812116337e-03,
-+ 1.21438738044255738029e-03,
-+ 1.21128649406303441106e-03,
-+ 1.20749645300896710394e-03,
-+ 1.20302003538006298602e-03,
-+ 1.19786040898056927312e-03,
-+ 1.19202112916260414589e-03,
-+ 1.18550613644981912495e-03,
-+ 1.17831975394308238227e-03,
-+ 1.17046668450985027511e-03,
-+ 1.16195200775891173579e-03,
-+ 1.15278117680258848643e-03,
-+ 1.14296001480831705549e-03,
-+ 1.13249471134179986558e-03,
-+ 1.12139181850401392637e-03,
-+ 1.10965824686446259441e-03,
-+ 1.09730126119316579933e-03,
-+ 1.08432847599404177941e-03,
-+ 1.07074785084228674831e-03,
-+ 1.05656768552886740596e-03,
-+ 1.04179661501472100617e-03,
-+ 1.02644360419797825434e-03,
-+ 1.01051794249726128137e-03,
-+ 9.94029238254327297819e-04,
-+ 9.76987412959428496231e-04,
-+ 9.59402695302853094836e-04,
-+ 9.41285615056165433402e-04,
-+ 9.22646996786851249575e-04,
-+ 9.03497953410057892502e-04,
-+ 8.83849879581315145925e-04,
-+ 8.63714444933994722302e-04,
-+ 8.43103587165879497442e-04,
-+ 8.22029504978451252585e-04,
-+ 8.00504650873420757484e-04,
-+ 7.78541723810587853530e-04,
-+ 7.56153661731407702139e-04,
-+ 7.33353633952590140861e-04,
-+ 7.10155033434391397620e-04,
-+ 6.86571468927704795654e-04,
-+ 6.62616757005092820061e-04,
-+ 6.38304913980008450068e-04,
-+ 6.13650147719164789327e-04,
-+ 5.88666849352420377441e-04,
-+ 5.63369584885875388305e-04,
-+ 5.37773086722076747342e-04,
-+ 5.11892245092671863312e-04,
-+ 4.85742099408737208668e-04,
-+ 4.59337829533421374787e-04,
-+ 4.32694746982132956003e-04,
-+ 4.05828286055327270860e-04,
-+ 3.78753994909039224618e-04,
-+ 3.51487526568311297540e-04,
-+ 3.24044629888701042706e-04,
-+ 2.96441140471124468109e-04,
-+ 2.68692971535064537448e-04,
-+ 2.40816104755891792965e-04,
-+ 2.12826581070915530529e-04,
-+ 1.84740491459934620937e-04,
-+ 1.56573967705388389718e-04,
-+ 1.28343173137436734367e-04,
-+ 1.00064293369274724200e-04,
-+ 7.17535270279865756201e-05,
-+ 4.34270764862388947451e-05,
-+ 1.51011386001131606149e-05,
-+-1.32081045416696524620e-05,
-+-4.14844948516519899375e-05,
-+-6.97119074558447989051e-05,
-+-9.78742598787180241452e-05,
-+-1.25955521195249200029e-04,
-+-1.53939721145969320030e-04,
-+-1.81810959208852370795e-04,
-+-2.09553413623342002373e-04,
-+-2.37151350361132772252e-04,
-+-2.64589132039119191708e-04,
-+-2.91851226768812584828e-04,
-+-3.18922216937715912854e-04,
-+-3.45786807917504923019e-04,
-+-3.72429836694131806071e-04,
-+-3.98836280414924259936e-04,
-+-4.24991264848284251536e-04,
-+-4.50880072750091832195e-04,
-+-4.76488152133843997395e-04,
-+-5.01801124438317467692e-04,
-+-5.26804792589028771099e-04,
-+-5.51485148948722817865e-04,
-+-5.75828383152479162180e-04,
-+-5.99820889823062712923e-04,
-+-6.23449276162207780341e-04,
-+-6.46700369413619538528e-04,
-+-6.69561224193530326286e-04,
-+-6.92019129684716838985e-04,
-+-7.14061616690151953514e-04,
-+-7.35676464541983651108e-04,
-+-7.56851707862541919249e-04,
-+-7.77575643173267975865e-04,
-+-7.97836835348055277602e-04,
-+-8.17624123907448297453e-04,
-+-8.36926629150230058478e-04,
-+-8.55733758119046612582e-04,
-+-8.74035210396826049359e-04,
-+-8.91820983730703649786e-04,
-+-9.09081379480705491225e-04,
-+-9.25807007889788277297e-04,
-+-9.41988793172909236878e-04,
-+-9.57617978421671824096e-04,
-+-9.72686130322748202653e-04,
-+-9.87185143686923052483e-04,
-+-1.00110724578650659398e-03,
-+-1.01444500049902323544e-03,
-+-1.02719131225463187161e-03,
-+-1.03933942978544770035e-03,
-+-1.05088294967471814964e-03,
-+-1.06181581970400955479e-03,
-+-1.07213234199665663482e-03,
-+-1.08182717595588814667e-03,
-+-1.09089534099611235214e-03,
-+-1.09933221906604130548e-03,
-+-1.10713355696224189685e-03,
-+-1.11429546843220921015e-03,
-+-1.12081443606577282543e-03,
-+-1.12668731297399537551e-03,
-+-1.13191132425482891832e-03,
-+-1.13648406824482742922e-03,
-+-1.14040351755644074963e-03,
-+-1.14366801990044438496e-03,
-+-1.14627629869328028812e-03,
-+-1.14822745344909417364e-03,
-+-1.14952095995648801048e-03,
-+-1.15015667024007182777e-03,
-+-1.15013481230698852258e-03,
-+-1.14945598967880415094e-03,
-+-1.14812118070920518922e-03,
-+-1.14613173768805766059e-03,
-+-1.14348938573257991221e-03,
-+-1.14019622146641639096e-03,
-+-1.13625471148757692386e-03,
-+-1.13166769062629166132e-03,
-+-1.12643835999398341310e-03,
-+-1.12057028482466340680e-03,
-+-1.11406739211015104116e-03,
-+-1.10693396803060797873e-03,
-+-1.09917465518223384131e-03,
-+-1.09079444960363011567e-03,
-+-1.08179869760285343912e-03,
-+-1.07219309238717466423e-03,
-+-1.06198367049757311231e-03,
-+-1.05117680805022224028e-03,
-+-1.03977921678728496210e-03,
-+-1.02779793993942468629e-03,
-+-1.01524034790259534006e-03,
-+-1.00211413373173349912e-03,
-+-9.88427308454093486029e-04,
-+-9.74188196205089573972e-04,
-+-9.59405429189479725879e-04,
-+-9.44087942471171881302e-04,
-+-9.28244968594481583042e-04,
-+-9.11886032040267347637e-04,
-+-8.95020943520216660794e-04,
-+-8.77659794112658803340e-04,
-+-8.59812949243432501564e-04,
-+-8.41491042515366753467e-04,
-+-8.22704969390060901480e-04,
-+-8.03465880725650455872e-04,
-+-7.83785176174564036933e-04,
-+-7.63674497444838786334e-04,
-+-7.43145721429159210325e-04,
-+-7.22210953206033133382e-04,
-+-7.00882518916405724239e-04,
-+-6.79172958520581071529e-04,
-+-6.57095018439407888011e-04,
-+-6.34661644084213061485e-04,
-+-6.11885972279487986777e-04,
-+-5.88781323583261557639e-04,
-+-5.65361194509265800601e-04,
-+-5.41639249655565977945e-04,
-+-5.17629313744230818220e-04,
-+-4.93345363576712316218e-04,
-+-4.68801519909265351684e-04,
-+-4.44012039254113445412e-04,
-+-4.18991305609581871604e-04,
-+-3.93753822125390276140e-04,
-+-3.68314202707166818418e-04,
-+-3.42687163565271075971e-04,
-+-3.16887514712763855660e-04,
-+-2.90930151417445159289e-04,
-+-2.64830045612876889462e-04,
-+-2.38602237273343473298e-04,
-+-2.12261825757707105287e-04,
-+-1.85823961127170580662e-04,
-+-1.59303835441746181271e-04,
-+-1.32716674040886725835e-04,
-+-1.06077726812662281766e-04,
-+-7.94022594569434886792e-05,
-+-5.27055447474102572785e-05,
-+-2.60028537974079832656e-05,
-+ 6.90552665357526391948e-07,
-+ 2.73594330103061967382e-05,
-+ 5.39885733967170351332e-05,
-+ 8.05627964425661594961e-05,
-+ 1.07066969865010061308e-04,
-+ 1.33486015086968664006e-04,
-+ 1.59804915805331028064e-04,
-+ 1.86008726516105670021e-04,
-+ 2.12082580990773740320e-04,
-+ 2.38011700700330354344e-04,
-+ 2.63781403181116572490e-04,
-+ 2.89377110338554649482e-04,
-+ 3.14784356683413138554e-04,
-+ 3.39988797496425883184e-04,
-+ 3.64976216916463994978e-04,
-+ 3.89732535947750265582e-04,
-+ 4.14243820381606571868e-04,
-+ 4.38496288628281076592e-04,
-+ 4.62476319454435203307e-04,
-+ 4.86170459622126181851e-04,
-+ 5.09565431424569481242e-04,
-+ 5.32648140115051980069e-04,
-+ 5.55405681224405362376e-04,
-+ 5.77825347763134713856e-04,
-+ 5.99894637304163990538e-04,
-+ 6.21601258942250942466e-04,
-+ 6.42933140126212003714e-04,
-+ 6.63878433360159405340e-04,
-+ 6.84425522770043840912e-04,
-+ 7.04563030531877763050e-04,
-+ 7.24279823158044638691e-04,
-+ 7.43565017638393201127e-04,
-+ 7.62407987432378152909e-04,
-+ 7.80798368309418419284e-04,
-+ 7.98726064033930863682e-04,
-+ 8.16181251892069835503e-04,
-+ 8.33154388057122906319e-04,
-+ 8.49636212790671986259e-04,
-+ 8.65617755476581307410e-04,
-+ 8.81090339485367181512e-04,
-+ 8.96045586865937618293e-04,
-+ 9.10475422862473118477e-04,
-+ 9.24372080253872034986e-04,
-+ 9.37728103513655198570e-04,
-+ 9.50536352787640661209e-04,
-+ 9.62790007687844002875e-04,
-+ 9.74482570900335833865e-04,
-+ 9.85607871605071426957e-04,
-+ 9.96160068706062381411e-04,
-+ 1.00613365387018584458e-03,
-+ 1.01552345437301723939e-03,
-+ 1.02432463575029123783e-03,
-+ 1.03253270425362076584e-03,
-+ 1.04014350910924206067e-03,
-+ 1.04715324457870439731e-03,
-+ 1.05355845182046950481e-03,
-+ 1.05935602055159754607e-03,
-+ 1.06454319050862085752e-03,
-+ 1.06911755270714466277e-03,
-+ 1.07307705049946027105e-03,
-+ 1.07641998042986067850e-03,
-+ 1.07914499288730056890e-03,
-+ 1.08125109255521835092e-03,
-+ 1.08273763865848467007e-03,
-+ 1.08360434500746525242e-03,
-+ 1.08385127983937892479e-03,
-+ 1.08347886545726241128e-03,
-+ 1.08248787766686694993e-03,
-+ 1.08087944501203837150e-03,
-+ 1.07865504780918649262e-03,
-+ 1.07581651698158585126e-03,
-+ 1.07236603269432462238e-03,
-+ 1.06830612279092259861e-03,
-+ 1.06363966103263283235e-03,
-+ 1.05836986514164428132e-03,
-+ 1.05250029464946915324e-03,
-+ 1.04603484855193525419e-03,
-+ 1.03897776277230035648e-03,
-+ 1.03133360743408474848e-03,
-+ 1.02310728394540504521e-03,
-+ 1.01430402189651124034e-03,
-+ 1.00492937577281401564e-03,
-+ 9.94989221484924961370e-04,
-+ 9.84489752718325020209e-04,
-+ 9.73437477104688721023e-04,
-+ 9.61839212217239581185e-04,
-+ 9.49702081392630992861e-04,
-+ 9.37033509381853305618e-04,
-+ 9.23841217832837061606e-04,
-+ 9.10133220607474814970e-04,
-+ 8.95917818935899651529e-04,
-+ 8.81203596410921950570e-04,
-+ 8.65999413825665684263e-04,
-+ 8.50314403857379305478e-04,
-+ 8.34157965600880913111e-04,
-+ 8.17539758954521347464e-04,
-+ 8.00469698862303906568e-04,
-+ 7.82957949415445273941e-04,
-+ 7.65014917816926143072e-04,
-+ 7.46651248212579373396e-04,
-+ 7.27877815392361849668e-04,
-+ 7.08705718365645193080e-04,
-+ 6.89146273814000625765e-04,
-+ 6.69211009425744215821e-04,
-+ 6.48911657115913286138e-04,
-+ 6.28260146135471188311e-04,
-+ 6.07268596074486536641e-04,
-+ 5.85949309762400622446e-04,
-+ 5.64314766070410454152e-04,
-+ 5.42377612619488803404e-04,
-+ 5.20150658398866173708e-04,
-+ 4.97646866298883240425e-04,
-+ 4.74879345562723338432e-04,
-+ 4.51861344161378882325e-04,
-+ 4.28606241096286539726e-04,
-+ 4.05127538634095468555e-04,
-+ 3.81438854478096842863e-04,
-+ 3.57553913880674515205e-04,
-+ 3.33486541701773307050e-04,
-+ 3.09250654417399727884e-04,
-+ 2.84860252083193681537e-04,
-+ 2.60329410257538723227e-04,
-+ 2.35672271888895488046e-04,
-+ 2.10903039172021308919e-04,
-+ 1.86035965377764900275e-04,
-+ 1.61085346661131244934e-04,
-+ 1.36065513852313800395e-04,
-+ 1.10990824235409179101e-04,
-+ 8.58756533195474008359e-05,
-+ 6.07343866069771497630e-05,
-+ 3.55814113632548241332e-05,
-+ 1.04311083936491137648e-05,
-+-1.47021561691009029690e-05,
-+-3.98040390611660384779e-05,
-+-6.48602280634465855726e-05,
-+-8.98564501522054298295e-05,
-+-1.14778479619700933784e-04,
-+-1.39612146160650535745e-04,
-+-1.64343342919338251907e-04,
-+-1.88958034493250977151e-04,
-+-2.13442264888526227673e-04,
-+-2.37782165422681623619e-04,
-+-2.61963962570504571396e-04,
-+-2.85973985747828166135e-04,
-+-3.09798675029788052153e-04,
-+-3.33424588798768176210e-04,
-+-3.56838411317501760876e-04,
-+-3.80026960223441392147e-04,
-+-4.02977193940015090100e-04,
-+-4.25676219000628282361e-04,
-+-4.48111297281314371974e-04,
-+-4.70269853137984079287e-04,
-+-4.92139480444267647663e-04,
-+-5.13707949526006615523e-04,
-+-5.34963213988673739162e-04,
-+-5.55893417433529703382e-04,
-+-5.76486900059300605252e-04,
-+-5.96732205145306224443e-04,
-+-6.16618085412612730242e-04,
-+-6.36133509259657436812e-04,
-+-6.55267666868877677634e-04,
-+-6.74009976180998601758e-04,
-+-6.92350088733664401595e-04,
-+-7.10277895361227803138e-04,
-+-7.27783531752448681514e-04,
-+-7.44857383863318112810e-04,
-+-7.61490093181871590539e-04,
-+-7.77672561841829005844e-04,
-+-7.93395957582958798182e-04,
-+-8.08651718554891877494e-04,
-+-8.23431557962021757127e-04,
-+-8.37727468546858129381e-04,
-+-8.51531726909685537062e-04,
-+-8.64836897661822056639e-04,
-+-8.77635837410563617207e-04,
-+-8.89921698573554803210e-04,
-+-9.01687933020594461521e-04,
-+-9.12928295540940920420e-04,
-+-9.23636847134304576554e-04,
-+-9.33807958123846902805e-04,
-+-9.43436311089422422263e-04,
-+-9.52516903619767376157e-04,
-+-9.61045050882069389411e-04,
-+-9.69016388007670759208e-04,
-+-9.76426872292704612667e-04,
-+-9.83272785212578647254e-04,
-+-9.89550734249325901482e-04,
-+-9.95257654530941207952e-04,
-+-1.00039081028195663871e-03,
-+-1.00494779608456845030e-03,
-+-1.00892653794981169979e-03,
-+-1.01232529419831556589e-03,
-+-1.01514265615029741774e-03,
-+-1.01737754862461565394e-03,
-+-1.01902923024675272530e-03,
-+-1.02009729356571554777e-03,
-+-1.02058166497997625417e-03,
-+-1.02048260447267446181e-03,
-+-1.01980070515639048741e-03,
-+-1.01853689262794660890e-03,
-+-1.01669242413375375544e-03,
-+-1.01426888754638775715e-03,
-+-1.01126820015312980997e-03,
-+-1.00769260725730729240e-03,
-+-1.00354468059351414899e-03,
-+-9.98827316557644555306e-04,
-+-9.93543734253049580854e-04,
-+-9.87697473353981499761e-04,
-+-9.81292391787839295494e-04,
-+-9.74332663237617449883e-04,
-+-9.66822774466185295462e-04,
-+-9.58767522464084383411e-04,
-+-9.50172011422648630022e-04,
-+-9.41041649534305781055e-04,
-+-9.31382145622106083493e-04,
-+-9.21199505600451087374e-04,
-+-9.10500028769397197308e-04,
-+-8.99290303944565551711e-04,
-+-8.87577205425210550085e-04,
-+-8.75367888802800289162e-04,
-+-8.62669786612691802744e-04,
-+-8.49490603831530729194e-04,
-+-8.35838313223061083780e-04,
-+-8.21721150535182709787e-04,
-+-8.07147609551117617942e-04,
-+-7.92126436997654084955e-04,
-+-7.76666627313488014232e-04,
-+-7.60777417280939101916e-04,
-+-7.44468280523723365504e-04,
-+-7.27748921874987655251e-04,
-+-7.10629271617923522104e-04,
-+-6.93119479603028368700e-04,
-+-6.75229909245266381526e-04,
-+-6.56971131404673501161e-04,
-+-6.38353918154137712354e-04,
-+-6.19389236437722294319e-04,
-+-6.00088241623651132139e-04,
-+-5.80462270955458170714e-04,
-+-5.60522836905225714695e-04,
-+-5.40281620432863491331e-04,
-+-5.19750464155060228240e-04,
-+-4.98941365428588355299e-04,
-+-4.77866469351204028841e-04,
-+-4.56538061684547645785e-04,
-+-4.34968561703376289593e-04,
-+-4.13170514974962768510e-04,
-+-3.91156586073003096314e-04,
-+-3.68939551230221718554e-04,
-+-3.46532290933948842939e-04,
-+-3.23947782468940600423e-04,
-+-3.01199092411757270073e-04,
-+-2.78299369081070745603e-04,
-+-2.55261834948078349290e-04,
-+-2.32099779011821834730e-04,
-+-2.08826549143248190420e-04,
-+-1.85455544402832308909e-04,
-+-1.62000207336008043239e-04,
-+-1.38474016250865456347e-04,
-+-1.14890477482541928256e-04,
-+-9.12631176487416705644e-05,
-+-6.76054759008182519671e-05,
-+-4.39310961748295172825e-05,
-+-2.02535194471571128164e-05,
-+ 3.41372400124625000704e-06,
-+ 2.70571223073466086593e-05,
-+ 5.06631897304295544804e-05,
-+ 7.42184743349819369285e-05,
-+ 9.77095656468657952631e-05,
-+ 1.21123102278798669873e-04,
-+ 1.44445779520586308278e-04,
-+ 1.67664356890219484351e-04,
-+ 1.90765665640995252163e-04,
-+ 2.13736616220833977771e-04,
-+ 2.36564205679401197901e-04,
-+ 2.59235525018876972973e-04,
-+ 2.81737766484226406522e-04,
-+ 3.04058230788827618760e-04,
-+ 3.26184334271549601202e-04,
-+ 3.48103615980852423070e-04,
-+ 3.69803744682461728397e-04,
-+ 3.91272525786277706496e-04,
-+ 4.12497908188799451267e-04,
-+ 4.33467991027201371770e-04,
-+ 4.54171030341281908426e-04,
-+ 4.74595445639567638761e-04,
-+ 4.94729826365895158924e-04,
-+ 5.14562938262885013335e-04,
-+ 5.34083729628744225196e-04,
-+ 5.53281337463915729412e-04,
-+ 5.72145093504289737989e-04,
-+ 5.90664530137289503671e-04,
-+ 6.08829386198019386657e-04,
-+ 6.26629612641936822176e-04,
-+ 6.44055378091031721643e-04,
-+ 6.61097074250476457111e-04,
-+ 6.77745321192732130128e-04,
-+ 6.93990972506254143876e-04,
-+ 7.09825120305858456998e-04,
-+ 7.25239100102302775876e-04,
-+ 7.40224495528040305620e-04,
-+ 7.54773142916835191284e-04,
-+ 7.68877135734856572910e-04,
-+ 7.82528828860328353779e-04,
-+ 7.95720842710183188552e-04,
-+ 8.08446067210845170301e-04,
-+ 8.20697665611487049177e-04,
-+ 8.32469078137362318050e-04,
-+ 8.43754025481521134980e-04,
-+ 8.54546512132969143805e-04,
-+ 8.64840829539518206326e-04,
-+ 8.74631559103689298733e-04,
-+ 8.83913575010109465319e-04,
-+ 8.92682046882942626005e-04,
-+ 9.00932442271964615751e-04,
-+ 9.08660528966120082696e-04,
-+ 9.15862377133194608195e-04,
-+ 9.22534361284796920223e-04,
-+ 9.28673162065495115362e-04,
-+ 9.34275767865342418421e-04,
-+ 9.39339476254983990131e-04,
-+ 9.43861895242741424407e-04,
-+ 9.47840944353070817725e-04,
-+ 9.51274855525978185397e-04,
-+ 9.54162173837028583338e-04,
-+ 9.56501758037713121358e-04,
-+ 9.58292780916003973483e-04,
-+ 9.59534729477142054460e-04,
-+ 9.60227404944570409398e-04,
-+ 9.60370922581348226629e-04,
-+ 9.59965711332194985249e-04,
-+ 9.59012513286591154055e-04,
-+ 9.57512382963391348902e-04,
-+ 9.55466686417531189252e-04,
-+ 9.52877100169494421419e-04,
-+ 9.49745609958331992936e-04,
-+ 9.46074509319091115633e-04,
-+ 9.41866397985661216001e-04,
-+ 9.37124180120078799534e-04,
-+ 9.31851062369440700205e-04,
-+ 9.26050551751833660001e-04,
-+ 9.19726453372463970473e-04,
-+ 9.12882867971548752663e-04,
-+ 9.05524189305535872827e-04,
-+ 8.97655101363274135137e-04,
-+ 8.89280575418887665219e-04,
-+ 8.80405866923194158763e-04,
-+ 8.71036512235576058406e-04,
-+ 8.61178325198361390401e-04,
-+ 8.50837393555776847279e-04,
-+ 8.40020075219696923594e-04,
-+ 8.28732994384399467708e-04,
-+ 8.16983037492857960653e-04,
-+ 8.04777349056774379821e-04,
-+ 7.92123327333073561259e-04,
-+ 7.79028619859369530695e-04,
-+ 7.65501118851119729744e-04,
-+ 7.51548956463218408713e-04,
-+ 7.37180499918858086333e-04,
-+ 7.22404346508583494919e-04,
-+ 7.07229318462486390359e-04,
-+ 6.91664457698695713146e-04,
-+ 6.75719020451036778314e-04,
-+ 6.59402471779397571228e-04,
-+ 6.42724479965596788740e-04,
-+ 6.25694910798709228936e-04,
-+ 6.08323821752458095656e-04,
-+ 5.90621456058646517734e-04,
-+ 5.72598236680009584250e-04,
-+ 5.54264760185757283245e-04,
-+ 5.35631790533803520474e-04,
-+ 5.16710252763027825043e-04,
-+ 4.97511226599373773682e-04,
-+ 4.78045939979498718704e-04,
-+ 4.58325762495759227340e-04,
-+ 4.38362198766371338136e-04,
-+ 4.18166881734467700462e-04,
-+ 3.97751565900299880723e-04,
-+ 3.77128120490046988070e-04,
-+ 3.56308522565547207937e-04,
-+ 3.35304850078806907388e-04,
-+ 3.14129274875331928468e-04,
-+ 2.92794055650324276316e-04,
-+ 2.71311530861826331624e-04,
-+ 2.49694111604887615530e-04,
-+ 2.27954274450881122505e-04,
-+ 2.06104554256081410344e-04,
-+ 1.84157536943679384566e-04,
-+ 1.62125852263222448597e-04,
-+ 1.40022166532036894350e-04,
-+ 1.17859175362270858218e-04,
-+ 9.56495963781261012088e-05,
-+ 7.34061619272917469060e-05,
-+ 5.11416117907757448134e-05,
-+ 2.88686858953092775838e-05,
-+ 6.60011703245474962544e-06,
-+-1.56513764112641267506e-05,
-+-3.78730977094623622752e-05,
-+-6.00523790315616779367e-05,
-+-8.21765886552515715992e-05,
-+-1.04233138151800156347e-04,
-+-1.26209489539367793924e-04,
-+-1.48093162401345972059e-04,
-+-1.69871740964736657117e-04,
-+-1.91532881135268300563e-04,
-+-2.13064317484699505389e-04,
-+-2.34453870186744113427e-04,
-+-2.55689451897549299090e-04,
-+-2.76759074576870677410e-04,
-+-2.97650856246099086537e-04,
-+-3.18353027679335392423e-04,
-+-3.38853939023753682018e-04,
-+-3.59142066345504676773e-04,
-+-3.79206018097636495413e-04,
-+-3.99034541506046805132e-04,
-+-4.18616528870369446116e-04,
-+-4.37941023775921783445e-04,
-+-4.56997227213373118440e-04,
-+-4.75774503602719464699e-04,
-+-4.94262386718192386383e-04,
-+-5.12450585510814218305e-04,
-+-5.30328989825377310544e-04,
-+-5.47887676008649280625e-04,
-+-5.65116912405763628310e-04,
-+-5.82007164741549449030e-04,
-+-5.98549101384425463745e-04,
-+-6.14733598488893004212e-04,
-+-6.30551745014977364258e-04,
-+-6.45994847621079656963e-04,
-+-6.61054435427856318212e-04,
-+-6.75722264650496957927e-04,
-+-6.89990323096750768871e-04,
-+-7.03850834528551736954e-04,
-+-7.17296262884492574242e-04,
-+-7.30319316361157646819e-04,
-+-7.42912951350982778652e-04,
-+-7.55070376234532832961e-04,
-+-7.66785055025333219143e-04,
-+-7.78050710864884066675e-04,
-+-7.88861329366501596444e-04,
-+-7.99211161806001623743e-04,
-+-8.09094728157404166971e-04,
-+-8.18506819972308029276e-04,
-+-8.27442503101282920627e-04,
-+-8.35897120255950105278e-04,
-+-8.43866293410389599859e-04,
-+-8.51345926040684010221e-04,
-+-8.58332205201442922232e-04,
-+-8.64821603438301273262e-04,
-+-8.70810880535423945462e-04,
-+-8.76297085097227715367e-04,
-+-8.81277555963454932789e-04,
-+-8.85749923457110387506e-04,
-+-8.89712110464565414381e-04,
-+-8.93162333347438598848e-04,
-+-8.96099102685879683565e-04,
-+-8.98521223852970446835e-04,
-+-9.00427797420107569638e-04,
-+-9.01818219393255059504e-04,
-+-9.02692181280114911909e-04,
-+-9.03049669988348823954e-04,
-+-9.02890967555027251605e-04,
-+-9.02216650707655248853e-04,
-+-9.01027590257164317372e-04,
-+-8.99324950323396755253e-04,
-+-8.97110187393653770935e-04,
-+-8.94385049215033777793e-04,
-+-8.91151573521319268802e-04,
-+-8.87412086595320399006e-04,
-+-8.83169201667640974690e-04,
-+-8.78425817152939884119e-04,
-+-8.73185114724849367231e-04,
-+-8.67450557230792511539e-04,
-+-8.61225886448070839484e-04,
-+-8.54515120682583636733e-04,
-+-8.47322552211840669678e-04,
-+-8.39652744573696728503e-04,
-+-8.31510529702644309025e-04,
-+-8.22901004915378340120e-04,
-+-8.13829529747517842198e-04,
-+-8.04301722643430768052e-04,
-+-7.94323457501185689437e-04,
-+-7.83900860074752763550e-04,
-+-7.73040304235644501474e-04,
-+-7.61748408096249419140e-04,
-+-7.50032029997244466084e-04,
-+-7.37898264361402087853e-04,
-+-7.25354437416511968473e-04,
-+-7.12408102789705661648e-04,
-+-6.99067036976015396266e-04,
-+-6.85339234683824977817e-04,
-+-6.71232904059968502400e-04,
-+-6.56756461797351536944e-04,
-+-6.41918528127957059397e-04,
-+-6.26727921704332315012e-04,
-+-6.11193654372324123199e-04,
-+-5.95324925838475161287e-04,
-+-5.79131118235020063596e-04,
-+-5.62621790585767769452e-04,
-+-5.45806673175928220784e-04,
-+-5.28695661829722569208e-04,
-+-5.11298812098492927447e-04,
-+-4.93626333363000229307e-04,
-+-4.75688582853520537230e-04,
-+-4.57496059590992946043e-04,
-+-4.39059398252854521209e-04,
-+-4.20389362967140572426e-04,
-+-4.01496841038451060622e-04,
-+-3.82392836609444868555e-04,
-+-3.63088464261537163542e-04,
-+-3.43594942558548969210e-04,
-+-3.23923587536901721236e-04,
-+-3.04085806146491737303e-04,
-+-2.84093089645560742049e-04,
-+-2.63957006953748822640e-04,
-+-2.43689197967006995066e-04,
-+-2.23301366838275436311e-04,
-+-2.02805275227777953529e-04,
-+-1.82212735526838365925e-04,
-+-1.61535604059103902281e-04,
-+-1.40785774263093080554e-04,
-+-1.19975169859954066938e-04,
-+-9.91157380105508263764e-05,
-+-7.82194424651331946842e-05,
-+-5.72982567107504074688e-05,
-+-3.63641571189655019264e-05,
-+-1.54291160986802106125e-05,
-+ 5.49490474234285622543e-06,
-+ 2.63959614233348352161e-05,
-+ 4.72621343997122955673e-05,
-+ 6.80815353521026694937e-05,
-+ 8.88423139508433642357e-05,
-+ 1.09532664592484337918e-04,
-+ 1.30140833104319903011e-04,
-+ 1.50655123413172910328e-04,
-+ 1.71063904174602321451e-04,
-+ 1.91355615359099600053e-04,
-+ 2.11518774790675712300e-04,
-+ 2.31541984635477411745e-04,
-+ 2.51413937835562545462e-04,
-+ 2.71123424484858896975e-04,
-+ 2.90659338143525736164e-04,
-+ 3.10010682087186043628e-04,
-+ 3.29166575487528168323e-04,
-+ 3.48116259520795355564e-04,
-+ 3.66849103400749643276e-04,
-+ 3.85354610332733758284e-04,
-+ 4.03622423385466462271e-04,
-+ 4.21642331277442610968e-04,
-+ 4.39404274074367811459e-04,
-+ 4.56898348794905137527e-04,
-+ 4.74114814921268088160e-04,
-+ 4.91044099811763397334e-04,
-+ 5.07676804012220281824e-04,
-+ 5.24003706463404693612e-04,
-+ 5.40015769601512427185e-04,
-+ 5.55704144348954519501e-04,
-+ 5.71060174992583653546e-04,
-+ 5.86075403946940813073e-04,
-+ 6.00741576399512768568e-04,
-+ 6.15050644835952228101e-04,
-+ 6.28994773442125574073e-04,
-+ 6.42566342381337704884e-04,
-+ 6.55757951943882421396e-04,
-+ 6.68562426566777384153e-04,
-+ 6.80972818721725897499e-04,
-+ 6.92982412668881352959e-04,
-+ 7.04584728074633746646e-04,
-+ 7.15773523491389403184e-04,
-+ 7.26542799697492522500e-04,
-+ 7.36886802895533226179e-04,
-+ 7.46800027767298055768e-04,
-+ 7.56277220383868350323e-04,
-+ 7.65313380969130045012e-04,
-+ 7.73903766515502376799e-04,
-+ 7.82043893250363385782e-04,
-+ 7.89729538951949232121e-04,
-+ 7.96956745113565389119e-04,
-+ 8.03721818954994393636e-04,
-+ 8.10021335280101820522e-04,
-+ 8.15852138179731594357e-04,
-+ 8.21211342579053417585e-04,
-+ 8.26096335628634381720e-04,
-+ 8.30504777938583372936e-04,
-+ 8.34434604655206872172e-04,
-+ 8.37884026379746372007e-04,
-+ 8.40851529928737925421e-04,
-+ 8.43335878935819161471e-04,
-+ 8.45336114294710332107e-04,
-+ 8.46851554443294471733e-04,
-+ 8.47881795488795693763e-04,
-+ 8.48426711174108750049e-04,
-+ 8.48486452685477828516e-04,
-+ 8.48061448301770160786e-04,
-+ 8.47152402885697889713e-04,
-+ 8.45760297217433587059e-04,
-+ 8.43886387171142548884e-04,
-+ 8.41532202735059621686e-04,
-+ 8.38699546875822229616e-04,
-+ 8.35390494247859852379e-04,
-+ 8.31607389748687583081e-04,
-+ 8.27352846921140154882e-04,
-+ 8.22629746203563960195e-04,
-+ 8.17441233029105799972e-04,
-+ 8.11790715775362542797e-04,
-+ 8.05681863565683954384e-04,
-+ 7.99118603923527101411e-04,
-+ 7.92105120281344542502e-04,
-+ 7.84645849345590325717e-04,
-+ 7.76745478319420114104e-04,
-+ 7.68408941984943219712e-04,
-+ 7.59641419646665534519e-04,
-+ 7.50448331938106580861e-04,
-+ 7.40835337493533463253e-04,
-+ 7.30808329486818254554e-04,
-+ 7.20373432039535070703e-04,
-+ 7.09536996500486488726e-04,
-+ 6.98305597598893957115e-04,
-+ 6.86686029473570981770e-04,
-+ 6.74685301580476909020e-04,
-+ 6.62310634481180966239e-04,
-+ 6.49569455514414613798e-04,
-+ 6.36469394353982704203e-04,
-+ 6.23018278454912912898e-04,
-+ 6.09224128391051378099e-04,
-+ 5.95095153086705442279e-04,
-+ 5.80639744945168250270e-04,
-+ 5.65866474877092448525e-04,
-+ 5.50784087231426526705e-04,
-+ 5.35401494632215197225e-04,
-+ 5.19727772724077859492e-04,
-+ 5.03772154829525923431e-04,
-+ 4.87544026521280851084e-04,
-+ 4.71052920112772989698e-04,
-+ 4.54308509069835603569e-04,
-+ 4.37320602347533553267e-04,
-+ 4.20099138654383497463e-04,
-+ 4.02654180648284807775e-04,
-+ 3.84995909067011564137e-04,
-+ 3.67134616796844961539e-04,
-+ 3.49080702882780392719e-04,
-+ 3.30844666483778653780e-04,
-+ 3.12437100776581622944e-04,
-+ 2.93868686811618183737e-04,
-+ 2.75150187324561020918e-04,
-+ 2.56292440507140670877e-04,
-+ 2.37306353740675621137e-04,
-+ 2.18202897296279266356e-04,
-+ 1.98993098004925772883e-04,
-+ 1.79688032901358264856e-04,
-+ 1.60298822845364506793e-04,
-+ 1.40836626124112224753e-04,
-+ 1.21312632039215933556e-04,
-+ 1.01738054482220324185e-04,
-+ 8.21241255021581603984e-05,
-+ 6.24820888690072755080e-05,
-+ 4.28231936363832337185e-05,
-+ 2.31586877076589681926e-05,
-+ 3.49981140855670628566e-06,
-+-1.61422089292776860909e-05,
-+-3.57561673710188603244e-05,
-+-5.53308847633998468008e-05,
-+-7.48552150979509803470e-05,
-+-9.43180518494260796856e-05,
-+-1.13708334285348401584e-04,
-+-1.33015053743449631566e-04,
-+-1.52227259873300292507e-04,
-+-1.71334066838623079324e-04,
-+-1.90324659476782091653e-04,
-+-2.09188299411965425824e-04,
-+-2.27914331118587613423e-04,
-+-2.46492187931631313944e-04,
-+-2.64911398000205382339e-04,
-+-2.83161590181416034876e-04,
-+-3.01232499870904074039e-04,
-+-3.19113974766915017931e-04,
-+-3.36795980564636679867e-04,
-+-3.54268606577632174954e-04,
-+-3.71522071283203947009e-04,
-+-3.88546727788614181063e-04,
-+-4.05333069215096399290e-04,
-+-4.21871733996659933463e-04,
-+-4.38153511090731847231e-04,
-+-4.54169345097848065496e-04,
-+-4.69910341287265624979e-04,
-+-4.85367770526103374431e-04,
-+-5.00533074108989832485e-04,
-+-5.15397868485681603760e-04,
-+-5.29953949884007929905e-04,
-+-5.44193298825634374886e-04,
-+-5.58108084532057653962e-04,
-+-5.71690669218670195068e-04,
-+-5.84933612274217158006e-04,
-+-5.97829674323603708214e-04,
-+-6.10371821171734304026e-04,
-+-6.22553227626419856781e-04,
-+-6.34367281197839366289e-04,
-+-6.45807585673186250637e-04,
-+-6.56867964564019149454e-04,
-+-6.67542464424877488548e-04,
-+-6.77825358041074066233e-04,
-+-6.87711147484166077093e-04,
-+-6.97194567033422758773e-04,
-+-7.06270585961741746359e-04,
-+-7.14934411184561628694e-04,
-+-7.23181489770394637234e-04,
-+-7.31007511311650994522e-04,
-+-7.38408410154600355381e-04,
-+-7.45380367487197487489e-04,
-+-7.51919813283889650751e-04,
-+-7.58023428106295344038e-04,
-+-7.63688144758921860430e-04,
-+-7.68911149799110884596e-04,
-+-7.73689884900469453805e-04,
-+-7.78022048069176852536e-04,
-+-7.81905594712582730464e-04,
-+-7.85338738559663196610e-04,
-+-7.88319952432907605604e-04,
-+-7.90847968871373333856e-04,
-+-7.92921780604692572579e-04,
-+-7.94540640877896479737e-04,
-+-7.95704063626980471514e-04,
-+-7.96411823505323844020e-04,
-+-7.96663955761047642458e-04,
-+-7.96460755965521980358e-04,
-+-7.95802779593343299035e-04,
-+-7.94690841454150087575e-04,
-+-7.93126014976744679770e-04,
-+-7.91109631346083286806e-04,
-+-7.88643278493758549327e-04,
-+-7.85728799942701674856e-04,
-+-7.82368293506905928061e-04,
-+-7.78564109847002514854e-04,
-+-7.74318850882812310596e-04,
-+-7.69635368063673682044e-04,
-+-7.64516760497901438909e-04,
-+-7.58966372942442794175e-04,
-+-7.52987793654077996498e-04,
-+-7.46584852103500504379e-04,
-+-7.39761616553728774091e-04,
-+-7.32522391504357027643e-04,
-+-7.24871715003236934821e-04,
-+-7.16814355827273216350e-04,
-+-7.08355310534040027645e-04,
-+-6.99499800386016380889e-04,
-+-6.90253268149437163720e-04,
-+-6.80621374769529714592e-04,
-+-6.70609995924295360266e-04,
-+-6.60225218458873998675e-04,
-+-6.49473336702642350601e-04,
-+-6.38360848671277059801e-04,
-+-6.26894452156058273537e-04,
-+-6.15081040702747340251e-04,
-+-6.02927699482527735750e-04,
-+-5.90441701057256335301e-04,
-+-5.77630501041881037026e-04,
-+-5.64501733666179588388e-04,
-+-5.51063207239021373221e-04,
-+-5.37322899517202385612e-04,
-+-5.23288952982047124961e-04,
-+-5.08969670026456150538e-04,
-+-4.94373508055059602412e-04,
-+-4.79509074500653401096e-04,
-+-4.64385121759629336102e-04,
-+-4.49010542049456493497e-04,
-+-4.33394362191214064118e-04,
-+-4.17545738320244637712e-04,
-+-4.01473950527997305165e-04,
-+-3.85188397438232619108e-04,
-+-3.68698590720627130540e-04,
-+-3.52014149545262831995e-04,
-+-3.35144794980849110039e-04,
-+-3.18100344340219566650e-04,
-+-3.00890705476273645578e-04,
-+-2.83525871031688149124e-04,
-+-2.66015912645737500133e-04,
-+-2.48370975121568597112e-04,
-+-2.30601270557308229850e-04,
-+-2.12717072444391431304e-04,
-+-1.94728709736517952358e-04,
-+-1.76646560892675731939e-04,
-+-1.58481047897534086224e-04,
-+-1.40242630262970099540e-04,
-+-1.21941799013744982391e-04,
-+-1.03589070661107662103e-04,
-+-8.51949811676530225713e-05,
-+-6.67700799069139572109e-05,
-+-4.83249236211274086098e-05,
-+-2.98700703807564870525e-05,
-+-1.14160735488978414020e-05,
-+ 7.02652424554682768497e-06,
-+ 2.54471971228236679705e-05,
-+ 4.38354419518023738413e-05,
-+ 6.21807843308446069313e-05,
-+ 8.04727845460066358498e-05,
-+ 9.87010435040899136066e-05,
-+ 1.16855208636383958460e-04,
-+ 1.34924979770344443406e-04,
-+ 1.52900114965400754944e-04,
-+ 1.70770436309920342057e-04,
-+ 1.88525835675920134431e-04,
-+ 2.06156280428297997024e-04,
-+ 2.23651819085366783272e-04,
-+ 2.41002586927498689160e-04,
-+ 2.58198811550729352172e-04,
-+ 2.75230818362170949389e-04,
-+ 2.92089036014278136209e-04,
-+ 3.08764001774616207285e-04,
-+ 3.25246366828520531121e-04,
-+ 3.41526901511388200801e-04,
-+ 3.57596500467790591720e-04,
-+ 3.73446187734516289129e-04,
-+ 3.89067121744707245228e-04,
-+ 4.04450600250306482528e-04,
-+ 4.19588065160076859831e-04,
-+ 4.34471107290538996557e-04,
-+ 4.49091471027067759818e-04,
-+ 4.63441058892829452643e-04,
-+ 4.77511936022862045707e-04,
-+ 4.91296334540600198627e-04,
-+ 5.04786657835014449663e-04,
-+ 5.17975484735516645760e-04,
-+ 5.30855573582563605717e-04,
-+ 5.43419866191619145568e-04,
-+ 5.55661491708522902247e-04,
-+ 5.67573770353875343975e-04,
-+ 5.79150217054632036016e-04,
-+ 5.90384544960849454512e-04,
-+ 6.01270668845691608206e-04,
-+ 6.11802708386863214850e-04,
-+ 6.21974991327834889066e-04,
-+ 6.31782056516764687314e-04,
-+ 6.41218656822146407942e-04,
-+ 6.50279761923036299723e-04,
-+ 6.58960560972716405566e-04,
-+ 6.67256465134287500389e-04,
-+ 6.75163109986891556320e-04,
-+ 6.82676357801303567048e-04,
-+ 6.89792299683732634992e-04,
-+ 6.96507257586713749917e-04,
-+ 7.02817786186088130918e-04,
-+ 7.08720674623126924326e-04,
-+ 7.14212948110944231481e-04,
-+ 7.19291869404349885550e-04,
-+ 7.23954940132546750399e-04,
-+ 7.28199901993943090293e-04,
-+ 7.32024737812592227876e-04,
-+ 7.35427672455747746989e-04,
-+ 7.38407173612188813538e-04,
-+ 7.40961952430967151807e-04,
-+ 7.43090964020374881993e-04,
-+ 7.44793407806954867699e-04,
-+ 7.46068727754538611394e-04,
-+ 7.46916612443245453087e-04,
-+ 7.47336995008605268868e-04,
-+ 7.47330052940939869310e-04,
-+ 7.46896207745253873714e-04,
-+ 7.46036124461981245935e-04,
-+ 7.44750711048991790794e-04,
-+ 7.43041117625342466269e-04,
-+ 7.40908735577333176642e-04,
-+ 7.38355196527534156196e-04,
-+ 7.35382371167495095879e-04,
-+ 7.31992367954923252131e-04,
-+ 7.28187531676248857131e-04,
-+ 7.23970441875473923535e-04,
-+ 7.19343911150391139564e-04,
-+ 7.14310983317213688513e-04,
-+ 7.08874931444885593435e-04,
-+ 7.03039255760210023485e-04,
-+ 6.96807681425207193181e-04,
-+ 6.90184156188062745106e-04,
-+ 6.83172847909139504749e-04,
-+ 6.75778141963576887280e-04,
-+ 6.68004638522109246875e-04,
-+ 6.59857149711750939035e-04,
-+ 6.51340696658104286593e-04,
-+ 6.42460506411091959722e-04,
-+ 6.33222008755997788076e-04,
-+ 6.23630832911684193816e-04,
-+ 6.13692804118148903594e-04,
-+ 6.03413940115261806379e-04,
-+ 5.92800447514970491047e-04,
-+ 5.81858718069071527597e-04,
-+ 5.70595324834820847096e-04,
-+ 5.59017018240628819903e-04,
-+ 5.47130722054300845832e-04,
-+ 5.34943529255999883701e-04,
-+ 5.22462697818653785606e-04,
-+ 5.09695646398130772746e-04,
-+ 4.96649949935782969619e-04,
-+ 4.83333335176001986210e-04,
-+ 4.69753676101234622468e-04,
-+ 4.55918989287601634543e-04,
-+ 4.41837429183325480515e-04,
-+ 4.27517283312972833521e-04,
-+ 4.12966967410454712222e-04,
-+ 3.98195020483432121378e-04,
-+ 3.83210099812103391695e-04,
-+ 3.68020975885298450622e-04,
-+ 3.52636527276817995143e-04,
-+ 3.37065735465011645077e-04,
-+ 3.21317679598622223548e-04,
-+ 3.05401531211941905386e-04,
-+ 2.89326548892257452619e-04,
-+ 2.73102072902946376928e-04,
-+ 2.56737519764977252090e-04,
-+ 2.40242376800225943771e-04,
-+ 2.23626196639659541874e-04,
-+ 2.06898591699577582680e-04,
-+ 1.90069228629096543095e-04,
-+ 1.73147822732087712776e-04,
-+ 1.56144132366777384441e-04,
-+ 1.39067953326214697627e-04,
-+ 1.21929113202958933396e-04,
-+ 1.04737465740963099658e-04,
-+ 8.75028851780528622514e-05,
-+ 7.02352605825545112366e-05,
-+ 5.29444901866215451251e-05,
-+ 3.56404757200933205497e-05,
-+ 1.83331167478597644273e-05,
-+ 1.03230501413102183826e-06,
-+-1.62520812034707693762e-05,
-+-3.35101827263670735968e-05,
-+-5.07321650911279374628e-05,
-+-6.79082241459080256747e-05,
-+-8.50285916240537564164e-05,
-+-1.02083540691677796268e-04,
-+-1.19063391466316483881e-04,
-+-1.35958516502816118129e-04,
-+-1.52759346244455719837e-04,
-+-1.69456374435215186046e-04,
-+-1.86040163490673691061e-04,
-+-2.02501349824351403305e-04,
-+-2.18830649126511295058e-04,
-+-2.35018861592449355329e-04,
-+-2.51056877097335180617e-04,
-+-2.66935680314695194647e-04,
-+-2.82646355775669996281e-04,
-+-2.98180092866208153266e-04,
-+-3.13528190759385430846e-04,
-+-3.28682063280201183005e-04,
-+-3.43633243699864576997e-04,
-+-3.58373389457262059472e-04,
-+-3.72894286804705877604e-04,
-+-3.87187855375492433196e-04,
-+-4.01246152670716468933e-04,
-+-4.15061378462855390652e-04,
-+-4.28625879113702864826e-04,
-+-4.41932151804175915588e-04,
-+-4.54972848673900734286e-04,
-+-4.67740780867979507370e-04,
-+-4.80228922488919207114e-04,
-+-4.92430414451660788955e-04,
-+-5.04338568239140645766e-04,
-+-5.15946869556969272587e-04,
-+-5.27248981884690759263e-04,
-+-5.38238749922089398589e-04,
-+-5.48910202928370723023e-04,
-+-5.59257557952611700225e-04,
-+-5.69275222953672071884e-04,
-+-5.78957799807889249809e-04,
-+-5.88300087202963859455e-04,
-+-5.97297083416476414473e-04,
-+-6.05943988977575135647e-04,
-+-6.14236209210458085871e-04,
-+-6.22169356658183671412e-04,
-+-6.29739253385739618761e-04,
-+-6.36941933161007476510e-04,
-+-6.43773643512582892379e-04,
-+-6.50230847663354235948e-04,
-+-6.56310226338886878658e-04,
-+-6.62008679449682451920e-04,
-+-6.67323327646487897066e-04,
-+-6.72251513747878452071e-04,
-+-6.76790804039441285488e-04,
-+-6.80938989443917279398e-04,
-+-6.84694086561815564058e-04,
-+-6.88054338581924984468e-04,
-+-6.91018216061473023945e-04,
-+-6.93584417575499262779e-04,
-+-6.95751870235252118692e-04,
-+-6.97519730075439408322e-04,
-+-6.98887382310238512544e-04,
-+-6.99854441458020392307e-04,
-+-7.00420751334910186674e-04,
-+-7.00586384917250637808e-04,
-+-7.00351644073214348388e-04,
-+-6.99717059163839283017e-04,
-+-6.98683388513845408767e-04,
-+-6.97251617752650001102e-04,
-+-6.95422959026119487901e-04,
-+-6.93198850079607088379e-04,
-+-6.90580953212918528285e-04,
-+-6.87571154107985264316e-04,
-+-6.84171560529966103770e-04,
-+-6.80384500902708982788e-04,
-+-6.76212522759481789864e-04,
-+-6.71658391069967749057e-04,
-+-6.66725086444653041590e-04,
-+-6.61415803217692819561e-04,
-+-6.55733947409528573555e-04,
-+-6.49683134570482436268e-04,
-+-6.43267187506764773208e-04,
-+-6.36490133890204668257e-04,
-+-6.29356203753268024677e-04,
-+-6.21869826870875635171e-04,
-+-6.14035630030630393862e-04,
-+-6.05858434193134814082e-04,
-+-5.97343251544118505024e-04,
-+-5.88495282440187417530e-04,
-+-5.79319912250014150239e-04,
-+-5.69822708092951237674e-04,
-+-5.60009415476908612407e-04,
-+-5.49885954837576801033e-04,
-+-5.39458417981255439720e-04,
-+-5.28733064433041348440e-04,
-+-5.17716317692869828875e-04,
-+-5.06414761401502129881e-04,
-+-4.94835135418839880059e-04,
-+-4.82984331816689843164e-04,
-+-4.70869390788640387446e-04,
-+-4.58497496479242630431e-04,
-+-4.45875972735065601461e-04,
-+-4.33012278780107377589e-04,
-+-4.19914004818108983763e-04,
-+-4.06588867564375744564e-04,
-+-3.93044705709642795341e-04,
-+-3.79289475318866453699e-04,
-+-3.65331245167339706530e-04,
-+-3.51178192017081926713e-04,
-+-3.36838595836177763076e-04,
-+-3.22320834963867378347e-04,
-+-3.07633381224204521288e-04,
-+-2.92784794991132475261e-04,
-+-2.77783720207839526437e-04,
-+-2.62638879363297228237e-04,
-+-2.47359068428886473296e-04,
-+-2.31953151758071922503e-04,
-+-2.16430056951960250863e-04,
-+-2.00798769693994654060e-04,
-+-1.85068328556394910873e-04,
-+-1.69247819781622929874e-04,
-+-1.53346372041766269151e-04,
-+-1.37373151178878973033e-04,
-+-1.21337354929306262606e-04,
-+-1.05248207635004573535e-04,
-+-8.91149549450086627062e-05,
-+-7.29468585098004703403e-05,
-+-5.67531906719987081617e-05,
-+-4.05432291561632574743e-05,
-+-2.43262517606341878125e-05,
-+-8.11153105499568761387e-06,
-+ 8.09167091459697115441e-06,
-+ 2.42741079085157292628e-05,
-+ 4.04265547626939556413e-05,
-+ 5.65398126401744739798e-05,
-+ 7.26047142624750100346e-05,
-+ 8.86121291176844783554e-05,
-+ 1.04552968642355261246e-04,
-+ 1.20418191374254643930e-04,
-+ 1.36198808073058146538e-04,
-+ 1.51885886806070295480e-04,
-+ 1.67470557996213817529e-04,
-+ 1.82944019429153478633e-04,
-+ 1.98297541217112740890e-04,
-+ 2.13522470716304618504e-04,
-+ 2.28610237395321440291e-04,
-+ 2.43552357651734171758e-04,
-+ 2.58340439574197757323e-04,
-+ 2.72966187647394017187e-04,
-+ 2.87421407397178490465e-04,
-+ 3.01698009973331443285e-04,
-+ 3.15788016667368121211e-04,
-+ 3.29683563362888126455e-04,
-+ 3.43376904915868638030e-04,
-+ 3.56860419462906380220e-04,
-+ 3.70126612654194222032e-04,
-+ 3.83168121809794538692e-04,
-+ 3.95977719996309473864e-04,
-+ 4.08548320021925631847e-04,
-+ 4.20872978347595460679e-04,
-+ 4.32944898912126369117e-04,
-+ 4.44757436869292204114e-04,
-+ 4.56304102234621905294e-04,
-+ 4.67578563440100960016e-04,
-+ 4.78574650794741016362e-04,
-+ 4.89286359849140845869e-04,
-+ 4.99707854662346487480e-04,
-+ 5.09833470968881633315e-04,
-+ 5.19657719244667921921e-04,
-+ 5.29175287669990585850e-04,
-+ 5.38381044987819995518e-04,
-+ 5.47270043256114818893e-04,
-+ 5.55837520492576445640e-04,
-+ 5.64078903210458873843e-04,
-+ 5.71989808844079565542e-04,
-+ 5.79566048062779125977e-04,
-+ 5.86803626972093816082e-04,
-+ 5.93698749201003678558e-04,
-+ 6.00247817874220647612e-04,
-+ 6.06447437468376929041e-04,
-+ 6.12294415551340506093e-04,
-+ 6.17785764403646210467e-04,
-+ 6.22918702521296861058e-04,
-+ 6.27690655999173577340e-04,
-+ 6.32099259794388049390e-04,
-+ 6.36142358868971454465e-04,
-+ 6.39818009211379277838e-04,
-+ 6.43124478736333145788e-04,
-+ 6.46060248062606972720e-04,
-+ 6.48624011168465121509e-04,
-+ 6.50814675924448241516e-04,
-+ 6.52631364503392400953e-04,
-+ 6.54073413667472913086e-04,
-+ 6.55140374932347883084e-04,
-+ 6.55832014608344012786e-04,
-+ 6.56148313718822465482e-04,
-+ 6.56089467795875169558e-04,
-+ 6.55655886553618491575e-04,
-+ 6.54848193439355763003e-04,
-+ 6.53667225063030848942e-04,
-+ 6.52114030505376840972e-04,
-+ 6.50189870505314443556e-04,
-+ 6.47896216527166549613e-04,
-+ 6.45234749708334539252e-04,
-+ 6.42207359688187111660e-04,
-+ 6.38816143318927205305e-04,
-+ 6.35063403259281166260e-04,
-+ 6.30951646451974345643e-04,
-+ 6.26483582485939526248e-04,
-+ 6.21662121844317769152e-04,
-+ 6.16490374039393236767e-04,
-+ 6.10971645635609837167e-04,
-+ 6.05109438161931267354e-04,
-+ 5.98907445914837149696e-04,
-+ 5.92369553653347702404e-04,
-+ 5.85499834187430895707e-04,
-+ 5.78302545861415578064e-04,
-+ 5.70782129933787834436e-04,
-+ 5.62943207855098252772e-04,
-+ 5.54790578445580164282e-04,
-+ 5.46329214974210436787e-04,
-+ 5.37564262140980504354e-04,
-+ 5.28501032964188142450e-04,
-+ 5.19145005574684313687e-04,
-+ 5.09501819918850898904e-04,
-+ 4.99577274372495932532e-04,
-+ 4.89377322267549059315e-04,
-+ 4.78908068333559408525e-04,
-+ 4.68175765056459951968e-04,
-+ 4.57186808956279780707e-04,
-+ 4.45947736786433599192e-04,
-+ 4.34465221656520647706e-04,
-+ 4.22746069081200064391e-04,
-+ 4.10797212957284853512e-04,
-+ 3.98625711471500149014e-04,
-+ 3.86238742941308148531e-04,
-+ 3.73643601591243563771e-04,
-+ 3.60847693267234983453e-04,
-+ 3.47858531091431943082e-04,
-+ 3.34683731060088070306e-04,
-+ 3.21331007586994784036e-04,
-+ 3.07808168995286370300e-04,
-+ 2.94123112959944975862e-04,
-+ 2.80283821903894213648e-04,
-+ 2.66298358350258257497e-04,
-+ 2.52174860233517097834e-04,
-+ 2.37921536172264099776e-04,
-+ 2.23546660706324561889e-04,
-+ 2.09058569500978578149e-04,
-+ 1.94465654521075659777e-04,
-+ 1.79776359177804124882e-04,
-+ 1.64999173451064800808e-04,
-+ 1.50142628989783814353e-04,
-+ 1.35215294193867887652e-04,
-+ 1.20225769279667712834e-04,
-+ 1.05182681332417253214e-04,
-+ 9.00946793482652321869e-05,
-+ 7.49704292687580406678e-05,
-+ 5.98186090107322883933e-05,
-+ 4.46479034941903122767e-05,
-+ 2.94669996713655661538e-05,
-+ 1.42845815595480592387e-05,
-+-8.90674719386678467731e-07,
-+-1.60501058898957495679e-05,
-+-3.11850664615309880164e-05,
-+-4.62869336522098696559e-05,
-+-6.13471122938098376541e-05,
-+-7.63570397170260420881e-05,
-+-9.13081906125804212970e-05,
-+-1.06192081866257116186e-04,
-+-1.21000277364919335359e-04,
-+-1.35724392770807756941e-04,
-+-1.50356100261421840461e-04,
-+-1.64887133232308251375e-04,
-+-1.79309290960107407722e-04,
-+-1.93614443223211164184e-04,
-+-2.07794534877538741033e-04,
-+-2.21841590384600493343e-04,
-+-2.35747718289653712892e-04,
-+-2.49505115647181735690e-04,
-+-2.63106072391320949463e-04,
-+-2.76542975648779115836e-04,
-+-2.89808313991833633137e-04,
-+-3.02894681629039077587e-04,
-+-3.15794782531314804225e-04,
-+-3.28501434491123775472e-04,
-+-3.41007573112413263187e-04,
-+-3.53306255729321028528e-04,
-+-3.65390665251150495701e-04,
-+-3.77254113931894290764e-04,
-+-3.88890047061697880296e-04,
-+-4.00292046578829127310e-04,
-+-4.11453834599746401911e-04,
-+-4.22369276865425247180e-04,
-+-4.33032386102221345144e-04,
-+-4.43437325295184645198e-04,
-+-4.53578410872218030017e-04,
-+-4.63450115797292723756e-04,
-+-4.73047072571043994947e-04,
-+-4.82364076137125729737e-04,
-+-4.91396086692756878071e-04,
-+-5.00138232402001195638e-04,
-+-5.08585812010168398199e-04,
-+-5.16734297358173813065e-04,
-+-5.24579335795330296312e-04,
-+-5.32116752489386786451e-04,
-+-5.39342552632568559418e-04,
-+-5.46252923542469171619e-04,
-+-5.52844236656707828902e-04,
-+-5.59113049420296060084e-04,
-+-5.65056107064770439183e-04,
-+-5.70670344278172711819e-04,
-+-5.75952886765007470403e-04,
-+-5.80901052695480778210e-04,
-+-5.85512354043150645873e-04,
-+-5.89784497810519033403e-04,
-+-5.93715387141844816964e-04,
-+-5.97303122322707935599e-04,
-+-6.00546001665863931999e-04,
-+-6.03442522282995321911e-04,
-+-6.05991380742033013650e-04,
-+-6.08191473609774341941e-04,
-+-6.10041897879654818233e-04,
-+-6.11541951284462828586e-04,
-+-6.12691132494012132698e-04,
-+-6.13489141197734759101e-04,
-+-6.13935878072276153793e-04,
-+-6.14031444634213687678e-04,
-+-6.13776142978129783147e-04,
-+-6.13170475400273522204e-04,
-+-6.12215143908160716602e-04,
-+-6.10911049616502535922e-04,
-+-6.09259292029921744813e-04,
-+-6.07261168212986615807e-04,
-+-6.04918171848152540562e-04,
-+-6.02231992182249067230e-04,
-+-5.99204512862249404591e-04,
-+-5.95837810661095862788e-04,
-+-5.92134154094380829765e-04,
-+-5.88096001928879556775e-04,
-+-5.83726001583780864344e-04,
-+-5.79026987425731846405e-04,
-+-5.74001978958720709967e-04,
-+-5.68654178909981699100e-04,
-+-5.62986971213088379512e-04,
-+-5.57003918889516810679e-04,
-+-5.50708761829973685031e-04,
-+-5.44105414476881875038e-04,
-+-5.37197963409420707961e-04,
-+-5.29990664832675931022e-04,
-+-5.22487941972209408471e-04,
-+-5.14694382376049554099e-04,
-+-5.06614735125277882745e-04,
-+-4.98253907955200866543e-04,
-+-4.89616964288741747524e-04,
-+-4.80709120183835873340e-04,
-+-4.71535741196723874168e-04,
-+-4.62102339162885156296e-04,
-+-4.52414568897704873120e-04,
-+-4.42478224818736978665e-04,
-+-4.32299237491589249602e-04,
-+-4.21883670101533790608e-04,
-+-4.11237714852763253538e-04,
-+-4.00367689297795705319e-04,
-+-3.89280032598777342174e-04,
-+-3.77981301723072956981e-04,
-+-3.66478167575481482855e-04,
-+-3.54777411069201974430e-04,
-+-3.42885919137923399647e-04,
-+-3.30810680691371770349e-04,
-+-3.18558782516682129776e-04,
-+-3.06137405127995278469e-04,
-+-2.93553818566704544622e-04,
-+-2.80815378154804305266e-04,
-+-2.67929520203833435379e-04,
-+-2.54903757681815789065e-04,
-+-2.41745675840952941541e-04,
-+-2.28462927808299829519e-04,
-+-2.15063230142214405812e-04,
-+-2.01554358357060797247e-04,
-+-1.87944142418778622041e-04,
-+-1.74240462213917245062e-04,
-+-1.60451242994757493389e-04,
-+-1.46584450803131455471e-04,
-+-1.32648087875677540707e-04,
-+-1.18650188032929176604e-04,
-+-1.04598812055253963184e-04,
-+-9.05020430478532816746e-05,
-+-7.63679817980816182978e-05,
-+-6.22047421270673621006e-05,
-+-4.80204462387773454404e-05,
-+-3.38232200690939612160e-05,
-+-1.96211886373398563383e-05,
-+-5.42247140324502025757e-06,
-+ 8.76482236824777340069e-06,
-+ 2.29325982315957407963e-05,
-+ 3.70727811720706265371e-05,
-+ 5.11773202013517019616e-05,
-+ 6.52381929346686494130e-05,
-+ 7.92474101469974555583e-05,
-+ 9.31970203054730103771e-05,
-+ 1.07079114075787359224e-04,
-+ 1.20885828799772198955e-04,
-+ 1.34609352941733671338e-04,
-+ 1.48241930501015857979e-04,
-+ 1.61775865388299365999e-04,
-+ 1.75203525763176128777e-04,
-+ 1.88517348330553255508e-04,
-+ 2.01709842593477496403e-04,
-+ 2.14773595059988993677e-04,
-+ 2.27701273401630213721e-04,
-+ 2.40485630561381157630e-04,
-+ 2.53119508808481513077e-04,
-+ 2.65595843738193170946e-04,
-+ 2.77907668214037251522e-04,
-+ 2.90048116250403941428e-04,
-+ 3.02010426833358551230e-04,
-+ 3.13787947677527593714e-04,
-+ 3.25374138916987524356e-04,
-+ 3.36762576728041407650e-04,
-+ 3.47946956882078583737e-04,
-+ 3.58921098226289516687e-04,
-+ 3.69678946090518610861e-04,
-+ 3.80214575618283698918e-04,
-+ 3.90522195020292855420e-04,
-+ 4.00596148748304063669e-04,
-+ 4.10430920588102858375e-04,
-+ 4.20021136669482232032e-04,
-+ 4.29361568391889935302e-04,
-+ 4.38447135263920031219e-04,
-+ 4.47272907655273392787e-04,
-+ 4.55834109459644649508e-04,
-+ 4.64126120667108176508e-04,
-+ 4.72144479844627002613e-04,
-+ 4.79884886523366084934e-04,
-+ 4.87343203491520887780e-04,
-+ 4.94515458991510439488e-04,
-+ 5.01397848820237619291e-04,
-+ 5.07986738331495536053e-04,
-+ 5.14278664339342934768e-04,
-+ 5.20270336921509223872e-04,
-+ 5.25958641121905003633e-04,
-+ 5.31340638551345634602e-04,
-+ 5.36413568885707545825e-04,
-+ 5.41174851260732862543e-04,
-+ 5.45622085562818821651e-04,
-+ 5.49753053615153054572e-04,
-+ 5.53565720258578693874e-04,
-+ 5.57058234326825011708e-04,
-+ 5.60228929515402870182e-04,
-+ 5.63076325144043553055e-04,
-+ 5.65599126812190268823e-04,
-+ 5.67796226947321581655e-04,
-+ 5.69666705245914757952e-04,
-+ 5.71209829006884771928e-04,
-+ 5.72425053357448988464e-04,
-+ 5.73312021371367866798e-04,
-+ 5.73870564079618605650e-04,
-+ 5.74100700373610150010e-04,
-+ 5.74002636801101105701e-04,
-+ 5.73576767255045208427e-04,
-+ 5.72823672555648950346e-04,
-+ 5.71744119926011510821e-04,
-+ 5.70339062361724402107e-04,
-+ 5.68609637894926635629e-04,
-+ 5.66557168753326501759e-04,
-+ 5.64183160414795923689e-04,
-+ 5.61489300558173053124e-04,
-+ 5.58477457910976646596e-04,
-+ 5.55149680994817618443e-04,
-+ 5.51508196769305851677e-04,
-+ 5.47555409175347492477e-04,
-+ 5.43293897578766660054e-04,
-+ 5.38726415115223450716e-04,
-+ 5.33855886937539434942e-04,
-+ 5.28685408366441232306e-04,
-+ 5.23218242945951541104e-04,
-+ 5.17457820404608101993e-04,
-+ 5.11407734523782039546e-04,
-+ 5.05071740914395756958e-04,
-+ 4.98453754703430222672e-04,
-+ 4.91557848131608235084e-04,
-+ 4.84388248063773933609e-04,
-+ 4.76949333413366201133e-04,
-+ 4.69245632482725018135e-04,
-+ 4.61281820220592905877e-04,
-+ 4.53062715398815335326e-04,
-+ 4.44593277709539084434e-04,
-+ 4.35878604784927761902e-04,
-+ 4.26923929141124992512e-04,
-+ 4.17734615048157432570e-04,
-+ 4.08316155327850989487e-04,
-+ 3.98674168081502775223e-04,
-+ 3.88814393349325734903e-04,
-+ 3.78742689703628627584e-04,
-+ 3.68465030777748246259e-04,
-+ 3.57987501732803619064e-04,
-+ 3.47316295664270213630e-04,
-+ 3.36457709950689946247e-04,
-+ 3.25418142546407844398e-04,
-+ 3.14204088220705103369e-04,
-+ 3.02822134745452705828e-04,
-+ 2.91278959033536570707e-04,
-+ 2.79581323230313654512e-04,
-+ 2.67736070760376913824e-04,
-+ 2.55750122331942382741e-04,
-+ 2.43630471901182189993e-04,
-+ 2.31384182598852114476e-04,
-+ 2.19018382621588081956e-04,
-+ 2.06540261090263434262e-04,
-+ 1.93957063877727543073e-04,
-+ 1.81276089408560325388e-04,
-+ 1.68504684432981764438e-04,
-+ 1.55650239777576011087e-04,
-+ 1.42720186075200863515e-04,
-+ 1.29721989476556069784e-04,
-+ 1.16663147345869003713e-04,
-+ 1.03551183943265592683e-04,
-+ 9.03936460960799980377e-05,
-+ 7.71980988618959664254e-05,
-+ 6.39721211855788279756e-05,
-+ 5.07233015529098420324e-05,
-+ 3.74592336431094660547e-05,
-+ 2.41875119832061500670e-05,
-+ 1.09157276060909018059e-05,
-+-2.34853628469845146187e-06,
-+-1.55977086414162786562e-05,
-+-2.88242348869596923613e-05,
-+-4.20205812159120831802e-05,
-+-5.51792388792400324794e-05,
-+-6.82927284502260999177e-05,
-+-8.13536040692178018903e-05,
-+-9.43544576647877523837e-05,
-+-1.07287923148899612901e-04,
-+-1.20146680583802623705e-04,
-+-1.32923460318065689029e-04,
-+-1.45611047089732014966e-04,
-+-1.58202284094046845058e-04,
-+-1.70690077013562770646e-04,
-+-1.83067398008342023790e-04,
-+-1.95327289664015750449e-04,
-+-2.07462868895485753841e-04,
-+-2.19467330804082712487e-04,
-+-2.31333952486024421909e-04,
-+-2.43056096790058889963e-04,
-+-2.54627216022116969682e-04,
-+-2.66040855595085605489e-04,
-+-2.77290657621565787404e-04,
-+-2.88370364447411301270e-04,
-+-2.99273822124557198864e-04,
-+-3.09994983820817795236e-04,
-+-3.20527913164946520654e-04,
-+-3.30866787525005792182e-04,
-+-3.41005901218438382556e-04,
-+-3.50939668651816677209e-04,
-+-3.60662627388737895996e-04,
-+-3.70169441144112937835e-04,
-+-3.79454902703223032924e-04,
-+-3.88513936763931614412e-04,
-+-3.97341602700649319281e-04,
-+-4.05933097248160023023e-04,
-+-4.14283757104453339952e-04,
-+-4.22389061450620915700e-04,
-+-4.30244634386746675411e-04,
-+-4.37846247282407585646e-04,
-+-4.45189821040535387009e-04,
-+-4.52271428273436375180e-04,
-+-4.59087295389815042927e-04,
-+-4.65633804591701605784e-04,
-+-4.71907495780237373154e-04,
-+-4.77905068369312367293e-04,
-+-4.83623383006156549232e-04,
-+-4.89059463197895642403e-04,
-+-4.94210496843377989837e-04,
-+-4.99073837669386272294e-04,
-+-5.03647006570560255671e-04,
-+-5.07927692852353862910e-04,
-+-5.11913755376417790866e-04,
-+-5.15603223607854132746e-04,
-+-5.18994298563852079348e-04,
-+-5.22085353663235022734e-04,
-+-5.24874935476607245785e-04,
-+-5.27361764376676599858e-04,
-+-5.29544735088589781265e-04,
-+-5.31422917139951151225e-04,
-+-5.32995555210500379477e-04,
-+-5.34262069381259826692e-04,
-+-5.35222055283147762558e-04,
-+-5.35875284145083223553e-04,
-+-5.36221702741643767819e-04,
-+-5.36261433240417940797e-04,
-+-5.35994772949250210085e-04,
-+-5.35422193963616460319e-04,
-+-5.34544342714442298307e-04,
-+-5.33362039416725316164e-04,
-+-5.31876277419383609174e-04,
-+-5.30088222456788840664e-04,
-+-5.27999211802546121117e-04,
-+-5.25610753326072018335e-04,
-+-5.22924524452632929344e-04,
-+-5.19942371027533258195e-04,
-+-5.16666306085201390737e-04,
-+-5.13098508523981305419e-04,
-+-5.09241321687478316720e-04,
-+-5.05097251853375752567e-04,
-+-5.00668966630677097357e-04,
-+-4.95959293266389714822e-04,
-+-4.90971216862717439386e-04,
-+-4.85707878505841088215e-04,
-+-4.80172573307527546498e-04,
-+-4.74368748360683557905e-04,
-+-4.68300000610171580050e-04,
-+-4.61970074640185440762e-04,
-+-4.55382860379525326953e-04,
-+-4.48542390726171106338e-04,
-+-4.41452839092643458969e-04,
-+-4.34118516873516094388e-04,
-+-4.26543870836773282920e-04,
-+-4.18733480440457346301e-04,
-+-4.10692055076295619871e-04,
-+-4.02424431241824444132e-04,
-+-3.93935569642999588221e-04,
-+-3.85230552228620710866e-04,
-+-3.76314579158696684014e-04,
-+-3.67192965708273077411e-04,
-+-3.57871139108791979765e-04,
-+-3.48354635328699147479e-04,
-+-3.38649095795268096840e-04,
-+-3.28760264059559039092e-04,
-+-3.18693982406488616858e-04,
-+-3.08456188411998706057e-04,
-+-2.98052911449364968648e-04,
-+-2.87490269146621982028e-04,
-+-2.76774463797361711895e-04,
-+-2.65911778726769776858e-04,
-+-2.54908574615198501266e-04,
-+-2.43771285781356852364e-04,
-+-2.32506416427293309719e-04,
-+-2.21120536847362134797e-04,
-+-2.09620279603374160817e-04,
-+-1.98012335668160057052e-04,
-+-1.86303450539779524029e-04,
-+-1.74500420328618278693e-04,
-+-1.62610087819718690657e-04,
-+-1.50639338512448478849e-04,
-+-1.38595096639894068595e-04,
-+-1.26484321170500490497e-04,
-+-1.14314001793776732867e-04,
-+-1.02091154892787922296e-04,
-+-8.98228195055708475902e-05,
-+-7.75160532779040826849e-05,
-+-6.51779284095440432020e-05,
-+-5.28155275965366106071e-05,
-+-4.04359399717151504088e-05,
-+-2.80462570457926562079e-05,
-+-1.56535686513557642486e-05,
-+-3.26495889210444343624e-06,
-+ 9.11249790054165639743e-06,
-+ 2.14717412006368892899e-05,
-+ 3.38057283092167403242e-05,
-+ 4.61074383610954739352e-05,
-+ 5.83698763150761234034e-05,
-+ 7.05860769251900996464e-05,
-+ 8.27491086907310743719e-05,
-+ 9.48520777828465352357e-05,
-+ 1.06888131945465347230e-04,
-+ 1.18850464368359115953e-04,
-+ 1.30732317530151336904e-04,
-+ 1.42526987009093485245e-04,
-+ 1.54227825259548495572e-04,
-+ 1.65828245351846937858e-04,
-+ 1.77321724673696056200e-04,
-+ 1.88701808590856294186e-04,
-+ 1.99962114065118143997e-04,
-+ 2.11096333227541019164e-04,
-+ 2.22098236904959408719e-04,
-+ 2.32961678097786452921e-04,
-+ 2.43680595407194330610e-04,
-+ 2.54249016409682922994e-04,
-+ 2.64661060977358164950e-04,
-+ 2.74910944541823074223e-04,
-+ 2.84992981300038268795e-04,
-+ 2.94901587360451048966e-04,
-+ 3.04631283827309126255e-04,
-+ 3.14176699821949083694e-04,
-+ 3.23532575438972966244e-04,
-+ 3.32693764636005074025e-04,
-+ 3.41655238055194434080e-04,
-+ 3.50412085775090025464e-04,
-+ 3.58959519991325229707e-04,
-+ 3.67292877624660627292e-04,
-+ 3.75407622854972045263e-04,
-+ 3.83299349579812611254e-04,
-+ 3.90963783796212480549e-04,
-+ 3.98396785904493201929e-04,
-+ 4.05594352932717237652e-04,
-+ 4.12552620680778098922e-04,
-+ 4.19267865782840679426e-04,
-+ 4.25736507687102228546e-04,
-+ 4.31955110551815945567e-04,
-+ 4.37920385056580596227e-04,
-+ 4.43629190127953329428e-04,
-+ 4.49078534578485372587e-04,
-+ 4.54265578658337963736e-04,
-+ 4.59187635518681089644e-04,
-+ 4.63842172586124870497e-04,
-+ 4.68226812847528570376e-04,
-+ 4.72339336044462119145e-04,
-+ 4.76177679776842175188e-04,
-+ 4.79739940515123866431e-04,
-+ 4.83024374520600813590e-04,
-+ 4.86029398673382302676e-04,
-+ 4.88753591207665154424e-04,
-+ 4.91195692353966193756e-04,
-+ 4.93354604888095117816e-04,
-+ 4.95229394586578497428e-04,
-+ 4.96819290588439285358e-04,
-+ 4.98123685663175381003e-04,
-+ 4.99142136384935733613e-04,
-+ 4.99874363212820149900e-04,
-+ 5.00320250477433235529e-04,
-+ 5.00479846273746572204e-04,
-+ 5.00353362260458648866e-04,
-+ 4.99941173366037620342e-04,
-+ 4.99243817401748952133e-04,
-+ 4.98261994581954289173e-04,
-+ 4.96996566952077824426e-04,
-+ 4.95448557724650537858e-04,
-+ 4.93619150523917594661e-04,
-+ 4.91509688539529211379e-04,
-+ 4.89121673589913252660e-04,
-+ 4.86456765095920123584e-04,
-+ 4.83516778965485997076e-04,
-+ 4.80303686389979968101e-04,
-+ 4.76819612553058206749e-04,
-+ 4.73066835252845254919e-04,
-+ 4.69047783438315086732e-04,
-+ 4.64765035660812749103e-04,
-+ 4.60221318441676426666e-04,
-+ 4.55419504556999951966e-04,
-+ 4.50362611240582178668e-04,
-+ 4.45053798306218380970e-04,
-+ 4.39496366190426988700e-04,
-+ 4.33693753916839246001e-04,
-+ 4.27649536983611762604e-04,
-+ 4.21367425174935209421e-04,
-+ 4.14851260298147500507e-04,
-+ 4.08105013847745185657e-04,
-+ 4.01132784597763502807e-04,
-+ 3.93938796123864838888e-04,
-+ 3.86527394256778707507e-04,
-+ 3.78903044468504332596e-04,
-+ 3.71070329192896123955e-04,
-+ 3.63033945082216335121e-04,
-+ 3.54798700201316714441e-04,
-+ 3.46369511160995113223e-04,
-+ 3.37751400192573319938e-04,
-+ 3.28949492164903488020e-04,
-+ 3.19969011546054665687e-04,
-+ 3.10815279311211242839e-04,
-+ 3.01493709798685276691e-04,
-+ 2.92009807515892561881e-04,
-+ 2.82369163897162314333e-04,
-+ 2.72577454015293597824e-04,
-+ 2.62640433248783711044e-04,
-+ 2.52563933906683622723e-04,
-+ 2.42353861813065601894e-04,
-+ 2.32016192853029426611e-04,
-+ 2.21556969482438587647e-04,
-+ 2.10982297203188133052e-04,
-+ 2.00298341006229532702e-04,
-+ 1.89511321784351343799e-04,
-+ 1.78627512716812605594e-04,
-+ 1.67653235627924536433e-04,
-+ 1.56594857321689550278e-04,
-+ 1.45458785894609618538e-04,
-+ 1.34251467028869596798e-04,
-+ 1.22979380267843285647e-04,
-+ 1.11649035276331349935e-04,
-+ 1.00266968087514806969e-04,
-+ 8.88397373387060364193e-05,
-+ 7.73739204984463118959e-05,
-+ 6.58761100865689746284e-05,
-+ 5.43529098898822812845e-05,
-+ 4.28109311752722368678e-05,
-+ 3.12567889026958147750e-05,
-+ 1.96970979400246795697e-05,
-+ 8.13846928198325526361e-06,
-+-3.41249372467339250558e-06,
-+-1.49491991475911624329e-05,
-+-2.64650702247123145554e-05,
-+-3.79535491074849259605e-05,
-+-4.94081005893409459882e-05,
-+-6.08222158171220890705e-05,
-+-7.21894159836215413640e-05,
-+-8.35032559989468706153e-05,
-+-9.47573281387071252556e-05,
-+-1.05945265666950816461e-04,
-+-1.17060746431808460001e-04,
-+-1.28097496431813168485e-04,
-+-1.39049293350893167628e-04,
-+-1.49909970060043025702e-04,
-+-1.60673418083712545501e-04,
-+-1.71333591028951604061e-04,
-+-1.81884507975470710237e-04,
-+-1.92320256824521286943e-04,
-+-2.02634997604990462535e-04,
-+-2.12822965734663506043e-04,
-+-2.22878475234921188562e-04,
-+-2.32795921897065518930e-04,
-+-2.42569786398529724757e-04,
-+-2.52194637367171917153e-04,
-+-2.61665134392132306407e-04,
-+-2.70976030979354039815e-04,
-+-2.80122177450312201570e-04,
-+-2.89098523782284854127e-04,
-+-2.97900122388595328931e-04,
-+-3.06522130837423188374e-04,
-+-3.14959814507391293315e-04,
-+-3.23208549178839786662e-04,
-+-3.31263823559207256243e-04,
-+-3.39121241741069823911e-04,
-+-3.46776525591634588071e-04,
-+-3.54225517072336341072e-04,
-+-3.61464180487291921601e-04,
-+-3.68488604659406027153e-04,
-+-3.75295005032959282966e-04,
-+-3.81879725701552677659e-04,
-+-3.88239241360328717068e-04,
-+-3.94370159181469716065e-04,
-+-4.00269220611873847385e-04,
-+-4.05933303092217750898e-04,
-+-4.11359421696386878559e-04,
-+-4.16544730690475114351e-04,
-+-4.21486525010528862399e-04,
-+-4.26182241658291949011e-04,
-+-4.30629461014228067349e-04,
-+-4.34825908067166936634e-04,
-+-4.38769453559957806933e-04,
-+-4.42458115050543214063e-04,
-+-4.45890057887998378632e-04,
-+-4.49063596103017892164e-04,
-+-4.51977193212385814410e-04,
-+-4.54629462937196024159e-04,
-+-4.57019169834384534831e-04,
-+-4.59145229841358777558e-04,
-+-4.61006710733478388374e-04,
-+-4.62602832494264496789e-04,
-+-4.63932967598159218692e-04,
-+-4.64996641205815024796e-04,
-+-4.65793531271870616534e-04,
-+-4.66323468565258629059e-04,
-+-4.66586436602117857111e-04,
-+-4.66582571491450407916e-04,
-+-4.66312161693693675614e-04,
-+-4.65775647692456124232e-04,
-+-4.64973621579678497197e-04,
-+-4.63906826554567289656e-04,
-+-4.62576156336664179227e-04,
-+-4.60982654493493390190e-04,
-+-4.59127513683252981222e-04,
-+-4.57012074813076816290e-04,
-+-4.54637826113443851636e-04,
-+-4.52006402129344277314e-04,
-+-4.49119582628882253825e-04,
-+-4.45979291430018782647e-04,
-+-4.42587595146185029237e-04,
-+-4.38946701851662950556e-04,
-+-4.35058959667485500768e-04,
-+-4.30926855268744430933e-04,
-+-4.26553012314354973531e-04,
-+-4.21940189800147375659e-04,
-+-4.17091280336356255796e-04,
-+-4.12009308350574096971e-04,
-+-4.06697428217259312686e-04,
-+-4.01158922314968034977e-04,
-+-3.95397199012481159307e-04,
-+-3.89415790585079821338e-04,
-+-3.83218351062148158623e-04,
-+-3.76808654007610018769e-04,
-+-3.70190590234281159936e-04,
-+-3.63368165453703019507e-04,
-+-3.56345497862799480068e-04,
-+-3.49126815668818354065e-04,
-+-3.41716454554033186291e-04,
-+-3.34118855081727756696e-04,
-+-3.26338560045002091647e-04,
-+-3.18380211759965842631e-04,
-+-3.10248549305032668161e-04,
-+-3.01948405707699765559e-04,
-+-2.93484705080720911091e-04,
-+-2.84862459709394287826e-04,
-+-2.76086767091391477574e-04,
-+-2.67162806931154044997e-04,
-+-2.58095838090502502794e-04,
-+-2.48891195497272449746e-04,
-+-2.39554287013787821662e-04,
-+-2.30090590267009276020e-04,
-+-2.20505649442205787147e-04,
-+-2.10805072042026829309e-04,
-+-2.00994525612865481291e-04,
-+-1.91079734440417233063e-04,
-+-1.81066476216359793653e-04,
-+-1.70960578678090068449e-04,
-+-1.60767916223468677233e-04,
-+-1.50494406502535882537e-04,
-+-1.40146006988172149195e-04,
-+-1.29728711527686151094e-04,
-+-1.19248546877326160043e-04,
-+-1.08711569221710101099e-04,
-+-9.81238606801850763708e-05,
-+-8.74915258021262919313e-05,
-+-7.68206880531919903462e-05,
-+-6.61174862945537560044e-05,
-+-5.53880712571479811158e-05,
-+-4.46386020128183616507e-05,
-+-3.38752424447514053707e-05,
-+-2.31041577187158825475e-05,
-+-1.23315107575055638581e-05,
-+-1.56345872044351334759e-06,
-+ 9.19385051001696058297e-06,
-+ 1.99342818325943639068e-05,
-+ 3.06517164204148291097e-05,
-+ 4.13400552010434981019e-05,
-+ 5.19932223217173526989e-05,
-+ 6.26051685973046974495e-05,
-+ 7.31698749393950269174e-05,
-+ 8.36813557645763278318e-05,
-+ 9.41336623796225205937e-05,
-+ 1.04520886342181746720e-04,
-+ 1.14837162794693847952e-04,
-+ 1.25076673769810187576e-04,
-+ 1.35233651465430277944e-04,
-+ 1.45302381487516881669e-04,
-+ 1.55277206058868723132e-04,
-+ 1.65152527192051468401e-04,
-+ 1.74922809824715685349e-04,
-+ 1.84582584915542787917e-04,
-+ 1.94126452499097224393e-04,
-+ 2.03549084697879242812e-04,
-+ 2.12845228689902707473e-04,
-+ 2.22009709630148407153e-04,
-+ 2.31037433524272298050e-04,
-+ 2.39923390052979132632e-04,
-+ 2.48662655345496428575e-04,
-+ 2.57250394700618317985e-04,
-+ 2.65681865253823213443e-04,
-+ 2.73952418588994082733e-04,
-+ 2.82057503293309968541e-04,
-+ 2.89992667453910593113e-04,
-+ 2.97753561094963236852e-04,
-+ 3.05335938553796587460e-04,
-+ 3.12735660794901402029e-04,
-+ 3.19948697660284706902e-04,
-+ 3.26971130055313046695e-04,
-+ 3.33799152068596993118e-04,
-+ 3.40429073024882096823e-04,
-+ 3.46857319469846304971e-04,
-+ 3.53080437085642826617e-04,
-+ 3.59095092536410422437e-04,
-+ 3.64898075242447582529e-04,
-+ 3.70486299082366027022e-04,
-+ 3.75856804022209637847e-04,
-+ 3.81006757670713364344e-04,
-+ 3.85933456759954328450e-04,
-+ 3.90634328550441736316e-04,
-+ 3.95106932160183021464e-04,
-+ 3.99348959816850238372e-04,
-+ 4.03358238032495769118e-04,
-+ 4.07132728700219297200e-04,
-+ 4.10670530112230828569e-04,
-+ 4.13969877898831897789e-04,
-+ 4.17029145887845879240e-04,
-+ 4.19846846884104163249e-04,
-+ 4.22421633368623200468e-04,
-+ 4.24752298117164013222e-04,
-+ 4.26837774737901984833e-04,
-+ 4.28677138127993610176e-04,
-+ 4.30269604848864133020e-04,
-+ 4.31614533420087809028e-04,
-+ 4.32711424531789182885e-04,
-+ 4.33559921175517891476e-04,
-+ 4.34159808693626808693e-04,
-+ 4.34511014747204218304e-04,
-+ 4.34613609202668001435e-04,
-+ 4.34467803937177638515e-04,
-+ 4.34073952563060591527e-04,
-+ 4.33432550071505902529e-04,
-+ 4.32544232395796221600e-04,
-+ 4.31409775894451988712e-04,
-+ 4.30030096754630268997e-04,
-+ 4.28406250316232413682e-04,
-+ 4.26539430317180844748e-04,
-+ 4.24430968060405871753e-04,
-+ 4.22082331503046044325e-04,
-+ 4.19495124268545250320e-04,
-+ 4.16671084582238100344e-04,
-+ 4.13612084131137220516e-04,
-+ 4.10320126848655590979e-04,
-+ 4.06797347625035990524e-04,
-+ 4.03046010944322816681e-04,
-+ 3.99068509448671923049e-04,
-+ 3.94867362431040608978e-04,
-+ 3.90445214257016648927e-04,
-+ 3.85804832716899566078e-04,
-+ 3.80949107308997192770e-04,
-+ 3.75881047455209468464e-04,
-+ 3.70603780649984598967e-04,
-+ 3.65120550543784417111e-04,
-+ 3.59434714962230262691e-04,
-+ 3.53549743862119564622e-04,
-+ 3.47469217225564457226e-04,
-+ 3.41196822893517369337e-04,
-+ 3.34736354339987610389e-04,
-+ 3.28091708388290057355e-04,
-+ 3.21266882870694259894e-04,
-+ 3.14265974232871717151e-04,
-+ 3.07093175084575183576e-04,
-+ 2.99752771698005490968e-04,
-+ 2.92249141455357803153e-04,
-+ 2.84586750247056946388e-04,
-+ 2.76770149822231086197e-04,
-+ 2.68803975092983104406e-04,
-+ 2.60692941394056651970e-04,
-+ 2.52441841699531203946e-04,
-+ 2.44055543798067387786e-04,
-+ 2.35538987428655314377e-04,
-+ 2.26897181378157982660e-04,
-+ 2.18135200542623168421e-04,
-+ 2.09258182954089169475e-04,
-+ 2.00271326774336208163e-04,
-+ 1.91179887257744631369e-04,
-+ 1.81989173684729625387e-04,
-+ 1.72704546267654705490e-04,
-+ 1.63331413031008576943e-04,
-+ 1.53875226667652081989e-04,
-+ 1.44341481372964688425e-04,
-+ 1.34735709658744315766e-04,
-+ 1.25063479148570258709e-04,
-+ 1.15330389356819486019e-04,
-+ 1.05542068452749301325e-04,
-+ 9.57041700118449787478e-05,
-+ 8.58223697561741577077e-05,
-+ 7.59023622856443207175e-05,
-+ 6.59498578020433471767e-05,
-+ 5.59705788277444033440e-05,
-+ 4.59702569209572621425e-05,
-+ 3.59546293894085665843e-05,
-+ 2.59294360043086512160e-05,
-+ 1.59004157166498285290e-05,
-+ 5.87330337721188446920e-06,
-+-4.14617353701999446564e-06,
-+-1.41522981889934754151e-05,
-+-2.41393676379234885633e-05,
-+-3.41016960841382575317e-05,
-+-4.40336181005696522257e-05,
-+-5.39294918490548975433e-05,
-+-6.37837022796263207513e-05,
-+-7.35906643109786139231e-05,
-+-8.33448259903158111123e-05,
-+-9.30406716307915674464e-05,
-+-1.02672724924753142484e-04,
-+-1.12235552031169472749e-04,
-+-1.21723764635187306645e-04,
-+-1.31132022978417295961e-04,
-+-1.40455038858246640358e-04,
-+-1.49687578594178148693e-04,
-+-1.58824465959857513524e-04,
-+-1.67860585079007983188e-04,
-+-1.76790883283683004619e-04,
-+-1.85610373933242124578e-04,
-+-1.94314139192479492721e-04,
-+-2.02897332767363176810e-04,
-+-2.11355182596845939808e-04,
-+-2.19682993499378809155e-04,
-+-2.27876149772357342645e-04,
-+-2.35930117743474312237e-04,
-+-2.43840448272265441099e-04,
-+-2.51602779200596157229e-04,
-+-2.59212837750722130490e-04,
-+-2.66666442869611193447e-04,
-+-2.73959507518241514052e-04,
-+-2.81088040904634635809e-04,
-+-2.88048150659414798139e-04,
-+-2.94836044952623201488e-04,
-+-3.01448034550882504670e-04,
-+-3.07880534813461108779e-04,
-+-3.14130067626494494971e-04,
-+-3.20193263274004568698e-04,
-+-3.26066862245033475126e-04,
-+-3.31747716975704792786e-04,
-+-3.37232793525372445079e-04,
-+-3.42519173185958092365e-04,
-+-3.47604054023637506869e-04,
-+-3.52484752352054538874e-04,
-+-3.57158704136308719976e-04,
-+-3.61623466326981902238e-04,
-+-3.65876718123521590606e-04,
-+-3.69916262166333537249e-04,
-+-3.73740025656983437721e-04,
-+-3.77346061405942046450e-04,
-+-3.80732548807360233426e-04,
-+-3.83897794740389560527e-04,
-+-3.86840234396619738182e-04,
-+-3.89558432033239830650e-04,
-+-3.92051081651568350539e-04,
-+-3.94317007600659507997e-04,
-+-3.96355165105705619343e-04,
-+-3.98164640721032441449e-04,
-+-3.99744652707502629626e-04,
-+-4.01094551334191251613e-04,
-+-4.02213819104267004522e-04,
-+-4.03102070904986001763e-04,
-+-4.03759054081854400035e-04,
-+-4.04184648436960245865e-04,
-+-4.04378866151571740410e-04,
-+-4.04341851633132352058e-04,
-+-4.04073881286819201839e-04,
-+-4.03575363211878201074e-04,
-+-4.02846836823000703422e-04,
-+-4.01888972397027575446e-04,
-+-4.00702570545332346658e-04,
-+-3.99288561612268872933e-04,
-+-3.97648005000088408580e-04,
-+-3.95782088420835174210e-04,
-+-3.93692127075682019467e-04,
-+-3.91379562762282434078e-04,
-+-3.88845962910724810089e-04,
-+-3.86093019548719798301e-04,
-+-3.83122548196679628581e-04,
-+-3.79936486693416947905e-04,
-+-3.76536893953195608929e-04,
-+-3.72925948654929972394e-04,
-+-3.69105947864348422904e-04,
-+-3.65079305589995940784e-04,
-+-3.60848551273959680056e-04,
-+-3.56416328218264332091e-04,
-+-3.51785391947902702746e-04,
-+-3.46958608511509539966e-04,
-+-3.41938952720719716982e-04,
-+-3.36729506329282559166e-04,
-+-3.31333456153044218079e-04,
-+-3.25754092131937047095e-04,
-+-3.19994805335147892728e-04,
-+-3.14059085910667681873e-04,
-+-3.07950520980461819095e-04,
-+-3.01672792482518580589e-04,
-+-2.95229674961088311026e-04,
-+-2.88625033306340523283e-04,
-+-2.81862820445018204176e-04,
-+-2.74947074983157644778e-04,
-+-2.67881918802505628041e-04,
-+-2.60671554611964777660e-04,
-+-2.53320263455520278562e-04,
-+-2.45832402178220821125e-04,
-+-2.38212400851451575621e-04,
-+-2.30464760159363048859e-04,
-+-2.22594048747734558165e-04,
-+-2.14604900536931233329e-04,
-+-2.06502012000535557258e-04,
-+-1.98290139411133950476e-04,
-+-1.89974096055152907262e-04,
-+-1.81558749417992085131e-04,
-+-1.73049018341384308823e-04,
-+-1.64449870154523194316e-04,
-+-1.55766317780646929318e-04,
-+-1.47003416820761271481e-04,
-+-1.38166262616194393661e-04,
-+-1.29259987291687318631e-04,
-+-1.20289756780731966232e-04,
-+-1.11260767834878675090e-04,
-+-1.02178245018739763763e-04,
-+-9.30474376924268498914e-05,
-+-8.38736169831565017523e-05,
-+-7.46620727477739890053e-05,
-+-6.54181105279376081448e-05,
-+-5.61470484997162090244e-05,
-+-4.68542144193485576007e-05,
-+-3.75449425669173780990e-05,
-+-2.82245706896867571811e-05,
-+-1.88984369468525752515e-05,
-+-9.57187685745089512619e-06,
-+-2.50220253166946479370e-07,
-+ 9.06121176221840221013e-06,
-+ 1.83571098449908816895e-05,
-+ 2.76321794336816537255e-05,
-+ 3.68811437592135666556e-05,
-+ 4.60987468417495339684e-05,
-+ 5.52797564722329147621e-05,
-+ 6.44189671769343854841e-05,
-+ 7.35112031636342259672e-05,
-+ 8.25513212473374231003e-05,
-+ 9.15342137542006137590e-05,
-+ 1.00454811401901069581e-04,
-+ 1.09308086154850524381e-04,
-+ 1.18089054052647829071e-04,
-+ 1.26792778010161884652e-04,
-+ 1.35414370587798690198e-04,
-+ 1.43948996730092746744e-04,
-+ 1.52391876471503188604e-04,
-+ 1.60738287607595838752e-04,
-+ 1.68983568330243670531e-04,
-+ 1.77123119825359898573e-04,
-+ 1.85152408831718565856e-04,
-+ 1.93066970159443514676e-04,
-+ 2.00862409166768096517e-04,
-+ 2.08534404193699878438e-04,
-+ 2.16078708951240975071e-04,
-+ 2.23491154864851335540e-04,
-+ 2.30767653370864866047e-04,
-+ 2.37904198164594560738e-04,
-+ 2.44896867398899378224e-04,
-+ 2.51741825832007637496e-04,
-+ 2.58435326923423880699e-04,
-+ 2.64973714876783311267e-04,
-+ 2.71353426628539464403e-04,
-+ 2.77570993781410069266e-04,
-+ 2.83623044481539374282e-04,
-+ 2.89506305238360116608e-04,
-+ 2.95217602686185913181e-04,
-+ 3.00753865286583336493e-04,
-+ 3.06112124970612023683e-04,
-+ 3.11289518720129045667e-04,
-+ 3.16283290087134808400e-04,
-+ 3.21090790650627329848e-04,
-+ 3.25709481409937177433e-04,
-+ 3.30136934114071980105e-04,
-+ 3.34370832526131541752e-04,
-+ 3.38408973622323120626e-04,
-+ 3.42249268724889273759e-04,
-+ 3.45889744568388601224e-04,
-+ 3.49328544298793523294e-04,
-+ 3.52563928404906736999e-04,
-+ 3.55594275581636054019e-04,
-+ 3.58418083524750480211e-04,
-+ 3.61033969656628290525e-04,
-+ 3.63440671782813055999e-04,
-+ 3.65637048678958849739e-04,
-+ 3.67622080607960151355e-04,
-+ 3.69394869767037141092e-04,
-+ 3.70954640664598411879e-04,
-+ 3.72300740426744327174e-04,
-+ 3.73432639033317674820e-04,
-+ 3.74349929483439925783e-04,
-+ 3.75052327890526104696e-04,
-+ 3.75539673506779519020e-04,
-+ 3.75811928677284036969e-04,
-+ 3.75869178723718091930e-04,
-+ 3.75711631757917824750e-04,
-+ 3.75339618425418329768e-04,
-+ 3.74753591579224973156e-04,
-+ 3.73954125884068270050e-04,
-+ 3.72941917351453974382e-04,
-+ 3.71717782805840797795e-04,
-+ 3.70282659282345936666e-04,
-+ 3.68637603356378044158e-04,
-+ 3.66783790405674587840e-04,
-+ 3.64722513805233164354e-04,
-+ 3.62455184055677408564e-04,
-+ 3.59983327845599923502e-04,
-+ 3.57308587048594551976e-04,
-+ 3.54432717655444305162e-04,
-+ 3.51357588642338164626e-04,
-+ 3.48085180775715128960e-04,
-+ 3.44617585354531092562e-04,
-+ 3.40957002890739319448e-04,
-+ 3.37105741728795874762e-04,
-+ 3.33066216605056779430e-04,
-+ 3.28840947147959132123e-04,
-+ 3.24432556319903108322e-04,
-+ 3.19843768801808070543e-04,
-+ 3.15077409321264686852e-04,
-+ 3.10136400925462669617e-04,
-+ 3.05023763199732222788e-04,
-+ 2.99742610432934862910e-04,
-+ 2.94296149730754368415e-04,
-+ 2.88687679078032178367e-04,
-+ 2.82920585351309613817e-04,
-+ 2.76998342282779573022e-04,
-+ 2.70924508376842870794e-04,
-+ 2.64702724780600893301e-04,
-+ 2.58336713109347953805e-04,
-+ 2.51830273228646013463e-04,
-+ 2.45187280994006067195e-04,
-+ 2.38411685949818300109e-04,
-+ 2.31507508988586837694e-04,
-+ 2.24478839972069534785e-04,
-+ 2.17329835315641735263e-04,
-+ 2.10064715537319865631e-04,
-+ 2.02687762772885523210e-04,
-+ 1.95203318258571319535e-04,
-+ 1.87615779782783292061e-04,
-+ 1.79929599108352478208e-04,
-+ 1.72149279366823641443e-04,
-+ 1.64279372426300712944e-04,
-+ 1.56324476234388271998e-04,
-+ 1.48289232137772291394e-04,
-+ 1.40178322180001724197e-04,
-+ 1.31996466379041452969e-04,
-+ 1.23748419986174359531e-04,
-+ 1.15438970727843310919e-04,
-+ 1.07072936032028641199e-04,
-+ 9.86551602407646912674e-05,
-+ 9.01905118104061922493e-05,
-+ 8.16838805012586526922e-05,
-+ 7.31401745581928999611e-05,
-+ 6.45643178838649969007e-05,
-+ 5.59612472061890399498e-05,
-+ 4.73359092415654616050e-05,
-+ 3.86932578557977460893e-05,
-+ 3.00382512239181022112e-05,
-+ 2.13758489908508619718e-05,
-+ 1.27110094344164514346e-05,
-+ 4.04868663231493498654e-06,
-+-4.60617236531486804862e-06,
-+-1.32486303560268950814e-05,
-+-2.18737627965935988274e-05,
-+-3.04766606039162663141e-05,
-+-3.90524329440386771335e-05,
-+-4.75962100075382721592e-05,
-+-5.61031457698656416577e-05,
-+-6.45684207347658160750e-05,
-+-7.29872446596370569490e-05,
-+-8.13548592609855323026e-05,
-+-8.96665408985710283294e-05,
-+-9.79176032367135154100e-05,
-+-1.06103399881264301701e-04,
-+-1.14219326990759500518e-04,
-+-1.22260825860294306986e-04,
-+-1.30223385476667787367e-04,
-+-1.38102545043372279022e-04,
-+-1.45893896474014590726e-04,
-+-1.53593086852781251627e-04,
-+-1.61195820860575358014e-04,
-+-1.68697863165478154166e-04,
-+-1.76095040776206332271e-04,
-+-1.83383245357263575124e-04,
-+-1.90558435504502971490e-04,
-+-1.97616638979844499871e-04,
-+-2.04553954903916496199e-04,
-+-2.11366555905413412665e-04,
-+-2.18050690225988521003e-04,
-+-2.24602683779532712486e-04,
-+-2.31018942164689760873e-04,
-+-2.37295952629612913335e-04,
-+-2.43430285987647672136e-04,
-+-2.49418598483226250720e-04,
-+-2.55257633606716517576e-04,
-+-2.60944223857345624935e-04,
-+-2.66475292453244793581e-04,
-+-2.71847854987617462523e-04,
-+-2.77059021030343338027e-04,
-+-2.82105995673898740650e-04,
-+-2.86986081022970918215e-04,
-+-2.91696677626899613517e-04,
-+-2.96235285854203533526e-04,
-+-3.00599507208460371525e-04,
-+-3.04787045584920001685e-04,
-+-3.08795708467034170797e-04,
-+-3.12623408062509989137e-04,
-+-3.16268162378132073644e-04,
-+-3.19728096232883450198e-04,
-+-3.23001442208842737963e-04,
-+-3.26086541539376013193e-04,
-+-3.28981844934199483665e-04,
-+-3.31685913340901627425e-04,
-+-3.34197418642568527033e-04,
-+-3.36515144291180958672e-04,
-+-3.38637985876496302052e-04,
-+-3.40564951630163302489e-04,
-+-3.42295162864854200010e-04,
-+-3.43827854348234302102e-04,
-+-3.45162374611635318009e-04,
-+-3.46298186193322516443e-04,
-+-3.47234865816296292464e-04,
-+-3.47972104500599249514e-04,
-+-3.48509707610135627091e-04,
-+-3.48847594834057013122e-04,
-+-3.48985800102794084098e-04,
-+-3.48924471438857429929e-04,
-+-3.48663870742568846994e-04,
-+-3.48204373512918418428e-04,
-+-3.47546468503779780370e-04,
-+-3.46690757315755763122e-04,
-+-3.45637953923957387536e-04,
-+-3.44388884142068690732e-04,
-+-3.42944485023055438931e-04,
-+-3.41305804196959756622e-04,
-+-3.39473999146208769290e-04,
-+-3.37450336418937347962e-04,
-+-3.35236190780833392174e-04,
-+-3.32833044306071442267e-04,
-+-3.30242485407915102851e-04,
-+-3.27466207809625300430e-04,
-+-3.24506009456285323105e-04,
-+-3.21363791368333459424e-04,
-+-3.18041556437396186544e-04,
-+-3.14541408165269157499e-04,
-+-3.10865549346798478083e-04,
-+-3.07016280697481171256e-04,
-+-3.02995999426636253033e-04,
-+-2.98807197757022834691e-04,
-+-2.94452461391812403239e-04,
-+-2.89934467929851976634e-04,
-+-2.85255985230187464677e-04,
-+-2.80419869726833046429e-04,
-+-2.75429064694814387804e-04,
-+-2.70286598468527671825e-04,
-+-2.64995582613490349589e-04,
-+-2.59559210052583209764e-04,
-+-2.53980753147903693268e-04,
-+-2.48263561739382960028e-04,
-+-2.42411061141333119629e-04,
-+-2.36426750098121530837e-04,
-+-2.30314198700187072744e-04,
-+-2.24077046261636817458e-04,
-+-2.17718999160677065480e-04,
-+-2.11243828644175747709e-04,
-+-2.04655368597559766909e-04,
-+-1.97957513281590559125e-04,
-+-1.91154215037028974876e-04,
-+-1.84249481958865466954e-04,
-+-1.77247375541147338725e-04,
-+-1.70152008294119155233e-04,
-+-1.62967541334830558729e-04,
-+-1.55698181952718529668e-04,
-+-1.48348181151564014997e-04,
-+-1.40921831169260738459e-04,
-+-1.33423462976836989169e-04,
-+-1.25857443758204442640e-04,
-+-1.18228174371988047249e-04,
-+-1.10540086797179302569e-04,
-+-1.02797641563733886216e-04,
-+-9.50053251698690202779e-05,
-+-8.71676474874451848130e-05,
-+-7.92891391569480421435e-05,
-+-7.13743489735723545724e-05,
-+-6.34278412659133373520e-05,
-+-5.54541932687728470635e-05,
-+-4.74579924915896622650e-05,
-+-3.94438340839858202430e-05,
-+-3.14163182000519927554e-05,
-+-2.33800473626161515084e-05,
-+-1.53396238292672757364e-05,
-+-7.29964696164099043725e-06,
-+ 7.35289400800058785423e-07,
-+ 8.76059956072690135676e-06,
-+ 1.67717085752691440334e-05,
-+ 2.47640548591994233581e-05,
-+ 3.27330927774992179306e-05,
-+ 4.06742952258349121995e-05,
-+ 4.85831561974826067188e-05,
-+ 5.64551933352481954465e-05,
-+ 6.42859504669411802903e-05,
-+ 7.20710001229515570022e-05,
-+ 7.98059460346407204163e-05,
-+ 8.74864256117493171517e-05,
-+ 9.51081123980788522947e-05,
-+ 1.02666718503417308400e-04,
-+ 1.10157997010735983186e-04,
-+ 1.17577744357177826798e-04,
-+ 1.24921802687524364020e-04,
-+ 1.32186062178827283932e-04,
-+ 1.39366463334907178051e-04,
-+ 1.46458999249442900882e-04,
-+ 1.53459717836390693510e-04,
-+ 1.60364724026482917364e-04,
-+ 1.67170181928681389327e-04,
-+ 1.73872316955147449263e-04,
-+ 1.80467417908883949636e-04,
-+ 1.86951839032647022755e-04,
-+ 1.93322002018104301428e-04,
-+ 1.99574397974115166953e-04,
-+ 2.05705589353056221948e-04,
-+ 2.11712211834139661399e-04,
-+ 2.17590976162706123713e-04,
-+ 2.23338669944412427466e-04,
-+ 2.28952159393546036611e-04,
-+ 2.34428391034224761335e-04,
-+ 2.39764393353856245438e-04,
-+ 2.44957278407680664051e-04,
-+ 2.50004243373813900102e-04,
-+ 2.54902572057763023537e-04,
-+ 2.59649636345685814673e-04,
-+ 2.64242897605613895860e-04,
-+ 2.68679908035895302198e-04,
-+ 2.72958311960145715448e-04,
-+ 2.77075847068031439532e-04,
-+ 2.81030345601230668959e-04,
-+ 2.84819735483968607473e-04,
-+ 2.88442041397530505187e-04,
-+ 2.91895385798214199429e-04,
-+ 2.95177989878195508062e-04,
-+ 2.98288174468830185292e-04,
-+ 3.01224360885935828203e-04,
-+ 3.03985071716642170879e-04,
-+ 3.06568931547421675947e-04,
-+ 3.08974667632958628800e-04,
-+ 3.11201110505533425424e-04,
-+ 3.13247194524650732217e-04,
-+ 3.15111958366658898717e-04,
-+ 3.16794545454155058485e-04,
-+ 3.18294204324996645328e-04,
-+ 3.19610288940773337035e-04,
-+ 3.20742258934658165670e-04,
-+ 3.21689679798506877016e-04,
-+ 3.22452223009245763068e-04,
-+ 3.23029666094488715922e-04,
-+ 3.23421892637434677410e-04,
-+ 3.23628892221117367076e-04,
-+ 3.23650760312099662532e-04,
-+ 3.23487698083753741091e-04,
-+ 3.23140012179301756075e-04,
-+ 3.22608114414811391040e-04,
-+ 3.21892521422396742613e-04,
-+ 3.20993854233888264126e-04,
-+ 3.19912837805281418183e-04,
-+ 3.18650300482314343883e-04,
-+ 3.17207173407532596471e-04,
-+ 3.15584489869251980446e-04,
-+ 3.13783384592866167444e-04,
-+ 3.11805092974967040537e-04,
-+ 3.09650950260776226895e-04,
-+ 3.07322390665431383582e-04,
-+ 3.04820946439691672133e-04,
-+ 3.02148246880660359404e-04,
-+ 2.99306017288154683001e-04,
-+ 2.96296077867383965149e-04,
-+ 2.93120342578621461815e-04,
-+ 2.89780817934593706246e-04,
-+ 2.86279601746334145390e-04,
-+ 2.82618881818277357942e-04,
-+ 2.78800934593397952560e-04,
-+ 2.74828123749229578238e-04,
-+ 2.70702898745622138645e-04,
-+ 2.66427793325122298871e-04,
-+ 2.62005423966893218578e-04,
-+ 2.57438488295109720125e-04,
-+ 2.52729763442789332178e-04,
-+ 2.47882104372053313750e-04,
-+ 2.42898442151831685893e-04,
-+ 2.37781782193984719039e-04,
-+ 2.32535202449068816293e-04,
-+ 2.27161851562591142212e-04,
-+ 2.21664946993031298540e-04,
-+ 2.16047773092666164701e-04,
-+ 2.10313679152429068835e-04,
-+ 2.04466077411766494580e-04,
-+ 1.98508441034933119868e-04,
-+ 1.92444302054725852134e-04,
-+ 1.86277249284949120503e-04,
-+ 1.80010926202826978225e-04,
-+ 1.73649028802625680088e-04,
-+ 1.67195303421656588962e-04,
-+ 1.60653544540157914395e-04,
-+ 1.54027592556047951671e-04,
-+ 1.47321331536073504842e-04,
-+ 1.40538686944578018788e-04,
-+ 1.33683623351231527059e-04,
-+ 1.26760142119053490503e-04,
-+ 1.19772279074078399062e-04,
-+ 1.12724102158015825103e-04,
-+ 1.05619709065267838215e-04,
-+ 9.84632248656736166819e-05,
-+ 9.12587996143574470059e-05,
-+ 8.40106059500621168935e-05,
-+ 7.67228366833554533723e-05,
-+ 6.93997023760999396736e-05,
-+ 6.20454289135817277541e-05,
-+ 5.46642550706949160956e-05,
-+ 4.72604300735806080519e-05,
-+ 3.98382111581210927170e-05,
-+ 3.24018611266886229260e-05,
-+ 2.49556459045488985800e-05,
-+ 1.75038320973170900537e-05,
-+ 1.00506845508623119789e-05,
-+ 2.60046391505357440467e-06,
-+-4.84257578724628453024e-06,
-+-1.22741895846601957513e-05,
-+-1.96901439736055691699e-05,
-+-2.70862193254132534745e-05,
-+-3.44582122826427863452e-05,
-+-4.18019381432365520865e-05,
-+-4.91132332314092313582e-05,
-+-5.63879572535800466628e-05,
-+-6.36219956382819091861e-05,
-+-7.08112618586212363026e-05,
-+-7.79516997359988795179e-05,
-+-8.50392857237956806661e-05,
-+-9.20700311697229486791e-05,
-+-9.90399845556698052700e-05,
-+-1.05945233713539423387e-04,
-+-1.12781908016172197095e-04,
-+-1.19546180541878292172e-04,
-+-1.26234270211473149090e-04,
-+-1.32842443896610563079e-04,
-+-1.39367018498237036110e-04,
-+-1.45804362994017441780e-04,
-+-1.52150900453594729216e-04,
-+-1.58403110020568740251e-04,
-+-1.64557528860099149893e-04,
-+-1.70610754071058763354e-04,
-+-1.76559444561685330907e-04,
-+-1.82400322887701021131e-04,
-+-1.88130177051889265882e-04,
-+-1.93745862264151107917e-04,
-+-1.99244302661073536273e-04,
-+-2.04622492984076230016e-04,
-+-2.09877500215226739464e-04,
-+-2.15006465169834002022e-04,
-+-2.20006604044963781320e-04,
-+-2.24875209923037860070e-04,
-+-2.29609654229712996506e-04,
-+-2.34207388145253733377e-04,
-+-2.38665943968643126617e-04,
-+-2.42982936433764040154e-04,
-+-2.47156063976803242084e-04,
-+-2.51183109954370624526e-04,
-+-2.55061943811678553534e-04,
-+-2.58790522200035065601e-04,
-+-2.62366890043213652015e-04,
-+-2.65789181552087544740e-04,
-+-2.69055621187019552206e-04,
-+-2.72164524567514133028e-04,
-+-2.75114299328679378503e-04,
-+-2.77903445924066144594e-04,
-+-2.80530558374482365432e-04,
-+-2.82994324962458426113e-04,
-+-2.85293528871928667081e-04,
-+-2.87427048772961131386e-04,
-+-2.89393859351164052952e-04,
-+-2.91193031781574363133e-04,
-+-2.92823734146810019888e-04,
-+-2.94285231799317132436e-04,
-+-2.95576887667566815150e-04,
-+-2.96698162506095247833e-04,
-+-2.97648615089306386138e-04,
-+-2.98427902348986473068e-04,
-+-2.99035779455541356198e-04,
-+-2.99472099842951298022e-04,
-+-2.99736815177487569105e-04,
-+-2.99829975270314748326e-04,
-+-2.99751727934055112266e-04,
-+-2.99502318783477473017e-04,
-+-2.99082090980496079820e-04,
-+-2.98491484923676638277e-04,
-+-2.97731037882504939382e-04,
-+-2.96801383576682481068e-04,
-+-2.95703251700761983022e-04,
-+-2.94437467394450386442e-04,
-+-2.93004950658959568456e-04,
-+-2.91406715719765864719e-04,
-+-2.89643870336288734163e-04,
-+-2.87717615058818976508e-04,
-+-2.85629242433306474672e-04,
-+-2.83380136154447051858e-04,
-+-2.80971770167645455707e-04,
-+-2.78405707720416845195e-04,
-+-2.75683600363831927699e-04,
-+-2.72807186904635450876e-04,
-+-2.69778292308697948982e-04,
-+-2.66598826556476689500e-04,
-+-2.63270783451207898707e-04,
-+-2.59796239380568065765e-04,
-+-2.56177352032518543517e-04,
-+-2.52416359066249054721e-04,
-+-2.48515576738865041385e-04,
-+-2.44477398488780056640e-04,
-+-2.40304293476628925757e-04,
-+-2.35998805084586303973e-04,
-+-2.31563549375006809058e-04,
-+-2.27001213509300385799e-04,
-+-2.22314554128057417478e-04,
-+-2.17506395693240964359e-04,
-+-2.12579628793644199699e-04,
-+-2.07537208414486720482e-04,
-+-2.02382152172165928486e-04,
-+-1.97117538515386705664e-04,
-+-1.91746504893500153760e-04,
-+-1.86272245893312135556e-04,
-+-1.80698011345398386069e-04,
-+-1.75027104401053194751e-04,
-+-1.69262879581007170742e-04,
-+-1.63408740797064619410e-04,
-+-1.57468139347822794899e-04,
-+-1.51444571889650255424e-04,
-+-1.45341578384115073432e-04,
-+-1.39162740023062326405e-04,
-+-1.32911677132557424445e-04,
-+-1.26592047056915218929e-04,
-+-1.20207542024052590340e-04,
-+-1.13761886993405384643e-04,
-+-1.07258837487659783316e-04,
-+-1.00702177409562164813e-04,
-+-9.40957168450681270561e-05,
-+-8.74432898541086471968e-05,
-+-8.07487522502475194583e-05,
-+-7.40159793705156095938e-05,
-+-6.72488638367082234085e-05,
-+-6.04513133094537063756e-05,
-+-5.36272482362472248819e-05,
-+-4.67805995949890251378e-05,
-+-3.99153066340006816592e-05,
-+-3.30353146100565781473e-05,
-+-2.61445725256313035213e-05,
-+-1.92470308666743191849e-05,
-+-1.23466393421882220175e-05,
-+-5.44734462700067394256e-06,
-+ 1.44691189122907742152e-06,
-+ 8.33219635915731991185e-06,
-+ 1.52045846980238205263e-05,
-+ 2.20601648356691710140e-05,
-+ 2.88950389290342959231e-05,
-+ 3.57053255759800123258e-05,
-+ 4.24871620149298346875e-05,
-+ 4.92367063114172048323e-05,
-+ 5.59501395300588034607e-05,
-+ 6.26236678908249482520e-05,
-+ 6.92535249083772849656e-05,
-+ 7.58359735132689484916e-05,
-+ 8.23673081538160148027e-05,
-+ 8.88438568774603065845e-05,
-+ 9.52619833904571407419e-05,
-+ 1.01618089094736445996e-04,
-+ 1.07908615100796547912e-04,
-+ 1.14130044215511548540e-04,
-+ 1.20278902903740668169e-04,
-+ 1.26351763222651335486e-04,
-+ 1.32345244727680633103e-04,
-+ 1.38256016349078191072e-04,
-+ 1.44080798237992946907e-04,
-+ 1.49816363581082602745e-04,
-+ 1.55459540382645440516e-04,
-+ 1.61007213213293658063e-04,
-+ 1.66456324924208517568e-04,
-+ 1.71803878326033914858e-04,
-+ 1.77046937831481864629e-04,
-+ 1.82182631060826721089e-04,
-+ 1.87208150409221387497e-04,
-+ 1.92120754575244299164e-04,
-+ 1.96917770049651416229e-04,
-+ 2.01596592563618655673e-04,
-+ 2.06154688495617809162e-04,
-+ 2.10589596236331749735e-04,
-+ 2.14898927510659952262e-04,
-+ 2.19080368656271521873e-04,
-+ 2.23131681857964108947e-04,
-+ 2.27050706337181441982e-04,
-+ 2.30835359496065032096e-04,
-+ 2.34483638015429345178e-04,
-+ 2.37993618906142247269e-04,
-+ 2.41363460513226320541e-04,
-+ 2.44591403472347386668e-04,
-+ 2.47675771618061590050e-04,
-+ 2.50614972843412405108e-04,
-+ 2.53407499910435565511e-04,
-+ 2.56051931211167507936e-04,
-+ 2.58546931478778998018e-04,
-+ 2.60891252448485638522e-04,
-+ 2.63083733467921166392e-04,
-+ 2.65123302056677822517e-04,
-+ 2.67008974414759331969e-04,
-+ 2.68739855879716155965e-04,
-+ 2.70315141332255878728e-04,
-+ 2.71734115550168267312e-04,
-+ 2.72996153510415167677e-04,
-+ 2.74100720639277955180e-04,
-+ 2.75047373010480411190e-04,
-+ 2.75835757491237044091e-04,
-+ 2.76465611836200725413e-04,
-+ 2.76936764729322759931e-04,
-+ 2.77249135773662686282e-04,
-+ 2.77402735429210095530e-04,
-+ 2.77397664898823418430e-04,
-+ 2.77234115962408846773e-04,
-+ 2.76912370759493020253e-04,
-+ 2.76432801520381165802e-04,
-+ 2.75795870246112379866e-04,
-+ 2.75002128337457571201e-04,
-+ 2.74052216173225097421e-04,
-+ 2.72946862638190302849e-04,
-+ 2.71686884600967171015e-04,
-+ 2.70273186342183185330e-04,
-+ 2.68706758933346897579e-04,
-+ 2.66988679566817544743e-04,
-+ 2.65120110837324977557e-04,
-+ 2.63102299975484803154e-04,
-+ 2.60936578033862389640e-04,
-+ 2.58624359026030797588e-04,
-+ 2.56167139019227189586e-04,
-+ 2.53566495181161690939e-04,
-+ 2.50824084781579728989e-04,
-+ 2.47941644149205875185e-04,
-+ 2.44920987584716133307e-04,
-+ 2.41764006230414186041e-04,
-+ 2.38472666897310341073e-04,
-+ 2.35049010850323818796e-04,
-+ 2.31495152552345612000e-04,
-+ 2.27813278367987374863e-04,
-+ 2.24005645227630785727e-04,
-+ 2.20074579252881860408e-04,
-+ 2.16022474343967573742e-04,
-+ 2.11851790730109416395e-04,
-+ 2.07565053483680750195e-04,
-+ 2.03164850999056984188e-04,
-+ 1.98653833437066455227e-04,
-+ 1.94034711135973993255e-04,
-+ 1.89310252989946878202e-04,
-+ 1.84483284795969022882e-04,
-+ 1.79556687570185045640e-04,
-+ 1.74533395834689777828e-04,
-+ 1.69416395875703968332e-04,
-+ 1.64208723974330704888e-04,
-+ 1.58913464610781706397e-04,
-+ 1.53533748643116163459e-04,
-+ 1.48072751461745600373e-04,
-+ 1.42533691120615488420e-04,
-+ 1.36919826446232244851e-04,
-+ 1.31234455125635378044e-04,
-+ 1.25480911774428335794e-04,
-+ 1.19662565986003067314e-04,
-+ 1.13782820363092171140e-04,
-+ 1.07845108532812357350e-04,
-+ 1.01852893146268084785e-04,
-+ 9.58096638640913071758e-05,
-+ 8.97189353288038125020e-05,
-+ 8.35842451253892703041e-05,
-+ 7.74091517311708171871e-05,
-+ 7.11972324561945549498e-05,
-+ 6.49520813753084395436e-05,
-+ 5.86773072531284785184e-05,
-+ 5.23765314630894333252e-05,
-+ 4.60533859017605735615e-05,
-+ 3.97115108997169615726e-05,
-+ 3.33545531299399012877e-05,
-+ 2.69861635152601212417e-05,
-+ 2.06099951357281601966e-05,
-+ 1.42297011374239464445e-05,
-+ 7.84893264358421670118e-06,
-+ 1.47133666946563786569e-06,
-+-4.89944595795788563131e-06,
-+-1.12597826742650033679e-05,
-+-1.76060512446440944824e-05,
-+-2.39346418225641322213e-05,
-+-3.02419589988916038355e-05,
-+-3.65244238402926538526e-05,
-+-4.27784759157675114065e-05,
-+-4.90005753101717809908e-05,
-+-5.51872046235883968062e-05,
-+-6.13348709554239443801e-05,
-+-6.74401078721121943153e-05,
-+-7.34994773573187349476e-05,
-+-7.95095717435526355005e-05,
-+-8.54670156241022589347e-05,
-+-9.13684677442247916886e-05,
-+-9.72106228705329827259e-05,
-+-1.02990213637535249144e-04,
-+-1.08704012370301582183e-04,
-+-1.14348832882239030933e-04,
-+-1.19921532246967561266e-04,
-+-1.25419012543391523258e-04,
-+-1.30838222572801670578e-04,
-+-1.36176159547326554701e-04,
-+-1.41429870748598893225e-04,
-+-1.46596455155808636037e-04,
-+-1.51673065042229072161e-04,
-+-1.56656907539345593332e-04,
-+-1.61545246167741111346e-04,
-+-1.66335402333829893021e-04,
-+-1.71024756791804714243e-04,
-+-1.75610751069764359483e-04,
-+-1.80090888859417295109e-04,
-+-1.84462737368601463689e-04,
-+-1.88723928635743296543e-04,
-+-1.92872160805764557030e-04,
-+-1.96905199366593993164e-04,
-+-2.00820878345682555252e-04,
-+-2.04617101465884017146e-04,
-+-2.08291843260079455108e-04,
-+-2.11843150143963964045e-04,
-+-2.15269141446432097026e-04,
-+-2.18568010397017243587e-04,
-+-2.21738025069880467571e-04,
-+-2.24777529283855221449e-04,
-+-2.27684943458087584887e-04,
-+-2.30458765422837560640e-04,
-+-2.33097571185028482272e-04,
-+-2.35600015648165144258e-04,
-+-2.37964833286258476731e-04,
-+-2.40190838771433997885e-04,
-+-2.42276927554912959329e-04,
-+-2.44222076401095133848e-04,
-+-2.46025343874493635128e-04,
-+-2.47685870779298261159e-04,
-+-2.49202880551373695713e-04,
-+-2.50575679602528446788e-04,
-+-2.51803657616905742379e-04,
-+-2.52886287799411761581e-04,
-+-2.53823127076041447393e-04,
-+-2.54613816246114423730e-04,
-+-2.55258080086343225150e-04,
-+-2.55755727406747662873e-04,
-+-2.56106651058446010017e-04,
-+-2.56310827893362850466e-04,
-+-2.56368318675959138472e-04,
-+-2.56279267947061176278e-04,
-+-2.56043903839951736412e-04,
-+-2.55662537848869153827e-04,
-+-2.55135564550115290575e-04,
-+-2.54463461275976690883e-04,
-+-2.53646787741720056760e-04,
-+-2.52686185625914012682e-04,
-+-2.51582378104383988602e-04,
-+-2.50336169338122934043e-04,
-+-2.48948443915500688007e-04,
-+-2.47420166249151312829e-04,
-+-2.45752379927938354159e-04,
-+-2.43946207024417992780e-04,
-+-2.42002847358256754223e-04,
-+-2.39923577716073371238e-04,
-+-2.37709751028206703414e-04,
-+-2.35362795502931025464e-04,
-+-2.32884213718665853896e-04,
-+-2.30275581674753719499e-04,
-+-2.27538547801391219296e-04,
-+-2.24674831929338742875e-04,
-+-2.21686224220039661921e-04,
-+-2.18574584056813192318e-04,
-+-2.15341838897799910417e-04,
-+-2.11989983091363462259e-04,
-+-2.08521076654672306251e-04,
-+-2.04937244016203435910e-04,
-+-2.01240672722932391033e-04,
-+-1.97433612112999371446e-04,
-+-1.93518371954601639930e-04,
-+-1.89497321052062165161e-04,
-+-1.85372885819735596941e-04,
-+-1.81147548824731936421e-04,
-+-1.76823847299330738289e-04,
-+-1.72404371623836980172e-04,
-+-1.67891763780981287087e-04,
-+-1.63288715782630906338e-04,
-+-1.58597968069809712021e-04,
-+-1.53822307886959517469e-04,
-+-1.48964567631409072149e-04,
-+-1.44027623179032189917e-04,
-+-1.39014392187015984161e-04,
-+-1.33927832374908250841e-04,
-+-1.28770939784726684953e-04,
-+-1.23546747021317972074e-04,
-+-1.18258321473934703560e-04,
-+-1.12908763520077224328e-04,
-+-1.07501204712651167732e-04,
-+-1.02038805951497883089e-04,
-+-9.65247556403633775101e-05,
-+-9.09622678303766927241e-05,
-+-8.53545803511158610944e-05,
-+-7.97049529303493834971e-05,
-+-7.40166653035361572950e-05,
-+-6.82930153141845771095e-05,
-+-6.25373170061634808944e-05,
-+-5.67528987090696620090e-05,
-+-5.09431011177533815009e-05,
-+-4.51112753671087087165e-05,
-+-3.92607811032360062451e-05,
-+-3.33949845520835634973e-05,
-+-2.75172565866769451451e-05,
-+-2.16309707940438413821e-05,
-+-1.57395015429393948119e-05,
-+-9.84622205347808669251e-06,
-+-3.95450246978667291299e-06,
-+ 1.93229206330573338499e-06,
-+ 7.81080331823583281971e-06,
-+ 1.36776818965353001598e-05,
-+ 1.95295891331412940274e-05,
-+ 2.53631989924010254722e-05,
-+ 3.11751999544031924995e-05,
-+ 3.69622968907776241966e-05,
-+ 4.27212129288199275452e-05,
-+ 4.84486913029018664584e-05,
-+ 5.41414971921248957621e-05,
-+ 5.97964195431813658947e-05,
-+ 6.54102728773860912868e-05,
-+ 7.09798990809431715968e-05,
-+ 7.65021691772440931741e-05,
-+ 8.19739850804731076412e-05,
-+ 8.73922813293384121618e-05,
-+ 9.27540268000407564604e-05,
-+ 9.80562263975138116018e-05,
-+ 1.03295922723993288585e-04,
-+ 1.08470197723987624161e-04,
-+ 1.13576174304741347185e-04,
-+ 1.18611017931288513657e-04,
-+ 1.23571938195231626964e-04,
-+ 1.28456190356295279348e-04,
-+ 1.33261076856053907241e-04,
-+ 1.37983948802590338087e-04,
-+ 1.42622207425680382412e-04,
-+ 1.47173305501465306920e-04,
-+ 1.51634748745910018621e-04,
-+ 1.56004097176282787189e-04,
-+ 1.60278966439910032374e-04,
-+ 1.64457029109492771420e-04,
-+ 1.68536015944279398771e-04,
-+ 1.72513717116415843562e-04,
-+ 1.76387983401819222569e-04,
-+ 1.80156727334917880767e-04,
-+ 1.83817924326707803767e-04,
-+ 1.87369613745391966429e-04,
-+ 1.90809899959169668648e-04,
-+ 1.94136953340610880553e-04,
-+ 1.97349011231975375721e-04,
-+ 2.00444378871088047271e-04,
-+ 2.03421430277243321921e-04,
-+ 2.06278609096683117384e-04,
-+ 2.09014429407214987486e-04,
-+ 2.11627476481567565469e-04,
-+ 2.14116407509085294883e-04,
-+ 2.16479952275410651545e-04,
-+ 2.18716913799805800578e-04,
-+ 2.20826168929834235413e-04,
-+ 2.22806668893034610273e-04,
-+ 2.24657439805431047601e-04,
-+ 2.26377583136560162113e-04,
-+ 2.27966276130837073623e-04,
-+ 2.29422772185062839910e-04,
-+ 2.30746401181916479780e-04,
-+ 2.31936569779289853983e-04,
-+ 2.32992761655362052436e-04,
-+ 2.33914537709302807530e-04,
-+ 2.34701536217598021733e-04,
-+ 2.35353472945890507175e-04,
-+ 2.35870141216392695174e-04,
-+ 2.36251411930833043378e-04,
-+ 2.36497233549024313271e-04,
-+ 2.36607632023086867507e-04,
-+ 2.36582710687435922303e-04,
-+ 2.36422650104641229310e-04,
-+ 2.36127707867309972372e-04,
-+ 2.35698218356151145605e-04,
-+ 2.35134592454421556497e-04,
-+ 2.34437317218964954776e-04,
-+ 2.33606955508089235429e-04,
-+ 2.32644145566544174094e-04,
-+ 2.31549600567894977307e-04,
-+ 2.30324108114598991807e-04,
-+ 2.28968529696129264976e-04,
-+ 2.27483800105504667616e-04,
-+ 2.25870926814611687646e-04,
-+ 2.24130989308722247937e-04,
-+ 2.22265138380645918331e-04,
-+ 2.20274595384963348642e-04,
-+ 2.18160651452820167134e-04,
-+ 2.15924666667776987477e-04,
-+ 2.13568069203236673070e-04,
-+ 2.11092354421993914264e-04,
-+ 2.08499083938437130724e-04,
-+ 2.05789884644064712763e-04,
-+ 2.02966447696813575728e-04,
-+ 2.00030527474900313590e-04,
-+ 1.96983940495784002342e-04,
-+ 1.93828564300923292208e-04,
-+ 1.90566336307002704526e-04,
-+ 1.87199252624317116680e-04,
-+ 1.83729366843086441233e-04,
-+ 1.80158788788307001969e-04,
-+ 1.76489683244053914514e-04,
-+ 1.72724268647881387890e-04,
-+ 1.68864815756162396296e-04,
-+ 1.64913646281104273863e-04,
-+ 1.60873131500388584026e-04,
-+ 1.56745690840089552413e-04,
-+ 1.52533790431842698147e-04,
-+ 1.48239941645072722306e-04,
-+ 1.43866699595155821557e-04,
-+ 1.39416661628403223006e-04,
-+ 1.34892465784759241557e-04,
-+ 1.30296789239119602255e-04,
-+ 1.25632346722192602372e-04,
-+ 1.20901888921826961877e-04,
-+ 1.16108200865747232967e-04,
-+ 1.11254100286645201583e-04,
-+ 1.06342435970584441723e-04,
-+ 1.01376086089681932472e-04,
-+ 9.63579565200426416864e-05,
-+ 9.12909791459249860338e-05,
-+ 8.61781101511258242455e-05,
-+ 8.10223282985787361839e-05,
-+ 7.58266331991632841188e-05,
-+ 7.05940435707285904570e-05,
-+ 6.53275954883418709775e-05,
-+ 6.00303406267707601431e-05,
-+ 5.47053444962296712734e-05,
-+ 4.93556846723300390086e-05,
-+ 4.39844490214451387493e-05,
-+ 3.85947339222574980089e-05,
-+ 3.31896424847004075168e-05,
-+ 2.77722827672396915886e-05,
-+ 2.23457659935181742969e-05,
-+ 1.69132047694604267319e-05,
-+ 1.14777113016647637858e-05,
-+ 6.04239561835710224983e-06,
-+ 6.10363793728645020518e-07,
-+-4.81528382325380808311e-06,
-+-1.02314543745700456363e-05,
-+-1.56350642523847494154e-05,
-+-2.10230408508807413534e-05,
-+-2.63923243095009231191e-05,
-+-3.17398692468697033722e-05,
-+-3.70626464842205185883e-05,
-+-4.23576447574330595914e-05,
-+-4.76218724167029767991e-05,
-+-5.28523591128858801825e-05,
-+-5.80461574695681123935e-05,
-+-6.32003447399251964056e-05,
-+-6.83120244474383017403e-05,
-+-7.33783280095512028618e-05,
-+-7.83964163433584703636e-05,
-+-8.33634814524302451963e-05,
-+-8.82767479938875655916e-05,
-+-9.31334748248567243206e-05,
-+-9.79309565274441714503e-05,
-+-1.02666524911384672157e-04,
-+-1.07337550493532478228e-04,
-+-1.11941443953376520482e-04,
-+-1.16475657563775984358e-04,
-+-1.20937686596131455368e-04,
-+-1.25325070699215711592e-04,
-+-1.29635395250910385187e-04,
-+-1.33866292682098157263e-04,
-+-1.38015443772047713324e-04,
-+-1.42080578914434722728e-04,
-+-1.46059479353512834980e-04,
-+-1.49949978389612786304e-04,
-+-1.53749962553389324382e-04,
-+-1.57457372748113794830e-04,
-+-1.61070205359542604606e-04,
-+-1.64586513332575895248e-04,
-+-1.68004407214276350055e-04,
-+-1.71322056162632199933e-04,
-+-1.74537688920543577207e-04,
-+-1.77649594754509306677e-04,
-+-1.80656124357563160031e-04,
-+-1.83555690715879498342e-04,
-+-1.86346769938744346575e-04,
-+-1.89027902051352861886e-04,
-+-1.91597691750067656950e-04,
-+-1.94054809119746906601e-04,
-+-1.96397990312779409513e-04,
-+-1.98626038189485975725e-04,
-+-2.00737822919565348781e-04,
-+-2.02732282544295099209e-04,
-+-2.04608423499208415697e-04,
-+-2.06365321097002875567e-04,
-+-2.08002119970448036889e-04,
-+-2.09518034475094608749e-04,
-+-2.10912349051600370295e-04,
-+-2.12184418547517878980e-04,
-+-2.13333668498409933503e-04,
-+-2.14359595368183043079e-04,
-+-2.15261766748550323726e-04,
-+-2.16039821517564244657e-04,
-+-2.16693469957175179064e-04,
-+-2.17222493829804320963e-04,
-+-2.17626746413933055187e-04,
-+-2.17906152498744288149e-04,
-+-2.18060708337866669768e-04,
-+-2.18090481562302831997e-04,
-+-2.17995611052633665597e-04,
-+-2.17776306770636030692e-04,
-+-2.17432849550450564774e-04,
-+-2.16965590849471163170e-04,
-+-2.16374952459152508069e-04,
-+-2.15661426175948502115e-04,
-+-2.14825573432618965528e-04,
-+-2.13868024890168464437e-04,
-+-2.12789479990694880424e-04,
-+-2.11590706471458399373e-04,
-+-2.10272539840493795068e-04,
-+-2.08835882814101080193e-04,
-+-2.07281704716627822619e-04,
-+-2.05611040842872101015e-04,
-+-2.03824991783563389154e-04,
-+-2.01924722714337458607e-04,
-+-1.99911462648656409243e-04,
-+-1.97786503655151527006e-04,
-+-1.95551200039875640226e-04,
-+-1.93206967493983087581e-04,
-+-1.90755282207361699176e-04,
-+-1.88197679948765912066e-04,
-+-1.85535755113050746619e-04,
-+-1.82771159736013454056e-04,
-+-1.79905602477525801202e-04,
-+-1.76940847573584393148e-04,
-+-1.73878713757827938272e-04,
-+-1.70721073153264649115e-04,
-+-1.67469850134842302650e-04,
-+-1.64127020163558210364e-04,
-+-1.60694608592805399886e-04,
-+-1.57174689447680583382e-04,
-+-1.53569384177978999996e-04,
-+-1.49880860385627755508e-04,
-+-1.46111330527314676282e-04,
-+-1.42263050593096474329e-04,
-+-1.38338318761709250845e-04,
-+-1.34339474033567067698e-04,
-+-1.30268894841948973309e-04,
-+-1.26128997643502378410e-04,
-+-1.21922235488716284571e-04,
-+-1.17651096573263047097e-04,
-+-1.13318102771055339347e-04,
-+-1.08925808149881126548e-04,
-+-1.04476797470485840437e-04,
-+-9.99736846699831026861e-05,
-+-9.54191113304803323683e-05,
-+-9.08157451338251561638e-05,
-+-8.61662783033089883962e-05,
-+-8.14734260333982814777e-05,
-+-7.67399249081906023075e-05,
-+-7.19685313096766739269e-05,
-+-6.71620198166663929249e-05,
-+-6.23231815953190427171e-05,
-+-5.74548227822070198159e-05,
-+-5.25597628608498169912e-05,
-+-4.76408330326411294346e-05,
-+-4.27008745831808004092e-05,
-+-3.77427372447754268139e-05,
-+-3.27692775562946159791e-05,
-+-2.77833572210794834225e-05,
-+-2.27878414640919380344e-05,
-+-1.77855973889981053694e-05,
-+-1.27794923363028358154e-05,
-+-7.77239224340285758588e-06,
-+-2.76716000750597664943e-06,
-+ 2.23334614765047225155e-06,
-+ 7.22627430035223622482e-06,
-+ 1.22087804538059595082e-05,
-+ 1.71780301524608407758e-05,
-+ 2.21312000908374962855e-05,
-+ 2.70654797139531880809e-05,
-+ 3.19780728084379127691e-05,
-+ 3.68661990834432147361e-05,
-+ 4.17270957404514982554e-05,
-+ 4.65580190311022323554e-05,
-+ 5.13562458021581016814e-05,
-+ 5.61190750267443480906e-05,
-+ 6.08438293210010258259e-05,
-+ 6.55278564453003783789e-05,
-+ 7.01685307891888973997e-05,
-+ 7.47632548392249471477e-05,
-+ 7.93094606288941272312e-05,
-+ 8.38046111697948801871e-05,
-+ 8.82462018632895745093e-05,
-+ 9.26317618918994384889e-05,
-+ 9.69588555895161487196e-05,
-+ 1.01225083789883730243e-04,
-+ 1.05428085152447302661e-04,
-+ 1.09565537464902931428e-04,
-+ 1.13635158921721518338e-04,
-+ 1.17634709377956067329e-04,
-+ 1.21561991577586462265e-04,
-+ 1.25414852355879225454e-04,
-+ 1.29191183814908515468e-04,
-+ 1.32888924471751327088e-04,
-+ 1.36506060378661892669e-04,
-+ 1.40040626214685270945e-04,
-+ 1.43490706347988396978e-04,
-+ 1.46854435868515841024e-04,
-+ 1.50130001590280805039e-04,
-+ 1.53315643022813413417e-04,
-+ 1.56409653311238074644e-04,
-+ 1.59410380144482617453e-04,
-+ 1.62316226631138655961e-04,
-+ 1.65125652142516246785e-04,
-+ 1.67837173122445686060e-04,
-+ 1.70449363863413175593e-04,
-+ 1.72960857248622345769e-04,
-+ 1.75370345459602272869e-04,
-+ 1.77676580649003228304e-04,
-+ 1.79878375578234217958e-04,
-+ 1.81974604219625616178e-04,
-+ 1.83964202322818494873e-04,
-+ 1.85846167945095638082e-04,
-+ 1.87619561945405119441e-04,
-+ 1.89283508441830545512e-04,
-+ 1.90837195232300557094e-04,
-+ 1.92279874178338393460e-04,
-+ 1.93610861551680866121e-04,
-+ 1.94829538343613950903e-04,
-+ 1.95935350536894948301e-04,
-+ 1.96927809340166344414e-04,
-+ 1.97806491384736336846e-04,
-+ 1.98571038883713909618e-04,
-+ 1.99221159753417060602e-04,
-+ 1.99756627697045236825e-04,
-+ 2.00177282250609553729e-04,
-+ 2.00483028791162594395e-04,
-+ 2.00673838507340500988e-04,
-+ 2.00749748332303471193e-04,
-+ 2.00710860839155866373e-04,
-+ 2.00557344098951099076e-04,
-+ 2.00289431501410645185e-04,
-+ 1.99907421538506638011e-04,
-+ 1.99411677551082736374e-04,
-+ 1.98802627438700833676e-04,
-+ 1.98080763332926219986e-04,
-+ 1.97246641234288935590e-04,
-+ 1.96300880613169869337e-04,
-+ 1.95244163974890567017e-04,
-+ 1.94077236389296096204e-04,
-+ 1.92800904985150346445e-04,
-+ 1.91416038409673633282e-04,
-+ 1.89923566253578820747e-04,
-+ 1.88324478441976569726e-04,
-+ 1.86619824591544307586e-04,
-+ 1.84810713334366470651e-04,
-+ 1.82898311608877559096e-04,
-+ 1.80883843918355590027e-04,
-+ 1.78768591557429662019e-04,
-+ 1.76553891807085754475e-04,
-+ 1.74241137098672801628e-04,
-+ 1.71831774147425040116e-04,
-+ 1.69327303056034789413e-04,
-+ 1.66729276388829827970e-04,
-+ 1.64039298217118011776e-04,
-+ 1.61259023136285878450e-04,
-+ 1.58390155255254730902e-04,
-+ 1.55434447158867309821e-04,
-+ 1.52393698843932419136e-04,
-+ 1.49269756629439789971e-04,
-+ 1.46064512041690788922e-04,
-+ 1.42779900675020699667e-04,
-+ 1.39417901028690864249e-04,
-+ 1.35980533320795114868e-04,
-+ 1.32469858279776427946e-04,
-+ 1.28887975914319409792e-04,
-+ 1.25237024262341641208e-04,
-+ 1.21519178119826532425e-04,
-+ 1.17736647750260424580e-04,
-+ 1.13891677575382762027e-04,
-+ 1.09986544848155620062e-04,
-+ 1.06023558308557749072e-04,
-+ 1.02005056823126766924e-04,
-+ 9.79334080089949563690e-05,
-+ 9.38110068432369283674e-05,
-+ 8.96402742583390368340e-05,
-+ 8.54236557246172082802e-05,
-+ 8.11636198204074375134e-05,
-+ 7.68626567908638934834e-05,
-+ 7.25232770962033334184e-05,
-+ 6.81480099502408253210e-05,
-+ 6.37394018500648417607e-05,
-+ 5.93000150977037791236e-05,
-+ 5.48324263146410183461e-05,
-+ 5.03392249500377099197e-05,
-+ 4.58230117835234620669e-05,
-+ 4.12863974234202202882e-05,
-+ 3.67320008012637997784e-05,
-+ 3.21624476634885960824e-05,
-+ 2.75803690611435845046e-05,
-+ 2.29883998385047982199e-05,
-+ 1.83891771214516705382e-05,
-+ 1.37853388064824855514e-05,
-+ 9.17952205116795011679e-06,
-+ 4.57436176706797238011e-06,
-+-2.75108842579818438910e-08,
-+-4.62346999106136241029e-06,
-+-9.21089638641225220430e-06,
-+-1.37871791373255400920e-05,
-+-1.83497170273250301319e-05,
-+-2.28959200315399970119e-05,
-+-2.74232107835103849100e-05,
-+-3.19290260328724777978e-05,
-+-3.64108180931019818124e-05,
-+-4.08660562784996536732e-05,
-+-4.52922283295994015603e-05,
-+-4.96868418262625327142e-05,
-+-5.40474255875064181487e-05,
-+-5.83715310574944550438e-05,
-+-6.26567336767544860471e-05,
-+-6.69006342379224212954e-05,
-+-7.11008602252454944507e-05,
-+-7.52550671370984356097e-05,
-+-7.93609397907785223342e-05,
-+-8.34161936088556751033e-05,
-+-8.74185758863736857033e-05,
-+-9.13658670381457783342e-05,
-+-9.52558818255899069152e-05,
-+-9.90864705622930764172e-05,
-+-1.02855520297645628824e-04,
-+-1.06560955978024466816e-04,
-+-1.10200741584761408303e-04,
-+-1.13772881248329986426e-04,
-+-1.17275420338133038616e-04,
-+-1.20706446527301793710e-04,
-+-1.24064090831927222123e-04,
-+-1.27346528624161774851e-04,
-+-1.30551980618646957209e-04,
-+-1.33678713831734421146e-04,
-+-1.36725042512981202628e-04,
-+-1.39689329048471762296e-04,
-+-1.42569984835333479116e-04,
-+-1.45365471127236698399e-04,
-+-1.48074299850179806918e-04,
-+-1.50695034388278933371e-04,
-+-1.53226290339108047649e-04,
-+-1.55666736238194213047e-04,
-+-1.58015094252302533938e-04,
-+-1.60270140841145748061e-04,
-+-1.62430707387187727537e-04,
-+-1.64495680793215953231e-04,
-+-1.66464004047380415832e-04,
-+-1.68334676755447923760e-04,
-+-1.70106755639931378401e-04,
-+-1.71779355005955645377e-04,
-+-1.73351647173555225515e-04,
-+-1.74822862876237544423e-04,
-+-1.76192291625613234839e-04,
-+-1.77459282041936094012e-04,
-+-1.78623242150403258857e-04,
-+-1.79683639643093680336e-04,
-+-1.80640002106423656165e-04,
-+-1.81491917214075620078e-04,
-+-1.82239032885274609931e-04,
-+-1.82881057408414176473e-04,
-+-1.83417759529990343371e-04,
-+-1.83848968508822530749e-04,
-+-1.84174574135603265346e-04,
-+-1.84394526717789769034e-04,
-+-1.84508837029895376297e-04,
-+-1.84517576229257786137e-04,
-+-1.84420875737372863242e-04,
-+-1.84218927086907938075e-04,
-+-1.83911981734526851434e-04,
-+-1.83500350839676173650e-04,
-+-1.82984405009505745514e-04,
-+-1.82364574010110863959e-04,
-+-1.81641346444305146679e-04,
-+-1.80815269396154251801e-04,
-+-1.79886948042512636280e-04,
-+-1.78857045231831964091e-04,
-+-1.77726281030521376285e-04,
-+-1.76495432237164907125e-04,
-+-1.75165331864910952826e-04,
-+-1.73736868592374774480e-04,
-+-1.72210986183407241141e-04,
-+-1.70588682876102914121e-04,
-+-1.68871010741435372948e-04,
-+-1.67059075011932430324e-04,
-+-1.65154033380787864348e-04,
-+-1.63157095271909268353e-04,
-+-1.61069521081280296517e-04,
-+-1.58892621390163224591e-04,
-+-1.56627756150609387950e-04,
-+-1.54276333843780973348e-04,
-+-1.51839810611594959108e-04,
-+-1.49319689362255997572e-04,
-+-1.46717518850139323847e-04,
-+-1.44034892730693565204e-04,
-+-1.41273448590855218087e-04,
-+-1.38434866955593221692e-04,
-+-1.35520870271185604229e-04,
-+-1.32533221865797814620e-04,
-+-1.29473724888089073738e-04,
-+-1.26344221224348324251e-04,
-+-1.23146590394907499066e-04,
-+-1.19882748430450496667e-04,
-+-1.16554646728892494570e-04,
-+-1.13164270893511021972e-04,
-+-1.09713639553016026698e-04,
-+-1.06204803164258788938e-04,
-+-1.02639842798286093709e-04,
-+-9.90208689104574309690e-05,
-+-9.53500200953488063907e-05,
-+-9.16294618271747146219e-05,
-+-8.78613851864693950078e-05,
-+-8.40480055737724741525e-05,
-+-8.01915614110729224086e-05,
-+-7.62943128317693849017e-05,
-+-7.23585403599120898779e-05,
-+-6.83865435794958062077e-05,
-+-6.43806397945781601344e-05,
-+-6.03431626810021750013e-05,
-+-5.62764609305052045107e-05,
-+-5.21828968880001095782e-05,
-+-4.80648451828273766406e-05,
-+-4.39246913547101223052e-05,
-+-3.97648304753519063080e-05,
-+-3.55876657662771198705e-05,
-+-3.13956072138546100360e-05,
-+-2.71910701822341436737e-05,
-+-2.29764740250598643260e-05,
-+-1.87542406966089186175e-05,
-+-1.45267933633486321363e-05,
-+-1.02965550165577958658e-05,
-+-6.06594708686369126855e-06,
-+-1.83738806147565725218e-06,
-+ 2.38670789508730654728e-06,
-+ 6.60393231605029799332e-06,
-+ 1.08118838022856526365e-05,
-+ 1.50081693864890804819e-05,
-+ 1.91904058907051211296e-05,
-+ 2.33562212764937420536e-05,
-+ 2.75032559869653701879e-05,
-+ 3.16291642799266015692e-05,
-+ 3.57316155513857358346e-05,
-+ 3.98082956486727347189e-05,
-+ 4.38569081724363369137e-05,
-+ 4.78751757667874686011e-05,
-+ 5.18608413968659121744e-05,
-+ 5.58116696131162758521e-05,
-+ 5.97254478015662288413e-05,
-+ 6.35999874194105038012e-05,
-+ 6.74331252152119678313e-05,
-+ 7.12227244330430300963e-05,
-+ 7.49666759998972407220e-05,
-+ 7.86628996957159043685e-05,
-+ 8.23093453053795327638e-05,
-+ 8.59039937520326019873e-05,
-+ 8.94448582111133600001e-05,
-+ 9.29299852044797151680e-05,
-+ 9.63574556740282402905e-05,
-+ 9.97253860342133961791e-05,
-+ 1.03031929202938195831e-04,
-+ 1.06275275610134644190e-04,
-+ 1.09453654183648506066e-04,
-+ 1.12565333311777745389e-04,
-+ 1.15608621781949924361e-04,
-+ 1.18581869695136337068e-04,
-+ 1.21483469355360853659e-04,
-+ 1.24311856133939833708e-04,
-+ 1.27065509307947152248e-04,
-+ 1.29742952872464735155e-04,
-+ 1.32342756326188934566e-04,
-+ 1.34863535429971070998e-04,
-+ 1.37303952937931089294e-04,
-+ 1.39662719300668973499e-04,
-+ 1.41938593340331764125e-04,
-+ 1.44130382897093850406e-04,
-+ 1.46236945446754414840e-04,
-+ 1.48257188689131702477e-04,
-+ 1.50190071106954631209e-04,
-+ 1.52034602494970392606e-04,
-+ 1.53789844459004473734e-04,
-+ 1.55454910884727745025e-04,
-+ 1.57028968375900465160e-04,
-+ 1.58511236661886526942e-04,
-+ 1.59900988974221943979e-04,
-+ 1.61197552392132844234e-04,
-+ 1.62400308156727989691e-04,
-+ 1.63508691953843704383e-04,
-+ 1.64522194165353128834e-04,
-+ 1.65440360088857943638e-04,
-+ 1.66262790125675229700e-04,
-+ 1.66989139937054223255e-04,
-+ 1.67619120568575667371e-04,
-+ 1.68152498542703266729e-04,
-+ 1.68589095919475644722e-04,
-+ 1.68928790325348127024e-04,
-+ 1.69171514950206333802e-04,
-+ 1.69317258512600938907e-04,
-+ 1.69366065193253035638e-04,
-+ 1.69318034536926169398e-04,
-+ 1.69173321322751827635e-04,
-+ 1.68932135403124315375e-04,
-+ 1.68594741511303550284e-04,
-+ 1.68161459037872361389e-04,
-+ 1.67632661776220571190e-04,
-+ 1.67008777637239416583e-04,
-+ 1.66290288333431385444e-04,
-+ 1.65477729032657161099e-04,
-+ 1.64571687981757684184e-04,
-+ 1.63572806100295385775e-04,
-+ 1.62481776544717680536e-04,
-+ 1.61299344243187993495e-04,
-+ 1.60026305401423106544e-04,
-+ 1.58663506979840374144e-04,
-+ 1.57211846142359855600e-04,
-+ 1.55672269677209203047e-04,
-+ 1.54045773390101885464e-04,
-+ 1.52333401470171580496e-04,
-+ 1.50536245829059009979e-04,
-+ 1.48655445413586417922e-04,
-+ 1.46692185492392439651e-04,
-+ 1.44647696917026745639e-04,
-+ 1.42523255357962074646e-04,
-+ 1.40320180515933701443e-04,
-+ 1.38039835309150310440e-04,
-+ 1.35683625036847225554e-04,
-+ 1.33252996519696450227e-04,
-+ 1.30749437217595669385e-04,
-+ 1.28174474325369749201e-04,
-+ 1.25529673846935238340e-04,
-+ 1.22816639648479919303e-04,
-+ 1.20037012491233243219e-04,
-+ 1.17192469044403129027e-04,
-+ 1.14284720878873418933e-04,
-+ 1.11315513442261188005e-04,
-+ 1.08286625015946468605e-04,
-+ 1.05199865654693577497e-04,
-+ 1.02057076109495512093e-04,
-+ 9.88601267342783304043e-05,
-+ 9.56109163771139760083e-05,
-+ 9.23113712565947120868e-05,
-+ 8.89634438240340108539e-05,
-+ 8.55691116121616991534e-05,
-+ 8.21303760709912982884e-05,
-+ 7.86492613915423208508e-05,
-+ 7.51278133181146123365e-05,
-+ 7.15680979497604612561e-05,
-+ 6.79722005317787153359e-05,
-+ 6.43422242377698607113e-05,
-+ 6.06802889430856936094e-05,
-+ 5.69885299903377532185e-05,
-+ 5.32690969476886882583e-05,
-+ 4.95241523606481209006e-05,
-+ 4.57558704980855863662e-05,
-+ 4.19664360932403064002e-05,
-+ 3.81580430803206248217e-05,
-+ 3.43328933276007924294e-05,
-+ 3.04931953676192458200e-05,
-+ 2.66411631252087834044e-05,
-+ 2.27790146442161646153e-05,
-+ 1.89089708134602095535e-05,
-+ 1.50332540927946444229e-05,
-+ 1.11540872399499682495e-05,
-+ 7.27369203889113503421e-06,
-+ 3.39428803041684083773e-06,
-+-4.81908754276311450070e-07,
-+-4.35268705634372629675e-06,
-+-8.21584164763919663841e-06,
-+-1.20691745839433958802e-05,
-+-1.59104964523640528653e-05,
-+-1.97376276122016780436e-05,
-+-2.35483994285795049709e-05,
-+-2.73406554981410021381e-05,
-+-3.11122528661240456025e-05,
-+-3.48610632341272955897e-05,
-+-3.85849741578888450833e-05,
-+-4.22818902344056668941e-05,
-+-4.59497342777289552842e-05,
-+-4.95864484827761740015e-05,
-+-5.31899955765110986849e-05,
-+-5.67583599558492673393e-05,
-+-6.02895488116546415976e-05,
-+-6.37815932381954160072e-05,
-+-6.72325493274930760176e-05,
-+-7.06404992478322041284e-05,
-+-7.40035523060039669620e-05,
-+-7.73198459925695190907e-05,
-+-8.05875470096189763401e-05,
-+-8.38048522804609266092e-05,
-+-8.69699899406400548209e-05,
-+-9.00812203098600702616e-05,
-+-9.31368368441220313616e-05,
-+-9.61351670676795016460e-05,
-+-9.90745734842556015267e-05,
-+-1.01953454467028386448e-04,
-+-1.04770245126946709891e-04,
-+-1.07523418158803123158e-04,
-+-1.10211484664747875421e-04,
-+-1.12832994954700652560e-04,
-+-1.15386539323270961746e-04,
-+-1.17870748802769852344e-04,
-+-1.20284295891912211356e-04,
-+-1.22625895259826191760e-04,
-+-1.24894304424997594233e-04,
-+-1.27088324408796619729e-04,
-+-1.29206800363245279464e-04,
-+-1.31248622172700554062e-04,
-+-1.33212725029144128013e-04,
-+-1.35098089980784487676e-04,
-+-1.36903744453693149413e-04,
-+-1.38628762746211502523e-04,
-+-1.40272266495882424152e-04,
-+-1.41833425118677113443e-04,
-+-1.43311456220300168993e-04,
-+-1.44705625979375639015e-04,
-+-1.46015249502334635862e-04,
-+-1.47239691149835216733e-04,
-+-1.48378364834568840904e-04,
-+-1.49430734290319368980e-04,
-+-1.50396313312156941142e-04,
-+-1.51274665967682871333e-04,
-+-1.52065406779206268055e-04,
-+-1.52768200876835928996e-04,
-+-1.53382764122401261215e-04,
-+-1.53908863204188484618e-04,
-+-1.54346315702462519998e-04,
-+-1.54694990125800718034e-04,
-+-1.54954805918226855375e-04,
-+-1.55125733437199472397e-04,
-+-1.55207793902502094903e-04,
-+-1.55201059316101394776e-04,
-+-1.55105652353058453673e-04,
-+-1.54921746223595071862e-04,
-+-1.54649564506431944988e-04,
-+-1.54289380953534071422e-04,
-+-1.53841519266410082720e-04,
-+-1.53306352844135500117e-04,
-+-1.52684304503277075687e-04,
-+-1.51975846169923051046e-04,
-+-1.51181498544025521777e-04,
-+-1.50301830736287767064e-04,
-+-1.49337459877842251886e-04,
-+-1.48289050702975444508e-04,
-+-1.47157315105178143448e-04,
-+-1.45943011666808031192e-04,
-+-1.44646945162670226758e-04,
-+-1.43269966037836245969e-04,
-+-1.41812969860030777154e-04,
-+-1.40276896746939125880e-04,
-+-1.38662730768791489120e-04,
-+-1.36971499326602120161e-04,
-+-1.35204272506452450198e-04,
-+-1.33362162410215011723e-04,
-+-1.31446322463141056745e-04,
-+-1.29457946698729233501e-04,
-+-1.27398269021328599442e-04,
-+-1.25268562446894228622e-04,
-+-1.23070138322430765393e-04,
-+-1.20804345524507650679e-04,
-+-1.18472569637393813956e-04,
-+-1.16076232111318126267e-04,
-+-1.13616789401283968986e-04,
-+-1.11095732087066782702e-04,
-+-1.08514583974842290402e-04,
-+-1.05874901181016539101e-04,
-+-1.03178271198800118515e-04,
-+-1.00426311948084758256e-04,
-+-9.76206708091875252457e-05,
-+-9.47630236410444991074e-05,
-+-9.18550737843973141112e-05,
-+-8.88985510506610496001e-05,
-+-8.58952106969416680562e-05,
-+-8.28468323879038561972e-05,
-+-7.97552191450655496591e-05,
-+-7.66221962841397250411e-05,
-+-7.34496103410512394703e-05,
-+-7.02393279872563352237e-05,
-+-6.69932349350013444994e-05,
-+-6.37132348331598941495e-05,
-+-6.04012481542852742197e-05,
-+-5.70592110735821189476e-05,
-+-5.36890743402856300114e-05,
-+-5.02928021423770289528e-05,
-+-4.68723709650220007926e-05,
-+-4.34297684435565900540e-05,
-+-3.99669922116305890969e-05,
-+-3.64860487451815660126e-05,
-+-3.29889522029066755543e-05,
-+-2.94777232639011821304e-05,
-+-2.59543879631318446101e-05,
-+-2.24209765254152845900e-05,
-+-1.88795221985704670439e-05,
-+-1.53320600864227232015e-05,
-+-1.17806259822765688943e-05,
-+-8.22725520364250435790e-06,
-+-4.67398142876525914271e-06,
-+-1.12283553561652046528e-06,
-+ 2.42415555586849744280e-06,
-+ 5.96497003777039182297e-06,
-+ 9.49759236367494958416e-06,
-+ 1.30200143930290886731e-05,
-+ 1.65302365297154976124e-05,
-+ 2.00262688542018995176e-05,
-+ 2.35061322486258601641e-05,
-+ 2.69678595141725338990e-05,
-+ 3.04094964801652475677e-05,
-+ 3.38291031041225136330e-05,
-+ 3.72247545623280811614e-05,
-+ 4.05945423301795488562e-05,
-+ 4.39365752517605946421e-05,
-+ 4.72489805980300616090e-05,
-+ 5.05299051130391751476e-05,
-+ 5.37775160475925401854e-05,
-+ 5.69900021797799109010e-05,
-+ 6.01655748218186950589e-05,
-+ 6.33024688126045798455e-05,
-+ 6.63989434955355209119e-05,
-+ 6.94532836809095877094e-05,
-+ 7.24638005925247566689e-05,
-+ 7.54288327978053365708e-05,
-+ 7.83467471210983574734e-05,
-+ 8.12159395395303644084e-05,
-+ 8.40348360609798490086e-05,
-+ 8.68018935836787020261e-05,
-+ 8.95156007369763171777e-05,
-+ 9.21744787028109000904e-05,
-+ 9.47770820174428766953e-05,
-+ 9.73219993530192951838e-05,
-+ 9.98078542785484291089e-05,
-+ 1.02233305999877626346e-04,
-+ 1.04597050078279252879e-04,
-+ 1.06897819127260571481e-04,
-+ 1.09134383487232477302e-04,
-+ 1.11305551877675454743e-04,
-+ 1.13410172026465080842e-04,
-+ 1.15447131276023696555e-04,
-+ 1.17415357165986388734e-04,
-+ 1.19313817992076323833e-04,
-+ 1.21141523340904152650e-04,
-+ 1.22897524600417128735e-04,
-+ 1.24580915445738179192e-04,
-+ 1.26190832300148298968e-04,
-+ 1.27726454771003749460e-04,
-+ 1.29187006060312931576e-04,
-+ 1.30571753349855405749e-04,
-+ 1.31880008160592337128e-04,
-+ 1.33111126686225034448e-04,
-+ 1.34264510100741093525e-04,
-+ 1.35339604839805301758e-04,
-+ 1.36335902855876962966e-04,
-+ 1.37252941846921911991e-04,
-+ 1.38090305458667854995e-04,
-+ 1.38847623460269244903e-04,
-+ 1.39524571893355508502e-04,
-+ 1.40120873194398874121e-04,
-+ 1.40636296290376592178e-04,
-+ 1.41070656667688923902e-04,
-+ 1.41423816414358241448e-04,
-+ 1.41695684235501812628e-04,
-+ 1.41886215442108465281e-04,
-+ 1.41995411913169058797e-04,
-+ 1.42023322031210527672e-04,
-+ 1.41970040591311803596e-04,
-+ 1.41835708683687403576e-04,
-+ 1.41620513549942957229e-04,
-+ 1.41324688413120390503e-04,
-+ 1.40948512281664279549e-04,
-+ 1.40492309727460512516e-04,
-+ 1.39956450638105661232e-04,
-+ 1.39341349943586742142e-04,
-+ 1.38647467317560966387e-04,
-+ 1.37875306853443076616e-04,
-+ 1.37025416715516460461e-04,
-+ 1.36098388765306077238e-04,
-+ 1.35094858163456845238e-04,
-+ 1.34015502947381628333e-04,
-+ 1.32861043584951986655e-04,
-+ 1.31632242504520034906e-04,
-+ 1.30329903601576123319e-04,
-+ 1.28954871722338328469e-04,
-+ 1.27508032124644551074e-04,
-+ 1.25990309916430414392e-04,
-+ 1.24402669472184333093e-04,
-+ 1.22746113827731657530e-04,
-+ 1.21021684053717931608e-04,
-+ 1.19230458608205958028e-04,
-+ 1.17373552668725822899e-04,
-+ 1.15452117444264388342e-04,
-+ 1.13467339467561269067e-04,
-+ 1.11420439868162524316e-04,
-+ 1.09312673626677319912e-04,
-+ 1.07145328810660439892e-04,
-+ 1.04919725792656324940e-04,
-+ 1.02637216450778944853e-04,
-+ 1.00299183352382616555e-04,
-+ 9.79070389212828459625e-05,
-+ 9.54622245890343021661e-05,
-+ 9.29662099307709859563e-05,
-+ 9.04204917861251337118e-05,
-+ 8.78265933657491361646e-05,
-+ 8.51860633439697795440e-05,
-+ 8.25004749381152567740e-05,
-+ 7.97714249750583101993e-05,
-+ 7.70005329455285302594e-05,
-+ 7.41894400467507647698e-05,
-+ 7.13398082139749418204e-05,
-+ 6.84533191414649809991e-05,
-+ 6.55316732935233309948e-05,
-+ 6.25765889061299349127e-05,
-+ 5.95898009797798930746e-05,
-+ 5.65730602641084840982e-05,
-+ 5.35281322348962640303e-05,
-+ 5.04567960640498228923e-05,
-+ 4.73608435831570034977e-05,
-+ 4.42420782412198123029e-05,
-+ 4.11023140571756856096e-05,
-+ 3.79433745677702796120e-05,
-+ 3.47670917715006306549e-05,
-+ 3.15753050690913554294e-05,
-+ 2.83698602012252819608e-05,
-+ 2.51526081840889388815e-05,
-+ 2.19254042433976171740e-05,
-+ 1.86901067473987712679e-05,
-+ 1.54485761396172072233e-05,
-+ 1.22026738718400676369e-05,
-+ 8.95426133799693216720e-06,
-+ 5.70519880953679468414e-06,
-+ 2.45734437291689684403e-06,
-+-7.87447130237725029692e-07,
-+-4.02732515958524032887e-06,
-+-7.26044452868275316679e-06,
-+-1.04849664530539972413e-05,
-+-1.36990595931614081774e-05,
-+-1.69009010916851591059e-05,
-+-2.00886776045228981175e-05,
-+-2.32605863249292218813e-05,
-+-2.64148360002174825494e-05,
-+-2.95496479404527710906e-05,
-+-3.26632570185692985083e-05,
-+-3.57539126613519710695e-05,
-+-3.88198798307268989525e-05,
-+-4.18594399948131874701e-05,
-+-4.48708920881937505377e-05,
-+-4.78525534608703297839e-05,
-+-5.08027608153759224091e-05,
-+-5.37198711315230623370e-05,
-+-5.66022625782771395811e-05,
-+-5.94483354122496957970e-05,
-+-6.22565128623159649065e-05,
-+-6.50252419998696961625e-05,
-+-6.77529945942363268996e-05,
-+-7.04382679527763058127e-05,
-+-7.30795857452109842494e-05,
-+-7.56754988117607863083e-05,
-+-7.82245859545587472750e-05,
-+-8.07254547120429588646e-05,
-+-8.31767421157772956445e-05,
-+-8.55771154294189502010e-05,
-+-8.79252728693081722763e-05,
-+-9.02199443063830727177e-05,
-+-9.24598919490082272500e-05,
-+-9.46439110063570436353e-05,
-+-9.67708303319964480843e-05,
-+-9.88395130473318793462e-05,
-+-1.00848857144579225412e-04,
-+-1.02797796068976429913e-04,
-+-1.04685299279854606281e-04,
-+-1.06510372790377650341e-04,
-+-1.08272059685596318680e-04,
-+-1.09969440618577611341e-04,
-+-1.11601634284353844629e-04,
-+-1.13167797871448837341e-04,
-+-1.14667127490753893888e-04,
-+-1.16098858581540945157e-04,
-+-1.17462266294409572748e-04,
-+-1.18756665850985608014e-04,
-+-1.19981412880174577386e-04,
-+-1.21135903730876983027e-04,
-+-1.22219575760907419324e-04,
-+-1.23231907602096356184e-04,
-+-1.24172419401388892416e-04,
-+-1.25040673037858960726e-04,
-+-1.25836272315542666532e-04,
-+-1.26558863132016492748e-04,
-+-1.27208133622654898272e-04,
-+-1.27783814280521123164e-04,
-+-1.28285678051853307665e-04,
-+-1.28713540407127574909e-04,
-+-1.29067259387689078475e-04,
-+-1.29346735627960067851e-04,
-+-1.29551912353247712954e-04,
-+-1.29682775353174970954e-04,
-+-1.29739352930806405104e-04,
-+-1.29721715827507011074e-04,
-+-1.29629977123626777182e-04,
-+-1.29464292115094922872e-04,
-+-1.29224858166029714888e-04,
-+-1.28911914537480141833e-04,
-+-1.28525742192432532911e-04,
-+-1.28066663577224341096e-04,
-+-1.27535042379524224485e-04,
-+-1.26931283263051979506e-04,
-+-1.26255831579210470172e-04,
-+-1.25509173055851516688e-04,
-+-1.24691833463355639632e-04,
-+-1.23804378258269496800e-04,
-+-1.22847412204727150179e-04,
-+-1.21821578973907172273e-04,
-+-1.20727560721779606824e-04,
-+-1.19566077645420637825e-04,
-+-1.18337887518172143108e-04,
-+-1.17043785203959168793e-04,
-+-1.15684602151032309364e-04,
-+-1.14261205865508758540e-04,
-+-1.12774499364983135674e-04,
-+-1.11225420612612888125e-04,
-+-1.09614941931962398339e-04,
-+-1.07944069403014051949e-04,
-+-1.06213842239701207601e-04,
-+-1.04425332149347485926e-04,
-+-1.02579642674402744655e-04,
-+-1.00677908516879591628e-04,
-+-9.87212948458993696643e-05,
-+-9.67109965887680804323e-05,
-+-9.46482377060114694195e-05,
-+-9.25342704508053923206e-05,
-+-9.03703746132478017740e-05,
-+-8.81578567499270010759e-05,
-+-8.58980493992450127834e-05,
-+-8.35923102829684219880e-05,
-+-8.12420214944795825900e-05,
-+-7.88485886742140853296e-05,
-+-7.64134401727725140778e-05,
-+-7.39380262022039087908e-05,
-+-7.14238179759623244237e-05,
-+-6.88723068380450985934e-05,
-+-6.62850033818259808810e-05,
-+-6.36634365591029851607e-05,
-+-6.10091527798890391780e-05,
-+-5.83237150034378014633e-05,
-+-5.56087018211295729380e-05,
-+-5.28657065316302825957e-05,
-+-5.00963362089557252181e-05,
-+-4.73022107639477868909e-05,
-+-4.44849619997154997839e-05,
-+-4.16462326615831018211e-05,
-+-3.87876754821360727392e-05,
-+-3.59109522218197118487e-05,
-+-3.30177327057781363410e-05,
-+-3.01096938573906879706e-05,
-+-2.71885187291101264469e-05,
-+-2.42558955311136346803e-05,
-+-2.13135166584285751863e-05,
-+-1.83630777169545625609e-05,
-+-1.54062765490442216251e-05,
-+-1.24448122591593738538e-05,
-+-9.48038424016769929749e-06,
-+-6.51469120083589183379e-06,
-+-3.54943019507466532529e-06,
-+-5.86295653488527638405e-07,
-+ 2.37302158221821148760e-06,
-+ 5.32683522143069861928e-06,
-+ 8.27346448286191381023e-06,
-+ 1.12112350482972268184e-05,
-+ 1.41384800113054187414e-05,
-+ 1.70535408203802065375e-05,
-+ 1.99547682159801403000e-05,
-+ 2.28405231609389523773e-05,
-+ 2.57091777637233010942e-05,
-+ 2.85591161940189065772e-05,
-+ 3.13887355901324983888e-05,
-+ 3.41964469577007317870e-05,
-+ 3.69806760592044563105e-05,
-+ 3.97398642937916670619e-05,
-+ 4.24724695669193537460e-05,
-+ 4.51769671493239000906e-05,
-+ 4.78518505248824157702e-05,
-+ 5.04956322267979359933e-05,
-+ 5.31068446617757945380e-05,
-+ 5.56840409216389250861e-05,
-+ 5.82257955819805972353e-05,
-+ 6.07307054873712566403e-05,
-+ 6.31973905227825399032e-05,
-+ 6.56244943706810369847e-05,
-+ 6.80106852534736013504e-05,
-+ 7.03546566608603151554e-05,
-+ 7.26551280617074665301e-05,
-+ 7.49108456000490471188e-05,
-+ 7.71205827748727728481e-05,
-+ 7.92831411032435707121e-05,
-+ 8.13973507665162628304e-05,
-+ 8.34620712392105025155e-05,
-+ 8.54761919002437216665e-05,
-+ 8.74386326261934136023e-05,
-+ 8.93483443662723540333e-05,
-+ 9.12043096987145523709e-05,
-+ 9.30055433682796324664e-05,
-+ 9.47510928045935062712e-05,
-+ 9.64400386210567564342e-05,
-+ 9.80714950940618610149e-05,
-+ 9.96446106222721028753e-05,
-+ 1.01158568165728382656e-04,
-+ 1.02612585664560169562e-04,
-+ 1.04005916437090132763e-04,
-+ 1.05337849557132784027e-04,
-+ 1.06607710210300974068e-04,
-+ 1.07814860029146553436e-04,
-+ 1.08958697406971076818e-04,
-+ 1.10038657790159221262e-04,
-+ 1.11054213948895991334e-04,
-+ 1.12004876226144938888e-04,
-+ 1.12890192764771252285e-04,
-+ 1.13709749712725811358e-04,
-+ 1.14463171406168479332e-04,
-+ 1.15150120530503418228e-04,
-+ 1.15770298259229445850e-04,
-+ 1.16323444370574466855e-04,
-+ 1.16809337341866760875e-04,
-+ 1.17227794421640891544e-04,
-+ 1.17578671679441387104e-04,
-+ 1.17861864033347977262e-04,
-+ 1.18077305255228525620e-04,
-+ 1.18224967953752292129e-04,
-+ 1.18304863535199995448e-04,
-+ 1.18317042142129913288e-04,
-+ 1.18261592569961779611e-04,
-+ 1.18138642161559509242e-04,
-+ 1.17948356679904758004e-04,
-+ 1.17690940158963789036e-04,
-+ 1.17366634732863803995e-04,
-+ 1.16975720443508680781e-04,
-+ 1.16518515026772340008e-04,
-+ 1.15995373677425865329e-04,
-+ 1.15406688792958039944e-04,
-+ 1.14752889696471350382e-04,
-+ 1.14034442338837080757e-04,
-+ 1.13251848980312161972e-04,
-+ 1.12405647851827392831e-04,
-+ 1.11496412796171015655e-04,
-+ 1.10524752889300383963e-04,
-+ 1.09491312042027578609e-04,
-+ 1.08396768582333136470e-04,
-+ 1.07241834818576963558e-04,
-+ 1.06027256583881440439e-04,
-+ 1.04753812761974128402e-04,
-+ 1.03422314794789343279e-04,
-+ 1.02033606172135439690e-04,
-+ 1.00588561903744460506e-04,
-+ 9.90880879740364323887e-05,
-+ 9.75331207799133901139e-05,
-+ 9.59246265519796495209e-05,
-+ 9.42636007594733522788e-05,
-+ 9.25510674993434647893e-05,
-+ 9.07880788697715116788e-05,
-+ 8.89757143285934223474e-05,
-+ 8.71150800369563193095e-05,
-+ 8.52073081886286283915e-05,
-+ 8.32535563253643403313e-05,
-+ 8.12550066387327429764e-05,
-+ 7.92128652588326546708e-05,
-+ 7.71283615303221291911e-05,
-+ 7.50027472761658441352e-05,
-+ 7.28372960496142743273e-05,
-+ 7.06333023747593316630e-05,
-+ 6.83920809761930819422e-05,
-+ 6.61149659981945323883e-05,
-+ 6.38033102139136647918e-05,
-+ 6.14584842250172271472e-05,
-+ 5.90818756522692805321e-05,
-+ 5.66748883175234417645e-05,
-+ 5.42389414176053005876e-05,
-+ 5.17754686905652722838e-05,
-+ 4.92859175748246270223e-05,
-+ 4.67717483616246192265e-05,
-+ 4.42344333413538523341e-05,
-+ 4.16754559442534589821e-05,
-+ 3.90963098759170062319e-05,
-+ 3.64984982481686095644e-05,
-+ 3.38835327057898264913e-05,
-+ 3.12529325496060770987e-05,
-+ 2.86082238564397440281e-05,
-+ 2.59509385964386121227e-05,
-+ 2.32826137482886975970e-05,
-+ 2.06047904128203539622e-05,
-+ 1.79190129255183850797e-05,
-+ 1.52268279684512867372e-05,
-+ 1.25297836820848089342e-05,
-+ 9.82942877762201860177e-06,
-+ 7.12731165015420239825e-06,
-+ 4.42497949335259697511e-06,
-+ 1.72397741607120027234e-06,
-+-9.74152438591300545820e-07,
-+-3.66787177127622279055e-06,
-+-6.35564700089772787053e-06,
-+-9.03595013522811150888e-06,
-+-1.17072596370426850940e-05,
-+-1.43680612853348429033e-05,
-+-1.70168490311088741731e-05,
-+-1.96521258473063757481e-05,
-+-2.22724045722929874815e-05,
-+-2.48762087465587318491e-05,
-+-2.74620734420669071810e-05,
-+-3.00285460838262985587e-05,
-+-3.25741872632199556503e-05,
-+-3.50975715426378017596e-05,
-+-3.75972882509638620259e-05,
-+-4.00719422694826037015e-05,
-+-4.25201548077314798470e-05,
-+-4.49405641689601653135e-05,
-+-4.73318265046533437649e-05,
-+-4.96926165577844057412e-05,
-+-5.20216283943892467806e-05,
-+-5.43175761229789356922e-05,
-+-5.65791946015099025133e-05,
-+-5.88052401314395777510e-05,
-+-6.09944911385232351646e-05,
-+-6.31457488399748983641e-05,
-+-6.52578378976302012505e-05,
-+-6.73296070567570273304e-05,
-+-6.93599297701697614779e-05,
-+-7.13477048073084426077e-05,
-+-7.32918568479592438987e-05,
-+-7.51913370602950043584e-05,
-+-7.70451236629288198831e-05,
-+-7.88522224706823078241e-05,
-+-8.06116674237784532151e-05,
-+-8.23225211001796784195e-05,
-+-8.39838752108034195757e-05,
-+-8.55948510773545134279e-05,
-+-8.71546000925265052688e-05,
-+-8.86623041623341395616e-05,
-+-9.01171761303480768493e-05,
-+-9.15184601836167176863e-05,
-+-9.28654322400672107207e-05,
-+-9.41574003171887131567e-05,
-+-9.53937048818311668537e-05,
-+-9.65737191809003779359e-05,
-+-9.76968495528504664652e-05,
-+-9.87625357197741252134e-05,
-+-9.97702510599723062104e-05,
-+-1.00719502860870411881e-04,
-+-1.01609832552167786510e-04,
-+-1.02440815919101530407e-04,
-+-1.03212063295764626164e-04,
-+-1.03923219738351186561e-04,
-+-1.04573965178293452004e-04,
-+-1.05164014555214358751e-04,
-+-1.05693117929663829482e-04,
-+-1.06161060575574886056e-04,
-+-1.06567663052451822372e-04,
-+-1.06912781257252219227e-04,
-+-1.07196306455972030416e-04,
-+-1.07418165294943403058e-04,
-+-1.07578319791868081681e-04,
-+-1.07676767306620711079e-04,
-+-1.07713540491867520218e-04,
-+-1.07688707223558459772e-04,
-+-1.07602370511359431062e-04,
-+-1.07454668389108225495e-04,
-+-1.07245773785382550523e-04,
-+-1.06975894374283873184e-04,
-+-1.06645272406552399651e-04,
-+-1.06254184521135326192e-04,
-+-1.05802941537346746376e-04,
-+-1.05291888227765690245e-04,
-+-1.04721403072029775822e-04,
-+-1.04091897991691806000e-04,
-+-1.03403818066321226388e-04,
-+-1.02657641231036926891e-04,
-+-1.01853877955673766901e-04,
-+-1.00993070905791316192e-04,
-+-1.00075794585747357554e-04,
-+-9.91026549640561086902e-05,
-+-9.80742890812979042133e-05,
-+-9.69913646407931124161e-05,
-+-9.58545795823286168359e-05,
-+-9.46646616391909589408e-05,
-+-9.34223678787874924024e-05,
-+-9.21284842271553308570e-05,
-+-9.07838249776128224534e-05,
-+-8.93892322839143330148e-05,
-+-8.79455756381782092872e-05,
-+-8.64537513339248380991e-05,
-+-8.49146819145573397919e-05,
-+-8.33293156075965769404e-05,
-+-8.16986257450709826454e-05,
-+-8.00236101703410545325e-05,
-+-7.83052906317712431187e-05,
-+-7.65447121635933332108e-05,
-+-7.47429424543394473968e-05,
-+-7.29010712032219468804e-05,
-+-7.10202094648487806125e-05,
-+-6.91014889826641889262e-05,
-+-6.71460615115136803116e-05,
-+-6.51550981297363063834e-05,
-+-6.31297885411947681941e-05,
-+-6.10713403676550390092e-05,
-+-5.89809784319366008933e-05,
-+-5.68599440322564117804e-05,
-+-5.47094942081945308492e-05,
-+-5.25309009987145816302e-05,
-+-5.03254506926742041614e-05,
-+-4.80944430722666716100e-05,
-+-4.58391906498364391982e-05,
-+-4.35610178985148694948e-05,
-+-4.12612604771267081670e-05,
-+-3.89412644498179452723e-05,
-+-3.66023855008608539076e-05,
-+-3.42459881450970870078e-05,
-+-3.18734449344449372976e-05,
-+-2.94861356610133087193e-05,
-+-2.70854465571730438690e-05,
-+-2.46727694931252419688e-05,
-+-2.22495011724306296223e-05,
-+-1.98170423258837072170e-05,
-+-1.73767969043094321503e-05,
-+-1.49301712706606661907e-05,
-+-1.24785733919144050828e-05,
-+-1.00234120312237155384e-05,
-+-7.56609594078786384176e-06,
-+-5.10803305590721484829e-06,
-+-2.65062969064796876903e-06,
-+-1.95289735662093879841e-07,
-+ 2.25658614149781538763e-06,
-+ 4.70360129302714707189e-06,
-+ 7.14436388406460956736e-06,
-+ 9.57748768197934699769e-06,
-+ 1.20015928413035928855e-05,
-+ 1.44153066838678001481e-05,
-+ 1.68172644736985684973e-05,
-+ 1.92061101862432256275e-05,
-+ 2.15804972714890652230e-05,
-+ 2.39390894105489946330e-05,
-+ 2.62805612652901807722e-05,
-+ 2.86035992205861757688e-05,
-+ 3.09069021187789754650e-05,
-+ 3.31891819859409621185e-05,
-+ 3.54491647495335673412e-05,
-+ 3.76855909470640991661e-05,
-+ 3.98972164253476286417e-05,
-+ 4.20828130299881090571e-05,
-+ 4.42411692846974037292e-05,
-+ 4.63710910600786401664e-05,
-+ 4.84714022315057565344e-05,
-+ 5.05409453257393869504e-05,
-+ 5.25785821559190830470e-05,
-+ 5.45831944446160030582e-05,
-+ 5.65536844345369244078e-05,
-+ 5.84889754866179482624e-05,
-+ 6.03880126651817544857e-05,
-+ 6.22497633097759614507e-05,
-+ 6.40732175934516200036e-05,
-+ 6.58573890671531589130e-05,
-+ 6.76013151899331594073e-05,
-+ 6.93040578447094631495e-05,
-+ 7.09647038392890094557e-05,
-+ 7.25823653923957063478e-05,
-+ 7.41561806044386303671e-05,
-+ 7.56853139127996218504e-05,
-+ 7.71689565313425266486e-05,
-+ 7.86063268739927838722e-05,
-+ 7.99966709621114031078e-05,
-+ 8.13392628154750729503e-05,
-+ 8.26334048266602784602e-05,
-+ 8.38784281186408519097e-05,
-+ 8.50736928854174478216e-05,
-+ 8.62185887155113381969e-05,
-+ 8.73125348981630282396e-05,
-+ 8.83549807120687932067e-05,
-+ 8.93454056965571380595e-05,
-+ 9.02833199050315720431e-05,
-+ 9.11682641405671851135e-05,
-+ 9.19998101735852404819e-05,
-+ 9.27775609414710033911e-05,
-+ 9.35011507300643465376e-05,
-+ 9.41702453369411529019e-05,
-+ 9.47845422164207620109e-05,
-+ 9.53437706062401266714e-05,
-+ 9.58476916358535753569e-05,
-+ 9.62960984163175226676e-05,
-+ 9.66888161117409645909e-05,
-+ 9.70257019922829883106e-05,
-+ 9.73066454687029886274e-05,
-+ 9.75315681084497403076e-05,
-+ 9.77004236333403651774e-05,
-+ 9.78131978988259413559e-05,
-+ 9.78699088548996316969e-05,
-+ 9.78706064886931931908e-05,
-+ 9.78153727488194655671e-05,
-+ 9.77043214515344428731e-05,
-+ 9.75375981687954049385e-05,
-+ 9.73153800983090819503e-05,
-+ 9.70378759156690566361e-05,
-+ 9.67053256086932366224e-05,
-+ 9.63180002940841964183e-05,
-+ 9.58762020165379531865e-05,
-+ 9.53802635304530459226e-05,
-+ 9.48305480643773406665e-05,
-+ 9.42274490683603826915e-05,
-+ 9.35713899443812172551e-05,
-+ 9.28628237600275093996e-05,
-+ 9.21022329456168908045e-05,
-+ 9.12901289749561102105e-05,
-+ 9.04270520299548278501e-05,
-+ 8.95135706492842500494e-05,
-+ 8.85502813613394572714e-05,
-+ 8.75378083017155033231e-05,
-+ 8.64768028154355933648e-05,
-+ 8.53679430442136669664e-05,
-+ 8.42119334989644183860e-05,
-+ 8.30095046178623384566e-05,
-+ 8.17614123102081163550e-05,
-+ 8.04684374863896741690e-05,
-+ 7.91313855742244295563e-05,
-+ 7.77510860219827716839e-05,
-+ 7.63283917883946329882e-05,
-+ 7.48641788199511630389e-05,
-+ 7.33593455158201108654e-05,
-+ 7.18148121806984416748e-05,
-+ 7.02315204659344010599e-05,
-+ 6.86104327992547092423e-05,
-+ 6.69525318034425696596e-05,
-+ 6.52588197043136263292e-05,
-+ 6.35303177283451494866e-05,
-+ 6.17680654903193261922e-05,
-+ 5.99731203713451578997e-05,
-+ 5.81465568876299857470e-05,
-+ 5.62894660503753302872e-05,
-+ 5.44029547171763266846e-05,
-+ 5.24881449353098910931e-05,
-+ 5.05461732772982176055e-05,
-+ 4.85781901691450268576e-05,
-+ 4.65853592116120024023e-05,
-+ 4.45688564950032751967e-05,
-+ 4.25298699077687427554e-05,
-+ 4.04695984393985014349e-05,
-+ 3.83892514779906950887e-05,
-+ 3.62900481029001826128e-05,
-+ 3.41732163729119983926e-05,
-+ 3.20399926102781816627e-05,
-+ 2.98916206811338720545e-05,
-+ 2.77293512726352792174e-05,
-+ 2.55544411672685861127e-05,
-+ 2.33681525147488944956e-05,
-+ 2.11717521018997930282e-05,
-+ 1.89665106210108342917e-05,
-+ 1.67537019369919437987e-05,
-+ 1.45346023538229485151e-05,
-+ 1.23104898806885715561e-05,
-+ 1.00826434982246897416e-05,
-+ 7.85234242529587054475e-06,
-+ 5.62086538672328424332e-06,
-+ 3.38948988238076994443e-06,
-+ 1.15949145807567223944e-06,
-+-1.06785702137072707871e-06,
-+-3.29128609643022805093e-06,
-+-5.50953043415126442282e-06,
-+-7.72132954601048490098e-06,
-+-9.92542850192639466761e-06,
-+-1.21205786400318798465e-05,
-+-1.43055382718054505098e-05,
-+-1.64790733821644087950e-05,
-+-1.86399583241264707630e-05,
-+-2.07869765076501085866e-05,
-+-2.29189210822677048591e-05,
-+-2.50345956131302830444e-05,
-+-2.71328147500858357817e-05,
-+-2.92124048894140672726e-05,
-+-3.12722048278788822620e-05,
-+-3.33110664086613662642e-05,
-+-3.53278551589146714283e-05,
-+-3.73214509185134290983e-05,
-+-3.92907484596808479252e-05,
-+-4.12346580971520483842e-05,
-+-4.31521062885095992652e-05,
-+-4.50420362244331414815e-05,
-+-4.69034084084459727392e-05,
-+-4.87352012259119438489e-05,
-+-5.05364115019466182167e-05,
-+-5.23060550479419978189e-05,
-+-5.40431671964060976313e-05,
-+-5.57468033238534737064e-05,
-+-5.74160393614016982132e-05,
-+-5.90499722928839986262e-05,
-+-6.06477206401485110371e-05,
-+-6.22084249353098108415e-05,
-+-6.37312481796986922324e-05,
-+-6.52153762892660273948e-05,
-+-6.66600185262068023343e-05,
-+-6.80644079165767824100e-05,
-+-6.94278016536845402323e-05,
-+-7.07494814870478466295e-05,
-+-7.20287540967148501693e-05,
-+-7.32649514527553767347e-05,
-+-7.44574311597405420022e-05,
-+-7.56055767860350496235e-05,
-+-7.67087981777354925789e-05,
-+-7.77665317570998471846e-05,
-+-7.87782408053171710489e-05,
-+-7.97434157294830232507e-05,
-+-8.06615743136474125027e-05,
-+-8.15322619538178135472e-05,
-+-8.23550518768057822480e-05,
-+-8.31295453428154712148e-05,
-+-8.38553718316820378541e-05,
-+-8.45321892126865308053e-05,
-+-8.51596838978487685485e-05,
-+-8.57375709786715794677e-05,
-+-8.62655943462551288645e-05,
-+-8.67435267947428979536e-05,
-+-8.71711701080811815620e-05,
-+-8.75483551300409708427e-05,
-+-8.78749418175082112241e-05,
-+-8.81508192770273922871e-05,
-+-8.83759057846058285928e-05,
-+-8.85501487887902459777e-05,
-+-8.86735248970403253620e-05,
-+-8.87460398454319876341e-05,
-+-8.87677284517321478442e-05,
-+-8.87386545518955844984e-05,
-+-8.86589109200488812183e-05,
-+-8.85286191720270214433e-05,
-+-8.83479296525471903935e-05,
-+-8.81170213061050432417e-05,
-+-8.78361015316937552991e-05,
-+-8.75054060214538136477e-05,
-+-8.71251985833677709175e-05,
-+-8.66957709481281274576e-05,
-+-8.62174425603089747113e-05,
-+-8.56905603539940554595e-05,
-+-8.51154985129900034952e-05,
-+-8.44926582158212472655e-05,
-+-8.38224673656400427703e-05,
-+-8.31053803052506274724e-05,
-+-8.23418775174244912257e-05,
-+-8.15324653107033707304e-05,
-+-8.06776754908900028181e-05,
-+-7.97780650184373106007e-05,
-+-7.88342156519530526523e-05,
-+-7.78467335780445683635e-05,
-+-7.68162490277368720107e-05,
-+-7.57434158797055202611e-05,
-+-7.46289112505573565791e-05,
-+-7.34734350724463647960e-05,
-+-7.22777096582538457334e-05,
-+-7.10424792545960120905e-05,
-+-6.97685095829731762810e-05,
-+-6.84565873693016984378e-05,
-+-6.71075198621341007877e-05,
-+-6.57221343398554209113e-05,
-+-6.43012776071557890780e-05,
-+-6.28458154810835923102e-05,
-+-6.13566322669881414808e-05,
-+-5.98346302246723383829e-05,
-+-5.82807290250536745514e-05,
-+-5.66958651977116231350e-05,
-+-5.50809915695821473340e-05,
-+-5.34370766951852471703e-05,
-+-5.17651042787056485015e-05,
-+-5.00660725882709159050e-05,
-+-4.83409938627764752253e-05,
-+-4.65908937116066385552e-05,
-+-4.48168105076074261466e-05,
-+-4.30197947736637000340e-05,
-+-4.12009085632678118496e-05,
-+-3.93612248353795128467e-05,
-+-3.75018268240328908462e-05,
-+-3.56238074029696449125e-05,
-+-3.37282684457607440684e-05,
-+-3.18163201816986404395e-05,
-+-2.98890805479001212680e-05,
-+-2.79476745379709999822e-05,
-+-2.59932335476144176260e-05,
-+-2.40268947175631300377e-05,
-+-2.20498002742151532848e-05,
-+-2.00630968683545589837e-05,
-+-1.80679349123383810435e-05,
-+-1.60654679161321810180e-05,
-+-1.40568518225757011658e-05,
-+-1.20432443422608051199e-05,
-+-1.00258042884029404491e-05,
-+-8.00569091208727099719e-06,
-+-5.98406323826935972361e-06,
-+-3.96207940290984570201e-06,
-+-1.94089599162064887166e-06,
-+ 7.83326198005747898907e-08,
-+ 2.09445492257301924948e-06,
-+ 4.10632292949940006763e-06,
-+ 6.11279282652582891513e-06,
-+ 8.11272562092629197044e-06,
-+ 1.01049877857409114437e-05,
-+ 1.20884519001330790116e-05,
-+ 1.40619972852336154977e-05,
-+ 1.60245106352098204275e-05,
-+ 1.79748866431337342073e-05,
-+ 1.99120286213276946629e-05,
-+ 2.18348491158356895975e-05,
-+ 2.37422705146771266798e-05,
-+ 2.56332256495490372664e-05,
-+ 2.75066583906145059298e-05,
-+ 2.93615242341154332678e-05,
-+ 3.11967908823933051383e-05,
-+ 3.30114388160605143471e-05,
-+ 3.48044618580061525877e-05,
-+ 3.65748677288642252687e-05,
-+ 3.83216785937263849210e-05,
-+ 4.00439315997342949434e-05,
-+ 4.17406794042833988461e-05,
-+ 4.34109906935455636926e-05,
-+ 4.50539506910283595867e-05,
-+ 4.66686616558951677231e-05,
-+ 4.82542433707754188257e-05,
-+ 4.98098336188025105076e-05,
-+ 5.13345886496223527710e-05,
-+ 5.28276836341212981227e-05,
-+ 5.42883131076322484254e-05,
-+ 5.57156914013806444015e-05,
-+ 5.71090530619421132309e-05,
-+ 5.84676532584898041777e-05,
-+ 5.97907681776162523235e-05,
-+ 6.10776954055230943694e-05,
-+ 6.23277542973780997616e-05,
-+ 6.35402863336491786732e-05,
-+ 6.47146554632286333470e-05,
-+ 6.58502484331734486145e-05,
-+ 6.69464751048926757886e-05,
-+ 6.80027687566194964435e-05,
-+ 6.90185863720170044832e-05,
-+ 6.99934089147837939756e-05,
-+ 7.09267415890902172158e-05,
-+ 7.18181140857647161381e-05,
-+ 7.26670808140748066949e-05,
-+ 7.34732211190075503587e-05,
-+ 7.42361394839436268501e-05,
-+ 7.49554657186243128170e-05,
-+ 7.56308551323502581193e-05,
-+ 7.62619886923002242643e-05,
-+ 7.68485731669290054405e-05,
-+ 7.73903412543740319013e-05,
-+ 7.78870516958209856877e-05,
-+ 7.83384893737935715909e-05,
-+ 7.87444653953147782324e-05,
-+ 7.91048171599420551657e-05,
-+ 7.94194084126392720741e-05,
-+ 7.96881292814878859675e-05,
-+ 7.99108963002358391528e-05,
-+ 8.00876524156968731425e-05,
-+ 8.02183669800153831232e-05,
-+ 8.03030357278285665534e-05,
-+ 8.03416807383593541874e-05,
-+ 8.03343503824849146247e-05,
-+ 8.02811192548356472283e-05,
-+ 8.01820880909844978159e-05,
-+ 8.00373836697980867074e-05,
-+ 7.98471587010282266798e-05,
-+ 7.96115916982296047740e-05,
-+ 7.93308868371003252356e-05,
-+ 7.90052737993477842459e-05,
-+ 7.86350076021916034787e-05,
-+ 7.82203684136235352425e-05,
-+ 7.77616613535522615110e-05,
-+ 7.72592162809664708160e-05,
-+ 7.67133875672632579209e-05,
-+ 7.61245538558890809302e-05,
-+ 7.54931178084552014299e-05,
-+ 7.48195058374859282803e-05,
-+ 7.41041678259918263445e-05,
-+ 7.33475768340236086891e-05,
-+ 7.25502287924132663235e-05,
-+ 7.17126421838883761507e-05,
-+ 7.08353577117746115253e-05,
-+ 6.99189379564657824580e-05,
-+ 6.89639670199154882456e-05,
-+ 6.79710501583437364317e-05,
-+ 6.69408134033987737470e-05,
-+ 6.58739031720058094803e-05,
-+ 6.47709858651478100500e-05,
-+ 6.36327474558071720916e-05,
-+ 6.24598930663620521917e-05,
-+ 6.12531465356429315541e-05,
-+ 6.00132499759513726788e-05,
-+ 5.87409633202952744489e-05,
-+ 5.74370638601181475024e-05,
-+ 5.61023457738005077431e-05,
-+ 5.47376196462178894200e-05,
-+ 5.33437119796454611961e-05,
-+ 5.19214646963013157221e-05,
-+ 5.04717346328268796885e-05,
-+ 4.89953930270064014403e-05,
-+ 4.74933249970308410371e-05,
-+ 4.59664290136169696407e-05,
-+ 4.44156163652937726011e-05,
-+ 4.28418106171734954413e-05,
-+ 4.12459470635278838894e-05,
-+ 3.96289721744912600845e-05,
-+ 3.79918430372181689441e-05,
-+ 3.63355267918223325723e-05,
-+ 3.46610000624296407993e-05,
-+ 3.29692483836776077948e-05,
-+ 3.12612656229971128227e-05,
-+ 2.95380533990134290555e-05,
-+ 2.78006204964105713487e-05,
-+ 2.60499822775738051233e-05,
-+ 2.42871600914147949164e-05,
-+ 2.25131806796356132906e-05,
-+ 2.07290755808621738894e-05,
-+ 1.89358805329046950760e-05,
-+ 1.71346348735776756247e-05,
-+ 1.53263809403626031776e-05,
-+ 1.35121634692837809516e-05,
-+ 1.16930289933384643446e-05,
-+ 9.87002524082706459254e-06,
-+ 8.04420053392769432833e-06,
-+ 6.21660318786371497718e-06,
-+ 4.38828091098144307670e-06,
-+ 2.56028020614524101076e-06,
-+ 7.33645773704159215729e-07,
-+-1.09058008356538882663e-06,
-+-2.91135805322907028961e-06,
-+-4.72765240333595687151e-06,
-+-6.53843156959771685090e-06,
-+-8.34266873927393720254e-06,
-+-1.01393424314343474083e-05,
-+-1.19274370732709349764e-05,
-+-1.37059435721405858846e-05,
-+-1.54738598829871196378e-05,
-+-1.72301915709141233841e-05,
-+-1.89739523684456172069e-05,
-+-2.07041647273114594839e-05,
-+-2.24198603643615891102e-05,
-+-2.41200808013344202745e-05,
-+-2.58038778981763044563e-05,
-+-2.74703143796157200874e-05,
-+-2.91184643547017321143e-05,
-+-3.07474138290197399233e-05,
-+-3.23562612093023567895e-05,
-+-3.39441178001584614038e-05,
-+-3.55101082926439871944e-05,
-+-3.70533712444301888567e-05,
-+-3.85730595512544287501e-05,
-+-4.00683409094500665032e-05,
-+-4.15383982693033816007e-05,
-+-4.29824302789406134098e-05,
-+-4.43996517185575042359e-05,
-+-4.57892939247349858053e-05,
-+-4.71506052046175686584e-05,
-+-4.84828512397324982693e-05,
-+-4.97853154792346060619e-05,
-+-5.10572995223683090350e-05,
-+-5.22981234899434565362e-05,
-+-5.35071263846277400461e-05,
-+-5.46836664398836234187e-05,
-+-5.58271214573224499331e-05,
-+-5.69368891323614851295e-05,
-+-5.80123873679696164230e-05,
-+-5.90530545763586015842e-05,
-+-6.00583499684634902521e-05,
-+-6.10277538310640554767e-05,
-+-6.19607677914099007560e-05,
-+-6.28569150692159534649e-05,
-+-6.37157407158944321529e-05,
-+-6.45368118409359687801e-05,
-+-6.53197178252850279385e-05,
-+-6.60640705216541051321e-05,
-+-6.67695044416362863812e-05,
-+-6.74356769295752540719e-05,
-+-6.80622683230799142623e-05,
-+-6.86489821001279852154e-05,
-+-6.91955450126904592642e-05,
-+-6.97017072068230802637e-05,
-+-7.01672423291767658176e-05,
-+-7.05919476198861947256e-05,
-+-7.09756439918057140982e-05,
-+-7.13181760960681986961e-05,
-+-7.16194123739501793333e-05,
-+-7.18792450950348377767e-05,
-+-7.20975903816736135316e-05,
-+-7.22743882197516537879e-05,
-+-7.24096024557741556067e-05,
-+-7.25032207802958942548e-05,
-+-7.25552546977243766621e-05,
-+-7.25657394825357868065e-05,
-+-7.25347341219498558274e-05,
-+-7.24623212451169996162e-05,
-+-7.23486070388806753713e-05,
-+-7.21937211501822589683e-05,
-+-7.19978165751875085875e-05,
-+-7.17610695352167158104e-05,
-+-7.14836793395702676862e-05,
-+-7.11658682353526731877e-05,
-+-7.08078812443949090743e-05,
-+-7.04099859873934258306e-05,
-+-6.99724724953850081566e-05,
-+-6.94956530086853716552e-05,
-+-6.89798617634244460098e-05,
-+-6.84254547658288183589e-05,
-+-6.78328095543798148277e-05,
-+-6.72023249500277669805e-05,
-+-6.65344207946062419579e-05,
-+-6.58295376776219041525e-05,
-+-6.50881366515859591205e-05,
-+-6.43106989360903185575e-05,
-+-6.34977256107851671055e-05,
-+-6.26497372974739176162e-05,
-+-6.17672738315155477485e-05,
-+-6.08508939227416309091e-05,
-+-5.99011748060970076221e-05,
-+-5.89187118822223946605e-05,
-+-5.79041183481987132707e-05,
-+-5.68580248186811984187e-05,
-+-5.57810789376551931251e-05,
-+-5.46739449810503702100e-05,
-+-5.35373034504554770174e-05,
-+-5.23718506581807131213e-05,
-+-5.11782983039181917171e-05,
-+-4.99573730432570882465e-05,
-+-4.87098160483125057073e-05,
-+-4.74363825607329001348e-05,
-+-4.61378414373535389293e-05,
-+-4.48149746887680454615e-05,
-+-4.34685770110934173059e-05,
-+-4.20994553112074291123e-05,
-+-4.07084282257405295205e-05,
-+-3.92963256341110296946e-05,
-+-3.78639881658720183844e-05,
-+-3.64122667027106395048e-05,
-+-3.49420218753273198247e-05,
-+-3.34541235555410240970e-05,
-+-3.19494503438986083817e-05,
-+-3.04288890530928917170e-05,
-+-2.88933341874874255505e-05,
-+-2.73436874190750308462e-05,
-+-2.57808570601205806739e-05,
-+-2.42057575328682884756e-05,
-+-2.26193088365677101494e-05,
-+-2.10224360121490399698e-05,
-+-1.94160686048590696543e-05,
-+-1.78011401251455341182e-05,
-+-1.61785875081583371295e-05,
-+-1.45493505721038791060e-05,
-+-1.29143714758213699049e-05,
-+-1.12745941758700444585e-05,
-+-9.63096388344320252515e-06,
-+-7.98442652142029617504e-06,
-+-6.33592818186786765829e-06,
-+-4.68641458429933138496e-06,
-+-3.03683053500296397801e-06,
-+-1.38811938774586377356e-06,
-+ 2.58777493839178202322e-07,
-+ 1.90292127187864929960e-06,
-+ 3.54337616759140759028e-06,
-+ 5.17920999202801067562e-06,
-+ 6.80949467391633912354e-06,
-+ 8.43330678431570807498e-06,
-+ 1.00497280577839181130e-05,
-+ 1.16578459097642718917e-05,
-+ 1.32567539499020862689e-05,
-+ 1.48455524910031115056e-05,
-+ 1.64233490533491062295e-05,
-+ 1.79892588640891236808e-05,
-+ 1.95424053514245014756e-05,
-+ 2.10819206333345681716e-05,
-+ 2.26069460005168742459e-05,
-+ 2.41166323933478058403e-05,
-+ 2.56101408725446344061e-05,
-+ 2.70866430832949805965e-05,
-+ 2.85453217125733007859e-05,
-+ 2.99853709394462142215e-05,
-+ 3.14059968780488809876e-05,
-+ 3.28064180130436779592e-05,
-+ 3.41858656273021432946e-05,
-+ 3.55435842215810670545e-05,
-+ 3.68788319259649065773e-05,
-+ 3.81908809028492260114e-05,
-+ 3.94790177412656769699e-05,
-+ 4.07425438422898093392e-05,
-+ 4.19807757953880351259e-05,
-+ 4.31930457454549954818e-05,
-+ 4.43787017503647075972e-05,
-+ 4.55371081288425238044e-05,
-+ 4.66676457984745168698e-05,
-+ 4.77697126036755268658e-05,
-+ 4.88427236334443488387e-05,
-+ 4.98861115287400902485e-05,
-+ 5.08993267793200968442e-05,
-+ 5.18818380098863440766e-05,
-+ 5.28331322553930322872e-05,
-+ 5.37527152253746494555e-05,
-+ 5.46401115571613411491e-05,
-+ 5.54948650578534959663e-05,
-+ 5.63165389349345359561e-05,
-+ 5.71047160154089449252e-05,
-+ 5.78589989533570669814e-05,
-+ 5.85790104258065492428e-05,
-+ 5.92643933168274041653e-05,
-+ 5.99148108897627355894e-05,
-+ 6.05299469475165509511e-05,
-+ 6.11095059808236870788e-05,
-+ 6.16532133044444885040e-05,
-+ 6.21608151812043867963e-05,
-+ 6.26320789338565816822e-05,
-+ 6.30667930446937390586e-05,
-+ 6.34647672428986905826e-05,
-+ 6.38258325795768347542e-05,
-+ 6.41498414904665125455e-05,
-+ 6.44366678463023396118e-05,
-+ 6.46862069908247323737e-05,
-+ 6.48983757664325786518e-05,
-+ 6.50731125274843654437e-05,
-+ 6.52103771412599882238e-05,
-+ 6.53101509766035163464e-05,
-+ 6.53724368802683817540e-05,
-+ 6.53972591410049980528e-05,
-+ 6.53846634414262362599e-05,
-+ 6.53347167976985163280e-05,
-+ 6.52475074871135241571e-05,
-+ 6.51231449636010796761e-05,
-+ 6.49617597612497395644e-05,
-+ 6.47635033859116657304e-05,
-+ 6.45285481949697814485e-05,
-+ 6.42570872653582068207e-05,
-+ 6.39493342499302042841e-05,
-+ 6.36055232222692201391e-05,
-+ 6.32259085100558739911e-05,
-+ 6.28107645171077595475e-05,
-+ 6.23603855342008971162e-05,
-+ 6.18750855388094879363e-05,
-+ 6.13551979838913776489e-05,
-+ 6.08010755758598702586e-05,
-+ 6.02130900418846006969e-05,
-+ 5.95916318866736676439e-05,
-+ 5.89371101388912814706e-05,
-+ 5.82499520873748857785e-05,
-+ 5.75306030073172492193e-05,
-+ 5.67795258765894393974e-05,
-+ 5.59972010823701890950e-05,
-+ 5.51841261183018495025e-05,
-+ 5.43408152723015371618e-05,
-+ 5.34677993052802834643e-05,
-+ 5.25656251209348160261e-05,
-+ 5.16348554268246720794e-05,
-+ 5.06760683869446402865e-05,
-+ 4.96898572660009552938e-05,
-+ 4.86768300656121986501e-05,
-+ 4.76376091526542401900e-05,
-+ 4.65728308799746458426e-05,
-+ 4.54831451997094723732e-05,
-+ 4.43692152694205702067e-05,
-+ 4.32317170513272638010e-05,
-+ 4.20713389048248215750e-05,
-+ 4.08887811725691820543e-05,
-+ 3.96847557603624830438e-05,
-+ 3.84599857110910642592e-05,
-+ 3.72152047729705208619e-05,
-+ 3.59511569623536525052e-05,
-+ 3.46685961213579385467e-05,
-+ 3.33682854705920874040e-05,
-+ 3.20509971572010551400e-05,
-+ 3.07175117985585750834e-05,
-+ 2.93686180218123159854e-05,
-+ 2.80051119996170835922e-05,
-+ 2.66277969822622470077e-05,
-+ 2.52374828265144898710e-05,
-+ 2.38349855214322459531e-05,
-+ 2.24211267114313739257e-05,
-+ 2.09967332168798777813e-05,
-+ 1.95626365525002586521e-05,
-+ 1.81196724438590493929e-05,
-+ 1.66686803422232323734e-05,
-+ 1.52105029380648706125e-05,
-+ 1.37459856734939339152e-05,
-+ 1.22759762539012447631e-05,
-+ 1.08013241590919135580e-05,
-+ 9.32288015419072379738e-06,
-+ 7.84149580059962841079e-06,
-+ 6.35802296728773956217e-06,
-+ 4.87331334269314813773e-06,
-+ 3.38821794751525819401e-06,
-+ 1.90358664867536025810e-06,
-+ 4.20267674722007678397e-07,
-+-1.06089286704349063181e-06,
-+-2.53905147144755971960e-06,
-+-4.01336771405853671665e-06,
-+-5.48300472726051319248e-06,
-+-6.94712967353908428204e-06,
-+-8.40491421565995491089e-06,
-+-9.85553498354600196257e-06,
-+-1.12981740375379932287e-05,
-+-1.27320193278005813889e-05,
-+-1.41562651496129757108e-05,
-+-1.55701125942935366840e-05,
-+-1.69727699954863943171e-05,
-+-1.83634533706132413357e-05,
-+-1.97413868571768872317e-05,
-+-2.11058031437259111299e-05,
-+-2.24559438952188090413e-05,
-+-2.37910601725753876787e-05,
-+-2.51104128461361075818e-05,
-+-2.64132730028669993332e-05,
-+-2.76989223470385161768e-05,
-+-2.89666535941785825052e-05,
-+-3.02157708580817170672e-05,
-+-3.14455900306639634365e-05,
-+-3.26554391544575276863e-05,
-+-3.38446587875432448227e-05,
-+-3.50126023607246299988e-05,
-+-3.61586365267507298072e-05,
-+-3.72821415014014433467e-05,
-+-3.83825113962520523994e-05,
-+-3.94591545429407643156e-05,
-+-4.05114938087662831479e-05,
-+-4.15389669034495396562e-05,
-+-4.25410266768976613630e-05,
-+-4.35171414078138610380e-05,
-+-4.44667950830035220650e-05,
-+-4.53894876672311637202e-05,
-+-4.62847353634881464551e-05,
-+-4.71520708635396170122e-05,
-+-4.79910435886203451676e-05,
-+-4.88012199201597561809e-05,
-+-4.95821834204167205301e-05,
-+-5.03335350429265633945e-05,
-+-5.10548933326265304408e-05,
-+-5.17458946156012646414e-05,
-+-5.24061931783268363742e-05,
-+-5.30354614363393909939e-05,
-+-5.36333900922485962647e-05,
-+-5.41996882830139510762e-05,
-+-5.47340837164388594079e-05,
-+-5.52363227967925824054e-05,
-+-5.57061707395272917836e-05,
-+-5.61434116750343203787e-05,
-+-5.65478487413978341881e-05,
-+-5.69193041661166998697e-05,
-+-5.72576193367504884379e-05,
-+-5.75626548604881785863e-05,
-+-5.78342906126072504132e-05,
-+-5.80724257738199440486e-05,
-+-5.82769788565022921634e-05,
-+-5.84478877198096668589e-05,
-+-5.85851095736871960683e-05,
-+-5.86886209717912786239e-05,
-+-5.87584177933450407718e-05,
-+-5.87945152139549069526e-05,
-+-5.87969476654236840492e-05,
-+-5.87657687846015756232e-05,
-+-5.87010513513210692091e-05,
-+-5.86028872154704082165e-05,
-+-5.84713872132640056231e-05,
-+-5.83066810727762474998e-05,
-+-5.81089173088098371331e-05,
-+-5.78782631071765932274e-05,
-+-5.76149041984740298956e-05,
-+-5.73190447214473209757e-05,
-+-5.69909070760322414208e-05,
-+-5.66307317661793541358e-05,
-+-5.62387772325672526141e-05,
-+-5.58153196753171827195e-05,
-+-5.53606528668218819548e-05,
-+-5.48750879548260181830e-05,
-+-5.43589532558681387997e-05,
-+-5.38125940392313040217e-05,
-+-5.32363723015430049873e-05,
-+-5.26306665321520585781e-05,
-+-5.19958714694554905247e-05,
-+-5.13323978483126871185e-05,
-+-5.06406721387124545189e-05,
-+-4.99211362758563274877e-05,
-+-4.91742473818266735545e-05,
-+-4.84004774790149961978e-05,
-+-4.76003131954764758258e-05,
-+-4.67742554624208601633e-05,
-+-4.59228192039893781543e-05,
-+-4.50465330195347888644e-05,
-+-4.41459388585886764659e-05,
-+-4.32215916887159588432e-05,
-+-4.22740591564579529368e-05,
-+-4.13039212415705373426e-05,
-+-4.03117699047655450996e-05,
-+-3.92982087291690829157e-05,
-+-3.82638525557110084044e-05,
-+-3.72093271126660717248e-05,
-+-3.61352686395672686765e-05,
-+-3.50423235057168379857e-05,
-+-3.39311478235224090556e-05,
-+-3.28024070568877919004e-05,
-+-3.16567756248915059525e-05,
-+-3.04949365009877199171e-05,
-+-2.93175808079664161425e-05,
-+-2.81254074089120697057e-05,
-+-2.69191224944017248270e-05,
-+-2.56994391661852553642e-05,
-+-2.44670770175918836234e-05,
-+-2.32227617109122020126e-05,
-+-2.19672245519847623529e-05,
-+-2.07012020622797709220e-05,
-+-1.94254355486677272565e-05,
-+-1.81406706711849960521e-05,
-+-1.68476570089850853130e-05,
-+-1.55471476247899104671e-05,
-+-1.42398986280482303988e-05,
-+-1.29266687370718316063e-05,
-+-1.16082188403988693324e-05,
-+-1.02853115576371897586e-05,
-+-8.95871080003975092416e-06,
-+-7.62918133106494951846e-06,
-+-6.29748832717637000583e-06,
-+-4.96439693911456911849e-06,
-+-3.63067185393867396159e-06,
-+-2.29707685802459498842e-06,
-+-9.64374401315848450426e-07,
-+ 3.66674836944231519952e-07,
-+ 1.69531238074935703441e-06,
-+ 3.02078238789119312040e-06,
-+ 4.34233207830084875904e-06,
-+ 5.65921215992918806928e-06,
-+ 6.97067725192901449440e-06,
-+ 8.27598630488246552004e-06,
-+ 9.57440301788133736832e-06,
-+ 1.08651962521827093731e-05,
-+ 1.21476404412087555200e-05,
-+ 1.34210159967052598768e-05,
-+ 1.46846097107889237831e-05,
-+ 1.59377151536783862637e-05,
-+ 1.71796330668853545218e-05,
-+ 1.84096717516477081152e-05,
-+ 1.96271474523901250152e-05,
-+ 2.08313847350004374291e-05,
-+ 2.20217168597138741371e-05,
-+ 2.31974861483999769760e-05,
-+ 2.43580443460485478093e-05,
-+ 2.55027529762765186715e-05,
-+ 2.66309836906033699266e-05,
-+ 2.77421186114023531077e-05,
-+ 2.88355506682450058473e-05,
-+ 2.99106839275143976181e-05,
-+ 3.09669339150908589178e-05,
-+ 3.20037279319387916966e-05,
-+ 3.30205053624261607144e-05,
-+ 3.40167179752114232517e-05,
-+ 3.49918302165381128787e-05,
-+ 3.59453194957816331854e-05,
-+ 3.68766764630972321086e-05,
-+ 3.77854052790209193153e-05,
-+ 3.86710238758958244651e-05,
-+ 3.95330642109541764121e-05,
-+ 4.03710725109682755916e-05,
-+ 4.11846095083103026020e-05,
-+ 4.19732506683146705116e-05,
-+ 4.27365864078233130617e-05,
-+ 4.34742223048040452049e-05,
-+ 4.41857792989385563150e-05,
-+ 4.48708938830692915926e-05,
-+ 4.55292182854370863364e-05,
-+ 4.61604206425851002231e-05,
-+ 4.67641851628709925696e-05,
-+ 4.73402122805066265026e-05,
-+ 4.78882188000329483382e-05,
-+ 4.84079380311931386409e-05,
-+ 4.88991199141192096943e-05,
-+ 4.93615311347864993397e-05,
-+ 4.97949552306842973051e-05,
-+ 5.01991926866579958816e-05,
-+ 5.05740610208843503087e-05,
-+ 5.09193948609473228035e-05,
-+ 5.12350460099867614349e-05,
-+ 5.15208835028994156444e-05,
-+ 5.17767936525754493993e-05,
-+ 5.20026800861617919140e-05,
-+ 5.21984637713472843972e-05,
-+ 5.23640830326715540628e-05,
-+ 5.24994935578649676486e-05,
-+ 5.26046683942319904669e-05,
-+ 5.26795979350977647813e-05,
-+ 5.27242898963412381865e-05,
-+ 5.27387692830453080699e-05,
-+ 5.27230783462991780706e-05,
-+ 5.26772765301947225270e-05,
-+ 5.26014404090633305310e-05,
-+ 5.24956636150047901762e-05,
-+ 5.23600567557668073533e-05,
-+ 5.21947473230388830738e-05,
-+ 5.19998795912271193358e-05,
-+ 5.17756145067857189357e-05,
-+ 5.15221295681833840827e-05,
-+ 5.12396186965899134232e-05,
-+ 5.09282920973702621955e-05,
-+ 5.05883761124873977634e-05,
-+ 5.02201130639010932745e-05,
-+ 4.98237610880825857601e-05,
-+ 4.93995939617437136368e-05,
-+ 4.89479009189001211121e-05,
-+ 4.84689864593871208814e-05,
-+ 4.79631701489468674927e-05,
-+ 4.74307864110306472431e-05,
-+ 4.68721843104290958456e-05,
-+ 4.62877273288830334104e-05,
-+ 4.56777931328110654310e-05,
-+ 4.50427733333015571236e-05,
-+ 4.43830732385187975314e-05,
-+ 4.36991115986785094998e-05,
-+ 4.29913203437512904219e-05,
-+ 4.22601443140560245420e-05,
-+ 4.15060409839102542823e-05,
-+ 4.07294801785067884332e-05,
-+ 3.99309437841909614544e-05,
-+ 3.91109254523149503578e-05,
-+ 3.82699302968499331071e-05,
-+ 3.74084745859401725113e-05,
-+ 3.65270854275851831246e-05,
-+ 3.56263004496409294844e-05,
-+ 3.47066674743320204575e-05,
-+ 3.37687441874715604177e-05,
-+ 3.28130978025864834921e-05,
-+ 3.18403047201496259048e-05,
-+ 3.08509501821220885999e-05,
-+ 2.98456279220141111716e-05,
-+ 2.88249398106583463292e-05,
-+ 2.77894954979411405727e-05,
-+ 2.67399120506568739174e-05,
-+ 2.56768135867345998077e-05,
-+ 2.46008309060387078085e-05,
-+ 2.35126011179608967452e-05,
-+ 2.24127672660373206972e-05,
-+ 2.13019779497730199318e-05,
-+ 2.01808869439458528371e-05,
-+ 1.90501528155745074983e-05,
-+ 1.79104385387887921337e-05,
-+ 1.67624111078244624493e-05,
-+ 1.56067411483699600464e-05,
-+ 1.44441025274743162915e-05,
-+ 1.32751719622829946729e-05,
-+ 1.21006286277736464400e-05,
-+ 1.09211537637588811984e-05,
-+ 9.73743028136644528262e-06,
-+ 8.55014236922561691437e-06,
-+ 7.35997509958635033394e-06,
-+ 6.16761403459692181825e-06,
-+ 4.97374483296533837542e-06,
-+ 3.77905285722950647743e-06,
-+ 2.58422278186008839003e-06,
-+ 1.38993820241930683239e-06,
-+ 1.96881245997903772338e-07,
-+-9.94267816848598569217e-07,
-+-2.18283095844447963890e-06,
-+-3.36813277840069707876e-06,
-+-4.54950088586700000424e-06,
-+-5.72626627941386950107e-06,
-+-6.89776372433048807836e-06,
-+-8.06333212712694707145e-06,
-+-9.22231490703067589279e-06,
-+-1.03740603642693244191e-05,
-+-1.15179220449344173161e-05,
-+-1.26532591022196861730e-05,
-+-1.37794366538495711072e-05,
-+-1.48958261354584999990e-05,
-+-1.60018056497799296184e-05,
-+-1.70967603114136951952e-05,
-+-1.81800825869820380861e-05,
-+-1.92511726305242952264e-05,
-+-2.03094386138927829864e-05,
-+-2.13542970520092069756e-05,
-+-2.23851731227873900821e-05,
-+-2.34015009815511875976e-05,
-+-2.44027240697762211102e-05,
-+-2.53882954179860686225e-05,
-+-2.63576779426533689202e-05,
-+-2.73103447369098503218e-05,
-+-2.82457793549575378290e-05,
-+-2.91634760899918437553e-05,
-+-3.00629402455041167019e-05,
-+-3.09436883998153130820e-05,
-+-3.18052486637019455554e-05,
-+-3.26471609309779970515e-05,
-+-3.34689771219005548241e-05,
-+-3.42702614192727262341e-05,
-+-3.50505904971203557973e-05,
-+-3.58095537418260222574e-05,
-+-3.65467534655933827146e-05,
-+-3.72618051121717498101e-05,
-+-3.79543374546707974228e-05,
-+-3.86239927854306394216e-05,
-+-3.92704270978131317837e-05,
-+-3.98933102598363287456e-05,
-+-4.04923261795653974715e-05,
-+-4.10671729621785269976e-05,
-+-4.16175630586323642046e-05,
-+-4.21432234058559141441e-05,
-+-4.26438955584067616068e-05,
-+-4.31193358115292238756e-05,
-+-4.35693153155569312869e-05,
-+-4.39936201816156069303e-05,
-+-4.43920515785651946397e-05,
-+-4.47644258211561343495e-05,
-+-4.51105744493632472049e-05,
-+-4.54303442988531914885e-05,
-+-4.57235975625737596506e-05,
-+-4.59902118434391446694e-05,
-+-4.62300801980975147932e-05,
-+-4.64431111717703053654e-05,
-+-4.66292288241590738816e-05,
-+-4.67883727464197082162e-05,
-+-4.69204980692097139592e-05,
-+-4.70255754618213880035e-05,
-+-4.71035911224101212042e-05,
-+-4.71545467593474220552e-05,
-+-4.71784595637180143891e-05,
-+-4.71753621729942670049e-05,
-+-4.71453026259235373810e-05,
-+-4.70883443086696765927e-05,
-+-4.70045658922535814004e-05,
-+-4.68940612613444625227e-05,
-+-4.67569394344568726790e-05,
-+-4.65933244756150703129e-05,
-+-4.64033553975471216042e-05,
-+-4.61871860564808808737e-05,
-+-4.59449850386188616159e-05,
-+-4.56769355383655138421e-05,
-+-4.53832352283949652812e-05,
-+-4.50640961216473178623e-05,
-+-4.47197444253447825278e-05,
-+-4.43504203871267281252e-05,
-+-4.39563781334040550529e-05,
-+-4.35378855000395927045e-05,
-+-4.30952238554646824297e-05,
-+-4.26286879163457669119e-05,
-+-4.21385855559199974771e-05,
-+-4.16252376051221437895e-05,
-+-4.10889776466288376587e-05,
-+-4.05301518019508379771e-05,
-+-3.99491185117068837215e-05,
-+-3.93462483092169100062e-05,
-+-3.87219235875561562329e-05,
-+-3.80765383602142771309e-05,
-+-3.74104980155082837679e-05,
-+-3.67242190649002693526e-05,
-+-3.60181288853753334362e-05,
-+-3.52926654560366292231e-05,
-+-3.45482770890794257056e-05,
-+-3.37854221553090375610e-05,
-+-3.30045688043594255523e-05,
-+-3.22061946798075831645e-05,
-+-3.13907866293216945321e-05,
-+-3.05588404100427330412e-05,
-+-2.97108603893675688823e-05,
-+-2.88473592413132615716e-05,
-+-2.79688576386454084658e-05,
-+-2.70758839409515568225e-05,
-+-2.61689738788582883049e-05,
-+-2.52486702345479146949e-05,
-+-2.43155225188067227653e-05,
-+-2.33700866447662229544e-05,
-+-2.24129245985293835562e-05,
-+-2.14446041069073238181e-05,
-+-2.04656983024178883341e-05,
-+-1.94767853857754148804e-05,
-+-1.84784482860567825561e-05,
-+-1.74712743187444023349e-05,
-+-1.64558548418461311194e-05,
-+-1.54327849102923173909e-05,
-+-1.44026629288111792759e-05,
-+-1.33660903034842037365e-05,
-+-1.23236710921832843933e-05,
-+-1.12760116540923691986e-05,
-+-1.02237202985157386555e-05,
-+-9.16740693317562989567e-06,
-+-8.10768271220163393815e-06,
-+-7.04515968401436206049e-06,
-+-5.98045043930514029506e-06,
-+-4.91416775931360371891e-06,
-+-3.84692426460422025455e-06,
-+-2.77933206454218416435e-06,
-+-1.71200240766848139346e-06,
-+-6.45545333172962557628e-07,
-+ 4.19430676336646794336e-07,
-+ 1.48231904057302648397e-06,
-+ 2.54251542561663930372e-06,
-+ 3.59941808609308168670e-06,
-+ 4.65242820524958869112e-06,
-+ 5.70095023278988534811e-06,
-+ 6.74439222023971488674e-06,
-+ 7.78216615367016922942e-06,
-+ 8.81368828359270617260e-06,
-+ 9.83837945182666922020e-06,
-+ 1.08556654151943217460e-05,
-+ 1.18649771658138885200e-05,
-+ 1.28657512478499302136e-05,
-+ 1.38574300705307268156e-05,
-+ 1.48394622172600090695e-05,
-+ 1.58113027506664198453e-05,
-+ 1.67724135133877546580e-05,
-+ 1.77222634244721200859e-05,
-+ 1.86603287711980042802e-05,
-+ 1.95860934961685117974e-05,
-+ 2.04990494795206747223e-05,
-+ 2.13986968160965711628e-05,
-+ 2.22845440874262652991e-05,
-+ 2.31561086283755511721e-05,
-+ 2.40129167883148332595e-05,
-+ 2.48545041866689361690e-05,
-+ 2.56804159627113593367e-05,
-+ 2.64902070194693860814e-05,
-+ 2.72834422616106000525e-05,
-+ 2.80596968271851059942e-05,
-+ 2.88185563131008925446e-05,
-+ 2.95596169942142674564e-05,
-+ 3.02824860359208226652e-05,
-+ 3.09867817001359949951e-05,
-+ 3.16721335445593264431e-05,
-+ 3.23381826151192079948e-05,
-+ 3.29845816314999765108e-05,
-+ 3.36109951656569510029e-05,
-+ 3.42170998132293449818e-05,
-+ 3.48025843577636647915e-05,
-+ 3.53671499276745119299e-05,
-+ 3.59105101458437678133e-05,
-+ 3.64323912718148200060e-05,
-+ 3.69325323364901809465e-05,
-+ 3.74106852692794952407e-05,
-+ 3.78666150176288244058e-05,
-+ 3.83000996588942581029e-05,
-+ 3.87109305044850893402e-05,
-+ 3.90989121962477274223e-05,
-+ 3.94638627950426708552e-05,
-+ 3.98056138614771284553e-05,
-+ 4.01240105287611420687e-05,
-+ 4.04189115676629857573e-05,
-+ 4.06901894435291198787e-05,
-+ 4.09377303653654542282e-05,
-+ 4.11614343269538722871e-05,
-+ 4.13612151399990495742e-05,
-+ 4.15370004592994877942e-05,
-+ 4.16887317999427647820e-05,
-+ 4.18163645465287068582e-05,
-+ 4.19198679544291165572e-05,
-+ 4.19992251430971813499e-05,
-+ 4.20544330814450761122e-05,
-+ 4.20855025653108131916e-05,
-+ 4.20924581870419940027e-05,
-+ 4.20753382972270773108e-05,
-+ 4.20341949586107831312e-05,
-+ 4.19690938922323789214e-05,
-+ 4.18801144158325268558e-05,
-+ 4.17673493745770476031e-05,
-+ 4.16309050641507942731e-05,
-+ 4.14709011462787672121e-05,
-+ 4.12874705567371297560e-05,
-+ 4.10807594059191025335e-05,
-+ 4.08509268720259451839e-05,
-+ 4.05981450869582284656e-05,
-+ 4.03225990149817188125e-05,
-+ 4.00244863242588127953e-05,
-+ 3.97040172513205211744e-05,
-+ 3.93614144585763300172e-05,
-+ 3.89969128849576671548e-05,
-+ 3.86107595897814662080e-05,
-+ 3.82032135899500682069e-05,
-+ 3.77745456905820574433e-05,
-+ 3.73250383091862464823e-05,
-+ 3.68549852934909236125e-05,
-+ 3.63646917330434846769e-05,
-+ 3.58544737646997589589e-05,
-+ 3.53246583721261741586e-05,
-+ 3.47755831794332366546e-05,
-+ 3.42075962390870128276e-05,
-+ 3.36210558142060423280e-05,
-+ 3.30163301553966777682e-05,
-+ 3.23937972722568060207e-05,
-+ 3.17538446996900900290e-05,
-+ 3.10968692591733985816e-05,
-+ 3.04232768151230764501e-05,
-+ 2.97334820265093258108e-05,
-+ 2.90279080938678783936e-05,
-+ 2.83069865018621188567e-05,
-+ 2.75711567575615524813e-05,
-+ 2.68208661245598943643e-05,
-+ 2.60565693531506030998e-05,
-+ 2.52787284066631597003e-05,
-+ 2.44878121841591343355e-05,
-+ 2.36842962396411912224e-05,
-+ 2.28686624979444416434e-05,
-+ 2.20413989674784742564e-05,
-+ 2.12029994499905229957e-05,
-+ 2.03539632475213441687e-05,
-+ 1.94947948667270345394e-05,
-+ 1.86260037207404863615e-05,
-+ 1.77481038287503190129e-05,
-+ 1.68616135134610017573e-05,
-+ 1.59670550966399525954e-05,
-+ 1.50649545929016600080e-05,
-+ 1.41558414019059438765e-05,
-+ 1.32402479991802029098e-05,
-+ 1.23187096257152244321e-05,
-+ 1.13917639765278494500e-05,
-+ 1.04599508883682767454e-05,
-+ 9.52381202675309655368e-06,
-+ 8.58389057250431938178e-06,
-+ 7.64073090797513138387e-06,
-+ 6.69487830314289765184e-06,
-+ 5.74687860175188295145e-06,
-+ 4.79727790767192774363e-06,
-+ 3.84662227168647334824e-06,
-+ 2.89545737884364760088e-06,
-+ 1.94432823658253304009e-06,
-+ 9.93778863798429985474e-07,
-+ 4.43519810261418219453e-08,
-+-9.03411298083134494987e-07,
-+-1.84897177381668332505e-06,
-+-2.79179246581568572222e-06,
-+-3.73133891666547724968e-06,
-+-4.66707949352351104895e-06,
-+-5.59848568756837193684e-06,
-+-6.52503241114909488603e-06,
-+-7.44619829242155147390e-06,
-+-8.36146596735429801020e-06,
-+-9.27032236890755496482e-06,
-+-1.01722590132379665735e-05,
-+-1.10667722827682534897e-05,
-+-1.19533637059645449316e-05,
-+-1.28315402336673929602e-05,
-+-1.37008145118236726118e-05,
-+-1.45607051504696124636e-05,
-+-1.54107369888173211751e-05,
-+-1.62504413562997488372e-05,
-+-1.70793563294315240981e-05,
-+-1.78970269843458541098e-05,
-+-1.87030056448704560027e-05,
-+-1.94968521260079873374e-05,
-+-2.02781339726898497515e-05,
-+-2.10464266936743830125e-05,
-+-2.18013139904647730040e-05,
-+-2.25423879811231864039e-05,
-+-2.32692494188629845134e-05,
-+-2.39815079053020545374e-05,
-+-2.46787820982652636209e-05,
-+-2.53606999140241696946e-05,
-+-2.60268987238786572637e-05,
-+-2.66770255449520642306e-05,
-+-2.73107372251350898203e-05,
-+-2.79277006220566396152e-05,
-+-2.85275927760007770367e-05,
-+-2.91101010766786506953e-05,
-+-2.96749234237720292370e-05,
-+-3.02217683811674436194e-05,
-+-3.07503553247967688486e-05,
-+-3.12604145840304585829e-05,
-+-3.17516875765274536082e-05,
-+-3.22239269364954619744e-05,
-+-3.26768966362916865294e-05,
-+-3.31103721013135404044e-05,
-+-3.35241403181086740208e-05,
-+-3.39179999356772221173e-05,
-+-3.42917613599035768068e-05,
-+-3.46452468410814200988e-05,
-+-3.49782905544949971623e-05,
-+-3.52907386740210617191e-05,
-+-3.55824494387227893157e-05,
-+-3.58532932124095292024e-05,
-+-3.61031525361412189944e-05,
-+-3.63319221736595660043e-05,
-+-3.65395091497331203439e-05,
-+-3.67258327814061905970e-05,
-+-3.68908247021470958485e-05,
-+-3.70344288788946495372e-05,
-+-3.71566016220048470271e-05,
-+-3.72573115881061459097e-05,
-+-3.73365397758733679086e-05,
-+-3.73942795147359094356e-05,
-+-3.74305364465390174970e-05,
-+-3.74453285001817191228e-05,
-+-3.74386858592581299020e-05,
-+-3.74106509227334344111e-05,
-+-3.73612782586900054964e-05,
-+-3.72906345511812774523e-05,
-+-3.71987985402384284698e-05,
-+-3.70858609550741078051e-05,
-+-3.69519244405358592356e-05,
-+-3.67971034768620346741e-05,
-+-3.66215242927991649845e-05,
-+-3.64253247721413610217e-05,
-+-3.62086543537608289011e-05,
-+-3.59716739251909398806e-05,
-+-3.57145557098436036985e-05,
-+-3.54374831479307815388e-05,
-+-3.51406507711717790501e-05,
-+-3.48242640713705212661e-05,
-+-3.44885393629439755150e-05,
-+-3.41337036395026344345e-05,
-+-3.37599944245618602615e-05,
-+-3.33676596164906268116e-05,
-+-3.29569573277930418366e-05,
-+-3.25281557188254321234e-05,
-+-3.20815328260544299979e-05,
-+-3.16173763849646847373e-05,
-+-3.11359836477270585640e-05,
-+-3.06376611957413178553e-05,
-+-3.01227247471705252121e-05,
-+-2.95914989595860117668e-05,
-+-2.90443172278450244467e-05,
-+-2.84815214773259415084e-05,
-+-2.79034619526477284249e-05,
-+-2.73104970020026914545e-05,
-+-2.67029928572347473455e-05,
-+-2.60813234097965965382e-05,
-+-2.54458699827217350983e-05,
-+-2.47970210987495716533e-05,
-+-2.41351722447432573014e-05,
-+-2.34607256325420285845e-05,
-+-2.27740899563922217575e-05,
-+-2.20756801471030884767e-05,
-+-2.13659171230650388217e-05,
-+-2.06452275383031910749e-05,
-+-1.99140435276834237366e-05,
-+-1.91728024494465332597e-05,
-+-1.84219466252117046706e-05,
-+-1.76619230776150628139e-05,
-+-1.68931832657115450086e-05,
-+-1.61161828183312975558e-05,
-+-1.53313812655206427630e-05,
-+-1.45392417682358304494e-05,
-+-1.37402308464459345215e-05,
-+-1.29348181058055242533e-05,
-+-1.21234759630454037166e-05,
-+-1.13066793702690812049e-05,
-+-1.04849055382779459772e-05,
-+-9.65863365911334948940e-06,
-+-8.82834462796514155621e-06,
-+-7.99452076460905629502e-06,
-+-7.15764553453369098759e-06,
-+-6.31820326991743474922e-06,
-+-5.47667889061570897704e-06,
-+-4.63355762531863929758e-06,
-+-3.78932473303858924915e-06,
-+-2.94446522508681059839e-06,
-+-2.09946358769777104725e-06,
-+-1.25480350545903780141e-06,
-+-4.10967585703884757521e-07,
-+ 4.31562915977009008788e-07,
-+ 1.27230836894944277571e-06,
-+ 2.11079103932071460005e-06,
-+ 2.94653536014252898618e-06,
-+ 3.77906819987967961097e-06,
-+ 4.60791912899369108820e-06,
-+ 5.43262068449194016279e-06,
-+ 6.25270863229422647450e-06,
-+ 7.06772222727031654239e-06,
-+ 7.87720447080152108251e-06,
-+ 8.68070236573491179038e-06,
-+ 9.47776716855934883059e-06,
-+ 1.02679546387046329188e-05,
-+ 1.10508252847855289948e-05,
-+ 1.18259446076950094435e-05,
-+ 1.25928833403731488022e-05,
-+ 1.33512176841488130493e-05,
-+ 1.41005295415132480126e-05,
-+ 1.48404067452006041290e-05,
-+ 1.55704432834508311935e-05,
-+ 1.62902395213322402135e-05,
-+ 1.69994024180030318645e-05,
-+ 1.76975457398040286305e-05,
-+ 1.83842902690431043002e-05,
-+ 1.90592640083929755197e-05,
-+ 1.97221023807678906147e-05,
-+ 2.03724484245830909945e-05,
-+ 2.10099529842914574005e-05,
-+ 2.16342748960969371002e-05,
-+ 2.22450811687472009364e-05,
-+ 2.28420471593103576108e-05,
-+ 2.34248567438443574510e-05,
-+ 2.39932024828722749476e-05,
-+ 2.45467857815675249479e-05,
-+ 2.50853170445967065243e-05,
-+ 2.56085158254919929746e-05,
-+ 2.61161109705264067420e-05,
-+ 2.66078407569898643540e-05,
-+ 2.70834530258070006151e-05,
-+ 2.75427053084297310910e-05,
-+ 2.79853649479419435960e-05,
-+ 2.84112092143175989727e-05,
-+ 2.88200254137772721131e-05,
-+ 2.92116109921902309310e-05,
-+ 2.95857736324748295058e-05,
-+ 2.99423313459514552895e-05,
-+ 3.02811125576063902359e-05,
-+ 3.06019561852344731414e-05,
-+ 3.09047117124088772445e-05,
-+ 3.11892392552770306917e-05,
-+ 3.14554096231257185974e-05,
-+ 3.17031043727105386106e-05,
-+ 3.19322158563235434462e-05,
-+ 3.21426472635838068469e-05,
-+ 3.23343126569389799764e-05,
-+ 3.25071370008686157485e-05,
-+ 3.26610561847839823827e-05,
-+ 3.27960170396232209987e-05,
-+ 3.29119773481435616428e-05,
-+ 3.30089058489176179569e-05,
-+ 3.30867822340391137381e-05,
-+ 3.31455971405566354542e-05,
-+ 3.31853521356474453628e-05,
-+ 3.32060596955532425618e-05,
-+ 3.32077431783010264656e-05,
-+ 3.31904367902360999997e-05,
-+ 3.31541855463981258254e-05,
-+ 3.30990452247738323123e-05,
-+ 3.30250823144645263966e-05,
-+ 3.29323739578086778848e-05,
-+ 3.28210078865044069620e-05,
-+ 3.26910823517787598727e-05,
-+ 3.25427060486570274289e-05,
-+ 3.23759980343831654933e-05,
-+ 3.21910876410516532862e-05,
-+ 3.19881143825098785360e-05,
-+ 3.17672278555962777865e-05,
-+ 3.15285876357804020743e-05,
-+ 3.12723631672755098660e-05,
-+ 3.09987336476968641276e-05,
-+ 3.07078879073422307631e-05,
-+ 3.04000242831731254834e-05,
-+ 3.00753504875796523151e-05,
-+ 2.97340834720133863225e-05,
-+ 2.93764492855759244065e-05,
-+ 2.90026829286541534467e-05,
-+ 2.86130282016945522135e-05,
-+ 2.82077375492130921937e-05,
-+ 2.77870718991382409868e-05,
-+ 2.73513004975885902525e-05,
-+ 2.69007007391876059731e-05,
-+ 2.64355579930219527422e-05,
-+ 2.59561654243505824063e-05,
-+ 2.54628238121749757804e-05,
-+ 2.49558413627831115046e-05,
-+ 2.44355335193822060570e-05,
-+ 2.39022227679302646662e-05,
-+ 2.33562384393019751726e-05,
-+ 2.27979165078862079359e-05,
-+ 2.22275993867542926926e-05,
-+ 2.16456357195166269815e-05,
-+ 2.10523801689935258924e-05,
-+ 2.04481932028270123260e-05,
-+ 1.98334408761695914203e-05,
-+ 1.92084946115600319473e-05,
-+ 1.85737309761447836221e-05,
-+ 1.79295314563576179442e-05,
-+ 1.72762822302007563351e-05,
-+ 1.66143739372523043473e-05,
-+ 1.59442014465590105223e-05,
-+ 1.52661636225209913461e-05,
-+ 1.45806630889290942863e-05,
-+ 1.38881059912848947536e-05,
-+ 1.31889017575441241904e-05,
-+ 1.24834628574239182218e-05,
-+ 1.17722045604144076358e-05,
-+ 1.10555446926362083376e-05,
-+ 1.03339033926850970682e-05,
-+ 9.60770286660610835401e-06,
-+ 8.87736714213917295769e-06,
-+ 8.14332182237846214528e-06,
-+ 7.40599383898811708220e-06,
-+ 6.66581120511662847053e-06,
-+ 5.92320276815220692627e-06,
-+ 5.17859796246125674333e-06,
-+ 4.43242656225190390784e-06,
-+ 3.68511843470406844027e-06,
-+ 2.93710329350725519965e-06,
-+ 2.18881045294667824256e-06,
-+ 1.44066858267776568184e-06,
-+ 6.93105463328498643878e-07,
-+-5.34522569318000109946e-08,
-+-7.98579304717572919173e-07,
-+-1.54185202251970832288e-06,
-+-2.28284860840320051088e-06,
-+-3.02114935421031389665e-06,
-+-3.75633688210878496775e-06,
-+-4.48799637936313885382e-06,
-+-5.21571583119760455970e-06,
-+-5.93908625161027179838e-06,
-+-6.65770191203593872154e-06,
-+-7.37116056769570928293e-06,
-+-8.07906368153382318078e-06,
-+-8.78101664560747212731e-06,
-+-9.47662899980729766419e-06,
-+-1.01655146477980716876e-05,
-+-1.08472920700360401147e-05,
-+-1.15215845337792326716e-05,
-+-1.21880202999511892778e-05,
-+-1.28462328267551614196e-05,
-+-1.34958609699263177819e-05,
-+-1.41365491795134746316e-05,
-+-1.47679476930840737262e-05,
-+-1.53897127252478330606e-05,
-+-1.60015066533978296873e-05,
-+-1.66029981995690071228e-05,
-+-1.71938626083174473280e-05,
-+-1.77737818205255124692e-05,
-+-1.83424446430409821820e-05,
-+-1.88995469140607142496e-05,
-+-1.94447916641716418988e-05,
-+-1.99778892729651633619e-05,
-+-2.04985576211432968317e-05,
-+-2.10065222380378098066e-05,
-+-2.15015164444660525898e-05,
-+-2.19832814908509086081e-05,
-+-2.24515666905336362430e-05,
-+-2.29061295482131846272e-05,
-+-2.33467358834453286897e-05,
-+-2.37731599491474201167e-05,
-+-2.41851845450333852378e-05,
-+-2.45826011259452240434e-05,
-+-2.49652099050124548756e-05,
-+-2.53328199515970210081e-05,
-+-2.56852492839710685329e-05,
-+-2.60223249566979663422e-05,
-+-2.63438831426579298076e-05,
-+-2.66497692096954663589e-05,
-+-2.69398377918485816931e-05,
-+-2.72139528551308018016e-05,
-+-2.74719877578380960005e-05,
-+-2.77138253053556592794e-05,
-+-2.79393577994475523249e-05,
-+-2.81484870820020636713e-05,
-+-2.83411245732301139656e-05,
-+-2.85171913042964311541e-05,
-+-2.86766179443786176822e-05,
-+-2.88193448221488309965e-05,
-+-2.89453219416760952935e-05,
-+-2.90545089927504981216e-05,
-+-2.91468753556345132793e-05,
-+-2.92224001002483448552e-05,
-+-2.92810719798009543599e-05,
-+-2.93228894188808181459e-05,
-+-2.93478604960236810328e-05,
-+-2.93560029207774113129e-05,
-+-2.93473440052880433669e-05,
-+-2.93219206304335843936e-05,
-+-2.92797792065350247323e-05,
-+-2.92209756286776301080e-05,
-+-2.91455752266783351279e-05,
-+-2.90536527097378728982e-05,
-+-2.89452921058199178666e-05,
-+-2.88205866958015281636e-05,
-+-2.86796389424427922371e-05,
-+-2.85225604142267152093e-05,
-+-2.83494717041206751521e-05,
-+-2.81605023433202391432e-05,
-+-2.79557907100283667510e-05,
-+-2.77354839333381227289e-05,
-+-2.74997377922758771290e-05,
-+-2.72487166100799959093e-05,
-+-2.69825931437795252883e-05,
-+-2.67015484691465684885e-05,
-+-2.64057718610977712947e-05,
-+-2.60954606696212069907e-05,
-+-2.57708201913090847589e-05,
-+-2.54320635365780473264e-05,
-+-2.50794114926622185510e-05,
-+-2.47130923824611631432e-05,
-+-2.43333419193429083098e-05,
-+-2.39404030579782670638e-05,
-+-2.35345258413101434184e-05,
-+-2.31159672437494752078e-05,
-+-2.26849910106949353332e-05,
-+-2.22418674944758635930e-05,
-+-2.17868734868193039472e-05,
-+-2.13202920479438652059e-05,
-+-2.08424123323838041491e-05,
-+-2.03535294116561999106e-05,
-+-1.98539440938636343103e-05,
-+-1.93439627403565497755e-05,
-+-1.88238970795673100412e-05,
-+-1.82940640181116715769e-05,
-+-1.77547854492869263538e-05,
-+-1.72063880590754648210e-05,
-+-1.66492031297704090782e-05,
-+-1.60835663413408166554e-05,
-+-1.55098175706546329380e-05,
-+-1.49283006886787883053e-05,
-+-1.43393633557766034665e-05,
-+-1.37433568152237134072e-05,
-+-1.31406356850657396885e-05,
-+-1.25315577484303698698e-05,
-+-1.19164837424470248790e-05,
-+-1.12957771458482026110e-05,
-+-1.06698039654265613285e-05,
-+-1.00389325214426427445e-05,
-+-9.40353323211844157182e-06,
-+-8.76397839734067131087e-06,
-+-8.12064198169950727862e-06,
-+-7.47389939698852350989e-06,
-+-6.82412728429159437049e-06,
-+-6.17170329578283326645e-06,
-+-5.51700587636662085001e-06,
-+-4.86041404527424057491e-06,
-+-4.20230717776569626185e-06,
-+-3.54306478703081491720e-06,
-+-2.88306630643768218789e-06,
-+-2.22269087224340068095e-06,
-+-1.56231710689249263685e-06,
-+-9.02322903026265212716e-07,
-+-2.43085208325657879777e-07,
-+ 4.15020188692070241853e-07,
-+ 1.07161887179235378480e-06,
-+ 1.72633800896124487047e-06,
-+ 2.37880656301163715107e-06,
-+ 3.02865550076134820403e-06,
-+ 3.67551800066570465779e-06,
-+ 4.31902965876675653769e-06,
-+ 4.95882869287509108695e-06,
-+ 5.59455614484735050385e-06,
-+ 6.22585608085616216224e-06,
-+ 6.85237578953995891761e-06,
-+ 7.47376597792307623553e-06,
-+ 8.08968096499781815715e-06,
-+ 8.69977887286206749402e-06,
-+ 9.30372181530736666231e-06,
-+ 9.90117608375414723029e-06,
-+ 1.04918123304324667667e-05,
-+ 1.10753057487085165546e-05,
-+ 1.16513362504588705059e-05,
-+ 1.22195886403962862164e-05,
-+ 1.27797527872529815987e-05,
-+ 1.33315237917292095805e-05,
-+ 1.38746021511168710365e-05,
-+ 1.44086939205101016335e-05,
-+ 1.49335108705172178858e-05,
-+ 1.54487706413894936150e-05,
-+ 1.59541968934863105428e-05,
-+ 1.64495194539962877323e-05,
-+ 1.69344744598370269687e-05,
-+ 1.74088044966656047203e-05,
-+ 1.78722587339096677364e-05,
-+ 1.83245930557734450217e-05,
-+ 1.87655701881329496747e-05,
-+ 1.91949598212630230727e-05,
-+ 1.96125387283323720589e-05,
-+ 2.00180908796079946171e-05,
-+ 2.04114075523055411008e-05,
-+ 2.07922874360462036562e-05,
-+ 2.11605367338478548244e-05,
-+ 2.15159692586163032817e-05,
-+ 2.18584065250839677179e-05,
-+ 2.21876778371520620508e-05,
-+ 2.25036203706003066312e-05,
-+ 2.28060792511126929382e-05,
-+ 2.30949076276010261842e-05,
-+ 2.33699667407799707231e-05,
-+ 2.36311259869688547377e-05,
-+ 2.38782629770920889936e-05,
-+ 2.41112635908534832393e-05,
-+ 2.43300220260626135784e-05,
-+ 2.45344408430947687194e-05,
-+ 2.47244310044678461521e-05,
-+ 2.48999119095234487111e-05,
-+ 2.50608114242014547006e-05,
-+ 2.52070659059005263759e-05,
-+ 2.53386202234201725390e-05,
-+ 2.54554277719819088525e-05,
-+ 2.55574504833309083937e-05,
-+ 2.56446588309218829473e-05,
-+ 2.57170318301951886415e-05,
-+ 2.57745570339536455825e-05,
-+ 2.58172305228509982138e-05,
-+ 2.58450568910080320990e-05,
-+ 2.58580492267732674574e-05,
-+ 2.58562290886494391582e-05,
-+ 2.58396264764083687885e-05,
-+ 2.58082797974207070447e-05,
-+ 2.57622358282285832381e-05,
-+ 2.57015496713930713401e-05,
-+ 2.56262847076503301675e-05,
-+ 2.55365125434126198959e-05,
-+ 2.54323129536535378888e-05,
-+ 2.53137738202205607126e-05,
-+ 2.51809910656159463322e-05,
-+ 2.50340685822968625073e-05,
-+ 2.48731181575412977117e-05,
-+ 2.46982593939325721589e-05,
-+ 2.45096196255167505238e-05,
-+ 2.43073338296873121584e-05,
-+ 2.40915445348619378086e-05,
-+ 2.38624017240045997246e-05,
-+ 2.36200627340624288075e-05,
-+ 2.33646921513807236321e-05,
-+ 2.30964617031644264128e-05,
-+ 2.28155501450558444859e-05,
-+ 2.25221431449012520778e-05,
-+ 2.22164331627798575491e-05,
-+ 2.18986193273720365431e-05,
-+ 2.15689073087443379398e-05,
-+ 2.12275091876318188378e-05,
-+ 2.08746433212990305033e-05,
-+ 2.05105342060640502609e-05,
-+ 2.01354123365703269947e-05,
-+ 1.97495140618939641253e-05,
-+ 1.93530814385750261550e-05,
-+ 1.89463620806633047968e-05,
-+ 1.85296090068704985814e-05,
-+ 1.81030804849221997979e-05,
-+ 1.76670398732044751401e-05,
-+ 1.72217554598013985296e-05,
-+ 1.67675002990209279609e-05,
-+ 1.63045520455078192621e-05,
-+ 1.58331927860449225669e-05,
-+ 1.53537088691371193265e-05,
-+ 1.48663907324963997689e-05,
-+ 1.43715327285100159978e-05,
-+ 1.38694329478100649496e-05,
-+ 1.33603930410508834665e-05,
-+ 1.28447180389832295180e-05,
-+ 1.23227161709552708244e-05,
-+ 1.17946986819301291035e-05,
-+ 1.12609796481351171312e-05,
-+ 1.07218757914499571946e-05,
-+ 1.01777062926427738516e-05,
-+ 9.62879260356504592831e-06,
-+ 9.07545825840731586903e-06,
-+ 8.51802868414534395823e-06,
-+ 7.95683101026131923061e-06,
-+ 7.39219387787010935662e-06,
-+ 6.82444724835357750922e-06,
-+ 6.25392221161505916386e-06,
-+ 5.68095079406488222078e-06,
-+ 5.10586576644759276318e-06,
-+ 4.52900045162168937197e-06,
-+ 3.95068853240210902949e-06,
-+ 3.37126385957580590002e-06,
-+ 2.79106026020026960787e-06,
-+ 2.21041134629440781136e-06,
-+ 1.62965032403097053739e-06,
-+ 1.04910980353893797621e-06,
-+ 4.69121609423969816268e-07,
-+-1.09983407885784446779e-07,
-+-6.87875559861819363080e-07,
-+-1.26422650655941540912e-06,
-+-1.83870944215866707785e-06,
-+-2.41099927925814251037e-06,
-+-2.98077283181781552669e-06,
-+-3.54770899664894408157e-06,
-+-4.11148893334953399492e-06,
-+-4.67179624258384839990e-06,
-+-5.22831714261491216074e-06,
-+-5.78074064397335153019e-06,
-+-6.32875872218480591626e-06,
-+-6.87206648846043886310e-06,
-+-7.41036235823793521568e-06,
-+-7.94334821749933495355e-06,
-+-8.47072958676628828367e-06,
-+-8.99221578268483114820e-06,
-+-9.50752007711151433478e-06,
-+-1.00163598536144939110e-05,
-+-1.05184567613050262248e-05,
-+-1.10135368659148606880e-05,
-+-1.15013307980458232298e-05,
-+-1.19815738984936175071e-05,
-+-1.24540063605928145280e-05,
-+-1.29183733694884611521e-05,
-+-1.33744252382685912655e-05,
-+-1.38219175408834683421e-05,
-+-1.42606112417824770782e-05,
-+-1.46902728222004355977e-05,
-+-1.51106744030272206920e-05,
-+-1.55215938641985491263e-05,
-+-1.59228149605396966692e-05,
-+-1.63141274340170367916e-05,
-+-1.66953271223259263928e-05,
-+-1.70662160637601778752e-05,
-+-1.74266025983238355662e-05,
-+-1.77763014650210005691e-05,
-+-1.81151338952815387428e-05,
-+-1.84429277024754141470e-05,
-+-1.87595173674722256573e-05,
-+-1.90647441202047199617e-05,
-+-1.93584560171974732774e-05,
-+-1.96405080150238890778e-05,
-+-1.99107620396580777466e-05,
-+-2.01690870516893970240e-05,
-+-2.04153591073708575137e-05,
-+-2.06494614154744169461e-05,
-+-2.08712843899290058163e-05,
-+-2.10807256982194106203e-05,
-+-2.12776903055268819069e-05,
-+-2.14620905145943367527e-05,
-+-2.16338460013017256061e-05,
-+-2.17928838459405791773e-05,
-+-2.19391385601769272338e-05,
-+-2.20725521096971615139e-05,
-+-2.21930739325313472097e-05,
-+-2.23006609530529530257e-05,
-+-2.23952775916547660337e-05,
-+-2.24768957701059413827e-05,
-+-2.25454949125917081373e-05,
-+-2.26010619424491719610e-05,
-+-2.26435912746056351556e-05,
-+-2.26730848037337861828e-05,
-+-2.26895518881395304210e-05,
-+-2.26930093293992605151e-05,
-+-2.26834813477678370105e-05,
-+-2.26609995533789395977e-05,
-+-2.26256029132635929800e-05,
-+-2.25773377142134946906e-05,
-+-2.25162575215193229503e-05,
-+-2.24424231336153037980e-05,
-+-2.23559025326656501465e-05,
-+-2.22567708311276078921e-05,
-+-2.21451102143313804113e-05,
-+-2.20210098791169147888e-05,
-+-2.18845659685713447666e-05,
-+-2.17358815029120373732e-05,
-+-2.15750663065627956596e-05,
-+-2.14022369314727249265e-05,
-+-2.12175165767294450026e-05,
-+-2.10210350045200421447e-05,
-+-2.08129284524956139116e-05,
-+-2.05933395425968121279e-05,
-+-2.03624171863999439073e-05,
-+-2.01203164870448847703e-05,
-+-1.98671986378080534994e-05,
-+-1.96032308173856533286e-05,
-+-1.93285860819534852074e-05,
-+-1.90434432540722883950e-05,
-+-1.87479868085084750535e-05,
-+-1.84424067550420635135e-05,
-+-1.81268985183354106028e-05,
-+-1.78016628149372209476e-05,
-+-1.74669055274989030828e-05,
-+-1.71228375762811146975e-05,
-+-1.67696747880257406472e-05,
-+-1.64076377622852373006e-05,
-+-1.60369517352758793533e-05,
-+-1.56578464413495735093e-05,
-+-1.52705559721640566414e-05,
-+-1.48753186336378656238e-05,
-+-1.44723768007754817841e-05,
-+-1.40619767704562352530e-05,
-+-1.36443686122615369144e-05,
-+-1.32198060174485617084e-05,
-+-1.27885461461470160532e-05,
-+-1.23508494728771689751e-05,
-+-1.19069796304737485969e-05,
-+-1.14572032525241123438e-05,
-+-1.10017898143939981797e-05,
-+-1.05410114729497751473e-05,
-+-1.00751429050663908628e-05,
-+-9.60446114501671036024e-06,
-+-9.12924542083821511740e-06,
-+-8.64977698977298705156e-06,
-+-8.16633897287741896158e-06,
-+-7.67921618889827246499e-06,
-+-7.18869498751202211574e-06,
-+-6.69506308202449553879e-06,
-+-6.19860938162804727016e-06,
-+-5.69962382331348281457e-06,
-+-5.19839720353396213883e-06,
-+-4.69522100971802372742e-06,
-+-4.19038725172889743185e-06,
-+-3.68418829336696433132e-06,
-+-3.17691668401197745318e-06,
-+-2.66886499050160637978e-06,
-+-2.16032562934221739981e-06,
-+-1.65159069934772865291e-06,
-+-1.14295181480165719692e-06,
-+-6.34699939237223993940e-07,
-+-1.27125219930865964068e-07,
-+ 3.79483176804446976763e-07,
-+ 8.84837229415048084051e-07,
-+ 1.38865022392344135295e-06,
-+ 1.89063691565660948537e-06,
-+ 2.39051368980350543056e-06,
-+ 2.88799872070356053645e-06,
-+ 3.38281212979515968504e-06,
-+ 3.87467614211226955731e-06,
-+ 4.36331524126018218350e-06,
-+ 4.84845632277730857507e-06,
-+ 5.32982884579943108584e-06,
-+ 5.80716498294156890627e-06,
-+ 6.28019976832197123205e-06,
-+ 6.74867124362975824505e-06,
-+ 7.21232060217923931738e-06,
-+ 7.67089233085512087109e-06,
-+ 8.12413434987819258522e-06,
-+ 8.57179815031460507597e-06,
-+ 9.01363892925431026452e-06,
-+ 9.44941572258580350576e-06,
-+ 9.87889153529582866875e-06,
-+ 1.03018334692242354077e-05,
-+ 1.07180128482058532928e-05,
-+ 1.11272053405328737749e-05,
-+ 1.15291910786727369798e-05,
-+ 1.19237547761785921742e-05,
-+ 1.23106858417307881825e-05,
-+ 1.26897784902497355293e-05,
-+ 1.30608318510224895531e-05,
-+ 1.34236500727868487704e-05,
-+ 1.37780424257190294344e-05,
-+ 1.41238234002725815088e-05,
-+ 1.44608128028181916441e-05,
-+ 1.47888358480361837552e-05,
-+ 1.51077232480150609343e-05,
-+ 1.54173112980111264947e-05,
-+ 1.57174419588311981054e-05,
-+ 1.60079629357866409767e-05,
-+ 1.62887277541956994331e-05,
-+ 1.65595958313870623361e-05,
-+ 1.68204325451708860712e-05,
-+ 1.70711092987549151222e-05,
-+ 1.73115035820617087312e-05,
-+ 1.75414990294297246641e-05,
-+ 1.77609854736682751155e-05,
-+ 1.79698589964435695681e-05,
-+ 1.81680219749743536840e-05,
-+ 1.83553831250179843454e-05,
-+ 1.85318575401295563383e-05,
-+ 1.86973667271814836071e-05,
-+ 1.88518386381246428555e-05,
-+ 1.89952076979892261869e-05,
-+ 1.91274148291101984921e-05,
-+ 1.92484074715740798728e-05,
-+ 1.93581395998826688587e-05,
-+ 1.94565717358317040323e-05,
-+ 1.95436709576050705363e-05,
-+ 1.96194109050871230563e-05,
-+ 1.96837717813977941246e-05,
-+ 1.97367403506575926565e-05,
-+ 1.97783099319904582180e-05,
-+ 1.98084803897790467670e-05,
-+ 1.98272581201802304074e-05,
-+ 1.98346560339216278375e-05,
-+ 1.98306935353937785049e-05,
-+ 1.98153964980584857704e-05,
-+ 1.97887972361948640476e-05,
-+ 1.97509344730071558156e-05,
-+ 1.97018533051198989033e-05,
-+ 1.96416051634883520843e-05,
-+ 1.95702477707543367439e-05,
-+ 1.94878450950789703635e-05,
-+ 1.93944673004863832040e-05,
-+ 1.92901906937534684103e-05,
-+ 1.91750976678850051373e-05,
-+ 1.90492766422124609142e-05,
-+ 1.89128219991563888266e-05,
-+ 1.87658340176993620855e-05,
-+ 1.86084188036114926950e-05,
-+ 1.84406882164763881947e-05,
-+ 1.82627597935659933724e-05,
-+ 1.80747566706147357355e-05,
-+ 1.78768074995447826664e-05,
-+ 1.76690463631958512617e-05,
-+ 1.74516126871156478269e-05,
-+ 1.72246511484645271060e-05,
-+ 1.69883115820999146554e-05,
-+ 1.67427488838910094079e-05,
-+ 1.64881229113318102759e-05,
-+ 1.62245983815127213317e-05,
-+ 1.59523447665149745417e-05,
-+ 1.56715361862937387256e-05,
-+ 1.53823512991161662699e-05,
-+ 1.50849731896229228884e-05,
-+ 1.47795892545813357618e-05,
-+ 1.44663910864051258596e-05,
-+ 1.41455743545015973133e-05,
-+ 1.38173386845338111450e-05,
-+ 1.34818875356564122405e-05,
-+ 1.31394280758153236577e-05,
-+ 1.27901710551714238936e-05,
-+ 1.24343306777357970924e-05,
-+ 1.20721244712898652016e-05,
-+ 1.17037731556691947766e-05,
-+ 1.13295005094903200078e-05,
-+ 1.09495332354001166718e-05,
-+ 1.05641008239284915968e-05,
-+ 1.01734354160254741075e-05,
-+ 9.77777166436417707733e-06,
-+ 9.37734659349238440105e-06,
-+ 8.97239945891504566951e-06,
-+ 8.56317160519109046130e-06,
-+ 8.14990632312829315351e-06,
-+ 7.73284870615977176810e-06,
-+ 7.31224550598672419900e-06,
-+ 6.88834498757161637657e-06,
-+ 6.46139678356662984916e-06,
-+ 6.03165174826215254474e-06,
-+ 5.59936181114026503485e-06,
-+ 5.16477983011814751843e-06,
-+ 4.72815944456637594131e-06,
-+ 4.28975492818819883339e-06,
-+ 3.84982104183822503198e-06,
-+ 3.40861288638080421604e-06,
-+ 2.96638575565200338164e-06,
-+ 2.52339498962473315831e-06,
-+ 2.07989582785497810255e-06,
-+ 1.63614326329362652845e-06,
-+ 1.19239189654723987055e-06,
-+ 7.48895790669445095407e-07,
-+ 3.05908326571625776241e-07,
-+-1.36317940881114572753e-07,
-+-5.77531425986414698518e-07,
-+-1.01748165446873717438e-06,
-+-1.45591940480376818372e-06,
-+-1.89259684853121109570e-06,
-+-2.32726768946181945073e-06,
-+-2.75968730172187791391e-06,
-+-3.18961286654260444098e-06,
-+-3.61680350772475395115e-06,
-+-4.04102042570235190153e-06,
-+-4.46202703013145677961e-06,
-+-4.87958907093086315863e-06,
-+-5.29347476770270431638e-06,
-+-5.70345493746202430210e-06,
-+-6.10930312060542652779e-06,
-+-6.51079570505022606116e-06,
-+-6.90771204847647766264e-06,
-+-7.29983459860577372710e-06,
-+-7.68694901145177016447e-06,
-+-8.06884426747877637565e-06,
-+-8.44531278560606176982e-06,
-+-8.81615053499690261524e-06,
-+-9.18115714457292360416e-06,
-+-9.54013601019537525608e-06,
-+-9.89289439945689410725e-06,
-+-1.02392435540285157503e-05,
-+-1.05789987895082151180e-05,
-+-1.09119795927181496489e-05,
-+-1.12380097164049367058e-05,
-+-1.15569172712818179387e-05,
-+-1.18685348153817650919e-05,
-+-1.21726994406635834228e-05,
-+-1.24692528568320288901e-05,
-+-1.27580414723287455134e-05,
-+-1.30389164724542902805e-05,
-+-1.33117338945781214641e-05,
-+-1.35763547004100975057e-05,
-+-1.38326448452840637915e-05,
-+-1.40804753444306167702e-05,
-+-1.43197223362026314689e-05,
-+-1.45502671422277009592e-05,
-+-1.47719963244507672032e-05,
-+-1.49848017390525759050e-05,
-+-1.51885805872105738001e-05,
-+-1.53832354626835289546e-05,
-+-1.55686743961984593867e-05,
-+-1.57448108966214301034e-05,
-+-1.59115639888950593595e-05,
-+-1.60688582487281346781e-05,
-+-1.62166238340240249699e-05,
-+-1.63547965130369332254e-05,
-+-1.64833176892467266300e-05,
-+-1.66021344229449986304e-05,
-+-1.67111994495269690472e-05,
-+-1.68104711944856884120e-05,
-+-1.68999137851070388113e-05,
-+-1.69794970588658022861e-05,
-+-1.70491965685248872658e-05,
-+-1.71089935839418872147e-05,
-+-1.71588750905891277256e-05,
-+-1.71988337847946457871e-05,
-+-1.72288680657142012447e-05,
-+-1.72489820240458028352e-05,
-+-1.72591854275000641512e-05,
-+-1.72594937030417242213e-05,
-+-1.72499279159197036566e-05,
-+-1.72305147455039143491e-05,
-+-1.72012864579503712398e-05,
-+-1.71622808757165273689e-05,
-+-1.71135413439511928759e-05,
-+-1.70551166937853976150e-05,
-+-1.69870612025510246137e-05,
-+-1.69094345509577617692e-05,
-+-1.68223017772587667151e-05,
-+-1.67257332284380452606e-05,
-+-1.66198045084538685654e-05,
-+-1.65045964235747666643e-05,
-+-1.63801949248439752678e-05,
-+-1.62466910477154159362e-05,
-+-1.61041808488969476394e-05,
-+-1.59527653404471681951e-05,
-+-1.57925504211673684571e-05,
-+-1.56236468053350227754e-05,
-+-1.54461699488246402123e-05,
-+-1.52602399726646910730e-05,
-+-1.50659815840795875837e-05,
-+-1.48635239950677219589e-05,
-+-1.46530008385678102385e-05,
-+-1.44345500822663306819e-05,
-+-1.42083139401014696147e-05,
-+-1.39744387815186386459e-05,
-+-1.37330750385350818741e-05,
-+-1.34843771106714372927e-05,
-+-1.32285032678095108182e-05,
-+-1.29656155510367461763e-05,
-+-1.26958796715383549959e-05,
-+-1.24194649075998671690e-05,
-+-1.21365439997829936740e-05,
-+-1.18472930443392576808e-05,
-+-1.15518913849262173693e-05,
-+-1.12505215026924608397e-05,
-+-1.09433689047985292748e-05,
-+-1.06306220114370569618e-05,
-+-1.03124720414310326811e-05,
-+-9.98911289646390806746e-06,
-+-9.66074104402634771841e-06,
-+-9.32755539913410898457e-06,
-+-8.98975720490331666607e-06,
-+-8.64754991204318386249e-06,
-+-8.30113905734212395051e-06,
-+-7.95073214121866026069e-06,
-+-7.59653850440942178638e-06,
-+-7.23876920386707314615e-06,
-+-6.87763688794204854321e-06,
-+-6.51335567091628095621e-06,
-+-6.14614100697516552689e-06,
-+-5.77620956367455239778e-06,
-+-5.40377909498920278296e-06,
-+-5.02906831401159492038e-06,
-+-4.65229676537581108160e-06,
-+-4.27368469748049481391e-06,
-+-3.89345293458471427688e-06,
-+-3.51182274885061115744e-06,
-+-3.12901573240642411555e-06,
-+-2.74525366950255710500e-06,
-+-2.36075840884032086628e-06,
-+-1.97575173612730443720e-06,
-+-1.59045524696390774673e-06,
-+-1.20509022010166682739e-06,
-+-8.19877491164466545524e-07,
-+-4.35037326897878480005e-07,
-+-5.07893000186937941852e-08,
-+ 3.32647835264701963937e-07,
-+ 7.15056266991011401958e-07,
-+ 1.09621924837422310365e-06,
-+ 1.47592121985241872538e-06,
-+ 1.85394793018892599705e-06,
-+ 2.23008655655825313813e-06,
-+ 2.60412582354907889203e-06,
-+ 2.97585612102449336496e-06,
-+ 3.34506962075543128396e-06,
-+ 3.71156039179419859137e-06,
-+ 4.07512451449323400283e-06,
-+ 4.43556019312523663384e-06,
-+ 4.79266786703672172316e-06,
-+ 5.14625032027519291555e-06,
-+ 5.49611278963019283487e-06,
-+ 5.84206307102959016220e-06,
-+ 6.18391162423353208402e-06,
-+ 6.52147167576954129561e-06,
-+ 6.85455932005260181654e-06,
-+ 7.18299361864097611125e-06,
-+ 7.50659669756249047314e-06,
-+ 7.82519384267587422464e-06,
-+ 8.13861359300433846395e-06,
-+ 8.44668783199705641891e-06,
-+ 8.74925187666988167100e-06,
-+ 9.04614456457850991435e-06,
-+ 9.33720833857896873390e-06,
-+ 9.62228932933213677251e-06,
-+ 9.90123743550565465295e-06,
-+ 1.01739064016425803086e-05,
-+ 1.04401538936425447330e-05,
-+ 1.06998415718315421479e-05,
-+ 1.09528351615697443715e-05,
-+ 1.11990045213757959499e-05,
-+ 1.14382237085241558977e-05,
-+ 1.16703710420870291280e-05,
-+ 1.18953291633899048006e-05,
-+ 1.21129850938512417829e-05,
-+ 1.23232302901790470909e-05,
-+ 1.25259606968983349296e-05,
-+ 1.27210767961849803022e-05,
-+ 1.29084836549834598316e-05,
-+ 1.30880909693871328668e-05,
-+ 1.32598131062616946208e-05,
-+ 1.34235691420937951136e-05,
-+ 1.35792828990487302932e-05,
-+ 1.37268829782224906786e-05,
-+ 1.38663027900751689578e-05,
-+ 1.39974805820346134686e-05,
-+ 1.41203594632604494623e-05,
-+ 1.42348874265606466504e-05,
-+ 1.43410173674542311574e-05,
-+ 1.44387071003753392044e-05,
-+ 1.45279193720158173131e-05,
-+ 1.46086218718049036649e-05,
-+ 1.46807872395258838879e-05,
-+ 1.47443930700731856367e-05,
-+ 1.47994219153501084768e-05,
-+ 1.48458612833167961215e-05,
-+ 1.48837036341919119975e-05,
-+ 1.49129463738179148723e-05,
-+ 1.49335918441997313264e-05,
-+ 1.49456473112284446691e-05,
-+ 1.49491249496032089275e-05,
-+ 1.49440418249668886146e-05,
-+ 1.49304198732706183515e-05,
-+ 1.49082858773864185118e-05,
-+ 1.48776714409868946381e-05,
-+ 1.48386129597128356167e-05,
-+ 1.47911515896521751179e-05,
-+ 1.47353332131532132959e-05,
-+ 1.46712084019985736114e-05,
-+ 1.45988323779665271851e-05,
-+ 1.45182649708080687578e-05,
-+ 1.44295705736699748613e-05,
-+ 1.43328180959947710691e-05,
-+ 1.42280809139304630388e-05,
-+ 1.41154368182840922366e-05,
-+ 1.39949679600544020416e-05,
-+ 1.38667607935803263323e-05,
-+ 1.37309060173433526632e-05,
-+ 1.35874985124628946476e-05,
-+ 1.34366372789253006354e-05,
-+ 1.32784253695879846650e-05,
-+ 1.31129698220019766261e-05,
-+ 1.29403815880963342583e-05,
-+ 1.27607754617702922906e-05,
-+ 1.25742700044388885011e-05,
-+ 1.23809874685797173814e-05,
-+ 1.21810537193292244224e-05,
-+ 1.19745981541777892090e-05,
-+ 1.17617536208142295677e-05,
-+ 1.15426563331714449024e-05,
-+ 1.13174457857225807409e-05,
-+ 1.10862646660882621001e-05,
-+ 1.08492587659991565309e-05,
-+ 1.06065768906759967075e-05,
-+ 1.03583707666798818434e-05,
-+ 1.01047949482890619580e-05,
-+ 9.84600672246289829138e-06,
-+ 9.58216601244215827264e-06,
-+ 9.31343528005553203603e-06,
-+ 9.03997942678299933766e-06,
-+ 8.76196569363900174996e-06,
-+ 8.47956355993590845071e-06,
-+ 8.19294464098436757177e-06,
-+ 7.90228258480172436834e-06,
-+ 7.60775296787702002085e-06,
-+ 7.30953319006439522813e-06,
-+ 7.00780236866348362574e-06,
-+ 6.70274123175005229701e-06,
-+ 6.39453201082003652993e-06,
-+ 6.08335833281021253502e-06,
-+ 5.76940511155902288967e-06,
-+ 5.45285843877125582177e-06,
-+ 5.13390547455034551393e-06,
-+ 4.81273433756231556671e-06,
-+ 4.48953399489534794848e-06,
-+ 4.16449415167896653590e-06,
-+ 3.83780514052692429906e-06,
-+ 3.50965781086775528301e-06,
-+ 3.18024341822695296120e-06,
-+ 2.84975351352448496748e-06,
-+ 2.51837983245139741199e-06,
-+ 2.18631418498888039782e-06,
-+ 1.85374834513309478132e-06,
-+ 1.52087394088868180660e-06,
-+ 1.18788234459368242750e-06,
-+ 8.54964563638969000998e-07,
-+ 5.22311131639455979077e-07,
-+ 1.90112000130503982774e-07,
-+-1.41443569165127144841e-07,
-+-4.72167111427258322109e-07,
-+-8.01871065130554529929e-07,
-+-1.13036887767394417904e-06,
-+-1.45747511019990077643e-06,
-+-1.78300554152943349745e-06,
-+-2.10677727116673305869e-06,
-+-2.42860882131162050769e-06,
-+-2.74832023782412414206e-06,
-+-3.06573319008543263771e-06,
-+-3.38067106969957008626e-06,
-+-3.69295908798608184869e-06,
-+-4.00242437219907550613e-06,
-+-4.30889606043524369669e-06,
-+-4.61220539516788939752e-06,
-+-4.91218581536073784053e-06,
-+-5.20867304711107137976e-06,
-+-5.50150519277325040547e-06,
-+-5.79052281851486924603e-06,
-+-6.07556904025867903059e-06,
-+-6.35648960796446912367e-06,
-+-6.63313298820617108662e-06,
-+-6.90535044500056127508e-06,
-+-7.17299611884493175119e-06,
-+-7.43592710392244173663e-06,
-+-7.69400352343472750019e-06,
-+-7.94708860302274787185e-06,
-+-8.19504874223798014101e-06,
-+-8.43775358402712548757e-06,
-+-8.67507608219503231826e-06,
-+-8.90689256681143526513e-06,
-+-9.13308280752864666172e-06,
-+-9.35353007477842320907e-06,
-+-9.56812119881768913406e-06,
-+-9.77674662659346799308e-06,
-+-9.97930047640225587741e-06,
-+-1.01756805903098395061e-05,
-+-1.03657885843171664226e-05,
-+-1.05495298962378540402e-05,
-+-1.07268138312754163948e-05,
-+-1.08975536052689632541e-05,
-+-1.10616663855950794401e-05,
-+-1.12190733297047288709e-05,
-+-1.13696996212789541697e-05,
-+-1.15134745039878948566e-05,
-+-1.16503313128391599354e-05,
-+-1.17802075031027646805e-05,
-+-1.19030446768033701643e-05,
-+-1.20187886067651972661e-05,
-+-1.21273892582080803395e-05,
-+-1.22288008078826377517e-05,
-+-1.23229816607413100770e-05,
-+-1.24098944641409426887e-05,
-+-1.24895061195742445941e-05,
-+-1.25617877919291833080e-05,
-+-1.26267149162764970278e-05,
-+-1.26842672021870910226e-05,
-+-1.27344286355826809563e-05,
-+-1.27771874781232745640e-05,
-+-1.28125362641396452218e-05,
-+-1.28404717951158474197e-05,
-+-1.28609951317310474550e-05,
-+-1.28741115834723465414e-05,
-+-1.28798306958283372134e-05,
-+-1.28781662350772487912e-05,
-+-1.28691361706835918807e-05,
-+-1.28527626553190634970e-05,
-+-1.28290720025245128650e-05,
-+-1.27980946620313942489e-05,
-+-1.27598651927620886218e-05,
-+-1.27144222335301226119e-05,
-+-1.26618084714623414664e-05,
-+-1.26020706081659076143e-05,
-+-1.25352593236666657602e-05,
-+-1.24614292381415428035e-05,
-+-1.23806388714751623682e-05,
-+-1.22929506006672047076e-05,
-+-1.21984306151204884824e-05,
-+-1.20971488698402506546e-05,
-+-1.19891790365764339750e-05,
-+-1.18745984529418113659e-05,
-+-1.17534880695398776456e-05,
-+-1.16259323951374368445e-05,
-+-1.14920194399183685165e-05,
-+-1.13518406568538079223e-05,
-+-1.12054908812311493295e-05,
-+-1.10530682683752438347e-05,
-+-1.08946742296059593923e-05,
-+-1.07304133664714714479e-05,
-+-1.05603934032992665185e-05,
-+-1.03847251181075779763e-05,
-+-1.02035222719208779302e-05,
-+-1.00169015365332405226e-05,
-+-9.82498242076738657132e-06,
-+-9.62788719526892533595e-06,
-+-9.42574081589087935042e-06,
-+-9.21867084571004267567e-06,
-+-9.00680737572287916197e-06,
-+-8.79028294427637022824e-06,
-+-8.56923245527351259271e-06,
-+-8.34379309521075756921e-06,
-+-8.11410424909460554577e-06,
-+-7.88030741528924488369e-06,
-+-7.64254611934633504094e-06,
-+-7.40096582686917382960e-06,
-+-7.15571385546351836380e-06,
-+-6.90693928582781290984e-06,
-+-6.65479287203611895166e-06,
-+-6.39942695106712918212e-06,
-+-6.14099535163319854876e-06,
-+-5.87965330236342373891e-06,
-+-5.61555733939511250274e-06,
-+-5.34886521342830269742e-06,
-+-5.07973579629795705422e-06,
-+-4.80832898711880610677e-06,
-+-4.53480561805786592893e-06,
-+-4.25932735978965902460e-06,
-+-3.98205662668941065763e-06,
-+-3.70315648181929639785e-06,
-+-3.42279054176300851270e-06,
-+-3.14112288136435437299e-06,
-+-2.85831793842106375632e-06,
-+-2.57454041839861196264e-06,
-+-2.28995519920570692832e-06,
-+-2.00472723609599568439e-06,
-+-1.71902146674648263972e-06,
-+-1.43300271656756140053e-06,
-+-1.14683560429862268911e-06,
-+-8.60684447942252036623e-07,
-+-5.74713171094427766504e-07,
-+-2.89085209713597664617e-07,
-+-3.96341939478251296110e-09,
-+ 2.80490016808534609067e-07,
-+ 5.64113679962953421250e-07,
-+ 8.46747006173344896037e-07,
-+ 1.12823037680340410583e-06,
-+ 1.40840520793811109215e-06,
-+ 1.68711403904242672689e-06,
-+ 1.96420062076637285675e-06,
-+ 2.23951000184795544334e-06,
-+ 2.51288861506598641053e-06,
-+ 2.78418436219555765417e-06,
-+ 3.05324669791958273155e-06,
-+ 3.31992671265051673821e-06,
-+ 3.58407721421717316118e-06,
-+ 3.84555280837218626654e-06,
-+ 4.10420997807660228022e-06,
-+ 4.35990716151877168199e-06,
-+ 4.61250482882560770565e-06,
-+ 4.86186555742507531383e-06,
-+ 5.10785410601973079235e-06,
-+ 5.35033748713194356707e-06,
-+ 5.58918503818238221671e-06,
-+ 5.82426849106429956731e-06,
-+ 6.05546204017706400874e-06,
-+ 6.28264240888338113098e-06,
-+ 6.50568891435568739365e-06,
-+ 6.72448353077756515444e-06,
-+ 6.93891095087089373919e-06,
-+ 7.14885864570919282062e-06,
-+ 7.35421692279753319929e-06,
-+ 7.55487898238148465092e-06,
-+ 7.75074097196019129528e-06,
-+ 7.94170203897623056888e-06,
-+ 8.12766438165342534124e-06,
-+ 8.30853329796486298722e-06,
-+ 8.48421723269773222391e-06,
-+ 8.65462782259947107971e-06,
-+ 8.81967993958106861606e-06,
-+ 8.97929173195711876623e-06,
-+ 9.13338466370594821242e-06,
-+ 9.28188355172597093559e-06,
-+ 9.42471660107943996656e-06,
-+ 9.56181543820204782021e-06,
-+ 9.69311514206661032516e-06,
-+ 9.81855427328706617540e-06,
-+ 9.93807490115107773816e-06,
-+ 1.00516226285705943843e-05,
-+ 1.01591466149406832020e-05,
-+ 1.02605995968987750983e-05,
-+ 1.03559379069769316912e-05,
-+ 1.04451214901417424743e-05,
-+ 1.05281139182170699055e-05,
-+ 1.06048824021864677416e-05,
-+ 1.06753978023731855288e-05,
-+ 1.07396346364968783339e-05,
-+ 1.07975710856074994448e-05,
-+ 1.08491889978979006982e-05,
-+ 1.08944738903980051003e-05,
-+ 1.09334149485546700144e-05,
-+ 1.09660050237023010909e-05,
-+ 1.09922406284309627094e-05,
-+ 1.10121219298593066863e-05,
-+ 1.10256527408215773174e-05,
-+ 1.10328405089781558080e-05,
-+ 1.10336963038616736523e-05,
-+ 1.10282348018699333952e-05,
-+ 1.10164742692203395746e-05,
-+ 1.09984365428796701980e-05,
-+ 1.09741470094854162102e-05,
-+ 1.09436345822753026573e-05,
-+ 1.09069316760433128688e-05,
-+ 1.08640741801411637853e-05,
-+ 1.08151014295454121441e-05,
-+ 1.07600561740116316219e-05,
-+ 1.06989845453377939037e-05,
-+ 1.06319360227604537122e-05,
-+ 1.05589633965072819227e-05,
-+ 1.04801227295333686110e-05,
-+ 1.03954733174649689091e-05,
-+ 1.03050776467800735478e-05,
-+ 1.02090013512532056038e-05,
-+ 1.01073131666939828753e-05,
-+ 1.00000848840093901980e-05,
-+ 9.88739130062094606394e-06,
-+ 9.76931017026862892453e-06,
-+ 9.64592215123430269373e-06,
-+ 9.51731075301832287069e-06,
-+ 9.38356228150362642153e-06,
-+ 9.24476578264260636546e-06,
-+ 9.10101298470273608427e-06,
-+ 8.95239823910756736568e-06,
-+ 8.79901845991063759865e-06,
-+ 8.64097306194044156673e-06,
-+ 8.47836389765517216299e-06,
-+ 8.31129519274676613631e-06,
-+ 8.13987348053439576051e-06,
-+ 7.96420753518800302127e-06,
-+ 7.78440830382320983472e-06,
-+ 7.60058883750940706770e-06,
-+ 7.41286422123340111201e-06,
-+ 7.22135150286187937354e-06,
-+ 7.02616962114339291517e-06,
-+ 6.82743933279976089379e-06,
-+ 6.62528313874512338812e-06,
-+ 6.41982520947684842004e-06,
-+ 6.21119130968985121773e-06,
-+ 5.99950872215320453294e-06,
-+ 5.78490617089735561883e-06,
-+ 5.56751374375751685266e-06,
-+ 5.34746281431924760940e-06,
-+ 5.12488596331278031701e-06,
-+ 4.89991689950258687289e-06,
-+ 4.67269038011961418454e-06,
-+ 4.44334213087987709952e-06,
-+ 4.21200876564441589159e-06,
-+ 3.97882770575729567648e-06,
-+ 3.74393709911667144121e-06,
-+ 3.50747573902317319374e-06,
-+ 3.26958298285330172902e-06,
-+ 3.03039867060520659957e-06,
-+ 2.79006304336402052000e-06,
-+ 2.54871666173396763366e-06,
-+ 2.30650032428370582201e-06,
-+ 2.06355498605534895103e-06,
-+ 1.82002167717590069487e-06,
-+ 1.57604142162576490206e-06,
-+ 1.33175515621080687286e-06,
-+ 1.08730364977607694810e-06,
-+ 8.42827422715224723608e-07,
-+ 5.98466666817798730862e-07,
-+ 3.54361165500383015065e-07,
-+ 1.10650214466601145526e-07,
-+-1.32527457159341769654e-07,
-+-3.75033765181279387019e-07,
-+-6.16731348117982223764e-07,
-+-8.57483644384870604974e-07,
-+-1.09715496882697242401e-06,
-+-1.33561058856459451812e-06,
-+-1.57271679809768592289e-06,
-+-1.80834099364739390638e-06,
-+-2.04235174667385346287e-06,
-+-2.27461887654183985059e-06,
-+-2.50501352229047160599e-06,
-+-2.73340821346838846000e-06,
-+-2.95967693999581947631e-06,
-+-3.18369522101568454449e-06,
-+-3.40534017269651038867e-06,
-+-3.62449057495060442016e-06,
-+-3.84102693703176620771e-06,
-+-4.05483156197683158547e-06,
-+-4.26578860985994465493e-06,
-+-4.47378415981817885059e-06,
-+-4.67870627082610431870e-06,
-+-4.88044504117963632650e-06,
-+-5.07889266666103897304e-06,
-+-5.27394349735436316360e-06,
-+-5.46549409308178958515e-06,
-+-5.65344327743282125745e-06,
-+-5.83769219035584263823e-06,
-+-6.01814433929215356056e-06,
-+-6.19470564881734900520e-06,
-+-6.36728450877158616566e-06,
-+-6.53579182085452806356e-06,
-+-6.70014104365581900433e-06,
-+-6.86024823610766216613e-06,
-+-7.01603209933177423939e-06,
-+-7.16741401686316151218e-06,
-+-7.31431809323110943569e-06,
-+-7.45667119087909145226e-06,
-+-7.59440296540647431485e-06,
-+-7.72744589911581192265e-06,
-+-7.85573533285050310242e-06,
-+-7.97920949610866873263e-06,
-+-8.09780953542020220872e-06,
-+-8.21147954097478835185e-06,
-+-8.32016657148992507269e-06,
-+-8.42382067730890197923e-06,
-+-8.52239492171977940256e-06,
-+-8.61584540048746502295e-06,
-+-8.70413125959197291938e-06,
-+-8.78721471116717128705e-06,
-+-8.86506104763514668932e-06,
-+-8.93763865403249516855e-06,
-+-9.00491901852594998912e-06,
-+-9.06687674111571462719e-06,
-+-9.12348954052592163661e-06,
-+-9.17473825928260702616e-06,
-+-9.22060686698159047512e-06,
-+-9.26108246174664932824e-06,
-+-9.29615526988461694400e-06,
-+-9.32581864373973304274e-06,
-+-9.35006905775386307602e-06,
-+-9.36890610273917822759e-06,
-+-9.38233247837104300938e-06,
-+-9.39035398390946727946e-06,
-+-9.39297950715976480397e-06,
-+-9.39022101168187463889e-06,
-+-9.38209352226113891724e-06,
-+-9.36861510865258015606e-06,
-+-9.34980686761262702199e-06,
-+-9.32569290323271860845e-06,
-+-9.29630030559048952147e-06,
-+-9.26165912773481235900e-06,
-+-9.22180236102228707016e-06,
-+-9.17676590882337654416e-06,
-+-9.12658855861738727770e-06,
-+-9.07131195249644772880e-06,
-+-9.01098055609939421230e-06,
-+-8.94564162599733138977e-06,
-+-8.87534517555361527068e-06,
-+-8.80014393928162666969e-06,
-+-8.72009333572471611652e-06,
-+-8.63525142888329921994e-06,
-+-8.54567888821502508222e-06,
-+-8.45143894723457394103e-06,
-+-8.35259736074052112995e-06,
-+-8.24922236069722452712e-06,
-+-8.14138461080064133836e-06,
-+-8.02915715975743407074e-06,
-+-7.91261539330765898304e-06,
-+-7.79183698502164539547e-06,
-+-7.66690184590263985908e-06,
-+-7.53789207282747358732e-06,
-+-7.40489189585616646447e-06,
-+-7.26798762444797763775e-06,
-+-7.12726759261192169612e-06,
-+-6.98282210303029636403e-06,
-+-6.83474337018834747465e-06,
-+-6.68312546254524426573e-06,
-+-6.52806424378415029071e-06,
-+-6.36965731317252602944e-06,
-+-6.20800394507595081702e-06,
-+-6.04320502765754885186e-06,
-+-5.87536300080224453186e-06,
-+-5.70458179330339185380e-06,
-+-5.53096675935019674964e-06,
-+-5.35462461435186519118e-06,
-+-5.17566337014321141424e-06,
-+-4.99419226960263364762e-06,
-+-4.81032172072758387396e-06,
-+-4.62416323020455543279e-06,
-+-4.43582933651357265599e-06,
-+-4.24543354260686772332e-06,
-+-4.05309024820171368161e-06,
-+-3.85891468172737918331e-06,
-+-3.66302283196632931856e-06,
-+-3.46553137942988627687e-06,
-+-3.26655762750855510455e-06,
-+-3.06621943343732231445e-06,
-+-2.86463513911618343607e-06,
-+-2.66192350182618693409e-06,
-+-2.45820362488117562057e-06,
-+-2.25359488825541727446e-06,
-+-2.04821687922720013799e-06,
-+-1.84218932307831247064e-06,
-+-1.63563201388926604866e-06,
-+-1.42866474546994879804e-06,
-+-1.22140724246515182631e-06,
-+-1.01397909167432569799e-06,
-+-8.06499673625078029042e-07,
-+-5.99088094436327444290e-07,
-+-3.91863118017023242330e-07,
-+-1.84943098628889751524e-07,
-+ 2.15540861419684426667e-08,
-+ 2.27511101966967466315e-07,
-+ 4.32811223880043209387e-07,
-+ 6.37338401859019189379e-07,
-+ 8.40977325854192905002e-07,
-+ 1.04361349022508806704e-06,
-+ 1.24513325755019998089e-06,
-+ 1.44542392177450216890e-06,
-+ 1.64437377065950114052e-06,
-+ 1.84187214750444789869e-06,
-+ 2.03780951209777257423e-06,
-+ 2.23207750087511452161e-06,
-+ 2.42456898624406490649e-06,
-+ 2.61517813504639618351e-06,
-+ 2.80380046612576570131e-06,
-+ 2.99033290696995661509e-06,
-+ 3.17467384939732300976e-06,
-+ 3.35672320425774437633e-06,
-+ 3.53638245511906924553e-06,
-+ 3.71355471091059317744e-06,
-+ 3.88814475749635763264e-06,
-+ 4.06005910814819412596e-06,
-+ 4.22920605290116388692e-06,
-+ 4.39549570675089384069e-06,
-+ 4.55884005668278723919e-06,
-+ 4.71915300750006533998e-06,
-+ 4.87635042643024103849e-06,
-+ 5.03035018648692755928e-06,
-+ 5.18107220856522701196e-06,
-+ 5.32843850224952383525e-06,
-+ 5.47237320531358473132e-06,
-+ 5.61280262189333594894e-06,
-+ 5.74965525931381193962e-06,
-+ 5.88286186355211838841e-06,
-+ 6.01235545332134090329e-06,
-+ 6.13807135275468517243e-06,
-+ 6.25994722267931996977e-06,
-+ 6.37792309046513804878e-06,
-+ 6.49194137843068450202e-06,
-+ 6.60194693079779326846e-06,
-+ 6.70788703918137587323e-06,
-+ 6.80971146660357458814e-06,
-+ 6.90737247002230281208e-06,
-+ 7.00082482136491290685e-06,
-+ 7.09002582705877526905e-06,
-+ 7.17493534605098864026e-06,
-+ 7.25551580631220637360e-06,
-+ 7.33173221981546288786e-06,
-+ 7.40355219598984530240e-06,
-+ 7.47094595364170035832e-06,
-+ 7.53388633134188754210e-06,
-+ 7.59234879627670417821e-06,
-+ 7.64631145156141268828e-06,
-+ 7.69575504201604814413e-06,
-+ 7.74066295840411851953e-06,
-+ 7.78102124013589340075e-06,
-+ 7.81681857643788967132e-06,
-+ 7.84804630599365161535e-06,
-+ 7.87469841505748138885e-06,
-+ 7.89677153404848565748e-06,
-+ 7.91426493262873480251e-06,
-+ 7.92718051327426929855e-06,
-+ 7.93552280334505359466e-06,
-+ 7.93929894566308982874e-06,
-+ 7.93851868760764620798e-06,
-+ 7.93319436873791183408e-06,
-+ 7.92334090695392168925e-06,
-+ 7.90897578320756958670e-06,
-+ 7.89011902477623500857e-06,
-+ 7.86679318711244252764e-06,
-+ 7.83902333428366876954e-06,
-+ 7.80683701801724535304e-06,
-+ 7.77026425536612447970e-06,
-+ 7.72933750501182780370e-06,
-+ 7.68409164222195630977e-06,
-+ 7.63456393248006921998e-06,
-+ 7.58079400380666152174e-06,
-+ 7.52282381779056517397e-06,
-+ 7.46069763935092151688e-06,
-+ 7.39446200525034590259e-06,
-+ 7.32416569138081104189e-06,
-+ 7.24985967884426853560e-06,
-+ 7.17159711885090219710e-06,
-+ 7.08943329645732147265e-06,
-+ 7.00342559317115033967e-06,
-+ 6.91363344844324002262e-06,
-+ 6.82011832007511287137e-06,
-+ 6.72294364356627759040e-06,
-+ 6.62217479042785679954e-06,
-+ 6.51787902548926013278e-06,
-+ 6.41012546322492830867e-06,
-+ 6.29898502313035979733e-06,
-+ 6.18453038417209923617e-06,
-+ 6.06683593834504205765e-06,
-+ 5.94597774336311937993e-06,
-+ 5.82203347451249516448e-06,
-+ 5.69508237570125013232e-06,
-+ 5.56520520973042217313e-06,
-+ 5.43248420782122392469e-06,
-+ 5.29700301842786852943e-06,
-+ 5.15884665536775968036e-06,
-+ 5.01810144530070211867e-06,
-+ 4.87485497458916059279e-06,
-+ 4.72919603557198831207e-06,
-+ 4.58121457228396545999e-06,
-+ 4.43100162565413800605e-06,
-+ 4.27864927821586065842e-06,
-+ 4.12425059836174341351e-06,
-+ 3.96789958417691884638e-06,
-+ 3.80969110688415655311e-06,
-+ 3.64972085393445999985e-06,
-+ 3.48808527177698559195e-06,
-+ 3.32488150834214283460e-06,
-+ 3.16020735527182339492e-06,
-+ 2.99416118993082249565e-06,
-+ 2.82684191723347329501e-06,
-+ 2.65834891131958394095e-06,
-+ 2.48878195711375767025e-06,
-+ 2.31824119180212634826e-06,
-+ 2.14682704626095390252e-06,
-+ 1.97464018646858031233e-06,
-+ 1.80178145494066620423e-06,
-+ 1.62835181221444846777e-06,
-+ 1.45445227842166370380e-06,
-+ 1.28018387498127474226e-06,
-+ 1.10564756644572971662e-06,
-+ 9.30944202533528893967e-07,
-+ 7.56174460383558706575e-07,
-+ 5.81438787057772137935e-07,
-+ 4.06837342332995493781e-07,
-+ 2.32469941807973572217e-07,
-+ 5.84360003605464838908e-08,
-+-1.15165524016196481795e-07,
-+-2.88236185961157478515e-07,
-+-4.60678108053030918551e-07,
-+-6.32394035641693353382e-07,
-+-8.03287391175248576365e-07,
-+-9.73262327992278866677e-07,
-+-1.14222378354964966348e-06,
-+-1.31007753205661820651e-06,
-+-1.47673023648642007660e-06,
-+-1.64208949993695062100e-06,
-+-1.80606391631259277593e-06,
-+-1.96856312029973079598e-06,
-+-2.12949783660893906853e-06,
-+-2.28877992845738131554e-06,
-+-2.44632244526540991875e-06,
-+-2.60203966954189995785e-06,
-+-2.75584716293343213363e-06,
-+-2.90766181141288047594e-06,
-+-3.05740186958367351418e-06,
-+-3.20498700407640839933e-06,
-+-3.35033833601523650274e-06,
-+-3.49337848253191377853e-06,
-+-3.63403159730610840275e-06,
-+-3.77222341011111343188e-06,
-+-3.90788126534447433042e-06,
-+-4.04093415952591392912e-06,
-+-4.17131277773873497690e-06,
-+-4.29894952900307645335e-06,
-+-4.42377858055843327302e-06,
-+-4.54573589104088312044e-06,
-+-4.66475924253666648223e-06,
-+-4.78078827150107880212e-06,
-+-4.89376449852186315914e-06,
-+-5.00363135691748540988e-06,
-+-5.11033422015512990528e-06,
-+-5.21382042807596778544e-06,
-+-5.31403931191554123584e-06,
-+-5.41094221810950165016e-06,
-+-5.50448253087047069913e-06,
-+-5.59461569353127499173e-06,
-+-5.68129922864175650784e-06,
-+-5.76449275681243674909e-06,
-+-5.84415801429719277657e-06,
-+-5.92025886930820698860e-06,
-+-5.99276133705720719759e-06,
-+-6.06163359351762427620e-06,
-+-6.12684598790327211872e-06,
-+-6.18837105385967135374e-06,
-+-6.24618351936512419082e-06,
-+-6.30026031533919750782e-06,
-+-6.35058058295712848316e-06,
-+-6.39712567966953613306e-06,
-+-6.43987918392721429004e-06,
-+-6.47882689861198942782e-06,
-+-6.51395685317499943250e-06,
-+-6.54525930448471249620e-06,
-+-6.57272673638766514792e-06,
-+-6.59635385798559469776e-06,
-+-6.61613760063350534395e-06,
-+-6.63207711366379757420e-06,
-+-6.64417375884241211495e-06,
-+-6.65243110356349872368e-06,
-+-6.65685491279031274194e-06,
-+-6.65745313974966963219e-06,
-+-6.65423591538958656902e-06,
-+-6.64721553660889651050e-06,
-+-6.63640645326926765439e-06,
-+-6.62182525400028480084e-06,
-+-6.60349065080916732668e-06,
-+-6.58142346250719060277e-06,
-+-6.55564659696565526196e-06,
-+-6.52618503221475609801e-06,
-+-6.49306579639951552747e-06,
-+-6.45631794660739462695e-06,
-+-6.41597254658263945040e-06,
-+-6.37206264334415081952e-06,
-+-6.32462324272206488792e-06,
-+-6.27369128383118030161e-06,
-+-6.21930561249836743221e-06,
-+-6.16150695366234792122e-06,
-+-6.10033788276449535378e-06,
-+-6.03584279615001515287e-06,
-+-5.96806788049923278545e-06,
-+-5.89706108130940631553e-06,
-+-5.82287207044756658384e-06,
-+-5.74555221279694319542e-06,
-+-5.66515453201526036843e-06,
-+-5.58173367543274885226e-06,
-+-5.49534587810695348729e-06,
-+-5.40604892606070708310e-06,
-+-5.31390211872570004752e-06,
-+-5.21896623061564390400e-06,
-+-5.12130347225329365013e-06,
-+-5.02097745037598523939e-06,
-+-4.91805312744465109411e-06,
-+-4.81259678048159588907e-06,
-+-4.70467595926274513780e-06,
-+-4.59435944389046620792e-06,
-+-4.48171720177175865495e-06,
-+-4.36682034403174463086e-06,
-+-4.24974108138584086476e-06,
-+-4.13055267949739200956e-06,
-+-4.00932941385171509125e-06,
-+-3.88614652417032873467e-06,
-+-3.76108016839454787432e-06,
-+-3.63420737626596489757e-06,
-+-3.50560600253174686132e-06,
-+-3.37535467980288975763e-06,
-+-3.24353277109359282678e-06,
-+-3.11022032207008786392e-06,
-+-2.97549801303766165317e-06,
-+-2.83944711069247344591e-06,
-+-2.70214941967136185736e-06,
-+-2.56368723392205452038e-06,
-+-2.42414328792700028154e-06,
-+-2.28360070780758763959e-06,
-+-2.14214296233768618929e-06,
-+-1.99985381389505311643e-06,
-+-1.85681726937918172971e-06,
-+-1.71311753112369806511e-06,
-+-1.56883894783374962087e-06,
-+-1.42406596557164193617e-06,
-+-1.27888307882598605392e-06,
-+-1.13337478168536349648e-06,
-+-9.87625519151570836163e-07,
-+-8.41719638613064665786e-07,
-+-6.95741341511352204364e-07,
-+-5.49774635225687810111e-07,
-+-4.03903285203652358387e-07,
-+-2.58210767364619000791e-07,
-+-1.12780220802875344963e-07,
-+ 3.23055991830684097878e-08,
-+ 1.76964367708724778855e-07,
-+ 3.21114236543438189078e-07,
-+ 4.64673879946063572873e-07,
-+ 6.07562540071123210426e-07,
-+ 7.49700071920371749061e-07,
-+ 8.91006987815025860095e-07,
-+ 1.03140450136427425456e-06,
-+ 1.17081457090602433941e-06,
-+ 1.30915994239623084851e-06,
-+ 1.44636419172353368897e-06,
-+ 1.58235176642631552541e-06,
-+ 1.71704802678972351765e-06,
-+ 1.85037928630060069746e-06,
-+ 1.98227285143870244472e-06,
-+ 2.11265706078306988520e-06,
-+ 2.24146132341246485419e-06,
-+ 2.36861615658157347906e-06,
-+ 2.49405322264845444755e-06,
-+ 2.61770536524023275885e-06,
-+ 2.73950664463357572141e-06,
-+ 2.85939237233350266468e-06,
-+ 2.97729914483249884479e-06,
-+ 3.09316487653266211920e-06,
-+ 3.20692883181446816197e-06,
-+ 3.31853165623432036477e-06,
-+ 3.42791540683944990220e-06,
-+ 3.53502358157950725138e-06,
-+ 3.63980114780429875857e-06,
-+ 3.74219456983363037592e-06,
-+ 3.84215183558227767505e-06,
-+ 3.93962248223251686305e-06,
-+ 4.03455762093816806731e-06,
-+ 4.12690996055009787897e-06,
-+ 4.21663383035196559137e-06,
-+ 4.30368520179581453395e-06,
-+ 4.38802170922777651609e-06,
-+ 4.46960266959470585012e-06,
-+ 4.54838910112321163730e-06,
-+ 4.62434374096319227585e-06,
-+ 4.69743106178853688561e-06,
-+ 4.76761728734836138144e-06,
-+ 4.83487040696272629773e-06,
-+ 4.89916018895741111830e-06,
-+ 4.96045819303296106926e-06,
-+ 5.01873778156387963061e-06,
-+ 5.07397412982442447456e-06,
-+ 5.12614423513811590729e-06,
-+ 5.17522692494871317675e-06,
-+ 5.22120286381103742548e-06,
-+ 5.26405455930064433061e-06,
-+ 5.30376636684197204255e-06,
-+ 5.34032449345513637005e-06,
-+ 5.37371700042290210606e-06,
-+ 5.40393380487774409700e-06,
-+ 5.43096668031327048978e-06,
-+ 5.45480925602115842708e-06,
-+ 5.47545701545760188074e-06,
-+ 5.49290729354319507956e-06,
-+ 5.50715927290080433390e-06,
-+ 5.51821397903640711657e-06,
-+ 5.52607427446940615412e-06,
-+ 5.53074485181774806004e-06,
-+ 5.53223222584567817618e-06,
-+ 5.53054472448127380454e-06,
-+ 5.52569247881201016526e-06,
-+ 5.51768741206704879188e-06,
-+ 5.50654322759543274221e-06,
-+ 5.49227539585013617960e-06,
-+ 5.47490114038823605808e-06,
-+ 5.45443942289814534188e-06,
-+ 5.43091092726536726806e-06,
-+ 5.40433804268870449940e-06,
-+ 5.37474484585942960917e-06,
-+ 5.34215708221641970028e-06,
-+ 5.30660214629070434828e-06,
-+ 5.26810906115345203946e-06,
-+ 5.22670845698185819179e-06,
-+ 5.18243254875779933987e-06,
-+ 5.13531511311474995156e-06,
-+ 5.08539146434873193589e-06,
-+ 5.03269842960957088606e-06,
-+ 4.97727432328926165021e-06,
-+ 4.91915892062447536855e-06,
-+ 4.85839343053077035771e-06,
-+ 4.79502046768650205761e-06,
-+ 4.72908402388465426040e-06,
-+ 4.66062943867137881228e-06,
-+ 4.58970336929019699759e-06,
-+ 4.51635375995152054556e-06,
-+ 4.44062981044616933641e-06,
-+ 4.36258194412544737627e-06,
-+ 4.28226177526485068410e-06,
-+ 4.19972207583456497138e-06,
-+ 4.11501674169647542961e-06,
-+ 4.02820075825028238263e-06,
-+ 3.93933016554731602391e-06,
-+ 3.84846202289762216335e-06,
-+ 3.75565437298938188386e-06,
-+ 3.66096620554404999308e-06,
-+ 3.56445742052937107578e-06,
-+ 3.46618879095310788465e-06,
-+ 3.36622192525887642755e-06,
-+ 3.26461922935039320666e-06,
-+ 3.16144386826273460570e-06,
-+ 3.05675972750716587302e-06,
-+ 2.95063137411155366322e-06,
-+ 2.84312401738004221383e-06,
-+ 2.73430346939548900412e-06,
-+ 2.62423610528835733665e-06,
-+ 2.51298882329570483720e-06,
-+ 2.40062900463402164141e-06,
-+ 2.28722447320975292833e-06,
-+ 2.17284345519123839340e-06,
-+ 2.05755453846596430753e-06,
-+ 1.94142663200690945903e-06,
-+ 1.82452892517181498007e-06,
-+ 1.70693084695912356741e-06,
-+ 1.58870202524435859482e-06,
-+ 1.46991224602059460634e-06,
-+ 1.35063141266662197534e-06,
-+ 1.23092950526634752769e-06,
-+ 1.11087654000282617921e-06,
-+ 9.90542528650260827215e-07,
-+ 8.69997438187136635693e-07,
-+ 7.49311150553558232788e-07,
-+ 6.28553422575956171735e-07,
-+ 5.07793846080199777306e-07,
-+ 3.87101808219950752071e-07,
-+ 2.66546452036637359768e-07,
-+ 1.46196637279211919523e-07,
-+ 2.61209014996513097622e-08,
-+-9.36125785480710641559e-08,
-+-2.12936025188332329408e-07,
-+-3.31782097760571907408e-07,
-+-4.50083930191668236211e-07,
-+-5.67775168183275709294e-07,
-+-6.84790005993688176635e-07,
-+-8.01063222793833814618e-07,
-+-9.16530218579230311038e-07,
-+-1.03112704961422672079e-06,
-+-1.14479046339492176093e-06,
-+-1.25745793310772014899e-06,
-+-1.36906769156673085052e-06,
-+-1.47955876461155409369e-06,
-+-1.58887100394770566988e-06,
-+-1.69694511941227368702e-06,
-+-1.80372271064780189541e-06,
-+-1.90914629816775581196e-06,
-+-2.01315935379763895325e-06,
-+-2.11570633047440601331e-06,
-+-2.21673269139235624129e-06,
-+-2.31618493847693730396e-06,
-+-2.41401064017204397923e-06,
-+-2.51015845853012064279e-06,
-+-2.60457817558802397410e-06,
-+-2.69722071901685094830e-06,
-+-2.78803818703287373008e-06,
-+-2.87698387255719700099e-06,
-+-2.96401228661247619401e-06,
-+-3.04907918094525491427e-06,
-+-3.13214156986324088414e-06,
-+-3.21315775127703456810e-06,
-+-3.29208732693637732224e-06,
-+-3.36889122185290401895e-06,
-+-3.44353170289642487268e-06,
-+-3.51597239656325077098e-06,
-+-3.58617830590191733468e-06,
-+-3.65411582659302460743e-06,
-+-3.71975276217506551713e-06,
-+-3.78305833841012117849e-06,
-+-3.84400321678365093078e-06,
-+-3.90255950713312254181e-06,
-+-3.95870077940074512301e-06,
-+-4.01240207450610770714e-06,
-+-4.06363991433488812364e-06,
-+-4.11239231084125285599e-06,
-+-4.15863877425935865654e-06,
-+-4.20236032042448446743e-06,
-+-4.24353947720017342875e-06,
-+-4.28216029001119185047e-06,
-+-4.31820832648155806497e-06,
-+-4.35167068017766995946e-06,
-+-4.38253597345699451516e-06,
-+-4.41079435942349164690e-06,
-+-4.43643752299069560910e-06,
-+-4.45945868105587513408e-06,
-+-4.47985258178600159821e-06,
-+-4.49761550302029909350e-06,
-+-4.51274524979143300062e-06,
-+-4.52524115097084023650e-06,
-+-4.53510405504175193850e-06,
-+-4.54233632500539397060e-06,
-+-4.54694183242584894293e-06,
-+-4.54892595061959283142e-06,
-+-4.54829554699628510261e-06,
-+-4.54505897455774022598e-06,
-+-4.53922606256257512138e-06,
-+-4.53080810636444806448e-06,
-+-4.51981785643228738179e-06,
-+-4.50626950656128519675e-06,
-+-4.49017868128402610519e-06,
-+-4.47156242249136545128e-06,
-+-4.45043917527324955132e-06,
-+-4.42682877299008102390e-06,
-+-4.40075242158549665903e-06,
-+-4.37223268315208425070e-06,
-+-4.34129345876175116439e-06,
-+-4.30795997057291989114e-06,
-+-4.27225874322715952063e-06,
-+-4.23421758454818478526e-06,
-+-4.19386556555651685739e-06,
-+-4.15123299981356679695e-06,
-+-4.10635142210863573125e-06,
-+-4.05925356650451797034e-06,
-+-4.00997334375461245165e-06,
-+-3.95854581810788347368e-06,
-+-3.90500718351647261954e-06,
-+-3.84939473926163028560e-06,
-+-3.79174686501394100978e-06,
-+-3.73210299534384178129e-06,
-+-3.67050359369971365087e-06,
-+-3.60699012586834896589e-06,
-+-3.54160503293725947090e-06,
-+-3.47439170377438781006e-06,
-+-3.40539444704242567051e-06,
-+-3.33465846276757226665e-06,
-+-3.26222981347759901722e-06,
-+-3.18815539492950643052e-06,
-+-3.11248290644416109035e-06,
-+-3.03526082086643820009e-06,
-+-2.95653835416947222251e-06,
-+-2.87636543472176765438e-06,
-+-2.79479267223601303066e-06,
-+-2.71187132641859964837e-06,
-+-2.62765327533899515464e-06,
-+-2.54219098353815390706e-06,
-+-2.45553746989530186833e-06,
-+-2.36774627527249690158e-06,
-+-2.27887142995641191922e-06,
-+-2.18896742091688744107e-06,
-+-2.09808915890182256402e-06,
-+-2.00629194538800892082e-06,
-+-1.91363143940754862785e-06,
-+-1.82016362426948875164e-06,
-+-1.72594477419635162234e-06,
-+-1.63103142089514905451e-06,
-+-1.53548032008255493308e-06,
-+-1.43934841798375985031e-06,
-+-1.34269281782482158857e-06,
-+-1.24557074633660619018e-06,
-+-1.14803952029313359972e-06,
-+-1.05015651309915032019e-06,
-+-9.51979121449571438300e-07,
-+-8.53564732078559276071e-07,
-+-7.54970688617303580583e-07,
-+-6.56254258580785667422e-07,
-+-5.57472600498841932364e-07,
-+-4.58682731214803567250e-07,
-+-3.59941493366721268602e-07,
-+-2.61305523070885236846e-07,
-+-1.62831217825798099669e-07,
-+-6.45747046531622918148e-08,
-+ 3.34081915028460607542e-08,
-+ 1.31061979105115269233e-07,
-+ 2.28331531061093047517e-07,
-+ 3.25162115452506418290e-07,
-+ 4.21499425940175324931e-07,
-+ 5.17289611827256223732e-07,
-+ 6.12479307764515172907e-07,
-+ 7.07015663081470306902e-07,
-+ 8.00846370727535963142e-07,
-+ 8.93919695807548723643e-07,
-+ 9.86184503696360592316e-07,
-+ 1.07759028771747680805e-06,
-+ 1.16808719637099324993e-06,
-+ 1.25762606009643313325e-06,
-+ 1.34615841755636422783e-06,
-+ 1.43363654142701431353e-06,
-+ 1.52001346368244521319e-06,
-+ 1.60524300035914707475e-06,
-+ 1.68927977578831839769e-06,
-+ 1.77207924628335479643e-06,
-+ 1.85359772327053896192e-06,
-+ 1.93379239585117203927e-06,
-+ 2.01262135278386203690e-06,
-+ 2.09004360387575857427e-06,
-+ 2.16601910077334100819e-06,
-+ 2.24050875713967010219e-06,
-+ 2.31347446821209968128e-06,
-+ 2.38487912972836386475e-06,
-+ 2.45468665621208123303e-06,
-+ 2.52286199861151334042e-06,
-+ 2.58937116127982583862e-06,
-+ 2.65418121829169547439e-06,
-+ 2.71726032908779813765e-06,
-+ 2.77857775344037205028e-06,
-+ 2.83810386573328862561e-06,
-+ 2.89581016855032907358e-06,
-+ 2.95166930556685687487e-06,
-+ 3.00565507373729543829e-06,
-+ 3.05774243477661226693e-06,
-+ 3.10790752592901346437e-06,
-+ 3.15612767002082679062e-06,
-+ 3.20238138479374552623e-06,
-+ 3.24664839151536307337e-06,
-+ 3.28890962286420223838e-06,
-+ 3.32914723008697677049e-06,
-+ 3.36734458942622126102e-06,
-+ 3.40348630781685071737e-06,
-+ 3.43755822785064014868e-06,
-+ 3.46954743200808672055e-06,
-+ 3.49944224615744907365e-06,
-+ 3.52723224232133607687e-06,
-+ 3.55290824071145572597e-06,
-+ 3.57646231103275916171e-06,
-+ 3.59788777305844983311e-06,
-+ 3.61717919647792329573e-06,
-+ 3.63433240001992844556e-06,
-+ 3.64934444985388431064e-06,
-+ 3.66221365727246736405e-06,
-+ 3.67293957565916496310e-06,
-+ 3.68152299674478401627e-06,
-+ 3.68796594615754264255e-06,
-+ 3.69227167827109476069e-06,
-+ 3.69444467035641090999e-06,
-+ 3.69449061604251067923e-06,
-+ 3.69241641809255407447e-06,
-+ 3.68823018050121809172e-06,
-+ 3.68194119992049474706e-06,
-+ 3.67355995642082701168e-06,
-+ 3.66309810359520425440e-06,
-+ 3.65056845801397982505e-06,
-+ 3.63598498803867909083e-06,
-+ 3.61936280200335549955e-06,
-+ 3.60071813577239656246e-06,
-+ 3.58006833968386969076e-06,
-+ 3.55743186488838466342e-06,
-+ 3.53282824909282608752e-06,
-+ 3.50627810171953317514e-06,
-+ 3.47780308849131654283e-06,
-+ 3.44742591545312398587e-06,
-+ 3.41517031244148100487e-06,
-+ 3.38106101601311265410e-06,
-+ 3.34512375184437054455e-06,
-+ 3.30738521661340731931e-06,
-+ 3.26787305937770838069e-06,
-+ 3.22661586245842979003e-06,
-+ 3.18364312184520498148e-06,
-+ 3.13898522713461071050e-06,
-+ 3.09267344101413714559e-06,
-+ 3.04473987830630518563e-06,
-+ 2.99521748458606001315e-06,
-+ 2.94414001438530427212e-06,
-+ 2.89154200899865406331e-06,
-+ 2.83745877390457421898e-06,
-+ 2.78192635581631105178e-06,
-+ 2.72498151937718603862e-06,
-+ 2.66666172351495323772e-06,
-+ 2.60700509747023960325e-06,
-+ 2.54605041651313995614e-06,
-+ 2.48383707736592921508e-06,
-+ 2.42040507334248784649e-06,
-+ 2.35579496922448726218e-06,
-+ 2.29004787588705505843e-06,
-+ 2.22320542469039954603e-06,
-+ 2.15530974165298533032e-06,
-+ 2.08640342142196774357e-06,
-+ 2.01652950105673072815e-06,
-+ 1.94573143364140580303e-06,
-+ 1.87405306174228235695e-06,
-+ 1.80153859072609659169e-06,
-+ 1.72823256195534356335e-06,
-+ 1.65417982587563572154e-06,
-+ 1.57942551501363361584e-06,
-+ 1.50401501689824875799e-06,
-+ 1.42799394692362609795e-06,
-+ 1.35140812116891807883e-06,
-+ 1.27430352919099175392e-06,
-+ 1.19672630680600165567e-06,
-+ 1.11872270887555548908e-06,
-+ 1.04033908211438514454e-06,
-+ 9.61621837932593595614e-07,
-+ 8.82617425331797973857e-07,
-+ 8.03372303868260350135e-07,
-+ 7.23932916698523442543e-07,
-+ 6.44345663725568065214e-07,
-+ 5.64656874857124303848e-07,
-+ 4.84912783394116915736e-07,
-+ 4.05159499563223062539e-07,
-+ 3.25442984208674460614e-07,
-+ 2.45809022658112731786e-07,
-+ 1.66303198777160306628e-07,
-+ 8.69708692272027903669e-08,
-+ 7.85713794072117322522e-09,
-+-7.09931691716676215865e-08,
-+-1.49535529268482347680e-07,
-+-2.27725747365171486868e-07,
-+-3.05519980848837318375e-07,
-+-3.82874763706501346521e-07,
-+-4.59747030453731194650e-07,
-+-5.36094139750675601478e-07,
-+-6.11873897692766847291e-07,
-+-6.87044580763594041777e-07,
-+-7.61564958437679165913e-07,
-+-8.35394315421141605512e-07,
-+-9.08492473518483241836e-07,
-+-9.80819813113976304058e-07,
-+-1.05233729425625164956e-06,
-+-1.12300647733612530584e-06,
-+-1.19278954334437999738e-06,
-+-1.26164931370253481165e-06,
-+-1.32954926965386881663e-06,
-+-1.39645357120588546386e-06,
-+-1.46232707561449405058e-06,
-+-1.52713535540064995902e-06,
-+-1.59084471589067184708e-06,
-+-1.65342221227063001310e-06,
-+-1.71483566614886781052e-06,
-+-1.77505368161545113680e-06,
-+-1.83404566079325564072e-06,
-+-1.89178181887221348355e-06,
-+-1.94823319862069280282e-06,
-+-2.00337168436514229084e-06,
-+-2.05717001543450264187e-06,
-+-2.10960179906117775394e-06,
-+-2.16064152273371070425e-06,
-+-2.21026456599565581941e-06,
-+-2.25844721168562965249e-06,
-+-2.30516665661384152826e-06,
-+-2.35040102167078548251e-06,
-+-2.39412936136406383631e-06,
-+-2.43633167277975945574e-06,
-+-2.47698890396499016471e-06,
-+-2.51608296172876497540e-06,
-+-2.55359671885850362846e-06,
-+-2.58951402074998920553e-06,
-+-2.62381969144887382413e-06,
-+-2.65649953910217082780e-06,
-+-2.68754036081854804860e-06,
-+-2.71692994693660306132e-06,
-+-2.74465708470059315127e-06,
-+-2.77071156134348277634e-06,
-+-2.79508416657755373943e-06,
-+-2.81776669449305452715e-06,
-+-2.83875194486578497579e-06,
-+-2.85803372387518624004e-06,
-+-2.87560684423360267943e-06,
-+-2.89146712472987382482e-06,
-+-2.90561138918856466730e-06,
-+-2.91803746484780862573e-06,
-+-2.92874418015865453993e-06,
-+-2.93773136200894074995e-06,
-+-2.94499983237584587605e-06,
-+-2.95055140441023676853e-06,
-+-2.95438887795761926909e-06,
-+-2.95651603451999344031e-06,
-+-2.95693763166347438543e-06,
-+-2.95565939687693110985e-06,
-+-2.95268802088687215850e-06,
-+-2.94803115043462330338e-06,
-+-2.94169738052167357241e-06,
-+-2.93369624612953431959e-06,
-+-2.92403821342084482528e-06,
-+-2.91273467042851974806e-06,
-+-2.89979791724021359437e-06,
-+-2.88524115568552475564e-06,
-+-2.86907847853367548813e-06,
-+-2.85132485820962740443e-06,
-+-2.83199613503694229294e-06,
-+-2.81110900501579379722e-06,
-+-2.78868100714493697984e-06,
-+-2.76473051029656053377e-06,
-+-2.73927669965326065288e-06,
-+-2.71233956271653185119e-06,
-+-2.68393987489646478775e-06,
-+-2.65409918469246439721e-06,
-+-2.62283979847510613493e-06,
-+-2.59018476487935021233e-06,
-+-2.55615785881960940799e-06,
-+-2.52078356513729817673e-06,
-+-2.48408706189168983184e-06,
-+-2.44609420330517115589e-06,
-+-2.40683150237354884389e-06,
-+-2.36632611315396292482e-06,
-+-2.32460581274025857810e-06,
-+-2.28169898293852692147e-06,
-+-2.23763459165468254892e-06,
-+-2.19244217400458949748e-06,
-+-2.14615181316064773556e-06,
-+-2.09879412094551363500e-06,
-+-2.05040021818578316432e-06,
-+-2.00100171483782110160e-06,
-+-1.95063068989816435785e-06,
-+-1.89931967111113481318e-06,
-+-1.84710161448549238660e-06,
-+-1.79400988363453340540e-06,
-+-1.74007822895002694472e-06,
-+-1.68534076662445773069e-06,
-+-1.62983195753369262521e-06,
-+-1.57358658599301992021e-06,
-+-1.51663973839943020132e-06,
-+-1.45902678177302702247e-06,
-+-1.40078334221047426768e-06,
-+-1.34194528326338093541e-06,
-+-1.28254868425455118572e-06,
-+-1.22262981854484770803e-06,
-+-1.16222513176453179750e-06,
-+-1.10137122001903489497e-06,
-+-1.04010480808683832089e-06,
-+-9.78462727617415689625e-07,
-+-9.16481895344879420621e-07,
-+-8.54199291329082445989e-07,
-+-7.91651937236919995967e-07,
-+-7.28876874676428218509e-07,
-+-6.65911143596146899220e-07,
-+-6.02791760762178925358e-07,
-+-5.39555698325257482511e-07,
-+-4.76239862490052774988e-07,
-+-4.12881072298987595103e-07,
-+-3.49516038541690854304e-07,
-+-2.86181342804064272744e-07,
-+-2.22913416666661733927e-07,
-+-1.59748521064022687018e-07,
-+-9.67227258185584328684e-08,
-+-3.38718893582766938970e-08,
-+ 2.87683613695412570172e-08,
-+ 9.11626507777930940099e-08,
-+ 1.53275874301229528026e-07,
-+ 2.15073217829609376242e-07,
-+ 2.76520176901766833620e-07,
-+ 3.37582575650052953442e-07,
-+ 3.98226585485819280378e-07,
-+ 4.58418743513730979390e-07,
-+ 5.18125970668006750755e-07,
-+ 5.77315589558766536398e-07,
-+ 6.35955342019936643428e-07,
-+ 6.94013406349350241498e-07,
-+ 7.51458414232049067549e-07,
-+ 8.08259467337988365555e-07,
-+ 8.64386153585596963575e-07,
-+ 9.19808563062980821321e-07,
-+ 9.74497303597860849836e-07,
-+ 1.02842351597027310336e-06,
-+ 1.08155888875847427063e-06,
-+ 1.13387567281072351305e-06,
-+ 1.18534669533762647095e-06,
-+ 1.23594537361629275206e-06,
-+ 1.28564572830046089292e-06,
-+ 1.33442239633006842733e-06,
-+ 1.38225064343414957853e-06,
-+ 1.42910637622117390762e-06,
-+ 1.47496615385122660710e-06,
-+ 1.51980719928470874307e-06,
-+ 1.56360741010246000211e-06,
-+ 1.60634536889251227715e-06,
-+ 1.64800035319896004223e-06,
-+ 1.68855234502865835288e-06,
-+ 1.72798203991181336901e-06,
-+ 1.76627085551270775016e-06,
-+ 1.80340093978719079100e-06,
-+ 1.83935517868373362992e-06,
-+ 1.87411720338522404077e-06,
-+ 1.90767139708889131071e-06,
-+ 1.94000290132205409853e-06,
-+ 1.97109762179168084047e-06,
-+ 2.00094223376600235736e-06,
-+ 2.02952418698673586018e-06,
-+ 2.05683171011063731075e-06,
-+ 2.08285381467995650348e-06,
-+ 2.10758029862004405122e-06,
-+ 2.13100174926526816907e-06,
-+ 2.15310954591206726866e-06,
-+ 2.17389586189977999014e-06,
-+ 2.19335366621972616361e-06,
-+ 2.21147672465324978376e-06,
-+ 2.22825960043981455305e-06,
-+ 2.24369765447650766928e-06,
-+ 2.25778704505024781826e-06,
-+ 2.27052472710528124541e-06,
-+ 2.28190845104710389511e-06,
-+ 2.29193676108612702237e-06,
-+ 2.30060899312292095007e-06,
-+ 2.30792527217872156528e-06,
-+ 2.31388650937382493307e-06,
-+ 2.31849439845752497517e-06,
-+ 2.32175141189321189097e-06,
-+ 2.32366079650259840000e-06,
-+ 2.32422656867321367902e-06,
-+ 2.32345350913359285878e-06,
-+ 2.32134715730082542021e-06,
-+ 2.31791380520532445909e-06,
-+ 2.31316049099797609704e-06,
-+ 2.30709499204498586449e-06,
-+ 2.29972581761599807363e-06,
-+ 2.29106220117129925082e-06,
-+ 2.28111409225408822216e-06,
-+ 2.26989214799404362660e-06,
-+ 2.25740772422860767231e-06,
-+ 2.24367286624860951035e-06,
-+ 2.22870029917506208745e-06,
-+ 2.21250341797413235839e-06,
-+ 2.19509627711749353150e-06,
-+ 2.17649357989546114511e-06,
-+ 2.15671066739044013289e-06,
-+ 2.13576350711850353347e-06,
-+ 2.11366868134673037600e-06,
-+ 2.09044337509497678252e-06,
-+ 2.06610536382953460056e-06,
-+ 2.04067300085759004675e-06,
-+ 2.01416520443082648289e-06,
-+ 1.98660144456682630719e-06,
-+ 1.95800172959701842290e-06,
-+ 1.92838659245047678824e-06,
-+ 1.89777707668168250577e-06,
-+ 1.86619472225263513379e-06,
-+ 1.83366155107768614062e-06,
-+ 1.80020005234090271963e-06,
-+ 1.76583316759495554916e-06,
-+ 1.73058427565218490126e-06,
-+ 1.69447717727606724807e-06,
-+ 1.65753607968390744685e-06,
-+ 1.61978558087014416989e-06,
-+ 1.58125065376022968674e-06,
-+ 1.54195663020503578884e-06,
-+ 1.50192918482580689152e-06,
-+ 1.46119431871970167741e-06,
-+ 1.41977834303604934816e-06,
-+ 1.37770786243346328062e-06,
-+ 1.33500975842797161234e-06,
-+ 1.29171117264239797330e-06,
-+ 1.24783948996719974604e-06,
-+ 1.20342232164300215316e-06,
-+ 1.15848748827509167059e-06,
-+ 1.11306300279010028919e-06,
-+ 1.06717705334514073476e-06,
-+ 1.02085798619962035772e-06,
-+ 9.74134288559960768089e-07,
-+ 9.27034571407410057516e-07,
-+ 8.79587552319131062115e-07,
-+ 8.31822038292692897728e-07,
-+ 7.83766908584062082816e-07,
-+ 7.35451097569259232492e-07,
-+ 6.86903577639007368221e-07,
-+ 6.38153342137989641187e-07,
-+ 5.89229388356360835835e-07,
-+ 5.40160700585000643775e-07,
-+ 4.90976233243457187642e-07,
-+ 4.41704894091038422500e-07,
-+ 3.92375527528903780770e-07,
-+ 3.43016898004928283419e-07,
-+ 2.93657673529008577219e-07,
-+ 2.44326409308779522962e-07,
-+ 1.95051531514807551777e-07,
-+ 1.45861321184445247206e-07,
-+ 9.67838982725986303713e-08,
-+ 4.78472058599844523217e-08,
-+-9.21005474744702503668e-10,
-+-4.94931931086882342167e-08,
-+-9.78420376464564573501e-08,
-+-1.45940458001584575920e-07,
-+-1.93761626279445676683e-07,
-+-2.41278982453654766505e-07,
-+-2.88466248828108414775e-07,
-+-3.35297444276962340684e-07,
-+-3.81746898255006320598e-07,
-+-4.27789264571066302430e-07,
-+-4.73399534917222114972e-07,
-+-5.18553052146814792709e-07,
-+-5.63225523294378261140e-07,
-+-6.07393032330819015965e-07,
-+-6.51032052647343771201e-07,
-+-6.94119459261828810033e-07,
-+-7.36632540741495661135e-07,
-+-7.78549010835974351873e-07,
-+-8.19847019815002990540e-07,
-+-8.60505165505228740834e-07,
-+-9.00502504020766893004e-07,
-+-9.39818560182277438796e-07,
-+-9.78433337620207624330e-07,
-+-1.01632732855600549368e-06,
-+-1.05348152325874204263e-06,
-+-1.08987741917143933322e-06,
-+-1.12549702970306422209e-06,
-+-1.16032289268355194760e-06,
-+-1.19433807847637408471e-06,
-+-1.22752619774656060195e-06,
-+-1.25987140888039317136e-06,
-+-1.29135842505383920910e-06,
-+-1.32197252094692572073e-06,
-+-1.35169953910148305289e-06,
-+-1.38052589591981443812e-06,
-+-1.40843858730261145449e-06,
-+-1.43542519392307942238e-06,
-+-1.46147388613708025001e-06,
-+-1.48657342852669403075e-06,
-+-1.51071318407641715728e-06,
-+-1.53388311798088013959e-06,
-+-1.55607380108330755062e-06,
-+-1.57727641294412167073e-06,
-+-1.59748274453934551225e-06,
-+-1.61668520058867329841e-06,
-+-1.63487680151331660552e-06,
-+-1.65205118502362447400e-06,
-+-1.66820260733800235944e-06,
-+-1.68332594403215350657e-06,
-+-1.69741669052133461662e-06,
-+-1.71047096217573973425e-06,
-+-1.72248549407075639464e-06,
-+-1.73345764037363372509e-06,
-+-1.74338537336835821088e-06,
-+-1.75226728212076132235e-06,
-+-1.76010257078606954751e-06,
-+-1.76689105656130685063e-06,
-+-1.77263316728519251133e-06,
-+-1.77732993868832065915e-06,
-+-1.78098301129675234904e-06,
-+-1.78359462699196298197e-06,
-+-1.78516762523086079262e-06,
-+-1.78570543892935940332e-06,
-+-1.78521209001314350987e-06,
-+-1.78369218463975973750e-06,
-+-1.78115090809610287207e-06,
-+-1.77759401937562411090e-06,
-+-1.77302784543973451412e-06,
-+-1.76745927516809092517e-06,
-+-1.76089575300256703723e-06,
-+-1.75334527228990434716e-06,
-+-1.74481636832821328595e-06,
-+-1.73531811112254267233e-06,
-+-1.72486009785515407010e-06,
-+-1.71345244507588775535e-06,
-+-1.70110578061850780769e-06,
-+-1.68783123524888313502e-06,
-+-1.67364043405101201273e-06,
-+-1.65854548755706267844e-06,
-+-1.64255898262770882562e-06,
-+-1.62569397308913031908e-06,
-+-1.60796397013341495032e-06,
-+-1.58938293248850158598e-06,
-+-1.56996525636511224694e-06,
-+-1.54972576518680987152e-06,
-+-1.52867969911091771475e-06,
-+-1.50684270434656038082e-06,
-+-1.48423082227753830000e-06,
-+-1.46086047839705183582e-06,
-+-1.43674847106163933866e-06,
-+-1.41191196007170637922e-06,
-+-1.38636845508614875617e-06,
-+-1.36013580387858669546e-06,
-+-1.33323218044282189100e-06,
-+-1.30567607295518684662e-06,
-+-1.27748627160150214245e-06,
-+-1.24868185627640912946e-06,
-+-1.21928218416289764874e-06,
-+-1.18930687719987378282e-06,
-+-1.15877580944566389195e-06,
-+-1.12770909434537172875e-06,
-+-1.09612707191003274157e-06,
-+-1.06405029581553169958e-06,
-+-1.03149952042926247822e-06,
-+-9.98495687772529807701e-07,
-+-9.65059914426676481838e-07,
-+-9.31213478390952664649e-07,
-+-8.96977805900184483883e-07,
-+-8.62374458209779445916e-07,
-+-8.27425118357190793336e-07,
-+-7.92151577906262162004e-07,
-+-7.56575723683538659993e-07,
-+-7.20719524513991164460e-07,
-+-6.84605017964106205270e-07,
-+-6.48254297100182736997e-07,
-+-6.11689497269627655389e-07,
-+-5.74932782912928941364e-07,
-+-5.38006334414506664360e-07,
-+-5.00932334998829214645e-07,
-+-4.63732957681074963406e-07,
-+-4.26430352278680451037e-07,
-+-3.89046632491231587593e-07,
-+-3.51603863057291967577e-07,
-+-3.14124046993758822385e-07,
-+-2.76629112926271202933e-07,
-+-2.39140902517306048575e-07,
-+-2.01681157999109538668e-07,
-+-1.64271509818435231461e-07,
-+-1.26933464399964462611e-07,
-+-8.96883920351864315859e-08,
-+-5.25575149034115698627e-08,
-+-1.55618952314867990895e-08,
-+ 2.12775764013299585065e-08,
-+ 5.79401926069906488081e-08,
-+ 9.44054405745448819568e-08,
-+ 1.30653013292186337421e-07,
-+ 1.66662820599558795692e-07,
-+ 2.02415000063943526019e-07,
-+ 2.37889927675723810546e-07,
-+ 2.73068228356823773127e-07,
-+ 3.07930786275391611075e-07,
-+ 3.42458754964303537689e-07,
-+ 3.76633567235821728614e-07,
-+ 4.10436944888391124100e-07,
-+ 4.43850908200505621429e-07,
-+ 4.76857785206895217304e-07,
-+ 5.09440220752432540740e-07,
-+ 5.41581185319310635908e-07,
-+ 5.73263983623200237778e-07,
-+ 6.04472262974243596559e-07,
-+ 6.35190021398912689916e-07,
-+ 6.65401615518975020092e-07,
-+ 6.95091768183470321082e-07,
-+ 7.24245575851318119156e-07,
-+ 7.52848515719723294374e-07,
-+ 7.80886452596346764020e-07,
-+ 8.08345645511779781934e-07,
-+ 8.35212754069576196438e-07,
-+ 8.61474844531168266227e-07,
-+ 8.87119395633187721666e-07,
-+ 9.12134304134851931249e-07,
-+ 9.36507890093278214952e-07,
-+ 9.60228901864740647514e-07,
-+ 9.83286520829949339681e-07,
-+ 1.00567036584242141413e-06,
-+ 1.02737049739676264377e-06,
-+ 1.04837742151761943520e-06,
-+ 1.06868209336723852610e-06,
-+ 1.08827592057027628516e-06,
-+ 1.10715076625582966250e-06,
-+ 1.12529895181575091329e-06,
-+ 1.14271325937887085896e-06,
-+ 1.15938693400089711674e-06,
-+ 1.17531368556989454737e-06,
-+ 1.19048769042744956491e-06,
-+ 1.20490359270577919489e-06,
-+ 1.21855650538120670311e-06,
-+ 1.23144201104462276445e-06,
-+ 1.24355616238968221938e-06,
-+ 1.25489548241968085992e-06,
-+ 1.26545696437420174112e-06,
-+ 1.27523807137680262633e-06,
-+ 1.28423673580516101703e-06,
-+ 1.29245135838526580120e-06,
-+ 1.29988080701139087871e-06,
-+ 1.30652441529377014066e-06,
-+ 1.31238198083599927004e-06,
-+ 1.31745376324439163689e-06,
-+ 1.32174048187173134272e-06,
-+ 1.32524331329766233412e-06,
-+ 1.32796388854876269223e-06,
-+ 1.32990429006080199844e-06,
-+ 1.33106704838625078829e-06,
-+ 1.33145513865011407038e-06,
-+ 1.33107197675730615317e-06,
-+ 1.32992141535492971224e-06,
-+ 1.32800773955295289713e-06,
-+ 1.32533566240690744947e-06,
-+ 1.32191032016635722368e-06,
-+ 1.31773726729301165080e-06,
-+ 1.31282247125248552902e-06,
-+ 1.30717230708382066220e-06,
-+ 1.30079355175099455860e-06,
-+ 1.29369337828076866856e-06,
-+ 1.28587934969133494247e-06,
-+ 1.27735941271630673508e-06,
-+ 1.26814189132872078392e-06,
-+ 1.25823548006989592576e-06,
-+ 1.24764923718779050332e-06,
-+ 1.23639257759010710187e-06,
-+ 1.22447526561697376243e-06,
-+ 1.21190740763842257076e-06,
-+ 1.19869944448191002670e-06,
-+ 1.18486214369488304102e-06,
-+ 1.17040659164850020835e-06,
-+ 1.15534418548697581979e-06,
-+ 1.13968662492878543633e-06,
-+ 1.12344590392501977927e-06,
-+ 1.10663430218058598693e-06,
-+ 1.08926437654394660522e-06,
-+ 1.07134895227114512445e-06,
-+ 1.05290111416989715657e-06,
-+ 1.03393419762981751439e-06,
-+ 1.01446177954410255975e-06,
-+ 9.94497669129371662775e-07,
-+ 9.74055898649058925340e-07,
-+ 9.53150714046586472362e-07,
-+ 9.31796565494312280840e-07,
-+ 9.10008097864302267693e-07,
-+ 8.87800141127001133190e-07,
-+ 8.65187700683895514984e-07,
-+ 8.42185947640272748656e-07,
-+ 8.18810209024182236434e-07,
-+ 7.95075957957726542799e-07,
-+ 7.70998803786799171281e-07,
-+ 7.46594482175384812077e-07,
-+ 7.21878845170593542560e-07,
-+ 6.96867851244202251346e-07,
-+ 6.71577555317616239466e-07,
-+ 6.46024098775229858276e-07,
-+ 6.20223699473059009471e-07,
-+ 5.94192641748351015229e-07,
-+ 5.67947266436226132378e-07,
-+ 5.41503960899324198661e-07,
-+ 5.14879149076390935720e-07,
-+ 4.88089281555710163631e-07,
-+ 4.61150825679230424805e-07,
-+ 4.34080255683209686411e-07,
-+ 4.06894042881135298369e-07,
-+ 3.79608645894640438035e-07,
-+ 3.52240500938070933540e-07,
-+ 3.24806012162310247429e-07,
-+ 2.97321542063398880870e-07,
-+ 2.69803401961428131034e-07,
-+ 2.42267842555118836346e-07,
-+ 2.14731044557422131870e-07,
-+ 1.87209109417413194962e-07,
-+ 1.59718050133666455064e-07,
-+ 1.32273782164225461408e-07,
-+ 1.04892114438199221113e-07,
-+ 7.75887404739308462697e-08,
-+ 5.03792296086632588358e-08,
-+ 2.32790183440865896232e-08,
-+-3.69659818658931578941e-09,
-+-3.05324746267394544896e-08,
-+-5.72136236741530471848e-08,
-+-8.37252242245850243792e-08,
-+-1.10052629376678321428e-07,
-+-1.36181374294073481367e-07,
-+-1.62097183920627326452e-07,
-+-1.87785980544769814165e-07,
-+-2.13233891209139598521e-07,
-+-2.38427254961746979659e-07,
-+-2.63352629945029146904e-07,
-+-2.87996800319276546365e-07,
-+-3.12346783017024135980e-07,
-+-3.36389834325182185351e-07,
-+-3.60113456291384048568e-07,
-+-3.83505402952390790727e-07,
-+-4.06553686380447893525e-07,
-+-4.29246582545680592520e-07,
-+-4.51572636991498591533e-07,
-+-4.73520670320518712649e-07,
-+-4.95079783488583814637e-07,
-+-5.16239362904583738092e-07,
-+-5.36989085333807117288e-07,
-+-5.57318922603415019422e-07,
-+-5.77219146106557435187e-07,
-+-5.96680331105458410703e-07,
-+-6.15693360830245960493e-07,
-+-6.34249430372643094367e-07,
-+-6.52340050373084766760e-07,
-+-6.69957050499727724785e-07,
-+-6.87092582718938420602e-07,
-+-7.03739124355339611445e-07,
-+-7.19889480941261699077e-07,
-+-7.35536788854606509566e-07,
-+-7.50674517744575483077e-07,
-+-7.65296472744807734602e-07,
-+-7.79396796473609713033e-07,
-+-7.92969970821073911788e-07,
-+-8.06010818523039620686e-07,
-+-8.18514504521946435161e-07,
-+-8.30476537114796092696e-07,
-+-8.41892768888536356313e-07,
-+-8.52759397443332283837e-07,
-+-8.63072965904298430121e-07,
-+-8.72830363222411219091e-07,
-+-8.82028824265426919197e-07,
-+-8.90665929699767875244e-07,
-+-8.98739605664438117104e-07,
-+-9.06248123238310469019e-07,
-+-9.13190097701748130089e-07,
-+-9.19564487594497149126e-07,
-+-9.25370593571038710503e-07,
-+-9.30608057055225739965e-07,
-+-9.35276858695977623270e-07,
-+-9.39377316625935791305e-07,
-+-9.42910084525095898317e-07,
-+-9.45876149491550481034e-07,
-+-9.48276829721570430580e-07,
-+-9.50113772001370499672e-07,
-+-9.51388949013003911569e-07,
-+-9.52104656456936804630e-07,
-+-9.52263509993941125969e-07,
-+-9.51868442009069101583e-07,
-+-9.50922698200532126112e-07,
-+-9.49429833996434605628e-07,
-+-9.47393710802382531800e-07,
-+-9.44818492083089586131e-07,
-+-9.41708639281177158997e-07,
-+-9.38068907576461653450e-07,
-+-9.33904341489098676729e-07,
-+-9.29220270330045943147e-07,
-+-9.24022303502344510841e-07,
-+-9.18316325656801089995e-07,
-+-9.12108491705894399878e-07,
-+-9.05405221699414408662e-07,
-+-8.98213195565829804566e-07,
-+-8.90539347723179252958e-07,
-+-8.82390861563444624379e-07,
-+-8.73775163814392542299e-07,
-+-8.64699918782943232475e-07,
-+-8.55173022484167478071e-07,
-+-8.45202596660064471297e-07,
-+-8.34796982692334232859e-07,
-+-8.23964735413379340429e-07,
-+-8.12714616819815811869e-07,
-+-8.01055589692947371830e-07,
-+-7.88996811130245460602e-07,
-+-7.76547625992668790471e-07,
-+-7.63717560271924312522e-07,
-+-7.50516314382267606353e-07,
-+-7.36953756381291203872e-07,
-+-7.23039915124214685738e-07,
-+-7.08784973356202141615e-07,
-+-6.94199260747239361661e-07,
-+-6.79293246874135843310e-07,
-+-6.64077534154205262483e-07,
-+-6.48562850735273878957e-07,
-+-6.32760043346189360169e-07,
-+-6.16680070113397994562e-07,
-+-6.00333993346826913225e-07,
-+-5.83732972300828602773e-07,
-+-5.66888255913847209443e-07,
-+-5.49811175532121660261e-07,
-+-5.32513137621453772346e-07,
-+-5.15005616471779758539e-07,
-+-4.97300146899023921939e-07,
-+-4.79408316948729425562e-07,
-+-4.61341760605933600647e-07,
-+-4.43112150515734081304e-07,
-+-4.24731190718963677602e-07,
-+-4.06210609407354576801e-07,
-+-3.87562151702548692569e-07,
-+-3.68797572463265930466e-07,
-+-3.49928629124907727258e-07,
-+-3.30967074575835952180e-07,
-+-3.11924650074512148172e-07,
-+-2.92813078211650909737e-07,
-+-2.73644055921480525304e-07,
-+-2.54429247546160283934e-07,
-+-2.35180277957349847825e-07,
-+-2.15908725738868123295e-07,
-+-1.96626116434371227810e-07,
-+-1.77343915863602168094e-07,
-+-1.58073523511642661593e-07,
-+-1.38826265993976471359e-07,
-+-1.19613390601659479034e-07,
-+-1.00446058929897965640e-07,
-+-8.13353405935726935918e-08,
-+-6.22922070331324441674e-08,
-+-4.33275254142092293362e-08,
-+-2.44520526242285169324e-08,
-+ 0 /* Need a final zero coefficient */
-+
-diff -r -u --new-file k3b-r948463/libk3b/plugin/libsamplerate/mid_qual_coeffs.h k3b-r948463.patched/libk3b/plugin/libsamplerate/mid_qual_coeffs.h
---- k3b-r948463/libk3b/plugin/libsamplerate/mid_qual_coeffs.h 1969-12-31 18:00:00.000000000 -0600
-+++ k3b-r948463.patched/libk3b/plugin/libsamplerate/mid_qual_coeffs.h 2009-04-03 14:00:42.000000000 -0500
-@@ -0,0 +1,5315 @@
-+/*
-+** Copyright (C) 2002,2003 Erik de Castro Lopo <erikd@mega-nerd.com>
-+**
-+** This program is free software; you can redistribute it and/or modify
-+** it under the terms of the GNU General Public License as published by
-+** the Free Software Foundation; either version 2 of the License, or
-+** (at your option) any later version.
-+**
-+** This program is distributed in the hope that it will be useful,
-+** but WITHOUT ANY WARRANTY; without even the implied warranty of
-+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+** GNU General Public License for more details.
-+**
-+** You should have received a copy of the GNU General Public License
-+** along with this program; if not, write to the Free Software
-+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+
-+
-+/*
-+** f = make_filter (19, 128, 100.2) ;
-+** Pass band width : 0.0039063 (should be 0.0039062)
-+** Stop band atten. : 100.35 dB
-+** -3dB band width : 0.665
-+** half length : 5285
-+** increment : 128
-+*/
-+
-+ 9.20381425342432724079e-01,
-+ 9.20302993473144703707e-01,
-+ 9.20067721990720843728e-01,
-+ 9.19675683262634269255e-01,
-+ 9.19126997871811179941e-01,
-+ 9.18421834572361261984e-01,
-+ 9.17560410227629907887e-01,
-+ 9.16542989730570578644e-01,
-+ 9.15369885906517022356e-01,
-+ 9.14041459398341027409e-01,
-+ 9.12558118534084750095e-01,
-+ 9.10920319177104365060e-01,
-+ 9.09128564558774221460e-01,
-+ 9.07183405093831884969e-01,
-+ 9.05085438178449441793e-01,
-+ 9.02835307971073142141e-01,
-+ 9.00433705156164609917e-01,
-+ 8.97881366690907456451e-01,
-+ 8.95179075534992096941e-01,
-+ 8.92327660363587904513e-01,
-+ 8.89327995263616055688e-01,
-+ 8.86180999413433867495e-01,
-+ 8.82887636746086057471e-01,
-+ 8.79448915596223401714e-01,
-+ 8.75865888330860098421e-01,
-+ 8.72139650964099621966e-01,
-+ 8.68271342755988384532e-01,
-+ 8.64262145795659297853e-01,
-+ 8.60113284568922442652e-01,
-+ 8.55826025510500576488e-01,
-+ 8.51401676541053253899e-01,
-+ 8.46841586589208494829e-01,
-+ 8.42147145098761318316e-01,
-+ 8.37319781521271289115e-01,
-+ 8.32360964794223279206e-01,
-+ 8.27272202804994805092e-01,
-+ 8.22055041840814237908e-01,
-+ 8.16711066024966680921e-01,
-+ 8.11241896739414047879e-01,
-+ 8.05649192034131989004e-01,
-+ 7.99934646023336304310e-01,
-+ 7.94099988268876399999e-01,
-+ 7.88146983151028934778e-01,
-+ 7.82077429226948894758e-01,
-+ 7.75893158577014574462e-01,
-+ 7.69596036139359007677e-01,
-+ 7.63187959032822549332e-01,
-+ 7.56670855868614267159e-01,
-+ 7.50046686050942712498e-01,
-+ 7.43317439066910390366e-01,
-+ 7.36485133765944488538e-01,
-+ 7.29551817629036647439e-01,
-+ 7.22519566028118842560e-01,
-+ 7.15390481475825179558e-01,
-+ 7.08166692865972891013e-01,
-+ 7.00850354705043199210e-01,
-+ 6.93443646334978125445e-01,
-+ 6.85948771147587565977e-01,
-+ 6.78367955790895149626e-01,
-+ 6.70703449367723969488e-01,
-+ 6.62957522626846706970e-01,
-+ 6.55132467147013564102e-01,
-+ 6.47230594514182855370e-01,
-+ 6.39254235492288658271e-01,
-+ 6.31205739187853498429e-01,
-+ 6.23087472208794013184e-01,
-+ 6.14901817817740559136e-01,
-+ 6.06651175080214377644e-01,
-+ 5.98337958007979286990e-01,
-+ 5.89964594697926170141e-01,
-+ 5.81533526466822769940e-01,
-+ 5.73047206982255086238e-01,
-+ 5.64508101390120198282e-01,
-+ 5.55918685439004245374e-01,
-+ 5.47281444601789957005e-01,
-+ 5.38598873194839455891e-01,
-+ 5.29873473495091729113e-01,
-+ 5.21107754855426819063e-01,
-+ 5.12304232818644900149e-01,
-+ 5.03465428230393974296e-01,
-+ 4.94593866351407229764e-01,
-+ 4.85692075969380243627e-01,
-+ 4.76762588510854068424e-01,
-+ 4.67807937153435049460e-01,
-+ 4.58830655938690934459e-01,
-+ 4.49833278886094922733e-01,
-+ 4.40818339108329071419e-01,
-+ 4.31788367928309491095e-01,
-+ 4.22745893998278443604e-01,
-+ 4.13693442421281976085e-01,
-+ 4.04633533875401296687e-01,
-+ 3.95568683741051418945e-01,
-+ 3.86501401231698737959e-01,
-+ 3.77434188528326886036e-01,
-+ 3.68369539917981492216e-01,
-+ 3.59309940936731631034e-01,
-+ 3.50257867517365428789e-01,
-+ 3.41215785142159444554e-01,
-+ 3.32186148001037462318e-01,
-+ 3.23171398155436717659e-01,
-+ 3.14173964708215069930e-01,
-+ 3.05196262979898602641e-01,
-+ 2.96240693691587786418e-01,
-+ 2.87309642154843669637e-01,
-+ 2.78405477468841422439e-01,
-+ 2.69530551725107592187e-01,
-+ 2.60687199220140719547e-01,
-+ 2.51877735676207303861e-01,
-+ 2.43104457470603635416e-01,
-+ 2.34369640873684476068e-01,
-+ 2.25675541295929371621e-01,
-+ 2.17024392544335781308e-01,
-+ 2.08418406088417329514e-01,
-+ 1.99859770336071163044e-01,
-+ 1.91350649919593329695e-01,
-+ 1.82893184992099055997e-01,
-+ 1.74489490534610131034e-01,
-+ 1.66141655674062554970e-01,
-+ 1.57851743012483253237e-01,
-+ 1.49621787967589486845e-01,
-+ 1.41453798125033586297e-01,
-+ 1.33349752602548832225e-01,
-+ 1.25311601426208646393e-01,
-+ 1.17341264919035181968e-01,
-+ 1.09440633102170670199e-01,
-+ 1.01611565108827309190e-01,
-+ 9.38558886112234730392e-02,
-+ 8.61753992607110774760e-02,
-+ 7.85718601412871003875e-02,
-+ 7.10470012366834768880e-02,
-+ 6.36025189112217892440e-02,
-+ 5.62400754046094436545e-02,
-+ 4.89612983408535609731e-02,
-+ 4.17677802514581156257e-02,
-+ 3.46610781130688300200e-02,
-+ 2.76427128997189970605e-02,
-+ 2.07141691498255002546e-02,
-+ 1.38768945480800508230e-02,
-+ 7.13229952237052523822e-03,
-+ 4.81756855863834190269e-04,
-+-6.07339868562557089193e-03,
-+-1.25318707108654243260e-02,
-+-1.88924015449200635719e-02,
-+-2.51537725552469157431e-02,
-+-3.13148044620756293988e-02,
-+-3.73743576329800403224e-02,
-+-4.33313323615558548818e-02,
-+-4.91846691301275826258e-02,
-+-5.49333488564130167919e-02,
-+-6.05763931240776432041e-02,
-+-6.61128643971268664670e-02,
-+-7.15418662180770936754e-02,
-+-7.68625433898662002719e-02,
-+-8.20740821414635834952e-02,
-+-8.71757102771481412473e-02,
-+-9.21666973094307923065e-02,
-+-9.70463545756019146937e-02,
-+-1.01814035337895597566e-01,
-+-1.06469134867262671396e-01,
-+-1.11011090510758053673e-01,
-+-1.15439381742549487808e-01,
-+-1.19753530198565633080e-01,
-+-1.23953099694804141917e-01,
-+-1.28037696229327896402e-01,
-+-1.32006967967990523904e-01,
-+-1.35860605213926149970e-01,
-+-1.39598340360859801690e-01,
-+-1.43219947830287880342e-01,
-+-1.46725243992595816289e-01,
-+-1.50114087072177021520e-01,
-+-1.53386377036633686499e-01,
-+-1.56542055470133889550e-01,
-+-1.59581105431021136321e-01,
-+-1.62503551293762121821e-01,
-+-1.65309458575341239328e-01,
-+-1.67998933746201201123e-01,
-+-1.70572124025848675943e-01,
-+-1.73029217163238657751e-01,
-+-1.75370441202067656183e-01,
-+-1.77596064231102662712e-01,
-+-1.79706394119684198518e-01,
-+-1.81701778238549410682e-01,
-+-1.83582603166114660675e-01,
-+-1.85349294380384888026e-01,
-+-1.87002315936635632454e-01,
-+-1.88542170131047126524e-01,
-+-1.89969397150449442746e-01,
-+-1.91284574708360660678e-01,
-+-1.92488317667500768993e-01,
-+-1.93581277648966099125e-01,
-+-1.94564142628253139433e-01,
-+-1.95437636518337454206e-01,
-+-1.96202518740000220188e-01,
-+-1.96859583779614849552e-01,
-+-1.97409660734602421250e-01,
-+-1.97853612846778603718e-01,
-+-1.98192337023800152496e-01,
-+-1.98426763348949375398e-01,
-+-1.98557854579480330681e-01,
-+-1.98586605633759266665e-01,
-+-1.98514043067442053081e-01,
-+-1.98341224538922389353e-01,
-+-1.98069238264312830200e-01,
-+-1.97699202462185225082e-01,
-+-1.97232264788348182760e-01,
-+-1.96669601760900314424e-01,
-+-1.96012418175829317146e-01,
-+-1.95261946513421102978e-01,
-+-1.94419446335739987131e-01,
-+-1.93486203675455742390e-01,
-+-1.92463530416288858271e-01,
-+-1.91352763665352892941e-01,
-+-1.90155265117664590280e-01,
-+-1.88872420413116609561e-01,
-+-1.87505638486184761371e-01,
-+-1.86056350908662238020e-01,
-+-1.84526011225710412367e-01,
-+-1.82916094285511643402e-01,
-+-1.81228095562823987574e-01,
-+-1.79463530476726945695e-01,
-+-1.77623933702856395822e-01,
-+-1.75710858480429804596e-01,
-+-1.73725875914355953888e-01,
-+-1.71670574272733023058e-01,
-+-1.69546558280039033617e-01,
-+-1.67355448406313112031e-01,
-+-1.65098880152636018348e-01,
-+-1.62778503333212087867e-01,
-+-1.60395981354360589455e-01,
-+-1.57952990490720118766e-01,
-+-1.55451219158974890400e-01,
-+-1.52892367189410044448e-01,
-+-1.50278145095599335868e-01,
-+-1.47610273342536069130e-01,
-+-1.44890481613516919346e-01,
-+-1.42120508076075402482e-01,
-+-1.39302098647282379673e-01,
-+-1.36437006258713466877e-01,
-+-1.33526990121390659594e-01,
-+-1.30573814991000874963e-01,
-+-1.27579250433698415668e-01,
-+-1.24545070092789769700e-01,
-+-1.21473050956605960193e-01,
-+-1.18364972627860873255e-01,
-+-1.15222616594794866063e-01,
-+-1.12047765504399418623e-01,
-+-1.08842202438021534716e-01,
-+-1.05607710189640782716e-01,
-+-1.02346070547107481641e-01,
-+-9.90590635766376431670e-02,
-+-9.57484669108492753020e-02,
-+-9.24160550406251946054e-02,
-+-8.90635986110882432731e-02,
-+-8.56928637219669248060e-02,
-+-8.23056112326309707861e-02,
-+-7.89035960720733398066e-02,
-+-7.54885665541076555929e-02,
-+-7.20622636980560449249e-02,
-+-6.86264205551892075841e-02,
-+-6.51827615411845612270e-02,
-+-6.17330017748623643969e-02,
-+-5.82788464234569522637e-02,
-+-5.48219900546751473525e-02,
-+-5.13641159957934842484e-02,
-+-4.79068957000384210154e-02,
-+-4.44519881204940292552e-02,
-+-4.10010390917734252048e-02,
-+-3.75556807196898087553e-02,
-+-3.41175307791583073969e-02,
-+-3.06881921205520574736e-02,
-+-2.72692520847377800619e-02,
-+-2.38622819270072061837e-02,
-+-2.04688362501167613050e-02,
-+-1.70904524466470482402e-02,
-+-1.37286501508831742385e-02,
-+-1.03849307004176948793e-02,
-+-7.06077660767133897385e-03,
-+-3.75765104151932821316e-03,
-+-4.76997319211794638602e-04,
-+ 2.77976159123423990222e-03,
-+ 6.01122355799481745270e-03,
-+ 9.21600776157955291212e-03,
-+ 1.23927551599897541740e-02,
-+ 1.55401289427332476439e-02,
-+ 1.86568149735395066857e-02,
-+ 2.17415222216296409596e-02,
-+ 2.47929831813923952366e-02,
-+ 2.78099542803314468686e-02,
-+ 3.07912162751492260448e-02,
-+ 3.37355746358383862260e-02,
-+ 3.66418599176616260893e-02,
-+ 3.95089281209001219608e-02,
-+ 4.23356610382612519317e-02,
-+ 4.51209665898422082608e-02,
-+ 4.78637791455433780907e-02,
-+ 5.05630598348475110426e-02,
-+ 5.32177968438652948535e-02,
-+ 5.58270056995735716732e-02,
-+ 5.83897295411673830645e-02,
-+ 6.09050393784494881189e-02,
-+ 6.33720343372027039575e-02,
-+ 6.57898418914746596631e-02,
-+ 6.81576180827297012366e-02,
-+ 7.04745477258180152980e-02,
-+ 7.27398446017178401668e-02,
-+ 7.49527516370186164263e-02,
-+ 7.71125410701128527480e-02,
-+ 7.92185146040738086270e-02,
-+ 8.12700035461998010478e-02,
-+ 8.32663689342140606042e-02,
-+ 8.52070016491116299928e-02,
-+ 8.70913225146551783773e-02,
-+ 8.89187823835221463620e-02,
-+ 9.06888622101164748601e-02,
-+ 9.24010731100602389354e-02,
-+ 9.40549564063880572107e-02,
-+ 9.56500836624715466971e-02,
-+ 9.71860567017110571486e-02,
-+ 9.86625076140278250980e-02,
-+ 1.00079098749209560726e-01,
-+ 1.01435522697153571170e-01,
-+ 1.02731502255068357643e-01,
-+ 1.03966790381692222867e-01,
-+ 1.05141170138599651662e-01,
-+ 1.06254454618664812005e-01,
-+ 1.07306486861763028529e-01,
-+ 1.08297139757793273174e-01,
-+ 1.09226315937109075271e-01,
-+ 1.10093947648453857613e-01,
-+ 1.10899996624498939357e-01,
-+ 1.11644453935089996155e-01,
-+ 1.12327339828307448677e-01,
-+ 1.12948703559463028978e-01,
-+ 1.13508623208143408223e-01,
-+ 1.14007205483430296145e-01,
-+ 1.14444585517425839738e-01,
-+ 1.14820926647215854066e-01,
-+ 1.15136420185409663053e-01,
-+ 1.15391285179401628658e-01,
-+ 1.15585768159497587204e-01,
-+ 1.15720142876065593129e-01,
-+ 1.15794710025859670655e-01,
-+ 1.15809796967682440694e-01,
-+ 1.15765757427549992320e-01,
-+ 1.15662971193527863711e-01,
-+ 1.15501843800413089847e-01,
-+ 1.15282806204434651320e-01,
-+ 1.15006314448161270358e-01,
-+ 1.14672849315791761104e-01,
-+ 1.14282915979024457531e-01,
-+ 1.13837043633692902578e-01,
-+ 1.13335785127364224723e-01,
-+ 1.12779716578100402957e-01,
-+ 1.12169436984582482353e-01,
-+ 1.11505567827804186187e-01,
-+ 1.10788752664543674320e-01,
-+ 1.10019656712822919142e-01,
-+ 1.09198966429570901160e-01,
-+ 1.08327389080707270352e-01,
-+ 1.07405652303864840302e-01,
-+ 1.06434503663973611953e-01,
-+ 1.05414710201933409239e-01,
-+ 1.04347057976597171192e-01,
-+ 1.03232351600300586991e-01,
-+ 1.02071413768162977398e-01,
-+ 1.00865084781397620906e-01,
-+ 9.96142220648654208581e-02,
-+ 9.83196996791074473432e-02,
-+ 9.69824078270985767691e-02,
-+ 9.56032523559593450102e-02,
-+ 9.41831542538692501054e-02,
-+ 9.27230491424269054335e-02,
-+ 9.12238867646961854030e-02,
-+ 8.96866304691910365410e-02,
-+ 8.81122566900391923639e-02,
-+ 8.65017544235756330462e-02,
-+ 8.48561247016157149670e-02,
-+ 8.31763800616522747111e-02,
-+ 8.14635440142294359189e-02,
-+ 7.97186505077449730772e-02,
-+ 7.79427433909263833733e-02,
-+ 7.61368758732360317865e-02,
-+ 7.43021099834537401829e-02,
-+ 7.24395160266886328770e-02,
-+ 7.05501720400689841250e-02,
-+ 6.86351632473627820685e-02,
-+ 6.66955815127786150187e-02,
-+ 6.47325247941935855156e-02,
-+ 6.27470965960619936341e-02,
-+ 6.07404054222478104186e-02,
-+ 5.87135642290347939398e-02,
-+ 5.66676898785539728820e-02,
-+ 5.46039025928778953833e-02,
-+ 5.25233254090291187821e-02,
-+ 5.04270836351378148876e-02,
-+ 4.83163043079990264794e-02,
-+ 4.61921156522659484556e-02,
-+ 4.40556465415169601352e-02,
-+ 4.19080259614387148903e-02,
-+ 3.97503824753536946779e-02,
-+ 3.75838436923350352470e-02,
-+ 3.54095357381316658274e-02,
-+ 3.32285827291374860626e-02,
-+ 3.10421062496353539206e-02,
-+ 2.88512248325339532018e-02,
-+ 2.66570534438272561950e-02,
-+ 2.44607029709929951755e-02,
-+ 2.22632797155504665032e-02,
-+ 2.00658848899928875242e-02,
-+ 1.78696141193047525197e-02,
-+ 1.56755569472778119589e-02,
-+ 1.34847963478305701845e-02,
-+ 1.12984082415343196903e-02,
-+ 9.11746101754993230892e-03,
-+ 6.94301506117043099736e-03,
-+ 4.77612228716621078223e-03,
-+ 2.61782567912160601259e-03,
-+ 4.69158834953931199938e-04,
-+-1.66885448120184334310e-03,
-+-3.79520078056328966087e-03,
-+-5.90887728454510350456e-03,
-+-8.00889235270581950621e-03,
-+-1.00942659036281096735e-02,
-+-1.21640298285631744818e-02,
-+-1.42172283976795769261e-02,
-+-1.62529186587560860178e-02,
-+-1.82701708281667977996e-02,
-+-2.02680686740044913030e-02,
-+-2.22457098911984715861e-02,
-+-2.42022064684845883420e-02,
-+-2.61366850470883434199e-02,
-+-2.80482872709881952966e-02,
-+-2.99361701286294627777e-02,
-+-3.17995062859638480401e-02,
-+-3.36374844106955839251e-02,
-+-3.54493094876133021942e-02,
-+-3.72342031249025678941e-02,
-+-3.89914038513265101549e-02,
-+-4.07201674041748756805e-02,
-+-4.24197670078825320172e-02,
-+-4.40894936432238218615e-02,
-+-4.57286563069958726380e-02,
-+-4.73365822621031329120e-02,
-+-4.89126172779674045499e-02,
-+-5.04561258611889093539e-02,
-+-5.19664914763842064604e-02,
-+-5.34431167571409876382e-02,
-+-5.48854237070259126652e-02,
-+-5.62928538905927214331e-02,
-+-5.76648686143374361590e-02,
-+-5.90009490975559047765e-02,
-+-6.03005966330638770723e-02,
-+-6.15633327377404851455e-02,
-+-6.27886992928659848356e-02,
-+-6.39762586742271682771e-02,
-+-6.51255938719669663639e-02,
-+-6.62363086001636625078e-02,
-+-6.73080273961252362191e-02,
-+-6.83403957093936531564e-02,
-+-6.93330799804545011567e-02,
-+-7.02857677091563298744e-02,
-+-7.11981675128459667867e-02,
-+-7.20700091742300513742e-02,
-+-7.29010436789823551562e-02,
-+-7.36910432431144429843e-02,
-+-7.44398013301399846808e-02,
-+-7.51471326580581411303e-02,
-+-7.58128731961966451092e-02,
-+-7.64368801519491603003e-02,
-+-7.70190319474562123947e-02,
-+-7.75592281862732546571e-02,
-+-7.80573896100858338754e-02,
-+-7.85134580455219832640e-02,
-+-7.89273963411314394278e-02,
-+-7.92991882945930925963e-02,
-+-7.96288385702248469045e-02,
-+-7.99163726068679303172e-02,
-+-8.01618365162299895132e-02,
-+-8.03652969717648935077e-02,
-+-8.05268410881816582014e-02,
-+-8.06465762916719064446e-02,
-+-8.07246301809524391402e-02,
-+-8.07611503792237672705e-02,
-+-8.07563043771459543319e-02,
-+-8.07102793669422780010e-02,
-+-8.06232820677405676024e-02,
-+-8.04955385422673613816e-02,
-+-8.03272940050135386691e-02,
-+-8.01188126219958829388e-02,
-+-7.98703773022373386681e-02,
-+-7.95822894810978148650e-02,
-+-7.92548688955872077111e-02,
-+-7.88884533517974217975e-02,
-+-7.84833984845913629202e-02,
-+-7.80400775096937587838e-02,
-+-7.75588809683271651618e-02,
-+-7.70402164645424963885e-02,
-+-7.64845083953963472689e-02,
-+-7.58921976741284420864e-02,
-+-7.52637414464975562645e-02,
-+-7.45996128004335623540e-02,
-+-7.39003004691712872543e-02,
-+-7.31663085280282593503e-02,
-+-7.23981560849959182580e-02,
-+-7.15963769653113479841e-02,
-+-7.07615193901859063086e-02,
-+-6.98941456498595042879e-02,
-+-6.89948317711622932658e-02,
-+-6.80641671797573843961e-02,
-+-6.71027543572484258538e-02,
-+-6.61112084933319216207e-02,
-+-6.50901571331780198770e-02,
-+-6.40402398202278705375e-02,
-+-6.29621077345897672828e-02,
-+-6.18564233272276414732e-02,
-+-6.07238599501278633608e-02,
-+-5.95651014826367106170e-02,
-+-5.83808419541620299276e-02,
-+-5.71717851634284957019e-02,
-+-5.59386442944868889082e-02,
-+-5.46821415296654678162e-02,
-+-5.34030076596649916354e-02,
-+-5.21019816909916097525e-02,
-+-5.07798104509243897198e-02,
-+-4.94372481902171159729e-02,
-+-4.80750561837304871138e-02,
-+-4.66940023291949543593e-02,
-+-4.52948607443019804486e-02,
-+-4.38784113623226362799e-02,
-+-4.24454395264523623443e-02,
-+-4.09967355830820473495e-02,
-+-3.95330944741913298257e-02,
-+-3.80553153290659820773e-02,
-+-3.65642010555344981748e-02,
-+-3.50605579309238787888e-02,
-+-3.35451951929296859900e-02,
-+-3.20189246305989869135e-02,
-+-3.04825601756209853266e-02,
-+-2.89369174941192380812e-02,
-+-2.73828135791425071599e-02,
-+-2.58210663440446019923e-02,
-+-2.42524942169475357656e-02,
-+-2.26779157364765740490e-02,
-+-2.10981491489598167732e-02,
-+-1.95140120072784944982e-02,
-+-1.79263207715556205368e-02,
-+-1.63358904118689959861e-02,
-+-1.47435340131725541729e-02,
-+-1.31500623826066934119e-02,
-+-1.15562836593809201841e-02,
-+-9.96300292740478522779e-03,
-+-8.37102183084635804999e-03,
-+-6.78113819279113280714e-03,
-+-5.19414563717416049443e-03,
-+-3.61083321415951816885e-03,
-+-2.03198502912982836496e-03,
-+-4.58379875457016528785e-04,
-+ 1.10920912878408159559e-03,
-+ 2.67001489999788748156e-03,
-+ 4.22327674398739229267e-03,
-+ 5.76824070645192907292e-03,
-+ 7.30415991891262585123e-03,
-+ 8.83029493991307340428e-03,
-+ 1.03459140913472139728e-02,
-+ 1.18502937897689078484e-02,
-+ 1.33427188725394711699e-02,
-+ 1.48224829186761088151e-02,
-+ 1.62888885642629918649e-02,
-+ 1.77412478122899279487e-02,
-+ 1.91788823367922064977e-02,
-+ 2.06011237811589489888e-02,
-+ 2.20073140504912223570e-02,
-+ 2.33968055978847275234e-02,
-+ 2.47689617045220474012e-02,
-+ 2.61231567534600458980e-02,
-+ 2.74587764969989392427e-02,
-+ 2.87752183175302503337e-02,
-+ 3.00718914817559267172e-02,
-+ 3.13482173881795972425e-02,
-+ 3.26036298077741898416e-02,
-+ 3.38375751177299316508e-02,
-+ 3.50495125281968383790e-02,
-+ 3.62389143019323234363e-02,
-+ 3.74052659667742509741e-02,
-+ 3.85480665208594169835e-02,
-+ 3.96668286305130596281e-02,
-+ 4.07610788207384555637e-02,
-+ 4.18303576582400582495e-02,
-+ 4.28742199269152648999e-02,
-+ 4.38922347957571498678e-02,
-+ 4.48839859791098777508e-02,
-+ 4.58490718892284668251e-02,
-+ 4.67871057810912635566e-02,
-+ 4.76977158894239181008e-02,
-+ 4.85805455578927625204e-02,
-+ 4.94352533604324947958e-02,
-+ 5.02615132146747092823e-02,
-+ 5.10590144874505449946e-02,
-+ 5.18274620923405288098e-02,
-+ 5.25665765792536696099e-02,
-+ 5.32760942160161940495e-02,
-+ 5.39557670619600152073e-02,
-+ 5.46053630334999498541e-02,
-+ 5.52246659616954863048e-02,
-+ 5.58134756417962285546e-02,
-+ 5.63716078747732926568e-02,
-+ 5.68988945008435942352e-02,
-+ 5.73951834249974424118e-02,
-+ 5.78603386345437897820e-02,
-+ 5.82942402086913807890e-02,
-+ 5.86967843201876629533e-02,
-+ 5.90678832290408364902e-02,
-+ 5.94074652683551154841e-02,
-+ 5.97154748223121395467e-02,
-+ 5.99918722963358186373e-02,
-+ 6.02366340794795798730e-02,
-+ 6.04497524990822918123e-02,
-+ 6.06312357677402588574e-02,
-+ 6.07811079226447462109e-02,
-+ 6.08994087573431347460e-02,
-+ 6.09861937459786132565e-02,
-+ 6.10415339600735781800e-02,
-+ 6.10655159779199541159e-02,
-+ 6.10582417866455048894e-02,
-+ 6.10198286770287368075e-02,
-+ 6.09504091311373757955e-02,
-+ 6.08501307028684462752e-02,
-+ 6.07191558914731074892e-02,
-+ 6.05576620081493127712e-02,
-+ 6.03658410357920463540e-02,
-+ 6.01438994819913433365e-02,
-+ 5.98920582253712890930e-02,
-+ 5.96105523553696475814e-02,
-+ 5.92996310055547357076e-02,
-+ 5.89595571805846263569e-02,
-+ 5.85906075769135961662e-02,
-+ 5.81930723973530239501e-02,
-+ 5.77672551595985947492e-02,
-+ 5.73134724988377947108e-02,
-+ 5.68320539645518138516e-02,
-+ 5.63233418116318024227e-02,
-+ 5.57876907859301829351e-02,
-+ 5.52254679043691909524e-02,
-+ 5.46370522297332239514e-02,
-+ 5.40228346402717510277e-02,
-+ 5.33832175942438452720e-02,
-+ 5.27186148895339920517e-02,
-+ 5.20294514184751963337e-02,
-+ 5.13161629180133513350e-02,
-+ 5.05791957153526455793e-02,
-+ 4.98190064692186004858e-02,
-+ 4.90360619068817560340e-02,
-+ 4.82308385570846126500e-02,
-+ 4.74038224790149093080e-02,
-+ 4.65555089874726130139e-02,
-+ 4.56864023743756911267e-02,
-+ 4.47970156267560870589e-02,
-+ 4.38878701413918104191e-02,
-+ 4.29594954362301426065e-02,
-+ 4.20124288587509150950e-02,
-+ 4.10472152914242438548e-02,
-+ 4.00644068544164441703e-02,
-+ 3.90645626056996611575e-02,
-+ 3.80482482387188569728e-02,
-+ 3.70160357777762072384e-02,
-+ 3.59685032712854929615e-02,
-+ 3.49062344830574772248e-02,
-+ 3.38298185817733007563e-02,
-+ 3.27398498288028888537e-02,
-+ 3.16369272645302956892e-02,
-+ 3.05216543933420694779e-02,
-+ 2.93946388674391281826e-02,
-+ 2.82564921696314662325e-02,
-+ 2.71078292952747976208e-02,
-+ 2.59492684335090040282e-02,
-+ 2.47814306479556094309e-02,
-+ 2.36049395570361274233e-02,
-+ 2.24204210140672086093e-02,
-+ 2.12285027872915685321e-02,
-+ 2.00298142400041241651e-02,
-+ 1.88249860109280658937e-02,
-+ 1.76146496949991550329e-02,
-+ 1.63994375247131611573e-02,
-+ 1.51799820521929199751e-02,
-+ 1.39569158321288973312e-02,
-+ 1.27308711057459132687e-02,
-+ 1.15024794859493635635e-02,
-+ 1.02723716438034538834e-02,
-+ 9.04117699648874194318e-03,
-+ 7.80952339689281599400e-03,
-+ 6.57803682497710377058e-03,
-+ 5.34734108107065390925e-03,
-+ 4.11805748123311807923e-03,
-+ 2.89080455483250748500e-03,
-+ 1.66619774448026097997e-03,
-+ 4.44849108462394484276e-04,
-+-7.72632974192619353775e-04,
-+-1.98564409587129479459e-03,
-+-3.19358410962515939027e-03,
-+-4.39585741537518604610e-03,
-+-5.59187324294384193596e-03,
-+-6.78104593178024354222e-03,
-+-7.96279520725374188872e-03,
-+-9.13654645338901789942e-03,
-+-1.03017309819179135599e-02,
-+-1.14577862975281108415e-02,
-+-1.26041563591888523127e-02,
-+-1.37402918374362748022e-02,
-+-1.48656503675044012608e-02,
-+-1.59796967981878784704e-02,
-+-1.70819034363291870349e-02,
-+-1.81717502868205364741e-02,
-+-1.92487252880175659098e-02,
-+-2.03123245424604338683e-02,
-+-2.13620525428040268501e-02,
-+-2.23974223928605567502e-02,
-+-2.34179560236593246880e-02,
-+-2.44231844044319607034e-02,
-+-2.54126477484353970049e-02,
-+-2.63858957135253285875e-02,
-+-2.73424875973971651111e-02,
-+-2.82819925274152735029e-02,
-+-2.92039896449517132060e-02,
-+-3.01080682841611060874e-02,
-+-3.09938281451182656712e-02,
-+-3.18608794612527251866e-02,
-+-3.27088431610126698090e-02,
-+-3.35373510236956218211e-02,
-+-3.43460458293886189418e-02,
-+-3.51345815029584646050e-02,
-+-3.59026232520415142235e-02,
-+-3.66498476989806504234e-02,
-+-3.73759430066653228208e-02,
-+-3.80806089982259413085e-02,
-+-3.87635572705481989964e-02,
-+-3.94245113015637763110e-02,
-+-4.00632065512871449187e-02,
-+-4.06793905565660182666e-02,
-+-4.12728230195161804872e-02,
-+-4.18432758896181006270e-02,
-+-4.23905334394521562946e-02,
-+-4.29143923340550431655e-02,
-+-4.34146616938810431252e-02,
-+-4.38911631513571320884e-02,
-+-4.43437309010235244933e-02,
-+-4.47722117432520008706e-02,
-+-4.51764651215424140052e-02,
-+-4.55563631533957985598e-02,
-+-4.59117906547691981278e-02,
-+-4.62426451581186420681e-02,
-+-4.65488369240420196693e-02,
-+-4.68302889465325583584e-02,
-+-4.70869369518625499604e-02,
-+-4.73187293911136036551e-02,
-+-4.75256274263797934276e-02,
-+-4.77076049106652452791e-02,
-+-4.78646483615089088359e-02,
-+-4.79967569283660938639e-02,
-+-4.81039423537813551346e-02,
-+-4.81862289283918193705e-02,
-+-4.82436534398009986280e-02,
-+-4.82762651153660765635e-02,
-+-4.82841255589469900422e-02,
-+-4.82673086816636301433e-02,
-+-4.82259006267171733140e-02,
-+-4.81599996883273831494e-02,
-+-4.80697162248445095112e-02,
-+-4.79551725660972635867e-02,
-+-4.78165029150386111656e-02,
-+-4.76538532437557615928e-02,
-+-4.74673811839129988766e-02,
-+-4.72572559116971463444e-02,
-+-4.70236580273407853148e-02,
-+-4.67667794292976057857e-02,
-+-4.64868231831488537553e-02,
-+-4.61840033853220879867e-02,
-+-4.58585450217043055776e-02,
-+-4.55106838212354786188e-02,
-+-4.51406661045703067048e-02,
-+-4.47487486278967949715e-02,
-+-4.43351984220053674246e-02,
-+-4.39002926267011706063e-02,
-+-4.34443183206557337339e-02,
-+-4.29675723467968784242e-02,
-+-4.24703611333365343983e-02,
-+-4.19530005105376649355e-02,
-+-4.14158155233245728333e-02,
-+-4.08591402398425090903e-02,
-+-4.02833175560728118381e-02,
-+-3.96886989966125647289e-02,
-+-3.90756445117304562764e-02,
-+-3.84445222708086342678e-02,
-+-3.77957084522856853748e-02,
-+-3.71295870302152039577e-02,
-+-3.64465495575560030628e-02,
-+-3.57469949463106728693e-02,
-+-3.50313292446328208851e-02,
-+-3.42999654110217877534e-02,
-+-3.35533230857262762536e-02,
-+-3.27918283594781714840e-02,
-+-3.20159135396808763874e-02,
-+-3.12260169141751545152e-02,
-+-3.04225825127068701115e-02,
-+-2.96060598662241068746e-02,
-+-2.87769037641279583351e-02,
-+-2.79355740096046620269e-02,
-+-2.70825351731674365818e-02,
-+-2.62182563445339765484e-02,
-+-2.53432108829716763732e-02,
-+-2.44578761662360491536e-02,
-+-2.35627333382326387134e-02,
-+-2.26582670555346976649e-02,
-+-2.17449652328813719526e-02,
-+-2.08233187877915476571e-02,
-+-1.98938213844193738378e-02,
-+-1.89569691767836438767e-02,
-+-1.80132605515005567165e-02,
-+-1.70631958701489179486e-02,
-+-1.61072772113989640119e-02,
-+-1.51460081130329674015e-02,
-+-1.41798933139869222375e-02,
-+-1.32094384965426719925e-02,
-+-1.22351500287977872639e-02,
-+-1.12575347075429474386e-02,
-+-1.02770995016708190789e-02,
-+-9.29435129624720662855e-03,
-+-8.30979663736668323903e-03,
-+-7.32394147791955510418e-03,
-+-6.33729092439597792991e-03,
-+-5.35034898484767259402e-03,
-+-4.36361831813259892082e-03,
-+-3.37759998456233596562e-03,
-+-2.39279319807447028376e-03,
-+-1.40969508004874419758e-03,
-+-4.28800414884481764701e-04,
-+ 5.49398592542026499921e-04,
-+ 1.52441255742493384819e-03,
-+ 2.49575515346705124192e-03,
-+ 3.46294334909421361660e-03,
-+ 4.42549764133481383921e-03,
-+ 5.38294228725484918269e-03,
-+ 6.33480553283812409388e-03,
-+ 7.28061983920614500670e-03,
-+ 8.21992210606954480656e-03,
-+ 9.15225389230991427658e-03,
-+ 1.00771616335884814375e-02,
-+ 1.09941968568804098599e-02,
-+ 1.19029163918370119862e-02,
-+ 1.28028825788794285712e-02,
-+ 1.36936634739278067369e-02,
-+ 1.45748330496734655737e-02,
-+ 1.54459713933036285605e-02,
-+ 1.63066649005877105372e-02,
-+ 1.71565064662418664820e-02,
-+ 1.79950956704824222010e-02,
-+ 1.88220389616893905849e-02,
-+ 1.96369498350979915235e-02,
-+ 2.04394490074384753420e-02,
-+ 2.12291645874509368741e-02,
-+ 2.20057322421993752093e-02,
-+ 2.27687953591133446229e-02,
-+ 2.35180052036899414625e-02,
-+ 2.42530210727860510989e-02,
-+ 2.49735104434401083973e-02,
-+ 2.56791491171582640651e-02,
-+ 2.63696213596067048635e-02,
-+ 2.70446200356534542653e-02,
-+ 2.77038467397033236206e-02,
-+ 2.83470119212748915272e-02,
-+ 2.89738350057704117935e-02,
-+ 2.95840445103900430424e-02,
-+ 3.01773781551470283990e-02,
-+ 3.07535829689405612597e-02,
-+ 3.13124153906489052779e-02,
-+ 3.18536413652031544230e-02,
-+ 3.23770364346098321606e-02,
-+ 3.28823858238901367557e-02,
-+ 3.33694845219050725826e-02,
-+ 3.38381373570426913222e-02,
-+ 3.42881590677418662816e-02,
-+ 3.47193743678329280744e-02,
-+ 3.51316180066747196786e-02,
-+ 3.55247348240743179848e-02,
-+ 3.58985797999757036414e-02,
-+ 3.62530180989057912444e-02,
-+ 3.65879251091717136446e-02,
-+ 3.69031864768026920953e-02,
-+ 3.71986981342348130286e-02,
-+ 3.74743663237384755371e-02,
-+ 3.77301076155911810361e-02,
-+ 3.79658489210015839821e-02,
-+ 3.81815274997910139576e-02,
-+ 3.83770909628457501661e-02,
-+ 3.85524972693506232102e-02,
-+ 3.87077147188212219997e-02,
-+ 3.88427219379517477127e-02,
-+ 3.89575078623010107037e-02,
-+ 3.90520717128378727634e-02,
-+ 3.91264229673738417326e-02,
-+ 3.91805813269093319851e-02,
-+ 3.92145766769267448137e-02,
-+ 3.92284490436606639308e-02,
-+ 3.92222485453833716318e-02,
-+ 3.91960353387427393179e-02,
-+ 3.91498795601925853038e-02,
-+ 3.90838612625587153437e-02,
-+ 3.89980703467861372635e-02,
-+ 3.88926064889137598768e-02,
-+ 3.87675790623278684888e-02,
-+ 3.86231070553441427351e-02,
-+ 3.84593189841744911850e-02,
-+ 3.82763528013330134314e-02,
-+ 3.80743557995419576456e-02,
-+ 3.78534845111941978257e-02,
-+ 3.76139046034402041441e-02,
-+ 3.73557907689583551525e-02,
-+ 3.70793266124797640804e-02,
-+ 3.67847045331337260676e-02,
-+ 3.64721256026843687614e-02,
-+ 3.61417994397318920186e-02,
-+ 3.57939440799517269443e-02,
-+ 3.54287858424472551500e-02,
-+ 3.50465591922946295700e-02,
-+ 3.46475065993586336943e-02,
-+ 3.42318783934602438590e-02,
-+ 3.37999326159794388769e-02,
-+ 3.33519348679760310739e-02,
-+ 3.28881581549163512501e-02,
-+ 3.24088827280907126882e-02,
-+ 3.19143959228117141125e-02,
-+ 3.14049919934835039537e-02,
-+ 3.08809719456320137809e-02,
-+ 3.03426433649902835277e-02,
-+ 2.97903202437320435703e-02,
-+ 2.92243228039485228309e-02,
-+ 2.86449773184645310742e-02,
-+ 2.80526159290918272737e-02,
-+ 2.74475764624171579553e-02,
-+ 2.68302022432251076334e-02,
-+ 2.62008419056547099679e-02,
-+ 2.55598492021924458828e-02,
-+ 2.49075828106016076979e-02,
-+ 2.42444061388931500489e-02,
-+ 2.35706871284384854304e-02,
-+ 2.28867980553310382263e-02,
-+ 2.21931153300989475463e-02,
-+ 2.14900192958749729211e-02,
-+ 2.07778940251304410081e-02,
-+ 2.00571271150767407865e-02,
-+ 1.93281094818433703264e-02,
-+ 1.85912351535375483524e-02,
-+ 1.78469010622939669442e-02,
-+ 1.70955068354214992365e-02,
-+ 1.63374545857532041393e-02,
-+ 1.55731487013095522970e-02,
-+ 1.48029956343801779445e-02,
-+ 1.40274036901342491479e-02,
-+ 1.32467828148644800601e-02,
-+ 1.24615443839752523814e-02,
-+ 1.16721009898197274068e-02,
-+ 1.08788662294939664221e-02,
-+ 1.00822544926967554851e-02,
-+ 9.28268074975848594965e-03,
-+ 8.48056033994836096224e-03,
-+ 7.67630876016376067356e-03,
-+ 6.87034145410842303492e-03,
-+ 6.06307360206417237519e-03,
-+ 5.25491991135924960826e-03,
-+ 4.44629440763854959229e-03,
-+ 3.63761022703795386390e-03,
-+ 2.82927940936458007654e-03,
-+ 2.02171269238637712692e-03,
-+ 1.21531930732854268409e-03,
-+ 4.10506775680379075531e-04,
-+-3.92319292591773477897e-04,
-+-1.19275539932616717227e-03,
-+-1.99040035684389668771e-03,
-+-2.78485548493010359392e-03,
-+-3.57572480602225085608e-03,
-+-4.36261523851058825862e-03,
-+-5.14513678806150041162e-03,
-+-5.92290273686880194143e-03,
-+-6.69552983074627079685e-03,
-+-7.46263846397084845696e-03,
-+-8.22385286178995214557e-03,
-+-8.97880126050735853649e-03,
-+-9.72711608506233310623e-03,
-+-1.04684341240196421979e-02,
-+-1.12023967018896625919e-02,
-+-1.19286498486973670946e-02,
-+-1.26468444667234853479e-02,
-+-1.33566364943390990250e-02,
-+-1.40576870668614704873e-02,
-+-1.47496626743549175825e-02,
-+-1.54322353163073335003e-02,
-+-1.61050826531120676310e-02,
-+-1.67678881542855998110e-02,
-+-1.74203412433571909468e-02,
-+-1.80621374393645714451e-02,
-+-1.86929784948938332301e-02,
-+-1.93125725306022809347e-02,
-+-1.99206341661660978060e-02,
-+-2.05168846475965727105e-02,
-+-2.11010519708690891250e-02,
-+-2.16728710018125117487e-02,
-+-2.22320835922093923420e-02,
-+-2.27784386920556920775e-02,
-+-2.33116924579366280312e-02,
-+-2.38316083574713066806e-02,
-+-2.43379572697852361585e-02,
-+-2.48305175819705514773e-02,
-+-2.53090752814938702020e-02,
-+-2.57734240445178890144e-02,
-+-2.62233653201022591517e-02,
-+-2.66587084102499136118e-02,
-+-2.70792705457725754736e-02,
-+-2.74848769579453880429e-02,
-+-2.78753609459266790682e-02,
-+-2.82505639399193153594e-02,
-+-2.86103355600531468472e-02,
-+-2.89545336709700236455e-02,
-+-2.92830244320940215330e-02,
-+-2.95956823435738237971e-02,
-+-2.98923902878850261677e-02,
-+-3.01730395670819218079e-02,
-+-3.04375299356923270655e-02,
-+-3.06857696292481205158e-02,
-+-3.09176753884519220361e-02,
-+-3.11331724789744579418e-02,
-+-3.13321947068878961518e-02,
-+-3.15146844297364905896e-02,
-+-3.16805925632501414468e-02,
-+-3.18298785837100445262e-02,
-+-3.19625105259753808373e-02,
-+-3.20784649771835711496e-02,
-+-3.21777270661380843109e-02,
-+-3.22602904484012090180e-02,
-+-3.23261572871092819903e-02,
-+-3.23753382295313973938e-02,
-+-3.24078523793953007792e-02,
-+-3.24237272650036850719e-02,
-+-3.24229988031694352224e-02,
-+-3.24057112589975146455e-02,
-+-3.23719172015455164404e-02,
-+-3.23216774553950619842e-02,
-+-3.22550610481695601561e-02,
-+-3.21721451540349229203e-02,
-+-3.20730150332222269105e-02,
-+-3.19577639676131355917e-02,
-+-3.18264931924307492572e-02,
-+-3.16793118240798893259e-02,
-+-3.15163367841841124406e-02,
-+-3.13376927198667984409e-02,
-+-3.11435119203261716325e-02,
-+-3.09339342297566856355e-02,
-+-3.07091069566692957682e-02,
-+-3.04691847796660503223e-02,
-+-3.02143296497258302680e-02,
-+-2.99447106890591077666e-02,
-+-2.96605040865920502324e-02,
-+-2.93618929901409558836e-02,
-+-2.90490673953408620744e-02,
-+-2.87222240313914564669e-02,
-+-2.83815662436870431995e-02,
-+-2.80273038733983362314e-02,
-+-2.76596531340728875314e-02,
-+-2.72788364853265505316e-02,
-+-2.68850825036951179836e-02,
-+-2.64786257507202589523e-02,
-+-2.60597066383420963853e-02,
-+-2.56285712916748155410e-02,
-+-2.51854714092403474124e-02,
-+-2.47306641207374125480e-02,
-+-2.42644118424243347698e-02,
-+-2.37869821301946587910e-02,
-+-2.32986475304263404573e-02,
-+-2.27996854286841091342e-02,
-+-2.22903778963591883699e-02,
-+-2.17710115353269804961e-02,
-+-2.12418773207074841614e-02,
-+-2.07032704418132450230e-02,
-+-2.01554901413684046940e-02,
-+-1.95988395530860316784e-02,
-+-1.90336255376889230961e-02,
-+-1.84601585174617617569e-02,
-+-1.78787523094215382302e-02,
-+-1.72897239571940322667e-02,
-+-1.66933935616846752803e-02,
-+-1.60900841106333160335e-02,
-+-1.54801213071404045879e-02,
-+-1.48638333972560768986e-02,
-+-1.42415509967192804169e-02,
-+-1.36136069169392123768e-02,
-+-1.29803359903072849241e-02,
-+-1.23420748949298001579e-02,
-+-1.16991619788734471652e-02,
-+-1.10519370840110493781e-02,
-+-1.04007413695592701441e-02,
-+-9.74591713539885336204e-03,
-+-9.08780764526554395155e-03,
-+-8.42675694990374125892e-03,
-+-7.76310971027038485004e-03,
-+-7.09721102088000169172e-03,
-+-6.42940623337920000302e-03,
-+-5.76004078043931225933e-03,
-+-5.08946000005612835676e-03,
-+-4.41800896034429992076e-03,
-+-3.74603228491338785533e-03,
-+-3.07387397891339432532e-03,
-+-2.40187725583507205585e-03,
-+-1.73038436515272897598e-03,
-+-1.05973642089167863906e-03,
-+-3.90273231208217510901e-04,
-+ 2.77666870936983212030e-04,
-+ 9.43747195927376416637e-04,
-+ 1.60763286437934816049e-03,
-+ 2.26899097268967123858e-03,
-+ 2.92749075716241266912e-03,
-+ 3.58280375663248612170e-03,
-+ 4.23460397351204959754e-03,
-+ 4.88256803317746110316e-03,
-+ 5.52637534162357668688e-03,
-+ 6.16570824130805751617e-03,
-+ 6.80025216511182754170e-03,
-+ 7.42969578834302112058e-03,
-+ 8.05373117871052007777e-03,
-+ 8.67205394419879975476e-03,
-+ 9.28436337877218062498e-03,
-+ 9.89036260584076794278e-03,
-+ 1.04897587194219873291e-02,
-+ 1.10822629229305347903e-02,
-+ 1.16675906655330941658e-02,
-+ 1.22454617760050857300e-02,
-+ 1.28156005940266576326e-02,
-+ 1.33777360988594062191e-02,
-+ 1.39316020353439252305e-02,
-+ 1.44769370371622355803e-02,
-+ 1.50134847473070466572e-02,
-+ 1.55409939357074259464e-02,
-+ 1.60592186139547725421e-02,
-+ 1.65679181470810912846e-02,
-+ 1.70668573623377166359e-02,
-+ 1.75558066549289203129e-02,
-+ 1.80345420906532633021e-02,
-+ 1.85028455054086320153e-02,
-+ 1.89605046015185567387e-02,
-+ 1.94073130408384669776e-02,
-+ 1.98430705346031681369e-02,
-+ 2.02675829299774241943e-02,
-+ 2.06806622932754168021e-02,
-+ 2.10821269898129222409e-02,
-+ 2.14718017603625459244e-02,
-+ 2.18495177941796202281e-02,
-+ 2.22151127985720682478e-02,
-+ 2.25684310649855168762e-02,
-+ 2.29093235315810418717e-02,
-+ 2.32376478422810298086e-02,
-+ 2.35532684022618996056e-02,
-+ 2.38560564298757396551e-02,
-+ 2.41458900049817716538e-02,
-+ 2.44226541136732810955e-02,
-+ 2.46862406893853837675e-02,
-+ 2.49365486503724774481e-02,
-+ 2.51734839335446165809e-02,
-+ 2.53969595246556420487e-02,
-+ 2.56068954848354853049e-02,
-+ 2.58032189734641453915e-02,
-+ 2.59858642673822630431e-02,
-+ 2.61547727764399259853e-02,
-+ 2.63098930553838268598e-02,
-+ 2.64511808120856638238e-02,
-+ 2.65785989121172516736e-02,
-+ 2.66921173796784670651e-02,
-+ 2.67917133948867500215e-02,
-+ 2.68773712874392570193e-02,
-+ 2.69490825266583827746e-02,
-+ 2.70068457079358954787e-02,
-+ 2.70506665355911626869e-02,
-+ 2.70805578021602322281e-02,
-+ 2.70965393641366091015e-02,
-+ 2.70986381141830531827e-02,
-+ 2.70868879498386908034e-02,
-+ 2.70613297387449595888e-02,
-+ 2.70220112804171637422e-02,
-+ 2.69689872645891524916e-02,
-+ 2.69023192261612989484e-02,
-+ 2.68220754967820745884e-02,
-+ 2.67283311530973760606e-02,
-+ 2.66211679617003732501e-02,
-+ 2.65006743208199592454e-02,
-+ 2.63669451987833119988e-02,
-+ 2.62200820692939373657e-02,
-+ 2.60601928435633990733e-02,
-+ 2.58873917993413214800e-02,
-+ 2.57017995068857182939e-02,
-+ 2.55035427519193710899e-02,
-+ 2.52927544556184984159e-02,
-+ 2.50695735916821975386e-02,
-+ 2.48341451005307974065e-02,
-+ 2.45866198006852616775e-02,
-+ 2.43271542973778100161e-02,
-+ 2.40559108884488212499e-02,
-+ 2.37730574675824729569e-02,
-+ 2.34787674249385819314e-02,
-+ 2.31732195452361150467e-02,
-+ 2.28565979033475072391e-02,
-+ 2.25290917574611608554e-02,
-+ 2.21908954398750551951e-02,
-+ 2.18422082454798119344e-02,
-+ 2.14832343179954671220e-02,
-+ 2.11141825340238932507e-02,
-+ 2.07352663849828984521e-02,
-+ 2.03467038569848726604e-02,
-+ 1.99487173087274823058e-02,
-+ 1.95415333474632871291e-02,
-+ 1.91253827031149341298e-02,
-+ 1.87005001006056471857e-02,
-+ 1.82671241304729649324e-02,
-+ 1.78254971178373536334e-02,
-+ 1.73758649897937239581e-02,
-+ 1.69184771412996537432e-02,
-+ 1.64535862996303787475e-02,
-+ 1.59814483874737844893e-02,
-+ 1.55023223847373312068e-02,
-+ 1.50164701891417791402e-02,
-+ 1.45241564756737676078e-02,
-+ 1.40256485549719173145e-02,
-+ 1.35212162307227472952e-02,
-+ 1.30111316561379447565e-02,
-+ 1.24956691895912394563e-02,
-+ 1.19751052494878589688e-02,
-+ 1.14497181684445926975e-02,
-+ 1.09197880468538122134e-02,
-+ 1.03855966059087159725e-02,
-+ 9.84742704016562143965e-03,
-+ 9.30556386971926295659e-03,
-+ 8.76029279206604755137e-03,
-+ 8.21190053373426452621e-03,
-+ 7.66067470175298657897e-03,
-+ 7.10690363503945106427e-03,
-+ 6.55087625577790554771e-03,
-+ 5.99288192086684483317e-03,
-+ 5.43321027350959859931e-03,
-+ 4.87215109502278989617e-03,
-+ 4.30999415693893248719e-03,
-+ 3.74702907347534584434e-03,
-+ 3.18354515444554302464e-03,
-+ 2.61983125868587608809e-03,
-+ 2.05617564807023672779e-03,
-+ 1.49286584218635853295e-03,
-+ 9.30188473745678081825e-04,
-+ 3.68429144797911432754e-04,
-+-1.92127716177123029819e-04,
-+-7.51198996231790326432e-04,
-+-1.30850303889562991251e-03,
-+-1.86375978403549190029e-03,
-+-2.41669090655965632108e-03,
-+-2.96701995390177180115e-03,
-+-3.51447248221491799144e-03,
-+-4.05877619121137057229e-03,
-+-4.59966105758124674252e-03,
-+-5.13685946692752325171e-03,
-+-5.67010634415242211620e-03,
-+-6.19913928223347811958e-03,
-+-6.72369866932763082107e-03,
-+-7.24352781414225668777e-03,
-+-7.75837306951438713393e-03,
-+-8.26798395413882135363e-03,
-+-8.77211327238880053669e-03,
-+-9.27051723217174085401e-03,
-+-9.76295556076584719607e-03,
-+-1.02491916185828580571e-02,
-+-1.07289925108050229752e-02,
-+-1.12021291968433227976e-02,
-+-1.16683765975679858140e-02,
-+-1.21275137002619763649e-02,
-+-1.25793236612475982372e-02,
-+-1.30235939061431136438e-02,
-+-1.34601162277011333901e-02,
-+-1.38886868811863382206e-02,
-+-1.43091066772499612286e-02,
-+-1.47211810722588463257e-02,
-+-1.51247202560407922184e-02,
-+-1.55195392370066180543e-02,
-+-1.59054579246123636849e-02,
-+-1.62823012091269786472e-02,
-+-1.66498990386690776111e-02,
-+-1.70080864934834194435e-02,
-+-1.73567038574233001302e-02,
-+-1.76955966866107171354e-02,
-+-1.80246158752456059338e-02,
-+-1.83436177185377254084e-02,
-+-1.86524639727363474029e-02,
-+-1.89510219122339153286e-02,
-+-1.92391643837212557300e-02,
-+-1.95167698573757708580e-02,
-+-1.97837224750605396306e-02,
-+-2.00399120955206018480e-02,
-+-2.02852343365580237156e-02,
-+-2.05195906141726648608e-02,
-+-2.07428881786561915279e-02,
-+-2.09550401476275363621e-02,
-+-2.11559655360012838221e-02,
-+-2.13455892828807378137e-02,
-+-2.15238422753686667321e-02,
-+-2.16906613692930197446e-02,
-+-2.18459894068418723767e-02,
-+-2.19897752311081634558e-02,
-+-2.21219736975437064608e-02,
-+-2.22425456823232385595e-02,
-+-2.23514580876230314899e-02,
-+-2.24486838438175441424e-02,
-+-2.25342019086016941143e-02,
-+-2.26079972630452222249e-02,
-+-2.26700609045897422122e-02,
-+-2.27203898369985682337e-02,
-+-2.27589870572722542674e-02,
-+-2.27858615395436989171e-02,
-+-2.28010282159679666947e-02,
-+-2.28045079546240481161e-02,
-+-2.27963275344472623973e-02,
-+-2.27765196172116414497e-02,
-+-2.27451227165837051303e-02,
-+-2.27021811642711575374e-02,
-+-2.26477450732895796426e-02,
-+-2.25818702983737081003e-02,
-+-2.25046183935598033410e-02,
-+-2.24160565669674592681e-02,
-+-2.23162576328110422164e-02,
-+-2.22052999606712764269e-02,
-+-2.20832674220598039472e-02,
-+-2.19502493343100429923e-02,
-+-2.18063404018299551723e-02,
-+-2.16516406547519850434e-02,
-+-2.14862553850184781479e-02,
-+-2.13102950799411924865e-02,
-+-2.11238753532740700103e-02,
-+-2.09271168738412970123e-02,
-+-2.07201452917621688210e-02,
-+-2.05030911623162483137e-02,
-+-2.02760898674933312535e-02,
-+-2.00392815352738624946e-02,
-+-1.97928109566855824075e-02,
-+-1.95368275006852568088e-02,
-+-1.92714850269127511984e-02,
-+-1.89969417963674683247e-02,
-+-1.87133603800582019872e-02,
-+-1.84209075656767175266e-02,
-+-1.81197542623479680712e-02,
-+-1.78100754035098000905e-02,
-+-1.74920498479764381650e-02,
-+-1.71658602792400527548e-02,
-+-1.68316931030659776292e-02,
-+-1.64897383434381879230e-02,
-+-1.61401895369109177336e-02,
-+-1.57832436254263346054e-02,
-+-1.54191008476533275573e-02,
-+-1.50479646289087866384e-02,
-+-1.46700414697199573583e-02,
-+-1.42855408330877838713e-02,
-+-1.38946750305117498053e-02,
-+-1.34976591068377456406e-02,
-+-1.30947107239892130554e-02,
-+-1.26860500436455827383e-02,
-+-1.22718996089274719891e-02,
-+-1.18524842251538416876e-02,
-+-1.14280308397327317466e-02,
-+-1.09987684212486756113e-02,
-+-1.05649278378112127658e-02,
-+-1.01267417347274506223e-02,
-+-9.68444441156269923698e-03,
-+-9.23827169865409740523e-03,
-+-8.78846083313997161746e-03,
-+-8.33525033457069991494e-03,
-+-7.87887988016375100109e-03,
-+-7.41959017977004194749e-03,
-+-6.95762285061261864794e-03,
-+-6.49322029186454475341e-03,
-+-6.02662555912889408988e-03,
-+-5.55808223888622741915e-03,
-+-5.08783432297227420499e-03,
-+-4.61612608315053844776e-03,
-+-4.14320194584339666216e-03,
-+-3.66930636708468534829e-03,
-+-3.19468370775774284862e-03,
-+-2.71957810918098006822e-03,
-+-2.24423336910424412252e-03,
-+-1.76889281817741881794e-03,
-+-1.29379919695378617014e-03,
-+-8.19194533489142270866e-04,
-+-3.45320021597831196877e-04,
-+ 1.27584100174339069422e-04,
-+ 5.99278668799195350127e-04,
-+ 1.06952571617924155171e-03,
-+ 1.53808858766556200148e-03,
-+ 2.00473205962055367468e-03,
-+ 2.46922245597071959855e-03,
-+ 2.93132776369034713654e-03,
-+ 3.39081774716058033034e-03,
-+ 3.84746406134854872921e-03,
-+ 4.30104036375060765768e-03,
-+ 4.75132242504706578390e-03,
-+ 5.19808823841395525878e-03,
-+ 5.64111812743960539668e-03,
-+ 6.08019485259521982184e-03,
-+ 6.51510371620631252576e-03,
-+ 6.94563266587837867261e-03,
-+ 7.37157239632470640683e-03,
-+ 7.79271644955021464130e-03,
-+ 8.20886131334327799614e-03,
-+ 8.61980651802961989061e-03,
-+ 9.02535473144288127867e-03,
-+ 9.42531185206835209200e-03,
-+ 9.81948710031542437715e-03,
-+ 1.02076931078787062901e-02,
-+ 1.05897460051441894696e-02,
-+ 1.09654655066032842570e-02,
-+ 1.13346749942337312461e-02,
-+ 1.16972015988115480428e-02,
-+ 1.20528762791150233225e-02,
-+ 1.24015338989890838706e-02,
-+ 1.27430133022312791491e-02,
-+ 1.30771573852710050467e-02,
-+ 1.34038131676064240644e-02,
-+ 1.37228318599705717551e-02,
-+ 1.40340689301969769737e-02,
-+ 1.43373841667557219703e-02,
-+ 1.46326417399349796578e-02,
-+ 1.49197102606399897157e-02,
-+ 1.51984628367875466287e-02,
-+ 1.54687771272712503573e-02,
-+ 1.57305353934761547874e-02,
-+ 1.59836245483238222065e-02,
-+ 1.62279362028255533246e-02,
-+ 1.64633667101300000535e-02,
-+ 1.66898172070444779369e-02,
-+ 1.69071936530182861946e-02,
-+ 1.71154068665722303155e-02,
-+ 1.73143725591620549487e-02,
-+ 1.75040113664655661019e-02,
-+ 1.76842488770822502120e-02,
-+ 1.78550156586383436397e-02,
-+ 1.80162472812886650941e-02,
-+ 1.81678843386109678537e-02,
-+ 1.83098724658869831117e-02,
-+ 1.84421623557678958372e-02,
-+ 1.85647097713225045501e-02,
-+ 1.86774755564665419227e-02,
-+ 1.87804256437758242126e-02,
-+ 1.88735310596836944330e-02,
-+ 1.89567679270675991388e-02,
-+ 1.90301174652290280842e-02,
-+ 1.90935659872729333875e-02,
-+ 1.91471048948949201796e-02,
-+ 1.91907306705839213190e-02,
-+ 1.92244448672513647269e-02,
-+ 1.92482540952976406701e-02,
-+ 1.92621700071291257483e-02,
-+ 1.92662092791390723856e-02,
-+ 1.92603935911679381709e-02,
-+ 1.92447496034597632930e-02,
-+ 1.92193089311317975854e-02,
-+ 1.91841081161766568997e-02,
-+ 1.91391885970173640519e-02,
-+ 1.90845966756356746896e-02,
-+ 1.90203834822977521646e-02,
-+ 1.89466049378990836205e-02,
-+ 1.88633217139549183572e-02,
-+ 1.87705991902617184974e-02,
-+ 1.86685074102564685372e-02,
-+ 1.85571210341025014112e-02,
-+ 1.84365192895308768750e-02,
-+ 1.83067859204682249763e-02,
-+ 1.81680091334814851345e-02,
-+ 1.80202815420731528306e-02,
-+ 1.78637001088602434540e-02,
-+ 1.76983660856705124487e-02,
-+ 1.75243849515933046435e-02,
-+ 1.73418663490196370280e-02,
-+ 1.71509240177099529789e-02,
-+ 1.69516757269280171627e-02,
-+ 1.67442432056789658468e-02,
-+ 1.65287520710933055756e-02,
-+ 1.63053317549959643495e-02,
-+ 1.60741154287042248283e-02,
-+ 1.58352399260948337179e-02,
-+ 1.55888456649855098451e-02,
-+ 1.53350765668743439091e-02,
-+ 1.50740799750810755553e-02,
-+ 1.48060065713376716456e-02,
-+ 1.45310102908721653497e-02,
-+ 1.42492482360351419013e-02,
-+ 1.39608805885138576031e-02,
-+ 1.36660705201842418155e-02,
-+ 1.33649841026482960049e-02,
-+ 1.30577902155067059053e-02,
-+ 1.27446604534163440703e-02,
-+ 1.24257690319823609071e-02,
-+ 1.21012926925372719250e-02,
-+ 1.17714106058561026463e-02,
-+ 1.14363042748611334204e-02,
-+ 1.10961574363676110377e-02,
-+ 1.07511559619219848605e-02,
-+ 1.04014877577871447251e-02,
-+ 1.00473426641261246589e-02,
-+ 9.68891235343915212253e-03,
-+ 9.32639022830554151322e-03,
-+ 8.95997131848667513476e-03,
-+ 8.58985217744295814768e-03,
-+ 8.21623077831776238433e-03,
-+ 7.83930640944576623275e-03,
-+ 7.45927956943647635368e-03,
-+ 7.07635186189118064320e-03,
-+ 6.69072588980388575225e-03,
-+ 6.30260514970595094736e-03,
-+ 5.91219392560345287368e-03,
-+ 5.51969718276637197341e-03,
-+ 5.12532046142244023662e-03,
-+ 4.72926977040892190796e-03,
-+ 4.33175148083997027526e-03,
-+ 3.93297221983980160170e-03,
-+ 3.53313876439927251547e-03,
-+ 3.13245793540825817960e-03,
-+ 2.73113649191582047102e-03,
-+ 2.32938102567640907548e-03,
-+ 1.92739785602901348045e-03,
-+ 1.52539292516795199454e-03,
-+ 1.12357169385324685146e-03,
-+ 7.22139037616026076630e-04,
-+ 3.21299143509566089132e-04,
-+-7.87445925439102364842e-05,
-+-4.77789667756481134173e-04,
-+-8.75634573781077039240e-04,
-+-1.27207889726797546831e-03,
-+-1.66692341962379432171e-03,
-+-2.05997021592245954311e-03,
-+-2.45102275292159678052e-03,
-+-2.83988598613405971924e-03,
-+-3.22636645590845556192e-03,
-+-3.61027238247302534671e-03,
-+-3.99141375989387706819e-03,
-+-4.36960244890573310667e-03,
-+-4.74465226856734742511e-03,
-+-5.11637908669945132983e-03,
-+-5.48460090906132020916e-03,
-+-5.84913796722293360258e-03,
-+-6.20981280509260748224e-03,
-+-6.56645036405622325310e-03,
-+-6.91887806669126605857e-03,
-+-7.26692589901343100750e-03,
-+-7.61042649121839841903e-03,
-+-7.94921519688219710420e-03,
-+-8.28313017058056322295e-03,
-+-8.61201244389523008771e-03,
-+-8.93570599976736823500e-03,
-+-9.25405784516927093497e-03,
-+-9.56691808205707705515e-03,
-+-9.87413997657404438058e-03,
-+-1.01755800264738422573e-02,
-+-1.04710980267316584175e-02,
-+-1.07605571333162300385e-02,
-+-1.10438239250919990192e-02,
-+-1.13207684638271209587e-02,
-+-1.15912643522783440769e-02,
-+-1.18551887903295075782e-02,
-+-1.21124226291589674048e-02,
-+-1.23628504234125462247e-02,
-+-1.26063604813613176076e-02,
-+-1.28428449130213884893e-02,
-+-1.30721996762182875867e-02,
-+-1.32943246205750771616e-02,
-+-1.35091235294078314266e-02,
-+-1.37165041595128135710e-02,
-+-1.39163782788270101731e-02,
-+-1.41086617019519286464e-02,
-+-1.42932743235239592683e-02,
-+-1.44701401494216879556e-02,
-+-1.46391873257979802936e-02,
-+-1.48003481659278162547e-02,
-+-1.49535591748633858722e-02,
-+-1.50987610718883325661e-02,
-+-1.52358988107658115813e-02,
-+-1.53649215977745036421e-02,
-+-1.54857829075290397841e-02,
-+-1.55984404965814546506e-02,
-+-1.57028564148030853886e-02,
-+-1.57989970145448431482e-02,
-+-1.58868329575775346640e-02,
-+-1.59663392198137396583e-02,
-+-1.60374950938135772682e-02,
-+-1.61002841890790400481e-02,
-+-1.61546944301414231726e-02,
-+-1.62007180524483263007e-02,
-+-1.62383515960572676062e-02,
-+-1.62675958971449409474e-02,
-+-1.62884560773407099932e-02,
-+-1.63009415308956705226e-02,
-+-1.63050659096987474173e-02,
-+-1.63008471061523926848e-02,
-+-1.62883072339218455682e-02,
-+-1.62674726065730329561e-02,
-+-1.62383737141145109706e-02,
-+-1.62010451974609233361e-02,
-+-1.61555258208356707084e-02,
-+-1.61018584421316855726e-02,
-+-1.60400899812505326469e-02,
-+-1.59702713864408145372e-02,
-+-1.58924575986573272945e-02,
-+-1.58067075139647107707e-02,
-+-1.57130839440085059988e-02,
-+-1.56116535745792449352e-02,
-+-1.55024869222944727820e-02,
-+-1.53856582894260490724e-02,
-+-1.52612457168996174667e-02,
-+-1.51293309354949591372e-02,
-+-1.49899993152762481957e-02,
-+-1.48433398132821487564e-02,
-+-1.46894449195070758013e-02,
-+-1.45284106012046419082e-02,
-+-1.43603362455460986657e-02,
-+-1.41853246006673119201e-02,
-+-1.40034817151370259009e-02,
-+-1.38149168758828280734e-02,
-+-1.36197425446084856987e-02,
-+-1.34180742927401692316e-02,
-+-1.32100307349369578552e-02,
-+-1.29957334612042334221e-02,
-+-1.27753069676474068084e-02,
-+-1.25488785859041301896e-02,
-+-1.23165784112953900081e-02,
-+-1.20785392297338319001e-02,
-+-1.18348964434312736022e-02,
-+-1.15857879954438421077e-02,
-+-1.13313542930994892027e-02,
-+-1.10717381303457890890e-02,
-+-1.08070846090634192782e-02,
-+-1.05375410593865573988e-02,
-+-1.02632569590727744380e-02,
-+-9.98438385196800254340e-03,
-+-9.70107526560752726763e-03,
-+-9.41348662799971515336e-03,
-+-9.12177518363594015682e-03,
-+-8.82609990877025046840e-03,
-+-8.52662142601712247370e-03,
-+-8.22350191830830204442e-03,
-+-7.91690504225831676033e-03,
-+-7.60699584098104789748e-03,
-+-7.29394065640553979080e-03,
-+-6.97790704113636535422e-03,
-+-6.65906366990342071799e-03,
-+-6.33758025065010895116e-03,
-+-6.01362743530314651508e-03,
-+-5.68737673027295675271e-03,
-+-5.35900040672940281006e-03,
-+-5.02867141070039921913e-03,
-+-4.69656327303835750137e-03,
-+-4.36285001930248206997e-03,
-+-4.02770607960259777180e-03,
-+-3.69130619844926536818e-03,
-+-3.35382534465939949331e-03,
-+-3.01543862135967731183e-03,
-+-2.67632117613655082580e-03,
-+-2.33664811137678819775e-03,
-+-1.99659439484433081508e-03,
-+-1.65633477053923894307e-03,
-+-1.31604366988200688349e-03,
-+-9.75895123270567642695e-04,
-+-6.36062672051197525343e-04,
-+-2.96719280950014205507e-04,
-+ 4.19627489923029214371e-05,
-+ 3.79811866940293777015e-04,
-+ 7.16657358192283769176e-04,
-+ 1.05232942947910620979e-03,
-+ 1.38665929358586822832e-03,
-+ 1.71947925326047606175e-03,
-+ 2.05062278436349190031e-03,
-+ 2.37992461822022008389e-03,
-+ 2.70722082313579063065e-03,
-+ 3.03234888503091078518e-03,
-+ 3.35514778716229861502e-03,
-+ 3.67545808888595972735e-03,
-+ 3.99312200342836869094e-03,
-+ 4.30798347462560838467e-03,
-+ 4.61988825259515914490e-03,
-+ 4.92868396830371639783e-03,
-+ 5.23422020699498662111e-03,
-+ 5.53634858044424124635e-03,
-+ 5.83492279800282634405e-03,
-+ 6.12979873640210736613e-03,
-+ 6.42083450828168002950e-03,
-+ 6.70789052941064140034e-03,
-+ 6.99082958457222531506e-03,
-+ 7.26951689207744420479e-03,
-+ 7.54382016688265842619e-03,
-+ 7.81360968227803008579e-03,
-+ 8.07875833012169572434e-03,
-+ 8.33914167959036965738e-03,
-+ 8.59463803442023742407e-03,
-+ 8.84512848861381158205e-03,
-+ 9.09049698058539933088e-03,
-+ 9.33063034572383098730e-03,
-+ 9.56541836734724204572e-03,
-+ 9.79475382602876601390e-03,
-+ 1.00185325472712388750e-02,
-+ 1.02366534475112885144e-02,
-+ 1.04490185784319629392e-02,
-+ 1.06555331695659429025e-02,
-+ 1.08561056691723126222e-02,
-+ 1.10506477833681605177e-02,
-+ 1.12390745135014444300e-02,
-+ 1.14213041917481192972e-02,
-+ 1.15972585149209383992e-02,
-+ 1.17668625764762845715e-02,
-+ 1.19300448967066957673e-02,
-+ 1.20867374511089888806e-02,
-+ 1.22368756969161197878e-02,
-+ 1.23803985977854972417e-02,
-+ 1.25172486466337395256e-02,
-+ 1.26473718866117884607e-02,
-+ 1.27707179302137523863e-02,
-+ 1.28872399765134221933e-02,
-+ 1.29968948265256969976e-02,
-+ 1.30996428966874464001e-02,
-+ 1.31954482304573617740e-02,
-+ 1.32842785080317399987e-02,
-+ 1.33661050541768675060e-02,
-+ 1.34409028441777739227e-02,
-+ 1.35086505079049911532e-02,
-+ 1.35693303320018558017e-02,
-+ 1.36229282601955156012e-02,
-+ 1.36694338917359037994e-02,
-+ 1.37088404779683696588e-02,
-+ 1.37411449170452750618e-02,
-+ 1.37663477467847624597e-02,
-+ 1.37844531356839973546e-02,
-+ 1.37954688720959822018e-02,
-+ 1.37994063515802581343e-02,
-+ 1.37962805624378334612e-02,
-+ 1.37861100694423310831e-02,
-+ 1.37689169957797372806e-02,
-+ 1.37447270032107649734e-02,
-+ 1.37135692704694871907e-02,
-+ 1.36754764699141325573e-02,
-+ 1.36304847424457160204e-02,
-+ 1.35786336707117930717e-02,
-+ 1.35199662506130090928e-02,
-+ 1.34545288611307815863e-02,
-+ 1.33823712324960784892e-02,
-+ 1.33035464127193650552e-02,
-+ 1.32181107325021699600e-02,
-+ 1.31261237685532539815e-02,
-+ 1.30276483053305639631e-02,
-+ 1.29227502952338896280e-02,
-+ 1.28114988172704970942e-02,
-+ 1.26939660342200184157e-02,
-+ 1.25702271483237072724e-02,
-+ 1.24403603555233947114e-02,
-+ 1.23044467982784695020e-02,
-+ 1.21625705169872422307e-02,
-+ 1.20148184000413785211e-02,
-+ 1.18612801325425308574e-02,
-+ 1.17020481437095178606e-02,
-+ 1.15372175530077808459e-02,
-+ 1.13668861150298707019e-02,
-+ 1.11911541631600167795e-02,
-+ 1.10101245520525005406e-02,
-+ 1.08239025989581676146e-02,
-+ 1.06325960239305756377e-02,
-+ 1.04363148889449076223e-02,
-+ 1.02351715359647547215e-02,
-+ 1.00292805239893083324e-02,
-+ 9.81875856511689806827e-03,
-+ 9.60372445965929077971e-03,
-+ 9.38429903034274093265e-03,
-+ 9.16060505563077998037e-03,
-+ 8.93276720220602567235e-03,
-+ 8.70091195664717161062e-03,
-+ 8.46516755633743532561e-03,
-+ 8.22566391964303297857e-03,
-+ 7.98253257539762242634e-03,
-+ 7.73590659173173638558e-03,
-+ 7.48592050428459592631e-03,
-+ 7.23271024383650030370e-03,
-+ 6.97641306340083741655e-03,
-+ 6.71716746481300884530e-03,
-+ 6.45511312485713174836e-03,
-+ 6.19039082096706390346e-03,
-+ 5.92314235654277116555e-03,
-+ 5.65351048592053172237e-03,
-+ 5.38163883903518876911e-03,
-+ 5.10767184581618297751e-03,
-+ 4.83175466035329001513e-03,
-+ 4.55403308487579983055e-03,
-+ 4.27465349357983477596e-03,
-+ 3.99376275634679561710e-03,
-+ 3.71150816239089074641e-03,
-+ 3.42803734387406560530e-03,
-+ 3.14349819952992014238e-03,
-+ 2.85803881833283880340e-03,
-+ 2.57180740325433027441e-03,
-+ 2.28495219514192630592e-03,
-+ 1.99762139676367333693e-03,
-+ 1.70996309705198873234e-03,
-+ 1.42212519558894585903e-03,
-+ 1.13425532736955879051e-03,
-+ 8.46500787880119249379e-04,
-+ 5.59008458531536360676e-04,
-+ 2.71924732482213711831e-04,
-+-1.46045591101362367902e-05,
-+-3.00434220371862336588e-04,
-+-5.85419763496916080447e-04,
-+-8.69417480990889736912e-04,
-+-1.15228451734444565895e-03,
-+-1.43387894009652252202e-03,
-+-1.71405981025574941264e-03,
-+-1.99268725204318009406e-03,
-+-2.26962252192313383714e-03,
-+-2.54472807688939806764e-03,
-+-2.81786764197139655633e-03,
-+-3.08890627693018818625e-03,
-+-3.35771044210986593925e-03,
-+-3.62414806341412312415e-03,
-+-3.88808859637569193338e-03,
-+-4.14940308928948755479e-03,
-+-4.40796424537761438733e-03,
-+-4.66364648395760274940e-03,
-+-4.91632600058568031837e-03,
-+-5.16588082614466512915e-03,
-+-5.41219088485122776233e-03,
-+-5.65513805115323408418e-03,
-+-5.89460620549208617197e-03,
-+-6.13048128890366673949e-03,
-+-6.36265135643233371854e-03,
-+-6.59100662933489230694e-03,
-+-6.81543954604840913902e-03,
-+-7.03584481190112302068e-03,
-+-7.25211944754226237736e-03,
-+-7.46416283606952078722e-03,
-+-7.67187676883409296058e-03,
-+-7.87516548990104849060e-03,
-+-8.07393573914804915659e-03,
-+-8.26809679398036317943e-03,
-+-8.45756050964779383661e-03,
-+-8.64224135814309693537e-03,
-+-8.82205646566693382771e-03,
-+-8.99692564864382551826e-03,
-+-9.16677144827266789096e-03,
-+-9.33151916359954529401e-03,
-+-9.49109688309758385560e-03,
-+-9.64543551474287760850e-03,
-+-9.79446881457346311961e-03,
-+-9.93813341372091867132e-03,
-+-1.00763688439045248635e-02,
-+-1.02091175613780275888e-02,
-+-1.03363249693213758024e-02,
-+-1.04579394386685748525e-02,
-+-1.05739123273658041507e-02,
-+-1.06841979980529435540e-02,
-+-1.07887538341634794947e-02,
-+-1.08875402544387003823e-02,
-+-1.09805207258518982422e-02,
-+-1.10676617749403266577e-02,
-+-1.11489329975425002783e-02,
-+-1.12243070669403085388e-02,
-+-1.12937597404047310179e-02,
-+-1.13572698641464103764e-02,
-+-1.14148193766721185033e-02,
-+-1.14663933105489043718e-02,
-+-1.15119797925795526450e-02,
-+-1.15515700423923072665e-02,
-+-1.15851583694501700239e-02,
-+-1.16127421684842080385e-02,
-+-1.16343219133579756086e-02,
-+-1.16499011493693144931e-02,
-+-1.16594864839973874626e-02,
-+-1.16630875761035632254e-02,
-+-1.16607171235953484961e-02,
-+-1.16523908495632707444e-02,
-+-1.16381274869015692575e-02,
-+-1.16179487614245235960e-02,
-+-1.15918793734899987224e-02,
-+-1.15599469781440481603e-02,
-+-1.15221821637996792859e-02,
-+-1.14786184294645918214e-02,
-+-1.14292921605328150897e-02,
-+-1.13742426031563578781e-02,
-+-1.13135118372134652748e-02,
-+-1.12471447478901080685e-02,
-+-1.11751889958936409530e-02,
-+-1.10976949863161849369e-02,
-+-1.10147158361676694022e-02,
-+-1.09263073405979870001e-02,
-+-1.08325279378290572491e-02,
-+-1.07334386728172945930e-02,
-+-1.06291031596689976302e-02,
-+-1.05195875428303799864e-02,
-+-1.04049604570749746474e-02,
-+-1.02852929863124966520e-02,
-+-1.01606586212423712773e-02,
-+-1.00311332158768314049e-02,
-+-9.89679494295862653697e-03,
-+-9.75772424829860450524e-03,
-+-9.61400380405963254915e-03,
-+-9.46571846101251432315e-03,
-+-9.31295519979207127303e-03,
-+-9.15580308117954107250e-03,
-+-8.99435319544003054892e-03,
-+-8.82869861074311521043e-03,
-+-8.65893432069447625821e-03,
-+-8.48515719100898131722e-03,
-+-8.30746590535331487504e-03,
-+-8.12596091038898099557e-03,
-+-7.94074436004471931327e-03,
-+-7.75192005904976402797e-03,
-+-7.55959340575841978738e-03,
-+-7.36387133429604930773e-03,
-+-7.16486225605968488073e-03,
-+-6.96267600060247564275e-03,
-+-6.75742375593618195551e-03,
-+-6.54921800828115602267e-03,
-+-6.33817248129906873205e-03,
-+-6.12440207483747056649e-03,
-+-5.90802280322155672770e-03,
-+-5.68915173312445864029e-03,
-+-5.46790692104878739421e-03,
-+-5.24440735045367430189e-03,
-+-5.01877286855873742250e-03,
-+-4.79112412285956183744e-03,
-+-4.56158249738753112518e-03,
-+-4.33027004874617267582e-03,
-+-4.09730944195998200014e-03,
-+-3.86282388616571940171e-03,
-+-3.62693707018273397286e-03,
-+-3.38977309799298612628e-03,
-+-3.15145642416600349836e-03,
-+-2.91211178926129628936e-03,
-+-2.67186415524058896998e-03,
-+-2.43083864092491410552e-03,
-+-2.18916045752724818321e-03,
-+-1.94695484429555434880e-03,
-+-1.70434700429766003774e-03,
-+-1.46146204038146722802e-03,
-+-1.21842489134170429109e-03,
-+-9.75360268326885652967e-04,
-+-7.32392591517812274748e-04,
-+-4.89645927108687487733e-04,
-+-2.47243924624317883750e-04,
-+-5.30975460243512911756e-06,
-+ 2.36033953325794955153e-04,
-+ 4.76665171927515821017e-04,
-+ 7.16462537401301477295e-04,
-+ 9.55305409921098193718e-04,
-+ 1.19307393366231218393e-03,
-+ 1.42964909627860559810e-03,
-+ 1.66491278780242935725e-03,
-+ 1.89874785893865663695e-03,
-+ 2.13103817872366176761e-03,
-+ 2.36166869152246855501e-03,
-+ 2.59052547333455795292e-03,
-+ 2.81749578738373649203e-03,
-+ 3.04246813896196085722e-03,
-+ 3.26533232950441303435e-03,
-+ 3.48597950986718595895e-03,
-+ 3.70430223278326144556e-03,
-+ 3.92019450447253243325e-03,
-+ 4.13355183537975935659e-03,
-+ 4.34427129001856843216e-03,
-+ 4.55225153589615232075e-03,
-+ 4.75739289149763357190e-03,
-+ 4.95959737330627960239e-03,
-+ 5.15876874183868530666e-03,
-+ 5.35481254667346043274e-03,
-+ 5.54763617045254779636e-03,
-+ 5.73714887183583450297e-03,
-+ 5.92326182738835572278e-03,
-+ 6.10588817238264490450e-03,
-+ 6.28494304049680499458e-03,
-+ 6.46034360239086408867e-03,
-+ 6.63200910314530080181e-03,
-+ 6.79986089854376415248e-03,
-+ 6.96382249018552904052e-03,
-+ 7.12381955941148153205e-03,
-+ 7.27978000003043010380e-03,
-+ 7.43163394983032809388e-03,
-+ 7.57931382086227036637e-03,
-+ 7.72275432848473775138e-03,
-+ 7.86189251915526618464e-03,
-+ 7.99666779695973849174e-03,
-+ 8.12702194886731447976e-03,
-+ 8.25289916870263103033e-03,
-+ 8.37424607982448221399e-03,
-+ 8.49101175650416456486e-03,
-+ 8.60314774399449817832e-03,
-+ 8.71060807728277902706e-03,
-+ 8.81334929852170718967e-03,
-+ 8.91133047313173894122e-03,
-+ 9.00451320457064906255e-03,
-+ 9.09286164776551726618e-03,
-+ 9.17634252120343510417e-03,
-+ 9.25492511767886209817e-03,
-+ 9.32858131369380602638e-03,
-+ 9.39728557751129400799e-03,
-+ 9.46101497585938137902e-03,
-+ 9.51974917928707746462e-03,
-+ 9.57347046617182048656e-03,
-+ 9.62216372537993622216e-03,
-+ 9.66581645758253331369e-03,
-+ 9.70441877522852311411e-03,
-+ 9.73796340117899505984e-03,
-+ 9.76644566600631813813e-03,
-+ 9.78986350396279965402e-03,
-+ 9.80821744762437608411e-03,
-+ 9.82151062121512652414e-03,
-+ 9.82974873261935853941e-03,
-+ 9.83294006408857654278e-03,
-+ 9.83109546165142171581e-03,
-+ 9.82422832323481126648e-03,
-+ 9.81235458550605912920e-03,
-+ 9.79549270944552429030e-03,
-+ 9.77366366466025406068e-03,
-+ 9.74689091245018769671e-03,
-+ 9.71520038763806249860e-03,
-+ 9.67862047917591658552e-03,
-+ 9.63718200954081366527e-03,
-+ 9.59091821293355135947e-03,
-+ 9.53986471229417709594e-03,
-+ 9.48405949514947999024e-03,
-+ 9.42354288830722815196e-03,
-+ 9.35835753141333638594e-03,
-+ 9.28854834938808680833e-03,
-+ 9.21416252375845123979e-03,
-+ 9.13524946290390424397e-03,
-+ 9.05186077123359793262e-03,
-+ 8.96405021731353467140e-03,
-+ 8.87187370096227494176e-03,
-+ 8.77538921933519559804e-03,
-+ 8.67465683201655221590e-03,
-+ 8.56973862514041548333e-03,
-+ 8.46069867456020023588e-03,
-+ 8.34760300808964732233e-03,
-+ 8.23051956683512782320e-03,
-+ 8.10951816564266063370e-03,
-+ 7.98467045268167613381e-03,
-+ 7.85604986818807735083e-03,
-+ 7.72373160239066269828e-03,
-+ 7.58779255264339144021e-03,
-+ 7.44831127978854735938e-03,
-+ 7.30536796377457674917e-03,
-+ 7.15904435855267175237e-03,
-+ 7.00942374627864812214e-03,
-+ 6.85659089084312764473e-03,
-+ 6.70063199075772355368e-03,
-+ 6.54163463142106230142e-03,
-+ 6.37968773679228450674e-03,
-+ 6.21488152049734249999e-03,
-+ 6.04730743639451170240e-03,
-+ 5.87705812862679335268e-03,
-+ 5.70422738118673677138e-03,
-+ 5.52891006702203955531e-03,
-+ 5.35120209670836722432e-03,
-+ 5.17120036671731789918e-03,
-+ 4.98900270730638639716e-03,
-+ 4.80470783005945180355e-03,
-+ 4.61841527510534633622e-03,
-+ 4.43022535804147177957e-03,
-+ 4.24023911659228945614e-03,
-+ 4.04855825702851463560e-03,
-+ 3.85528510037712974709e-03,
-+ 3.66052252844891639130e-03,
-+ 3.46437392971235937414e-03,
-+ 3.26694314504209770700e-03,
-+ 3.06833441336932816884e-03,
-+ 2.86865231726372458751e-03,
-+ 2.66800172847322068781e-03,
-+ 2.46648775345124351629e-03,
-+ 2.26421567889880867575e-03,
-+ 2.06129091734864790947e-03,
-+ 1.85781895282100093132e-03,
-+ 1.65390528657631021014e-03,
-+ 1.44965538299551312262e-03,
-+ 1.24517461561208316219e-03,
-+ 1.04056821332572727035e-03,
-+ 8.35941206823879187984e-04,
-+ 6.31398375237409098873e-04,
-+ 4.27044193058938911355e-04,
-+ 2.22982777348387794809e-04,
-+ 1.93178352541883997372e-05,
-+-1.83847388125652280721e-04,
-+-3.86410161515063485180e-04,
-+-5.88268318839344113436e-04,
-+-7.89320310186791547317e-04,
-+-9.89465252327087745748e-04,
-+-1.18860297876262669368e-03,
-+-1.38663408928657127910e-03,
-+-1.58345999902536368857e-03,
-+-1.77898298694016492559e-03,
-+-1.97310624376432260790e-03,
-+-2.16573391935423681734e-03,
-+-2.35677116942951958567e-03,
-+-2.54612420168103805937e-03,
-+-2.73370032122395708804e-03,
-+-2.91940797537506343401e-03,
-+-3.10315679773186291548e-03,
-+-3.28485765153320842871e-03,
-+-3.46442267228143797181e-03,
-+-3.64176530960461748362e-03,
-+-3.81680036834099439130e-03,
-+-3.98944404882473329516e-03,
-+-4.15961398635617159159e-03,
-+-4.32722928983605027026e-03,
-+-4.49221057954843436960e-03,
-+-4.65448002407309498196e-03,
-+-4.81396137631140419444e-03,
-+-4.97058000860978871360e-03,
-+-5.12426294696375662918e-03,
-+-5.27493890428890055411e-03,
-+-5.42253831274242328875e-03,
-+-5.56699335508204027484e-03,
-+-5.70823799504863171883e-03,
-+-5.84620800675817245406e-03,
-+-5.98084100309233864662e-03,
-+-6.11207646307366722627e-03,
-+-6.23985575821544256880e-03,
-+-6.36412217783412659938e-03,
-+-6.48482095331432296242e-03,
-+-6.60189928131710984660e-03,
-+-6.71530634592089337165e-03,
-+-6.82499333968801785016e-03,
-+-6.93091348364723199016e-03,
-+-7.03302204618568189975e-03,
-+-7.13127636084264718980e-03,
-+-7.22563584299942916062e-03,
-+-7.31606200545875488828e-03,
-+-7.40251847290886687281e-03,
-+-7.48497099526800394043e-03,
-+-7.56338745990427392674e-03,
-+-7.63773790272863697948e-03,
-+-7.70799451815705905650e-03,
-+-7.77413166794023880596e-03,
-+-7.83612588885893024404e-03,
-+-7.89395589928373019040e-03,
-+-7.94760260459900953756e-03,
-+-7.99704910149071600267e-03,
-+-8.04228068109907878735e-03,
-+-8.08328483103710852820e-03,
-+-8.12005123627678772336e-03,
-+-8.15257177890556759825e-03,
-+-8.18084053675576655662e-03,
-+-8.20485378091061375028e-03,
-+-8.22460997209095365235e-03,
-+-8.24010975592739773610e-03,
-+-8.25135595712299906024e-03,
-+-8.25835357251225588016e-03,
-+-8.26110976302289051754e-03,
-+-8.25963384454711686822e-03,
-+-8.25393727773001892323e-03,
-+-8.24403365668276502665e-03,
-+-8.22993869662941301968e-03,
-+-8.21167022049609611478e-03,
-+-8.18924814445231435966e-03,
-+-8.16269446241428900390e-03,
-+-8.13203322952094770359e-03,
-+-8.09729054459370524433e-03,
-+-8.05849453159142650738e-03,
-+-8.01567532007289515472e-03,
-+-7.96886502467894497492e-03,
-+-7.91809772364769626218e-03,
-+-7.86340943637591806292e-03,
-+-7.80483810004095092394e-03,
-+-7.74242354529683460967e-03,
-+-7.67620747106049876318e-03,
-+-7.60623341840202440295e-03,
-+-7.53254674355573021483e-03,
-+-7.45519459006761028158e-03,
-+-7.37422586009548602926e-03,
-+-7.28969118487934625988e-03,
-+-7.20164289439836468459e-03,
-+-7.11013498623295006618e-03,
-+-7.01522309364934187198e-03,
-+-6.91696445292533119292e-03,
-+-6.81541786993564071423e-03,
-+-6.71064368601629723105e-03,
-+-6.60270374312706912617e-03,
-+-6.49166134833155817480e-03,
-+-6.37758123761547179170e-03,
-+-6.26052953906250375660e-03,
-+-6.14057373540916311833e-03,
-+-6.01778262599883193018e-03,
-+-5.89222628815630304622e-03,
-+-5.76397603800424263021e-03,
-+-5.63310439074257793962e-03,
-+-5.49968502041355174204e-03,
-+-5.36379271917321667762e-03,
-+-5.22550335609255588165e-03,
-+-5.08489383551021401769e-03,
-+-4.94204205495888618943e-03,
-+-4.79702686268924927138e-03,
-+-4.64992801481256979451e-03,
-+-4.50082613208717050024e-03,
-+-4.34980265636943953800e-03,
-+-4.19693980675457916502e-03,
-+-4.04232053542952999431e-03,
-+-3.88602848326117904232e-03,
-+-3.72814793514442046479e-03,
-+-3.56876377513224178270e-03,
-+-3.40796144137293617951e-03,
-+-3.24582688087653560907e-03,
-+-3.08244650413554361137e-03,
-+-2.91790713962266495818e-03,
-+-2.75229598818970896956e-03,
-+-2.58570057739144132034e-03,
-+-2.41820871575722370558e-03,
-+-2.24990844703554021197e-03,
-+-2.08088800443330694187e-03,
-+-1.91123576487488202463e-03,
-+-1.74104020330362123901e-03,
-+-1.57038984704899425675e-03,
-+-1.39937323028345179249e-03,
-+-1.22807884859140337835e-03,
-+-1.05659511367403743075e-03,
-+-8.85010308212021861753e-04,
-+-7.13412540909905373669e-04,
-+-5.41889701744388552207e-04,
-+-3.70529417438410636591e-04,
-+-1.99419007184688332895e-04,
-+-2.86454386391723757354e-05,
-+ 1.41704715791932274720e-04,
-+ 3.11545322351527997646e-04,
-+ 4.80790728994517078173e-04,
-+ 6.49355808093498481151e-04,
-+ 8.17155998766742235409e-04,
-+ 9.84107348806230984584e-04,
-+ 1.15012655618750773805e-03,
-+ 1.31513101013778751017e-03,
-+ 1.47903883174614527579e-03,
-+ 1.64176891409281364154e-03,
-+ 1.80324096188044400921e-03,
-+ 1.96337553054683720821e-03,
-+ 2.12209406484084378217e-03,
-+ 2.27931893684354004020e-03,
-+ 2.43497348341521844400e-03,
-+ 2.58898204305202080458e-03,
-+ 2.74126999213337996242e-03,
-+ 2.89176378054382390501e-03,
-+ 3.04039096665289229962e-03,
-+ 3.18708025163550725742e-03,
-+ 3.33176151311842744587e-03,
-+ 3.47436583813595005824e-03,
-+ 3.61482555538014498075e-03,
-+ 3.75307426673132269943e-03,
-+ 3.88904687805323055413e-03,
-+ 4.02267962924054024026e-03,
-+ 4.15391012350339004777e-03,
-+ 4.28267735587738347658e-03,
-+ 4.40892174094537157153e-03,
-+ 4.53258513975950821928e-03,
-+ 4.65361088595093140563e-03,
-+ 4.77194381101678308937e-03,
-+ 4.88753026877269871470e-03,
-+ 5.00031815896078389583e-03,
-+ 5.11025695000340892532e-03,
-+ 5.21729770089245179637e-03,
-+ 5.32139308220599526605e-03,
-+ 5.42249739624305147206e-03,
-+ 5.52056659626851391892e-03,
-+ 5.61555830486112211863e-03,
-+ 5.70743183135652247528e-03,
-+ 5.79614818837954730302e-03,
-+ 5.88167010745905063929e-03,
-+ 5.96396205371965346109e-03,
-+ 6.04299023964566684591e-03,
-+ 6.11872263791200451943e-03,
-+ 6.19112899327779828834e-03,
-+ 6.26018083353982283945e-03,
-+ 6.32585147954144774024e-03,
-+ 6.38811605423505318724e-03,
-+ 6.44695149079576538403e-03,
-+ 6.50233653978409681384e-03,
-+ 6.55425177535713839039e-03,
-+ 6.60267960052677606309e-03,
-+ 6.64760425146517907463e-03,
-+ 6.68901180085764834188e-03,
-+ 6.72689016030344512365e-03,
-+ 6.76122908176596693758e-03,
-+ 6.79202015807388054941e-03,
-+ 6.81925682247539518416e-03,
-+ 6.84293434724847406819e-03,
-+ 6.86304984136987261678e-03,
-+ 6.87960224724697578386e-03,
-+ 6.89259233651607575860e-03,
-+ 6.90202270491214152359e-03,
-+ 6.90789776621477530361e-03,
-+ 6.91022374527592089799e-03,
-+ 6.90900867013538935724e-03,
-+ 6.90426236323048170274e-03,
-+ 6.89599643170657299052e-03,
-+ 6.88422425683606498820e-03,
-+ 6.86896098255334458527e-03,
-+ 6.85022350311395231137e-03,
-+ 6.82803044988653656810e-03,
-+ 6.80240217728674077119e-03,
-+ 6.77336074786231978617e-03,
-+ 6.74092991653942995994e-03,
-+ 6.70513511404041261804e-03,
-+ 6.66600342948348283806e-03,
-+ 6.62356359217582818522e-03,
-+ 6.57784595261113724102e-03,
-+ 6.52888246268356915031e-03,
-+ 6.47670665513047465189e-03,
-+ 6.42135362221612788353e-03,
-+ 6.36285999366974046321e-03,
-+ 6.30126391389077868121e-03,
-+ 6.23660501843537051769e-03,
-+ 6.16892440979760654785e-03,
-+ 6.09826463250009130623e-03,
-+ 6.02466964750847117777e-03,
-+ 5.94818480598439686818e-03,
-+ 5.86885682239295450313e-03,
-+ 5.78673374697901473501e-03,
-+ 5.70186493762921998985e-03,
-+ 5.61430103113523277375e-03,
-+ 5.52409391387439444726e-03,
-+ 5.43129669192503241465e-03,
-+ 5.33596366063239947036e-03,
-+ 5.23815027364322050724e-03,
-+ 5.13791311142524926431e-03,
-+ 5.03530984929013124274e-03,
-+ 4.93039922493699201561e-03,
-+ 4.82324100553432541516e-03,
-+ 4.71389595435920891187e-03,
-+ 4.60242579701116046043e-03,
-+ 4.48889318721965805553e-03,
-+ 4.37336167226419578885e-03,
-+ 4.25589565802507278913e-03,
-+ 4.13656037368400047310e-03,
-+ 4.01542183609403160321e-03,
-+ 3.89254681383765111652e-03,
-+ 3.76800279099204432978e-03,
-+ 3.64185793062176202395e-03,
-+ 3.51418103801726458557e-03,
-+ 3.38504152369975422690e-03,
-+ 3.25450936621163181353e-03,
-+ 3.12265507471182202082e-03,
-+ 2.98954965139678783756e-03,
-+ 2.85526455376563029209e-03,
-+ 2.71987165675057146821e-03,
-+ 2.58344321473122102290e-03,
-+ 2.44605182345362590079e-03,
-+ 2.30777038187338556438e-03,
-+ 2.16867205394239955310e-03,
-+ 2.02883023036007446166e-03,
-+ 1.88831849030696359050e-03,
-+ 1.74721056318321156346e-03,
-+ 1.60558029036844077814e-03,
-+ 1.46350158702526116430e-03,
-+ 1.32104840396417614300e-03,
-+ 1.17829468959044993299e-03,
-+ 1.03531435195189738287e-03,
-+ 8.92181220906407453086e-04,
-+ 7.48969010429437957559e-04,
-+ 6.05751281079198837520e-04,
-+ 4.62601402639519420582e-04,
-+ 3.19592516958703328628e-04,
-+ 1.76797501002548605557e-04,
-+ 3.42889301410700559898e-05,
-+-1.07860958314116714895e-04,
-+-2.49580301302545907224e-04,
-+-3.90797645920318444633e-04,
-+-5.31441985020897648614e-04,
-+-6.71442792492634734323e-04,
-+-8.10730058197295030964e-04,
-+-9.49234322550691531593e-04,
-+-1.08688671073021991820e-03,
-+-1.22361896649146595362e-03,
-+-1.35936348557852870918e-03,
-+-1.49405334871076226656e-03,
-+-1.62762235413136985458e-03,
-+-1.76000504970118200505e-03,
-+-1.89113676452272319942e-03,
-+-2.02095364007995759864e-03,
-+-2.14939266087792180127e-03,
-+-2.27639168456901649570e-03,
-+-2.40188947155079574047e-03,
-+-2.52582571402181800535e-03,
-+-2.64814106448245725756e-03,
-+-2.76877716366639818613e-03,
-+-2.88767666789123715262e-03,
-+-3.00478327581455654377e-03,
-+-3.12004175458374362687e-03,
-+-3.23339796536792432186e-03,
-+-3.34479888826014811615e-03,
-+-3.45419264653828387429e-03,
-+-3.56152853027508903283e-03,
-+-3.66675701928568381627e-03,
-+-3.76982980540296712391e-03,
-+-3.87069981407154629915e-03,
-+-3.96932122525004045521e-03,
-+-4.06564949361390860078e-03,
-+-4.15964136804923296370e-03,
-+-4.25125491042980478001e-03,
-+-4.34044951367000032827e-03,
-+-4.42718591904522635466e-03,
-+-4.51142623277396223602e-03,
-+-4.59313394185401763226e-03,
-+-4.67227392914710930316e-03,
-+-4.74881248770633347667e-03,
-+-4.82271733434034600985e-03,
-+-4.89395762241020149813e-03,
-+-4.96250395385362200878e-03,
-+-5.02832839043272725871e-03,
-+-5.09140446420189209803e-03,
-+-5.15170718719160612709e-03,
-+-5.20921306030622689037e-03,
-+-5.26390008143260215712e-03,
-+-5.31574775275780748302e-03,
-+-5.36473708729396422251e-03,
-+-5.41085061460937211120e-03,
-+-5.45407238576448103601e-03,
-+-5.49438797745297521219e-03,
-+-5.53178449534730623527e-03,
-+-5.56625057664943048014e-03,
-+-5.59777639184752800333e-03,
-+-5.62635364567968653676e-03,
-+-5.65197557730641106377e-03,
-+-5.67463695969378130457e-03,
-+-5.69433409820978980731e-03,
-+-5.71106482843655206827e-03,
-+-5.72482851320176878984e-03,
-+-5.73562603883285941631e-03,
-+-5.74345981063785135379e-03,
-+-5.74833374761739290815e-03,
-+-5.75025327641265435880e-03,
-+-5.74922532449426235829e-03,
-+-5.74525831259774157761e-03,
-+-5.73836214641150563903e-03,
-+-5.72854820752343851104e-03,
-+-5.71582934363289423690e-03,
-+-5.70021985803501312490e-03,
-+-5.68173549838472177059e-03,
-+-5.66039344474815377811e-03,
-+-5.63621229694941539706e-03,
-+-5.60921206122125953764e-03,
-+-5.57941413616825417771e-03,
-+-5.54684129805165914567e-03,
-+-5.51151768540501883070e-03,
-+-5.47346878299080803754e-03,
-+-5.43272140510751410519e-03,
-+-5.38930367825777700136e-03,
-+-5.34324502318837303572e-03,
-+-5.29457613631248175806e-03,
-+-5.24332897052591333231e-03,
-+-5.18953671542863627375e-03,
-+-5.13323377696330972880e-03,
-+-5.07445575648276473585e-03,
-+-5.01323942925907713175e-03,
-+-4.94962272244652261993e-03,
-+-4.88364469251110090015e-03,
-+-4.81534550214015970304e-03,
-+-4.74476639664476486369e-03,
-+-4.67194967986881478511e-03,
-+-4.59693868961848651350e-03,
-+-4.51977777262569171968e-03,
-+-4.44051225906016977518e-03,
-+-4.35918843660393785094e-03,
-+-4.27585352410331936968e-03,
-+-4.19055564481250319292e-03,
-+-4.10334379924411681712e-03,
-+-4.01426783764161857621e-03,
-+-3.92337843208837196152e-03,
-+-3.83072704826951850737e-03,
-+-3.73636591690094466492e-03,
-+-3.64034800484260446379e-03,
-+-3.54272698590992135906e-03,
-+-3.44355721140094522825e-03,
-+-3.34289368035381060859e-03,
-+-3.24079200955149126021e-03,
-+-3.13730840328953165461e-03,
-+-3.03249962292274259992e-03,
-+-2.92642295620787733917e-03,
-+-2.81913618645769506812e-03,
-+-2.71069756152355744588e-03,
-+-2.60116576262271661374e-03,
-+-2.49059987302636997100e-03,
-+-2.37905934662592955658e-03,
-+-2.26660397639284923177e-03,
-+-2.15329386274948570215e-03,
-+-2.03918938186720523700e-03,
-+-1.92435115390780829905e-03,
-+-1.80884001122574964056e-03,
-+-1.69271696654636218636e-03,
-+-1.57604318113799030283e-03,
-+-1.45887993299307315576e-03,
-+-1.34128858503558523983e-03,
-+-1.22333055337022866653e-03,
-+-1.10506727559064096139e-03,
-+-9.86560179161664061245e-04,
-+-8.67870649892684017067e-04,
-+-7.49060000517653913794e-04,
-+-6.30189439397319385409e-04,
-+-5.11320039360376723744e-04,
-+-3.92512706698102461101e-04,
-+-2.73828150328942268588e-04,
-+-1.55326851148111989192e-04,
-+-3.70690315771187548660e-05,
-+ 8.08853746707290755880e-05,
-+ 1.98476752594946217068e-04,
-+ 3.15645835666873892950e-04,
-+ 4.32333735328772883737e-04,
-+ 5.48481970218807931942e-04,
-+ 6.64032495107181436854e-04,
-+ 7.78927729529055225960e-04,
-+ 8.93110586101435741449e-04,
-+ 1.00652449850903457675e-03,
-+ 1.11911344914620018882e-03,
-+ 1.23082199640186964844e-03,
-+ 1.34159530157362035657e-03,
-+ 1.45137915539899904453e-03,
-+ 1.56012000419063017430e-03,
-+ 1.66776497556303743633e-03,
-+ 1.77426190373947069608e-03,
-+ 1.87955935442584700854e-03,
-+ 1.98360664924133621098e-03,
-+ 2.08635388969323877853e-03,
-+ 2.18775198068548414054e-03,
-+ 2.28775265355017198149e-03,
-+ 2.38630848859077522237e-03,
-+ 2.48337293712776532861e-03,
-+ 2.57890034303572641614e-03,
-+ 2.67284596376264485876e-03,
-+ 2.76516599082240414204e-03,
-+ 2.85581756975021973724e-03,
-+ 2.94475881951346621368e-03,
-+ 3.03194885136837165643e-03,
-+ 3.11734778715522806505e-03,
-+ 3.20091677702330967489e-03,
-+ 3.28261801657889207284e-03,
-+ 3.36241476344812956906e-03,
-+ 3.44027135324883812095e-03,
-+ 3.51615321496371192184e-03,
-+ 3.59002688570913630964e-03,
-+ 3.66186002489374750821e-03,
-+ 3.73162142776055534565e-03,
-+ 3.79928103830806575963e-03,
-+ 3.86480996158482074943e-03,
-+ 3.92818047535295911815e-03,
-+ 3.98936604111683416202e-03,
-+ 4.04834131451196205242e-03,
-+ 4.10508215505163594206e-03,
-+ 4.15956563522717256282e-03,
-+ 4.21177004895932887568e-03,
-+ 4.26167491939793193628e-03,
-+ 4.30926100606804449861e-03,
-+ 4.35451031136011804806e-03,
-+ 4.39740608636303952073e-03,
-+ 4.43793283603874291060e-03,
-+ 4.47607632373735360443e-03,
-+ 4.51182357505270758419e-03,
-+ 4.54516288101758283297e-03,
-+ 4.57608380063932208837e-03,
-+ 4.60457716277592760817e-03,
-+ 4.63063506735364276146e-03,
-+ 4.65425088592728592590e-03,
-+ 4.67541926158465074442e-03,
-+ 4.69413610819694772369e-03,
-+ 4.71039860901748680400e-03,
-+ 4.72420521463094104236e-03,
-+ 4.73555564025632692166e-03,
-+ 4.74445086240650633347e-03,
-+ 4.75089311490801708554e-03,
-+ 4.75488588428478291259e-03,
-+ 4.75643390451007622849e-03,
-+ 4.75554315113093165057e-03,
-+ 4.75222083476989180795e-03,
-+ 4.74647539400918638819e-03,
-+ 4.73831648766260323663e-03,
-+ 4.72775498644069803317e-03,
-+ 4.71480296401554071356e-03,
-+ 4.69947368749087587836e-03,
-+ 4.68178160728457970485e-03,
-+ 4.66174234643011633356e-03,
-+ 4.63937268930397338912e-03,
-+ 4.61469056978682824754e-03,
-+ 4.58771505886557909998e-03,
-+ 4.55846635168473662131e-03,
-+ 4.52696575405490270194e-03,
-+ 4.49323566842705062613e-03,
-+ 4.45729957934127077324e-03,
-+ 4.41918203835877602265e-03,
-+ 4.37890864848652049124e-03,
-+ 4.33650604810387890753e-03,
-+ 4.29200189440092326476e-03,
-+ 4.24542484633809186906e-03,
-+ 4.19680454713776754372e-03,
-+ 4.14617160631750546196e-03,
-+ 4.09355758127592610218e-03,
-+ 4.03899495844180136256e-03,
-+ 3.98251713399709519198e-03,
-+ 3.92415839418544434153e-03,
-+ 3.86395389521696766208e-03,
-+ 3.80193964278122088427e-03,
-+ 3.73815247117977034197e-03,
-+ 3.67263002209005122098e-03,
-+ 3.60541072297290579943e-03,
-+ 3.53653376513536534670e-03,
-+ 3.46603908146142026050e-03,
-+ 3.39396732382294752731e-03,
-+ 3.32035984018316321711e-03,
-+ 3.24525865140575702286e-03,
-+ 3.16870642778174132007e-03,
-+ 3.09074646528776763449e-03,
-+ 3.01142266158806225576e-03,
-+ 2.93077949179369311866e-03,
-+ 2.84886198399182102511e-03,
-+ 2.76571569455873623317e-03,
-+ 2.68138668326939897182e-03,
-+ 2.59592148821740460393e-03,
-+ 2.50936710055862152030e-03,
-+ 2.42177093909172859790e-03,
-+ 2.33318082468986958203e-03,
-+ 2.24364495459622101392e-03,
-+ 2.15321187659778126924e-03,
-+ 2.06193046309074068043e-03,
-+ 1.96984988505084042051e-03,
-+ 1.87701958592308018950e-03,
-+ 1.78348925544364851972e-03,
-+ 1.68930880340843595812e-03,
-+ 1.59452833340149326656e-03,
-+ 1.49919811649695529192e-03,
-+ 1.40336856494826384134e-03,
-+ 1.30709020587860356294e-03,
-+ 1.21041365498514362324e-03,
-+ 1.11338959027166444805e-03,
-+ 1.01606872582251793642e-03,
-+ 9.18501785631088349393e-04,
-+ 8.20739477496859018597e-04,
-+ 7.22832467003395990300e-04,
-+ 6.24831351591239583451e-04,
-+ 5.26786634738466547599e-04,
-+ 4.28748700261665177755e-04,
-+ 3.30767786750949313850e-04,
-+ 2.32893962150942354693e-04,
-+ 1.35177098501164551355e-04,
-+ 3.76668468481058423122e-05,
-+-5.95873876588743519559e-05,
-+-1.56536470474729711095e-04,
-+-2.53131562157722037748e-04,
-+-3.49324142647419787298e-04,
-+-4.45066035310075810549e-04,
-+-5.40309430740103734635e-04,
-+-6.35006910305014118934e-04,
-+-7.29111469423506203084e-04,
-+-8.22576540564630594166e-04,
-+-9.15356015957640898294e-04,
-+-1.00740427000084128463e-03,
-+-1.09867618135961594636e-03,
-+-1.18912715474222760448e-03,
-+-1.27871314234389459909e-03,
-+-1.36739066494837155016e-03,
-+-1.45511683267735177083e-03,
-+-1.54184936537829454448e-03,
-+-1.62754661264047644116e-03,
-+-1.71216757343079406702e-03,
-+-1.79567191533962417817e-03,
-+-1.87801999342815861480e-03,
-+-1.95917286866888803315e-03,
-+-2.03909232597019587571e-03,
-+-2.11774089177778042717e-03,
-+-2.19508185124423979562e-03,
-+-2.27107926495981587295e-03,
-+-2.34569798523625184378e-03,
-+-2.41890367193748701338e-03,
-+-2.49066280784942736815e-03,
-+-2.56094271358263403382e-03,
-+-2.62971156200168766290e-03,
-+-2.69693839217458606120e-03,
-+-2.76259312283697608739e-03,
-+-2.82664656536508410861e-03,
-+-2.88907043625251033769e-03,
-+-2.94983736908550680730e-03,
-+-3.00892092601204481916e-03,
-+-3.06629560870052934873e-03,
-+-3.12193686878331445531e-03,
-+-3.17582111778177576464e-03,
-+-3.22792573650879186659e-03,
-+-3.27822908394535990351e-03,
-+-3.32671050558861836413e-03,
-+-3.37335034126782541686e-03,
-+-3.41812993242640843911e-03,
-+-3.46103162886747485125e-03,
-+-3.50203879496072990885e-03,
-+-3.54113581530953033458e-03,
-+-3.57830809987640932265e-03,
-+-3.61354208856588636489e-03,
-+-3.64682525526394910736e-03,
-+-3.67814611133359227815e-03,
-+-3.70749420856602597552e-03,
-+-3.73486014158783824479e-03,
-+-3.76023554972410066835e-03,
-+-3.78361311831824139590e-03,
-+-3.80498657950949356263e-03,
-+-3.82435071246891309174e-03,
-+-3.84170134309564249159e-03,
-+-3.85703534317483227867e-03,
-+-3.87035062899941184958e-03,
-+-3.88164615945781315415e-03,
-+-3.89092193359018290177e-03,
-+-3.89817898761586753217e-03,
-+-3.90341939143522623223e-03,
-+-3.90664624460901419717e-03,
-+-3.90786367181894002398e-03,
-+-3.90707681781324485393e-03,
-+-3.90429184184126710708e-03,
-+-3.89951591158146492616e-03,
-+-3.89275719656733548701e-03,
-+-3.88402486111620462786e-03,
-+-3.87332905676572971168e-03,
-+-3.86068091422367464308e-03,
-+-3.84609253483633988652e-03,
-+-3.82957698158139896172e-03,
-+-3.81114826959133828205e-03,
-+-3.79082135621343309026e-03,
-+-3.76861213061301580582e-03,
-+-3.74453740292646350060e-03,
-+-3.71861489297091191847e-03,
-+-3.69086321851783442580e-03,
-+-3.66130188313754665122e-03,
-+-3.62995126362247863203e-03,
-+-3.59683259699652849509e-03,
-+-3.56196796711877707378e-03,
-+-3.52538029088927777621e-03,
-+-3.48709330406542271710e-03,
-+-3.44713154669716278014e-03,
-+-3.40552034818984500006e-03,
-+-3.36228581200323853317e-03,
-+-3.31745479999584480524e-03,
-+-3.27105491642360043589e-03,
-+-3.22311449160199306810e-03,
-+-3.17366256524132884023e-03,
-+-3.12272886946435550976e-03,
-+-3.07034381151609402430e-03,
-+-3.01653845617577253541e-03,
-+-2.96134450788043245700e-03,
-+-2.90479429257073850854e-03,
-+-2.84692073926870632683e-03,
-+-2.78775736139794984292e-03,
-+-2.72733823785672839513e-03,
-+-2.66569799385409870324e-03,
-+-2.60287178151993913236e-03,
-+-2.53889526029965357373e-03,
-+-2.47380457714372692726e-03,
-+-2.40763634650355490621e-03,
-+-2.34042763014413865083e-03,
-+-2.27221591678447533066e-03,
-+-2.20303910157702452152e-03,
-+-2.13293546543681959357e-03,
-+-2.06194365423175264909e-03,
-+-1.99010265784496783933e-03,
-+-1.91745178912041433321e-03,
-+-1.84403066270314016858e-03,
-+-1.76987917378504866148e-03,
-+-1.69503747676780160310e-03,
-+-1.61954596385395933195e-03,
-+-1.54344524357734455208e-03,
-+-1.46677611928450082716e-03,
-+-1.38957956757772282952e-03,
-+-1.31189671673156917249e-03,
-+-1.23376882509377769348e-03,
-+-1.15523725948148982788e-03,
-+-1.07634347358468449377e-03,
-+-9.97128986387143959394e-04,
-+-9.17635360616648500243e-04,
-+-8.37904181234895789956e-04,
-+-7.57977033978787513406e-04,
-+-6.77895483963235779418e-04,
-+-5.97701054357152421204e-04,
-+-5.17435205142649512489e-04,
-+-4.37139311968777596797e-04,
-+-3.56854645110210024969e-04,
-+-2.76622348541154185371e-04,
-+-1.96483419135612727945e-04,
-+-1.16478686003570469231e-04,
-+-3.66487899740422618075e-05,
-+ 4.29658367651341511670e-05,
-+ 1.22324990860946911401e-04,
-+ 2.01388717811737909388e-04,
-+ 2.80117331797544979934e-04,
-+ 3.58471435313892643378e-04,
-+ 4.36411938600040889922e-04,
-+ 5.13900078851591240840e-04,
-+ 5.90897439209055901944e-04,
-+ 6.67365967512406946770e-04,
-+ 7.43267994812951346417e-04,
-+ 8.18566253633950927961e-04,
-+ 8.93223895970637264512e-04,
-+ 9.67204511021861590946e-04,
-+ 1.04047214264425358192e-03,
-+ 1.11299130652140420249e-03,
-+ 1.18472700703946731866e-03,
-+ 1.25564475386154045418e-03,
-+ 1.32571057819342382096e-03,
-+ 1.39489104873262805863e-03,
-+ 1.46315328729405358735e-03,
-+ 1.53046498410463441449e-03,
-+ 1.59679441276025036248e-03,
-+ 1.66211044483838841015e-03,
-+ 1.72638256415947395801e-03,
-+ 1.78958088069116868016e-03,
-+ 1.85167614408905580742e-03,
-+ 1.91263975686785663195e-03,
-+ 1.97244378719760738577e-03,
-+ 2.03106098131931389963e-03,
-+ 2.08846477557452425353e-03,
-+ 2.14462930804391795764e-03,
-+ 2.19952942979019039696e-03,
-+ 2.25314071570019555310e-03,
-+ 2.30543947492238164229e-03,
-+ 2.35640276089497556142e-03,
-+ 2.40600838096100867747e-03,
-+ 2.45423490556669890092e-03,
-+ 2.50106167703914496897e-03,
-+ 2.54646881794065452556e-03,
-+ 2.59043723899601840976e-03,
-+ 2.63294864659046256791e-03,
-+ 2.67398554983521103204e-03,
-+ 2.71353126719851020857e-03,
-+ 2.75156993270003411012e-03,
-+ 2.78808650166653335112e-03,
-+ 2.82306675604716231925e-03,
-+ 2.85649730928709153985e-03,
-+ 2.88836561075816750793e-03,
-+ 2.91865994974546466220e-03,
-+ 2.94736945898928888107e-03,
-+ 2.97448411778179853254e-03,
-+ 2.99999475461813899443e-03,
-+ 3.02389304940205334848e-03,
-+ 3.04617153520601608579e-03,
-+ 3.06682359958635559691e-03,
-+ 3.08584348545404892755e-03,
-+ 3.10322629150200672218e-03,
-+ 3.11896797218987227585e-03,
-+ 3.13306533728775369815e-03,
-+ 3.14551605098039102626e-03,
-+ 3.15631863053354591933e-03,
-+ 3.16547244452441024071e-03,
-+ 3.17297771063858400492e-03,
-+ 3.17883549303571563346e-03,
-+ 3.18304769928660826611e-03,
-+ 3.18561707688456985377e-03,
-+ 3.18654720933417290318e-03,
-+ 3.18584251182050994661e-03,
-+ 3.18350822646264360050e-03,
-+ 3.17955041715474407901e-03,
-+ 3.17397596399888754642e-03,
-+ 3.16679255733362226624e-03,
-+ 3.15800869136252529770e-03,
-+ 3.14763365738724267343e-03,
-+ 3.13567753664971719460e-03,
-+ 3.12215119278838691003e-03,
-+ 3.10706626391348732577e-03,
-+ 3.09043515430657261128e-03,
-+ 3.07227102574976181429e-03,
-+ 3.05258778849025729646e-03,
-+ 3.03140009184578061371e-03,
-+ 3.00872331445699433758e-03,
-+ 2.98457355419296660459e-03,
-+ 2.95896761771581541176e-03,
-+ 2.93192300971099667137e-03,
-+ 2.90345792178986830678e-03,
-+ 2.87359122107115833381e-03,
-+ 2.84234243844815569202e-03,
-+ 2.80973175654865899714e-03,
-+ 2.77577999739489662823e-03,
-+ 2.74050860977057735360e-03,
-+ 2.70393965630238552328e-03,
-+ 2.66609580026378606421e-03,
-+ 2.62700029210837524354e-03,
-+ 2.58667695574077254050e-03,
-+ 2.54515017453282822377e-03,
-+ 2.50244487709332368713e-03,
-+ 2.45858652279897166651e-03,
-+ 2.41360108709495107052e-03,
-+ 2.36751504657360840878e-03,
-+ 2.32035536383917847733e-03,
-+ 2.27214947216734537011e-03,
-+ 2.22292525996793232518e-03,
-+ 2.17271105505975571301e-03,
-+ 2.12153560876561335380e-03,
-+ 2.06942807983705873154e-03,
-+ 2.01641801821680422338e-03,
-+ 1.96253534864859182849e-03,
-+ 1.90781035414268307880e-03,
-+ 1.85227365930619859540e-03,
-+ 1.79595621354771339470e-03,
-+ 1.73888927416449511586e-03,
-+ 1.68110438932177089048e-03,
-+ 1.62263338093348468728e-03,
-+ 1.56350832745304072283e-03,
-+ 1.50376154658367453161e-03,
-+ 1.44342557791726690958e-03,
-+ 1.38253316551135724960e-03,
-+ 1.32111724041281413007e-03,
-+ 1.25921090313770521994e-03,
-+ 1.19684740611688275949e-03,
-+ 1.13406013611574898320e-03,
-+ 1.07088259663794954646e-03,
-+ 1.00734839032173340879e-03,
-+ 9.43491201338451197442e-04,
-+ 8.79344777802133358187e-04,
-+ 8.14942914198997676867e-04,
-+ 7.50319433846045077789e-04,
-+ 6.85508171388117602645e-04,
-+ 6.20542955341616764633e-04,
-+ 5.55457590694125209752e-04,
-+ 4.90285841569116395515e-04,
-+ 4.25061413963795440944e-04,
-+ 3.59817938569106346609e-04,
-+ 2.94588953680933085706e-04,
-+ 2.29407888210245771441e-04,
-+ 1.64308044801349289110e-04,
-+ 9.93225830661220992091e-05,
-+ 3.44845029432159748818e-05,
-+-3.01733718103322993271e-05,
-+-9.46184099865878051579e-05,
-+-1.58818189144901994068e-04,
-+-2.22740511673599295237e-04,
-+-2.86353420686933518319e-04,
-+-3.49625215749474168095e-04,
-+-4.12524468420490651472e-04,
-+-4.75020037611034338584e-04,
-+-5.37081084745966554420e-04,
-+-5.98677088724102000189e-04,
-+-6.59777860668749548644e-04,
-+-7.20353558462378845868e-04,
-+-7.80374701058222453379e-04,
-+-8.39812182561741876058e-04,
-+-8.98637286076072534964e-04,
-+-9.56821697304657218380e-04,
-+-1.01433751790445296839e-03,
-+-1.07115727858425125243e-03,
-+-1.12725395194157021125e-03,
-+-1.18260096503265514645e-03,
-+-1.23717221166938983953e-03,
-+-1.29094206443821453087e-03,
-+-1.34388538643541812813e-03,
-+-1.39597754271321623266e-03,
-+-1.44719441143244622640e-03,
-+-1.49751239471598309415e-03,
-+-1.54690842919921311277e-03,
-+-1.59535999627203944548e-03,
-+-1.64284513200888535912e-03,
-+-1.68934243678199938477e-03,
-+-1.73483108455441971917e-03,
-+-1.77929083184826127527e-03,
-+-1.82270202638530284291e-03,
-+-1.86504561539608984359e-03,
-+-1.90630315359404723698e-03,
-+-1.94645681081197273812e-03,
-+-1.98548937929780454012e-03,
-+-2.02338428066662365593e-03,
-+-2.06012557250690765687e-03,
-+-2.09569795463821536424e-03,
-+-2.13008677501847496286e-03,
-+-2.16327803529848140124e-03,
-+-2.19525839602226170363e-03,
-+-2.22601518147149193827e-03,
-+-2.25553638415244925991e-03,
-+-2.28381066892440051305e-03,
-+-2.31082737676846549160e-03,
-+-2.33657652819600639496e-03,
-+-2.36104882629574550773e-03,
-+-2.38423565941946538627e-03,
-+-2.40612910350581450311e-03,
-+-2.42672192404203967281e-03,
-+-2.44600757766397268814e-03,
-+-2.46398021339438002067e-03,
-+-2.48063467352028057047e-03,
-+-2.49596649410964519650e-03,
-+-2.50997190516864723125e-03,
-+-2.52264783044025284534e-03,
-+-2.53399188684540720151e-03,
-+-2.54400238356825665262e-03,
-+-2.55267832078691359055e-03,
-+-2.56001938805160448795e-03,
-+-2.56602596231194192769e-03,
-+-2.57069910559561132235e-03,
-+-2.57404056234069840772e-03,
-+-2.57605275638400242275e-03,
-+-2.57673878760806066013e-03,
-+-2.57610242824962915389e-03,
-+-2.57414811887259368725e-03,
-+-2.57088096400836900457e-03,
-+-2.56630672746716416779e-03,
-+-2.56043182732341697075e-03,
-+-2.55326333057917390437e-03,
-+-2.54480894750897836121e-03,
-+-2.53507702569032763312e-03,
-+-2.52407654372365647388e-03,
-+-2.51181710464612895778e-03,
-+-2.49830892904353337597e-03,
-+-2.48356284786475705814e-03,
-+-2.46759029494360467016e-03,
-+-2.45040329923257435216e-03,
-+-2.43201447675357512387e-03,
-+-2.41243702227060758184e-03,
-+-2.39168470068965325834e-03,
-+-2.36977183819085321370e-03,
-+-2.34671331309871259233e-03,
-+-2.32252454649548413859e-03,
-+-2.29722149258377488293e-03,
-+-2.27082062880380698353e-03,
-+-2.24333894571130537665e-03,
-+-2.21479393662223902547e-03,
-+-2.18520358703003540410e-03,
-+-2.15458636380176215414e-03,
-+-2.12296120415960722083e-03,
-+-2.09034750445369690852e-03,
-+-2.05676510873303809365e-03,
-+-2.02223429712087166693e-03,
-+-1.98677577400132665889e-03,
-+-1.95041065602380068143e-03,
-+-1.91316045993188566660e-03,
-+-1.87504709022398054208e-03,
-+-1.83609282665202818569e-03,
-+-1.79632031156571974305e-03,
-+-1.75575253710894539118e-03,
-+-1.71441283227574312563e-03,
-+-1.67232484983291908656e-03,
-+-1.62951255311622692640e-03,
-+-1.58600020270752910083e-03,
-+-1.54181234300042021082e-03,
-+-1.49697378866114633872e-03,
-+-1.45150961099237444871e-03,
-+-1.40544512420743054025e-03,
-+-1.35880587162187237323e-03,
-+-1.31161761177006727826e-03,
-+-1.26390630445442453227e-03,
-+-1.21569809673418671551e-03,
-+-1.16701930886166653674e-03,
-+-1.11789642017300181083e-03,
-+-1.06835605494137557414e-03,
-+-1.01842496819956130141e-03,
-+-9.68130031539442812739e-04,
-+-9.17498218896290623249e-04,
-+-8.66556592324564493868e-04,
-+-8.15332287772978616183e-04,
-+-7.63852500866257408917e-04,
-+-7.12144472700820384964e-04,
-+-6.60235475661517237297e-04,
-+-6.08152799267011124132e-04,
-+-5.55923736050680200420e-04,
-+-5.03575567484773503439e-04,
-+-4.51135549954315671906e-04,
-+-3.98630900788171399930e-04,
-+-3.46088784354618185513e-04,
-+-2.93536298227804867602e-04,
-+-2.41000459432347881880e-04,
-+-1.88508190773214112049e-04,
-+-1.36086307257084302303e-04,
-+-8.37615026124415208318e-05,
-+-3.15603359146758591044e-05,
-+ 2.04907816767023618287e-05,
-+ 7.23656000628412833693e-05,
-+ 1.24038043225600054433e-04,
-+ 1.75482222116205200833e-04,
-+ 2.26672447407071596913e-04,
-+ 2.77583242099614419147e-04,
-+ 3.28189353983021332804e-04,
-+ 3.78465767937005519422e-04,
-+ 4.28387718073507952569e-04,
-+ 4.77930699711027453993e-04,
-+ 5.27070481176294264314e-04,
-+ 5.75783115427220041314e-04,
-+ 6.24044951492278227381e-04,
-+ 6.71832645720683982113e-04,
-+ 7.19123172837888647094e-04,
-+ 7.65893836801815361230e-04,
-+ 8.12122281454607207463e-04,
-+ 8.57786500964706813931e-04,
-+ 9.02864850055145489773e-04,
-+ 9.47336054012924352885e-04,
-+ 9.91179218475344821562e-04,
-+ 1.03437383898850724685e-03,
-+ 1.07689981033424705438e-03,
-+ 1.11873743562118156160e-03,
-+ 1.15986743513579325555e-03,
-+ 1.20027095494985164281e-03,
-+ 1.23992957528063201672e-03,
-+ 1.27882531860024116835e-03,
-+ 1.31694065749045157408e-03,
-+ 1.35425852224024464987e-03,
-+ 1.39076230818266951932e-03,
-+ 1.42643588276789089024e-03,
-+ 1.46126359237003949389e-03,
-+ 1.49523026882479484305e-03,
-+ 1.52832123569547530945e-03,
-+ 1.56052231426488533308e-03,
-+ 1.59181982925111196493e-03,
-+ 1.62220061424500194142e-03,
-+ 1.65165201686719317030e-03,
-+ 1.68016190364333106375e-03,
-+ 1.70771866459552704512e-03,
-+ 1.73431121754877184786e-03,
-+ 1.75992901215076880984e-03,
-+ 1.78456203360429659956e-03,
-+ 1.80820080611094821665e-03,
-+ 1.83083639602529585529e-03,
-+ 1.85246041471891220720e-03,
-+ 1.87306502115368290161e-03,
-+ 1.89264292416397640097e-03,
-+ 1.91118738444732896159e-03,
-+ 1.92869221626372814270e-03,
-+ 1.94515178884347187879e-03,
-+ 1.96056102750367033591e-03,
-+ 1.97491541447399011552e-03,
-+ 1.98821098943195847739e-03,
-+ 2.00044434974860733945e-03,
-+ 2.01161265044509608366e-03,
-+ 2.02171360386141883703e-03,
-+ 2.03074547903829647627e-03,
-+ 2.03870710081329245544e-03,
-+ 2.04559784863279697439e-03,
-+ 2.05141765508121132200e-03,
-+ 2.05616700412915255278e-03,
-+ 2.05984692910230610119e-03,
-+ 2.06245901037309994214e-03,
-+ 2.06400537277705341602e-03,
-+ 2.06448868275625058155e-03,
-+ 2.06391214523207744413e-03,
-+ 2.06227950020990537586e-03,
-+ 2.05959501911819184081e-03,
-+ 2.05586350088483903534e-03,
-+ 2.05109026775365885925e-03,
-+ 2.04528116084394225374e-03,
-+ 2.03844253545626581670e-03,
-+ 2.03058125612778830188e-03,
-+ 2.02170469144040887075e-03,
-+ 2.01182070858521491047e-03,
-+ 2.00093766768695948202e-03,
-+ 1.98906441589210680049e-03,
-+ 1.97621028122438920777e-03,
-+ 1.96238506621177182659e-03,
-+ 1.94759904128888393197e-03,
-+ 1.93186293797900990321e-03,
-+ 1.91518794185986402506e-03,
-+ 1.89758568531769714928e-03,
-+ 1.87906824009385019746e-03,
-+ 1.85964810962852347687e-03,
-+ 1.83933822120627122297e-03,
-+ 1.81815191790804173144e-03,
-+ 1.79610295037441560807e-03,
-+ 1.77320546838494034515e-03,
-+ 1.74947401225873200130e-03,
-+ 1.72492350408103120758e-03,
-+ 1.69956923876105037673e-03,
-+ 1.67342687492632539309e-03,
-+ 1.64651242565860508361e-03,
-+ 1.61884224907680703345e-03,
-+ 1.59043303877220510226e-03,
-+ 1.56130181410158168538e-03,
-+ 1.53146591034349164456e-03,
-+ 1.50094296872333799256e-03,
-+ 1.46975092631300560328e-03,
-+ 1.43790800581038743892e-03,
-+ 1.40543270520465083014e-03,
-+ 1.37234378733301696889e-03,
-+ 1.33866026933477191320e-03,
-+ 1.30440141200818598630e-03,
-+ 1.26958670907636713213e-03,
-+ 1.23423587636767762184e-03,
-+ 1.19836884091695044206e-03,
-+ 1.16200572999298904278e-03,
-+ 1.12516686005846404395e-03,
-+ 1.08787272566834868938e-03,
-+ 1.05014398831246302812e-03,
-+ 1.01200146520824866246e-03,
-+ 9.73466118049983288388e-04,
-+ 9.34559041719948196611e-04,
-+ 8.95301452967915711335e-04,
-+ 8.55714679064593008659e-04,
-+ 8.15820146435422468428e-04,
-+ 7.75639369280203805866e-04,
-+ 7.35193938184691589237e-04,
-+ 6.94505508730360781103e-04,
-+ 6.53595790107610935191e-04,
-+ 6.12486533739071471218e-04,
-+ 5.71199521918073420228e-04,
-+ 5.29756556468897262142e-04,
-+ 4.88179447433947737416e-04,
-+ 4.46490001794050709802e-04,
-+ 4.04710012227305993091e-04,
-+ 3.62861245912609686835e-04,
-+ 3.20965433382992511909e-04,
-+ 2.79044257434640438631e-04,
-+ 2.37119342097372800019e-04,
-+ 1.95212241671636533603e-04,
-+ 1.53344429837704167947e-04,
-+ 1.11537288842718541599e-04,
-+ 6.98120987704314377789e-05,
-+ 2.81900268993452554395e-05,
-+-1.33078828458379828427e-05,
-+-5.46607203438825674300e-05,
-+-9.58477196232063128950e-05,
-+-1.36848269099311073286e-04,
-+-1.77641921698430010380e-04,
-+-2.18208404862630192013e-04,
-+-2.58527630431676846631e-04,
-+-2.98579704396867049668e-04,
-+-3.38344936521953437280e-04,
-+-3.77803849827058782322e-04,
-+-4.16937189930904319925e-04,
-+-4.55725934246739843459e-04,
-+-4.94151301028182598010e-04,
-+-5.32194758260364701556e-04,
-+-5.69838032392598397777e-04,
-+-6.07063116908156791794e-04,
-+-6.43852280727741713151e-04,
-+-6.80188076442613171781e-04,
-+-7.16053348373450011463e-04,
-+-7.51431240451819475352e-04,
-+-7.86305203920363614614e-04,
-+-8.20659004848588277854e-04,
-+-8.54476731460626398769e-04,
-+-8.87742801272211191736e-04,
-+-9.20441968033579760618e-04,
-+-9.52559328475276884118e-04,
-+-9.84080328854130366098e-04,
-+-1.01499077129671671886e-03,
-+-1.04527681993767346084e-03,
-+-1.07492500685012399610e-03,
-+-1.10392223776622968451e-03,
-+-1.13225579758538573774e-03,
-+-1.15991335566776048067e-03,
-+-1.18688297091152023324e-03,
-+-1.21315309661150744040e-03,
-+-1.23871258509778933189e-03,
-+-1.26355069215218973264e-03,
-+-1.28765708120147479195e-03,
-+-1.31102182728572635648e-03,
-+-1.33363542080036233568e-03,
-+-1.35548877101096445358e-03,
-+-1.37657320933958870861e-03,
-+-1.39688049242180935793e-03,
-+-1.41640280493340441764e-03,
-+-1.43513276218638474030e-03,
-+-1.45306341249334513427e-03,
-+-1.47018823930013145355e-03,
-+-1.48650116308605430814e-03,
-+-1.50199654303180877256e-03,
-+-1.51666917845484855790e-03,
-+-1.53051431001215848537e-03,
-+-1.54352762067077827791e-03,
-+-1.55570523644627803014e-03,
-+-1.56704372690943645810e-03,
-+-1.57754010546188694168e-03,
-+-1.58719182938115940286e-03,
-+-1.59599679963599232028e-03,
-+-1.60395336047266818397e-03,
-+-1.61106029877347285521e-03,
-+-1.61731684318832920691e-03,
-+-1.62272266304074063749e-03,
-+-1.62727786700950075895e-03,
-+-1.63098300158752559583e-03,
-+-1.63383904931938927878e-03,
-+-1.63584742681915007098e-03,
-+-1.63700998257036147918e-03,
-+-1.63732899451001076216e-03,
-+-1.63680716739846910703e-03,
-+-1.63544762997745404300e-03,
-+-1.63325393191824947553e-03,
-+-1.63023004056244216753e-03,
-+-1.62638033745757639228e-03,
-+-1.62170961469021174955e-03,
-+-1.61622307101895478811e-03,
-+-1.60992630781018361379e-03,
-+-1.60282532477918769794e-03,
-+-1.59492651553961163439e-03,
-+-1.58623666296416683703e-03,
-+-1.57676293435965995428e-03,
-+-1.56651287645941865272e-03,
-+-1.55549441023637930251e-03,
-+-1.54371582554013535814e-03,
-+-1.53118577556127515200e-03,
-+-1.51791327112649242562e-03,
-+-1.50390767482801038582e-03,
-+-1.48917869499094052133e-03,
-+-1.47373637948217746547e-03,
-+-1.45759110936466060836e-03,
-+-1.44075359240074425682e-03,
-+-1.42323485640868073465e-03,
-+-1.40504624247599204864e-03,
-+-1.38619939803382081524e-03,
-+-1.36670626979641294217e-03,
-+-1.34657909656966815262e-03,
-+-1.32583040193301449593e-03,
-+-1.30447298679896685550e-03,
-+-1.28251992185438013459e-03,
-+-1.25998453988795662377e-03,
-+-1.23688042800817435581e-03,
-+-1.21322141975630610686e-03,
-+-1.18902158711867676766e-03,
-+-1.16429523244280098797e-03,
-+-1.13905688026204581637e-03,
-+-1.11332126903301116203e-03,
-+-1.08710334279067352171e-03,
-+-1.06041824272541424130e-03,
-+-1.03328129868704887868e-03,
-+-1.00570802062011207742e-03,
-+-9.77714089935322180555e-04,
-+-9.49315350821759501229e-04,
-+-9.20527801504691478400e-04,
-+-8.91367585453492765508e-04,
-+-8.61850982544499480062e-04,
-+-8.31994400183724228809e-04,
-+-8.01814364393843201882e-04,
-+-7.71327510870362977047e-04,
-+-7.40550576011879011992e-04,
-+-7.09500387928816301369e-04,
-+-6.78193857435692871310e-04,
-+-6.46647969031396334730e-04,
-+-6.14879771872516131710e-04,
-+-5.82906370744061324771e-04,
-+-5.50744917032461615489e-04,
-+-5.18412599705563741960e-04,
-+-4.85926636304230086336e-04,
-+-4.53304263950078342206e-04,
-+-4.20562730374023118537e-04,
-+-3.87719284970423796848e-04,
-+-3.54791169881019867287e-04,
-+-3.21795611113349097968e-04,
-+-2.88749809698345409788e-04,
-+-2.55670932891157169815e-04,
-+-2.22576105419946933131e-04,
-+-1.89482400786797724242e-04,
-+-1.56406832625384566377e-04,
-+-1.23366346119315335164e-04,
-+-9.03778094855688048136e-05,
-+-5.74580055274082543144e-05,
-+-2.46236232605249242254e-05,
-+ 8.10875038316639484403e-06,
-+ 4.07226387702898438674e-05,
-+ 7.32016836950174766508e-05,
-+ 1.05529653418793463730e-04,
-+ 1.37690450616703013997e-04,
-+ 1.69668120226623675949e-04,
-+ 2.01446857197505152211e-04,
-+ 2.33011014133184106998e-04,
-+ 2.64345108828066273181e-04,
-+ 2.95433831690941053547e-04,
-+ 3.26262053053821875562e-04,
-+ 3.56814830362236329840e-04,
-+ 3.87077415243466558745e-04,
-+ 4.17035260449873101951e-04,
-+ 4.46674026673809685620e-04,
-+ 4.75979589231274630330e-04,
-+ 5.04938044610982032269e-04,
-+ 5.33535716886269443388e-04,
-+ 5.61759163986835612092e-04,
-+ 5.89595183827354429873e-04,
-+ 6.17030820290651992738e-04,
-+ 6.44053369062530110985e-04,
-+ 6.70650383315962803771e-04,
-+ 6.96809679241917109133e-04,
-+ 7.22519341424928177552e-04,
-+ 7.47767728060641924219e-04,
-+ 7.72543476013702731450e-04,
-+ 7.96835505713403631674e-04,
-+ 8.20633025885535226200e-04,
-+ 8.43925538118381487161e-04,
-+ 8.66702841260924973336e-04,
-+ 8.88955035651854165446e-04,
-+ 9.10672527177615212350e-04,
-+ 9.31846031157871484973e-04,
-+ 9.52466576057239681409e-04,
-+ 9.72525507021732124775e-04,
-+ 9.92014489238877755425e-04,
-+ 1.01092551112014119447e-03,
-+ 1.02925088730489687483e-03,
-+ 1.04698326148487523037e-03,
-+ 1.06411560904814419225e-03,
-+ 1.08064123954212140503e-03,
-+ 1.09655379895474709012e-03,
-+ 1.11184727181350227060e-03,
-+ 1.12651598310145530275e-03,
-+ 1.14055459999043234086e-03,
-+ 1.15395813339070935251e-03,
-+ 1.16672193931725690953e-03,
-+ 1.17884172007230573521e-03,
-+ 1.19031352524443380207e-03,
-+ 1.20113375252423222606e-03,
-+ 1.21129914833666986994e-03,
-+ 1.22080680829065105208e-03,
-+ 1.22965417744607123825e-03,
-+ 1.23783905039882846655e-03,
-+ 1.24535957118451323482e-03,
-+ 1.25221423300135711529e-03,
-+ 1.25840187775329488164e-03,
-+ 1.26392169541390537828e-03,
-+ 1.26877322321232639292e-03,
-+ 1.27295634464211107444e-03,
-+ 1.27647128829414154005e-03,
-+ 1.27931862651490548498e-03,
-+ 1.28149927389138891531e-03,
-+ 1.28301448556399880392e-03,
-+ 1.28386585536898346210e-03,
-+ 1.28405531381196435364e-03,
-+ 1.28358512587416814105e-03,
-+ 1.28245788865312404514e-03,
-+ 1.28067652883962455890e-03,
-+ 1.27824430003284665244e-03,
-+ 1.27516477989559045420e-03,
-+ 1.27144186715168476705e-03,
-+ 1.26707977842766580760e-03,
-+ 1.26208304494093768826e-03,
-+ 1.25645650903666696377e-03,
-+ 1.25020532057574596321e-03,
-+ 1.24333493317623205304e-03,
-+ 1.23585110031071486285e-03,
-+ 1.22775987126220184967e-03,
-+ 1.21906758694106096864e-03,
-+ 1.20978087556570016413e-03,
-+ 1.19990664820977745338e-03,
-+ 1.18945209421860830651e-03,
-+ 1.17842467649774342194e-03,
-+ 1.16683212667649549056e-03,
-+ 1.15468244014949755240e-03,
-+ 1.14198387099919015063e-03,
-+ 1.12874492680236585690e-03,
-+ 1.11497436332383317165e-03,
-+ 1.10068117910044980384e-03,
-+ 1.08587460991860403070e-03,
-+ 1.07056412318845268865e-03,
-+ 1.05475941221827552129e-03,
-+ 1.03847039039213777552e-03,
-+ 1.02170718525430208670e-03,
-+ 1.00448013250386408712e-03,
-+ 9.86799769902908796571e-04,
-+ 9.68676831101775311604e-04,
-+ 9.50122239384842536686e-04,
-+ 9.31147101340516931967e-04,
-+ 9.11762700458799784341e-04,
-+ 8.91980490660106628206e-04,
-+ 8.71812089758989324645e-04,
-+ 8.51269272866356447108e-04,
-+ 8.30363965733769732354e-04,
-+ 8.09108238043540397427e-04,
-+ 7.87514296648406260902e-04,
-+ 7.65594478764287304610e-04,
-+ 7.43361245119910263486e-04,
-+ 7.20827173067144330761e-04,
-+ 6.98004949655533580080e-04,
-+ 6.74907364674943543829e-04,
-+ 6.51547303669901115876e-04,
-+ 6.27937740929578719871e-04,
-+ 6.04091732456894250046e-04,
-+ 5.80022408920566161228e-04,
-+ 5.55742968593996586671e-04,
-+ 5.31266670284408345712e-04,
-+ 5.06606826256191336046e-04,
-+ 4.81776795151971288286e-04,
-+ 4.56789974915332633570e-04,
-+ 4.31659795718581772855e-04,
-+ 4.06399712899354833857e-04,
-+ 3.81023199909761244551e-04,
-+ 3.55543741281616379035e-04,
-+ 3.29974825611307478416e-04,
-+ 3.04329938567904757871e-04,
-+ 2.78622555928232935440e-04,
-+ 2.52866136642138929734e-04,
-+ 2.27074115931597155090e-04,
-+ 2.01259898427254919819e-04,
-+ 1.75436851345555256277e-04,
-+ 1.49618297710086417540e-04,
-+ 1.23817509620332964109e-04,
-+ 9.80477015714136803867e-05,
-+ 7.23220238277867656044e-05,
-+ 4.66535558543199922808e-05,
-+ 2.10552998080745397132e-05,
-+-4.45982590633637267685e-06,
-+-2.98789930144383005840e-05,
-+-5.51894696797388301145e-05,
-+-8.03786267385361320997e-05,
-+-1.05433943858796803006e-04,
-+-1.30343015620240231141e-04,
-+-1.55093557512704107414e-04,
-+-1.79673411849813922459e-04,
-+-2.04070553595469639328e-04,
-+-2.28273096100298591472e-04,
-+-2.52269296745275168909e-04,
-+-2.76047562490193821964e-04,
-+-2.99596455324310003560e-04,
-+-3.22904697616543522477e-04,
-+-3.45961177363105203825e-04,
-+-3.68754953329960058744e-04,
-+-3.91275260088006534946e-04,
-+-4.13511512938510329696e-04,
-+-4.35453312726917203881e-04,
-+-4.57090450542803317623e-04,
-+-4.78412912303817451296e-04,
-+-4.99410883221915679296e-04,
-+-5.20074752149766658671e-04,
-+-5.40395115805737333292e-04,
-+-5.60362782875298238647e-04,
-+-5.79968777987699369778e-04,
-+-5.99204345565891864818e-04,
-+-6.18060953548384053174e-04,
-+-6.36530296981365232775e-04,
-+-6.54604301479925370678e-04,
-+-6.72275126556943374879e-04,
-+-6.89535168818290744586e-04,
-+-7.06377065023390971615e-04,
-+-7.22793695009926024340e-04,
-+-7.38778184481572101731e-04,
-+-7.54323907658020135873e-04,
-+-7.69424489786242268852e-04,
-+-7.84073809512324942927e-04,
-+-7.98266001112985629749e-04,
-+-8.11995456586320977881e-04,
-+-8.25256827601124256372e-04,
-+-8.38045027304191287275e-04,
-+-8.50355231985365717443e-04,
-+-8.62182882599891249782e-04,
-+-8.73523686147764872115e-04,
-+-8.84373616909959786754e-04,
-+-8.94728917541413090037e-04,
-+-9.04586100020679756244e-04,
-+-9.13941946456355816704e-04,
-+-9.22793509750267264627e-04,
-+-9.31138114117751138944e-04,
-+-9.38973355465201283722e-04,
-+-9.46297101625169024067e-04,
-+-9.53107492449534513500e-04,
-+-9.59402939761150449702e-04,
-+-9.65182127164483996684e-04,
-+-9.70444009715949393313e-04,
-+-9.75187813454562795953e-04,
-+-9.79413034793723616400e-04,
-+-9.83119439774883139768e-04,
-+-9.86307063184082167401e-04,
-+-9.88976207532291833394e-04,
-+-9.91127441900544869230e-04,
-+-9.92761600651050806279e-04,
-+-9.93879782005378667811e-04,
-+-9.94483346490992797459e-04,
-+-9.94573915257405570187e-04,
-+-9.94153368263331295093e-04,
-+-9.93223842336246652909e-04,
-+-9.91787729105850180897e-04,
-+-9.89847672812951264940e-04,
-+-9.87406567995411906316e-04,
-+-9.84467557052782528404e-04,
-+-9.81034027691367847834e-04,
-+-9.77109610251477699733e-04,
-+-9.72698174918703792335e-04,
-+-9.67803828821115733234e-04,
-+-9.62430913014279427325e-04,
-+-9.56583999356122919276e-04,
-+-9.50267887273650141942e-04,
-+-9.43487600423628257514e-04,
-+-9.36248383249343269982e-04,
-+-9.28555697435622562526e-04,
-+-9.20415218264345998470e-04,
-+-9.11832830872733794518e-04,
-+-9.02814626416679100358e-04,
-+-8.93366898141493941121e-04,
-+-8.83496137362504399722e-04,
-+-8.73209029357859358757e-04,
-+-8.62512449176020662943e-04,
-+-8.51413457360529739998e-04,
-+-8.39919295594453380396e-04,
-+-8.28037382267176572288e-04,
-+-8.15775307966064137412e-04,
-+-8.03140830895733765817e-04,
-+-7.90141872227454497395e-04,
-+-7.76786511381427125823e-04,
-+-7.63082981244709722575e-04,
-+-7.49039663327390583050e-04,
-+-7.34665082859875225377e-04,
-+-7.19967903833961626534e-04,
-+-7.04956923990644160512e-04,
-+-6.89641069757283018196e-04,
-+-6.74029391137054853869e-04,
-+-6.58131056553546409972e-04,
-+-6.41955347653322514097e-04,
-+-6.25511654069284880192e-04,
-+-6.08809468147721304272e-04,
-+-5.91858379642030605315e-04,
-+-5.74668070375839888306e-04,
-+-5.57248308878482566560e-04,
-+-5.39608944995842118066e-04,
-+-5.21759904479256251923e-04,
-+-5.03711183555554655941e-04,
-+-4.85472843480994986718e-04,
-+-4.67055005082172224832e-04,
-+-4.48467843286585717087e-04,
-+-4.29721581645848931235e-04,
-+-4.10826486854523479156e-04,
-+-3.91792863267230776457e-04,
-+-3.72631047417096349181e-04,
-+-3.53351402538234474118e-04,
-+-3.33964313095238879339e-04,
-+-3.14480179322441726845e-04,
-+-2.94909411775696268711e-04,
-+-2.75262425899514299663e-04,
-+-2.55549636612443630684e-04,
-+-2.35781452913229664075e-04,
-+-2.15968272510589943134e-04,
-+-1.96120476479425779204e-04,
-+-1.76248423945933802622e-04,
-+-1.56362446804383454146e-04,
-+-1.36472844468305155993e-04,
-+-1.16589878658458767635e-04,
-+-9.67237682303544415822e-05,
-+-7.68846840437216406863e-05,
-+-5.70827438766376965410e-05,
-+-3.73280073865603565495e-05,
-+-1.76304711208225556719e-05,
-+ 1.99993642088864226016e-06,
-+ 2.15533596699292954036e-05,
-+ 4.10200208154242509364e-05,
-+ 6.03902245722433725860e-05,
-+ 7.96543628875890849517e-05,
-+ 9.88029195844659414733e-05,
-+ 1.17826474939476195025e-04,
-+ 1.36715710193023647035e-04,
-+ 1.55461411989631342456e-04,
-+ 1.74054476746553134919e-04,
-+ 1.92485914948569894868e-04,
-+ 2.10746855366906229437e-04,
-+ 2.28828549200575789499e-04,
-+ 2.46722374138184409598e-04,
-+ 2.64419838338276027342e-04,
-+ 2.81912584326679917842e-04,
-+ 2.99192392808960154656e-04,
-+ 3.16251186396444155819e-04,
-+ 3.33081033244039836395e-04,
-+ 3.49674150598494463179e-04,
-+ 3.66022908255491080231e-04,
-+ 3.82119831924034101915e-04,
-+ 3.97957606496917735885e-04,
-+ 4.13529079225828470872e-04,
-+ 4.28827262799762372065e-04,
-+ 4.43845338325564724331e-04,
-+ 4.58576658209470361914e-04,
-+ 4.73014748938412597258e-04,
-+ 4.87153313760160528844e-04,
-+ 5.00986235261103489760e-04,
-+ 5.14507577840937952753e-04,
-+ 5.27711590083254872101e-04,
-+ 5.40592707021128712937e-04,
-+ 5.53145552297087950144e-04,
-+ 5.65364940216665540391e-04,
-+ 5.77245877694797693454e-04,
-+ 5.88783566094626962042e-04,
-+ 5.99973402958039613193e-04,
-+ 6.10810983627539487439e-04,
-+ 6.21292102758916895203e-04,
-+ 6.31412755724494408928e-04,
-+ 6.41169139906554250846e-04,
-+ 6.50557655880656818606e-04,
-+ 6.59574908488803728079e-04,
-+ 6.68217707802125100019e-04,
-+ 6.76483069973211437013e-04,
-+ 6.84368217977891248049e-04,
-+ 6.91870582246639927691e-04,
-+ 6.98987801185634960270e-04,
-+ 7.05717721587660520161e-04,
-+ 7.12058398933015208009e-04,
-+ 7.18008097580767590783e-04,
-+ 7.23565290850654123378e-04,
-+ 7.28728660995954687085e-04,
-+ 7.33497099067867354590e-04,
-+ 7.37869704671835252748e-04,
-+ 7.41845785616332496076e-04,
-+ 7.45424857454791262544e-04,
-+ 7.48606642921267949158e-04,
-+ 7.51391071260577316469e-04,
-+ 7.53778277453638493114e-04,
-+ 7.55768601338868977087e-04,
-+ 7.57362586630487056617e-04,
-+ 7.58560979834606492235e-04,
-+ 7.59364729064121901821e-04,
-+ 7.59774982753388386167e-04,
-+ 7.59793088273752925850e-04,
-+ 7.59420590451042459845e-04,
-+ 7.58659229986178283191e-04,
-+ 7.57510941780111337653e-04,
-+ 7.55977853164323059486e-04,
-+ 7.54062282038194995303e-04,
-+ 7.51766734914572948463e-04,
-+ 7.49093904874909206383e-04,
-+ 7.46046669435407165151e-04,
-+ 7.42628088325620098163e-04,
-+ 7.38841401181018265533e-04,
-+ 7.34690025151058076665e-04,
-+ 7.30177552424332988561e-04,
-+ 7.25307747672431467334e-04,
-+ 7.20084545414128533031e-04,
-+ 7.14512047301645285974e-04,
-+ 7.08594519330652482768e-04,
-+ 7.02336388975790940938e-04,
-+ 6.95742242253507572024e-04,
-+ 6.88816820714019178648e-04,
-+ 6.81565018364235775117e-04,
-+ 6.73991878523528100201e-04,
-+ 6.66102590614281019760e-04,
-+ 6.57902486889110115278e-04,
-+ 6.49397039096706574744e-04,
-+ 6.40591855088354865909e-04,
-+ 6.31492675367040820315e-04,
-+ 6.22105369581239602515e-04,
-+ 6.12435932965378496476e-04,
-+ 6.02490482729133372541e-04,
-+ 5.92275254397530565020e-04,
-+ 5.81796598104019854238e-04,
-+ 5.71060974838680235344e-04,
-+ 5.60074952653592437156e-04,
-+ 5.48845202827616417997e-04,
-+ 5.37378495992671769733e-04,
-+ 5.25681698223757196999e-04,
-+ 5.13761767094866308656e-04,
-+ 5.01625747702958151193e-04,
-+ 4.89280768662212254237e-04,
-+ 4.76734038070840296462e-04,
-+ 4.63992839452548365767e-04,
-+ 4.51064527674926475653e-04,
-+ 4.37956524847056961718e-04,
-+ 4.24676316198432479525e-04,
-+ 4.11231445941475173573e-04,
-+ 3.97629513119952544397e-04,
-+ 3.83878167445365014142e-04,
-+ 3.69985105123653247247e-04,
-+ 3.55958064674343052560e-04,
-+ 3.41804822744478146133e-04,
-+ 3.27533189919382002140e-04,
-+ 3.13151006532530441166e-04,
-+ 2.98666138476795246359e-04,
-+ 2.84086473019086157080e-04,
-+ 2.69419914620704385386e-04,
-+ 2.54674380765407412045e-04,
-+ 2.39857797797613132851e-04,
-+ 2.24978096772516947353e-04,
-+ 2.10043209320515654199e-04,
-+ 1.95061063527882452839e-04,
-+ 1.80039579835930709352e-04,
-+ 1.64986666960563460723e-04,
-+ 1.49910217834334317253e-04,
-+ 1.34818105573139893332e-04,
-+ 1.19718179469376976285e-04,
-+ 1.04618261013640937926e-04,
-+ 8.95261399470057895635e-05,
-+ 7.44495703456539838043e-05,
-+ 5.93962667399166655609e-05,
-+ 4.43739002695007426613e-05,
-+ 2.93900948769175320138e-05,
-+ 1.44524235407680616859e-05,
-+-4.31595449223615991972e-07,
-+-1.52545021735661563586e-05,
-+-3.00088987191676871767e-05,
-+-4.46874527685018162865e-05,
-+-5.92829011400601544354e-05,
-+-7.37880532784749535325e-05,
-+-8.81957946927382018627e-05,
-+-1.02499090340838023227e-04,
-+-1.16690987959360069175e-04,
-+-1.30764621336392747363e-04,
-+-1.44713213526426610466e-04,
-+-1.58530080005720515508e-04,
-+-1.72208631766646892702e-04,
-+-1.85742378349807455221e-04,
-+-1.99124930812504506716e-04,
-+-2.12350004632196330849e-04,
-+-2.25411422543850048289e-04,
-+-2.38303117309836905331e-04,
-+-2.51019134421297284484e-04,
-+-2.63553634729709143104e-04,
-+-2.75900897007725623075e-04,
-+-2.88055320438154207046e-04,
-+-3.00011427029988502792e-04,
-+-3.11763863960725555544e-04,
-+-3.23307405843803333592e-04,
-+-3.34636956920517840506e-04,
-+-3.45747553175349475393e-04,
-+-3.56634364374105745227e-04,
-+-3.67292696023986241921e-04,
-+-3.77717991254969290369e-04,
-+-3.87905832621729396159e-04,
-+-3.97851943825608877700e-04,
-+-4.07552191355998907722e-04,
-+-4.17002586050548289687e-04,
-+-4.26199284573830689850e-04,
-+-4.35138590813964924123e-04,
-+-4.43816957196747625784e-04,
-+-4.52230985917061883723e-04,
-+-4.60377430087148228118e-04,
-+-4.68253194801565195918e-04,
-+-4.75855338118517359660e-04,
-+-4.83181071957494603746e-04,
-+-4.90227762913035460673e-04,
-+-4.96992932984516386924e-04,
-+-5.03474260221955485957e-04,
-+-5.09669579287852308157e-04,
-+-5.15576881935093001182e-04,
-+-5.21194317400982664451e-04,
-+-5.26520192717613616691e-04,
-+-5.31552972938706402850e-04,
-+-5.36291281283125418830e-04,
-+-5.40733899195399727276e-04,
-+-5.44879766323496587781e-04,
-+-5.48727980414253735213e-04,
-+-5.52277797126791330021e-04,
-+-5.55528629764419335478e-04,
-+-5.58480048925468798571e-04,
-+-5.61131782073551080119e-04,
-+-5.63483713027851970505e-04,
-+-5.65535881373998238451e-04,
-+-5.67288481796187900146e-04,
-+-5.68741863331195915583e-04,
-+-5.69896528545036479795e-04,
-+-5.70753132632961161612e-04,
-+-5.71312482443646482352e-04,
-+-5.71575535428334754844e-04,
-+-5.71543398515829263219e-04,
-+-5.71217326914227299835e-04,
-+-5.70598722840296476537e-04,
-+-5.69689134177503594091e-04,
-+-5.68490253063648432949e-04,
-+-5.67003914409159020388e-04,
-+-5.65232094347102977452e-04,
-+-5.63176908616005544687e-04,
-+-5.60840610876602073745e-04,
-+-5.58225590963675973900e-04,
-+-5.55334373074175820066e-04,
-+-5.52169613892796438438e-04,
-+-5.48734100656311134595e-04,
-+-5.45030749157866334711e-04,
-+-5.41062601692576870642e-04,
-+-5.36832824945712001018e-04,
-+-5.32344707824832300003e-04,
-+-5.27601659237243400015e-04,
-+-5.22607205814143416754e-04,
-+-5.17364989582876229866e-04,
-+-5.11878765588764158417e-04,
-+-5.06152399467916375153e-04,
-+-5.00189864972510559588e-04,
-+-4.93995241450078683386e-04,
-+-4.87572711278240109554e-04,
-+-4.80926557256444178138e-04,
-+-4.74061159956301635728e-04,
-+-4.66980995031984519490e-04,
-+-4.59690630492344271939e-04,
-+-4.52194723936275402073e-04,
-+-4.44498019752993822097e-04,
-+-4.36605346288767746325e-04,
-+-4.28521612981757975790e-04,
-+-4.20251807466636860457e-04,
-+-4.11800992650551039072e-04,
-+-4.03174303762152705464e-04,
-+-3.94376945375264067670e-04,
-+-3.85414188409003615268e-04,
-+-3.76291367105835428391e-04,
-+-3.67013875989376269545e-04,
-+-3.57587166803538351878e-04,
-+-3.48016745434793248019e-04,
-+-3.38308168819116130647e-04,
-+-3.28467041835364367049e-04,
-+-3.18499014186804374482e-04,
-+-3.08409777272385283997e-04,
-+-2.98205061049476030047e-04,
-+-2.87890630889810130322e-04,
-+-2.77472284430191329634e-04,
-+-2.66955848419733049459e-04,
-+-2.56347175565217071970e-04,
-+-2.45652141376338599681e-04,
-+-2.34876641012365765249e-04,
-+-2.24026586131914569105e-04,
-+-2.13107901747536509227e-04,
-+-2.02126523086630768746e-04,
-+-1.91088392460356650080e-04,
-+-1.79999456142178738786e-04,
-+-1.68865661257607132476e-04,
-+-1.57692952686686938598e-04,
-+-1.46487269980864699605e-04,
-+-1.35254544295716316437e-04,
-+-1.24000695341184972607e-04,
-+-1.12731628350718165836e-04,
-+-1.01453231070878122327e-04,
-+-9.01713707729724520340e-05,
-+-7.88918912880573160781e-05,
-+-6.76206100668247551966e-05,
-+-5.63633152658752571273e-05,
-+-4.51257628616542845251e-05,
-+-3.39136737935608547517e-05,
-+-2.27327311375149941554e-05,
-+-1.15885773114489628905e-05,
-+-4.86811313915871210201e-07,
-+ 1.05670140028143166991e-05,
-+ 2.15673946238210968425e-05,
-+ 3.25088780256781116596e-05,
-+ 4.33860657922279085714e-05,
-+ 5.41936161910015515536e-05,
-+ 6.49262467088870516650e-05,
-+ 7.55787365460706083136e-05,
-+ 8.61459290670060090240e-05,
-+ 9.66227342073920110596e-05,
-+ 1.07004130835977286562e-04,
-+ 1.17285169070277186945e-04,
-+ 1.27460972545122102045e-04,
-+ 1.37526740632994235337e-04,
-+ 1.47477750615313961575e-04,
-+ 1.57309359803685470123e-04,
-+ 1.67017007610150564068e-04,
-+ 1.76596217565703518526e-04,
-+ 1.86042599286130139018e-04,
-+ 1.95351850384440511605e-04,
-+ 2.04519758329024586505e-04,
-+ 2.13542202246907178919e-04,
-+ 2.22415154671328456478e-04,
-+ 2.31134683232958544662e-04,
-+ 2.39696952294124378952e-04,
-+ 2.48098224525461843754e-04,
-+ 2.56334862424394095085e-04,
-+ 2.64403329774836909783e-04,
-+ 2.72300193047718441016e-04,
-+ 2.80022122741781036813e-04,
-+ 2.87565894664178829838e-04,
-+ 2.94928391150552234555e-04,
-+ 3.02106602224121655823e-04,
-+ 3.09097626693513312206e-04,
-+ 3.15898673188933149566e-04,
-+ 3.22507061136495965393e-04,
-+ 3.28920221670429965485e-04,
-+ 3.35135698482898333403e-04,
-+ 3.41151148611357961198e-04,
-+ 3.46964343163231182625e-04,
-+ 3.52573167977838467131e-04,
-+ 3.57975624225448146778e-04,
-+ 3.63169828943500801448e-04,
-+ 3.68154015509882480677e-04,
-+ 3.72926534053389822573e-04,
-+ 3.77485851801332371845e-04,
-+ 3.81830553364452182901e-04,
-+ 3.85959340959241372672e-04,
-+ 3.89871034567797159973e-04,
-+ 3.93564572035445218046e-04,
-+ 3.97039009106330996121e-04,
-+ 4.00293519397200458273e-04,
-+ 4.03327394309708944353e-04,
-+ 4.06140042881526601437e-04,
-+ 4.08730991576614218711e-04,
-+ 4.11099884015009905264e-04,
-+ 4.13246480642570374747e-04,
-+ 4.15170658341088754176e-04,
-+ 4.16872409979225850337e-04,
-+ 4.18351843904797517006e-04,
-+ 4.19609183378898695574e-04,
-+ 4.20644765952442063056e-04,
-+ 4.21459042785672199482e-04,
-+ 4.22052577911266981522e-04,
-+ 4.22426047441667507944e-04,
-+ 4.22580238721291740270e-04,
-+ 4.22516049424304497659e-04,
-+ 4.22234486598678352993e-04,
-+ 4.21736665657268593004e-04,
-+ 4.21023809316662376602e-04,
-+ 4.20097246484596811584e-04,
-+ 4.18958411096749831423e-04,
-+ 4.17608840903733937334e-04,
-+ 4.16050176209156481050e-04,
-+ 4.14284158559614175323e-04,
-+ 4.12312629387525297810e-04,
-+ 4.10137528607722027553e-04,
-+ 4.07760893168739989995e-04,
-+ 4.05184855559753253750e-04,
-+ 4.02411642274163466621e-04,
-+ 3.99443572230806823956e-04,
-+ 3.96283055153818239771e-04,
-+ 3.92932589912160215497e-04,
-+ 3.89394762819913727372e-04,
-+ 3.85672245898332176350e-04,
-+ 3.81767795100792530199e-04,
-+ 3.77684248501704115941e-04,
-+ 3.73424524450519546449e-04,
-+ 3.68991619691936916479e-04,
-+ 3.64388607453439920380e-04,
-+ 3.59618635501351871335e-04,
-+ 3.54684924166520241986e-04,
-+ 3.49590764340821041987e-04,
-+ 3.44339515445693598438e-04,
-+ 3.38934603373838513624e-04,
-+ 3.33379518405329915154e-04,
-+ 3.27677813099311473176e-04,
-+ 3.21833100162536569697e-04,
-+ 3.15849050295926377270e-04,
-+ 3.09729390020389752213e-04,
-+ 3.03477899483178554640e-04,
-+ 2.97098410245953236785e-04,
-+ 2.90594803055835239260e-04,
-+ 2.83971005600701430303e-04,
-+ 2.77230990249963083708e-04,
-+ 2.70378771782053405493e-04,
-+ 2.63418405099919501929e-04,
-+ 2.56353982935728650153e-04,
-+ 2.49189633546102382294e-04,
-+ 2.41929518399063687127e-04,
-+ 2.34577829853976687832e-04,
-+ 2.27138788835770893786e-04,
-+ 2.19616642504623810770e-04,
-+ 2.12015661922379533436e-04,
-+ 2.04340139716986798554e-04,
-+ 1.96594387746109900425e-04,
-+ 1.88782734761210285561e-04,
-+ 1.80909524073276134666e-04,
-+ 1.72979111221486337802e-04,
-+ 1.64995861645938764022e-04,
-+ 1.56964148365684399598e-04,
-+ 1.48888349663314485498e-04,
-+ 1.40772846777168322190e-04,
-+ 1.32622021602487612625e-04,
-+ 1.24440254402532454779e-04,
-+ 1.16231921530969174315e-04,
-+ 1.08001393166544268506e-04,
-+ 9.97530310612700842022e-05,
-+ 9.14911863031805467012e-05,
-+ 8.32201970948494534723e-05,
-+ 7.49443865486733659534e-05,
-+ 6.66680605000458429647e-05,
-+ 5.83955053395394390486e-05,
-+ 5.01309858650572228258e-05,
-+ 4.18787431550387222699e-05,
-+ 3.36429924637896997147e-05,
-+ 2.54279211398450498503e-05,
-+ 1.72376865684373168860e-05,
-+ 9.07641413898224680109e-06,
-+ 9.48195238618905657624e-07,
-+-7.14291472735570851774e-06,
-+-1.51928982871868691030e-05,
-+-2.31977778255819772578e-05,
-+-3.11536174769894797995e-05,
-+-3.90565249883959565128e-05,
-+-4.69026535507838503733e-05,
-+-5.46882035983796400101e-05,
-+-6.24094245749816497679e-05,
-+-7.00626166665431140837e-05,
-+-7.76441324992083051551e-05,
-+-8.51503788021582837904e-05,
-+-9.25778180344744060573e-05,
-+-9.99229699753842974660e-05,
-+-1.07182413277143970569e-04,
-+-1.14352786980001299723e-04,
-+-1.21430791988570707662e-04,
-+-1.28413192508978856029e-04,
-+-1.35296817446291592216e-04,
-+-1.42078561761593261028e-04,
-+-1.48755387788243690359e-04,
-+-1.55324326506731677858e-04,
-+-1.61782478777755279195e-04,
-+-1.68127016532938305905e-04,
-+-1.74355183922886855866e-04,
-+-1.80464298422043775347e-04,
-+-1.86451751890066126042e-04,
-+-1.92315011589316994193e-04,
-+-1.98051621158110087483e-04,
-+-2.03659201539461954481e-04,
-+-2.09135451865034778822e-04,
-+-2.14478150293975007752e-04,
-+-2.19685154806484236054e-04,
-+-2.24754403951855035284e-04,
-+-2.29683917550825442361e-04,
-+-2.34471797352042666748e-04,
-+-2.39116227642561802579e-04,
-+-2.43615475812239792083e-04,
-+-2.47967892871911476695e-04,
-+-2.52171913925349226639e-04,
-+-2.56226058594915238626e-04,
-+-2.60128931400936235906e-04,
-+-2.63879222094777748236e-04,
-+-2.67475705945676030771e-04,
-+-2.70917243981398745550e-04,
-+-2.74202783182808239749e-04,
-+-2.77331356632420174182e-04,
-+-2.80302083617130378106e-04,
-+-2.83114169685247407150e-04,
-+-2.85766906657990832612e-04,
-+-2.88259672595703273380e-04,
-+-2.90591931718978374165e-04,
-+-2.92763234284938700901e-04,
-+-2.94773216418979381367e-04,
-+-2.96621599902229947550e-04,
-+-2.98308191915087070681e-04,
-+-2.99832884737117537181e-04,
-+-3.01195655403731915589e-04,
-+-3.02396565319990604306e-04,
-+-3.03435759831933548735e-04,
-+-3.04313467755884059594e-04,
-+-3.05030000866147890746e-04,
-+-3.05585753341585221812e-04,
-+-3.05981201171519584091e-04,
-+-3.06216901521509134165e-04,
-+-3.06293492059487573384e-04,
-+-3.06211690242816218007e-04,
-+-3.05972292566802656771e-04,
-+-3.05576173775270109809e-04,
-+-3.05024286033762090722e-04,
-+-3.04317658065994024481e-04,
-+-3.03457394254183585730e-04,
-+-3.02444673703895100005e-04,
-+-3.01280749274062569550e-04,
-+-2.99966946572861902810e-04,
-+-2.98504662920123960135e-04,
-+-2.96895366276984148252e-04,
-+-2.95140594143503544149e-04,
-+-2.93241952424972839204e-04,
-+-2.91201114267648395687e-04,
-+-2.89019818864694969657e-04,
-+-2.86699870233074851408e-04,
-+-2.84243135962187955679e-04,
-+-2.81651545935045764021e-04,
-+-2.78927091022785277833e-04,
-+-2.76071821753329086409e-04,
-+-2.73087846955029312987e-04,
-+-2.69977332376105608885e-04,
-+-2.66742499280753122669e-04,
-+-2.63385623022735818576e-04,
-+-2.59909031597333319095e-04,
-+-2.56315104172533353259e-04,
-+-2.52606269600299821604e-04,
-+-2.48785004908817504021e-04,
-+-2.44853833776614545140e-04,
-+-2.40815324989414303834e-04,
-+-2.36672090880646487053e-04,
-+-2.32426785756489917047e-04,
-+-2.28082104306388832628e-04,
-+-2.23640779999901656528e-04,
-+-2.19105583470820145051e-04,
-+-2.14479320889489653368e-04,
-+-2.09764832324187768019e-04,
-+-2.04964990092551698191e-04,
-+-2.00082697103893516945e-04,
-+-1.95120885193399471553e-04,
-+-1.90082513449059745374e-04,
-+-1.84970566532296863812e-04,
-+-1.79788052993171517313e-04,
-+-1.74538003581126675585e-04,
-+-1.69223469552129467206e-04,
-+-1.63847520973145840571e-04,
-+-1.58413245024881097671e-04,
-+-1.52923744303641519389e-04,
-+-1.47382135123237027838e-04,
-+-1.41791545817854290970e-04,
-+-1.36155115046730930926e-04,
-+-1.30475990101566258683e-04,
-+-1.24757325217510580588e-04,
-+-1.19002279888661194524e-04,
-+-1.13214017188868415280e-04,
-+-1.07395702098746854882e-04,
-+-1.01550499839754549119e-04,
-+-9.56815742161736681884e-05,
-+-8.97920859658150297307e-05,
-+-8.38851911202858713332e-05,
-+-7.79640393756770905178e-05,
-+-7.20317724744152869908e-05,
-+-6.60915225991128571850e-05,
-+-6.01464107792394842228e-05,
-+-5.41995453113256703899e-05,
-+-4.82540201935260191645e-05,
-+-4.23129135752554075560e-05,
-+-3.63792862227040107682e-05,
-+-3.04561800008946262114e-05,
-+-2.45466163730380569304e-05,
-+-1.86535949179281487331e-05,
-+-1.27800918660038342780e-05,
-+-6.92905865481930068159e-06,
-+-1.10342050454853296994e-06,
-+ 4.69392498575835322107e-06,
-+ 1.04601092206202085443e-05,
-+ 1.61922939685309686330e-05,
-+ 2.18876726998310187900e-05,
-+ 2.75434719013333585431e-05,
-+ 3.31569523672128619587e-05,
-+ 3.87254104655551669952e-05,
-+ 4.42461793799820151014e-05,
-+ 4.97166303258813707623e-05,
-+ 5.51341737406907975117e-05,
-+ 6.04962604476992873623e-05,
-+ 6.58003827929482047439e-05,
-+ 7.10440757547033927043e-05,
-+ 7.62249180250887078177e-05,
-+ 8.13405330633888576592e-05,
-+ 8.63885901206668644324e-05,
-+ 9.13668052352641340674e-05,
-+ 9.62729421987680101039e-05,
-+ 1.01104813492143344174e-04,
-+ 1.05860281191625613681e-04,
-+ 1.10537257844079884095e-04,
-+ 1.15133707311478630493e-04,
-+ 1.19647645584220456037e-04,
-+ 1.24077141563022885209e-04,
-+ 1.28420317809117991549e-04,
-+ 1.32675351262483061940e-04,
-+ 1.36840473927932757339e-04,
-+ 1.40913973528841685815e-04,
-+ 1.44894194128284206635e-04,
-+ 1.48779536717473748154e-04,
-+ 1.52568459771325131390e-04,
-+ 1.56259479770980684197e-04,
-+ 1.59851171693240460712e-04,
-+ 1.63342169466755023468e-04,
-+ 1.66731166394932026195e-04,
-+ 1.70016915545461323039e-04,
-+ 1.73198230106457167626e-04,
-+ 1.76273983709174160992e-04,
-+ 1.79243110717270954634e-04,
-+ 1.82104606482673126973e-04,
-+ 1.84857527568029053264e-04,
-+ 1.87500991935841927272e-04,
-+ 1.90034179104279262861e-04,
-+ 1.92456330269822776862e-04,
-+ 1.94766748396794513220e-04,
-+ 1.96964798273908584360e-04,
-+ 1.99049906537954266611e-04,
-+ 2.01021561664790589848e-04,
-+ 2.02879313927801336551e-04,
-+ 2.04622775323984274973e-04,
-+ 2.06251619467897348657e-04,
-+ 2.07765581453663538119e-04,
-+ 2.09164457685255029832e-04,
-+ 2.10448105675328230946e-04,
-+ 2.11616443812851108683e-04,
-+ 2.12669451099812634523e-04,
-+ 2.13607166857295168675e-04,
-+ 2.14429690401230681543e-04,
-+ 2.15137180688158456340e-04,
-+ 2.15729855931309154023e-04,
-+ 2.16207993187385875055e-04,
-+ 2.16571927914393662145e-04,
-+ 2.16822053500895369719e-04,
-+ 2.16958820767090094714e-04,
-+ 2.16982737438119145310e-04,
-+ 2.16894367590011544417e-04,
-+ 2.16694331068704375103e-04,
-+ 2.16383302882573573273e-04,
-+ 2.15962012568937173273e-04,
-+ 2.15431243534988864970e-04,
-+ 2.14791832373643112571e-04,
-+ 2.14044668154778804569e-04,
-+ 2.13190691692375993652e-04,
-+ 2.12230894788062836786e-04,
-+ 2.11166319451582256295e-04,
-+ 2.09998057098713050445e-04,
-+ 2.08727247727178962314e-04,
-+ 2.07355079071098812689e-04,
-+ 2.05882785734526249080e-04,
-+ 2.04311648304645308329e-04,
-+ 2.02642992445200404404e-04,
-+ 2.00878187970725529407e-04,
-+ 1.99018647902181230460e-04,
-+ 1.97065827504565370225e-04,
-+ 1.95021223307131414326e-04,
-+ 1.92886372106789062567e-04,
-+ 1.90662849955323298245e-04,
-+ 1.88352271131035512233e-04,
-+ 1.85956287095443860338e-04,
-+ 1.83476585435658924713e-04,
-+ 1.80914888793067202884e-04,
-+ 1.78272953778979965879e-04,
-+ 1.75552569877858596036e-04,
-+ 1.72755558338776385452e-04,
-+ 1.69883771055775014205e-04,
-+ 1.66939089437739287235e-04,
-+ 1.63923423268464666259e-04,
-+ 1.60838709557554023410e-04,
-+ 1.57686911382826176059e-04,
-+ 1.54470016724860052760e-04,
-+ 1.51190037294350436165e-04,
-+ 1.47849007352938516474e-04,
-+ 1.44448982528168725411e-04,
-+ 1.40992038623224621736e-04,
-+ 1.37480270422103131650e-04,
-+ 1.33915790490908510934e-04,
-+ 1.30300727975883427756e-04,
-+ 1.26637227398848910710e-04,
-+ 1.22927447450726668463e-04,
-+ 1.19173559783751544113e-04,
-+ 1.15377747803056433318e-04,
-+ 1.11542205458248867627e-04,
-+ 1.07669136035655032668e-04,
-+ 1.03760750951825973841e-04,
-+ 9.98192685489614168559e-05,
-+ 9.58469128929003691322e-05,
-+ 9.18459125742597699837e-05,
-+ 8.78184995133790156831e-05,
-+ 8.37669077696560454268e-05,
-+ 7.96933723559265666005e-05,
-+ 7.56001280584259725565e-05,
-+ 7.14894082630083944159e-05,
-+ 6.73634437881340204573e-05,
-+ 6.32244617252882825861e-05,
-+ 5.90746842873461779663e-05,
-+ 5.49163276654787824009e-05,
-+ 5.07516008951872145687e-05,
-+ 4.65827047319741682405e-05,
-+ 4.24118305372229097931e-05,
-+ 3.82411591748462793188e-05,
-+ 3.40728599191875283292e-05,
-+ 2.99090893747361998109e-05,
-+ 2.57519904081409751117e-05,
-+ 2.16036910930649429937e-05,
-+ 1.74663036683280136440e-05,
-+ 1.33419235098453462380e-05,
-+ 9.23262811685928130563e-06,
-+ 5.14047611288089638620e-06,
-+ 1.06750626183722631479e-06,
-+-2.98426350016022994691e-06,
-+-7.01283701696614740918e-06,
-+-1.10162408480615069031e-05,
-+-1.49925251873214083662e-05,
-+-1.89397647644820879499e-05,
-+-2.28560597288927702187e-05,
-+-2.67395365152196406880e-05,
-+-3.05883486907130078530e-05,
-+-3.44006777836602540958e-05,
-+-3.81747340927275210175e-05,
-+-4.19087574768357373853e-05,
-+-4.56010181252311126428e-05,
-+-4.92498173074900873615e-05,
-+-5.28534881031252298821e-05,
-+-5.64103961105393312886e-05,
-+-5.99189401350206662131e-05,
-+-6.33775528555675324869e-05,
-+-6.67847014702764807609e-05,
-+-7.01388883200425772204e-05,
-+-7.34386514903965126506e-05,
-+-7.66825653912348156535e-05,
-+-7.98692413142890845568e-05,
-+-8.29973279680875074835e-05,
-+-8.60655119903289004060e-05,
-+-8.90725184374467171371e-05,
-+-9.20171112512619700620e-05,
-+-9.48980937025603441979e-05,
-+-9.77143088115187759442e-05,
-+-1.00464639744859388255e-04,
-+-1.03148010189625194497e-04,
-+-1.05763384703536859194e-04,
-+-1.08309769041847384465e-04,
-+-1.10786210460631133696e-04,
-+-1.13191797996501934058e-04,
-+-1.15525662722708351705e-04,
-+-1.17786977981613268270e-04,
-+-1.19974959593534190815e-04,
-+-1.22088866041986484267e-04,
-+-1.24127998635342794240e-04,
-+-1.26091701644931496271e-04,
-+-1.27979362419654144924e-04,
-+-1.29790411477168272404e-04,
-+-1.31524322571708625470e-04,
-+-1.33180612738637493483e-04,
-+-1.34758842315833984394e-04,
-+-1.36258614942015598460e-04,
-+-1.37679577532133398362e-04,
-+-1.39021420229953017716e-04,
-+-1.40283876337992947491e-04,
-+-1.41466722224963323403e-04,
-+-1.42569777210869091466e-04,
-+-1.43592903429972301504e-04,
-+-1.44536005671797138268e-04,
-+-1.45399031200369268681e-04,
-+-1.46181969551921958151e-04,
-+-1.46884852311272975705e-04,
-+-1.47507752867118645777e-04,
-+-1.48050786146473433835e-04,
-+-1.48514108328523704045e-04,
-+-1.48897916538148837292e-04,
-+-1.49202448519377127998e-04,
-+-1.49427982289073205905e-04,
-+-1.49574835771129388594e-04,
-+-1.49643366411473540236e-04,
-+-1.49633970774193841890e-04,
-+-1.49547084119100584043e-04,
-+-1.49383179961047775483e-04,
-+-1.49142769611348204603e-04,
-+-1.48826401701621687922e-04,
-+-1.48434661690425537565e-04,
-+-1.47968171353023028678e-04,
-+-1.47427588254649171362e-04,
-+-1.46813605207650059491e-04,
-+-1.46126949712865211208e-04,
-+-1.45368383385638768636e-04,
-+-1.44538701366849164877e-04,
-+-1.43638731719351636813e-04,
-+-1.42669334810229859632e-04,
-+-1.41631402679272359055e-04,
-+-1.40525858394075560832e-04,
-+-1.39353655392192250567e-04,
-+-1.38115776810750613777e-04,
-+-1.36813234803965936073e-04,
-+-1.35447069848972789655e-04,
-+-1.34018350040412986173e-04,
-+-1.32528170374222436503e-04,
-+-1.30977652021046207277e-04,
-+-1.29367941589733019114e-04,
-+-1.27700210381360810966e-04,
-+-1.25975653634228948810e-04,
-+-1.24195489760284478228e-04,
-+-1.22360959573421820921e-04,
-+-1.20473325510130619526e-04,
-+-1.18533870842929396042e-04,
-+-1.16543898887054415644e-04,
-+-1.14504732200871589131e-04,
-+-1.12417711780453782031e-04,
-+-1.10284196248804102999e-04,
-+-1.08105561040170155152e-04,
-+-1.05883197579935365976e-04,
-+-1.03618512460517512327e-04,
-+-1.01312926613771452371e-04,
-+-9.89678744803231588006e-05,
-+-9.65848031763287176834e-05,
-+-9.41651716580904694746e-05,
-+-9.17104498849975562341e-05,
-+-8.92221179812627604834e-05,
-+-8.67016653968825132086e-05,
-+-8.41505900682881210822e-05,
-+-8.15703975791493105397e-05,
-+-7.89626003217504745472e-05,
-+-7.63287166594104368560e-05,
-+-7.36702700903663770804e-05,
-+-7.09887884135877711683e-05,
-+-6.82858028969257033506e-05,
-+-6.55628474480432515319e-05,
-+-6.28214577885690295556e-05,
-+-6.00631706318681429140e-05,
-+-5.72895228648756703262e-05,
-+-5.45020507343892520119e-05,
-+-5.17022890382489225453e-05,
-+-4.88917703218011553620e-05,
-+-4.60720240800406300981e-05,
-+-4.32445759658305523042e-05,
-+-4.04109470046085756875e-05,
-+-3.75726528159311059401e-05,
-+-3.47312028422512456081e-05,
-+-3.18880995853173453093e-05,
-+-2.90448378505280945666e-05,
-+-2.62029039996194488388e-05,
-+-2.33637752120533564114e-05,
-+-2.05289187554215721418e-05,
-+-1.76997912652334544591e-05,
-+-1.48778380343994300278e-05,
-+-1.20644923127652564947e-05,
-+-9.26117461698225729130e-06,
-+-6.46929205104167329041e-06,
-+-3.69023763779291335841e-06,
-+-9.25389661709245930119e-07,
-+ 1.82388897678174475935e-06,
-+ 4.55625139514285705999e-06,
-+ 7.27036735044587330100e-06,
-+ 9.96492384873170706833e-06,
-+ 1.26386257417392112551e-05,
-+ 1.52901963107384078629e-05,
-+ 1.79183778372582360025e-05,
-+ 2.05219321604610694255e-05,
-+ 2.30996412209251530034e-05,
-+ 2.56503075906517305266e-05,
-+ 2.81727549890619002719e-05,
-+ 3.06658287848128515438e-05,
-+ 3.31283964832040277388e-05,
-+ 3.55593481990333369126e-05,
-+ 3.79575971147140200598e-05,
-+ 4.03220799234941648030e-05,
-+ 4.26517572576077638367e-05,
-+ 4.49456141012434531802e-05,
-+ 4.72026601881682524812e-05,
-+ 4.94219303839001843038e-05,
-+ 5.16024850522865696258e-05,
-+ 5.37434104064078973302e-05,
-+ 5.58438188436953509251e-05,
-+ 5.79028492651570688234e-05,
-+ 5.99196673786599580684e-05,
-+ 6.18934659861721192748e-05,
-+ 6.38234652549182388762e-05,
-+ 6.57089129723729151135e-05,
-+ 6.75490847850720971908e-05,
-+ 6.93432844211934012709e-05,
-+ 7.10908438968675459669e-05,
-+ 7.27911237062255626245e-05,
-+ 7.44435129951590121491e-05,
-+ 7.60474297187843856823e-05,
-+ 7.76023207826402985129e-05,
-+ 7.91076621676173416964e-05,
-+ 8.05629590386577253093e-05,
-+ 8.19677458372435649003e-05,
-+ 8.33215863577352583002e-05,
-+ 8.46240738076027652209e-05,
-+ 8.58748308515986194002e-05,
-+ 8.70735096399619166833e-05,
-+ 8.82197918207153089585e-05,
-+ 8.93133885361372406803e-05,
-+ 9.03540404035136604684e-05,
-+ 9.13415174802592236660e-05,
-+ 9.22756192135239819386e-05,
-+ 9.31561743743901176599e-05,
-+ 9.39830409767967284683e-05,
-+ 9.47561061813165863036e-05,
-+ 9.54752861839191087042e-05,
-+ 9.61405260898756268200e-05,
-+ 9.67517997729504849579e-05,
-+ 9.73091097200465650948e-05,
-+ 9.78124868614685578656e-05,
-+ 9.82619903869737118746e-05,
-+ 9.86577075477993088205e-05,
-+ 9.89997534448505824923e-05,
-+ 9.92882708032377870244e-05,
-+ 9.95234297333714079334e-05,
-+ 9.97054274788150226867e-05,
-+ 9.98344881511112553288e-05,
-+ 9.99108624517949686465e-05,
-+ 9.99348273818228400017e-05,
-+ 9.99066859386446587009e-05,
-+ 9.98267668011501124433e-05,
-+ 9.96954240027345068914e-05,
-+ 9.95130365927253445271e-05,
-+ 9.92800082864197933671e-05,
-+ 9.89967671039888494865e-05,
-+ 9.86637649985053661076e-05,
-+ 9.82814774733607114231e-05,
-+ 9.78504031893375142773e-05,
-+ 9.73710635616093991710e-05,
-+ 9.68440023469432334675e-05,
-+ 9.62697852213858742314e-05,
-+ 9.56489993487133770321e-05,
-+ 9.49822529399337749968e-05,
-+ 9.42701748041285732824e-05,
-+ 9.35134138909305995691e-05,
-+ 9.27126388249273401896e-05,
-+ 9.18685374322917528561e-05,
-+ 9.09818162599413001162e-05,
-+ 9.00532000875254733281e-05,
-+ 8.90834314325462917842e-05,
-+ 8.80732700489246370709e-05,
-+ 8.70234924193121910140e-05,
-+ 8.59348912414666484460e-05,
-+ 8.48082749089950011304e-05,
-+ 8.36444669867888660050e-05,
-+ 8.24443056814470995493e-05,
-+ 8.12086433070261377561e-05,
-+ 7.99383457464084788138e-05,
-+ 7.86342919086182418845e-05,
-+ 7.72973731824044141140e-05,
-+ 7.59284928863964466827e-05,
-+ 7.45285657161542757073e-05,
-+ 7.30985171884366598380e-05,
-+ 7.16392830829906657707e-05,
-+ 7.01518088821840928807e-05,
-+ 6.86370492088033058069e-05,
-+ 6.70959672623157418921e-05,
-+ 6.55295342539230995203e-05,
-+ 6.39387288407061954269e-05,
-+ 6.23245365591873072856e-05,
-+ 6.06879492586022889272e-05,
-+ 5.90299645341966667546e-05,
-+ 5.73515851608610711097e-05,
-+ 5.56538185273922726215e-05,
-+ 5.39376760716902238437e-05,
-+ 5.22041727171985520334e-05,
-+ 5.04543263108674547410e-05,
-+ 4.86891570629490461476e-05,
-+ 4.69096869889039770705e-05,
-+ 4.51169393537250871997e-05,
-+ 4.33119381189441731090e-05,
-+ 4.14957073926132242688e-05,
-+ 3.96692708825496971343e-05,
-+ 3.78336513531005402778e-05,
-+ 3.59898700857156045134e-05,
-+ 3.41389463435847715115e-05,
-+ 3.22818968406223129981e-05,
-+ 3.04197352150379130334e-05,
-+ 2.85534715077610400016e-05,
-+ 2.66841116459819329256e-05,
-+ 2.48126569320371454517e-05,
-+ 2.29401035378939945552e-05,
-+ 2.10674420054833346785e-05,
-+ 1.91956567530948109463e-05,
-+ 1.73257255880832701685e-05,
-+ 1.54586192260933851384e-05,
-+ 1.35953008170508304306e-05,
-+ 1.17367254781075038266e-05,
-+ 9.88383983376396622401e-06,
-+ 8.03758156337068200962e-06,
-+ 6.19887895622111748366e-06,
-+ 4.36865047440966400299e-06,
-+ 2.54780432366209949829e-06,
-+ 7.37238032308926373124e-07,
-+-1.06216196140181903275e-06,
-+-2.84952071350109670505e-06,
-+-4.62397516982719811819e-06,
-+-6.38467455271440543276e-06,
-+-8.13078073870770317037e-06,
-+-9.86146862713564825958e-06,
-+-1.15759264994108745933e-05,
-+-1.32733563689023272133e-05,
-+-1.49529743212684799525e-05,
-+-1.66140108451148118640e-05,
-+-1.82557111528464673220e-05,
-+-1.98773354916211406247e-05,
-+-2.14781594442844695424e-05,
-+-2.30574742201769104257e-05,
-+-2.46145869357362549322e-05,
-+-2.61488208847895399478e-05,
-+-2.76595157984633117411e-05,
-+-2.91460280946186709296e-05,
-+-3.06077311167595817127e-05,
-+-3.20440153623401097595e-05,
-+-3.34542887004032530218e-05,
-+-3.48379765785163355760e-05,
-+-3.61945222189482393904e-05,
-+-3.75233868040389463073e-05,
-+-3.88240496507459911801e-05,
-+-4.00960083743247562354e-05,
-+-4.13387790411311751020e-05,
-+-4.25518963105175459442e-05,
-+-4.37349135658282231866e-05,
-+-4.48874030344820757594e-05,
-+-4.60089558971416373264e-05,
-+-4.70991823859845203494e-05,
-+-4.81577118720843649186e-05,
-+-4.91841929419274583989e-05,
-+-5.01782934630889257735e-05,
-+-5.11397006390924718810e-05,
-+-5.20681210535034743074e-05,
-+-5.29632807032923507936e-05,
-+-5.38249250215106612256e-05,
-+-5.46528188893461618547e-05,
-+-5.54467466376069967565e-05,
-+-5.62065120377057097340e-05,
-+-5.69319382822057842072e-05,
-+-5.76228679550160513534e-05,
-+-5.82791629913088267694e-05,
-+-5.89007046272428875285e-05,
-+-5.94873933395923440545e-05,
-+-6.00391487753712058541e-05,
-+-6.05559096715516123285e-05,
-+-6.10376337649892107507e-05,
-+-6.14842976926593108057e-05,
-+-6.18958968823238233226e-05,
-+-6.22724454337409338497e-05,
-+-6.26139759905511322129e-05,
-+-6.29205396029612726468e-05,
-+-6.31922055813587270996e-05,
-+-6.34290613409973911456e-05,
-+-6.36312122378911084342e-05,
-+-6.37987813960626292450e-05,
-+-6.39319095262928170339e-05,
-+-6.40307547365266211065e-05,
-+-6.40954923340890131856e-05,
-+-6.41263146198697370432e-05,
-+-6.41234306746411955895e-05,
-+-6.40870661376762528177e-05,
-+-6.40174629778308577552e-05,
-+-6.39148792572699500983e-05,
-+-6.37795888880064606964e-05,
-+-6.36118813814352140369e-05,
-+-6.34120615910403414867e-05,
-+-6.31804494484613599157e-05,
-+-6.29173796931019454690e-05,
-+-6.26232015954722085176e-05,
-+-6.22982786744524704445e-05,
-+-6.19429884086736173409e-05,
-+-6.15577219422070999163e-05,
-+-6.11428837847619450737e-05,
-+-6.06988915065878725514e-05,
-+-6.02261754282833389803e-05,
-+-5.97251783057105978649e-05,
-+-5.91963550102224186499e-05,
-+-5.86401722044022619997e-05,
-+-5.80571080135254614690e-05,
-+-5.74476516929463732093e-05,
-+-5.68123032916220525477e-05,
-+-5.61515733119774190850e-05,
-+-5.54659823663211952113e-05,
-+-5.47560608300273307289e-05,
-+-5.40223484916846797155e-05,
-+-5.32653942004291476500e-05,
-+-5.24857555106721337967e-05,
-+-5.16839983244288007024e-05,
-+-5.08606965314631670927e-05,
-+-5.00164316474561513313e-05,
-+-4.91517924504131009438e-05,
-+-4.82673746155130051357e-05,
-+-4.73637803486131881954e-05,
-+-4.64416180186217908985e-05,
-+-4.55015017889379735677e-05,
-+-4.45440512481755157082e-05,
-+-4.35698910403685871315e-05,
-+-4.25796504948757788397e-05,
-+-4.15739632561744871879e-05,
-+-4.05534669137558035886e-05,
-+-3.95188026323245935744e-05,
-+-3.84706147824963234157e-05,
-+-3.74095505721943694328e-05,
-+-3.63362596789495190404e-05,
-+-3.52513938832865674302e-05,
-+-3.41556067034013181253e-05,
-+-3.30495530313091846969e-05,
-+-3.19338887706706398895e-05,
-+-3.08092704764648499791e-05,
-+-2.96763549967042926164e-05,
-+-2.85357991163705457791e-05,
-+-2.73882592037593264182e-05,
-+-2.62343908594002619289e-05,
-+-2.50748485677371487745e-05,
-+-2.39102853517339171191e-05,
-+-2.27413524305865331410e-05,
-+-2.15686988806957918462e-05,
-+-2.03929713000709965051e-05,
-+-1.92148134763324269733e-05,
-+-1.80348660584579070906e-05,
-+-1.68537662324394557363e-05,
-+-1.56721474009943186837e-05,
-+-1.44906388674901791041e-05,
-+-1.33098655242168735925e-05,
-+-1.21304475451532646111e-05,
-+-1.09530000833746117339e-05,
-+-9.77813297322283117563e-06,
-+-8.60645043737828595960e-06,
-+-7.43855079896758336784e-06,
-+-6.27502619881871961423e-06,
-+-5.11646231799598331854e-06,
-+-3.96343810572348692644e-06,
-+-2.81652551282231002175e-06,
-+-1.67628923075757107106e-06,
-+-5.43286436407872494914e-07,
-+ 5.81933457334323180159e-07,
-+ 1.69882904504591760570e-06,
-+ 2.80686716623920578712e-06,
-+ 3.90552313671397189482e-06,
-+ 4.99428097372263609408e-06,
-+ 6.07263361485467176461e-06,
-+ 7.14008313057028191911e-06,
-+ 8.19614093029787374922e-06,
-+ 9.24032796203801469698e-06,
-+ 1.02721749054007427328e-05,
-+ 1.12912223580112092028e-05,
-+ 1.22970210152323833412e-05,
-+ 1.32891318431440794091e-05,
-+ 1.42671262447347562611e-05,
-+ 1.52305862192577593330e-05,
-+ 1.61791045147036835158e-05,
-+ 1.71122847733627428900e-05,
-+ 1.80297416704377348772e-05,
-+ 1.89311010456723673200e-05,
-+ 1.98160000279815890877e-05,
-+ 2.06840871530521841883e-05,
-+ 2.15350224739038173570e-05,
-+ 2.23684776643877086669e-05,
-+ 2.31841361156243059649e-05,
-+ 2.39816930253700516258e-05,
-+ 2.47608554803058473310e-05,
-+ 2.55213425312606982502e-05,
-+ 2.62628852613713497754e-05,
-+ 2.69852268471835885421e-05,
-+ 2.76881226127196124491e-05,
-+ 2.83713400765207057253e-05,
-+ 2.90346589916937132319e-05,
-+ 2.96778713789779565021e-05,
-+ 3.03007815528719345064e-05,
-+ 3.09032061408479746811e-05,
-+ 3.14849740956869842052e-05,
-+ 3.20459267009823244011e-05,
-+ 3.25859175698492306789e-05,
-+ 3.31048126368919349237e-05,
-+ 3.36024901434722378835e-05,
-+ 3.40788406163417342690e-05,
-+ 3.45337668396904437789e-05,
-+ 3.49671838206697444440e-05,
-+ 3.53790187484598781464e-05,
-+ 3.57692109469451898635e-05,
-+ 3.61377118210646532115e-05,
-+ 3.64844847969168087159e-05,
-+ 3.68095052556900961707e-05,
-+ 3.71127604615011769638e-05,
-+ 3.73942494832178994610e-05,
-+ 3.76539831103605689643e-05,
-+ 3.78919837631567116656e-05,
-+ 3.81082853968511798366e-05,
-+ 3.83029334003578804196e-05,
-+ 3.84759844893473848450e-05,
-+ 3.86275065938727009992e-05,
-+ 3.87575787406301688963e-05,
-+ 3.88662909299569613790e-05,
-+ 3.89537440076727901374e-05,
-+ 3.90200495318706458425e-05,
-+ 3.90653296347647622198e-05,
-+ 3.90897168797087779285e-05,
-+ 3.90933541134949965766e-05,
-+ 3.90763943140510594358e-05,
-+ 3.90390004336481431357e-05,
-+ 3.89813452377418961383e-05,
-+ 3.89036111395635601957e-05,
-+ 3.88059900305833037435e-05,
-+ 3.86886831069694882507e-05,
-+ 3.85519006921667821723e-05,
-+ 3.83958620557194456086e-05,
-+ 3.82207952284667728518e-05,
-+ 3.80269368142381611136e-05,
-+ 3.78145317981768458210e-05,
-+ 3.75838333518232266695e-05,
-+ 3.73351026350875769854e-05,
-+ 3.70686085952445174832e-05,
-+ 3.67846277630824283257e-05,
-+ 3.64834440463398959695e-05,
-+ 3.61653485205640830985e-05,
-+ 3.58306392175243310777e-05,
-+ 3.54796209113175163119e-05,
-+ 3.51126049022988697399e-05,
-+ 3.47299087989734188192e-05,
-+ 3.43318562979863894208e-05,
-+ 3.39187769623452468762e-05,
-+ 3.34910059980102160423e-05,
-+ 3.30488840289914551757e-05,
-+ 3.25927568710847293757e-05,
-+ 3.21229753043848019326e-05,
-+ 3.16398948447075694127e-05,
-+ 3.11438755140624220878e-05,
-+ 3.06352816103032127987e-05,
-+ 3.01144814760946232977e-05,
-+ 2.95818472673267157311e-05,
-+ 2.90377547211135299580e-05,
-+ 2.84825829235031577303e-05,
-+ 2.79167140770347614077e-05,
-+ 2.73405332682701918481e-05,
-+ 2.67544282354346262150e-05,
-+ 2.61587891362891606750e-05,
-+ 2.55540083163661297088e-05,
-+ 2.49404800776966532080e-05,
-+ 2.43186004481496464925e-05,
-+ 2.36887669515123128053e-05,
-+ 2.30513783784305334912e-05,
-+ 2.24068345583368003357e-05,
-+ 2.17555361324791958683e-05,
-+ 2.10978843281734282551e-05,
-+ 2.04342807343983282075e-05,
-+ 1.97651270788443597626e-05,
-+ 1.90908250065320015982e-05,
-+ 1.84117758601161542057e-05,
-+ 1.77283804619801040644e-05,
-+ 1.70410388982337398535e-05,
-+ 1.63501503047186065565e-05,
-+ 1.56561126551311619623e-05,
-+ 1.49593225513600180476e-05,
-+ 1.42601750161419401356e-05,
-+ 1.35590632881392743862e-05,
-+ 1.28563786195291532370e-05,
-+ 1.21525100762025804540e-05,
-+ 1.14478443406703827613e-05,
-+ 1.07427655177589017509e-05,
-+ 1.00376549431903564451e-05,
-+ 9.33289099512935430329e-06,
-+ 8.62884890878591384318e-06,
-+ 7.92590059414905157801e-06,
-+ 7.22441445693406108369e-06,
-+ 6.52475522282227181239e-06,
-+ 5.82728376506354903543e-06,
-+ 5.13235693551778566856e-06,
-+ 4.44032739920081165146e-06,
-+ 3.75154347240349402752e-06,
-+ 3.06634896445295587704e-06,
-+ 2.38508302317038128695e-06,
-+ 1.70807998408878326806e-06,
-+ 1.03566922349157826689e-06,
-+ 3.68175015318385312927e-07,
-+-2.94083608003316195796e-07,
-+-9.50792990756428532175e-07,
-+-1.60164498510903015186e-06,
-+-2.24633707822957432882e-06,
-+-2.88457251529725585548e-06,
-+-3.51606041836507742817e-06,
-+-4.14051590104719538038e-06,
-+-4.75766017899043685381e-06,
-+-5.36722067610390392149e-06,
-+-5.96893112651196722918e-06,
-+-6.56253167221256118968e-06,
-+-7.14776895641407462845e-06,
-+-7.72439621252695393942e-06,
-+-8.29217334879925126829e-06,
-+-8.85086702857723481774e-06,
-+-9.40025074617520820593e-06,
-+-9.94010489835155732234e-06,
-+-1.04702168513777000056e-05,
-+-1.09903810036992033189e-05,
-+-1.15003988441811452764e-05,
-+-1.20000790059446446682e-05,
-+-1.24892373157938542529e-05,
-+-1.29676968392356399312e-05,
-+-1.34352879211056542826e-05,
-+-1.38918482218078280619e-05,
-+-1.43372227491767596487e-05,
-+-1.47712638859842104608e-05,
-+-1.51938314131016376365e-05,
-+-1.56047925283423453849e-05,
-+-1.60040218609994824601e-05,
-+-1.63914014821137958761e-05,
-+-1.67668209104843766012e-05,
-+-1.71301771144641440945e-05,
-+-1.74813745095637493407e-05,
-+-1.78203249518961361498e-05,
-+-1.81469477275017576168e-05,
-+-1.84611695375891659296e-05,
-+-1.87629244797279366534e-05,
-+-1.90521540250400636825e-05,
-+-1.93288069914307297748e-05,
-+-1.95928395129016073037e-05,
-+-1.98442150049985344194e-05,
-+-2.00829041264385711751e-05,
-+-2.03088847369703611226e-05,
-+-2.05221418515166891200e-05,
-+-2.07226675906578703594e-05,
-+-2.09104611275098419107e-05,
-+-2.10855286310533183536e-05,
-+-2.12478832059765801270e-05,
-+-2.13975448290907599989e-05,
-+-2.15345402823791832330e-05,
-+-2.16589030827471214040e-05,
-+-2.17706734085350807535e-05,
-+-2.18698980228635944017e-05,
-+-2.19566301938759495123e-05,
-+-2.20309296119498917597e-05,
-+-2.20928623039478315611e-05,
-+-2.21425005445764114633e-05,
-+-2.21799227649298888801e-05,
-+-2.22052134582895725366e-05,
-+-2.22184630832555388114e-05,
-+-2.22197679642845197419e-05,
-+-2.22092301897129874779e-05,
-+-2.21869575073414682510e-05,
-+-2.21530632176585956473e-05,
-+-2.21076660647849037526e-05,
-+-2.20508901252157237687e-05,
-+-2.19828646944432693725e-05,
-+-2.19037241715403474508e-05,
-+-2.18136079417860268177e-05,
-+-2.17126602574166129554e-05,
-+-2.16010301165839486721e-05,
-+-2.14788711406044598715e-05,
-+-2.13463414495824367763e-05,
-+-2.12036035364909901271e-05,
-+-2.10508241397952941727e-05,
-+-2.08881741147017592605e-05,
-+-2.07158283031179152496e-05,
-+-2.05339654024071466103e-05,
-+-2.03427678330234534560e-05,
-+-2.01424216051101083219e-05,
-+-1.99331161841466409333e-05,
-+-1.97150443557298639234e-05,
-+-1.94884020895712982066e-05,
-+-1.92533884027966296513e-05,
-+-1.90102052226298810192e-05,
-+-1.87590572485473988781e-05,
-+-1.85001518139830994003e-05,
-+-1.82336987476685074346e-05,
-+-1.79599102346913299191e-05,
-+-1.76790006773522863739e-05,
-+-1.73911865559027042601e-05,
-+-1.70966862892450109082e-05,
-+-1.67957200956739338487e-05,
-+-1.64885098537402634234e-05,
-+-1.61752789633142813903e-05,
-+-1.58562522069297573337e-05,
-+-1.55316556114829399716e-05,
-+-1.52017163103647922620e-05,
-+-1.48666624061033995360e-05,
-+-1.45267228335893107877e-05,
-+-1.41821272239584706039e-05,
-+-1.38331057692081632425e-05,
-+-1.34798890876143142534e-05,
-+-1.31227080900243395635e-05,
-+-1.27617938470932148766e-05,
-+-1.23973774575348411156e-05,
-+-1.20296899174529279452e-05,
-+-1.16589619908198458004e-05,
-+-1.12854240811699317332e-05,
-+-1.09093061045693789425e-05,
-+-1.05308373639278654549e-05,
-+-1.01502464247116462527e-05,
-+-9.76776099211927309387e-06,
-+-9.38360778978138410360e-06,
-+-8.99801244003842426661e-06,
-+-8.61119934585468618966e-06,
-+-8.22339157442569339263e-06,
-+-7.83481074252833694781e-06,
-+-7.44567690366960780872e-06,
-+-7.05620843708181691813e-06,
-+-6.66662193861726721860e-06,
-+-6.27713211358587016620e-06,
-+-5.88795167158394612084e-06,
-+-5.49929122336098261949e-06,
-+-5.11135917976332167136e-06,
-+-4.72436165279991700163e-06,
-+-4.33850235886762889933e-06,
-+-3.95398252417811778438e-06,
-+-3.57100079241896547341e-06,
-+-3.18975313468634483958e-06,
-+-2.81043276172503517281e-06,
-+-2.43323003850372685734e-06,
-+-2.05833240115816176063e-06,
-+-1.68592427633299744872e-06,
-+-1.31618700294525707091e-06,
-+-9.49298756398597503033e-07,
-+-5.85434475269598042740e-07,
-+-2.24765790491995588430e-07,
-+ 1.32539042944795253329e-07,
-+ 4.86315211761806101974e-07,
-+ 8.36401407601896179804e-07,
-+ 1.18263988767470755612e-06,
-+ 1.52487653281902728484e-06,
-+ 1.86296090296814218483e-06,
-+ 2.19674629001149769367e-06,
-+ 2.52608976803993208671e-06,
-+ 2.85085224096945087408e-06,
-+ 3.17089848753367322990e-06,
-+ 3.48609720364736703897e-06,
-+ 3.79632104212865399887e-06,
-+ 4.10144664978819417086e-06,
-+ 4.40135470188026015846e-06,
-+ 4.69592993391712774085e-06,
-+ 4.98506117085352237869e-06,
-+ 5.26864135364426027284e-06,
-+ 5.54656756317971894038e-06,
-+ 5.81874104161062011015e-06,
-+ 6.08506721106972112904e-06,
-+ 6.34545568979961026893e-06,
-+ 6.59982030570251321293e-06,
-+ 6.84807910732276385433e-06,
-+ 7.09015437227939167509e-06,
-+ 7.32597261316240703008e-06,
-+ 7.55546458091406095787e-06,
-+ 7.77856526571271897894e-06,
-+ 7.99521389537842829865e-06,
-+ 8.20535393132500495055e-06,
-+ 8.40893306208027325446e-06,
-+ 8.60590319439752568476e-06,
-+ 8.79622044198663719764e-06,
-+ 8.97984511188937595011e-06,
-+ 9.15674168852855148177e-06,
-+ 9.32687881545792753647e-06,
-+ 9.49022927484590670408e-06,
-+ 9.64676996472301928230e-06,
-+ 9.79648187402453286072e-06,
-+ 9.93935005546419846816e-06,
-+ 1.00753635962716102202e-05,
-+ 1.02045155868300701406e-05,
-+ 1.03268030872496085793e-05,
-+ 1.04422270919149080961e-05,
-+ 1.05507924920450241771e-05,
-+ 1.06525080363035427313e-05,
-+ 1.07473862895008009574e-05,
-+ 1.08354435894281464503e-05,
-+ 1.09167000018650293508e-05,
-+ 1.09911792738028123146e-05,
-+ 1.10589087849281107333e-05,
-+ 1.11199194974072203387e-05,
-+ 1.11742459040198995155e-05,
-+ 1.12219259746838584705e-05,
-+ 1.12630011014179261237e-05,
-+ 1.12975160417893515888e-05,
-+ 1.13255188608912239713e-05,
-+ 1.13470608718986725231e-05,
-+ 1.13621965752502408455e-05,
-+ 1.13709835965033970314e-05,
-+ 1.13734826229117897745e-05,
-+ 1.13697573387741017237e-05,
-+ 1.13598743596030994434e-05,
-+ 1.13439031651642332040e-05,
-+ 1.13219160314340630866e-05,
-+ 1.12939879615281848059e-05,
-+ 1.12601966156488724434e-05,
-+ 1.12206222401028280833e-05,
-+ 1.11753475954396282394e-05,
-+ 1.11244578837614569632e-05,
-+ 1.10680406752547680398e-05,
-+ 1.10061858339946508134e-05,
-+ 1.09389854430727538072e-05,
-+ 1.08665337290993678862e-05,
-+ 1.07889269861304655274e-05,
-+ 1.07062634990703402997e-05,
-+ 1.06186434666001975772e-05,
-+ 1.05261689236834371503e-05,
-+ 1.04289436636973722826e-05,
-+ 1.03270731602417616547e-05,
-+ 1.02206644886739122943e-05,
-+ 1.01098262474197981978e-05,
-+ 9.99466847911029713993e-06,
-+ 9.87530259159213775891e-06,
-+ 9.75184127886138886650e-06,
-+ 9.62439844196833259673e-06,
-+ 9.49308910994118403798e-06,
-+ 9.35802936077670613891e-06,
-+ 9.21933624254407122552e-06,
-+ 9.07712769464878633412e-06,
-+ 8.93152246930307774312e-06,
-+ 8.78264005324776636302e-06,
-+ 8.63060058977119588699e-06,
-+ 8.47552480106907815021e-06,
-+ 8.31753391098935562125e-06,
-+ 8.15674956820603695338e-06,
-+ 7.99329376986349665764e-06,
-+ 7.82728878573373623468e-06,
-+ 7.65885708292866533933e-06,
-+ 7.48812125120667820171e-06,
-+ 7.31520392891465129538e-06,
-+ 7.14022772960352193400e-06,
-+ 6.96331516935741928119e-06,
-+ 6.78458859487234582688e-06,
-+ 6.60417011232208535555e-06,
-+ 6.42218151704836629878e-06,
-+ 6.23874422410881874162e-06,
-+ 6.05397919971873245333e-06,
-+ 5.86800689361913014930e-06,
-+ 5.68094717240549469965e-06,
-+ 5.49291925384726654124e-06,
-+ 5.30404164223008170432e-06,
-+ 5.11443206475166292147e-06,
-+ 4.92420740899910160668e-06,
-+ 4.73348366153649160803e-06,
-+ 4.54237584763147922608e-06,
-+ 4.35099797214519011545e-06,
-+ 4.15946296161273383862e-06,
-+ 3.96788260753767942779e-06,
-+ 3.77636751092580240556e-06,
-+ 3.58502702807880729068e-06,
-+ 3.39396921767065449759e-06,
-+ 3.20330078912824216524e-06,
-+ 3.01312705233424288917e-06,
-+ 2.82355186867183291849e-06,
-+ 2.63467760343009042062e-06,
-+ 2.44660507958478551702e-06,
-+ 2.25943353297212192994e-06,
-+ 2.07326056886889636990e-06,
-+ 1.88818211999486711094e-06,
-+ 1.70429240594666796266e-06,
-+ 1.52168389407997070498e-06,
-+ 1.34044726184580192320e-06,
-+ 1.16067136059360877587e-06,
-+ 9.82443180850182688139e-07,
-+ 8.05847819080474491893e-07,
-+ 6.30968445938113515307e-07,
-+ 4.57886276012498259056e-07,
-+ 2.86680539075394581232e-07,
-+ 1.17428452831952805658e-07,
-+-4.97948028199512061526e-08,
-+-2.14916110022078276637e-07,
-+-3.77864435677151772163e-07,
-+-5.38570852660314438457e-07,
-+-6.96968559519905157610e-07,
-+-8.52992898671310133264e-07,
-+-1.00658137308563959240e-06,
-+-1.15767366147595502125e-06,
-+-1.30621163198739205903e-06,
-+-1.45213935439566631263e-06,
-+-1.59540311081938818504e-06,
-+-1.73595140495523324136e-06,
-+-1.87373496984242769148e-06,
-+-2.00870677416657680066e-06,
-+-2.14082202711105138891e-06,
-+-2.27003818176825526611e-06,
-+-2.39631493712127321177e-06,
-+-2.51961423860721225935e-06,
-+-2.63990027727692722499e-06,
-+-2.75713948756333368392e-06,
-+-2.87130054367384340272e-06,
-+-2.98235435462072420536e-06,
-+-3.09027405790690176183e-06,
-+-3.19503501188302714502e-06,
-+-3.29661478679241666049e-06,
-+-3.39499315452328387347e-06,
-+-3.49015207708610277043e-06,
-+-3.58207569383478124936e-06,
-+-3.67075030745277205795e-06,
-+-3.75616436872432333914e-06,
-+-3.83830846011024974469e-06,
-+-3.91717527815298500760e-06,
-+-3.99275961473000555479e-06,
-+-4.06505833718047160103e-06,
-+-4.13407036732752447398e-06,
-+-4.19979665941946242550e-06,
-+-4.26224017701520252964e-06,
-+-4.32140586883761345266e-06,
-+-4.37730064362061373922e-06,
-+-4.42993334397458008860e-06,
-+-4.47931471929707665449e-06,
-+-4.52545739775462975901e-06,
-+-4.56837585736176623178e-06,
-+-4.60808639618528355489e-06,
-+-4.64460710170019533535e-06,
-+-4.67795781932549308073e-06,
-+-4.70816012016700297387e-06,
-+-4.73523726799615031957e-06,
-+-4.75921418549265574824e-06,
-+-4.78011741977943205404e-06,
-+-4.79797510727910759225e-06,
-+-4.81281693792077799724e-06,
-+-4.82467411872585649209e-06,
-+-4.83357933680284597292e-06,
-+-4.83956672177992600872e-06,
-+-4.84267180770512457676e-06,
-+-4.84293149444327853537e-06,
-+-4.84038400859978304718e-06,
-+-4.83506886400059992306e-06,
-+-4.82702682175797029301e-06,
-+-4.81629984995190550901e-06,
-+-4.80293108295687288677e-06,
-+-4.78696478044319962005e-06,
-+-4.76844628608297569874e-06,
-+-4.74742198598980721643e-06,
-+-4.72393926692184768618e-06,
-+-4.69804647427729357874e-06,
-+-4.66979286991168869255e-06,
-+-4.63922858980587374532e-06,
-+-4.60640460161349042157e-06,
-+-4.57137266211669161266e-06,
-+-4.53418527461856474313e-06,
-+-4.49489564630047438049e-06,
-+-4.45355764557232873177e-06,
-+-4.41022575944365265741e-06,
-+-4.36495505094285770681e-06,
-+-4.31780111661199634214e-06,
-+-4.26882004410400630158e-06,
-+-4.21806836990897163306e-06,
-+-4.16560303723581088566e-06,
-+-4.11148135407525745674e-06,
-+-4.05576095146995474136e-06,
-+-3.99849974201671793024e-06,
-+-3.93975587862589741230e-06,
-+-3.87958771356253902739e-06,
-+-3.81805375779311230168e-06,
-+-3.75521264066174805207e-06,
-+-3.69112306991899966841e-06,
-+-3.62584379212629908306e-06,
-+-3.55943355345803456996e-06,
-+-3.49195106092336089756e-06,
-+-3.42345494402936616337e-06,
-+-3.35400371690614687047e-06,
-+-3.28365574091441607464e-06,
-+-3.21246918775588953681e-06,
-+-3.14050200310536497332e-06,
-+-3.06781187078386562419e-06,
-+-2.99445617749091577548e-06,
-+-2.92049197811430259292e-06,
-+-2.84597596163407434304e-06,
-+-2.77096441763784568063e-06,
-+-2.69551320346391274513e-06,
-+-2.61967771198731242738e-06,
-+-2.54351284006417954935e-06,
-+-2.46707295764927670231e-06,
-+-2.39041187760002226610e-06,
-+-2.31358282618092573712e-06,
-+-2.23663841428083219829e-06,
-+-2.15963060935584024358e-06,
-+-2.08261070810834870857e-06,
-+-2.00562930991492076031e-06,
-+-1.92873629101175331357e-06,
-+-1.85198077944850633880e-06,
-+-1.77541113081986172875e-06,
-+-1.69907490478282910220e-06,
-+-1.62301884236816257159e-06,
-+-1.54728884409369261285e-06,
-+-1.47192994888573774293e-06,
-+-1.39698631381516495750e-06,
-+-1.32250119465412662692e-06,
-+-1.24851692725776004904e-06,
-+-1.17507490977594879706e-06,
-+-1.10221558569852023006e-06,
-+-1.02997842773779330541e-06,
-+-9.58401922550402422422e-07,
-+-8.87523556300846598974e-07,
-+-8.17379801068637194395e-07,
-+-7.48006102099267160073e-07,
-+-6.79436865899721901669e-07,
-+-6.11705449178669713405e-07,
-+-5.44844148629825548117e-07,
-+-4.78884191557767192135e-07,
-+-4.13855727343869051617e-07,
-+-3.49787819750522529807e-07,
-+-2.86708440059940296556e-07,
-+-2.24644461044386128961e-07,
-+-1.63621651764123018711e-07,
-+-1.03664673187799380991e-07,
-+-4.47970746308059675830e-08,
-+ 0 /* Need a final zero coefficient */
-+
-diff -r -u --new-file k3b-r948463/libk3b/plugin/libsamplerate/samplerate.c k3b-r948463.patched/libk3b/plugin/libsamplerate/samplerate.c
---- k3b-r948463/libk3b/plugin/libsamplerate/samplerate.c 1969-12-31 18:00:00.000000000 -0600
-+++ k3b-r948463.patched/libk3b/plugin/libsamplerate/samplerate.c 2009-04-03 14:00:42.000000000 -0500
-@@ -0,0 +1,301 @@
-+/*
-+** Copyright (C) 2002,2003 Erik de Castro Lopo <erikd@mega-nerd.com>
-+**
-+** This program is free software; you can redistribute it and/or modify
-+** it under the terms of the GNU General Public License as published by
-+** the Free Software Foundation; either version 2 of the License, or
-+** (at your option) any later version.
-+**
-+** This program is distributed in the hope that it will be useful,
-+** but WITHOUT ANY WARRANTY; without even the implied warranty of
-+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+** GNU General Public License for more details.
-+**
-+** You should have received a copy of the GNU General Public License
-+** along with this program; if not, write to the Free Software
-+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#include "config-k3b.h"
-+
-+#include "samplerate.h"
-+#include "common.h"
-+
-+SRC_STATE *
-+src_new (int converter_type, int channels, int *error)
-+{ SRC_PRIVATE *psrc ;
-+
-+ if (error)
-+ *error = SRC_ERR_NO_ERROR ;
-+
-+ if (channels < 1)
-+ { if (error)
-+ *error = SRC_ERR_BAD_CHANNEL_COUNT ;
-+ return NULL ;
-+ } ;
-+
-+ if ((psrc = calloc (1, sizeof (*psrc))) == NULL)
-+ { if (error)
-+ *error = SRC_ERR_MALLOC_FAILED ;
-+ return NULL ;
-+ } ;
-+
-+ psrc->channels = channels ;
-+
-+ if (sinc_set_converter (psrc, converter_type) != SRC_ERR_NO_ERROR &&
-+ zoh_set_converter (psrc, converter_type) != SRC_ERR_NO_ERROR &&
-+ linear_set_converter (psrc, converter_type) != SRC_ERR_NO_ERROR)
-+ { if (error)
-+ *error = SRC_ERR_BAD_CONVERTER ;
-+ free (psrc) ;
-+ psrc = NULL ;
-+ } ;
-+
-+ src_reset ((SRC_STATE*) psrc) ;
-+
-+ return (SRC_STATE*) psrc ;
-+} /* src_new */
-+
-+SRC_STATE *
-+src_delete (SRC_STATE *state)
-+{ SRC_PRIVATE *psrc ;
-+
-+ psrc = (SRC_PRIVATE*) state ;
-+ if (psrc)
-+ { if (psrc->private_data)
-+ free (psrc->private_data) ;
-+ memset (psrc, 0, sizeof (SRC_PRIVATE)) ;
-+ free (psrc) ;
-+ } ;
-+
-+ return NULL ;
-+} /* src_state */
-+
-+int
-+src_process (SRC_STATE *state, SRC_DATA *data)
-+{ SRC_PRIVATE *psrc ;
-+ int error ;
-+
-+ psrc = (SRC_PRIVATE*) state ;
-+
-+ if (psrc == NULL)
-+ return SRC_ERR_BAD_STATE ;
-+ if (psrc->process == NULL)
-+ return SRC_ERR_BAD_PROC_PTR ;
-+
-+ /* Check for valid SRC_DATA first. */
-+ if (data == NULL)
-+ return SRC_ERR_BAD_DATA ;
-+ /* Check src_ratio is in range. */
-+ if (data->src_ratio < (1.0 / SRC_MAX_RATIO) || data->src_ratio > (1.0 * SRC_MAX_RATIO))
-+ return SRC_ERR_BAD_SRC_RATIO ;
-+
-+ /* And that data_in and data_out are valid. */
-+ if (data->data_in == NULL || data->data_out == NULL)
-+ return SRC_ERR_BAD_DATA_PTR ;
-+
-+ if (data->data_in == NULL)
-+ data->input_frames = 0 ;
-+
-+ if (data->data_in < data->data_out)
-+ { if (data->data_in + data->input_frames * psrc->channels > data->data_out)
-+ { /*-printf ("data_in: %p data_out: %p\n",
-+ data->data_in + data->input_frames * psrc->channels, data->data_out) ;-*/
-+ return SRC_ERR_DATA_OVERLAP ;
-+ } ;
-+ }
-+ else if (data->data_out + data->output_frames * psrc->channels > data->data_in)
-+ { /*-printf ("data_out: %p (%p) data_in: %p\n", data->data_out,
-+ data->data_out + data->output_frames * psrc->channels, data->data_in) ;-*/
-+ return SRC_ERR_DATA_OVERLAP ;
-+ } ;
-+
-+ if (data->input_frames < 0)
-+ data->input_frames = 0 ;
-+ if (data->output_frames < 0)
-+ data->output_frames = 0 ;
-+
-+ /* Set the input and output counts to zero. */
-+ data->input_frames_used = 0 ;
-+ data->output_frames_gen = 0 ;
-+
-+ /* Special case for when last_ratio has not been set. */
-+ if (psrc->last_ratio < (1.0 / SRC_MAX_RATIO))
-+ psrc->last_ratio = data->src_ratio ;
-+
-+ /* Now process. */
-+ error = psrc->process (psrc, data) ;
-+
-+ return error ;
-+} /* src_process */
-+
-+int
-+src_set_ratio (SRC_STATE *state, double new_ratio)
-+{ SRC_PRIVATE *psrc ;
-+
-+ psrc = (SRC_PRIVATE*) state ;
-+
-+ if (psrc == NULL)
-+ return SRC_ERR_BAD_STATE ;
-+ if (psrc->process == NULL)
-+ return SRC_ERR_BAD_PROC_PTR ;
-+
-+ psrc->last_ratio = new_ratio ;
-+
-+ return SRC_ERR_NO_ERROR ;
-+} /* src_set_ratio */
-+
-+int
-+src_reset (SRC_STATE *state)
-+{ SRC_PRIVATE *psrc ;
-+
-+ if ((psrc = (SRC_PRIVATE*) state) == NULL)
-+ return SRC_ERR_BAD_STATE ;
-+
-+ if (psrc->reset != NULL)
-+ psrc->reset (psrc) ;
-+
-+ psrc->last_position = 0.0 ;
-+ psrc->last_ratio = 0.0 ;
-+
-+ psrc->error = SRC_ERR_NO_ERROR ;
-+
-+ return SRC_ERR_NO_ERROR ;
-+} /* src_reset */
-+
-+/*==============================================================================
-+** Control functions.
-+*/
-+
-+const char *
-+src_get_name (int converter_type)
-+{ const char *desc ;
-+
-+ if ((desc = sinc_get_name (converter_type)) != NULL)
-+ return desc ;
-+
-+ if ((desc = zoh_get_name (converter_type)) != NULL)
-+ return desc ;
-+
-+ if ((desc = linear_get_name (converter_type)) != NULL)
-+ return desc ;
-+
-+ return NULL ;
-+} /* src_get_name */
-+
-+const char *
-+src_get_description (int converter_type)
-+{ const char *desc ;
-+
-+ if ((desc = sinc_get_description (converter_type)) != NULL)
-+ return desc ;
-+
-+ if ((desc = zoh_get_description (converter_type)) != NULL)
-+ return desc ;
-+
-+ if ((desc = linear_get_description (converter_type)) != NULL)
-+ return desc ;
-+
-+ return NULL ;
-+} /* src_get_description */
-+
-+const char *
-+src_get_version (void)
-+{ return "libsamplerate-k3b";/*PACKAGE "-" VERSION ;*/
-+} /* src_get_version */
-+
-+int
-+src_is_valid_ratio (double ratio)
-+{
-+ if (ratio < (1.0 / SRC_MAX_RATIO) || ratio > (1.0 * SRC_MAX_RATIO))
-+ return SRC_FALSE ;
-+
-+ return SRC_TRUE ;
-+} /* src_is_valid_ratio */
-+
-+/*==============================================================================
-+** Error reporting functions.
-+*/
-+
-+int
-+src_error (SRC_STATE *state)
-+{ if (state)
-+ return ((SRC_PRIVATE*) state)->error ;
-+ return SRC_ERR_NO_ERROR ;
-+} /* src_error */
-+
-+const char*
-+src_strerror (int error)
-+{
-+ switch (error)
-+ { case SRC_ERR_NO_ERROR :
-+ return "No error" ;
-+ case SRC_ERR_MALLOC_FAILED :
-+ return "Malloc failed." ;
-+ case SRC_ERR_BAD_STATE :
-+ return "SRC_STATE pointer is NULL." ;
-+ case SRC_ERR_BAD_DATA :
-+ return "SRC_DATA pointer is NULL." ;
-+ case SRC_ERR_BAD_DATA_PTR :
-+ return "SRC_DATA->data_out is NULL." ;
-+ case SRC_ERR_NO_PRIVATE :
-+ return "Internal error. No private data." ;
-+ case SRC_ERR_BAD_SRC_RATIO :
-+ return "SRC ratio outside [-12, 12] range." ;
-+ case SRC_ERR_BAD_SINC_STATE :
-+ return "src_process() called without reset after end_of_input." ;
-+ case SRC_ERR_BAD_PROC_PTR :
-+ return "Internal error. No process pointer." ;
-+ case SRC_ERR_SHIFT_BITS :
-+ return "Internal error. SHIFT_BITS too large." ;
-+ case SRC_ERR_FILTER_LEN :
-+ return "Internal error. Filter length too large." ;
-+ case SRC_ERR_BAD_CONVERTER :
-+ return "Bad converter number." ;
-+ case SRC_ERR_BAD_CHANNEL_COUNT :
-+ return "Channel count must be >= 1." ;
-+ case SRC_ERR_SINC_BAD_BUFFER_LEN :
-+ return "Internal error. Bad buffer length. Please report this." ;
-+ case SRC_ERR_SIZE_INCOMPATIBILITY :
-+ return "Internal error. Input data / internal buffer size difference. Please report this." ;
-+ case SRC_ERR_BAD_PRIV_PTR :
-+ return "Internal error. Private pointer is NULL. Please report this." ;
-+
-+ case SRC_ERR_DATA_OVERLAP :
-+ return "Input and output data arrays overlap." ;
-+
-+ case SRC_ERR_MAX_ERROR :
-+ return "Placeholder. No error defined for this error number." ;
-+
-+ default : break ;
-+ }
-+
-+ return NULL ;
-+} /* src_strerror */
-+
-+/*==============================================================================
-+** Simple interface for performing a single conversion from input buffer to
-+** output buffer at a fixed conversion ratio.
-+*/
-+
-+int
-+src_simple (SRC_DATA *src_data, int converter, int channels)
-+{ SRC_STATE *src_state ;
-+ int error ;
-+
-+ if ((src_state = src_new (converter, channels, &error)) == NULL)
-+ return error ;
-+
-+ src_data->end_of_input = 1 ; /* Only one buffer worth of input. */
-+
-+ error = src_process (src_state, src_data) ;
-+
-+ src_state = src_delete (src_state) ;
-+
-+ return error ;
-+} /* src_simple */
-+
-diff -r -u --new-file k3b-r948463/libk3b/plugin/libsamplerate/samplerate.h k3b-r948463.patched/libk3b/plugin/libsamplerate/samplerate.h
---- k3b-r948463/libk3b/plugin/libsamplerate/samplerate.h 1969-12-31 18:00:00.000000000 -0600
-+++ k3b-r948463.patched/libk3b/plugin/libsamplerate/samplerate.h 2009-04-03 14:00:42.000000000 -0500
-@@ -0,0 +1,138 @@
-+/*
-+** Copyright (C) 2002,2003 Erik de Castro Lopo <erikd@mega-nerd.com>
-+**
-+** This program is free software; you can redistribute it and/or modify
-+** it under the terms of the GNU General Public License as published by
-+** the Free Software Foundation; either version 2 of the License, or
-+** (at your option) any later version.
-+**
-+** This program is distributed in the hope that it will be useful,
-+** but WITHOUT ANY WARRANTY; without even the implied warranty of
-+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+** GNU General Public License for more details.
-+**
-+** You should have received a copy of the GNU General Public License
-+** along with this program; if not, write to the Free Software
-+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+
-+/*
-+** API documentation is available here:
-+** http://www.mega-nerd.com/SRC/api.html
-+*/
-+
-+#ifndef SAMPLERATE_H
-+#define SAMPLERATE_H
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif /* __cplusplus */
-+
-+typedef struct SRC_STATE_tag SRC_STATE ;
-+
-+typedef struct
-+{ float *data_in, *data_out ;
-+
-+ long input_frames, output_frames ;
-+ long input_frames_used, output_frames_gen ;
-+
-+ int end_of_input ;
-+
-+ double src_ratio ;
-+} SRC_DATA ;
-+
-+/*
-+** Simple interface for performing a single conversion from input buffer to
-+** output buffer at a fixed conversion ratio.
-+*/
-+int src_simple (SRC_DATA *data, int converter_type, int channels) ;
-+
-+/*
-+** Initialisation function : return an anonymous pointer to the internal state
-+** of the converter. Choose a converter from the enums below.
-+*/
-+
-+SRC_STATE* src_new (int converter_type, int channels, int *error) ;
-+
-+/*
-+** Cleanup all internal allocations.
-+** Always returns NULL.
-+*/
-+
-+SRC_STATE* src_delete (SRC_STATE *state) ;
-+
-+/*
-+** This library contains a number of different sample rate converters,
-+** numbered 0 through N.
-+**
-+** Return a string giving either a name or a more full description of each
-+** sample rate converter or NULL if no sample rate converter exists for
-+** the given value. The converters are sequentially numbered from 0 to N.
-+*/
-+
-+const char *src_get_name (int converter_type) ;
-+const char *src_get_description (int converter_type) ;
-+const char *src_get_version (void) ;
-+
-+/*
-+** Processing function.
-+** Returns non zero on error.
-+*/
-+
-+int src_process (SRC_STATE *state, SRC_DATA *data) ;
-+
-+/*
-+** Set a new SRC ratio. This allows step responses
-+** in the conversion ratio.
-+** Returns non zero on error.
-+*/
-+
-+int src_set_ratio (SRC_STATE *state, double new_ratio) ;
-+
-+/*
-+** Reset the internal SRC state.
-+** Does not modify the quality settings.
-+** Does not free any memory allocations.
-+** Returns non zero on error.
-+*/
-+
-+int src_reset (SRC_STATE *state) ;
-+
-+/*
-+** Return TRUE if ratio is a valid conversion ratio, FALSE
-+** otherwise.
-+*/
-+
-+int src_is_valid_ratio (double ratio) ;
-+
-+/*
-+** Return an error number.
-+*/
-+
-+int src_error (SRC_STATE *state) ;
-+
-+/*
-+** Convert the error number into a string.
-+*/
-+const char* src_strerror (int error) ;
-+
-+/*
-+** The following enums can be used to set the interpolator type
-+** using the function src_set_converter().
-+*/
-+
-+enum
-+{
-+ SRC_SINC_BEST_QUALITY = 0,
-+ SRC_SINC_MEDIUM_QUALITY = 1,
-+ SRC_SINC_FASTEST = 2,
-+ SRC_ZERO_ORDER_HOLD = 3,
-+ SRC_LINEAR = 4
-+} ;
-+
-+
-+#ifdef __cplusplus
-+} /* extern "C" */
-+#endif /* __cplusplus */
-+
-+#endif /* SAMPLERATE_H */
-diff -r -u --new-file k3b-r948463/libk3b/plugin/libsamplerate/src_linear.c k3b-r948463.patched/libk3b/plugin/libsamplerate/src_linear.c
---- k3b-r948463/libk3b/plugin/libsamplerate/src_linear.c 1969-12-31 18:00:00.000000000 -0600
-+++ k3b-r948463.patched/libk3b/plugin/libsamplerate/src_linear.c 2009-04-03 14:00:42.000000000 -0500
-@@ -0,0 +1,194 @@
-+/*
-+** Copyright (C) 2002,2003 Erik de Castro Lopo <erikd@mega-nerd.com>
-+**
-+** This program is free software; you can redistribute it and/or modify
-+** it under the terms of the GNU General Public License as published by
-+** the Free Software Foundation; either version 2 of the License, or
-+** (at your option) any later version.
-+**
-+** This program is distributed in the hope that it will be useful,
-+** but WITHOUT ANY WARRANTY; without even the implied warranty of
-+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+** GNU General Public License for more details.
-+**
-+** You should have received a copy of the GNU General Public License
-+** along with this program; if not, write to the Free Software
-+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#include "config-k3b.h"
-+#include "float_cast.h"
-+#include "common.h"
-+
-+static void linear_reset (SRC_PRIVATE *psrc) ;
-+
-+/*========================================================================================
-+*/
-+
-+#define LINEAR_MAGIC_MARKER MAKE_MAGIC('l','i','n','e','a','r')
-+
-+typedef struct
-+{ int linear_magic_marker ;
-+ int channels ;
-+ long in_count, in_used ;
-+ long out_count, out_gen ;
-+ float last_value [1] ;
-+} LINEAR_DATA ;
-+
-+/*----------------------------------------------------------------------------------------
-+*/
-+int
-+linear_process (SRC_PRIVATE *psrc, SRC_DATA *data)
-+{ LINEAR_DATA *linear ;
-+ double src_ratio, input_index ;
-+ int ch ;
-+
-+ if (psrc->private_data == NULL)
-+ return SRC_ERR_NO_PRIVATE ;
-+
-+ linear = (LINEAR_DATA*) psrc->private_data ;
-+
-+ linear->in_count = data->input_frames * linear->channels ;
-+ linear->out_count = data->output_frames * linear->channels ;
-+ linear->in_used = linear->out_gen = 0 ;
-+
-+ src_ratio = psrc->last_ratio ;
-+ input_index = psrc->last_position ;
-+
-+ /* Calculate samples before first sample in input array. */
-+ while (input_index > 0.0 && input_index < 1.0 && linear->out_gen < linear->out_count)
-+ {
-+ if (linear->in_used + input_index > linear->in_count)
-+ break ;
-+
-+ if (fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
-+ src_ratio = psrc->last_ratio + linear->out_gen * (data->src_ratio - psrc->last_ratio) / (linear->out_count - 1) ;
-+
-+ for (ch = 0 ; ch < linear->channels ; ch++)
-+ { data->data_out [linear->out_gen] = linear->last_value [ch] + input_index *
-+ (data->data_in [ch] - linear->last_value [ch]) ;
-+ linear->out_gen ++ ;
-+ } ;
-+
-+ /* Figure out the next index. */
-+ input_index += 1.0 / src_ratio ;
-+ } ;
-+
-+ /* Main processing loop. */
-+ while (linear->out_gen < linear->out_count)
-+ {
-+ linear->in_used += linear->channels * lrint (floor (input_index)) ;
-+ input_index -= floor (input_index) ;
-+
-+ if (linear->in_used + input_index > linear->in_count)
-+ break ;
-+
-+ if (fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
-+ src_ratio = psrc->last_ratio + linear->out_gen * (data->src_ratio - psrc->last_ratio) / (linear->out_count - 1) ;
-+
-+ for (ch = 0 ; ch < linear->channels ; ch++)
-+ { data->data_out [linear->out_gen] = data->data_in [linear->in_used + ch] + input_index *
-+ (data->data_in [linear->in_used + linear->channels + ch] - data->data_in [linear->in_used + ch]) ;
-+ linear->out_gen ++ ;
-+ } ;
-+
-+ /* Figure out the next index. */
-+ input_index += 1.0 / src_ratio ;
-+ } ;
-+
-+/*- if (input_index > linear->in_count - linear->in_used)
-+ { input_index -= linear->in_count - linear->in_used ;
-+ linear->in_used = linear->in_count ;
-+ puts ("XXXXXXXXXX") ; /+*-exit (1) ;-*+/
-+ } ;
-+-*/
-+
-+ psrc->last_position = input_index ;
-+
-+ for (ch = 0 ; ch < linear->channels ; ch++)
-+ { linear->last_value [ch] = data->data_in [linear->in_used - linear->channels + ch] ;
-+
-+/*- data->data_out [0 + ch] = -0.9 ;
-+ data->data_out [linear->out_gen - linear->channels + ch] = 0.9 ; -*/
-+ } ;
-+
-+ /* Save current ratio rather then target ratio. */
-+ psrc->last_ratio = src_ratio ;
-+
-+ data->input_frames_used = linear->in_used / linear->channels ;
-+ data->output_frames_gen = linear->out_gen / linear->channels ;
-+
-+ return SRC_ERR_NO_ERROR ;
-+} /* linear_process */
-+
-+/*------------------------------------------------------------------------------
-+*/
-+
-+const char*
-+linear_get_name (int src_enum)
-+{
-+ if (src_enum == SRC_LINEAR)
-+ return "Linear Interpolator" ;
-+
-+ return NULL ;
-+} /* linear_get_name */
-+
-+const char*
-+linear_get_description (int src_enum)
-+{
-+ if (src_enum == SRC_LINEAR)
-+ return "Linear interpolator, very fast, poor quality." ;
-+
-+ return NULL ;
-+} /* linear_get_descrition */
-+
-+int
-+linear_set_converter (SRC_PRIVATE *psrc, int src_enum)
-+{ LINEAR_DATA *linear ;
-+
-+ if (src_enum != SRC_LINEAR)
-+ return SRC_ERR_BAD_CONVERTER ;
-+
-+ if (psrc->private_data != NULL)
-+ { linear = (LINEAR_DATA*) psrc->private_data ;
-+ if (linear->linear_magic_marker != LINEAR_MAGIC_MARKER)
-+ { free (psrc->private_data) ;
-+ psrc->private_data = NULL ;
-+ } ;
-+ } ;
-+
-+ if (psrc->private_data == NULL)
-+ { linear = calloc (1, sizeof (*linear) + psrc->channels * sizeof (float)) ;
-+ if (linear == NULL)
-+ return SRC_ERR_MALLOC_FAILED ;
-+ psrc->private_data = linear ;
-+ } ;
-+
-+ linear->linear_magic_marker = LINEAR_MAGIC_MARKER ;
-+ linear->channels = psrc->channels ;
-+
-+ psrc->process = linear_process ;
-+ psrc->reset = linear_reset ;
-+
-+ linear_reset (psrc) ;
-+
-+ return SRC_ERR_NO_ERROR ;
-+} /* linear_set_converter */
-+
-+/*===================================================================================
-+*/
-+
-+static void
-+linear_reset (SRC_PRIVATE *psrc)
-+{ LINEAR_DATA *linear ;
-+
-+ linear = (LINEAR_DATA*) psrc->private_data ;
-+ if (linear == NULL)
-+ return ;
-+
-+ memset (linear->last_value, 0, sizeof (linear->last_value [0]) * linear->channels) ;
-+} /* linear_reset */
-diff -r -u --new-file k3b-r948463/libk3b/plugin/libsamplerate/src_sinc.c k3b-r948463.patched/libk3b/plugin/libsamplerate/src_sinc.c
---- k3b-r948463/libk3b/plugin/libsamplerate/src_sinc.c 1969-12-31 18:00:00.000000000 -0600
-+++ k3b-r948463.patched/libk3b/plugin/libsamplerate/src_sinc.c 2009-04-03 14:00:42.000000000 -0500
-@@ -0,0 +1,471 @@
-+/*
-+** Copyright (C) 2002,2003 Erik de Castro Lopo <erikd@mega-nerd.com>
-+**
-+** This program is free software; you can redistribute it and/or modify
-+** it under the terms of the GNU General Public License as published by
-+** the Free Software Foundation; either version 2 of the License, or
-+** (at your option) any later version.
-+**
-+** This program is distributed in the hope that it will be useful,
-+** but WITHOUT ANY WARRANTY; without even the implied warranty of
-+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+** GNU General Public License for more details.
-+**
-+** You should have received a copy of the GNU General Public License
-+** along with this program; if not, write to the Free Software
-+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#include "config-k3b.h"
-+#include "float_cast.h"
-+#include "common.h"
-+
-+#define SINC_MAGIC_MARKER MAKE_MAGIC(' ','s','i','n','c',' ')
-+
-+#define ARRAY_LEN(x) ((int) (sizeof (x) / sizeof ((x) [0])))
-+
-+/*========================================================================================
-+** Macros for handling the index into the array for the filter.
-+** Double precision floating point is not accurate enough so use a 64 bit
-+** fixed point value instead. SHIFT_BITS (current value of 48) is the number
-+** of bits to the right of the decimal point.
-+** The rest of the macros are for retrieving the fractional and integer parts
-+** and for converting floats and ints to the fixed point format or from the
-+** fixed point type back to integers and floats.
-+*/
-+
-+#define MAKE_INCREMENT_T(x) ((increment_t) (x))
-+
-+#define SHIFT_BITS 16
-+#define FP_ONE ((double) (((increment_t) 1) << SHIFT_BITS))
-+
-+#define DOUBLE_TO_FP(x) (lrint ((x) * FP_ONE))
-+#define INT_TO_FP(x) (((increment_t) (x)) << SHIFT_BITS)
-+
-+#define FP_FRACTION_PART(x) ((x) & ((((increment_t) 1) << SHIFT_BITS) - 1))
-+#define FP_INTEGER_PART(x) ((x) & (((increment_t) -1) << SHIFT_BITS))
-+
-+#define FP_TO_INT(x) (((x) >> SHIFT_BITS))
-+#define FP_TO_DOUBLE(x) (FP_FRACTION_PART (x) / FP_ONE)
-+
-+/*========================================================================================
-+*/
-+
-+typedef int32_t increment_t ;
-+typedef float coeff_t ;
-+
-+enum
-+{
-+ STATE_BUFFER_START = 101,
-+ STATE_DATA_CONTINUE = 102,
-+ STATE_BUFFER_END = 103,
-+ STATE_FINISHED
-+} ;
-+
-+typedef struct
-+{ int sinc_magic_marker ;
-+
-+ int channels ;
-+ long in_count, in_used ;
-+ long out_count, out_gen ;
-+
-+ int coeff_half_len, index_inc ;
-+ int has_diffs ;
-+
-+ double src_ratio, input_index ;
-+
-+ int coeff_len ;
-+ coeff_t const *coeffs ;
-+
-+ int b_current, b_end, b_real_end, b_len ;
-+ float *pdata ;
-+ float buffer [1] ;
-+} SINC_FILTER ;
-+
-+static double calc_output (SINC_FILTER *filter, increment_t increment, increment_t start_filter_index, int ch) ;
-+
-+static void prepare_data (SINC_FILTER *filter, SRC_DATA *data, int half_filter_chan_len) ;
-+
-+static void sinc_reset (SRC_PRIVATE *psrc) ;
-+
-+static coeff_t const high_qual_coeffs [] =
-+{
-+#include "high_qual_coeffs.h"
-+} ; /* high_qual_coeffs */
-+
-+static coeff_t const mid_qual_coeffs [] =
-+{
-+#include "mid_qual_coeffs.h"
-+} ; /* mid_qual_coeffs */
-+
-+static coeff_t const fastest_coeffs [] =
-+{
-+#include "fastest_coeffs.h"
-+} ; /* fastest_coeffs */
-+
-+/*----------------------------------------------------------------------------------------
-+*/
-+
-+const char*
-+sinc_get_name (int src_enum)
-+{
-+ switch (src_enum)
-+ { case SRC_SINC_BEST_QUALITY :
-+ return "Best Sinc Interpolator" ;
-+
-+ case SRC_SINC_MEDIUM_QUALITY :
-+ return "Medium Sinc Interpolator" ;
-+
-+ case SRC_SINC_FASTEST :
-+ return "Fastest Sinc Interpolator" ;
-+ } ;
-+
-+ return NULL ;
-+} /* sinc_get_descrition */
-+
-+const char*
-+sinc_get_description (int src_enum)
-+{
-+ switch (src_enum)
-+ { case SRC_SINC_BEST_QUALITY :
-+ return "Band limitied sinc interpolation, best quality, 97dB SNR, 96% BW." ;
-+
-+ case SRC_SINC_MEDIUM_QUALITY :
-+ return "Band limitied sinc interpolation, medium quality, 97dB SNR, 90% BW." ;
-+
-+ case SRC_SINC_FASTEST :
-+ return "Band limitied sinc interpolation, fastest, 97dB SNR, 80% BW." ;
-+ } ;
-+
-+ return NULL ;
-+} /* sinc_get_descrition */
-+
-+int
-+sinc_set_converter (SRC_PRIVATE *psrc, int src_enum)
-+{ SINC_FILTER *filter, temp_filter ;
-+ int count ;
-+
-+ /* Quick sanity check. */
-+ if (SHIFT_BITS >= sizeof (increment_t) * 8 - 1)
-+ return SRC_ERR_SHIFT_BITS ;
-+
-+ if (psrc->private_data != NULL)
-+ { filter = (SINC_FILTER*) psrc->private_data ;
-+ if (filter->sinc_magic_marker != SINC_MAGIC_MARKER)
-+ { free (psrc->private_data) ;
-+ psrc->private_data = NULL ;
-+ } ;
-+ } ;
-+
-+ memset (&temp_filter, 0, sizeof (temp_filter)) ;
-+
-+ temp_filter.sinc_magic_marker = SINC_MAGIC_MARKER ;
-+ temp_filter.channels = psrc->channels ;
-+
-+ psrc->process = sinc_process ;
-+ psrc->reset = sinc_reset ;
-+
-+ switch (src_enum)
-+ { case SRC_SINC_BEST_QUALITY :
-+ temp_filter.coeffs = high_qual_coeffs ;
-+ temp_filter.coeff_half_len = (sizeof (high_qual_coeffs) / sizeof (coeff_t)) - 1 ;
-+ temp_filter.index_inc = 128 ;
-+ temp_filter.has_diffs = SRC_FALSE ;
-+ temp_filter.coeff_len = sizeof (high_qual_coeffs) / sizeof (coeff_t) ;
-+ break ;
-+
-+ case SRC_SINC_MEDIUM_QUALITY :
-+ temp_filter.coeffs = mid_qual_coeffs ;
-+ temp_filter.coeff_half_len = (sizeof (mid_qual_coeffs) / sizeof (coeff_t)) - 1 ;
-+ temp_filter.index_inc = 128 ;
-+ temp_filter.has_diffs = SRC_FALSE ;
-+ temp_filter.coeff_len = sizeof (mid_qual_coeffs) / sizeof (coeff_t) ;
-+ break ;
-+
-+ case SRC_SINC_FASTEST :
-+ temp_filter.coeffs = fastest_coeffs ;
-+ temp_filter.coeff_half_len = (sizeof (fastest_coeffs) / sizeof (coeff_t)) - 1 ;
-+ temp_filter.index_inc = 128 ;
-+ temp_filter.has_diffs = SRC_FALSE ;
-+ temp_filter.coeff_len = sizeof (fastest_coeffs) / sizeof (coeff_t) ;
-+ break ;
-+
-+ default :
-+ return SRC_ERR_BAD_CONVERTER ;
-+ } ;
-+
-+ /*
-+ ** FIXME : This needs to be looked at more closely to see if there is
-+ ** a better way. Need to look at prepare_data () at the same time.
-+ */
-+
-+ temp_filter.b_len = 1000 + 2 * lrint (ceil (temp_filter.coeff_len / (temp_filter.index_inc * 1.0) * SRC_MAX_RATIO)) ;
-+ temp_filter.b_len *= temp_filter.channels ;
-+
-+ if ((filter = calloc (1, sizeof (SINC_FILTER) + sizeof (filter->buffer [0]) * (temp_filter.b_len + temp_filter.channels))) == NULL)
-+ return SRC_ERR_MALLOC_FAILED ;
-+
-+ *filter = temp_filter ;
-+ memset (&temp_filter, 0xEE, sizeof (temp_filter)) ;
-+
-+ psrc->private_data = filter ;
-+
-+ sinc_reset (psrc) ;
-+
-+ count = (filter->coeff_half_len * INT_TO_FP (1)) / FP_ONE ;
-+
-+ if (abs (count - filter->coeff_half_len) >= 1)
-+ return SRC_ERR_FILTER_LEN ;
-+
-+ return SRC_ERR_NO_ERROR ;
-+} /* sinc_set_converter */
-+
-+static void
-+sinc_reset (SRC_PRIVATE *psrc)
-+{ SINC_FILTER *filter ;
-+
-+ filter = (SINC_FILTER*) psrc->private_data ;
-+ if (filter == NULL)
-+ return ;
-+
-+ filter->b_current = filter->b_end = 0 ;
-+ filter->b_real_end = -1 ;
-+
-+ filter->src_ratio = filter->input_index = 0.0 ;
-+
-+ memset (filter->buffer, 0, filter->b_len * sizeof (filter->buffer [0])) ;
-+
-+ /* Set this for a sanity check */
-+ memset (filter->buffer + filter->b_len, 0xAA, filter->channels * sizeof (filter->buffer [0])) ;
-+} /* sinc_reset */
-+
-+/*========================================================================================
-+** Beware all ye who dare pass this point. There be dragons here.
-+*/
-+
-+int
-+sinc_process (SRC_PRIVATE *psrc, SRC_DATA *data)
-+{ SINC_FILTER *filter ;
-+ double input_index, src_ratio, count, float_increment, terminate ;
-+ increment_t increment, start_filter_index ;
-+ int half_filter_chan_len, samples_in_hand, ch ;
-+
-+ if (psrc->private_data == NULL)
-+ return SRC_ERR_NO_PRIVATE ;
-+
-+ filter = (SINC_FILTER*) psrc->private_data ;
-+
-+ /* If there is not a problem, this will be optimised out. */
-+ if (sizeof (filter->buffer [0]) != sizeof (data->data_in [0]))
-+ return SRC_ERR_SIZE_INCOMPATIBILITY ;
-+
-+ filter->in_count = data->input_frames * filter->channels ;
-+ filter->out_count = data->output_frames * filter->channels ;
-+ filter->in_used = filter->out_gen = 0 ;
-+
-+ src_ratio = psrc->last_ratio ;
-+
-+ /* Check the sample rate ratio wrt the buffer len. */
-+ count = (filter->coeff_half_len + 2.0) / filter->index_inc ;
-+ if (MIN (psrc->last_ratio, data->src_ratio) < 1.0)
-+ count /= MIN (psrc->last_ratio, data->src_ratio) ;
-+ count = lrint (ceil (count)) ;
-+
-+ /* Maximum coefficientson either side of center point. */
-+ half_filter_chan_len = filter->channels * (lrint (count) + 1) ;
-+
-+ input_index = psrc->last_position ;
-+ if (input_index >= 1.0)
-+ { filter->b_current = (filter->b_current + filter->channels * lrint (floor (input_index))) % filter->b_len ;
-+ input_index -= floor (input_index) ;
-+ } ;
-+
-+ float_increment = filter->index_inc ;
-+
-+ filter->b_current = (filter->b_current + filter->channels * lrint (floor (input_index))) % filter->b_len ;
-+ input_index -= floor (input_index) ;
-+
-+ terminate = 1.0 / src_ratio + 1e-20 ;
-+
-+ /* Main processing loop. */
-+ while (filter->out_gen < filter->out_count)
-+ {
-+ /* Need to reload buffer? */
-+ samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
-+
-+ if (samples_in_hand <= half_filter_chan_len)
-+ { prepare_data (filter, data, half_filter_chan_len) ;
-+
-+ samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
-+ if (samples_in_hand <= half_filter_chan_len)
-+ break ;
-+ } ;
-+
-+ /* This is the termination condition. */
-+ if (filter->b_real_end >= 0)
-+ { if (filter->b_current + input_index + terminate >= filter->b_real_end)
-+ break ;
-+ } ;
-+
-+ if (fabs (psrc->last_ratio - data->src_ratio) > 1e-10)
-+ src_ratio = psrc->last_ratio + filter->out_gen * (data->src_ratio - psrc->last_ratio) / (filter->out_count - 1) ;
-+
-+ float_increment = filter->index_inc * 1.0 ;
-+ if (src_ratio < 1.0)
-+ float_increment = filter->index_inc * src_ratio ;
-+
-+ increment = DOUBLE_TO_FP (float_increment) ;
-+
-+ start_filter_index = DOUBLE_TO_FP (input_index * float_increment) ;
-+
-+ for (ch = 0 ; ch < filter->channels ; ch++)
-+ { data->data_out [filter->out_gen] = (float_increment / filter->index_inc) *
-+ calc_output (filter, increment, start_filter_index, ch) ;
-+ filter->out_gen ++ ;
-+ } ;
-+
-+ /* Figure out the next index. */
-+ input_index += 1.0 / src_ratio ;
-+
-+ filter->b_current = (filter->b_current + filter->channels * lrint (floor (input_index))) % filter->b_len ;
-+ input_index -= floor (input_index) ;
-+ } ;
-+
-+ psrc->last_position = input_index ;
-+
-+ /* Save current ratio rather then target ratio. */
-+ psrc->last_ratio = src_ratio ;
-+
-+ data->input_frames_used = filter->in_used / filter->channels ;
-+ data->output_frames_gen = filter->out_gen / filter->channels ;
-+
-+ return SRC_ERR_NO_ERROR ;
-+} /* sinc_process */
-+
-+/*----------------------------------------------------------------------------------------
-+*/
-+
-+static void
-+prepare_data (SINC_FILTER *filter, SRC_DATA *data, int half_filter_chan_len)
-+{ int len = 0 ;
-+
-+ if (filter->b_real_end >= 0)
-+ return ; /* This doesn't make sense, so return. */
-+
-+ if (filter->b_current == 0)
-+ { /* Initial state. Set up zeros at the start of the buffer and
-+ ** then load new data after that.
-+ */
-+ len = filter->b_len - 2 * half_filter_chan_len ;
-+
-+ filter->b_current = filter->b_end = half_filter_chan_len ;
-+ }
-+ else if (filter->b_end + half_filter_chan_len + filter->channels < filter->b_len)
-+ { /* Load data at current end position. */
-+ len = MAX (filter->b_len - filter->b_current - half_filter_chan_len, 0) ;
-+ }
-+ else
-+ { /* Move data at end of buffer back to the start of the buffer. */
-+ len = filter->b_end - filter->b_current ;
-+ memmove (filter->buffer, filter->buffer + filter->b_current - half_filter_chan_len,
-+ (half_filter_chan_len + len) * sizeof (filter->buffer [0])) ;
-+
-+ filter->b_current = half_filter_chan_len ;
-+ filter->b_end = filter->b_current + len ;
-+
-+ /* Now load data at current end of buffer. */
-+ len = MAX (filter->b_len - filter->b_current - half_filter_chan_len, 0) ;
-+ } ;
-+
-+ len = MIN (filter->in_count - filter->in_used, len) ;
-+ len -= (len % filter->channels) ;
-+
-+ memcpy (filter->buffer + filter->b_end, data->data_in + filter->in_used,
-+ len * sizeof (filter->buffer [0])) ;
-+
-+ filter->b_end += len ;
-+ filter->in_used += len ;
-+
-+ if (filter->in_used == filter->in_count &&
-+ filter->b_end - filter->b_current < 2 * half_filter_chan_len && data->end_of_input)
-+ { /* Handle the case where all data in the current buffer has been
-+ ** consumed and this is the last buffer.
-+ */
-+
-+ if (filter->b_len - filter->b_end < half_filter_chan_len + 5)
-+ { /* If necessary, move data down to the start of the buffer. */
-+ len = filter->b_end - filter->b_current ;
-+ memmove (filter->buffer, filter->buffer + filter->b_current - half_filter_chan_len,
-+ (half_filter_chan_len + len) * sizeof (filter->buffer [0])) ;
-+
-+ filter->b_current = half_filter_chan_len ;
-+ filter->b_end = filter->b_current + len ;
-+ } ;
-+
-+ filter->b_real_end = filter->b_end ;
-+ len = half_filter_chan_len + 5 ;
-+
-+ memset (filter->buffer + filter->b_end, 0, len * sizeof (filter->buffer [0])) ;
-+ filter->b_end += len ;
-+ } ;
-+
-+ return ;
-+} /* prepare_data */
-+
-+
-+static double
-+calc_output (SINC_FILTER *filter, increment_t increment, increment_t start_filter_index, int ch)
-+{ double fraction, left, right, icoeff ;
-+ increment_t filter_index, max_filter_index ;
-+ int data_index, coeff_count, indx ;
-+
-+ /* Convert input parameters into fixed point. */
-+ max_filter_index = INT_TO_FP (filter->coeff_half_len) ;
-+
-+ /* First apply the left half of the filter. */
-+ filter_index = start_filter_index ;
-+ coeff_count = (max_filter_index - filter_index) / increment ;
-+ filter_index = filter_index + coeff_count * increment ;
-+ data_index = filter->b_current - filter->channels * coeff_count ;
-+
-+ left = 0.0 ;
-+ do
-+ { fraction = FP_TO_DOUBLE (filter_index) ;
-+ indx = FP_TO_INT (filter_index) ;
-+
-+ icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ;
-+
-+ left += icoeff * filter->buffer [data_index + ch] ;
-+
-+ filter_index -= increment ;
-+ data_index = data_index + filter->channels ;
-+ }
-+ while (filter_index >= MAKE_INCREMENT_T (0)) ;
-+
-+ /* Now apply the right half of the filter. */
-+ filter_index = increment - start_filter_index ;
-+ coeff_count = (max_filter_index - filter_index) / increment ;
-+ filter_index = filter_index + coeff_count * increment ;
-+ data_index = filter->b_current + filter->channels * (1 + coeff_count) ;
-+
-+ right = 0.0 ;
-+ do
-+ { fraction = FP_TO_DOUBLE (filter_index) ;
-+ indx = FP_TO_INT (filter_index) ;
-+
-+ icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ;
-+
-+ right += icoeff * filter->buffer [data_index + ch] ;
-+
-+ filter_index -= increment ;
-+ data_index = data_index - filter->channels ;
-+ }
-+ while (filter_index > MAKE_INCREMENT_T (0)) ;
-+
-+ return (left + right) ;
-+} /* calc_output */
-+
-diff -r -u --new-file k3b-r948463/libk3b/plugin/libsamplerate/src_zoh.c k3b-r948463.patched/libk3b/plugin/libsamplerate/src_zoh.c
---- k3b-r948463/libk3b/plugin/libsamplerate/src_zoh.c 1969-12-31 18:00:00.000000000 -0600
-+++ k3b-r948463.patched/libk3b/plugin/libsamplerate/src_zoh.c 2009-04-03 14:00:42.000000000 -0500
-@@ -0,0 +1,186 @@
-+/*
-+** Copyright (C) 2002,2003 Erik de Castro Lopo <erikd@mega-nerd.com>
-+**
-+** This program is free software; you can redistribute it and/or modify
-+** it under the terms of the GNU General Public License as published by
-+** the Free Software Foundation; either version 2 of the License, or
-+** (at your option) any later version.
-+**
-+** This program is distributed in the hope that it will be useful,
-+** but WITHOUT ANY WARRANTY; without even the implied warranty of
-+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+** GNU General Public License for more details.
-+**
-+** You should have received a copy of the GNU General Public License
-+** along with this program; if not, write to the Free Software
-+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+*/
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#include "config-k3b.h"
-+#include "float_cast.h"
-+#include "common.h"
-+
-+static void zoh_reset (SRC_PRIVATE *psrc) ;
-+
-+/*========================================================================================
-+*/
-+
-+#define ZOH_MAGIC_MARKER MAKE_MAGIC('s','r','c','z','o','h')
-+
-+typedef struct
-+{ int zoh_magic_marker ;
-+ int channels ;
-+ long in_count, in_used ;
-+ long out_count, out_gen ;
-+ float last_value [1] ;
-+} ZOH_DATA ;
-+
-+/*----------------------------------------------------------------------------------------
-+*/
-+
-+int
-+zoh_process (SRC_PRIVATE *psrc, SRC_DATA *data)
-+{ ZOH_DATA *zoh ;
-+ double src_ratio, input_index ;
-+ int ch ;
-+
-+ if (psrc->private_data == NULL)
-+ return SRC_ERR_NO_PRIVATE ;
-+
-+ zoh = (ZOH_DATA*) psrc->private_data ;
-+
-+ zoh->in_count = data->input_frames * zoh->channels ;
-+ zoh->out_count = data->output_frames * zoh->channels ;
-+ zoh->in_used = zoh->out_gen = 0 ;
-+
-+ src_ratio = psrc->last_ratio ;
-+ input_index = psrc->last_position ;
-+
-+ /* Calculate samples before first sample in input array. */
-+ while (input_index > 0.0 && input_index < 1.0 && zoh->out_gen < zoh->out_count)
-+ {
-+ if (zoh->in_used + input_index >= zoh->in_count)
-+ break ;
-+
-+ if (fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
-+ src_ratio = psrc->last_ratio + zoh->out_gen * (data->src_ratio - psrc->last_ratio) / (zoh->out_count - 1) ;
-+
-+ for (ch = 0 ; ch < zoh->channels ; ch++)
-+ { data->data_out [zoh->out_gen] = zoh->last_value [ch] ;
-+ zoh->out_gen ++ ;
-+ } ;
-+
-+ /* Figure out the next index. */
-+ input_index += 1.0 / src_ratio ;
-+ } ;
-+
-+ zoh->in_used += zoh->channels * lrint (floor (input_index)) ;
-+ input_index -= floor (input_index) ;
-+
-+ /* Main processing loop. */
-+ while (zoh->out_gen < zoh->out_count && zoh->in_used + input_index < zoh->in_count)
-+ {
-+ if (fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
-+ src_ratio = psrc->last_ratio + zoh->out_gen * (data->src_ratio - psrc->last_ratio) / (zoh->out_count - 1) ;
-+
-+ for (ch = 0 ; ch < zoh->channels ; ch++)
-+ { data->data_out [zoh->out_gen] = data->data_in [zoh->in_used + ch] ;
-+ zoh->out_gen ++ ;
-+ } ;
-+
-+ /* Figure out the next index. */
-+ input_index += 1.0 / src_ratio ;
-+
-+ zoh->in_used += zoh->channels * lrint (floor (input_index)) ;
-+ input_index -= floor (input_index) ;
-+ } ;
-+
-+ psrc->last_position = input_index ;
-+
-+ if (zoh->in_used > 0)
-+ for (ch = 0 ; ch < zoh->channels ; ch++)
-+ zoh->last_value [ch] = data->data_in [zoh->in_used - zoh->channels + ch] ;
-+
-+ /* Save current ratio rather then target ratio. */
-+ psrc->last_ratio = src_ratio ;
-+
-+ data->input_frames_used = zoh->in_used / zoh->channels ;
-+ data->output_frames_gen = zoh->out_gen / zoh->channels ;
-+
-+ return SRC_ERR_NO_ERROR ;
-+} /* zoh_process */
-+
-+/*------------------------------------------------------------------------------
-+*/
-+
-+const char*
-+zoh_get_name (int src_enum)
-+{
-+ if (src_enum == SRC_ZERO_ORDER_HOLD)
-+ return "ZOH Interpolator" ;
-+
-+ return NULL ;
-+} /* zoh_get_name */
-+
-+const char*
-+zoh_get_description (int src_enum)
-+{
-+ if (src_enum == SRC_ZERO_ORDER_HOLD)
-+ return "Zero order hold interpolator, very fast, poor quality." ;
-+
-+ return NULL ;
-+} /* zoh_get_descrition */
-+
-+int
-+zoh_set_converter (SRC_PRIVATE *psrc, int src_enum)
-+{ ZOH_DATA *zoh = NULL;
-+
-+ if (src_enum != SRC_ZERO_ORDER_HOLD)
-+ return SRC_ERR_BAD_CONVERTER ;
-+
-+ if (psrc->private_data != NULL)
-+ { zoh = (ZOH_DATA*) psrc->private_data ;
-+ if (zoh->zoh_magic_marker != ZOH_MAGIC_MARKER)
-+ { free (psrc->private_data) ;
-+ psrc->private_data = NULL ;
-+ } ;
-+ } ;
-+
-+ if (psrc->private_data == NULL)
-+ { zoh = calloc (1, sizeof (*zoh) + psrc->channels * sizeof (float)) ;
-+ if (zoh == NULL)
-+ return SRC_ERR_MALLOC_FAILED ;
-+ psrc->private_data = zoh ;
-+ } ;
-+
-+ zoh->zoh_magic_marker = ZOH_MAGIC_MARKER ;
-+ zoh->channels = psrc->channels ;
-+
-+ psrc->process = zoh_process ;
-+ psrc->reset = zoh_reset ;
-+
-+ zoh_reset (psrc) ;
-+
-+ return SRC_ERR_NO_ERROR ;
-+} /* zoh_set_converter */
-+
-+/*===================================================================================
-+*/
-+
-+static void
-+zoh_reset (SRC_PRIVATE *psrc)
-+{ ZOH_DATA *zoh ;
-+
-+ zoh = (ZOH_DATA*) psrc->private_data ;
-+ if (zoh == NULL)
-+ return ;
-+
-+ zoh->channels = psrc->channels ;
-+ memset (zoh->last_value, 0, sizeof (zoh->last_value [0]) * zoh->channels) ;
-+
-+ return ;
-+} /* zoh_reset */
-diff -r -u --new-file k3b-r948463/plugins/decoder/wave/k3bwavedecoder.cpp k3b-r948463.patched/plugins/decoder/wave/k3bwavedecoder.cpp
---- k3b-r948463/plugins/decoder/wave/k3bwavedecoder.cpp 2009-04-03 01:16:04.000000000 -0500
-+++ k3b-r948463.patched/plugins/decoder/wave/k3bwavedecoder.cpp 2009-04-03 14:00:42.000000000 -0500
-@@ -344,7 +344,7 @@
- else if( name == i18n("Sampling Rate") )
- return i18n("%1 Hz",d->sampleRate);
- else if( name == i18n("Sample Size") )
-- return i18np("1 bit","%1 bits",d->sampleSize);
-+ return i18n("%1 bits",d->sampleSize);
- else
- return QString();
- }
diff --git a/source/kde/k3b/local.options b/source/kde/k3b/local.options
index 6122f1141..c085ca955 100644
--- a/source/kde/k3b/local.options
+++ b/source/kde/k3b/local.options
@@ -1 +1,2 @@
-VERSION=1.66.0
+VERSION=1.91.0
+BUILD=3
diff --git a/source/kde/kaudiocreator/kaudiocreator.SlackBuild b/source/kde/kaudiocreator/kaudiocreator.SlackBuild
index c54d53eb8..2a8dfc0f0 100755
--- a/source/kde/kaudiocreator/kaudiocreator.SlackBuild
+++ b/source/kde/kaudiocreator/kaudiocreator.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -53,16 +53,19 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+mkdir build
+cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc/kde \
- .
+ ..
make $NUMJOBS || exit 1
make install DESTDIR=$PKG || exit 1
+cd -
if [ -d $PKG/usr/man ]; then
gzip -9 $PKG/usr/man/man?/*
@@ -71,10 +74,8 @@ fi
mkdir -p $PKG/usr/doc/kaudiocreator-$VERSION
cp -a COPYING* TODO $PKG/usr/doc/kaudiocreator-$VERSION
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-)
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/kde/kaudiocreator/local.options b/source/kde/kaudiocreator/local.options
index 977577b09..9ec4f05c6 100644
--- a/source/kde/kaudiocreator/local.options
+++ b/source/kde/kaudiocreator/local.options
@@ -1 +1,2 @@
-VERSION=r1008583
+VERSION=r1118889
+BUILD=1
diff --git a/source/kde/kaudiocreator/slack-desc b/source/kde/kaudiocreator/slack-desc
index 607c15fde..3de377236 100644
--- a/source/kde/kaudiocreator/slack-desc
+++ b/source/kde/kaudiocreator/slack-desc
@@ -8,7 +8,7 @@
|-----handy-ruler-----------------------------------------------|
kaudiocreator: kaudiocreator (CD ripper and audio encoder)
kaudiocreator:
-kaudiocreator: kaudiocreater is a kde frontend for ripping and encoding audio
+kaudiocreator: kaudiocreater is a KDE frontend for ripping and encoding audio
kaudiocreator: to/from optical media.
kaudiocreator:
kaudiocreator:
diff --git a/source/kde/kdeaccessibility/kdeaccessibility.SlackBuild b/source/kde/kdeaccessibility/kdeaccessibility.SlackBuild
index 96b5247f1..0f65ef6b1 100755
--- a/source/kde/kdeaccessibility/kdeaccessibility.SlackBuild
+++ b/source/kde/kdeaccessibility/kdeaccessibility.SlackBuild
@@ -56,6 +56,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdeaccessibility/slack-desc b/source/kde/kdeaccessibility/slack-desc
index dd06f475c..91669ef7d 100644
--- a/source/kde/kdeaccessibility/slack-desc
+++ b/source/kde/kdeaccessibility/slack-desc
@@ -6,7 +6,7 @@
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-kdeaccessibility: kdeaccessibility
+kdeaccessibility: kdeaccessibility (Accessibility programs for KDE)
kdeaccessibility:
kdeaccessibility: KDE accessibility programs, including kmag (a screen magnifier),
kdeaccessibility: kmousetool (clicks the mouse for you), and kmouth (a speech
diff --git a/source/kde/kdeadmin/kdeadmin.SlackBuild b/source/kde/kdeadmin/kdeadmin.SlackBuild
index 43a41da35..621d03c27 100755
--- a/source/kde/kdeadmin/kdeadmin.SlackBuild
+++ b/source/kde/kdeadmin/kdeadmin.SlackBuild
@@ -53,9 +53,13 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+zcat $CWD/knetworkconf.diff.gz | patch -p1 --verbose || exit 1
+
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
+ --with-shadow \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
@@ -63,6 +67,8 @@ cd build
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ -DKU_FIRSTGID=1000 \
+ -DKU_FIRSTUID=1000 \
..
make $NUMJOBS || exit 1
make install DESTDIR=$PKG || exit 1
diff --git a/source/kde/kdeadmin/knetworkconf.diff b/source/kde/kdeadmin/knetworkconf.diff
new file mode 100644
index 000000000..ed5dbeeb3
--- /dev/null
+++ b/source/kde/kdeadmin/knetworkconf.diff
@@ -0,0 +1,137 @@
+--- ./knetworkconf/backends/platform.pl.cmake.orig 2009-07-28 14:43:49.000000000 -0500
++++ ./knetworkconf/backends/platform.pl.cmake 2010-05-03 20:53:00.000000000 -0500
+@@ -93,6 +93,9 @@
+ "slackware-9.1.0" => "Slackware 9.1.0",
+ "slackware-10.0.0" => "Slackware 10.0.0",
+ "slackware-10.1.0" => "Slackware 10.1.0",
++ "slackware-12.2.0" => "Slackware 12.2.0",
++ "slackware-13.0.0.0.0" => "Slackware 13.0.0.0.0",
++ "slackware-13.1.0" => "Slackware 13.1.0",
+ "freebsd-4" => "FreeBSD 4",
+ "freebsd-5" => "FreeBSD 5",
+ "freebsd-6" => "FreeBSD 6",
+--- ./knetworkconf/backends/network-conf.cmake.orig 2009-07-28 14:43:49.000000000 -0500
++++ ./knetworkconf/backends/network-conf.cmake 2010-05-03 20:53:48.000000000 -0500
+@@ -77,7 +77,8 @@
+ "mandriva-2006.1", "mandriva-2007.0", "mandriva-2007.1", "mandriva-2008.0", "mandriva-2008.1",
+ "mandriva-2009.0", "mandriva-2009.1", "mandriva-2010.0",
+ "vine-3.0", "vine-3.1",
+- "slackware-9.1.0", "slackware-10.0.0", "slackware-10.1.0",
++ "slackware-9.1.0", "slackware-10.0.0", "slackware-10.1.0", "slackware-12.2.0", "slackware-13.0.0.0.0",
++ "slackware-13.1.0",
+ "gentoo", "vlos-1.2", "freebsd-5", "freebsd-6", "ark");
+
+ $description =<<"end_of_description;";
+--- ./knetworkconf/backends/service.pl.cmake.orig 2009-07-28 14:43:49.000000000 -0500
++++ ./knetworkconf/backends/service.pl.cmake 2010-05-03 20:54:07.000000000 -0500
+@@ -281,6 +281,9 @@
+ "slackware-9.1.0" => "slackware-9.1.0",
+ "slackware-10.0.0" => "slackware-9.1.0",
+ "slackware-10.1.0" => "slackware-9.1.0",
++ "slackware-12.2.0" => "slackware-9.1.0",
++ "slackware-13.0.0.0.0" => "slackware-9.1.0",
++ "slackware-13.1.0" => "slackware-9.1.0",
+
+ "gentoo" => "gentoo",
+ "vlos-1.2" => "gentoo",
+@@ -314,7 +317,11 @@
+ "nonetwork" => "RECOVER"
+ },
+ "freebsd-5" => {"rc" => "GRAPHICAL" },
+- "slackware-9.1.0" => {"4" => "GRAPHICAL" }
++ "slackware-9.1.0" => {"0" => "HALT",
++ "3" => "NONE",
++ "4" => "GRAPHICAL",
++ "6" => "REBOOT"
++ }
+ );
+
+ $distro = $dist_map{$gst_dist};
+--- ./knetworkconf/backends/network.pl.cmake.orig 2009-07-28 14:43:49.000000000 -0500
++++ ./knetworkconf/backends/network.pl.cmake 2010-05-03 20:55:09.000000000 -0500
+@@ -537,6 +537,9 @@
+ "slackware-9.1.0" => "redhat-6.2",
+ "slackware-10.0.0" => "redhat-6.2",
+ "slackware-10.1.0" => "redhat-6.2",
++ "slackware-12.2.0" => "redhat-6.2",
++ "slackware-13.0.0.0.0" => "redhat-6.2",
++ "slackware-13.1.0" => "redhat-6.2",
+ "gentoo" => "debian-2.2",
+ "vlos-1.2" => "debian-2.2",
+ "freebsd-5" => "debian-2.2",
+@@ -1839,6 +1842,9 @@
+ "slackware-9.1.0" => \&gst_network_deb22_get_file,
+ "slackware-10.0.0" => \&gst_network_deb22_get_file,
+ "slackware-10.1.0" => \&gst_network_deb22_get_file,
++ "slackware-12.2.0" => \&gst_network_deb22_get_file,
++ "slackware-13.0.0.0.0" => \&gst_network_deb22_get_file,
++ "slackware-13.1.0" => \&gst_network_deb22_get_file,
+ "gentoo" => \&gst_network_deb22_get_file,
+ "freebsd-5" => \&gst_network_deb22_get_file,
+ "freebsd-6" => \&gst_network_deb22_get_file,
+@@ -3961,6 +3967,9 @@
+ "slackware-9.1.0" => "",
+ "slackware-10.0.0" => "",
+ "slackware-10.1.0" => "",
++ "slackware-12.2.0" => "",
++ "slackware-13.0.0.0.0" => "",
++ "slackware-13.1.0" => "",
+ "gentoo" => "",
+ "vlos-1.2" => "",
+ "freebsd-5" => "",
+@@ -4109,6 +4118,9 @@
+ "slackware-9.1.0" => "slackware-9.1.0",
+ "slackware-10.0.0" => "slackware-9.1.0",
+ "slackware-10.1.0" => "slackware-9.1.0",
++ "slackware-12.2.0" => "slackware-9.1.0",
++ "slackware-13.0.0.0.0" => "slackware-9.1.0",
++ "slackware-13.1.0" => "slackware-9.1.0",
+ "gentoo" => "gentoo",
+ "vlos-1.2" => "vlos-1.2",
+ "freebsd-5" => "freebsd-5",
+@@ -4392,6 +4404,7 @@
+ [ "hostname", \&gst_parse_fq_hostname, HOSTNAME ],
+ [ "nameserver", \&gst_parse_split_all_unique_hash_comment, RESOLV_CONF, "nameserver", "[ \t]+" ],
+ [ "searchdomain", \&gst_parse_split_first_array_unique, RESOLV_CONF, "search", "[ \t]+", "[ \t]+" ],
++ [ "domain", \&gst_parse_fq_domain, HOSTNAME ],
+ [ "domain", \&gst_parse_split_first_str, RESOLV_CONF, "domain", "[ \t]+" ],
+ [ "order", \&gst_parse_split_first_array, HOST_CONF, "order", "[ \t]+", ",[ \t]*" ],
+ [ "hostmatch", \&gst_parse_split_first_bool, HOST_CONF, "multi", "[ \t]+" ],
+@@ -4608,6 +4621,9 @@
+ "slackware-9.1.0" => "slackware-9.1.0",
+ "slackware-10.0.0" => "slackware-9.1.0",
+ "slackware-10.1.0" => "slackware-9.1.0",
++ "slackware-12.2.0" => "slackware-9.1.0",
++ "slackware-13.0.0.0.0" => "slackware-9.1.0",
++ "slackware-13.1.0" => "slackware-9.1.0",
+ "gentoo" => "gentoo",
+ "vlos-1.2" => "vlos-1.2",
+ "freebsd-5" => "freebsd-5",
+@@ -5502,6 +5518,9 @@
+ "slackware-9.1.0" => "slackware-9.1.0",
+ "slackware-10.0.0" => "slackware-9.1.0",
+ "slackware-10.1.0" => "slackware-9.1.0",
++ "slackware-12.2.0" => "slackware-9.1.0",
++ "slackware-13.0.0.0.0" => "slackware-9.1.0",
++ "slackware-13.1.0" => "slackware-9.1.0",
+ "gentoo" => "gentoo",
+ "vlos-1.2" => "vlos-1.2",
+ "freebsd-5" => "freebsd-5",
+@@ -5772,6 +5791,7 @@
+ [ "hostname", \&gst_replace_fq_hostname, HOSTNAME, "%hostname%", "%domain%" ],
+ [ "hostname", \&gst_network_run_hostname ],
+ [ "gateway", \&gst_replace_rcinet1conf_global, RC_INET_CONF, GATEWAY ],
++ [ "domain", \&gst_parse_fq_domain, HOSTNAME ],
+ [ "domain", \&gst_replace_join_first_str, RESOLV_CONF, "domain", "[ \t]+" ],
+ [ "nameserver", \&gst_replace_join_all, RESOLV_CONF, "nameserver", "[ \t]+" ],
+ [ "searchdomain", \&gst_replace_join_first_array, RESOLV_CONF, "search", "[ \t]+", "[ \t]+" ],
+@@ -5951,6 +5971,9 @@
+ "slackware-9.1.0" => "slackware-9.1.0",
+ "slackware-10.0.0" => "slackware-9.1.0",
+ "slackware-10.1.0" => "slackware-9.1.0",
++ "slackware-12.2.0" => "slackware-9.1.0",
++ "slackware-13.0.0.0.0" => "slackware-9.1.0",
++ "slackware-13.1.0" => "slackware-9.1.0",
+ "gentoo" => "gentoo",
+ "vlos-1.2" => "vlos-1.2",
+ "freebsd-5" => "freebsd-5",
diff --git a/source/kde/kdeadmin/slack-desc b/source/kde/kdeadmin/slack-desc
index 644f44e5c..cef430766 100644
--- a/source/kde/kdeadmin/slack-desc
+++ b/source/kde/kdeadmin/slack-desc
@@ -7,7 +7,7 @@
# leave one space after the ':'.
|-----handy-ruler---------------------------------------------------|
-kdeadmin: kdeadmin
+kdeadmin: kdeadmin (System Administration tools)
kdeadmin:
kdeadmin: KDE system administration tools.
kdeadmin:
diff --git a/source/kde/kdeartwork/kdeartwork.SlackBuild b/source/kde/kdeartwork/kdeartwork.SlackBuild
index 4000569a4..02c197e8c 100755
--- a/source/kde/kdeartwork/kdeartwork.SlackBuild
+++ b/source/kde/kdeartwork/kdeartwork.SlackBuild
@@ -56,6 +56,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
@@ -63,6 +64,7 @@ cd build
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ -DKSCREENSAVER_SOUND_SUPPORT=ON \
..
make $NUMJOBS || exit 1
make install DESTDIR=$PKG || exit 1
diff --git a/source/kde/kdeartwork/slack-desc b/source/kde/kdeartwork/slack-desc
index 005f4aeab..cc5f6f18e 100644
--- a/source/kde/kdeartwork/slack-desc
+++ b/source/kde/kdeartwork/slack-desc
@@ -6,7 +6,7 @@
# leave one space after the ':'.
|-----handy-ruler-------------------------------------------------|
-kdeartwork: kdeartwork
+kdeartwork: kdeartwork (Artwork for KDE)
kdeartwork:
kdeartwork: Additional themes, screensavers, sounds, wallpapers, and window
kdeartwork: styles.
diff --git a/source/kde/kdebase-runtime/kdebase-runtime-text-render-969192.diff b/source/kde/kdebase-runtime/kdebase-runtime-text-render-969192.diff
deleted file mode 100644
index 811f922e3..000000000
--- a/source/kde/kdebase-runtime/kdebase-runtime-text-render-969192.diff
+++ /dev/null
@@ -1,14 +0,0 @@
-Index: trunk/KDE/kdebase/runtime/kstyles/oxygen/oxygen.cpp
-===================================================================
---- trunk/KDE/kdebase/runtime/kstyles/oxygen/oxygen.cpp (revision 969191)
-+++ trunk/KDE/kdebase/runtime/kstyles/oxygen/oxygen.cpp (revision 969192)
-@@ -3067,7 +3067,8 @@
-
- if (const QStyleOptionToolButton* tbOpt = qstyleoption_cast<const QStyleOptionToolButton*>(option)) {
- if ((!tbOpt->icon.isNull()) && (!tbOpt->text.isEmpty()) && tbOpt->toolButtonStyle == Qt::ToolButtonTextUnderIcon)
-- size.setHeight(size.height()-9);
-+ // TODO: Make this font size dependent
-+ size.setHeight(size.height()-5);
- }
-
- // We want to avoid super-skiny buttons, for things like "up" when icons + text
diff --git a/source/kde/kdebase-runtime/kdebase-runtime.SlackBuild b/source/kde/kdebase-runtime/kdebase-runtime.SlackBuild
index 90b25549d..0b2cddc80 100755
--- a/source/kde/kdebase-runtime/kdebase-runtime.SlackBuild
+++ b/source/kde/kdebase-runtime/kdebase-runtime.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -47,9 +47,6 @@ echo "Building kdebase-runtime-$VERSION..."
tar xvf $CWD/../src/kdebase-runtime-$VERSION.tar.?z* || exit 1
cd kdebase-runtime-$VERSION
-# Fix a bug where the top and bottom of text is improperly cropped:
-zcat $CWD/kdebase-runtime-text-render-969192.diff.gz | patch -p4 --verbose || exit 1
-
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -60,6 +57,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdebase-runtime/slack-desc b/source/kde/kdebase-runtime/slack-desc
index 0b8de17be..09bf5774f 100644
--- a/source/kde/kdebase-runtime/slack-desc
+++ b/source/kde/kdebase-runtime/slack-desc
@@ -5,7 +5,7 @@
# exactly 11 lines for the formatting to be correct. It's also customary to
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-kdebase-runtime: kdebase-runtime
+kdebase-runtime: kdebase-runtime (KDE runtime core)
kdebase-runtime:
kdebase-runtime: This package contains core components of the KDE base runtime module.
kdebase-runtime:
diff --git a/source/kde/kdebase-workspace/kcmshell_root_privilege.patch b/source/kde/kdebase-workspace/kcmshell_root_privilege.patch
new file mode 100644
index 000000000..f81a98ed9
--- /dev/null
+++ b/source/kde/kdebase-workspace/kcmshell_root_privilege.patch
@@ -0,0 +1,43 @@
+--- kdebase-workspace-4.3.85/systemsettings/core/ModuleView.cpp~ 2009-12-11 00:14:03.000000000 +0100
++++ kdebase-workspace-4.3.85/systemsettings/core/ModuleView.cpp 2009-12-22 15:47:35.000000000 +0100
+@@ -40,6 +40,7 @@
+ #include <KCModuleProxy>
+ #include <KStandardGuiItem>
+ #include <KDialogButtonBox>
++#include <KStandardDirs>
+ #include <kauthaction.h>
+
+ #include "MenuItem.h"
+@@ -129,6 +130,32 @@
+ return;
+ }
+
++ if ( menuItem->service()->property( "X-KDE-RootOnly", QVariant::Bool ).toBool() ) {
++ QString kdesu = KStandardDirs::findExe( "kdesu" );
++ QString cmd = menuItem->service()->exec().trimmed();
++
++ /* Prepare the process to run the kcmshell */
++ if ( cmd.left(5) == "kdesu" )
++ {
++ cmd = cmd.remove(0,5).trimmed();
++
++ /* Remove all kdesu switches */
++ while ( cmd.length() > 1 && cmd[ 0 ] == '-' )
++ cmd = cmd.remove( 0, cmd.indexOf( ' ' ) ).trimmed();
++ }
++
++ if ( cmd.left(9) == "kcmshell4" )
++ cmd = cmd.remove(0,9).trimmed();
++
++ QStringList args;
++ args << "-i" << QString( menuItem->service()->icon() ) << "-c" << QString( "%1 %2 --lang %3" ).arg( KStandardDirs::locate("exe", "kcmshell4") ).arg( cmd ).arg( KGlobal::locale()->language() );
++
++ kDebug() << "Starting root module: " << args;
++ QProcess::startDetached( kdesu, args );
++
++ return;
++ }
++
+ QList<KCModuleInfo*> modules;
+ if ( menuItem->children().empty() ) {
+ modules << &menuItem->item();
diff --git a/source/kde/kdebase-workspace/kdebase-workspace.SlackBuild b/source/kde/kdebase-workspace/kdebase-workspace.SlackBuild
index 63e5b2512..1dd46d610 100755
--- a/source/kde/kdebase-workspace/kdebase-workspace.SlackBuild
+++ b/source/kde/kdebase-workspace/kdebase-workspace.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -53,9 +53,15 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+cat $CWD/kcmshell_root_privilege.patch | patch -p1 --verbose || exit 1
+
+# Increase the timeout to accomodate slow-to-initialize video chipset drivers:
+zcat $CWD/kdebase-workspace.kdm.server.timeout.diff.gz | patch -p1 --verbose || exit 1
+
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
@@ -72,6 +78,8 @@ if [ -d $PKG/usr/man ]; then
gzip -9 $PKG/usr/man/man?/*
fi
+# Use ck-launch-session in runlevel 3,
+# to start and attach a ConsoleKit session to the X session:
mkdir -p $PKG/etc/X11/xinit
cat $CWD/xinit/xinitrc.kde > $PKG/etc/X11/xinit/xinitrc.kde
chmod 0755 $PKG/etc/X11/xinit/xinitrc.kde
@@ -96,6 +104,9 @@ mkdir -p $PKG/etc/kde
mv $PKG/usr/share/config/kdm $PKG/etc/kde
( cd $PKG/usr/share/config ; ln -sf ../../../etc/kde/kdm . )
+# Move the polkit dbus configuration files to the proper place:
+mv $PKG/etc/kde/dbus-1 $PKG/etc/
+
# This is fubar:
rm -f $PKG/usr/share/icons/hicolor/index.theme
diff --git a/source/kde/kdebase-workspace/kdebase-workspace.kdm.server.timeout.diff b/source/kde/kdebase-workspace/kdebase-workspace.kdm.server.timeout.diff
new file mode 100644
index 000000000..56deff547
--- /dev/null
+++ b/source/kde/kdebase-workspace/kdebase-workspace.kdm.server.timeout.diff
@@ -0,0 +1,14 @@
+--- ./kdm/config.def.orig 2010-02-26 12:32:20.000000000 -0600
++++ ./kdm/config.def 2010-05-03 22:11:48.000000000 -0500
+@@ -1332,9 +1332,9 @@
+
+ Key: ServerTimeout
+ Type: int
+-Default: 15
++Default: 45
+ User: core
+-Instance: #:*/
++Instance: :*/
+ Comment:
+ How long to wait for a local &X-Server; to come up.
+ Description:
diff --git a/source/kde/kdebase-workspace/slack-desc b/source/kde/kdebase-workspace/slack-desc
index e828d208f..87f2c4182 100644
--- a/source/kde/kdebase-workspace/slack-desc
+++ b/source/kde/kdebase-workspace/slack-desc
@@ -1,8 +1,8 @@
|-----handy-ruler------------------------------------------------------|
-kdebase-workspace: kdebase-workspace - the KDE Workspace
+kdebase-workspace: kdebase-workspace (KDE Plasma Desktop)
kdebase-workspace:
-kdebase-workspace: The KDE Workspace (kdebase-workspace) package consists of what is
-kdebase-workspace: essentially the KDE workspace presented to the user.
+kdebase-workspace: This package provides the essential parts of the KDE Plasma Desktop
+kdebase-workspace: that are presented to the user.
kdebase-workspace:
kdebase-workspace:
kdebase-workspace:
diff --git a/source/kde/kdebase-workspace/xinit/xinitrc.kde b/source/kde/kdebase-workspace/xinit/xinitrc.kde
index 2fda1fab2..5e11a9ac7 100755
--- a/source/kde/kdebase-workspace/xinit/xinitrc.kde
+++ b/source/kde/kdebase-workspace/xinit/xinitrc.kde
@@ -25,4 +25,4 @@ if [ -f $usermodmap ]; then
fi
# Start the window manager:
-startkde
+ck-launch-session startkde
diff --git a/source/kde/kdebase/kdebase.SlackBuild b/source/kde/kdebase/kdebase.SlackBuild
index 54a01f2a7..89ff3a503 100755
--- a/source/kde/kdebase/kdebase.SlackBuild
+++ b/source/kde/kdebase/kdebase.SlackBuild
@@ -46,6 +46,7 @@ cd $TMP
echo "Building kdebase-$VERSION..."
tar xvf $CWD/../src/kdebase-$VERSION.tar.?z* || exit 1
cd kdebase-$VERSION
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -56,6 +57,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
@@ -63,6 +65,7 @@ cd build
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ -DRUN_KAPPFINDER=ON \
..
make $NUMJOBS || exit 1
make install DESTDIR=$PKG || exit 1
@@ -84,7 +87,7 @@ chmod 0755 $PKG/etc/profile.d/*
# still documented in the help manual. Here's a way to get the same
# thing, and it works here, but I honestly don't know how it will act
# everywhere with every shell. I just know it works with bash and ksh
-sed -i 's/Exec=konsole/Exec=konsole -e $SHELL -l/' \
+sed -i -e 's/Exec=konsole/Exec=konsole -e $SHELL -l/' \
$PKG/usr/share/applications/kde4/konsole.desktop
## I find this a little bit too bright... <change by pjv>
diff --git a/source/kde/kdebase/module_manager_include.diff b/source/kde/kdebase/module_manager_include.diff
new file mode 100644
index 000000000..498b2afb0
--- /dev/null
+++ b/source/kde/kdebase/module_manager_include.diff
@@ -0,0 +1,19 @@
+--- trunk/KDE/kdebase/apps/konqueror/sidebar/module_manager.h 2009/11/13 18:46:51 1048689
++++ trunk/KDE/kdebase/apps/konqueror/sidebar/module_manager.h 2010/01/07 20:09:11 1071281
+@@ -18,6 +18,9 @@
+ Boston, MA 02110-1301, USA.
+ */
+
++#ifndef MODULE_MANAGER_H
++#define MODULE_MANAGER_H
++
+ #include <QStringList>
+ #include <kservice.h>
+ class KConfigGroup;
+@@ -74,3 +77,5 @@
+ KConfigGroup *m_config; // owned by SidebarWidget
+ QString m_localPath; // local path
+ };
++
++#endif
+
diff --git a/source/kde/kdebase/slack-desc b/source/kde/kdebase/slack-desc
index 34e3c5d08..bf91423e9 100644
--- a/source/kde/kdebase/slack-desc
+++ b/source/kde/kdebase/slack-desc
@@ -6,11 +6,11 @@
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-kdebase: kdebase (KDE base package)
+kdebase: kdebase (KDE core applications and files)
+kdebase:
+kdebase: This package provides the core applications and infrastructure files
+kdebase: for the KDE Plasma Desktop.
kdebase:
-kdebase: kdebase is the second mandatory package (besides kdelibs) for the
-kdebase: K Desktop Environment. Here we have various applications and
-kdebase: infrastructure files and libraries.
kdebase:
kdebase:
kdebase:
diff --git a/source/kde/kdebindings/kdebindings-len-ptr-rfloat.diff b/source/kde/kdebindings/kdebindings-len-ptr-rfloat.diff
new file mode 100644
index 000000000..0f2edc125
--- /dev/null
+++ b/source/kde/kdebindings/kdebindings-len-ptr-rfloat.diff
@@ -0,0 +1,207 @@
+--- kdebindings-4.3.0/ruby/krossruby/rubyfunction.h.org 2008-07-29 05:47:40.000000000 -0600
++++ kdebindings-4.3.0/ruby/krossruby/rubyfunction.h 2009-08-09 03:04:00.105143195 -0600
+@@ -88,11 +88,11 @@
+ //#endif
+ VALUE info = rb_gv_get("$!");
+ VALUE bt = rb_funcall(info, rb_intern("backtrace"), 0);
+- VALUE message = RARRAY(bt)->ptr[0];
++ VALUE message = RARRAY_PTR(bt)[0];
+ fprintf(stderr,"%s: %s (%s)\n", STR2CSTR(message), STR2CSTR(rb_obj_as_string(info)), rb_class2name(CLASS_OF(info)));
+- for(int i = 1; i < RARRAY(bt)->len; ++i)
+- if( TYPE(RARRAY(bt)->ptr[i]) == T_STRING )
+- fprintf(stderr,"\tfrom %s\n", STR2CSTR(RARRAY(bt)->ptr[i]));
++ for(int i = 1; i < RARRAY_LEN(bt); ++i)
++ if( TYPE(RARRAY_PTR(bt)[i]) == T_STRING )
++ fprintf(stderr,"\tfrom %s\n", STR2CSTR(RARRAY_PTR(bt)[i]));
+ //ruby_nerrs++;
+ return Qnil;
+ }
+--- kdebindings-4.3.0/ruby/krossruby/rubyobject.cpp.org 2008-06-18 06:41:05.000000000 -0600
++++ kdebindings-4.3.0/ruby/krossruby/rubyobject.cpp 2009-08-08 21:55:21.209147733 -0600
+@@ -34,7 +34,7 @@
+
+ VALUE info = rb_gv_get("$!");
+ VALUE bt = rb_funcall(info, rb_intern("backtrace"), 0);
+- VALUE message = RARRAY(bt)->ptr[0];
++ VALUE message = RARRAY_PTR(bt)[0];
+
+ QString errormessage = QString("%1: %2 (%3)")
+ .arg( STR2CSTR(message) )
+@@ -43,9 +43,9 @@
+ fprintf(stderr, "%s\n", errormessage.toLatin1().data());
+
+ QString tracemessage;
+- for(int i = 1; i < RARRAY(bt)->len; ++i) {
+- if( TYPE(RARRAY(bt)->ptr[i]) == T_STRING ) {
+- QString s = QString("%1\n").arg( STR2CSTR(RARRAY(bt)->ptr[i]) );
++ for(int i = 1; i < RARRAY_LEN(bt); ++i) {
++ if( TYPE(RARRAY_PTR(bt)[i]) == T_STRING ) {
++ QString s = QString("%1\n").arg( STR2CSTR(RARRAY_PTR(bt)[i]) );
+ Q_ASSERT( ! s.isNull() );
+ tracemessage += s;
+ fprintf(stderr, "\t%s", s.toLatin1().data());
+@@ -74,7 +74,7 @@
+ ID functionId = rb_ary_entry(args, 1);
+ VALUE arguments = rb_ary_entry(args, 2);
+ Q_ASSERT( TYPE(arguments) == T_ARRAY );
+- return rb_funcall2(self, functionId, RARRAY(arguments)->len, RARRAY(arguments)->ptr);
++ return rb_funcall2(self, functionId, RARRAY_LEN(arguments), RARRAY_PTR(arguments));
+ }
+
+ class RubyObject::Private
+@@ -112,8 +112,8 @@
+ VALUE methods;
+ const char* method;
+ methods = rb_class_instance_methods(1, args, CLASS_OF(object));
+- for (int i = 0; i < RARRAY(methods)->len; i++) {
+- method = StringValuePtr(RARRAY(methods)->ptr[i]);
++ for (int i = 0; i < RARRAY_LEN(methods); i++) {
++ method = StringValuePtr(RARRAY_PTR(methods)[i]);
+ krossdebug( QString("RubyObject::RubyObject() method=%1").arg( method ));
+ d->calls << method;
+ }
+--- kdebindings-4.3.0/ruby/krossruby/rubyscript.cpp.org 2009-01-16 08:04:29.000000000 -0700
++++ kdebindings-4.3.0/ruby/krossruby/rubyscript.cpp 2009-08-08 21:51:36.729148567 -0600
+@@ -47,7 +47,7 @@
+
+ VALUE info = rb_gv_get("$!");
+ VALUE bt = rb_funcall(info, rb_intern("backtrace"), 0);
+- VALUE message = RARRAY(bt)->ptr[0];
++ VALUE message = RARRAY_PTR(bt)[0];
+
+ QString errormessage = QString("%1: %2 (%3)")
+ .arg( STR2CSTR(message) )
+@@ -56,9 +56,9 @@
+ fprintf(stderr, "%s\n", errormessage.toLatin1().data());
+
+ QString tracemessage;
+- for(int i = 1; i < RARRAY(bt)->len; ++i) {
+- if( TYPE(RARRAY(bt)->ptr[i]) == T_STRING ) {
+- QString s = QString("%1\n").arg( STR2CSTR(RARRAY(bt)->ptr[i]) );
++ for(int i = 1; i < RARRAY_LEN(bt); ++i) {
++ if( TYPE(RARRAY_PTR(bt)[i]) == T_STRING ) {
++ QString s = QString("%1\n").arg( STR2CSTR(RARRAY_PTR(bt)[i]) );
+ Q_ASSERT( ! s.isNull() );
+ tracemessage += s;
+ fprintf(stderr, "\t%s", s.toLatin1().data());
+@@ -361,7 +361,7 @@
+ ID functionId = rb_ary_entry(args, 1);
+ VALUE arguments = rb_ary_entry(args, 2);
+ Q_ASSERT( TYPE(arguments) == T_ARRAY );
+- return rb_funcall2(self, functionId, RARRAY(arguments)->len, RARRAY(arguments)->ptr);
++ return rb_funcall2(self, functionId, RARRAY_LEN(arguments), RARRAY_PTR(arguments));
+ }
+
+ QVariant RubyScript::callFunction(const QString& name, const QVariantList& args)
+--- kdebindings-4.3.0/ruby/krossruby/rubyvariant.cpp.org 2008-11-19 03:17:32.000000000 -0700
++++ kdebindings-4.3.0/ruby/krossruby/rubyvariant.cpp 2009-08-08 21:42:27.593112416 -0600
+@@ -487,7 +487,7 @@
+ #endif
+ QList<void*> list;
+ if( TYPE(value) == T_ARRAY ) {
+- for(int i = 0; i < RARRAY(value)->len; i++)
++ for(int i = 0; i < RARRAY_LEN(value); i++)
+ if( void *ptr = VoidList::extractVoidStar(rb_ary_entry(value, i)) )
+ list << ptr;
+ }
+--- kdebindings-4.3.0/ruby/krossruby/rubyvariant.h.org 2008-07-29 05:47:40.000000000 -0600
++++ kdebindings-4.3.0/ruby/krossruby/rubyvariant.h 2009-08-09 02:51:01.845117051 -0600
+@@ -124,7 +124,7 @@
+ case T_BIGNUM:
+ return rb_big2int(value);
+ case T_FLOAT:
+- return (int)(RFLOAT(value)->value);
++ return (int)(RFLOAT_VALUE(value));
+ default:
+ break;
+ }
+@@ -147,7 +147,7 @@
+ case T_BIGNUM:
+ return rb_big2uint(value);
+ case T_FLOAT:
+- return (uint)(RFLOAT(value)->value);
++ return (uint)(RFLOAT_VALUE(value));
+ default:
+ break;
+ }
+@@ -226,7 +226,7 @@
+ //return STR2CSTR( rb_inspect(value) );
+ return QByteArray("");
+ }
+- long length = LONG2NUM( RSTRING(value)->len );
++ long length = LONG2NUM( RSTRING_LEN(value) );
+ if( length < 0 )
+ return QByteArray("");
+ char* ca = rb_str2cstr(value, &length);
+@@ -261,7 +261,7 @@
+ return l;
+ }
+ inline static QSize toVariant(VALUE value) {
+- if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 2 ) {
++ if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 2 ) {
+ rb_raise(rb_eTypeError, "QSize must be an array with 2 elements");
+ return QSize();
+ }
+@@ -280,7 +280,7 @@
+ return l;
+ }
+ inline static QSizeF toVariant(VALUE value) {
+- if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 2 ) {
++ if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 2 ) {
+ rb_raise(rb_eTypeError, "QSizeF must be an array with 2 elements");
+ return QSizeF();
+ }
+@@ -300,7 +300,7 @@
+ return l;
+ }
+ inline static QPoint toVariant(VALUE value) {
+- if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 2 ) {
++ if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 2 ) {
+ rb_raise(rb_eTypeError, "QPoint must be an array with 2 elements");
+ return QPoint();
+ }
+@@ -319,7 +319,7 @@
+ return l;
+ }
+ inline static QPointF toVariant(VALUE value) {
+- if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 2 ) {
++ if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 2 ) {
+ rb_raise(rb_eTypeError, "QPointF must be an array with 2 elements");
+ return QPointF();
+ }
+@@ -340,7 +340,7 @@
+ return l;
+ }
+ inline static QRect toVariant(VALUE value) {
+- if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 4 ) {
++ if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 4 ) {
+ rb_raise(rb_eTypeError, "QRect must be an array with 4 elements");
+ return QRect();
+ }
+@@ -362,7 +362,7 @@
+ return l;
+ }
+ inline static QRectF toVariant(VALUE value) {
+- if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 4 ) {
++ if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 4 ) {
+ rb_raise(rb_eTypeError, "QRectF must be an array with 4 elements");
+ return QRectF();
+ }
+@@ -447,7 +447,7 @@
+ return QStringList();
+ }
+ QStringList l;
+- for(int i = 0; i < RARRAY(value)->len; i++)
++ for(int i = 0; i < RARRAY_LEN(value); i++)
+ l.append( RubyType<QString>::toVariant( rb_ary_entry(value, i) ) );
+ return l;
+ }
+@@ -469,7 +469,7 @@
+ return QVariantList();
+ }
+ QVariantList l;
+- for(int i = 0; i < RARRAY(value)->len; i++)
++ for(int i = 0; i < RARRAY_LEN(value); i++)
+ l.append( RubyType<QVariant>::toVariant( rb_ary_entry(value, i) ) );
+ return l;
+ }
diff --git a/source/kde/kdebindings/kdebindings-ruby-env.h.diff b/source/kde/kdebindings/kdebindings-ruby-env.h.diff
new file mode 100644
index 000000000..61f404c70
--- /dev/null
+++ b/source/kde/kdebindings/kdebindings-ruby-env.h.diff
@@ -0,0 +1,139 @@
+--- kdebindings-r1016551/ruby/krossruby/rubyextension.cpp.org 2009-08-26 07:50:12.000000000 -0600
++++ kdebindings-r1016551/ruby/krossruby/rubyextension.cpp 2009-08-29 05:59:57.705834017 -0600
+@@ -278,7 +278,7 @@
+ sendersignal = RubyType<QByteArray>::toVariant(argv[1]);
+ idx = 2;
+ if( argc <= idx ) {
+- rb_raise(rb_eTypeError, ::QString("Expected at least %1 arguments.").arg(idx+1).toLatin1().constData());
++ /*rb_raise(rb_eTypeError, ::QString("Expected at least %1 arguments.").arg(idx+1).toLatin1().constData());*/
+ return Qfalse;
+ }
+ } break;
+@@ -310,7 +310,7 @@
+ */
+ #if(!(RUBY_VERSION_MAJOR==1 && RUBY_VERSION_MINOR==8 && RUBY_VERSION_TEENY==4))
+ else {
+- rb_raise(rb_eTypeError, ::QString("The argument number %1 is invalid.").arg(idx).toLatin1().constData());
++ /*rb_raise(rb_eTypeError, ::QString("The argument number %1 is invalid.").arg(idx).toLatin1().constData());*/
+ return Qfalse;
+ }
+ #endif
+--- kdebindings-r1016551/ruby/krossruby/rubyfunction.h.org 2009-08-26 07:50:12.000000000 -0600
++++ kdebindings-r1016551/ruby/krossruby/rubyfunction.h 2009-08-29 06:27:56.393849016 -0600
+@@ -198,7 +198,7 @@
+ //VALUE result = rb_funcall2(m_method, rb_intern("call"), argsize, args);
+
+ //TODO optimize
+- ruby_in_eval++;
++ /*ruby_in_eval++;
+ VALUE argarray = rb_ary_new2(3);
+ rb_ary_store(argarray, 0, m_method); //self
+ rb_ary_store(argarray, 1, INT2FIX(argsize));
+@@ -207,7 +207,7 @@
+ ruby_in_eval--;
+
+ // finally set the returnvalue
+- m_tmpResult = RubyType<QVariant>::toVariant(result);
++ m_tmpResult = RubyType<QVariant>::toVariant(result);*/
+ #ifdef KROSS_RUBY_FUNCTION_DEBUG
+ QObject* sender = QObject::sender();
+ krossdebug( QString("RubyFunction::qt_metacall sender.objectName=%1 sender.className=%2 result=%3 variantresult=%4").arg(sender->objectName()).arg(sender->metaObject()->className()).arg(STR2CSTR(rb_inspect(result))).arg(m_tmpResult.toString()) );
+--- kdebindings-r1016551/ruby/krossruby/rubyobject.cpp.org 2009-08-28 04:05:33.356632000 -0600
++++ kdebindings-r1016551/ruby/krossruby/rubyobject.cpp 2009-08-29 05:22:50.886344151 -0600
+@@ -52,7 +52,7 @@
+ }
+ }
+
+- ruby_nerrs++;
++ /*ruby_nerrs++;*/
+ /*
+ VALUE rubyscriptvalue = rb_funcall(self, rb_intern("const_get"), 1, ID2SYM(rb_intern("RUBYSCRIPTOBJ")));
+ RubyScript* rubyscript;
+--- kdebindings-r1016551/ruby/krossruby/rubyscript.cpp.org 2009-08-28 04:05:33.360633000 -0600
++++ kdebindings-r1016551/ruby/krossruby/rubyscript.cpp 2009-08-29 05:21:52.226333617 -0600
+@@ -65,7 +65,7 @@
+ }
+ }
+
+- ruby_nerrs++;
++/* ruby_nerrs++;*/
+
+ VALUE rubyscriptvalue = rb_funcall(self, rb_intern("const_get"), 1, ID2SYM(rb_intern("RUBYSCRIPTOBJ")));
+ RubyScript* rubyscript;
+@@ -173,11 +173,11 @@
+ // needed to prevent infinitive loops ifour scripting call uses e.g. callFunction
+ m_hasBeenSuccessFullyExecuted = true;
+
+- const int critical = rb_thread_critical;
+- rb_thread_critical = Qtrue;
++ /*const int critical = rb_thread_critical;*/
++ /*rb_thread_critical = Qtrue;
+
+ ruby_nerrs = 0;
+- ruby_errinfo = Qnil;
++ ruby_errinfo = Qnil;*/
+
+ VALUE args = rb_ary_new2(3);
+ rb_ary_store(args, 0, m_script); //self
+@@ -192,24 +192,24 @@
+ }
+ */
+
+- ruby_in_eval++;
++ /*ruby_in_eval++;*/
+ VALUE result = rb_rescue2((VALUE(*)(...))callExecute, args, (VALUE(*)(...))callExecuteException, m_script, rb_eException, 0);
+- ruby_in_eval--;
++ /*ruby_in_eval--;*/
+
+- if (ruby_nerrs != 0) {
++ /*if (ruby_nerrs != 0) {
+ //#ifdef KROSS_RUBY_SCRIPT_EXECUTE_DEBUG
+ krossdebug( QString("Compilation has failed. errorMessage=%1 errorTrace=\n%2\n").arg(q->errorMessage()).arg(q->errorTrace()) );
+ //#endif
+ m_hasBeenSuccessFullyExecuted = false;
+ } else {
+ m_hasBeenSuccessFullyExecuted = true;
+- }
++ }*/
+
+ #ifdef KROSS_RUBY_EXPLICIT_GC
+ rb_gc();
+ #endif
+
+- rb_thread_critical = critical;
++ /*rb_thread_critical = critical;*/
+ return result;
+ }
+
+@@ -371,9 +371,9 @@
+ krossdebug( QString("RubyScript::callFunction() name=%1").arg(name) );
+ #endif
+
+- const int critical = rb_thread_critical;
++ /*const int critical = rb_thread_critical;
+ rb_thread_critical = Qtrue;
+- ruby_in_eval++;
++ ruby_in_eval++;*/
+ //ruby_current_node
+
+ if( ! d->m_hasBeenSuccessFullyExecuted ) {
+@@ -383,7 +383,7 @@
+ #ifdef KROSS_RUBY_SCRIPT_CALLFUNCTION_DEBUG
+ krossdebug("RubyScript::callFunction failed");
+ #endif
+- setError( QString("Failed to call function \"%1\": %2").arg(name).arg(STR2CSTR( rb_obj_as_string(ruby_errinfo) )) ); // TODO: get the error
++ /*setError( QString("Failed to call function \"%1\": %2").arg(name).arg(STR2CSTR( rb_obj_as_string(ruby_errinfo) )) ); // TODO: get the error*/
+ }
+ else {
+ //VALUE self = rb_eval_string("self");
+@@ -413,8 +413,8 @@
+ // rb_gc(); // This one is plainly wrong, since there is a good deal of chance that it will delete the content of result before it is used
+ #endif
+
+- ruby_in_eval--;
+- rb_thread_critical = critical;
++ /*ruby_in_eval--;
++ rb_thread_critical = critical;*/
+
+ return result;
+ }
diff --git a/source/kde/kdebindings/kdebindings-rubyconfig.h.diff b/source/kde/kdebindings/kdebindings-rubyconfig.h.diff
new file mode 100644
index 000000000..aa8b426d3
--- /dev/null
+++ b/source/kde/kdebindings/kdebindings-rubyconfig.h.diff
@@ -0,0 +1,20 @@
+--- kdebindings-4.3.0/ruby/krossruby/rubyconfig.h.org 2009-01-16 08:04:29.000000000 -0700
++++ kdebindings-4.3.0/ruby/krossruby/rubyconfig.h 2009-08-08 23:14:59.917148261 -0600
+@@ -21,12 +21,12 @@
+ #define KROSS_RUBY_CONFIG_H
+
+ #include <ruby.h>
+-#include <env.h>
+-#include <rubysig.h>
+-#include <node.h>
+-#include <version.h>
++//#include <env.h>
++#include <ruby/backward/rubysig.h>
++#include <ruby/node.h>
++#include <ruby/version.h>
+
+-#include <st.h>
++#include <ruby/st.h>
+ //#include <typeinfo>
+
+ #include <kross/core/krossconfig.h>
diff --git a/source/kde/kdebindings/kdebindings.SlackBuild b/source/kde/kdebindings/kdebindings.SlackBuild
index a31407b91..21df45de4 100755
--- a/source/kde/kdebindings/kdebindings.SlackBuild
+++ b/source/kde/kdebindings/kdebindings.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -46,6 +46,11 @@ cd $TMP
echo "Building kdebindings-$VERSION..."
tar xvf $CWD/../src/kdebindings-$VERSION.tar.?z* || exit 1
cd kdebindings-$VERSION
+
+zcat $CWD/kdebindings-len-ptr-rfloat.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/kdebindings-ruby-env.h.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/kdebindings-rubyconfig.h.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -58,6 +63,7 @@ mkdir -p build
cd build
#-DCMAKE_BACKWARDS_COMPATIBILITY:STRING="2.2" \
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
@@ -65,17 +71,15 @@ cd build
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
- -DENABLE_PHONON:BOOL=OFF \
- -DENABLE_PHONON_SMOKE:BOOL=OFF \
-DENABLE_QYOTO:BOOL=OFF \
-DENABLE_QSCINTILLA_SHARP:BOOL=OFF \
-DENABLE_KIMONO:BOOL=OFF \
-DBUILD_csharp:BOOL=OFF \
- -DENABLE_KHTML:BOOL=OFF \
- -DENABLE_PHONON_RUBY:BOOL=OFF \
..
- # kdebindings has (in the past, on several occasions) barfed on multijobs, so no $NUMJOBS here:
- make || exit 1
+ # kdebindings has (in the past, on several occasions) barfed on multijobs,
+ # so no $NUMJOBS here. We run make twice because the first time is not
+ # 100% successful either...:
+ make || make || exit 1
make install DESTDIR=$PKG || exit 1
cd -
diff --git a/source/kde/kdebase-runtime/local.options b/source/kde/kdebindings/local.options
index aae3c765c..aae3c765c 100644
--- a/source/kde/kdebase-runtime/local.options
+++ b/source/kde/kdebindings/local.options
diff --git a/source/kde/kdebindings/slack-desc b/source/kde/kdebindings/slack-desc
index 753edde91..e927c76fe 100644
--- a/source/kde/kdebindings/slack-desc
+++ b/source/kde/kdebindings/slack-desc
@@ -6,14 +6,14 @@
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-kdebindings: kdebindings
+kdebindings: kdebindings (KDE language bindings)
kdebindings:
kdebindings: KDE and most KDE applications are implemented using the C++
kdebindings: programming language, but that doesn't mean you don't have a choice.
kdebindings: This package contains a number of bindings to other languages,
kdebindings: including scripting languages and other systems' programming
-kdebindings: languages.
-kdebindings:
+kdebindings: languages, allowing them to be used to create applications for the
+kdebindings: KDE Platform.
kdebindings:
kdebindings:
kdebindings:
diff --git a/source/kde/kdeedu/kdeedu.SlackBuild b/source/kde/kdeedu/kdeedu.SlackBuild
index 100212971..1cdb0336a 100755
--- a/source/kde/kdeedu/kdeedu.SlackBuild
+++ b/source/kde/kdeedu/kdeedu.SlackBuild
@@ -56,6 +56,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdeedu/slack-desc b/source/kde/kdeedu/slack-desc
index 10b045bce..b97fdd759 100644
--- a/source/kde/kdeedu/slack-desc
+++ b/source/kde/kdeedu/slack-desc
@@ -6,9 +6,9 @@
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-kdeedu: kdeedu
+kdeedu: kdeedu (Educational applications)
kdeedu:
-kdeedu: Educational applications for KDE.
+kdeedu: Educational applications for the KDE Software Compilation.
kdeedu:
kdeedu:
kdeedu:
diff --git a/source/kde/kdegames/kdegames.SlackBuild b/source/kde/kdegames/kdegames.SlackBuild
index 71ed91ce7..6532e1e7b 100755
--- a/source/kde/kdegames/kdegames.SlackBuild
+++ b/source/kde/kdegames/kdegames.SlackBuild
@@ -56,6 +56,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdegames/slack-desc b/source/kde/kdegames/slack-desc
index 48ef0ea6b..c821c7fa7 100644
--- a/source/kde/kdegames/slack-desc
+++ b/source/kde/kdegames/slack-desc
@@ -6,9 +6,9 @@
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-kdegames: kdegames
+kdegames: kdegames (KDE games)
kdegames:
-kdegames: A collection of games for the K Desktop Environment.
+kdegames: A collection of games for the KDE Software Compilation.
kdegames:
kdegames:
kdegames:
diff --git a/source/kde/kdegraphics/kdegraphics.SlackBuild b/source/kde/kdegraphics/kdegraphics.SlackBuild
index 50447b3f6..a33ffbccb 100755
--- a/source/kde/kdegraphics/kdegraphics.SlackBuild
+++ b/source/kde/kdegraphics/kdegraphics.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -47,6 +47,8 @@ echo "Building kdegraphics-$VERSION..."
tar xvf $CWD/../src/kdegraphics-$VERSION.tar.?z* || exit 1
cd kdegraphics-$VERSION
+zcat $CWD/kdegraphics.gwenview.jpeg8.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -57,6 +59,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdegraphics/kdegraphics.gwenview.jpeg8.diff b/source/kde/kdegraphics/kdegraphics.gwenview.jpeg8.diff
new file mode 100644
index 000000000..8d509f4df
--- /dev/null
+++ b/source/kde/kdegraphics/kdegraphics.gwenview.jpeg8.diff
@@ -0,0 +1,13 @@
+--- ./gwenview/lib/jpegcontent.cpp.orig 2009-05-14 12:26:10.000000000 -0500
++++ ./gwenview/lib/jpegcontent.cpp 2010-05-17 21:08:10.000000000 -0500
+@@ -455,9 +455,8 @@
+
+ // Init transformation
+ jpeg_transform_info transformoption;
++ memset(&transformoption, 0, sizeof(jpeg_transform_info));
+ transformoption.transform = findJxform(d->mTransformMatrix);
+- transformoption.force_grayscale = false;
+- transformoption.trim = false;
+ jtransform_request_workspace(&srcinfo, &transformoption);
+
+ /* Read source file as DCT coefficients */
diff --git a/source/kde/kdegraphics/local.options b/source/kde/kdegraphics/local.options
new file mode 100644
index 000000000..aae3c765c
--- /dev/null
+++ b/source/kde/kdegraphics/local.options
@@ -0,0 +1 @@
+BUILD=2
diff --git a/source/kde/kdegraphics/slack-desc b/source/kde/kdegraphics/slack-desc
index a06b949e3..7184942e0 100644
--- a/source/kde/kdegraphics/slack-desc
+++ b/source/kde/kdegraphics/slack-desc
@@ -8,9 +8,9 @@
|-----handy-ruler------------------------------------------------------|
kdegraphics: kdegraphics (KDE graphics programs)
kdegraphics:
-kdegraphics: Graphics programs for KDE, including gwenview, kcolorchooser,
-kdegraphics: kbackgroundsnapshot, kolourpaint, kruler, ksnapshot, okular, and
-kdegraphics: xf86gammacfg.
+kdegraphics: Graphics programs for the KDE Software Compilation, including
+kdegraphics: gwenview, kcolorchooser, kbackgroundsnapshot, kolourpaint, kruler,
+kdegraphics: ksnapshot, okular, and xf86gammacfg.
kdegraphics:
kdegraphics:
kdegraphics:
diff --git a/source/kde/kdelibs/fixPopupForPlasmaboard.diff b/source/kde/kdelibs/fixPopupForPlasmaboard.diff
deleted file mode 100644
index cf6dec7ca..000000000
--- a/source/kde/kdelibs/fixPopupForPlasmaboard.diff
+++ /dev/null
@@ -1,43 +0,0 @@
-Index: kdelibs/plasma/popupapplet.cpp
-===================================================================
---- kdelibs/plasma/popupapplet.cpp (Revision 976120)
-+++ kdelibs/plasma/popupapplet.cpp (Arbeitskopie)
-@@ -275,11 +275,7 @@
- //stuff out of your Dialog (extenders). Monitor WindowDeactivate events so we can
- //emulate the same kind of behavior as Qt::Popup (close when you click somewhere
- //else.
-- dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
-- updateDialogFlags();
-- KWindowSystem::setState(dialog->winId(), NET::SkipTaskbar | NET::SkipPager);
-- dialog->installEventFilter(q);
--
-+
- q->setMinimumSize(QSize(0, 0));
- if (gWidget) {
- Corona *corona = qobject_cast<Corona *>(gWidget->scene());
-@@ -289,14 +285,25 @@
- corona->addOffscreenWidget(gWidget);
- dialog->setGraphicsWidget(gWidget);
- }
-+
-+ dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | (gWidget->windowFlags() & Qt::X11BypassWindowManagerHint));
- } else if (qWidget) {
- QVBoxLayout *l_layout = new QVBoxLayout(dialog);
- l_layout->setSpacing(0);
- l_layout->setMargin(0);
- l_layout->addWidget(qWidget);
- dialog->adjustSize();
-+
-+ dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | (qWidget->windowFlags() & Qt::X11BypassWindowManagerHint));
- }
-+ else {
-+ dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
-+ }
-+ updateDialogFlags();
-+ KWindowSystem::setState(dialog->winId(), NET::SkipTaskbar | NET::SkipPager);
-+ dialog->installEventFilter(q);
-
-+
- QObject::connect(dialog, SIGNAL(dialogResized()), q, SLOT(dialogSizeChanged()));
- QObject::connect(dialog, SIGNAL(dialogVisible(bool)), q, SLOT(dialogStatusChanged(bool)));
- }
diff --git a/source/kde/kdelibs/kdelibs.SlackBuild b/source/kde/kdelibs/kdelibs.SlackBuild
index 656ee6678..aa6ddde09 100755
--- a/source/kde/kdelibs/kdelibs.SlackBuild
+++ b/source/kde/kdelibs/kdelibs.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -47,11 +47,6 @@ echo "Building kdelibs-$VERSION..."
tar xvf $CWD/../src/kdelibs-$VERSION.tar.?z* || exit 1
cd kdelibs-$VERSION
-zcat $CWD/fixPopupForPlasmaboard.diff.gz | patch -p1 --verbose || exit 1
-( cd kdesu
- zcat $CWD/kdesu-allow_NOPASS_in_suauth.patch.gz | patch -p1 --verbose || exit 1
-) || exit 1
-
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -62,6 +57,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
@@ -75,6 +71,9 @@ cd build
make install DESTDIR=$PKG || exit 1
cd -
+# Move the polkit dbus configuration files to the proper place:
+mv $PKG/etc/kde/dbus-1 $PKG/etc/
+
if [ -d $PKG/usr/man ]; then
gzip -9 $PKG/usr/man/man?/*
fi
diff --git a/source/kde/kdelibs/kdesu-allow_NOPASS_in_suauth.patch b/source/kde/kdelibs/kdesu-allow_NOPASS_in_suauth.patch
index 8d2168c3a..64b4d5af2 100644
--- a/source/kde/kdelibs/kdesu-allow_NOPASS_in_suauth.patch
+++ b/source/kde/kdelibs/kdesu-allow_NOPASS_in_suauth.patch
@@ -1,94 +1,61 @@
diff -Naur kdesu/stub.cpp kdesu.new/stub.cpp
--- kdesu/stub.cpp 2008-05-21 08:08:55.000000000 -0300
-+++ kdesu.new/stub.cpp 2009-08-06 04:06:43.000000000 -0300
-@@ -111,7 +111,7 @@
- if (line.isNull())
- return -1;
-
-- if (line == "kdesu_stub")
-+ if ((line == "kdesu_stub")||(line == "Password authentication bypassed."))
- {
- // This makes parsing a lot easier.
++++ kdesu.new/stub.cpp 2009-10-13 01:32:10.000000000 -0300
+@@ -105,6 +105,7 @@
+ int StubProcess::ConverseStub(int check)
+ {
+ QByteArray line, tmp;
++
+ while (1)
+ {
+ line = readLine();
+@@ -117,7 +118,17 @@
enableLocalEcho(false);
+ if (check) writeLine("stop");
+ else writeLine("ok");
+- } else if (line == "display") {
++ break;
++ }
++ }
++
++ while (1)
++ {
++ line = readLine();
++ if (line.isNull())
++ return -1;
++
++ if (line == "display") {
+ writeLine(display());
+ } else if (line == "display_auth") {
+ #ifdef Q_WS_X11
diff -Naur kdesu/su.cpp kdesu.new/su.cpp
--- kdesu/su.cpp 2008-05-21 08:08:55.000000000 -0300
-+++ kdesu.new/su.cpp 2009-08-06 04:10:55.000000000 -0300
-@@ -163,7 +163,7 @@
- }
- // kDebug(900) << k_lineinfo << "Done StubProcess::exec()";
-
-- SuErrors ret = (SuErrors) ConverseSU(password);
-+ SuErrors ret = (SuErrors) ConverseSU(password,check);
- // kDebug(900) << k_lineinfo << "Conversation returned " << ret;
-
- if (ret == error)
-@@ -172,6 +172,7 @@
- kError(900) << k_lineinfo << "Conversation with su failed\n";
- return ret;
- }
-+
- if (check == NeedPassword)
- {
- if (ret == killme)
-@@ -235,10 +236,10 @@
-
- /*
- * Conversation with su: feed the password.
--* Return values: -1 = error, 0 = ok, 1 = kill me, 2 not authorized
-+* Return values: -1 = error, 0 = ok, 1 = kill me, 2 = not authorized
- */
-
--int SuProcess::ConverseSU(const char *password)
-+int SuProcess::ConverseSU(const char *password, int check)
- {
- enum { WaitForPrompt, CheckStar, HandleStub } state = WaitForPrompt;
- int colon;
-@@ -265,6 +266,27 @@
- return ok;
- }
-
-+ if (line == "Password authentication bypassed.")
-+ {
-+ if (check == 2)
-+ {
-+ unreadLine(line);
-+ return ok;
-+ }
-+ else
-+ {
-+ if (checkPid(m_Pid))
-+ {
-+ state=HandleStub;
-+ }
-+ else
-+ {
-+ return error;
-+ }
-+ }
-+ break;
-+ }
-+
++++ kdesu.new/su.cpp 2009-10-19 00:21:31.000000000 -0200
+@@ -258,13 +258,6 @@
+ //////////////////////////////////////////////////////////////////////////
+ case WaitForPrompt:
+ {
+- // In case no password is needed.
+- if (line == "kdesu_stub")
+- {
+- unreadLine(line);
+- return ok;
+- }
+-
while(waitMS(fd(),100)>0)
{
// There is more output available, so the previous line
-@@ -293,7 +315,7 @@
+@@ -279,6 +272,13 @@
+ kDebug(900) << k_lineinfo << "Read line <" << more << ">";
}
- if ((colon == 1) && (line[j] == ':'))
- {
-- if (password == 0L)
-+ if (password == 0L)
- return killme;
- if (!checkPid(m_Pid))
- {
-diff -Naur kdesu/su.h kdesu.new/su.h
---- kdesu/su.h 2008-05-21 08:08:55.000000000 -0300
-+++ kdesu.new/su.h 2009-08-06 02:50:02.000000000 -0300
-@@ -62,7 +62,7 @@
-
- private:
- enum SuErrors { error=-1, ok=0, killme=1, notauthorized=2 } ;
-- int ConverseSU(const char *password);
-+ int ConverseSU(const char *password, int check=NoCheck);
- protected:
- virtual void virtual_hook( int id, void* data );
++ // In case no password is needed.
++ if (line == "kdesu_stub")
++ {
++ unreadLine(line);
++ return ok;
++ }
++
+ // Match "Password: " with the regex ^[^:]+:[\w]*$.
+ const uint len = line.length();
+ for (i=0,j=0,colon=0; i<len; i++)
diff --git a/source/kde/kdelibs/local.options b/source/kde/kdelibs/local.options
deleted file mode 100644
index a837340db..000000000
--- a/source/kde/kdelibs/local.options
+++ /dev/null
@@ -1 +0,0 @@
-BUILD=3
diff --git a/source/kde/kdelibs/slack-desc b/source/kde/kdelibs/slack-desc
index a07f7efff..a89ea3c8a 100644
--- a/source/kde/kdelibs/slack-desc
+++ b/source/kde/kdelibs/slack-desc
@@ -8,7 +8,7 @@
|-----handy-ruler------------------------------------------------------|
kdelibs: kdelibs (KDE libraries)
kdelibs:
-kdelibs: System libraries and other resources required by KDE.
+kdelibs: System libraries and other resources required for the KDE Platform.
kdelibs:
kdelibs:
kdelibs:
diff --git a/source/kde/kdemultimedia/kdemultimedia.SlackBuild b/source/kde/kdemultimedia/kdemultimedia.SlackBuild
index 6878e632c..9a7826ad1 100755
--- a/source/kde/kdemultimedia/kdemultimedia.SlackBuild
+++ b/source/kde/kdemultimedia/kdemultimedia.SlackBuild
@@ -56,6 +56,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdemultimedia/slack-desc b/source/kde/kdemultimedia/slack-desc
index f8c47eadf..2cc67153a 100644
--- a/source/kde/kdemultimedia/slack-desc
+++ b/source/kde/kdemultimedia/slack-desc
@@ -6,9 +6,9 @@
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-kdemultimedia: kdemultimedia
+kdemultimedia: kdemultimedia (KDE multimedia applications)
kdemultimedia:
-kdemultimedia: Multimedia applications for KDE including:
+kdemultimedia: Multimedia applications for the KDE Software Compilation, including:
kdemultimedia: * noatun: a multimedia player for sound and movies
kdemultimedia: * kmix: the audio mixer as a standalone program and Kicker applet
kdemultimedia: * kscd: A CD player with an interface to the internet CDDB database
diff --git a/source/kde/kdenetwork/kdenetwork.SlackBuild b/source/kde/kdenetwork/kdenetwork.SlackBuild
index 6939ad4c7..9ff64fb9e 100755
--- a/source/kde/kdenetwork/kdenetwork.SlackBuild
+++ b/source/kde/kdenetwork/kdenetwork.SlackBuild
@@ -47,7 +47,8 @@ echo "Building kdenetwork-$VERSION..."
tar xvf $CWD/../src/kdenetwork-$VERSION.tar.?z* || exit 1
cd kdenetwork-$VERSION
-zcat $CWD/kopete-r986796.diff.gz | patch -p4 --verbose || exit 1
+# CVE-2010-1000 and CVE-2010-1511:
+zcat $CWD/kget.kde44.CVE-2010-1000-1511.diff.gz | patch -p0 --verbose || exit 1
chown -R root:root .
find . \
@@ -59,6 +60,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
@@ -66,6 +68,7 @@ cd build
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ -DWITH_irc=ON \
..
make $NUMJOBS || exit 1
make install DESTDIR=$PKG || exit 1
diff --git a/source/kde/kdenetwork/kget.kde44.CVE-2010-1000-1511.diff b/source/kde/kdenetwork/kget.kde44.CVE-2010-1000-1511.diff
new file mode 100644
index 000000000..fdabbff0d
--- /dev/null
+++ b/source/kde/kdenetwork/kget.kde44.CVE-2010-1000-1511.diff
@@ -0,0 +1,212 @@
+Index: kget/transfer-plugins/metalink/metalink.cpp
+===================================================================
+--- kget/transfer-plugins/metalink/metalink.cpp (revision 1124973)
++++ kget/transfer-plugins/metalink/metalink.cpp (revision 1124974)
+@@ -99,6 +99,7 @@
+ void Metalink::metalinkInit(const KUrl &src, const QByteArray &data)
+ {
+ kDebug(5001);
++
+ bool justDownloaded = !m_localMetalinkLocation.isValid();
+ if (!src.isEmpty())
+ {
+@@ -121,7 +122,9 @@
+ //error
+ if (!m_metalink.isValid())
+ {
+- kDebug(5001) << "Unknown error when trying to load the .metalink-file";
++ kError(5001) << "Unknown error when trying to load the .metalink-file. Metalink is not valid.";
++ setStatus(Job::Aborted);
++ setTransferChange(Tc_Status, true);
+ return;
+ }
+
+@@ -202,7 +205,7 @@
+ if (!m_dataSourceFactory.size())
+ {
+ KMessageBox::error(0, i18n("Download failed, no working URLs were found."), i18n("Error"));
+- setStatus(Job::Aborted, i18n("An error occurred...."), SmallIcon("document-preview"));
++ setStatus(Job::Aborted);
+ setTransferChange(Tc_Status, true);
+ return;
+ }
+@@ -227,16 +230,29 @@
+ ui.treeView->hideColumn(FileItem::SignatureVerified);
+ dialog->setMainWidget(widget);
+ dialog->setCaption(i18n("File Selection"));
+- dialog->setButtons(KDialog::Ok);
+- connect(dialog, SIGNAL(finished()), this, SLOT(filesSelected()));
++ dialog->setButtons(KDialog::Ok | KDialog::Cancel);
++ connect(dialog, SIGNAL(finished(int)), this, SLOT(fileDlgFinished(int)));
+
+ dialog->show();
+ }
+ }
+
+-void Metalink::filesSelected()
++void Metalink::fileDlgFinished(int result)
+ {
++ //BEGIN HACK if the dialog was not accepted untick every file, so that the download does not start
++ //generally setStatus should do the job as well, but does not as it appears
++ if (result != QDialog::Accepted) {
++ for (int row = 0; row < fileModel()->rowCount(); ++row) {
++ QModelIndex index = fileModel()->index(row, FileItem::File);
++ if (index.isValid()) {
++ fileModel()->setData(index, Qt::Unchecked, Qt::CheckStateRole);
++ }
++ }
++ }
++ //END
++
+ QModelIndexList files = fileModel()->fileIndexes(FileItem::File);
++ int numFilesSelected = 0;
+ foreach (const QModelIndex &index, files)
+ {
+ const KUrl dest = fileModel()->getUrl(index);
+@@ -244,6 +260,9 @@
+ if (m_dataSourceFactory.contains(dest))
+ {
+ m_dataSourceFactory[dest]->setDoDownload(doDownload);
++ if (doDownload) {
++ ++numFilesSelected;
++ }
+ }
+ }
+
+@@ -252,9 +271,15 @@
+ processedSizeChanged();
+ speedChanged();
+
++ //no files selected to download or dialog rejected, stop the download
++ if (!numFilesSelected || (result != QDialog::Accepted)) {
++ setStatus(Job::Stopped);//FIXME
++ setTransferChange(Tc_Status, true);
++ return;
++ }
++
+ //some files may be set to download, so start them as long as the transfer is not stopped
+- if (status() != Job::Stopped)
+- {
++ if (status() != Job::Stopped) {
+ startMetalink();
+ }
+ }
+Index: kget/transfer-plugins/metalink/metalink.h
+===================================================================
+--- kget/transfer-plugins/metalink/metalink.h (revision 1124973)
++++ kget/transfer-plugins/metalink/metalink.h (revision 1124974)
+@@ -81,7 +81,7 @@
+
+ private Q_SLOTS:
+ void metalinkInit(const KUrl &url = KUrl(), const QByteArray &data = QByteArray());
+- void filesSelected();
++ void fileDlgFinished(int result);
+ void totalSizeChanged(KIO::filesize_t size);
+ void processedSizeChanged();
+ void speedChanged();
+Index: kget/ui/metalinkcreator/metalinker.h
+===================================================================
+--- kget/ui/metalinkcreator/metalinker.h (revision 1124973)
++++ kget/ui/metalinkcreator/metalinker.h (revision 1124974)
+@@ -259,6 +259,14 @@
+ KIO::filesize_t size;
+ CommonData data;
+ Resources resources;
++
++ private:
++ /**
++ * Controlls if the name attribute is valid, i.e. it is not empty and
++ * does not contain any directory traversal directives or information,
++ * as described in the Metalink 4.0 specification 4.1.2.1.
++ */
++ bool isValidNameAttribute() const;
+ };
+
+ class Files
+Index: kget/ui/metalinkcreator/metalinker.cpp
+===================================================================
+--- kget/ui/metalinkcreator/metalinker.cpp (revision 1124973)
++++ kget/ui/metalinkcreator/metalinker.cpp (revision 1124974)
+@@ -528,14 +528,14 @@
+
+ bool KGetMetalink::File::isValid() const
+ {
+- return !name.isEmpty() && resources.isValid();
++ return isValidNameAttribute() && resources.isValid();
+ }
+
+ void KGetMetalink::File::load(const QDomElement &e)
+ {
+ data.load(e);
+
+- name = e.attribute("name");
++ name = QUrl::fromPercentEncoding(e.attribute("name").toAscii());
+ size = e.firstChildElement("size").text().toULongLong();
+
+ verification.load(e);
+@@ -575,6 +575,22 @@
+ resources.clear();
+ }
+
++
++bool KGetMetalink::File::isValidNameAttribute() const
++{
++ if (name.isEmpty()) {
++ kError(5001) << "Name attribute of Metalink::File is empty.";
++ return false;
++ }
++
++ if (name.contains(QRegExp("$(\\.\\.?)?/")) || name.contains("/../") || name.endsWith("/..")) {
++ kError(5001) << "Name attribute of Metalink::File contains directory traversal directives:" << name;
++ return false;
++ }
++
++ return true;
++}
++
+ #ifdef HAVE_NEPOMUK
+ QHash<QUrl, Nepomuk::Variant> KGetMetalink::File::properties() const
+ {
+@@ -584,13 +600,28 @@
+
+ bool KGetMetalink::Files::isValid() const
+ {
+- bool isValid = !files.empty();
+- foreach (const File &file, files)
+- {
+- isValid &= file.isValid();
++ if (files.isEmpty()) {
++ return false;
+ }
+
+- return isValid;
++ QStringList fileNames;
++ foreach (const File &file, files) {
++ fileNames << file.name;
++ if (!file.isValid()) {
++ return false;
++ }
++ }
++
++ //The value of name must be unique for each file
++ while (!fileNames.isEmpty()) {
++ const QString fileName = fileNames.takeFirst();
++ if (fileNames.contains(fileName)) {
++ kError(5001) << "Metalink::File name" << fileName << "exists multiple times.";
++ return false;
++ }
++ }
++
++ return true;
+ }
+
+ void KGetMetalink::Files::load(const QDomElement &e)
+@@ -751,7 +782,7 @@
+
+ for (QDomElement elem = filesElem.firstChildElement("file"); !elem.isNull(); elem = elem.nextSiblingElement("file")) {
+ File file;
+- file.name = elem.attribute("name");
++ file.name = QUrl::fromPercentEncoding(elem.attribute("name").toAscii());
+ file.size = elem.firstChildElement("size").text().toULongLong();
+
+ file.data = parseCommonData(elem);
diff --git a/source/kde/kdenetwork/kopete-r986796.diff b/source/kde/kdenetwork/kopete-r986796.diff
deleted file mode 100644
index a251b3288..000000000
--- a/source/kde/kdenetwork/kopete-r986796.diff
+++ /dev/null
@@ -1,396 +0,0 @@
-Index: branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.h
-===================================================================
---- branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.h (revision 986795)
-+++ branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.h (revision 986796)
-@@ -26,7 +26,13 @@
-
- class QString;
- class YMSGTransfer;
-+class KJob;
-
-+namespace KIO
-+{
-+ class Job;
-+}
-+
- /**
- @author Duncan Mac-Vicar
- */
-@@ -58,6 +64,15 @@
- void sendAuthResp_pre_0x0b(const QString &sn, const QString &seed);
- void handleAuthResp(YMSGTransfer *transfer);
- void parseCookies( YMSGTransfer *transfer );
-+ void sendAuthSixteenStage1(const QString& sn, const QString& seed);
-+ void sendAuthSixteenStage2(const QString& token);
-+ void sendAuthSixteenStage3(const QString& cryptString);
-+protected Q_SLOTS:
-+ void handleAuthSixteenStage1Data(KIO::Job*, const QByteArray& data);
-+ void handleAuthSixteenStage1Result(KJob*);
-+ void handleAuthSixteenStage2Data(KIO::Job*, const QByteArray& data);
-+ void handleAuthSixteenStage2Result(KJob*);
-+
- signals:
- void haveSessionID( uint );
- void haveCookies();
-@@ -71,6 +86,10 @@
- QString m_cCookie;
- QString m_loginCookie;
- QString m_verificationWord;
-+ QString m_stage1Data;
-+ QString m_stage2Data;
-+ QString m_challengeString;
-+ uint m_sessionID;
- };
-
- #endif
-Index: branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.cpp
-===================================================================
---- branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.cpp (revision 986795)
-+++ branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.cpp (revision 986796)
-@@ -3,10 +3,10 @@
- Handles logging into to the Yahoo service
-
- Copyright (c) 2004 Duncan Mac-Vicar P. <duncan@kde.org>
--
- Copyright (c) 2005-2006 André Duffeck <duffeck@kde.org>
-+ Copyright 2009 Matt Rogers <mattr@kde.org>
-
-- Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
-+ Kopete (c) 2002-2009 by the Kopete developers <kopete-devel@kde.org>
-
- *************************************************************************
- * *
-@@ -28,6 +28,10 @@
- #include <qstring.h>
- #include <kdebug.h>
- #include <stdlib.h>
-+
-+#include <QCryptographicHash>
-+#include <KDE/KJob>
-+#include <KDE/KIO/Job>
- extern "C"
- {
- #include "libyahoo.h"
-@@ -177,52 +181,197 @@
-
- QString sn = t->firstParam( 1 );
- QString seed = t->firstParam( 94 );
-+ m_challengeString = seed;
- QString version_s = t->firstParam( 13 );
-- uint sessionID = t->id();
-+ m_sessionID = t->id();
- int version = version_s.toInt();
-
- switch (version)
- {
- case 0:
-- kDebug(YAHOO_RAW_DEBUG) << " Version pre 0x0b "<< version_s;
-- break;
-+ case 1:
-+ case 2:
-+ kDebug(YAHOO_RAW_DEBUG) << "Using version 16 authorization" << endl;
-+ sendAuthSixteenStage1(sn, seed);
-+ break;
- default:
-- kDebug(YAHOO_RAW_DEBUG) << " Version 0x0b "<< version_s;
-- sendAuthResp_0x0b(sn, seed, sessionID);
-+ kWarning(YAHOO_RAW_DEBUG) << "Unknown authentication method used!"
-+ << "Attempting current authentication anyways";
-+ sendAuthSixteenStage1(sn, seed);
- break;
- }
- mState = SentAuthResp;
-
-- emit haveSessionID( sessionID );
-+ emit haveSessionID( m_sessionID );
- }
-
--void LoginTask::sendAuthResp_0x0b(const QString &sn, const QString &seed, uint sessionID)
-+void LoginTask::sendAuthSixteenStage1(const QString& sn, const QString& seed)
- {
-- kDebug(YAHOO_RAW_DEBUG) << " with seed " << seed;
-- char *resp_6 = (char *) malloc(100);
-- char *resp_96 = (char *) malloc(100);
-- authresp_0x0b(seed.toLatin1(), sn.toLatin1(), (client()->password()).toLatin1(), resp_6, resp_96);
-- kDebug(YAHOO_RAW_DEBUG) << "resp_6: " << resp_6 << " resp_69: " << resp_96;
-+ const QString YahooTokenUrl = "https://login.yahoo.com/config/pwtoken_get?src=ymsgr&ts=&login=%1&passwd=%2&chal=%3";
-+ kDebug(YAHOO_RAW_DEBUG) << "seed:" << seed;
-+ m_stage1Data.clear();
-+ /* construct a URL from the seed and request tokens */
-+ QByteArray encodedUrl;
-+ QString fullUrl = YahooTokenUrl.arg(sn, client()->password(), seed);
-+ KUrl tokenUrl(fullUrl);
-+ KIO::Job* job = KIO::get(tokenUrl, KIO::Reload, KIO::HideProgressInfo);
-+ connect(job, SIGNAL(data(KIO::Job*, const QByteArray&)),
-+ this, SLOT(handleAuthSixteenStage1Data(KIO::Job*, const QByteArray&)));
-+ connect(job, SIGNAL(result(KJob*)),
-+ this, SLOT(handleAuthSixteenStage1Result(KJob*)));
-+}
-+
-+void LoginTask::handleAuthSixteenStage1Data(KIO::Job* job, const QByteArray& data)
-+{
-+ kDebug(YAHOO_RAW_DEBUG) << "data:" << data;
-+ m_stage1Data.append(data);
-+}
-+
-+void LoginTask::handleAuthSixteenStage1Result(KJob* job)
-+{
-+ int responseNumber = -1;
-+ QString token;
-+ int error = job->error();
-+ kDebug(YAHOO_RAW_DEBUG) << "error:" << error;
-+ if (error == 0)
-+ {
-+ QStringList responses = m_stage1Data.split("\r\n");
-+ if (responses.count() >= 3)
-+ {
-+ responseNumber = responses[0].toInt();
-+ token = responses[1];
-+ token.remove("ymsgr=");
-+ kDebug(YAHOO_RAW_DEBUG) << "response is:" << responseNumber;
-+ kDebug(YAHOO_RAW_DEBUG) << "token is:" << token;
-+ }
-+
-+ if (responseNumber != 0)
-+ {
-+ switch(responseNumber)
-+ {
-+ case -1:
-+ /* error in the received stream */
-+ emit loginResponse(Yahoo::LoginSock, QString());
-+ kDebug(YAHOO_RAW_DEBUG) << "unknown error logging in";
-+ break;
-+ case 1212:
-+ /* password incorrect */
-+ emit loginResponse(Yahoo::LoginPasswd, QString());
-+ kDebug(YAHOO_RAW_DEBUG) << "password incorrect";
-+ break;
-+ case 1213:
-+ /* security lock */
-+ emit loginResponse(Yahoo::LoginLock, QString());
-+ break;
-+ case 1235:
-+ /* username does not exist */
-+ emit loginResponse(Yahoo::LoginUname, QString());
-+ kDebug(YAHOO_RAW_DEBUG) << "user does not exist";
-+ break;
-+ case 1214:
-+ case 1236:
-+ emit loginResponse(Yahoo::LoginVerify, QString());
-+ break;
-+ case 100: /* username or password missing */
-+ /*FIXME handle this */
-+ break;
-+ default:
-+ /* FIXME unknown error. handle it! */
-+ break;
-+ }
-+ }
-+ else
-+ {
-+ /* start stage 2 here */
-+ sendAuthSixteenStage2(token);
-+ }
-+ }
-+}
-+
-+void LoginTask::sendAuthSixteenStage2(const QString& token)
-+{
-+ const QString YahooLoginUrl = "https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token=%1";
-+ kDebug(YAHOO_RAW_DEBUG) << "token:" << token;
-+ m_stage2Data.clear();
-+ QString fullUrl = YahooLoginUrl.arg(token);
-+ KUrl loginUrl(fullUrl);
-+ KIO::Job* job = KIO::get(loginUrl, KIO::Reload, KIO::HideProgressInfo);
-+ connect(job, SIGNAL(data(KIO::Job*, const QByteArray&)),
-+ this, SLOT(handleAuthSixteenStage2Data(KIO::Job*, const QByteArray&)));
-+ connect(job, SIGNAL(result(KJob*)),
-+ this, SLOT(handleAuthSixteenStage2Result(KJob*)));
-+}
-+
-+void LoginTask::handleAuthSixteenStage2Data(KIO::Job*, const QByteArray& data)
-+{
-+ kDebug(YAHOO_RAW_DEBUG) << "data:" << data;
-+ m_stage2Data.append(data);
-+}
-+
-+void LoginTask::handleAuthSixteenStage2Result(KJob* job)
-+{
-+ QString crumb;
-+ int responseNumber = -1;
-+ int error = job->error();
-+ kDebug(YAHOO_RAW_DEBUG) << "error:" << error;
-+ if (error == 0)
-+ {
-+ QStringList responses = m_stage2Data.split("\r\n");
-+ kDebug(YAHOO_RAW_DEBUG) << responses;
-+ responseNumber = responses[0].toInt();
-+ if (responseNumber == 0)
-+ {
-+ crumb = responses[1];
-+ crumb.remove("crumb=");
-+ m_yCookie = responses[2].remove(0,2); /* remove Y= */
-+ m_tCookie = responses[3].remove(0,2); /* remove T= */
-+ }
-+
-+ if (responseNumber != 0)
-+ {
-+ switch(responseNumber)
-+ {
-+ case -1:
-+ emit loginResponse(Yahoo::LoginSock, QString());
-+ break;
-+ case 100:
-+ emit loginResponse(Yahoo::LoginSock, QString());
-+ break;
-+ default: /* try to login anyways */
-+ break;
-+ }
-+ }
-+ else
-+ {
-+ QString cryptString = crumb;
-+ cryptString.append(m_challengeString);
-+ sendAuthSixteenStage3(cryptString);
-+ }
-+ }
-+}
-+
-+void LoginTask::sendAuthSixteenStage3(const QString& cryptString)
-+{
-+ kDebug(YAHOO_RAW_DEBUG) << " with crypt string" << cryptString;
-+ QByteArray cryptStringHash = QCryptographicHash::hash( cryptString.toAscii(),
-+ QCryptographicHash::Md5 );
-+ cryptStringHash = cryptStringHash.toBase64();
-+ cryptStringHash = cryptStringHash.replace('+', '.');
-+ cryptStringHash = cryptStringHash.replace('/', '_');
-+ cryptStringHash = cryptStringHash.replace('=', '-');
-+
- YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceAuthResp, m_stateOnConnect);
-- t->setId( sessionID );
-- t->setParam( 0 , sn.toLocal8Bit());
-- t->setParam( 2 , sn.toLocal8Bit());
-+ t->setId( m_sessionID );
-+ t->setParam( 1, client()->userId().toLocal8Bit());
-+ t->setParam( 0 , client()->userId().toLocal8Bit());
-+ t->setParam( 277, m_yCookie.toLocal8Bit() );
-+ t->setParam( 278, m_tCookie.toLocal8Bit() );
-+ t->setParam( 307, cryptStringHash );
-+ t->setParam( 244, 2097087 );
-+ t->setParam( 2 , client()->userId().toLocal8Bit());
- t->setParam( 2, 1 ); // Both parameter 2s wind up in the packet
-- t->setParam( 6 , resp_6);
-- t->setParam( 1, sn.toLocal8Bit());
-- t->setParam( 244, 2097087 );
- t->setParam( 135, YMSG_PROGRAM_VERSION_STRING );
-- t->setParam( 148, 480 );
-- t->setParam( 59 , "B\\tfckeert1kk1nl&b=2" ); // ???
-
-- if( !m_verificationWord.isEmpty() )
-- {
-- t->setParam( 227 , m_verificationWord.toLocal8Bit() );
-- m_verificationWord.clear();
-- }
--
-- free(resp_6);
-- free(resp_96);
- send(t);
-
- }
-Index: branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooeditaccount.cpp
-===================================================================
---- branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooeditaccount.cpp (revision 986795)
-+++ branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooeditaccount.cpp (revision 986796)
-@@ -63,9 +63,9 @@
- mAutoConnect->setChecked(acct->excludeConnect());
- mPasswordWidget->load( &acct->password() );
-
-- QString pagerServer = account()->configGroup()->readEntry("Server", "scs.msg.yahoo.com");
-+ QString pagerServer = account()->configGroup()->readEntry("Server", "scsa.msg.yahoo.com");
- int pagerPort = account()->configGroup()->readEntry("Port", 5050);
-- if( pagerServer != "scs.msg.yahoo.com" || pagerPort != 5050 )
-+ if( pagerServer != "scsa.msg.yahoo.com" || pagerPort != 5050 )
- optionOverrideServer->setChecked( true );
- else
- optionOverrideServer->setChecked( false );
-@@ -133,7 +133,7 @@
- }
- else
- {
-- yahooAccount->setServer( "scs.msg.yahoo.com" );
-+ yahooAccount->setServer( "scsa.msg.yahoo.com" );
- yahooAccount->setPort( 5050 );
- }
-
-Index: branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooaccount.cpp
-===================================================================
---- branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooaccount.cpp (revision 986795)
-+++ branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooaccount.cpp (revision 986796)
-@@ -539,7 +539,7 @@
- return;
- }
-
-- QString server = configGroup()->readEntry( "Server", "scs.msg.yahoo.com" );
-+ QString server = configGroup()->readEntry( "Server", "scsa.msg.yahoo.com" );
- int port = configGroup()->readEntry( "Port", 5050 );
-
- initConnectionSignals( MakeConnections );
-Index: branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.upd
-===================================================================
---- branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.upd (revision 0)
-+++ branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.upd (revision 986796)
-@@ -0,0 +1,4 @@
-+Id=kopete-update-yahoo-server/r1
-+File=kopeterc
-+Options=overwrite
-+Script=kopete-update_yahoo_server.pl,perl
-Index: branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.pl
-===================================================================
---- branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.pl (revision 0)
-+++ branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.pl (revision 986796)
-@@ -0,0 +1,20 @@
-+#!/usr/bin/perl
-+
-+# Rename the old Gaim style to Pidgin
-+
-+my $inYahoo = 0;
-+foreach (<>) {
-+ $inYahoo = 1 if (/^\[Account_YahooProtocol_.*$/);
-+ if ($inYahoo) {
-+ if (/^Server\=(.*)/) {
-+ my $oldServer = $1;
-+ if ($oldServer =~ m/\.yahoo\.com$/) {
-+ print "Server=scsa.msg.yahoo.com\n";
-+ $inYahoo = 0;
-+ next;
-+ }
-+ }
-+ }
-+
-+ print $_;
-+}
-
-Property changes on: branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.pl
-___________________________________________________________________
-Added: svn:executable
- + *
-
-Index: branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/CMakeLists.txt
-===================================================================
---- branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/CMakeLists.txt (revision 986795)
-+++ branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/CMakeLists.txt (revision 986796)
-@@ -4,10 +4,11 @@
- endif(NOT WIN32)
-
-
--install( FILES kopete-pluginloader.upd kopete-nameTracking.upd kopete-initialstatus.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR})
-+install( FILES kopete-pluginloader.upd kopete-nameTracking.upd kopete-initialstatus.upd kopete-update_yahoo_server.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR})
-
--install( PROGRAMS kopete-pluginloader.pl
-- kopete-account-0.10.pl kopete-initialstatus.pl DESTINATION ${KCONF_UPDATE_INSTALL_DIR})
-+install( PROGRAMS kopete-pluginloader.pl kopete-update_yahoo_server.pl
-+ kopete-account-0.10.pl kopete-initialstatus.pl
-+ DESTINATION ${KCONF_UPDATE_INSTALL_DIR})
-
-
- #TODO kconf_program ?
diff --git a/source/kde/kdenetwork/slack-desc b/source/kde/kdenetwork/slack-desc
index 03fdd8fd9..90120dd93 100644
--- a/source/kde/kdenetwork/slack-desc
+++ b/source/kde/kdenetwork/slack-desc
@@ -6,9 +6,9 @@
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-kdenetwork: kdenetwork (network utilities for KDE)
+kdenetwork: kdenetwork (Network utilities for KDE)
kdenetwork:
-kdenetwork: Network related utilities for the K Desktop Environment.
+kdenetwork: Network related utilities for the KDE Software Compilation.
kdenetwork:
kdenetwork:
kdenetwork:
diff --git a/source/kde/kdepim-runtime/doinst.sh b/source/kde/kdepim-runtime/doinst.sh
new file mode 100644
index 000000000..e376b59af
--- /dev/null
+++ b/source/kde/kdepim-runtime/doinst.sh
@@ -0,0 +1,5 @@
+
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database /usr/share/applications >/dev/null 2>&1
+fi
+
diff --git a/source/kde/kdepim-runtime/kdepim-runtime.SlackBuild b/source/kde/kdepim-runtime/kdepim-runtime.SlackBuild
new file mode 100755
index 000000000..51b89c51f
--- /dev/null
+++ b/source/kde/kdepim-runtime/kdepim-runtime.SlackBuild
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PRGNAM=kdepim-runtime
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+
+# Set the config option variables if they are not already set:
+if [ -r ../KDE.options ]; then
+ . ../KDE.options
+fi
+
+# The global options may be overridden here (if needed):
+if [ -r ./local.options ]; then
+ . ./local.options
+fi
+
+# Avoid a version number in .la files:
+if [ -d /usr/lib${LIBDIRSUFFIX}/qt ]; then
+ QTDIR=/usr/lib${LIBDIRSUFFIX}/qt
+fi
+
+rm -rf $PKG
+mkdir -p $PKG/usr
+cd $TMP
+echo "Building $PRGNAM-$VERSION..."
+tar xvf $CWD/../src/$PRGNAM-$VERSION.tar.?z* || exit 1
+cd $PRGNAM-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ $KDE_OPT_ARGS \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DSYSCONF_INSTALL_DIR=/etc/kde \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ ..
+ make $NUMJOBS || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd -
+
+if [ -d $PKG/usr/man ]; then
+ gzip -9 $PKG/usr/man/man?/*
+fi
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING* MAINTAINERS README* $PKG/usr/doc/$PRGNAM-$VERSION
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/kde/kdepim-runtime/slack-desc b/source/kde/kdepim-runtime/slack-desc
new file mode 100644
index 000000000..cb0ac6e73
--- /dev/null
+++ b/source/kde/kdepim-runtime/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+kdepim-runtime: kdepim-runtime (KDE Personal Information Management runtime)
+kdepim-runtime:
+kdepim-runtime: The KDE-PIM project aims to bring together those who wish to help
+kdepim-runtime: design, implement, test, etc. anything that's to do with personal
+kdepim-runtime: information management.
+kdepim-runtime:
+kdepim-runtime: This rather broad scope encompasses mail clients, addressbooks,
+kdepim-runtime: usenet news, scheduling, and even sticky notes.
+kdepim-runtime:
+kdepim-runtime:
+kdepim-runtime:
diff --git a/source/kde/kdepim/kdepim-4.4.0-install-headers.patch b/source/kde/kdepim/kdepim-4.4.0-install-headers.patch
new file mode 100644
index 000000000..378147093
--- /dev/null
+++ b/source/kde/kdepim/kdepim-4.4.0-install-headers.patch
@@ -0,0 +1,127 @@
+Index: libkleo/CMakeLists.txt
+===================================================================
+--- libkleo/CMakeLists.txt (revision 1072331)
++++ libkleo/CMakeLists.txt (revision 1072330)
+@@ -117,4 +117,60 @@
+ set_target_properties(kleo PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} )
+ install(TARGETS kleo ${INSTALL_TARGETS_DEFAULT_ARGS})
+
++install( FILES
++ kleo/cryptplug.h
++ kleo/cryptplugfactory.h
++ kleo/cryptplugwrapper.h
++ kleo/cryptplugwrapperlist.h
++ kleo/kleo_export.h
++ kleo/enum.h
++ kleo/oidmap.h
++ kleo/cryptobackend.h
++ kleo/cryptobackendfactory.h
++ kleo/cryptoconfig.h
++ kleo/dn.h
++ kleo/job.h
++ kleo/keylistjob.h
++ kleo/keygenerationjob.h
++ kleo/abstractimportjob.h
++ kleo/importjob.h
++ kleo/importfromkeyserverjob.h
++ kleo/exportjob.h
++ kleo/changeexpiryjob.h
++ kleo/changeownertrustjob.h
++ kleo/downloadjob.h
++ kleo/deletejob.h
++ kleo/encryptjob.h
++ kleo/decryptjob.h
++ kleo/signjob.h
++ kleo/specialjob.h
++ kleo/verifydetachedjob.h
++ kleo/verifyopaquejob.h
++ kleo/decryptverifyjob.h
++ kleo/signencryptjob.h
++ kleo/signkeyjob.h
++ kleo/adduseridjob.h
++ kleo/refreshkeysjob.h
++ kleo/multideletejob.h
++ kleo/hierarchicalkeylistjob.h
++ kleo/keyfilter.h
++ kleo/keyfiltermanager.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/kleo COMPONENT Devel)
++
++install ( FILES
++ ui/kdhorizontalline.h
++ ui/messagebox.h
++ ui/progressbar.h
++ ui/progressdialog.h
++ ui/keylistview.h
++ ui/keyselectiondialog.h
++ ui/keyrequester.h
++ ui/keyapprovaldialog.h
++ ui/backendconfigwidget.h
++ ui/dnattributeorderconfigwidget.h
++ ui/cryptoconfigmodule.h
++ ui/cryptoconfigdialog.h
++ ui/directoryserviceswidget.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/kleo/ui COMPONENT Devel)
++
+ install ( FILES libkleopatrarc.desktop DESTINATION ${CONFIG_INSTALL_DIR} RENAME libkleopatrarc )
+Index: kleopatra/libkleopatraclient/gui/CMakeLists.txt
+===================================================================
+--- kleopatra/libkleopatraclient/gui/CMakeLists.txt (revision 1072331)
++++ kleopatra/libkleopatraclient/gui/CMakeLists.txt (revision 1072330)
+@@ -19,4 +19,11 @@
+ TARGETS kleopatraclientgui
+ DESTINATION ${LIB_INSTALL_DIR}
+ )
++
+
++install(
++ FILES
++ certificaterequester.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/libkleopatraclient/gui
++ )
++
+Index: kleopatra/libkleopatraclient/core/CMakeLists.txt
+===================================================================
+--- kleopatra/libkleopatraclient/core/CMakeLists.txt (revision 1072331)
++++ kleopatra/libkleopatraclient/core/CMakeLists.txt (revision 1072330)
+@@ -38,3 +38,12 @@
+ )
+
+
++install(
++ FILES
++ initialization.h
++ command.h
++ selectcertificatecommand.h
++ signencryptfilescommand.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/libkleopatraclient/core
++ )
++
+Index: kleopatra/libkleopatraclient/CMakeLists.txt
+===================================================================
+--- kleopatra/libkleopatraclient/CMakeLists.txt (revision 1072331)
++++ kleopatra/libkleopatraclient/CMakeLists.txt (revision 1072330)
+@@ -6,3 +6,7 @@
+
+ add_subdirectory( tests )
+
++install(
++ FILES kleopatraclient_export.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/libkleopatraclient
++ )
+Index: libkpgp/CMakeLists.txt
+===================================================================
+--- libkpgp/CMakeLists.txt (revision 1072331)
++++ libkpgp/CMakeLists.txt (revision 1072330)
+@@ -34,3 +34,12 @@
+ install(FILES kpgp.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR})
+ install(PROGRAMS kpgp-3.1-upgrade-address-data.pl DESTINATION ${KCONF_UPDATE_INSTALL_DIR})
+
++install(FILES
++ kpgp.h
++ kpgpbase.h
++ kpgpblock.h
++ kpgpkey.h
++ kpgpui.h
++ libkpgp_export.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/kpgp COMPONENT Devel )
++
diff --git a/source/kde/kdepim/kdepim.SlackBuild b/source/kde/kdepim/kdepim.SlackBuild
index ea4c5d8f8..5c7b53474 100755
--- a/source/kde/kdepim/kdepim.SlackBuild
+++ b/source/kde/kdepim/kdepim.SlackBuild
@@ -47,6 +47,9 @@ echo "Building kdepim-$VERSION..."
tar xvf $CWD/../src/kdepim-$VERSION.tar.?z* || exit 1
cd kdepim-$VERSION
+# Install the kleopatra headers, or else kopete-cryptography will not build:
+cat $CWD/kdepim-4.4.0-install-headers.patch | patch -p0 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -57,6 +60,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
@@ -65,7 +69,7 @@ cd build
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
..
- make $NUMJOBS || exit 1
+ make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
cd -
diff --git a/source/kde/kdepim/slack-desc b/source/kde/kdepim/slack-desc
index 9427ca458..7a66c176c 100644
--- a/source/kde/kdepim/slack-desc
+++ b/source/kde/kdepim/slack-desc
@@ -6,7 +6,7 @@
# customary to leave one space after the ':'.
|-----handy-ruler-----------------------------------------------------|
-kdepim: kdepim
+kdepim: kdepim (KDE Personal Information Management applications)
kdepim:
kdepim: The KDE-PIM project aims to bring together those who wish to help
kdepim: design, implement, test, etc. anything that's to do with personal
diff --git a/source/kde/kdepimlibs/kdepimlibs.SlackBuild b/source/kde/kdepimlibs/kdepimlibs.SlackBuild
index e8c760c1e..9fe4b1b84 100755
--- a/source/kde/kdepimlibs/kdepimlibs.SlackBuild
+++ b/source/kde/kdepimlibs/kdepimlibs.SlackBuild
@@ -56,6 +56,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdepimlibs/slack-desc b/source/kde/kdepimlibs/slack-desc
index b858aed65..cbd08ba48 100644
--- a/source/kde/kdepimlibs/slack-desc
+++ b/source/kde/kdepimlibs/slack-desc
@@ -6,7 +6,7 @@
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-kdepimlibs: kdepimlibs
+kdepimlibs: kdepimlibs (Libraries for KDE-PIM)
kdepimlibs:
kdepimlibs: This module includes libraries that are central to the development and
kdepimlibs: execution of a KDE-PIM application.
diff --git a/source/kde/kdeplasma-addons/kdeplasma-addons.SlackBuild b/source/kde/kdeplasma-addons/kdeplasma-addons.SlackBuild
index 9a1158f29..5595221a5 100755
--- a/source/kde/kdeplasma-addons/kdeplasma-addons.SlackBuild
+++ b/source/kde/kdeplasma-addons/kdeplasma-addons.SlackBuild
@@ -56,6 +56,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdeplasma-addons/slack-desc b/source/kde/kdeplasma-addons/slack-desc
index be77dc019..a9bc5738f 100644
--- a/source/kde/kdeplasma-addons/slack-desc
+++ b/source/kde/kdeplasma-addons/slack-desc
@@ -8,7 +8,7 @@
|-----handy-ruler------------------------------------------------------|
kdeplasma-addons: kdeplasma-addons (Plasma addons for KDE)
kdeplasma-addons:
-kdeplasma-addons: Plasmoids (or widgets) for the KDE 4 Plasma desktop shell.
+kdeplasma-addons: Plasmoids (or widgets) for the KDE Plasma Desktop shell.
kdeplasma-addons:
kdeplasma-addons:
kdeplasma-addons:
diff --git a/source/kde/kdesdk/kdesdk.SlackBuild b/source/kde/kdesdk/kdesdk.SlackBuild
index 4730478e9..5c6f5730f 100755
--- a/source/kde/kdesdk/kdesdk.SlackBuild
+++ b/source/kde/kdesdk/kdesdk.SlackBuild
@@ -56,6 +56,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdesdk/slack-desc b/source/kde/kdesdk/slack-desc
index 97aee6f28..f954a27a1 100644
--- a/source/kde/kdesdk/slack-desc
+++ b/source/kde/kdesdk/slack-desc
@@ -6,12 +6,12 @@
# customary to leave one space after the ':'.
|-----handy-ruler-----------------------------------------------------|
-kdesdk: kdesdk
+kdesdk: kdesdk (KDE SDK)
kdesdk:
kdesdk: KDE Software Development Kit. This is a collection of applications
-kdesdk: and tools used by KDE developers. It also has example code for use
-kdesdk: in learning KDE programming or starting a new KDE application.
-kdesdk:
+kdesdk: and tools used to develop on the KDE Platform. It also contains
+kdesdk: example code for use in learning KDE programming or starting a new
+kdesdk: KDE application.
kdesdk:
kdesdk:
kdesdk:
diff --git a/source/kde/kdetoys/kdetoys.SlackBuild b/source/kde/kdetoys/kdetoys.SlackBuild
index c086ea506..dbfe023fb 100755
--- a/source/kde/kdetoys/kdetoys.SlackBuild
+++ b/source/kde/kdetoys/kdetoys.SlackBuild
@@ -56,6 +56,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdetoys/slack-desc b/source/kde/kdetoys/slack-desc
index b08036be0..9af6c6025 100644
--- a/source/kde/kdetoys/slack-desc
+++ b/source/kde/kdetoys/slack-desc
@@ -6,10 +6,10 @@
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-kdetoys: kdetoys (toys for KDE)
+kdetoys: kdetoys (Toys for the KDE Software Compilation)
kdetoys:
-kdetoys: Some toys for use with KDE such as amor, kteatime, ktux,
-kdetoys: kweatherreport, and kweatherservice.
+kdetoys: Some toys for the KDE Software Compilation such as amor, kteatime,
+kdetoys: ktux, kweatherreport, and kweatherservice.
kdetoys:
kdetoys:
kdetoys:
diff --git a/source/kde/kdeutils/kdeutils.SlackBuild b/source/kde/kdeutils/kdeutils.SlackBuild
index 91f0a0280..66b543293 100755
--- a/source/kde/kdeutils/kdeutils.SlackBuild
+++ b/source/kde/kdeutils/kdeutils.SlackBuild
@@ -57,6 +57,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdeutils/slack-desc b/source/kde/kdeutils/slack-desc
index 9b0cd18c9..2972d01fd 100644
--- a/source/kde/kdeutils/slack-desc
+++ b/source/kde/kdeutils/slack-desc
@@ -6,12 +6,12 @@
# customary to leave one space after the ':'.
|-----handy-ruler---------------------------------------------------|
-kdeutils: kdeutils
-kdeutils:
-kdeutils: This package includes various utilities for KDE such as ark, kcalc,
-kdeutils: kcharselect, kdessh, kdf, kfloppy, kgpg, ktimer, kwalletmanager,
-kdeutils: kwikdisk, okteta, superkaramba, and sweeper.
+kdeutils: kdeutils (KDE Utilities)
kdeutils:
+kdeutils: This package includes utilities for the KDE Software Compilation
+kdeutils: such as ark, kcalc, kcharselect, kdessh, kdf, kfloppy, kgpg,
+kdeutils: ktimer, kwalletmanager, kwikdisk, okteta, superkaramba, and
+kdeutils: sweeper.
kdeutils:
kdeutils:
kdeutils:
diff --git a/source/kde/kdevelop/kdevelop.SlackBuild b/source/kde/kdevelop/kdevelop.SlackBuild
index 8ae15058e..430f480bd 100755
--- a/source/kde/kdevelop/kdevelop.SlackBuild
+++ b/source/kde/kdevelop/kdevelop.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -56,9 +56,9 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc/kde \
diff --git a/source/kde/kdevelop/local.options b/source/kde/kdevelop/local.options
index 6cd6aa66b..59095fb99 100644
--- a/source/kde/kdevelop/local.options
+++ b/source/kde/kdevelop/local.options
@@ -1 +1 @@
-VERSION=3.9.91
+VERSION=4.0.0
diff --git a/source/kde/kdevelop/slack-desc b/source/kde/kdevelop/slack-desc
index bdf047d5f..49f2da129 100644
--- a/source/kde/kdevelop/slack-desc
+++ b/source/kde/kdevelop/slack-desc
@@ -6,7 +6,7 @@
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-kdevelop: kdevelop (KDE development environment)
+kdevelop: kdevelop (development environment for KDE)
kdevelop:
kdevelop: The KDevelop integrated C/C++ application development environment.
kdevelop:
diff --git a/source/kde/kdevplatform/kdevplatform.SlackBuild b/source/kde/kdevplatform/kdevplatform.SlackBuild
index 870c29a84..d24b94db0 100755
--- a/source/kde/kdevplatform/kdevplatform.SlackBuild
+++ b/source/kde/kdevplatform/kdevplatform.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -56,9 +56,9 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc/kde \
diff --git a/source/kde/kdevplatform/local.options b/source/kde/kdevplatform/local.options
index 210f53e4d..624badec2 100644
--- a/source/kde/kdevplatform/local.options
+++ b/source/kde/kdevplatform/local.options
@@ -1 +1 @@
-VERSION=0.9.91
+VERSION=1.0.0
diff --git a/source/kde/kdewebdev/include-tidy.patch b/source/kde/kdewebdev/include-tidy.patch
new file mode 100644
index 000000000..fd4de940e
--- /dev/null
+++ b/source/kde/kdewebdev/include-tidy.patch
@@ -0,0 +1,13 @@
+--- klinkstatus/src/tidy/tidyx.h.orig 2009-09-03 09:55:38.886267704 -0500
++++ klinkstatus/src/tidy/tidyx.h 2009-09-03 09:57:29.032269520 -0500
+@@ -48,8 +48,8 @@
+ Created 2002-07-11 by Charles Reitzel
+ */
+
+-#include <tidy.h>
+-#include <buffio.h>
++#include "/tmp/package-kdewebdev/usr/include/tidy/tidy.h"
++#include "/tmp/package-kdewebdev/usr/include/tidy/buffio.h"
+
+ #include <config-tidy.h>
+
diff --git a/source/kde/kdewebdev/kdewebdev.SlackBuild b/source/kde/kdewebdev/kdewebdev.SlackBuild
index 457536297..47e484992 100755
--- a/source/kde/kdewebdev/kdewebdev.SlackBuild
+++ b/source/kde/kdewebdev/kdewebdev.SlackBuild
@@ -54,7 +54,7 @@ echo "Building kdewebdev-$VERSION..."
tar xvf $CWD/../src/kdewebdev-$VERSION.tar.?z* || exit 1
cd kdewebdev-$VERSION
-zcat $CWD/kde4-kdewebdev-findtidy.diff.gz | patch -p0 --verbose || exit 1
+#zcat $CWD/kde4-kdewebdev-findtidy.diff.gz | patch -p0 --verbose || exit 1
chown -R root:root .
find . \
@@ -65,10 +65,13 @@ find . \
# Maybe we won't need this again...
# -DWITH_RUBY:BOOL=OFF \
+cp klinkstatus/src/tidy/tidyx.h{,.orig}
+zcat $CWD/include-tidy.patch.gz | patch -p0
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/kdewebdev/slack-desc b/source/kde/kdewebdev/slack-desc
index a082d057a..294ef22e4 100644
--- a/source/kde/kdewebdev/slack-desc
+++ b/source/kde/kdewebdev/slack-desc
@@ -6,10 +6,10 @@
# customary to leave one space after the ':'.
|-----handy-ruler--------------------------------------------------|
-kdewebdev: kdewebdev (web development package for the K Desktop Environment)
+kdewebdev: kdewebdev (web development package for the KDE Platform)
kdewebdev:
-kdewebdev: The kdewebdev package contains Quanta Plus and other applications
-kdewebdev: which are useful for web development.
+kdewebdev: The kdewebdev package contains applications which are useful for
+kdewebdev: web development.
kdewebdev:
kdewebdev:
kdewebdev:
diff --git a/source/kde/kdewebdev/tidy/tidy.SlackBuild b/source/kde/kdewebdev/tidy/tidy.SlackBuild
index e487d95eb..6d8c3a7dd 100755
--- a/source/kde/kdewebdev/tidy/tidy.SlackBuild
+++ b/source/kde/kdewebdev/tidy/tidy.SlackBuild
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,19 @@
# This file is an example, so feel free to fix it if it gets out of date. :-)
PKGNAM=tidy
-VERSION=${VERSION:-20090604T2303}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-20100503T2309}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
@@ -36,6 +45,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
diff --git a/source/kde/kdewebdev/tidy/tidy.build b/source/kde/kdewebdev/tidy/tidy.build
index ee7b821f4..b638b24ed 100755
--- a/source/kde/kdewebdev/tidy/tidy.build
+++ b/source/kde/kdewebdev/tidy/tidy.build
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,10 +24,19 @@
# New cvs version - 20080502
PKGNAM=tidy
-VERSION=20090604T2303
-ARCH=${ARCH:-x86_64}
+VERSION=20100503T2309
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -42,6 +51,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
diff --git a/source/kde/koffice/koffice.SlackBuild b/source/kde/koffice/koffice.SlackBuild
index 1945b990d..d7332bf5b 100755
--- a/source/kde/koffice/koffice.SlackBuild
+++ b/source/kde/koffice/koffice.SlackBuild
@@ -46,6 +46,9 @@ cd $TMP
echo "Building koffice-$VERSION..."
tar xvf $CWD/../src/koffice-$VERSION.tar.?z* || exit 1
cd koffice-$VERSION
+
+zcat $CWD/koffice.krita.png14.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -56,6 +59,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/koffice/koffice.krita.png14.diff b/source/kde/koffice/koffice.krita.png14.diff
new file mode 100644
index 000000000..252107de0
--- /dev/null
+++ b/source/kde/koffice/koffice.krita.png14.diff
@@ -0,0 +1,11 @@
+--- ./krita/ui/kis_png_converter.cpp.orig 2010-01-08 04:42:41.000000000 -0600
++++ ./krita/ui/kis_png_converter.cpp 2010-02-25 12:01:11.000000000 -0600
+@@ -404,7 +404,7 @@
+
+ png_byte signature[8];
+ iod->peek((char*)signature, 8);
+- if (!png_check_sig(signature, 8)) {
++ if (!(png_sig_cmp(signature, 0, 8) == 0)) {
+ iod->close();
+ return (KisImageBuilder_RESULT_BAD_FETCH);
+ }
diff --git a/source/kde/koffice/local.options b/source/kde/koffice/local.options
index ccb0cb13a..d98d655d6 100644
--- a/source/kde/koffice/local.options
+++ b/source/kde/koffice/local.options
@@ -1 +1,2 @@
-VERSION=2.0.2
+VERSION=2.1.2
+BUILD=2
diff --git a/source/kde/konq-plugins/konq-plugins.SlackBuild b/source/kde/konq-plugins/konq-plugins.SlackBuild
index 8dc20cc99..870e60812 100755
--- a/source/kde/konq-plugins/konq-plugins.SlackBuild
+++ b/source/kde/konq-plugins/konq-plugins.SlackBuild
@@ -56,6 +56,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/konq-plugins/local.options b/source/kde/konq-plugins/local.options
new file mode 100644
index 000000000..dc6e9bd41
--- /dev/null
+++ b/source/kde/konq-plugins/local.options
@@ -0,0 +1 @@
+VERSION=4.4.0
diff --git a/source/kde/kopete-cryptography/doinst.sh b/source/kde/kopete-cryptography/doinst.sh
new file mode 100644
index 000000000..22d4849bc
--- /dev/null
+++ b/source/kde/kopete-cryptography/doinst.sh
@@ -0,0 +1,5 @@
+
+if [ -x usr/bin/update-desktop-database ]; then
+ usr/bin/update-desktop-database usr/share/applications >/dev/null 2>&1
+fi
+
diff --git a/source/kde/kopete-cryptography/kopete-cryptography.SlackBuild b/source/kde/kopete-cryptography/kopete-cryptography.SlackBuild
new file mode 100755
index 000000000..b75eb6418
--- /dev/null
+++ b/source/kde/kopete-cryptography/kopete-cryptography.SlackBuild
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PRGNAM=kopete-cryptography
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+
+# Set the config option variables if they are not already set:
+if [ -r ../KDE.options ]; then
+ . ../KDE.options
+fi
+
+# The global options may be overridden here (if needed):
+if [ -r ./local.options ]; then
+ . ./local.options
+fi
+
+# Avoid a version number in .la files:
+if [ -d /usr/lib${LIBDIRSUFFIX}/qt ]; then
+ QTDIR=/usr/lib${LIBDIRSUFFIX}/qt
+fi
+
+rm -rf $PKG
+mkdir -p $PKG/usr
+cd $TMP
+echo "Building $PRGNAM-$VERSION..."
+tar xvf $CWD/../src/extragear/$PRGNAM-$VERSION.tar.?z* || exit 1
+cd $PRGNAM-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ $KDE_OPT_ARGS \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DSYSCONF_INSTALL_DIR=/etc/kde \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ ..
+ make $NUMJOBS || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd -
+
+if [ -d $PKG/usr/man ]; then
+ gzip -9 $PKG/usr/man/man?/*
+fi
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING* $PKG/usr/doc/$PRGNAM-$VERSION
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PRGNAM-$(echo $VERSION | tr - _)-$ARCH-$BUILD.txz
+
diff --git a/source/kde/kopete-cryptography/local.options b/source/kde/kopete-cryptography/local.options
new file mode 100644
index 000000000..fda42958d
--- /dev/null
+++ b/source/kde/kopete-cryptography/local.options
@@ -0,0 +1 @@
+VERSION=1.3.0-kde4.4.0
diff --git a/source/kde/kopete-cryptography/slack-desc b/source/kde/kopete-cryptography/slack-desc
new file mode 100644
index 000000000..7529a8b1e
--- /dev/null
+++ b/source/kde/kopete-cryptography/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+kopete-cryptography: kopete-cryptography (crypto support for kopete)
+kopete-cryptography:
+kopete-cryptography: Cryptographic support for Kopete, the KDE Instant Messenger.
+kopete-cryptography:
+kopete-cryptography:
+kopete-cryptography:
+kopete-cryptography:
+kopete-cryptography:
+kopete-cryptography:
+kopete-cryptography:
+kopete-cryptography:
diff --git a/source/kde/ktorrent/ktorrent.SlackBuild b/source/kde/ktorrent/ktorrent.SlackBuild
index acebafd2a..57cf6ae1e 100755
--- a/source/kde/ktorrent/ktorrent.SlackBuild
+++ b/source/kde/ktorrent/ktorrent.SlackBuild
@@ -44,7 +44,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
echo "Building ktorrent-$VERSION..."
-tar xvf $CWD/../src/extragear/ktorrent-$VERSION.tar.?z* || exit 1
+tar xvf $CWD/../src/extragear/ktorrent-${VERSION}.tar.?z* || exit 1
cd ktorrent-$VERSION
chown -R root:root .
find . \
@@ -56,6 +56,7 @@ find . \
mkdir -p build
cd build
cmake \
+ $KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \
diff --git a/source/kde/ktorrent/local.options b/source/kde/ktorrent/local.options
index 17ea83467..b95a478ad 100644
--- a/source/kde/ktorrent/local.options
+++ b/source/kde/ktorrent/local.options
@@ -1 +1 @@
-VERSION=3.2.2
+VERSION=3.3.4
diff --git a/source/kde/ktorrent/slack-desc b/source/kde/ktorrent/slack-desc
index 486e33d38..fbf151f79 100644
--- a/source/kde/ktorrent/slack-desc
+++ b/source/kde/ktorrent/slack-desc
@@ -6,9 +6,9 @@
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-ktorrent: ktorrent (BitTorrent program for KDE)
+ktorrent: ktorrent (KDE BitTorrent program)
ktorrent:
-ktorrent: KTorrent is a BitTorrent program for KDE with many features:
+ktorrent: KTorrent is a BitTorrent program with many features:
ktorrent: Download torrent files (of course :-), upload and download speed
ktorrent: capping, Internet searching, UDP trackers, port forwarding with UPnP,
ktorrent: IP blocking, importing of partially or fully downloaded files,
diff --git a/source/kde/mplayerthumbs/mplayerthumbs.SlackBuild b/source/kde/mplayerthumbs/mplayerthumbs.SlackBuild
deleted file mode 100755
index 959802729..000000000
--- a/source/kde/mplayerthumbs/mplayerthumbs.SlackBuild
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-CWD=$(pwd)
-
-PKGNAM=mplayerthumbs
-VERSION=${VERSION:-1.2}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
-NUMJOBS=${NUMJOBS:--j4}
-
-if [ "$TMP" = "" ]; then
- TMP=/tmp
-fi
-PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $PKG
-
-if [ "$ARCH" = "i386" ]; then
- SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
-elif [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
-fi
-
-cd $TMP
-rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.gz
-cd ${PKGNAM}-$VERSION
-
-# Make sure ownerships and permissions are sane:
-chown -R root:root .
-find . -perm 666 -exec chmod 644 {} \;
-find . -perm 664 -exec chmod 644 {} \;
-find . -perm 600 -exec chmod 644 {} \;
-find . -perm 444 -exec chmod 644 {} \;
-find . -perm 400 -exec chmod 644 {} \;
-find . -perm 440 -exec chmod 644 {} \;
-find . -perm 777 -exec chmod 755 {} \;
-find . -perm 775 -exec chmod 755 {} \;
-find . -perm 511 -exec chmod 755 {} \;
-find . -perm 711 -exec chmod 755 {} \;
-find . -perm 555 -exec chmod 755 {} \;
-
-mkdir -p build
-cd build
- cmake \
- -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DMAN_INSTALL_DIR=/usr/man \
- -DSYSCONF_INSTALL_DIR=/etc/kde \
- ..
- make $NUMJOBS || exit 1
- make install DESTDIR=$PKG || exit 1
-cd -
-
-# Strip binaries:
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-debug 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-debug 2> /dev/null
-)
-
-# Compress and link manpages, if any:
-if [ -d $PKG/usr/man ]; then
- ( cd $PKG/usr/man
- for manpagedir in $(find . -type d -name "man*") ; do
- ( cd $manpagedir
- for eachpage in $( find . -type l -maxdepth 1) ; do
- ln -s $( readlink $eachpage ).gz $eachpage.gz
- rm $eachpage
- done
- gzip -9 *.?
- )
- done
- )
-fi
-
-# Compress info files, if any:
-if [ -d $PKG/usr/info ]; then
- ( cd $PKG/usr/info
- rm -f dir
- gzip -9 *
- )
-fi
-
-# Add a documentation directory:
-mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
-cp -a \
- AUTHORS COPYING* ChangeLog INSTALL NEWS README* TODO \
- $PKG/usr/doc/${PKGNAM}-$VERSION
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $TMP/package-${PKGNAM}
-makepkg -l y -c n ../${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/kde/mplayerthumbs/slack-desc b/source/kde/mplayerthumbs/slack-desc
deleted file mode 100644
index 78f3cd032..000000000
--- a/source/kde/mplayerthumbs/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|' on
-# the right side marks the last column you can put a character in. You must make
-# exactly 11 lines for the formatting to be correct. It's also customary to
-# leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-mplayerthumbs: mplayerthumbs (media thumbnailer for KDE)
-mplayerthumbs:
-mplayerthumbs: MPlayerThumbs is a thumbnail generator for KDE file managers
-mplayerthumbs: including Konqueror and Dolphin. It uses MPlayer to create
-mplayerthumbs: thumbnails for all supported media types.
-mplayerthumbs:
-mplayerthumbs: MPlayerThumbs was written by Marco Gulino.
-mplayerthumbs:
-mplayerthumbs:
-mplayerthumbs:
-mplayerthumbs:
diff --git a/source/kde/oxygen-icons/oxygen-icons.SlackBuild b/source/kde/oxygen-icons/oxygen-icons.SlackBuild
new file mode 100755
index 000000000..bedc8e1b0
--- /dev/null
+++ b/source/kde/oxygen-icons/oxygen-icons.SlackBuild
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008 Robby Workman, Northport, AL, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=oxygen-icons
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+# Set the config option variables if they are not already set:
+if [ -r ../KDE.options ]; then
+ . ../KDE.options
+fi
+
+# The global options may be overridden here (if needed):
+if [ -r ./local.options ]; then
+ . ./local.options
+fi
+
+# Avoid a version number in .la files:
+if [ -d /usr/lib${LIBDIRSUFFIX}/qt ]; then
+ QTDIR=/usr/lib${LIBDIRSUFFIX}/qt
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+echo "Building $PKGNAM-$VERSION..."
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/../src/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DSYSCONF_INSTALL_DIR=/etc/kde \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ ..
+ make $NUMJOBS || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd -
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a AUTHORS CONTRIBUTING COPYING TODO-smallversions $PKG/usr/doc/$PKGNAM-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/kde/oxygen-icons/slack-desc b/source/kde/oxygen-icons/slack-desc
new file mode 100644
index 000000000..5c1c15cb1
--- /dev/null
+++ b/source/kde/oxygen-icons/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+oxygen-icons: oxygen-icons (Oxygen theme for the KDE Plasma Desktop)
+oxygen-icons:
+oxygen-icons: Oxygen provides a complete and modern icon theme for KDE.
+oxygen-icons:
+oxygen-icons:
+oxygen-icons:
+oxygen-icons:
+oxygen-icons:
+oxygen-icons:
+oxygen-icons: Visit the Oxygen project online: http://www.oxygen-icons.org
+oxygen-icons:
diff --git a/source/kde/polkit-kde-1/local.options b/source/kde/polkit-kde-1/local.options
new file mode 100644
index 000000000..711ed9e81
--- /dev/null
+++ b/source/kde/polkit-kde-1/local.options
@@ -0,0 +1,2 @@
+#VERSION=0.95.1
+VERSION=r1120537
diff --git a/source/kde/polkit-kde-1/polkit-kde-1.SlackBuild b/source/kde/polkit-kde-1/polkit-kde-1.SlackBuild
new file mode 100755
index 000000000..eab0d56b1
--- /dev/null
+++ b/source/kde/polkit-kde-1/polkit-kde-1.SlackBuild
@@ -0,0 +1,93 @@
+#!/bin/sh
+
+# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-polkit-kde-1
+
+
+# Set the config option variables if they are not already set:
+if [ -r ../KDE.options ]; then
+ . ../KDE.options
+fi
+
+# The global options may be overridden here (if needed):
+if [ -r ./local.options ]; then
+ . ./local.options
+fi
+
+# Avoid a version number in .la files:
+if [ -d /usr/lib${LIBDIRSUFFIX}/kde ]; then
+ QTDIR=/usr/lib${LIBDIRSUFFIX}/kde
+fi
+
+rm -rf $PKG
+mkdir -p $PKG/usr
+cd $TMP
+echo "Building polkit-kde-1-$VERSION..."
+tar xvf $CWD/../src/polkit-kde-1-$VERSION.tar.?z* || exit 1
+cd polkit-kde-1-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ $KDE_OPT_ARGS \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DSYSCONF_INSTALL_DIR=/etc \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ ..
+ make $NUMJOBS || make || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd -
+
+if [ -d $PKG/usr/man ]; then
+ gzip -9 $PKG/usr/man/man?/*
+fi
+
+mkdir -p $PKG/usr/doc/polkit-kde-1-$VERSION
+cp -a \
+ COPYING* README* \
+ $PKG/usr/doc/polkit-kde-1-$VERSION
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/polkit-kde-1-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/kde/polkit-kde-1/slack-desc b/source/kde/polkit-kde-1/slack-desc
new file mode 100644
index 000000000..8e0a3ad64
--- /dev/null
+++ b/source/kde/polkit-kde-1/slack-desc
@@ -0,0 +1,18 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+polkit-kde-1: polkit-kde-1 (KDE polkit authenticator)
+polkit-kde-1:
+polkit-kde-1: This is a polkit authenticator for KDE.
+polkit-kde-1:
+polkit-kde-1:
+polkit-kde-1:
+polkit-kde-1:
+polkit-kde-1:
+polkit-kde-1:
+polkit-kde-1:
diff --git a/source/kde/polkit-qt-1/local.options b/source/kde/polkit-qt-1/local.options
new file mode 100644
index 000000000..c40c7ac4c
--- /dev/null
+++ b/source/kde/polkit-qt-1/local.options
@@ -0,0 +1,2 @@
+#VERSION=0.95.1
+VERSION=r1118744
diff --git a/source/kde/polkit-qt-1/polkit-qt-1.SlackBuild b/source/kde/polkit-qt-1/polkit-qt-1.SlackBuild
new file mode 100755
index 000000000..646b6ebb0
--- /dev/null
+++ b/source/kde/polkit-qt-1/polkit-qt-1.SlackBuild
@@ -0,0 +1,90 @@
+#!/bin/sh
+
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-polkit-qt-1
+
+
+# Set the config option variables if they are not already set:
+if [ -r ../KDE.options ]; then
+ . ../KDE.options
+fi
+
+# The global options may be overridden here (if needed):
+if [ -r ./local.options ]; then
+ . ./local.options
+fi
+
+# Avoid a version number in .la files:
+if [ -d /usr/lib${LIBDIRSUFFIX}/qt ]; then
+ QTDIR=/usr/lib${LIBDIRSUFFIX}/qt
+fi
+
+rm -rf $PKG
+mkdir -p $PKG/usr
+cd $TMP
+echo "Building polkit-qt-1-$VERSION..."
+tar xvf $CWD/../src/polkit-qt-1-$VERSION.tar.?z* || exit 1
+cd polkit-qt-1-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ $KDE_OPT_ARGS \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ ..
+ make $NUMJOBS || make || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd -
+
+if [ -d $PKG/usr/man ]; then
+ gzip -9 $PKG/usr/man/man?/*
+fi
+
+mkdir -p $PKG/usr/doc/polkit-qt-1-$VERSION
+cp -a COPYING* README* $PKG/usr/doc/polkit-qt-1-$VERSION
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/polkit-qt-1-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/kde/polkit-qt-1/slack-desc b/source/kde/polkit-qt-1/slack-desc
new file mode 100644
index 000000000..ea4ffe06f
--- /dev/null
+++ b/source/kde/polkit-qt-1/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+polkit-qt-1: polkit-qt-1 (Qt polkit API wrapper)
+polkit-qt-1:
+polkit-qt-1: polkit-qt-1 aims to make it easy for Qt developers to take advantage
+polkit-qt-1: of the polkit API. It is a convenience wrapper around QAction and
+polkit-qt-1: QAbstractButton that lets you integrate those two components
+polkit-qt-1: easily with polkit.
+polkit-qt-1:
+polkit-qt-1:
+polkit-qt-1:
+polkit-qt-1: Homepage: http://techbase.kde.org/Polkit-Qt-1
+polkit-qt-1:
diff --git a/source/kde/skanlite/local.options b/source/kde/skanlite/local.options
index 5d5991bf0..e7ebfea91 100644
--- a/source/kde/skanlite/local.options
+++ b/source/kde/skanlite/local.options
@@ -1 +1 @@
-VERSION=0.3-kde4.2.4
+VERSION=0.4-kde4.4.0
diff --git a/source/kde/skanlite/skanlite.SlackBuild b/source/kde/skanlite/skanlite.SlackBuild
index 759a5eac7..a156933cf 100755
--- a/source/kde/skanlite/skanlite.SlackBuild
+++ b/source/kde/skanlite/skanlite.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -56,7 +56,6 @@ find . \
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc/kde \
diff --git a/source/kdei/kde-l10n.SlackBuild b/source/kdei/kde-l10n.SlackBuild
deleted file mode 100755
index f8e7ad8cd..000000000
--- a/source/kdei/kde-l10n.SlackBuild
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/sh
-
-# Copyright 2008 Robby Workman Northport, AL, USA
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# This script should build any of the language packs if run with (for example):
-# PKGLANG=de ./kde-l10n.SlackBuild
-# You should be able to build all of them with something like this:
-# for i in $(cat languages) ; do PKGLANG=$i ./kde-l10n.SlackBuild ; done
-# If ./languages is missing and this script is called without options, the
-# default is to create an up-to-date ./languages list and build all the
-# language packs.
-
-if [ ! -r ./languages ]; then
- for file in kde-l10n*bz2 ; do
- echo $file | cut -f 3 -d - >> ./languages
- done
-fi
-
-[ -z $VERSION ] && export VERSION=4.2.4
-[ -z $ARCH ] && export ARCH=noarch
-[ -z $BUILD ] && export BUILD=1
-
-# Use this as CFLAGS and CXXFLAGS:
-if [ -z "$SLKCFLAGS" ]; then
- if [ "$ARCH" = "i486" ]; then
- export SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- elif [ "$ARCH" = "s390" ]; then
- export SLKCFLAGS="-O2"
- elif [ "$ARCH" = "x86_64" ]; then
- export SLKCFLAGS="-O2 -fPIC"
- fi
-fi
-
-# Get the kde environment variables
-[ -d kdebase ] && . ./kdebase/profile.d/kde.sh
-
-# Set the config option variables if they are not already set:
-[ -r ../KDE.options ] && . ../KDE.options
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-
-make_language_pack() {
-rm -rf $PKG
-mkdir -p $TMP $PKG
-cd $TMP
-rm -rf $PKGNAM-$VERSION
-tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
-cd $PKGNAM-$VERSION || exit 1
-chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-mkdir -p build
-cd build
- cmake \
- -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DMAN_INSTALL_DIR=/usr/man \
- -DSYSCONF_INSTALL_DIR=/etc/kde \
- -DLIB_SUFFIX=${LIBDIRSUFFIX} \
- ..
- make || exit 1
- make install DESTDIR=$PKG || exit 1
-cd -
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-)
-mkdir -p $PKG/install
-cat $CWD/slack-desc/slack-desc.kde-l10n-$PKGLANG > $PKG/install/slack-desc
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
-}
-
-if [ -z $PKGLANG ]; then
- for PKGLANG in $(cat languages) ; do
- PKGNAM=kde-l10n-$PKGLANG
- PKG=$TMP/package-kde-l10n-$PKGLANG
- # The global options may be overridden here (if needed):
- [ -r ./local.options/$PKGLANG ] && . ./local.options/$PKGLANG
- make_language_pack;
- done
-else
- PKGNAM=kde-l10n-$PKGLANG
- PKG=$TMP/package-kde-l10n-$PKGLANG
- # The global options may be overridden here (if needed):
- [ -r ./local.options/$PKGLANG ] && . ./local.options/$PKGLANG
- make_language_pack;
-fi
-
diff --git a/source/kdei/kde-l10n/kde-l10n.SlackBuild b/source/kdei/kde-l10n/kde-l10n.SlackBuild
new file mode 100755
index 000000000..1b522bf81
--- /dev/null
+++ b/source/kdei/kde-l10n/kde-l10n.SlackBuild
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+# Copyright 2008 Robby Workman Northport, AL, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# This script should build any of the language packs if run with (for example):
+# PKGLANG=de ./kde-l10n.SlackBuild
+# You should be able to build all of them with something like this:
+# for i in $(cat languages) ; do PKGLANG=$i ./kde-l10n.SlackBuild ; done
+# If ./languages is missing and this script is called without options, the
+# default is to create an up-to-date ./languages list and build all the
+# language packs.
+
+if [ ! -r ./languages ]; then
+ for file in kde-l10n*bz2 ; do
+ echo $file | cut -f 3 -d - >> ./languages
+ done
+fi
+
+[ -z $VERSION ] && export VERSION=4.4.3
+[ -z $ARCH ] && export ARCH=noarch
+[ -z $BUILD ] && export BUILD=1
+
+# Use this as CFLAGS and CXXFLAGS:
+if [ -z "$SLKCFLAGS" ]; then
+ if [ "$ARCH" = "i486" ]; then
+ export SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ elif [ "$ARCH" = "s390" ]; then
+ export SLKCFLAGS="-O2"
+ elif [ "$ARCH" = "x86_64" ]; then
+ export SLKCFLAGS="-O2 -fPIC"
+ else
+ export SLKCFLAGS="-O2"
+ fi
+fi
+
+# Get the kde environment variables
+[ -d kdebase ] && . ./kdebase/profile.d/kde.sh
+
+# Set the config option variables if they are not already set:
+[ -r ../KDE.options ] && . ../KDE.options
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+
+make_language_pack() {
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+cd $PKGNAM-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DSYSCONF_INSTALL_DIR=/etc/kde \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ ..
+ make || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd -
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ )
+fi
+mkdir -p $PKG/install
+cat $CWD/slack-desc/slack-desc.kde-l10n-$PKGLANG > $PKG/install/slack-desc
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+}
+
+if [ -z $PKGLANG ]; then
+ for PKGLANG in $(cat languages) ; do
+ PKGNAM=kde-l10n-$PKGLANG
+ PKG=$TMP/package-kde-l10n-$PKGLANG
+ # The global options may be overridden here (if needed):
+ [ -r ./local.options/$PKGLANG ] && . ./local.options/$PKGLANG
+ make_language_pack;
+ done
+else
+ PKGNAM=kde-l10n-$PKGLANG
+ PKG=$TMP/package-kde-l10n-$PKGLANG
+ # The global options may be overridden here (if needed):
+ [ -r ./local.options/$PKGLANG ] && . ./local.options/$PKGLANG
+ make_language_pack;
+fi
+
diff --git a/source/kdei/kde-l10n/languages b/source/kdei/kde-l10n/languages
new file mode 100644
index 000000000..47b709a08
--- /dev/null
+++ b/source/kdei/kde-l10n/languages
@@ -0,0 +1,58 @@
+ar
+bg
+ca
+ca@valencia
+cs
+csb
+da
+de
+el
+en_GB
+eo
+es
+et
+eu
+fi
+fr
+fy
+ga
+gl
+gu
+he
+hi
+hr
+hu
+id
+is
+it
+ja
+kk
+km
+kn
+ko
+lt
+lv
+mai
+mk
+ml
+nb
+nds
+nl
+nn
+pa
+pl
+pt
+pt_BR
+ro
+ru
+si
+sk
+sl
+sr
+sv
+tg
+tr
+uk
+wa
+zh_CN
+zh_TW
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-ar b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ar
index c1850ab65..c1850ab65 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-ar
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ar
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-bg b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-bg
index 4210b1fbf..4210b1fbf 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-bg
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-bg
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-bn_IN b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-bn_IN
index 2f7c7c03b..2f7c7c03b 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-bn_IN
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-bn_IN
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-ca b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ca
index 0642c7453..0642c7453 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-ca
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ca
diff --git a/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ca@valencia b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ca@valencia
new file mode 100644
index 000000000..0f1a95772
--- /dev/null
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ca@valencia
@@ -0,0 +1,11 @@
+kde-l10n-ca: kde-l10n-ca@valencia
+kde-l10n-ca@valencia:
+kde-l10n-ca@valencia: Catalan (Valencian) language support for KDE.
+kde-l10n-ca@valencia:
+kde-l10n-ca@valencia:
+kde-l10n-ca@valencia:
+kde-l10n-ca@valencia:
+kde-l10n-ca@valencia:
+kde-l10n-ca@valencia:
+kde-l10n-ca@valencia:
+kde-l10n-ca@valencia:
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-cs b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-cs
index a9ff293c5..a9ff293c5 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-cs
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-cs
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-csb b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-csb
index a430c78e0..a430c78e0 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-csb
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-csb
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-da b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-da
index 9cdb27d9f..9cdb27d9f 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-da
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-da
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-de b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-de
index e90b9624e..e90b9624e 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-de
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-de
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-el b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-el
index 3e6b56e3d..3e6b56e3d 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-el
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-el
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-en_GB b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-en_GB
index 7bd1861a2..7bd1861a2 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-en_GB
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-en_GB
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-eo b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-eo
index 70a4484a8..70a4484a8 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-eo
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-eo
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-es b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-es
index 333cf6421..333cf6421 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-es
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-es
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-et b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-et
index ac801ed02..ac801ed02 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-et
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-et
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-eu b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-eu
index 3576364a5..3576364a5 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-eu
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-eu
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-fi b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-fi
index 74ed56f04..74ed56f04 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-fi
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-fi
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-fr b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-fr
index 8a70d56de..8a70d56de 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-fr
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-fr
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-fy b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-fy
index 93195d0f5..93195d0f5 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-fy
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-fy
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-ga b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ga
index fc07a274a..fc07a274a 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-ga
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ga
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-gl b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-gl
index 58eaca77f..58eaca77f 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-gl
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-gl
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-gu b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-gu
index 79c5ae5a8..79c5ae5a8 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-gu
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-gu
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-he b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-he
index 3ab491b7e..3ab491b7e 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-he
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-he
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-hi b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hi
index 7575bb963..7575bb963 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-hi
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hi
diff --git a/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hne b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hne
new file mode 100644
index 000000000..3ff7676bb
--- /dev/null
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hne
@@ -0,0 +1,11 @@
+kde-l10n-hne: kde-l10n-hne
+kde-l10n-hne:
+kde-l10n-hne: Chhattisgarhi language support for KDE.
+kde-l10n-hne:
+kde-l10n-hne:
+kde-l10n-hne:
+kde-l10n-hne:
+kde-l10n-hne:
+kde-l10n-hne:
+kde-l10n-hne:
+kde-l10n-hne:
diff --git a/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hr b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hr
new file mode 100644
index 000000000..711dc1271
--- /dev/null
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hr
@@ -0,0 +1,11 @@
+kde-l10n-hr: kde-l10n-hr
+kde-l10n-hr:
+kde-l10n-hr: Croatian language support for KDE.
+kde-l10n-hr:
+kde-l10n-hr:
+kde-l10n-hr:
+kde-l10n-hr:
+kde-l10n-hr:
+kde-l10n-hr:
+kde-l10n-hr:
+kde-l10n-hr:
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-hu b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hu
index 1ecc0c424..1ecc0c424 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-hu
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-hu
diff --git a/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-id b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-id
new file mode 100644
index 000000000..6e5bd8a3a
--- /dev/null
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-id
@@ -0,0 +1,11 @@
+kde-l10n-id: kde-l10n-id
+kde-l10n-id:
+kde-l10n-id: Indonesian language support for KDE.
+kde-l10n-id:
+kde-l10n-id:
+kde-l10n-id:
+kde-l10n-id:
+kde-l10n-id:
+kde-l10n-id:
+kde-l10n-id:
+kde-l10n-id:
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-is b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-is
index a9fa3c209..a9fa3c209 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-is
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-is
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-it b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-it
index a90d4ec0c..a90d4ec0c 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-it
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-it
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-ja b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ja
index ba28704cb..ba28704cb 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-ja
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ja
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-kk b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-kk
index 82f5143dc..82f5143dc 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-kk
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-kk
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-km b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-km
index 8f137c027..8f137c027 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-km
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-km
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-kn b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-kn
index 571e643c1..571e643c1 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-kn
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-kn
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-ko b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ko
index 935283b02..935283b02 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-ko
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ko
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-ku b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ku
index b4a2ff031..b4a2ff031 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-ku
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ku
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-lt b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-lt
index 733bc0a37..733bc0a37 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-lt
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-lt
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-lv b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-lv
index e65b3521d..e65b3521d 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-lv
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-lv
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-mai b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-mai
index c6b883615..c6b883615 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-mai
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-mai
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-mk b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-mk
index 4d65fb774..4d65fb774 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-mk
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-mk
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-ml b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ml
index 6ff4b3c39..6ff4b3c39 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-ml
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ml
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-mr b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-mr
index 39a721baa..39a721baa 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-mr
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-mr
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-nb b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nb
index cee273ca0..cee273ca0 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-nb
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nb
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-nds b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nds
index 6d0dfa72a..6d0dfa72a 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-nds
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nds
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-nl b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nl
index 753364755..753364755 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-nl
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nl
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-nn b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nn
index f3c10b1a6..f3c10b1a6 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-nn
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-nn
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-pa b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pa
index 9b7b20091..9b7b20091 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-pa
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pa
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-pl b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pl
index e5515a214..e5515a214 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-pl
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pl
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-pt b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pt
index f71c7ee7c..f71c7ee7c 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-pt
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pt
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-pt_BR b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pt_BR
index fd8609787..fd8609787 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-pt_BR
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-pt_BR
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-ro b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ro
index 7eea0dd78..7eea0dd78 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-ro
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ro
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-ru b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ru
index e857af46d..e857af46d 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-ru
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ru
diff --git a/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-si b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-si
new file mode 100644
index 000000000..1eb88a2ed
--- /dev/null
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-si
@@ -0,0 +1,11 @@
+kde-l10n-si: kde-l10n-si
+kde-l10n-si:
+kde-l10n-si: Sinhala language support for KDE.
+kde-l10n-si:
+kde-l10n-si:
+kde-l10n-si:
+kde-l10n-si:
+kde-l10n-si:
+kde-l10n-si:
+kde-l10n-si:
+kde-l10n-si:
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-sk b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sk
index 65f1e8cee..65f1e8cee 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-sk
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sk
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-sl b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sl
index 8c341085a..8c341085a 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-sl
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sl
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-sr b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sr
index 732a5c935..732a5c935 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-sr
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sr
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-sv b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sv
index 8c4838feb..8c4838feb 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-sv
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-sv
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-ta b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ta
index 795d799fc..795d799fc 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-ta
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-ta
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-tg b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-tg
index e8b7456cc..e8b7456cc 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-tg
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-tg
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-th b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-th
index 0c9a65c3e..0c9a65c3e 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-th
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-th
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-tr b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-tr
index 9ba72ec35..9ba72ec35 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-tr
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-tr
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-uk b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-uk
index f918327ef..f918327ef 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-uk
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-uk
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-wa b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-wa
index 3bcc46c47..3bcc46c47 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-wa
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-wa
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-zh_CN b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_CN
index 93632055b..93632055b 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-zh_CN
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_CN
diff --git a/source/kdei/slack-desc/slack-desc.kde-l10n-zh_TW b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_TW
index 8b173b9e8..8b173b9e8 100644
--- a/source/kdei/slack-desc/slack-desc.kde-l10n-zh_TW
+++ b/source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_TW
diff --git a/source/kdei/koffice/koffice-l10n.SlackBuild b/source/kdei/koffice/koffice-l10n.SlackBuild
index 03645f2ff..8a570dd84 100755
--- a/source/kdei/koffice/koffice-l10n.SlackBuild
+++ b/source/kdei/koffice/koffice-l10n.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2008 Robby Workman Northport, AL, USA
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -35,7 +35,7 @@ if [ ! -r ./languages ]; then
done
fi
-[ -z $VERSION ] && export VERSION=2.0.2
+[ -z $VERSION ] && export VERSION=2.1.2
[ -z $ARCH ] && export ARCH=noarch
[ -z $BUILD ] && export BUILD=1
diff --git a/source/kdei/koffice/languages b/source/kdei/koffice/languages
deleted file mode 100644
index 5449c176a..000000000
--- a/source/kdei/koffice/languages
+++ /dev/null
@@ -1,27 +0,0 @@
-ca
-cs
-da
-de
-el
-en_GB
-es
-et
-fr
-fy
-gl
-hi
-it
-ja
-kk
-nb
-nds
-nl
-pl
-pt
-pt_BR
-sv
-tr
-uk
-wa
-zh_CN
-zh_TW
diff --git a/source/kdei/koffice/slack-desc/slack-desc.koffice-l10n-ca@valencia b/source/kdei/koffice/slack-desc/slack-desc.koffice-l10n-ca@valencia
new file mode 100644
index 000000000..982d6f1b4
--- /dev/null
+++ b/source/kdei/koffice/slack-desc/slack-desc.koffice-l10n-ca@valencia
@@ -0,0 +1,11 @@
+koffice-l10n-ca@valencia: koffice-l10n-ca@valencia
+koffice-l10n-ca@valencia:
+koffice-l10n-ca@valencia: Valencian (southern Catalan) language support for KOffice.
+koffice-l10n-ca@valencia:
+koffice-l10n-ca@valencia:
+koffice-l10n-ca@valencia:
+koffice-l10n-ca@valencia:
+koffice-l10n-ca@valencia:
+koffice-l10n-ca@valencia:
+koffice-l10n-ca@valencia:
+koffice-l10n-ca@valencia:
diff --git a/source/kdei/koffice/slack-desc/slack-desc.koffice-l10n-hne b/source/kdei/koffice/slack-desc/slack-desc.koffice-l10n-hne
new file mode 100644
index 000000000..2a1be13fa
--- /dev/null
+++ b/source/kdei/koffice/slack-desc/slack-desc.koffice-l10n-hne
@@ -0,0 +1,11 @@
+koffice-l10n-hne: koffice-l10n-hne
+koffice-l10n-hne:
+koffice-l10n-hne: Chhattisgarhi language support for KOffice.
+koffice-l10n-hne:
+koffice-l10n-hne:
+koffice-l10n-hne:
+koffice-l10n-hne:
+koffice-l10n-hne:
+koffice-l10n-hne:
+koffice-l10n-hne:
+koffice-l10n-hne:
diff --git a/source/kdei/languages b/source/kdei/languages
deleted file mode 100644
index e77d8cf89..000000000
--- a/source/kdei/languages
+++ /dev/null
@@ -1,56 +0,0 @@
-ar
-bg
-bn_IN
-ca
-cs
-csb
-da
-de
-el
-en_GB
-es
-et
-eu
-fi
-fr
-ga
-gl
-gu
-he
-hi
-hu
-is
-it
-ja
-kk
-km
-kn
-ko
-ku
-lt
-lv
-mai
-mk
-ml
-mr
-nb
-nds
-nl
-nn
-pa
-pl
-pt
-pt_BR
-ro
-ru
-sk
-sl
-sr
-sv
-tg
-th
-tr
-uk
-wa
-zh_CN
-zh_TW
diff --git a/source/l/ConsoleKit/ConsoleKit.SlackBuild b/source/l/ConsoleKit/ConsoleKit.SlackBuild
new file mode 100755
index 000000000..db40f1396
--- /dev/null
+++ b/source/l/ConsoleKit/ConsoleKit.SlackBuild
@@ -0,0 +1,141 @@
+#!/bin/sh
+
+# Slackware build script for ConsoleKit
+
+# Copyright 2009 Robby Workman, Northport, Alabama, USA
+# Copyright 2010 Eric Hameleers, Eindhoven, NL
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PRGNAM=ConsoleKit
+VERSION=${VERSION:-20100129}
+BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
+cd $PRGNAM-$VERSION || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+## Not sure what of these we need now - no time to look yet
+# Thanks to the GSB project for the patch hints :-)
+# http://bugs.freedesktop.org/show_bug.cgi?id=19020
+# http://bugs.freedesktop.org/show_bug.cgi?id=20471
+#zcat $CWD/patches/consolekit-dbus-permissions.patch.gz | patch -p1 || exit 1
+# Prevent make install from erroring out on docbook validation
+#zcat $CWD/patches/consolekit-skipvalidation.patch.gz | patch -p1 || exit 1
+# Clean up at_console compat files, bug #257761
+zcat $CWD/patches/consolekit-0.2.10-cleanup_console_tags.patch.gz | patch -p1 || exit 1
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./autogen.sh \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --with-pid-file=/var/run/ConsoleKit/pid \
+ --enable-docbook-docs \
+ --enable-pam-module=no \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+mkdir -p $PKG/usr/lib/ConsoleKit/run-session.d
+cat $CWD/pam-foreground-compat.ck > \
+ $PKG/usr/lib/ConsoleKit/run-session.d/pam-foreground-compat.ck
+chmod 0755 $PKG/usr/lib/ConsoleKit/run-session.d/pam-foreground-compat.ck
+
+# Let's not clobber config files
+mv $PKG/etc/ConsoleKit/seats.d/00-primary.seat \
+ $PKG/etc/ConsoleKit/seats.d/00-primary.seat.new
+mv $PKG/etc/dbus-1/system.d/ConsoleKit.conf \
+ $PKG/etc/dbus-1/system.d/ConsoleKit.conf.new
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+( cd $PKG/usr/man || exit 1
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog HACKING INSTALL NEWS README TODO \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+(
+ cd $PKG/usr/doc/$PRGNAM-$VERSION ; ln -s /usr/share/gtk-doc/html/polkit-1 html
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/ConsoleKit/doinst.sh b/source/l/ConsoleKit/doinst.sh
new file mode 100644
index 000000000..217d76055
--- /dev/null
+++ b/source/l/ConsoleKit/doinst.sh
@@ -0,0 +1,16 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/ConsoleKit/seats.d/00-primary.seat.new
+config etc/dbus-1/system.d/ConsoleKit.conf.new
+
diff --git a/source/l/ConsoleKit/pam-foreground-compat.ck b/source/l/ConsoleKit/pam-foreground-compat.ck
new file mode 100644
index 000000000..979127272
--- /dev/null
+++ b/source/l/ConsoleKit/pam-foreground-compat.ck
@@ -0,0 +1,16 @@
+#!/bin/sh
+TAGDIR=/var/run/console
+
+[ -n "${CK_SESSION_USER_UID}" ] || exit 1
+
+TAGFILE="${TAGDIR}/$(getent passwd ${CK_SESSION_USER_UID} | cut -f 1 -d:)"
+
+if [ "$1" = "session_added" ]; then
+ mkdir -p "${TAGDIR}"
+ echo "${CK_SESSION_ID}" >> "$TAGFILE"
+fi
+
+if [ "$1" = "session_removed" ] && [ -e "$TAGFILE" ]; then
+ sed -i "\%^$CK_SESSION_ID\$%d" "${TAGFILE}"
+ [ -s "${TAGFILE}" ] || rm -f "${TAGFILE}"
+fi
diff --git a/source/l/ConsoleKit/patches/consolekit-0.2.10-cleanup_console_tags.patch b/source/l/ConsoleKit/patches/consolekit-0.2.10-cleanup_console_tags.patch
new file mode 100644
index 000000000..d1699d900
--- /dev/null
+++ b/source/l/ConsoleKit/patches/consolekit-0.2.10-cleanup_console_tags.patch
@@ -0,0 +1,65 @@
+# http://patches.ubuntu.com/by-release/extracted/ubuntu/c/consolekit/0.2.10-1ubuntu9/
+--- a/src/main.c 2008-07-25 03:19:34.000000000 +0200
++++ b/src/main.c 2008-07-26 00:25:13.000000000 +0200
+@@ -149,6 +149,43 @@
+ unlink (CONSOLE_KIT_PID_FILE);
+ }
+
++#define CONSOLE_TAGS_DIR "/var/run/console"
++
++static void
++delete_console_tags (void)
++{
++ GDir *dir;
++ GError *error = NULL;
++ const gchar *name;
++
++ g_debug ("Cleaning up %s", CONSOLE_TAGS_DIR);
++
++ dir = g_dir_open (CONSOLE_TAGS_DIR, 0, &error);
++ if (dir == NULL) {
++ g_debug ("Couldn't open directory %s: %s", CONSOLE_TAGS_DIR,
++ error->message);
++ g_error_free (error);
++ return;
++ }
++ while ((name = g_dir_read_name (dir)) != NULL) {
++ gchar *file;
++ file = g_build_filename (CONSOLE_TAGS_DIR, name, NULL);
++
++ g_debug ("Removing tag file: %s", file);
++ if (unlink (file) == -1) {
++ g_warning ("Couldn't delete tag file: %s", file);
++ }
++ g_free (file);
++ }
++}
++
++static void
++cleanup (void)
++{
++ delete_console_tags ();
++ delete_pid ();
++}
++
+ /* copied from nautilus */
+ static int debug_log_pipes[2];
+
+@@ -229,7 +266,7 @@
+ snprintf (pid, sizeof (pid), "%lu\n", (long unsigned) getpid ());
+ written = write (pf, pid, strlen (pid));
+ close (pf);
+- g_atexit (delete_pid);
++ g_atexit (cleanup);
+ } else {
+ g_warning ("Unable to write pid file %s: %s",
+ CONSOLE_KIT_PID_FILE,
+@@ -312,6 +349,8 @@
+
+ g_debug ("initializing console-kit-daemon %s", VERSION);
+
++ delete_console_tags ();
++
+ create_pid_file ();
+
+ manager = ck_manager_new ();
diff --git a/source/l/ConsoleKit/patches/consolekit-dbus-permissions.patch b/source/l/ConsoleKit/patches/consolekit-dbus-permissions.patch
new file mode 100644
index 000000000..0cab28583
--- /dev/null
+++ b/source/l/ConsoleKit/patches/consolekit-dbus-permissions.patch
@@ -0,0 +1,175 @@
+diff -up ConsoleKit-0.3.0/data/ConsoleKit.conf.consolekit ConsoleKit-0.3.0/data/ConsoleKit.conf
+--- ConsoleKit-0.3.0/data/ConsoleKit.conf.consolekit 2008-04-19 01:39:49.000000000 -0400
++++ ConsoleKit-0.3.0/data/ConsoleKit.conf 2009-04-08 11:40:33.347814036 -0400
+@@ -8,88 +8,131 @@
+ <allow own="org.freedesktop.ConsoleKit"/>
+
+ <!-- Allow all methods on interfaces -->
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Seat"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"/>
++ <allow send_destination="org.freedesktop.ConsoleKit"/>
+ </policy>
+
+ <!-- Deny all and then allow some methods on interfaces -->
+ <policy context="default">
+- <deny send_interface="org.freedesktop.ConsoleKit.Manager"/>
+- <deny send_interface="org.freedesktop.ConsoleKit.Seat"/>
+- <deny send_interface="org.freedesktop.ConsoleKit.Session"/>
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.DBus.Introspectable"/>
++ <deny send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"/>
++ <deny send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Seat"/>
++ <deny send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"/>
+ <deny send_destination="org.freedesktop.ConsoleKit"
+ send_interface="org.freedesktop.DBus.Properties" />
+
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="Restart"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="Stop"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="OpenSession"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="CloseSession"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="GetSeats"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
++ send_member="GetSessions"/>
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="GetSessionForCookie"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="GetSessionForUnixProcess"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="GetCurrentSession"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="GetSessionsForUnixUser"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="GetSessionsForUser"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="GetSystemIdleHint"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Manager"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="GetSystemIdleSinceHint"/>
+
+- <allow send_interface="org.freedesktop.ConsoleKit.Seat"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Seat"
+ send_member="GetId"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Seat"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Seat"
+ send_member="GetSessions"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Seat"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Seat"
+ send_member="GetDevices"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Seat"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Seat"
+ send_member="GetActiveSession"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Seat"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Seat"
+ send_member="CanActivateSessions"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Seat"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Seat"
+ send_member="ActivateSession"/>
+
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetId"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetSeatId"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetLoginSessionId"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetSessionType"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetUser"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetUnixUser"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetX11Display"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetX11DisplayDevice"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetDisplayDevice"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetRemoteHostName"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="IsActive"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="IsLocal"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetCreationTime"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="Activate"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetIdleHint"/>
+- <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
++ send_member="SetIdleHint"/>
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetIdleSinceHint"/>
+ </policy>
+
diff --git a/source/l/ConsoleKit/patches/consolekit-skipvalidation.patch b/source/l/ConsoleKit/patches/consolekit-skipvalidation.patch
new file mode 100644
index 000000000..c4bf89d7a
--- /dev/null
+++ b/source/l/ConsoleKit/patches/consolekit-skipvalidation.patch
@@ -0,0 +1,12 @@
+diff -up ConsoleKit-0.3.0/doc/dbus/Makefile.in.skipvalidation ConsoleKit-0.3.0/doc/dbus/Makefile.in
+--- ConsoleKit-0.3.0/doc/dbus/Makefile.in.skipvalidation 2009-02-27 20:17:36.784329106 -0500
++++ ConsoleKit-0.3.0/doc/dbus/Makefile.in 2009-02-27 20:18:15.701316733 -0500
+@@ -427,7 +427,7 @@ uninstall-am: uninstall-htmldocDATA
+
+
+ @DOCBOOK_DOCS_ENABLED_TRUE@ConsoleKit.html : $(SPEC_XML_FILES)
+-@DOCBOOK_DOCS_ENABLED_TRUE@ $(XMLTO) xhtml-nochunks -m $(top_srcdir)/doc/dbus/config.xsl ConsoleKit.xml
++@DOCBOOK_DOCS_ENABLED_TRUE@ $(XMLTO) --skip-validation xhtml-nochunks -m $(top_srcdir)/doc/dbus/config.xsl ConsoleKit.xml
+
+ org.freedesktop.ConsoleKit.Manager.ref.xml : $(top_srcdir)/src/org.freedesktop.ConsoleKit.Manager.xml spec-to-docbook.xsl
+ $(XSLTPROC) $(top_srcdir)/doc/dbus/spec-to-docbook.xsl $< | tail -n +2 > $@
diff --git a/source/l/ConsoleKit/slack-desc b/source/l/ConsoleKit/slack-desc
new file mode 100644
index 000000000..63326799d
--- /dev/null
+++ b/source/l/ConsoleKit/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+ConsoleKit: ConsoleKit (user, login, and seat tracking framework)
+ConsoleKit:
+ConsoleKit: ConsoleKit is a framework for defining and tracking users, login
+ConsoleKit: sessions, and seats.
+ConsoleKit:
+ConsoleKit:
+ConsoleKit:
+ConsoleKit:
+ConsoleKit:
+ConsoleKit: Homepage: http://freedesktop.org/wiki/Software/ConsoleKit
+ConsoleKit:
diff --git a/source/l/PyQt/PyQt.SlackBuild b/source/l/PyQt/PyQt.SlackBuild
index 4232d5f46..7d89221a2 100755
--- a/source/l/PyQt/PyQt.SlackBuild
+++ b/source/l/PyQt/PyQt.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for PyQt
# Copyright 2008 Aleksandar Samardzic <asamardzic@gmail.com>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,12 +24,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Modified by Robby Workman <rworkman@slackware.com>
+# Modified by Eric Hameleers <alien@slackware.com>
-VERSION=${VERSION:-4.4.4}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-4.7.3}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-PyQt
@@ -40,14 +50,20 @@ elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf PyQt-$VERSION
-tar xvf $CWD/PyQt-x11-gpl-$VERSION.tar.bz2 || exit 1
+rm -rf PyQt-x11-gpl-$VERSION
+tar xvf $CWD/PyQt-x11-gpl-$VERSION.tar.?z* || exit 1
cd PyQt-x11-gpl-$VERSION || exit 1
+
+# Fix phonon detection:
+zcat $CWD/PyQt.phonon.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -55,10 +71,13 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-echo "yes" | \
- python configure.py \
- CFLAGS="$SLKCFLAGS" \
- CXXFLAGS="$SLKCFLAGS"
+# This avoids compiling a version number into KDE's .la files:
+export QTDIR=/usr/lib${LIBDIRSUFFIX}/qt
+
+export CFLAGS="$SLKCFLAGS"
+export CXXFLAGS="$SLKCFLAGS"
+
+python configure.py --confirm-license --verbose
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
@@ -75,5 +94,5 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/PyQt-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/PyQt-$(echo $VERSION |tr - _)-$ARCH-$BUILD.txz
diff --git a/source/l/PyQt/PyQt.info b/source/l/PyQt/PyQt.info
index f041f25b7..f127e6d9c 100644
--- a/source/l/PyQt/PyQt.info
+++ b/source/l/PyQt/PyQt.info
@@ -1,2 +1,2 @@
HOMEPAGE="http://www.riverbankcomputing.co.uk/software/pyqt/"
-DOWNLOAD="http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-4.4.2.tar.gz"
+DOWNLOAD="http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-4.5.4.tar.gz"
diff --git a/source/l/PyQt/PyQt.phonon.diff b/source/l/PyQt/PyQt.phonon.diff
new file mode 100644
index 000000000..feda65096
--- /dev/null
+++ b/source/l/PyQt/PyQt.phonon.diff
@@ -0,0 +1,11 @@
+--- PyQt-x11-gpl-4.6.2/configure.py.orig 2010-01-08 23:39:46.000000000 +0100
++++ PyQt-x11-gpl-4.6.2/configure.py 2010-01-08 23:45:18.000000000 +0100
+@@ -451,7 +451,7 @@
+ generate_code("QtXmlPatterns")
+
+ if "phonon" in pyqt_modules:
+- generate_code("phonon")
++ generate_code("phonon", extra_include_dirs=["/usr/include/phonon"])
+
+ if "QtAssistant" in pyqt_modules:
+ generate_code("QtAssistant")
diff --git a/source/l/PyQt/slack-desc b/source/l/PyQt/slack-desc
index 036065434..4e01c51ac 100644
--- a/source/l/PyQt/slack-desc
+++ b/source/l/PyQt/slack-desc
@@ -5,15 +5,15 @@
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
- |-----handy-ruler------------------------------------------------------|
+ |-----handy-ruler------------------------------------------------------|
PyQt: PyQt (Python bindings for Qt)
PyQt:
PyQt: PyQt is a set of Python bindings for Trolltech's Qt application
PyQt: framework and runs on all platforms supported by Qt.
PyQt:
-PyQt: Homepage: http://www.riverbankcomputing.co.uk/software/PyQt/
PyQt:
PyQt:
PyQt:
PyQt:
+PyQt: Homepage: http://www.riverbankcomputing.co.uk/software/PyQt/
PyQt:
diff --git a/source/l/QScintilla/QScintilla.SlackBuild b/source/l/QScintilla/QScintilla.SlackBuild
index 3625a067c..e72b5ae7a 100755
--- a/source/l/QScintilla/QScintilla.SlackBuild
+++ b/source/l/QScintilla/QScintilla.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for QScintilla
# Copyright 2008 Robby Workman <rworkman@slackware.com> Northport, AL, USA
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,27 +23,38 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-2.3.2}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-2.4.3}
+BUILD=${BUILD:-1}
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-QScintilla
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf QScintilla-gpl-$VERSION
-tar xvf $CWD/QScintilla-gpl-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/QScintilla-gpl-$VERSION.tar.?z* || exit 1
cd QScintilla-gpl-$VERSION || exit 1
chown -R root:root .
find . \
diff --git a/source/l/QScintilla/QScintilla.info b/source/l/QScintilla/QScintilla.info
deleted file mode 100644
index f7b71c771..000000000
--- a/source/l/QScintilla/QScintilla.info
+++ /dev/null
@@ -1,8 +0,0 @@
-PRGNAM="QScintilla"
-VERSION="2.2"
-HOMEPAGE="http://www.riverbankcomputing.co.uk/software/qscintilla/"
-DOWNLOAD="http://www.riverbankcomputing.co.uk/static/Downloads/QScintilla2/QScintilla-gpl-2.2.tar.gz"
-MD5SUM="a6056c444494f3f849020d241f86c286"
-MAINTAINER="Robby Workman"
-EMAIL="rw@rlworkman.net"
-APPROVED=""
diff --git a/source/l/akonadi/README.html b/source/l/akonadi/README.html
new file mode 100644
index 000000000..9bee704ed
--- /dev/null
+++ b/source/l/akonadi/README.html
@@ -0,0 +1,3 @@
+downloaded from <a href="http://download.akonadi-project.org/">http://download.akonadi-project.org/</a>
+<br>
+<a href="http://pim.kde.org/akonadi/">akonadi Homepage</a>
diff --git a/source/l/akonadi/akonadi.SlackBuild b/source/l/akonadi/akonadi.SlackBuild
index 5fdd980b6..4b06c5755 100755
--- a/source/l/akonadi/akonadi.SlackBuild
+++ b/source/l/akonadi/akonadi.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for akonadi
# Copyright 2008 Robby Workman, Northport, Alabama, USA
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,11 +23,20 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.1.2
-ARCH=${ARCH:-x86_64}
+VERSION=1.3.1
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-akonadi
@@ -41,6 +50,9 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
diff --git a/source/l/akonadi/slack-desc b/source/l/akonadi/slack-desc
index d0c26bb62..a120cebf0 100644
--- a/source/l/akonadi/slack-desc
+++ b/source/l/akonadi/slack-desc
@@ -13,7 +13,7 @@ akonadi: and meta data providing concurrent read, write, and query access.
akonadi: It will provide a unique desktop wide object identification and
akonadi: retrieval.
akonadi:
-akonadi: Homepage: http://www.kdepim.org/akonadi/
akonadi:
akonadi:
+akonadi: Homepage: http://www.kdepim.org/akonadi/
akonadi:
diff --git a/source/l/alsa-lib/alsa-lib.SlackBuild b/source/l/alsa-lib/alsa-lib.SlackBuild
index f88d84550..dc88e4ad1 100755
--- a/source/l/alsa-lib/alsa-lib.SlackBuild
+++ b/source/l/alsa-lib/alsa-lib.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,19 +21,25 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.0.18
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo alsa-lib-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-alsa-lib
-rm -rf $PKG
-mkdir -p $TMP $PKG
-
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -43,11 +49,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
cd $TMP
rm -rf alsa-lib-$VERSION
-tar xvf $CWD/alsa-lib-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/alsa-lib-$VERSION.tar.?z* || exit 1
cd alsa-lib-$VERSION || exit 1
chown -R root:root .
@@ -80,6 +92,14 @@ cp -a \
cp -a COPYING $PKG/usr/doc/alsa-lib-$VERSION/COPYING.lib
cp -a aserver/COPYING $PKG/usr/doc/alsa-lib-$VERSION/COPYING.aserver
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/apr-util/apr-util.SlackBuild b/source/l/apr-util/apr-util.SlackBuild
index a109d75bc..d160cbb96 100755
--- a/source/l/apr-util/apr-util.SlackBuild
+++ b/source/l/apr-util/apr-util.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-1.3.9}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo apr-util-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-1}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -35,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -88,9 +101,17 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
mkdir -p $PKG/usr/doc/apr-util-$VERSION
cp -a \
- CHANGES INSTALL.MySQL LICENSE NOTICE \
+ INSTALL.MySQL LICENSE NOTICE \
$PKG/usr/doc/apr-util-$VERSION
+# If there's a CHANGES file, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
+
# This just seems like way too much stuff...
#mv docs/dox/html $PKG/usr/doc/apr-util-$VERSION
diff --git a/source/l/apr/apr.SlackBuild b/source/l/apr/apr.SlackBuild
index b6f2237e1..65098b062 100755
--- a/source/l/apr/apr.SlackBuild
+++ b/source/l/apr/apr.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-1.3.8}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo apr-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -35,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -74,9 +87,17 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
mkdir -p $PKG/usr/doc/apr-$VERSION
cp -a \
- CHANGES LICENSE NOTICE README.dev \
+ LICENSE NOTICE README.dev \
$PKG/usr/doc/apr-$VERSION
+# If there's a CHANGES file, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
+
# This just seems like way too much stuff...
#mv docs/dox/html $PKG/usr/doc/apr-$VERSION
diff --git a/source/l/atk/atk.SlackBuild b/source/l/atk/atk.SlackBuild
index 6cea42737..f6d41da66 100755
--- a/source/l/atk/atk.SlackBuild
+++ b/source/l/atk/atk.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.26.0
-ARCH=${ARCH:-x86_64}
+PKGNAM=atk
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-atk
@@ -40,6 +50,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -73,7 +86,7 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
mkdir -p $PKG/usr/doc/atk-$VERSION
cp -a \
- AUTHORS COPYING NEWS README TODO \
+ AUTHORS COPYING* NEWS README* TODO \
$PKG/usr/doc/atk-$VERSION
mkdir -p $PKG/install
diff --git a/source/l/attica/attica.SlackBuild b/source/l/attica/attica.SlackBuild
new file mode 100755
index 000000000..8e3ab9aa7
--- /dev/null
+++ b/source/l/attica/attica.SlackBuild
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+# Copyright 2009, 2010 Eric Hameleers, Eindhoven, NL
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=${VERSION:-0.1.3}
+BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-attica
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf attica-$VERSION
+tar xvf $CWD/attica-$VERSION.tar.?z* || exit 1
+cd attica-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ QTDIR=/usr/lib${LIBDIRSUFFIX}/qt \
+ PATH=$QTDIR/bin:$PATH \
+ cmake \
+ $KDE_OPT_ARGS \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DSYSCONF_INSTALL_DIR=/etc \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ ..
+ make $NUMJOBS || make || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd -
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/attica-$VERSION
+cp -a AUTHORS* COPYING* README* \
+ $PKG/usr/doc/attica-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/attica-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/attica/slack-desc b/source/l/attica/slack-desc
new file mode 100644
index 000000000..40e293f5b
--- /dev/null
+++ b/source/l/attica/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-------------------------------------------------------|
+attica: attica (Qt Collaboration library)
+attica:
+attica: Attica is a Qt library that implements the freedesktop.org
+attica: specification for the Open Collaboration Services API version 1.4.
+attica: It grants easy access to the services such as querying information
+attica: about persons and contents.
+attica:
+attica:
+attica:
+attica: Homepage: http://www.kde.org
+attica:
diff --git a/source/l/babl/babl-0.1.0-build-fixes.patch b/source/l/babl/babl-0.1.0-build-fixes.patch
new file mode 100644
index 000000000..3cd055943
--- /dev/null
+++ b/source/l/babl/babl-0.1.0-build-fixes.patch
@@ -0,0 +1,20 @@
+--- babl-0.1.0.orig/extensions/Makefile.am 2009-04-17 12:05:15.000000000 -0500
++++ babl-0.1.0/extensions/Makefile.am 2009-08-19 00:53:21.435970261 -0500
+@@ -1,7 +1,7 @@
+ if OS_WIN32
+ AM_LDFLAGS = -module -no-undefined
+ else
+-AM_LDFLAGS = -module
++AM_LDFLAGS = -module -avoid-version
+ endif
+
+ noinst_HEADERS = util.h
+@@ -12,7 +12,7 @@
+ -I$(top_srcdir)/babl \
+ -I$(top_srcdir)/extensions
+
+-extdir = $(DESTDIR)$(libdir)/babl-@BABL_API_VERSION@
++extdir = $(libdir)/babl-@BABL_API_VERSION@
+ ext_LTLIBRARIES = \
+ CIE-Lab.la \
+ gegl-fixups.la \
diff --git a/source/l/babl/babl.SlackBuild b/source/l/babl/babl.SlackBuild
index d646e0d2c..5e8f54afd 100755
--- a/source/l/babl/babl.SlackBuild
+++ b/source/l/babl/babl.SlackBuild
@@ -22,7 +22,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=0.0.22
+VERSION=0.1.0
ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-1}
@@ -49,6 +49,10 @@ cd $TMP
rm -rf babl-$VERSION
tar xvf $CWD/babl-$VERSION.tar.bz2 || exit 1
cd babl-$VERSION || exit 1
+
+zcat $CWD/babl-0.1.0-build-fixes.patch.gz | patch -p1 || exit 1
+sh autogen.sh
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
diff --git a/source/l/boost/boost.SlackBuild b/source/l/boost/boost.SlackBuild
index bb9e8e8fb..508c8ff94 100755
--- a/source/l/boost/boost.SlackBuild
+++ b/source/l/boost/boost.SlackBuild
@@ -2,7 +2,7 @@
# Copyright 2007, 2008 Eric Hameleers, Eindhoven, NL
# Copyright 2007-2008 Heinz Wiesinger
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,9 +25,19 @@
# bjam-build system mostly taken from SlackBuild by Eric Hameleers
# Script modified by Robby Workman - no copyright claims or added terms
-VERSION=1_38_0
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=boost
+VERSION=${VERSION:-$(echo $PKGNAM_*.tar.?z* | rev | cut -f 3- -d . | rev | cut -f 2- -d _)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -45,17 +55,18 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf boost_$VERSION
-tar xvf $CWD/boost_$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/boost_$VERSION.tar.?z* || exit 1
cd boost_$VERSION || exit 1
-zcat $CWD/boost.ifdef_placement.diff.gz | patch -p1 --verbose || exit 1
-
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -132,7 +143,7 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
mkdir -p $PKG/usr/doc/boost-$PKG_VERSION
# Do not copy 44MB of developer 'doc/html' into our package...
-cp -a LICENSE_1_0.txt $PKG/usr/doc/boost-$PKG_VERSION
+cp -a LICENSE* index.html $PKG/usr/doc/boost-$PKG_VERSION
find $PKG/usr/doc -type f -exec chmod 0644 {} \;
mkdir -p $PKG/install
diff --git a/source/l/boost/boost.ifdef_placement.diff b/source/l/boost/boost.ifdef_placement.diff
deleted file mode 100644
index 92dd6b55c..000000000
--- a/source/l/boost/boost.ifdef_placement.diff
+++ /dev/null
@@ -1,14 +0,0 @@
---- ./boost/function/function_template.hpp.orig 2008-10-16 08:21:50.000000000 -0500
-+++ ./boost/function/function_template.hpp 2009-08-24 20:45:28.000000000 -0500
-@@ -950,10 +950,10 @@
- f.vtable->manager(f.functor, this->functor,
- boost::detail::function::move_functor_tag);
- f.vtable = 0;
--#if !defined(BOOST_NO_EXCEPTIONS)
- } else {
- clear();
- }
-+#if !defined(BOOST_NO_EXCEPTIONS)
- } catch (...) {
- vtable = 0;
- throw;
diff --git a/source/l/cairo/cairo.SlackBuild b/source/l/cairo/cairo.SlackBuild
index a6ddc3447..655cf2f49 100755
--- a/source/l/cairo/cairo.SlackBuild
+++ b/source/l/cairo/cairo.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.8.6
-ARCH=${ARCH:-x86_64}
+VERSION=1.8.8
BUILD=${BUILD:-3}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -46,7 +58,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf cairo-$VERSION
-tar xvf $CWD/cairo-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/cairo-$VERSION.tar.?z* || exit 1
cd cairo-$VERSION
chown -R root:root .
find . \
@@ -55,6 +67,9 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Use libpng-1.4.x:
+zcat $CWD/cairo.libpng14.diff.gz | patch -p0 --verbose || exit 1
+
# Time to try leaving this out again?
# --disable-xcb
diff --git a/source/l/cairo/cairo.libpng14.diff b/source/l/cairo/cairo.libpng14.diff
new file mode 100644
index 000000000..12bed2c0e
--- /dev/null
+++ b/source/l/cairo/cairo.libpng14.diff
@@ -0,0 +1,11 @@
+--- ./configure.orig 2009-06-16 07:25:50.000000000 -0500
++++ ./configure 2010-05-03 00:12:23.000000000 -0500
+@@ -27890,7 +27890,7 @@
+
+ if test "x$png_REQUIRES" = x; then
+ # libpng13 is GnuWin32's libpng-1.2.8 :-(
+- for l in libpng12 libpng13 libpng10 ; do
++ for l in libpng14 libpng12 libpng13 libpng10 ; do
+ if $PKG_CONFIG --exists $l ; then
+ png_REQUIRES=$l
+ use_png=yes
diff --git a/source/l/dbus-glib/dbus-glib.SlackBuild b/source/l/dbus-glib/dbus-glib.SlackBuild
index 6c242f78d..dc8afddac 100755
--- a/source/l/dbus-glib/dbus-glib.SlackBuild
+++ b/source/l/dbus-glib/dbus-glib.SlackBuild
@@ -23,12 +23,21 @@
PRGNAM=dbus-glib
-VERSION=0.80
-ARCH=${ARCH:-x86_64}
+VERSION=0.86
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j7}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PRGNAM
@@ -64,6 +73,7 @@ CXXFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
+ --mandir=/usr/man \
--enable-shared=yes \
--enable-static=no \
--build=$ARCH-slackware-linux
@@ -74,6 +84,8 @@ make install DESTDIR=$PKG || exit 1
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+gzip -9 $PKG/usr/man/man?/*.?
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
AUTHORS COPYING* HACKING INSTALL NEWS README* \
diff --git a/source/l/dbus-python/dbus-python.SlackBuild b/source/l/dbus-python/dbus-python.SlackBuild
index d3a0dbeff..a9ff5e5b7 100755
--- a/source/l/dbus-python/dbus-python.SlackBuild
+++ b/source/l/dbus-python/dbus-python.SlackBuild
@@ -23,12 +23,21 @@
# http://dbus.freedesktop.org/releases/dbus-python/
-
PRGNAM=dbus-python
-VERSION=${VERSION:-0.83.0}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-0.83.1}
+BUILD=${BUILD:-1}
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -43,6 +52,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
diff --git a/source/l/desktop-file-utils/desktop-file-utils.SlackBuild b/source/l/desktop-file-utils/desktop-file-utils.SlackBuild
index 86d62f239..8beccbd5b 100755
--- a/source/l/desktop-file-utils/desktop-file-utils.SlackBuild
+++ b/source/l/desktop-file-utils/desktop-file-utils.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,20 @@
PKGNAM=desktop-file-utils
-VERSION=${VERSION:-0.15}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -37,6 +47,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
@@ -46,6 +58,8 @@ rm -rf ${PKGNAM}-${VERSION}
tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION || exit 1
+zcat $CWD/desktop-file-utils.quiet.warnings.diff.gz | patch -p1 --verbose || exit 1
+
# Make sure ownerships and permissions are sane:
chown -R root:root .
find . \
@@ -100,6 +114,14 @@ cp -a \
AUTHORS COPYING* INSTALL NEWS README* \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
diff --git a/source/l/desktop-file-utils/desktop-file-utils.quiet.warnings.diff b/source/l/desktop-file-utils/desktop-file-utils.quiet.warnings.diff
new file mode 100644
index 000000000..8e1f17f96
--- /dev/null
+++ b/source/l/desktop-file-utils/desktop-file-utils.quiet.warnings.diff
@@ -0,0 +1,18 @@
+--- ./src/update-desktop-database.c.orig 2010-03-09 20:33:41.000000000 -0600
++++ ./src/update-desktop-database.c 2010-05-11 09:00:08.000000000 -0500
+@@ -135,15 +135,9 @@
+ case MU_VALID:
+ break;
+ case MU_DISCOURAGED:
+- udd_print (_("Warning in file \"%s\": usage of MIME type \"%s\" is "
+- "discouraged (%s)\n"),
+- desktop_file, mime_types[i], valid_error);
+ g_free (valid_error);
+ break;
+ case MU_INVALID:
+- udd_print (_("Error in file \"%s\": \"%s\" is an invalid MIME type "
+- "(%s)\n"),
+- desktop_file, mime_types[i], valid_error);
+ g_free (valid_error);
+ /* not a break: we continue to the next mime type */
+ continue;
diff --git a/source/l/djvulibre/djvulibre.SlackBuild b/source/l/djvulibre/djvulibre.SlackBuild
index ece718070..28e00a67b 100755
--- a/source/l/djvulibre/djvulibre.SlackBuild
+++ b/source/l/djvulibre/djvulibre.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2008 Robby Workman, Northport, Alabama, USA
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,14 +22,23 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=djvulibre
-VERSION=${VERSION:-3.5.21}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+PKGNAM=djvulibre
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -40,14 +49,17 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP || exit 1
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -69,7 +81,7 @@ CXXFLAGS="$SLKCFLAGS" \
--sysconfdir=/etc \
--mandir=/usr/man \
--infodir=/usr/info \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
--with-qt=/usr/lib${LIBDIRSUFFIX}/qt \
--build=$ARCH-slackware-linux
@@ -102,15 +114,15 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
)
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
COPYING* COPYRIGHT INSTALL NEWS README* TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/ebook-tools/ebook-tools.SlackBuild b/source/l/ebook-tools/ebook-tools.SlackBuild
new file mode 100755
index 000000000..690d71def
--- /dev/null
+++ b/source/l/ebook-tools/ebook-tools.SlackBuild
@@ -0,0 +1,113 @@
+#!/bin/sh
+
+# Copyright 2010 Eric Hameleers, Eindhoven, NL
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=ebook-tools
+VERSION=${VERSION:-0.1.1}
+BUILD=${BUILD:-2}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
+cd ${PKGNAM}-$VERSION || exit 1
+
+# Fix some hard-coded pathnames for 64-bit:
+cat $CWD/ebook-tools.paths.diff | patch -p1 --verbose || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Build and install:
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DLIB_INSTALL_DIR=/usr/lib${LIBDIRSUFFIX} \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DSYSCONF_INSTALL_DIR=/etc \
+ -DINCLUDE_INSTALL_DIR=/usr/include \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ ..
+ make $NUMJOBS || make || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd -
+
+# Remove lit2epub binary because it doesn't work without clit (which has
+# distribution restrictions so we do not include it)
+rm -f $PKG/usr/bin/lit2epub
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ INSTALL LICENSE README TODO \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/ebook-tools/ebook-tools.paths.diff b/source/l/ebook-tools/ebook-tools.paths.diff
new file mode 100644
index 000000000..3752b1069
--- /dev/null
+++ b/source/l/ebook-tools/ebook-tools.paths.diff
@@ -0,0 +1,12 @@
+diff -ur ebook-tools-0.1.1/src/libepub/CMakeLists.txt ebook-tools-0.1.1.rmhardcoded/src/libepub/CMakeLists.txt
+--- ebook-tools-0.1.1/src/libepub/CMakeLists.txt 2008-06-07 20:20:14.000000000 +0100
++++ ebook-tools-0.1.1.rmhardcoded/src/libepub/CMakeLists.txt 2008-12-15 02:59:58.621077025 +0000
+@@ -4,5 +4,5 @@
+
+ set_target_properties (epub PROPERTIES VERSION 0.1.1 SOVERSION 0)
+
+-install ( TARGETS epub RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib )
+-install ( FILES epub.h epub_shared.h DESTINATION include )
++install ( TARGETS epub RUNTIME DESTINATION bin LIBRARY DESTINATION ${LIB_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR} )
++install ( FILES epub.h epub_shared.h DESTINATION ${INCLUDE_INSTALL_DIR} )
+
diff --git a/source/l/ebook-tools/slack-desc b/source/l/ebook-tools/slack-desc
new file mode 100644
index 000000000..abb2ef883
--- /dev/null
+++ b/source/l/ebook-tools/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler--------------------------------------------------|
+ebook-tools: ebook-tools (access and convert various ebook file formats)
+ebook-tools:
+ebook-tools: Tools for accessing and converting various ebook file formats.
+ebook-tools:
+ebook-tools:
+ebook-tools:
+ebook-tools:
+ebook-tools:
+ebook-tools:
+ebook-tools: Home page: http://sourceforge.net/projects/ebook-tools/
+ebook-tools:
diff --git a/source/l/eggdbus/eggdbus.SlackBuild b/source/l/eggdbus/eggdbus.SlackBuild
new file mode 100755
index 000000000..44a0c938e
--- /dev/null
+++ b/source/l/eggdbus/eggdbus.SlackBuild
@@ -0,0 +1,123 @@
+#!/bin/sh
+
+# Slackware build script for eggdbus
+
+# Copyright 2009 Robby Workman Northport, Alabama, USA
+# Copyright 2010 Eric Hameleers, Eindhoven, NL
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PRGNAM=eggdbus
+VERSION=${VERSION:-0.6}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
+cd $PRGNAM-$VERSION || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./autogen.sh \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog HACKING INSTALL NEWS README \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/eggdbus/slack-desc b/source/l/eggdbus/slack-desc
new file mode 100644
index 000000000..d2da2980c
--- /dev/null
+++ b/source/l/eggdbus/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+eggdbus: eggdbus (D-Bus bindings for GObject)
+eggdbus:
+eggdbus: Experimental D-Bus bindings for GObject.
+eggdbus:
+eggdbus:
+eggdbus:
+eggdbus:
+eggdbus:
+eggdbus:
+eggdbus: Home: http://cgit.freedesktop.org/~david/eggdbus
+eggdbus:
diff --git a/source/l/eigen2/eigen2.SlackBuild b/source/l/eigen2/eigen2.SlackBuild
index 4477b13cf..474e5ae91 100755
--- a/source/l/eigen2/eigen2.SlackBuild
+++ b/source/l/eigen2/eigen2.SlackBuild
@@ -22,10 +22,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=r948353
-ARCH=${ARCH:-x86_64}
+VERSION=2.0.10
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-eigen2
@@ -39,14 +48,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP || exit 1
-rm -rf eigen2-$VERSION
-tar xvf $CWD/eigen2-$VERSION.tar.bz2 || exit 1
-cd eigen2-$VERSION || exit 1
+rm -rf eigen-$VERSION
+tar xvf $CWD/eigen2-$VERSION.tar.?z* || exit 1
+cd eigen || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
diff --git a/source/l/enchant/enchant.SlackBuild b/source/l/enchant/enchant.SlackBuild
index bcd2cd7e9..d4f0eb9bc 100755
--- a/source/l/enchant/enchant.SlackBuild
+++ b/source/l/enchant/enchant.SlackBuild
@@ -24,11 +24,20 @@
# Modified by Robby Workman <rworkman at slackware.com>
-VERSION=1.4.2
-ARCH=${ARCH:-x86_64}
+VERSION=1.5.0
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j6 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-enchant
@@ -42,13 +51,16 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf enchant-$VERSION
-tar xvf $CWD/enchant-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/enchant-$VERSION.tar.xz || exit 1
cd enchant-$VERSION || exit 1
chown -R root:root .
find . \
diff --git a/source/l/exiv2/exiv2.SlackBuild b/source/l/exiv2/exiv2.SlackBuild
index 783fd7c57..2092df166 100755
--- a/source/l/exiv2/exiv2.SlackBuild
+++ b/source/l/exiv2/exiv2.SlackBuild
@@ -24,11 +24,20 @@
# Modified by Robby Workman <rworkman at slackware.com>
-VERSION=0.18.1
-ARCH=${ARCH:-x86_64}
+VERSION=0.18.2
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-exiv2
@@ -42,6 +51,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
diff --git a/source/l/fftw/fftw.SlackBuild b/source/l/fftw/fftw.SlackBuild
new file mode 100755
index 000000000..ffed6f95c
--- /dev/null
+++ b/source/l/fftw/fftw.SlackBuild
@@ -0,0 +1,152 @@
+#!/bin/sh
+
+# Slackware build script for fftw
+# Written by Kyle Guinn <elyk03@gmail.com>
+
+PRGNAM=fftw
+VERSION=${VERSION:-3.2.2}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM-$VERSION
+OUTPUT=${OUTPUT:-/tmp}
+
+DOCS="AUTHORS CONVENTIONS COPY* INSTALL NEWS README* TODO doc/html"
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+if [ "${PORTABLE:-yes}" = "no" ]; then
+ # According to doc/fftw3.pdf the configure script should choose the best
+ # value for $CFLAGS. These variables must be unset so that the configure
+ # script will decide.
+
+ # If you are interested in further optimizations such as alternative
+ # multithreading and support for other processors, check this page for
+ # details:
+ # http://www.fftw.org/fftw3_doc/Installation-on-Unix.html
+ unset CFLAGS
+ unset CXXFLAGS
+ unset FFLAGS
+ PKGARCH="custom"
+ do_portable=""
+else
+ PKGARCH=$ARCH
+ do_portable="--enable-portable-binary"
+fi
+
+if [ "${SSE:-no}" = "no" ]; then
+ do_sse=""
+else
+ do_sse="--enable-sse"
+fi
+
+if [ "${SSE2:-no}" = "no" ]; then
+ do_sse2=""
+else
+ do_sse2="--enable-sse2"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || exit 1
+cd $PRGNAM-$VERSION
+chown -R root:root .
+chmod -R u+w,go+r-w,a-st .
+
+# compile libfftw3
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/fftw-$VERSION \
+ --enable-shared \
+ --disable-static \
+ --enable-threads \
+ $do_sse2 \
+ $do_portable
+make -j4 || exit 1
+make install-strip DESTDIR=$PKG || exit 1
+
+# compile libfftw3f
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/fftw-$VERSION \
+ --enable-shared \
+ --disable-static \
+ --enable-threads \
+ --enable-float \
+ $do_sse \
+ $do_portable
+make -j4 || exit 1
+make install-strip DESTDIR=$PKG || exit 1
+
+# compile libfftw3l
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/fftw-$VERSION \
+ --enable-shared \
+ --disable-static \
+ --enable-threads \
+ --enable-long-double \
+ $do_portable
+make -j4 || exit 1
+make install-strip DESTDIR=$PKG || exit 1
+
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l); do \
+ ln -s $(readlink $i).gz $i.gz; \
+ rm $i; \
+ done
+)
+
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/fftw/slack-desc b/source/l/fftw/slack-desc
new file mode 100644
index 000000000..22a1130c2
--- /dev/null
+++ b/source/l/fftw/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+fftw: fftw (Fastest Fourier Transform in the West)
+fftw:
+fftw: FFTW is a free collection of fast C routines for computing the
+fftw: Discrete Fourier Transform in one or more dimensions. It includes
+fftw: complex, real, symmetric, and parallel transforms, and can handle
+fftw: arbitrary array sizes efficiently. FFTW is typically faster than
+fftw: other publically-available FFT implementations, and is even
+fftw: competitive with vendor-tuned libraries.
+fftw:
+fftw: Homepage: http://www.fftw.org/
+fftw:
diff --git a/source/l/freetype/freetype.SlackBuild b/source/l/freetype/freetype.SlackBuild
index 69c3f844b..1c1b25d39 100755
--- a/source/l/freetype/freetype.SlackBuild
+++ b/source/l/freetype/freetype.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.3.9
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo freetype-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -36,17 +45,20 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-freetype
+
rm -rf $PKG
mkdir -p $TMP $PKG
-
cd $TMP
rm -rf freetype-$VERSION
-tar xvf $CWD/freetype-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/freetype-$VERSION.tar.?z* || exit 1
cd freetype-$VERSION
chown -R root:root .
@@ -75,7 +87,7 @@ zcat $CWD/freetype.illadvisederror.diff.gz | patch -p1 --verbose || exit 1
#zcat $CWD/freetype.subpixel.rendering.diff.gz | patch -p1 --verbose || exit 1
chown -R root:root .
-CFLAGS="$SLKCFLAGS" make setup CFG="--prefix=/usr --libdir=/usr/lib${LIBDIRSUFFIX} $ARCH-slackware-linux"
+CFLAGS="$SLKCFLAGS" make setup CFG="--prefix=/usr --libdir=/usr/lib${LIBDIRSUFFIX} --build=$ARCH-slackware-linux"
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG
diff --git a/source/l/fuse/fuse.SlackBuild b/source/l/fuse/fuse.SlackBuild
index 96569eeab..0c5ddaa2d 100755
--- a/source/l/fuse/fuse.SlackBuild
+++ b/source/l/fuse/fuse.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright (c) 2008, Antonio Hernandez Blas <hba.nihilismus@gmail.com>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -23,36 +23,46 @@
# Modified by Robby Workman <rworkman@slackware.com>
# Modified by Eric Hameleers <alien@slackware.com>
-PRGNAM=fuse
-VERSION=2.7.4
-ARCH=${ARCH:-x86_64}
+PKGNAM=fuse
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -71,11 +81,10 @@ CXXFLAGS="$SLKCFLAGS" \
--includedir=/usr/include \
--localstatedir=/var \
--mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
--enable-lib \
--enable-util \
--disable-static \
- --disable-kernel-module \
--build=${ARCH}-slackware-linux \
|| exit 1
@@ -96,16 +105,24 @@ rm -rf $PKG/dev
mkdir -p $PKG/lib
mv $PKG/etc/udev $PKG/lib
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING COPYING.LIB FAQ Filesystems INSTALL NEWS README \
README.NFS doc/how-fuse-works doc/kernel.txt \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/gd/gd.SlackBuild b/source/l/gd/gd.SlackBuild
index a367412bc..c33f20ba1 100755
--- a/source/l/gd/gd.SlackBuild
+++ b/source/l/gd/gd.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,10 +23,19 @@
PKGNAM=gd
VERSION=${VERSION:-2.0.35}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-4}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -44,13 +53,18 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
+zcat $CWD/gd.png14.diff.gz | patch -p1 --verbose || exit 1
+
# Make sure ownerships and permissions are sane:
chown -R root:root .
find . \
diff --git a/source/l/gd/gd.png14.diff b/source/l/gd/gd.png14.diff
new file mode 100644
index 000000000..49841ee4f
--- /dev/null
+++ b/source/l/gd/gd.png14.diff
@@ -0,0 +1,65 @@
+--- ./configure.ac.orig 2007-04-25 07:48:41.000000000 -0500
++++ ./configure.ac 2010-02-12 01:37:29.000000000 -0600
+@@ -342,20 +342,20 @@
+ [ --with-png=DIR where to find the png library],,
+ withval=yes)
+
+-# libpng12.so is a nightmare. We have to test separately for
+-# libpng12-config and libpng-config. If we find libpng12-config,
++# libpng14.so is a nightmare. We have to test separately for
++# libpng14-config and libpng-config. If we find libpng14-config,
+ # we don't look for the other, which will just be a symlink to it,
+ # confusing autoconf into thinking the library itself will be named -lpng,
+ # which it won't be. Awful. This code will suffice unless the libpng
+ # authors decide to do this AGAIN. Which I really hope they won't. TBB
+
+ if test "$withval" != no; then
+- AC_PATH_PROG([LIBPNG12_CONFIG], [libpng12-config])
++ AC_PATH_PROG([LIBPNG14_CONFIG], [libpng14-config])
+ AC_PATH_PROG([LIBPNG_CONFIG], [libpng-config])
+- if test -n "$LIBPNG12_CONFIG"; then
+- libpng_CPPFLAGS=`libpng12-config --cflags`
++ if test -n "$LIBPNG14_CONFIG"; then
++ libpng_CPPFLAGS=`libpng14-config --cflags`
+ # should be --ldopts, but it's currently broken
+- libpng_LDFLAGS=`libpng12-config --ldflags`
++ libpng_LDFLAGS=`libpng14-config --ldflags`
+ libpng_LDFLAGS=`echo " $libpng_LDFLAGS" | sed 's/ -l[[^ ]][[^ ]]*//g'`
+ elif test -n "$LIBPNG_CONFIG"; then
+ libpng_CPPFLAGS=`libpng-config --cflags`
+@@ -375,9 +375,9 @@
+ _ldflags="$LDFLAGS"
+ LDFLAGS="$libpng_LDFLAGS $LDFLAGS"
+
+- if test -n "$LIBPNG12_CONFIG"; then
+- AC_CHECK_LIB(png12,png_create_read_struct,
+- [LIBS="-lpng12 $LIBS"
++ if test -n "$LIBPNG14_CONFIG"; then
++ AC_CHECK_LIB(png14,png_create_read_struct,
++ [LIBS="-lpng14 $LIBS"
+ FEATURES="GD_PNG $FEATURES"
+ AC_DEFINE(HAVE_LIBPNG, 1, [ Define if you have the png library. ])],
+ [LDFLAGS="$_ldflags"
+@@ -402,9 +402,9 @@
+ AC_MSG_WARN([libpng is required - see http://www.libpng.org/pub/png/])
+ fi
+
+-#TBB: png12's png_create_read_struct is just as good
++#TBB: png14's png_create_read_struct is just as good
+ #2.0.23: should be = not ==
+-if test "$ac_cv_lib_png12_png_create_read_struct" = yes; then
++if test "$ac_cv_lib_png14_png_create_read_struct" = yes; then
+ ac_cv_lib_png_png_create_read_struct=yes
+ fi
+
+--- ./gd_png.c.orig 2007-06-14 14:51:41.000000000 -0500
++++ ./gd_png.c 2010-02-12 01:43:36.000000000 -0600
+@@ -149,7 +149,7 @@
+ return NULL;
+ }
+
+- if (!png_check_sig (sig, 8)) { /* bad signature */
++ if (!(png_sig_cmp(sig, 0, 8) == 0)) { /* bad signature */
+ return NULL; /* bad signature */
+ }
+
diff --git a/source/l/gd/gdlib.pc b/source/l/gd/gdlib.pc
index 7bd439b63..e39512638 100644
--- a/source/l/gd/gdlib.pc
+++ b/source/l/gd/gdlib.pc
@@ -10,5 +10,5 @@ Name: gd-devel
Description: A graphics library for quick creation of PNG or JPEG images
Version: @VERSION@
Requires:
-Libs: -lXpm -lX11 -ljpeg -lfontconfig -lfreetype -lpng12 -lz -lm
+Libs: -lXpm -lX11 -ljpeg -lfontconfig -lfreetype -lpng14 -lz -lm
Cflags: -I${prefix}/include
diff --git a/source/l/gegl/gegl.SlackBuild b/source/l/gegl/gegl.SlackBuild
index cc5855224..86e07aa89 100755
--- a/source/l/gegl/gegl.SlackBuild
+++ b/source/l/gegl/gegl.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# Copyright 2008, 2009 Robby Workman, Northport, Alabama, USA
# All rights reserved.
#
@@ -22,9 +22,18 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=0.0.22
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-$(echo gegl-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -41,6 +50,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -63,6 +75,7 @@ CFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--docdir=/usr/doc/gegl-$VERSION \
--enable-gtk-doc \
+ --disable-docs \
--enable-mmx \
--disable-sse \
--build=$ARCH-slackware-linux
@@ -77,7 +90,15 @@ mkdir -p $PKG/usr/doc/gegl-$VERSION
cp -a \
AUTHORS COPYING* INSTALL NEWS README TODO \
$PKG/usr/doc/gegl-$VERSION
-( cd $PKG/usr/doc/gegl-$VERSION ; ln -s /usr/share/gtk-doc/html/gegl/ html )
+#( cd $PKG/usr/doc/gegl-$VERSION ; ln -s /usr/share/gtk-doc/html/gegl/ html )
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/giflib/giflib.SlackBuild b/source/l/giflib/giflib.SlackBuild
new file mode 100755
index 000000000..e2390a253
--- /dev/null
+++ b/source/l/giflib/giflib.SlackBuild
@@ -0,0 +1,109 @@
+#!/bin/sh
+
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+VERSION=${VERSION:-$(echo giflib-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-giflib
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf giflib-$VERSION
+tar xvf $CWD/giflib-$VERSION.tar.?z* || exit 1
+cd giflib-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --with-x=no \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Make some compatibility symlinks
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ ln -s libgif.so.4 libungif.so.4
+ ln -s libgif.so libungif.so
+)
+
+mkdir -p $PKG/usr/doc/giflib-$VERSION
+cp -a \
+ AUTHORS BUGS COPYING DEVELOPERS INSTALL NEWS ONEWS README TODO \
+ $PKG/usr/doc/giflib-$VERSION
+cp -a doc $PKG/usr/doc/giflib-$VERSION/html
+rm $PKG/usr/doc/giflib-$VERSION/html/Makefile*
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/giflib-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/giflib/slack-desc b/source/l/giflib/slack-desc
new file mode 100644
index 000000000..322b6e418
--- /dev/null
+++ b/source/l/giflib/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+giflib: giflib (GIF image format library)
+giflib:
+giflib: A library to load and save (uncompressed only) images using GIF,
+giflib: or Graphics Interchange Format. GIF was introduced by CompuServe
+giflib: in 1987, but is still widely used today (especially on web pages.)
+giflib:
+giflib:
+giflib:
+giflib:
+giflib:
+giflib:
diff --git a/source/l/glib2/glib-CVE-2008-4316.diff b/source/l/glib2/glib-CVE-2008-4316.diff
deleted file mode 100644
index 5d9bddee1..000000000
--- a/source/l/glib2/glib-CVE-2008-4316.diff
+++ /dev/null
@@ -1,62 +0,0 @@
---- trunk/glib/gbase64.c 2009/02/23 04:30:06 7897
-+++ trunk/glib/gbase64.c 2009/03/12 13:30:55 7973
-@@ -54,8 +54,9 @@
- *
- * The output buffer must be large enough to fit all the data that will
- * be written to it. Due to the way base64 encodes you will need
-- * at least: @len * 4 / 3 + 6 bytes. If you enable line-breaking you will
-- * need at least: @len * 4 / 3 + @len * 4 / (3 * 72) + 7 bytes.
-+ * at least: (@len / 3 + 1) * 4 + 4 bytes (+ 4 may be needed in case of
-+ * non-zero state). If you enable line-breaking you will need at least:
-+ * ((@len / 3 + 1) * 4 + 4) / 72 + 1 bytes of extra space.
- *
- * @break_lines is typically used when putting base64-encoded data in emails.
- * It breaks the lines at 72 columns instead of putting all of the text on
-@@ -233,8 +234,14 @@
- g_return_val_if_fail (data != NULL, NULL);
- g_return_val_if_fail (len > 0, NULL);
-
-- /* We can use a smaller limit here, since we know the saved state is 0 */
-- out = g_malloc (len * 4 / 3 + 4);
-+ /* We can use a smaller limit here, since we know the saved state is 0,
-+ +1 is needed for trailing \0, also check for unlikely integer overflow */
-+ if (len >= ((G_MAXSIZE - 1) / 4 - 1) * 3)
-+ g_error("%s: input too large for Base64 encoding (%"G_GSIZE_FORMAT" chars)",
-+ G_STRLOC, len);
-+
-+ out = g_malloc ((len / 3 + 1) * 4 + 1);
-+
- outlen = g_base64_encode_step (data, len, FALSE, out, &state, &save);
- outlen += g_base64_encode_close (FALSE, out + outlen, &state, &save);
- out[outlen] = '\0';
-@@ -275,7 +282,8 @@
- *
- * The output buffer must be large enough to fit all the data that will
- * be written to it. Since base64 encodes 3 bytes in 4 chars you need
-- * at least: @len * 3 / 4 bytes.
-+ * at least: (@len / 4) * 3 + 3 bytes (+ 3 may be needed in case of non-zero
-+ * state).
- *
- * Return value: The number of bytes of output that was written
- *
-@@ -358,7 +366,8 @@
- gsize *out_len)
- {
- guchar *ret;
-- gint input_length, state = 0;
-+ gsize input_length;
-+ gint state = 0;
- guint save = 0;
-
- g_return_val_if_fail (text != NULL, NULL);
-@@ -368,7 +377,9 @@
-
- g_return_val_if_fail (input_length > 1, NULL);
-
-- ret = g_malloc0 (input_length * 3 / 4);
-+ /* We can use a smaller limit here, since we know the saved state is 0,
-+ +1 used to avoid calling g_malloc0(0), and hence retruning NULL */
-+ ret = g_malloc0 ((input_length / 4) * 3 + 1);
-
- *out_len = g_base64_decode_step (text, input_length, ret, &state, &save);
-
diff --git a/source/l/glib2/glib2.SlackBuild b/source/l/glib2/glib2.SlackBuild
index 23211af80..b662e37f3 100755
--- a/source/l/glib2/glib2.SlackBuild
+++ b/source/l/glib2/glib2.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,17 +21,24 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-2.18.4}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo glib-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-glib2
-rm -rf $PKG
-mkdir -p $TMP $PKG/usr
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -42,15 +49,18 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG/usr
cd $TMP
rm -rf glib-$VERSION
-tar xvf $CWD/glib-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/glib-$VERSION.tar.?z* || exit 1
cd glib-$VERSION
-zcat $CWD/glib-CVE-2008-4316.diff.gz | patch -p1 --verbose || exit 1
-
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -91,6 +101,14 @@ cp -a \
$PKG/usr/doc/glib-$VERSION
( cd $PKG/usr/doc/glib-$VERSION ; ln -s /usr/share/gtk-doc/html/gobject html )
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
diff --git a/source/l/glibc/doinst.sh-glibc b/source/l/glibc/doinst.sh-glibc
index e85810f7a..ffc066e80 100644
--- a/source/l/glibc/doinst.sh-glibc
+++ b/source/l/glibc/doinst.sh-glibc
@@ -110,45 +110,44 @@ rm -f etc/profile.d/glibc.sh.new
# In case there's no ldconfig, make the links manually:
if [ ! -x /sbin/ldconfig ]; then
-# linuxthreads:
( cd lib ; rm -rf libnss_nis.so.2 )
-( cd lib ; ln -sf libnss_nis-2.9.so libnss_nis.so.2 )
+( cd lib ; ln -sf libnss_nis-2.11.1.so libnss_nis.so.2 )
( cd lib ; rm -rf libm.so.6 )
-( cd lib ; ln -sf libm-2.9.so libm.so.6 )
+( cd lib ; ln -sf libm-2.11.1.so libm.so.6 )
( cd lib ; rm -rf libnss_files.so.2 )
-( cd lib ; ln -sf libnss_files-2.9.so libnss_files.so.2 )
+( cd lib ; ln -sf libnss_files-2.11.1.so libnss_files.so.2 )
( cd lib ; rm -rf libresolv.so.2 )
-( cd lib ; ln -sf libresolv-2.9.so libresolv.so.2 )
+( cd lib ; ln -sf libresolv-2.11.1.so libresolv.so.2 )
( cd lib ; rm -rf libnsl.so.1 )
-( cd lib ; ln -sf libnsl-2.9.so libnsl.so.1 )
+( cd lib ; ln -sf libnsl-2.11.1.so libnsl.so.1 )
( cd lib ; rm -rf libutil.so.1 )
-( cd lib ; ln -sf libutil-2.9.so libutil.so.1 )
+( cd lib ; ln -sf libutil-2.11.1.so libutil.so.1 )
( cd lib ; rm -rf libnss_compat.so.2 )
-( cd lib ; ln -sf libnss_compat-2.9.so libnss_compat.so.2 )
+( cd lib ; ln -sf libnss_compat-2.11.1.so libnss_compat.so.2 )
( cd lib ; rm -rf libthread_db.so.1 )
( cd lib ; ln -sf libthread_db-1.0.so libthread_db.so.1 )
( cd lib ; rm -rf libnss_hesiod.so.2 )
-( cd lib ; ln -sf libnss_hesiod-2.9.so libnss_hesiod.so.2 )
+( cd lib ; ln -sf libnss_hesiod-2.11.1.so libnss_hesiod.so.2 )
( cd lib ; rm -rf libanl.so.1 )
-( cd lib ; ln -sf libanl-2.9.so libanl.so.1 )
+( cd lib ; ln -sf libanl-2.11.1.so libanl.so.1 )
( cd lib ; rm -rf libcrypt.so.1 )
-( cd lib ; ln -sf libcrypt-2.9.so libcrypt.so.1 )
+( cd lib ; ln -sf libcrypt-2.11.1.so libcrypt.so.1 )
( cd lib ; rm -rf libBrokenLocale.so.1 )
-( cd lib ; ln -sf libBrokenLocale-2.9.so libBrokenLocale.so.1 )
+( cd lib ; ln -sf libBrokenLocale-2.11.1.so libBrokenLocale.so.1 )
( cd lib ; rm -rf ld-linux.so.2 )
-( cd lib ; ln -sf ld-2.9.so ld-linux.so.2 )
+( cd lib ; ln -sf ld-2.11.1.so ld-linux.so.2 )
( cd lib ; rm -rf libdl.so.2 )
-( cd lib ; ln -sf libdl-2.9.so libdl.so.2 )
+( cd lib ; ln -sf libdl-2.11.1.so libdl.so.2 )
( cd lib ; rm -rf libnss_dns.so.2 )
-( cd lib ; ln -sf libnss_dns-2.9.so libnss_dns.so.2 )
+( cd lib ; ln -sf libnss_dns-2.11.1.so libnss_dns.so.2 )
( cd lib ; rm -rf libpthread.so.0 )
-( cd lib ; ln -sf libpthread-2.9.so libpthread.so.0 )
+( cd lib ; ln -sf libpthread-2.11.1.so libpthread.so.0 )
( cd lib ; rm -rf libnss_nisplus.so.2 )
-( cd lib ; ln -sf libnss_nisplus-2.9.so libnss_nisplus.so.2 )
+( cd lib ; ln -sf libnss_nisplus-2.11.1.so libnss_nisplus.so.2 )
( cd lib ; rm -rf libc.so.6 )
-( cd lib ; ln -sf libc-2.9.so libc.so.6 )
+( cd lib ; ln -sf libc-2.11.1.so libc.so.6 )
( cd lib ; rm -rf librt.so.1 )
-( cd lib ; ln -sf librt-2.9.so librt.so.1 )
+( cd lib ; ln -sf librt-2.11.1.so librt.so.1 )
fi
# More links:
diff --git a/source/l/glibc/doinst.sh-glibc-solibs b/source/l/glibc/doinst.sh-glibc-solibs
index bfc7ad85c..a186da99c 100644
--- a/source/l/glibc/doinst.sh-glibc-solibs
+++ b/source/l/glibc/doinst.sh-glibc-solibs
@@ -90,43 +90,42 @@ rm -f etc/profile.d/glibc.sh.new
# In case there's no ldconfig, make the links manually:
if [ ! -x /sbin/ldconfig ]; then
-# linuxthreads:
( cd lib ; rm -rf libnss_nis.so.2 )
-( cd lib ; ln -sf libnss_nis-2.9.so libnss_nis.so.2 )
+( cd lib ; ln -sf libnss_nis-2.11.1.so libnss_nis.so.2 )
( cd lib ; rm -rf libm.so.6 )
-( cd lib ; ln -sf libm-2.9.so libm.so.6 )
+( cd lib ; ln -sf libm-2.11.1.so libm.so.6 )
( cd lib ; rm -rf libnss_files.so.2 )
-( cd lib ; ln -sf libnss_files-2.9.so libnss_files.so.2 )
+( cd lib ; ln -sf libnss_files-2.11.1.so libnss_files.so.2 )
( cd lib ; rm -rf libresolv.so.2 )
-( cd lib ; ln -sf libresolv-2.9.so libresolv.so.2 )
+( cd lib ; ln -sf libresolv-2.11.1.so libresolv.so.2 )
( cd lib ; rm -rf libnsl.so.1 )
-( cd lib ; ln -sf libnsl-2.9.so libnsl.so.1 )
+( cd lib ; ln -sf libnsl-2.11.1.so libnsl.so.1 )
( cd lib ; rm -rf libutil.so.1 )
-( cd lib ; ln -sf libutil-2.9.so libutil.so.1 )
+( cd lib ; ln -sf libutil-2.11.1.so libutil.so.1 )
( cd lib ; rm -rf libnss_compat.so.2 )
-( cd lib ; ln -sf libnss_compat-2.9.so libnss_compat.so.2 )
+( cd lib ; ln -sf libnss_compat-2.11.1.so libnss_compat.so.2 )
( cd lib ; rm -rf libthread_db.so.1 )
( cd lib ; ln -sf libthread_db-1.0.so libthread_db.so.1 )
( cd lib ; rm -rf libnss_hesiod.so.2 )
-( cd lib ; ln -sf libnss_hesiod-2.9.so libnss_hesiod.so.2 )
+( cd lib ; ln -sf libnss_hesiod-2.11.1.so libnss_hesiod.so.2 )
( cd lib ; rm -rf libanl.so.1 )
-( cd lib ; ln -sf libanl-2.9.so libanl.so.1 )
+( cd lib ; ln -sf libanl-2.11.1.so libanl.so.1 )
( cd lib ; rm -rf libcrypt.so.1 )
-( cd lib ; ln -sf libcrypt-2.9.so libcrypt.so.1 )
+( cd lib ; ln -sf libcrypt-2.11.1.so libcrypt.so.1 )
( cd lib ; rm -rf libBrokenLocale.so.1 )
-( cd lib ; ln -sf libBrokenLocale-2.9.so libBrokenLocale.so.1 )
+( cd lib ; ln -sf libBrokenLocale-2.11.1.so libBrokenLocale.so.1 )
( cd lib ; rm -rf ld-linux.so.2 )
-( cd lib ; ln -sf ld-2.9.so ld-linux.so.2 )
+( cd lib ; ln -sf ld-2.11.1.so ld-linux.so.2 )
( cd lib ; rm -rf libdl.so.2 )
-( cd lib ; ln -sf libdl-2.9.so libdl.so.2 )
+( cd lib ; ln -sf libdl-2.11.1.so libdl.so.2 )
( cd lib ; rm -rf libnss_dns.so.2 )
-( cd lib ; ln -sf libnss_dns-2.9.so libnss_dns.so.2 )
+( cd lib ; ln -sf libnss_dns-2.11.1.so libnss_dns.so.2 )
( cd lib ; rm -rf libpthread.so.0 )
-( cd lib ; ln -sf libpthread-2.9.so libpthread.so.0 )
+( cd lib ; ln -sf libpthread-2.11.1.so libpthread.so.0 )
( cd lib ; rm -rf libnss_nisplus.so.2 )
-( cd lib ; ln -sf libnss_nisplus-2.9.so libnss_nisplus.so.2 )
+( cd lib ; ln -sf libnss_nisplus-2.11.1.so libnss_nisplus.so.2 )
( cd lib ; rm -rf libc.so.6 )
-( cd lib ; ln -sf libc-2.9.so libc.so.6 )
+( cd lib ; ln -sf libc-2.11.1.so libc.so.6 )
( cd lib ; rm -rf librt.so.1 )
-( cd lib ; ln -sf librt-2.9.so librt.so.1 )
+( cd lib ; ln -sf librt-2.11.1.so librt.so.1 )
fi
diff --git a/source/l/glibc/glibc.SlackBuild b/source/l/glibc/glibc.SlackBuild
index bf49bdce5..c00d790ef 100755
--- a/source/l/glibc/glibc.SlackBuild
+++ b/source/l/glibc/glibc.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,14 +22,25 @@
## build glibc-$VERSION for Slackware
-
-VERSION=${VERSION:-2.9}
-CHECKOUT=${CHECKOUT:--20090316}
+VERSION=${VERSION:-2.11.1}
+CHECKOUT=${CHECKOUT:-""}
BUILD=${BUILD:-3}
+
+## Included in glibc now:
+## glibc-libidn version
+#LIBIDNVER=2.10.1
+
# $ARCH may be preset, otherwise i486 compatibility with i686 binary
# structuring is the Slackware default, since this is what gcc-3.2+
# requires for binary compatibility with previous releases.
-ARCH=${ARCH:-x86_64}
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CVSVER=${VERSION}${CHECKOUT}
@@ -44,6 +55,8 @@ CWD=$(pwd)
TMP=${TMP:-/glibc-tmp-$(mcookie)}
mkdir -p $TMP
+NUMJOBS=${NUMJOBS:--j4}
+
# Sanity check on the version number in the install scripts:
if ! grep -vq libutil-$VERSION}.so $CWD/doinst.sh-glibc ; then
echo "FATAL: doinst.sh scripts have wrong version numbers."
@@ -101,14 +114,14 @@ apply_patches() {
zcat $CWD/glibc.revert.to.fix.build.breakages.diff.gz | patch -p1 --verbose || exit 1
# Update the timezone information.
( cd timezone
- tar xzf $CWD/tzdata2009d.tar.gz
+ tar xzf $CWD/tzdata?????.tar.gz
chown root:root *
mv yearistype.sh yearistype
chmod 644 *
chmod 755 yearistype
mkdir tzcode
cd tzcode
- tar xzf $CWD/tzcode2009d.tar.gz
+ tar xzf $CWD/tzcode?????.tar.gz
chown -R root:root .
chmod 644 *
cp -a *.c *.h ..
@@ -187,9 +200,14 @@ mkdir -p $PKG/var/run/nscd
# Begin extract/compile:
cd $TMP
rm -rf glibc-$CVSVER
-tar xjvf $CWD/glibc-$CVSVER.tar.bz2
+tar xvf $CWD/glibc-$CVSVER.tar.xz \
+ || tar xvf $CWD/glibc-$CVSVER.tar.bz2 \
+ || tar xvf $CWD/glibc-$CVSVER.tar.gz
cd glibc-$CVSVER
+#tar xvf $CWD/glibc-libidn-$LIBIDNVER.tar.?z*
+#mv glibc-libidn-$LIBIDNVER libidn
+
chown -R root:root .
find . -perm 666 -exec chmod 644 {} \;
find . -perm 664 -exec chmod 644 {} \;
@@ -232,7 +250,7 @@ CFLAGS="-g $OPTIMIZ" \
--without-cvs \
$TARGET-slackware-linux
-make -j4 || exit 1
+make $NUMJOBS || make || exit 1
make install install_root=$PKG || exit 1
make localedata/install-locales install_root=$PKG || exit 1
@@ -442,7 +460,7 @@ fix_doinst
mv incoming/libSegFault.so .
)
# Build the package:
-makepkg -l y -c n $TMP/glibc-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/glibc-$VERSION-$ARCH-$BUILD.txz
# Done!
echo
diff --git a/source/l/gmime/gmime.SlackBuild b/source/l/gmime/gmime.SlackBuild
index 6f3d0f111..b7d6bb7ca 100755
--- a/source/l/gmime/gmime.SlackBuild
+++ b/source/l/gmime/gmime.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,19 @@
PKGNAM=gmime
-VERSION=${VERSION:-2.2.23}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
NUMJOBS=${NUMJOBS:-" -j7 "}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -43,11 +51,14 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
@@ -66,6 +77,7 @@ CFLAGS="$SLKCFLAGS" \
--localstatedir=/var/lib \
--sysconfdir=/etc \
--mandir=/usr/man \
+ --disable-static \
--program-prefix= \
--program-suffix= \
--build=$ARCH-slackware-linux
@@ -108,7 +120,6 @@ cp -a \
$PKG/usr/doc/${PKGNAM}-$VERSION
mkdir -p $PKG/install
-#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
diff --git a/source/l/gmp/gmp.SlackBuild b/source/l/gmp/gmp.SlackBuild
index 147cabe35..8fd35296d 100755
--- a/source/l/gmp/gmp.SlackBuild
+++ b/source/l/gmp/gmp.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=4.2.4
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo gmp-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
@@ -46,7 +55,7 @@ fi
cd $TMP
rm -rf gmp-$VERSION
-tar xvf $CWD/gmp-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/gmp-$VERSION.tar.?z* || exit 1
cd gmp-$VERSION
chown -R root:root .
find . \
@@ -59,6 +68,7 @@ CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
+ --infodir=/usr/info \
--with-gnu-ld \
--enable-cxx \
--enable-mpbsd \
@@ -76,9 +86,17 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
mkdir -p $PKG/usr/doc/gmp-$VERSION
cp -a \
- AUTHORS COPYING COPYING.LIB NEWS README \
+ AUTHORS COPYING* NEWS README \
$PKG/usr/doc/gmp-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/gnome-icon-theme/gnome-icon-theme.SlackBuild b/source/l/gnome-icon-theme/gnome-icon-theme.SlackBuild
index d8855c64f..c9a76aa41 100755
--- a/source/l/gnome-icon-theme/gnome-icon-theme.SlackBuild
+++ b/source/l/gnome-icon-theme/gnome-icon-theme.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.26.0
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo gnome-icon-theme-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
else
@@ -67,6 +77,14 @@ cp -a \
AUTHORS COPYING NEWS README TODO \
$PKG/usr/doc/gnome-icon-theme-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
diff --git a/source/l/gnome-icon-theme/gnome-icon-theme.pkgconfig.path.diff b/source/l/gnome-icon-theme/gnome-icon-theme.pkgconfig.path.diff
index 0b93f2cf7..f8f0b2692 100644
--- a/source/l/gnome-icon-theme/gnome-icon-theme.pkgconfig.path.diff
+++ b/source/l/gnome-icon-theme/gnome-icon-theme.pkgconfig.path.diff
@@ -1,12 +1,12 @@
-diff -Nur gnome-icon-theme-2.20.0.orig/Makefile.in gnome-icon-theme-2.20.0/Makefile.in
---- gnome-icon-theme-2.20.0.orig/Makefile.in 2007-09-17 15:07:53.000000000 -0500
-+++ gnome-icon-theme-2.20.0/Makefile.in 2008-02-09 19:56:18.425736840 -0600
-@@ -218,7 +218,7 @@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- SUBDIRS = 8x8 16x16 22x22 24x24 32x32 48x48 scalable po
+diff -Nur gnome-icon-theme-2.30.2.orig//Makefile.in gnome-icon-theme-2.30.2/Makefile.in
+--- gnome-icon-theme-2.30.2.orig//Makefile.in 2010-04-27 09:09:59.000000000 -0500
++++ gnome-icon-theme-2.30.2/Makefile.in 2010-04-28 10:21:56.050022564 -0500
+@@ -231,7 +231,7 @@
+ theme_in_files = index.theme.in.in
+ theme_DATA = $(theme_in_files:.theme.in.in=.theme)
+ THEME_DIRS = $(shell SIZES="$(render_sizes)"; for size in $$SIZES; do for dir in `find $(srcdir)/$(SVGOUTDIR)/$$size/* -type d`; do printf "$$dir,"; done; done | sed -e "s/,$$//g")
-pkgconfigdir = $(datadir)/pkgconfig
+pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = gnome-icon-theme.pc
- THEME_IN_FILES = index.theme.in
- theme_DATA = index.theme
+ EXTRA_DIST = \
+ gnome-icon-theme.pc.in \
diff --git a/source/l/gst-plugins-base/gst-plugins-base.SlackBuild b/source/l/gst-plugins-base/gst-plugins-base.SlackBuild
index ccb118726..e6e3c84cc 100755
--- a/source/l/gst-plugins-base/gst-plugins-base.SlackBuild
+++ b/source/l/gst-plugins-base/gst-plugins-base.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2008 Michiel van Wessem <michiel@slackbuilds.org>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -24,15 +24,25 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=gst-plugins-base
-VERSION=0.10.23
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+PKGNAM=gst-plugins-base
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -46,14 +56,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || exit 1
-cd $PRGNAM-$VERSION
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -84,14 +97,22 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
for i in $(find . -type l) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
)
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README* RELEASE REQUIREMENTS \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/gst-plugins-good/gst-plugins-good.SlackBuild b/source/l/gst-plugins-good/gst-plugins-good.SlackBuild
new file mode 100755
index 000000000..a5db6d876
--- /dev/null
+++ b/source/l/gst-plugins-good/gst-plugins-good.SlackBuild
@@ -0,0 +1,129 @@
+#!/bin/sh
+
+# Copyright 2008 Michiel van Wessem <michiel@slackbuilds.org>
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=gst-plugins-good
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --disable-debug \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README* RELEASE REQUIREMENTS \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/gst-plugins-good/slack-desc b/source/l/gst-plugins-good/slack-desc
new file mode 100644
index 000000000..7738d275b
--- /dev/null
+++ b/source/l/gst-plugins-good/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler---------------------------------------------|
+gst-plugins-good: gst-plugins-good (good set of GStreamer plugins)
+gst-plugins-good:
+gst-plugins-good: GStreamer Good Plug-ins is a set of plug-ins that have good
+gst-plugins-good: quality code, correct functionality, and a good license
+gst-plugins-good: (LGPL for the plug-in code, LGPL or LGPL-compatible for the
+gst-plugins-good: supporting library).
+gst-plugins-good:
+gst-plugins-good:
+gst-plugins-good:
+gst-plugins-good:
+gst-plugins-good:
diff --git a/source/l/gstreamer/gstreamer.SlackBuild b/source/l/gstreamer/gstreamer.SlackBuild
index 2fcc04e71..293b90fa0 100755
--- a/source/l/gstreamer/gstreamer.SlackBuild
+++ b/source/l/gstreamer/gstreamer.SlackBuild
@@ -2,7 +2,7 @@
# Copyright 2008 Robby Workman, Northport, Alabama, USA
# Copyright 2008 Michiel van Wessem <michiel@slackbuilds.org>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,12 +23,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=gstreamer
-VERSION=0.10.23
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+PKGNAM=gstreamer
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -41,19 +51,22 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || exit 1
-cd $PRGNAM-$VERSION
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -69,21 +82,21 @@ CXXFLAGS="$SLKCFLAGS" \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --with-cachedir=/var/cache/$PRGNAM \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
--disable-static \
--disable-debug \
+ --disable-gst-debug \
+ --with-package-name='gstreamer' \
+ --with-package-origin='http://gstreamer.freedesktop.org' \
--build=$ARCH-slackware-linux
# --disable-gst-debug was always used before, but now the option prevents
# gstreamer (10.22) from compiling. Check again with future releases.
+# Seems fine as of 0.10.26, so it's enabled again -RW
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-# Create the cache directory
-mkdir -p $PKG/var/cache/gstreamer
-
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -92,14 +105,22 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
for i in $(find . -type l) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
)
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
ABOUT-NLS AUTHORS COPYING* INSTALL MAINTAINERS NEWS README* RELEASE TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/gtk+2/gtk+2.SlackBuild b/source/l/gtk+2/gtk+2.SlackBuild
index 0c4e043a7..f60d0a555 100755
--- a/source/l/gtk+2/gtk+2.SlackBuild
+++ b/source/l/gtk+2/gtk+2.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.14.7
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-4}
+VERSION=${VERSION:-$(echo gtk+-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-gtk2
@@ -40,32 +49,18 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG/usr
cd $TMP
rm -rf gtk+-$VERSION
-tar xvf $CWD/gtk+-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/gtk+-$VERSION.tar.?z* || exit 1
cd gtk+-$VERSION
-# There's been this long standing debate about PNG and -lz
-# and this patch is the workaround. ;-)
-zcat $CWD/gtk.pnglz.diff.gz | patch -p1 --verbose || exit 1
-# Fix Flash in Konquoror:
-zcat $CWD/gtk.nsplugin.diff.gz | patch -p1 --verbose || exit 1
-
-## Fix for x86_64 (does not hurt the other archs but note that we will start
-## using /etc/gtk-2.0/$host instead of /etc/gtk-2.0/ now):
- sed -i "s/GTK_SYSCONFDIR, \\\"gtk-2\\.0\\\"/GTK_SYSCONFDIR, \\\"gtk-2\\.0\\\", HOST/g" ./gtk/gtkrc.c ./gdk-pixbuf/gdk-pixbuf-io.c
- sed -i 's/sysconfdir)\\"/& \\\n\t-DHOST=\\\"$(host_triplet)\\\"/g' \
- gdk-pixbuf/Makefile.am \
- gtk/Makefile.am \
- modules/input/Makefile.am
-
-# The original config.{guess,sub} do not work on x86_64
-cp -p /usr/share/libtool/config.{guess,sub} .
-
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -73,6 +68,25 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# There's been this long standing debate about PNG and -lz
+# and this patch is the workaround. ;-)
+zcat $CWD/gtk.pnglz.diff.gz | patch -p1 --verbose || exit 1
+
+# Do not flood the console or .xsession-errors with "trouble ahead"
+# warnings (most noticable when using Firefox and Flash):
+zcat $CWD/gtk.xid.nowarningflood.diff.gz | patch -p1 --verbose || exit 1
+
+# Use /etc/gtk-2.0/$ARCH-slackware-linux instead of /etc/gtk-2.0/
+sed -i "s/GTK_SYSCONFDIR, \\\"gtk-2\\.0\\\"/GTK_SYSCONFDIR, \\\"gtk-2\\.0\\\", HOST/g" ./gtk/gtkrc.c ./gdk-pixbuf/gdk-pixbuf-io.c
+sed -i 's/sysconfdir)\\"/& \\\n\t-DHOST=\\\"$(host_triplet)\\\"/g' \
+gdk-pixbuf/Makefile.am \
+gtk/Makefile.am \
+modules/input/Makefile.am
+
+# Use libpng-1.4.x:
+zcat $CWD/gtk.png14.diff.gz | patch -p1 --verbose || exit 1
+
+# Regenerate ./configure:
libtoolize --force
autoreconf -vif
@@ -80,7 +94,7 @@ autoreconf -vif
# Our host is $ARCH-slackware-linux not $ARCH-slackware-linux-gnu:
sed -i -e 's#linux|linux-gnu|#linux|linux|#' config.sub
-CFLAGS="$SLKCFLAGS" \
+CFLAGS="$SLKCFLAGS -DHOST='"'"${ARCH}-slackware-linux"'"'" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
@@ -167,6 +181,14 @@ cp -a \
ln -s /usr/share/gtk-doc/html/gtk .
)
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
# I'm almost inclined to think this stuff is obsolete but I don't know for sure.
# I do know that leaving it in doesn't hurt (aside from a few wasted bytes, but
# probably less than the comments here waste ;-)
diff --git a/source/l/gtk+2/gtk.nsplugin.diff b/source/l/gtk+2/gtk.nsplugin.diff
deleted file mode 100644
index 3e0932dec..000000000
--- a/source/l/gtk+2/gtk.nsplugin.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nur gtk+-2.14.6.orig/gtk/gtkclipboard.c gtk+-2.14.6/gtk/gtkclipboard.c
---- gtk+-2.14.6.orig/gtk/gtkclipboard.c 2008-12-15 12:38:44.000000000 -0600
-+++ gtk+-2.14.6/gtk/gtkclipboard.c 2008-12-16 21:33:21.079854023 -0600
-@@ -299,6 +299,7 @@
- gtk_clipboard_get_for_display (GdkDisplay *display,
- GdkAtom selection)
- {
-+ g_return_val_if_fail (display != NULL, NULL);
- g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
- g_return_val_if_fail (!display->closed, NULL);
-
diff --git a/source/l/gtk+2/gtk.png14.diff b/source/l/gtk+2/gtk.png14.diff
new file mode 100644
index 000000000..20d709e4e
--- /dev/null
+++ b/source/l/gtk+2/gtk.png14.diff
@@ -0,0 +1,19 @@
+--- ./configure.in.orig 2010-01-11 14:57:36.000000000 -0600
++++ ./configure.in 2010-02-12 00:48:04.000000000 -0600
+@@ -908,12 +908,12 @@
+
+ dnl Test for libpng
+ if test x$with_libpng != xno && test -z "$LIBPNG"; then
+- AC_MSG_CHECKING(for libpng12)
+- if $PKG_CONFIG --exists libpng12 ; then
++ AC_MSG_CHECKING(for libpng14)
++ if $PKG_CONFIG --exists libpng14 ; then
+ AC_MSG_RESULT(yes)
+ PNG='png'
+- PNG_DEP_CFLAGS_PACKAGES=libpng12
+- LIBPNG=`$PKG_CONFIG --libs libpng12`
++ PNG_DEP_CFLAGS_PACKAGES=libpng14
++ LIBPNG=`$PKG_CONFIG --libs libpng14`
+ else
+ AC_MSG_RESULT(no)
+ AC_CHECK_LIB(png, png_read_info,
diff --git a/source/l/gtk+2/gtk.pnglz.diff b/source/l/gtk+2/gtk.pnglz.diff
index 13020c242..1f71bd841 100644
--- a/source/l/gtk+2/gtk.pnglz.diff
+++ b/source/l/gtk+2/gtk.pnglz.diff
@@ -1,7 +1,7 @@
-diff -Nur gtk+-2.14.6.orig/gdk-pixbuf/Makefile.in gtk+-2.14.6/gdk-pixbuf/Makefile.in
---- gtk+-2.14.6.orig/gdk-pixbuf/Makefile.in 2008-12-15 12:42:35.000000000 -0600
-+++ gtk+-2.14.6/gdk-pixbuf/Makefile.in 2008-12-16 21:36:45.393854353 -0600
-@@ -245,7 +245,7 @@
+diff -Nur gtk+-2.18.4.orig/gdk-pixbuf/Makefile.in gtk+-2.18.4/gdk-pixbuf/Makefile.in
+--- gtk+-2.18.4.orig/gdk-pixbuf/Makefile.in 2009-11-30 22:08:44.000000000 -0600
++++ gtk+-2.18.4/gdk-pixbuf/Makefile.in 2009-12-03 21:57:10.541765261 -0600
+@@ -801,7 +801,7 @@
LIBJASPER = @LIBJASPER@
LIBJPEG = @LIBJPEG@
LIBOBJS = @LIBOBJS@
diff --git a/source/l/gtk+2/gtk.xid.nowarningflood.diff b/source/l/gtk+2/gtk.xid.nowarningflood.diff
new file mode 100644
index 000000000..6b8c854d8
--- /dev/null
+++ b/source/l/gtk+2/gtk.xid.nowarningflood.diff
@@ -0,0 +1,12 @@
+--- ./gdk/x11/gdkxid.c.orig 2009-12-18 20:54:50.000000000 -0600
++++ ./gdk/x11/gdkxid.c 2010-02-08 14:42:50.000000000 -0600
+@@ -57,9 +57,6 @@
+ display_x11->xid_ht = g_hash_table_new ((GHashFunc) gdk_xid_hash,
+ (GEqualFunc) gdk_xid_equal);
+
+- if (g_hash_table_lookup (display_x11->xid_ht, xid))
+- g_warning ("XID collision, trouble ahead");
+-
+ g_hash_table_insert (display_x11->xid_ht, xid, data);
+ }
+
diff --git a/source/l/hal-info/hal-info.SlackBuild b/source/l/hal-info/hal-info.SlackBuild
index fa61d8bea..5f527f584 100755
--- a/source/l/hal-info/hal-info.SlackBuild
+++ b/source/l/hal-info/hal-info.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
-# Copyright 2007, 2008 Robby Workman, Northport, AL, USA
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007-2010 Robby Workman, Northport, AL, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,21 +22,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=hal-info
-VERSION=${VERSION:-20090716}
+PKGNAM=hal-info
+VERSION=${VERSION:-20091130}
ARCH=noarch
BUILD=${BUILD:-1}
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP || exit 1
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -44,6 +44,10 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Apply a couple of patches from git
+zcat $CWD/patches/quirk-LG_X110-keyboard.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/quirk-acer_aspire_hotkey.patch.gz | patch -p1 --verbose || exit 1
+
./configure \
--prefix=/usr \
--sysconfdir=/etc \
@@ -52,14 +56,14 @@ find . \
make || exit 1
make install DESTDIR=$PKG || exit 1
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING* HACKING INSTALL NEWS README* \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/hal-info/patches/quirk-LG_X110-keyboard.patch b/source/l/hal-info/patches/quirk-LG_X110-keyboard.patch
new file mode 100644
index 000000000..330b86999
--- /dev/null
+++ b/source/l/hal-info/patches/quirk-LG_X110-keyboard.patch
@@ -0,0 +1,46 @@
+commit 1a3c7c28d028c0952404d6d45b58138849c09ff1
+Author: Ozan Çağlayan <ozan@pardus.org.tr>
+Date: Wed Dec 23 10:13:26 2009 +0200
+
+ Add keymap quirks for LG X110
+
+ The patch adds keyboard quirks for LG X110 (An MSI Wind clone) which has
+ the following DMI informations:
+
+ system.hardware.primary_video.product = 10158 (0x27ae) (int)
+ system.hardware.primary_video.vendor = 32902 (0x8086) (int)
+ system.hardware.product = 'X110-L.A7M3F3' (string)
+ system.hardware.serial = '812MSVJ025279' (string)
+ system.hardware.uuid = '00000000-0000-0000-0000-002185569235' (string)
+ system.hardware.vendor = 'LG Electronics' (string)
+ system.hardware.version = 'Ver.001' (string)
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+diff --git a/fdi/information/10freedesktop/30-keymap-misc.fdi b/fdi/information/10freedesktop/30-keymap-misc.fdi
+index c4e527e..39d71ed 100644
+--- a/fdi/information/10freedesktop/30-keymap-misc.fdi
++++ b/fdi/information/10freedesktop/30-keymap-misc.fdi
+@@ -103,6 +103,22 @@
+ </match>
+ </match>
+
++ <match key="/org/freedesktop/Hal/devices/computer:system.hardware.vendor" prefix="LG">
++ <match key="/org/freedesktop/Hal/devices/computer:system.hardware.product" contains="X110">
++ <append key="input.keymap.data" type="strlist">e020:mute</append> <!-- Fn-F9 Sound On/Off -->
++ <append key="input.keymap.data" type="strlist">e02e:volumedown</append> <!-- Fn-Left Volume down -->
++ <append key="input.keymap.data" type="strlist">e02f:search</append> <!-- Fn-F3 Search -->
++ <append key="input.keymap.data" type="strlist">e030:volumeup</append> <!-- Fn-Right Volume up -->
++ <append key="input.keymap.data" type="strlist">e031:battery</append> <!-- Fn-F10 Info -->
++ <append key="input.keymap.data" type="strlist">e033:suspend</append> <!-- Fn-F12 Hibernate -->
++ <append key="input.keymap.data" type="strlist">e05f:sleep</append> <!-- Fn-F4 Sleep -->
++ <append key="input.keymap.data" type="strlist">e064:f22</append> <!-- Fn-F5 Touchpad disable -->
++ <append key="input.keymap.data" type="strlist">e076:wlan</append> <!-- Fn-F6 satellite dish1 -->
++ <append key="input.keymap.data" type="strlist">e077:brightnessdown</append> <!-- Fn-Down Brightness down -->
++ <append key="input.keymap.data" type="strlist">e078:brightnessup</append> <!-- Fn-Up Brightness up -->
++ </match>
++ </match>
++
+ <match key="/org/freedesktop/Hal/devices/computer:system.hardware.vendor" string="MEDIONNB">
+ <match key="/org/freedesktop/Hal/devices/computer:system.hardware.product" prefix="A555">
+ <append key="input.keymap.data" type="strlist">63:www</append> <!-- N button -->
diff --git a/source/l/hal-info/patches/quirk-acer_aspire_hotkey.patch b/source/l/hal-info/patches/quirk-acer_aspire_hotkey.patch
new file mode 100644
index 000000000..390fc7fe8
--- /dev/null
+++ b/source/l/hal-info/patches/quirk-acer_aspire_hotkey.patch
@@ -0,0 +1,25 @@
+commit 16e1c1921e089a4b53940b6b265fc72446d28254
+Author: Keng-Yu Lin <keng-yu.lin@canonical.com>
+Date: Wed Sep 16 15:08:05 2009 +0800
+
+ Add hotkey quirk for Acer Aspire One (AO531h/AO751h)
+
+ To prevent the brightness adjustment OSD from showing when disabling the bluetooth.
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+diff --git a/fdi/information/10freedesktop/30-keymap-acer.fdi b/fdi/information/10freedesktop/30-keymap-acer.fdi
+index a2cf8d8..4511bff 100644
+--- a/fdi/information/10freedesktop/30-keymap-acer.fdi
++++ b/fdi/information/10freedesktop/30-keymap-acer.fdi
+@@ -61,6 +61,10 @@
+ <append key="input.keymap.data" type="strlist">e012:prog2</append>
+ <append key="input.keymap.data" type="strlist">e059:bluetooth</append> <!-- Bluetooth (toggle) on-to-off -->
+ </match>
++ <match key="/org/freedesktop/Hal/devices/computer:system.hardware.product" contains_outof="AO751h;AO531h">
++ <remove key="input.keymap.data" type="strlist">e059:brightnessup</remove>
++ <append key="input.keymap.data" type="strlist">e059:bluetooth</append> <!-- Bluetooth (toggle) on-to-off -->
++ </match>
+ </match>
+ </match>
+ </device>
diff --git a/source/l/hal/doinst.sh b/source/l/hal/doinst.sh
index ec123d59c..a1c86cf41 100644
--- a/source/l/hal/doinst.sh
+++ b/source/l/hal/doinst.sh
@@ -1,5 +1,3 @@
-#!/bin/sh
-
config() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
diff --git a/source/l/hal/hal.SlackBuild b/source/l/hal/hal.SlackBuild
index a797b2523..967136868 100755
--- a/source/l/hal/hal.SlackBuild
+++ b/source/l/hal/hal.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007 Ole Andre Rodlie <olear@slackforge.net>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,34 +21,46 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=hal
-VERSION=0.5.11
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-6}
+PKGNAM=hal
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:--j7}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP || exit 1
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -56,43 +68,42 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Restore Xorg's Zap'ing behavior by default and make it
-# clearer to the user how to edit and/or get back old behavior
-zcat $CWD/patches/10-keymap.fdi-restore_zap.diff.gz | patch -p1 || exit 1
-# Hide some invalid partition types
-zcat $CWD/patches/hide_more_invalid_partitions.diff.gz | patch -p1 || exit 1
-# Allow uid/gid options with ntfs-3g filesystems
-zcat $CWD/patches/allow_uid_gid_ntfs.diff.gz | patch -p1 || exit 1
-# Check UDI's properly so that we don't cause dbus errors
-zcat $CWD/patches/check_udi_properly.diff.gz | patch -p1 || exit 1
-# Prevent crash on newer kernels during resume operations
-zcat $CWD/patches/fix_led_crash.diff.gz | patch -p1 || exit 1
-# Fix a crash when assembling md devices
-zcat $CWD/patches/fix_md_crash.diff.gz | patch -p1 || exit 1
-# Fix another segfault in mdraid handling
-zcat $CWD/patches/fix_segfault_in_mdraid.diff.gz | patch -p1 || exit 1
-# Strip trailing "/" characters from UDI strings to prevent dbus errors
-zcat $CWD/patches/fixup_udi_strings.diff.gz | patch -p1 || exit 1
-# Ignore duplicate events (e.g. run udevadm trigger on a running system)
-zcat $CWD/patches/ignore_dupe_add_events.diff.gz | patch -p1 || exit 1
-# Use direct hal connection to set the X keymap
-zcat $CWD/patches/set_X_keymap_properly.diff.gz | patch -p1 || exit 1
-# Instead of dying, regenerate the fdi cache if it's zero-byte
-zcat $CWD/patches/regen_fdi_cache_if_zero_size.diff.gz | patch -p1 || exit 1
-# We need to use "udevadm info" now instead of "udevinfo"
-zcat $CWD/patches/use_udevadm_not_udevinfo.patch.gz | patch -p1 || exit 1
+# Restore the DontZap defaults from lore
+zcat $CWD/patches/10-keymap.fdi-restore_zap.diff.gz | patch -p1 --verbose || exit 1
+
+# Oops, a freebsd-specific commit wasn't :-)
+zcat $CWD/patches/fix_libusb_detection.diff.gz | patch -p1 --verbose || exit 1
+
+# Fix a segfault -- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=562068
+zcat $CWD/patches/fix_segfault_in_LIBHAL_FREE_DBUS_ERROR.diff.gz | patch -p1 --verbose || exit 1
+# Increase PATH_HAL_MAX to 4096 to avoid crashes
+# https://bugs.freedesktop.org/show_bug.cgi?id=25888
+zcat $CWD/patches/increase_HAL_PATH_MAX_to_4096.diff.gz | patch -p1 --verbose || exit 1
+
+# Handle input.touchpad explicitly (needed due to kernel changes)
+zcat $CWD/patches/handle_input.touchpad_explicitly.diff.gz | patch -p1 --verbose || exit 1
+
+# Fix incorrect arguments to ioperm()
+zcat $CWD/patches/fix_ioperm_arguments.patch.gz | patch -p1 --verbose || exit 1
+
+# Fix segfaults from not calling dbus_error_init() early enough
+zcat $CWD/patches/fix_segfault-dbus_error_init.patch.gz | patch -p1 --verbose || exit 1
+
+autoconf
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
+ --libexecdir=/usr/libexec \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
+ --with-udev-prefix=/lib \
--disable-static \
--enable-docbook-docs \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
--with-pid-file=/var/run/hald/pid \
--enable-parted \
--disable-policy-kit \
@@ -104,6 +115,10 @@ CXXFLAGS="$SLKCFLAGS" \
|| exit 1
# These were merged into the 2.6.22 kernels
# --enable-acpi-ibm --enable-acpi-toshiba
+# Use these instead of the corresponding --disable lines for PolicyKit support
+# --enable-policy-kit \
+# --enable-console-kit \
+# --enable-acl-management \
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
@@ -116,30 +131,28 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
)
-# Let's put the udev rules in the right place
-mkdir -p $PKG/lib
-mv $PKG/etc/udev $PKG/lib
-
# Install init script for hal
mkdir -p $PKG/etc/rc.d
zcat $CWD/rc.hald.gz > $PKG/etc/rc.d/rc.hald.new
# Make HAL run by default:
chmod 0755 $PKG/etc/rc.d/rc.hald.new
+# /* remove everything between the C-style comments if using PK
# Make the HAL access controls suitable for us
# Big thanks to Richard Hughes for feedback on this :-)
# First, move the one installed by the system to the docs directory
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
mv $PKG/etc/dbus-1/system.d/hal.conf \
- $PKG/usr/doc/$PRGNAM-$VERSION/hal.conf.orig
+ $PKG/usr/doc/$PKGNAM-$VERSION/hal.conf.orig
+# end removal */
# Don't clobber an existing config file in case custom changes have been made
zcat $CWD/hal.conf.gz > $PKG/etc/dbus-1/system.d/hal.conf.new
# Install docs (directory was created above)
cp -a \
AUTHORS COPYING* HACKING INSTALL NEWS README* \
- $PKG/usr/doc/$PRGNAM-$VERSION
-( cd $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+( cd $PKG/usr/doc/$PKGNAM-$VERSION
ln -s ../../share/gtk-doc/html/libhal libhal
ln -s ../../share/gtk-doc/html/libhal-storage libhal-storage
)
@@ -149,5 +162,5 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/hal/patches/10-keymap.fdi-restore_zap.diff b/source/l/hal/patches/10-keymap.fdi-restore_zap.diff
index 5958aae2b..12e21ba79 100644
--- a/source/l/hal/patches/10-keymap.fdi-restore_zap.diff
+++ b/source/l/hal/patches/10-keymap.fdi-restore_zap.diff
@@ -1,3 +1,8 @@
+We're going to make it clearer to users that they should NOT edit
+ this file (as installed to /usr/share/hal/fdi/... and also let
+ them know where to copy it and how to edit that copy for an
+ alternate keymap and such... --rworkman @ 20091211
+
diff -Nur hal-0.5.11.orig/fdi/policy/10osvendor/10-keymap.fdi hal-0.5.11/fdi/policy/10osvendor/10-keymap.fdi
--- hal-0.5.11.orig/fdi/policy/10osvendor/10-keymap.fdi 2008-05-07 18:21:16.000000000 -0500
+++ hal-0.5.11/fdi/policy/10osvendor/10-keymap.fdi 2009-07-21 00:06:11.779152226 -0500
diff --git a/source/l/hal/patches/allow_uid_gid_ntfs.diff b/source/l/hal/patches/allow_uid_gid_ntfs.diff
deleted file mode 100644
index 0997fff8a..000000000
--- a/source/l/hal/patches/allow_uid_gid_ntfs.diff
+++ /dev/null
@@ -1,20 +0,0 @@
-Author: Michael Biebl <biebl@debian.org>
-Date: Mon Nov 10 13:33:48 2008 +0100
-
- allow uid/gid mount option for ntfs
-
- Allow uid/gid mount option for ntfs, as reported in
- http://bugs.debian.org/427109.
-
-diff -Nur hal-0.5.11.orig/tools/hal-storage-mount.c hal-0.5.11/tools/hal-storage-mount.c
---- hal-0.5.11.orig/tools/hal-storage-mount.c 2008-05-07 18:24:23.000000000 -0500
-+++ hal-0.5.11/tools/hal-storage-mount.c 2009-07-16 16:13:12.544551085 -0500
-@@ -720,6 +720,8 @@
- * (since these doesn't contain uid/gid bits)
- */
- if (strcmp (libhal_volume_get_fstype (volume), "vfat") != 0 &&
-+ strcmp (libhal_volume_get_fstype (volume), "ntfs") != 0 &&
-+ strcmp (libhal_volume_get_fstype (volume), "ntfs-3g") != 0 &&
- strcmp (libhal_volume_get_fstype (volume), "iso9660") != 0 &&
- strcmp (libhal_volume_get_fstype (volume), "hfs") != 0 &&
- strcmp (libhal_volume_get_fstype (volume), "udf") != 0) {
diff --git a/source/l/hal/patches/check_udi_properly.diff b/source/l/hal/patches/check_udi_properly.diff
deleted file mode 100644
index cd474abc5..000000000
--- a/source/l/hal/patches/check_udi_properly.diff
+++ /dev/null
@@ -1,41 +0,0 @@
-Author: Richard Hughes <richard@hughsie.com>
-Date: Thu Jan 29 08:33:00 2009 +0000
-
- check udi in hal-get-property
-
- We are not checking if a UDI is valid in hal-get-property
- which means getting a horrible DBUS error if the entry
- is not a valid DBUS path.
-
-diff --git a/tools/hal_get_property.c b/tools/hal_get_property.c
-index ecaa6ce..d31261a 100644
---- a/tools/hal_get_property.c
-+++ b/tools/hal_get_property.c
-@@ -84,6 +84,7 @@ main (int argc, char *argv[])
- dbus_bool_t is_hex = FALSE;
- dbus_bool_t is_verbose = FALSE;
- dbus_bool_t is_version = FALSE;
-+ dbus_bool_t udi_exists;
- char *str;
- DBusError error;
-
-@@ -168,6 +169,19 @@ main (int argc, char *argv[])
- return 1;
- }
-
-+ /* check UDI exists */
-+ udi_exists = libhal_device_exists (hal_ctx, udi, &error);
-+ if (!udi_exists) {
-+ fprintf (stderr, "error: UDI %s does not exist\n", udi);
-+ return 1;
-+ }
-+ if (dbus_error_is_set(&error)) {
-+ fprintf (stderr, "error: libhal_device_exists: %s: %s\n", error.name, error.message);
-+ LIBHAL_FREE_DBUS_ERROR (&error);
-+ return 1;
-+ }
-+
-+ /* get type */
- type = libhal_device_get_property_type (hal_ctx, udi, key, &error);
- if (type == LIBHAL_PROPERTY_TYPE_INVALID) {
- fprintf (stderr, "error: libhal_device_get_property_type: %s: %s\n", error.name, error.message);
diff --git a/source/l/hal/patches/fix_ioperm_arguments.patch b/source/l/hal/patches/fix_ioperm_arguments.patch
new file mode 100644
index 000000000..833e07566
--- /dev/null
+++ b/source/l/hal/patches/fix_ioperm_arguments.patch
@@ -0,0 +1,40 @@
+commit 597c1ffffd61a15a334ce42f2a569c59f0270bcb
+Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Date: Thu Feb 25 02:25:18 2010 -0800
+
+ Fix incorrect arguments to ioperm() call
+
+ The second argument of ioperm() is not the last port to be accessed
+ but rather length of the port range [port, port + len).
+
+ Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+diff --git a/hald/linux/addons/addon-imac-backlight.c b/hald/linux/addons/addon-imac-backlight.c
+index e869192..54e4ea3 100644
+--- a/hald/linux/addons/addon-imac-backlight.c
++++ b/hald/linux/addons/addon-imac-backlight.c
+@@ -158,7 +158,8 @@ main (int argc, char **argv)
+ goto out;
+ }
+
+- if (ioperm(0xB2, 0xB3, 1) < 0)
++ /* Allow access to ports 0xB2 and 0xB3 */
++ if (ioperm(0xB2, 2, 1) < 0)
+ {
+ HAL_ERROR (("ioperm failed (you should be root)."));
+ exit(1);
+diff --git a/hald/linux/addons/addon-macbookpro-backlight.c b/hald/linux/addons/addon-macbookpro-backlight.c
+index 2a6fef6..c1bbbac 100644
+--- a/hald/linux/addons/addon-macbookpro-backlight.c
++++ b/hald/linux/addons/addon-macbookpro-backlight.c
+@@ -507,7 +507,8 @@ main (int argc, char *argv[])
+ state = INREG(0x7ae4);
+ OUTREG(0x7ae4, state);
+
+- if (ioperm (0x300, 0x304, 1) < 0) {
++ /* Allow access to porta 0x300 through 0x304 */
++ if (ioperm (0x300, 5, 1) < 0) {
+ HAL_ERROR (("ioperm failed (you should be root)."));
+ exit(1);
+ }
diff --git a/source/l/hal/patches/fix_led_crash.diff b/source/l/hal/patches/fix_led_crash.diff
deleted file mode 100644
index 3b50bbca4..000000000
--- a/source/l/hal/patches/fix_led_crash.diff
+++ /dev/null
@@ -1,26 +0,0 @@
-commit aec7c567419a1b8c33be1d08f962eea31a53e317
-Author: Andrey Borzenkov <arvidjaar@mail.ru>
-Date: Tue Jul 14 21:34:07 2009 +0200
-
- work aroud crash caused by LED device handling
-
- During suspend led device is removed; during resume it is recreated.
- Apparently removing led device cause hald-addon- leds to exit
- (thus disconnecting D-Bus connection); and sometimes next "add" event
- comes too early, before hald had chance to notice missing addon.
-
- Adds extra check to hald_singleton_device_added() to ensure we do not
- abort on disconnected D-Bus connection.
-
-diff -Nur hal-0.5.11.orig/hald/hald_dbus.c hal-0.5.11/hald/hald_dbus.c
---- hal-0.5.11.orig/hald/hald_dbus.c 2008-05-07 18:23:29.000000000 -0500
-+++ hal-0.5.11/hald/hald_dbus.c 2009-07-16 16:19:04.629624258 -0500
-@@ -3432,7 +3432,7 @@
- if (dbus_connection_send_with_reply (connection,
- message,
- &pending_call,
-- /*-1*/ 8000)) {
-+ /*-1*/ 8000) && pending_call) {
- /*HAL_INFO (("connection=%x message=%x", connection, message));*/
- dbus_pending_call_set_notify (pending_call,
- reply_from_singleton_device_changed,
diff --git a/source/l/hal/patches/fix_libusb_detection.diff b/source/l/hal/patches/fix_libusb_detection.diff
new file mode 100644
index 000000000..8a4637d48
--- /dev/null
+++ b/source/l/hal/patches/fix_libusb_detection.diff
@@ -0,0 +1,65 @@
+commit fce91df8ba7f305c624baf1f06961c040b088ecc
+Author: Joe Marcus Clarke <marcus@FreeBSD.org>
+Date: Mon Dec 7 19:05:27 2009 -0500
+
+ Fix libusb detection on Linux
+
+ Adjust the FreeBSD libusb20 code so that it does not interfere with the
+ Linux libusb detection.
+
+ Reported by: Robby Workman <rw@rlworkman.net>
+
+diff --git a/configure.in b/configure.in
+index a8fda51..8363595 100644
+--- a/configure.in
++++ b/configure.in
+@@ -479,9 +479,6 @@ if test "x$with_libpci" != xno ; then
+ fi
+ AM_CONDITIONAL([HAVE_LIBPCI], [test "x$USE_LIBPCI" = "xyes"])
+
+-USE_LIBUSB20=no
+-USE_LIBUSB=no
+-LIBUSB20_LIBS=""
+ AC_ARG_WITH([backend],
+ AS_HELP_STRING([--with-backend=<name>],
+ [backend to use (linux/solaris/freebsd/dummy)]),
+@@ -510,21 +507,25 @@ AM_CONDITIONAL(HALD_COMPILE_FREEBSD, [test x$HALD_BACKEND = xfreebsd], [Compilin
+ AM_CONDITIONAL(HALD_COMPILE_SOLARIS, [test x$HALD_BACKEND = xsolaris], [Compiling for Solaris])
+ AC_SUBST(HALD_BACKEND)
+ if test "x$HALD_BACKEND" = "xfreebsd"; then
+- AC_CHECK_LIB([usb20], [libusb20_dev_get_info], [USE_LIBUSB20=yes], [USE_LIBUSB20=no])
+-fi
+-if test "x$USE_LIBUSB20" = "xno"; then
+- AC_CHECK_LIB([usb], [libusb20_dev_get_info], [USE_LIBUSB=yes], [USE_LIBUSB=no])
+-fi
+-AM_CONDITIONAL([HAVE_LIBUSB20],[test "x$USE_LIBUSB20" = "xyes"])
+-AM_CONDITIONAL([HAVE_LIBUSB20],[test "x$USE_LIBUSB" = "xyes"])
+-if test "x$USE_LIBUSB20" = "xyes"; then
+- AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libusb20])
+- LIBUSB20_LIBS="-lusb20"
+-elif test "x$USE_LIBUSB" = "xyes"; then
+- AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libsub20])
+- LIBUSB20_LIBS="-lusb"
++ USE_BSDLIBUSB20=no
++ USE_BSDLIBUSB=no
++ LIBUSB20_LIBS=""
++ AC_CHECK_LIB([usb20], [libusb20_dev_get_info], [USE_BSDLIBUSB20=yes], [USE_BSDLIBUSB20=no])
++ if test "x$USE_BSDLIBUSB20" = "xno"; then
++ AC_CHECK_LIB([usb], [libusb20_dev_get_info], [USE_BSDLIBUSB=yes], [USE_BSDLIBUSB=no])
++ fi
++ AM_CONDITIONAL([HAVE_LIBUSB20],[test "x$USE_BSDLIBUSB20" = "xyes" -o "x$USE_BSDLIBUSB" = "xyes"])
++ if test "x$USE_BSDLIBUSB20" = "xyes"; then
++ AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libusb20])
++ LIBUSB20_LIBS="-lusb20"
++ elif test "x$USE_BSDLIBUSB" = "xyes"; then
++ AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libsub20])
++ LIBUSB20_LIBS="-lusb"
++ fi
++ AC_SUBST(LIBUSB20_LIBS)
++else
++ AM_CONDITIONAL([HAVE_LIBUSB20], [false])
+ fi
+-AC_SUBST(LIBUSB20_LIBS)
+
+ dnl DBUS API is subject to changes
+ AC_DEFINE_UNQUOTED(DBUS_API_SUBJECT_TO_CHANGE, [], [DBUS API is subject to change])
diff --git a/source/l/hal/patches/fix_md_crash.diff b/source/l/hal/patches/fix_md_crash.diff
deleted file mode 100644
index 8a404c77f..000000000
--- a/source/l/hal/patches/fix_md_crash.diff
+++ /dev/null
@@ -1,45 +0,0 @@
-Backported from b35bf1fbfc000749010a27f3f35a95ddf6bb0b07 Mon Sep 17 00:00:00 2001
-From: Chris Coulson <chrisccoulson@googlemail.com>
-Subject: fix crash when assembling certain MD devices
-
-Don't assume that the parent of a volume has storage capability; e. g.
-if we are an MD partition then this is the case as we were re-parented
-to the root computer device object earlier.
-
-FD#21603
-
---- a/hald/linux/blockdev.c 2008-05-08 01:23:41.000000000 +0200
-+++ b/hald/linux/blockdev.c 2009-06-04 12:48:31.000000000 +0200
-@@ -1392,10 +1392,15 @@ hotplug_event_begin_add_blockdev (const
- hal_device_property_set_bool (d, "volume.is_mounted", FALSE);
- hal_device_property_set_bool (d, "volume.is_mounted_read_only", FALSE);
- hal_device_property_set_bool (d, "volume.linux.is_device_mapper", is_device_mapper);
-- hal_device_property_set_bool (
-- d, "volume.is_disc",
-- strcmp (hal_device_property_get_string (parent, "storage.drive_type"), "cdrom") == 0);
--
-+ /* Don't assume that the parent has storage capability, eg
-+ * if we are an MD partition then this is the case as we were
-+ * re-parented to the root computer device object earlier.
-+ */
-+ if (hal_device_has_property(parent, "storage.drive_type")) {
-+ hal_device_property_set_bool (d, "volume.is_disc", strcmp (hal_device_property_get_string (parent, "storage.drive_type"), "cdrom") == 0);
-+ } else {
-+ hal_device_property_set_bool (d, "volume.is_disc", FALSE);
-+ }
-
- is_physical_partition = TRUE;
- if (is_fakevolume || is_device_mapper)
-@@ -1404,8 +1409,10 @@ hotplug_event_begin_add_blockdev (const
- hal_device_property_set_bool (d, "volume.is_partition", is_physical_partition);
-
- hal_device_property_set_string (d, "info.category", "volume");
-- if (strcmp(hal_device_property_get_string (parent, "storage.drive_type"), "cdrom") == 0) {
-- hal_device_add_capability (d, "volume.disc");
-+ if (hal_device_has_property(parent, "storage.drive_type")) {
-+ if (strcmp(hal_device_property_get_string (parent, "storage.drive_type"), "cdrom") == 0) {
-+ hal_device_add_capability (d, "volume.disc");
-+ }
- }
- hal_device_add_capability (d, "volume");
- hal_device_add_capability (d, "block");
diff --git a/source/l/hal/patches/fix_segfault-dbus_error_init.patch b/source/l/hal/patches/fix_segfault-dbus_error_init.patch
new file mode 100644
index 000000000..f01eefca0
--- /dev/null
+++ b/source/l/hal/patches/fix_segfault-dbus_error_init.patch
@@ -0,0 +1,179 @@
+commit baa61a879985d63f549854518ef14efd40e62e8c
+Author: Peter Jones <pjones@redhat.com>
+Date: Wed Feb 24 11:19:28 2010 -0500
+
+ Make sure dbus_error_init() is called before LIBHAL_FREE_DBUS_ERROR()
+
+ If dbus_error_init() is not called before LIBHAL_FREE_DBUS_ERROR() is
+ called on that error, then it is uninitialized and may segfault. This
+ means that dbus_error_init() must be called before any "goto out" if
+ "out:" calls LIBHAL_FREE_DBUS_ERROR().
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+diff --git a/hald/linux/probing/probe-hiddev.c b/hald/linux/probing/probe-hiddev.c
+index 45d2084..bffc040 100644
+--- a/hald/linux/probing/probe-hiddev.c
++++ b/hald/linux/probing/probe-hiddev.c
+@@ -57,11 +57,12 @@ main (int argc, char *argv[])
+ /* assume failure */
+ ret = 1;
+
++ dbus_error_init (&error);
++
+ udi = getenv ("UDI");
+ if (udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-ieee1394-unit.c b/hald/linux/probing/probe-ieee1394-unit.c
+index 70b0f86..aaa92e2 100644
+--- a/hald/linux/probing/probe-ieee1394-unit.c
++++ b/hald/linux/probing/probe-ieee1394-unit.c
+@@ -388,6 +388,8 @@ int main (int argc, char *argv[])
+
+ setup_logger ();
+
++ dbus_error_init (&error);
++
+ udi = getenv ("UDI");
+ if (udi == NULL)
+ goto out;
+@@ -396,7 +398,6 @@ int main (int argc, char *argv[])
+ if (ieee1394_udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-net-bluetooth.c b/hald/linux/probing/probe-net-bluetooth.c
+index 0b1b912..e911eea 100644
+--- a/hald/linux/probing/probe-net-bluetooth.c
++++ b/hald/linux/probing/probe-net-bluetooth.c
+@@ -141,6 +141,8 @@ main (int argc, char *argv[])
+ DBusMessage *reply = NULL;
+ DBusError error;
+
++ dbus_error_init (&error);
++
+ udi = getenv ("UDI");
+ if (udi == NULL)
+ goto out;
+@@ -151,8 +153,6 @@ main (int argc, char *argv[])
+
+ HAL_INFO (("Investigating '%s'", iface));
+
+- dbus_error_init (&error);
+-
+ if ((conn = dbus_bus_get (DBUS_BUS_SYSTEM, &error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-printer.c b/hald/linux/probing/probe-printer.c
+index 91ed7bc..7c6d1c6 100644
+--- a/hald/linux/probing/probe-printer.c
++++ b/hald/linux/probing/probe-printer.c
+@@ -66,6 +66,8 @@ main (int argc, char *argv[])
+ ret = 1;
+
+ setup_logger ();
++
++ dbus_error_init (&error);
+
+ udi = getenv ("UDI");
+ if (udi == NULL) {
+@@ -73,7 +75,6 @@ main (int argc, char *argv[])
+ goto out;
+ }
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL) {
+ HAL_ERROR (("ctx init failed"));
+ goto out;
+diff --git a/hald/linux/probing/probe-smbios.c b/hald/linux/probing/probe-smbios.c
+index 0bc9689..15c0d4f 100644
+--- a/hald/linux/probing/probe-smbios.c
++++ b/hald/linux/probing/probe-smbios.c
+@@ -129,6 +129,8 @@ main (int argc, char *argv[])
+ ret = 1;
+
+ setup_logger ();
++
++ dbus_error_init (&error);
+
+ udi = getenv ("UDI");
+ if (udi == NULL) {
+@@ -136,7 +138,6 @@ main (int argc, char *argv[])
+ goto out;
+ }
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL) {
+ HAL_ERROR (("ctx init failed"));
+ goto out;
+diff --git a/hald/linux/probing/probe-storage.c b/hald/linux/probing/probe-storage.c
+index 824a82e..dd524ca 100644
+--- a/hald/linux/probing/probe-storage.c
++++ b/hald/linux/probing/probe-storage.c
+@@ -109,6 +109,8 @@ main (int argc, char *argv[])
+ /* assume failure */
+ ret = 1;
+
++ dbus_error_init (&error);
++
+ if ((udi = getenv ("UDI")) == NULL)
+ goto out;
+ if ((device_file = getenv ("HAL_PROP_BLOCK_DEVICE")) == NULL)
+@@ -127,7 +129,6 @@ main (int argc, char *argv[])
+ else
+ only_check_for_fs = FALSE;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-video4linux.c b/hald/linux/probing/probe-video4linux.c
+index cf913c0..7bc13e8 100644
+--- a/hald/linux/probing/probe-video4linux.c
++++ b/hald/linux/probing/probe-video4linux.c
+@@ -58,6 +58,8 @@ main (int argc, char *argv[])
+
+ setup_logger ();
+
++ dbus_error_init (&error);
++
+ device_file = getenv ("HAL_PROP_VIDEO4LINUX_DEVICE");
+ if (device_file == NULL)
+ goto out;
+@@ -66,7 +68,6 @@ main (int argc, char *argv[])
+ if (udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ ctx = libhal_ctx_init_direct (&error);
+ if (ctx == NULL)
+ goto out;
+diff --git a/hald/linux/probing/probe-volume.c b/hald/linux/probing/probe-volume.c
+index 0de1b91..7268fff 100644
+--- a/hald/linux/probing/probe-volume.c
++++ b/hald/linux/probing/probe-volume.c
+@@ -318,6 +318,8 @@ main (int argc, char *argv[])
+ /* assume failure */
+ ret = 1;
+
++ dbus_error_init (&error);
++
+ if ((udi = getenv ("UDI")) == NULL)
+ goto out;
+ if ((device_file = getenv ("HAL_PROP_BLOCK_DEVICE")) == NULL)
+@@ -346,7 +348,6 @@ main (int argc, char *argv[])
+
+ fsusage = getenv ("HAL_PROP_VOLUME_FSUSAGE");
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
diff --git a/source/l/hal/patches/fix_segfault_in_LIBHAL_FREE_DBUS_ERROR.diff b/source/l/hal/patches/fix_segfault_in_LIBHAL_FREE_DBUS_ERROR.diff
new file mode 100644
index 000000000..b5bfdec65
--- /dev/null
+++ b/source/l/hal/patches/fix_segfault_in_LIBHAL_FREE_DBUS_ERROR.diff
@@ -0,0 +1,51 @@
+commit dcb2829b8eff61463b0869614ddb07b1c86cecaa
+Author: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+Date: Wed Dec 30 12:42:52 2009 +0100
+
+ linux/probe-input: don't use error prio init
+
+ it may happen in the out: case that LIBHAL_FREE_DBUS_ERROR (&error) is
+ called before the error structure is initialized via
+ dbus_error_init (&error). This could lead to a segfault during startup
+ as seen in dmesg:
+
+ |Intel AES-NI instructions are not detected.
+ |padlock: VIA PadLock not detected.
+ |hald-probe-inpu[1793]: segfault at 2 ip 00007f656fb68969 sp 00007fff39eeb950 error 4 in libc-2.10.2.so[7f656faf3000+14a000]
+ |hald-probe-inpu[1796]: segfault at 2 ip 00007fa2c3293969 sp 00007fffd92a5dd0 error 4 in libc-2.10.2.so[7fa2c321e000+14a000]
+ |hald-probe-inpu[1797]: segfault at 2 ip 00007f1d08ba2969 sp 00007fff34244e30 error 4 in libc-2.10.2.so[7f1d08b2d000+14a000]
+ |hald-probe-inpu[1799]: segfault at 2 ip 00007f35c0e3d969 sp 00007fffe5ec7ee0 error 4 in libc-2.10.2.so[7f35c0dc8000+14a000]
+ |hald-probe-inpu[1800]: segfault at 2 ip 00007f931c556969 sp 00007fffe1825b60 error 4 in libc-2.10.2.so[7f931c4e1000+14a000]
+ |hald-probe-inpu[1801]: segfault at 2 ip 00007f5156d9a969 sp 00007fff4e620af0 error 4 in libc-2.10.2.so[7f5156d25000+14a000]
+ |RPC: Registered udp transport module.
+ |RPC: Registered tcp transport module.
+
+ What I run into seems to be reported as Debian #562068 [0]. This patch
+ makes the segfault go away on my machine.
+
+ [0] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=562068
+
+ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+
+diff --git a/hald/linux/probing/probe-input.c b/hald/linux/probing/probe-input.c
+index 94e9929..cad47d3 100644
+--- a/hald/linux/probing/probe-input.c
++++ b/hald/linux/probing/probe-input.c
+@@ -70,6 +70,7 @@ main (int argc, char *argv[])
+ fd = -1;
+
+ setup_logger ();
++ dbus_error_init (&error);
+
+ button_type = getenv ("HAL_PROP_BUTTON_TYPE");
+ if (button_type == NULL)
+@@ -96,7 +97,6 @@ main (int argc, char *argv[])
+ if (udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
diff --git a/source/l/hal/patches/fix_segfault_in_mdraid.diff b/source/l/hal/patches/fix_segfault_in_mdraid.diff
deleted file mode 100644
index 88e5eaf63..000000000
--- a/source/l/hal/patches/fix_segfault_in_mdraid.diff
+++ /dev/null
@@ -1,36 +0,0 @@
-Author: Martin Poole <mpoole@redhat.com>
-Date: Wed Jul 29 14:20:45 2009 +0100
-
- Fix a segfault in the mdraid code -- see rh#507782 for more info
-
- Signed-off-by: Richard Hughes <richard@hughsie.com>
-
-diff -Nur hal-0.5.11.orig/hald/linux/blockdev.c hal-0.5.11/hald/linux/blockdev.c
---- hal-0.5.11.orig/hald/linux/blockdev.c 2008-05-07 18:23:41.000000000 -0500
-+++ hal-0.5.11/hald/linux/blockdev.c 2009-07-30 16:22:40.624837902 -0500
-@@ -851,7 +851,7 @@
- }
-
-
--void
-+
- hotplug_event_begin_add_blockdev (const gchar *sysfs_path, const gchar *device_file, gboolean is_partition,
- HalDevice *parent, void *end_token)
- {
-@@ -865,6 +865,7 @@
- gboolean is_device_mapper;
- gboolean is_md_device;
- int md_number;
-+ char tc;
-
- is_device_mapper = FALSE;
- is_fakevolume = FALSE;
-@@ -882,7 +883,7 @@
- HAL_INFO (("Handling %s as fakevolume - sysfs_path_real=%s", device_file, sysfs_path_real));
- is_fakevolume = TRUE;
- sysfs_path_real = hal_util_get_parent_path (sysfs_path);
-- } else if (sscanf (hal_util_get_last_element (sysfs_path), "md%d", &md_number) == 1) {
-+ } else if (sscanf (hal_util_get_last_element (sysfs_path), "md%d%c", &md_number, &tc) == 1) {
- HAL_INFO (("Handling %s as MD device", device_file));
- is_md_device = TRUE;
- sysfs_path_real = g_strdup (sysfs_path);
diff --git a/source/l/hal/patches/fixup_udi_strings.diff b/source/l/hal/patches/fixup_udi_strings.diff
deleted file mode 100644
index 03549ec1d..000000000
--- a/source/l/hal/patches/fixup_udi_strings.diff
+++ /dev/null
@@ -1,69 +0,0 @@
-Author: Danny Kukawka <danny.kukawka@web.de>
-Date: Mon Oct 13 12:55:48 2008 +0200
-
- fix udi: replace '/' in the last part of the udi
-
- Fixed udi handling. DBus forbids a '/' after the base path
- (in case of HAL: '/org/freedesktop/Hal/devices/) of a DBus
- path. Replace all not allowed chars in the last part of the
- UDI (everything but _a-zA-Z0-9) with a '_'.
-
- This fixes also fd.o#16040.
-
-diff --git a/hald/hald.c b/hald/hald.c
-index a28d22e..051b33b 100644
---- a/hald/hald.c
-+++ b/hald/hald.c
-@@ -265,6 +265,8 @@ hald_compute_udi (gchar *dst, gsize dstsize, const gchar *format, ...)
- hal_util_compute_udi_valist (hald_get_gdl (), dst, dstsize, format, args);
- va_end (args);
-
-+ hal_util_validate_udi (dst, dstsize);
-+
- if (hal_device_store_find (hald_get_gdl (), dst) == NULL &&
- hal_device_store_find (hald_get_tdl (), dst) == NULL)
- goto out;
-diff --git a/hald/util.c b/hald/util.c
-index 901e64f..81060e4 100644
---- a/hald/util.c
-+++ b/hald/util.c
-@@ -422,6 +422,26 @@ hal_util_compute_udi (HalDeviceStore *store, gchar *dst, gsize dstsize, const gc
- va_end (args);
- }
-
-+void
-+hal_util_validate_udi (gchar *udi, gsize size) {
-+
-+ char end[size];
-+
-+ if (sscanf (udi, "/org/freedesktop/Hal/devices/%s", end) == 1) {
-+ if (strstr(end, "/") != NULL) {
-+ HAL_DEBUG (("UDI end contains invalid char '/': '%s'", udi));
-+
-+ g_strcanon (end, "_"
-+ "abcdefghijklmnopqrstuvwxyz"
-+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-+ "1234567890", '_');
-+ g_snprintf (udi, size, "/org/freedesktop/Hal/devices/%s", end);
-+
-+ HAL_DEBUG (("Fixed UDI, replaced '/', new UDI: %s", udi));
-+ }
-+ }
-+}
-+
-
- gboolean
- hal_util_path_ascend (gchar *path)
-diff --git a/hald/util.h b/hald/util.h
-index 510c36c..5377e35 100644
---- a/hald/util.h
-+++ b/hald/util.h
-@@ -70,6 +70,8 @@ void hal_util_compute_udi_valist (HalDeviceStore *store, gchar *dst, gsize dstsi
-
- void hal_util_compute_udi (HalDeviceStore *store, gchar *dst, gsize dstsize, const gchar *format, ...);
-
-+void hal_util_validate_udi (gchar *udi, gsize size);
-+
- gboolean hal_util_path_ascend (gchar *path);
-
- void hal_util_grep_discard_existing_data (void);
diff --git a/source/l/hal/patches/handle_input.touchpad_explicitly.diff b/source/l/hal/patches/handle_input.touchpad_explicitly.diff
new file mode 100644
index 000000000..b1231d6de
--- /dev/null
+++ b/source/l/hal/patches/handle_input.touchpad_explicitly.diff
@@ -0,0 +1,75 @@
+commit 6dccf8e3ad181e8f56b1d2a994ec50a1953a1c2d
+Author: Michael Witten <mfwitten@gmail.com>
+Date: Tue Jan 5 18:53:17 2010 -0600
+
+ Policy: handle `input.touchpad' explicitly
+
+ This commit essentially duplicates the policy for:
+
+ <match key="info.capabilities" contains="input.mouse">
+
+ and then changes `input.mouse' to `input.touchpad'. This
+ is necessary because in Linus Torvalds's Linux repo:
+
+ git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
+
+ the following commit:
+
+ commit 7105d2ea73e1391b681d0e1212c42f561c64d429
+ Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+ Date: Fri Dec 11 23:54:54 2009 -0800
+
+ Input: ALPS - do not set REL_X/REL_Y capabilities on the touchpad
+
+ Relative events are only reported via secondary device therefore device
+ associated with the touchpad should not advertise these capabilities.
+
+ Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+
+ so that HAL no longer adds:
+
+ input.mouse
+
+ to an ALPS touchpad's:
+
+ info.capabilities
+
+ so that HAL no longer marks the ALPS touchpad with:
+
+ input.x11_driver = 'evdev'
+
+ because the policy file:
+
+ fdi/policy/10osvendor/10-x11-input.fdi
+
+ doesn't define the policy for:
+
+ <match key="info.capabilities" contains="input.touchpad">
+
+ which was previous unnecessary because everything used to
+ be caught by the policy for:
+
+ <match key="info.capabilities" contains="input.mouse">
+
+ Signed-off-by: Michael Witten <mfwitten@gmail.com>
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+diff --git a/fdi/policy/10osvendor/10-x11-input.fdi b/fdi/policy/10osvendor/10-x11-input.fdi
+index cff8fc5..8bbe263 100644
+--- a/fdi/policy/10osvendor/10-x11-input.fdi
++++ b/fdi/policy/10osvendor/10-x11-input.fdi
+@@ -16,6 +16,14 @@
+ </match>
+ </match>
+
++ <match key="info.capabilities" contains="input.touchpad">
++ <merge key="input.x11_driver" type="string">mouse</merge>
++ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
++ string="Linux">
++ <merge key="input.x11_driver" type="string">evdev</merge>
++ </match>
++ </match>
++
+ <match key="info.capabilities" contains="input.tablet">
+ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
+ string="Linux">
diff --git a/source/l/hal/patches/hide_more_invalid_partitions.diff b/source/l/hal/patches/hide_more_invalid_partitions.diff
deleted file mode 100644
index a4437d29a..000000000
--- a/source/l/hal/patches/hide_more_invalid_partitions.diff
+++ /dev/null
@@ -1,66 +0,0 @@
-Author: Danny Kukawka <danny.kukawka@web.de>
-Date: Sat Jul 18 11:18:53 2009 +0200
-
- hide more MBR, bootstrap and other partitions from desktop
-
- Hide more MBR, bootstrap and other partitions from desktop.
- Info taken from DeviceKit-disk/udev.
-
-Author: Frederic Crozat <fcrozat@mandriva.com>
-Date: Fri Jul 24 15:11:41 2009 +0200
-
- hide Windows recovery partitions on pre-installed Futjisu laptops
-
- Hide Windows recovery partitions on pre-installed Futjisu laptops.
-
-diff -Nur hal-0.5.11.orig/fdi/policy/10osvendor/20-storage-methods.fdi hal-0.5.11/fdi/policy/10osvendor/20-storage-methods.fdi
---- hal-0.5.11.orig/fdi/policy/10osvendor/20-storage-methods.fdi 2008-05-07 18:21:16.000000000 -0500
-+++ hal-0.5.11/fdi/policy/10osvendor/20-storage-methods.fdi 2009-07-30 16:16:49.822172103 -0500
-@@ -130,6 +130,10 @@
- <match key="volume.label" string="DellRestore">
- <merge key="volume.ignore" type="bool">true</merge>
- </match>
-+ <!-- Fujitsu ships laptops with a recovery partitions -->
-+ <match key="volume.label" string="WinRE">
-+ <merge key="volume.ignore" type="bool">true</merge>
-+ </match>
- </match>
-
- <!-- ASUS ships some desktop with a recovery partition -->
-@@ -146,6 +150,11 @@
- <merge key="volume.ignore" type="bool">true</merge>
- </match>
- </match>
-+ <match key="volume.partition.scheme" string="apm">
-+ <match key="volume.partition.type" string_outof="Apple_Bootstrap">
-+ <merge key="volume.ignore" type="bool">true</merge>
-+ </match>
-+ </match>
-
- <!-- EFI firmware partitions -->
- <match key="volume.fstype" string="vfat">
-@@ -154,6 +163,24 @@
- </match>
- </match>
-
-+ <!-- ignore the following MBR partition types (EFI, hidden, etc.)
-+ see http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
-+ -->
-+ <match key="volume.partition.scheme" string="mbr">
-+ <match key="volume.partition.type" string_outof="0x00;0x11;0x14;0x16;0x17;0x1b;0x1c;0x1e;0x27;0x3d;0x84;0x8d;0x90;0x91;0x92;0x93;0x97;0x98;0x9a;0x9b;0xbb;0xc2;0xc3;0xdd;0xef">
-+ <merge key="volume.ignore" type="bool">true</merge>
-+ </match>
-+ </match>
-+
-+ <!-- special GUID-identified partition types
-+ see http://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs
-+ -->
-+ <match key="volume.partition.scheme" string="gpt">
-+ <match key="volume.partition.type" string_outof="C12A7328-F81F-11D2-BA4B-00A0C93EC93B;21686148-6449-6E6F-744E-656564454649">
-+ <merge key="volume.ignore" type="bool">true</merge>
-+ </match>
-+ </match>
-+
- <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
-
- <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Mount</append>
diff --git a/source/l/hal/patches/ignore_dupe_add_events.diff b/source/l/hal/patches/ignore_dupe_add_events.diff
deleted file mode 100644
index 0056d8f96..000000000
--- a/source/l/hal/patches/ignore_dupe_add_events.diff
+++ /dev/null
@@ -1,40 +0,0 @@
-Author: Danny Kukawka <danny.kukawka@web.de>
-Date: Wed Mar 18 17:30:53 2009 +0100
-
- ignore ADD events if there is already a device with same sysfs_path
-
- Ignore ADD events if there is already a device with the same
- syfs_path available in the GDL or TDL. This should prevent
- problems getting duplicated devices from calling 'udevadm trigger'
- (fd.o#18861) or from some other rare cases (see:
- http://lists.freedesktop.org/archives/hal/2009-February/012954.html).
-
- TODO: Check if it make sense to call a refresh for the already
- existing device instead of ignoring the event completely.
-
-diff -Nur hal-0.5.11.orig/hald/linux/device.c hal-0.5.11/hald/linux/device.c
---- hal-0.5.11.orig/hald/linux/device.c 2008-05-07 18:23:42.000000000 -0500
-+++ hal-0.5.11/hald/linux/device.c 2009-07-16 16:21:36.619979288 -0500
-@@ -4423,11 +4423,22 @@
- handler = dev_handlers[i];
- if (strcmp (handler->subsystem, subsystem) == 0) {
- HalDevice *d;
-+ HalDevice *check;
-
- if (strcmp (subsystem, "scsi") == 0)
- if (missing_scsi_host (sysfs_path, (HotplugEvent *)end_token, HOTPLUG_ACTION_ADD))
- goto out;
-
-+ /* check if there is already a device with this sysfs_path in the system */
-+ if ((check = hal_device_store_match_key_value_string (hald_get_gdl (), "linux.sysfs_path", sysfs_path)) != NULL ||
-+ (check = hal_device_store_match_key_value_string (hald_get_tdl (), "linux.sysfs_path", sysfs_path)) != NULL) {
-+ HAL_WARNING(("Have already a device with sysfs_path='%s' and udi='%s'. Ignore new add event for now.",
-+ sysfs_path, hal_device_get_udi(check)));
-+ /* maybe we should do a refresh on the found device ??? */
-+ hotplug_event_end (end_token);
-+ goto out;
-+ }
-+
- /* attempt to add the device */
- d = handler->add (sysfs_path, device_file, parent_dev, parent_path);
- if (d == NULL) {
diff --git a/source/l/hal/patches/increase_HAL_PATH_MAX_to_4096.diff b/source/l/hal/patches/increase_HAL_PATH_MAX_to_4096.diff
new file mode 100644
index 000000000..b4c770aee
--- /dev/null
+++ b/source/l/hal/patches/increase_HAL_PATH_MAX_to_4096.diff
@@ -0,0 +1,30 @@
+commit a2c3dd5a04d79265772c09c4280606d5c2ed72c6
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Jan 4 16:56:13 2010 +0100
+
+ Bump HAL_PATH_MAX to 4096
+
+ Some bits in the code use realpath() with destination paths of size
+ HAL_PATH_MAX. This potentially breaks on systems where PATH_MAX is bigger than
+ HAL_PATH_MAX (which was 512 until now).
+
+ Since we can't use PATH_MAX directly (due to platforms like GNU/Hurd, which
+ apparently don't have it), just bump HAL_PATH_MAX to 4096 (as PATH_MAX is on
+ Linux), to avoid potential buffer overflows and also fix hal on Linux when
+ enabling FORTIFY in gcc.
+
+ https://bugs.freedesktop.org/show_bug.cgi?id=25888
+
+diff --git a/hald/util.h b/hald/util.h
+index c2a1584..7883333 100644
+--- a/hald/util.h
++++ b/hald/util.h
+@@ -38,7 +38,7 @@
+ #endif
+
+ #define HAL_NAME_MAX 256
+-#define HAL_PATH_MAX 512
++#define HAL_PATH_MAX 4096
+
+ gboolean hal_util_remove_trailing_slash (gchar *path);
+
diff --git a/source/l/hal/patches/regen_fdi_cache_if_zero_size.diff b/source/l/hal/patches/regen_fdi_cache_if_zero_size.diff
deleted file mode 100644
index ab3987488..000000000
--- a/source/l/hal/patches/regen_fdi_cache_if_zero_size.diff
+++ /dev/null
@@ -1,24 +0,0 @@
-Author: Richard Hughes <richard@hughsie.com>
-Date: Thu Mar 5 09:40:10 2009 +0000
-
- regenerate cache if it's zero sized
-
- Sometimes when systems go a bit haywire, the cache file is
- written out as a zero byte file. We're still debugging this,
- but in the case of a zero byte cache, just regenerate it anyway
-
-diff --git a/hald/mmap_cache.c b/hald/mmap_cache.c
-index 6125cf0..cc1ffa5 100644
---- a/hald/mmap_cache.c
-+++ b/hald/mmap_cache.c
-@@ -265,6 +265,10 @@ di_cache_coherency_check (gboolean setup_watches)
- HAL_INFO(("Cache needs update"));
- regen_cache();
- did_regen = TRUE;
-+ } else if (st.st_size == 0) {
-+ HAL_INFO(("Cache zero size, so regenerating"));
-+ regen_cache();
-+ did_regen = TRUE;
- }
- } else {
- regen_cache();
diff --git a/source/l/hal/patches/set_X_keymap_properly.diff b/source/l/hal/patches/set_X_keymap_properly.diff
deleted file mode 100644
index 933bcfa3f..000000000
--- a/source/l/hal/patches/set_X_keymap_properly.diff
+++ /dev/null
@@ -1,96 +0,0 @@
-diff --git a/tools/hal_set_property.c b/tools/hal_set_property.c
-index a99b059..3ab38bb 100644
---- a/tools/hal_set_property.c
-+++ b/tools/hal_set_property.c
-@@ -66,7 +66,7 @@ usage (int argc, char *argv[])
- " (--int <value> | --string <value> | --bool <value> |\n"
- " --strlist-pre <value> | --strlist-post <value> |\n"
- " --strlist-rem <value> | --double <value> | --remove)\n"
-- " [--help] [--version]\n");
-+ " [--direct] [--help] [--version]\n");
- fprintf (stderr,
- "\n" " --udi Unique Device Id\n"
- " --key Key of the property to set\n"
-@@ -81,6 +81,7 @@ usage (int argc, char *argv[])
- " --strlist-post Append a string to a list\n"
- " --strlist-rem Remove a string from a list\n"
- " --remove Indicates that the property should be removed\n"
-+ " --direct Use direct HAL connection\n"
- " --version Show version and exit\n"
- " --help Show this information and exit\n"
- "\n"
-@@ -114,6 +115,7 @@ main (int argc, char *argv[])
- dbus_bool_t is_version = FALSE;
- int type = PROP_INVALID;
- DBusError error;
-+ dbus_bool_t direct = FALSE;
-
- if (argc <= 1) {
- usage (argc, argv);
-@@ -135,6 +137,7 @@ main (int argc, char *argv[])
- {"strlist-pre", 1, NULL, 0},
- {"strlist-post", 1, NULL, 0},
- {"strlist-rem", 1, NULL, 0},
-+ {"direct", 0, NULL, 0},
- {"remove", 0, NULL, 0},
- {"version", 0, NULL, 0},
- {"help", 0, NULL, 0},
-@@ -188,6 +191,8 @@ main (int argc, char *argv[])
- type = PROP_STRLIST_REM;
- } else if (strcmp (opt, "remove") == 0) {
- remove = TRUE;
-+ } else if (strcmp (opt, "direct") == 0) {
-+ direct = TRUE;
- } else if (strcmp (opt, "udi") == 0) {
- udi = strdup (optarg);
- } else if (strcmp (opt, "version") == 0) {
-@@ -215,24 +220,32 @@ main (int argc, char *argv[])
-
- fprintf (stderr, "\n");
-
-- dbus_error_init (&error);
-- if ((hal_ctx = libhal_ctx_new ()) == NULL) {
-- fprintf (stderr, "error: libhal_ctx_new\n");
-- return 1;
-- }
-- if (!libhal_ctx_set_dbus_connection (hal_ctx, dbus_bus_get (DBUS_BUS_SYSTEM, &error))) {
-- fprintf (stderr, "error: libhal_ctx_set_dbus_connection: %s: %s\n", error.name, error.message);
-- LIBHAL_FREE_DBUS_ERROR (&error);
-- return 1;
-- }
-- if (!libhal_ctx_init (hal_ctx, &error)) {
-- if (dbus_error_is_set(&error)) {
-- fprintf (stderr, "error: libhal_ctx_init: %s: %s\n", error.name, error.message);
-- dbus_error_free (&error);
-+ dbus_error_init (&error);
-+ if (direct) {
-+ if ((hal_ctx = libhal_ctx_init_direct (&error)) == NULL) {
-+ fprintf (stderr, "error: libhal_ctx_init_direct\n");
-+ LIBHAL_FREE_DBUS_ERROR (&error);
-+ return 1;
-+ }
-+ } else {
-+ if ((hal_ctx = libhal_ctx_new ()) == NULL) {
-+ fprintf (stderr, "error: libhal_ctx_new\n");
-+ return 1;
-+ }
-+ if (!libhal_ctx_set_dbus_connection (hal_ctx, dbus_bus_get (DBUS_BUS_SYSTEM, &error))) {
-+ fprintf (stderr, "error: libhal_ctx_set_dbus_connection: %s: %s\n", error.name, error.message);
-+ LIBHAL_FREE_DBUS_ERROR (&error);
-+ return 1;
-+ }
-+ if (!libhal_ctx_init (hal_ctx, &error)) {
-+ if (dbus_error_is_set(&error)) {
-+ fprintf (stderr, "error: libhal_ctx_init: %s: %s\n", error.name, error.message);
-+ dbus_error_free (&error);
-+ }
-+ fprintf (stderr, "Could not initialise connection to hald.\n"
-+ "Normally this means the HAL daemon (hald) is not running or not ready.\n");
-+ return 1;
- }
-- fprintf (stderr, "Could not initialise connection to hald.\n"
-- "Normally this means the HAL daemon (hald) is not running or not ready.\n");
-- return 1;
- }
-
- if (remove) {
diff --git a/source/l/hal/patches/use_udevadm_not_udevinfo.patch b/source/l/hal/patches/use_udevadm_not_udevinfo.patch
deleted file mode 100644
index 09f709e0b..000000000
--- a/source/l/hal/patches/use_udevadm_not_udevinfo.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From: Danny Kukawka <danny.kukawka@web.de>
-Date: Wed, 27 Aug 2008 19:24:33 +0000 (+0200)
-Subject: use udevadm instead of (deprecated) udevinfo
-X-Git-Url: http://gitweb.freedesktop.org/?p=hal.git;a=commitdiff;h=f6af40c1e7ea54e6
-
-use udevadm instead of (deprecated) udevinfo
-
-Use udevadm instead of (deprecated) udevinfo. Adapted/fixed version
-of a patch contributed by Lucas Hazel <lucas@die.net.au> via HAL ML.
-
-diff -Nur hal-0.5.11.orig/hald/linux/blockdev.c hal-0.5.11/hald/linux/blockdev.c
---- hal-0.5.11.orig/hald/linux/blockdev.c 2008-05-07 18:23:41.000000000 -0500
-+++ hal-0.5.11/hald/linux/blockdev.c 2009-07-16 16:16:58.051983413 -0500
-@@ -1750,7 +1750,7 @@
- char *ret;
- char *u_stdout;
- int u_exit_status;
-- const char *argv[] = {"/usr/bin/udevinfo", "--root", "--query", "name", "--path", NULL, NULL};
-+ const char *argv[] = {"/sbin/udevadm", "info", "--root", "--query", "name", "--path", NULL, NULL};
- GError *g_error;
-
- ret = NULL;
-diff -Nur hal-0.5.11.orig/hald/linux/coldplug.c hal-0.5.11/hald/linux/coldplug.c
---- hal-0.5.11.orig/hald/linux/coldplug.c 2008-05-07 18:23:32.000000000 -0500
-+++ hal-0.5.11/hald/linux/coldplug.c 2009-07-16 16:16:58.051983413 -0500
-@@ -149,8 +149,8 @@
- static gboolean
- hal_util_init_sysfs_to_udev_map (void)
- {
-- char *udevdb_export_argv[] = { "/usr/bin/udevinfo", "-e", NULL };
-- char *udevroot_argv[] = { "/usr/bin/udevinfo", "-r", NULL };
-+ char *udevdb_export_argv[] = { "/sbin/udevadm", "info", "-e", NULL };
-+ char *udevroot_argv[] = { "/sbin/udevadm", "info", "-r", NULL };
- int udevinfo_exitcode;
- UdevInfo *info = NULL;
- char *p;
diff --git a/source/l/hal/slack-desc b/source/l/hal/slack-desc
index c01fd8a68..0145a5df4 100644
--- a/source/l/hal/slack-desc
+++ b/source/l/hal/slack-desc
@@ -12,8 +12,8 @@ hal: HAL is a piece of software that provides a view of the various
hal: hardware attached to a system. HAL keeps detailed metadata for each
hal: piece of hardware and provides hooks so that system and desktop
hal: software can react to changes in the hardware configuration (such as
-hal: the insertion of a DVD, or a USB flash memory stick). Users in the
-hal: "plugdev" or "cdrom" group will be able to use such devices on the
-hal: desktop without the need to mount/umount them manually.
+hal: the insertion of a DVD, or a USB flash memory stick).
hal:
hal: For more info, see: http://hal.freedesktop.org/
+hal:
+hal:
diff --git a/source/l/hicolor-icon-theme/hicolor-icon-theme.SlackBuild b/source/l/hicolor-icon-theme/hicolor-icon-theme.SlackBuild
index 7d887d684..0a5aecaac 100755
--- a/source/l/hicolor-icon-theme/hicolor-icon-theme.SlackBuild
+++ b/source/l/hicolor-icon-theme/hicolor-icon-theme.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,9 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-0.10}
+VERSION=${VERSION:-0.12}
ARCH=noarch
-BUILD=${BUILD:-5}
-
+BUILD=${BUILD:-1}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -51,13 +50,13 @@ make install DESTDIR=$PKG || exit 1
mkdir -p $PKG/var/log/setup
cat $CWD/setup.08.gtk-update-icon-cache > $PKG/var/log/setup/setup.08.gtk-update-icon-cache
-chmod 755 $PKG/var/log/setup/setup.08.gtk-update-icon-cache
+chmod 0755 $PKG/var/log/setup/setup.08.gtk-update-icon-cache
mkdir -p $PKG/usr/doc/hicolor-icon-theme-$VERSION
cp -a \
COPYING README \
$PKG/usr/doc/hicolor-icon-theme-$VERSION
-chmod 644 $PKG/usr/doc/hicolor-icon-theme-$VERSION/*
+chmod 0644 $PKG/usr/doc/hicolor-icon-theme-$VERSION/*
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/hunspell/hunspell.SlackBuild b/source/l/hunspell/hunspell.SlackBuild
new file mode 100755
index 000000000..78ca6fef8
--- /dev/null
+++ b/source/l/hunspell/hunspell.SlackBuild
@@ -0,0 +1,121 @@
+#!/bin/sh
+
+# Copyright 2010 Eric Hameleers, Eindhoven, NL
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=hunspell
+VERSION=${VERSION:-1.2.9}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
+cd ${PKGNAM}-$VERSION || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Build and install:
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --disable-static \
+ --with-ui \
+ --with-readline \
+ --build=$ARCH-slackware-linux \
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS* BUGS COPYING* ChangeLog* NEWS README* THANKS TODO \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/hunspell/slack-desc b/source/l/hunspell/slack-desc
new file mode 100644
index 000000000..b3a4761b6
--- /dev/null
+++ b/source/l/hunspell/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler--------------------------------------------------|
+hunspell: hunspell (spell checker and morphological analyzer library)
+hunspell:
+hunspell: Hunspell is a spell checker and morphological analyzer library
+hunspell: and program designed for languages with rich morphology
+hunspell: and complex word compounding or character encoding.
+hunspell: Hunspell interfaces: Ispell-like terminal interface using Curses
+hunspell: library, Ispell pipe interface, OpenOffice.org UNO module.
+hunspell:
+hunspell:
+hunspell: Home page: http://hunspell.sourceforge.net/
+hunspell:
diff --git a/source/l/imlib/imlib.SlackBuild b/source/l/imlib/imlib.SlackBuild
index 73c60d0a0..e0b2627db 100755
--- a/source/l/imlib/imlib.SlackBuild
+++ b/source/l/imlib/imlib.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,9 +22,18 @@
VERSION=1.9.15
-ARCH=${ARCH:-x86_64}
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-5}
+BUILD=${BUILD:-6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -35,6 +44,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -46,7 +58,7 @@ mkdir -p $TMP $PKG/usr
cd $TMP
rm -rf imlib-$VERSION
-tar xvf $CWD/imlib-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/imlib-$VERSION.tar.?z* || exit 1
cd imlib-$VERSION
zcat $CWD/imlib.mitshm.render.diff.gz | patch -p1 --verbose || exit 1
diff --git a/source/l/jasper/jasper.SlackBuild b/source/l/jasper/jasper.SlackBuild
index 45b0b0768..cda0001bd 100755
--- a/source/l/jasper/jasper.SlackBuild
+++ b/source/l/jasper/jasper.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007, 2008 Eric Hameleers, Eijdhoven, NL
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
# Permission to use, copy, modify, and distribute this software for
@@ -23,10 +23,19 @@
# SUCH DAMAGE.
-PRGNAM=jasper
-VERSION=${VERSION:-1.900.1}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=jasper
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
case "$ARCH" in
i486) SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -44,18 +53,21 @@ case "$ARCH" in
athlon-xp) SLKCFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
LIBDIRSUFFIX=""
;;
+ *) SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ;;
esac
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -80,10 +92,10 @@ CXXFLAGS="$SLKCFLAGS" \
make || exit 1
make DESTDIR=$PKG install
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
COPYRIGHT INSTALL LICENSE NEWS README \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
find $PKG/usr/doc -type f -exec chmod 644 {} \;
find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
@@ -96,5 +108,5 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.txz
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-${VERSION}-${ARCH}-${BUILD}.txz
diff --git a/source/l/jre/COPYRIGHT b/source/l/jre/COPYRIGHT
index 2ae212072..ee5019b5c 100644
--- a/source/l/jre/COPYRIGHT
+++ b/source/l/jre/COPYRIGHT
@@ -1,4 +1,4 @@
-Copyright © 2009 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+Copyright © 2010 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
California 95054, U.S.A. All rights reserved.
Sun Microsystems, Inc. has intellectual property rights relating to
@@ -33,7 +33,7 @@ identified on U.S. export exclusion lists, including, but not limited
to, the denied persons and specially designated nationals lists is
strictly prohibited.
-Copyright © 2009 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+Copyright © 2010 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
California 95054, Etats-Unis. Tous droits rservs.
Sun Microsystems, Inc. dtient les droits de proprit intellectuele
diff --git a/source/l/jre/README b/source/l/jre/README
index 079eb00dc..002eae2f8 100644
--- a/source/l/jre/README
+++ b/source/l/jre/README
@@ -370,7 +370,7 @@ override, see
The Java(TM) Runtime Environment (JRE) and the JavaFX(TM) runtime are
products of Sun Microsystems(TM), Inc.
-Copyright © 2009 Sun Microsystems, Inc.
+Copyright © 2010 Sun Microsystems, Inc.
4150 Network Circle, Santa Clara, California 95054, U.S.A.
All rights reserved.
diff --git a/source/l/jre/THIRDPARTYLICENSEREADME.txt b/source/l/jre/THIRDPARTYLICENSEREADME.txt
index 05bfc24d4..a84b0734c 100644
--- a/source/l/jre/THIRDPARTYLICENSEREADME.txt
+++ b/source/l/jre/THIRDPARTYLICENSEREADME.txt
@@ -1,24 +1,45 @@
DO NOT TRANSLATE OR LOCALIZE.
-%% The following software may be included in this product: CS CodeViewer v1.0; Use of any of this software is governed by the terms of the license below:
+%% The following software may be included in this product: CS CodeViewer v1.0;
+Use of any of this software is governed by the terms of the license below:
Copyright 1999 by CoolServlets.com.
-Any errors or suggested improvements to this class can be reported as instructed on CoolServlets.com. We hope you enjoy this program... your comments will encourage further development!
-This software is distributed under the terms of the BSD License.
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-Neither name of CoolServlets.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+Any errors or suggested improvements to this class can be reported as instructed
+on CoolServlets.com. We hope you enjoy this program... your comments will
+encourage further development! This software is distributed under the terms of
+the BSD License. Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution. Neither name of
+CoolServlets.com nor the names of its contributors may be used to endorse or
+promote products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY COOLSERVLETS.COM AND CONTRIBUTORS ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING INANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+
+%% The following software may be included in this product: Crimson v1.1.1 ; Use
+of any of this software is governed by the terms of the license below:
-THIS SOFTWARE IS PROVIDED BY COOLSERVLETS.COM AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING INANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-
-%% The following software may be included in this product: Crimson v1.1.1 ; Use of any of this software is governed by the terms of the license below:
/*
* The Apache Software License, Version 1.1
*
*
-* Copyright (c) 1999-2000 The Apache Software Foundation. All rights * reserved.
+* Copyright (c) 1999-2000 The Apache Software Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -70,147 +91,323 @@ THIS SOFTWARE IS PROVIDED BY COOLSERVLETS.COM AND CONTRIBUTORS ``AS IS'' AND ANY
*/
-%% The following software may be included in this product: Xalan J2; Use of any of this software is governed by the terms of the license below:
-
+%% The following software may be included in this product: Xalan J2; Use of any of this
+software is governed by the terms of the license below:
+
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
- "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
- "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owneror by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
- (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
-
- You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use,reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
- 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+1. Definitions.
- 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer,and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document. "Licensor"
+shall mean the copyright owner or entity authorized by the copyright owner that
+is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, "control" means (i) the power, direct or
+indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
+outstanding shares, or (iii) beneficial ownership of such entity. "You" (or
+"Your") shall mean an individual or Legal Entity exercising permissions granted
+by this License.
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+"Object" form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object code,
+generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made
+available under the License, as indicated by a copyright notice that is included
+in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that
+is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative Works
+shall not include works that remain separable from, or merely link (or bind by
+name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative Works
+thereof, that is intentionally submitted to Licensor for inclusion in the Work
+by the copyright owner or by an individual or Legal Entity authorized to submit
+on behalf of the copyright owner. For the purposes of this definition,
+"submitted" means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor for
+the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently
+incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this
+License, each Contributor hereby grants to You a perpetual, worldwide,
+non-exclusive, no-charge, royalty-free, irrevocable copyright license to
+reproduce, prepare Derivative Works of, publicly display, publicly perform,
+sublicense, and distribute the Work and such Derivative Works in Source or
+Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this
+License, each Contributor hereby grants to You a perpetual, worldwide,
+non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this
+section) patent license to make, have made, use, offer to sell, sell, import,
+and otherwise transfer the Work, where such license applies only to those patent
+claims licensable by such Contributor that are necessarily infringed by their
+Contribution(s) alone or by combination of their Contribution(s) with the Work
+to which such Contribution(s) was submitted. If You institute patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Work or a Contribution incorporated within the Work
+constitutes direct or contributory patent infringement, then any patent licenses
+granted to You under this License for that Work shall terminate as of the date
+such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or
+Derivative Works thereof in any medium, with or without modifications, and in
+Source or Object form, provided that You meet the following conditions:
+
+(a) You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+
+(b) You must cause any modified files to carry prominent notices stating that
+You changed the files; and
+
+(c) You must retain, in the Source form of any Derivative Works that You
+distribute, all copyright, patent, trademark, and attribution notices from the
+Source form of the Work, excluding those notices that do not pertain to any part
+of the Derivative Works; and
+
+(d) If the Work includes a "NOTICE" text file as part of its distribution, then
+any Derivative Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those notices
+that do not pertain to any part of the Derivative Works, in at least one of the
+following places: within a NOTICE text file distributed as part of the
+Derivative Works; within the Source form or documentation, if provided along
+with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents
+of the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works that
+You distribute, alongside or as an addendum to the NOTICE text from the Work,
+provided that such additional attribution notices cannot be construed as
+modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works as a whole,
+provided Your use,reproduction, and distribution of the Work otherwise complies
+with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any
+Contribution intentionally submitted for inclusion in the Work by You to the
+Licensor shall be under the terms and conditions of this License, without any
+additional terms or conditions. Notwithstanding the above, nothing herein shall
+supersede or modify the terms of any separate license agreement you may have
+executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names,
+trademarks, service marks, or product names of the Licensor, except as required
+for reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in
+writing, Licensor provides the Work (and each Contributor provides its
+Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied, including, without limitation, any warranties
+or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+PARTICULAR PURPOSE. You are solely responsible for determining the
+appropriateness of using or redistributing the Work and assume any risks
+associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in
+tort (including negligence), contract, or otherwise, unless required by
+applicable law (such as deliberate and grossly negligent acts) or agreed to in
+writing, shall any Contributor be liable to You for damages, including any
+direct, indirect, special, incidental, or consequential damages of any character
+arising as a result of this License or out of the use or inability to use the
+Work (including but not limited to damages for loss of goodwill, work stoppage,
+computer failure or malfunction, or any and all other commercial damages or
+losses), even if such Contributor has been advised of the possibility of such
+damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work
+or Derivative Works thereof, You may choose to offer,and charge a fee for,
+acceptance of support, warranty, indemnity, or other liability obligations
+and/or rights consistent with this License. However, in accepting such
+obligations, You may act only on Your own behalf and on Your sole
+responsibility, not on behalf of any other Contributor, and only if You agree to
+indemnify, defend, and hold each Contributor harmless for any liability incurred
+by, or claims asserted against, such Contributor by reason of your accepting any
+such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
- To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included on
+the same "printed page" as the copyright notice for easier identification within
+third-party archives.
Copyright [yyyy] [name of copyright owner]
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at
http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for the
+specific language governing permissions and limitations under the License.
-%% The following software may be included in this product: NSIS 1.0j; Use of any of this software is governed by the terms of the license below:
+%% The following software may be included in this product: NSIS 1.0j; Use of
+any of this software is governed by the terms of the license below:
Copyright (C) 1999-2000 Nullsoft, Inc.
-This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
-1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
-2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-3. This notice may not be removed or altered from any source distribution. Justin Frankel justin@nullsoft.com"
-
+
+This software is provided 'as-is', without any express or implied warranty. In
+no event will the authors be held liable for any damages arising from the use of
+this software. Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim
+that you wrote the original software. If you use this software in a product, an
+acknowledgment in the product documentation would be appreciated but is not
+required.
+
+2. Altered source versions must be plainly marked as such, and must not be
+misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+Justin Frankel justin@nullsoft.com"
+
%% Some Portions licensed from IBM are available at:
http://www.ibm.com/software/globalization/icu/
%% Portions Copyright Eastman Kodak Company 1992
-%% Lucida is a registered trademark or trademark of Bigelow & Holmes in the U.S. and other countries.
+%% Lucida is a registered trademark or trademark of Bigelow & Holmes in the U.S.
+and other countries.
%% Portions licensed from Taligent, Inc.
-%% The following software may be included in this product:IAIK PKCS Wrapper; Use of any of this software is governed by the terms of the license below:
+%% The following software may be included in this product:IAIK PKCS Wrapper; Use
+of any of this software is governed by the terms of the license below:
-Copyright (c) 2002 Graz University of Technology. All rights reserved.
-Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
+Copyright (c) 2002 Graz University of Technology. All rights reserved.
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+Redistribution and use in source and binary forms, with or without
+modification,are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
-3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment:
+3. The end-user documentation included with the redistribution, if any, must
+include the following acknowledgment:
"This product includes software developed by IAIK of Graz University of Technology."
- Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.
+Alternately, this acknowledgment may appear in the software itself, if and
+wherever such third-party acknowledgments normally appear.
-4. The names "Graz University of Technology" and "IAIK of Graz University of Technology" must not be used to endorse or promote products derived from this software without prior written permission.
+4. The names "Graz University of Technology" and "IAIK of Graz University of
+Technology" must not be used to endorse or promote products derived from this
+software without prior written permission.
-5. Products derived from this software may not be called "IAIK PKCS Wrapper", nor may "IAIK" appear in their name, without prior written permission of Graz University of Technology.
+5. Products derived from this software may not be called "IAIK PKCS Wrapper",
+nor may "IAIK" appear in their name, without prior written permission of Graz
+University of Technology.
-THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+%% The following software may be included in this product: Document Object
+Model (DOM) v. Level 3; Use of any of this software is governed by the terms of
+the license below:
-%% The following software may be included in this product: Document Object Model (DOM) v. Level 3; Use of any of this software is governed by the terms of the license below:
W3C SOFTWARE NOTICE AND LICENSE
http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
-This work (and included software, documentation such as READMEs, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
-
-Permission to copy, modify, and distribute this software and its documentation, with or without modification, for
-any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies
-of the software and documentation or portions thereof, including modifications:
- 1.The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
- 2.Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the
- W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body
- of any redistributed or derivative code.
- 3.Notice of any changes or modifications to the files, including the date changes were made. (We
- recommend you provide URIs to the location from which the code is derived.)
-THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKENO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THEUSE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
-The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the
-software without specific, written prior permission. Title to copyright in this software and any associated
-documentation will at all times remain with copyright holders.
+This work (and included software, documentation such as READMEs, or other
+related items) is being provided by the copyright holders under the following
+license. By obtaining, using and/or copying this work, you (the licensee) agree
+that you have read, understood, and will comply with the following terms and
+conditions.
+
+Permission to copy, modify, and distribute this software and its documentation,
+with or without modification, for any purpose and without fee or royalty is
+hereby granted, provided that you include the following on ALL copies of the
+software and documentation or portions thereof, including modifications:
+
+1.The full text of this NOTICE in a location viewable to users of the
+redistributed or derivative work.
+
+2.Any pre-existing intellectual property disclaimers, notices, or terms and
+ conditions. If none exist, the W3C Software Short Notice should be included
+ (hypertext is preferred, text is permitted) within the body of any
+ redistributed or derivative code.
+
+3.Notice of any changes or modifications to the files, including the date
+ changes were made. (We recommend you provide URIs to the location from which
+ the code is derived.)
+
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
+MAKENO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE
+OR THAT THEUSE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD
+PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
+The name and trademarks of copyright holders may NOT be used in advertising or
+publicity pertaining to the software without specific, written prior permission.
+Title to copyright in this software and any associated documentation will at all
+times remain with copyright holders.
____________________________________
-This formulation of W3C's notice and license became active on December 31 2002. This version removes the
-copyright ownership notice such that this license can be used with materials other than those owned by the
-W3C, reflects that ERCIM is now a host of the W3C, includes references to this specific dated version of the
-license, and removes the ambiguous grant of "use". Otherwise, this version is the same as the previous
-version and is written so as to preserve the Free Software Foundation's assessment of GPL compatibility and
-OSI's certification under the Open Source Definition. Please see our Copyright FAQ for common questions
-about using materials from our site, including specific terms and conditions for packages like libwww, Amaya,
-and Jigsaw. Other questions about this notice can be directed to
-site-policy@w3.org.
-
-%% The following software may be included in this product: Xalan, Xerces; Use of any of this software is governed by the terms of the license below: /*
+This formulation of W3C's notice and license became active on December 31 2002.
+This version removes the copyright ownership notice such that this license can
+be used with materials other than those owned by the W3C, reflects that ERCIM is
+now a host of the W3C, includes references to this specific dated version of the
+license, and removes the ambiguous grant of "use". Otherwise, this version is
+the same as the previous version and is written so as to preserve the Free
+Software Foundation's assessment of GPL compatibility and OSI's certification
+under the Open Source Definition. Please see our Copyright FAQ for common
+questions about using materials from our site, including specific terms and
+conditions for packages like libwww, Amaya, and Jigsaw. Other questions about
+this notice can be directed to site-policy@w3.org.
+
+%% The following software may be included in this product: Xalan, Xerces; Use
+of any of this software is governed by the terms of the license below: /*
+
* The Apache Software License, Version 1.1
*
*
@@ -266,56 +463,140 @@ site-policy@w3.org.
* information on the Apache Software Foundation, please see http://www.apache.org
*
-%% The following software may be included in this product: W3C XML Conformance Test Suites v. 20020606; Use of any of this software is governed by the terms of the license below:
-W3C SOFTWARE NOTICE AND LICENSE
-Copyright 1994-2002 World Wide Web Consortium, (Massachusetts Institute ofTechnology, Institut National de Recherche en Informatique et en Automatique,Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/
-This W3C work (including software, documents, or other related items) is beingprovided by the copyright holders under the following license. By obtaining,using and/or copying this work, you (the licensee) agree that you have read,understood, and will comply with the following terms and conditions:
+%% The following software may be included in this product: W3C XML Conformance
+Test Suites v. 20020606; Use of any of this software is governed by the terms
+of the license below:
-Permission to use, copy, modify, and distribute this software and its
-documentation, with or without modification, for any purpose and without fee orroyalty is hereby granted, provided that you include the following on ALL copiesof the software and documentation or portions thereof, including modifications,that you make:
+W3C SOFTWARE NOTICE AND LICENSE
- 1. The full text of this NOTICE in a location viewable to users of theredistributed or derivative work.
- 2. Any pre-existing intellectual property disclaimers, notices, or terms andconditions. If none exist, a short notice of the following form (hypertext ispreferred, text is permitted) should be used within the body of any
-redistributed or derivative code: "Copyright ýý [$date-of-software] World WideWeb Consortium, (Massachusetts Institute of Technology, Institut National deRecherche en Informatique et en Automatique, Keio University). All RightsReserved. http://www.w3.org/Consortium/Legal/"
- 3. Notice of any changes or modifications to the W3C files, including thedate changes were made. (We recommend you provide URIs to the location fromwhich the code is derived.)
+Copyright 1994-2002 World Wide Web Consortium, (Massachusetts Institute of
+Technology, Institut National de Recherche en Informatique et en
+Automatique,Keio University). All Rights Reserved.
+http://www.w3.org/Consortium/Legal/
-THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKENO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITEDTO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THATTHE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTYPATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+This W3C work (including software, documents, or other related items) is being
+provided by the copyright holders under the following license. By
+obtaining,using and/or copying this work, you (the licensee) agree that you have
+read,understood, and will comply with the following terms and conditions:
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
-The name and trademarks of copyright holders may NOT be used in advertising orpublicity pertaining to the software without specific, written prior permission.Title to copyright in this software and any associated documentation will at alltimes remain with copyright holders.
+Permission to use, copy, modify, and distribute this software and its
+documentation, with or without modification, for any purpose and without fee
+orroyalty is hereby granted, provided that you include the following on ALL
+copiesof the software and documentation or portions thereof, including
+modifications,that you make:
+
+1. The full text of this NOTICE in a location viewable to users of the
+redistributed or derivative work.
+
+2. Any pre-existing intellectual property disclaimers, notices, or terms and
+conditions. If none exist, a short notice of the following form (hypertext is
+preferred, text is permitted) should be used within the body of any
+redistributed or derivative code: "Copyright [$date-of-software] World Wide Web
+Consortium, (Massachusetts Institute of Technology, Institut National
+deRecherche en Informatique et en Automatique, Keio University). All Rights
+Reserved. http://www.w3.org/Consortium/Legal/"
+
+3. Notice of any changes or modifications to the W3C files, including the date
+changes were made. (We recommend you provide URIs to the location from which
+the code is derived.)
+
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
+MAKENO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITEDTO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE
+OR THATTHE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD
+PARTYPATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
+
+The name and trademarks of copyright holders may NOT be used in advertising or
+publicity pertaining to the software without specific, written prior permission.
+Title to copyright in this software and any associated documentation will at all
+times remain with copyright holders.
____________________________________
-This formulation of W3C's notice and license became active on August 14 1998 soas to improve compatibility with GPL. This version ensures that W3C softwarelicensing terms are no more restrictive than GPL and consequently W3C softwaremay be distributed in GPL packages. See the older formulation for the policyprior to this date. Please see our Copyright FAQ for common questions aboutusing materials from our site, including specific terms and conditions forpackages like libwww, Amaya, and Jigsaw. Other questions about this notice canbe directed to site-policy@w3.org.
-
-%% The following software may be included in this product: W3C XML Schema Test Collection v. 1.16.2; Use of any of this software is governed by the terms of the license below: W3C DOCUMENT NOTICE AND LICENSE
-Copyright 1994-2002 World Wide Web Consortium, (Massachusetts Institute ofTechnology, Institut National de Recherche en Informatique et en Automatique,Keio University). All Rights Reserved.
+This formulation of W3C's notice and license became active on August 14 1998
+soas to improve compatibility with GPL. This version ensures that W3C software
+licensing terms are no more restrictive than GPL and consequently W3C software
+may be distributed in GPL packages. See the older formulation for the policy
+prior to this date. Please see our Copyright FAQ for common questions about
+using materials from our site, including specific terms and conditions for
+packages like libwww, Amaya, and Jigsaw. Other questions about this notice can
+be directed to site-policy@w3.org.
+
+%% The following software may be included in this product: W3C XML Schema Test
+Collection v. 1.16.2; Use of any of this software is governed by the terms of
+the license below: W3C DOCUMENT NOTICE AND LICENSE
+
+Copyright 1994-2002 World Wide Web Consortium, (Massachusetts Institute of
+Technology, Institut National de Recherche en Informatique et en
+Automatique,Keio University). All Rights Reserved.
http://www.w3.org/Consortium/Legal/
-Public documents on the W3C site are provided by the copyright holders under thefollowing license. The software or Document Type Definitions (DTDs) associatedwith W3C specifications are governed by the Software Notice. By using and/orcopying this document, or the W3C document from which this statement is linked,you (the licensee) agree that you have read, understood, and will comply withthe following terms and conditions:
+Public documents on the W3C site are provided by the copyright holders under the
+following license. The software or Document Type Definitions (DTDs) associated
+with W3C specifications are governed by the Software Notice. By using and/or
+copying this document, or the W3C document from which this statement is
+linked,you (the licensee) agree that you have read, understood, and will comply
+with the following terms and conditions:
-Permission to use, copy, and distribute the contents of this document, or theW3C document from which this statement is linked, in any medium for any purposeand without fee or royalty is hereby granted, provided that you include thefollowing on ALL copies of the document, or portions thereof, that you use:
- 1. A link or URL to the original W3C document.
- 2. The pre-existing copyright notice of the original author, or if it doesn'texist, a notice of the form: "Copyright [$date-of-document] World Wide WebConsortium, (Massachusetts Institute of Technology, Institut National deRecherche en Informatique et en Automatique, Keio University). All RightsReserved. http://www.w3.org/Consortium/Legal/" (Hypertext is preferred, but atextual representation is permitted.)
- 3. If it exists, the STATUS of the W3C document.
+Permission to use, copy, and distribute the contents of this document, or theW3C
+document from which this statement is linked, in any medium for any purpose and
+without fee or royalty is hereby granted, provided that you include the
+following on ALL copies of the document, or portions thereof, that you use:
-When space permits, inclusion of the full text of this NOTICE should beprovided. We request that authorship attribution be provided in any software,documents, or other items or products that you create pursuant to the
+1. A link or URL to the original W3C document.
+
+2. The pre-existing copyright notice of the original author, or if it doesn't
+exist, a notice of the form: "Copyright [$date-of-document] World Wide
+WebConsortium, (Massachusetts Institute of Technology, Institut National
+deRecherche en Informatique et en Automatique, Keio University). All Rights
+Reserved. http://www.w3.org/Consortium/Legal/" (Hypertext is preferred, but
+atextual representation is permitted.)
+
+3. If it exists, the STATUS of the W3C document.
+
+When space permits, inclusion of the full text of this NOTICE should be
+provided. We request that authorship attribution be provided in any
+software,documents, or other items or products that you create pursuant to the
implementation of the contents of this document, or any portion thereof.
-No right to create modifications or derivatives of W3C documents is grantedpursuant to this license. However, if additional requirements (documented in theCopyright FAQ) are satisfied, the right to create modifications or derivativesis sometimes granted by the W3C to individuals complying with those requirements.
-THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONSOR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OFMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE;THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THEIMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCEOR IMPLEMENTATION OF THE CONTENTS THEREOF.
-The name and trademarks of copyright holders may NOT be used in advertising orpublicity pertaining to this document or its contents without specific, writtenprior permission. Title to copyright in this document will at all times remainwith copyright holders.
+No right to create modifications or derivatives of W3C documents is granted
+pursuant to this license. However, if additional requirements (documented in
+the Copyright FAQ) are satisfied, the right to create modifications or
+derivatives is sometimes granted by the W3C to individuals complying with those
+requirements. THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO
+REPRESENTATIONSOR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+WARRANTIES OFMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+NON-INFRINGEMENT, OR TITLE;THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR
+ANY PURPOSE; NOR THAT THEIMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY
+THIRD PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE
+PERFORMANCEOR IMPLEMENTATION OF THE CONTENTS THEREOF.
+
+The name and trademarks of copyright holders may NOT be used in advertising or
+publicity pertaining to this document or its contents without specific, written
+prior permission. Title to copyright in this document will at all times remain
+with copyright holders.
----------------------------------------------------------------------------
-This formulation of W3C's notice and license became active on April 05 1999 soas to account for the treatment of DTDs, schema's and bindings. See the olderformulation for the policy prior to this date. Please see our Copyright FAQ forcommon questions about using materials from our site, including specific termsand conditions for packages like libwww, Amaya, and Jigsaw. Other questionsabout this notice can be directed to site-policy@w3.org.
-webmaster
-(last updated by reagle on 1999/04/99.)
-
+This formulation of W3C's notice and license became active on April 05 1999 soas
+to account for the treatment of DTDs, schema's and bindings. See the older
+formulation for the policy prior to this date. Please see our Copyright FAQ for
+common questions about using materials from our site, including specific terms
+and conditions for packages like libwww, Amaya, and Jigsaw. Other questions
+about this notice can be directed to site-policy@w3.org. webmaster (last
+updated by reagle on 1999/04/99.)
+
+
+%% The following software may be included in this product: Mesa 3-D graphics
+library v. 5; Use of any of this software is governed by the terms of the
+license below:
-%% The following software may be included in this product: Mesa 3-D graphics library v. 5; Use of any of this software is governed by the terms of the license below:
core Mesa code include/GL/gl.h Brian Paul
Mesa GLX driver include/GL/glx.h Brian Paul
Mesa Ext registry include/GL/glext.h SGI
@@ -323,329 +604,883 @@ SGI Free B include/GL/glxext.h
Mesa license:
-The Mesa distribution consists of several components. Different copyrights andlicenses apply to different components. For example, GLUT is copyrighted by MarkKilgard, some demo programs are copyrighted by SGI, some of the Mesa devicedrivers are copyrighted by their authors. See below for a list of Mesa'scomponents and the copyright/license for each.
+The Mesa distribution consists of several components. Different copyrights and
+licenses apply to different components. For example, GLUT is copyrighted by
+Mark Kilgard, some demo programs are copyrighted by SGI, some of the Mesa device
+drivers are copyrighted by their authors. See below for a list of Mesa's
+components and the copyright/license for each.
-The core Mesa library is licensed according to the terms of the XFree86copyright (an MIT-style license). This allows integration with the XFree86/DRIproject. Unless otherwise stated, the Mesa source code and documentation islicensed as follows:
+The core Mesa library is licensed according to the terms of the XFree86copyright
+(an MIT-style license). This allows integration with the XFree86/DRIproject.
+Unless otherwise stated, the Mesa source code and documentation is licensed as
+follows:
-Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
-Permission is hereby granted, free of charge, to any person obtaining acopy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitationthe 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:
+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 includedin all copies or substantial portions of the Software.
+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, EXPRESSOR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALLBRIAN PAUL BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER INAN 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.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESSOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALLBRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER INAN 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.
SGI FREE SOFTWARE LICENSE B (Version 1.1 [02/22/2000])
1. Definitions.
-1.1 "Additional Notice Provisions" means such additional provisions as appear in the Notice in Original Code under the heading "Additional Notice Provisions."
-1.2 "Covered Code" means the Original Code or Modifications, or any combination thereof.
-1.3 "Hardware" means any physical device that accepts input, processes input, stores the results of processing, and/or provides output.
-1.4 "Larger Work" means a work that combines Covered Code or portions thereof with code not governed by the terms of this License.
-1.5 "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
-1.6 "License" means this document.
-1.7 "Licensed Patents" means patent claims Licensable by SGI that are infringed by the use or sale of Original Code or any Modifications provided by SGI, or any combination thereof.
-1.8 "Modifications" means any addition to or deletion from the substance or structure of the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: A. Any addition to the contents of a file containing Original Code and/or addition to or deletion from the contents of a file containing previous Modifications.B. Any new file that contains any part of the Original Code or previous Modifications.
-1.9 "Notice" means any notice in Original Code or Covered Code, as required by and in compliance with this License.
-1.10 "Original Code" means source code of computer software code that is described in the source code Notice required by Exhibit A as Original Code, and updates and error corrections specifically thereto.
-1.11 "Recipient" means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 8. For legal entities, "Recipient" includes any entity that controls, is controlled by, or is under common control with Recipient. For purposes of this definition, "control" of an entity means (a) the power, direct or indirect, to direct or manage such entity, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.
-1.12 "Recipient Patents" means patent claims Licensable by a Recipient that are infringed by the use or sale of Original Code or any Modifications provided by SGI, or any combination thereof.
-1.13 "SGI" means Silicon Graphics, Inc.
-1.14 "SGI Patents" means patent claims Licensable by SGI other than the Licensed Patents.2. License Grant and Restrictions.
-2.1 SGI License Grant. Subject to the terms of this License and any third party intellectual property claims, for the duration of intellectual property protections inherent in the Original Code, SGI hereby grants Recipient a worldwide, royalty-free, non-exclusive license, to do the following: (i) under copyrights Licensable by SGI, to reproduce, distribute, create derivative works from, and, to the extent applicable, display and perform the Original Code and/or any Modifications provided by SGI alone and/or as part of a Larger Work; and (ii) under any Licensable Patents, to make, have made, use, sell, offer for sale, import and/or otherwise transfer the Original Code and/or any Modifications provided by SGI. Recipient accepts the terms and conditions of this License by undertaking any of the aforementioned actions. The patent license shall apply to the Covered Code if, at the time any related Modification is added, such addition of the Modification causes such combination to be covered by the Licensed Patents. The patent license in Section 2.1(ii) shall not apply to any other combinations that include the Modification. No patent license is provided under SGI Patents for infringements of SGI Patents by Modifications not provided by SGI or combinations of Original Code and Modifications not provided by SGI. 2.2 Recipient License Grant. Subject to the terms of this License and any third party intellectual property claims, Recipient hereby grants SGI and any other Recipients a worldwide, royalty-free, non-exclusive license, under any Recipient Patents, to make, have made, use, sell, offer for sale, import and/or otherwise transfer the Original Code and/or any Modifications provided by SGI.
-2.3 No License For Hardware Implementations. The licenses granted in Section 2.1 and 2.2 are not applicable to implementation in Hardware of the algorithms embodied in the Original Code or any Modifications provided by SGI .
-3. Redistributions.
-3.1 Retention of Notice/Copy of License. The Notice set forth in Exhibit A, below, must be conspicuously retained or included in any and all redistributions of Covered Code. For distributions of the Covered Code in source code form, the Notice must appear in every file that can include a text comments field; in executable form, the Notice and a copy of this License must appear in related documentation or collateral where the Recipient's rights relating to Covered Code are described. Any Additional Notice Provisions which actually appears in the Original Code must also be retained or included in any and all redistributions of Covered Code.
-3.2 Alternative License. Provided that Recipient is in compliance with the terms of this License, Recipient may, so long as without derogation of any of SGI's rights in and to the Original Code, distribute the source code and/or executable version(s) of Covered Code under (1) this License; (2) a license identical to this License but for only such changes as are necessary in order to clarify Recipient's role as licensor of Modifications; and/or (3) a license of Recipient's choosing, containing terms different from this License, provided that the license terms include this Section 3 and Sections 4, 6, 7, 10, 12, and 13, which terms may not be modified or superseded by any other terms of such license. If Recipient elects to use any license other than this License, Recipient must make it absolutely clear that any of its terms which differ from this License are offered by Recipient alone, and not by SGI. It is emphasized that this License is a limited license, and, regardless of the license form employed by Recipient in accordance with this Section 3.2, Recipient may relicense only such rights, in Original Code and Modifications by SGI, as it has actually been granted by SGI in this License.
-3.3 Indemnity. Recipient hereby agrees to indemnify SGI for any liability incurred by SGI as a result of any such alternative license terms Recipient offers.
-4. Termination. This License and the rights granted hereunder will terminate automatically if Recipient breaches any term herein and fails to cure such breach within 30 days thereof. Any sublicense to the Covered Code that is properly granted shall survive any termination of this License, absent termination by the terms of such sublicense. Provisions that, by their nature, must remain in effect beyond the termination of this License, shall survive.
-5. No Trademark Or Other Rights. This License does not grant any rights to: (i) any software apart from the Covered Code, nor shall any other rights or licenses not expressly granted hereunder arise by implication, estoppel or otherwise with respect to the Covered Code; (ii) any trade name, trademark or service mark whatsoever, including without limitation any related right for purposes of endorsement or promotion of products derived from the Covered Code, without prior written permission of SGI; or (iii) any title to or ownership of the Original Code, which shall at all times remains with SGI. All rights in the Original Code not expressly granted under this License are reserved.
-6. Compliance with Laws; Non-Infringement. There are various worldwide laws, regulations, and executive orders applicable to dispositions of Covered Code, including without limitation export, re-export, and import control laws, regulations, and executive orders, of the U.S. government and other countries, and Recipient is reminded it is obliged to obey such laws, regulations, and executive orders. Recipient may not distribute Covered Code that (i) in any way infringes (directly or contributorily) any intellectual property rights of any kind of any other person or entity or (ii) breaches any representation or warranty, express, implied or statutory, to which, under any applicable law, it might be deemed to have been subject.
-7. Claims of Infringement. If Recipient learns of any third party claim that any disposition of Covered Code and/or functionality wholly or partially infringes the third party's intellectual property rights, Recipient will promptly notify SGI of such claim.
-8. Versions of the License. SGI may publish revised and/or new versions of the License from time to time, each with a distinguishing version number. Once Covered Code has been published under a particular version of the License, Recipient may, for the duration of the license, continue to use it under the terms of that version, or choose to use such Covered Code under the terms of any subsequent version published by SGI. Subject to the provisions of Sections 3 and 4 of this License, only SGI may modify the terms applicable to Covered Code created under this License.
-9. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED "AS IS." ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. SGI ASSUMES NO RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY IS AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT SUBJECT TO THIS DISCLAIMER.
-10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES NOR LEGAL THEORY, WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY), CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO RECIPIENT.
-11. Indemnity. Recipient shall be solely responsible for damages arising, directly or indirectly, out of its utilization of rights under this License. Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc. from and against any loss, liability, damages, costs or expenses (including the payment of reasonable attorneys fees) arising out of Recipient's use, modification, reproduction and distribution of the Covered Code or out of any representation or warranty made by Recipient.
-12. U.S. Government End Users. The Covered Code is a "commercial item" consisting of "commercial computer software" as such terms are defined in title 48 of the Code of Federal Regulations and all U.S. Government End Users acquire only the rights set forth in this License and are subject to the terms of this License.
-13. Miscellaneous. This License represents the complete agreement concerning the its subject matter. If any provision of this License is held to be unenforceable, such provision shall be reformed so as to achieve as nearly as possible the same legal and economic effect as the original provision and the remainder of this License will remain in effect. This License shall be governed by and construed in accordance with the laws of the United States and the State of California as applied to agreements entered into and to be performed entirely within California between California residents. Any litigation relating to this License shall be subject to the exclusive jurisdiction of the Federal Courts of the Northern District of California (or, absent subject matter jurisdiction in such courts, the courts of the State of California), with venue lying exclusively in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation that provides that the language of a contract shall be construed against the drafter shall not apply to this License.
-Exhibit A
-License Applicability. Except to the extent portions of this file are made subject to an alternative license as permitted in the SGI Free Software License B, Version 1.1 (the "License"), the contents of this file are subject only to the provisions of the License. You may not use this file except in compliance with the License. You may obtain a copy of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: http://oss.sgi.com/projects/FreeB
-Note that, as provided in the License, the Software is distributed on an "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.Original Code. The Original Code is: [name of software, version number, and release date], developed by Silicon Graphics, Inc. The Original Code is Copyright (c) [dates of first publication, as appearing in the Notice in the Original Code] Silicon Graphics, Inc. Copyright in any portions created by third parties is as indicated elsewhere herein. All Rights Reserved.Additional Notice Provisions: [such additional provisions, if any, as appear in the Notice in the Original Code under the heading "Additional Notice Provisions"]
-
-%% The following software may be included in this product: Byte Code Engineering Library (BCEL) v. 5; Use of any of this software is governed by the terms of the license below:
-Apache Software License
-/
-====================================================================
-The Apache Software License, Version 1.1
+1.1 "Additional Notice Provisions" means such additional provisions as appear in
+the Notice in Original Code under the heading "Additional Notice Provisions."
-Copyright (c) 2001 The Apache Software Foundation. Allrights reserved.
+1.2 "Covered Code" means the Original Code or Modifications, or any combination
+thereof.
-Redistribution and use in source and binary forms, withor without modification, are permitted provided that the followingconditions are met:
+1.3 "Hardware" means any physical device that accepts input, processes input,
+stores the results of processing, and/or provides output.
-1. Redistributions of source code must retain the abovecopyright notice, this list of conditions and the followingdisclaimer.
+1.4 "Larger Work" means a work that combines Covered Code or portions thereof
+with code not governed by the terms of this License.
-2. Redistributions in binary form must reproduce theabove copyright notice, this list of conditions and the followingdisclaimer in the documentation and/or other materials providedwith the distribution.
+1.5 "Licensable" means having the right to grant, to the maximum extent
+possible, whether at the time of the initial grant or subsequently acquired, any
+and all of the rights conveyed herein.
-3. The end-user documentation included with theredistribution, if any, must include the following acknowledgment:
-"This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in thesoftware itself, if and wherever such third-party acknowledgmentsnormally appear.
+1.6 "License" means this document.
-4. The names "Apache" and "Apache Software Foundation"and "Apache BCEL" must not be used to endorse or promoteproducts derived from this software without prior writtenpermission. For written permission, please contact apache@apache.org.
+1.7 "Licensed Patents" means patent claims Licensable by SGI that are infringed
+by the use or sale of Original Code or any Modifications provided by SGI, or any
+combination thereof.
+
+1.8 "Modifications" means any addition to or deletion from the substance or
+structure of the Original Code or any previous Modifications. When Covered Code
+is released as a series of files, a Modification is: A. Any addition to the
+contents of a file containing Original Code and/or addition to or deletion from
+the contents of a file containing previous Modifications.B. Any new file that
+contains any part of the Original Code or previous Modifications.
+
+1.9 "Notice" means any notice in Original Code or Covered Code, as required by
+and in compliance with this License.
+
+1.10 "Original Code" means source code of computer software code that is
+described in the source code Notice required by Exhibit A as Original Code, and
+updates and error corrections specifically thereto.
+
+1.11 "Recipient" means an individual or a legal entity exercising rights under,
+and complying with all of the terms of, this License or a future version of this
+License issued under Section 8. For legal entities, "Recipient" includes any
+entity that controls, is controlled by, or is under common control with
+Recipient. For purposes of this definition, "control" of an entity means (a)
+the power, direct or indirect, to direct or manage such entity, or (b) ownership
+of fifty percent (50%) or more of the outstanding shares or beneficial ownership
+of such entity.
+
+1.12 "Recipient Patents" means patent claims Licensable by a Recipient that are
+infringed by the use or sale of Original Code or any Modifications provided by
+SGI, or any combination thereof.
-5. Products derived from this software may not be called"Apache", "Apache BCEL", nor may "Apache" appear in their name,without prior written permission of the Apache SoftwareFoundation.
+1.13 "SGI" means Silicon Graphics, Inc.
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED ORIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSEARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWAREFOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVERCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING INANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF SUCH DAMAGE.
-====================================================================
+1.14 "SGI Patents" means patent claims Licensable by SGI other than the Licensed
+Patents.
+
+2. License Grant and Restrictions.
+
+2.1 SGI License Grant. Subject to the terms of this License and any third party
+intellectual property claims, for the duration of intellectual property
+protections inherent in the Original Code, SGI hereby grants Recipient a
+worldwide, royalty-free, non-exclusive license, to do the following: (i) under
+copyrights Licensable by SGI, to reproduce, distribute, create derivative works
+from, and, to the extent applicable, display and perform the Original Code
+and/or any Modifications provided by SGI alone and/or as part of a Larger Work;
+and (ii) under any Licensable Patents, to make, have made, use, sell, offer for
+sale, import and/or otherwise transfer the Original Code and/or any
+Modifications provided by SGI. Recipient accepts the terms and conditions of
+this License by undertaking any of the aforementioned actions. The patent
+license shall apply to the Covered Code if, at the time any related Modification
+is added, such addition of the Modification causes such combination to be
+covered by the Licensed Patents . The patent license in Section 2.1(ii) shall
+not apply to any other combinations that include the Modification. No patent
+license is provided under SGI Patents for infringements of SGI Patents by
+Modifications not provided by SGI or combinations of Original Code and
+Modifications not provided by SGI.
+
+2.2 Recipient License Grant. Subject to the terms of this License and any third
+party intellectual property claims, Recipient hereby grants SGI and any other
+Recipients a worldwide, royalty-free, non-exclusive license, under any Recipient
+Patents, to make, have made, use, sell, offer for sale, import and/or otherwise
+transfer the Original Code and/or any Modifications provided by SGI.
+
+2.3 No License For Hardware Implementations. The licenses granted in Section
+2.1 and 2.2 are not applicable to implementation in Hardware of the algorithms
+embodied in the Original Code or any Modifications provided by SGI .
-This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see http://www.apache.org. /
+3. Redistributions.
+3.1 Retention of Notice/Copy of License. The Notice set forth in Exhibit A,
+below, must be conspicuously retained or included in any and all redistributions
+of Covered Code. For distributions of the Covered Code in source code form, the
+Notice must appear in every file that can include a text comments field; in
+executable form, the Notice and a copy of this License must appear in related
+documentation or collateral where the Recipient's rights relating to Covered
+Code are described. Any Additional Notice Provisions which actually appears in
+the Original Code must also be retained or included in any and all
+redistributions of Covered Code.
+
+3.2 Alternative License. Provided that Recipient is in compliance with the
+terms of this License, Recipient may, so long as without derogation of any of
+SGI's rights in and to the Original Code, distribute the source code and/or
+executable version(s) of Covered Code under (1) this License; (2) a license
+identical to this License but for only such changes as are necessary in order to
+clarify Recipient's role as licensor of Modifications; and/or (3) a license of
+Recipient's choosing, containing terms different from this License, provided
+that the license terms include this Section 3 and Sections 4, 6, 7, 10, 12, and
+13, which terms may not be modified or superseded by any other terms of such
+license. If Recipient elects to use any license other than this License,
+Recipient must make it absolutely clear that any of its terms which differ from
+this License are offered by Recipient alone, and not by SGI. It is emphasized
+that this License is a limited license, and, regardless of the license form
+employed by Recipi ent in accordance with this Section 3.2, Recipient may
+relicense only such rights, in Original Code and Modifications by SGI, as it has
+actually been granted by SGI in this License.
+
+3.3 Indemnity. Recipient hereby agrees to indemnify SGI for any liability
+incurred by SGI as a result of any such alternative license terms Recipient
+offers.
+
+4. Termination. This License and the rights granted hereunder will terminate
+automatically if Recipient breaches any term herein and fails to cure such
+breach within 30 days thereof. Any sublicense to the Covered Code that is
+properly granted shall survive any termination of this License, absent
+termination by the terms of such sublicense. Provisions that, by their nature,
+must remain in effect beyond the termination of this License, shall survive.
+
+5. No Trademark Or Other Rights. This License does not grant any rights to:
+(i) any software apart from the Covered Code, nor shall any other rights or
+licenses not expressly granted hereunder arise by implication, estoppel or
+otherwise with respect to the Covered Code; (ii) any trade name, trademark or
+service mark whatsoever, including without limitation any related right for
+purposes of endorsement or promotion of products derived from the Covered Code,
+without prior written permission of SGI; or (iii) any title to or ownership of
+the Original Code, which shall at all times remains with SGI. All rights in the
+Original Code not expressly granted under this License are reserved.
+
+6. Compliance with Laws; Non-Infringement. There are various worldwide laws,
+regulations, and executive orders applicable to dispositions of Covered Code,
+including without limitation export, re-export, and import control laws,
+regulations, and executive orders, of the U.S. government and other countries,
+and Recipient is reminded it is obliged to obey such laws, regulations, and
+executive orders. Recipient may not distribute Covered Code that (i) in any way
+infringes (directly or contributorily) any intellectual property rights of any
+kind of any other person or entity or (ii) breaches any representation or
+warranty, express, implied or statutory, to which, under any applicable law, it
+might be deemed to have been subject.
+
+7. Claims of Infringement. If Recipient learns of any third party claim that
+any disposition of Covered Code and/or functionality wholly or partially
+infringes the third party's intellectual property rights, Recipient will
+promptly notify SGI of such claim.
+
+8. Versions of the License. SGI may publish revised and/or new versions of the
+License from time to time, each with a distinguishing version number. Once
+Covered Code has been published under a particular version of the License,
+Recipient may, for the duration of the license, continue to use it under the
+terms of that version, or choose to use such Covered Code under the terms of any
+subsequent version published by SGI. Subject to the provisions of Sections 3
+and 4 of this License, only SGI may modify the terms applicable to Covered Code
+created under this License.
+
+9. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED "AS IS." ALL EXPRESS AND
+IMPLIED WARRANTIES AND CONDITIONS ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION,
+ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
+FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. SGI ASSUMES NO RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD THE SOFTWARE PROVE
+DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR SERVICING, REPAIR
+OR CORRECTION. THIS DISCLAIMER OF WARRANTY IS AN ESSENTIAL PART OF THIS
+LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT SUBJECT TO
+THIS DISCLAIMER.
+
+10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES NOR LEGAL THEORY, WHETHER
+TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY), CONTRACT,
+OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING,
+WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, LOSS OF DATA,
+COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR
+LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH
+DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR
+PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR
+LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND
+LIMITATION MAY NOT APPLY TO RECIPIENT.
+
+11. Indemnity. Recipient shall be solely responsible for damages arising,
+directly or indirectly, out of its utilization of rights under this License.
+Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc. from
+and against any loss, liability, damages, costs or expenses (including the
+payment of reasonable attorneys fees) arising out of Recipient's use,
+modification, reproduction and distribution of the Covered Code or out of any
+representation or warranty made by Recipient.
+
+12. U.S. Government End Users. The Covered Code is a "commercial item"
+consisting of "commercial computer software" as such terms are defined in title
+48 of the Code of Federal Regulations and all U.S. Government End Users acquire
+only the rights set forth in this License and are subject to the terms of this
+License.
+
+13. Miscellaneous. This License represents the complete agreement concerning
+the its subject matter. If any provision of this License is held to be
+unenforceable, such provision shall be reformed so as to achieve as nearly as
+possible the same legal and economic effect as the original provision and the
+remainder of this License will remain in effect. This License shall be governed
+by and construed in accordance with the laws of the United States and the State
+of California as applied to agreements entered into and to be performed entirely
+within California between California residents. Any litigation relating to this
+License shall be subject to the exclusive jurisdiction of the Federal Courts of
+the Northern District of California (or, absent subject matter jurisdiction in
+such courts, the courts of the State of California), with venue lying
+exclusively in Santa Clara County, California, with the losing party responsible
+for costs, including without limitation, court costs and reasonable attorneys
+fees and ex penses. The application of the United Nations Convention on
+Contracts for the International Sale of Goods is expressly excluded. Any law or
+regulation that provides that the language of a contract shall be construed
+against the drafter shall not apply to this License.
+
+Exhibit A License Applicability. Except to the extent portions of this file are
+made subject to an alternative license as permitted in the SGI Free Software
+License B, Version 1.1 (the "License"), the contents of this file are subject
+only to the provisions of the License. You may not use this file except in
+compliance with the License. You may obtain a copy of the License at Silicon
+Graphics, Inc., attn: Legal Services, 1600 Amphitheatre Parkway, Mountain View,
+CA 94043-1351, or at: http://oss.sgi.com/projects/FreeB Note that, as provided
+in the License, the Software is distributed on an "AS IS" basis, with ALL
+EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, INCLUDING, WITHOUT
+LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY,
+SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+Original Code. The Original Code is: [name of software, version number, and
+release date], developed by Silicon Graphics, Inc. The Original Code is
+Copyright (c) [dates of first publication, as appearing in the Notice in the
+Original Code] Silicon Graphics, Inc. Copyright in any portions created by
+third parties is as indicated elsewhere herein. All Rights Reserved.
+Additional Notice Provisions: [such additional provisions, if any, as appear in
+the Notice in the Original Code under the heading "Additional Notice
+Provisions"]
+
+%% The following software may be included in this product: Byte Code
+Engineering Library (BCEL) v. 5; Use of any of this software is governed by the
+terms of the license below:
+Apache Software License
+
+/
+====================================================================
+The Apache Software License, Version 1.1
-%% The following software may be included in this product: Regexp, Regular Expression Package v. 1.2; Use of any of this software is governed by the terms of the license below: The Apache Software License, Version 1.1
Copyright (c) 2001 The Apache Software Foundation. All rights reserved.
-Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials providedwith the distribution.
+
+3. The end-user documentation included with the redistribution, if any, must
+include the following acknowledgment: "This product includes software developed
+by the Apache Software Foundation (http://www.apache.org/)." Alternately, this
+acknowledgment may appear in the software itself, if and wherever such
+third-party acknowledgments normally appear.
+
+4. The names "Apache" and "Apache Software Foundation"and "Apache BCEL" must
+not be used to endorse or promote products derived from this software without
+prior written permission. For written permission, please contact
+apache@apache.org.
+
+5. Products derived from this software may not be called"Apache", "Apache
+BCEL", nor may "Apache" appear in their name,without prior written permission of
+the Apache Software Foundation.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED ORIMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSEARE DISCLAIMED. IN NO EVENT SHALL THE APACHE
+SOFTWAREFOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT,INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVERCAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING INANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THEPOSSIBILITY OF SUCH DAMAGE.
+====================================================================
-2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+This software consists of voluntary contributions made by many individuals on
+behalf of the Apache Software Foundation. For more information on the Apache
+Software Foundation, please see http://www.apache.org. /
-3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment:
-"This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.
-4. The names "Apache" and "Apache Software Foundation" and "Apache Turbine" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact apache@apache.org.
-5. Products derived from this software may not be called "Apache", "Apache Turbine", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation.
+%% The following software may be included in this product: Regexp, Regular
+Expression Package v. 1.2; Use of any of this software is governed by the terms
+of the license below: The Apache Software License, Version 1.1
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-====================================================================
-This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see http://www.apache.org.
+Copyright (c) 2001 The Apache Software Foundation. All rights reserved.
-%% The following software may be included in this product: CUP Parser Generator for Java v. 0.10k; Use of any of this software is governed by the terms of the license below: CUP Parser Generator Copyright Notice, License, and Disclaimer
+Redistribution and use in source and binary forms, with or without
+modification,are permitted provided that the following conditions are met:
-Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian
-Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided thatthe above copyright notice appear in all copies and that both the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the names of the authors or their employersnot be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
-The authors and their employers disclaim all warranties with regard to thissoftware, including all implied warranties of merchantability and fitness. In no event shall the authors or their employers be liable for anyspecial, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract,negligence or other tortious action, arising out of or in connection withthe use or performance of this software.
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
-%% The following software may be included in this product: JLex: A Lexical Analyzer Generator for Java v. 1.2.5; Use of any of this software is governed by the terms of the license below: JLEX COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.
+3. The end-user documentation included with the redistribution, if any, must
+include the following acknowledgment: "This product includes software developed
+by the Apache Software Foundation (http://www.apache.org/)." Alternately, this
+acknowledgment may appear in the software itself, if and wherever such
+third-party acknowledgments normally appear.
-Copyright 1996-2003 by Elliot Joel Berk and C. Scott Ananian
+4. The names "Apache" and "Apache Software Foundation" and "Apache Turbine"
+must not be used to endorse or promote products derived from this software
+without prior written permission. For written permission, please contact
+apache@apache.org.
-Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright noticeappear in all copies and that both the copyright notice and this permission notice and warrantydisclaimer appear in supporting documentation, and that the name of the authors or their employersnot be used in advertising or publicity pertaining to distribution of the software withoutspecific, written prior permission.
+5. Products derived from this software may not be called "Apache", "Apache
+Turbine", nor may "Apache" appear in their name, without prior written
+permission of the Apache Software Foundation.
-The authors and their employers disclaim all warranties with regard to thissoftware, including all implied warranties of merchantability and fitness. In no event shall the authorsor their employers be liable for any special, indirect or consequential damages or any damageswhatsoever resulting from loss of use, data or profits, whether in an action of contract, negligenceor other tortious action, arising out of or in connection with the use or performance of thissoftware.
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE
+SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-Java is a trademark of Sun Microsystems, Inc. References to the Java programminglanguage in relation to JLex are not meant to imply that Sun endorses this product.
+====================================================================
-%% The following software may be included in this product: SAX v. 2.0.1; Use of any of this software is governed by the terms of the license below: Copyright Status
+This software consists of voluntary contributions made by many individuals on
+behalf of the Apache Software Foundation. For more information on the Apache
+Software Foundation, please see http://www.apache.org.
+
+%% The following software may be included in this product: CUP Parser Generator
+for Java v. 0.10k; Use of any of this software is governed by the terms of the
+license below: CUP Parser Generator Copyright Notice, License, and Disclaimer
+
+Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted, provided that
+the above copyright notice appear in all copies and that both the copyright
+notice and this permission notice and warranty disclaimer appear in supporting
+documentation, and that the names of the authors or their employers not be used
+in advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.
+
+The authors and their employers disclaim all warranties with regard to this
+software, including all implied warranties of merchantability and fitness. In
+no event shall the authors or their employers be liable for any special,
+indirect or consequential damages or any damages whatsoever resulting from loss
+of use, data or profits, whether in an action of contract,negligence or other
+tortious action, arising out of or in connection with the use or performance of
+this software.
+
+%% The following software may be included in this product: JLex: A Lexical
+Analyzer Generator for Java v. 1.2.5; Use of any of this software is governed
+by the terms of the license below: JLEX COPYRIGHT NOTICE, LICENSE AND
+DISCLAIMER.
+
+Copyright 1996-2003 by Elliot Joel Berk and C. Scott Ananian
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted, provided that
+the above copyright notice appear in all copies and that both the copyright
+notice and this permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of the authors or their employers not be used
+in advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.
+
+The authors and their employers disclaim all warranties with regard to this
+software, including all implied warranties of merchantability and fitness. In
+no event shall the authors or their employers be liable for any special,
+indirect or consequential damages or any damages whatsoever resulting from loss
+of use, data or profits, whether in an action of contract, negligence or other
+tortious action, arising out of or in connection with the use or performance of
+this software.
+
+Java is a trademark of Sun Microsystems, Inc. References to the Java
+programming language in relation to JLex are not meant to imply that Sun
+endorses this product.
+
+%% The following software may be included in this product: SAX v. 2.0.1; Use
+of any of this software is governed by the terms of the license below:
+Copyright Status
SAX is free!
-In fact, it's not possible to own a license to SAX, since it's been placed in the public domain.
+In fact, it's not possible to own a license to SAX, since it's been placed in
+the public domain.
No Warranty
-Because SAX is released to the public domain, there is no warranty for the design or for the software implementation, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide SAX "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 SAX is with you. Should SAX prove defective, you assume the cost of all necessary servicing, repair or correction.
-
-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 SAX, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use SAX (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 SAX to operate with any other programs), even if such holder or other party has been advised of the possibility of such damages.
+Because SAX is released to the public domain, there is no warranty for the
+design or for the software implementation, to the extent permitted by applicable
+law. Except when otherwise stated in writing the copyright holders and/or other
+parties provide SAX "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 SAX is with you. Should SAX prove defective, you
+assume the cost of all necessary servicing, repair or correction.
+
+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 SAX, be
+liable to you for damages, including any general, special, incidental or
+consequential damages arising out of the use or inability to use SAX (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 SAX to operate with any
+other programs), even if such holder or other party has been advised of the
+possibility of such damages.
Copyright Disclaimers
-This page includes statements to that effect by David Megginson, who would have been able to claim copyright for the original work.
+This page includes statements to that effect by David Megginson, who would have
+been able to claim copyright for the original work.
-SAX 1.0
+SAX 1.0
-Version 1.0 of the Simple API for XML (SAX), created collectively by the membership of the XML-DEV mailing list, is hereby released into the public domain.
+Version 1.0 of the Simple API for XML (SAX), created collectively by the
+membership of the XML-DEV mailing list, is hereby released into the public
+domain.
-No one owns SAX: you may use it freely in both commercial and non-commercial applications, bundle it with your software distribution, include it on a CD-ROM, list the source code in a book, mirror the documentation at your own web site, or use it in any other way you see fit.
+No one owns SAX: you may use it freely in both commercial and non-commercial
+applications, bundle it with your software distribution, include it on a CD-ROM,
+list the source code in a book, mirror the documentation at your own web site,
+or use it in any other way you see fit.
David Megginson, sax@megginson.com
1998-05-11
SAX 2.0
-I hereby abandon any property rights to SAX 2.0 (the Simple API for XML), and release all of the SAX 2.0 source code, compiled code, and documentation contained in this distribution into the Public Domain. SAX comes with NO WARRANTY or guarantee of fitness for any purpose.
+I hereby abandon any property rights to SAX 2.0 (the Simple API for XML), and
+release all of the SAX 2.0 source code, compiled code, and documentation
+contained in this distribution into the Public Domain. SAX comes with NO
+WARRANTY or guarantee of fitness for any purpose.
David Megginson, david@megginson.com
2000-05-05
-%% The following software may be included in this product: Cryptix; Use of any of this software is governed by the terms of the license below:
+%% The following software may be included in this product: Cryptix; Use of any
+of this software is governed by the terms of the license below:
+
Cryptix General License
Copyright © 1995-2003 The Cryptix Foundation Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions aremet:
-
-1.Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer.
-2.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-THIS SOFTWARE IS PROVIDED BY THE CRYPTIX FOUNDATION LIMITED AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS ORIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CRYPTIX FOUNDATION LIMITED OR CONTRIBUTORS BELIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESSINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OFTHE POSSIBILITY OF SUCH DAMAGE.
-
-%% The following software may be included in this product: W3C XML Schema Test Collection; Use of any of this software is governed by the terms of the license below:
-W3C® DOCUMENT NOTICE AND LICENSE
-Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts Institute ofTechnology, Institut National de Recherche en Informatique et en Automatique,Keio University). All Rights Reserved.
-http://www.w3.org/Consortium/Legal/
-
-Public documents on the W3C site are provided by the copyright holders under thefollowing license. The software or Document Type Definitions (DTDs) associatedwith W3C specifications are governed by the Software Notice. By using and/orcopying this document, or the W3C document from which this statement is linked,you (the licensee) agree that you have read, understood, and will comply withthe following terms and conditions:
-
-Permission to use, copy, and distribute the contents of this document, or theW3C document from which this statement is linked, in any medium for any purposeand without fee or royalty is hereby granted, provided that you include thefollowing on ALL copies of the document, or portions thereof, that you use:
- 1. A link or URL to the original W3C document.
- 2. The pre-existing copyright notice of the original author, or if it doesn'texist, a notice of the form: "Copyright © [$date-of-document] World Wide WebConsortium, (Massachusetts Institute of Technology, Institut National deRecherche en Informatique et en Automatique, Keio University). All RightsReserved. http://www.w3.org/Consortium/Legal/" (Hypertext is preferred, but atextual representation is permitted.)
- 3. If it exists, the STATUS of the W3C document.
-
-When space permits, inclusion of the full text of this NOTICE should beprovided. We request that authorship attribution be provided in any software,documents, or other items or products that you create pursuant to the
-implementation of the contents of this document, or any portion thereof.
-No right to create modifications or derivatives of W3C documents is grantedpursuant to this license. However, if additional requirements (documented in theCopyright FAQ) are satisfied, the right to create modifications or derivativesis sometimes granted by the W3C to individuals complying with those requirements.
-THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONSOR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OFMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE;THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THEIMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCEOR IMPLEMENTATION OF THE CONTENTS THEREOF.
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
-The name and trademarks of copyright holders may NOT be used in advertising orpublicity pertaining to this document or its contents without specific, writtenprior permission. Title to copyright in this document will at all times remainwith copyright holders.
+1.Redistributions of source code must retain the copyright notice, this list of
+conditions and the following disclaimer.
-----------------------------------------------------------------------------
-This formulation of W3C's notice and license became active on April 05 1999 soas to account for the treatment of DTDs, schema's and bindings. See the olderformulation for the policy prior to this date. Please see our Copyright FAQ forcommon questions about using materials from our site, including specific termsand conditions for packages like libwww, Amaya, and Jigsaw. Other questionsabout this notice can be directed to site-policy@w3.org.
-webmaster
-(last updated by reagle on 1999/04/99.)
-
-%% The following software may be included in this product: Stax API; Use of any of this software is governed by the terms of the license below:
-Streaming API for XML (JSR-173) Specification
-Reference Implementation
-License Agreement
-
-READ THE TERMS OF THIS (THE "AGREEMENT") CAREFULLY BEFORE VIEWING OR USING THESOFTWARE LICENSED HEREUNDER. BY VIEWING OR USING THE SOFTWARE, YOU AGREE TO THE TERMS OF THISAGREEMENT. IF YOU ARE ACCESSING THE SOFTWARE ELECTRONICALLY, INDICATE YOUR ACCEPTANCE OF THESETERMS BY SELECTING THE "ACCEPT" BUTTON AT THE END OF THIS AGREEMENT. IF YOU DO NOT AGREE TOALL THESE TERMS, PROMPTLY RETURN THE UNUSED SOFTWARE TO ORIGINAL CONTRIBUTOR, DEFINED HEREIN.
-1.0 DEFINITIONS.
+2.Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
+THE CRYPTIX FOUNDATION LIMITED AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
+ORIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE CRYPTIX FOUNDATION LIMITED OR CONTRIBUTORS BELIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOTLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESSINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OFTHE POSSIBILITY OF SUCH DAMAGE.
-1.1. "BEA" means BEA Systems, Inc., the licensor of the Original Code.
-1.2. "Contributor" means BEA and each entity that creates or contributes to thecreation of Modifications.
+%% The following software may be included in this product: W3C XML Schema Test
+Collection; Use of any of this software is governed by the terms of the license
+below:
-1.3. "Covered Code" means the Original Code or Modifications or the combinationof the Original Code and Modifications, in each case including portions thereof and corresponding documentation released with the source code.
+W3C DOCUMENT NOTICE AND LICENSE
-1.4. "Executable" means Covered Code in any form other than Source Code.
-1.5. "FCS" means first commercial shipment of a product.
+Copyright 1994-2002 World Wide Web Consortium, (Massachusetts Institute of
+Technology, Institut National de Recherche en Informatique et en
+Automatique,Keio University). All Rights Reserved.
-1.6. "Modifications" means any addition to or deletion from the substance orstructure of either the Original Code or any previous Modifications. When Covered Code isreleased as a series of files, a Modification is:
+http://www.w3.org/Consortium/Legal/
-(a) Any addition to or deletion from the contents of a file containing OriginalCode or previous Modifications.
+Public documents on the W3C site are provided by the copyright holders under the
+following license. The software or Document Type Definitions (DTDs) associated
+with W3C specifications are governed by the Software Notice. By using and/or
+copying this document, or the W3C document from which this statement is
+linked,you (the licensee) agree that you have read, understood, and will comply
+with the following terms and conditions:
+
+Permission to use, copy, and distribute the contents of this document, or theW3C
+document from which this statement is linked, in any medium for any purpose and
+without fee or royalty is hereby granted, provided that you include the
+following on ALL copies of the document, or portions thereof, that you use:
+
+1. A link or URL to the original W3C document.
+2. The pre-existing copyright notice of the original author, or if it doesn't
+exist, a notice of the form: "Copyright [$date-of-document] World Wide Web
+Consortium, (Massachusetts Institute of Technology, Institut National
+deRecherche en Informatique et en Automatique, Keio University). All Rights
+Reserved. http://www.w3.org/Consortium/Legal/" (Hypertext is preferred, but a
+textual representation is permitted.)
+3. If it exists, the STATUS of the W3C document.
+
+When space permits, inclusion of the full text of this NOTICE should be
+provided. We request that authorship attribution be provided in any
+software,documents, or other items or products that you create pursuant to the
+implementation of the contents of this document, or any portion thereof.
-(b) Any new file that contains any part of the Original Code or previousModifications.
+No right to create modifications or derivatives of W3C documents is granted
+pursuant to this license. However, if additional requirements (documented in
+the Copyright FAQ) are satisfied, the right to create modifications or
+derivatives is sometimes granted by the W3C to individuals complying with those
+requirements.
-1.7. "Original Code" means Source Code of computer software code ReferenceImplementation.
+THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO
+REPRESENTATIONSOR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+WARRANTIES OFMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+NON-INFRINGEMENT, OR TITLE;THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR
+ANY PURPOSE; NOR THAT THEIMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY
+THIRD PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-1.8. "Patent Claims" means any patent claim(s), now owned or hereafter acquired,including without limitation, method, process, and apparatus claims, in any patent for whichthe grantor has the right to grant a license.
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE
+PERFORMANCEOR IMPLEMENTATION OF THE CONTENTS THEREOF.
-1.9. "Reference Implementation" means the prototype or "proof of concept"implementaÂtion of the Specification developed and made available for license by or on behalf of BEA.
-1.10. "Source Code" means the preferred form of the Covered Code for makingmodifications to it, including all modules it contains, plus any associated documentation,interface definition files, scripts used to control compilation and installation of an Executable, orsource code differential comparisons against either the Original Code or another well known,available Covered Code of the Contributor's choice.
+The name and trademarks of copyright holders may NOT be used in advertising or
+publicity pertaining to this document or its contents without specific, written
+prior permission. Title to copyright in this document will at all times remain
+with copyright holders.
-1.11. "Specification" means the written specification for the Streaming API forXML , Java technology developed pursuant to the Java Community Process.
-1.12. "Technology Compatibility Kit" or "TCK" means the documentation, testingtools and test suites associated with the Specification as may be revised by BEA from time totime, that is provided so that an implementer of the SpecifiÂcation may determine if itsimplementation is compliant with the Specification.
+----------------------------------------------------------------------------
-1.13. "You" (or "Your") means an individual or a legal entity exercising rightsunder, and complying with all of the terms of, this Agreement or a future version of thisAgreement issued under Section 6.1. For legal entities, "You" includes any entity which controls,is controlled by, or is under common control with You. For purposes of this definition,"control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of theoutstanding shares or beneficial ownership of such entity.
+This formulation of W3C's notice and license became active on April 05 1999 so
+as to account for the treatment of DTDs, schema's and bindings. See the older
+formulation for the policy prior to this date. Please see our Copyright FAQ for
+common questions about using materials from our site, including specific terms
+and conditions for packages like libwww, Amaya, and Jigsaw. Other questions
+about this notice can be directed to site-policy@w3.org. webmaster (last
+updated by reagle on 1999/04/99.)
-2.0 SOURCE CODE LICENSE.
+%% The following software may be included in this product: Stax API; Use of any
+of this software is governed by the terms of the license below:
-2.1. Copyright Grant. Subject to the terms of this Agreement, each Contributorhereby grants You a non-exclusive, worldwide, royalty-free copyright license to reproduce,prepare derivative works of, publicly display, publicly perform, distribute and sublicense theCovered Code of such Contributor, if any, and such derivative works, in Source Code andExecutable form.
+Streaming API for XML (JSR-173) Specification
+Reference Implementation
+License Agreement
-2.2. Patent Grant. Subject to the terms of this Agreement, each Contributorhereby grants You a non-exclusive, worldwide, royalty-free patent license under the PatentClaims to make, use, sell, offer to sell, import and otherwise transfer the Covered Code preparedand provided by such Contributor, if any, in Source Code and Executable form. This patentlicense shall apply to the Covered Code if, at the time a Modification is added by the Contributor,such addition of the Modification causes such combination to be covered by the Patent Claims.The patent license shall not apply to any other combinations which include the Modification.
-2.3. Conditions to Grants. You understand that although each Contributorgrants the licenses to the Covered Code prepared by it, no assurances are provided by anyContributor that the Covered Code does not infringe the patent or other intellectual property rights ofany other entity. Each Contributor disclaims any liability to You for claims brought by anyother entity based on infringement of intellectual property rights or otherwise. As a conditionto exercising the rights and licenses granted hereunder, You hereby assume sole responsibility to secure any other intellectual property rights needed, if any. For example, if a thirdparty patent license is required to allow You to distribute Covered Code, it is Your responsibility to acquire that license before distributing such code.
+READ THE TERMS OF THIS (THE "AGREEMENT") CAREFULLY BEFORE VIEWING OR USING
+THESOFTWARE LICENSED HEREUNDER. BY VIEWING OR USING THE SOFTWARE, YOU AGREE TO
+THE TERMS OF THISAGREEMENT. IF YOU ARE ACCESSING THE SOFTWARE ELECTRONICALLY,
+INDICATE YOUR ACCEPTANCE OF THESETERMS BY SELECTING THE "ACCEPT" BUTTON AT THE
+END OF THIS AGREEMENT. IF YOU DO NOT AGREE TOALL THESE TERMS, PROMPTLY RETURN
+THE UNUSED SOFTWARE TO ORIGINAL CONTRIBUTOR, DEFINED HEREIN.
-2.4. Contributors' Representation. Each Contributor represents that to itsknowledge it has sufficient copyright rights in the Covered Code it provides , if any, to grantthe copyright license set forth in this Agreement.
+1.0 DEFINITIONS.
-3.0 DISTRIBUION RESTRICTIONS.
+1.1. "BEA" means BEA Systems, Inc., the licensor of the Original Code.
-3.1. Application of Agreement.
+1.2. "Contributor" means BEA and each entity that creates or contributes to the
+creation of Modifications.
-The Modifications which You create or to which You contribute are governed bythe terms of this Agreement, including without limitation Section 2.0. The Source Code versionof Covered Code may be distributed only under the terms of this Agreement or a future versionof this Agreement released under Section 6.1, and You must include a copy of this Agreementwith every copy of the Source Code You distribute. You may not offer or impose any terms on anySource Code version that alters or restricts the applicable version of this Agreement or therecipients' rights hereunder. However, You may include an additional document offering theadditional rights described in Section 3.3.
+1.3. "Covered Code" means the Original Code or Modifications or the combination
+of the Original Code and Modifications, in each case including portions thereof
+and corresponding documentation released with the source code.
-3.2. Description of Modifications.
+1.4. "Executable" means Covered Code in any form other than Source Code.
-You must cause all Covered Code to which You contribute to contain a filedocumenting the changes You made to create that Covered Code and the date of any change. You mustinclude a prominent statement that the Modification is derived, directly or indirectly, fromOriginal Code provided by BEA and including the name of BEA in (a) the Source Code, and (b) inany notice in an Executable version or related documentation in which You describe the origin orownership ofthe Covered Code.
+1.5. "FCS" means first commercial shipment of a product.
-%% The following software may be included in this product: X Window System; Use of any of this software is governed by the terms of the license below:
-Copyright The Open Group
+1.6. "Modifications" means any addition to or deletion from the substance or
+structure of either the Original Code or any previous Modifications. When
+Covered Code is released as a series of files, a Modification is:
-Permission to use, copy, modify, distribute, and sell this software and itsdocumentation for any purpose is hereby granted without fee, provided that theabove copyright notice appear in all copies and that both that copyright noticeand this permission notice appear in supporting documentation.
+(a) Any addition to or deletion from the contents of a file containing Original
+Code or previous Modifications.
-The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.
+(b) Any new file that contains any part of the Original Code or previous
+Modifications.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUPBE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OFCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THESOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+1.7. "Original Code" means Source Code of computer software code Reference
+Implementation.
-Except as contained in this notice, the name of The Open Group shall not be usedin advertising or otherwise to promote the sale, use or other dealings in thisSoftware without prior written authorization from The Open Group.
+1.8. "Patent Claims" means any patent claim(s), now owned or hereafter
+acquired,including without limitation, method, process, and apparatus claims, in
+any patent for which the grantor has the right to grant a license.
-Portions also covered by other licenses as noted in the above URL.
+1.9. "Reference Implementation" means the prototype or "proof of
+concept"implementation of the Specification developed and made available for
+license by or on behalf of BEA.
-%% The following software may be included in this product: dom4j v. 1.6; Use of any of this software is governed by the terms of the license below:
-Redistribution and use of this software and associated documentation
-("Software"), with or without modification, are permitted provided that thefollowing conditions are met:
+1.10. "Source Code" means the preferred form of the Covered Code for making
+modifications to it, including all modules it contains, plus any associated
+documentation,interface definition files, scripts used to control compilation
+and installation of an Executable, or source code differential comparisons
+against either the Original Code or another well known,available Covered Code of
+the Contributor's choice.
- 1. Redistributions of source code must retain copyright statements andnotices. Redistributions must also contain a copy of this document.
- 2. Redistributions in binary form must reproduce the above copyright notice,this list of conditions and the following disclaimer in the documentation and/orother materials provided with the distribution.
- 3. The name "DOM4J" must not be used to endorse or promote products derivedfrom this Software without prior written permission of MetaStuff, Ltd. Forwritten permission, please contact dom4j-info@metastuff.com.
- 4. Products derived from this Software may not be called "DOM4J" nor may"DOM4J" appear in their names without prior written permission of MetaStuff,Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
- 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
-THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND ANYEXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AREDISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE LIABLE FORANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ONANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+1.11. "Specification" means the written specification for the Streaming API for
+XML , Java technology developed pursuant to the Java Community Process.
-Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
+1.12. "Technology Compatibility Kit" or "TCK" means the documentation, testing
+tools and test suites associated with the Specification as may be revised by BEA
+from time to time, that is provided so that an implementer of the Specification
+may determine if its implementation is compliant with the Specification.
-%% The following software may be included in this product: Retroweaver; Use of any of this software is governed by the terms of the license below:
-Copyright (c) February 2004, Toby Reyelts
-All rights reserved.
+1.13. "You" (or "Your") means an individual or a legal entity exercising rights
+under, and complying with all of the terms of, this Agreement or a future
+version of this Agreement issued under Section 6.1. For legal entities, "You"
+includes any entity which controls,is controlled by, or is under common control
+with You. For purposes of this definition,"control" means (a) the power, direct
+or indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or (b) ownership of more than fifty percent (50%) of the
+outstanding shares or beneficial ownership of such entity.
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+2.0 SOURCE CODE LICENSE.
-Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-Neither the name of Toby Reyelts nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+2.1. Copyright Grant. Subject to the terms of this Agreement, each Contributor
+hereby grants You a non-exclusive, worldwide, royalty-free copyright license to
+reproduce,prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Covered Code of such Contributor, if any, and such
+derivative works, in Source Code and Executable form.
+
+2.2. Patent Grant. Subject to the terms of this Agreement, each Contributor
+hereby grants You a non-exclusive, worldwide, royalty-free patent license under
+the Patent Claims to make, use, sell, offer to sell, import and otherwise
+transfer the Covered Code prepared and provided by such Contributor, if any, in
+Source Code and Executable form. This patent license shall apply to the Covered
+Code if, at the time a Modification is added by the Contributor,such addition of
+the Modification causes such combination to be covered by the Patent Claims.
+The patent license shall not apply to any other combinations which include the
+Modification.
+
+2.3. Conditions to Grants. You understand that although each Contributor
+grants the licenses to the Covered Code prepared by it, no assurances are
+provided by any Contributor that the Covered Code does not infringe the patent
+or other intellectual property rights of any other entity. Each Contributor
+disclaims any liability to You for claims brought by any other entity based on
+infringement of intellectual property rights or otherwise. As a condition to
+exercising the rights and licenses granted hereunder, You hereby assume sole
+responsibility to secure any other intellectual property rights needed, if any.
+For example, if a thirdparty patent license is required to allow You to
+distribute Covered Code, it is Your responsibility to acquire that license
+before distributing such code.
+
+2.4. Contributors' Representation. Each Contributor represents that to its
+knowledge it has sufficient copyright rights in the Covered Code it provides ,
+if any, to grant the copyright license set forth in this Agreement.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+3.0 DISTRIBUION RESTRICTIONS.
-%% The following software may be included in this product: stripper; Use of any of this software is governed by the terms of the license below:
-Stripper : debug information stripper
-Copyright (c) 2003 Kohsuke Kawaguchi
-All rights reserved.
+3.1. Application of Agreement.
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-3. Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived fromthis software without specific prior written permission.
+The Modifications which You create or to which You contribute are governed by
+the terms of this Agreement, including without limitation Section 2.0. The
+Source Code version of Covered Code may be distributed only under the terms of
+this Agreement or a future version of this Agreement released under Section 6.1,
+and You must include a copy of this Agreement with every copy of the Source Code
+You distribute. You may not offer or impose any terms on any Source Code
+version that alters or restricts the applicable version of this Agreement or the
+recipients' rights hereunder. However, You may include an additional document
+offering the additional rights described in Section 3.3.
+
+3.2. Description of Modifications.
+
+You must cause all Covered Code to which You contribute to contain a file
+documenting the changes You made to create that Covered Code and the date of any
+change. You must include a prominent statement that the Modification is
+derived, directly or indirectly, from Original Code provided by BEA and
+including the name of BEA in (a) the Source Code, and (b) in any notice in an
+Executable version or related documentation in which You describe the origin or
+ownership of the Covered Code.
+
+%% The following software may be included in this product: X Window System; Use
+of any of this software is governed by the terms of the license below:
+Copyright The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that the
+above copyright notice appear in all copies and that both that copyright notice
+and this permission notice appear in supporting documentation.
+
+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
+ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN
+GROUPBE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OFCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH
+THESOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be used
+in advertising or otherwise to promote the sale, use or other dealings in this
+Software without prior written authorization from The Open Group.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+Portions also covered by other licenses as noted in the above URL.
+%% The following software may be included in this product: dom4j v. 1.6; Use
+of any of this software is governed by the terms of the license below:
-%% The following software may be included in this product: libpng official PNG reference library; Use of any of this software is governed by the terms of the license below:
-This copy of the libpng notices is provided for your convenience. In case ofany discrepancy between this copy and the notices in the file png.h that isincluded in the libpng distribution, the latter shall prevail.
+Redistribution and use of this software and associated documentation
+("Software"), with or without modification, are permitted provided that the
+following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices
+Redistributions must also contain a copy of this document.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice,this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+3. The name "DOM4J" must not be used to endorse or promote products derived
+from this Software without prior written permission of MetaStuff, Ltd. For
+written permission, please contact dom4j-info@metastuff.com.
+
+4. Products derived from this Software may not be called "DOM4J" nor may"DOM4J"
+appear in their names without prior written permission of MetaStuff,Ltd. DOM4J
+is a registered trademark of MetaStuff, Ltd.
+
+5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
+
+THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
+ANYEXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+AREDISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE LIABLE
+FORANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ONANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
+
+%% The following software may be included in this product: Retroweaver; Use of
+any of this software is governed by the terms of the license below:
+
+Copyright (c) February 2004, Toby Reyelts All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list
+of conditions and the following disclaimer. Redistributions in binary form must
+reproduce the above copyright notice, this list of conditions and the following
+disclaimer in the documentation and/or other materials provided with the
+distribution. Neither the name of Toby Reyelts nor the names of his
+contributors may be used to endorse or promote products derived from this
+software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+%% The following software may be included in this product: stripper; Use of any
+of this software is governed by the terms of the license below:
+
+Stripper : debug information stripper Copyright (c) 2003 Kohsuke Kawaguchi All
+rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its contributors
+may be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+%% The following software may be included in this product: libpng official PNG
+reference library; Use of any of this software is governed by the terms of the
+license below:
+
+This copy of the libpng notices is provided for your convenience. In case of
+any discrepancy between this copy and the notices in the file png.h that is
+included in the libpng distribution, the latter shall prevail.
COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
-If you modify libpng you may insert additional notices immediately followingthis sentence.
+If you modify libpng you may insert additional notices immediately following
+this sentence.
-libpng version 1.2.6, December 3, 2004, is Copyright (c) 2004 Glenn Randers-Pehrson, and is distributed according to the same disclaimer and license as libpng-1.2.5with the following individual added to the list of Contributing Authors
- Cosmin Truta
+libpng version 1.2.6, December 3, 2004, is Copyright (c) 2004 Glenn
+ Randers-Pehrson, and is distributed according to the same disclaimer and
+ license as libpng-1.2.5with the following individual added to the list of
+ Contributing Authors Cosmin Truta
-libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are distributed according to the same disclaimer and license as libpng-1.0.6 with the following individuals added to the list of Contributing Authors
- Simon-Pierre Cadieux
- Eric S. Raymond
- Gilles Vollant
+libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are
+ Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are distributed according
+ to the same disclaimer and license as libpng-1.0.6 with the following
+ individuals added to the list of Contributing Authors Simon-Pierre Cadieux
+ Eric S. Raymond Gilles Vollant
and with the following additions to the disclaimer:
- There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our efforts or the library will fulfill any of your particular purposes or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user.
+There is no warranty against interference with your enjoyment of the library or
+against infringement. There is no warranty that our efforts or the library will
+fulfill any of your particular purposes or needs. This library is provided with
+all faults, and the entire risk of satisfactory quality, performance, accuracy,
+and effort is with the user.
-libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, areCopyright (c) 1998, 1999 Glenn Randers-Pehrson, and are distributed according to the same disclaimer and license as libpng-0.96,with the following individuals added to the list of Contributing Authors:
- Tom Lane
- Glenn Randers-Pehrson
+libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are Copyright
+ (c) 1998, 1999 Glenn Randers-Pehrson, and are distributed according to the
+ same disclaimer and license as libpng-0.96,with the following individuals
+ added to the list of Contributing Authors: Tom Lane Glenn Randers-Pehrson
Willem van Schaik
-libpng versions 0.89, June 1996, through 0.96, May 1997, are Copyright (c) 1996, 1997 Andreas Dilger
-Distributed according to the same disclaimer and license as libpng-0.88, with the following individuals added to the list of Contributing Authors:
- John Bowler
- Kevin Bracey
- Sam Bushell
- Magnus Holmgren
- Greg Roelofs
- Tom Tanner
+libpng versions 0.89, June 1996, through 0.96, May 1997, are Copyright (c) 1996,
+1997 Andreas Dilger Distributed according to the same disclaimer and license as
+libpng-0.88, with the following individuals added to the list of Contributing
+Authors: John Bowler Kevin Bracey Sam Bushell Magnus Holmgren Greg Roelofs Tom
+Tanner
-libpng versions 0.5, May 1995, through 0.88, January 1996, are Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
+libpng versions 0.5, May 1995, through 0.88, January 1996, are Copyright (c)
+1995, 1996 Guy Eric Schalnat, Group 42, Inc.
-For the purposes of this copyright and license, "Contributing Authors"is defined as the following set of individuals:
+For the purposes of this copyright and license, "Contributing Authors"is defined
+as the following set of individuals:
Andreas Dilger
Dave Martindale
@@ -653,46 +1488,77 @@ For the purposes of this copyright and license, "Contributing Authors"is defined
Paul Schmidt
Tim Wegner
-The PNG Reference Library is supplied "AS IS". The Contributing Authorsand Group 42, Inc. disclaim all warranties, expressed or implied, including, without limitation, the warranties of merchantability and offitness for any purpose. The Contributing Authors and Group 42, Inc. assume no liability for direct, indirect, incidental, special, exemplary,or consequential damages, which may result from the use of the PNG Reference Library, even if advised of the possibility of such damage.
+The PNG Reference Library is supplied "AS IS". The Contributing Authors and
+Group 42, Inc. disclaim all warranties, expressed or implied, including,
+without limitation, the warranties of merchantability and of fitness for any
+purpose. The Contributing Authors and Group 42, Inc. assume no liability for
+direct, indirect, incidental, special, exemplary,or consequential damages, which
+may result from the use of the PNG Reference Library, even if advised of the
+possibility of such damage.
-Permission is hereby granted to use, copy, modify, and distribute thissource code, or portions hereof, for any purpose, without fee, subjectto the following restrictions:
+Permission is hereby granted to use, copy, modify, and distribute this source
+code, or portions hereof, for any purpose, without fee, subject to the following
+restrictions:
-1. The origin of this source code must not be misrepresented.
+1. The origin of this source code must not be misrepresented.
-2. Altered versions must be plainly marked as such and must not be misrepresented as being the original source.
+2. Altered versions must be plainly marked as such and must not be
+misrepresented as being the original source.
-3. This Copyright notice may not be removed or altered from any source or altered source distribution.
+3. This Copyright notice may not be removed or altered from any source or
+altered source distribution.
-The Contributing Authors and Group 42, Inc. specifically permit, withoutfee, and encourage the use of this source code as a component to supporting the PNG file format in commercial products. If you use thissource code in a product, acknowledgment is not required but would be appreciated.
+The Contributing Authors and Group 42, Inc. specifically permit, without fee,
+and encourage the use of this source code as a component to supporting the PNG
+file format in commercial products. If you use this source code in a product,
+acknowledgment is not required but would be appreciated.
-A "png_get_copyright" function is available, for convenient use in "about"boxes and the like:
+A "png_get_copyright" function is available, for convenient use in "about"boxes
+and the like:
printf("%s",png_get_copyright(NULL));
-Also, the PNG logo (in PNG format, of course) is supplied in the files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
+Also, the PNG logo (in PNG format, of course) is supplied in the files
+"pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
-Libpng is OSI Certified Open Source Software. OSI Certified Open Source is acertification mark of the Open Source Initiative.
+Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a
+certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
December 3, 2004
-%% The following software may be included in this product: Libungif - An uncompressed GIF library; Use of any of this software is governed by the terms of the license below:
-The GIFLIB distribution is Copyright (c) 1997 Eric S. Raymond
+%% The following software may be included in this product: Libungif - An
+uncompressed GIF library; Use of any of this software is governed by the terms
+of the license below:
+The GIFLIB distribution is Copyright (c) 1997 Eric S.Raymond
-Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+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 inall copies or substantial portions of the Software.
+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 ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, 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 INTHE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHERLIABILITY, 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
+INTHE SOFTWARE.
-%% The following software may be included in this product: Ant; Use of any of this software is governed by the terms of the license below:
-License
-The Apache Software License Version 2.0
+%% The following software may be included in this product: Ant; Use of any of
+this software is governed by the terms of the license below: License The Apache
+Software License Version 2.0
-The Apache Software License Version 2.0 applies to all releases of Ant startingwith ant 1.6.1
+The Apache Software License Version 2.0 applies to all releases of Ant starting
+with ant 1.6.1
/*
* Apache License
@@ -911,17 +1777,20 @@ The License is accompanied by a NOTICE
This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
- This product includes also software developed by :
- - the W3C consortium (http://www.w3c.org) ,
- - the SAX project (http://www.saxproject.org)
+This product includes also software developed by : - the W3C consortium
+ (http://www.w3c.org) , - the SAX project (http://www.saxproject.org)
- Please read the different LICENSE files present in the root directory of this distribution.
+Please read the different LICENSE files present in the root directory of this
+distribution.
- The names "Ant" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact apache@apache.org.
+The names "Ant" and "Apache Software Foundation" must not be used to endorse or
+promote products derived from this software without prior written permission.
+For written permission, please contact apache@apache.org.
The Apache Software License, Version 1.1
-The Apache Software License, Version 1.1, applies to all versions of up to ant1.6.0 included.
+The Apache Software License, Version 1.1, applies to all versions of up to
+ant1.6.0 included.
/*
* ============================================================================
@@ -974,89 +1843,233 @@ The Apache Software License, Version 1.1, applies to all versions of up to ant1.
*/
-%% The following software may be included in this product: XML Resolver library; Use of any of this software is governed by the terms of the license below:
+%% The following software may be included in this product: XML Resolver
+library; Use of any of this software is governed by the terms of the license
+below:
+
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
- "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+ 1. Definitions.
- "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
- (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
- (b) You must cause any modified files to carry prominent notices stating that You changed the files; and
+ "Licensor" shall mean the copyright owner or entity authorized by the
+ copyright owner that is granting the License.
- (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+ "Legal Entity" shall mean the union of the acting entity and all other
+ entities that control, are controlled by, or are under common control
+ with that entity. For the purposes of this definition, "control" means
+ (i) the power, direct or indirect, to cause the direction or management
+ of such entity, whether by contract or otherwise, or (ii) ownership of
+ fifty percent (50%) or more of the outstanding shares, or
+ (iii) beneficial ownership of such entity.
- (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or
-documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+ "You" (or "Your") shall mean an individual or Legal Entity exercising
+ permissions granted by this License.
- You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation source,
+ and configuration files.
- 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+ "Object" form shall mean any form resulting from mechanical transformation
+ or translation of a Source form, including but not limited to compiled
+ object code, generated documentation, and conversions to other media types.
- 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+ "Work" shall mean the work of authorship, whether in Source or Object
+ form, made available under the License, as indicated by a copyright
+ notice that is included in or attached to the work (an example is
+ provided in the Appendix below).
- 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces
+ of, the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including the original
+ version of the Work and any modifications or additions to that Work or
+ Derivative Works thereof, that is intentionally submitted to Licensor
+ for inclusion in the Work by the copyright owner or by an individual
+ or Legal Entity authorized to submit on behalf of the copyright owner.
+ For the purposes of this definition, "submitted" means any form of
+ electronic, verbal, or written communication sent to the Licensor or
+ its representatives, including but not limited to communication on
+ electronic mailing lists, source code control systems, and issue
+ tracking systems that are managed by, or on behalf of, the Licensor
+ for the purpose of discussing and improving the Work, but excluding
+ communication that is conspicuously marked or otherwise designated
+ in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
- 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright
+ license to reproduce, prepare Derivative Works of, publicly display,
+ publicly perform, sublicense, and distribute the Work and such
+ Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of this
+ License, each Contributor hereby grants to You a perpetual, worldwide,
+ non-exclusive, no-charge, royalty-free, irrevocable (except as stated
+ in this section) patent license to make, have made, use, offer to sell,
+ sell, import, and otherwise transfer the Work, where such license
+ applies only to those patent claims licensable by such Contributor
+ that are necessarily infringed by their Contribution(s) alone or by
+ combination of their Contribution(s) with the Work to which such
+ Contribution(s) was submitted. If You institute patent litigation
+ against any entity (including a cross-claim or counterclaim in a
+ lawsuit) alleging that the Work or a Contribution incorporated within
+ the Work constitutes direct or contributory patent infringement, then
+ any patent licenses granted to You under this License for that Work
+ shall terminate as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the Work
+ or Derivative Works thereof in any medium, with or without modifications,
+ and in Source or Object form, provided that You meet the following
+ conditions:
+
+ (a) You must give any other recipients of the Work or Derivative Works
+ a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works that
+ You distribute, all copyright, patent, trademark, and attribution notices
+ from the Source form of the Work, excluding those notices that do not
+ pertain to any part of the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its distribution,
+ then any Derivative Works that You distribute must include a readable copy
+ of the attribution notices contained within such NOTICE file, excluding
+ those notices that do not pertain to any part of the Derivative Works, in
+ at least one of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or documentation,
+ if provided along with the Derivative Works; or, within a display generated
+ by the Derivative Works, if and wherever such third-party notices normally
+ appear. The contents of the NOTICE file are for informational purposes only
+ and do not modify the License. You may add Your own attribution notices
+ within Derivative Works that You distribute, alongside or as an addendum to
+ the NOTICE text from the Work, provided that such additional attribution
+ notices cannot be construed as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and may provide
+ additional or different license terms and conditions for use, reproduction,
+ or distribution of Your modifications, or for any such Derivative Works as a
+ whole, provided Your use, reproduction, and distribution of the Work otherwise
+ complies with the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise, any
+ Contribution intentionally submitted for inclusion in the Work by You to
+ the Licensor shall be under the terms and conditions of this License, without
+ any additional terms or conditions. Notwithstanding the above, nothing herein
+ shall supersede or modify the terms of any separate license agreement you may
+ have executed with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade names,
+ trademarks, service marks, or product names of the Licensor, except as required
+ for reasonable and customary use in describing the origin of the Work and
+ reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in
+ writing, Licensor provides the Work (and each Contributor provides its
+ Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+ ANY KIND, either express or implied, including, without limitation, any
+ warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or
+ FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining
+ the appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
- 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+ 8. Limitation of Liability. In no event and under no legal theory, whether
+ in tort (including negligence), contract, or otherwise, unless required by
+ applicable law (such as deliberate and grossly negligent acts) or agreed to
+ in writing, shall any Contributor be liable to You for damages, including
+ any direct, indirect, special, incidental, or consequential damages of any
+ character arising as a result of this License or out of the use or inability
+ to use the Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all other
+ commercial damages or losses), even if such Contributor has been advised
+ of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing the Work
+ or Derivative Works thereof, You may choose to offer, and charge a fee for,
+ acceptance of support, warranty, indemnity, or other liability obligations
+ and/or rights consistent with this License. However, in accepting such
+ obligations, You may act only on Your own behalf and on Your sole
+ responsibility, not on behalf of any other Contributor, and only if You
+ agree to indemnify, defend, and hold each Contributor harmless for any
+ liability incurred by, or claims asserted against, such Contributor by
+ reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
- To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+ To apply the Apache License to your work, attach the following boilerplate notice,
+ with the fields enclosed by brackets "[]" replaced with your own identifying
+ information. (Don't include the brackets!) The text should be enclosed in the
+ appropriate comment syntax for the file format. We also recommend that a file
+ or class name and description of purpose be included on the same "printed page"
+ as the copyright notice for easier identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+ this file except in compliance with the License. You may obtain a copy of the
+ License at
http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Unless required by applicable law or agreed to in writing, software distributed
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations under the License.
-%% The following software may be included in this product: ICU4J; Use of any of this software is governed by the terms of the license below:
-ICU License - ICU 1.8.1 and later COPYRIGHT AND PERMISSION NOTICE Cop
-yright (c)
-1995-2003 International Business Machines Corporation and others All rightsreserved. Permission is hereby granted, free of charge, to any person obtaininga copy of this software and associated documentation files (the "Software"), todeal in the Software without restriction, including without limitation therights to use, copy, modify, merge, publish, distribute, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,provided that the above copyright notice(s) and this permission notice appear inall copies of the Software and that both the above copyright notice(s) and thispermission notice appear in supporting documentation. THE SOFTWARE IS PROVIDED"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOTLIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSEAND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHTHOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANYSPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTINGFROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCEOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE ORPERFORMANCE OF THIS SOFTWARE. Except as contained in this notice, the name of acopyright holder shall not be used in advertising or otherwise to promote thesale, use or other dealings in this Software without prior written authorizationof the copyright holder.
+%% The following software may be included in this product: ICU4J; Use of any of
+this software is governed by the terms of the license below:
+ICU License - ICU 1.8.1 and later COPYRIGHT AND PERMISSION NOTICE Copyright (c)
+
+1995-2003 International Business Machines Corporation and others 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, and/or sell copies of
+ the Software, and to permit persons to whom the Software is furnished to do
+ so,provided that the above copyright notice(s) and this permission notice
+ appear in all copies of the Software and that both the above copyright
+ notice(s) and this permission notice appear in supporting documentation. THE
+ SOFTWARE IS PROVIDED"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOTLIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ PARTICULAR PURPOSEAND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL
+ THE COPYRIGHTHOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM,
+ OR ANYSPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
+ RESULTINGFROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ NEGLIGENCEOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+ USE ORPERFORMANCE OF THIS SOFTWARE. Except as contained in this notice, the
+ name of a copyright holder shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without prior written
+ authorization of the copyright holder.
+
+
+%% The following software may be included in this product: NekoHTML; Use of any
+of this software is governed by the terms of the license below: The CyberNeko
+Software License, Version 1.0
-%% The following software may be included in this product: NekoHTML; Use of any of this software is governed by the terms of the license below:
-The CyberNeko Software License, Version 1.0
-
(C) Copyright 2002,2003, Andy Clark. All rights reserved.
-
+
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
@@ -1084,28 +2097,55 @@ are met:
nor may "CyberNeko" appear in their name, without prior written
permission of the author.
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
+OR OTHER CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGE.
====================================================================
This license is based on the Apache Software License, version 1.1
-%% The following software may be included in this product: Jing; Use of any of this software is governed by the terms of the license below:
-Jing Copying Conditions
-
-Copyright (c) 2001-2003 Thai Open Source Software Center Ltd
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,this list of conditions and the following disclaimer in the documentation and/orother materials provided with the distribution.
- * Neither the name of the Thai Open Source Software Center Ltd nor the namesof its contributors may be used to endorse or promote products derived from thissoftware without specific prior written permission.
+%% The following software may be included in this product: Jing; Use of any of
+this software is governed by the terms of the license below: Jing Copying
+Conditions
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AREDISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ONANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+Copyright (c) 2001-2003 Thai Open Source Software Center Ltd All rights
+reserved.
+Redistribution and use in source and binary forms, with or without
+modification,are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice,this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the Thai Open Source Software Center Ltd nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+AREDISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ONANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+%% The following software may be included in this product: RelaxNGCC; Use of
+any of this software is governed by the terms of the license below:
-%% The following software may be included in this product: RelaxNGCC; Use of any of this software is governed by the terms of the license below:
Copyright (c) 2000-2003 Daisuke Okajima and Kohsuke Kawaguchi.
All rights reserved.
@@ -1138,624 +2178,235 @@ holders.
nor may "RELAXNGCC" appear in their name, without prior written
permission of the copyright holders.
-THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-%% The following software may be included in this product: RELAX NG Object Model/Parser; Use of any of this software is governed by the terms of the license below:
-The MIT License
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL THE APACHE
+SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+%% The following software may be included in this product: RELAX NG Object
+Model/Parser; Use of any of this software is governed by the terms of the
+license below: The MIT License
Copyright (c)
-Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,subject to the following conditions:
+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 allcopies or substantial portions of the Software.
+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 ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS ORCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR INCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS ORCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+INCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-%% The following software may be included in this product: XFree86-VidMode Extension; Use of any of this software is governed by the terms of the license below:
-Version 1.1 of ProjectLicence.
+%% The following software may be included in this product: XFree86-VidMode
+Extension; Use of any of this software is governed by the terms of the license
+below: Version 1.1 of Project Licence.
Copyright (C) 1994-2004 The Project, Inc. All rights reserved.
- Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicence, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,subject to the following conditions:
-
- 1. Redistributions of source code must retain the above copyright notice,this list of conditions, and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyrightnotice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution, and in thesame place and form as other copyright, license and disclaimer information. 3. The end-user documentation included with the redistribution, if any,must include the following acknowledgment: "This product includes softwaredeveloped by The XFree86 Project, Inc (http://www.xfree86.org/) and itscontributors", in the same place and form as other third-party acknowledgments.Alternately, this acknowledgment may appear in the software itself, in the sameform and location as other such third-party acknowledgments.
- 4. Except as contained in this notice, the name of The XFree86 Project,Inc shall not be used in advertising or otherwise to promote the sale, use orother dealings in this Software without prior written authorization from TheXFree86 Project, Inc.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ANDFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE XFREE86PROJECT, INC OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ORBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER INCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISINGIN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITYOF SUCH DAMAGE.
-
-
-%% The following software may be included in this product: RelaxNGCC; Use of any of this software is governed by the terms of the license below:
-This is version 2003-May-08 of the Info-ZIP copyright and license.
-The definitive version of this document should be available at
+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, sublicence, 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:
+
+1. Redistributions of source code must retain the above copyright notice,this
+list of conditions, and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution, and in the same place and form
+as other copyright, license and disclaimer information.
+
+3. The end-user documentation included with the redistribution, if any,must
+include the following acknowledgment: "This product includes software developed
+by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors", in
+the same place and form as other third-party acknowledgments. Alternately, this
+acknowledgment may appear in the software itself, in the same form and location
+as other such third-party acknowledgments.
+
+4. Except as contained in this notice, the name of The XFree86 Project,Inc
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from TheXFree86
+Project, Inc.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY ANDFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE XFREE86PROJECT, INC OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO,PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; ORBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER INCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISINGIN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITYOF SUCH DAMAGE.
+
+
+%% The following software may be included in this product: RelaxNGCC; Use of
+any of this software is governed by the terms of the license below: This is
+version 2003-May-08 of the Info-ZIP copyright and license. The definitive
+version of this document should be available at
ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely.
Copyright (c) 1990-2003 Info-ZIP. All rights reserved.
-For the purposes of this copyright and license, "Info-ZIP" is defined asthe following set of individuals:
-
- Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois, Jean-loup Gailly, Hunter Goatley, Ian Gorman, Chris Herborth, Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz, David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko, Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs, Kai Uwe Rommel, Steve Salisbury, Dave Smith, Christian Spieler, Antoine Verheijen,
- Paul von Behren, Rich Wales, Mike White
-
-This software is provided "as is," without warranty of any kind, expressor implied. In no event shall Info-ZIP or its contributors be held liablefor any direct, indirect, incidental, special or consequential damagesarising out of the use of or inability to use this software.
-
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute itfreely, subject to the following restrictions:
-
- 1. Redistributions of source code must retain the above copyright notice, definition, disclaimer, and this list of conditions.
-
- 2. Redistributions in binary form (compiled executables) must reproduce the above copyright notice, definition, disclaimer, and this list of conditions in documentation and/or other materials provided with the distribution. The sole exception to this condition is redistribution of a standard UnZipSFX binary (including SFXWiz) as part of a self-extracting archive; that is permitted without inclusion of this license, as long as the normal SFX banner has not been removed from the binary or disabled.
-
- 3. Altered versions--including, but not limited to, ports to new operating systems, existing ports with new graphical interfaces, and dynamic, shared, or static library versions--must be plainly marked as such and must not be misrepresented as being the original source. Such altered versions also must not be misrepresented as being Info-ZIP releases--including, but not limited to, labeling of the altered versions with the names "Info-ZIP" (or any variation thereof, including, but not limited to, different capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the explicit permission of Info-ZIP. Such altered versions are further prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP e-mail addresses or of the Info-ZIP URL(s).
- 4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip," "UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its own source and binary releases.
-
-
-%% The following software may be included in this product: XML Security; Use of any of this software is governed by the terms of the license below:
- The Apache Software License,
-Version 1.1
-PDF
-
-Copyright (C) 2002 The Apache SoftwareFoundation.
-All rights reserved. Redistribution anduse in source and binary forms, with or withoutmodifica-
-tion, are permitted provided that thefollowing conditions are met:
-1. Redistributions ofsource code must retain the above copyrightnotice, this list of conditions and the followingdisclaimer.
-2. Redistributions in binary form mustreproduce the above copyright notice, this list of conditions and the following disclaimerin the documentation and/or other materialsprovided with the distribution.
-3. The end-userdocumentation included with the redistribution, if any,must include the following acknowledgment:"This product includes software developed bythe Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment mayappear in the software itself, if and wherever suchthird-party acknowledgments normally appear.
-4. The names"Apache Forrest" and "Apache SoftwareFoundation" must not be used to endorse or promoteproducts
-derived from this software without priorwritten permission. For written permission,please contact apache@apache.org. 5. Products derivedfrom this software may not be called "Apache", normay "Apache" appear in their name, without prior written permission of the Apache Software Foundation.
-THIS SOFTWARE IS PROVIDED``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
-SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ORSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANYTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache SoftwareFoundation, please see http://www.apache.org.
-
-
-%% The following software may be included in this product: Regexp, Regular Expression Package v. 1.2; Use of any of this software is governed by the terms of the license below: The Apache Software License, Version 1.1
-Copyright (c) 2001 The Apache Software Foundation. All rights
-reserved.
-Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
-3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment:
-"This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.
-
-4. The names "Apache" and "Apache Software Foundation" and "Apache Turbine" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact apache@apache.org.
-
-5. Products derived from this software may not be called "Apache", "Apache Turbine", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation.
-
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-====================================================================
-This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see http://www.apache.org.
-
-
-%% The following software may be included in this product: Visual Studio. Use of any of this software is governed by the terms of the license below:
-
-END-USER LICENSE AGREEMENT FOR MICROSOFT SOFTWARE
-IMPORTANT-READ CAREFULLY: This End-User License Agreement ("EULA") is a legal agreement between you (either an individual or a single entity) and Microsoft Corporation ("Microsoft) for the Microsoft software that accompanies this EULA, which includes computer software and may include associated media, printed materials, "online" or electronic documentation, and Internet-based services ("Software"). An amendment or addendum to this EULA may accompany the Software. YOU AGREE TO BE BOUND BY THE TERMS OF THIS EULA BY INSTALLING, COPYING, OR OTHERWISE USING THE SOFTWARE. IF YOU DO NOT AGREE, DO NOT INSTALL, COPY, OR USE THE SOFTWARE; YOU MAY RETURN IT TO YOUR PLACE OF PURCHASE (IF APPLICABLE) FOR A FULL REFUND.
-
-MICROSOFT SOFTWARE LICENSE
-
-1. GRANTS OF LICENSE. Microsoft grants you the rights described in this EULA provided that you comply with all terms and conditions of this EULA. NOTE: Microsoft is not licensing to you any rights with respect to Crystal Reports for Microsoft Visual Studio .NET; your use of Crystal Reports for Microsoft Visual Studio .NET is subject to your acceptance of the terms and conditions of the enclosed (hard copy) end user license agreement from Crystal
-Decisions for that product.
-1.1 General License Grant. Microsoft grants to you as an individual, a personal, nonexclusive license to use the Software, and to make and use copies of the Software for the purposes of designing, developing, testing, and demonstrating your software product(s), provided that you are the only individual using the Software. If you are an entity, Microsoft grants to you a personal, nonexclusive license to use the Software, and to make and use copies of the Software, provided that for each individual using the Software within your organization, you have acquired a separate and valid license for each such individual.
-1.2 Documentation. You may make and use an unlimited number of copies of any documentation, provided that such copies shall be used only for personal purposes and are not to be republished or distributed (either in hard copy or electronic form) beyond your premises.
-1.3 Storage/Network Use. You may also store or install a copy of the Software on a storage device, such as a network server, used only to install or run the Software on computers used by licensed end users in accordance with Section 1.1. A single license for the Software may not be shared or used concurrently by multiple end users.
-1.4 Visual Studio—Effect of EULA. As a suite of development tools and other Microsoft software programs (each such tool or software program, a "Component"), Components that you receive as part of the Software may include a separate end-user license agreement (each, a "Component EULA"). Except as provided in Section 4 ("Prerelease Code"), in the event of inconsistencies between this EULA and any Component EULA, the terms of this EULA shall control. The Software may also contain third-party software programs. Any such software is provided for your use as a convenience and your use is subject to the terms and conditions of any license agreement contained in that software.
-2. ADDITIONAL LICENSE RIGHTS -- REDISTRIBUTABLE CODE. In addition to the rights granted in Section 1, certain portions of the Software, as described in this Section 2, are provided to you with additional license rights. These additional license rights are conditioned
-Everett VSPro 1
-Final 11.04.02
-upon your compliance with the distribution requirements and license limitations described in
-Section 3.
-2.1 Sample Code. Microsoft grants you a limited, nonexclusive, royalty-free license
-to: (a) use and modify the source code version of those portions of the Software identified as
-"Samples" in REDIST.TXT or elsewhere in the Software ("Sample Code") for the sole purposes
-of designing, developing, and testing your software product(s), and (b) reproduce and
-distribute the Sample Code, along with any modifications thereof, in object and/or source code
-form. For applicable redistribution requirements for Sample Code, see Section 3.1 below.
-2.2 Redistributable Code—General. Microsoft grants you a limited, nonexclusive,
-royalty-free license to reproduce and distribute the object code form of any portion of the
-Software listed in REDIST.TXT ("Redistributable Code"). For general redistribution
-requirements for Redistributable Code, see Section 3.1 below.
-2.3 Redistributable Code—Microsoft Merge Modules ("MSM"). Microsoft grants
-you a limited, nonexclusive, royalty-free license to reproduce and distribute the content of MSM
-file(s) listed in REDIST.TXT in the manner described in the Software documentation only so
-long as you redistribute such content in its entirety and do not modify such content in any way.
-For all other applicable redistribution requirements for MSM files, see Section 3.1 below.
-2.4 Redistributable Code—Microsoft Foundation Classes (MFC), Active Template
-Libraries (ATL), and C runtimes (CRTs). In addition to the rights granted in Section 1,
-Microsoft grants you a license to use and modify the source code version of those portions of
-the Software that are identified as MFC, ATL, or CRTs (collectively, the "VC Redistributables"),
-for the sole purposes of designing, developing, and testing your software product(s). Provided
-you comply with Section 3.1 and you rename any files created by you that are included in the
-Licensee Software (defined below), Microsoft grants you a limited, nonexclusive, royalty-free
-license to reproduce and distribute the object code version of the VC Redistributables, including
-any modifications you make. For purposes of this section, "modifications" shall mean
-enhancements to the functionality of the VC Redistributables. For all other applicable
-redistribution requirements for VC Redistributables, see Section 3.1 below.
-3. DISTRIBUTION REQUIREMENTS AND OTHER LICENSE RIGHTS AND
-LIMITATIONS. If you choose to exercise your rights under Section 2, any redistribution by
-you is subject to your compliance with Section 3.1; some of the Redistributable Code has
-additional limited use rights described in Section 3.2.
-3.1 General Distribution Requirements.
-(a) If you choose to redistribute Sample Code, or Redistributable Code
-(collectively, the "Redistributables") as described in Section 2, you agree: (i) except as otherwise
-noted in Section 2.1 (Sample Code), to distribute the Redistributables only in object code form
-and in conjunction with and as a part of a software application product developed by you that
-adds significant and primary functionality to the Redistributables ("Licensee Software");
-(ii) that the Redistributables only operate in conjunction with Microsoft Windows platforms;
-(iii) that if the Licensee Software is distributed beyond Licensee's premises or externally from
-Licensee's organization, to distribute the Licensee Software containing the Redistributables
-pursuant to an end user license agreement (which may be "break-the-seal", "click-wrap" or
-signed), with terms no less protective than those contained in this EULA; (iv) not to use
-Microsoft's name, logo, or trademarks to market the Licensee Software; (v) to display your own
-valid copyright notice which shall be sufficient to protect Microsoft's copyright in the Software;
-Everett VSPro 2
-Final 11.04.02
-(vi) not to remove or obscure any copyright, trademark or patent notices that appear on the
-Software as delivered to you; (vii) to indemnify, hold harmless, and defend Microsoft from and
-against any claims or lawsuits, including attorney's fees, that arise or result from the use or
-distribution of the Licensee Software; (viii) to otherwise comply with the terms of this EULA;
-and (ix) agree that Microsoft reserves all rights not expressly granted.
-You also agree not to permit further distribution of the Redistributables by your
-end users except you may permit further redistribution of the Redistributables by your
-distributors to your end-user customers if your distributors only distribute the Redistributables
-in conjunction with, and as part of, the Licensee Software, you comply with all other terms of
-this EULA, and your distributors comply with all restrictions of this EULA that are applicable
-to you.
-
-(b) If you use the Redistributables, then in addition to your compliance with
-the applicable distribution requirements described for the Redistributables, the following also
-applies. Your license rights to the Redistributables are conditioned upon your not (i) creating
-derivative works of the Redistributables in any manner that would cause the Redistributables in
-whole or in part to become subject to any of the terms of an Excluded License; or (ii)
-distributing the Redistributables (or derivative works thereof) in any manner that would cause
-the Redistributables to become subject to any of the terms of an Excluded License. An
-"Excluded License" is any license that requires as a condition of use, modification and/or
-distribution of software subject to the Excluded License, that such software or other software
-combined and/or distributed with such software be (x) disclosed or distributed in source code
-form; (y) licensed for the purpose of making derivative works; or (z) redistributable at no
-charge.
-3.2 Additional Distribution Requirements for Certain Redistributable Code.
-If you choose to redistribute the files discussed in this Section, then in addition to the terms of
-Section 3.1, you must ALSO comply with the following.
-(a) Microsoft SQL Server Desktop Engine ("MSDE"). If you redistribute
-MSDE you agree to comply with the following additional requirements: (a) Licensee
-Software shall not substantially duplicate the capabilities of Microsoft Access or, in the
-reasonable opinion of Microsoft, compete with same; and (b) unless Licensee Software
-requires your customers to license Microsoft Access in order to operate, you shall not
-reproduce or use MSDE for commercial distribution in conjunction with a general
-purpose word processing, spreadsheet or database management software product, or an
-integrated work or product suite whose components include a general purpose word
-processing, spreadsheet, or database management software product except for the
-exclusive use of importing data to the various formats supported by Microsoft Access.
-A product that includes limited word processing, spreadsheet or database components
-along with other components which provide significant and primary value, such as an
-accounting product with limited spreadsheet capability, is not considered to be a
-"general purpose" product.
-(b) Microsoft Data Access Components. If you redistribute the Microsoft
-Data Access Component file identified as MDAC_TYP.EXE, you also agree to
-redistribute such file in object code only in conjunction with and as a part of a Licensee
-Software developed by you with a Microsoft development tool product that adds
-significant and primary functionality to MDAC_TYP.EXE.
-Everett VSPro 3
-Final 11.04.02
-3.3 Separation of Components. The Software is licensed as a single product. Its
-component parts may not be separated for use by more than one user.
-3.4 Benchmark Testing. The Software may contain the Microsoft .NET Framework.
-You may not disclose the results of any benchmark test of the .NET Framework component of
-the Software to any third party without Microsoft's prior written approval.
-4. PRERELEASE CODE. Portions of the Software may be identified as prerelease code
-("Prerelease Code"). Such Prerelease Code is not at the level of performance and compatibility
-of the final, generally available product offering. The Prerelease Code may not operate correctly
-and may be substantially modified prior to first commercial shipment. Microsoft is not
-obligated to make this or any later version of the Prerelease Code commercially available. The
-grant of license to use Prerelease Code expires upon availability of a commercial release of the
-Prerelease Code from Microsoft. NOTE: In the event that Prerelease Code contains a separate
-end-user license agreement, the terms and conditions of such end-user license agreement shall
-govern your use of the corresponding Prerelease Code.
-5. RESERVATION OF RIGHTS AND OWNERSHIP. Microsoft reserves all rights not
-expressly granted to you in this EULA. The Software is protected by copyright and other
-intellectual property laws and treaties. Microsoft or its suppliers own the title, copyright, and
-other intellectual property rights in the Software. The Software is licensed, not sold.
-6. LIMITATIONS ON REVERSE ENGINEERING, DECOMPILATION, AND
-DISASSEMBLY. You may not reverse engineer, decompile, or disassemble the Software,
-except and only to the extent that such activity is expressly permitted by applicable law
-notwithstanding this limitation.
-7. NO RENTAL/COMMERCIAL HOSTING. You may not rent, lease, lend or provide
-commercial hosting services with the Software.
-8. CONSENT TO USE OF DATA. You agree that Microsoft and its affiliates may collect
-and use technical information gathered as part of the product support services provided to you,
-if any, related to the Software. Microsoft may use this information solely to improve our
-products or to provide customized services or technologies to you and will not disclose this
-information in a form that personally identifies you.
-9. LINKS TO THIRD PARTY SITES. You may link to third party sites through the use of
-the Software. The third party sites are not under the control of Microsoft, and Microsoft is not
-responsible for the contents of any third party sites, any links contained in third party sites, or
-any changes or updates to third party sites. Microsoft is not responsible for webcasting or any
-other form of transmission received from any third party sites. Microsoft is providing these
-links to third party sites to you only as a convenience, and the inclusion of any link does not
-imply an endorsement by Microsoft of the third party site.
-10. ADDITIONAL SOFTWARE/SERVICES. This EULA applies to updates, supplements,
-add-on components, or Internet-based services components, of the Software that Microsoft may
-provide to you or make available to you after the date you obtain your initial copy of the
-Software, unless we provide other terms along with the update, supplement, add-on
-component, or Internet-based services component. Microsoft reserves the right to discontinue
-any Internet-based services provided to you or made available to you through the use of the
-Software.
-11. UPGRADES/DOWNGRADES
-Everett VSPro 4
-Final 11.04.02
-11.1 Upgrades. To use a version of the Software identified as an upgrade, you must
-first be licensed for the software identified by Microsoft as eligible for the upgrade. After
-upgrading, you may no longer use the software that formed the basis for your upgrade
-eligibility.
-11.2 Downgrades. Instead of installing and using the Software, you may install and
-use copies of an earlier version of the Software, provided that you completely remove such
-earlier version and install the current version of the Software within a reasonable time. Your
-use of such earlier version shall be governed by this EULA, and your rights to use such earlier
-version shall terminate when you install the Software.
-11.3 Special Terms for Version 2003 Upgrade Editions of the Software. If the
-Software accompanying this EULA is the version 2003 edition of the Software and you have
-acquired it as an upgrade from the corresponding "2002" edition of the Microsoft software
-product with the same product name as the Software (the "Qualifying Software"), then
-Section 11.1 does not apply to you. Instead, you may continue to use the Qualifying Software
-AND the version 2003 upgrade for so long as you continue to comply with the terms of this
-EULA and the EULA governing your use of the Qualifying Software. Qualifying Software does
-not include non-Microsoft software products.
-12. NOT FOR RESALE SOFTWARE. Software identified as "Not For Resale" or "NFR,"
-may not be sold or otherwise transfered for value, or used for any purpose other than
-demonstration, test or evaluation.
-13. ACADEMIC EDITION SOFTWARE. To use Software identified as "Academic
-Edition" or "AE," you must be a "Qualified Educational User." For qualification-related
-questions, please contact the Microsoft Sales Information Center/One Microsoft
-Way/Redmond, WA 98052-6399 or the Microsoft subsidiary serving your country.
-14. EXPORT RESTRICTIONS. You acknowledge that the Software is subject to U.S. export
-jurisdiction. You agree to comply with all applicable international and national laws that apply
-to the Software, including the U.S. Export Administration Regulations, as well as end-user, end-
-use, and destination restrictions issued by U.S. and other governments. For additional
-information see <http://www.microsoft.com/exporting/>.
-15. SOFTWARE TRANSFER. The initial user of the Software may make a one-time
-permanent transfer of this EULA and Software to another end user, provided the initial user
-retains no copies of the Software. This transfer must include all of the Software (including all
-component parts, the media and printed materials, any upgrades (including any Qualifying
-Software as defined in Section 11.3), this EULA, and, if applicable, the Certificate of
-Authenticity). The transfer may not be an indirect transfer, such as a consignment. Prior to the
-transfer, the end user receiving the Software must agree to all the EULA terms.
-16. TERMINATION. Without prejudice to any other rights, Microsoft may terminate this
-EULA if you fail to comply with the terms and conditions of this EULA. In such event, you
-must destroy all copies of the Software and all of its component parts.
-Everett VSPro 5
-Final 11.04.02
-17. LIMITED WARRANTY FOR SOFTWARE ACQUIRED IN THE US AND CANADA.
-Except for the "Redistributables," which are provided AS IS without warranty of any kind,
-Microsoft warrants that the Software will perform substantially in accordance with the
-accompanying materials for a period of ninety (90) days from the date of receipt.
-
-If an implied warranty or condition is created by your state/jurisdiction and federal or
-state/provincial law prohibits disclaimer of it, you also have an implied warranty or condition,
-BUT ONLY AS TO DEFECTS DISCOVERED DURING THE PERIOD OF THIS LIMITED
-WARRANTY (NINETY DAYS). AS TO ANY DEFECTS DISCOVERED AFTER THE
-NINETY-DAY PERIOD, THERE IS NO WARRANTY OR CONDITION OF ANY KIND.
-
-Some states/jurisdictions do not allow limitations on how long an implied warranty or
-
-
-condition lasts, so the above limitation may not apply to you.
-Any supplements or updates to the Software, including without limitation, any (if any) service
-packs or hot fixes provided to you after the expiration of the ninety day Limited Warranty
-period are not covered by any warranty or condition, express, implied or statutory.
-
-
-LIMITATION ON REMEDIES; NO CONSEQUENTIAL OR OTHER DAMAGES. Your
-exclusive remedy for any breach of this Limited Warranty is as set forth below. Except for any
-refund elected by Microsoft, YOU ARE NOT ENTITLED TO ANY DAMAGES,
-INCLUDING BUT NOT LIMITED TO CONSEQUENTIAL DAMAGES, if the Software does
-not meet Microsoft's Limited Warranty, and, to the maximum extent allowed by applicable 
-law, even if any remedy fails of its essential purpose. The terms of Section 19 ("Exclusion of
-Incidental, Consequential and Certain Other Damages") are also incorporated into this Limited
-Warranty. Some states/jurisdictions do not allow the exclusion or limitation of incidental or
-consequential damages, so the above limitation or exclusion may not apply to you. This
-Limited Warranty gives you specific legal rights. You may have other rights which vary from
-state/jurisdiction to state/jurisdiction. YOUR EXCLUSIVE REMEDY. Microsoft's and its
-suppliers' entire liability and your exclusive remedy for any breach of this Limited Warranty or
-for any other breach of this EULA or for any other liability relating to the Software shall be, at
-Microsoft's option from time to time exercised subject to applicable law, (a) return of the
-amount paid (if any) for the Software, or (b) repair or replacement of the Software, that does not
-meet this Limited Warranty and that is returned to Microsoft with a copy of your receipt. You
-will receive the remedy elected by Microsoft without charge, except that you are responsible for
-any expenses you may incur (e.g. cost of shipping the Software to Microsoft). This Limited
-Warranty is void if failure of the Software has resulted from accident, abuse, misapplication,
-abnormal use or a virus. Any replacement Software will be warranted for the remainder of the
-original warranty period or thirty (30) days, whichever is longer, and Microsoft will use
-commercially reasonable efforts to provide your remedy within a commercially reasonable time
-of your compliance with Microsoft's warranty remedy procedures. Outside the United States or
-Canada, neither these remedies nor any product support services offered by Microsoft are
-available without proof of purchase from an authorized international source. To exercise your
-remedy, contact: Microsoft, Attn. Microsoft Sales Information Center/One Microsoft
-Way/Redmond, WA 98052-6399, or the Microsoft subsidiary serving your country.
-   
-
-18. DISCLAIMER OF WARRANTIES. The Limited Warranty that appears above is the
-only express warranty made to you and is provided in lieu of any other express warranties or
-similar obligations (if any) created by any advertising, documentation, packaging, or other
-communications. EXCEPT FOR THE LIMITED WARRANTY AND TO THE MAXIMUM
-Everett VSPro 6
-Final 11.04.02
-EXTENT PERMITTED BY APPLICABLE LAW, MICROSOFT AND ITS SUPPLIERS
-PROVIDE THE SOFTWARE AND SUPPORT SERVICES (IF ANY) AS IS AND WITH ALL
-FAULTS, AND HEREBY DISCLAIM ALL OTHER WARRANTIES AND CONDITIONS,
-WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO,
-ANY (IF ANY) IMPLIED WARRANTIES, DUTIES OR CONDITIONS OF
-MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF RELIABILITY
-OR AVAILABILITY, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF
-RESULTS, OF WORKMANLIKE EFFORT, OF LACK OF VIRUSES, AND OF LACK OF
-NEGLIGENCE, ALL WITH REGARD TO THE SOFTWARE, AND THE PROVISION OF OR
-FAILURE TO PROVIDE SUPPORT OR OTHER SERVICES, INFORMATION, SOFTWARE,
-AND RELATED CONTENT THROUGH THE SOFTWARE OR OTHERWISE ARISING
-OUT OF THE USE OF THE SOFTWARE. ALSO, THERE IS NO WARRANTY OR
-CONDITION OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION,
-CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT WITH REGARD TO
-THE SOFTWARE.
-
-19. EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER
-DAMAGES. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO
-EVENT SHALL MICROSOFT OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL,
-INCIDENTAL, PUNITIVE, INDIRECT, OR CONSEQUENTIAL DAMAGES
-WHATSOEVER (INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR LOSS OF
-PROFITS OR CONFIDENTIAL OR OTHER INFORMATION, FOR BUSINESS
-INTERRUPTION, FOR PERSONAL INJURY, FOR LOSS OF PRIVACY, FOR FAILURE TO
-MEET ANY DUTY INCLUDING OF GOOD FAITH OR OF REASONABLE CARE, FOR
-NEGLIGENCE, AND FOR ANY OTHER PECUNIARY OR OTHER LOSS WHATSOEVER)
-ARISING OUT OF OR IN ANY WAY RELATED TO THE USE OF OR INABILITY TO USE
-THE SOFTWARE, THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT OR
-OTHER SERVICES, INFORMATION, SOFTWARE, AND RELATED CONTENT
-THROUGH THE SOFTWARE OR OTHERWISE ARISING OUT OF THE USE OF THE
-SOFTWARE, OR OTHERWISE UNDER OR IN CONNECTION WITH ANY PROVISION
-OF THIS EULA, EVEN IN THE EVENT OF THE FAULT, TORT (INCLUDING
-NEGLIGENCE), MISREPRESENTATION, STRICT LIABILITY, BREACH OF CONTRACT
-OR BREACH OF WARRANTY OF MICROSOFT OR ANY SUPPLIER, AND EVEN IF
-MICROSOFT OR ANY SUPPLIER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-20. LIMITATION OF LIABILITY AND REMEDIES. NOTWITHSTANDING ANY
-DAMAGES THAT YOU MIGHT INCUR FOR ANY REASON WHATSOEVER
-(INCLUDING, WITHOUT LIMITATION, ALL DAMAGES REFERENCED HEREIN AND
-ALL DIRECT OR GENERAL DAMAGES IN CONTRACT OR ANYTHING ELSE), THE
-ENTIRE LIABILITY OF MICROSOFT AND ANY OF ITS SUPPLIERS UNDER ANY
-PROVISION OF THIS EULA AND YOUR EXCLUSIVE REMEDY HEREUNDER (EXCEPT
-FOR ANY REMEDY OF REPAIR OR REPLACEMENT ELECTED BY MICROSOFT WITH
-RESPECT TO ANY BREACH OF THE LIMITED WARRANTY) SHALL BE LIMITED TO
-THE GREATER OF THE ACTUAL DAMAGES YOU INCUR IN REASONABLE RELIANCE
-ON THE SOFTWARE UP TO THE AMOUNT ACTUALLY PAID BY YOU FOR THE
-SOFTWARE OR US$5.00. THE FOREGOING LIMITATIONS, EXCLUSIONS AND
-DISCLAIMERS (INCLUDING SECTIONS 17, 18, AND 19) SHALL APPLY TO THE
-MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, EVEN IF ANY REMEDY FAILS
-ITS ESSENTIAL PURPOSE.
-Everett VSPro 7
-Final 11.04.02
-21. U.S. GOVERNMENT LICENSE RIGHTS. All Software provided to the U.S.
-Government pursuant to solicitations issued on or after December 1, 1995 is provided with the
-commercial license rights and restrictions described elsewhere herein. All Software provided to
-the U.S. Government pursuant to solicitations issued prior to December 1, 1995 is provided with
-"Restricted Rights" as provided for in FAR, 48 CFR 52.227-14 (JUNE 1987) or DFAR, 48 CFR
-252.227-7013 (OCT 1988), as applicable.
-22. APPLICABLE LAW. If you acquired this Software in the United States, this EULA is
-governed by the laws of the State of Washington. If you acquired this Software in Canada,
-unless expressly prohibited by local law, this EULA is governed by the laws in force in the
-Province of Ontario, Canada; and, in respect of any dispute which may arise hereunder, you
-consent to the jurisdiction of the federal and provincial courts sitting in Toronto, Ontario. If you
-acquired this Software in the European Union, Iceland, Norway, or Switzerland, then local law
-applies. If you acquired this Software in any other country, then local law may apply.
-23. ENTIRE AGREEMENT; SEVERABILITY. This EULA (including any addendum or
-amendment to this EULA which is included with the Software) are the entire agreement
-between you and Microsoft relating to the Software and the support services (if any) and they
-supersede all prior or contemporaneous oral or written communications, proposals and
-representations with respect to the Software or any other subject matter covered by this EULA.
-To the extent the terms of any Microsoft policies or programs for support services conflict with
-the terms of this EULA, the terms of this EULA shall control. If any provision of this EULA is
-held to be void, invalid, unenforceable or illegal, the other provisions shall continue in full force
-and effect.
-Si vous avez acquis votre produit Microsoft au CANADA, la garantie limitée suivante
-s'applique :
-
-GARANTIE LIMITÉE
-
-Sauf pur celles du "Redistributables," qui sont fournies "comme telles," Microsoft garantit que
-le Logiciel fonctionnera conformément aux documents inclus pendant une période de 90 jours
-suivant la date de réception.
-
-Si une garantie ou condition implicite est créée par votre État ou votre territoire et qu'une loifédérale ou provinciale ou d'un État en interdit le déni, vous jouissez également d'une
-garantie ou condition implicite, MAIS UNIQUEMENT POUR LES DÉFAUTS DÉCOUVERTS
-DURANT LA PÉRIODE DE LA PRÉSENTE GARANTIE LIMITÉE (QUATRE-VINGT-DIX
-JOURS). IL N'Y A AUCUNE GARANTIE OU CONDITION DE QUELQUE NATURE QUECE SOIT QUANT AUX DÉFAUTS DÉCOUVERTS APRÈS CETTE PÉRIODE DE QUATRE-
-VINGT-DIX JOURS. Certains États ou territoires ne permettent pas de limiter la durée d'une
-garantie ou condition implicite de sorte que la limitation ci-dessus peut ne pas s'appliquer à
-vous.
-
-Tous les suppléments ou toutes les mises à jour relatifs au Logiciel, notamment, les ensembles
-de services ou les réparations à chaud (le cas échéant) qui vous sont fournis après l'expiration
-de la période de quatre-vingt-dix jours de la garantie limitée ne sont pas couverts par quelque
-garantie ou condition que ce soit, expresse, implicite ou en vertu de la loi.
-
-LIMITATION DES RECOURS; ABSENCE DE DOMMAGES INDIRECTS OU AUTRES.
-
-Votre recours exclusif pour toute violation de la présente garantie limitée est décrit ci-après.
-
-Sauf pour tout remboursement au choix de Microsoft, si le Logiciel ne respecte pas la
-
-Everett VSPro 8
-Final 11.04.02
-
-garantie limitée de Microsoft et, dans la mesure maximale permise par les lois applicables,
-même si tout recours n'atteint pas son but essentiel, VOUS N'AVEZ DROIT À AUCUNS
-DOMMAGES, NOTAMMENT DES DOMMAGES INDIRECTS. Les termes de la
-clause «Exclusion des dommages accessoires, indirects et de certains autres dommages » sontégalement intégrées à la présente garantie limitée. Certains États ou territoires ne permettent
-pas l'exclusion ou la limitation des dommages indirects ou accessoires de sorte que la limitation
-ou l'exclusion ci-dessus peut ne pas s'appliquer à vous. La présente garantie limitée vous donne
-des droits légaux spécifiques. Vous pouvez avoir d'autres droits qui peuvent varier d'unterritoire ou d'un État à un autre. VOTRE RECOURS EXCLUSIF. La seule responsabilité
-obligation de Microsoft et de ses fournisseurs et votre recours exclusif pour toute violation de
-la présente garantie limitée ou pour toute autre violation du présent contrat ou pour toute autre
-responsabilité relative au Logiciel seront, selon le choix de Microsoft exercé de temps à autre
-sous réserve de toute loi applicable, a) le remboursement du prix payé, le cas échéant, pour le
-Logiciel ou b) la réparation ou le remplacement du Logiciel qui ne respecte pas la présente
-garantie limitée et qui est retourné à Microsoft avec une copie de votre reçu. Vous recevrez la
-compensation choisie par Microsoft, sans frais, sauf que vous êtes responsable des dépenses que
-vous pourriez engager (p. ex., les frais d'envoi du Logiciel à Microsoft). La présente garantie
-limitée est nulle si la défectuosité du Logiciel est causée par un accident, un usage abusif, une
-mauvaise application, un usage anormal ou un virus. Tout Logiciel de remplacement sera
-garanti pour le reste de la période initiale de la garantie ou pendant trente (30) jours, selon la
-plus longue entre ces deux périodes. À l'extérieur des États-Unis ou du Canada, ces recours ou
-l'un quelconque des services de soutien technique offerts par Microsoft ne sont pas disponibles
-sans preuve d'achat d'une source internationale autorisée. Pour exercer votre recours, vous
-devez communiquer avec Microsoft et vous adresser au Microsoft Sales Information
-Center/One Microsoft Way/Redmond, WA 98052-6399, ou à la filiale de Microsoft de votre
-pays.
-
-DÉNI DE GARANTIES. La garantie limitée qui apparaît ci-dessus constitue la seule garantie
-expresse qui vous est donnée et remplace toutes autres garanties expresses (s'il en est) crées par
-une publicité, un document, un emballage ou une autre communication. SAUF EN CE QUI A
-TRAIT À LA GARANTIE LIMITÉE ET DANS LA MESURE MAXIMALE PERMISE PAR
-LES LOIS APPLICABLES, LE LOGICIEL ET LES SERVICES DE SOUTIEN TECHNIQUE
-(LE CAS ÉCHÉANT) SONT FOURNIS TELS QUELS ET AVEC TOUS LES DÉFAUTS PAR
-MICROSOFT ET SES FOURNISSEURS, LESQUELS PAR LES PRÉSENTES DÉNIENT
-TOUTES AUTRES GARANTIES ET CONDITIONS EXPRESSES, IMPLICITES OU EN
-VERTU DE LA LOI, NOTAMMENT, MAIS SANS LIMITATION, (LE CAS ÉCHÉANT) LESGARANTIES, DEVOIRS OU CONDITIONS IMPLICITES DE QUALITÉ MARCHANDE,
-D'ADAPTATION À UNE FIN PARTICULIÈRE, DE FIABILITÉ OU DE DISPONIBILITÉ,
-D'EXACTITUDE OU D'EXHAUSTIVITÉ DES RÉPONSES, DES RÉSULTATS, DES
-EFFORTS DÉPLOYÉS SELON LES RÈGLES DE L'ART, D'ABSENCE DE VIRUS ET
-D'ABSENCE DE NÉGLIGENCE, LE TOUT À L'ÉGARD DU LOGICIEL ET DE LA
-PRESTATION OU DE L'OMISSION DE LA PRESTATION DES SERVICES DE SOUTIEN
-TECHNIQUE OU À L'ÉGARD DE LA FOURNITURE OU DE L'OMISSION DE LA
-FOURNITURE DE TOUS AUTRES SERVICES, RENSEIGNEMENTS, LOGICIELS, ET
-CONTENU QUI S'Y RAPPORTE GRÂCE AU LOGICIEL OU PROVENANT AUTREMENT
-DE L'UTILISATION DU LOGICIEL . PAR AILLEURS, IL N'Y A AUCUNE GARANTIE OU
-CONDITION QUANT AU TITRE DE PROPRIÉTÉ, À LA JOUISSANCE OU LA
-POSSESSION PAISIBLE, À LA CONCORDANCE À UNE DESCRIPTION NI QUANT À
-UNE ABSENCE DE CONTREFAÇON CONCERNANT LE LOGICIEL.
-
-EXCLUSION DES DOMMAGES ACCESSOIRES, INDIRECTS ET DE CERTAINS AUTRES
-DOMMAGES. DANS LA MESURE MAXIMALE PERMISE PAR LES LOIS APPLICABLES,
-EN AUCUN CAS MICROSOFT OU SES FOURNISSEURS NE SERONT RESPONSABLES
-DES DOMMAGES SPÉCIAUX, CONSÉCUTIFS, ACCESSOIRES OU INDIRECTS DE
-
-Everett VSPro 9
-Final 11.04.02
-
-QUELQUE NATURE QUE CE SOIT (NOTAMMENT, LES DOMMAGES À L'ÉGARD DUMANQUE À GAGNER OU DE LA DIVULGATION DE RENSEIGNEMENTS
-CONFIDENTIELS OU AUTRES, DE LA PERTE D'EXPLOITATION, DE BLESSURES
-CORPORELLES, DE LA VIOLATION DE LA VIE PRIVÉE, DE L'OMISSION DE REMPLIR
-TOUT DEVOIR, Y COMPRIS D'AGIR DE BONNE FOI OU D'EXERCER UN SOIN
-RAISONNABLE, DE LA NÉGLIGENCE ET DE TOUTE AUTRE PERTE PÉCUNIAIRE OU
-AUTRE PERTE DE QUELQUE NATURE QUE CE SOIT) SE RAPPORTANT DE QUELQUEMANIÈRE QUE CE SOIT À L'UTILISATION DU LOGICIEL OU À L'INCAPACITÉ DE
-S'EN SERVIR, À LA PRESTATION OU À L'OMISSION DE LA PRESTATION DE
-SERVICES DE SOUTIEN TECHNIQUE OU À LA FOURNITURE OU À L'OMISSION DE
-LA FOURNITURE DE TOUS AUTRES SERVICES, RENSEIGNEMENTS, LOGICIELS, ET
-CONTENU QUI S'Y RAPPORTE GRÂCE AU LOGICIEL OU PROVENANT AUTREMENT
-DE L'UTILISATION DU LOGICIEL OU AUTREMENT AUX TERMES DE TOUTE
-DISPOSITION DE LA PRÉSENTE CONVENTION OU RELATIVEMENT À UNE TELLE
-DISPOSITION, MÊME EN CAS DE FAUTE, DE DÉLIT CIVIL (Y COMPRIS LANÉGLIGENCE), DE RESPONSABILITÉ STRICTE, DE VIOLATION DE CONTRAT OU DEVIOLATION DE GARANTIE DE MICROSOFT OU DE TOUT FOURNISSEUR ET MÊME
-SI MICROSOFT OU TOUT FOURNISSEUR A ÉTÉ AVISÉ DE LA POSSIBILITÉ DE TELS
-DOMMAGES.
-
-LIMITATION DE RESPONSABILITÉ ET RECOURS. MALGRÉ LES DOMMAGES QUE
-VOUS PUISSIEZ SUBIR POUR QUELQUE MOTIF QUE CE SOIT (NOTAMMENT, MAISSANS LIMITATION, TOUS LES DOMMAGES SUSMENTIONNÉS ET TOUS LES
-DOMMAGES DIRECTS OU GÉNÉRAUX OU AUTRES), LA SEULE RESPONSABILITÉ DE
-MICROSOFT ET DE L'UN OU L'AUTRE DE SES FOURNISSEURS AUX TERMES DE
-TOUTE DISPOSITION DE LA PRÉSENTE CONVENTION ET VOTRE RECOURS
-EXCLUSIF À L'ÉGARD DE TOUT CE QUI PRÉCÈDE (SAUF EN CE QUI CONCERNETOUT RECOURS DE RÉPARATION OU DE REMPLACEMENT CHOISI PAR
-MICROSOFT À L'ÉGARD DE TOUT MANQUEMENT À LA GARANTIE LIMITÉE) SELIMITE AU PLUS ÉLEVÉ ENTRE LES MONTANTS SUIVANTS : LE MONTANT QUE
-VOUS AVEZ RÉELLEMENT PAYÉ POUR LE LOGICIEL OU 5,00 $US. LES LIMITES,
-EXCLUSIONS ET DÉNIS QUI PRÉCÈDENT (Y COMPRIS LES CLAUSES CI-DESSUS),
-S'APPLIQUENT DANS LA MESURE MAXIMALE PERMISE PAR LES LOIS
-APPLICABLES, MÊME SI TOUT RECOURS N'ATTEINT PAS SON BUT ESSENTIEL.
-
-À moins que cela ne soit prohibé par le droit local applicable, la présente Convention est régie
-par les lois de la province d'Ontario, Canada. Vous consentez à la compétence des tribunaux
-fédéraux et provinciaux siégeant à Toronto, dans la province d'Ontario.
-
-Au cas où vous auriez des questions concernant cette licence ou que vous désiriez vous mettre
-en rapport avec Microsoft pour quelque raison que ce soit, veuillez utiliser l'information
-contenue dans le Logiciel pour contacter la filiale de Microsoft desservant votre pays, ou visitez
-Microsoft sur le World Wide Web à http://www.microsoft.com.
-
-The following MICROSOFT GUARANTEE applies to you if you acquired this Software in
-any other country:
-
-Statutory rights not affected -The following guarantee is not restricted to any territory and does
-not affect any statutory rights that you may have from your reseller or from Microsoft if you
-acquired the Software directly from Microsoft. If you acquired the Software or any support
-services in Australia, New Zealand or Malaysia, please see the "Consumer rights" section
-below.
-
-Everett VSPro 10
-Final 11.04.02
-
-The guarantee -The Software is designed and offered as a general-purpose software, not for any
-user's particular purpose. You accept that no Software is error free and you are strongly
-advised to back-up your files regularly. Provided that you have a valid license, Microsoft
-guarantees that a) for a period of 90 days from the date of receipt of your license to use the
-Software or the shortest period permitted by applicable law it will perform substantially in
-accordance with the written materials that accompany the Software; and b) any support services
-provided by Microsoft shall be substantially as described in applicable written materials
-provided to you by Microsoft and Microsoft support engineers will use reasonable efforts, care
-and skill to solve any problem issues. In the event that the Software fails to comply with this
-guarantee, Microsoft will either (a) repair or replace the Software or (b) return the price you
-paid. This guarantee is void if failure of the Software results from accident, abuse or
-misapplication. Any replacement Software will be guaranteed for the remainder of the original
-guarantee period or 30 days, whichever period is longer. You agree that the above guarantee is
-your sole guarantee in relation to the Software and any support services.
-
-Exclusion of All Other Terms -To the maximum extent permitted by applicable law and subject to
-the guarantee above, Microsoft disclaims all warranties, conditions and other terms, either
-express or implied (whether by statute, common law, collaterally or otherwise) including but
-not limited to implied warranties of satisfactory quality and fitness for particular purpose with
-respect to the Software and the written materials that accompany the Software. Any implied
-warranties that cannot be excluded are limited to 90 days or to the shortest period permitted by
-applicable law, whichever is greater.
-
-Limitation of Liability -To the maximum extent permitted by applicable law and except as
-provided in the Microsoft Guarantee, Microsoft and its suppliers shall not be liable for any
-damages whatsoever (including without limitation, damages for loss of business profits,
-business interruption, loss of business information or other pecuniary loss) arising out of the
-use or inability to use the Software, even if Microsoft has been advised of the possibility of such
-damages. In any case Microsoft's entire liability under any provision of this Agreement shall be
-limited to the amount actually paid by you for the Software. These limitations do not apply to
-any liabilities that cannot be excluded or limited by applicable laws.
-
-Consumer rights -Consumers in Australia, New Zealand or Malaysia may have the benefit of
-certain rights and remedies by reason of the Trade Practices Act and similar state and territory
-laws in Australia, the Consumer Guarantees Act in New Zealand and the Consumer Protection
-Act in Malaysia in respect of which liability cannot lawfully be modified or excluded. If you
-acquired the Software in New Zealand for the purposes of a business, you confirm that the
-Consumer Guarantees Act does not apply. If you acquired the Software in Australia and if
-Microsoft breaches a condition or warranty implied under any law which cannot lawfully be
-modified or excluded by this agreement then, to the extent permitted by law, Microsoft's
-liability is limited, at Microsoft's option, to: (i) in the case of the Software: a) repairing or
-replacing the Software; or b) the cost of such repair or replacement; and (ii) in the case of
-support services: a) re-supply of the services; or b) the cost of having the services supplied
-again.
-
-Everett VSPro 11
-Final 11.04.02
-
-Should you have any questions concerning this EULA, or if you desire to contact Microsoft for
-any reason, please use the address information enclosed in this Software to contact the
-Microsoft subsidiary serving your country or visit Microsoft on the World Wide Web at
-http://www.microsoft.com.
-
-Everett VSPro 12
-Final 11.04.02
-
-%% The following software may be included in this product: zlib; Use of any of this software is governed by the terms of the license below:
+For the purposes of this copyright and license, "Info-ZIP" is defined asthe
+following set of individuals:
+
+ Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois, Jean-loup
+ Gailly, Hunter Goatley, Ian Gorman, Chris Herborth, Dirk Haase, Greg Hartwig,
+ Robert Heath, Jonathan Hudson, Paul Kienitz, David Kirschbaum, Johnny Lee,
+ Onno van der Linden, Igor Mandrichenko, Steve P. Miller, Sergio Monesi,
+ Keith Owens, George Petrov, Greg Roelofs, Kai Uwe Rommel, Steve Salisbury,
+ Dave Smith, Christian Spieler, Antoine Verheijen, Paul von Behren, Rich
+ Wales, Mike White
+
+This software is provided "as is," without warranty of any kind, express or
+implied. In no event shall Info-ZIP or its contributors be held liable for any
+direct, indirect, incidental, special or consequential damages arising out of
+the use of or inability to use this software.
+
+Permission is granted to anyone to use this software for any purpose, including
+commercial applications, and to alter it and redistribute it freely, subject to
+the following restrictions:
+
+1. Redistributions of source code must retain the above copyright notice,
+definition, disclaimer, and this list of conditions.
+
+2. Redistributions in binary form (compiled executables) must reproduce the
+above copyright notice, definition, disclaimer, and this list of conditions in
+documentation and/or other materials provided with the distribution. The sole
+exception to this condition is redistribution of a standard UnZipSFX binary
+(including SFXWiz) as part of a self-extracting archive; that is permitted
+without inclusion of this license, as long as the normal SFX banner has not been
+removed from the binary or disabled.
+
+3. Altered versions--including, but not limited to, ports to new operating
+systems, existing ports with new graphical interfaces, and dynamic, shared, or
+static library versions--must be plainly marked as such and must not be
+misrepresented as being the original source. Such altered versions also must
+not be misrepresented as being Info-ZIP releases--including, but not limited to,
+labeling of the altered versions with the names "Info-ZIP" (or any variation
+thereof, including, but not limited to, different capitalizations), "Pocket
+UnZip," "WiZ" or "MacZip" without the explicit permission of Info-ZIP. Such
+altered versions are further prohibited from misrepresentative use of the
+Zip-Bugs or Info-ZIP e-mail addresses or of the Info-ZIP URL(s).
+
+4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip,"
+"UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its own source
+and binary releases.
+
+
+%% The following software may be included in this product: XML Security; Use of
+ any of this software is governed by the terms of the license below: The
+ Apache Software License, Version 1.1 PDF
+
+Copyright (C) 2002 The Apache Software Foundation.
+
+All rights reserved. Redistribution and use in source and binary forms, with or
+without modifica- tion, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+3. The end-user documentation included with the redistribution, if any,must
+include the following acknowledgment:"This product includes software developed
+by the Apache Software Foundation (http://www.apache.org/)." Alternately, this
+acknowledgment may appear in the software itself, if and wherever such
+third-party acknowledgments normally appear.
+
+4. The names"Apache Forrest" and "Apache Software Foundation" must not be used
+to endorse or promote products derived from this software without prior written
+permission. For written permission,please contact apache@apache.org. 5.
+Products derived from this software may not be called "Apache", normay "Apache"
+appear in their name, without prior written permission of the Apache Software
+Foundation. THIS SOFTWARE IS PROVIDED``AS IS'' AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT,INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ORSERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANYTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of
+voluntary contributions made by many individuals on behalf of the Apache
+Software Foundation. For more information on the Apache Software Foundation,
+please see http://www.apache.org.
+
+
+%% The following software may be included in this product: Regexp, Regular
+Expression Package v. 1.2; Use of any of this software is governed by the terms
+of the license below: The Apache Software License, Version 1.1 Copyright (c)
+2001 The Apache Software Foundation. All rights reserved. Redistribution and
+use in source and binary forms, with or without modification,are permitted
+provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+3. The end-user documentation included with the redistribution, if any, must
+include the following acknowledgment: "This product includes software developed
+by the Apache Software Foundation (http://www.apache.org/)." Alternately, this
+acknowledgment may appear in the software itself, if and wherever such
+third-party acknowledgments normally appear.
+
+4. The names "Apache" and "Apache Software Foundation" and "Apache Turbine"
+must not be used to endorse or promote products derived from this software
+without prior written permission. For written permission, please contact
+apache@apache.org.
+
+5. Products derived from this software may not be called "Apache", "Apache
+Turbine", nor may "Apache" appear in their name, without prior written
+permission of the Apache Software Foundation.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE
+SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+This software consists of voluntary contributions made by many individuals on
+behalf of the Apache Software Foundation. For more information on the Apache
+Software Foundation, please see http://www.apache.org.
+
+========================================================================
+
+
+%% The following software may be included in this product: zlib; Use of any of
+this software is governed by the terms of the license below:
zlib.h -- interface of the 'zlib' general purpose compression library
version 1.1.3, July 9th, 1998
@@ -1787,7 +2438,8 @@ zlib.h -- interface of the 'zlib' general purpose compression library
(zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format
-%% The following software may be included in this product: Mozilla Rhino. Use of any of this software is governed by the terms of the license below:
+%% The following software may be included in this product: Mozilla Rhino. Use
+of any of this software is governed by the terms of the license below:
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
@@ -1825,7 +2477,8 @@ zlib.h -- interface of the 'zlib' general purpose compression library
* Andrew Wason
*/
-%% The following software may be included in this product: Apache Derby. Use of any of this software is governed by the terms of the license below:
+%% The following software may be included in this product: Apache Derby. Use
+of any of this software is governed by the terms of the license below:
Apache License
@@ -2032,7 +2685,8 @@ zlib.h -- interface of the 'zlib' general purpose compression library
limitations under the License.
-%% The following software may be included in this product: 7-Zip. Use of any of this software is governed by the terms of the license below:
+%% The following software may be included in this product: 7-Zip. Use of any
+of this software is governed by the terms of the license below:
~~~~~
License for use and distribution
@@ -2076,146 +2730,421 @@ Version 2.1, February 1999
Preamble
-The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.
-
-This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.
-
-When we speak of free software, we are referring to freedom of use, 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 and use pieces of it in new free programs; and that you are informed that you can do these things.
-
-To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.
-
-For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.
-
-We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.
-
-To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.
-
-Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.
-
-Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.
-
-When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.
-
-We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.
-
-For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.
-
-In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.
-
-Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.
-
-The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".
-
-A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
-
-The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)
-
-"Source code" for a work means the preferred form of the work for making modifications to it. For a library, 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 library.
-
-Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.
-
-1. You may copy and distribute verbatim copies of the Library's complete 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 distribute a copy of this License along with the Library.
-
-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 Library or any portion of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
-
- These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, 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 Library, 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 Library.
-
- In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
-
-3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.
-
-Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.
-
-This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
-
-4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you 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.
-
-If distribution of 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 satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.
-
-5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
-
-However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
-
-When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
-
-If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
-
-Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
-
-6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.
-
-You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
-
- a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.
-
- e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
-
-For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be 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.
-
-It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.
-
-7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.
-
- b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
-
-8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library 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.
-
-9. 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 Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.
-
-10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library 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 with this License.
-
-11. 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 Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library 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 Library.
-
-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.
-
-12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library 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.
-
-13. The Free Software Foundation may publish revised and/or new versions of the Lesser 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 Library 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 Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
-
-14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, 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.
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public Licenses are intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.
+
+This license, the Lesser General Public License, applies to some specially
+designated software packages--typically libraries--of the Free Software
+Foundation and other authors who decide to use it. You can use it too, but we
+suggest you first think carefully about whether this license or the ordinary
+General Public License is the better strategy to use in any particular case,
+based on the explanations below.
+
+When we speak of free software, we are referring to freedom of use, 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 and use pieces of it in new free programs; and that you are
+informed that you can do these things.
+
+To protect your rights, we need to make restrictions that forbid distributors to
+deny you these rights or to ask you to surrender these rights. These
+restrictions translate to certain responsibilities for you if you distribute
+copies of the library or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis or for a
+fee, you must give the recipients all the rights that we gave you. You must
+make sure that they, too, receive or can get the source code. If you link other
+code with the library, you must provide complete object files to the recipients,
+so that they can relink them with the library after making changes to the
+library and recompiling it. And you must show them these terms so they know
+their rights.
+
+We protect your rights with a two-step method: (1) we copyright the library,
+and (2) we offer you this license, which gives you legal permission to copy,
+distribute and/or modify the library.
+
+To protect each distributor, we want to make it very clear that there is no
+warranty for the free library. Also, if the library is modified by someone else
+and passed on, the recipients should know that what they have is not the
+original version, so that the original author's reputation will not be affected
+by problems that might be introduced by others.
+
+Finally, software patents pose a constant threat to the existence of any free
+program. We wish to make sure that a company cannot effectively restrict the
+users of a free program by obtaining a restrictive license from a patent holder.
+Therefore, we insist that any patent license obtained for a version of the
+library must be consistent with the full freedom of use specified in this
+license.
+
+Most GNU software, including some libraries, is covered by the ordinary GNU
+General Public License. This license, the GNU Lesser General Public License,
+applies to certain designated libraries, and is quite different from the
+ordinary General Public License. We use this license for certain libraries in
+order to permit linking those libraries into non-free programs.
+
+When a program is linked with a library, whether statically or using a shared
+library, the combination of the two is legally speaking a combined work, a
+derivative of the original library. The ordinary General Public License
+therefore permits such linking only if the entire combination fits its criteria
+of freedom. The Lesser General Public License permits more lax criteria for
+linking other code with the library.
+
+We call this license the "Lesser" General Public License because it does Less to
+protect the user's freedom than the ordinary General Public License. It also
+provides other free software developers Less of an advantage over competing
+non-free programs. These disadvantages are the reason we use the ordinary
+General Public License for many libraries. However, the Lesser license provides
+advantages in certain special circumstances.
+
+For example, on rare occasions, there may be a special need to encourage the
+widest possible use of a certain library, so that it becomes a de-facto
+standard. To achieve this, non-free programs must be allowed to use the
+library. A more frequent case is that a free library does the same job as
+widely used non-free libraries. In this case, there is little to gain by
+limiting the free library to free software only, so we use the Lesser General
+Public License.
+
+In other cases, permission to use a particular library in non-free programs
+enables a greater number of people to use a large body of free software. For
+example, permission to use the GNU C Library in non-free programs enables many
+more people to use the whole GNU operating system, as well as its variant, the
+GNU/Linux operating system.
+
+Although the Lesser General Public License is Less protective of the users'
+freedom, it does ensure that the user of a program that is linked with the
+Library has the freedom and the wherewithal to run that program using a modified
+version of the Library.
+
+The precise terms and conditions for copying, distribution and modification
+follow. Pay close attention to the difference between a "work based on the
+library" and a "work that uses the library". The former contains code derived
+from the library, whereas the latter must be combined with the library in order
+to run. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License Agreement applies to any software library or other program
+which contains a notice placed by the copyright holder or other authorized party
+saying it may be distributed under the terms of this Lesser General Public
+License (also called "this License"). Each licensee is addressed as "you".
+
+A "library" means a collection of software functions and/or data prepared so as
+to be conveniently linked with application programs (which use some of those
+functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work which has been
+distributed under these terms. A "work based on the Library" means either the
+Library or any derivative work under copyright law: that is to say, a work
+containing the Library or a portion of it, either verbatim or with modifications
+and/or translated straightforwardly into another language. (Hereinafter,
+translation is included without limitation in the term "modification".)
+
+"Source code" for a work means the preferred form of the work for making
+modifications to it. For a library, 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
+library.
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope. The act of running a program using
+the Library is not restricted, and output from such a program is covered only if
+its contents constitute a work based on the Library (independent of the use of
+the Library in a tool for writing it). Whether that is true depends on what the
+Library does and what the program that uses the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's complete 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 distribute a copy of this License along
+with the Library.
+
+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 Library or any portion of it, thus
+forming a work based on the Library, 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) The modified work must itself be a software library.
+
+b) You must cause the files modified to carry prominent notices stating that you
+changed the files and the date of any change.
+
+c) You must cause the whole of the work to be licensed at no charge to all third
+parties under the terms of this License.
+
+d) If a facility in the modified Library refers to a function or a table of data
+to be supplied by an application program that uses the facility, other than as
+an argument passed when the facility is invoked, then you must make a good faith
+effort to ensure that, in the event an application does not supply such function
+or table, the facility still operates, and performs whatever part of its purpose
+remains meaningful.
+
+(For example, a function in a library to compute square roots has a purpose that
+is entirely well-defined independent of the application. Therefore, Subsection
+2d requires that any application-supplied function or table used by this
+function must be optional: if the application does not supply it, the square
+root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Library, 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 Library, 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
+Library.
+
+In addition, mere aggregation of another work not based on the Library with the
+Library (or with a work based on the Library) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public License
+instead of this License to a given copy of the Library. To do this, you must
+alter all the notices that refer to this License, so that they refer to the
+ordinary GNU General Public License, version 2, instead of to this License. (If
+a newer version than version 2 of the ordinary GNU General Public License has
+appeared, then you can specify that version instead if you wish.) Do not make
+any other change in these notices.
+
+Once this change is made in a given copy, it is irreversible for that copy, so
+the ordinary GNU General Public License applies to all subsequent copies and
+derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the Library into
+a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or derivative of it,
+under Section 2) in object code or executable form under the terms of Sections 1
+and 2 above provided that you 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.
+
+If distribution of 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 satisfies the requirement to distribute the source code, even
+though third parties are not compelled to copy the source along with the object
+code.
+
+5. A program that contains no derivative of any portion of the Library, but is
+designed to work with the Library by being compiled or linked with it, is called
+a "work that uses the Library". Such a work, in isolation, is not a derivative
+work of the Library, and therefore falls outside the scope of this License.
+
+However, linking a "work that uses the Library" with the Library creates an
+executable that is a derivative of the Library (because it contains portions of
+the Library), rather than a "work that uses the library". The executable is
+therefore covered by this License. Section 6 states terms for distribution of
+such executables.
+
+When a "work that uses the Library" uses material from a header file that is
+part of the Library, the object code for the work may be a derivative work of
+the Library even though the source code is not. Whether this is true is
+especially significant if the work can be linked without the Library, or if the
+work is itself a library. The threshold for this to be true is not precisely
+defined by law.
+
+If such an object file uses only numerical parameters, data structure layouts
+and accessors, and small macros and small inline functions (ten lines or less in
+length), then the use of the object file is unrestricted, regardless of whether
+it is legally a derivative work. (Executables containing this object code plus
+portions of the Library will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may distribute the
+object code for the work under the terms of Section 6. Any executables
+containing that work also fall under Section 6, whether or not they are linked
+directly with the Library itself.
+
+6. As an exception to the Sections above, you may also combine or link a "work
+that uses the Library" with the Library to produce a work containing portions of
+the Library, and distribute that work under terms of your choice, provided that
+the terms permit modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the Library is
+used in it and that the Library and its use are covered by this License. You
+must supply a copy of this License. If the work during execution displays
+copyright notices, you must include the copyright notice for the Library among
+them, as well as a reference directing the user to the copy of this License.
+Also, you must do one of these things:
+
+a) Accompany the work with the complete corresponding machine-readable source
+code for the Library including whatever changes were used in the work (which
+must be distributed under Sections 1 and 2 above); and, if the work is an
+executable linked with the Library, with the complete machine-readable "work
+that uses the Library", as object code and/or source code, so that the user can
+modify the Library and then relink to produce a modified executable containing
+the modified Library. (It is understood that the user who changes the contents
+of definitions files in the Library will not necessarily be able to recompile
+the application to use the modified definitions.)
+
+b) Use a suitable shared library mechanism for linking with the Library. A
+suitable mechanism is one that (1) uses at run time a copy of the library
+already present on the user's computer system, rather than copying library
+functions into the executable, and (2) will operate properly with a modified
+version of the library, if the user installs one, as long as the modified
+version is interface-compatible with the version that the work was made with.
+
+c) Accompany the work with a written offer, valid for at least three years, to
+give the same user the materials specified in Subsection 6a, above, for a charge
+no more than the cost of performing this distribution.
+
+d) If distribution of the work is made by offering access to copy from a
+designated place, offer equivalent access to copy the above specified materials
+from the same place.
+
+e) Verify that the user has already received a copy of these materials or that
+you have already sent this user a copy.
+
+For an executable, the required form of the "work that uses the Library" must
+include any data and utility programs needed for reproducing the executable from
+it. However, as a special exception, the materials to be 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.
+
+It may happen that this requirement contradicts the license restrictions of
+other proprietary libraries that do not normally accompany the operating system.
+Such a contradiction means you cannot use both them and the Library together in
+an executable that you distribute.
+
+7. You may place library facilities that are a work based on the Library
+side-by-side in a single library together with other library facilities not
+covered by this License, and distribute such a combined library, provided that
+the separate distribution of the work based on the Library and of the other
+library facilities is otherwise permitted, and provided that you do these two
+things:
+
+a) Accompany the combined library with a copy of the same work based on the
+Library, uncombined with any other library facilities. This must be distributed
+under the terms of the Sections above.
+
+b) Give prominent notice with the combined library of the fact that part of it
+is a work based on the Library, and explaining where to find the accompanying
+uncombined form of the same work.
+
+8. You may not copy, modify, sublicense, link with, or distribute the Library
+except as expressly provided under this License. Any attempt otherwise to copy,
+modify, sublicense, link with, or distribute the Library 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.
+
+9. 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 Library
+or its derivative works. These actions are prohibited by law if you do not
+accept this License. Therefore, by modifying or distributing the Library (or
+any work based on the Library), you indicate your acceptance of this License to
+do so, and all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the Library),
+the recipient automatically receives a license from the original licensor to
+copy, distribute, link with or modify the Library 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 with this License.
+
+11. 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 Library at all.
+For example, if a patent license would not permit royalty-free redistribution of
+the Library 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 Library.
+
+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.
+
+12. If the distribution and/or use of the Library is restricted in certain
+countries either by patents or by copyrighted interfaces, the original copyright
+holder who places the Library 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.
+
+13. The Free Software Foundation may publish revised and/or new versions of the
+Lesser 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 Library 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
+Library does not specify a license version number, you may choose any version
+ever published by the Free Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free programs
+whose distribution conditions are incompatible with these, 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
-15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY
+"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
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. 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
+LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER
+PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND
+CONDITIONS
-16. 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 LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries
-If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).
+If you develop a new library, and you want it to be of the greatest possible use
+to the public, we recommend making it free software that everyone can
+redistribute and change. You can do so by permitting redistribution under these
+terms (or, alternatively, under the terms of the ordinary General Public
+License).
-To apply these terms, attach the following notices to the library. 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.
+To apply these terms, attach the following notices to the library. 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.
<one line to give the library's name and an idea of what it does.>
Copyright (C) <year> <name of author>
@@ -2236,7 +3165,9 @@ To apply these terms, attach the following notices to the library. It is safest
Also add information on how to contact you by electronic and paper mail.
-You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names:
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the library, if necessary. Here is
+a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in
the library `Frob' (a library for tweaking knobs) written
@@ -2441,30 +3372,49 @@ LZMA SDK is available under any of the following licenses:
3. Simplified license for unmodified code (read SPECIAL EXCEPTION)
4. Proprietary license
-This means that you can select one of these four options and follow rules of that license.
+This means that you can select one of these four options and follow rules of
+that license.
-SPECIAL EXCEPTION: Igor Pavlov, as the author of this code, expressly permit you statically or dynamically to link your code (or bind by name) to the files from LZMA SDK without subjecting your linked code to the terms of the CPL or GNU LGPL. Any modification or addition to any file in the LZMA SDK, however, is subject to the GNU LGPL or CPL terms.
+SPECIAL EXCEPTION: Igor Pavlov, as the author of this code, expressly permit
+you statically or dynamically to link your code (or bind by name) to the files
+from LZMA SDK without subjecting your linked code to the terms of the CPL or GNU
+LGPL. Any modification or addition to any file in the LZMA SDK, however, is
+subject to the GNU LGPL or CPL terms.
-This SPECIAL EXCEPTION allows you to use LZMA SDK in applications with proprietary code, provided you keep the LZMA SDK code unmodified.
+This SPECIAL EXCEPTION allows you to use LZMA SDK in applications with
+proprietary code, provided you keep the LZMA SDK code unmodified.
-SPECIAL EXCEPTION #2: Igor Pavlov, as the author of this code, expressly permits you to use LZMA SDK 4.43 under the same terms and conditions contained in the License Agreement you have for any previous version of LZMA SDK developed by Igor Pavlov.
+SPECIAL EXCEPTION #2: Igor Pavlov, as the author of this code, expressly
+permits you to use LZMA SDK 4.43 under the same terms and conditions contained
+in the License Agreement you have for any previous version of LZMA SDK developed
+by Igor Pavlov.
-SPECIAL EXCEPTION #2 allows holders of proprietary licenses to use latest version of LZMA SDK as update for previous versions.
+SPECIAL EXCEPTION #2 allows holders of proprietary licenses to use latest
+version of LZMA SDK as update for previous versions.
-GNU LGPL and CPL are pretty similar and both these licenses are classified as free software licenses at http://www.gnu.org/ and OSI-approved at http://www.opensource.org/.
+GNU LGPL and CPL are pretty similar and both these licenses are classified as
+free software licenses at http://www.gnu.org/ and OSI-approved at
+http://www.opensource.org/.
LZMA SDK also is available under a proprietary license which can include:
- 1. The right to modify code from the LZMA SDK without subjecting the modified code to the terms of the CPL or GNU LGPL
- 2. Technical support for LZMA SDK via email
+1. The right to modify code from the LZMA SDK without subjecting the modified
+code to the terms of the CPL or GNU LGPL
+
+2. Technical support for LZMA SDK via email
-To request such a proprietary license, or for any additional consultations, send an email message, using the 7-Zip support page: Send message to LZMA developer
+To request such a proprietary license, or for any additional consultations, send
+an email message, using the 7-Zip support page: Send message to LZMA developer
-The source code of 7-Zip is released under the terms of the GNU LGPL. You can download the source code of 7-Zip at 7-Zip's Source Forge Page
+The source code of 7-Zip is released under the terms of the GNU LGPL. You can
+download the source code of 7-Zip at 7-Zip's Source Forge Page
Additional License(s)
-The license included with the software differs slightly from the version posted on the website. Specifically it includes SPECIAL EXCEPTION #3, which is not present in the license on the website. The license from the software archive follows:
+The license included with the software differs slightly from the version posted
+on the website. Specifically it includes SPECIAL EXCEPTION #3, which is not
+present in the license on the website. The license from the software archive
+follows:
LICENSE
-------
@@ -2479,27 +3429,37 @@ LZMA SDK is available under any of the following licenses:
It means that you can select one of these four options and follow rules of that license.
-1,2) GNU LGPL and CPL licenses are pretty similar and both these licenses are classified as
+1,2) GNU LGPL and CPL licenses are pretty similar and both these licenses are
+classified as
- "Free software licenses" at http://www.gnu.org/
- "OSI-approved" at http://www.opensource.org/
3) SPECIAL EXCEPTION
-Igor Pavlov, as the author of this code, expressly permits you to statically or dynamically link your code (or bind by name) to the files from LZMA SDK without subjecting your linked code to the terms of the CPL or GNU LGPL. Any modifications or additions to files from LZMA SDK, however,
-are subject to the GNU LGPL or CPL terms.
+Igor Pavlov, as the author of this code, expressly permits you to statically or
+dynamically link your code (or bind by name) to the files from LZMA SDK without
+subjecting your linked code to the terms of the CPL or GNU LGPL. Any
+modifications or additions to files from LZMA SDK, however, are subject to the
+GNU LGPL or CPL terms.
-SPECIAL EXCEPTION allows you to use LZMA SDK in applications with
-closed code,
+SPECIAL EXCEPTION allows you to use LZMA SDK in applications with closed code,
while you keep LZMA SDK code unmodified.
-SPECIAL EXCEPTION #2: Igor Pavlov, as the author of this code, expressly permits you to use this code under the same terms and conditions contained in the License Agreement you have for any previous version of LZMA SDK developed by Igor Pavlov.
+SPECIAL EXCEPTION #2: Igor Pavlov, as the author of this code, expressly
+permits you to use this code under the same terms and conditions contained in
+the License Agreement you have for any previous version of LZMA SDK developed by
+Igor Pavlov.
-SPECIAL EXCEPTION #2 allows owners of proprietary licenses to use latest version of LZMA SDK as update for previous versions.
+SPECIAL EXCEPTION #2 allows owners of proprietary licenses to use latest version
+of LZMA SDK as update for previous versions.
-SPECIAL EXCEPTION #3: Igor Pavlov, as the author of this code, expressly permits you to use code of the following files: BranchTypes.h, LzmaTypes.h, LzmaTest.c, LzmaStateTest.c, LzmaAlone.cpp, LzmaAlone.cs, LzmaAlone.java as public domain code.
+SPECIAL EXCEPTION #3: Igor Pavlov, as the author of this code, expressly
+permits you to use code of the following files: BranchTypes.h, LzmaTypes.h,
+LzmaTest.c, LzmaStateTest.c, LzmaAlone.cpp, LzmaAlone.cs, LzmaAlone.java as
+public domain code.
4) Proprietary license
@@ -2510,502 +3470,13 @@ can include:
1) Right to modify code without subjecting modified code to the terms of the CPL or GNU LGPL
2) Technical support for code
-To request such proprietary license or any additional consultations, send email message from that page:http://www.7-zip.org/support.html
+To request such proprietary license or any additional consultations, send email
+message from that page:http://www.7-zip.org/support.html
-You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+You should have received a copy of the GNU Lesser General Public License along
+with this library; if not, write to the Free Software Foundation, Inc., 59
+Temple Place, Suite 330, Boston, MA 02111-1307 USA
-You should have received a copy of the Common Public License along with this library.
-
-***************************************************************************
-
-%%The following software may be included in this product:
-Active Template Library (ATL)
-
-Use of any of this software is governed by the terms of the license below:
-
-(note: search for "ATL")
-
-Visual Studio 2005 EULA
- MICROSOFT SOFTWARE LICENSE TERMS
-MICROSOFT VISUAL STUDIO 2005 PROFESSIONAL EDITION
-
-These license terms are an agreement between Microsoft Corporation (or based on
-where you live, one of its affiliates) and you. Please read them. They apply
-to the software named above, which includes the media on which you received it,
-if any. The terms also apply to any Microsoft
- • updates,
- • supplements,
- • Internet-based services, and
- • support services
-for this software, unless other terms accompany those items. If so, those terms
-apply.
-
-BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO
-NOT USE THE SOFTWARE. INSTEAD, RETURN IT TO THE RETAILER FOR A REFUND OR
-CREDIT. If you cannot obtain a refund there, contact Microsoft or the Microsoft
-affiliate serving your country for information about Microsoft’s refund
-policies. See www.microsoft.com/worldwide. In the United States and Canada,
-call (800) MICROSOFT or see www.microsoft.com/info/nareturns.htm.
-AS DESCRIBED BELOW, USING SOME FEATURES ALSO OPERATES AS YOUR CONSENT TO THE
-TRANSMISSION OF CERTAIN STANDARD COMPUTER INFORMATION FOR INTERNET-BASED SERVICES.
-
-NOTICE: APPLICATIONS AND SERVICES BUILT WITH MICROSOFT VISUAL J# 2005 WILL RUN
-ONLY IN THE MICROSOFT .NET FRAMEWORK. VISUAL J# 2005 HAS BEEN INDEPENDENTLY
-DEVELOPED BY MICROSOFT. IT IS NOT ENDORSED OR APPROVED BY SUN MICROSYSTEMS, INC.
-------------------------------
-IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW FOR EACH
-LICENSE YOU ACQUIRE.
-
-1. OVERVIEW.
-
-a. Software. The software includes development tools, software programs and
-documentation.
-
-b. License Model. The software is licensed on a per user basis.
-
-2. INSTALLATION AND USE RIGHTS.
-
-a. General. One user may install and use copies of the software to design,
-develop, test and demonstrate your programs. Testing does not include staging
-on a server in a production environment, such as loading content prior to
-production use.
-
-b. Included Microsoft Programs. These license terms apply to all Microsoft
-programs included with the software. If the license terms with any of those
-programs give you other rights that do not expressly conflict with these license
-terms, you also have those rights.
-
-c. Third Party Programs. The software contains third party programs. The
-license terms with those programs apply to your use of them.
-
-3. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.
-
-a. User Testing. Your end users may access the software to perform acceptance
-tests on your programs.
-
-b. Distributable Code. The software contains code that you are permitted to
-distribute in programs you develop if you comply with the terms below.
-
-i. Right to Use and Distribute. The code and text files listed below are
-“Distributable Code.”
- • REDIST.TXT Files. You may copy and distribute the object code form of code
-listed in REDIST.TXT files.
- • Sample Code. You may modify, copy, and distribute the source and object
-code form of code marked as “sample.”
- • Microsoft Merge Modules. You may copy and distribute the unmodified output
-of Microsoft Merge Modules.
- • MFCs, ATLs and CRTs. You may modify the source code form of Microsoft
-Foundation Classes (MFCs), Active Template Libraries (ATLs), and C runtimes
-(CRTs) to design, develop and test your programs, and copy and distribute the
-object code form of your modified files under a new name.
- • MDAC. You may copy and distribute the object code form of the MDAC_TYP.EXE
-file.
- • Image Library. You may copy and distribute images and animations in the
-Image Library as described in the software documentation. You may also modify
-that content. If you modify the content, it must be for use that is consistent
-with the permitted use of the unmodified content.
- • Third Party Distribution. You may permit distributors of your programs to
-copy and distribute the Distributable Code as part of those programs.
-
-ii. Distribution Requirements. For any Distributable Code you distribute, you must
- • add significant primary functionality to it in your programs;
- • require distributors and external end users to agree to terms that protect
-it at least as much as this agreement;
- • display your valid copyright notice on your programs; and
- • indemnify, defend, and hold harmless Microsoft from any claims, including
-attorneys’ fees, related to the distribution or use of your programs.
-
-iii. Distribution Restrictions. You may not
- • alter any copyright, trademark or patent notice in the Distributable Code;
- • use Microsoft’s trademarks in your programs’ names or in a way that suggests
-your programs come from or are endorsed by Microsoft;
- • distribute Distributable Code, other than code listed in OTHER-DIST.TXT
-files, to run on a platform other than the Windows platform;
- • include Distributable Code in malicious, deceptive or unlawful programs; or
- • modify or distribute the source code of any Distributable Code so that any
-part of it becomes subject to an Excluded License. An Excluded License is one
-that requires, as a condition of use, modification or distribution, that
- • the code be disclosed or distributed in source code form; or
- • others have the right to modify it.
-
-c. Additional Functionality. Microsoft may provide additional functionality for
-the software. Other license terms and fees may apply.
-
-4. INTERNET-BASED SERVICES. Microsoft provides Internet-based services with the
-software. It may change or cancel them at any time.
-
-a. Consent for Internet-Based Services. The software feature described below
-connects to Microsoft or service provider computer systems over the Internet.
-In some cases, you will not receive a separate notice when they connect. You
-may switch off this feature or not use it. For more information about this
-feature, see the software documentation. BY USING THIS FEATURE, YOU CONSENT TO
-THE TRANSMISSION OF THIS INFORMATION. Microsoft does not use the information to
-identify or contact you.
-
-Computer Information. The following feature uses Internet protocols, which send
-to the appropriate systems computer information, such as your Internet protocol
-address, the type of operating system, browser and name and version of the
-software you are using, and the language code of the device where you installed
-the software. Microsoft uses this information to make the Internet-based
-service available to you.
- • Digital Certificates. The software uses digital certificates. These
-digital certificates confirm the identity of Internet users sending X.509
-standard encrypted information. The software retrieves certificates and updates
-certificate revocation lists. These security features operate only when you use
-the Internet.
-
-b. Misuse of Internet-based Services. You may not use this service in any way
-that could harm it or impair anyone else’s use of it. You may not use the
-service to try to gain unauthorized access to any service, data, account or
-network by any means.
-
-5. TIME-SENSITIVE SOFTWARE. If the version of the software is a trial version,
-the software will stop running either ninety days or one hundred eighty days
-after you install it, depending on the trial version you have. You will receive
-notice before it stops running. You may not be able to access data used with
-the software when it stops running.
-
-6. PRODUCT KEYS. The software requires a key to install or access it. You are
-responsible for the use of keys assigned to you. You should not share the keys
-with third parties.
-
-7. MICROSOFT WINDOWS SOFTWARE. The software contains the Microsoft .NET
-Framework 2.0 and Microsoft Data Access Component 2.8 SP1 software. These
-software are part of Windows. The license terms for Windows apply to your use
-of the .NET Framework 2.0 and Microsoft Data Access Component software.
-
-8. SQL SERVER BENCHMARK TESTING. You must obtain Microsoft’s prior written
-approval to disclose to a third party the results of any benchmark test of the
-SQL Server software that accompanies this software.
-
-9. MICROSOFT .NET FRAMEWORK BENCHMARK TESTING. The software includes the .NET
-Framework component of the Windows operating systems (“.NET Component”). You
-may conduct internal benchmark testing of the .NET Component. You may disclose
-the results of any benchmark test of the .NET Component, provided that you
-comply with the following terms: (1) you must disclose all the information
-necessary for replication of the tests, including complete and accurate details
-of your benchmark testing methodology, the test scripts/cases, tuning
-parameters applied, hardware and software platforms tested, the name and version
-number of any third party testing tool used to conduct the testing, and complete
-source code for the benchmark suite/harness that is developed by or for you and
-used to test both the .NET Component and the competing implementation(s); (2)
-you must disclose the date (s) that you conducted the benchmark tests, along
-with specific version information for all Microsoft software products tested,
-including the .NET Component; (3) your benchmark testing was performed using all
-performance tuning and best practice guidance set forth in the product
-documentation and/or on Microsoft’s support web sites, and uses the latest
-updates, patches and fixes available for the .NET Component and the relevant
-Microsoft operating system; (4) it shall be sufficient if you make the
-disclosures provided for above at a publicly available location such as a
-website, so long as every public disclosure of the results of your benchmark
-test expressly identifies the public site containing all required disclosures;
-and (5) nothing in this provision shall be deemed to waive any other right that
-you may have to conduct benchmark testing. The foregoing obligations shall not
-apply to your disclosure of the results of any customized benchmark test of the
-.NET Component, whereby such disclosure is made under confidentiality in
-conjunction with a bid request by a prospective customer, such customer’s
-application(s) are specifically tested and the results are only disclosed to
-such specific customer. Notwithstanding any other agreement you may have with
-Microsoft, if you disclose such benchmark test results, Microsoft shall have the
-right to disclose the results of benchmark tests it conducts of your products
-that compete with the .NET Component, provided it complies with the same
-conditions above.
-
-10. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only
-gives you some rights to use the software. Microsoft reserves all other rights.
- Unless applicable law gives you more rights despite this limitation, you may
-use the software only as expressly permitted in this agreement. In doing so,
-you must comply with any technical limitations in the software that only allow
-you to use it in certain ways. For more information, see
-www.microsoft.com/licensing/userights. You may not
- • work around any technical limitations in the software;
- • reverse engineer, decompile or disassemble the software, except and only to
-the extent that applicable law expressly permits, despite this limitation;
- • make more copies of the software than specified in this agreement or allowed
-by applicable law, despite this limitation;
- • publish the software for others to copy;
- • rent, lease or lend the software; or
- • use the software for commercial software hosting services.
-
-11. BACKUP COPY. You may make one backup copy of the software. You may use it
-only to reinstall the software.
-
-12. DOCUMENTATION. Any person that has valid access to your computer or
-internal network may copy and use the documentation for your internal, reference
-purposes.
-
-13. NOT FOR RESALE SOFTWARE. You may not sell software marked as “NFR” or “Not
-for Resale.”
-
-14. ACADEMIC EDITION SOFTWARE. You must be a “Qualified Educational User” to
-use software marked as “Academic Edition” or “AE.” If you do not know whether
-you are a Qualified Educational User, visit www.microsoft.com/education or
-contact the Microsoft affiliate serving your country.
-
-15. UPGRADE. If this software is marked as an upgrade version, you may use it
-only if you have a license to use the software eligible for upgrade. If you
-upgrade, this software takes the place of the earlier version, and this
-agreement takes the place of the agreement for that earlier version. You may
-use the earlier version only as permitted in the Downgrade clause below.
-
-16. DOWNGRADE. You may install and use this version and an earlier version of
-the software at the same time. This agreement applies to your use of the
-earlier version. If the earlier version includes different components, any
-
-terms for those components in the agreement that comes with the earlier version
-apply to your use of them. Microsoft is not obligated to supply earlier
-versions to you.
-
-17. TRANSFER TO A THIRD PARTY. The first user of the software may transfer it,
-and this agreement, directly to a third party. Before the transfer, that party
-must agree that this agreement applies to the transfer and use of the software.
- The first user must uninstall the software before transferring it separately
-from the device. The first user may not retain any copies.
-
-18. EXPORT RESTRICTIONS. The software is subject to United States export laws
-and regulations. You must comply with all domestic and international export
-laws and regulations that apply to the software. These laws include
-restrictions on destinations, end users and end use. For additional
-information, see www.microsoft.com/exporting.
-
-19. SUPPORT SERVICES. Microsoft provides support services for the software as
-described at www.support.microsoft.com/common/international.aspx.
-
-20. ENTIRE AGREEMENT. This agreement (including the warranty below), and the
-terms for supplements, updates, Internet-based services and support services
-that you use, are the entire agreement for the software and support services.
-
-21. APPLICABLE LAW.
-
-a. United States. If you acquired the software in the United States, Washington
-state law governs the interpretation of this agreement and applies to claims for
-breach of it, regardless of conflict of laws principles. The laws of the state
-where you live govern all other claims, including claims under state consumer
-protection laws, unfair competition laws, and in tort.
-
-b. Outside the United States. If you acquired the software in any other
-country, the laws of that country apply.
-
-22. LEGAL EFFECT. This agreement describes certain legal rights. You may have
-other rights under the laws of your state or country. You may also have rights
-with respect to the party from whom you acquired the software. This agreement
-does not change your rights under the laws of your state or country if the laws
-of your state or country do not permit it to do so.
-
-23. LIMITATION ON AND EXCLUSION OF DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND
-ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO THE AMOUNT YOU PAID FOR THE SOFTWARE.
-YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS,
-SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.
-This limitation applies to
- • anything related to the software, services, content (including code) on
-third party Internet sites, or third party programs; and
- • claims for breach of contract, breach of warranty, guarantee or condition,
-strict liability, negligence, or other tort to the extent permitted by
-applicable law.
-
-It also applies even if
- • repair, replacement or a refund for the software does not fully compensate
-you for any losses; or
- • Microsoft knew or should have known about the possibility of the damages.
-
-Some states do not allow the exclusion or limitation of incidental or
-consequential damages, so the above limitation or exclusion may not apply to
-you. They also may not apply to you because your country may not allow the
-exclusion or limitation of incidental, consequential or other damages.
-
-**************************************************************************************
-LIMITED WARRANTY
-A. LIMITED WARRANTY. If you follow the instructions, the software will perform
-substantially as described in the Microsoft materials that you receive in or
-with the software.
-
-B. TERM OF WARRANTY; WARRANTY RECIPIENT; LENGTH OF ANY IMPLIED WARRANTIES. THE
-LIMITED WARRANTY COVERS THE SOFTWARE FOR ONE YEAR AFTER ACQUIRED BY THE FIRST
-USER. IF YOU RECEIVE SUPPLEMENTS, UPDATES, OR REPLACEMENT SOFTWARE DURING THAT
-YEAR, THEY WILL BE COVERED FOR THE REMAINDER OF THE WARRANTY OR 30 DAYS,
-WHICHEVER IS LONGER. If the first user transfers the software, the remainder of
-the warranty will apply to the recipient.
-TO THE EXTENT PERMITTED BY LAW, ANY IMPLIED WARRANTIES, GUARANTEES OR CONDITIONS
-LAST ONLY DURING THE TERM OF THE LIMITED WARRANTY. Some states do not allow
-limitations on how long an implied warranty lasts, so these limitations may not
-apply to you. They also might not apply to you because some countries may not
-allow limitations on how long an implied warranty, guarantee or condition lasts.
-
-C. EXCLUSIONS FROM WARRANTY. This warranty does not cover problems caused by
-your acts (or failures to act), the acts of others, or events beyond Microsoft’s
-reasonable control.
-
-D. REMEDY FOR BREACH OF WARRANTY. MICROSOFT WILL REPAIR OR REPLACE THE SOFTWARE
-AT NO CHARGE. IF MICROSOFT CANNOT REPAIR OR REPLACE IT, MICROSOFT WILL REFUND
-THE AMOUNT SHOWN ON YOUR RECEIPT FOR THE SOFTWARE. IT WILL ALSO REPAIR OR
-REPLACE SUPPLEMENTS, UPDATES AND REPLACEMENT SOFTWARE AT NO CHARGE. IF
-MICROSOFT CANNOT REPAIR OR REPLACE THEM, IT WILL REFUND THE AMOUNT YOU PAID FOR
-THEM, IF ANY. YOU MUST UNINSTALL THE SOFTWARE AND RETURN ANY MEDIA AND OTHER
-ASSOCIATED MATERIALS TO MICROSOFT WITH PROOF OF PURCHASE TO OBTAIN A REFUND.
-THESE ARE YOUR ONLY REMEDIES FOR BREACH OF THE LIMITED WARRANTY.
-
-E. CONSUMER RIGHTS NOT AFFECTED. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS UNDER
-YOUR LOCAL LAWS, WHICH THIS AGREEMENT CANNOT CHANGE.
-
-F. WARRANTY PROCEDURES. You need proof of purchase for warranty service.
-
-1. United States and Canada. For warranty service or information about how to
-obtain a refund for software acquired in the United States and Canada, contact
-Microsoft at
- • (800) MICROSOFT;
- • Microsoft Customer Service and Support, One Microsoft Way, Redmond, WA
-98052-6399; or
- • visit www.microsoft.com/info/nareturns.htm.
-
-2. Europe, Middle East and Africa. If you acquired the software in Europe, the
-Middle East or Africa, Microsoft Ireland Operations Limited makes this limited
-warranty. To make a claim under this warranty, you should contact either
- • Microsoft Ireland Operations Limited, Customer Care Centre, Atrium Building
-Block B, Carmanhall Road, Sandyford Industrial Estate, Dublin 18, Ireland; or
- • the Microsoft affiliate serving your country (see www.microsoft.com/worldwide).
-
-3. Outside United States, Canada, Europe, Middle East and Africa. If you
-acquired the software outside the United States, Canada, Europe, the Middle East
-and Africa, contact the Microsoft affiliate serving your country (see
-www.microsoft.com/worldwide).
-
-G. NO OTHER WARRANTIES. THE LIMITED WARRANTY IS THE ONLY DIRECT WARRANTY FROM
-MICROSOFT. MICROSOFT GIVES NO OTHER EXPRESS WARRANTIES, GUARANTEES OR
-CONDITIONS. WHERE ALLOWED BY YOUR LOCAL LAWS, MICROSOFT EXCLUDES IMPLIED
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NON-INFRINGEMENT. If your local laws give you any implied warranties,
-guarantees or conditions, despite this exclusion, your remedies are described in
-the Remedy for Breach of Warranty clause above, to the extent permitted by your
-local laws.
-
-H. LIMITATION ON AND EXCLUSION OF DAMAGES FOR BREACH OF WARRANTY. THE
-LIMITATION ON AND EXCLUSION OF DAMAGES CLAUSE ABOVE APPLIES TO BREACHES OF THIS
-LIMITED WARRANTY.
-
-THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS, AND YOU MAY ALSO HAVE OTHER
-RIGHTS WHICH VARY FROM STATE TO STATE. YOU MAY ALSO HAVE OTHER RIGHTS WHICH
-VARY FROM COUNTRY TO COUNTRY.
-
-Please note: As this software is distributed in Quebec, Canada, some of the
-clauses in this agreement are provided below in French.
-
-Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses
-dans ce contrat sont fournies ci-dessous en français.
-
-GARANTIE LIMITÉE
-
-A. GARANTIE LIMITÉE. Si vous suivez les instructions, le logiciel fonctionnera
-dans son ensemble comme il est décrit dans la documentation de Microsoft reçue
-avec ou dans le logiciel.
-
-B. DURÉE DE LA GARANTIE ; BÉNÉFICIAIRE DE LA GARANTIE ; DURÉE DE TOUTE GARANTIE
-IMPLICITE. La garantie limitée couvre le logiciel pendant un an après son
-acquisition par le premier utilisateur. Si vous recevez des compléments, des
-mises à jour ou un logiciel de remplacement au cours de cette année, ils seront
-couverts par la garantie pendant la durée restante ou pendant 30 jours, la
-période la plus longue étant retenue. Si le premier utilisateur transfère le
-logiciel, la durée restante de la garantie s’applique au destinataire.
-Dans la limite autorisée par la loi en vigueur, toute garantie ou condition
-implicite dont vous bénéficiez prendra fin au terme de la garantie limitée.
-Certains États n’autorisent pas les limitations portant sur la durée d’une
-garantie implicite, de sorte que les limitations ci-dessus peuvent ne pas vous
-être applicables. Elles peuvent également ne pas vous être applicables, car
-certains pays n’autorisent pas les limitations portant sur la durée d’une
-garantie ou condition implicite.
-
-C. EXCLUSIONS DE LA GARANTIE. Cette garantie ne couvre pas les problèmes
-engendrés par vos propres actes (ou absences d’actes), ceux de tiers ou tout
-autre événement indépendant de la volonté de Microsoft.
-
-D. RECOURS DANS LE CADRE DE LA VIOLATION DE GARANTIE. Nous nous engageons à
-réparer ou à remplacer le logiciel gratuitement. Si nous ne pouvons pas le
-réparer ni le remplacer, nous rembourserons le montant que vous avez payé pour
-le logiciel figurant sur le reçu. Nous nous engageons à réparer ou à remplacer
-les compléments, les mises à jour et le logiciel de remplacement gratuitement.
-Si nous ne pouvons pas les réparer ni les remplacer, nous rembourserons le
-montant que vous avez payé pour ces composants, le cas échéant. Vous devez
-désinstaller le logiciel et le renvoyer à Microsoft avec une preuve d’achat pour
-vous faire rembourser. Ces recours sont les seuls dont vous disposez dans le
-cadre de la violation de garantie limitée.
-
-E. DROITS DES CONSOMMATEURS NON AFFECTÉS. Vous pouvez bénéficier de droits des
-consommateurs supplémentaires dans le cadre du droit local, que ce contrat ne
-peut modifier.
-
-F. PROCÉDURES RELATIVES AUX RÉCLAMATIONS DANS LE CADRE DE LA GARANTIE. Vous
-devrez fournir une preuve d’achat pour obtenir de l’aide en matière de garantie.
-
-1. États-Unis et Canada. Pour obtenir de l’aide en matière de garantie ou des
-informations sur la procédure à suivre pour vous faire rembourser un logiciel
-acquis aux États-Unis et au Canada, mettez-vous en rapport avec Microsoft
- • (800) MICROSOFT ;
- • Microsoft Customer Service and Support, One Microsoft Way, Redmond, WA
-98052-6399 ; ou
- • en visitant www.microsoft.com/info/nareturns.htm.
-
-2. Europe, Moyen-Orient et Afrique. Si vous avez acquis le logiciel en Europe,
-au Moyen-Orient ou en Afrique, Microsoft Ireland Operations Limited offre cette
-garantie limitée. Pour faire une réclamation au titre de cette garantie, vous
-devez vous mettre en rapport avec
- • Microsoft Ireland Operations Limited, Customer Care Centre, Atrium Building
-Block B, Carmanhall Road, Sandyford Industrial Estate, Dublin 18, Irlande ; ou
- • votre filiale nationale de Microsoft (visitez le site
-www.microsoft.com/worldwide).
-
-3. En dehors des États-Unis, du Canada, de l’Europe, du Moyen-Orient et de
-l’Afrique. Si vous avez acquis le logiciel en dehors des États-Unis, du Canada,
-de l’Europe, du Moyen-Orient et de l’Afrique, mettez-vous en rapport avec votre
-filiale nationale de Microsoft (visitez le site www.microsoft.com/worldwide).
-
-G. AUCUNE AUTRE GARANTIE. La garantie limitée est la seule garantie directe de
-Microsoft. Nous n’accordons aucune autre garantie ou condition expresse. Dans
-toute la mesure permise par le droit local, les garanties implicites de qualité
-marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont
-exclues. Si le droit local vous accorde des garanties ou conditions implicites,
-nonobstant la présente exclusion, les recours dont vous disposez sont ceux
-présentés dans la clause de recours dans le cadre de la violation de garantie
-ci-dessus, dans la limite autorisée par le droit local.
-
-H. LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ DANS LE CADRE
-DE LA VIOLATION DE GARANTIE. La clause de limitation des dommages-intérêts et
-exclusion de responsabilité ci-dessous s’applique aux violations de cette
-garantie limitée.
-
-La présente garantie vous confère des droits légaux spécifiques et vous pouvez
-également bénéficier d’autres droits qui varient d’un État à l’autre. Vous
-pouvez également bénéficier d’autres droits qui varient d’un pays à l’autre.
-
-LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES
-DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une
-indemnisation en cas de dommages directs uniquement à hauteur du montant que
-vous avez payé pour le logiciel. Vous ne pouvez prétendre à aucune indemnisation
-pour les autres dommages, y compris les dommages spéciaux, indirects ou
-accessoires et pertes de bénéfices.
-
-Cette limitation concerne
- • toute affaire liée au logiciel, aux services ou au contenu (y compris le
-code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et
- • les réclamations au titre de violation de contrat ou de garantie ou
-condition, ou au titre de responsabilité stricte, de négligence ou d’une autre
-faute dans la limite autorisée par la loi en vigueur.
-
-Elle s’applique également, même si
- • la réparation, le remplacement ou le remboursement du logiciel ne compense
-pas intégralement toute perte subie ; ou
- • Microsoft connaissait l’éventualité d’un tel dommage.
-
-Certains États n’autorisent pas l’exclusion ou la limitation de responsabilité
-pour les dommages indirects ou accessoires, de sorte que la limitation ou
-l’exclusion ci-dessus peut ne pas vous être applicable. Elles peuvent également
-ne pas vous être applicables, car votre pays n’autorise pas l’exclusion ou la
-limitation de responsabilité pour les dommages indirects, accessoires ou de
-quelque nature que ce soit.
-
-EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous
-pourriez avoir d’autres droits prévus par les lois de votre État ou pays. Vous
-pourriez également avoir des droits à l’égard de la partie de qui vous avez
-acquis de logiciel. Le présent contrat ne modifie pas les droits que vous
-confèrent les lois de votre État ou pays si celles ci ne le permettent pas.
-
-***************************************************************************
+You should have received a copy of the Common Public License along with this
+library.
diff --git a/source/l/jre/Welcome.html b/source/l/jre/Welcome.html
index c55c68a6f..c4bdc518e 100644
--- a/source/l/jre/Welcome.html
+++ b/source/l/jre/Welcome.html
@@ -18,7 +18,7 @@ documentation for more information on using the Java Plug-in product.
<p> See the <a href=http://java.sun.com/javase>Java Platform</a> web site for
more information on the Java Platform.
<hr>
-<font size="-2">Copyright 2009 Sun Microsystems, Inc., 4150 Network Circle, Santa
+<font size="-2">Copyright 2010 Sun Microsystems, Inc., 4150 Network Circle, Santa
Clara, California 95054, U.S.A.<BR>
All rights reserved.</font>
<p>
diff --git a/source/l/jre/jre.SlackBuild b/source/l/jre/jre.SlackBuild
index 260c6176a..70e775c67 100755
--- a/source/l/jre/jre.SlackBuild
+++ b/source/l/jre/jre.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,8 +23,8 @@
# Note that the slack-desc file mentions the JRE version (edit when upgrading)!
-VERSION=6u16
-DVER=1.6.0_16
+VERSION=6u20
+DVER=1.6.0_20
ARCH=x86_64
BUILD=${BUILD:-1}
diff --git a/source/l/jre/slack-desc b/source/l/jre/slack-desc
index 20df6be84..aa0151538 100644
--- a/source/l/jre/slack-desc
+++ b/source/l/jre/slack-desc
@@ -6,7 +6,7 @@
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
jre: Java(TM) 2 Platform Standard Edition Runtime Environment,
-jre: Version 6.0 update 16.
+jre: Version 6.0 update 20.
jre:
jre: The J2SE(TM) Runtime Environment (JRE) is intended for software
jre: developers and vendors to redistribute with their applications.
diff --git a/source/l/lcms/lcms.SlackBuild b/source/l/lcms/lcms.SlackBuild
index 4510d2cf4..19efaa314 100755
--- a/source/l/lcms/lcms.SlackBuild
+++ b/source/l/lcms/lcms.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.18
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo lcms-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -35,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -46,7 +59,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf lcms-$VERSION
-tar xvf $CWD/lcms-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/lcms-$VERSION.tar.?z* || exit 1
cd lcms-$VERSION
chown -R root:root .
find . \
@@ -77,6 +90,14 @@ cp -a \
$PKG/usr/doc/lcms-$VERSION
find $PKG/usr/doc/lcms-$VERSION -type f -exec chmod 644 {} \;
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/lesstif/lesstif.SlackBuild b/source/l/lesstif/lesstif.SlackBuild
index cb169ad7f..70f888505 100755
--- a/source/l/lesstif/lesstif.SlackBuild
+++ b/source/l/lesstif/lesstif.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,9 +22,18 @@
PKGNAM=lesstif
-VERSION=${VERSION:-0.95.0}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-5}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -43,11 +52,14 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION || exit 1
if [ "$ARCH" = "x86_64" ]; then
@@ -56,8 +68,6 @@ if [ "$ARCH" = "x86_64" ]; then
zcat $CWD/lesstif.x86_64.patch.gz | patch -p1 --verbose || exit 1
fi
-zcat $CWD/lesstif.gcc42.diff.gz | patch -p1 --verbose || exit 1
-
# Check for NULL w in RenderTable.c to prevent possible crashes in
# "experimental" code path:
zcat $CWD/lesstif.rendertable.check.diff.gz | patch -p1 --verbose || exit 1
@@ -76,6 +86,7 @@ CFLAGS="$SLKCFLAGS" \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc/X11 \
+ --mandir=/usr/man \
--enable-shared \
--enable-static \
--enable-build-21 \
@@ -105,6 +116,15 @@ rmdir $PKG/usr/lib${LIBDIRSUFFIX}/LessTif
mkdir $PKG/usr/doc
mv doc $PKG/usr/doc/lesstif-${VERSION}
)
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
rmdir $PKG/usr/LessTif
mkdir -p $PKG/etc/X11
mv $PKG/usr/lib${LIBDIRSUFFIX}/X11/app-defaults $PKG/etc/X11
diff --git a/source/l/lesstif/lesstif.gcc42.diff b/source/l/lesstif/lesstif.gcc42.diff
deleted file mode 100644
index 5c3bf12ad..000000000
--- a/source/l/lesstif/lesstif.gcc42.diff
+++ /dev/null
@@ -1,23 +0,0 @@
---- ./include/Motif-2.1/Xm/VendorSP.h.orig 2004-08-28 14:23:27.000000000 -0500
-+++ ./include/Motif-2.1/Xm/VendorSP.h 2009-03-16 15:29:38.000000000 -0500
-@@ -30,10 +30,6 @@
- #include <Xm/VendorS.h>
- #include <X11/ShellP.h>
-
--#ifdef __cplusplus
--extern "C" {
--#endif
--
- XMLIBEXPORT extern Cardinal _XmFilterResources(XtResource *resources,
- Cardinal numResources,
- WidgetClass filterClass,
-@@ -57,9 +53,4 @@
-
- XMLIBEXPORT extern VendorShellClassRec vendorShellClassRec;
-
--
--#ifdef __cplusplus
--}
--#endif
--
- #endif /* _XM_VENDORSP_H */
diff --git a/source/l/libaio/libaio-0.3.109.tar.sign b/source/l/libaio/libaio-0.3.109.tar.sign
new file mode 100644
index 000000000..e9e6186e3
--- /dev/null
+++ b/source/l/libaio/libaio-0.3.109.tar.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBKz65OyGugalF9Dw4RAgZcAJwLPiBtx6k3XSh9KZf48MEjAssKYQCfZtuu
+5+ttTF5tbBlF0vt9GZdLEiQ=
+=IQ5R
+-----END PGP SIGNATURE-----
diff --git a/source/l/libaio/libaio.SlackBuild b/source/l/libaio/libaio.SlackBuild
index be3c1a1c3..4d6502013 100755
--- a/source/l/libaio/libaio.SlackBuild
+++ b/source/l/libaio/libaio.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,21 @@
PKGNAM=libaio
-VERSION=${VERSION:-0.3.106}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
else
@@ -41,7 +51,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.gz || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
@@ -95,9 +105,17 @@ fi
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- COPYING ChangeLog INSTALL TODO \
+ COPYING* INSTALL TODO README* \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/libarchive/libarchive.SlackBuild b/source/l/libarchive/libarchive.SlackBuild
index 976b3841d..2133e0739 100755
--- a/source/l/libarchive/libarchive.SlackBuild
+++ b/source/l/libarchive/libarchive.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2008 Heinz Wiesinger <hmwiesinger@gmx.at>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,17 +23,25 @@
# Modified by Robby Workman <rworkman@slackware.com>
-
-PRGNAM=libarchive
-VERSION=2.6.2
-ARCH=${ARCH:-x86_64}
+PKGNAM=libarchive
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:--j6}
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -44,14 +52,17 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -82,12 +93,12 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
)
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a COPYING INSTALL NEWS README $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a COPYING* INSTALL NEWS README* $PKG/usr/doc/$PKGNAM-$VERSION
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/libcap/libcap-2.16.tar.bz2.sign b/source/l/libcap/libcap-2.16.tar.bz2.sign
deleted file mode 100644
index d4925d762..000000000
--- a/source/l/libcap/libcap-2.16.tar.bz2.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBJN4JLyGugalF9Dw4RAiqLAJ9L42xfkqkbmmTyQJulpL8VoRjurwCeJkLj
-oLAyJMYhVE31Kumb66LU5c8=
-=UTrX
------END PGP SIGNATURE-----
diff --git a/source/l/libcap/libcap-2.19.tar.bz2.sign b/source/l/libcap/libcap-2.19.tar.bz2.sign
new file mode 100644
index 000000000..23e2c3988
--- /dev/null
+++ b/source/l/libcap/libcap-2.19.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBLTn0myGugalF9Dw4RAkEcAJ9zpWMkph0bSL/WfNPHtIayydTUOQCeMoiN
+DC9y+17zdyaaieDE7aH2rfs=
+=YEBM
+-----END PGP SIGNATURE-----
diff --git a/source/l/libcap/libcap.SlackBuild b/source/l/libcap/libcap.SlackBuild
index e7603570e..f77ad6e51 100755
--- a/source/l/libcap/libcap.SlackBuild
+++ b/source/l/libcap/libcap.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,13 +23,22 @@
# Originally written by Menno Duursma
-PRGNAM=libcap
-VERSION=${VERSION:-2.16}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=libcap
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -49,14 +58,14 @@ fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+cd $PKGNAM-$VERSION || exit 1
zcat $CWD/libcap.capability.h.fix.broken.includes.diff.gz | patch -p1 || exit 1
@@ -72,11 +81,17 @@ sed -i.orig "s/^\(DEBUG =\).*/\1$SLKCFLAGS/" Make.Rules
make DYNAMIC=yes $NUMJOBS || make DYNAMIC=yes || exit 1
make install FAKEROOT=$PKG man_prefix=/usr || exit 1
-chmod 755 $PKG/lib/libcap.so*
+chmod 755 $PKG/lib${LIBDIRSUFFIX}/libcap.so*
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+# Static libs are better placed under /usr:
+if [ -r $PKG/lib${LIBDIRSUFFIX}/libcap.a ]; then
+ mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}
+ mv $PKG/lib${LIBDIRSUFFIX}/libcap.a $PKG/usr/lib${LIBDIRSUFFIX}
+fi
+
# Add included scripts
( cd contrib || exit 1
for file in pcaps4convenience pcaps4server pcaps4suid0 ; do
@@ -93,11 +108,11 @@ rm -rf $PKG/usr/man/man2
for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
)
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
CHANGELOG License README License pgp.keys.asc doc/capability.notes \
progs/quicktest.sh $CWD/capfaq-0.2.txt $CWD/README.SLACKWARE \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
chown -R root:root $PKG/usr/doc
find $PKG/usr/doc -type f -exec chmod 644 {} \;
@@ -105,5 +120,5 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/libcdio/libcdio.SlackBuild b/source/l/libcdio/libcdio.SlackBuild
index dc4f891b8..9379591fb 100755
--- a/source/l/libcdio/libcdio.SlackBuild
+++ b/source/l/libcdio/libcdio.SlackBuild
@@ -22,7 +22,7 @@
PKGNAM=libcdio
-VERSION=${VERSION:-$(echo $(basename $(echo $PRGNAM-*.tar.bz2 | cut -f 2 -d -) .tar.bz2) | cut -f 2 -d -)}
+VERSION=${VERSION:-$(echo $(basename $(echo $PKGNAM-*.tar.bz2 | cut -f 2 -d -) .tar.bz2) | cut -f 2 -d -)}
ARCH=${ARCH:-x86_64}
NUMJOBS=${NUMJOBS:-" -j7 "}
BUILD=${BUILD:-2}
diff --git a/source/l/libdiscid/libdiscid.SlackBuild b/source/l/libdiscid/libdiscid.SlackBuild
new file mode 100755
index 000000000..f30ed7bf8
--- /dev/null
+++ b/source/l/libdiscid/libdiscid.SlackBuild
@@ -0,0 +1,118 @@
+#!/bin/bash
+
+# Copyright 2010 Eric Hameleers, Eindhoven, NL
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=libdiscid
+VERSION=${VERSION:-0.2.2}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
+cd ${PKGNAM}-$VERSION || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --disable-static \
+ --mandir=/usr/man \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog README \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/libdiscid/slack-desc b/source/l/libdiscid/slack-desc
new file mode 100644
index 000000000..d0455bdb5
--- /dev/null
+++ b/source/l/libdiscid/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+libdiscid: libdiscid (library to generate DiscIDs from audio CDs)
+libdiscid:
+libdiscid: libdiscid creates MusicBrainz DiscIDs from audio CDs.
+libdiscid: It reads the table of contents (TOC) of a CD and generates
+libdiscid: an identifier which can be used to lookup the CD at MusicBrainz.
+libdiscid: Additionally, it provides a submission URL for adding the DiscID
+libdiscid: to the database.
+libdiscid:
+libdiscid:
+libdiscid: Home: http://musicbrainz.org/doc/libdiscid
+libdiscid:
diff --git a/source/l/libexif/libexif.SlackBuild b/source/l/libexif/libexif.SlackBuild
index db9f6f4c6..3fce2befa 100755
--- a/source/l/libexif/libexif.SlackBuild
+++ b/source/l/libexif/libexif.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=0.6.16
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo libexif-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -35,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -45,7 +58,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf libexif-$VERSION
-tar xvf $CWD/libexif-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/libexif-$VERSION.tar.?z* || exit 1
cd libexif-$VERSION
zcat $CWD/libexif.pc.diff.gz | patch -p1 --verbose || exit 1
chown -R root:root .
@@ -78,6 +91,14 @@ cp -a \
ABOUT-NLS AUTHORS COPYING NEWS README \
$PKG/usr/doc/libexif-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/libglade/libglade.SlackBuild b/source/l/libglade/libglade.SlackBuild
index c9153b506..d8973a4e7 100755
--- a/source/l/libglade/libglade.SlackBuild
+++ b/source/l/libglade/libglade.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,9 +21,18 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-2.6.4}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo libglade-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-4}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -40,12 +49,15 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-tar xvf $CWD/libglade-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/libglade-$VERSION.tar.?z* || exit 1
cd libglade-$VERSION || exit 1
chown -R root:root .
find . \
@@ -70,6 +82,10 @@ make install DESTDIR=$PKG
# Hello! --enable-static=no seemed to mean something when ./configure ran...
rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libglade*.a
+## [make that, we _wish_ these .la files _could_ go]
+## These .la files can go.
+#rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libglade*.la
+
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -81,6 +97,14 @@ cp -a \
ln -s /usr/share/gtk-doc/html/libglade html
)
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/libgphoto2/libgphoto2.SlackBuild b/source/l/libgphoto2/libgphoto2.SlackBuild
index fec05df70..fb3efe162 100755
--- a/source/l/libgphoto2/libgphoto2.SlackBuild
+++ b/source/l/libgphoto2/libgphoto2.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007-2008 Frank Caraballo <fecaraballo{at}gmail{dot}com>
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=libgphoto2
-VERSION=2.4.6
-ARCH=${ARCH:-x86_64}
+PKGNAM=libgphoto2
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -41,18 +50,21 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || exit 1
-cd $PRGNAM-$VERSION
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -67,8 +79,8 @@ CXXFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--disable-static \
--mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --with-doc-dir=/usr/doc/$PRGNAM-$VERSION \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
+ --with-doc-dir=/usr/doc/$PKGNAM-$VERSION \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
@@ -94,7 +106,7 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
# Generate udev rules and hal device information files
# First, we'll have to set (and export) some important variables
LD_LIBRARY_PATH=$PKG/usr/lib${LIBDIRSUFFIX}
-CAMLIBS=$PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/$VERSION
+CAMLIBS=$PKG/usr/lib${LIBDIRSUFFIX}/$PKGNAM/$VERSION
LIBDIR=$PKG/usr/lib${LIBDIRSUFFIX}
export LD_LIBRARY_PATH CAMLIBS LIBDIR
# Generate udev rules
@@ -115,30 +127,37 @@ unset LD_LIBRARY_PATH CAMLIBS LIBDIR # Unset these just in case
for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
)
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING* HACKING INSTALL MAINTAINERS \
NEWS README* TESTERS \
- $PKG/usr/doc/$PRGNAM-$VERSION
-# The entire ChangeLog is excessive for most users:
-cat $PKG/usr/doc/$PRGNAM-$VERSION/ChangeLog | head -n 1000 > $PKG/usr/doc/$PRGNAM-$VERSION/CL
-mv $PKG/usr/doc/$PRGNAM-$VERSION/CL $PKG/usr/doc/$PRGNAM-$VERSION/ChangeLog
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
# The apidocs are huge, and probably only of interest to developers who will
# very likely use the source code as a reference:
-rm -r $PKG/usr/doc/$PRGNAM-$VERSION/apidocs.html
-cat << EOF > $PKG/usr/doc/$PRGNAM-$VERSION/apidocs.html/README
+rm -r $PKG/usr/doc/$PKGNAM-$VERSION/apidocs.html
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/apidocs.html
+cat << EOF > $PKG/usr/doc/$PKGNAM-$VERSION/apidocs.html/README
The complete API documentation may be found in the
libgphoto2 source code archive.
EOF
# This library is not built, but it is useful for users to know why that is:
-cp -a camlibs/jl2005a/README.jl2005a $PKG/usr/doc/$PRGNAM-$VERSION/camlibs
-chmod 644 $PKG/usr/doc/$PRGNAM-$VERSION/camlibs/README.jl2005a
-chown root:root $PKG/usr/doc/$PRGNAM-$VERSION/camlibs/README.jl2005a
+cp -a camlibs/jl2005a/README.jl2005a $PKG/usr/doc/$PKGNAM-$VERSION/camlibs
+chmod 644 $PKG/usr/doc/$PKGNAM-$VERSION/camlibs/README.jl2005a
+chown root:root $PKG/usr/doc/$PKGNAM-$VERSION/camlibs/README.jl2005a
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/libgsf/libgsf.SlackBuild b/source/l/libgsf/libgsf.SlackBuild
index 004a3b1fd..16d6a2dcc 100755
--- a/source/l/libgsf/libgsf.SlackBuild
+++ b/source/l/libgsf/libgsf.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,16 +21,24 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.14.15
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo libgsf-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-libgsf
-rm -rf $PKG
-mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -41,11 +49,16 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG
cd $TMP
rm -rf libgsf-$VERSION
-tar xvf $CWD/libgsf-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/libgsf-$VERSION.tar.?z* || exit 1
cd libgsf-$VERSION || exit 1
chown -R root:root .
find . \
@@ -64,7 +77,6 @@ CFLAGS="$SLKCFLAGS" \
--mandir=/usr/man \
--disable-static \
--without-gnome-vfs \
- --without-gio \
--without-bonobo \
--build=$ARCH-slackware-linux
@@ -93,6 +105,14 @@ cp -a \
AUTHORS BUGS COPYING* HACKING NEWS README TODO \
$PKG/usr/doc/libgsf-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/libgtkhtml/libgtkhtml.SlackBuild b/source/l/libgtkhtml/libgtkhtml.SlackBuild
deleted file mode 100755
index c22966fd3..000000000
--- a/source/l/libgtkhtml/libgtkhtml.SlackBuild
+++ /dev/null
@@ -1,117 +0,0 @@
-#!/bin/sh
-
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-PKGNAM=libgtkhtml
-VERSION=${VERSION:-2.11.1}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
-
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-fi
-
-cd $TMP
-rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
-cd ${PKGNAM}-$VERSION
-
-# Make sure ownerships and permissions are sane:
-chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-# Configure:
-CFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var/lib \
- --mandir=/usr/man \
- --disable-static \
- --program-prefix= \
- --program-suffix= \
- --disable-accessibility \
- --build=$ARCH-slackware-linux
-
-# Build and install:
-make $NUMJOBS || make || exit 1
-make install DESTDIR=$PKG || exit 1
-
-# Strip binaries:
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-
-# Compress and link manpages, if any:
-if [ -d $PKG/usr/man ]; then
- ( cd $PKG/usr/man
- for manpagedir in $(find . -type d -name "man*") ; do
- ( cd $manpagedir
- for eachpage in $( find . -type l -maxdepth 1) ; do
- ln -s $( readlink $eachpage ).gz $eachpage.gz
- rm $eachpage
- done
- gzip -9 *.*
- )
- done
- )
-fi
-
-# Compress info files, if any:
-if [ -d $PKG/usr/info ]; then
- ( cd $PKG/usr/info
- rm -f dir
- gzip -9 *
- )
-fi
-
-# Add a documentation directory:
-mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
-cp -a \
- AUTHORS COPYING.LIB INSTALL NEWS README TODO docs/IDEAS \
- $PKG/usr/doc/${PKGNAM}-$VERSION
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/l/libgtkhtml/slack-desc b/source/l/libgtkhtml/slack-desc
deleted file mode 100644
index 22d68c5b3..000000000
--- a/source/l/libgtkhtml/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-libgtkhtml: libgtkhtml (lightweight HTML engine)
-libgtkhtml:
-libgtkhtml: GtkHTML is a lightweight HTML rendering/printing/editing engine. It
-libgtkhtml: was originally based on KHTMLW, part of the KDE project.
-libgtkhtml:
-libgtkhtml: libgtkhtml is used by the GIMP help browser.
-libgtkhtml:
-libgtkhtml:
-libgtkhtml:
-libgtkhtml:
-libgtkhtml:
diff --git a/source/l/libiodbc/libiodbc.SlackBuild b/source/l/libiodbc/libiodbc.SlackBuild
new file mode 100755
index 000000000..4ea1f6f54
--- /dev/null
+++ b/source/l/libiodbc/libiodbc.SlackBuild
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# Copyright 2009, 2010 Eric Hameleers, Eindhoven, NL
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=3.52.7
+BUILD=${BUILD:-2}
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-libiodbc
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf libiodbc-$VERSION
+tar xvf $CWD/libiodbc-$VERSION.tar.?z* || exit 1
+cd libiodbc-$VERSION || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+# We add '--disable-libodbc'. This way, a libodbc.so library does not get
+# installed so that this package won't clash with an already present unixodbc.
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/libiodbc-$VERSION \
+ --disable-static \
+ --disable-libodbc \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/libiodbc-$VERSION
+cp -a \
+ AUTHORS COPYING* ChangeLog INSTALL README TODO \
+ $PKG/usr/doc/libiodbc-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/libiodbc-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/libiodbc/slack-desc b/source/l/libiodbc/slack-desc
new file mode 100644
index 000000000..6844c9274
--- /dev/null
+++ b/source/l/libiodbc/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+libiodbc: libiodbc (Independent Open DataBase Connectivity)
+libiodbc:
+libiodbc: iODBC is the acronym for Independent Open DataBase Connectivity,
+libiodbc: an Open Source platform independent implementation of both the ODBC
+libiodbc: and X/Open specifications. It allows for developing solutions
+libiodbc: that are language, platform and database independent.
+libiodbc:
+libiodbc:
+libiodbc:
+libiodbc: Homepage: http://iodbc.org/
+libiodbc:
diff --git a/source/l/libjpeg/jpeg-6b.diff b/source/l/libjpeg/jpeg-6b.diff
deleted file mode 100644
index 8ad8bb5db..000000000
--- a/source/l/libjpeg/jpeg-6b.diff
+++ /dev/null
@@ -1,59 +0,0 @@
---- makefile.cfg.orig Sat Mar 21 13:08:57 1998
-+++ makefile.cfg Tue Oct 6 19:15:26 1998
-@@ -21,6 +21,8 @@
-
- # The name of your C compiler:
- CC= @CC@
-+SONAME=libjpeg.so.62
-+SHLIBNAME=libjpeg.so.62.0.0
-
- # You may need to adjust these cc options:
- CFLAGS= @CFLAGS@ @CPPFLAGS@ @INCLUDEFLAGS@
-@@ -125,6 +127,7 @@
- jdsample.$(O) jdcolor.$(O) jquant1.$(O) jquant2.$(O) jdmerge.$(O)
- # These objectfiles are included in libjpeg.a
- LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
-+SHLIBOBJECTS= $(LIBOBJECTS:%.o=%.so)
- # object files for sample applications (excluding library files)
- COBJECTS= cjpeg.$(O) rdppm.$(O) rdgif.$(O) rdtarga.$(O) rdrle.$(O) \
- rdbmp.$(O) rdswitch.$(O) cdjpeg.$(O)
-@@ -133,7 +136,7 @@
- TROBJECTS= jpegtran.$(O) rdswitch.$(O) cdjpeg.$(O) transupp.$(O)
-
-
--all: @A2K_DEPS@ libjpeg.$(A) cjpeg djpeg jpegtran rdjpgcom wrjpgcom
-+all: @A2K_DEPS@ libjpeg.$(A) $(SHLIBNAME) cjpeg djpeg jpegtran rdjpgcom wrjpgcom
-
- # Special compilation rules to support ansi2knr and libtool.
- .SUFFIXES: .lo .la
-@@ -171,6 +174,11 @@
- $(LIBTOOL) --mode=link $(CC) -o libjpeg.la $(LIBOBJECTS) \
- -rpath $(libdir) -version-info $(JPEG_LIB_VERSION)
-
-+# shared library
-+
-+$(SHLIBNAME): @A2K_DEPS@ $(SHLIBOBJECTS)
-+ gcc -o $(SHLIBNAME) -Wl,-soname,$(SONAME) -shared $(SHLIBOBJECTS)
-+
- # sample programs:
-
- cjpeg: $(COBJECTS) libjpeg.$(A)
-@@ -214,7 +222,7 @@
- clean:
- $(RM) *.o *.lo libjpeg.a libjpeg.la
- $(RM) cjpeg djpeg jpegtran rdjpgcom wrjpgcom
-- $(RM) ansi2knr core testout* config.log config.status
-+ $(RM) ansi2knr core testout* config.log config.status $(SHLIBNAME)
- $(RM) -r knr .libs _libs
-
- distclean: clean
-@@ -289,6 +297,9 @@
- jidctfst.$(O): jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
- jidctint.$(O): jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
- jidctred.$(O): jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
-+
-+%.so : %.c
-+ $(CC) -c -fPIC $(CFLAGS) $(CPPFLAGS) $< -o $@
- jquant1.$(O): jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
- jquant2.$(O): jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
- jutils.$(O): jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
diff --git a/source/l/libjpeg/libjpeg.SlackBuild b/source/l/libjpeg/libjpeg.SlackBuild
index 5ec9f0164..9d43d22ea 100755
--- a/source/l/libjpeg/libjpeg.SlackBuild
+++ b/source/l/libjpeg/libjpeg.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,9 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-6b}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-5}
+VERSION=${VERSION:-v8a}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -38,51 +49,58 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
-# Explode the package framework:
-cd $PKG
-explodepkg $CWD/_libjpeg.tar.gz
-if [ "$ARCH" = "x86_64" ]; then
- mv usr/lib usr/lib${LIBDIRSUFFIX}
- sed -i -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" install/doinst.sh
-fi
-
cd $TMP
-rm -rf jpeg-6b
-tar xzvf $CWD/jpegsrc.v6b.tar.gz
-cd jpeg-6b
+rm -rf jpeg-8
+tar xvf $CWD/jpegsrc.${VERSION}.tar.?z* || exit 1
+cd jpeg-$(echo $VERSION | cut -f 2 -d v)
+
chown -R root:root .
-zcat $CWD/jpeg-6b.diff.gz | patch -p0 -E
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
export CFLAGS="$SLKCFLAGS"
./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
--libdir=/usr/lib${LIBDIRSUFFIX}
-make -j3 || exit 1
-strip cjpeg djpeg rdjpgcom wrjpgcom jpegtran
-cat cjpeg > $PKG/usr/bin/cjpeg
-cat djpeg > $PKG/usr/bin/djpeg
-cat jpegtran > $PKG/usr/bin/jpegtran
-cat rdjpgcom > $PKG/usr/bin/rdjpgcom
-cat wrjpgcom > $PKG/usr/bin/wrjpgcom
-for page in cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 wrjpgcom.1 ; do
- cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
-done
-strip --strip-unneeded libjpeg.so.62.0.0
-cat libjpeg.so.62.0.0 > $PKG/usr/lib${LIBDIRSUFFIX}/libjpeg.so.62.0.0
-cat libjpeg.a > $PKG/usr/lib${LIBDIRSUFFIX}/libjpeg.a
-cp -a jconfig.h jpeglib.h jmorecfg.h jerror.h $PKG/usr/include
-# KDE includes this complete header list, but the libjpeg source doesn't
-# suggest it, and we trust them. :)
-#for file in jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h \
-# jmorecfg.h jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h jconfig.h ; do
-# cp -a $file $PKG/usr/include
-#done
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
mkdir -p $PKG/usr/doc/libjpeg-$VERSION
-cp -a README *.doc $PKG/usr/doc/libjpeg-$VERSION
-chmod 644 $PKG/usr/doc/libjpeg-$VERSION/*
+cp -a README $PKG/usr/doc/libjpeg-$VERSION
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/liblastfm/liblastfm.SlackBuild b/source/l/liblastfm/liblastfm.SlackBuild
new file mode 100755
index 000000000..b5d1a401b
--- /dev/null
+++ b/source/l/liblastfm/liblastfm.SlackBuild
@@ -0,0 +1,93 @@
+#!/bin/sh
+
+# Slackware build script for liblastfm
+
+# Copyright 2009 Vincent Batts
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PRGNAM="liblastfm"
+VERSION=0.3.0
+BUILD=${BUILD:-2}
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
+cd $PRGNAM-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Fix for Ruby 1.9.1:
+sed -i "s/require 'ftools'//g" admin/*
+
+./configure \
+ --prefix /usr \
+ --release
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# For 64-bit, make sure that the libraries are in the proper directory:
+if [ "$LIBDIRSUFFIX" = "64" ]; then
+ mv $PKG/usr/lib $PKG/usr/lib64
+fi
+
+if [ -d $PKG/usr/man ]; then
+ gzip -9 $PKG/usr/man/man?/*
+fi
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ COPYING README \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/liblastfm/slack-desc b/source/l/liblastfm/slack-desc
new file mode 100644
index 000000000..a046a2a9f
--- /dev/null
+++ b/source/l/liblastfm/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+liblastfm: liblastfm (last fm library)
+liblastfm:
+liblastfm: The last.fm audio scrobbling service library.
+liblastfm:
+liblastfm:
+liblastfm:
+liblastfm:
+liblastfm:
+liblastfm:
+liblastfm:
+liblastfm:
diff --git a/source/l/libmng/libmng.SlackBuild b/source/l/libmng/libmng.SlackBuild
index 129c347c4..a40b0cf15 100755
--- a/source/l/libmng/libmng.SlackBuild
+++ b/source/l/libmng/libmng.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,18 @@
PKGNAM=libmng
-VERSION=${VERSION:-1.0.10}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-1}
-
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -34,6 +41,8 @@ PKG=$TMP/package-${PKGNAM}
rm -rf $PKG
mkdir -p $TMP $PKG
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -43,11 +52,14 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
diff --git a/source/l/libmsn/libmsn.SlackBuild b/source/l/libmsn/libmsn.SlackBuild
index 06b98185e..5de598ef2 100755
--- a/source/l/libmsn/libmsn.SlackBuild
+++ b/source/l/libmsn/libmsn.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for libmsn
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
# Redistribution and use of this script, with or without modification, is
@@ -23,8 +23,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PKGNAM=libmsn
-VERSION=r96
-ARCH=${ARCH:-x86_64}
+VERSION=4.1
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j6}
@@ -32,6 +31,16 @@ CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PKGNAM
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -41,6 +50,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -65,8 +77,8 @@ cd build
-DCMAKE_INSTALL_PREFIX=/usr \
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
..
- make $NUMJOBS || make || exit 1
- make install DESTDIR=$PKG || exit 1
+ make $NUMJOBS || make || exit 1
+ make install DESTDIR=$PKG || exit 1
cd ..
find $PKG | xargs file | grep -e "executable" -e "shared object" \
diff --git a/source/l/libmsn/slack-desc b/source/l/libmsn/slack-desc
index 0875c42ac..8fe1410c5 100644
--- a/source/l/libmsn/slack-desc
+++ b/source/l/libmsn/slack-desc
@@ -13,7 +13,7 @@ libmsn: connecting to Microsoft's MSN Messenger service.
libmsn:
libmsn:
libmsn:
-libmsn: Homepage: http://sourceforge.net/projects/libmsn/
libmsn:
libmsn:
+libmsn: Homepage: http://sourceforge.net/projects/libmsn/
libmsn:
diff --git a/source/l/libmtp/libmtp.SlackBuild b/source/l/libmtp/libmtp.SlackBuild
index 748682d55..c00fc5996 100755
--- a/source/l/libmtp/libmtp.SlackBuild
+++ b/source/l/libmtp/libmtp.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,20 @@
PKGNAM=libmtp
-VERSION=${VERSION:-0.3.6}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -43,6 +52,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
@@ -80,6 +92,16 @@ sed -e 's/MODE="666"/GROUP="audio", MODE="0660"/' libmtp.rules \
mkdir -p $PKG/usr/share/hal/fdi/information/20thirdparty/
cat libmtp.fdi > $PKG/usr/share/hal/fdi/information/20thirdparty/10-libmtp.fdi
+# Guess someone didn't have enough to drink:
+( cd $PKG/usr/bin
+ rm -f mtp-sendtr mtp-sendfile mtp-newfolder mtp-getfile mtp-delfile
+ ln -s mtp-connect mtp-sendtr
+ ln -s mtp-connect mtp-sendfile
+ ln -s mtp-connect mtp-newfolder
+ ln -s mtp-connect mtp-getfile
+ ln -s mtp-connect mtp-delfile
+)
+
# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
diff --git a/source/l/libmtp/slack-desc b/source/l/libmtp/slack-desc
index 5bc514e20..7e4aba0e6 100644
--- a/source/l/libmtp/slack-desc
+++ b/source/l/libmtp/slack-desc
@@ -9,7 +9,7 @@
libmtp: libmtp (A library for MTP media devices)
libmtp:
libmtp: libmtp is a library that attempts to support Microsoft's Media
-libmtp: Transfer Protocol (MTP). It was initially based the great libptp2
+libmtp: Transfer Protocol (MTP). It was initially based on the great libptp2
libmtp: library by Mariusz Woloszyn now maintained by Marcus Meissners, and
libmtp: Hubert Figuere's libgphoto2 work based on libptp2 (or is libptp2
libmtp: based on libgphoto?). It is like a master DJ has remixed all of
diff --git a/source/l/libnotify/libnotify.SlackBuild b/source/l/libnotify/libnotify.SlackBuild
new file mode 100755
index 000000000..671a6d85b
--- /dev/null
+++ b/source/l/libnotify/libnotify.SlackBuild
@@ -0,0 +1,92 @@
+#!/bin/sh
+#
+# Slackware build script for libnotify
+#
+# Copyright 2009 Erik W. Hanson, Minneapolis, MN, USA
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PRGNAM=libnotify
+VERSION=0.4.5
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -eu
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z*
+cd $PRGNAM-$VERSION
+chown -R root:root .
+chmod -R u+w,go+r-w,a-s .
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --enable-static=no \
+ --enable-shared=yes \
+ --build=$ARCH-slackware-linux
+
+make
+make install-strip DESTDIR=$PKG
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS ChangeLog COPYING README $PKG/usr/doc/$PRGNAM-$VERSION
+( cd $PKG/usr/doc/$PRGNAM-$VERSION ; ln -s ../../share/gtk-doc/html/libnotify html )
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/libnotify/slack-desc b/source/l/libnotify/slack-desc
new file mode 100644
index 000000000..4a46ad9a3
--- /dev/null
+++ b/source/l/libnotify/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler--------------------------------------------------|
+libnotify: libnotify (notification library)
+libnotify:
+libnotify: A general library for event notification
+libnotify:
+libnotify: Homepage: http://www.galago-project.org/news/index.php
+libnotify:
+libnotify:
+libnotify:
+libnotify:
+libnotify:
+libnotify:
diff --git a/source/l/libogg/libogg.SlackBuild b/source/l/libogg/libogg.SlackBuild
index b6fcc4283..01e7b4944 100755
--- a/source/l/libogg/libogg.SlackBuild
+++ b/source/l/libogg/libogg.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.1.3
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo libogg-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -35,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -46,7 +59,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf libogg-$VERSION
-tar xvf $CWD/libogg-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/libogg-$VERSION.tar.?z* || exit 1
cd libogg-$VERSION
chown -R root:root .
find . \
diff --git a/source/l/libpng/libpng.SlackBuild b/source/l/libpng/libpng.SlackBuild
index adf477bb3..83083c0b0 100755
--- a/source/l/libpng/libpng.SlackBuild
+++ b/source/l/libpng/libpng.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.2.37
-ARCH=${ARCH:-x86_64}
+VERSION_OLD=1.2.43
+VERSION_NEW=1.4.2
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
else
@@ -37,9 +47,11 @@ PKG=$TMP/package-libpng
rm -rf $PKG
mkdir -p $TMP $PKG/usr
+build_source() {
+
cd $TMP
rm -rf libpng-$VERSION
-tar xjvf $CWD/libpng-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/libpng-$VERSION.tar.?z* || exit 1
cd libpng-$VERSION
chown -R root:root .
find . \
@@ -48,36 +60,44 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Might as well link to -lz -lm, since the ./configure seems
-# to be doing it that way now... finally. That'll prevent
-# a couple of emails a week. :-)
-zcat $CWD/libpng.libs.diff.gz | patch -p1 --verbose || exit 1
-
-# Need this to substitute macros, but we'll keep using the
-# pre-built Makefile for now anyway...
+# Look like using ./configure is the only way that works now...
./configure --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX}
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man
-# Link the custom makefile:
-ln -sf scripts/makefile.linux ./Makefile
+make -j4 prefix=/usr LIBPATH=/usr/lib${LIBDIRSUFFIX} ZLIBLIB="-L/usr/lib${LIBDIRSUFFIX} -lm -lz" || exit 1
+make install prefix=/usr LIBPATH=/usr/lib${LIBDIRSUFFIX} ZLIBLIB="-L/usr/lib${LIBDIRSUFFIX} -lm -lz" DESTDIR=$PKG
-make -j4 prefix=/usr LIBPATH=/usr/lib${LIBDIRSUFFIX} || exit 1
-make install prefix=/usr LIBPATH=/usr/lib${LIBDIRSUFFIX} DESTDIR=$PKG
-
-# This symlink is needed to keep old applications running:
-# I guess the real lib used the major number 3, then 0 for
-# a short while, and now .3 again. Hopefully it will stay
-# this way as it was .3 in Slackware 10.2. One can hope.
+# I'm ditching this to see if anyone cares.
+#
+## This symlink is needed to keep old applications running:
+## I guess the real lib used the major number 3, then 0 for
+## a short while, and now .3 again. Hopefully it will stay
+## this way as it was .3 in Slackware 10.2. One can hope.
+#( cd $PKG/usr/lib${LIBDIRSUFFIX}
+# if [ ! -e libpng.so.0 -a -e libpng.so.3 ]; then
+# ln -sf libpng.so.3 libpng.so.0
+# fi
+#)
+
+# Well, glad I got rid of the above, but <someone> upstream still does not
+# grok shared libraries on Linux it seems -- libpng-1.4.0 caused all the
+# newly compiled binaries to want libpng.so.14, and now libpng-1.4.1
+# wants to change that to libpng14.so.14. Searching online finds that
+# we are not the only ones with binaries that want libpng.so.14, so we
+# are forced to provide a compatibility symlink again... :-/
+#
+# We'll try to remove this in 5 to 10 years, just like before.
( cd $PKG/usr/lib${LIBDIRSUFFIX}
- if [ ! -e libpng.so.0 -a -e libpng.so.3 ]; then
- ln -sf libpng.so.3 libpng.so.0
+ if [ ! -e libpng.so.14 -a -e libpng14.so.14 ]; then
+ ln -sf libpng14.so.14 libpng.so.14
fi
)
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-gzip -9 $PKG/usr/man/man?/*
+gzip -9 --force $PKG/usr/man/man?/*.?
mkdir -p $PKG/usr/doc/libpng-$VERSION
cp -a \
@@ -85,6 +105,27 @@ cp -a \
libpng*.txt example.c \
$PKG/usr/doc/libpng-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/libpng-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+}
+
+# Build the 1.2 version:
+VERSION=$VERSION_OLD
+build_source
+
+# Build the 1.4 version:
+VERSION=$VERSION_NEW
+build_source
+
+# Default the includes to version 1.4.x:
+( cd $PKG/usr/include ; ln -sf libpng14 libpng )
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/libpng/libpng.libs.diff b/source/l/libpng/libpng.libs.diff
deleted file mode 100644
index 814365f6f..000000000
--- a/source/l/libpng/libpng.libs.diff
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -ruN libpng-1.2.12/scripts/makefile.linux libpng-1.2.12-ldhack/scripts/makefile.linux
---- libpng-1.2.12/scripts/makefile.linux 2006-06-27 22:22:40.000000000 +0200
-+++ libpng-1.2.12-ldhack/scripts/makefile.linux 2006-08-25 14:27:08.000000000 +0200
-@@ -110,12 +110,12 @@
- $(LN_SF) $(LIBSOVER) $(LIBSOMAJ)
-
- $(LIBSOVER): $(OBJSDLL)
-- $(CC) -shared -Wl,-soname,$(LIBSOMAJ) -o $(LIBSOVER) $(OBJSDLL)
-+ $(CC) -shared -Wl,-soname,$(LIBSOMAJ) -o $(LIBSOVER) $(OBJSDLL) -lm -lz
-
- $(OLDSOVER): $(OBJSDLL)
- $(CC) -shared -Wl,-soname,$(OLDSOMAJ) \
- -o $(OLDSOVER) \
-- $(OBJSDLL)
-+ $(OBJSDLL) -lm -lz
-
- pngtest: pngtest.o $(LIBSO)
- $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS)
diff --git a/source/l/libraw1394/libraw1394-2.0.5.tar.sign b/source/l/libraw1394/libraw1394-2.0.5.tar.sign
new file mode 100644
index 000000000..a0d52cf1d
--- /dev/null
+++ b/source/l/libraw1394/libraw1394-2.0.5.tar.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBLSEqvyGugalF9Dw4RAueNAJ9LX2wQyXxyDS0Jqet7Om5arr0+wwCeMJUV
+7mZJlZrVGYg2b+bcycVTf2U=
+=louL
+-----END PGP SIGNATURE-----
diff --git a/source/l/libraw1394/libraw1394.SlackBuild b/source/l/libraw1394/libraw1394.SlackBuild
index 7b274c814..e7e3feb68 100755
--- a/source/l/libraw1394/libraw1394.SlackBuild
+++ b/source/l/libraw1394/libraw1394.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007 Pierre Cazenave <pwcazenave@gmail.com>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,20 +23,34 @@
# Modified by Robby Workman <rworkman at slackware.com>
-VERSION=2.0.0
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:--j7}
+PKGNAM=libraw1394
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:--j7}
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
- elif [ "$ARCH" = "i686" ]; then
+elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
- elif [ "$ARCH" = "x86_64" ]; then
+elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -47,7 +61,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf $TMP/libraw1394-$VERSION
-tar xvf $CWD/libraw1394-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/libraw1394-$VERSION.tar.?z* || exit 1
cd libraw1394-$VERSION || exit 1
chown -R root:root .
find . \
@@ -79,10 +93,18 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
mkdir -p $PKG/usr/doc/libraw1394-$VERSION
cp -a \
- AUTHORS COPYING* INSTALL NEWS README \
+ AUTHORS COPYING* INSTALL NEWS README* \
$PKG/usr/doc/libraw1394-$VERSION
find $PKG/usr/doc/libraw1394-$VERSION -type f -exec chmod 644 {} \;
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/libraw1394/libraw1394.info b/source/l/libraw1394/libraw1394.info
deleted file mode 100644
index c1657c5b3..000000000
--- a/source/l/libraw1394/libraw1394.info
+++ /dev/null
@@ -1,5 +0,0 @@
-PRGNAM=libraw1394
-VERSION=1.3.0
-HOMEPAGE=www.linux1394.org/
-DOWNLOAD=http://www.linux1394.org/dl/libraw1394-1.3.0.tar.gz
-MD5SUM=c5d9ab62bd25dba96af010b3471e816a
diff --git a/source/l/libraw1394/slack-desc b/source/l/libraw1394/slack-desc
index 7e93533ff..d8f96d0b4 100644
--- a/source/l/libraw1394/slack-desc
+++ b/source/l/libraw1394/slack-desc
@@ -11,7 +11,7 @@ libraw1394:
libraw1394: libraw1394 provides direct access to the IEEE 1394 bus through
libraw1394: the Linux 1394 subsystem's raw1394 user space interface.
libraw1394:
-libraw1394: Homepage: http://www.linux1394.org/
+libraw1394: Homepage: http://www.kernel.org/pub/linux/libs/ieee1394/
libraw1394:
libraw1394:
libraw1394:
diff --git a/source/l/librsvg/librsvg.SlackBuild b/source/l/librsvg/librsvg.SlackBuild
index 556a54cf1..bd22ff821 100755
--- a/source/l/librsvg/librsvg.SlackBuild
+++ b/source/l/librsvg/librsvg.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,9 +23,18 @@
# Slackware build script for librsvg
-VERSION=2.26.0
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo librsvg-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -38,6 +47,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -49,7 +61,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf librsvg-$VERSION
-tar xvf $CWD/librsvg-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/librsvg-$VERSION.tar.?z* || exit 1
cd librsvg-$VERSION
chown -R root:root .
find . \
@@ -89,6 +101,14 @@ cp -a \
$PKG/usr/doc/librsvg-$VERSION
( cd $PKG/usr/doc/librsvg-$VERSION ; ln -s /usr/share/gtk-doc/html/rsvg html )
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/libsamplerate/libsamplerate.SlackBuild b/source/l/libsamplerate/libsamplerate.SlackBuild
new file mode 100755
index 000000000..cc4c5d504
--- /dev/null
+++ b/source/l/libsamplerate/libsamplerate.SlackBuild
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+# Slackware build script for libsamplerate
+# Written by paul wisehart paul@1ud2.com
+# Modified by Robby Workman <rworkman@slackbuilds.org>
+
+PRGNAM=libsamplerate
+VERSION=0.1.7
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || exit 1
+cd $PRGNAM-$VERSION
+chown -R root:root .
+chmod -R u+w,go+r-w,a-s .
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --disable-static \
+ --localstatedir=/var \
+ --build=$ARCH-slackware-linux
+
+make -j4 || exit 1
+make install DESTDIR=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING README doc/* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/libsamplerate/slack-desc b/source/l/libsamplerate/slack-desc
new file mode 100644
index 000000000..cf52161d9
--- /dev/null
+++ b/source/l/libsamplerate/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+libsamplerate: libsamplerate (a Sample Rate Converter for audio)
+libsamplerate:
+libsamplerate: Secret Rabbit Code (aka libsamplerate) is a Sample Rate Converter for
+libsamplerate: audio. One example of where such a thing would be useful is
+libsamplerate: converting audio from the CD sample rate of 44.1kHz to the 48kHz
+libsamplerate: sample rate used by DAT players. SRC is capable of arbitrary and time
+libsamplerate: varying conversions. SRC provides a small set of converters to allow
+libsamplerate: quality to be traded off against computation cost.
+libsamplerate:
+libsamplerate: libsamplerate home: http://www.mega-nerd.com/SRC/
+libsamplerate:
diff --git a/source/l/libspectre/libspectre.SlackBuild b/source/l/libspectre/libspectre.SlackBuild
index e8dcdca93..5b6b06509 100755
--- a/source/l/libspectre/libspectre.SlackBuild
+++ b/source/l/libspectre/libspectre.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,8 +22,7 @@
PRGNAM=libspectre
-VERSION=0.2.2
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-0.2.5}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j6}
@@ -31,6 +30,16 @@ CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PRGNAM
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -40,13 +49,16 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || exit 1
cd $PRGNAM-$VERSION || exit 1
chown -R root:root .
find . \
diff --git a/source/l/libtheora/libtheora.SlackBuild b/source/l/libtheora/libtheora.SlackBuild
index b7e22b7ba..1f8a1abf5 100755
--- a/source/l/libtheora/libtheora.SlackBuild
+++ b/source/l/libtheora/libtheora.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,20 @@
PKGNAM=libtheora
-VERSION=${VERSION:-1.0}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -43,11 +52,14 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
diff --git a/source/l/libtiff/libtiff.SlackBuild b/source/l/libtiff/libtiff.SlackBuild
index 9eb3e5a4e..d2e2556ee 100755
--- a/source/l/libtiff/libtiff.SlackBuild
+++ b/source/l/libtiff/libtiff.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,9 +20,20 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=3.8.2
-ARCH=${ARCH:-x86_64}
-BUILD=3
+VERSION=${VERSION:-$(echo tiff-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=1
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
@@ -36,6 +47,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -46,7 +60,7 @@ rm -rf $PKG
mkdir -p $PKG
cd $TMP
rm -rf tiff-$VERSION
-tar xjvf $CWD/tiff-$VERSION.tar.bz2
+tar xvf $CWD/tiff-$VERSION.tar.?z* || exit 1
cd tiff-$VERSION
chown -R root:root .
@@ -56,19 +70,18 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-zcat $CWD/tiff-3.8.2.goo-sec.diff.gz | patch -p1 --verbose || exit 1
-zcat $CWD/tiff-3.8.2.tiffsplit.commandline.overflow.diff.gz | patch -p1 --verbose || exit 1
-
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
--program-prefix="" \
--program-suffix="" \
- $ARCH-slackware-linux
+ --build=$ARCH-slackware-linux
-make -j3 || exit 1
+make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
+( cd man ; make install-man DESTDIR=$PKG || exit 1 ) || exit 1
rm -r $PKG/usr/share
( cd $PKG
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -81,6 +94,14 @@ cp -a \
COPYRIGHT README RELEASE-DATE TODO VERSION \
$PKG/usr/doc/libtiff-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mv $PKG/usr/local/man $PKG/usr
rmdir $PKG/usr/local
diff --git a/source/l/libtiff/tiff-3.8.2.goo-sec.diff b/source/l/libtiff/tiff-3.8.2.goo-sec.diff
deleted file mode 100644
index a5f9e6d5a..000000000
--- a/source/l/libtiff/tiff-3.8.2.goo-sec.diff
+++ /dev/null
@@ -1,661 +0,0 @@
---- ./libtiff/tif_read.c.orig 2005-12-21 06:33:56.000000000 -0600
-+++ ./libtiff/tif_read.c 2006-08-17 22:02:40.000000000 -0500
-@@ -31,6 +31,8 @@
- #include "tiffiop.h"
- #include <stdio.h>
-
-+#include <limits.h>
-+
- int TIFFFillStrip(TIFF*, tstrip_t);
- int TIFFFillTile(TIFF*, ttile_t);
- static int TIFFStartStrip(TIFF*, tstrip_t);
-@@ -272,7 +274,13 @@
- if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
- _TIFFfree(tif->tif_rawdata);
- tif->tif_flags &= ~TIFF_MYBUFFER;
-- if ( td->td_stripoffset[strip] + bytecount > tif->tif_size) {
-+ /*
-+ * This sanity check could potentially overflow, causing an OOB read.
-+ * verify that offset + bytecount is > offset.
-+ * -- taviso@google.com 14 Jun 2006
-+ */
-+ if ( td->td_stripoffset[strip] + bytecount > tif->tif_size ||
-+ bytecount > (UINT_MAX - td->td_stripoffset[strip])) {
- /*
- * This error message might seem strange, but it's
- * what would happen if a read were done instead.
-@@ -470,7 +478,13 @@
- if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
- _TIFFfree(tif->tif_rawdata);
- tif->tif_flags &= ~TIFF_MYBUFFER;
-- if ( td->td_stripoffset[tile] + bytecount > tif->tif_size) {
-+ /*
-+ * We must check this calculation doesnt overflow, potentially
-+ * causing an OOB read.
-+ * -- taviso@google.com 15 Jun 2006
-+ */
-+ if (td->td_stripoffset[tile] + bytecount > tif->tif_size ||
-+ bytecount > (UINT_MAX - td->td_stripoffset[tile])) {
- tif->tif_curtile = NOTILE;
- return (0);
- }
---- ./libtiff/tif_next.c.orig 2005-12-21 06:33:56.000000000 -0600
-+++ ./libtiff/tif_next.c 2006-08-17 22:02:40.000000000 -0500
-@@ -105,11 +105,16 @@
- * as codes of the form <color><npixels>
- * until we've filled the scanline.
- */
-+ /*
-+ * Ensure the run does not exceed the scanline
-+ * bounds, potentially resulting in a security issue.
-+ * -- taviso@google.com 14 Jun 2006.
-+ */
- op = row;
- for (;;) {
- grey = (n>>6) & 0x3;
- n &= 0x3f;
-- while (n-- > 0)
-+ while (n-- > 0 && npixels < imagewidth)
- SETPIXEL(op, grey);
- if (npixels >= (int) imagewidth)
- break;
---- ./libtiff/tif_jpeg.c.orig 2006-03-21 10:42:50.000000000 -0600
-+++ ./libtiff/tif_jpeg.c 2006-08-17 22:02:40.000000000 -0500
-@@ -722,15 +722,31 @@
- segment_width = TIFFhowmany(segment_width, sp->h_sampling);
- segment_height = TIFFhowmany(segment_height, sp->v_sampling);
- }
-- if (sp->cinfo.d.image_width != segment_width ||
-- sp->cinfo.d.image_height != segment_height) {
-+ if (sp->cinfo.d.image_width < segment_width ||
-+ sp->cinfo.d.image_height < segment_height) {
- TIFFWarningExt(tif->tif_clientdata, module,
- "Improper JPEG strip/tile size, expected %dx%d, got %dx%d",
- segment_width,
- segment_height,
- sp->cinfo.d.image_width,
- sp->cinfo.d.image_height);
-+ }
-+
-+ if (sp->cinfo.d.image_width > segment_width ||
-+ sp->cinfo.d.image_height > segment_height) {
-+ /*
-+ * This case could be dangerous, if the strip or tile size has been
-+ * reported as less than the amount of data jpeg will return, some
-+ * potential security issues arise. Catch this case and error out.
-+ * -- taviso@google.com 14 Jun 2006
-+ */
-+ TIFFErrorExt(tif->tif_clientdata, module,
-+ "JPEG strip/tile size exceeds expected dimensions,"
-+ "expected %dx%d, got %dx%d", segment_width, segment_height,
-+ sp->cinfo.d.image_width, sp->cinfo.d.image_height);
-+ return (0);
- }
-+
- if (sp->cinfo.d.num_components !=
- (td->td_planarconfig == PLANARCONFIG_CONTIG ?
- td->td_samplesperpixel : 1)) {
-@@ -761,6 +777,22 @@
- sp->cinfo.d.comp_info[0].v_samp_factor,
- sp->h_sampling, sp->v_sampling);
-
-+ /*
-+ * There are potential security issues here for decoders that
-+ * have already allocated buffers based on the expected sampling
-+ * factors. Lets check the sampling factors dont exceed what
-+ * we were expecting.
-+ * -- taviso@google.com 14 June 2006
-+ */
-+ if (sp->cinfo.d.comp_info[0].h_samp_factor > sp->h_sampling ||
-+ sp->cinfo.d.comp_info[0].v_samp_factor > sp->v_sampling) {
-+ TIFFErrorExt(tif->tif_clientdata, module,
-+ "Cannot honour JPEG sampling factors that"
-+ " exceed those specified.");
-+ return (0);
-+ }
-+
-+
- /*
- * XXX: Files written by the Intergraph software
- * has different sampling factors stored in the
-@@ -1521,15 +1553,18 @@
- {
- JPEGState *sp = JState(tif);
-
-- assert(sp != 0);
-+ /* assert(sp != 0); */
-
- tif->tif_tagmethods.vgetfield = sp->vgetparent;
- tif->tif_tagmethods.vsetfield = sp->vsetparent;
-
-- if( sp->cinfo_initialized )
-- TIFFjpeg_destroy(sp); /* release libjpeg resources */
-- if (sp->jpegtables) /* tag value */
-- _TIFFfree(sp->jpegtables);
-+ if (sp != NULL) {
-+ if( sp->cinfo_initialized )
-+ TIFFjpeg_destroy(sp); /* release libjpeg resources */
-+ if (sp->jpegtables) /* tag value */
-+ _TIFFfree(sp->jpegtables);
-+ }
-+
- _TIFFfree(tif->tif_data); /* release local state */
- tif->tif_data = NULL;
-
-@@ -1541,6 +1576,7 @@
- {
- JPEGState* sp = JState(tif);
- TIFFDirectory* td = &tif->tif_dir;
-+ const TIFFFieldInfo* fip;
- uint32 v32;
-
- assert(sp != NULL);
-@@ -1606,7 +1642,13 @@
- default:
- return (*sp->vsetparent)(tif, tag, ap);
- }
-- TIFFSetFieldBit(tif, _TIFFFieldWithTag(tif, tag)->field_bit);
-+
-+ if ((fip = _TIFFFieldWithTag(tif, tag))) {
-+ TIFFSetFieldBit(tif, fip->field_bit);
-+ } else {
-+ return (0);
-+ }
-+
- tif->tif_flags |= TIFF_DIRTYDIRECT;
- return (1);
- }
-@@ -1726,7 +1768,11 @@
- {
- JPEGState* sp = JState(tif);
-
-- assert(sp != NULL);
-+ /* assert(sp != NULL); */
-+ if (sp == NULL) {
-+ TIFFWarningExt(tif->tif_clientdata, "JPEGPrintDir", "Unknown JPEGState");
-+ return;
-+ }
-
- (void) flags;
- if (TIFFFieldSet(tif,FIELD_JPEGTABLES))
---- ./libtiff/tif_dir.c.orig 2006-03-21 10:42:50.000000000 -0600
-+++ ./libtiff/tif_dir.c 2006-08-17 22:02:40.000000000 -0500
-@@ -122,6 +122,7 @@
- {
- static const char module[] = "_TIFFVSetField";
-
-+ const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
- TIFFDirectory* td = &tif->tif_dir;
- int status = 1;
- uint32 v32, i, v;
-@@ -195,10 +196,12 @@
- break;
- case TIFFTAG_ORIENTATION:
- v = va_arg(ap, uint32);
-+ const TIFFFieldInfo* fip;
- if (v < ORIENTATION_TOPLEFT || ORIENTATION_LEFTBOT < v) {
-+ fip = _TIFFFieldWithTag(tif, tag);
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
- "Bad value %lu for \"%s\" tag ignored",
-- v, _TIFFFieldWithTag(tif, tag)->field_name);
-+ v, fip ? fip->field_name : "Unknown");
- } else
- td->td_orientation = (uint16) v;
- break;
-@@ -387,11 +390,15 @@
- * happens, for example, when tiffcp is used to convert between
- * compression schemes and codec-specific tags are blindly copied.
- */
-+ /*
-+ * better not dereference fip if it is NULL.
-+ * -- taviso@google.com 15 Jun 2006
-+ */
- if(fip == NULL || fip->field_bit != FIELD_CUSTOM) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Invalid %stag \"%s\" (not supported by codec)",
- tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "",
-- _TIFFFieldWithTag(tif, tag)->field_name);
-+ fip ? fip->field_name : "Unknown");
- status = 0;
- break;
- }
-@@ -468,7 +475,7 @@
- if (fip->field_type == TIFF_ASCII)
- _TIFFsetString((char **)&tv->value, va_arg(ap, char *));
- else {
-- tv->value = _TIFFmalloc(tv_size * tv->count);
-+ tv->value = _TIFFCheckMalloc(tif, tv_size, tv->count, "Tag Value");
- if (!tv->value) {
- status = 0;
- goto end;
-@@ -563,7 +570,7 @@
- }
- }
- if (status) {
-- TIFFSetFieldBit(tif, _TIFFFieldWithTag(tif, tag)->field_bit);
-+ TIFFSetFieldBit(tif, fip->field_bit);
- tif->tif_flags |= TIFF_DIRTYDIRECT;
- }
-
-@@ -572,12 +579,12 @@
- return (status);
- badvalue:
- TIFFErrorExt(tif->tif_clientdata, module, "%s: Bad value %d for \"%s\"",
-- tif->tif_name, v, _TIFFFieldWithTag(tif, tag)->field_name);
-+ tif->tif_name, v, fip ? fip->field_name : "Unknown");
- va_end(ap);
- return (0);
- badvalue32:
- TIFFErrorExt(tif->tif_clientdata, module, "%s: Bad value %ld for \"%s\"",
-- tif->tif_name, v32, _TIFFFieldWithTag(tif, tag)->field_name);
-+ tif->tif_name, v32, fip ? fip->field_name : "Unknown");
- va_end(ap);
- return (0);
- }
-@@ -813,12 +820,16 @@
- * If the client tries to get a tag that is not valid
- * for the image's codec then we'll arrive here.
- */
-+ /*
-+ * dont dereference fip if it's NULL.
-+ * -- taviso@google.com 15 Jun 2006
-+ */
- if( fip == NULL || fip->field_bit != FIELD_CUSTOM )
- {
- TIFFErrorExt(tif->tif_clientdata, "_TIFFVGetField",
- "%s: Invalid %stag \"%s\" (not supported by codec)",
- tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "",
-- _TIFFFieldWithTag(tif, tag)->field_name);
-+ fip ? fip->field_name : "Unknown");
- ret_val = 0;
- break;
- }
---- ./libtiff/tif_pixarlog.c.orig 2006-03-21 10:42:50.000000000 -0600
-+++ ./libtiff/tif_pixarlog.c 2006-08-17 22:02:40.000000000 -0500
-@@ -768,7 +768,19 @@
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabArrayOfShort(up, nsamples);
-
-- for (i = 0; i < nsamples; i += llen, up += llen) {
-+ /*
-+ * if llen is not an exact multiple of nsamples, the decode operation
-+ * may overflow the output buffer, so truncate it enough to prevent that
-+ * but still salvage as much data as possible.
-+ * -- taviso@google.com 14th June 2006
-+ */
-+ if (nsamples % llen)
-+ TIFFWarningExt(tif->tif_clientdata, module,
-+ "%s: stride %lu is not a multiple of sample count, "
-+ "%lu, data truncated.", tif->tif_name, llen, nsamples);
-+
-+
-+ for (i = 0; i < nsamples - (nsamples % llen); i += llen, up += llen) {
- switch (sp->user_datafmt) {
- case PIXARLOGDATAFMT_FLOAT:
- horizontalAccumulateF(up, llen, sp->stride,
---- ./libtiff/tif_dirread.c.orig 2006-03-21 10:42:50.000000000 -0600
-+++ ./libtiff/tif_dirread.c 2006-08-17 22:02:40.000000000 -0500
-@@ -29,6 +29,9 @@
- *
- * Directory Read Support Routines.
- */
-+
-+#include <limits.h>
-+
- #include "tiffiop.h"
-
- #define IGNORE 0 /* tag placeholder used below */
-@@ -81,6 +84,7 @@
- uint16 dircount;
- toff_t nextdiroff;
- int diroutoforderwarning = 0;
-+ int compressionknown = 0;
- toff_t* new_dirlist;
-
- tif->tif_diroff = tif->tif_nextdiroff;
-@@ -147,13 +151,20 @@
- } else {
- toff_t off = tif->tif_diroff;
-
-- if (off + sizeof (uint16) > tif->tif_size) {
-- TIFFErrorExt(tif->tif_clientdata, module,
-- "%s: Can not read TIFF directory count",
-- tif->tif_name);
-- return (0);
-+ /*
-+ * Check for integer overflow when validating the dir_off, otherwise
-+ * a very high offset may cause an OOB read and crash the client.
-+ * -- taviso@google.com, 14 Jun 2006.
-+ */
-+ if (off + sizeof (uint16) > tif->tif_size ||
-+ off > (UINT_MAX - sizeof(uint16))) {
-+ TIFFErrorExt(tif->tif_clientdata, module,
-+ "%s: Can not read TIFF directory count",
-+ tif->tif_name);
-+ return (0);
- } else
-- _TIFFmemcpy(&dircount, tif->tif_base + off, sizeof (uint16));
-+ _TIFFmemcpy(&dircount, tif->tif_base + off,
-+ sizeof (uint16));
- off += sizeof (uint16);
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabShort(&dircount);
-@@ -254,6 +265,7 @@
- while (fix < tif->tif_nfields &&
- tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
- fix++;
-+
- if (fix >= tif->tif_nfields ||
- tif->tif_fieldinfo[fix]->field_tag != dp->tdir_tag) {
-
-@@ -264,17 +276,23 @@
- dp->tdir_tag,
- dp->tdir_tag,
- dp->tdir_type);
--
-- TIFFMergeFieldInfo(tif,
-- _TIFFCreateAnonFieldInfo(tif,
-- dp->tdir_tag,
-- (TIFFDataType) dp->tdir_type),
-- 1 );
-+ /*
-+ * creating anonymous fields prior to knowing the compression
-+ * algorithm (ie, when the field info has been merged) could cause
-+ * crashes with pathological directories.
-+ * -- taviso@google.com 15 Jun 2006
-+ */
-+ if (compressionknown)
-+ TIFFMergeFieldInfo(tif, _TIFFCreateAnonFieldInfo(tif, dp->tdir_tag,
-+ (TIFFDataType) dp->tdir_type), 1 );
-+ else goto ignore;
-+
- fix = 0;
- while (fix < tif->tif_nfields &&
- tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
- fix++;
- }
-+
- /*
- * Null out old tags that we ignore.
- */
-@@ -326,6 +344,7 @@
- dp->tdir_type, dp->tdir_offset);
- if (!TIFFSetField(tif, dp->tdir_tag, (uint16)v))
- goto bad;
-+ else compressionknown++;
- break;
- /* XXX: workaround for broken TIFFs */
- } else if (dp->tdir_type == TIFF_LONG) {
-@@ -540,6 +559,7 @@
- * Attempt to deal with a missing StripByteCounts tag.
- */
- if (!TIFFFieldSet(tif, FIELD_STRIPBYTECOUNTS)) {
-+ const TIFFFieldInfo* fip = _TIFFFieldWithTag(tif, TIFFTAG_STRIPBYTECOUNTS);
- /*
- * Some manufacturers violate the spec by not giving
- * the size of the strips. In this case, assume there
-@@ -556,7 +576,7 @@
- "%s: TIFF directory is missing required "
- "\"%s\" field, calculating from imagelength",
- tif->tif_name,
-- _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
-+ fip ? fip->field_name : "Unknown");
- if (EstimateStripByteCounts(tif, dir, dircount) < 0)
- goto bad;
- /*
-@@ -580,6 +600,7 @@
- } else if (td->td_nstrips == 1
- && td->td_stripoffset[0] != 0
- && BYTECOUNTLOOKSBAD) {
-+ const TIFFFieldInfo* fip = _TIFFFieldWithTag(tif, TIFFTAG_STRIPBYTECOUNTS);
- /*
- * XXX: Plexus (and others) sometimes give a value of zero for
- * a tag when they don't know what the correct value is! Try
-@@ -589,13 +610,14 @@
- TIFFWarningExt(tif->tif_clientdata, module,
- "%s: Bogus \"%s\" field, ignoring and calculating from imagelength",
- tif->tif_name,
-- _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
-+ fip ? fip->field_name : "Unknown");
- if(EstimateStripByteCounts(tif, dir, dircount) < 0)
- goto bad;
- } else if (td->td_planarconfig == PLANARCONFIG_CONTIG
- && td->td_nstrips > 2
- && td->td_compression == COMPRESSION_NONE
- && td->td_stripbytecount[0] != td->td_stripbytecount[1]) {
-+ const TIFFFieldInfo* fip = _TIFFFieldWithTag(tif, TIFFTAG_STRIPBYTECOUNTS);
- /*
- * XXX: Some vendors fill StripByteCount array with absolutely
- * wrong values (it can be equal to StripOffset array, for
-@@ -604,7 +626,7 @@
- TIFFWarningExt(tif->tif_clientdata, module,
- "%s: Wrong \"%s\" field, ignoring and calculating from imagelength",
- tif->tif_name,
-- _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
-+ fip ? fip->field_name : "Unknown");
- if (EstimateStripByteCounts(tif, dir, dircount) < 0)
- goto bad;
- }
-@@ -870,7 +892,13 @@
-
- register TIFFDirEntry *dp;
- register TIFFDirectory *td = &tif->tif_dir;
-- uint16 i;
-+
-+ /* i is used to iterate over td->td_nstrips, so must be
-+ * at least the same width.
-+ * -- taviso@google.com 15 Jun 2006
-+ */
-+
-+ uint32 i;
-
- if (td->td_stripbytecount)
- _TIFFfree(td->td_stripbytecount);
-@@ -947,16 +975,18 @@
- static int
- CheckDirCount(TIFF* tif, TIFFDirEntry* dir, uint32 count)
- {
-+ const TIFFFieldInfo* fip = _TIFFFieldWithTag(tif, dir->tdir_tag);
-+
- if (count > dir->tdir_count) {
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
- "incorrect count for field \"%s\" (%lu, expecting %lu); tag ignored",
-- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name,
-+ fip ? fip->field_name : "Unknown",
- dir->tdir_count, count);
- return (0);
- } else if (count < dir->tdir_count) {
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
- "incorrect count for field \"%s\" (%lu, expecting %lu); tag trimmed",
-- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name,
-+ fip ? fip->field_name : "Unknown",
- dir->tdir_count, count);
- return (1);
- }
-@@ -970,6 +1000,7 @@
- TIFFFetchData(TIFF* tif, TIFFDirEntry* dir, char* cp)
- {
- int w = TIFFDataWidth((TIFFDataType) dir->tdir_type);
-+ const TIFFFieldInfo* fip = _TIFFFieldWithTag(tif, dir->tdir_tag);
- tsize_t cc = dir->tdir_count * w;
-
- /* Check for overflow. */
-@@ -1013,7 +1044,7 @@
- bad:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error fetching data for field \"%s\"",
-- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-+ fip ? fip->field_name : "Unknown");
- return (tsize_t) 0;
- }
-
-@@ -1039,10 +1070,12 @@
- static int
- cvtRational(TIFF* tif, TIFFDirEntry* dir, uint32 num, uint32 denom, float* rv)
- {
-+ const TIFFFieldInfo* fip;
- if (denom == 0) {
-+ fip = _TIFFFieldWithTag(tif, dir->tdir_tag);
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%s: Rational with zero denominator (num = %lu)",
-- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name, num);
-+ fip ? fip->field_name : "Unknown", num);
- return (0);
- } else {
- if (dir->tdir_type == TIFF_RATIONAL)
-@@ -1159,6 +1192,20 @@
- static int
- TIFFFetchShortPair(TIFF* tif, TIFFDirEntry* dir)
- {
-+ /*
-+ * Prevent overflowing the v stack arrays below by performing a sanity
-+ * check on tdir_count, this should never be greater than two.
-+ * -- taviso@google.com 14 Jun 2006.
-+ */
-+ if (dir->tdir_count > 2) {
-+ const TIFFFieldInfo* fip = _TIFFFieldWithTag(tif, dir->tdir_tag);
-+ TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-+ "unexpected count for field \"%s\", %lu, expected 2; ignored.",
-+ fip ? fip->field_name : "Unknown",
-+ dir->tdir_count);
-+ return 0;
-+ }
-+
- switch (dir->tdir_type) {
- case TIFF_BYTE:
- case TIFF_SBYTE:
-@@ -1329,14 +1376,15 @@
- case TIFF_DOUBLE:
- return (TIFFFetchDoubleArray(tif, dir, (double*) v));
- default:
-+ { const TIFFFieldInfo* fip = _TIFFFieldWithTag(tif, dir->tdir_tag);
- /* TIFF_NOTYPE */
- /* TIFF_ASCII */
- /* TIFF_UNDEFINED */
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "cannot read TIFF_ANY type %d for field \"%s\"",
- dir->tdir_type,
-- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-- return (0);
-+ fip ? fip->field_name : "Unknown");
-+ return (0); }
- }
- return (1);
- }
-@@ -1351,6 +1399,9 @@
- int ok = 0;
- const TIFFFieldInfo* fip = _TIFFFieldWithTag(tif, dp->tdir_tag);
-
-+ if (fip == NULL) {
-+ return (0);
-+ }
- if (dp->tdir_count > 1) { /* array of values */
- char* cp = NULL;
-
-@@ -1493,6 +1544,7 @@
- TIFFFetchPerSampleShorts(TIFF* tif, TIFFDirEntry* dir, uint16* pl)
- {
- uint16 samples = tif->tif_dir.td_samplesperpixel;
-+ const TIFFFieldInfo* fip;
- int status = 0;
-
- if (CheckDirCount(tif, dir, (uint32) samples)) {
-@@ -1510,9 +1562,10 @@
-
- for (i = 1; i < check_count; i++)
- if (v[i] != v[0]) {
-+ fip = _TIFFFieldWithTag(tif, dir->tdir_tag);
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Cannot handle different per-sample values for field \"%s\"",
-- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-+ fip ? fip->field_name : "Unknown");
- goto bad;
- }
- *pl = v[0];
-@@ -1534,6 +1587,7 @@
- TIFFFetchPerSampleLongs(TIFF* tif, TIFFDirEntry* dir, uint32* pl)
- {
- uint16 samples = tif->tif_dir.td_samplesperpixel;
-+ const TIFFFieldInfo* fip;
- int status = 0;
-
- if (CheckDirCount(tif, dir, (uint32) samples)) {
-@@ -1551,9 +1605,10 @@
- check_count = samples;
- for (i = 1; i < check_count; i++)
- if (v[i] != v[0]) {
-+ fip = _TIFFFieldWithTag(tif, dir->tdir_tag);
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Cannot handle different per-sample values for field \"%s\"",
-- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-+ fip ? fip->field_name : "Unknown");
- goto bad;
- }
- *pl = v[0];
-@@ -1574,6 +1629,7 @@
- TIFFFetchPerSampleAnys(TIFF* tif, TIFFDirEntry* dir, double* pl)
- {
- uint16 samples = tif->tif_dir.td_samplesperpixel;
-+ const TIFFFieldInfo* fip;
- int status = 0;
-
- if (CheckDirCount(tif, dir, (uint32) samples)) {
-@@ -1591,9 +1647,10 @@
-
- for (i = 1; i < check_count; i++)
- if (v[i] != v[0]) {
-+ fip = _TIFFFieldWithTag(tif, dir->tdir_tag);
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Cannot handle different per-sample values for field \"%s\"",
-- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-+ fip ? fip->field_name : "Unknown");
- goto bad;
- }
- *pl = v[0];
---- ./libtiff/tif_dirinfo.c.orig 2006-02-07 07:51:03.000000000 -0600
-+++ ./libtiff/tif_dirinfo.c 2006-08-17 22:02:40.000000000 -0500
-@@ -775,7 +775,8 @@
- TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithTag",
- "Internal error, unknown tag 0x%x",
- (unsigned int) tag);
-- assert(fip != NULL);
-+ /* assert(fip != NULL); */
-+
- /*NOTREACHED*/
- }
- return (fip);
-@@ -789,7 +790,8 @@
- if (!fip) {
- TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithName",
- "Internal error, unknown tag %s", field_name);
-- assert(fip != NULL);
-+ /* assert(fip != NULL); */
-+
- /*NOTREACHED*/
- }
- return (fip);
---- ./libtiff/tif_fax3.c.orig 2006-03-21 10:42:50.000000000 -0600
-+++ ./libtiff/tif_fax3.c 2006-08-17 22:02:40.000000000 -0500
-@@ -1136,6 +1136,7 @@
- Fax3VSetField(TIFF* tif, ttag_t tag, va_list ap)
- {
- Fax3BaseState* sp = Fax3State(tif);
-+ const TIFFFieldInfo* fip;
-
- assert(sp != 0);
- assert(sp->vsetparent != 0);
-@@ -1181,7 +1182,13 @@
- default:
- return (*sp->vsetparent)(tif, tag, ap);
- }
-- TIFFSetFieldBit(tif, _TIFFFieldWithTag(tif, tag)->field_bit);
-+
-+ if ((fip = _TIFFFieldWithTag(tif, tag))) {
-+ TIFFSetFieldBit(tif, fip->field_bit);
-+ } else {
-+ return (0);
-+ }
-+
- tif->tif_flags |= TIFF_DIRTYDIRECT;
- return (1);
- }
diff --git a/source/l/libtiff/tiff-3.8.2.tiffsplit.commandline.overflow.diff b/source/l/libtiff/tiff-3.8.2.tiffsplit.commandline.overflow.diff
deleted file mode 100644
index feb693fab..000000000
--- a/source/l/libtiff/tiff-3.8.2.tiffsplit.commandline.overflow.diff
+++ /dev/null
@@ -1,22 +0,0 @@
---- ./tools/tiffsplit.c.orig 2005-12-07 03:48:33.000000000 -0600
-+++ ./tools/tiffsplit.c 2006-08-17 22:03:36.000000000 -0500
-@@ -60,14 +60,16 @@
- fprintf(stderr, "usage: tiffsplit input.tif [prefix]\n");
- return (-3);
- }
-- if (argc > 2)
-- strcpy(fname, argv[2]);
-+ if (argc > 2) {
-+ strncpy(fname, argv[2], 1024);
-+ fname[1024] = '\0';
-+ }
- in = TIFFOpen(argv[1], "r");
- if (in != NULL) {
- do {
- char path[1024+1];
- newfilename();
-- strcpy(path, fname);
-+ strncpy(path, fname, 1020);
- strcat(path, ".tif");
- out = TIFFOpen(path, TIFFIsBigEndian(in)?"wb":"wl");
- if (out == NULL)
diff --git a/source/l/libungif/libungif.SlackBuild b/source/l/libungif/libungif.SlackBuild
deleted file mode 100755
index 5e9ff8c06..000000000
--- a/source/l/libungif/libungif.SlackBuild
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/bin/sh
-
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-VERSION=4.1.4
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-4}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-libungif
-rm -rf $PKG
-mkdir -p $TMP $PKG
-
-cd $TMP
-rm -rf libungif-$VERSION
-tar xvf $CWD/libungif-$VERSION.tar.bz2 || exit 1
-cd libungif-$VERSION
-chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --with-x=no \
- $ARCH-slackware-linux
-
-make $NUMJOBS || make || exit 1
-make install DESTDIR=$PKG || exit 1
-
-mkdir -p $PKG/usr/doc/libungif-$VERSION
-cp -a \
- AUTHORS BUGS COPYING ChangeLog INSTALL NEWS ONEWS README TODO \
- UNCOMPRESSED_GIF doc \
- $PKG/usr/doc/libungif-$VERSION
-rm $PKG/usr/doc/libungif-$VERSION/doc/Makefile*
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-
-## I don't believe we need all this slop. Correct me if I'm wrong.
-# I've been corrected...
-#rm -rf $PKG/usr/bin
-
-( cd $PKG/usr/lib${LIBDIRSUFFIX}
- SOVER=$(/bin/ls libungif.so.*.*.* | cut -f 3-5 -d .)
- ln -sf libungif.so.$SOVER libgif.so.$SOVER
- ln -sf libgif.so.$SOVER libgif.so.4
- ln -sf libgif.so.4 libgif.so
- ln -sf libungif.a libgif.a )
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/libungif-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/l/libungif/slack-desc b/source/l/libungif/slack-desc
deleted file mode 100644
index 144ee02a9..000000000
--- a/source/l/libungif/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|' on
-# the right side marks the last column you can put a character in. You must make
-# exactly 11 lines for the formatting to be correct. It's also customary to
-# leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-libungif: libungif (GIF image format library)
-libungif:
-libungif: A library to load and save (uncompressed only) images using GIF,
-libungif: or Graphics Interchange Format. GIF was introduced by CompuServe
-libungif: in 1987, but is still widely used today (especially on web pages.)
-libungif:
-libungif:
-libungif:
-libungif:
-libungif:
-libungif:
diff --git a/source/l/libusb/libusb.SlackBuild b/source/l/libusb/libusb.SlackBuild
index 90db52ffa..67d0756a7 100755
--- a/source/l/libusb/libusb.SlackBuild
+++ b/source/l/libusb/libusb.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,9 +21,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-0.1.12}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-1.0.6} # libusb version
+USBCOMPAT=${USBCOMPAT:-0.1.3} # libusb-compat version
+
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -38,20 +51,60 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
-mkdir -p $PKG
+mkdir -p $TMP $PKG
+
+# First we'll do the main libusb stuff
cd $TMP
rm -rf libusb-$VERSION
-tar xzvf $CWD/libusb-$VERSION.tar.gz
+tar xvf $CWD/libusb-$VERSION.tar.bz2
cd libusb-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
-# We used to apply a Debian patch here, and it's possible
-# that other archs need it still, but vanilla upstream is
-# working on ia32 just fine.
-#zcat $CWD/libusb_0.1.12-2.diff.gz | patch -p1
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/libusb-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+if [ ! -r /usr/lib${LIBDIRSUFFIX}/pkgconfig/libusb-1.0.pc ]; then
+ # We have to install this to proceed:
+ make install
+fi
+
+mkdir -p $PKG/usr/doc/libusb-$VERSION
+cp -a \
+ AUTHORS COPYING INSTALL NEWS PORTING README THANKS TODO \
+ $PKG/usr/doc/libusb-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/libusb-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+# Now build the libusb-compat stuff
+cd $TMP
+rm -rf libusb-compat-$USBCOMPAT
+tar xvf $CWD/libusb-compat-$USBCOMPAT.tar.bz2
+cd libusb-compat-$USBCOMPAT
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -62,14 +115,34 @@ find . \
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX}
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/libusb-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
-make -j3 || exit 1
+make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG
+mkdir -p $PKG/usr/doc/libusb-$VERSION/libusb-compat-$USBCOMPAT
+cp -a \
+ AUTHORS COPYING INSTALL LICENSE NEWS README \
+ $PKG/usr/doc/libusb-$VERSION/libusb-compat-$USBCOMPAT
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/libusb-compat-$USBCOMPAT)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+# Now handle the package-wide stuff
( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
)
# Compress and if needed symlink the man pages:
@@ -87,15 +160,9 @@ if [ -d $PKG/usr/man ]; then
)
fi
-mkdir -p $PKG/usr/doc/libusb-$VERSION
-cp -a \
- AUTHORS COPYING ChangeLog INSTALL.libusb LICENSE NEWS README \
- doc/html \
- $PKG/usr/doc/libusb-$VERSION
-
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-makepkg -l y -c n $TMP/libusb-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/libusb-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/libusb/slack-desc b/source/l/libusb/slack-desc
index df9a5b252..e1a8b5dfd 100644
--- a/source/l/libusb/slack-desc
+++ b/source/l/libusb/slack-desc
@@ -10,10 +10,10 @@ libusb: libusb (USB library)
libusb:
libusb: This is libusb, a library which allows userspace application access
libusb: to USB devices. It is used to connect to USB devices like scanners.
+libusb: http://libusb.org/wiki/Libusb1.0
libusb:
-libusb:
-libusb:
-libusb:
+libusb: This package also contains libusb-compat for the "old" libusb users.
+libusb: http://libusb.org/wiki/LibusbCompat0.1
libusb:
libusb:
libusb:
diff --git a/source/l/libvncserver/libvncserver.SlackBuild b/source/l/libvncserver/libvncserver.SlackBuild
index b73d8e77c..87712a13f 100755
--- a/source/l/libvncserver/libvncserver.SlackBuild
+++ b/source/l/libvncserver/libvncserver.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007 Heinz Wiesinger <hmwiesinger@gmx.at>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,8 +25,17 @@
VERSION=0.9.7
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:--j6}
@@ -43,13 +52,16 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf LibVNCServer-$VERSION
-tar xvf $CWD/LibVNCServer-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/LibVNCServer-$VERSION.tar.?z* || exit 1
cd LibVNCServer-$VERSION || exit 1
chown -R root:root .
find . \
@@ -84,6 +96,14 @@ cp -a \
AUTHORS COPYING* INSTALL NEWS README TODO \
$PKG/usr/doc/libvncserver-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/libvorbis/libvorbis.SlackBuild b/source/l/libvorbis/libvorbis.SlackBuild
index 9196270a4..0aacb1a66 100755
--- a/source/l/libvorbis/libvorbis.SlackBuild
+++ b/source/l/libvorbis/libvorbis.SlackBuild
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.2.0
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo libvorbis-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -46,7 +58,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf libvorbis-$VERSION
-tar xvf $CWD/libvorbis-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/libvorbis-$VERSION.tar.?z* || exit 1
cd libvorbis-$VERSION
chown -R root:root .
find . \
@@ -60,6 +72,7 @@ CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
+ --disable-static \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
diff --git a/source/l/libwmf/libwmf.SlackBuild b/source/l/libwmf/libwmf.SlackBuild
index c9428e23c..77027ac8f 100755
--- a/source/l/libwmf/libwmf.SlackBuild
+++ b/source/l/libwmf/libwmf.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,9 +22,17 @@
VERSION=0.2.8.4
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-4}
+BUILD=${BUILD:-5}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -35,8 +43,12 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -48,8 +60,11 @@ mkdir -p $PKG1 $PKG2
cd $TMP
rm -rf libwmf-$VERSION
-tar xvf $CWD/libwmf-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/libwmf-$VERSION.tar.?z* || exit 1
cd libwmf-$VERSION
+
+zcat $CWD/libwmf.png14.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -77,6 +92,14 @@ cp -a \
AUTHORS BUILDING COPYING CREDITS NEWS README TODO \
$PKG1/usr/doc/libwmf-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG1/install
cat $CWD/slack-desc > $PKG1/install/slack-desc
mkdir -p $PKG2/install
diff --git a/source/l/libwmf/libwmf.png14.diff b/source/l/libwmf/libwmf.png14.diff
new file mode 100644
index 000000000..c55b143c8
--- /dev/null
+++ b/source/l/libwmf/libwmf.png14.diff
@@ -0,0 +1,11 @@
+--- ./src/extra/gd/gd_png.c.orig 2005-07-27 15:35:06.000000000 -0500
++++ ./src/extra/gd/gd_png.c 2010-02-14 18:24:19.000000000 -0600
+@@ -136,7 +136,7 @@
+ /* first do a quick check that the file really is a PNG image; could
+ * have used slightly more general png_sig_cmp() function instead */
+ gdGetBuf (sig, 8, infile);
+- if (!png_check_sig (sig, 8))
++ if (!(png_sig_cmp(sig, 0, 8) == 0))
+ return NULL; /* bad signature */
+
+ #ifndef PNG_SETJMP_NOT_SUPPORTED
diff --git a/source/l/libwnck/libwnck.SlackBuild b/source/l/libwnck/libwnck.SlackBuild
index fef9b01c0..982b40527 100755
--- a/source/l/libwnck/libwnck.SlackBuild
+++ b/source/l/libwnck/libwnck.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.26.1
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo libwnck-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -35,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -74,6 +87,14 @@ cp -a \
AUTHORS COPYING* NEWS README \
$PKG/usr/doc/libwnck-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
# Compress and link manpages, if any:
if [ -d $PKG/usr/man ]; then
( cd $PKG/usr/man
diff --git a/source/l/libxklavier/libxklavier.SlackBuild b/source/l/libxklavier/libxklavier.SlackBuild
index 5b7bc76b1..cc38a5d53 100755
--- a/source/l/libxklavier/libxklavier.SlackBuild
+++ b/source/l/libxklavier/libxklavier.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007-2008 Heinz Wiesinger <pprkut@liwjatan.at>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,12 +23,20 @@
# Modified by Robby Workman <rworkman at slackware.com>
+VERSION=${VERSION:-$(echo libxklavier-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
-VERSION=3.9
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine architecture for build & packaging:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-libxklavier
@@ -42,13 +50,16 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf libxklavier-$VERSION
-tar xvf $CWD/libxklavier-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/libxklavier-$VERSION.tar.?z* || exit 1
cd libxklavier-$VERSION || exit 1
chown -R root:root .
find . \
@@ -65,6 +76,7 @@ CXXFLAGS="$SLKCFLAGS" \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-static \
+ --with-xkb-base=/etc/X11/xkb \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
@@ -75,12 +87,20 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
mkdir -p $PKG/usr/doc/libxklavier-$VERSION
cp -a \
- AUTHORS ChangeLog COPYING* CREDITS INSTALL NEWS README \
+ AUTHORS COPYING* CREDITS INSTALL NEWS README \
$PKG/usr/doc/libxklavier-$VERSION
( cd $PKG/usr/doc/libxklavier-$VERSION
ln -s /usr/share/gtk-doc/html/libxklavier html
)
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/libxml2/libxml2.SlackBuild b/source/l/libxml2/libxml2.SlackBuild
index 27c2b80a6..0bfe3f1f8 100755
--- a/source/l/libxml2/libxml2.SlackBuild
+++ b/source/l/libxml2/libxml2.SlackBuild
@@ -21,9 +21,18 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.7.3
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+VERSION=2.7.6
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
diff --git a/source/l/libxslt/libxslt.SlackBuild b/source/l/libxslt/libxslt.SlackBuild
index 0c7e050c8..225c40937 100755
--- a/source/l/libxslt/libxslt.SlackBuild
+++ b/source/l/libxslt/libxslt.SlackBuild
@@ -21,9 +21,18 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.1.24
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=1.1.26
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -46,7 +55,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf libxslt-$VERSION
-tar xvf $CWD/libxslt-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/libxslt-$VERSION.tar.?z* || exit 1
cd libxslt-$VERSION
chown -R root:root .
find . \
diff --git a/source/l/loudmouth/loudmouth.SlackBuild b/source/l/loudmouth/loudmouth.SlackBuild
new file mode 100755
index 000000000..650bd1699
--- /dev/null
+++ b/source/l/loudmouth/loudmouth.SlackBuild
@@ -0,0 +1,138 @@
+#!/bin/sh
+# Copyright 2009 Eric Hameleers, Eindhoven, NL
+# All rights reserved.
+#
+# Permission to use, copy, modify, and distribute this software for
+# any purpose with or without fee is hereby granted, provided that
+# the above copyright notice and this permission notice appear in all
+# copies.
+#
+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+# -----------------------------------------------------------------------------
+
+PKGNAM=loudmouth
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:" -j4 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ SLKLDFLAGS=""
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ SLKLDFLAGS=""
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ SLKLDFLAGS="-L/usr/lib64"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ SLKLDFLAGS=""
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
+
+zcat $CWD/loudmouth.crtpath.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/loudmouth.gnutls.configure.ac.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/loudmouth.async_assertion.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/loudmouth.sasl-md5-digest-uri.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/loudmouth.stanzadrop.diff.gz | patch -p1 --verbose || exit 1
+
+# needed after the configure.ac gnutls patch
+autoreconf
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+LDFLAGS="$SLKLDFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
+ --with-ssl=gnutls \
+ --enable-debug=no \
+ --enable-static=no \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux \
+ --host=$ARCH-slackware-linux
+
+# this generates a broken libtool, so use the system version:
+cp /usr/bin/libtool .
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+# --enable-static is often ignored
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/lib*.a
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ AUTHORS CONTRIBUTORS COPYING* NEWS README* \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+# Add a package description:
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/loudmouth/loudmouth.async_assertion.diff b/source/l/loudmouth/loudmouth.async_assertion.diff
new file mode 100644
index 000000000..bda1d19b1
--- /dev/null
+++ b/source/l/loudmouth/loudmouth.async_assertion.diff
@@ -0,0 +1,19 @@
+diff -urp loudmouth-1.4.3.OLD/loudmouth/lm-socket.c loudmouth-1.4.3/loudmouth/lm-socket.c
+--- loudmouth-1.4.3.OLD/loudmouth/lm-socket.c 2008-10-29 12:29:16.000000000 -0400
++++ loudmouth-1.4.3/loudmouth/lm-socket.c 2008-11-28 19:24:04.000000000 -0500
+@@ -1107,6 +1107,7 @@ lm_socket_create (GMainContext *con
+ _lm_socket_create_phase1 (socket, NULL, 0);
+ }
+
++#ifndef HAVE_ASYNCNS
+ if (socket->connect_data == NULL) {
+ /* Open failed synchronously, probably a DNS lookup problem */
+ lm_socket_unref(socket);
+@@ -1118,6 +1119,7 @@ lm_socket_create (GMainContext *con
+
+ return NULL;
+ }
++#endif
+
+
+ /* If the connection fails synchronously, we don't want to call the
diff --git a/source/l/loudmouth/loudmouth.crtpath.diff b/source/l/loudmouth/loudmouth.crtpath.diff
new file mode 100644
index 000000000..ada600405
--- /dev/null
+++ b/source/l/loudmouth/loudmouth.crtpath.diff
@@ -0,0 +1,11 @@
+--- loudmouth-1.4.3/loudmouth/lm-ssl-gnutls.c.orig 2008-10-29 14:45:10.000000000 +0100
++++ loudmouth-1.4.3/loudmouth/lm-ssl-gnutls.c 2009-11-03 23:49:02.000000000 +0100
+@@ -32,7 +32,7 @@
+
+ #include <gnutls/x509.h>
+
+-#define CA_PEM_FILE "/etc/ssl/certs/ca-certificates.crt"
++#define CA_PEM_FILE "/usr/share/curl/ca-bundle.crt"
+
+ struct _LmSSL {
+ LmSSLBase base;
diff --git a/source/l/loudmouth/loudmouth.gnutls.configure.ac.diff b/source/l/loudmouth/loudmouth.gnutls.configure.ac.diff
new file mode 100644
index 000000000..6719141f5
--- /dev/null
+++ b/source/l/loudmouth/loudmouth.gnutls.configure.ac.diff
@@ -0,0 +1,20 @@
+--- ./configure.ac.orig 2008-10-29 15:23:52.000000000 -0500
++++ ./configure.ac 2010-04-10 15:42:12.000000000 -0500
+@@ -146,10 +146,13 @@
+ enable_ssl=no
+ if test "x$ac_ssl" = "xgnutls"; then
+ dnl Look for GnuTLS
+- AM_PATH_LM_LIBGNUTLS($GNUTLS_REQUIRED, have_libgnutls=yes, have_libgnutls=no)
+- if test "x$have_libgnutls" = "xyes"; then
+- CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
+- LIBS="$LIBS $LIBGNUTLS_LIBS"
++
++ PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_REQUIRED, have_gnutls=yes, have_gnutls=no)
++ if test "x$have_gnutls" = "xyes"; then
++ AC_SUBST(ASYNCNS_CFLAGS)
++ AC_SUBST(ASYNCNS_LIBS)
++ CFLAGS="$CFLAGS $GNUTLS_CFLAGS"
++ LIBS="$LIBS $GNUTLS_LIBS"
+ AC_DEFINE(HAVE_GNUTLS, 1, [whether to use GnuTSL support.])
+ enable_ssl=GnuTLS
+ else
diff --git a/source/l/loudmouth/loudmouth.sasl-md5-digest-uri.diff b/source/l/loudmouth/loudmouth.sasl-md5-digest-uri.diff
new file mode 100644
index 000000000..50c796e87
--- /dev/null
+++ b/source/l/loudmouth/loudmouth.sasl-md5-digest-uri.diff
@@ -0,0 +1,22 @@
+diff -urp loudmouth-1.4.3.OLD/loudmouth/lm-connection.c loudmouth-1.4.3/loudmouth/lm-connection.c
+--- loudmouth-1.4.3.OLD/loudmouth/lm-connection.c 2008-10-29 16:38:26.000000000 -0400
++++ loudmouth-1.4.3/loudmouth/lm-connection.c 2009-06-12 19:13:03.183960144 -0400
+@@ -1442,10 +1442,17 @@ lm_connection_authenticate (LmConnection
+ connection->jid, connection->resource);
+
+ if (connection->use_sasl) {
++ gchar *domain = NULL;
++
++ if (!connection_get_server_from_jid (connection->jid, &domain)) {
++ domain = g_strdup (connection->server);
++ }
++
+ lm_sasl_authenticate (connection->sasl,
+ username, password,
+- connection->server,
++ domain,
+ connection_sasl_auth_finished);
++ g_free (domain);
+
+ connection->features_cb =
+ lm_message_handler_new (connection_features_cb,
diff --git a/source/l/loudmouth/loudmouth.stanzadrop.diff b/source/l/loudmouth/loudmouth.stanzadrop.diff
new file mode 100644
index 000000000..87b86a998
--- /dev/null
+++ b/source/l/loudmouth/loudmouth.stanzadrop.diff
@@ -0,0 +1,45 @@
+From: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+Date: Tue, 13 Jan 2009 11:28:44 +0000
+Subject: [PATCH] Drop stanzas when failing to convert them to LmMessages
+
+when a stanza comes in that for some reason can't be parsed into an LmMessage,
+just drop them on the floor instead of blocking the parser. I've seen this
+issue happen in practise because some (buggy?) client sending an iq with a
+prefix e.g. <client:iq xmlns:client="jabber:client" ... />
+---
+ loudmouth/lm-parser.c | 15 ++++++---------
+ 1 files changed, 6 insertions(+), 9 deletions(-)
+
+diff --git a/loudmouth/lm-parser.c b/loudmouth/lm-parser.c
+index 1938d56..89f6675 100644
+--- a/loudmouth/lm-parser.c
++++ b/loudmouth/lm-parser.c
+@@ -151,19 +151,16 @@ parser_end_node_cb (GMarkupParseContext *context,
+ if (!m) {
+ g_warning ("Couldn't create message: %s\n",
+ parser->cur_root->name);
+- return;
+- }
+-
+- g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER,
++ } else {
++ g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER,
+ "Have a new message\n");
+- if (parser->function) {
+- (* parser->function) (parser, m, parser->user_data);
++ if (parser->function) {
++ (* parser->function) (parser, m, parser->user_data);
++ }
++ lm_message_unref (m);
+ }
+
+- lm_message_unref (m);
+ lm_message_node_unref (parser->cur_root);
+-
+-
+ parser->cur_node = parser->cur_root = NULL;
+ } else {
+ LmMessageNode *tmp_node;
+--
+1.5.6.5
+
diff --git a/source/l/loudmouth/slack-desc b/source/l/loudmouth/slack-desc
new file mode 100644
index 000000000..00f7c03f5
--- /dev/null
+++ b/source/l/loudmouth/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+loudmouth: loudmouth (XMPP C programming library)
+loudmouth:
+loudmouth: Loudmouth is a lightweight and easy-to-use C library for programming
+loudmouth: with the Jabber protocol. It is designed to be easy to get started
+loudmouth: with, and yet extensible enough to allow you to do anything that the
+loudmouth: Jabber protocol allows.
+loudmouth:
+loudmouth: loudmouth home: http://www.loudmouth-project.org/
+loudmouth:
+loudmouth:
+loudmouth:
diff --git a/source/l/mpfr/mpfr.SlackBuild b/source/l/mpfr/mpfr.SlackBuild
index 588962bdb..808cbdacb 100755
--- a/source/l/mpfr/mpfr.SlackBuild
+++ b/source/l/mpfr/mpfr.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.3.1
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo mpfr-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -52,11 +64,11 @@ fi
cd $TMP
rm -rf mpfr-$VERSION
-tar xvf $CWD/mpfr-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/mpfr-$VERSION.tar.?z* || exit 1
cd mpfr-$VERSION
chown -R root:root .
for file in $CWD/patches/* ; do
- ( zcat $file 2> /dev/null | patch -p1 --verbose --batch 1> /dev/null 2> /dev/null || exit 1 )
+ ( zcat $file 2> /dev/null | patch -p1 --verbose --batch 2> /dev/null || exit 1 )
if [ ! $? = 0 ]; then
exit 1
fi
@@ -66,6 +78,7 @@ CFLAGS="$SLKCFLAGS" \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--infodir=/usr/info \
+ --docdir=/usr/doc/mpfr-$VERSION \
--enable-static=yes \
--enable-shared=yes \
$ARCH-slackware-linux
@@ -85,6 +98,7 @@ gzip -9 $PKG/usr/info/*
mkdir -p $PKG/usr/doc/mpfr-$VERSION
cp -a \
AUTHORS BUGS COPYING COPYING.LIB FAQ.html INSTALL NEWS README TODO VERSION \
+ examples \
$PKG/usr/doc/mpfr-$VERSION
mkdir -p $PKG/install
diff --git a/source/l/mpfr/patches/patch01 b/source/l/mpfr/patches/patch01
new file mode 100644
index 000000000..2721517c4
--- /dev/null
+++ b/source/l/mpfr/patches/patch01
@@ -0,0 +1,184 @@
+diff -Naurd mpfr-2.4.2-a/PATCHES mpfr-2.4.2-b/PATCHES
+--- mpfr-2.4.2-a/PATCHES 2009-12-07 13:37:12.000000000 +0000
++++ mpfr-2.4.2-b/PATCHES 2009-12-07 13:37:12.000000000 +0000
+@@ -0,0 +1 @@
++sin_cos_underflow
+diff -Naurd mpfr-2.4.2-a/VERSION mpfr-2.4.2-b/VERSION
+--- mpfr-2.4.2-a/VERSION 2009-11-30 02:43:08.000000000 +0000
++++ mpfr-2.4.2-b/VERSION 2009-12-07 13:37:12.000000000 +0000
+@@ -1 +1 @@
+-2.4.2
++2.4.2-p1
+diff -Naurd mpfr-2.4.2-a/mpfr.h mpfr-2.4.2-b/mpfr.h
+--- mpfr-2.4.2-a/mpfr.h 2009-11-30 02:43:08.000000000 +0000
++++ mpfr-2.4.2-b/mpfr.h 2009-12-07 13:37:12.000000000 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 2
+ #define MPFR_VERSION_MINOR 4
+ #define MPFR_VERSION_PATCHLEVEL 2
+-#define MPFR_VERSION_STRING "2.4.2"
++#define MPFR_VERSION_STRING "2.4.2-p1"
+
+ /* Macros dealing with MPFR VERSION */
+ #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
+diff -Naurd mpfr-2.4.2-a/sin_cos.c mpfr-2.4.2-b/sin_cos.c
+--- mpfr-2.4.2-a/sin_cos.c 2009-11-30 02:43:09.000000000 +0000
++++ mpfr-2.4.2-b/sin_cos.c 2009-12-07 13:37:12.000000000 +0000
+@@ -82,17 +82,19 @@
+ if (y != x)
+ /* y and x differ, thus we can safely try to compute y first */
+ {
+- MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, -2 * expx, 2, 0, rnd_mode,
+- { inexy = _inexact;
+- goto small_input; });
++ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (
++ y, x, -2 * expx, 2, 0, rnd_mode,
++ { inexy = _inexact;
++ goto small_input; });
+ if (0)
+ {
+ small_input:
+ /* we can go here only if we can round sin(x) */
+- MPFR_FAST_COMPUTE_IF_SMALL_INPUT (z, __gmpfr_one, -2 * expx,
+- 1, 0, rnd_mode,
+- { inexz = _inexact;
+- goto end; });
++ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (
++ z, __gmpfr_one, -2 * expx, 1, 0, rnd_mode,
++ { inexz = _inexact;
++ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
++ goto end; });
+ }
+
+ /* if we go here, one of the two MPFR_FAST_COMPUTE_IF_SMALL_INPUT
+@@ -101,18 +103,19 @@
+ else /* y and x are the same variable: try to compute z first, which
+ necessarily differs */
+ {
+- MPFR_FAST_COMPUTE_IF_SMALL_INPUT (z, __gmpfr_one, -2 * expx,
+- 1, 0, rnd_mode,
+- { inexz = _inexact;
+- goto small_input2; });
++ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (
++ z, __gmpfr_one, -2 * expx, 1, 0, rnd_mode,
++ { inexz = _inexact;
++ goto small_input2; });
+ if (0)
+ {
+ small_input2:
+ /* we can go here only if we can round cos(x) */
+- MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, -2 * expx, 2, 0,
+- rnd_mode,
+- { inexy = _inexact;
+- goto end; });
++ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (
++ y, x, -2 * expx, 2, 0, rnd_mode,
++ { inexy = _inexact;
++ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
++ goto end; });
+ }
+ }
+ m += 2 * (-expx);
+@@ -207,7 +210,6 @@
+ mpfr_clear (xr);
+
+ end:
+- /* FIXME: update the underflow flag if need be. */
+ MPFR_SAVE_EXPO_FREE (expo);
+ mpfr_check_range (y, inexy, rnd_mode);
+ mpfr_check_range (z, inexz, rnd_mode);
+diff -Naurd mpfr-2.4.2-a/tests/tsin_cos.c mpfr-2.4.2-b/tests/tsin_cos.c
+--- mpfr-2.4.2-a/tests/tsin_cos.c 2009-11-30 02:43:08.000000000 +0000
++++ mpfr-2.4.2-b/tests/tsin_cos.c 2009-12-07 13:37:12.000000000 +0000
+@@ -382,23 +382,56 @@
+ consistency (void)
+ {
+ mpfr_t x, s1, s2, c1, c2;
++ mp_exp_t emin, emax;
+ mp_rnd_t rnd;
++ unsigned int flags_sin, flags_cos, flags, flags_before, flags_ref;
++ int inex_sin, inex_cos, inex, inex_ref;
+ int i;
+
++ emin = mpfr_get_emin ();
++ emax = mpfr_get_emax ();
++
+ for (i = 0; i <= 10000; i++)
+ {
+ mpfr_init2 (x, MPFR_PREC_MIN + (randlimb () % 8));
+ mpfr_inits2 (MPFR_PREC_MIN + (randlimb () % 8), s1, s2, c1, c2,
+ (mpfr_ptr) 0);
+- tests_default_random (x, 256, -5, 50);
+- rnd = RND_RAND ();
+- mpfr_sin (s1, x, rnd);
+- mpfr_cos (c1, x, rnd);
+- mpfr_sin_cos (s2, c2, x, rnd);
+- if (!(mpfr_equal_p (s1, s2) && mpfr_equal_p (c1, c2)))
++ if (i < 8 * GMP_RND_MAX)
+ {
+- printf ("mpfr_sin_cos and mpfr_sin/mpfr_cos disagree on %s,\nx = ",
+- mpfr_print_rnd_mode (rnd));
++ int j = i / GMP_RND_MAX;
++ if (j & 1)
++ mpfr_set_emin (MPFR_EMIN_MIN);
++ mpfr_set_si (x, (j & 2) ? 1 : -1, GMP_RNDN);
++ mpfr_set_exp (x, mpfr_get_emin ());
++ rnd = (mpfr_rnd_t) (i % GMP_RND_MAX);
++ flags_before = 0;
++ if (j & 4)
++ mpfr_set_emax (-17);
++ }
++ else
++ {
++ tests_default_random (x, 256, -5, 50);
++ rnd = RND_RAND ();
++ flags_before = (randlimb () & 1) ?
++ (unsigned int) (MPFR_FLAGS_ALL ^ MPFR_FLAGS_ERANGE) :
++ (unsigned int) 0;
++ }
++ __gmpfr_flags = flags_before;
++ inex_sin = mpfr_sin (s1, x, rnd);
++ flags_sin = __gmpfr_flags;
++ __gmpfr_flags = flags_before;
++ inex_cos = mpfr_cos (c1, x, rnd);
++ flags_cos = __gmpfr_flags;
++ __gmpfr_flags = flags_before;
++ inex = !!mpfr_sin_cos (s2, c2, x, rnd);
++ flags = __gmpfr_flags;
++ inex_ref = inex_sin || inex_cos;
++ flags_ref = flags_sin | flags_cos;
++ if (!(mpfr_equal_p (s1, s2) && mpfr_equal_p (c1, c2)) ||
++ inex != inex_ref || flags != flags_ref)
++ {
++ printf ("mpfr_sin_cos and mpfr_sin/mpfr_cos disagree on %s,"
++ " i = %d\nx = ", mpfr_print_rnd_mode (rnd), i);
+ mpfr_dump (x);
+ printf ("s1 = ");
+ mpfr_dump (s1);
+@@ -408,9 +441,16 @@
+ mpfr_dump (c1);
+ printf ("c2 = ");
+ mpfr_dump (c2);
++ printf ("inex_sin = %d, inex_cos = %d, inex = %d (expected %d)\n",
++ inex_sin, inex_cos, inex, inex_ref);
++ printf ("flags_sin = 0x%x, flags_cos = 0x%x, "
++ "flags = 0x%x (expected 0x%x)\n",
++ flags_sin, flags_cos, flags, flags_ref);
+ exit (1);
+ }
+ mpfr_clears (x, s1, s2, c1, c2, (mpfr_ptr) 0);
++ mpfr_set_emin (emin);
++ mpfr_set_emax (emax);
+ }
+ }
+
+diff -Naurd mpfr-2.4.2-a/version.c mpfr-2.4.2-b/version.c
+--- mpfr-2.4.2-a/version.c 2009-11-30 02:43:08.000000000 +0000
++++ mpfr-2.4.2-b/version.c 2009-12-07 13:37:12.000000000 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+- return "2.4.2";
++ return "2.4.2-p1";
+ }
diff --git a/source/l/mpfr/patches/patch02 b/source/l/mpfr/patches/patch02
new file mode 100644
index 000000000..fa85d8ef3
--- /dev/null
+++ b/source/l/mpfr/patches/patch02
@@ -0,0 +1,71 @@
+diff -Naurd mpfr-2.4.2-a/PATCHES mpfr-2.4.2-b/PATCHES
+--- mpfr-2.4.2-a/PATCHES 2009-12-18 12:03:30.000000000 +0000
++++ mpfr-2.4.2-b/PATCHES 2009-12-18 12:05:19.000000000 +0000
+@@ -0,0 +1 @@
++longlong.h
+diff -Naurd mpfr-2.4.2-a/VERSION mpfr-2.4.2-b/VERSION
+--- mpfr-2.4.2-a/VERSION 2009-12-07 13:37:12.000000000 +0000
++++ mpfr-2.4.2-b/VERSION 2009-12-18 12:05:09.000000000 +0000
+@@ -1 +1 @@
+-2.4.2-p1
++2.4.2-p2
+diff -Naurd mpfr-2.4.2-a/mpfr-longlong.h mpfr-2.4.2-b/mpfr-longlong.h
+--- mpfr-2.4.2-a/mpfr-longlong.h 2009-11-30 02:43:08.000000000 +0000
++++ mpfr-2.4.2-b/mpfr-longlong.h 2009-12-18 12:04:29.000000000 +0000
+@@ -1011,7 +1011,15 @@
+ #endif /* __m88000__ */
+
+ #if defined (__mips) && W_TYPE_SIZE == 32
+-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7
++#if (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4)
++#define umul_ppmm(w1, w0, u, v) \
++ do { \
++ UDItype _r; \
++ _r = (UDItype) u * v; \
++ (w1) = _r >> 32; \
++ (w0) = (USItype) _r; \
++ } while (0)
++#elif __GNUC__ > 2 || __GNUC_MINOR__ >= 7
+ #define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("multu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v))
+ #else
+@@ -1024,7 +1032,16 @@
+ #endif /* __mips */
+
+ #if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64
+-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7
++#if (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4)
++typedef unsigned int UTItype __attribute__ ((mode (TI)));
++#define umul_ppmm(w1, w0, u, v) \
++ do { \
++ UTItype _r; \
++ _r = (UTItype) u * v; \
++ (w1) = _r >> 64; \
++ (w0) = (UDItype) _r; \
++ } while (0)
++#elif __GNUC__ > 2 || __GNUC_MINOR__ >= 7
+ #define umul_ppmm(w1, w0, u, v) \
+ __asm__ ("dmultu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v))
+ #else
+diff -Naurd mpfr-2.4.2-a/mpfr.h mpfr-2.4.2-b/mpfr.h
+--- mpfr-2.4.2-a/mpfr.h 2009-12-07 13:37:12.000000000 +0000
++++ mpfr-2.4.2-b/mpfr.h 2009-12-18 12:05:09.000000000 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 2
+ #define MPFR_VERSION_MINOR 4
+ #define MPFR_VERSION_PATCHLEVEL 2
+-#define MPFR_VERSION_STRING "2.4.2-p1"
++#define MPFR_VERSION_STRING "2.4.2-p2"
+
+ /* Macros dealing with MPFR VERSION */
+ #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
+diff -Naurd mpfr-2.4.2-a/version.c mpfr-2.4.2-b/version.c
+--- mpfr-2.4.2-a/version.c 2009-12-07 13:37:12.000000000 +0000
++++ mpfr-2.4.2-b/version.c 2009-12-18 12:05:09.000000000 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+- return "2.4.2-p1";
++ return "2.4.2-p2";
+ }
diff --git a/source/l/mpfr/patches/patch03 b/source/l/mpfr/patches/patch03
new file mode 100644
index 000000000..3ce4952f2
--- /dev/null
+++ b/source/l/mpfr/patches/patch03
@@ -0,0 +1,75 @@
+diff -Naurd mpfr-2.4.2-a/PATCHES mpfr-2.4.2-b/PATCHES
+--- mpfr-2.4.2-a/PATCHES 2010-01-11 15:27:18.000000000 +0000
++++ mpfr-2.4.2-b/PATCHES 2010-01-11 15:30:31.000000000 +0000
+@@ -0,0 +1 @@
++gmp5
+diff -Naurd mpfr-2.4.2-a/VERSION mpfr-2.4.2-b/VERSION
+--- mpfr-2.4.2-a/VERSION 2009-12-18 12:05:09.000000000 +0000
++++ mpfr-2.4.2-b/VERSION 2010-01-11 15:29:40.000000000 +0000
+@@ -1 +1 @@
+-2.4.2-p2
++2.4.2-p3
+diff -Naurd mpfr-2.4.2-a/configure mpfr-2.4.2-b/configure
+--- mpfr-2.4.2-a/configure 2009-11-30 02:44:35.000000000 +0000
++++ mpfr-2.4.2-b/configure 2010-01-11 15:28:56.000000000 +0000
+@@ -20449,6 +20449,9 @@
+ main ()
+ {
+
++#ifndef BITS_PER_MP_LIMB
++#define BITS_PER_MP_LIMB GMP_LIMB_BITS
++#endif
+ return BITS_PER_MP_LIMB == BYTES_PER_MP_LIMB * CHAR_BIT
+ && sizeof(mp_limb_t) == BYTES_PER_MP_LIMB ? 0 : 1;
+
+diff -Naurd mpfr-2.4.2-a/configure.in mpfr-2.4.2-b/configure.in
+--- mpfr-2.4.2-a/configure.in 2009-11-30 02:43:08.000000000 +0000
++++ mpfr-2.4.2-b/configure.in 2009-11-30 02:43:08.000000000 +0000
+@@ -424,6 +424,9 @@
+ #include "gmp.h"
+ #include "gmp-impl.h"
+ ]], [[
++#ifndef BITS_PER_MP_LIMB
++#define BITS_PER_MP_LIMB GMP_LIMB_BITS
++#endif
+ return BITS_PER_MP_LIMB == BYTES_PER_MP_LIMB * CHAR_BIT
+ && sizeof(mp_limb_t) == BYTES_PER_MP_LIMB ? 0 : 1;
+ ]])], [AC_MSG_RESULT(yes)], [
+diff -Naurd mpfr-2.4.2-a/mpfr-impl.h mpfr-2.4.2-b/mpfr-impl.h
+--- mpfr-2.4.2-a/mpfr-impl.h 2009-11-30 02:43:08.000000000 +0000
++++ mpfr-2.4.2-b/mpfr-impl.h 2010-01-11 15:28:01.000000000 +0000
+@@ -65,6 +65,12 @@
+ # ifndef __GMP_IMPL_H__
+ # include "gmp-impl.h"
+ # endif
++# ifndef BITS_PER_MP_LIMB
++# define BITS_PER_MP_LIMB GMP_LIMB_BITS
++# endif
++#ifndef mpn_sqr_n
++# define mpn_sqr_n mpn_sqr
++#endif
+ # ifdef MPFR_NEED_LONGLONG_H
+ # include "longlong.h"
+ # endif
+diff -Naurd mpfr-2.4.2-a/mpfr.h mpfr-2.4.2-b/mpfr.h
+--- mpfr-2.4.2-a/mpfr.h 2009-12-18 12:05:09.000000000 +0000
++++ mpfr-2.4.2-b/mpfr.h 2010-01-11 15:29:40.000000000 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 2
+ #define MPFR_VERSION_MINOR 4
+ #define MPFR_VERSION_PATCHLEVEL 2
+-#define MPFR_VERSION_STRING "2.4.2-p2"
++#define MPFR_VERSION_STRING "2.4.2-p3"
+
+ /* Macros dealing with MPFR VERSION */
+ #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
+diff -Naurd mpfr-2.4.2-a/version.c mpfr-2.4.2-b/version.c
+--- mpfr-2.4.2-a/version.c 2009-12-18 12:05:09.000000000 +0000
++++ mpfr-2.4.2-b/version.c 2010-01-11 15:29:40.000000000 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+- return "2.4.2-p2";
++ return "2.4.2-p3";
+ }
diff --git a/source/l/neon/neon.SlackBuild b/source/l/neon/neon.SlackBuild
index 511a0891b..896d885d1 100755
--- a/source/l/neon/neon.SlackBuild
+++ b/source/l/neon/neon.SlackBuild
@@ -22,10 +22,19 @@
PKGNAM=neon
-VERSION=${VERSION:-0.28.4}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-0.29.0}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
diff --git a/source/l/netpbm/Makefile.config b/source/l/netpbm/Makefile.config
deleted file mode 100644
index d9bf909d5..000000000
--- a/source/l/netpbm/Makefile.config
+++ /dev/null
@@ -1,649 +0,0 @@
-####This file was automatically created by 'configure.'
-####Many variables are set twice -- a generic setting, then
-####a system-specific override at the bottom of the file.
-####
-# This is a make file inclusion, to be included in all the Netpbm make
-# files.
-
-# This file is meant to contain variable settings that customize the
-# build for a particular target system configuration.
-
-# The distribution contains the file Makefile.config.in. You edit
-# Makefile.config.in in ways relevant to your particular environment
-# to create Makefile.config. The "configure" program will do this
-# for you in simple cases.
-
-# Some of the variables that the including make file must set for this
-# file to work:
-#
-# SRCDIR: The directory at the top of the Netpbm source tree. Note that
-# this is typically a relative directory, and it must be relative to the
-# make file that includes this file.
-
-DEFAULT_TARGET = nonmerge
-#DEFAULT_TARGET = merge
-
-# Fiasco has some special requirements that make it fail to compile on
-# some systems, and since it isn't very important, just set this to "N"
-# and skip it on those systems unless you want to debug it and fix it.
-# OpenBSD:
-#BUILD_FIASCO = N
-BUILD_FIASCO = Y
-
-# The following are commands for the build process to use. These values
-# do not get built into anything.
-
-# The C compiler (including macro preprocessor)
-#CC = gcc
-# Note that 'cc' is usually an alias for whatever is the main compiler
-# on a system, e.g. the GNU Compiler on Linux.
-CC = cc
-
-# The linker.
-LD = $(CC)
-#LD = ld
-#Tru64:
-#LD = cc
-#LD = gcc
-
-#If the linker identified above is a compiler that invokes a linker
-#(as in 'cc foo.o -o foo'), set LINKERISCOMPILER. The main difference is
-#that we expect a compiler to take linker options in the '-Wl,-opt1,val1'
-#syntax whereas the actual linker would take '-opt1 val1'.
-LINKERISCOMPILER=Y
-#If $(LD) is 'ld':
-#LINKERISCOMPILER=N
-
-#LINKER_CAN_DO_EXPLICIT_LIBRARY means the linker specified above can
-#take a library as just another link object argument, as in 'ld
-#pnmtojpeg.o /usr/local/lib/libjpeg.so ...' as opposed to requiring a
-#-l option as in 'ld pnmtojpeg.o -L/usr/local/lib -l jpeg'.
-#This variable controls how 'libopt' gets built. Note that with some
-#linkers, you can specify a shared library explicitly, but then it has
-#to live in that exact place at run time. That's not good enough for us.
-
-LINKER_CAN_DO_EXPLICIT_LIBRARY=N
-#GNU:
-#LINKER_CAN_DO_EXPLICIT_LIBRARY=Y
-
-# This is the name of the header file that declares the types
-# uint32_t, etc. This name is used as #include $(INTTYPES_H) .
-# Set to null if the types come automatically without including anything.
-
-# We have a report (2005.09.17) that on IRIX 5.3 with the native IDO
-# cc, inttypes.h and sys/types.h conflict (and Netpbm programs include
-# sys/types for other things), so for that environment, <inttypes.h>
-# won't work, but "inttypes_netpbm.h" might.
-
-INTTYPES_H = <inttypes.h>
-# Linux libc5:
-#INTTYPES_H = <types.h>
-# Solaris:
-# Solaris has <sys/inttypes.h>, but it doesn't define int_fast2_t, etc.
-#INTTYPES_H = "inttypes_netpbm.h"
-# Others:
-#INTTYPES_H = <sys/stdint.h>
-#INTTYPES_H = <sys/types.h>
-# The automatically generated Netpbm version:
-#INTTYPES_H = "inttypes_netpbm.h"
-
-# HAVE_INT64 tells whether, assuming you include the header indicated by
-# INTTYPES_H, you have the int64_t type and related stuff. (If you don't
-# the build will omit certain code that does 64 bit computations).
-HAVE_INT64 = Y
-#HAVE_INT64 = N
-
-# CC and LD are for building the Netpbm programs, which are not necessarily
-# intended to run on the same system on which Make is running. But when we
-# build a build tool such as Libopt, it is meant to run only on the same
-# system on which the Make is running. The variables below define programs
-# to use to compile and link build tools.
-CC_FOR_BUILD = $(CC)
-LD_FOR_BUILD = $(LD)
-CFLAGS_FOR_BUILD = $(CFLAGS)
-
-# MAKE is set automatically by Make to what was used to invoke Make.
-
-INSTALL = $(SRCDIR)/buildtools/install.sh
-#Solaris:
-#INSTALL = /usr/ucb/install
-#Tru64:
-#INSTALL = installbsd
-#OSF1:
-#INSTALL = $(SRCDIR)/buildtools/installosf
-#Red Hat Linux:
-#INSTALL = install
-
-# STRIPFLAG is the option you pass to the above install program to make it
-# strip unnecessary information out of binaries.
-STRIPFLAG = -s
-# If you don't want to strip the binaries, just leave it null:
-#STRIPFLAG =
-
-SYMLINK = ln -s
-# At least some Windows environments don't have any concept of symbolic
-# links, but direct copies are usually a passable alternative.
-#SYMLINK = cp
-
-#MANPAGE_FORMAT is "nroff" or "cat". It determines in what format the
-#pointer man pages are installed (ready to nroff, or ready to cat).
-#A pointer man pages is just a single-paragraph pages that tells you there is
-#no man page for the program, to look at the HTML documentation instead.
-MANPAGE_FORMAT = nroff
-#MANPAGE_FORMAT = cat
-
-AR = ar
-RANLIB = ranlib
-# IRIX, SCO don't have Ranlib:
-#RANLIB = true
-
-# LEX is the beginning of a shell command that runs a Lex-like
-# pattern matcher generator. Null string means there isn't any such
-# command. That means the build will skip parts that need one.
-
-LEX = flex
-# Solaris:
-# LEX = flex -e
-# Windows Mingw:
-# LEX =
-#
-# LEX = lex
-
-# C compiler options
-
-# gcc:
-# -ansi and -Werror should work too, but are not included
-# by default because there's no point in daring the build to fail.
-# -pedantic isn't a problem because it causes at worst a warning.
-#CFLAGS = -O3 -ffast-math -pedantic -fno-common \
-# -Wall -Wno-uninitialized -Wmissing-declarations -Wimplicit \
-# -Wwrite-string -Wmissing-prototypes -Wundef
-# The merged programs have a main_XXX subroutine instead of main(),
-# which would cause a warning with -Wmissing-declarations or
-# -Wmissing-prototypes.
-#CFLAGS_MERGE = -Wno-missing-declarations -Wno-missing-prototypes
-# A user of DEC Tru64 4.0F in May 2000 needed -DLONG_32 for ppmtompeg,
-# but word size-sensitive code was removed from parallel.c in September 2004.
-# A user of Tru64 5.1A in July 2003 needed NOT to have -DLONG_32. In
-# theory, you need this if on your system, long is 32 bits and int is not.
-# But it may be completely irrelevant today.
-#Tru64:
-#CFLAGS = -O2 -std1 -DLONG_32
-#CFLAGS = -O2 -std1
-#AIX:
-#CFLAGS= -O3
-#HP-UX:
-#CFLAGS= -O3 -fPIC
-#IRIX:
-#CFLAGS= -n32 -O3
-#Amiga with GNU compiler:
-#CFLAGS= -m68020-60 -ffast-math -mstackextend
-# You can add -noixemul for Amiga and successfully compile most of the
-# programs. (Of the remaining ones, if you can supply your own strtod()
-# function, most of them will build with -noixemul). So try building
-# with 'make --keep-going CADD=-noixemul' first, then just 'make' to build
-# everything that failed for lack of the ixemul library in the first step.
-# That way, the parts that don't required the ixemul library won't indicate
-# a dependency on it.
-#OpenBSD:
-#CFLAGS = -I/usr/local/include
-
-# EXE is a suffix that the linker puts on any executable it generates.
-# In cygwin, this is .exe and most programs deal with its existence without
-# us having to know about it. Some don't though, so set this:
-
-EXE =
-#Cygwin, DJGPP/Windows:
-#EXE = .exe
-
-# linker options.
-
-# LDFLAGS is often set as an environment variable; A setting here overrides
-# it. So either make sure you want to override it, or do a "LDFLAGS +=" here.
-
-# LDFLAGS is usually not the right place for a -L option, because we put
-# LDFLAGS _before_ our own -L options, so it would cancel out our
-# specific selection of libraries. For example, if you say
-# LDFLAGS=/usr/local/lib and an old copy of the libnetpbm is in
-# /usr/local/lib, then you'd be linking against that old copy instead of
-# the copy you just built, which is located by a -L option later on the
-# link command. LIBS is the right variable for adding -L options. LIBS
-# goes after any of our make files' own -L options.
-
-# Eunice users may want to use -noshare so that the executables can
-# run standalone:
-#LDFLAGS += -noshare
-#Tru64:
-# Russ Allberry says on 2001.06.09 that -oldstyle_liblookup may be necessary
-# to keep from finding an ancient system libjpeg.so that isn't compatible with
-# NetPBM. Michael Long found that /usr/local/lib is not in the default
-# search path, or not soon enough, and he was getting an old libjpeg that
-# caused all the jpeg symbol references to be unresolved. He had installed
-# a new libjpeg in /usr/local/lib.
-#LDFLAGS += -call_shared -oldstyle_liblookup -L/usr/local/lib
-#AIX:
-#LDFLAGS += -L /usr/pubsw/lib
-#HP-UX:
-#LDFLAGS += -Wl,+b,/usr/pubsw/lib
-#IRIX:
-#LDFLAGS += -n32
-
-# Linker options for created Netpbm shared libraries.
-
-# Here, $(SONAME) resolves to the soname for the shared library being created.
-# The following are gcc options. This works on GNU libc systems.
-LDSHLIB = -shared -Wl,-soname,$(SONAME)
-# You need -nostart instead of -shared on BeOS. Though the BeOS compiler is
-# ostensibly gcc, it has the -nostart option, which is not mentioned in gcc
-# documentation and doesn't exist in at least one non-BeOS installation.
-# BeOS doesn't have sonames built in.
-#LDSHLIB = -nostart
-#LDSHLIB = -G
-# Solaris, SunOS with GNU Ld, SCO:
-# These systems have no soname option.
-#LDSHLIB = -shared
-# Solaris with Sun Ld:
-#LDSHLIB = -Wl,-Bdynamic,-G,-h,$(SONAME)
-#Tru64:
-#LDSHLIB = -shared -expect_unresolved "*"
-#IRIX:
-#LDSHLIB = -shared -n32
-#AIX GNU compiler/linker:
-#LDSHLIB = -shared
-#AIX Visual Age C:
-#LDSHLIB = -qmkshrobj
-
-# LDRELOC is the command to combine two .o files (relocateable object files)
-# into a single .o file that can later be linked into something else. NONE
-# means no such command is available.
-
-LDRELOC = NONE
-# GNU Ld:
-# Older GNU Ld misspells the option as --relocateable. Newer GNU Ld
-# correctly spells it --relocatable. The abbreviation --reloc works on
-# both.
-#LDRELOC = ld --reloc
-#LDRELOC = ld -r
-
-
-# On older systems, you have to make shared libraries out of position
-# independent code, so you need -fpic or fPIC here. (The rule is: if
-# -fpic works, use it. If it bombs, go to fPIC). On newer systems,
-# it isn't necessary, but can save real memory at the expense of
-# execution speed. Without position independent code, the library
-# loader may have to patch addresses into the executable text. On an
-# older system, this would cause a program crash because the loader
-# would be writing into read-only shared memory. But on newer
-# systems, the system silently creates a private mapping of the page
-# or segment being modified (the "copy on write" phenomenon). So it
-# needs its own private real page frame. In one experiment, A second
-# copy of Pbmtext used 16K less real memory when built with -fpic than
-# when built without. 2001.06.02.
-
-# We have seen -fPIC required on IA64 and AMD64 machines (GNU
-# compiler/linker). Build-time linking fails without it. I don't
-# know why -- history seems to be repeating itself. 2005.02.23.
-
-CFLAGS_SHLIB =
-# Solaris or SunOS with gcc, and NetBSD:
-#CFLAGS_SHLIB = -fpic
-#CFLAGS_SHLIB = -fPIC
-# Sun compiler:
-#CFLAGS_SHLIB = -Kpic
-#CFLAGS_SHLIB = -KPIC
-
-# SHLIB_CLIB is the link option to include the C library in a shared library,
-# normally "-lc". On typical systems, this serves no purpose. On some,
-# though, it causes information about which C library to use to be recorded
-# in the shared library and thus choose the correct library among several or
-# avoid using an incompatible one. But on some systems, the link fails.
-# On 2002.09.30, "John H. DuBois III" <spcecdt@armory.com> reports that on
-# SCO OpenServer, he gets the following error message with -lc:
-#
-# -lc; relocations referenced ; from file(s) /usr/ccs/lib/libc.so(random.o);
-# fatal error: relocations remain against allocatable but non-writable
-# section: ; .text
-
-SHLIB_CLIB = -lc
-# SCO:
-SHLIB_CLIB =
-
-# On some systems you have to build into an executable the list of
-# directories where its dynamically linked libraries can be found at
-# run time. This is typically done with a -R or -rpath linker
-# option. Even on systems that don't require it, you might prefer to do
-# that rather than set up environment variables or configuration files
-# to tell the system where the libraries are. A "Y" here means to put
-# the directory information in the executable at link time.
-
-NEED_RUNTIME_PATH = N
-# Solaris, SunOS, NetBSD, AIX:
-#NEED_RUNTIME_PATH = Y
-
-# RPATHOPTNAME is the option you use on the link command to specify
-# a runtime search path for a shared library. It is meaningless unless
-# NEED_RUNTIME_PATH is Y.
-RPATHOPTNAME = -rpath
-
-# The following variables tell where your various libraries on which
-# Netpbm depends live. The LIBxxx variable is a full file
-# specification of the link library (not necessarily the library used
-# at run time). e.g. "/usr/local/lib/graphics/libjpeg.so". It usually
-# doesn't matter if the library prefix and suffix are right -- you can
-# use "lib" and ".so" or ".a" regardless of what your system actually
-# uses because these just turn into "-L" and "-l" linker options
-# anyway. ".a" implies a static library for some purposes, though.
-# If you don't have the library in question, use a value of NONE for
-# LIBxxx and the build will simply skip the programs that require that
-# library. If the library is in your linker's (or the Netpbm build's)
-# default search path, leave off the directory part, e.g. "libjpeg.so".
-
-# The xxxHDR_DIR variable is the directory in which the interface
-# headers for the library live (e.g. /usr/include). If they are in your
-# compiler's default search path, set this variable to null.
-
-# This is where the Netpbm shared libraries will reside when Netpbm is
-# fully installed. In some configurations, the Netpbm builder builds
-# this information into the Netpbm executables. This does NOT affect
-# where the Netpbm installer installs the libraries. A null value
-# means the libraries are in a default search path used by the runtime
-# library loader.
-NETPBMLIB_RUNTIME_PATH =
-#NETPBMLIB_RUNTIME_PATH = /usr/lib/netpbm
-
-# The TIFF library. See above. If you want to build the tiff
-# converters, you must have the tiff library already installed.
-
-TIFFLIB = NONE
-TIFFHDR_DIR =
-
-#TIFFLIB = libtiff.so
-#TIFFHDR_DIR = /usr/include/libtiff
-#NetBSD:
-#TIFFLIB = $(LOCALBASE)/lib/libtiff.so
-#TIFFHDR_DIR = $(LOCALBASE)/include
-# OSF, Tru64:
-#TIFFLIB = /usr/local1/DEC/lib/libtiff.so
-#TIFFHDR_DIR = /usr/local1/DEC/include
-
-# Some TIFF libraries do Jpeg and/or Z (flate) compression and thus any
-# program linked with the TIFF library needs a Jpeg and/or Z library.
-# Some TIFF libraries have such library statically linked in, but others
-# need it to be dynamically linked at program load time.
-# Make this 'N' if youf TIFF library doesn't need such dynamic linking.
-# As of 2005.01, the most usual build of the TIFF library appears to require
-# both.
-TIFFLIB_NEEDS_JPEG = Y
-TIFFLIB_NEEDS_Z = Y
-
-# The JPEG library. See above. If you want to build the jpeg
-# converters you must have the jpeg library already installed.
-
-# Tiff files can use JPEG compression, so the Tiff library can reference
-# the JPEG library. If your Tiff library references a dynamic JPEG
-# library, you must specify at least JPEGLIB here, or the Tiff
-# converters will not build. Note that your Tiff library may have the
-# JPEG stuff statically linked in, in which case you won't need
-# JPEGLIB in order to build the Tiff converters.
-
-JPEGLIB = NONE
-JPEGHDR_DIR =
-#JPEGLIB = libjpeg.so
-#JPEGHDR_DIR = /usr/include/jpeg
-# Netbsd:
-#JPEGLIB = ${LOCALBASE}/lib/libjpeg.so
-#JPEGHDR_DIR = ${LOCALBASE}/include
-# OSF, Tru64:
-#JPEGLIB = /usr/local1/DEC/libjpeg.so
-#JPEGHDR_DIR = /usr/local1/DEC/include
-# Typical:
-#JPEGLIB = /usr/local/lib/libjpeg.so
-#JPEGHDR_DIR = /usr/local/include
-# Don't build JPEG stuff:
-#JPEGLIB = NONE
-
-
-# The PNG library. See above. If you want to build the PNG
-# converters you must have the PNG library already installed.
-
-# The PNG library, by convention starting around April 2002, gets installed
-# with names that include a version number, such as libpng10.a and header
-# files in /usr/include/libpng10. But there is conventionally an unnumbered
-# alias (e.g. libpng.a, /usr/include/libpng) for the preferred version.
-#
-# Recent versions of the library (since some time in the 2002-2006 period)
-# have an associated 'libpng-config' that tells how to link it. The make
-# files will use that program if it exists (must be in the PATH). In that
-# case, PNGLIB and PNGHDR_DIR are irrelevant, but PNGVER is still meaningful,
-# because the make file runs 'libpng$(PNGVER)-config'.
-
-PNGLIB = NONE
-PNGHDR_DIR =
-PNGVER =
-#PNGLIB = libpng$(PNGVER).so
-#PNGHDR_DIR = /usr/include/libpng$(PNGVER)
-# NetBSD:
-#PNGLIB = $(LOCALBASE)/lib/libpng$(PNGVER).so
-#PNGHDR_DIR = $(LOCALBASE)/include
-# OSF/Tru64:
-#PNGLIB = /usr/local1/DEC/lib/libpng$(PNGVER).so
-#PNGHDR_DIR = /usr/local1/DEC/include
-
-# The zlib compression library. See above. You need it to build
-# anything that needs the PNG library (see above). If you selected
-# NONE for the PNG library, it doesn't matter what you specify here --
-# it won't get used.
-#
-# If you have 'libpng-config' (see above), these are irrelevant.
-
-ZLIB = NONE
-ZHDR_DIR =
-#ZLIB = libz.so
-
-# The JBIG lossless image compression library (aka JBIG-KIT):
-
-JBIGLIB = $(BUILDDIR)/converter/other/jbig/libjbig.a
-JBIGHDR_DIR = $(SRCDIR)/converter/other/jbig
-
-# The Jasper JPEG-2000 image compression library (aka JasPer):
-JASPERLIB = $(INTERNAL_JASPERLIB)
-JASPERHDR_DIR = $(INTERNAL_JASPERHDR_DIR)
-# JASPERDEPLIBS is the libraries (-l options or file names) on which
-# The Jasper library depends -- i.e. what you have to link into any
-# executable that links in the Jasper library.
-JASPERDEPLIBS =
-#JASPERDEPLIBS = -ljpeg
-
-# And the Utah Raster Toolkit (aka URT aka RLE) library:
-
-URTLIB = $(BUILDDIR)/urt/librle.a
-URTHDR_DIR = $(SRCDIR)/urt
-
-# The X11 library has facilities for talking to an X Window System
-# server. It is required by Pamx.
-
-X11LIB = NONE
-X11HDR_DIR =
-
-#X11LIB = /usr/lib/libX11.so
-#X11HDR_DIR =
-
-# The Linux SVGA library (Svgalib) is a facility for displaying graphics
-# on the Linux console. It is required by Ppmsvgalib.
-
-LINUXSVGALIB = NONE
-LINUXSVGAHDR_DIR =
-
-#LINUXSVGALIB = /usr/lib/libvga.so
-#LINUXSVGAHDR_DIR = /usr/include/vgalib
-
-# If you don't want any network functions, set OMIT_NETWORK to "y".
-# The only thing that requires network functions is the option in
-# ppmtompeg to run it on multiple computers simultaneously. On some
-# systems network functions don't work or we haven't figured out how to
-# make them work, or they just aren't worth the effort.
-OMIT_NETWORK =
-#DJGPP/Windows, Tru64:
-# (there's some minor header problem that prevents network functions from
-# building on Tru64 2000.10.06)
-#OMIT_NETWORK = y
-
-# These are -l options to link in the network libraries. Often, these are
-# built into the standard C library, so this can be null. This is irrelevant
-# if OMIT_NETWORK is "y".
-
-NETWORKLD =
-# Solaris, SunOS:
-#NETWORKLD = -lsocket -lnsl
-# SCO:
-#NETWORKLD = -lsocket, -lresolv
-
-VMS =
-#VMS:
-#VMS = yes
-
-# DONT_HAVE_PROCESS_MGMT is Y if this system doesn't have the usual
-# Unix process management stuff - fork, wait, etc. N for a regular Unix
-# system.
-DONT_HAVE_PROCESS_MGMT = N
-
-# The following variables are used only by 'make install' (and the
-# variants of it). Paths here don't, for example, get built into any
-# programs.
-
-# This is where everything goes when you do 'make package', unless you
-# override it by setting 'pkgdir' on the Make command line.
-PKGDIR_DEFAULT = /tmp/netpbm
-
-# Subdirectory of the package directory ($(pkgdir)) in which man pages
-# go.
-PKGMANDIR = man
-
-# File permissions for installed files.
-# Note that on some systems (e.g. Solaris), 'install' can't use the
-# mnemonic permissions - you have to use octal.
-
-# binaries (pbmmake, etc)
-INSTALL_PERM_BIN = 755 # u=rwx,go=rx
-# shared libraries (libpbm.so, etc)
-INSTALL_PERM_LIBD = 755 # u=rwx,go=rx
-# static libraries (libpbm.a, etc)
-INSTALL_PERM_LIBS = 644 # u=rw,go=r
-# header files (pbm.h, etc)
-INSTALL_PERM_HDR = 644 # u=rw,go=r
-# man pages (pbmmake.1, etc)
-INSTALL_PERM_MAN = 644 # u=rw,go=r
-# data files (pnmtopalm color maps, etc)
-INSTALL_PERM_DATA = 644 # u=rw,go=r
-
-# Specify the suffix that want the man pages to have.
-
-SUFFIXMANUALS1 = 1
-SUFFIXMANUALS3 = 3
-SUFFIXMANUALS5 = 5
-
-#NETPBMLIBTYPE tells the kind of libraries that will get built to hold the
-#Netpbm library functions. The value is used only in make file tests.
-# "unixshared" means a unix-style shared library, typically named like
-# libxyz.so.2.3
-NETPBMLIBTYPE = unixshared
-# "unixstatic" means a unix-style static library, (like libxyz.a)
-#NETPBMLIBTYPE = unixstatic
-# "dll" means a Windows DLL shared library
-#NETPBMLIBTYPE = dll
-# "dylib" means a Darwin/Mac OS shared library
-#NETPBMLIBTYPE = dylib
-
-#NETPBMLIBSUFFIX is the suffix used on whatever kind of library is
-#selected above. All this is used for is to construct library names.
-#The make files never examine the actual value.
-NETPBMLIBSUFFIX = so
-
-# "a" is the suffix for unix-style static libraries. It is also
-# traditionally used for shared libraries on AIX. The Visual Age C
-# manual says sometimes .so works on AIX, and GNU software for AIX
-# 5.1.0 does indeed use it. In our experiments, it works fine if you
-# name the library file explicitly on the link, but isn't in the -l
-# search order. If you name the library explicitly on the link, the
-# library must live in exactly the same position at run time, so we
-# can't use that. Therefore, you cannot build both static and shared
-# libraries with AIX. You have to choose.
-#NETPBMLIBSUFFIX = a
-# For HP-UX shared libraries:
-#NETPBMLIBSUFFIX = sl
-# Darwin/Mac OS shared library:
-#NETPBMLIBSUFFIX = dylib
-# Windows shared library:
-#NETPBMLIBSUFFIX = dll
-
-#STATICLIB_TOO is "y" to signify that you want a static library built
-#and installed in addition to whatever library type you specified by
-#NETPBMLIBTYPE. If NETPBMLIBTYPE specified a static library,
-#STATICLIB_TOO simply has no effect.
-STATICLIB_TOO = y
-#STATICLIB_TOO = n
-
-#STATICLIBSUFFIX is the suffix that static libraries have. It's
-#meaningless if you aren't building static libraries.
-STATICLIBSUFFIX = a
-
-#SHLIBPREFIXLIST is a blank-delimited list of prefixes that a filename
-#of a shared library may have on this system. Traditionally, it's
-#just "lib", as in libc or libnetpbm. On Windows, though, varying
-#prefixes are used when multiple alternative forms of a library are
-#available. The first prefix in this list is what we use to name the
-#Netpbm shared libraries.
-#
-# This variable controls how 'libopt' gets built.
-#
-SHLIBPREFIXLIST = lib
-#Cygwin:
-#SHLIBPREFIXLIST = cyg lib
-
-NETPBMSHLIBPREFIX = $(firstword $(SHLIBPREFIXLIST))
-
-#DLLVER is used to version the DLLs built on cygwin or other
-#windowsish platforms. We can't add this to LIBROOT, or we'd
-#version the static libs (which is bad). We can't add this
-#at the end of the name (like unix does with so numbers) because
-#windows will only load dlls whose name ends in "dll". So,
-#we have this variable, which becomes the end of the library "root" name
-#for DLLs only.
-#
-# This variable controls how 'libopt' gets built.
-#
-DLLVER =
-#Cygwin
-#DLLVER = $(NETPBM_MAJOR_RELEASE)
-
-#NETPBM_DOCURL is the URL of the main documentation page for Netpbm.
-#This is a directory which contains a file for each Netpbm program,
-#library, and file type. E.g. The documentation for jpegtopnm might be in
-#http://netpbm.sourceforge.net/doc/jpegtopnm.html . This value gets
-#installed in the man pages (which say no more than to read the webpage)
-#and in the Webman netpbm.url file.
-NETPBM_DOCURL = http://netpbm.sourceforge.net/doc/
-#For a system with no web access, but a local copy of the doc:
-#NETPBM_DOCURL = file:/usr/doc/netpbm/
-
-
-
-
-
-####Lines above were copied from Makefile.config.in by 'configure'.
-####Lines below were added by 'configure' based on the GNU platform.
-DEFAULT_TARGET = nonmerge
-NETPBMLIBTYPE=unixshared
-NETPBMLIBSUFFIX=so
-STATICLIB_TOO=n
-CFLAGS = -O3 -ffast-math -pedantic -fno-common -Wall -Wno-uninitialized -Wmissing-declarations -Wimplicit -Wwrite-strings -Wmissing-prototypes -Wundef
-CFLAGS_MERGE = -Wno-missing-declarations -Wno-missing-prototypes
-LDRELOC = ld --reloc
-LINKER_CAN_DO_EXPLICIT_LIBRARY=Y
-LINKERISCOMPILER = Y
-TIFFLIB = libtiff.so
-JPEGLIB = libjpeg.so
-ZLIB = libz.so
-X11LIB = libX11.so
-LINUXSVGALIB = libvga.so
-NETPBM_DOCURL = http://netpbm.sourceforge.net/doc/
diff --git a/source/l/netpbm/config.mk b/source/l/netpbm/config.mk
new file mode 100644
index 000000000..f5ace50f0
--- /dev/null
+++ b/source/l/netpbm/config.mk
@@ -0,0 +1,662 @@
+####This file was automatically created by 'configure.'
+####Many variables are set twice -- a generic setting, then
+####a system-specific override at the bottom of the file.
+####
+# This is a make file inclusion, to be included in all the Netpbm make
+# files.
+
+# This file is meant to contain variable settings that customize the
+# build for a particular target system configuration.
+
+# The distribution contains the file config.mk.in. You edit
+# config.mk.in in ways relevant to your particular environment
+# to create config.mk. The "configure" program will do this
+# for you in simple cases.
+
+# Some of the variables that the including make file must set for this
+# file to work:
+#
+# SRCDIR: The directory at the top of the Netpbm source tree. Note that
+# this is typically a relative directory, and it must be relative to the
+# make file that includes this file.
+
+DEFAULT_TARGET = nonmerge
+#DEFAULT_TARGET = merge
+
+# Fiasco has some special requirements that make it fail to compile on
+# some systems, and since it isn't very important, just set this to "N"
+# and skip it on those systems unless you want to debug it and fix it.
+# OpenBSD:
+#BUILD_FIASCO = N
+BUILD_FIASCO = Y
+
+# The following are commands for the build process to use. These values
+# do not get built into anything.
+
+# The C compiler (including macro preprocessor)
+#CC = gcc
+# Note that 'cc' is usually an alias for whatever is the main compiler
+# on a system, e.g. the GNU Compiler on Linux.
+CC = cc
+
+# The linker.
+LD = $(CC)
+#LD = ld
+#Tru64:
+#LD = cc
+#LD = gcc
+
+#If the linker identified above is a compiler that invokes a linker
+#(as in 'cc foo.o -o foo'), set LINKERISCOMPILER. The main difference is
+#that we expect a compiler to take linker options in the '-Wl,-opt1,val1'
+#syntax whereas the actual linker would take '-opt1 val1'.
+LINKERISCOMPILER=Y
+#If $(LD) is 'ld':
+#LINKERISCOMPILER=N
+
+#LINKER_CAN_DO_EXPLICIT_LIBRARY means the linker specified above can
+#take a library as just another link object argument, as in 'ld
+#pnmtojpeg.o /usr/local/lib/libjpeg.so ...' as opposed to requiring a
+#-l option as in 'ld pnmtojpeg.o -L/usr/local/lib -l jpeg'.
+#This variable controls how 'libopt' gets built. Note that with some
+#linkers, you can specify a shared library explicitly, but then it has
+#to live in that exact place at run time. That's not good enough for us.
+
+LINKER_CAN_DO_EXPLICIT_LIBRARY=N
+#GNU:
+#LINKER_CAN_DO_EXPLICIT_LIBRARY=Y
+
+# This is the name of the header file that declares the types
+# uint32_t, etc. This name is used as #include $(INTTYPES_H) .
+# Set to null if the types come automatically without including anything.
+
+# We have a report (2005.09.17) that on IRIX 5.3 with the native IDO
+# cc, inttypes.h and sys/types.h conflict (and Netpbm programs include
+# sys/types for other things), so for that environment, <inttypes.h>
+# won't work, but "inttypes_netpbm.h" might.
+
+INTTYPES_H = <inttypes.h>
+# Linux libc5:
+#INTTYPES_H = <types.h>
+# Solaris:
+# Solaris has <sys/inttypes.h>, but it doesn't define int_fast2_t, etc.
+#INTTYPES_H = "inttypes_netpbm.h"
+# Others:
+#INTTYPES_H = <sys/stdint.h>
+#INTTYPES_H = <sys/types.h>
+# The automatically generated Netpbm version:
+#INTTYPES_H = "inttypes_netpbm.h"
+
+# HAVE_INT64 tells whether, assuming you include the header indicated by
+# INTTYPES_H, you have the int64_t type and related stuff. (If you don't
+# the build will omit certain code that does 64 bit computations).
+HAVE_INT64 = Y
+#HAVE_INT64 = N
+
+# CC and LD are for building the Netpbm programs, which are not necessarily
+# intended to run on the same system on which Make is running. But when we
+# build a build tool such as Libopt, it is meant to run only on the same
+# system on which the Make is running. The variables below define programs
+# to use to compile and link build tools.
+CC_FOR_BUILD = $(CC)
+LD_FOR_BUILD = $(LD)
+CFLAGS_FOR_BUILD = $(CFLAGS)
+LDFLAGS_FOR_BUILD = $(LDFLAGS)
+
+# MAKE is set automatically by Make to what was used to invoke Make.
+
+INSTALL = $(SRCDIR)/buildtools/install.sh
+#Solaris:
+#INSTALL = /usr/ucb/install
+#Tru64:
+#INSTALL = installbsd
+#OSF1:
+#INSTALL = $(SRCDIR)/buildtools/installosf
+#Red Hat Linux:
+#INSTALL = install
+
+# STRIPFLAG is the option you pass to the above install program to make it
+# strip unnecessary information out of binaries.
+STRIPFLAG = -s
+# If you don't want to strip the binaries, just leave it null:
+#STRIPFLAG =
+
+SYMLINK = ln -s
+# At least some Windows environments don't have any concept of symbolic
+# links, but direct copies are usually a passable alternative.
+#SYMLINK = cp
+
+#MANPAGE_FORMAT is "nroff" or "cat". It determines in what format the
+#pointer man pages are installed (ready to nroff, or ready to cat).
+#A pointer man pages is just a single-paragraph pages that tells you there is
+#no man page for the program, to look at the HTML documentation instead.
+MANPAGE_FORMAT = nroff
+#MANPAGE_FORMAT = cat
+
+AR = ar
+RANLIB = ranlib
+# IRIX, SCO don't have Ranlib:
+#RANLIB = true
+
+# LEX is the beginning of a shell command that runs a Lex-like
+# pattern matcher generator. Null string means there isn't any such
+# command. That means the build will skip parts that need one.
+
+LEX = flex
+# Solaris:
+# LEX = flex -e
+# Windows Mingw:
+# LEX =
+#
+# LEX = lex
+
+# C compiler options
+
+# gcc:
+# -ansi and -Werror should work too, but are not included
+# by default because there's no point in daring the build to fail.
+# -pedantic isn't a problem because it causes at worst a warning.
+#CFLAGS = -O3 -ffast-math -pedantic -fno-common \
+# -Wall -Wno-uninitialized -Wmissing-declarations -Wimplicit \
+# -Wwrite-strings -Wmissing-prototypes -Wundef
+# The merged programs have a main_XXX subroutine instead of main(),
+# which would cause a warning with -Wmissing-declarations or
+# -Wmissing-prototypes.
+#CFLAGS_MERGE = -Wno-missing-declarations -Wno-missing-prototypes
+# A user of DEC Tru64 4.0F in May 2000 needed -DLONG_32 for ppmtompeg,
+# but word size-sensitive code was removed from parallel.c in September 2004.
+# A user of Tru64 5.1A in July 2003 needed NOT to have -DLONG_32. In
+# theory, you need this if on your system, long is 32 bits and int is not.
+# But it may be completely irrelevant today.
+#Tru64:
+#CFLAGS = -O2 -std1 -DLONG_32
+#CFLAGS = -O2 -std1
+#AIX:
+#CFLAGS= -O3
+#HP-UX:
+#CFLAGS= -O3 -fPIC
+#IRIX:
+#CFLAGS= -n32 -O3
+#Amiga with GNU compiler:
+#CFLAGS= -m68020-60 -ffast-math -mstackextend
+# You can add -noixemul for Amiga and successfully compile most of the
+# programs. (Of the remaining ones, if you can supply your own strtod()
+# function, most of them will build with -noixemul). So try building
+# with 'make --keep-going CADD=-noixemul' first, then just 'make' to build
+# everything that failed for lack of the ixemul library in the first step.
+# That way, the parts that don't required the ixemul library won't indicate
+# a dependency on it.
+#OpenBSD:
+#CFLAGS = -I/usr/local/include
+
+# EXE is a suffix that the linker puts on any executable it generates.
+# In cygwin, this is .exe and most programs deal with its existence without
+# us having to know about it. Some don't though, so set this:
+
+EXE =
+#Cygwin, DJGPP/Windows:
+#EXE = .exe
+
+# linker options.
+
+# LDFLAGS is often set as an environment variable; A setting here overrides
+# it. So either make sure you want to override it, or do a "LDFLAGS +=" here.
+
+# LDFLAGS is usually not the right place for a -L option, because we put
+# LDFLAGS _before_ our own -L options, so it would cancel out our
+# specific selection of libraries. For example, if you say
+# LDFLAGS=/usr/local/lib and an old copy of the libnetpbm is in
+# /usr/local/lib, then you'd be linking against that old copy instead of
+# the copy you just built, which is located by a -L option later on the
+# link command. LIBS is the right variable for adding -L options. LIBS
+# goes after any of our make files' own -L options.
+
+# Eunice users may want to use -noshare so that the executables can
+# run standalone:
+#LDFLAGS += -noshare
+#Tru64:
+# Russ Allberry says on 2001.06.09 that -oldstyle_liblookup may be necessary
+# to keep from finding an ancient system libjpeg.so that isn't compatible with
+# NetPBM. Michael Long found that /usr/local/lib is not in the default
+# search path, or not soon enough, and he was getting an old libjpeg that
+# caused all the jpeg symbol references to be unresolved. He had installed
+# a new libjpeg in /usr/local/lib.
+#LDFLAGS += -call_shared -oldstyle_liblookup -L/usr/local/lib
+#AIX:
+#LDFLAGS += -L /usr/pubsw/lib
+#HP-UX:
+#LDFLAGS += -Wl,+b,/usr/pubsw/lib
+#IRIX:
+#LDFLAGS += -n32
+
+# Linker options for created Netpbm shared libraries.
+
+# Here, $(SONAME) resolves to the soname for the shared library being created.
+# The following are gcc options. This works on GNU libc systems.
+LDSHLIB = -shared -Wl,-soname,$(SONAME)
+# You need -nostart instead of -shared on BeOS. Though the BeOS compiler is
+# ostensibly gcc, it has the -nostart option, which is not mentioned in gcc
+# documentation and doesn't exist in at least one non-BeOS installation.
+# BeOS doesn't have sonames built in.
+#LDSHLIB = -nostart
+#LDSHLIB = -G
+# Solaris, SunOS with GNU Ld, SCO:
+# These systems have no soname option.
+#LDSHLIB = -shared
+# Solaris with Sun Ld:
+#LDSHLIB = -Wl,-Bdynamic,-G,-h,$(SONAME)
+#Tru64:
+#LDSHLIB = -shared -expect_unresolved "*"
+#IRIX:
+#LDSHLIB = -shared -n32
+#AIX GNU compiler/linker:
+#LDSHLIB = -shared
+#AIX Visual Age C:
+#LDSHLIB = -qmkshrobj
+#Mac OSX:
+# According to experiments done by Peter A Crowley in May 2007, if
+# libnetpbm goes in a standard place such as /usr/local/lib,
+# programs need not be built with libnetpbm's location included.
+# But if it goes elsewhere, the link-editor must include the
+# location in the executable. It finds the runtime location by
+# looking inside the library. The information in the library
+# comes from the install_name option with which the library was
+# built. It's an alternative to the -rpath option on other systems.
+#LDSHLIB=-dynamiclib
+#LDSHLIB=-dynamiclib -install_name $(NETPBMLIB_RUNTIME_PATH)/libnetpbm.$(MAJ).dylib
+
+# LDRELOC is the command to combine two .o files (relocateable object files)
+# into a single .o file that can later be linked into something else. NONE
+# means no such command is available.
+
+LDRELOC = NONE
+# GNU Ld:
+# Older GNU Ld misspells the option as --relocateable. Newer GNU Ld
+# correctly spells it --relocatable. The abbreviation --reloc works on
+# both.
+#LDRELOC = ld --reloc
+#LDRELOC = ld -r
+
+
+# On older systems, you have to make shared libraries out of position
+# independent code, so you need -fpic or fPIC here. (The rule is: if
+# -fpic works, use it. If it bombs, go to fPIC). On newer systems,
+# it isn't necessary, but can save real memory at the expense of
+# execution speed. Without position independent code, the library
+# loader may have to patch addresses into the executable text. On an
+# older system, this would cause a program crash because the loader
+# would be writing into read-only shared memory. But on newer
+# systems, the system silently creates a private mapping of the page
+# or segment being modified (the "copy on write" phenomenon). So it
+# needs its own private real page frame. In one experiment, A second
+# copy of Pbmtext used 16K less real memory when built with -fpic than
+# when built without. 2001.06.02.
+
+# We have seen -fPIC required on IA64 and AMD64 machines (GNU
+# compiler/linker). Build-time linking fails without it. I don't
+# know why -- history seems to be repeating itself. 2005.02.23.
+
+CFLAGS_SHLIB =
+# Gcc:
+#CFLAGS_SHLIB = -fpic
+#CFLAGS_SHLIB = -fPIC
+# Sun compiler:
+#CFLAGS_SHLIB = -Kpic
+#CFLAGS_SHLIB = -KPIC
+
+# SHLIB_CLIB is the link option to include the C library in a shared library,
+# normally "-lc". On typical systems, this serves no purpose. On some,
+# though, it causes information about which C library to use to be recorded
+# in the shared library and thus choose the correct library among several or
+# avoid using an incompatible one. But on some systems, the link fails.
+# On 2002.09.30, "John H. DuBois III" <spcecdt@armory.com> reports that on
+# SCO OpenServer, he gets the following error message with -lc:
+#
+# -lc; relocations referenced ; from file(s) /usr/ccs/lib/libc.so(random.o);
+# fatal error: relocations remain against allocatable but non-writable
+# section: ; .text
+
+SHLIB_CLIB = -lc
+# SCO:
+#SHLIB_CLIB =
+
+# On some systems you have to build into an executable the list of
+# directories where its dynamically linked libraries can be found at
+# run time. This is typically done with a -R or -rpath linker
+# option. Even on systems that don't require it, you might prefer to do
+# that rather than set up environment variables or configuration files
+# to tell the system where the libraries are. A "Y" here means to put
+# the directory information in the executable at link time.
+
+NEED_RUNTIME_PATH = N
+# Solaris, SunOS, NetBSD, AIX:
+#NEED_RUNTIME_PATH = Y
+
+# RPATHOPTNAME is the option you use on the link command to specify
+# a runtime search path for a shared library. It is meaningless unless
+# NEED_RUNTIME_PATH is Y.
+RPATHOPTNAME = -rpath
+
+# The following variables tell where your various libraries on which
+# Netpbm depends live. The LIBxxx variable is a full file
+# specification of the link library (not necessarily the library used
+# at run time). e.g. "/usr/local/lib/graphics/libjpeg.so". It usually
+# doesn't matter if the library prefix and suffix are right -- you can
+# use "lib" and ".so" or ".a" regardless of what your system actually
+# uses because these just turn into "-L" and "-l" linker options
+# anyway. ".a" implies a static library for some purposes, though.
+# If you don't have the library in question, use a value of NONE for
+# LIBxxx and the build will simply skip the programs that require that
+# library. If the library is in your linker's (or the Netpbm build's)
+# default search path, leave off the directory part, e.g. "libjpeg.so".
+
+# The xxxHDR_DIR variable is the directory in which the interface
+# headers for the library live (e.g. /usr/include). If they are in your
+# compiler's default search path, set this variable to null.
+
+# This is where the Netpbm shared libraries will reside when Netpbm is
+# fully installed. In some configurations, the Netpbm builder builds
+# this information into the Netpbm executables. This does NOT affect
+# where the Netpbm installer installs the libraries. A null value
+# means the libraries are in a default search path used by the runtime
+# library loader.
+NETPBMLIB_RUNTIME_PATH =
+#NETPBMLIB_RUNTIME_PATH = /usr/lib/netpbm
+
+# The TIFF library. See above. If you want to build the tiff
+# converters, you must have the tiff library already installed.
+
+TIFFLIB = NONE
+TIFFHDR_DIR =
+
+#TIFFLIB = libtiff.so
+#TIFFHDR_DIR = /usr/include/libtiff
+#NetBSD:
+#TIFFLIB = $(LOCALBASE)/lib/libtiff.so
+#TIFFHDR_DIR = $(LOCALBASE)/include
+# OSF, Tru64:
+#TIFFLIB = /usr/local1/DEC/lib/libtiff.so
+#TIFFHDR_DIR = /usr/local1/DEC/include
+
+# Some TIFF libraries do Jpeg and/or Z (flate) compression and thus any
+# program linked with the TIFF library needs a Jpeg and/or Z library.
+# Some TIFF libraries have such library statically linked in, but others
+# need it to be dynamically linked at program load time.
+# Make this 'N' if youf TIFF library doesn't need such dynamic linking.
+# As of 2005.01, the most usual build of the TIFF library appears to require
+# both.
+TIFFLIB_NEEDS_JPEG = Y
+TIFFLIB_NEEDS_Z = Y
+
+# The JPEG library. See above. If you want to build the jpeg
+# converters you must have the jpeg library already installed.
+
+# Tiff files can use JPEG compression, so the Tiff library can reference
+# the JPEG library. If your Tiff library references a dynamic JPEG
+# library, you must specify at least JPEGLIB here, or the Tiff
+# converters will not build. Note that your Tiff library may have the
+# JPEG stuff statically linked in, in which case you won't need
+# JPEGLIB in order to build the Tiff converters.
+
+JPEGLIB = NONE
+JPEGHDR_DIR =
+#JPEGLIB = libjpeg.so
+#JPEGHDR_DIR = /usr/include/jpeg
+# Netbsd:
+#JPEGLIB = ${LOCALBASE}/lib/libjpeg.so
+#JPEGHDR_DIR = ${LOCALBASE}/include
+# OSF, Tru64:
+#JPEGLIB = /usr/local1/DEC/libjpeg.so
+#JPEGHDR_DIR = /usr/local1/DEC/include
+# Typical:
+#JPEGLIB = /usr/local/lib/libjpeg.so
+#JPEGHDR_DIR = /usr/local/include
+# Don't build JPEG stuff:
+#JPEGLIB = NONE
+
+
+# The PNG library. See above. If you want to build the PNG
+# converters you must have the PNG library already installed.
+
+# The PNG library, by convention starting around April 2002, gets installed
+# with names that include a version number, such as libpng10.a and header
+# files in /usr/include/libpng10. But there is conventionally an unnumbered
+# alias (e.g. libpng.a, /usr/include/libpng) for the preferred version.
+#
+# Recent versions of the library (since some time in the 2002-2006 period)
+# have an associated 'libpng-config' that tells how to link it. The make
+# files will use that program if it exists (must be in the PATH). In that
+# case, PNGLIB and PNGHDR_DIR are irrelevant, but PNGVER is still meaningful,
+# because the make file runs 'libpng$(PNGVER)-config'.
+
+PNGLIB = NONE
+PNGHDR_DIR =
+PNGVER =
+#PNGLIB = libpng$(PNGVER).so
+#PNGHDR_DIR = /usr/include/libpng$(PNGVER)
+# NetBSD:
+#PNGLIB = $(LOCALBASE)/lib/libpng$(PNGVER).so
+#PNGHDR_DIR = $(LOCALBASE)/include
+# OSF/Tru64:
+#PNGLIB = /usr/local1/DEC/lib/libpng$(PNGVER).so
+#PNGHDR_DIR = /usr/local1/DEC/include
+
+# The zlib compression library. See above. You need it to build
+# anything that needs the PNG library (see above). If you selected
+# NONE for the PNG library, it doesn't matter what you specify here --
+# it won't get used.
+#
+# If you have 'libpng-config' (see above), these are irrelevant.
+
+ZLIB = NONE
+ZHDR_DIR =
+#ZLIB = libz.so
+
+# The JBIG lossless image compression library (aka JBIG-KIT):
+
+JBIGLIB = $(BUILDDIR)/converter/other/jbig/libjbig.a
+JBIGHDR_DIR = $(SRCDIR)/converter/other/jbig
+
+# The Jasper JPEG-2000 image compression library (aka JasPer):
+JASPERLIB = $(INTERNAL_JASPERLIB)
+JASPERHDR_DIR = $(INTERNAL_JASPERHDR_DIR)
+# JASPERDEPLIBS is the libraries (-l options or file names) on which
+# The Jasper library depends -- i.e. what you have to link into any
+# executable that links in the Jasper library.
+JASPERDEPLIBS =
+#JASPERDEPLIBS = -ljpeg
+
+# And the Utah Raster Toolkit (aka URT aka RLE) library:
+
+URTLIB = $(BUILDDIR)/urt/librle.a
+URTHDR_DIR = $(SRCDIR)/urt
+
+# The X11 library has facilities for talking to an X Window System
+# server. It is required by Pamx.
+
+X11LIB = NONE
+X11HDR_DIR =
+
+#X11LIB = /usr/lib/libX11.so
+#X11HDR_DIR =
+
+# The Linux SVGA library (Svgalib) is a facility for displaying graphics
+# on the Linux console. It is required by Ppmsvgalib.
+
+LINUXSVGALIB = NONE
+LINUXSVGAHDR_DIR =
+
+#LINUXSVGALIB = /usr/lib/libvga.so
+#LINUXSVGAHDR_DIR = /usr/include/vgalib
+
+# If you don't want any network functions, set OMIT_NETWORK to "y".
+# The only thing that requires network functions is the option in
+# ppmtompeg to run it on multiple computers simultaneously. On some
+# systems network functions don't work or we haven't figured out how to
+# make them work, or they just aren't worth the effort.
+OMIT_NETWORK =
+#DJGPP/Windows, Tru64:
+# (there's some minor header problem that prevents network functions from
+# building on Tru64 2000.10.06)
+#OMIT_NETWORK = y
+
+# These are -l options to link in the network libraries. Often, these are
+# built into the standard C library, so this can be null. This is irrelevant
+# if OMIT_NETWORK is "y".
+
+NETWORKLD =
+# Solaris, SunOS:
+#NETWORKLD = -lsocket -lnsl
+# SCO:
+#NETWORKLD = -lsocket, -lresolv
+
+VMS =
+#VMS:
+#VMS = yes
+
+# DONT_HAVE_PROCESS_MGMT is Y if this system doesn't have the usual
+# Unix process management stuff - fork, wait, etc. N for a regular Unix
+# system.
+DONT_HAVE_PROCESS_MGMT = N
+
+# The following variables are used only by 'make install' (and the
+# variants of it). Paths here don't, for example, get built into any
+# programs.
+
+# This is where everything goes when you do 'make package', unless you
+# override it by setting 'pkgdir' on the Make command line.
+PKGDIR_DEFAULT = /tmp/netpbm
+
+# Subdirectory of the package directory ($(pkgdir)) in which man pages
+# go.
+PKGMANDIR = man
+
+# File permissions for installed files.
+# Note that on some systems (e.g. Solaris), 'install' can't use the
+# mnemonic permissions - you have to use octal.
+
+# binaries (pbmmake, etc)
+INSTALL_PERM_BIN = 755 # u=rwx,go=rx
+# shared libraries (libpbm.so, etc)
+INSTALL_PERM_LIBD = 755 # u=rwx,go=rx
+# static libraries (libpbm.a, etc)
+INSTALL_PERM_LIBS = 644 # u=rw,go=r
+# header files (pbm.h, etc)
+INSTALL_PERM_HDR = 644 # u=rw,go=r
+# man pages (pbmmake.1, etc)
+INSTALL_PERM_MAN = 644 # u=rw,go=r
+# data files (pnmtopalm color maps, etc)
+INSTALL_PERM_DATA = 644 # u=rw,go=r
+
+# Specify the suffix that want the man pages to have.
+
+SUFFIXMANUALS1 = 1
+SUFFIXMANUALS3 = 3
+SUFFIXMANUALS5 = 5
+
+#NETPBMLIBTYPE tells the kind of libraries that will get built to hold the
+#Netpbm library functions. The value is used only in make file tests.
+# "unixshared" means a unix-style shared library, typically named like
+# libxyz.so.2.3
+NETPBMLIBTYPE = unixshared
+# "unixstatic" means a unix-style static library, (like libxyz.a)
+#NETPBMLIBTYPE = unixstatic
+# "dll" means a Windows DLL shared library
+#NETPBMLIBTYPE = dll
+# "dylib" means a Darwin/Mac OS shared library
+#NETPBMLIBTYPE = dylib
+
+#NETPBMLIBSUFFIX is the suffix used on whatever kind of library is
+#selected above. All this is used for is to construct library names.
+#The make files never examine the actual value.
+NETPBMLIBSUFFIX = so
+
+# "a" is the suffix for unix-style static libraries. It is also
+# traditionally used for shared libraries on AIX. The Visual Age C
+# manual says sometimes .so works on AIX, and GNU software for AIX
+# 5.1.0 does indeed use it. In our experiments, it works fine if you
+# name the library file explicitly on the link, but isn't in the -l
+# search order. If you name the library explicitly on the link, the
+# library must live in exactly the same position at run time, so we
+# can't use that. Therefore, you cannot build both static and shared
+# libraries with AIX. You have to choose.
+#NETPBMLIBSUFFIX = a
+# For HP-UX shared libraries:
+#NETPBMLIBSUFFIX = sl
+# Darwin/Mac OS shared library:
+#NETPBMLIBSUFFIX = dylib
+# Windows shared library:
+#NETPBMLIBSUFFIX = dll
+
+#STATICLIB_TOO is "y" to signify that you want a static library built
+#and installed in addition to whatever library type you specified by
+#NETPBMLIBTYPE. If NETPBMLIBTYPE specified a static library,
+#STATICLIB_TOO simply has no effect.
+STATICLIB_TOO = y
+#STATICLIB_TOO = n
+
+#STATICLIBSUFFIX is the suffix that static libraries have. It's
+#meaningless if you aren't building static libraries.
+STATICLIBSUFFIX = a
+
+#SHLIBPREFIXLIST is a blank-delimited list of prefixes that a filename
+#of a shared library may have on this system. Traditionally, it's
+#just "lib", as in libc or libnetpbm. On Windows, though, varying
+#prefixes are used when multiple alternative forms of a library are
+#available. The first prefix in this list is what we use to name the
+#Netpbm shared libraries.
+#
+# This variable controls how 'libopt' gets built.
+#
+SHLIBPREFIXLIST = lib
+#Cygwin:
+#SHLIBPREFIXLIST = cyg lib
+
+NETPBMSHLIBPREFIX = $(firstword $(SHLIBPREFIXLIST))
+
+#DLLVER is used to version the DLLs built on cygwin or other
+#windowsish platforms. We can't add this to LIBROOT, or we'd
+#version the static libs (which is bad). We can't add this
+#at the end of the name (like unix does with so numbers) because
+#windows will only load dlls whose name ends in "dll". So,
+#we have this variable, which becomes the end of the library "root" name
+#for DLLs only.
+#
+# This variable controls how 'libopt' gets built.
+#
+DLLVER =
+#Cygwin
+#DLLVER = $(NETPBM_MAJOR_RELEASE)
+
+#NETPBM_DOCURL is the URL of the main documentation page for Netpbm.
+#This is a directory which contains a file for each Netpbm program,
+#library, and file type. E.g. The documentation for jpegtopnm might be in
+#http://netpbm.sourceforge.net/doc/jpegtopnm.html . This value gets
+#installed in the man pages (which say no more than to read the webpage)
+#and in the Webman netpbm.url file.
+NETPBM_DOCURL = http://netpbm.sourceforge.net/doc/
+#For a system with no web access, but a local copy of the doc:
+#NETPBM_DOCURL = file:/usr/doc/netpbm/
+
+
+
+
+
+####Lines above were copied from config.mk.in by 'configure'.
+####Lines below were added by 'configure' based on the GNU platform.
+DEFAULT_TARGET = nonmerge
+NETPBMLIBTYPE=unixshared
+NETPBMLIBSUFFIX=so
+STATICLIB_TOO=n
+CFLAGS = -O3 -ffast-math -pedantic -fno-common -Wall -Wno-uninitialized -Wmissing-declarations -Wimplicit -Wwrite-strings -Wmissing-prototypes -Wundef
+CFLAGS_MERGE = -Wno-missing-declarations -Wno-missing-prototypes
+LDRELOC = ld --reloc
+LINKER_CAN_DO_EXPLICIT_LIBRARY=Y
+LINKERISCOMPILER = Y
+CFLAGS_SHLIB += -fPIC
+TIFFLIB = libtiff.so
+JPEGLIB = libjpeg.so
+ZLIB = libz.so
+X11LIB = libX11.so
+LINUXSVGALIB = libvga.so
+NETPBM_DOCURL = http://netpbm.sourceforge.net/doc/
diff --git a/source/l/netpbm/netpbm.SlackBuild b/source/l/netpbm/netpbm.SlackBuild
index 0b6685c12..fedaffddb 100755
--- a/source/l/netpbm/netpbm.SlackBuild
+++ b/source/l/netpbm/netpbm.SlackBuild
@@ -22,10 +22,18 @@
PKGNAM=netpbm
-VERSION=${VERSION:-10.35.22}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
-
+VERSION=${VERSION:-10.49.02}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -36,6 +44,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -46,7 +57,7 @@ mkdir -p $TMP # Do not create $PKG or 'make package' fails
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
@@ -59,10 +70,10 @@ find . \
# Configure:
if [ "$ARCH" = "x86_64" ]; then
- zcat $CWD/Makefile.config.gz \
- | sed -e '/^CFLAGS/s/^CFLAGS = .*/& -fPIC/' > Makefile.config
+ zcat $CWD/config.mk.gz \
+ | sed -e '/^CFLAGS/s/^CFLAGS = .*/& -fPIC/' > config.mk
else
- zcat $CWD/Makefile.config.gz > Makefile.config
+ zcat $CWD/config.mk.gz > config.mk
fi
# Build and install (does not like parallel build):
@@ -109,9 +120,14 @@ fi
# Add a documentation directory:
( cd doc
cp -a \
- COPYRIGHT.PATENT GPL_LICENSE.txt HISTORY INSTALL Netpbm.programming \
+ COPYRIGHT.PATENT GPL_LICENSE.txt INSTALL Netpbm.programming \
README* USERDOC copyright_summary lgpl_v21.txt \
$PKG/usr/doc/${PKGNAM}-$VERSION
+ if [ -r HISTORY ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat HISTORY | head -n 1000 > $DOCSDIR/HISTORY
+ touch -r HISTORY $DOCSDIR/HISTORY
+ fi
)
mkdir -p $PKG/install
diff --git a/source/l/notify-python/notify-python.SlackBuild b/source/l/notify-python/notify-python.SlackBuild
new file mode 100755
index 000000000..97ce72183
--- /dev/null
+++ b/source/l/notify-python/notify-python.SlackBuild
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+# Slackware build script for notify-python
+
+# Copyright 2009 Erik W. Hanson, Minneapolis, MN, USA
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=notify-python
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
+chown -R root:root .
+chmod -R u+w,go+r-w,a-s .
+
+# Fix http://trac.galago-project.org/ticket/121
+rm -f src/pynotify.c
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --build=$ARCH-slackware-linux
+
+make || exit 1
+make install-strip DESTDIR=$PKG || exit 1
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING INSTALL NEWS README \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/notify-python/slack-desc b/source/l/notify-python/slack-desc
new file mode 100644
index 000000000..3d52503b4
--- /dev/null
+++ b/source/l/notify-python/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-------------------------------------------------------|
+notify-python: notify-python (Python bindings for libnotify)
+notify-python:
+notify-python: The notify-python package contains bindings to use libnotify with
+notify-python: Python programs.
+notify-python:
+notify-python: Homepage for notify-python: http://www.galago-project.org/
+notify-python:
+notify-python:
+notify-python:
+notify-python:
+notify-python:
diff --git a/source/l/pango/pango.SlackBuild b/source/l/pango/pango.SlackBuild
index 79234a741..1ebe74383 100755
--- a/source/l/pango/pango.SlackBuild
+++ b/source/l/pango/pango.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,13 +20,21 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-VERSION=1.22.4
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-4}
+VERSION=${VERSION:-$(echo pango-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -36,18 +44,23 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-pango
+
rm -rf $PKG
mkdir -p $TMP $PKG/usr
-
cd $TMP
rm -rf pango-$VERSION
-tar xvf $CWD/pango-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/pango-$VERSION.tar.?z* || exit 1
+
cd pango-$VERSION
+
# Fix for x86_64 (does not hurt the other archs but note that we will start
# using /etc/pango/$host instead of /etc/pango/ now):
zcat $CWD/pango.etc.host.location.diff.gz | patch -p1 --verbose || exit 1
diff --git a/source/l/parted/parted.SlackBuild b/source/l/parted/parted.SlackBuild
index e4a9e5926..27e02b557 100755
--- a/source/l/parted/parted.SlackBuild
+++ b/source/l/parted/parted.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,16 +22,24 @@
PKGNAM=parted
-VERSION=${VERSION:-1.8.8}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-march=i486 -mtune=i686 -fgnu89-inline"
@@ -42,14 +50,19 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC -fgnu89-inline"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z || exit 1
cd ${PKGNAM}-$VERSION
-zcat $CWD/parted.configure.diff.gz | patch -p0 --verbose --backup --suffix=.orig || exit 1
+zcat $CWD/parted.configure.diff.gz | patch -p1 || exit 1
# Make sure ownerships and permissions are sane:
chown -R root:root .
@@ -76,8 +89,10 @@ make install DESTDIR=$PKG
# Strip binaries:
( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
)
# Compress and link manpages, if any:
@@ -110,6 +125,14 @@ cp -a \
doc/{API,FAT} doc/USER.jp \
$PKG/usr/doc/parted-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/parted/parted.SlackBuild.static b/source/l/parted/parted.SlackBuild.static
index 4c89bbb04..feb3b3611 100755
--- a/source/l/parted/parted.SlackBuild.static
+++ b/source/l/parted/parted.SlackBuild.static
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,17 +20,26 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
PKGNAM=parted
-VERSION=${VERSION:-1.8.8}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:" -j7 "}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-march=i486 -mtune=i686 -fgnu89-inline"
@@ -41,14 +50,19 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC -fgnu89-inline"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z || exit 1
cd ${PKGNAM}-$VERSION
-zcat $CWD/parted.configure.diff.gz | patch -p0 --verbose --backup --suffix=.orig || exit 1
+zcat $CWD/parted.configure.diff.gz | patch -p1 || exit 1
# Make sure ownerships and permissions are sane:
chown -R root:root .
@@ -66,17 +80,19 @@ CFLAGS="$SLKCFLAGS" \
--infodir=/usr/info \
--enable-shared=no \
--enable-static=yes \
- --with-readline \
--enable-device-mapper=yes \
+ --with-readline \
--build=$ARCH-slackware-linux
-CFLAGS="$SLKCFLAGS" make $NUMJOBS || make || exit 1
+make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG
# Strip binaries:
( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
)
# Compress and link manpages, if any:
@@ -109,10 +125,18 @@ cp -a \
doc/{API,FAT} doc/USER.jp \
$PKG/usr/doc/parted-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
# Build the package:
cd $PKG
-/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.tgz
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/parted/parted.configure.diff b/source/l/parted/parted.configure.diff
index 3d139f077..649a4b3af 100644
--- a/source/l/parted/parted.configure.diff
+++ b/source/l/parted/parted.configure.diff
@@ -1,11 +1,12 @@
---- configure.old 2007-03-20 14:46:50.000000000 -0300
-+++ configure 2007-04-22 19:03:04.000000000 -0300
-@@ -12315,7 +12315,7 @@
+diff -Nur parted-2.1.orig/configure parted-2.1/configure
+--- parted-2.1.orig/configure 2009-12-20 05:51:57.000000000 -0600
++++ parted-2.1/configure 2009-12-22 21:51:44.828799616 -0600
+@@ -13217,7 +13217,7 @@
# native cc issues annoying warnings and then ignores it,
# which would cause us to incorrectly conclude that it worked.
for gl_flags in \
-- '-Wl,--as-needed' \
-+ '-Wl,--no-as-needed' \
- '-Wl,-z,ignore' \
- '-z ignore'
+- '-Wl,--as-needed' \
++ '-Wl,--no-as-needed' \
+ '-Wl,-z,ignore' \
+ '-z ignore'
do
diff --git a/source/l/pcre/pcre.SlackBuild b/source/l/pcre/pcre.SlackBuild
index dd0723192..0b5893504 100755
--- a/source/l/pcre/pcre.SlackBuild
+++ b/source/l/pcre/pcre.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=7.7
-ARCH=${ARCH:-x86_64}
+PKGNAM=pcre
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -36,6 +46,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -51,6 +64,7 @@ tar xvf $CWD/pcre-$VERSION.tar.bz2 || exit 1
cd pcre-$VERSION
chown -R root:root .
+
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
@@ -91,17 +105,24 @@ if [ -d $PKG/usr/man ]; then
)
fi
-mkdir -p $PKG/usr/doc/pcre-$VERSION
-cp -a \
- AUTHORS COPYING INSTALL LICENCE NEWS NON-UNIX-USE README \
- $PKG/usr/doc/pcre-$VERSION
-cd doc
-cp -a Tech.Notes html $PKG/usr/doc/pcre-$VERSION
-chown -R root:root $PKG/usr/doc/pcre-$VERSION
# Eliminate redundant docs:
rm -rf $PKG/usr/share/doc
rmdir $PKG/usr/share
+mkdir -p $PKG/usr/doc/pcre-$VERSION
+cp -a \
+ AUTHORS COPYING* INSTALL HACKING LICENCE NEWS NON-UNIX-USE README* \
+ $PKG/usr/doc/pcre-$VERSION
+( cd doc ; cp -a Tech.Notes html $PKG/usr/doc/pcre-$VERSION )
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/phonon/phonon.SlackBuild b/source/l/phonon/phonon.SlackBuild
index 9afb84002..74e4518c7 100755
--- a/source/l/phonon/phonon.SlackBuild
+++ b/source/l/phonon/phonon.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2008 Robby Workman, Northport, Alabama, USA
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,12 +22,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=4.3.1
-ARCH=${ARCH:-x86_64}
+VERSION=4.4.1
+SRCVER=4.4.1
BUILD=${BUILD:-1}
-
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-phonon
@@ -41,13 +50,20 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
+rm -r phonon-$SRCVER
tar xvf $CWD/phonon-$VERSION.tar.bz2 || exit 1
-cd phonon-$VERSION || exit 1
+cd phonon-$SRCVER || exit 1
+
+#zcat $CWD/phonon.gstreamer.qt-4.5.1.diff.gz | patch -p1 || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -55,16 +71,21 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-cmake \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DMAN_INSTALL_DIR=/usr/man \
- -DLIB_SUFFIX=${LIBDIRSUFFIX} \
- .
+mkdir build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ ..
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
+cd -
+
+# PyQT won't find the header files otherwise:
+sed -i -e 's#{includedir}$#& -I\${includedir}/phonon#' $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/phonon.pc
# Compress and link manpages, if any:
if [ -d $PKG/usr/man ]; then
diff --git a/source/l/phonon/phonon.gstreamer.qt-4.5.1.diff b/source/l/phonon/phonon.gstreamer.qt-4.5.1.diff
new file mode 100644
index 000000000..d55d2f88d
--- /dev/null
+++ b/source/l/phonon/phonon.gstreamer.qt-4.5.1.diff
@@ -0,0 +1,431 @@
+diff -u -r --new-file phonon-4.3.1.orig/gstreamer/CMakeLists.txt phonon-4.3.1/gstreamer/CMakeLists.txt
+--- phonon-4.3.1.orig/gstreamer/CMakeLists.txt 2009-02-27 04:15:42.000000000 -0600
++++ phonon-4.3.1/gstreamer/CMakeLists.txt 2009-10-19 13:07:39.000000000 -0500
+@@ -1,4 +1,4 @@
+-# Copyright (C) 2009 Nokia Corporation. All rights reserved.
++# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ # Copyright (C) 2008 Matthias Kretz <kretz@kde.org>
+ #
+ # This library is free software: you can redistribute it and/or modify
+@@ -19,7 +19,6 @@
+ if (BUILD_PHONON_GSTREAMER)
+ include_directories(${GSTREAMER_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR}
+ ${LIBXML2_INCLUDE_DIR})
+- add_definitions(-DPHONON_BACKEND_VERSION_4_2)
+
+ set(phonon_gstreamer_SRCS
+ audiooutput.cpp
+@@ -46,17 +45,17 @@
+ )
+
+ find_package(Alsa)
+- macro_ensure_version("0.10.22" ${GSTREAMER_VERSION} GSTREAMER_HAS_NONBLOCKING_ALSASINK)
+- if(ALSA_FOUND AND NOT GSTREAMER_HAS_NONBLOCKING_ALSASINK)
++ if(ALSA_FOUND)
+ add_definitions(-DUSE_ALSASINK2)
+ include_directories(${ALSA_INCLUDES})
+ set(phonon_gstreamer_SRCS
+ ${phonon_gstreamer_SRCS}
+ alsasink2.c
+ )
+- endif(ALSA_FOUND AND NOT GSTREAMER_HAS_NONBLOCKING_ALSASINK)
++ endif(ALSA_FOUND)
+
+- automoc4_add_library(phonon_gstreamer SHARED ${phonon_gstreamer_SRCS})
++ automoc4(phonon_gstreamer phonon_gstreamer_SRCS)
++ add_library(phonon_gstreamer SHARED ${phonon_gstreamer_SRCS})
+ set_target_properties(phonon_gstreamer PROPERTIES PREFIX "")
+ target_link_libraries(phonon_gstreamer
+ ${QT_QTOPENGL_LIBRARY}
+diff -u -r --new-file phonon-4.3.1.orig/gstreamer/ConfigureChecks.cmake phonon-4.3.1/gstreamer/ConfigureChecks.cmake
+--- phonon-4.3.1.orig/gstreamer/ConfigureChecks.cmake 2009-02-27 04:15:42.000000000 -0600
++++ phonon-4.3.1/gstreamer/ConfigureChecks.cmake 2009-10-19 13:07:39.000000000 -0500
+@@ -1,4 +1,4 @@
+-# Copyright (C) 2009 Nokia Corporation. All rights reserved.
++# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ #
+ # This library is free software: you can redistribute it and/or modify
+ # it under the terms of the GNU Lesser General Public License as published by
+@@ -17,7 +17,6 @@
+
+ macro_optional_find_package(GStreamerPlugins)
+ macro_log_feature(GSTREAMER_PLUGIN_VIDEO_LIBRARIES "GStreamer video plugin" "The gstreamer video plugin (part of gstreamer-plugins-base 0.10) is required for the multimedia gstreamer backend" "http://gstreamer.freedesktop.org/modules/" FALSE "0.10")
+-macro_log_feature(GSTREAMER_PLUGIN_AUDIO_LIBRARIES "GStreamer audio plugin" "The gstreamer audio plugin (part of gstreamer-plugins-base 0.10) is required for the multimedia gstreamer backend" "http://gstreamer.freedesktop.org/modules/" FALSE "0.10")
+
+ macro_optional_find_package(GLIB2)
+ macro_log_feature(GLIB2_FOUND "GLib2" "GLib 2 is required to compile the gstreamer backend for Phonon" "http://www.gtk.org/download/" FALSE)
+@@ -31,8 +30,8 @@
+ macro_optional_find_package(OpenGL)
+ macro_log_feature(OPENGL_FOUND "OpenGL" "OpenGL support is required to compile the gstreamer backend for Phonon" "" FALSE)
+
+-if (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GSTREAMER_PLUGIN_AUDIO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
++if (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
+ set(BUILD_PHONON_GSTREAMER TRUE)
+-else (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GSTREAMER_PLUGIN_AUDIO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
++else (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
+ set(BUILD_PHONON_GSTREAMER FALSE)
+-endif (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GSTREAMER_PLUGIN_AUDIO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
++endif (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
+diff -u -r --new-file phonon-4.3.1.orig/gstreamer/audiooutput.cpp phonon-4.3.1/gstreamer/audiooutput.cpp
+--- phonon-4.3.1.orig/gstreamer/audiooutput.cpp 2009-02-27 04:15:42.000000000 -0600
++++ phonon-4.3.1/gstreamer/audiooutput.cpp 2009-10-19 13:07:39.000000000 -0500
+@@ -42,6 +42,7 @@
+ static int count = 0;
+ m_name = "AudioOutput" + QString::number(count++);
+ if (m_backend->isValid()) {
++ g_set_application_name(qApp->applicationName().toUtf8());
+ m_audioBin = gst_bin_new (NULL);
+ gst_object_ref (GST_OBJECT (m_audioBin));
+ gst_object_sink (GST_OBJECT (m_audioBin));
+diff -u -r --new-file phonon-4.3.1.orig/gstreamer/mediaobject.cpp phonon-4.3.1/gstreamer/mediaobject.cpp
+--- phonon-4.3.1.orig/gstreamer/mediaobject.cpp 2009-02-27 04:15:42.000000000 -0600
++++ phonon-4.3.1/gstreamer/mediaobject.cpp 2009-10-19 13:19:20.000000000 -0500
+@@ -14,7 +14,6 @@
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+-
+ #include <cmath>
+ #include <gst/interfaces/propertyprobe.h>
+ #include "common.h"
+@@ -24,7 +23,6 @@
+ #include "backend.h"
+ #include "streamreader.h"
+ #include "phononsrc.h"
+-
+ #include <QtCore>
+ #include <QtCore/QTimer>
+ #include <QtCore/QVector>
+@@ -78,6 +76,9 @@
+ , m_videoGraph(0)
+ , m_previousTickTime(-1)
+ , m_resetNeeded(false)
++ , m_autoplayTitles(true)
++ , m_availableTitles(0)
++ , m_currentTitle(1)
+ {
+ qRegisterMetaType<GstCaps*>("GstCaps*");
+ qRegisterMetaType<State>("State");
+@@ -141,9 +142,9 @@
+ if (m_resumeState)
+ return;
+
+- if (m_state == Phonon::PlayingState || m_state == Phonon::PausedState) {
++ if (m_pendingState == Phonon::PlayingState || m_pendingState == Phonon::PausedState) {
+ m_resumeState = true;
+- m_oldState = m_state;
++ m_oldState = m_pendingState;
+ m_oldPos = getPipelinePos();
+ }
+ }
+@@ -347,11 +348,8 @@
+ *
+ * returns true if successful
+ */
+-bool MediaObject::createPipefromURL(const QString &encodedUrl)
++bool MediaObject::createPipefromURL(const QUrl &url)
+ {
+- // Convert back to URL
+- QUrl url(encodedUrl, QUrl::StrictMode);
+-
+ // Remove any existing data source
+ if (m_datasource) {
+ gst_bin_remove(GST_BIN(m_pipeline), m_datasource);
+@@ -361,7 +359,7 @@
+
+ // Verify that the uri can be parsed
+ if (!url.isValid()) {
+- m_backend->logMessage(QString("%1 is not a valid URI").arg(encodedUrl));
++ m_backend->logMessage(QString("%1 is not a valid URI").arg(url.toString()));
+ return false;
+ }
+
+@@ -875,8 +873,7 @@
+
+ switch (source.type()) {
+ case MediaSource::Url: {
+- QString urlString = source.url().toEncoded();
+- if (createPipefromURL(urlString))
++ if (createPipefromURL(source.url()))
+ m_loading = true;
+ else
+ setError(tr("Could not open media source."));
+@@ -884,8 +881,7 @@
+ break;
+
+ case MediaSource::LocalFile: {
+- QString urlString = QUrl::fromLocalFile(source.fileName()).toString();
+- if (createPipefromURL(urlString))
++ if (createPipefromURL(QUrl::fromLocalFile(source.fileName())))
+ m_loading = true;
+ else
+ setError(tr("Could not open media source."));
+@@ -907,8 +903,13 @@
+ break;
+
+ case MediaSource::Disc: // CD tracks can be specified by setting the url in the following way uri=cdda:4
+- m_backend->logMessage("Source type Disc not currently supported", Backend::Warning, this);
+- setError(tr("Could not open media source."), Phonon::NormalError);
++ {
++ QUrl cdurl(QLatin1String("cdda://"));
++ if (createPipefromURL(cdurl))
++ m_loading = true;
++ else
++ setError(tr("Could not open media source."));
++ }
+ break;
+
+ default:
+@@ -959,6 +960,19 @@
+ m_hasVideo = m_videoStreamFound;
+ emit hasVideoChanged(m_hasVideo);
+ }
++
++ m_availableTitles = 1;
++ gint64 titleCount;
++ GstFormat format = gst_format_get_by_nick("track");
++ if (gst_element_query_duration (m_pipeline, &format, &titleCount)) {
++ int oldAvailableTitles = m_availableTitles;
++ m_availableTitles = (int)titleCount;
++ if (m_availableTitles != oldAvailableTitles) {
++ emit availableTitlesChanged(m_availableTitles);
++ m_backend->logMessage(QString("Available titles changed: %0").arg(m_availableTitles), Backend::Info, this);
++ }
++ }
++
+ }
+
+ void MediaObject::setPrefinishMark(qint32 newPrefinishMark)
+@@ -1356,6 +1370,13 @@
+ if (!m_seekable)
+ m_atEndOfStream = true;
+
++ if (m_autoplayTitles &&
++ m_availableTitles > 1 &&
++ m_currentTitle < m_availableTitles) {
++ _iface_setCurrentTitle(m_currentTitle + 1);
++ return;
++ }
++
+ if (m_nextSource.type() != MediaSource::Invalid
+ && m_nextSource.type() != MediaSource::Empty) { // We only emit finish when the queue is actually empty
+ QTimer::singleShot (qMax(0, transitionTime()), this, SLOT(beginPlay()));
+@@ -1384,6 +1405,72 @@
+ notify(&event);
+ }
+
++#ifndef QT_NO_PHONON_MEDIACONTROLLER
++//interface management
++bool MediaObject::hasInterface(Interface iface) const
++{
++ return iface == AddonInterface::TitleInterface;
++}
++
++QVariant MediaObject::interfaceCall(Interface iface, int command, const QList<QVariant> &params)
++{
++ if (hasInterface(iface)) {
++
++ switch (iface)
++ {
++ case TitleInterface:
++ switch (command)
++ {
++ case availableTitles:
++ return _iface_availableTitles();
++ case title:
++ return _iface_currentTitle();
++ case setTitle:
++ _iface_setCurrentTitle(params.first().toInt());
++ break;
++ case autoplayTitles:
++ return m_autoplayTitles;
++ case setAutoplayTitles:
++ m_autoplayTitles = params.first().toBool();
++ break;
++ }
++ break;
++ default:
++ break;
++ }
++ }
++ return QVariant();
++}
++#endif
++
++int MediaObject::_iface_availableTitles() const
++{
++ return m_availableTitles;
++}
++
++int MediaObject::_iface_currentTitle() const
++{
++ return m_currentTitle;
++}
++
++void MediaObject::_iface_setCurrentTitle(int title)
++{
++ GstFormat trackFormat = gst_format_get_by_nick("track");
++ m_backend->logMessage(QString("setCurrentTitle %0").arg(title), Backend::Info, this);
++ if ((title == m_currentTitle) || (title < 1) || (title > m_availableTitles))
++ return;
++
++ m_currentTitle = title;
++
++ //let's seek to the beginning of the song
++ if (gst_element_seek_simple(m_pipeline, trackFormat, GST_SEEK_FLAG_FLUSH, m_currentTitle - 1)) {
++ updateTotalTime();
++ m_atEndOfStream = false;
++ emit titleChanged(title);
++ emit totalTimeChanged(totalTime());
++ }
++}
++
+ } // ns Gstreamer
+ } // ns Phonon
+
+diff -u -r --new-file phonon-4.3.1.orig/gstreamer/mediaobject.h phonon-4.3.1/gstreamer/mediaobject.h
+--- phonon-4.3.1.orig/gstreamer/mediaobject.h 2009-02-27 04:15:42.000000000 -0600
++++ phonon-4.3.1/gstreamer/mediaobject.h 2009-10-19 13:07:39.000000000 -0500
+@@ -21,7 +21,6 @@
+ #include "backend.h"
+ #include "common.h"
+ #include "medianode.h"
+-
+ #include <phonon/mediaobjectinterface.h>
+ #include <phonon/addoninterface.h>
+
+@@ -32,7 +31,6 @@
+ #include <QtCore/QDate>
+ #include <QtCore/QEvent>
+ #include <QtCore/QUrl>
+-
+ #include <gst/gst.h>
+
+ QT_BEGIN_NAMESPACE
+@@ -50,11 +48,20 @@
+ class VideoPath;
+ class AudioOutput;
+
+-class MediaObject : public QObject, public MediaObjectInterface, public AddonInterface, public MediaNode
++class MediaObject : public QObject, public MediaObjectInterface
++#ifndef QT_NO_PHONON_MEDIACONTROLLER
++ , public AddonInterface
++#endif
++ , public MediaNode
+ {
+ friend class Stream;
+ Q_OBJECT
+- Q_INTERFACES(Phonon::MediaObjectInterface Phonon::AddonInterface Phonon::Gstreamer::MediaNode)
++ Q_INTERFACES(Phonon::MediaObjectInterface
++#ifndef QT_NO_PHONON_MEDIACONTROLLER
++ Phonon::AddonInterface
++#endif
++ Phonon::Gstreamer::MediaNode
++ )
+
+ public:
+
+@@ -93,16 +100,10 @@
+ MediaSource source() const;
+
+ // No additional interfaces currently supported
+- bool hasInterface(Interface) const
+- {
+- return false;
+- }
+-
+- QVariant interfaceCall(Interface, int, const QList<QVariant> &)
+- {
+- return QVariant();
+- }
+-
++#ifndef QT_NO_PHONON_MEDIACONTROLLER
++ bool hasInterface(Interface) const;
++ QVariant interfaceCall(Interface, int, const QList<QVariant> &);
++#endif
+ bool isLoading()
+ {
+ return m_loading;
+@@ -176,6 +177,19 @@
+ QMultiMap<QString, QString> metaData();
+ void setMetaData(QMultiMap<QString, QString> newData);
+
++ // AddonInterface:
++ void titleChanged(int);
++ void availableTitlesChanged(int);
++
++ // Not implemented
++ void chapterChanged(int);
++ void availableChaptersChanged(int);
++ void angleChanged(int);
++ void availableAnglesChanged(int);
++
++ void availableSubtitlesChanged();
++ void availableAudioChannelsChanged();
++
+ protected:
+ void beginLoad();
+ void loadingComplete();
+@@ -185,7 +199,7 @@
+ /*
+ * @param encodedUrl percent-encoded QString for source compat reasons. Should change to QUrl
+ */
+- bool createPipefromURL(const QString &encodedUrl);
++ bool createPipefromURL(const QUrl &url);
+ bool createPipefromStream(const MediaSource &);
+
+ private Q_SLOTS:
+@@ -219,6 +233,10 @@
+ void updateSeekable();
+ qint64 getPipelinePos() const;
+
++ int _iface_availableTitles() const;
++ int _iface_currentTitle() const;
++ void _iface_setCurrentTitle(int title);
++
+ bool m_resumeState;
+ State m_oldState;
+ quint64 m_oldPos;
+@@ -264,6 +282,9 @@
+ bool m_resetNeeded;
+ QStringList m_missingCodecs;
+ QMultiMap<QString, QString> m_metaData;
++ bool m_autoplayTitles;
++ int m_availableTitles;
++ int m_currentTitle;
+ };
+ }
+ } //namespace Phonon::Gstreamer
+diff -u -r --new-file phonon-4.3.1.orig/gstreamer/qwidgetvideosink.h phonon-4.3.1/gstreamer/qwidgetvideosink.h
+--- phonon-4.3.1.orig/gstreamer/qwidgetvideosink.h 2009-02-27 04:15:42.000000000 -0600
++++ phonon-4.3.1/gstreamer/qwidgetvideosink.h 2009-10-19 13:07:39.000000000 -0500
+@@ -19,7 +19,6 @@
+ #define Phonon_GSTREAMER_VIDEOSINK_H
+
+ #include "common.h"
+-#include "qwidgetvideosink.h"
+
+ #include <QtCore/QByteArray>
+ #include <QtCore/QEvent>
+diff -u -r --new-file phonon-4.3.1.orig/gstreamer/videowidget.h phonon-4.3.1/gstreamer/videowidget.h
+--- phonon-4.3.1.orig/gstreamer/videowidget.h 2009-02-27 04:15:42.000000000 -0600
++++ phonon-4.3.1/gstreamer/videowidget.h 2009-10-19 13:07:39.000000000 -0500
+@@ -25,7 +25,6 @@
+ #include "common.h"
+ #include "medianode.h"
+ #include "abstractrenderer.h"
+-#include "videowidget.h"
+
+ #include <gst/gst.h>
+
+diff -u -r --new-file phonon-4.3.1.orig/gstreamer/x11renderer.cpp phonon-4.3.1/gstreamer/x11renderer.cpp
+--- phonon-4.3.1.orig/gstreamer/x11renderer.cpp 2009-02-27 04:15:42.000000000 -0600
++++ phonon-4.3.1/gstreamer/x11renderer.cpp 2009-10-19 13:07:39.000000000 -0500
+@@ -138,7 +138,6 @@
+ void X11Renderer::movieSizeChanged(const QSize &movieSize)
+ {
+ Q_UNUSED(movieSize);
+-
+ if (m_renderWidget) {
+ m_renderWidget->setGeometry(m_videoWidget->calculateDrawFrameRect());
+ }
diff --git a/source/l/phonon/slack-desc b/source/l/phonon/slack-desc
index 9602f73b7..86e93b3e8 100644
--- a/source/l/phonon/slack-desc
+++ b/source/l/phonon/slack-desc
@@ -8,9 +8,9 @@
|-----handy-ruler------------------------------------------------------|
phonon: phonon (multimedia framework for KDE4)
phonon:
-phonon: Phonon is the multimedia framework for KDE4.
-phonon:
-phonon:
+phonon: Phonon is the multimedia framework for KDE4. This package contains
+phonon: the Phonon library, the KDE Phonon xine and gstreamer backends, and
+phonon: support files for using Phonon with KDE.
phonon:
phonon:
phonon:
diff --git a/source/l/pil/pil.SlackBuild b/source/l/pil/pil.SlackBuild
index c9c11c2da..76e3b959b 100755
--- a/source/l/pil/pil.SlackBuild
+++ b/source/l/pil/pil.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,10 +20,22 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.1.6
-ARCH=${ARCH:-x86_64}
+
+PKGNAM=pil
+ARCNAM=Imaging
+VERSION=${VERSION:-$(echo $ARCNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "${ARCH}" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -40,15 +52,15 @@ fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-pil
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf Imaging-$VERSION
-tar xvf $CWD/Imaging-$VERSION.tar.*z* || exit 1
-cd Imaging-$VERSION
+rm -rf $ARCNAM-$VERSION
+tar xvf $CWD/$ARCNAM-$VERSION.tar.*z* || exit 1
+cd $ARCNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -67,15 +79,23 @@ python setup.py install --root=$PKG || exit 1
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-mkdir -p $PKG/usr/doc/pil-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
- BUILDME CHANGES CONTENTS MANIFEST README \
- $PKG/usr/doc/pil-$VERSION
-cp -a Sane/README $PKG/usr/doc/pil-$VERSION/README.Sane
+ BUILDME CONTENTS MANIFEST README \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a Sane/README $PKG/usr/doc/$PKGNAM-$VERSION/README.Sane
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/pil-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/pilot-link/pilot-link.SlackBuild b/source/l/pilot-link/pilot-link.SlackBuild
index ca32428cc..c6dac9fa3 100755
--- a/source/l/pilot-link/pilot-link.SlackBuild
+++ b/source/l/pilot-link/pilot-link.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,9 +20,18 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-0.12.3}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-9}
+VERSION=${VERSION:-0.12.5}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -41,6 +50,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
@@ -48,6 +60,8 @@ rm -rf pilot-link-$VERSION
tar xvf $CWD/pilot-link-$VERSION.tar.bz2 || exit 1
cd pilot-link-$VERSION
+zcat $CWD/pilot-link.png14.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -102,9 +116,17 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
mkdir -p $PKG/usr/doc/pilot-link-$VERSION
cp -a \
- AUTHORS COPYING* INSTALL NEWS README \
+ AUTHORS COPYING* INSTALL NEWS README* \
$PKG/usr/doc/pilot-link-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
# Install man pages:
mkdir -p $PKG/usr/man/man{1,7}
cp -a doc/man/*.1 $PKG/usr/man/man1
diff --git a/source/l/pilot-link/pilot-link.png14.diff b/source/l/pilot-link/pilot-link.png14.diff
new file mode 100644
index 000000000..bc1cba25d
--- /dev/null
+++ b/source/l/pilot-link/pilot-link.png14.diff
@@ -0,0 +1,96 @@
+--- ./src/pilot-read-veo.c.orig 2007-02-04 17:06:03.000000000 -0600
++++ ./src/pilot-read-veo.c 2010-02-19 12:52:30.000000000 -0600
+@@ -41,10 +41,6 @@
+
+ #ifdef HAVE_PNG
+ # include "png.h"
+-# if (PNG_LIBPNG_VER < 10201)
+-# define png_voidp_NULL (png_voidp)NULL
+-# define png_error_ptr_NULL (png_error_ptr)NULL
+-# endif
+ #endif
+
+ #define pi_mktag(c1,c2,c3,c4) (((c1)<<24)|((c2)<<16)|((c3)<<8)|(c4))
+@@ -856,8 +852,8 @@
+ png_infop info_ptr;
+
+ png_ptr = png_create_write_struct
+- (PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+- png_error_ptr_NULL, png_error_ptr_NULL);
++ (PNG_LIBPNG_VER_STRING, NULL,
++ NULL, NULL);
+
+ if (!png_ptr)
+ return;
+--- ./src/pilot-read-notepad.c.orig 2007-02-04 17:06:02.000000000 -0600
++++ ./src/pilot-read-notepad.c 2010-02-19 12:53:03.000000000 -0600
+@@ -39,10 +39,6 @@
+
+ #ifdef HAVE_PNG
+ #include "png.h"
+-#if (PNG_LIBPNG_VER < 10201)
+- #define png_voidp_NULL (png_voidp)NULL
+- #define png_error_ptr_NULL (png_error_ptr)NULL
+-#endif
+ #endif
+
+ const char *progname;
+@@ -166,8 +162,8 @@
+ width = n->body.width + 8;
+
+ png_ptr = png_create_write_struct
+- ( PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+- png_error_ptr_NULL, png_error_ptr_NULL);
++ ( PNG_LIBPNG_VER_STRING, NULL,
++ NULL, NULL);
+
+ if(!png_ptr)
+ return;
+--- ./src/pilot-read-screenshot.c.orig 2006-11-02 08:54:31.000000000 -0600
++++ ./src/pilot-read-screenshot.c 2010-02-19 12:50:44.000000000 -0600
+@@ -40,10 +40,6 @@
+
+ #ifdef HAVE_PNG
+ # include "png.h"
+-# if (PNG_LIBPNG_VER < 10201)
+-# define png_voidp_NULL (png_voidp)NULL
+-# define png_error_ptr_NULL (png_error_ptr)NULL
+-# endif
+ #endif
+
+ #define pi_mktag(c1,c2,c3,c4) (((c1)<<24)|((c2)<<16)|((c3)<<8)|(c4))
+@@ -87,8 +83,8 @@
+ gray_buf = malloc( state->w );
+
+ png_ptr = png_create_write_struct
+- (PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+- png_error_ptr_NULL, png_error_ptr_NULL);
++ (PNG_LIBPNG_VER_STRING, NULL,
++ NULL, NULL);
+
+ if (!png_ptr)
+ return;
+--- ./src/pilot-read-palmpix.c.orig 2007-02-04 17:06:03.000000000 -0600
++++ ./src/pilot-read-palmpix.c 2010-02-19 12:51:10.000000000 -0600
+@@ -42,10 +42,6 @@
+
+ #ifdef HAVE_PNG
+ #include "png.h"
+-#if (PNG_LIBPNG_VER < 10201)
+- #define png_voidp_NULL (png_voidp)NULL
+- #define png_error_ptr_NULL (png_error_ptr)NULL
+-#endif
+ #endif
+
+ const char *progname;
+@@ -223,8 +219,8 @@
+ png_infop info_ptr;
+
+ png_ptr = png_create_write_struct
+- ( PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+- png_error_ptr_NULL, png_error_ptr_NULL);
++ ( PNG_LIBPNG_VER_STRING, NULL,
++ NULL, NULL);
+
+ if(!png_ptr)
+ return;
diff --git a/source/l/polkit-gnome/pkga.desktop-NotShowInKDE.diff b/source/l/polkit-gnome/pkga.desktop-NotShowInKDE.diff
new file mode 100644
index 000000000..997d1512e
--- /dev/null
+++ b/source/l/polkit-gnome/pkga.desktop-NotShowInKDE.diff
@@ -0,0 +1,9 @@
+diff -Nur polkit-gnome-0.95.orig//src/polkit-gnome-authentication-agent-1.desktop.in.in polkit-gnome-0.95/src/polkit-gnome-authentication-agent-1.desktop.in.in
+--- polkit-gnome-0.95.orig//src/polkit-gnome-authentication-agent-1.desktop.in.in 2009-07-20 18:28:31.000000000 -0500
++++ polkit-gnome-0.95/src/polkit-gnome-authentication-agent-1.desktop.in.in 2010-05-03 01:03:47.021291164 -0500
+@@ -5,4 +5,4 @@
+ Terminal=false
+ Type=Application
+ Categories=
+-OnlyShowIn=GNOME;
++NotShowIn=KDE;
diff --git a/source/l/polkit-gnome/polkit-gnome.SlackBuild b/source/l/polkit-gnome/polkit-gnome.SlackBuild
new file mode 100755
index 000000000..1790e66b4
--- /dev/null
+++ b/source/l/polkit-gnome/polkit-gnome.SlackBuild
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+# Slackware build script for polkit-gnome
+
+# Copyright 2009, 2010 Robby Workman, Northport, Alabama, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=polkit-gnome
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine architecture for build & packaging:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Let's reverse the logic from OnlyShowIn=GNOME to NotShowIn=KDE so that this
+# authentication agent can be used in Xfce (and third-party gnome as needed)
+zcat $CWD/pkga.desktop-NotShowInKDE.diff.gz | patch -p1 || exit 1
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
+ --mandir=/usr/man \
+ --enable-gtk-doc \
+ --disable-static \
+ --disable-introspection \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a AUTHORS COPYING HACKING NEWS README TODO \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/polkit-gnome/slack-desc b/source/l/polkit-gnome/slack-desc
new file mode 100644
index 000000000..a9d545bee
--- /dev/null
+++ b/source/l/polkit-gnome/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+polkit-gnome: polkit-gnome (GTK+ authentication agent for polkit)
+polkit-gnome:
+polkit-gnome: polkit-gnome provides a GTK+ based authentication agent for polkit.
+polkit-gnome: It can be used by any desktop environment that follows the XDG
+polkit-gnome: Base Directory Specification.
+polkit-gnome:
+polkit-gnome:
+polkit-gnome:
+polkit-gnome:
+polkit-gnome:
+polkit-gnome:
diff --git a/source/l/polkit/polkit-1-shadow.diff b/source/l/polkit/polkit-1-shadow.diff
new file mode 100644
index 000000000..56e24277d
--- /dev/null
+++ b/source/l/polkit/polkit-1-shadow.diff
@@ -0,0 +1,1030 @@
+diff --git a/src/polkitagent/Makefile.am b/src/polkitagent/Makefile.am
+index 3f38329..e114d01 100644
+--- a/src/polkitagent/Makefile.am
++++ b/src/polkitagent/Makefile.am
+@@ -68,8 +68,15 @@ libpolkit_agent_1_la_LDFLAGS = -export-symbols-regex '(^polkit_.*)'
+ libexec_PROGRAMS = polkit-agent-helper-1
+
+ polkit_agent_helper_1_SOURCES = \
+- polkitagenthelper.c \
+- $(NULL)
++ polkitagenthelperprivate.c polkitagenthelperprivate.h
++
++if POLKIT_AUTHFW_PAM
++polkit_agent_helper_1_SOURCES += polkitagenthelper-pam.c
++endif
++if POLKIT_AUTHFW_SHADOW
++polkit_agent_helper_1_SOURCES += polkitagenthelper-shadow.c
++endif
++polkit_agent_helper_1_SOURCES += $(NULL)
+
+ polkit_agent_helper_1_CFLAGS = \
+ -D_POLKIT_COMPILATION \
+diff --git a/src/polkitagent/polkitagenthelper-pam.c b/src/polkitagent/polkitagenthelper-pam.c
+new file mode 100644
+index 0000000..4c6c6fb
+--- /dev/null
++++ b/src/polkitagent/polkitagenthelper-pam.c
+@@ -0,0 +1,264 @@
++/*
++ * Copyright (C) 2008, 2010 Red Hat, Inc.
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library 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
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General
++ * Public License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
++ * Boston, MA 02111-1307, USA.
++ *
++ * Author: David Zeuthen <davidz@redhat.com>
++ */
++
++#include "config.h"
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <syslog.h>
++#include <security/pam_appl.h>
++
++#include <polkit/polkit.h>
++#include "polkitagenthelperprivate.h"
++
++static int conversation_function (int n, const struct pam_message **msg, struct pam_response **resp, void *data);
++
++int
++main (int argc, char *argv[])
++{
++ int rc;
++ const char *user_to_auth;
++ const char *cookie;
++ struct pam_conv pam_conversation;
++ pam_handle_t *pam_h;
++ const void *authed_user;
++
++ rc = 0;
++ pam_h = NULL;
++
++ /* clear the entire environment to avoid attacks using with libraries honoring environment variables */
++ if (clearenv () != 0)
++ goto error;
++
++ /* set a minimal environment */
++ setenv ("PATH", "/usr/sbin:/usr/bin:/sbin:/bin", 1);
++
++ /* check that we are setuid root */
++ if (geteuid () != 0)
++ {
++ fprintf (stderr, "polkit-agent-helper-1: needs to be setuid root\n");
++ goto error;
++ }
++
++ openlog ("polkit-agent-helper-1", LOG_CONS | LOG_PID, LOG_AUTHPRIV);
++
++ /* check for correct invocation */
++ if (argc != 3)
++ {
++ syslog (LOG_NOTICE, "inappropriate use of helper, wrong number of arguments [uid=%d]", getuid ());
++ fprintf (stderr, "polkit-agent-helper-1: wrong number of arguments. This incident has been logged.\n");
++ goto error;
++ }
++
++ user_to_auth = argv[1];
++ cookie = argv[2];
++
++ if (getuid () != 0)
++ {
++ /* check we're running with a non-tty stdin */
++ if (isatty (STDIN_FILENO) != 0)
++ {
++ syslog (LOG_NOTICE, "inappropriate use of helper, stdin is a tty [uid=%d]", getuid ());
++ fprintf (stderr, "polkit-agent-helper-1: inappropriate use of helper, stdin is a tty. This incident has been logged.\n");
++ goto error;
++ }
++ }
++
++#ifdef PAH_DEBUG
++ fprintf (stderr, "polkit-agent-helper-1: user to auth is '%s'.\n", user_to_auth);
++#endif /* PAH_DEBUG */
++
++ pam_conversation.conv = conversation_function;
++ pam_conversation.appdata_ptr = NULL;
++
++ /* start the pam stack */
++ rc = pam_start ("polkit-1",
++ user_to_auth,
++ &pam_conversation,
++ &pam_h);
++ if (rc != PAM_SUCCESS)
++ {
++ fprintf (stderr, "polkit-agent-helper-1: pam_start failed: %s\n", pam_strerror (pam_h, rc));
++ goto error;
++ }
++
++ /* set the requesting user */
++ rc = pam_set_item (pam_h, PAM_RUSER, user_to_auth);
++ if (rc != PAM_SUCCESS)
++ {
++ fprintf (stderr, "polkit-agent-helper-1: pam_set_item failed: %s\n", pam_strerror (pam_h, rc));
++ goto error;
++ }
++
++ /* is user really user? */
++ rc = pam_authenticate (pam_h, 0);
++ if (rc != PAM_SUCCESS)
++ {
++ fprintf (stderr, "polkit-agent-helper-1: pam_authenticated failed: %s\n", pam_strerror (pam_h, rc));
++ goto error;
++ }
++
++ /* permitted access? */
++ rc = pam_acct_mgmt (pam_h, 0);
++ if (rc != PAM_SUCCESS)
++ {
++ fprintf (stderr, "polkit-agent-helper-1: pam_acct_mgmt failed: %s\n", pam_strerror (pam_h, rc));
++ goto error;
++ }
++
++ /* did we auth the right user? */
++ rc = pam_get_item (pam_h, PAM_USER, &authed_user);
++ if (rc != PAM_SUCCESS)
++ {
++ fprintf (stderr, "polkit-agent-helper-1: pam_get_item failed: %s\n", pam_strerror (pam_h, rc));
++ goto error;
++ }
++
++ if (strcmp (authed_user, user_to_auth) != 0)
++ {
++ fprintf (stderr, "polkit-agent-helper-1: Tried to auth user '%s' but we got auth for user '%s' instead",
++ user_to_auth, (const char *) authed_user);
++ goto error;
++ }
++
++#ifdef PAH_DEBUG
++ fprintf (stderr, "polkit-agent-helper-1: successfully authenticated user '%s'.\n", user_to_auth);
++#endif /* PAH_DEBUG */
++
++ pam_end (pam_h, rc);
++ pam_h = NULL;
++
++#ifdef PAH_DEBUG
++ fprintf (stderr, "polkit-agent-helper-1: sending D-Bus message to PolicyKit daemon\n");
++#endif /* PAH_DEBUG */
++
++ /* now send a D-Bus message to the PolicyKit daemon that
++ * includes a) the cookie; and b) the user we authenticated
++ */
++ if (!send_dbus_message (cookie, user_to_auth))
++ {
++#ifdef PAH_DEBUG
++ fprintf (stderr, "polkit-agent-helper-1: error sending D-Bus message to PolicyKit daemon\n");
++#endif /* PAH_DEBUG */
++ goto error;
++ }
++
++#ifdef PAH_DEBUG
++ fprintf (stderr, "polkit-agent-helper-1: successfully sent D-Bus message to PolicyKit daemon\n");
++#endif /* PAH_DEBUG */
++
++ fprintf (stdout, "SUCCESS\n");
++ flush_and_wait();
++ return 0;
++
++error:
++ if (pam_h != NULL)
++ pam_end (pam_h, rc);
++
++ fprintf (stdout, "FAILURE\n");
++ flush_and_wait();
++ return 1;
++}
++
++static int
++conversation_function (int n, const struct pam_message **msg, struct pam_response **resp, void *data)
++{
++ struct pam_response *aresp;
++ char buf[PAM_MAX_RESP_SIZE];
++ int i;
++
++ data = data;
++ if (n <= 0 || n > PAM_MAX_NUM_MSG)
++ return PAM_CONV_ERR;
++
++ if ((aresp = calloc(n, sizeof *aresp)) == NULL)
++ return PAM_BUF_ERR;
++
++ for (i = 0; i < n; ++i)
++ {
++ aresp[i].resp_retcode = 0;
++ aresp[i].resp = NULL;
++ switch (msg[i]->msg_style)
++ {
++
++ case PAM_PROMPT_ECHO_OFF:
++ fprintf (stdout, "PAM_PROMPT_ECHO_OFF ");
++ goto conv1;
++
++ case PAM_PROMPT_ECHO_ON:
++ fprintf (stdout, "PAM_PROMPT_ECHO_ON ");
++ conv1:
++ fputs (msg[i]->msg, stdout);
++ if (strlen (msg[i]->msg) > 0 && msg[i]->msg[strlen (msg[i]->msg) - 1] != '\n')
++ fputc ('\n', stdout);
++ fflush (stdout);
++
++ if (fgets (buf, sizeof buf, stdin) == NULL)
++ goto error;
++
++ if (strlen (buf) > 0 &&
++ buf[strlen (buf) - 1] == '\n')
++ buf[strlen (buf) - 1] = '\0';
++
++ aresp[i].resp = strdup (buf);
++ if (aresp[i].resp == NULL)
++ goto error;
++ break;
++
++ case PAM_ERROR_MSG:
++ fprintf (stdout, "PAM_ERROR_MSG ");
++ goto conv2;
++
++ case PAM_TEXT_INFO:
++ fprintf (stdout, "PAM_TEXT_INFO ");
++ conv2:
++ fputs (msg[i]->msg, stdout);
++ if (strlen (msg[i]->msg) > 0 &&
++ msg[i]->msg[strlen (msg[i]->msg) - 1] != '\n')
++ fputc ('\n', stdout);
++ fflush (stdout);
++ break;
++
++ default:
++ goto error;
++ }
++ }
++
++ *resp = aresp;
++ return PAM_SUCCESS;
++
++error:
++
++ for (i = 0; i < n; ++i)
++ {
++ if (aresp[i].resp != NULL) {
++ memset (aresp[i].resp, 0, strlen(aresp[i].resp));
++ free (aresp[i].resp);
++ }
++ }
++ memset (aresp, 0, n * sizeof *aresp);
++ *resp = NULL;
++ return PAM_CONV_ERR;
++}
++
+diff --git a/src/polkitagent/polkitagenthelper-shadow.c b/src/polkitagent/polkitagenthelper-shadow.c
+new file mode 100644
+index 0000000..7435533
+--- /dev/null
++++ b/src/polkitagent/polkitagenthelper-shadow.c
+@@ -0,0 +1,189 @@
++/*
++ * Copyright (C) 2008 Red Hat, Inc.
++ * Copyright (C) 2009-2010 Andrew Psaltis <ampsaltis@gmail.com>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library 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
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General
++ * Public License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
++ * Boston, MA 02111-1307, USA.
++ *
++ * Authors: Andrew Psaltis <ampsaltis@gmail.com>, based on
++ * polkitagenthelper.c which was written by
++ * David Zeuthen <davidz@redhat.com>
++ */
++
++#include "config.h"
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <syslog.h>
++#include <shadow.h>
++#include <grp.h>
++#include <pwd.h>
++#include <time.h>
++
++#include <polkit/polkit.h>
++#include "polkitagenthelperprivate.h"
++
++
++extern char *crypt ();
++static int shadow_authenticate (struct spwd *shadow);
++
++int
++main (int argc, char *argv[])
++{
++ struct spwd *shadow;
++ const char *user_to_auth;
++ const char *cookie;
++ time_t tm;
++
++ /* clear the entire environment to avoid attacks with
++ libraries honoring environment variables */
++ if (clearenv () != 0)
++ goto error;
++
++ /* set a minimal environment */
++ setenv ("PATH", "/usr/sbin:/usr/bin:/sbin:/bin", 1);
++
++ /* check that we are setuid root */
++ if (geteuid () != 0)
++ {
++ fprintf (stderr, "polkit-agent-helper-1: needs to be setuid root\n");
++ goto error;
++ }
++
++ openlog ("polkit-agent-helper-1", LOG_CONS | LOG_PID, LOG_AUTHPRIV);
++
++ /* check for correct invocation */
++ if (argc != 3)
++ {
++ syslog (LOG_NOTICE, "inappropriate use of helper, wrong number of arguments [uid=%d]", getuid ());
++ fprintf (stderr, "polkit-agent-helper-1: wrong number of arguments. This incident has been logged.\n");
++ goto error;
++ }
++
++ if (getuid () != 0)
++ {
++ /* check we're running with a non-tty stdin */
++ if (isatty (STDIN_FILENO) != 0)
++ {
++ syslog (LOG_NOTICE, "inappropriate use of helper, stdin is a tty [uid=%d]", getuid ());
++ fprintf (stderr, "polkit-agent-helper-1: inappropriate use of helper, stdin is a tty. This incident has been logged.\n");
++ goto error;
++ }
++ }
++
++ user_to_auth = argv[1];
++ cookie = argv[2];
++
++#ifdef PAH_DEBUG
++ fprintf (stderr, "polkit-agent-helper-1: user to auth is '%s'.\n", user_to_auth);
++#endif /* PAH_DEBUG */
++
++ /* Ask shadow about the user requesting authentication */
++ if ((shadow = getspnam (user_to_auth)) == NULL)
++ {
++ syslog (LOG_NOTICE, "shadow file data information request for user %s [uid=%d] failed", user_to_auth, getuid());
++ fprintf(stderr, "polkit-agent-helper-1: could not get shadow information for%.100s", user_to_auth);
++ goto error;
++ }
++
++ /* Check the user's identity */
++ if(!shadow_authenticate (shadow))
++ {
++ syslog (LOG_NOTICE, "authentication failure [uid=%d] trying to authenticate '%s'", getuid (), user_to_auth);
++ fprintf (stderr, "polkit-agent-helper-1: authentication failure. This incident has been logged.\n");
++ goto error;
++ }
++
++ /* Check whether the user's password has expired */
++ time(&tm);
++ if( shadow->sp_max >= 0 && (shadow->sp_lstchg + shadow->sp_max) * 60 * 60 * 24 <= tm)
++ {
++ syslog (LOG_NOTICE, "password expired for user '%s' [uid=%d] trying to authenticate", user_to_auth, getuid () );
++ fprintf (stderr, "polkit-agent-helper-1: authorization failure. This incident has been logged.\n");
++ goto error;
++ }
++
++ /* Check whether the user's password has aged (and account expired along
++ * with it)
++ */
++ if( shadow->sp_inact >= 0 && (shadow->sp_lstchg + shadow->sp_max + shadow->sp_inact) * 60 * 60 * 24 <= tm)
++ {
++ syslog (LOG_NOTICE, "password aged for user '%s' [uid=%d] trying to authenticate", user_to_auth, getuid () );
++ fprintf (stderr, "polkit-agent-helper-1: authorization failure. This incident has been logged.\n");
++ goto error;
++ }
++
++ /* Check whether the user's account has expired */
++ if(shadow->sp_expire >= 0 && shadow->sp_expire * 60 * 60 * 24 <= tm)
++ {
++ syslog (LOG_NOTICE, "account expired for user '%s' [uid=%d] trying to authenticate", user_to_auth, getuid () );
++ fprintf (stderr, "polkit-agent-helper-1: authorization failure. This incident has been logged.\n");
++ goto error;
++ }
++
++#ifdef PAH_DEBUG
++ fprintf (stderr, "polkit-agent-helper-1: sending D-Bus message to PolicyKit daemon\n");
++#endif /* PAH_DEBUG */
++
++ /* now send a D-Bus message to the PolicyKit daemon that
++ * includes a) the cookie; and b) the user we authenticated
++ */
++ if (!send_dbus_message (cookie, user_to_auth))
++ {
++#ifdef PAH_DEBUG
++ fprintf (stderr, "polkit-agent-helper-1: error sending D-Bus message to PolicyKit daemon\n");
++#endif /* PAH_DEBUG */
++ goto error;
++ }
++
++#ifdef PAH_DEBUG
++ fprintf (stderr, "polkit-agent-helper-1: successfully sent D-Bus message to PolicyKit daemon\n");
++#endif /* PAH_DEBUG */
++
++ fprintf (stdout, "SUCCESS\n");
++ flush_and_wait();
++ return 0;
++
++error:
++ fprintf (stdout, "FAILURE\n");
++ flush_and_wait();
++ return 1;
++}
++
++static int
++shadow_authenticate(struct spwd *shadow)
++{
++ /* Speak PAM to the daemon, thanks to David Zeuthen for the idea. */
++ char passwd[512];
++ fprintf(stdout, "PAM_PROMPT_ECHO_OFF password:\n");
++ fflush(stdout);
++ usleep (10 * 1000); /* since fflush(3) seems buggy */
++
++ if (fgets (passwd, sizeof (passwd), stdin) == NULL)
++ goto error;
++
++ if (strlen (passwd) > 0 && passwd[strlen (passwd) - 1] == '\n')
++ passwd[strlen (passwd) - 1] = '\0';
++
++ if (strcmp (shadow->sp_pwdp, crypt (passwd, shadow->sp_pwdp)) != 0)
++ goto error;
++ return 1;
++error:
++ return 0;
++}
++
+diff --git a/src/polkitagent/polkitagenthelper.c b/src/polkitagent/polkitagenthelper.c
+deleted file mode 100644
+index cca86db..0000000
+--- a/src/polkitagent/polkitagenthelper.c
++++ /dev/null
+@@ -1,339 +0,0 @@
+-/*
+- * Copyright (C) 2008 Red Hat, Inc.
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Lesser General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library 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
+- * Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General
+- * Public License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+- * Boston, MA 02111-1307, USA.
+- *
+- * Author: David Zeuthen <davidz@redhat.com>
+- */
+-
+-#include "config.h"
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <unistd.h>
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-#include <syslog.h>
+-#include <security/pam_appl.h>
+-
+-#include <polkit/polkit.h>
+-
+-#ifdef HAVE_SOLARIS
+-# define LOG_AUTHPRIV (10<<3)
+-#endif
+-
+-#ifndef HAVE_CLEARENV
+-extern char **environ;
+-
+-static int
+-clearenv (void)
+-{
+- if (environ != NULL)
+- environ[0] = NULL;
+- return 0;
+-}
+-#endif
+-
+-/* Development aid: define PAH_DEBUG to get debugging output. Do _NOT_
+- * enable this in production builds; it may leak passwords and other
+- * sensitive information.
+- */
+-#undef PAH_DEBUG
+-// #define PAH_DEBUG
+-
+-static gboolean send_dbus_message (const char *cookie, const char *user);
+-
+-static int conversation_function (int n, const struct pam_message **msg, struct pam_response **resp, void *data);
+-
+-int
+-main (int argc, char *argv[])
+-{
+- int rc;
+- const char *user_to_auth;
+- const char *cookie;
+- struct pam_conv pam_conversation;
+- pam_handle_t *pam_h;
+- const void *authed_user;
+-
+- rc = 0;
+- pam_h = NULL;
+-
+- /* clear the entire environment to avoid attacks using with libraries honoring environment variables */
+- if (clearenv () != 0)
+- goto error;
+-
+- /* set a minimal environment */
+- setenv ("PATH", "/usr/sbin:/usr/bin:/sbin:/bin", 1);
+-
+- /* check that we are setuid root */
+- if (geteuid () != 0)
+- {
+- fprintf (stderr, "polkit-agent-helper-1: needs to be setuid root\n");
+- goto error;
+- }
+-
+- openlog ("polkit-agent-helper-1", LOG_CONS | LOG_PID, LOG_AUTHPRIV);
+-
+- /* check for correct invocation */
+- if (argc != 3)
+- {
+- syslog (LOG_NOTICE, "inappropriate use of helper, wrong number of arguments [uid=%d]", getuid ());
+- fprintf (stderr, "polkit-agent-helper-1: wrong number of arguments. This incident has been logged.\n");
+- goto error;
+- }
+-
+- user_to_auth = argv[1];
+- cookie = argv[2];
+-
+- if (getuid () != 0)
+- {
+- /* check we're running with a non-tty stdin */
+- if (isatty (STDIN_FILENO) != 0)
+- {
+- syslog (LOG_NOTICE, "inappropriate use of helper, stdin is a tty [uid=%d]", getuid ());
+- fprintf (stderr, "polkit-agent-helper-1: inappropriate use of helper, stdin is a tty. This incident has been logged.\n");
+- goto error;
+- }
+- }
+-
+-#ifdef PAH_DEBUG
+- fprintf (stderr, "polkit-agent-helper-1: user to auth is '%s'.\n", user_to_auth);
+-#endif /* PAH_DEBUG */
+-
+- pam_conversation.conv = conversation_function;
+- pam_conversation.appdata_ptr = NULL;
+-
+- /* start the pam stack */
+- rc = pam_start ("polkit-1",
+- user_to_auth,
+- &pam_conversation,
+- &pam_h);
+- if (rc != PAM_SUCCESS)
+- {
+- fprintf (stderr, "polkit-agent-helper-1: pam_start failed: %s\n", pam_strerror (pam_h, rc));
+- goto error;
+- }
+-
+- /* set the requesting user */
+- rc = pam_set_item (pam_h, PAM_RUSER, user_to_auth);
+- if (rc != PAM_SUCCESS)
+- {
+- fprintf (stderr, "polkit-agent-helper-1: pam_set_item failed: %s\n", pam_strerror (pam_h, rc));
+- goto error;
+- }
+-
+- /* is user really user? */
+- rc = pam_authenticate (pam_h, 0);
+- if (rc != PAM_SUCCESS)
+- {
+- fprintf (stderr, "polkit-agent-helper-1: pam_authenticated failed: %s\n", pam_strerror (pam_h, rc));
+- goto error;
+- }
+-
+- /* permitted access? */
+- rc = pam_acct_mgmt (pam_h, 0);
+- if (rc != PAM_SUCCESS)
+- {
+- fprintf (stderr, "polkit-agent-helper-1: pam_acct_mgmt failed: %s\n", pam_strerror (pam_h, rc));
+- goto error;
+- }
+-
+- /* did we auth the right user? */
+- rc = pam_get_item (pam_h, PAM_USER, &authed_user);
+- if (rc != PAM_SUCCESS)
+- {
+- fprintf (stderr, "polkit-agent-helper-1: pam_get_item failed: %s\n", pam_strerror (pam_h, rc));
+- goto error;
+- }
+-
+- if (strcmp (authed_user, user_to_auth) != 0)
+- {
+- fprintf (stderr, "polkit-agent-helper-1: Tried to auth user '%s' but we got auth for user '%s' instead",
+- user_to_auth, (const char *) authed_user);
+- goto error;
+- }
+-
+-#ifdef PAH_DEBUG
+- fprintf (stderr, "polkit-agent-helper-1: successfully authenticated user '%s'.\n", user_to_auth);
+-#endif /* PAH_DEBUG */
+-
+- pam_end (pam_h, rc);
+- pam_h = NULL;
+-
+-#ifdef PAH_DEBUG
+- fprintf (stderr, "polkit-agent-helper-1: sending D-Bus message to PolicyKit daemon\n");
+-#endif /* PAH_DEBUG */
+-
+- /* now send a D-Bus message to the PolicyKit daemon that
+- * includes a) the cookie; and b) the user we authenticated
+- */
+- if (!send_dbus_message (cookie, user_to_auth))
+- {
+-#ifdef PAH_DEBUG
+- fprintf (stderr, "polkit-agent-helper-1: error sending D-Bus message to PolicyKit daemon\n");
+-#endif /* PAH_DEBUG */
+- goto error;
+- }
+-
+-#ifdef PAH_DEBUG
+- fprintf (stderr, "polkit-agent-helper-1: successfully sent D-Bus message to PolicyKit daemon\n");
+-#endif /* PAH_DEBUG */
+-
+- fprintf (stdout, "SUCCESS\n");
+- fflush (stdout);
+- fflush (stderr);
+- usleep (10 * 1000); /* since fflush(3) seems buggy */
+- return 0;
+-
+-error:
+- if (pam_h != NULL)
+- pam_end (pam_h, rc);
+-
+- fprintf (stdout, "FAILURE\n");
+- fflush (stdout);
+- fflush (stderr);
+- usleep (10 * 1000); /* since fflush(3) seems buggy */
+- return 1;
+-}
+-
+-static int
+-conversation_function (int n, const struct pam_message **msg, struct pam_response **resp, void *data)
+-{
+- struct pam_response *aresp;
+- char buf[PAM_MAX_RESP_SIZE];
+- int i;
+-
+- data = data;
+- if (n <= 0 || n > PAM_MAX_NUM_MSG)
+- return PAM_CONV_ERR;
+-
+- if ((aresp = calloc(n, sizeof *aresp)) == NULL)
+- return PAM_BUF_ERR;
+-
+- for (i = 0; i < n; ++i)
+- {
+- aresp[i].resp_retcode = 0;
+- aresp[i].resp = NULL;
+- switch (msg[i]->msg_style)
+- {
+-
+- case PAM_PROMPT_ECHO_OFF:
+- fprintf (stdout, "PAM_PROMPT_ECHO_OFF ");
+- goto conv1;
+-
+- case PAM_PROMPT_ECHO_ON:
+- fprintf (stdout, "PAM_PROMPT_ECHO_ON ");
+- conv1:
+- fputs (msg[i]->msg, stdout);
+- if (strlen (msg[i]->msg) > 0 && msg[i]->msg[strlen (msg[i]->msg) - 1] != '\n')
+- fputc ('\n', stdout);
+- fflush (stdout);
+-
+- if (fgets (buf, sizeof buf, stdin) == NULL)
+- goto error;
+-
+- if (strlen (buf) > 0 &&
+- buf[strlen (buf) - 1] == '\n')
+- buf[strlen (buf) - 1] = '\0';
+-
+- aresp[i].resp = strdup (buf);
+- if (aresp[i].resp == NULL)
+- goto error;
+- break;
+-
+- case PAM_ERROR_MSG:
+- fprintf (stdout, "PAM_ERROR_MSG ");
+- goto conv2;
+-
+- case PAM_TEXT_INFO:
+- fprintf (stdout, "PAM_TEXT_INFO ");
+- conv2:
+- fputs (msg[i]->msg, stdout);
+- if (strlen (msg[i]->msg) > 0 &&
+- msg[i]->msg[strlen (msg[i]->msg) - 1] != '\n')
+- fputc ('\n', stdout);
+- fflush (stdout);
+- break;
+-
+- default:
+- goto error;
+- }
+- }
+-
+- *resp = aresp;
+- return PAM_SUCCESS;
+-
+-error:
+-
+- for (i = 0; i < n; ++i)
+- {
+- if (aresp[i].resp != NULL) {
+- memset (aresp[i].resp, 0, strlen(aresp[i].resp));
+- free (aresp[i].resp);
+- }
+- }
+- memset (aresp, 0, n * sizeof *aresp);
+- *resp = NULL;
+- return PAM_CONV_ERR;
+-}
+-
+-static gboolean
+-send_dbus_message (const char *cookie, const char *user)
+-{
+- PolkitAuthority *authority;
+- PolkitIdentity *identity;
+- GError *error;
+- gboolean ret;
+-
+- ret = FALSE;
+-
+- error = NULL;
+-
+- g_type_init ();
+-
+- authority = polkit_authority_get ();
+-
+- identity = polkit_unix_user_new_for_name (user, &error);
+- if (identity == NULL)
+- {
+- g_printerr ("Error constructing identity: %s\n", error->message);
+- g_error_free (error);
+- goto out;
+- }
+-
+- if (!polkit_authority_authentication_agent_response_sync (authority,
+- cookie,
+- identity,
+- NULL,
+- &error))
+- {
+- g_printerr ("polkit-agent-helper-1: error response to PolicyKit daemon: %s\n", error->message);
+- g_error_free (error);
+- goto out;
+- }
+-
+- ret = TRUE;
+-
+- out:
+-
+- if (identity != NULL)
+- g_object_unref (identity);
+-
+- if (authority != NULL)
+- g_object_unref (authority);
+-
+- return ret;
+-}
+diff --git a/src/polkitagent/polkitagenthelperprivate.c b/src/polkitagent/polkitagenthelperprivate.c
+new file mode 100644
+index 0000000..abf5524
+--- /dev/null
++++ b/src/polkitagent/polkitagenthelperprivate.c
+@@ -0,0 +1,97 @@
++/*
++ * Copyright (C) 2009-2010 Red Hat, Inc.
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library 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
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General
++ * Public License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++ * Boston, MA 02110-1301, USA.
++ *
++ * Authors: David Zeuthen <davidz@redhat.com>,
++ * Andrew Psaltis <ampsaltis@gmail.com>
++ */
++
++#include "polkitagenthelperprivate.h"
++#include <stdio.h>
++
++#ifndef HAVE_CLEARENV
++extern char **environ;
++
++static int
++clearenv (void)
++{
++ if (environ != NULL)
++ environ[0] = NULL;
++ return 0;
++}
++#endif
++
++
++gboolean
++send_dbus_message (const char *cookie, const char *user)
++{
++ PolkitAuthority *authority;
++ PolkitIdentity *identity;
++ GError *error;
++ gboolean ret;
++
++ ret = FALSE;
++
++ error = NULL;
++
++ g_type_init ();
++
++ authority = polkit_authority_get ();
++
++ identity = polkit_unix_user_new_for_name (user, &error);
++ if (identity == NULL)
++ {
++ g_printerr ("Error constructing identity: %s\n", error->message);
++ g_error_free (error);
++ goto out;
++ }
++
++ if (!polkit_authority_authentication_agent_response_sync (authority,
++ cookie,
++ identity,
++ NULL,
++ &error))
++ {
++ g_printerr ("polkit-agent-helper-1: error response to PolicyKit daemon: %s\n", error->message);
++ g_error_free (error);
++ goto out;
++ }
++
++ ret = TRUE;
++
++ out:
++
++ if (identity != NULL)
++ g_object_unref (identity);
++
++ if (authority != NULL)
++ g_object_unref (authority);
++
++ return ret;
++}
++
++/* fflush(3) stdin and stdout and wait a little bit.
++ * This replaces the three-line commands at the bottom of
++ * polkit-agent-helper-1's main() function.
++ */
++void
++flush_and_wait ()
++{
++ fflush (stdout);
++ fflush (stderr);
++ usleep (10 * 1000); /* since fflush(3) seems buggy */
++}
+diff --git a/src/polkitagent/polkitagenthelperprivate.h b/src/polkitagent/polkitagenthelperprivate.h
+new file mode 100644
+index 0000000..16f7ba4
+--- /dev/null
++++ b/src/polkitagent/polkitagenthelperprivate.h
+@@ -0,0 +1,42 @@
++/*
++ * Copyright (C) 2009-2010 Red Hat, Inc.
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library 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
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General
++ * Public License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++ * Boston, MA 02110-1301, USA.
++ *
++ * Authors: David Zeuthen <davidz@redhat.com>,
++ * Andrew Psaltis <ampsalits@gmail.com>
++ */
++#ifndef __POLKIT_AGENT_HELPER_PRIVATE_H
++#define __POLKIT_AGENT_HELPER_PRIVATE_H
++
++#include <polkit/polkit.h>
++
++/* Development aid: define PAH_DEBUG to get debugging output. Do _NOT_
++ * enable this in production builds; it may leak passwords and other
++ * sensitive information.
++ */
++#undef PAH_DEBUG
++// #define PAH_DEBUG
++
++#ifdef HAVE_SOLARIS
++# define LOG_AUTHPRIV (10<<3)
++#endif
++
++gboolean send_dbus_message (const char *cookie, const char *user);
++
++void flush_and_wait ();
++
++#endif /* __POLKIT_AGENT_HELPER_PRIVATE_H */
+diff --git a/src/programs/pkexec.c b/src/programs/pkexec.c
+index 17c191e..3e096bf 100644
+--- a/src/programs/pkexec.c
++++ b/src/programs/pkexec.c
+@@ -34,7 +34,11 @@
+ #include <grp.h>
+ #include <pwd.h>
+ #include <errno.h>
++
++#ifdef POLKIT_AUTHFW_PAM
+ #include <security/pam_appl.h>
++#endif /* POLKIT_AUTHFW_PAM */
++
+ #include <syslog.h>
+ #include <stdarg.h>
+
+@@ -115,6 +119,7 @@ log_message (gint level,
+
+ /* ---------------------------------------------------------------------------------------------------- */
+
++#ifdef POLKIT_AUTHFW_PAM
+ static int
+ pam_conversation_function (int n,
+ const struct pam_message **msg,
+@@ -167,6 +172,7 @@ out:
+ pam_end (pam_h, rc);
+ return ret;
+ }
++#endif /* POLKIT_AUTHFW_PAM */
+
+ /* ---------------------------------------------------------------------------------------------------- */
+
+@@ -741,11 +747,13 @@ main (int argc, char *argv[])
+ * TODO: The question here is whether we should clear the limits before applying them?
+ * As evident above, neither su(1) (and, for that matter, nor sudo(8)) does this.
+ */
++#ifdef POLKIT_AUTHW_PAM
+ if (!open_session (pw->pw_name))
+ {
+ goto out;
+ }
+-
++#endif /* POLKIT_AUTHFW_PAM */
++
+ /* become the user */
+ if (setgroups (0, NULL) != 0)
+ {
diff --git a/source/l/polkit/polkit.SlackBuild b/source/l/polkit/polkit.SlackBuild
new file mode 100755
index 000000000..74193f135
--- /dev/null
+++ b/source/l/polkit/polkit.SlackBuild
@@ -0,0 +1,144 @@
+#!/bin/sh
+
+# Copyright 2009 Robby Workman, Northport, Alabama, USA
+# Copyright 2010 Eric Hameleers, Eindhoven, NL
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=polkit
+VERSION=${VERSION:-1_14bdfd8}
+BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+cd $PKGNAM-$VERSION || exit 1
+
+# Apply the patch that makes --with-authfw=shadow work
+cat $CWD/polkit-1-shadow.diff | patch -p1 --verbose || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+# Using polkit-user=hald for now for easier transition; I don't think the
+# separate user account is actually required any more, but I could be wrong
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./autogen.sh \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --enable-gtk-doc \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
+ --enable-man-pages \
+ --mandir=/usr/man \
+ --disable-static \
+ --disable-introspection \
+ --with-authfw=shadow \
+ --enable-verbose-mode \
+ --build=$ARCH-slackware-linux
+ # Deprecated:
+ #--with-polkit-user=hald \
+
+#NOTE: The directory /etc/polkit-1/localauthority must be owned
+# by root and have mode 700
+#NOTE: The directory /var/lib/polkit-1 must be owned
+# by root and have mode 700
+#NOTE: The file ${exec_prefix}/libexec/polkit-agent-helper-1 must be owned
+# by root and have mode 4755 (setuid root binary)
+#NOTE: The file ${exec_prefix}/bin/pkexec must be owned by root and
+# have mode 4755 (setuid root binary)
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog HACKING INSTALL NEWS README \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+( cd $PKG/usr/doc/$PKGNAM-$VERSION; ln -s ../../share/gtk-doc/html/polkit-1 html
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/polkit/slack-desc b/source/l/polkit/slack-desc
new file mode 100644
index 000000000..006d8a8e5
--- /dev/null
+++ b/source/l/polkit/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+polkit: polkit (authentication framework)
+polkit:
+polkit: PolicyKit is an application-level toolkit for defining and handling
+polkit: the policy that allows unprivileged processes to speak to privileged
+polkit: processes. PolicyKit is specifically targeting applications in rich
+polkit: desktop environments on multi-user UNIX-like operating systems.
+polkit:
+polkit:
+polkit:
+polkit: Home: http://www.freedesktop.org/wiki/Software/PolicyKit
+polkit:
diff --git a/source/l/poppler-data/poppler-data.SlackBuild b/source/l/poppler-data/poppler-data.SlackBuild
index 090004d48..aa07f24d9 100755
--- a/source/l/poppler-data/poppler-data.SlackBuild
+++ b/source/l/poppler-data/poppler-data.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,7 +22,7 @@
PKGNAM=poppler-data
-VERSION=${VERSION:-0.2.1}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
ARCH=${ARCH:-noarch}
BUILD=${BUILD:-1}
@@ -35,7 +35,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
@@ -52,7 +52,7 @@ make install datadir=/usr/share DESTDIR=$PKG
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- COPYING README \
+ COPYING* README \
$PKG/usr/doc/${PKGNAM}-$VERSION
mkdir -p $PKG/install
diff --git a/source/l/poppler/poppler.SlackBuild b/source/l/poppler/poppler.SlackBuild
index 4f4f6f304..dcf3e8997 100755
--- a/source/l/poppler/poppler.SlackBuild
+++ b/source/l/poppler/poppler.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,19 @@
PKGNAM=poppler
-VERSION=${VERSION:-0.10.7}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -37,6 +46,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -95,6 +107,14 @@ cp -a AUTHORS COPYING* INSTALL NEWS README README-XPDF TODO \
( cd $PKG/usr/doc/${PKGNAM}-$VERSION
ln -s /usr/share/gtk-doc/html/poppler html )
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/popt/popt.SlackBuild b/source/l/popt/popt.SlackBuild
index 4e01dd527..b495de5c2 100755
--- a/source/l/popt/popt.SlackBuild
+++ b/source/l/popt/popt.SlackBuild
@@ -23,15 +23,22 @@
PKGNAM=popt
VERSION=${VERSION:-1.7}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine architecture for build & packaging:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -42,8 +49,13 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
@@ -69,15 +81,23 @@ CFLAGS="$SLKCFLAGS" \
--build=$ARCH-slackware-linux
# Build and install:
-make -j4 || exit 1
+make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-# Strip binaries:
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+# Move the binary and shared library to /sbin and /lib(64)
+mkdir -p $PKG/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ for file in lib*.so.?.* ; do
+ mv $file ../../lib${LIBDIRSUFFIX}
+ ln -sf ../../lib${LIBDIRSUFFIX}/$file .
+ done
+ cp -a lib*.so.? ../../lib${LIBDIRSUFFIX}
)
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
# Compress and link manpages, if any:
if [ -d $PKG/usr/man ]; then
( cd $PKG/usr/man
diff --git a/source/l/pycairo/pycairo.SlackBuild b/source/l/pycairo/pycairo.SlackBuild
index f8ab9c71e..2ca6a2f2d 100755
--- a/source/l/pycairo/pycairo.SlackBuild
+++ b/source/l/pycairo/pycairo.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for pycairo
# Copyright 2007 by Eric Hameleers <alien@slackbuilds.org>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,13 +24,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=pycairo
-VERSION=1.8.4
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+PKGNAM=pycairo
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -43,19 +52,22 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.*z* || exit 1
-cd $PRGNAM-$VERSION
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -80,14 +92,22 @@ make install DESTDIR=$PKG || exit 1
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
- AUTHORS COPYING* ChangeLog INSTALL NEWS NOTES README \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ AUTHORS COPYING* INSTALL NEWS README \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/pycairo/pycairo.info b/source/l/pycairo/pycairo.info
deleted file mode 100644
index 5882ba318..000000000
--- a/source/l/pycairo/pycairo.info
+++ /dev/null
@@ -1,2 +0,0 @@
-HOMEPAGE="http://cairographics.org/pycairo"
-DOWNLOAD="http://cairographics.org/releases/pycairo-1.8.2.tar.gz"
diff --git a/source/l/pycairo/pycairo.url b/source/l/pycairo/pycairo.url
new file mode 100644
index 000000000..afad76d4d
--- /dev/null
+++ b/source/l/pycairo/pycairo.url
@@ -0,0 +1,2 @@
+http://cairographics.org/pycairo
+http://cairographics.org/releases/
diff --git a/source/l/pycups/pycups.SlackBuild b/source/l/pycups/pycups.SlackBuild
index a250d508e..00c8f3e12 100755
--- a/source/l/pycups/pycups.SlackBuild
+++ b/source/l/pycups/pycups.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2008 Heinz Wiesinger <hmwiesinger@gmx.at>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,22 +24,32 @@
# Modified by Robby Workman <rworkman@slackware.com>
-PRGNAM=pycups
-VERSION=${VERSION:-1.9.45}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=pycups
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:--j6}
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP || exit 1
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -53,12 +63,20 @@ make install DESTDIR=$PKG || exit 1
find $PKG | xargs file | grep -e "shared object" -e "executable" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a COPYING* NEWS README TODO $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a COPYING* NEWS README TODO $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/pygobject/pygobject.SlackBuild b/source/l/pygobject/pygobject.SlackBuild
index a6750e3d5..a54d2bd34 100755
--- a/source/l/pygobject/pygobject.SlackBuild
+++ b/source/l/pygobject/pygobject.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007, 2008 Erik Hanson erik@slackbuilds.org
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,13 +22,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=pygobject
-VERSION=2.16.1
-ARCH=${ARCH:-x86_64}
+PKGNAM=pygobject
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -41,18 +50,21 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
+
rm -rf $PKG
mkdir -p $TMP $PKG
-
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -75,17 +87,25 @@ make install DESTDIR=$PKG || exit 1
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
INSTALL AUTHORS COPYING NEWS README \
- $PKG/usr/doc/$PRGNAM-$VERSION
-( cd $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+( cd $PKG/usr/doc/$PKGNAM-$VERSION
ln -s ../../share/gtk-doc/html/pygobject html
)
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/pygobject/pygobject.info b/source/l/pygobject/pygobject.info
deleted file mode 100644
index b67cef497..000000000
--- a/source/l/pygobject/pygobject.info
+++ /dev/null
@@ -1,2 +0,0 @@
-HOMEPAGE="http://www.pygtk.org/"
-DOWNLOAD="http://ftp.gnome.org/pub/GNOME/sources/pygobject/2.16/pygobject-2.16.0.tar.bz2"
diff --git a/source/l/pygobject/pygobject.url b/source/l/pygobject/pygobject.url
new file mode 100644
index 000000000..85ab64cf1
--- /dev/null
+++ b/source/l/pygobject/pygobject.url
@@ -0,0 +1,2 @@
+http://www.pygtk.org/
+http://ftp.gnome.org/pub/GNOME/sources/pygobject/
diff --git a/source/l/pygtk/pygtk.SlackBuild b/source/l/pygtk/pygtk.SlackBuild
index 3055ba30e..7823f4dd8 100755
--- a/source/l/pygtk/pygtk.SlackBuild
+++ b/source/l/pygtk/pygtk.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007 Erik Hanson erik@slackbuilds.org
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,13 +22,26 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=pygtk
-VERSION=2.14.1
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=pygtk
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -41,18 +54,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
-
cd $TMP || exit 1
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -75,17 +87,25 @@ make install DESTDIR=$PKG || exit 1
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
MAPPING PKG-INFO INSTALL TODO AUTHORS COPYING NEWS README \
- $PKG/usr/doc/$PRGNAM-$VERSION
-( cd $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+( cd $PKG/usr/doc/$PKGNAM-$VERSION
ln -s ../../share/gtk-doc/html/pygtk html
)
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/qca/qca.SlackBuild b/source/l/qca/qca.SlackBuild
index de767cf53..49367ffc9 100755
--- a/source/l/qca/qca.SlackBuild
+++ b/source/l/qca/qca.SlackBuild
@@ -24,11 +24,19 @@
# No additional license terms and no copyright claim
PKGNAM=qca
-VERSION=2.0.1
-ARCH=${ARCH:-x86_64}
+VERSION=2.0.2
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine architecture for build & packaging:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
diff --git a/source/l/qt/README b/source/l/qt/README
index c5b4d85a9..bdf9be993 100644
--- a/source/l/qt/README
+++ b/source/l/qt/README
@@ -1,6 +1,8 @@
-qt-rXXXXXX is actually qt-copy (kde's own version that might be
-slightly incompatible with released version) renamed.
+qt-<version>_<git revision> is actually KDE's version of Qt from git
+that includes important patches not yet present in mainline Qt.
-It also contains less documentation -- you can grab the vanilla
-Qt if you need it.
+The recommended version of Qt for KDE may be obtained from the
+repository with this command:
+
+git clone git://gitorious.org/+kde-developers/qt/kde-qt.git
diff --git a/source/l/qt/qt.SlackBuild b/source/l/qt/qt.SlackBuild
index 3bd6fe560..c04221c34 100755
--- a/source/l/qt/qt.SlackBuild
+++ b/source/l/qt/qt.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,14 +23,30 @@
# Merged some ideas from Alex Sarmardzic's script for qt4 at SlackBuilds.org
# ^^ Modified by Robby Workman <rworkman@slackware.com> for QT4 & KDE4
-# We're using qt-copy instead of a released qt version, as this svn release
-# has at least one bugfix strongly recommended by the kde developers
+# We're using qt-copy instead of a released qt version, as this git release
+# has at least one bugfix strongly recommended by the kde developers.
+
+# Obtained from:
+# git clone git://gitorious.org/+kde-developers/qt/kde-qt.git
+# git checkout origin/4.5.3-patched
+# git checkout origin/4.6.0-stable-patched
+# git checkout origin/4.6.1-patched
+# wget http://qt.gitorious.org/qt/kde-qt/archive-tarball/4.6.2-patched
PKGNAM=qt
-VERSION=$(ls qt-r*.tar.?z* | cut -d - -f 2 | cut -f 1 -d . | tail -1)
-ARCH=${ARCH:-x86_64}
+VERSION=$(ls qt-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:--j7}
if [ "$ARCH" = "i486" ]; then
@@ -42,6 +58,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -92,25 +111,28 @@ fi
# Fix path to mysql header
zcat $CWD/qt.mysql.h.diff.gz | patch -p1 || exit 1
-# The "o" selects the Open Source edition of Qt.
-# The "yes" agrees to the GPL, so don't run this script if you don't agree. :-)
export CFLAGS="$SLKCFLAGS"
export CXXFLAGS="$SLKCFLAGS"
export OPENSOURCE_CXXFLAGS="$SLKCFLAGS"
-echo "o
-yes" | ./configure \
+./configure \
+ -confirm-license \
+ -opensource \
-prefix /usr/lib${LIBDIRSUFFIX}/qt \
-qt-gif \
-fast \
-system-libpng \
-system-libjpeg \
-system-zlib \
+ -system-sqlite \
+ -plugin-sql-sqlite \
-dbus \
-webkit \
-no-phonon \
-nomake examples \
-nomake demos \
- -no-separate-debug-info
+ -no-separate-debug-info \
+ -no-pch
+ # No-precompiled-headers is ccache-friendly.
# Sometimes a failure happens when parallelizing make. Try again if make fails,
# but make a failure the second time around (single threaded) a fatal error:
diff --git a/source/l/qt/slack-desc b/source/l/qt/slack-desc
index 8229dd0a8..3f77a7fb4 100644
--- a/source/l/qt/slack-desc
+++ b/source/l/qt/slack-desc
@@ -15,5 +15,5 @@ qt:
qt:
qt:
qt:
-qt:
+qt: Homepage: http://qt.nokia.com
qt:
diff --git a/source/l/qtscriptgenerator/qtscriptgenerator.SlackBuild b/source/l/qtscriptgenerator/qtscriptgenerator.SlackBuild
index ed66c9bb5..9664ddb22 100755
--- a/source/l/qtscriptgenerator/qtscriptgenerator.SlackBuild
+++ b/source/l/qtscriptgenerator/qtscriptgenerator.SlackBuild
@@ -25,8 +25,17 @@
PRGNAM=qtscriptgenerator
VERSION=${VERSION:-0.1.0}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -50,6 +59,9 @@ elif [ "$ARCH" = "arm" ]; then
elif [ "$ARCH" = "armel" ]; then
SLKCFLAGS="-O2 -march=armv4t"
LIBDIRSUFFIX=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
# Avoid a version number in .la files:
@@ -63,6 +75,9 @@ cd $TMP
rm -rf $PRGNAM-src-$VERSION
tar xvf $CWD/$PRGNAM-src-$VERSION.tar.?z* || exit 1
cd $PRGNAM-src-$VERSION || exit 1
+
+zcat $CWD/qtscriptgenerator.gcc44.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
diff --git a/source/l/qtscriptgenerator/qtscriptgenerator.gcc44.diff b/source/l/qtscriptgenerator/qtscriptgenerator.gcc44.diff
new file mode 100644
index 000000000..165c97df0
--- /dev/null
+++ b/source/l/qtscriptgenerator/qtscriptgenerator.gcc44.diff
@@ -0,0 +1,10 @@
+--- ./generator/parser/rpp/pp-internal.h.orig 2009-02-20 05:42:24.000000000 -0600
++++ ./generator/parser/rpp/pp-internal.h 2010-02-18 19:12:22.000000000 -0600
+@@ -16,6 +16,7 @@
+ #define PP_INTERNAL_H
+
+ #include <algorithm>
++#include <cstdio>
+
+ namespace rpp {
+
diff --git a/source/l/raptor/raptor.SlackBuild b/source/l/raptor/raptor.SlackBuild
index 386ef4c45..1c57b5d09 100755
--- a/source/l/raptor/raptor.SlackBuild
+++ b/source/l/raptor/raptor.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007 Heinz Wiesinger <hmwiesinger@gmx.at>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,10 +25,19 @@
# No added terms or copyright claims
-VERSION=1.4.18
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo raptor-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:--j6}
CWD=$(pwd)
@@ -44,13 +53,16 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf raptor-$VERSION
-tar xvf $CWD/raptor-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/raptor-$VERSION.tar.xz || exit 1
cd raptor-$VERSION || exit 1
chown -R root:root .
find . \
@@ -83,13 +95,21 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
mkdir -p $PKG/usr/doc/raptor-$VERSION
cp -a \
- AUTHORS ChangeLog* COPYING* INSTALL* LICENSE* NEWS* \
+ AUTHORS COPYING* INSTALL* LICENSE* NEWS* \
NOTICE README* RELEASE.html \
$PKG/usr/doc/raptor-$VERSION
( cd $PKG/usr/doc/raptor-$VERSION
ln -s /usr/share/gtk-doc/html/raptor html
)
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/rasqal/rasqal.SlackBuild b/source/l/rasqal/rasqal.SlackBuild
index 730d952d4..9ef4cbf3e 100755
--- a/source/l/rasqal/rasqal.SlackBuild
+++ b/source/l/rasqal/rasqal.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007 Heinz Wiesinger <hmwiesinger@gmx.at>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,18 +22,27 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Modified by Robby Workman <rworkman@slackware.com>
+# Modified by Eric Hameleers <alien@slackware.com>
# No added terms or copyright claims
-
-VERSION=0.9.16
-ARCH=${ARCH:-x86_64}
+PKGNAM=rasqal
+VERSION=${VERSION:-0.9.19}
BUILD=${BUILD:-1}
-
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-rasqal
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -44,14 +53,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf rasqal-$VERSION
-tar xvf $CWD/rasqal-$VERSION.tar.bz2 || exit 1
-cd rasqal-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -81,17 +93,17 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
)
-mkdir -p $PKG/usr/doc/rasqal-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING* INSTALL INSTALL.html LICENSE* NEWS* NOTICE README* \
- $PKG/usr/doc/rasqal-$VERSION
-( cd $PKG/usr/doc/rasqal-$VERSION
- ln -s /usr/share/gtk-doc/html/rasqal html
+ $PKG/usr/doc/$PKGNAM-$VERSION
+( cd $PKG/usr/doc/$PKGNAM-$VERSION
+ ln -s /usr/share/gtk-doc/html/$PKGNAM html
)
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/rasqal-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/rasqal/rasqal.info b/source/l/rasqal/rasqal.info
deleted file mode 100644
index 9605aee70..000000000
--- a/source/l/rasqal/rasqal.info
+++ /dev/null
@@ -1,5 +0,0 @@
-PRGNAM="rasqal"
-VERSION="0.9.15"
-HOMEPAGE="http://librdf.org/"
-DOWNLOAD="http://download.librdf.org/source/rasqal-0.9.15.tar.gz"
-MD5SUM="22aa82cd8953e2a870b6f183268a957f"
diff --git a/source/l/rasqal/slack-desc b/source/l/rasqal/slack-desc
index b029384b4..46e8b19c1 100644
--- a/source/l/rasqal/slack-desc
+++ b/source/l/rasqal/slack-desc
@@ -7,6 +7,6 @@ rasqal: constructing the queries, executing them and returning result formats.
rasqal: It currently handles the RDF Data Query Language (RDQL) and SPARQL
rasqal: Query language.
rasqal:
-rasqal: Homepage: http://librdf.org/
rasqal:
+rasqal: Homepage: http://librdf.org/
rasqal:
diff --git a/source/l/redland/redland.SlackBuild b/source/l/redland/redland.SlackBuild
index 893d80efe..85ee69242 100755
--- a/source/l/redland/redland.SlackBuild
+++ b/source/l/redland/redland.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007 Heinz Wiesinger <hmwiesinger@gmx.at>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,17 +22,28 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Modified by Robby Workman <rworkman@slackware.com>
+# Modified by Eric Hameleers <alien@slackware.com>
# No added terms and no copyright claims
-VERSION=1.0.8
-ARCH=${ARCH:-x86_64}
+PKGNAM=redland
+VERSION=${VERSION:-1.0.10}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-redland
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -43,14 +54,18 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf redland-$VERSION
-tar xvf $CWD/redland-$VERSION.tar.bz2 || exit 1
-cd redland-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -58,6 +73,16 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+if [ "$VERSION" = "1.0.9" ]; then
+ echo "Fixing a bug in redland-1.0.9 that breaks nepomuk..."
+ for i in MYSQL POSTGRESQL SQLITE TSTORE; do
+ sed -i "s/LIBADD = @${i}_LIBS@/LIBADD = @${i}_LIBS@ librdf.la/" \
+ src/Makefile.in
+ done
+elif [ "$VERSION" = "1.0.10" ]; then
+ sed -i "s/virtuoso_la_LIBADD = @ODBC_LIBS@/virtuoso_la_LIBADD = @ODBC_LIBS@ librdf.la/" src/Makefile.in
+fi
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -67,9 +92,14 @@ CXXFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--mandir=/usr/man \
--disable-static \
+ --with-included-ltdl=no \
+ --with-bdb-lib=/usr/lib${LIBDIRSUFFIX} \
--with-threads \
--build=$ARCH-slackware-linux
+# Prevent error "No rule to make target `-lltdl', needed by `librdf.la'"
+sed -i -e 's# -lltdl$# #' -e '/^LIBS =/s# = # = -lltdl #' src/Makefile
+
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
@@ -81,18 +111,18 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
)
-mkdir -p $PKG/usr/doc/redland-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING* INSTALL INSTALL.html LICENSE* NEWS* NOTICE \
README* RELEASE.html TODO* \
- $PKG/usr/doc/redland-$VERSION
-( cd $PKG/usr/doc/redland-$VERSION
- ln -s /usr/share/gtk-doc/html/redland html
+ $PKG/usr/doc/$PKGNAM-$VERSION
+( cd $PKG/usr/doc/$PKGNAM-$VERSION
+ ln -s /usr/share/gtk-doc/html/$PKGNAM html
)
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/redland-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/redland/redland.info b/source/l/redland/redland.info
deleted file mode 100644
index 4ff4571c6..000000000
--- a/source/l/redland/redland.info
+++ /dev/null
@@ -1,5 +0,0 @@
-PRGNAM="redland"
-VERSION="1.0.7"
-HOMEPAGE="http://librdf.org/"
-DOWNLOAD="http://download.librdf.org/source/redland-1.0.7.tar.gz"
-MD5SUM="4c066d3dcf6c25f8fb8c9007e73f293c"
diff --git a/source/l/sdl/SDL_mixer-1.2.8.usrlocal.diff b/source/l/sdl/SDL_mixer-1.2.8.usrlocal.diff
deleted file mode 100644
index 3ae36ae72..000000000
--- a/source/l/sdl/SDL_mixer-1.2.8.usrlocal.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./timidity/config.h.orig 2007-07-01 21:03:51.000000000 -0500
-+++ ./timidity/config.h 2008-03-13 14:36:20.000000000 -0500
-@@ -176,7 +176,7 @@
- #if defined(__WIN32__) || defined(__OS2__)
- #define DEFAULT_PATH "\\TIMIDITY"
- #else
--#define DEFAULT_PATH "/usr/local/lib/timidity"
-+#define DEFAULT_PATH "/usr/lib/timidity"
- #endif
-
- /* These affect general volume */
diff --git a/source/l/sdl/SDL_mixer.usrlocal.diff b/source/l/sdl/SDL_mixer.usrlocal.diff
new file mode 100644
index 000000000..4630e9ea6
--- /dev/null
+++ b/source/l/sdl/SDL_mixer.usrlocal.diff
@@ -0,0 +1,11 @@
+--- ./timidity/config.h.orig 2010-02-14 17:14:44.000000000 -0600
++++ ./timidity/config.h 2010-02-14 17:15:45.000000000 -0600
+@@ -179,7 +179,7 @@
+ #else
+ #define DEFAULT_PATH "/etc/timidity"
+ #define DEFAULT_PATH1 "/usr/share/timidity"
+-#define DEFAULT_PATH2 "/usr/local/lib/timidity"
++#define DEFAULT_PATH2 "/usr/lib/timidity"
+ #endif
+
+ /* These affect general volume */
diff --git a/source/l/sdl/sdl.SlackBuild b/source/l/sdl/sdl.SlackBuild
index 0c351f8df..044c1f85f 100755
--- a/source/l/sdl/sdl.SlackBuild
+++ b/source/l/sdl/sdl.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,14 +20,23 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-VERSION=1.2.13
-IMAGE=1.2.7
-MIXER=1.2.8
-NET=1.2.7
-TTF=2.0.9
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-4}
+VERSION=${VERSION:-$(echo SDL-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+IMAGE=${IMAGE:-$(echo SDL_image-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+MIXER=${MIXER:-$(echo SDL_mixer-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+NET=${NET:-$(echo SDL_net-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+TTF=${TTF:-$(echo SDL_ttf-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -40,6 +49,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -50,7 +62,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf sdl-$VERSION
-tar xjf $CWD/SDL-$VERSION.tar.bz2 || exit 1
+tar xf $CWD/SDL-$VERSION.tar.?z* || exit 1
cd SDL-$VERSION
chown -R root:root .
find . \
@@ -92,7 +104,7 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
# Add SDL_image:
cd $TMP
rm -rf SDL_image-$IMAGE
-tar xjf $CWD/SDL_image-$IMAGE.tar.bz2 || exit 1
+tar xf $CWD/SDL_image-$IMAGE.tar.?z* || exit 1
cd SDL_image-$IMAGE
chown -R root:root .
find . \
@@ -123,11 +135,24 @@ cp -a \
# Add SDL_mixer:
cd $TMP
rm -rf SDL_mixer-$MIXER
-tar xjf $CWD/SDL_mixer-$MIXER.tar.bz2 || exit 1
+tar xf $CWD/SDL_mixer-$MIXER.tar.?z* || exit 1
cd SDL_mixer-$MIXER
# Don't look for things in /usr/local, since this is an installed package:
-zcat $CWD/SDL_mixer-1.2.8.usrlocal.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/SDL_mixer.usrlocal.diff.gz | patch -p1 --verbose || exit 1
+
+# Install patched static libmikmod:
+unzip libmikmod-3.1.12.zip
+( cd libmikmod-3.1.12.patched
+ ./configure \
+ --prefix=/usr/local \
+ --libdir=/usr/local/lib${LIBDIRSUFFIX} \
+ --with-pic \
+ --enable-shared=no \
+ --enable-static=yes
+ make $NUMJOBS || make || exit 1
+ make install
+)
chown -R root:root .
find . \
@@ -141,6 +166,7 @@ CFLAGS="$SLKCFLAGS" \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--mandir=/usr/man \
+ --enable-music-mod \
--enable-shared=yes \
--enable-static=no
@@ -155,7 +181,7 @@ cp -a \
# Add SDL_net:
cd $TMP
rm -rf SDL_net-$NET
-tar xjf $CWD/SDL_net-$NET.tar.bz2 || exit 1
+tar xf $CWD/SDL_net-$NET.tar.?z* || exit 1
cd SDL_net-$NET
chown -R root:root .
find . \
@@ -183,7 +209,7 @@ cp -a \
# Add SDL_ttf:
cd $TMP
rm -rf SDL_ttf-$TTF
-tar xjf $CWD/SDL_ttf-$TTF.tar.bz2 || exit 1
+tar xf $CWD/SDL_ttf-$TTF.tar.?z* || exit 1
cd SDL_ttf-$TTF
#zcat $CWD/SDL_ttf-2.0.8-noftinternals.diff.gz | patch -p1 --verbose || exit 1
diff --git a/source/l/shared-desktop-ontologies/shared-desktop-ontologies.SlackBuild b/source/l/shared-desktop-ontologies/shared-desktop-ontologies.SlackBuild
new file mode 100755
index 000000000..602012b0f
--- /dev/null
+++ b/source/l/shared-desktop-ontologies/shared-desktop-ontologies.SlackBuild
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=${VERSION:-0.3}
+BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-shared-desktop-ontologies
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf shared-desktop-ontologies-$VERSION
+tar xvf $CWD/shared-desktop-ontologies-$VERSION.tar.?z* || exit 1
+cd shared-desktop-ontologies-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ QTDIR=/usr/lib${LIBDIRSUFFIX}/qt \
+ PATH=$QTDIR/bin:$PATH \
+ cmake \
+ $KDE_OPT_ARGS \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DSYSCONF_INSTALL_DIR=/etc \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ ..
+ make $NUMJOBS || make || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd -
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/shared-desktop-ontologies-$VERSION
+cp -a \
+ AUTHORS LICENSE* README \
+ $PKG/usr/doc/shared-desktop-ontologies-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/shared-desktop-ontologies-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/shared-desktop-ontologies/slack-desc b/source/l/shared-desktop-ontologies/slack-desc
new file mode 100644
index 000000000..8057846b4
--- /dev/null
+++ b/source/l/shared-desktop-ontologies/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-------------------------------------------------------|
+shared-desktop-ontologies: shared-desktop-ontologies (Shared OSCAF desktop ontologies)
+shared-desktop-ontologies:
+shared-desktop-ontologies: The shared-desktop-ontologies package brings the semantic web to
+shared-desktop-ontologies: the desktop in terms of vocabulary. It contains the well known core
+shared-desktop-ontologies: ontologies such as RDF and RDFS as well as the Nepomuk ontologies
+shared-desktop-ontologies: which are used by projects like KDE or Strigi.
+shared-desktop-ontologies:
+shared-desktop-ontologies:
+shared-desktop-ontologies:
+shared-desktop-ontologies: Homepage: http://oscaf.sourceforge.net
+shared-desktop-ontologies:
diff --git a/source/l/shared-mime-info/doinst.sh b/source/l/shared-mime-info/doinst.sh
index bce08d419..387262254 100644
--- a/source/l/shared-mime-info/doinst.sh
+++ b/source/l/shared-mime-info/doinst.sh
@@ -1,4 +1,19 @@
+#!/bin/sh
if [ -x /usr/bin/update-mime-database ]; then
- chroot . /usr/bin/update-mime-database /usr/share/mime 1>/dev/null 2>/dev/null
+ /usr/bin/update-mime-database /usr/share/mime 1>/dev/null 2>/dev/null
+ cat /etc/passwd | while read passwdline ; do
+ homedir=$(echo $passwdline | cut -f 6 -d :)
+ if [ -d $homedir/.local/share/mime ]; then
+ username=$(echo $passwdline | cut -f 1 -d :)
+ # Sorry about the long command line, alienBOB ;-)
+ su $username -c "/usr/bin/update-mime-database $homemimedir 1>/dev/null 2>/dev/null" 2> /dev/null
+ fi
+ done
+ # This is just "cleanup" in case something might be missed in /home/*/
+ for homemimedir in /home/*/.local/share/mime ; do
+ if [ -d $homemimedir ]; then
+ username=$(echo $homemimedir | cut -f 3 -d /)
+ su $username -c "/usr/bin/update-mime-database $homemimedir 1>/dev/null 2>/dev/null" 2> /dev/null
+ fi
+ done
fi
-
diff --git a/source/l/shared-mime-info/shared-mime-info.SlackBuild b/source/l/shared-mime-info/shared-mime-info.SlackBuild
index 999527358..81d5f01ba 100755
--- a/source/l/shared-mime-info/shared-mime-info.SlackBuild
+++ b/source/l/shared-mime-info/shared-mime-info.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-0.60}
-ARCH=${ARCH:-x86_64}
+PKGNAM=shared-mime-info
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -36,19 +46,22 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-shared-mime-info
+PKG=$TMP/package-${PKGNAM}
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf shared-mime-info-$VERSION
-tar xvf $CWD/shared-mime-info-$VERSION.tar.bz2 || exit 1
-cd shared-mime-info-$VERSION || exit 1
+rm -rf ${PKGNAM}-$VERSION
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
+cd ${PKGNAM}-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -60,7 +73,7 @@ CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--mandir=/usr/man \
- --docdir=/usr/doc/shared-mime-info-$VERSION \
+ --docdir=/usr/doc/${PKGNAM}-$VERSION \
--disable-update-mimedb \
--build=$ARCH-slackware-linux
@@ -85,16 +98,24 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
)
-mkdir -p $PKG/usr/doc/shared-mime-info-$VERSION
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
COPYING* HACKING NEWS README* \
- $PKG/usr/doc/shared-mime-info-$VERSION
-chmod 644 $PKG/usr/doc/shared-mime-info-$VERSION/*
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+chmod 644 $PKG/usr/doc/${PKGNAM}-$VERSION/*
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $TMP/shared-mime-info-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/sip/sip.SlackBuild b/source/l/sip/sip.SlackBuild
index 0379743a2..e46740e49 100755
--- a/source/l/sip/sip.SlackBuild
+++ b/source/l/sip/sip.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2008 Aleksandar Samardzic <asamardzic@gmail.com>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,21 +24,31 @@
# Modified by Robby Workman <rworkman@slackware.com>
-VERSION=${VERSION:-4.7.9}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-4.10.2}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:--j6}
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-sip
+# Automatically determine architecture for build & packaging:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
PYTHONVER=$(python -V 2>&1 | cut -f 2 -d' ' | cut -f 1-2 -d.)
@@ -48,7 +58,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf sip-$VERSION
-tar xvf $CWD/sip-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/sip-$VERSION.tar.?z* || exit 1
cd sip-$VERSION || exit 1
chown -R root:root .
find . \
@@ -80,5 +90,5 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/sip-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/sip-$(echo $VERSION |tr - _)-$ARCH-$BUILD.txz
diff --git a/source/l/sip/sip.info b/source/l/sip/sip.info
index 5198037eb..034776a0b 100644
--- a/source/l/sip/sip.info
+++ b/source/l/sip/sip.info
@@ -1,2 +1,2 @@
HOMEPAGE="http://www.riverbankcomputing.co.uk/software/sip/"
-DOWNLOAD="http://www.riverbankcomputing.co.uk/static/Downloads/sip4/sip-4.7.6.tar.gz"
+DOWNLOAD="http://www.riverbankcomputing.co.uk/static/Downloads/sip4/sip-4.8.2.tar.gz"
diff --git a/source/l/sip/slack-desc b/source/l/sip/slack-desc
index d2fae243e..01147eeaf 100644
--- a/source/l/sip/slack-desc
+++ b/source/l/sip/slack-desc
@@ -13,7 +13,7 @@ sip: C and C++ libraries. It was originally developed to create PyQt,
sip: the Python bindings for the Qt toolkit, but can be used to create
sip: bindings for any C or C++ library.
sip:
-sip: Homepage: http://www.riverbankcomputing.co.uk/software/sip/
sip:
sip:
+sip: Homepage: http://www.riverbankcomputing.co.uk/software/sip/
sip:
diff --git a/source/l/slang/slang.SlackBuild b/source/l/slang/slang.SlackBuild
index 17a4f14a9..115e24af0 100755
--- a/source/l/slang/slang.SlackBuild
+++ b/source/l/slang/slang.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-2.1.4}
-#DOCV=${DOCV:-2.0.4}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-2.2.2}
+#DOCV=${DOCV:-2.2.2}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -37,6 +46,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
diff --git a/source/l/soprano/slack-desc b/source/l/soprano/slack-desc
index 387be5795..1cb3f2f8c 100644
--- a/source/l/soprano/slack-desc
+++ b/source/l/soprano/slack-desc
@@ -13,7 +13,7 @@ soprano: a nice Qt interface to RDF storage solutions. It has a modular
soprano: structure which allows to replace the actual RDF storage
soprano: implementation used.
soprano:
-soprano: Homepage: http://soprano.sourceforge.net/
soprano:
soprano:
+soprano: Homepage: http://soprano.sourceforge.net/
soprano:
diff --git a/source/l/soprano/soprano.SlackBuild b/source/l/soprano/soprano.SlackBuild
index dafbb7683..3fbdc8fc5 100755
--- a/source/l/soprano/soprano.SlackBuild
+++ b/source/l/soprano/soprano.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007-2008 Robby Workman, Northport, Alabama, USA
-# Copyright 2008-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
# Redistribution and use of this script, with or without modification, is
@@ -22,12 +22,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.2.3
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-2.4.3}
BUILD=${BUILD:-1}
-
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-soprano
@@ -41,6 +49,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -61,7 +72,6 @@ cd build
QTDIR=/usr/lib${LIBDIRSUFFIX}/qt \
PATH=$QTDIR/bin:$PATH \
cmake \
- -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
diff --git a/source/l/soprano/soprano.info b/source/l/soprano/soprano.info
deleted file mode 100644
index e66984fa5..000000000
--- a/source/l/soprano/soprano.info
+++ /dev/null
@@ -1 +0,0 @@
-HOMEPAGE="http://soprano.sourceforge.net/"
diff --git a/source/l/startup-notification/startup-notification.SlackBuild b/source/l/startup-notification/startup-notification.SlackBuild
index c4135c124..c247069fa 100755
--- a/source/l/startup-notification/startup-notification.SlackBuild
+++ b/source/l/startup-notification/startup-notification.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,16 +21,23 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=0.9
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo startup-notification-*.tar.?z* | cut -d - -f 3 | rev | cut -f 3- -d . | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
-if [ "$ARCH" = "i386" ]; then
- SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i486" ]; then
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+
+if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
@@ -39,14 +46,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-startup-notification
+
rm -rf $PKG
mkdir -p $TMP $PKG
-
cd $TMP
rm -rf startup-notification-$VERSION
tar xvf $CWD/startup-notification-$VERSION.tar.bz2 || exit 1
@@ -64,6 +74,7 @@ CFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var/lib \
+ --disable-static \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
diff --git a/source/l/strigi/strigi.SlackBuild b/source/l/strigi/strigi.SlackBuild
index 2a9dcb4ae..3a0ce7228 100755
--- a/source/l/strigi/strigi.SlackBuild
+++ b/source/l/strigi/strigi.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007-2008 Robby Workman, Northport, Alabama, USA
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=0.6.4
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo strigi-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-strigi
@@ -40,13 +50,16 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf strigi-$VERSION
-tar xvf $CWD/strigi-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/strigi-$VERSION.tar.?z* || exit 1
cd strigi-$VERSION || exit 1
chown -R root:root .
find . \
@@ -78,9 +91,17 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
mkdir -p $PKG/usr/doc/strigi-$VERSION
cp -a \
- AUTHORS COPYING ChangeLog NEWS README TODO \
+ AUTHORS COPYING NEWS README TODO \
$PKG/usr/doc/strigi-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/system-config-printer/doinst.sh b/source/l/system-config-printer/doinst.sh
new file mode 100644
index 000000000..214038e76
--- /dev/null
+++ b/source/l/system-config-printer/doinst.sh
@@ -0,0 +1,21 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/dbus-1/system.d/newprinternotification.conf.new
+config etc/dbus-1/system.d/printerdriversinstaller.conf.new
+
+# Update the desktop database:
+if [ -x usr/bin/update-desktop-database ]; then
+ chroot . /usr/bin/update-desktop-database usr/share/applications > /dev/null 2>&1
+fi
+
diff --git a/source/l/system-config-printer/slack-desc b/source/l/system-config-printer/slack-desc
new file mode 100644
index 000000000..fea4646e9
--- /dev/null
+++ b/source/l/system-config-printer/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+system-config-printer: system-config-printer (CUPS printer administration tool)
+system-config-printer:
+system-config-printer: The purpose of the tool is to configure a CUPS server (often the local
+system-config-printer: machine) using the CUPS API. The tool is written in Python, using
+system-config-printer: pygtk for the graphical parts and Python bindings (pycups) for the
+system-config-printer: CUPS API. It is largely the same as using the CUPS web interface for
+system-config-printer: configuring printers, but has the advantage of being a native
+system-config-printer: application rather than a web page.
+system-config-printer:
+system-config-printer: Home: http://cyberelk.net/tim/software/system-config-printer/
+system-config-printer:
diff --git a/source/l/system-config-printer/system-config-printer.SlackBuild b/source/l/system-config-printer/system-config-printer.SlackBuild
new file mode 100755
index 000000000..17bc73274
--- /dev/null
+++ b/source/l/system-config-printer/system-config-printer.SlackBuild
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+# Copyright 2010 Eric Hameleers, Eindhoven, NL
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Permission to use, copy, modify, and distribute this software for
+# any purpose with or without fee is hereby granted, provided that
+# the above copyright notice and this permission notice appear in all
+# copies.
+#
+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+# -----------------------------------------------------------------------------
+
+# Set initial variables:
+
+PKGNAM=system-config-printer
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:" -j4 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
+cd $PKGNAM-$VERSION || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+LDFLAGS="$SLKLDFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
+ --localstatedir=/var/lib \
+ --sysconfdir=/etc \
+ --with-udev-rules \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+# Slackware does not use PAM. Instead, your user must be in group 'lp'.
+sed -i -e 's/at_console="true"/group="lp"/g' \
+ $PKG/etc/dbus-1/system.d/newprinternotification.conf
+
+# Don't clobber the configuration file:
+mv $PKG/etc/dbus-1/system.d/newprinternotification.conf{,.new}
+mv $PKG/etc/dbus-1/system.d/printerdriversinstaller.conf{,.new}
+
+# Add documentation:
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING README \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# Compress the man page(s):
+if [ -d $PKG/usr/man ]; then
+ find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
+ for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+fi
+
+# Strip binaries (if any):
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Add a package description:
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-${VERSION}-${ARCH}-${BUILD}.txz
+
diff --git a/source/l/taglib-extras/taglib-extras.SlackBuild b/source/l/taglib-extras/taglib-extras.SlackBuild
index 307409f3f..8004a3aad 100755
--- a/source/l/taglib-extras/taglib-extras.SlackBuild
+++ b/source/l/taglib-extras/taglib-extras.SlackBuild
@@ -21,7 +21,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-0.1.3}
+VERSION=${VERSION:-1.0.1}
ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-1}
@@ -53,7 +53,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf taglib-extras
tar xvf $CWD/taglib-extras-$VERSION.tar.?z* || exit 1
-cd taglib-extras || exit 1
+cd taglib-extras-${VERSION} || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
diff --git a/source/l/taglib/taglib.SlackBuild b/source/l/taglib/taglib.SlackBuild
index 9aa57b146..b330f32b6 100755
--- a/source/l/taglib/taglib.SlackBuild
+++ b/source/l/taglib/taglib.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.5
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo taglib-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -46,7 +58,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf taglib-$VERSION
-tar xvf $CWD/taglib-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/taglib-$VERSION.tar.?z* || exit 1
cd taglib-$VERSION
chown -R root:root .
find . \
@@ -60,6 +72,8 @@ CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
+ --enable-mp4 \
+ --enable-asf \
--program-prefix="" \
--program-suffix="" \
--build=$ARCH-slackware-linux
@@ -72,7 +86,7 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
mkdir -p $PKG/usr/doc/taglib-$VERSION
cp -a \
- AUTHORS COPYING INSTALL README TODO \
+ AUTHORS COPYING* INSTALL README TODO \
$PKG/usr/doc/taglib-$VERSION
mkdir -p $PKG/install
diff --git a/source/l/urwid/urwid.SlackBuild b/source/l/urwid/urwid.SlackBuild
index 976a39836..b34a618a6 100755
--- a/source/l/urwid/urwid.SlackBuild
+++ b/source/l/urwid/urwid.SlackBuild
@@ -25,10 +25,19 @@
# Modified by Robby Workman <rworkman@slackware.com>
PRGNAM=urwid
-VERSION=0.9.8.4
-ARCH=${ARCH:-x86_64} # This should match the python package
+VERSION=0.9.9.1
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PRGNAM
@@ -36,7 +45,7 @@ PKG=$TMP/package-$PRGNAM
rm -rf $PKG $TMP/$PRGNAM-$VERSION
mkdir -p $TMP $PKG
cd $TMP || exit 1
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z
cd $PRGNAM-$VERSION || exit 1
chown -R root.root .
find . \
diff --git a/source/l/v4l-utils/slack-desc b/source/l/v4l-utils/slack-desc
new file mode 100644
index 000000000..574911598
--- /dev/null
+++ b/source/l/v4l-utils/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+v4l-utils: v4l-utils (libraries and utilities for video4linux)
+v4l-utils:
+v4l-utils: libv4l is a collection of libraries which adds a thin abstraction
+v4l-utils: layer on top of video4linux2 devices. The purpose of this (thin)
+v4l-utils: layer is to make it easy for application writers to support a wide
+v4l-utils: variety of devices without having to write seperate code for
+v4l-utils: different devices in the same class. Linux V4L2 and DVB API
+v4l-utils: utilities are also included.
+v4l-utils:
+v4l-utils: Homepage: http://freshmeat.net/projects/libv4l
+v4l-utils:
diff --git a/source/l/v4l-utils/v4l-utils.SlackBuild b/source/l/v4l-utils/v4l-utils.SlackBuild
new file mode 100755
index 000000000..5b96939c1
--- /dev/null
+++ b/source/l/v4l-utils/v4l-utils.SlackBuild
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+# Copyright 2009 Eric Hameleers, Eindhoven, NL
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=v4l-utils
+VERSION=0.8.0
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:--j6}
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Build and install:
+export CFLAGS="$SLKCFLAGS"
+export CPPFLAGS="$SLKCFLAGS"
+export LDFLAGS="$SLKLDFLAGS"
+make ${NUMJOBS} PREFIX=/usr LIBDIR=/usr/lib${LIBDIRSUFFIX} || \
+ make PREFIX=/usr LIBDIR=/usr/lib${LIBDIRSUFFIX} || \
+ exit 1
+make install PREFIX=/usr LIBDIR=/usr/lib${LIBDIRSUFFIX} DESTDIR=$PKG || exit 1
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ COPYING* ChangeLog README* TODO \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/virtuoso-ose/doinst.sh b/source/l/virtuoso-ose/doinst.sh
new file mode 100644
index 000000000..beafd37c5
--- /dev/null
+++ b/source/l/virtuoso-ose/doinst.sh
@@ -0,0 +1,15 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/virtuoso.ini.new
+
diff --git a/source/l/virtuoso-ose/slack-desc b/source/l/virtuoso-ose/slack-desc
new file mode 100644
index 000000000..dd37d0c20
--- /dev/null
+++ b/source/l/virtuoso-ose/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+virtuoso-ose: virtuoso-ose (A high-performance object-relational SQL database)
+virtuoso-ose:
+virtuoso-ose: Virtuoso is a scalable cross-platform server that combines
+virtuoso-ose: SQL/RDF/XML Data Management with Web Application Server
+virtuoso-ose: and Web Services Platform functionality.
+virtuoso-ose:
+virtuoso-ose:
+virtuoso-ose:
+virtuoso-ose:
+virtuoso-ose: Homepage: http://virtuoso.openlinksw.com/wiki/main/
+virtuoso-ose:
diff --git a/source/l/virtuoso-ose/virtuoso-ose.SlackBuild b/source/l/virtuoso-ose/virtuoso-ose.SlackBuild
new file mode 100755
index 000000000..1507719b7
--- /dev/null
+++ b/source/l/virtuoso-ose/virtuoso-ose.SlackBuild
@@ -0,0 +1,115 @@
+#!/bin/sh
+
+# Copyright 2009, 2010 Eric Hameleers, Eindhoven, NL
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=${VERSION:-6.1.1}
+BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-virtuoso-ose
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf virtuoso-opensource-$VERSION
+tar xvf $CWD/virtuoso-opensource-$VERSION.tar.xz || exit 1
+cd virtuoso-opensource-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+# We disable building of all VADs because Slackware's version of Virtuoso is
+# only used as backend for the Soprano/Nepomuk desktop search.
+# This saves us a lot of megabytes.
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+LDFLAGS="-L/usr/lib${LIBDIRSUFFIX}" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/virtuoso-ose-$VERSION \
+ --with-pthreads \
+ --enable-aio \
+ --disable-static \
+ --disable-all-vads \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Do not clobber an existing .ini file:
+mkdir -p $PKG/etc
+mv $PKG/var/lib/virtuoso/db/virtuoso.ini $PKG/etc/virtuoso.ini.new
+ln -sf /etc/virtuoso.ini $PKG/var/lib/virtuoso/db/
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/virtuoso-ose-$VERSION
+cp -a \
+ AUTHORS COPYING CREDITS LICENSE NEWS README* \
+ $PKG/usr/doc/virtuoso-ose-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/virtuoso-ose-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/l/vte/vte.SlackBuild b/source/l/vte/vte.SlackBuild
index db58daa35..d9aa44c42 100755
--- a/source/l/vte/vte.SlackBuild
+++ b/source/l/vte/vte.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,12 +22,21 @@
PKGNAM=vte
-VERSION=${VERSION:-0.20.5}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -37,6 +46,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -107,6 +119,14 @@ cp -a \
$PKG/usr/doc/${PKGNAM}-$VERSION
ln -s /usr/share/gtk-doc/html/vte $PKG/usr/doc/vte-$VERSION/html
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/wv2/wv2.SlackBuild b/source/l/wv2/wv2.SlackBuild
index 3b46bde38..79d04b50a 100755
--- a/source/l/wv2/wv2.SlackBuild
+++ b/source/l/wv2/wv2.SlackBuild
@@ -20,10 +20,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=0.2.3
-ARCH=${ARCH:-x86_64}
+VERSION=0.4.2
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -35,6 +44,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -45,7 +57,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf wv2-$VERSION
-tar xvf $CWD/wv2-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/wv2-$VERSION.tar.?z* || exit 1
cd wv2-$VERSION
chown -R root:root .
find . \
@@ -54,19 +66,21 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --disable-debug \
- --disable-static \
- --program-prefix="" \
- --program-suffix="" \
- $ARCH-slackware-linux
-
-make $NUMJOBS || make || exit 1
-make install DESTDIR=$PKG || exit 1
+mkdir -p build
+cd build
+ cmake \
+ $KDE_OPT_ARGS \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DSYSCONF_INSTALL_DIR=/etc \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ ..
+ make $NUMJOBS || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd -
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
diff --git a/source/n/alpine/alpine.SlackBuild b/source/n/alpine/alpine.SlackBuild
index 6ed64d10d..1dd64e6a6 100755
--- a/source/n/alpine/alpine.SlackBuild
+++ b/source/n/alpine/alpine.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,12 +23,22 @@
PKGNAM=alpine
VERSION=${VERSION:-2.00}
-ARCH=${ARCH:-x86_64}
-ALPINEBUILD=${ALPINEBUILD:-2}
+ALPINEBUILD=${ALPINEBUILD:-3}
IMAPDBUILD=${IMAPDBUILD:-2}
PINEPGP=${PINEPGP:-0.18.0}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# There are reports that > 1 won't work here:
+NUMJOBS=${NUMJOBS:-" -j1 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -86,11 +96,6 @@ zcat $CWD/alpine.tech-notes.txt.diff.gz | patch -p1 --verbose || exit 1
# Build and install:
# Since we build non-compliant to RFC3501 we have to answer 'y' half-way:
-echo y | make $NUMJOBS EXTRACFLAGS="-fPIC" SSLTYPE=unix
-echo y | make $NUMJOBS EXTRACFLAGS="-fPIC" SSLTYPE=unix
-echo y | make $NUMJOBS EXTRACFLAGS="-fPIC" SSLTYPE=unix
-echo y | make $NUMJOBS EXTRACFLAGS="-fPIC" SSLTYPE=unix
-echo y | make $NUMJOBS EXTRACFLAGS="-fPIC" SSLTYPE=unix
echo y | make $NUMJOBS EXTRACFLAGS="-fPIC" SSLTYPE=unix || exit 1
make install SSLTYPE=unix DESTDIR=$PKG || exit 1
diff --git a/source/n/autofs/autofs-3.1.7.diff b/source/n/autofs/autofs-3.1.7.diff
deleted file mode 100644
index 7849eae95..000000000
--- a/source/n/autofs/autofs-3.1.7.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./modules/lookup_program.c.orig Sat Mar 24 14:16:45 2001
-+++ ./modules/lookup_program.c Sat Mar 24 14:18:18 2001
-@@ -16,7 +16,7 @@
-
- #include <ctype.h>
- #include <errno.h>
--#include <limits.h>
-+#include <linux/limits.h>
- #include <malloc.h>
- #include <stdio.h>
- #include <string.h>
diff --git a/source/n/autofs/autofs-3.1.7.tar.bz2.sign b/source/n/autofs/autofs-3.1.7.tar.bz2.sign
deleted file mode 100644
index 8f80176b7..000000000
--- a/source/n/autofs/autofs-3.1.7.tar.bz2.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.0.4 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQA6A7VZyGugalF9Dw4RAkieAJ96c+Si+lGnoSf0OJCanmwE7dilBwCgieKQ
-SshwUTt1sSA9Iu3meWUm2yk=
-=1kDE
------END PGP SIGNATURE-----
diff --git a/source/n/autofs/autofs-5.0.5-fix-libxml2-workaround-configure.patch b/source/n/autofs/autofs-5.0.5-fix-libxml2-workaround-configure.patch
new file mode 100644
index 000000000..197ac6bd3
--- /dev/null
+++ b/source/n/autofs/autofs-5.0.5-fix-libxml2-workaround-configure.patch
@@ -0,0 +1,61 @@
+autofs-5.0.5 - fix libxml2 workaround configure
+
+From: Ian Kent <raven@themaw.net>
+
+The configure logic related to work around the libxml2 library
+reload issues is not quite right. The xml code is needed if
+ldap is used so it is sufficient to require inclusion of the
+workaround code if autofs is being built with LDAP support.
+---
+
+diff --git a/daemon/Makefile b/daemon/Makefile
+index 371ec72..9e9d635 100644
+--- a/daemon/Makefile
++++ b/daemon/Makefile
+@@ -23,10 +23,8 @@ LDFLAGS += -rdynamic
+ LIBS = -ldl
+
+ ifeq ($(LDAP), 1)
+- ifeq ($(SASL), 1)
+ CFLAGS += $(XML_FLAGS)
+ LIBS += $(XML_LIBS)
+- endif
+ endif
+
+ all: automount
+diff --git a/daemon/automount.c b/daemon/automount.c
+index 979ecd6..7c44d4b 100644
+--- a/daemon/automount.c
++++ b/daemon/automount.c
+@@ -38,10 +38,12 @@
+ #include <sys/utsname.h>
+
+ #include "automount.h"
+-#ifdef LIBXML2_WORKAROUND
++#if defined(LIBXML2_WORKAROUND) || defined(TIRPC_WORKAROUND)
+ #include <dlfcn.h>
++#ifdef WITH_LDAP
+ #include <libxml/parser.h>
+ #endif
++#endif
+
+ const char *program; /* Initialized with argv[0] */
+ const char *version = VERSION_STRING; /* Program version */
+@@ -2110,7 +2112,7 @@ int main(int argc, char *argv[])
+ exit(1);
+ }
+
+-#ifdef LIBXML2_WORKAROUND
++#if defined(WITH_LDAP) && defined(LIBXML2_WORKAROUND)
+ void *dh_xml2 = dlopen("libxml2.so", RTLD_NOW);
+ if (!dh_xml2)
+ dh_xml2 = dlopen("libxml2.so.2", RTLD_NOW);
+@@ -2158,7 +2160,7 @@ int main(int argc, char *argv[])
+ if (dh_tirpc)
+ dlclose(dh_tirpc);
+ #endif
+-#ifdef LIBXML2_WORKAROUND
++#if defined(WITH_LDAP) && defined( LIBXML2_WORKAROUND)
+ if (dh_xml2) {
+ xmlCleanupParser();
+ dlclose(dh_xml2);
diff --git a/source/n/autofs/autofs.SlackBuild b/source/n/autofs/autofs.SlackBuild
index 8886f3f1e..7fb29caeb 100755
--- a/source/n/autofs/autofs.SlackBuild
+++ b/source/n/autofs/autofs.SlackBuild
@@ -1,6 +1,7 @@
+
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,34 +22,49 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=3.1.7
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+PKGNAM=autofs
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
-if [ "$ARCH" = "x86_64" ]; then
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
+ SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-autofs
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
-mkdir -p $TMP $PKG/usr/{sbin,man/man{5,8}}
+mkdir -p $TMP $PKG
cd $TMP
-tar xvf $CWD/autofs-$VERSION.tar.bz2 || exit 1
-cd autofs-$VERSION || exit 1
-zcat $CWD/autofs-$VERSION.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
-# Allow x86_64 arch:
-zcat $CWD/autofs.x86_64.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
-# Compensate for modern compiler requirements:
-zcat $CWD/autofs.gcc.fix.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
-sed -i -e "s/OPEN_MAX/NR_OPEN/" $(grep -lr OPEN_MAX *)
+rm -rf $PKGNAM-$VERSION
+tar xf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
+zcat $CWD/autofs-5.0.5-fix-libxml2-workaround-configure.patch.gz | patch -p1 || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -56,22 +72,54 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# SASL requires krb5:
+
+CFLAGS="$SLKCFLAGS" \
+CPPFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
+ --mandir=/usr/man \
--libdir=/usr/lib${LIBDIRSUFFIX} \
+ --with-openldap \
+ --without-sasl \
--build=$ARCH-slackware-linux
-make || exit 1
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
-make install INSTALLROOT=$PKG || exit 1
+mv $PKG/etc/init.d $PKG/etc/rc.d
+mv $PKG/etc/rc.d/autofs $PKG/etc/rc.d/rc.autofs.new
+chmod 644 $PKG/etc/rc.d/rc.autofs.new
-strip $PKG/usr/sbin/*
-gzip -9 $PKG/usr/man/man*/*
+# Prep the config files:
+( cd $PKG/etc
+ for file in auto.master auto.misc autofs_ldap_auth.conf default/autofs ; do
+ mv $file ${file}.new
+ done
+)
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
mkdir -p $PKG/usr/doc/autofs-$VERSION
cp -a \
- COPYING COPYRIGHT NEWS README README.options TODO \
- multiserver_mount.patch samples \
+ COPYING* COPYRIGHT CREDITS INSTALL README* \
+ samples \
$PKG/usr/doc/autofs-$VERSION
( cd $PKG/usr/doc/autofs-$VERSION
find . \( -name Makefile -o -name *.in \) -exec rm -f {} \;
@@ -79,10 +127,18 @@ cp -a \
find . -type f -exec chmod 644 {} \;
)
+# If there's a CHANGELOG, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGELOG ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGELOG | head -n 1000 > $DOCSDIR/CHANGELOG
+ touch -r CHANGELOG $DOCSDIR/CHANGELOG
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
-# Build the package:
cd $PKG
/sbin/makepkg -l y -c n $TMP/autofs-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/autofs/autofs.gcc.fix.diff b/source/n/autofs/autofs.gcc.fix.diff
deleted file mode 100644
index 8b30019f7..000000000
--- a/source/n/autofs/autofs.gcc.fix.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur autofs-3.1.7/modules/lookup_file.c autofs-3.1.7-gcc/modules/lookup_file.c
---- autofs-3.1.7/modules/lookup_file.c 2000-11-04 07:05:17.000000000 +0000
-+++ autofs-3.1.7-gcc/modules/lookup_file.c 2006-08-16 18:21:21.000000000 +0100
-@@ -197,7 +197,7 @@
- }
- break;
- }
-- next_char: /* End of loop, since we can't continue;
-+ next_char:; /* End of loop, since we can't continue;
- inside a switch */
- }
-
diff --git a/source/n/autofs/autofs.x86_64.diff b/source/n/autofs/autofs.x86_64.diff
deleted file mode 100644
index 8c4bf677c..000000000
--- a/source/n/autofs/autofs.x86_64.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- autofs-3.1.7/include/linux/auto_fs.h 2000-11-04 07:05:18.000000000 +0000
-+++ auto_fs.h 2006-10-19 13:46:21.000000000 +0000
-@@ -45,7 +45,7 @@
- * If so, 32-bit user-space code should be backwards compatible.
- */
-
--#if defined(__sparc__) || defined(__mips__)
-+#if defined(__sparc__) || defined(__mips__) || defined(__s390__) || defined(__x86_64__)
- typedef unsigned int autofs_wqt_t;
- #else
- typedef unsigned long autofs_wqt_t;
diff --git a/source/n/autofs/doinst.sh b/source/n/autofs/doinst.sh
new file mode 100644
index 000000000..0b0d80309
--- /dev/null
+++ b/source/n/autofs/doinst.sh
@@ -0,0 +1,26 @@
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+# Keep same perms on rc.autofs.new:
+if [ -e etc/rc.d/rc.autofs ]; then
+ cp -a etc/rc.d/rc.autofs etc/rc.d/rc.autofs.new.incoming
+ cat etc/rc.d/rc.autofs.new > etc/rc.d/rc.autofs.new.incoming
+ mv etc/rc.d/rc.autofs.new.incoming etc/rc.d/rc.autofs.new
+fi
+
+config etc/auto.master.new
+config etc/auto.misc.new
+config etc/autofs_ldap_auth.conf.new
+config etc/default/autofs.new
+
+config etc/rc.d/rc.autofs.new
+
diff --git a/source/n/bind/bind.SlackBuild b/source/n/bind/bind.SlackBuild
index afcde9e1b..73b7d2ff2 100755
--- a/source/n/bind/bind.SlackBuild
+++ b/source/n/bind/bind.SlackBuild
@@ -22,11 +22,19 @@
PKGNAM=bind
-VERSION=${VERSION:-9.4.3-P3}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-9.4.3-P4}
NUMJOBS=${NUMJOBS:-" -j7 "}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=/bind-$(mcookie)
diff --git a/source/n/bluez-hcidump/bluez-hcidump.SlackBuild b/source/n/bluez-hcidump/bluez-hcidump.SlackBuild
index 0bef3fb99..ac2a8442c 100755
--- a/source/n/bluez-hcidump/bluez-hcidump.SlackBuild
+++ b/source/n/bluez-hcidump/bluez-hcidump.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,17 +23,32 @@
PKGNAM=bluez-hcidump
VERSION=${VERSION:-1.42}
-ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -55,6 +70,9 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Patch to build with bluez+>4.61
+zcat $CWD/hci.c_for_bluez-4.61.patch.gz | patch -p1 || exit 1
+
# Configure:
CFLAGS="$SLKCFLAGS" \
./configure \
@@ -98,9 +116,17 @@ fi
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README \
+ AUTHORS COPYING* INSTALL NEWS README* \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/n/bluez-hcidump/hci.c_for_bluez-4.61.patch b/source/n/bluez-hcidump/hci.c_for_bluez-4.61.patch
new file mode 100644
index 000000000..bcd6b4a0a
--- /dev/null
+++ b/source/n/bluez-hcidump/hci.c_for_bluez-4.61.patch
@@ -0,0 +1,21 @@
+diff -Nur bluez-hcidump-1.42.orig//parser/hci.c bluez-hcidump-1.42/parser/hci.c
+--- bluez-hcidump-1.42.orig//parser/hci.c 2008-06-15 07:46:13.000000000 -0500
++++ bluez-hcidump-1.42/parser/hci.c 2010-03-02 23:15:35.171713301 -0600
+@@ -1973,7 +1973,7 @@
+
+ static inline void read_inquiry_transmit_power_level_dump(int level, struct frame *frm)
+ {
+- read_inquiry_transmit_power_level_rp *rp = frm->ptr;
++ read_inq_response_tx_power_level_rp *rp = frm->ptr;
+
+ p_indent(level, frm);
+ printf("status 0x%2.2x level %d\n", rp->status, rp->level);
+@@ -2325,7 +2325,7 @@
+ case OCF_READ_EXT_INQUIRY_RESPONSE:
+ read_ext_inquiry_response_dump(level, frm);
+ return;
+- case OCF_READ_INQUIRY_TRANSMIT_POWER_LEVEL:
++ case OCF_READ_INQ_RESPONSE_TX_POWER_LEVEL:
+ read_inquiry_transmit_power_level_dump(level, frm);
+ return;
+ case OCF_READ_DEFAULT_ERROR_DATA_REPORTING:
diff --git a/source/n/bluez-hcidump/slack-desc b/source/n/bluez-hcidump/slack-desc
index e4c8205c2..591118373 100644
--- a/source/n/bluez-hcidump/slack-desc
+++ b/source/n/bluez-hcidump/slack-desc
@@ -6,10 +6,10 @@
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
-bluez-hcidump: bluez-hcidump (Linux Bluetooth(TM) analyzer)
+bluez-hcidump: bluez-hcidump (Bluetooth analyzer)
bluez-hcidump:
-bluez-hcidump: The bluez-hcidump package contains a network analyzer for
-bluez-hcidump: Bluetooth(TM). The hcidump utility reads raw HCI data coming from and
+bluez-hcidump: The bluez-hcidump package contains a network analyzer for Bluetooth.
+bluez-hcidump: This utility (hcidump) utility reads raw HCI data coming from and
bluez-hcidump: going to a Bluetooth device and prints commands, events and data.
bluez-hcidump:
bluez-hcidump: For more info, visit: http://www.bluez.org
diff --git a/source/n/bluez-libs/bluez-libs.SlackBuild b/source/n/bluez-libs/bluez-libs.SlackBuild
deleted file mode 100755
index e25d346d7..000000000
--- a/source/n/bluez-libs/bluez-libs.SlackBuild
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/sh
-
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-PKGNAM=bluez-libs
-VERSION=${VERSION:-3.36}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
-
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-fi
-
-cd $TMP
-rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
-cd ${PKGNAM}-$VERSION
-
-# Make sure ownerships and permissions are sane:
-chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-# Configure:
-CFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --mandir=/usr/man \
- --disable-static \
- --build=$ARCH-slackware-linux
-
-# Build and install:
-make $NUMJOBS || make || exit 1
-make install DESTDIR=$PKG || exit 1
-
-# Strip binaries:
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-
-# Compress and link manpages, if any:
-if [ -d $PKG/usr/man ]; then
- ( cd $PKG/usr/man
- for manpagedir in $(find . -type d -name "man*") ; do
- ( cd $manpagedir
- for eachpage in $( find . -type l -maxdepth 1) ; do
- ln -s $( readlink $eachpage ).gz $eachpage.gz
- rm $eachpage
- done
- gzip -9 *.*
- )
- done
- )
-fi
-
-# Compress info files, if any:
-if [ -d $PKG/usr/info ]; then
- ( cd $PKG/usr/info
- rm -f dir
- gzip -9 *
- )
-fi
-
-# Add a documentation directory:
-mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
-cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README \
- $PKG/usr/doc/${PKGNAM}-$VERSION
-
-mkdir -p $PKG/install
-#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/n/bluez-libs/slack-desc b/source/n/bluez-libs/slack-desc
deleted file mode 100644
index f9a57e285..000000000
--- a/source/n/bluez-libs/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-bluez-libs: bluez-libs (Bluetooth(TM) wireless libraries)
-bluez-libs:
-bluez-libs: The bluez-libs package contains an implementation of the Bluetooth(TM)
-bluez-libs: wireless standards specifications for Linux.
-bluez-libs:
-bluez-libs: For more info, visit: http://www.bluez.org
-bluez-libs:
-bluez-libs:
-bluez-libs:
-bluez-libs:
-bluez-libs:
diff --git a/source/n/bluez-utils/60-bluetooth.rules b/source/n/bluez-utils/60-bluetooth.rules
deleted file mode 100644
index 0957225fd..000000000
--- a/source/n/bluez-utils/60-bluetooth.rules
+++ /dev/null
@@ -1,35 +0,0 @@
-# Brain Boxes BL-620 Bluetooth Adapter
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="Brain Boxes", SYSFS{prod_id2}=="Bluetooth PC Card", ENV{HCIOPTS}="bboxes", RUN+="bluetooth_serial"
-
-# Xircom CreditCard Bluetooth Adapter
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="Xircom", SYSFS{prod_id3}=="CBT", ENV{HCIOPTS}="xircom", RUN+="bluetooth_serial"
-
-# Xircom RealPort2 Bluetooth Adapter
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="Xircom", SYSFS{prod_id3}=="CBT", ENV{HCIOPTS}="xircom", RUN+="bluetooth_serial"
-
-# IBM Bluetooth PC Card II
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="IBM", SYSFS{prod_id2}=="Bluetooth PC Card II", ENV{HCIOPTS}="tdk", RUN+="bluetooth_serial"
-
-# TDK Bluetooth PC Card
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="TDK", SYSFS{prod_id2}=="Bluetooth PC Card II", ENV{HCIOPTS}="tdk", RUN+="bluetooth_serial"
-
-# AmbiCom BT2000C Bluetooth PC/CF Card
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="AmbiCom BT2000C", SYSFS{prod_id2}=="Bluetooth PC/CF Card", ENV{HCIOPTS}="bt2000c", RUN+="bluetooth_serial"
-
-# COM One Platinium Bluetooth PC Card
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="COM1 SA", SYSFS{prod_id2}=="MC310 CARD", ENV{HCIOPTS}="comone", RUN+="bluetooth_serial"
-
-# Sphinx PICO Card
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="SPHINX", SYSFS{prod_id2}=="BT-CARD", ENV{HCIOPTS}="picocard", RUN+="bluetooth_serial"
-
-# H-Soft blue+Card
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="H-Soft", SYSFS{prod_id2}=="Blue+CARD", ENV{HCIOPTS}="$sysfs{manf_id},$sysfs{card_id}", RUN+="bluetooth_serial"
-
-# Compaq iPAQ Bluetooth Sleeve, Belkin F8T020, any other muppet who used an OXCF950 and didn't bother to program it appropriately.
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="CF CARD", SYSFS{prod_id2}=="GENERIC", ENV{HCIOPTS}="$sysfs{manf_id},$sysfs{card_id}", RUN+="bluetooth_serial"
-
-# Zoom Bluetooth Card and Sitecom CN-504 Card
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="PCMCIA", SYSFS{prod_id2}=="Bluetooth Card", ENV{HCIOPTS}="zoom", RUN+="bluetooth_serial"
-
-# CC&C BT0100M
-SUBSYSTEM=="tty", BUS=="pcmcia", SYSFS{prod_id1}=="Bluetooth BT0100M", ENV{HCIOPTS}="bcsp 115200", RUN+="bluetooth_serial"
diff --git a/source/n/bluez-utils/README.SLACKWARE b/source/n/bluez-utils/README.SLACKWARE
deleted file mode 100644
index 795c8c5a2..000000000
--- a/source/n/bluez-utils/README.SLACKWARE
+++ /dev/null
@@ -1,18 +0,0 @@
-PIN (or passkey) management
----------------------------
-since bluez 3.0 the old pin_helper script has been replaced by
-the dbus interface. To add a default passkey for every outgoing
-request (e.g. the old /etc/bluetooth/pin file) drop it into
-/etc/bluetooth/passkeys/default. (e.g. echo -n "1234" >
-/etc/bluetooth/passkeys/default )
-To add a passkey for a specific outgoing connection replace default
-with the device's address. ( /etc/bluetooth/passkeys/aa:bb:cc:dd:ee:ff
-will contain passkey for aa:bb:cc:dd:ee:ff ).
-After adding a passkey you should restart bluetooth with
-
-/etc/init.d/bluetooth restart
-
-and the new passkeys will be registered.
-
-
-(This behaviour has been copied from Debian)
diff --git a/source/n/bluez-utils/add-passkey.c b/source/n/bluez-utils/add-passkey.c
deleted file mode 100644
index b9dcbb517..000000000
--- a/source/n/bluez-utils/add-passkey.c
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- * add-passkey.c:
- * registers as an agent for the bluez bluetooth linux stack, the code is
- * shamelessly stolen from bluez source found at http://bluez.sf.net
- *
- * BlueZ - Bluetooth protocol stack for Linux
- *
- * Copyright (C) 2005-2006 Marcel Holtmann <marcel@holtmann.org>
- *
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <getopt.h>
-#include <string.h>
-
-#include <dbus/dbus.h>
-
-#define INTERFACE "org.bluez.Security"
-
-// FIXME assumption
-#define PASSKEYMAXLENGTH 255
-
-static char *passkey = NULL;
-static char *address = NULL;
-
-static volatile sig_atomic_t __io_canceled = 0;
-static volatile sig_atomic_t __io_terminated = 0;
-
-static void sig_term(int sig)
-{
- __io_canceled = 1;
-}
-
-static DBusHandlerResult agent_filter(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- const char *name, *old, *new;
-
- if (!dbus_message_is_signal(msg, DBUS_INTERFACE_DBUS, "NameOwnerChanged"))
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-
- if (!dbus_message_get_args(msg, NULL,
- DBUS_TYPE_STRING, &name, DBUS_TYPE_STRING, &old,
- DBUS_TYPE_STRING, &new, DBUS_TYPE_INVALID)) {
- fprintf(stderr, "Invalid arguments for NameOwnerChanged signal");
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
-
- if (!strcmp(name, "org.bluez") && *new == '\0') {
- __io_terminated = 1;
- }
-
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
-static DBusHandlerResult request_message(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- DBusMessage *reply;
- const char *path, *address;
-
- if (!passkey)
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-
- if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &path,
- DBUS_TYPE_STRING, &address, DBUS_TYPE_INVALID)) {
- fprintf(stderr, "Invalid arguments for passkey Request method");
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
-
- reply = dbus_message_new_method_return(msg);
- if (!reply) {
- fprintf(stderr, "Can't create reply message\n");
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
-
- dbus_message_append_args(reply, DBUS_TYPE_STRING, &passkey,
- DBUS_TYPE_INVALID);
-
- dbus_connection_send(conn, reply, NULL);
-
- dbus_connection_flush(conn);
-
- dbus_message_unref(reply);
-
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-static DBusHandlerResult release_message(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- DBusMessage *reply;
-
- if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_INVALID)) {
- fprintf(stderr, "Invalid arguments for passkey Release method");
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
-
- reply = dbus_message_new_method_return(msg);
- if (!reply) {
- fprintf(stderr, "Can't create reply message\n");
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
-
- dbus_message_append_args(reply, DBUS_TYPE_INVALID);
-
- dbus_connection_send(conn, reply, NULL);
-
- dbus_connection_flush(conn);
-
- dbus_message_unref(reply);
-
- if (!__io_canceled)
- fprintf(stderr, "Passkey service has been released\n");
-
- __io_terminated = 1;
-
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-static DBusHandlerResult agent_message(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- if (dbus_message_is_method_call(msg, "org.bluez.PasskeyAgent", "Request"))
- return request_message(conn, msg, data);
-
- if (dbus_message_is_method_call(msg, "org.bluez.PasskeyAgent", "Release"))
- return release_message(conn, msg, data);
-
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
-static const DBusObjectPathVTable agent_table = {
- .message_function = agent_message,
-};
-
-static int register_agent(DBusConnection *conn, const char *agent_path,
- const char *remote_address, int use_default)
-{
- DBusMessage *msg, *reply;
- DBusError err;
- const char *path, *method, *address = remote_address;
-
- if (!dbus_connection_register_object_path(conn, agent_path,
- &agent_table, NULL)) {
- fprintf(stderr, "Can't register path object path for agent\n");
- return -1;
- }
-
- if (use_default) {
- path = "/org/bluez";
- method = "RegisterDefaultPasskeyAgent";
- } else {
- path = "/org/bluez/hci0";
- method = "RegisterPasskeyAgent";
- }
-
- msg = dbus_message_new_method_call("org.bluez", path, INTERFACE, method);
- if (!msg) {
- fprintf(stderr, "Can't allocate new method call\n");
- return -1;
- }
-
- if (use_default)
- dbus_message_append_args(msg, DBUS_TYPE_STRING, &agent_path,
- DBUS_TYPE_INVALID);
- else
- dbus_message_append_args(msg, DBUS_TYPE_STRING, &agent_path,
- DBUS_TYPE_STRING, &address, DBUS_TYPE_INVALID);
-
- dbus_error_init(&err);
-
- reply = dbus_connection_send_with_reply_and_block(conn, msg, -1, &err);
-
- dbus_message_unref(msg);
-
- if (!reply) {
- fprintf(stderr, "Can't register passkey agent\n");
- if (dbus_error_is_set(&err)) {
- fprintf(stderr, "%s\n", err.message);
- dbus_error_free(&err);
- }
- return -1;
- }
-
- dbus_message_unref(reply);
-
- dbus_connection_flush(conn);
-
- return 0;
-}
-
-static int unregister_agent(DBusConnection *conn, const char *agent_path,
- const char *remote_address, int use_default)
-{
- DBusMessage *msg, *reply;
- DBusError err;
- const char *path, *method, *address = remote_address;
-
- if (use_default) {
- path = "/org/bluez";
- method = "UnregisterDefaultPasskeyAgent";
- } else {
- path = "/org/bluez/hci0";
- method = "UnregisterPasskeyAgent";
- }
-
- msg = dbus_message_new_method_call("org.bluez", path, INTERFACE, method);
- if (!msg) {
- fprintf(stderr, "Can't allocate new method call\n");
- dbus_connection_close(conn);
- exit(1);
- }
-
- if (use_default)
- dbus_message_append_args(msg, DBUS_TYPE_STRING, &agent_path,
- DBUS_TYPE_INVALID);
- else
- dbus_message_append_args(msg, DBUS_TYPE_STRING, &agent_path,
- DBUS_TYPE_STRING, &address, DBUS_TYPE_INVALID);
-
- dbus_error_init(&err);
-
- reply = dbus_connection_send_with_reply_and_block(conn, msg, -1, &err);
-
- dbus_message_unref(msg);
-
- if (!reply) {
- fprintf(stderr, "Can't unregister passkey agent\n");
- if (dbus_error_is_set(&err)) {
- fprintf(stderr, "%s\n", err.message);
- dbus_error_free(&err);
- }
- return -1;
- }
-
- dbus_message_unref(reply);
-
- dbus_connection_flush(conn);
-
- dbus_connection_unregister_object_path(conn, agent_path);
-
- return 0;
-}
-
-static void usage(void)
-{
-// printf("Bluetooth passkey agent ver %s\n\n", VERSION);
-
- printf("Usage:\n"
- "\tadd-passkey [--passkey-fd n] [--default] [--path agent-path] [address]\n"
- "\n"
- "add-passkey will read from passkey-fd (default: stdin) adding a default passkey\n"
- "if --default is given, or for a specific address if supplied on commandline.\n\n"
- "--default or address are mandatory.\n"
- "this program is based on bluez passkey-agent.c from http://bluez.sf.net\n"
- "\n");
-}
-
-static struct option main_options[] = {
- { "passkey-fd", 1, 0, 'f'},
- { "default", 0, 0, 'd' },
- { "path", 1, 0, 'p' },
- { "help", 0, 0, 'h' },
- { 0, 0, 0, 0 }
-};
-
-int main(int argc, char *argv[])
-{
- struct sigaction sa;
- DBusConnection *conn;
- char match_string[128], default_path[128], *agent_path = NULL;
- int opt, use_default = 0, passkey_fd = 0;
- char *tmppasskey;
-
- snprintf(default_path, sizeof(default_path),
- "/org/bluez/passkey_agent_%d", getpid());
-
- while ((opt = getopt_long(argc, argv, "+fdp:h", main_options, NULL)) != EOF) {
- switch(opt) {
- case 'f':
- passkey_fd = atoi(optarg);
- case 'd':
- use_default = 1;
- break;
- case 'p':
- if (optarg[0] != '/') {
- fprintf(stderr, "Invalid path\n");
- exit(1);
- }
- agent_path = strdup(optarg);
- break;
- case 'h':
- usage();
- exit(0);
- default:
- exit(1);
- }
- }
-
- argc -= optind;
- argv += optind;
- optind = 0;
-
- if (argc < 1 && !use_default) {
- usage();
- exit(1);
- }
-
- passkey = malloc(PASSKEYMAXLENGTH * sizeof(char));
-
- if (!read(passkey_fd, passkey, PASSKEYMAXLENGTH)) {
- fprintf(stderr, "Unable to read passkey from fd %d\n", passkey_fd);
- exit(1);
- }
-
- if (tmppasskey = index(passkey, '\n')) {
- *tmppasskey = '\0';
- }
-
- address = (argc > 0) ? strdup(argv[0]) : NULL;
-
- if (!use_default && !address) {
- usage();
- exit(1);
- }
-
- if (!agent_path)
- agent_path = strdup(default_path);
-
- conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
- if (!conn) {
- fprintf(stderr, "Can't get on system bus");
- exit(1);
- }
-
- if (register_agent(conn, agent_path, address, use_default) < 0) {
- dbus_connection_close(conn);
- exit(1);
- }
-
- if (!dbus_connection_add_filter(conn, agent_filter, NULL, NULL))
- fprintf(stderr, "Can't add signal filter");
-
- snprintf(match_string, sizeof(match_string),
- "interface=%s,member=NameOwnerChanged,arg0=%s",
- DBUS_INTERFACE_DBUS, "org.bluez");
-
- dbus_bus_add_match(conn, match_string, NULL);
-
- memset(&sa, 0, sizeof(sa));
- sa.sa_flags = SA_NOCLDSTOP;
- sa.sa_handler = sig_term;
- sigaction(SIGTERM, &sa, NULL);
- sigaction(SIGINT, &sa, NULL);
-
- while (!__io_canceled && !__io_terminated) {
- if (dbus_connection_read_write_dispatch(conn, 100) != TRUE)
- break;
- }
-
- if (!__io_terminated)
- unregister_agent(conn, agent_path, address, use_default);
-
- if (passkey)
- free(passkey);
-
- dbus_connection_close(conn);
-
- return 0;
-}
diff --git a/source/n/bluez-utils/bluetooth.conf b/source/n/bluez-utils/bluetooth.conf
deleted file mode 100644
index c0476237a..000000000
--- a/source/n/bluez-utils/bluetooth.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-<!-- This configuration file specifies the required security policies
- for Bluetooth core daemon to work. -->
-
-<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
-
- <!-- ../system.conf have denied everything, so we just punch some holes -->
-
- <policy user="root">
- <allow own="org.bluez"/>
- <allow send_destination="org.bluez"/>
- <allow send_interface="org.bluez.Agent"/>
- </policy>
-
- <policy at_console="true">
- <allow send_destination="org.bluez"/>
- </policy>
-
- <policy context="default">
- <deny send_destination="org.bluez"/>
- </policy>
-
-</busconfig>
diff --git a/source/n/bluez-utils/bluez-utils.SlackBuild b/source/n/bluez-utils/bluez-utils.SlackBuild
deleted file mode 100755
index 7f8b95746..000000000
--- a/source/n/bluez-utils/bluez-utils.SlackBuild
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/bin/sh
-#
-# SlackBuild for bluez-utils
-# http://www.bluez.org
-# By SukkoPera <enjoy.the.silence@iol.it>
-# Thanks a lot to CAT for his Slackware package cration
-# guide (http://www.slacky.it/misto/tutorial/spunleashed.txt)
-#
-# Check out
-# - http://www.sukkopera.tk
-# - http://www.slacky.it
-# - http://www.nyft.org
-#
-# Notes:
-# - Many files and the whole PIN management system have been stolen from the
-# Debian package. Thanks.
-#
-# Rewritten for Slackware 2007-05 <pjv>
-
-NAME=bluez-utils
-VERSION=${VERSION:-3.36}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-7}
-
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-$NAME
-
-rm -rf $PKG
-mkdir -p $TMP $PKG
-mkdir -p $PKG/etc/rc.d \
- $PKG/etc/bluetooth/passkeys \
- $PKG/usr/lib${LIBDIRSUFFIX}/bluetooth
-# Is there any reason for a non-root user to be able to see these?
-chmod 700 $PKG/etc/bluetooth/passkeys
-cd $TMP
-rm -rf $NAME-$VERSION
-tar xvf $CWD/${NAME}-${VERSION}.tar.bz2 || exit 1
-cd $NAME-$VERSION
-
-chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --mandir=/usr/man \
- --localstatedir=/var \
- --enable-tools\
- --enable-bccmd \
- --enable-hid2hci \
- --enable-dfutool \
- --enable-hidd \
- --enable-pand \
- --enable-dund \
- --enable-cups \
- --enable-manpages \
- --enable-configfiles \
- --build=$ARCH-slackware-linux
-
-make $NUMJOBS || make || exit 1
-make install DESTDIR=$PKG
-
-mkdir -p $PKG/lib/udev
-cp -a scripts/bluetooth_serial $PKG/lib/udev/bluetooth_serial || exit 1
-chmod 755 $PKG/lib/udev/bluetooth_serial
-
-mkdir -p $PKG/lib/udev/rules.d
-cp -a scripts/bluetooth.rules $PKG/lib/udev/rules.d/60-bluetooth.rules || exit 1
-chmod 644 $PKG/lib/udev/rules.d/60-bluetooth.rules
-
-# This appears to be gone/obsolete:
-#if [ ! -e $PKG/etc/bluetooth/transfer.service ]; then
-# cat transfer/transfer.service > $PKG/etc/bluetooth/transfer.service
-#fi
-#if [ ! -e $PKG/usr/lib${LIBDIRSUFFIX}/bluetooth/bluetoothd-service-transfer -a -e transfer/bluetoothd-service-transfer ]; then
-# cat transfer/bluetoothd-service-transfer > $PKG/usr/lib${LIBDIRSUFFIX}/bluetooth/bluetoothd-service-transfer
-# chmod 755 $PKG/usr/lib${LIBDIRSUFFIX}/bluetooth/bluetoothd-service-transfer
-#fi
-
-# Install Debian's add-passkey program:
-DEBDEST=/usr/lib${LIBDIRSUFFIX}/bluetooth
-gcc $(pkg-config --libs --cflags dbus-1) -DDBUS_API_SUBJECT_TO_CHANGE \
- $CWD/add-passkey.c -o $PKG/$DEBDEST/add-passkey || exit 1
-cp $CWD/register-passkeys $PKG/$DEBDEST
-if [ "$ARCH" = "x86_64" ]; then
- sed -i "s,/usr/lib/,/usr/lib${LIBDIRSUFFIX}/,g" $PKG/$DEBDEST/register-passkeys
-fi
-chmod a+x $PKG/$DEBDEST/*
-
-# Default PIN (wow, does this seem insecure!)
-#echo "1234" > $PKG/etc/bluetooth/passkeys/default
-touch $PKG/etc/bluetooth/passkeys/default
-
-mkdir -p $PKG/usr/doc/$NAME-$VERSION
-cp -a \
- AUTHORS ChangeLog COPYING* INSTALL NEWS README $CWD/README.SLACKWARE \
- $PKG/usr/doc/$NAME-$VERSION
-( cd $PKG/etc/bluetooth
- ln -sf /usr/doc/$NAME-$VERSION/README.SLACKWARE .
-)
-
-# Arrange init scripts and config files:
-CONF=/etc/rc.d/rc.bluetooth.conf
-mkdir -p $PKG/etc/rc.d
-cp $CWD/rc.bluetooth $PKG/etc/rc.d/rc.bluetooth
-if [ "$ARCH" = "x86_64" ]; then
- sed -i "s,/usr/lib/,/usr/lib${LIBDIRSUFFIX}/,g" $PKG/etc/rc.d/rc.bluetooth
-fi
-cp -a $CWD/rc.bluetooth.conf $PKG/etc/rc.d/rc.bluetooth.conf
-sed -i "s:\(HIDD_ENABLE=\).*:\1false:" $PKG/$CONF || exit 1
-sed -i "s:\(HID2HCI_ENABLE=\).*:\1false:" $PKG/$CONF || exit 1
-
-mkdir -p $PKG/etc/bluetooth
-cp -a audio/audio.conf $PKG/etc/bluetooth
-cp -a audio/asound.conf $PKG/etc/bluetooth
-cp -a input/input.conf $PKG/etc/bluetooth
-cp -a hcid/hcid.conf $PKG/etc/bluetooth
-cp -a network/network.conf $PKG/etc/bluetooth
-cp -a rfcomm/rfcomm.conf $PKG/etc/bluetooth
-chmod 644 $PKG/etc/bluetooth/*.conf
-
-# Do not overwrite configuration
-# Well, let the dbus file be overwritten, as it is not usually user-edited.
-( cd $PKG
- for file in \
- etc/bluetooth/audio.conf \
- etc/asound.conf \
- etc/bluetooth/asound.conf \
- etc/bluetooth/input.conf \
- etc/bluetooth/hcid.conf \
- etc/bluetooth/network.conf \
- etc/bluetooth/rfcomm.conf \
- etc/bluetooth/passkeys/default \
- etc/rc.d/rc.bluetooth \
- etc/rc.d/rc.bluetooth.conf ; do
- mv ${file} ${file}.new
- done
-)
-
-# Replace the bluetooth.conf file with one from BlueZ4 that works with the newest dbus:
-cat $CWD/bluetooth.conf > $PKG/etc/dbus-1/system.d/bluetooth.conf
-
-# Compress and if needed symlink the man pages:
-if [ -d $PKG/usr/man ]; then
- ( cd $PKG/usr/man
- for manpagedir in $(find . -type d -name "man*") ; do
- ( cd $manpagedir
- for eachpage in $( find . -type l -maxdepth 1) ; do
- ln -s $( readlink $eachpage ).gz $eachpage.gz
- rm $eachpage
- done
- gzip -9 *.?
- )
- done
- )
-fi
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/$NAME-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/n/bluez-utils/doinst.sh b/source/n/bluez-utils/doinst.sh
deleted file mode 100644
index e738d14bd..000000000
--- a/source/n/bluez-utils/doinst.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-config() {
- NEW="$1"
- OLD="`dirname $NEW`/`basename $NEW .new`"
- # If there's no config file by that name, mv it over:
- if [ ! -r $OLD ]; then
- mv $NEW $OLD
- elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
- rm $NEW
- fi
- # Otherwise, we leave the .new copy for the admin to consider...
-}
-if [ ! -e etc/rc.d/rc.bluetooth -o ! -x etc/rc.d/rc.bluetooth ]; then
- chmod 644 etc/rc.d/rc.bluetooth.new
-else
- chmod 755 etc/rc.d/rc.bluetooth.new
-fi
-config etc/rc.d/rc.bluetooth.new
-config etc/rc.d/rc.bluetooth.conf.new
-config etc/bluetooth/asound.conf.new
-config etc/bluetooth/audio.conf.new
-config etc/bluetooth/hcid.conf.new
-config etc/bluetooth/input.conf.new
-config etc/bluetooth/network.conf.new
-config etc/bluetooth/rfcomm.conf.new
-config etc/bluetooth/passkeys/default.new
-
-if [ ! -e etc/asound.conf ]; then
- ( cd etc ; ln -sf bluetooth/asound.conf . )
-fi
diff --git a/source/n/bluez-utils/rc.bluetooth b/source/n/bluez-utils/rc.bluetooth
deleted file mode 100644
index cf891dcf9..000000000
--- a/source/n/bluez-utils/rc.bluetooth
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/sh
-#
-# Start/stop the Bluetooth daemons
-#
-# This version has been modified by SukkoPera, taking inspiration from then
-# Debian init script, to add support for register-passkeys. Modified by
-# Patrick Volkerding to add "restart" support, and cleaned up a tiny bit.
-
-set -e
-
-PATH=/sbin:/bin:/usr/sbin:/usr/bin
-DESC="Bluetooth subsystem"
-
-# The register-passkeys script was originally written by Debian:
-REGISTER_PASSKEYS=/usr/lib/bluetooth/register-passkeys
-
-HCID_NAME=hcid
-HIDD_NAME=hidd
-HID2HCI_NAME=hid2hci
-RFCOMM_NAME=rfcomm
-PAND_NAME=pand
-DUND_NAME=dund
-
-HCID_EXEC="`which $HCID_NAME || true`"
-HIDD_EXEC="`which $HIDD_NAME || true`"
-HID2HCI_EXEC="`which $HID2HCI_NAME || true`"
-RFCOMM_EXEC="`which $RFCOMM_NAME || true`"
-PAND_EXEC="`which $PAND_NAME || true`"
-DUND_EXEC="`which $DUND_NAME || true`"
-
-HCID_CONFIG="/etc/bluetooth/hcid.conf"
-RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
-
-# Source rc.bluetooth.conf
-. /etc/rc.d/rc.bluetooth.conf
-
-bluetooth_start() {
- echo -n "Starting $DESC: "
- if [ -x "$HIDD_EXEC" ] ; then
- if $HIDD_ENABLE && [ -x "$HIDD_EXEC" -a -n "$HIDD_OPTIONS" ] ; then
- $HIDD_EXEC $HIDD_OPTIONS || true
- echo -n " $HIDD_NAME"
- fi
- else
- echo "BlueZ does not appear to be installed!"
- exit
- fi
- # Separate sdp daemon is depreciated, now internal function.
- if $SDPD_ENABLE ; then
- $HCID_EXEC -s -f $HCID_CONFIG
- echo -n " $HCID_NAME sdp"
- else
- $HCID_EXEC -f $HCID_CONFIG
- echo -n " $HCID_NAME"
- fi
- if $HID2HCI_ENABLE && [ -x "$HID2HCI_EXEC" ] ; then
- $HID2HCI_EXEC --tohci > /dev/null 2>&1 || true
- echo -n " $HID2HCI_NAME"
- fi
- if $RFCOMM_ENABLE && [ -x "$RFCOMM_EXEC" -a -f "$RFCOMM_CONFIG" ] ; then
- $RFCOMM_EXEC -f $RFCOMM_CONFIG bind all || true
- echo -n " $RFCOMM_NAME"
- fi
- if $DUND_ENABLE && [ -x "$DUND_EXEC" -a -n "$DUND_OPTIONS" ] ; then
- $DUND_EXEC $DUND_OPTIONS
- echo -n " $DUND_NAME"
- fi
- if $PAND_ENABLE && [ -x "$PAND_EXEC" -a -n "$PAND_OPTIONS" ] ; then
- $PAND_EXEC $PAND_OPTIONS
- echo -n " $PAND_NAME"
- fi
- if [ -x $REGISTER_PASSKEYS ]; then
- $REGISTER_PASSKEYS
- echo -n " passkeys"
- fi
- echo "."
-}
-
-bluetooth_stop() {
- echo -n "Stopping $DESC: "
- killall $PAND_NAME > /dev/null 2>&1 || true
- echo -n " $PAND_NAME"
- killall $DUND_NAME > /dev/null 2>&1 || true
- echo -n " $DUND_NAME"
- if [ -x "$RFCOMM_EXEC" ] ; then
- $RFCOMM_EXEC release all > /dev/null 2>&1 || true
- echo -n " $RFCOMM_NAME"
- fi
- killall $HIDD_NAME > /dev/null 2>&1 || true
- echo -n " $HIDD_NAME"
- killall $HCID_NAME > /dev/null 2>&1 || true
- echo -n " $HCID_NAME"
- echo "."
-}
-
-case "$1" in
- start)
- bluetooth_start
- ;;
- stop)
- bluetooth_stop
- ;;
- restart)
- bluetooth_stop
- sleep 1
- bluetooth_start
- ;;
- *)
- echo "Usage: $0 start|stop|restart" >&2
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/source/n/bluez-utils/rc.bluetooth.conf b/source/n/bluez-utils/rc.bluetooth.conf
deleted file mode 100644
index 09df405fb..000000000
--- a/source/n/bluez-utils/rc.bluetooth.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-# /etc/rc.d/rc.bluetooth.conf
-#
-# This file contains the configuration for the Bluetooth subsystem, BlueZ.
-
-# The lines below allow you to configure which BlueZ daemons will be started,
-# along with any daemon-specific options.
-
-# Allowed values for each (unless otherwise noted) are "true" and "false"
-
-# =============================================================================
-
-# The SDP daemon allows clients to detect supported Bluetooth services
-SDPD_ENABLE=true
-
-# The HID daemon supports Bluetooth Human Interface Devices
-HIDD_ENABLE=false
-HIDD_OPTIONS="--server"
-
-# This switches your Bluetooth device into HCI mode, use this if your input
-# device does not support Bluetooth HID
-HID2HCI_ENABLE=false
-
-# The RFCOMM daemon is used to simulate serial connections over Bluetooth
-RFCOMM_ENABLE=true
-
-# The DUN daemon is used for Dial Up Networking over Bluetooth
-DUND_ENABLE=false
-DUND_OPTIONS="--listen --persist --msdun call dun"
-
-# The PAN daemon is used to setup a Bluetooth network.
-PAND_ENABLE=false
-PAND_OPTIONS="--listen --role NAP"
-
diff --git a/source/n/bluez-utils/register-passkeys b/source/n/bluez-utils/register-passkeys
deleted file mode 100644
index f57042c3c..000000000
--- a/source/n/bluez-utils/register-passkeys
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# register every passkey found in $PASSKEYS_DIR
-
-PASSKEYS_DIR="/etc/bluetooth/passkeys/"
-PASSKEY_AGENT="/usr/lib/bluetooth/add-passkey"
-
-cd $PASSKEYS_DIR
-
-for f in $(ls -1 ${PASSKEYS_DIR}); do
- if [ ! -r "$f" ]; then continue; fi
-
- # default passkey
- if [ "$f" == "default" ]; then
- cat "$f" | $PASSKEY_AGENT --default > /dev/null 2>&1 &
- # specific passkey
- elif echo "$f" | egrep -q '([0-9a-fA-F]{1,2}:){5}[0-9a-fA-F]{1,2}'; then
- cat "$f" | $PASSKEY_AGENT "$f" > /dev/null 2>&1 &
- fi
-done
diff --git a/source/n/bluez-utils/slack-desc b/source/n/bluez-utils/slack-desc
deleted file mode 100644
index 159f02466..000000000
--- a/source/n/bluez-utils/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-bluez-utils: bluez-utils (Utilities for working with Bluetooth(TM))
-bluez-utils:
-bluez-utils: The bluez-utils package contains utilities for supporting
-bluez-utils: Bluetooth(TM) on Linux.
-bluez-utils:
-bluez-utils: For more info, visit: http://www.bluez.org
-bluez-utils:
-bluez-utils:
-bluez-utils:
-bluez-utils:
-bluez-utils:
diff --git a/source/n/bluez/bluez.SlackBuild b/source/n/bluez/bluez.SlackBuild
new file mode 100755
index 000000000..ec5cba262
--- /dev/null
+++ b/source/n/bluez/bluez.SlackBuild
@@ -0,0 +1,196 @@
+#!/bin/sh
+
+# Slackware build script for bluez-utils - http://www.bluez.org
+
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=bluez
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/${PKGNAM}-${VERSION}.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Fixup the dbus config file for our usage:
+zcat $CWD/patches/bluez-dbus-config.patch.gz | patch -p1 --verbose || exit 1
+
+# Use a wrapper to check rc.bluetooth mode before starting bluetoothd
+zcat $CWD/patches/bluez-run_udev_helper.patch.gz | patch -p1 --verbose || exit 1
+
+# Unbreak a Dell USB mouse
+# https://bugzilla.novell.com/show_bug.cgi?id=522287
+# https://bugzilla.redhat.com/show_bug.cgi?id=517088
+zcat $CWD/patches/bluez-unbreak_dell_mouse.patch.gz | patch -p1 --verbose || exit 1
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --localstatedir=/var \
+ --enable-gstreamer \
+ --enable-alsa \
+ --enable-usb \
+ --enable-netlink \
+ --enable-tools\
+ --enable-bccmd \
+ --enable-hid2hci \
+ --enable-dfutool \
+ --enable-hidd \
+ --enable-pand \
+ --enable-dund \
+ --enable-cups \
+ --enable-service \
+ --enable-udevrules \
+ --enable-configfiles \
+ --disable-silent-rules \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+# I'm don't think we need this, but I'll leave it commented just in case:
+# http://bugs.archlinux.org/task/4930
+# The dbus-1 and bluetooth linkages are obvious, but I had to get the rt and
+# pthread ones from the old bluez-utils (VERSION=3.36) tests/Makefile
+#gcc $SLKCFLAGS $(pkg-config --cflags dbus-1) -DVERSION=3.36 \
+# -L$(pwd)/lib/.libs -ldbus-1 -lbluetooth -lpthread -lrt \
+# $CWD/passkey-agent.c -o $PKG/usr/bin/passkey-agent || exit 1
+
+cp -a scripts/bluetooth_serial $PKG/lib/udev/bluetooth_serial || exit 1
+chmod 0755 $PKG/lib/udev/bluetooth_serial
+
+cat $CWD/config/bluetooth.sh > $PKG/lib/udev/bluetooth.sh
+chmod 0755 $PKG/lib/udev/bluetooth.sh
+
+# SuSE says this is safe... :-)
+mkdir -p $PKG/etc/modprobe.d
+cat $CWD/config/bluetooth.modprobe > $PKG/etc/modprobe.d/bluetooth.conf
+
+mkdir -p $PKG/etc/bluetooth
+cp -a audio/audio.conf $PKG/etc/bluetooth
+cp -a input/input.conf $PKG/etc/bluetooth
+cp -a network/network.conf $PKG/etc/bluetooth
+cp -a serial/serial.conf $PKG/etc/bluetooth
+cp -a tools/rfcomm.conf $PKG/etc/bluetooth
+chmod 644 $PKG/etc/bluetooth/*.conf
+
+# Do not overwrite configuration
+# Well, let the dbus file be overwritten, as it is not usually user-edited.
+( cd $PKG
+ for file in \
+ etc/alsa/bluetooth.conf \
+ etc/bluetooth/audio.conf \
+ etc/bluetooth/input.conf \
+ etc/bluetooth/network.conf \
+ etc/bluetooth/serial.conf \
+ etc/bluetooth/rfcomm.conf \
+ etc/bluetooth/main.conf \
+ etc/modprobe.d/bluetooth.conf ; do
+ mv ${file} ${file}.new
+ done
+)
+
+# Add an init script
+mkdir -p $PKG/etc/rc.d
+cat $CWD/config/rc.bluetooth > $PKG/etc/rc.d/rc.bluetooth.new
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING* INSTALL NEWS README* \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/n/bluez/config/bluetooth.modprobe b/source/n/bluez/config/bluetooth.modprobe
new file mode 100644
index 000000000..3072d7885
--- /dev/null
+++ b/source/n/bluez/config/bluetooth.modprobe
@@ -0,0 +1,3 @@
+# use "reset=1" as default, since it should be safe for recent devices and
+# solves all kind of problems.
+options btusb reset=1
diff --git a/source/n/bluez/config/bluetooth.sh b/source/n/bluez/config/bluetooth.sh
new file mode 100644
index 000000000..22034551c
--- /dev/null
+++ b/source/n/bluez/config/bluetooth.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Check whether /etc/rc.d/rc.bluetooth is executable before starting
+# the bluetooth subsystem for hotplugged bluetooth devices
+[ -x /etc/rc.d/rc.bluetooth ] && exec /usr/sbin/bluetoothd --udev
+exit 0
+
diff --git a/source/n/bluez/config/rc.bluetooth b/source/n/bluez/config/rc.bluetooth
new file mode 100644
index 000000000..12540d833
--- /dev/null
+++ b/source/n/bluez/config/rc.bluetooth
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+bluez_start() {
+ # bluetoothd requires dbus, but dbus isn't started early enough during
+ # system boot, so we have to re-trigger the events now
+ udevadm trigger --subsystem-match=bluetooth --action=add
+}
+
+bluez_stop() {
+ pkill -TERM bluetoothd 1>/dev/null 2>/dev/null
+}
+
+case "$1" in
+ start)
+ bluez_start
+ ;;
+ stop)
+ bluez_stop
+ ;;
+ restart)
+ bluez_stop
+ sleep 1
+ bluez_start
+ ;;
+ *)
+ printf "Usage: $N {start|stop|restart}\n"
+ exit 1
+ ;;
+esac
+
diff --git a/source/n/bluez/doinst.sh b/source/n/bluez/doinst.sh
new file mode 100644
index 000000000..1711435e0
--- /dev/null
+++ b/source/n/bluez/doinst.sh
@@ -0,0 +1,29 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+# Keep same perms on rc.bluetooth.new:
+if [ -e etc/rc.d/rc.bluetooth ]; then
+ cp -a etc/rc.d/rc.bluetooth etc/rc.d/rc.bluetooth.new.incoming
+ cat etc/rc.d/rc.bluetooth.new > etc/rc.d/rc.bluetooth.new.incoming
+ mv etc/rc.d/rc.bluetooth.new.incoming etc/rc.d/rc.bluetooth.new
+fi
+
+config etc/alsa/bluetooth.conf.new
+config etc/rc.d/rc.bluetooth.new
+config etc/bluetooth/audio.conf.new
+config etc/bluetooth/input.conf.new
+config etc/bluetooth/main.conf.new
+config etc/bluetooth/network.conf.new
+config etc/bluetooth/serial.conf.new
+config etc/bluetooth/rfcomm.conf.new
+config etc/modprobe.d/bluetooth.conf.new
+
diff --git a/source/n/bluez/passkey-agent.c b/source/n/bluez/passkey-agent.c
new file mode 100644
index 000000000..8ac91d27d
--- /dev/null
+++ b/source/n/bluez/passkey-agent.c
@@ -0,0 +1,418 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2004-2008 Marcel Holtmann <marcel@holtmann.org>
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <getopt.h>
+#include <string.h>
+
+#include <dbus/dbus.h>
+
+#define INTERFACE "org.bluez.Security"
+
+static char *passkey = NULL;
+static char *address = NULL;
+
+static int do_reject = 0;
+
+static volatile sig_atomic_t __io_canceled = 0;
+static volatile sig_atomic_t __io_terminated = 0;
+
+static void sig_term(int sig)
+{
+ __io_canceled = 1;
+}
+
+static DBusHandlerResult agent_filter(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ const char *name, *old, *new;
+
+ if (!dbus_message_is_signal(msg, DBUS_INTERFACE_DBUS, "NameOwnerChanged"))
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+ if (!dbus_message_get_args(msg, NULL,
+ DBUS_TYPE_STRING, &name, DBUS_TYPE_STRING, &old,
+ DBUS_TYPE_STRING, &new, DBUS_TYPE_INVALID)) {
+ fprintf(stderr, "Invalid arguments for NameOwnerChanged signal");
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+
+ if (!strcmp(name, "org.bluez") && *new == '\0') {
+ fprintf(stderr, "Passkey service has been terminated\n");
+ __io_terminated = 1;
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static DBusHandlerResult request_message(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ DBusMessage *reply;
+ const char *path, *address;
+ dbus_bool_t numeric;
+
+ if (!passkey)
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+ if (!dbus_message_get_args(msg, NULL,
+ DBUS_TYPE_STRING, &path, DBUS_TYPE_STRING, &address,
+ DBUS_TYPE_BOOLEAN, &numeric, DBUS_TYPE_INVALID)) {
+ fprintf(stderr, "Invalid arguments for passkey Request method");
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+
+ if (do_reject) {
+ reply = dbus_message_new_error(msg,
+ "org.bluez.Error.Rejected", "");
+ goto send;
+ }
+
+ reply = dbus_message_new_method_return(msg);
+ if (!reply) {
+ fprintf(stderr, "Can't create reply message\n");
+ return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ }
+
+ printf("Passkey request for device %s\n", address);
+
+ dbus_message_append_args(reply, DBUS_TYPE_STRING, &passkey,
+ DBUS_TYPE_INVALID);
+
+send:
+ dbus_connection_send(conn, reply, NULL);
+
+ dbus_connection_flush(conn);
+
+ dbus_message_unref(reply);
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult cancel_message(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ DBusMessage *reply;
+ const char *path, *address;
+
+ if (!dbus_message_get_args(msg, NULL,
+ DBUS_TYPE_STRING, &path, DBUS_TYPE_STRING, &address,
+ DBUS_TYPE_INVALID)) {
+ fprintf(stderr, "Invalid arguments for passkey Confirm method");
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+
+ printf("Request canceled for device %s\n", address);
+
+ reply = dbus_message_new_method_return(msg);
+ if (!reply) {
+ fprintf(stderr, "Can't create reply message\n");
+ return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ }
+
+ dbus_connection_send(conn, reply, NULL);
+
+ dbus_connection_flush(conn);
+
+ dbus_message_unref(reply);
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult release_message(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ DBusMessage *reply;
+
+ if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_INVALID)) {
+ fprintf(stderr, "Invalid arguments for passkey Release method");
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+
+ if (!__io_canceled)
+ fprintf(stderr, "Passkey service has been released\n");
+
+ __io_terminated = 1;
+
+ reply = dbus_message_new_method_return(msg);
+ if (!reply) {
+ fprintf(stderr, "Can't create reply message\n");
+ return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ }
+
+ dbus_connection_send(conn, reply, NULL);
+
+ dbus_connection_flush(conn);
+
+ dbus_message_unref(reply);
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult agent_message(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ if (dbus_message_is_method_call(msg, "org.bluez.PasskeyAgent", "Request"))
+ return request_message(conn, msg, data);
+
+ if (dbus_message_is_method_call(msg, "org.bluez.PasskeyAgent", "Cancel"))
+ return cancel_message(conn, msg, data);
+
+ if (dbus_message_is_method_call(msg, "org.bluez.PasskeyAgent", "Release"))
+ return release_message(conn, msg, data);
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static const DBusObjectPathVTable agent_table = {
+ .message_function = agent_message,
+};
+
+static int register_agent(DBusConnection *conn, const char *agent_path,
+ const char *remote_address, int use_default)
+{
+ DBusMessage *msg, *reply;
+ DBusError err;
+ const char *path, *method, *address = remote_address;
+
+ if (!dbus_connection_register_object_path(conn, agent_path,
+ &agent_table, NULL)) {
+ fprintf(stderr, "Can't register object path for agent\n");
+ return -1;
+ }
+
+ if (use_default) {
+ path = "/org/bluez";
+ method = "RegisterDefaultPasskeyAgent";
+ } else {
+ path = "/org/bluez/hci0";
+ method = "RegisterPasskeyAgent";
+ }
+
+ msg = dbus_message_new_method_call("org.bluez", path, INTERFACE, method);
+ if (!msg) {
+ fprintf(stderr, "Can't allocate new method call\n");
+ return -1;
+ }
+
+ if (use_default)
+ dbus_message_append_args(msg, DBUS_TYPE_STRING, &agent_path,
+ DBUS_TYPE_INVALID);
+ else
+ dbus_message_append_args(msg, DBUS_TYPE_STRING, &agent_path,
+ DBUS_TYPE_STRING, &address, DBUS_TYPE_INVALID);
+
+ dbus_error_init(&err);
+
+ reply = dbus_connection_send_with_reply_and_block(conn, msg, -1, &err);
+
+ dbus_message_unref(msg);
+
+ if (!reply) {
+ fprintf(stderr, "Can't register passkey agent\n");
+ if (dbus_error_is_set(&err)) {
+ fprintf(stderr, "%s\n", err.message);
+ dbus_error_free(&err);
+ }
+ return -1;
+ }
+
+ dbus_message_unref(reply);
+
+ dbus_connection_flush(conn);
+
+ return 0;
+}
+
+static int unregister_agent(DBusConnection *conn, const char *agent_path,
+ const char *remote_address, int use_default)
+{
+ DBusMessage *msg, *reply;
+ DBusError err;
+ const char *path, *method, *address = remote_address;
+
+ if (use_default) {
+ path = "/org/bluez";
+ method = "UnregisterDefaultPasskeyAgent";
+ } else {
+ path = "/org/bluez/hci0";
+ method = "UnregisterPasskeyAgent";
+ }
+
+ msg = dbus_message_new_method_call("org.bluez", path, INTERFACE, method);
+ if (!msg) {
+ fprintf(stderr, "Can't allocate new method call\n");
+ dbus_connection_unref(conn);
+ exit(1);
+ }
+
+ if (use_default)
+ dbus_message_append_args(msg, DBUS_TYPE_STRING, &agent_path,
+ DBUS_TYPE_INVALID);
+ else
+ dbus_message_append_args(msg, DBUS_TYPE_STRING, &agent_path,
+ DBUS_TYPE_STRING, &address, DBUS_TYPE_INVALID);
+
+ dbus_error_init(&err);
+
+ reply = dbus_connection_send_with_reply_and_block(conn, msg, -1, &err);
+
+ dbus_message_unref(msg);
+
+ if (!reply) {
+ fprintf(stderr, "Can't unregister passkey agent\n");
+ if (dbus_error_is_set(&err)) {
+ fprintf(stderr, "%s\n", err.message);
+ dbus_error_free(&err);
+ }
+ return -1;
+ }
+
+ dbus_message_unref(reply);
+
+ dbus_connection_flush(conn);
+
+ dbus_connection_unregister_object_path(conn, agent_path);
+
+ return 0;
+}
+
+static void usage(void)
+{
+ printf("Bluetooth passkey agent ver %s\n\n", VERSION);
+
+ printf("Usage:\n"
+ "\tpasskey-agent [--default] [--path agent-path] <passkey> [address]\n"
+ "\n");
+}
+
+static struct option main_options[] = {
+ { "default", 0, 0, 'd' },
+ { "reject", 0, 0, 'r' },
+ { "path", 1, 0, 'p' },
+ { "help", 0, 0, 'h' },
+ { 0, 0, 0, 0 }
+};
+
+int main(int argc, char *argv[])
+{
+ struct sigaction sa;
+ DBusConnection *conn;
+ char match_string[128], default_path[128], *agent_path = NULL;
+ int opt, use_default = 0;
+
+ snprintf(default_path, sizeof(default_path),
+ "/org/bluez/passkey_agent_%d", getpid());
+
+ while ((opt = getopt_long(argc, argv, "+dp:h", main_options, NULL)) != EOF) {
+ switch(opt) {
+ case 'd':
+ use_default = 1;
+ break;
+ case 'r':
+ do_reject = 1;
+ break;
+ case 'p':
+ if (optarg[0] != '/') {
+ fprintf(stderr, "Invalid path\n");
+ exit(1);
+ }
+ agent_path = strdup(optarg);
+ break;
+ case 'h':
+ usage();
+ exit(0);
+ default:
+ exit(1);
+ }
+ }
+
+ argc -= optind;
+ argv += optind;
+ optind = 0;
+
+ if (argc < 1) {
+ usage();
+ exit(1);
+ }
+
+ passkey = strdup(argv[0]);
+ address = (argc > 1) ? strdup(argv[1]) : NULL;
+
+ if (!use_default && !address) {
+ usage();
+ exit(1);
+ }
+
+ if (!agent_path)
+ agent_path = strdup(default_path);
+
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ if (!conn) {
+ fprintf(stderr, "Can't get on system bus");
+ exit(1);
+ }
+
+ if (register_agent(conn, agent_path, address, use_default) < 0) {
+ dbus_connection_unref(conn);
+ exit(1);
+ }
+
+ if (!dbus_connection_add_filter(conn, agent_filter, NULL, NULL))
+ fprintf(stderr, "Can't add signal filter");
+
+ snprintf(match_string, sizeof(match_string),
+ "interface=%s,member=NameOwnerChanged,arg0=%s",
+ DBUS_INTERFACE_DBUS, "org.bluez");
+
+ dbus_bus_add_match(conn, match_string, NULL);
+
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_flags = SA_NOCLDSTOP;
+ sa.sa_handler = sig_term;
+ sigaction(SIGTERM, &sa, NULL);
+ sigaction(SIGINT, &sa, NULL);
+
+ while (!__io_canceled && !__io_terminated) {
+ if (dbus_connection_read_write_dispatch(conn, 500) != TRUE)
+ break;
+ }
+
+ if (!__io_terminated)
+ unregister_agent(conn, agent_path, address, use_default);
+
+ if (passkey)
+ free(passkey);
+
+ dbus_connection_unref(conn);
+
+ return 0;
+}
diff --git a/source/n/bluez/patches/bluez-dbus-config.patch b/source/n/bluez/patches/bluez-dbus-config.patch
new file mode 100644
index 000000000..4160600a5
--- /dev/null
+++ b/source/n/bluez/patches/bluez-dbus-config.patch
@@ -0,0 +1,25 @@
+Use the plugdev group for bluetooth on Slackware, and allow this to
+ work as expected with our current setup.
+
+diff -Nur bluez-4.61.orig//src/bluetooth.conf bluez-4.61/src/bluetooth.conf
+--- bluez-4.61.orig//src/bluetooth.conf 2010-02-18 17:48:50.434527785 -0600
++++ bluez-4.61/src/bluetooth.conf 2010-02-18 17:47:30.727431004 -0600
+@@ -11,11 +11,16 @@
+ <allow own="org.bluez"/>
+ <allow send_destination="org.bluez"/>
+ <allow send_interface="org.bluez.Agent"/>
++ <allow send_interface="org.bluez.Adapter"/>
+ <allow send_interface="org.bluez.HandsfreeAgent"/>
+ </policy>
+
+- <policy at_console="true">
+- <allow send_destination="org.bluez"/>
++ <policy group="plugdev">
++ <allow send_destination="org.bluez"/>
++ <allow send_interface="org.bluez.Agent"/>
++ <allow send_interface="org.bluez.Adapter"/>
++ <allow send_destination="org.bluez"
++ send_interface="org.freedesktop.DBus.Introspectable"/>
+ </policy>
+
+ <!-- allow users of lp group (printing subsystem) to
diff --git a/source/n/bluez/patches/bluez-run_udev_helper.patch b/source/n/bluez/patches/bluez-run_udev_helper.patch
new file mode 100644
index 000000000..188607453
--- /dev/null
+++ b/source/n/bluez/patches/bluez-run_udev_helper.patch
@@ -0,0 +1,12 @@
+Instead of automatically starting the bluetooth subsystem when devices
+ are added, let's invoke a wrapper script in /lib/udev and have that
+ wrapper check whether /etc/rc.d/rc.bluetooth is executable first.
+
+diff -Nur bluez-4.59.orig/scripts/bluetooth.rules.in bluez-4.59/scripts/bluetooth.rules.in
+--- bluez-4.59.orig/scripts/bluetooth.rules.in 2009-07-06 15:21:40.000000000 -0500
++++ bluez-4.59/scripts/bluetooth.rules.in 2009-12-30 11:50:37.069164823 -0600
+@@ -1,3 +1,3 @@
+ # Run helper every time a Bluetooth device appears
+ # On remove actions, bluetoothd should go away by itself
+-ACTION=="add", SUBSYSTEM=="bluetooth", RUN+="@prefix@/sbin/bluetoothd --udev"
++ACTION=="add", SUBSYSTEM=="bluetooth", RUN+="/lib/udev/bluetooth.sh"
diff --git a/source/n/bluez/patches/bluez-unbreak_dell_mouse.patch b/source/n/bluez/patches/bluez-unbreak_dell_mouse.patch
new file mode 100644
index 000000000..ec0b4a96b
--- /dev/null
+++ b/source/n/bluez/patches/bluez-unbreak_dell_mouse.patch
@@ -0,0 +1,14 @@
+One of the Dell USB mice gets broken by this rule, so we'll unbreak it.
+
+diff -Nur bluez-4.59.orig/scripts/bluetooth-hid2hci.rules bluez-4.59/scripts/bluetooth-hid2hci.rules
+--- bluez-4.59.orig/scripts/bluetooth-hid2hci.rules 2009-05-19 04:04:10.000000000 -0500
++++ bluez-4.59/scripts/bluetooth-hid2hci.rules 2009-12-30 12:34:14.165164370 -0600
+@@ -8,7 +8,7 @@
+ # 413c:8154
+ # 413c:8158
+ # 413c:8162
+-ACTION=="add", ENV{ID_VENDOR}=="413c", ENV{ID_CLASS}=="mouse", ATTRS{bmAttributes}=="e0", KERNEL=="mouse*", RUN+="/usr/sbin/hid2hci --method dell -v $env{ID_VENDOR} -p $env{ID_MODEL} --mode hci"
++# ACTION=="add", ENV{ID_VENDOR}=="413c", ENV{ID_CLASS}=="mouse", ATTRS{bmAttributes}=="e0", KERNEL=="mouse*", RUN+="/usr/sbin/hid2hci --method dell -v $env{ID_VENDOR} -p $env{ID_MODEL} --mode hci"
+
+ # Logitech devices
+ ACTION=="add", ENV{ID_VENDOR}=="046d", ENV{ID_MODEL}=="c703" RUN+="/usr/sbin/hid2hci --method logitech -v $env{ID_VENDOR} -p $env{ID_MODEL} --mode hci"
diff --git a/source/n/bluez/slack-desc b/source/n/bluez/slack-desc
new file mode 100644
index 000000000..607fa4d96
--- /dev/null
+++ b/source/n/bluez/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+bluez: bluez (Bluetooth libraries and utilities)
+bluez:
+bluez: Bluez is the Bluetooth stack for Linux, allowing Bluetooth adaptors
+bluez: and devices to be used with Linux. This package contains the Bluez
+bluez: libraries, utilities, and other support files.
+bluez:
+bluez: For more info, visit: http://www.bluez.org
+bluez:
+bluez:
+bluez:
+bluez:
diff --git a/source/n/crda/crda.SlackBuild b/source/n/crda/crda.SlackBuild
index b055ab520..93ffcd64a 100755
--- a/source/n/crda/crda.SlackBuild
+++ b/source/n/crda/crda.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2009 Robby Workman, Northport, AL, USA
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-1.0.1}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-1.1.1}
+BUILD=${BUILD:-1}
-REGDBVERS=git_20090222
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+REGDBVERS=git_20100502
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -42,6 +51,8 @@ elif [ "$ARCH" = "arm" ]; then
SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
elif [ "$ARCH" = "armel" ]; then
SLKCFLAGS="-O2 -march=armv4t"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
diff --git a/source/n/curl/cacert.pem b/source/n/curl/cacert.pem
index 2feb1e8a2..d7d20b626 100644
--- a/source/n/curl/cacert.pem
+++ b/source/n/curl/cacert.pem
@@ -1,7 +1,7 @@
##
-## cacert.pem-foo -- Bundle of CA Root Certificates
+## ca-bundle.crt -- Bundle of CA Root Certificates
##
-## Converted at: Thu Mar 26 21:23:06 2009 UTC
+## Converted at: Tue Sep 22 09:25:27 2009 UTC
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
@@ -49,7 +49,7 @@
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
-# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.51 $ $Date: 2009/01/15 22:35:15 $
+# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.53 $ $Date: 2009/05/21 19:50:28 $
Verisign/RSA Secure Server CA
=============================
@@ -3152,3 +3152,358 @@ BQUHAwIwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQQFAAOBgQCnIQKN0Q6igHcl/UNgFY/s75BH
1IRCFSYRHM3CPBApqbbfq1d1kdrlK7OQRRwwY1Y/itlQ+u1YbMBlrGZX3hzGdjv1AA6ORc5/TJDs
K8bNs7SPYtD+t8UmckTt9phbrsvRlfXaCL5oRrF1yOwdjx56lPGqU3iiRa5U6tGedMh2Zw==
-----END CERTIFICATE-----
+
+IGC/A
+=====
+-----BEGIN CERTIFICATE-----
+MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
+VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
+Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
+MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
+EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
+STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
+TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
+So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
+HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
+frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
+tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
+egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
+iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
+q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
+MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
+Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
+lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
+0mBWWg==
+-----END CERTIFICATE-----
+
+Security Communication EV RootCA1
+=================================
+-----BEGIN CERTIFICATE-----
+MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
+U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
+dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
+BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
+Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
+/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
+WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
+ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
+bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
+9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
+SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
+iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
+Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
+mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
+T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
+-----END CERTIFICATE-----
+
+OISTE WISeKey Global Root GA CA
+===============================
+-----BEGIN CERTIFICATE-----
+MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
+BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
+A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
+bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
+VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
+IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
+IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
+Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
+Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
+d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
+/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
+LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
+AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
+KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
+MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
+hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
+okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
+-----END CERTIFICATE-----
+
+S-TRUST Authentication and Encryption Root CA 2005 PN
+=====================================================
+-----BEGIN CERTIFICATE-----
+MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
+BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh
+cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT
+LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w
+NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk
+ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj
+aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp
+b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob
+4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL
+g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf
+eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3
+KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB
+/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv
+bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU
+D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD
+pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08
+P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA
+nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit
+F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b
+Hz2eBIPdltkdOpQ=
+-----END CERTIFICATE-----
+
+Microsec e-Szigno Root CA
+=========================
+-----BEGIN CERTIFICATE-----
+MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
+BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
+EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
+MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
+dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
+GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
+d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
+oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
+QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
+PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
+MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
+IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
+VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
+LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
+dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
+AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
+4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
+AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
+egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
+Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
+PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
+c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
+cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
+IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
+WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
+MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
+MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
+Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
+HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
+nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
+aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
+86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
+yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
+S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
+-----END CERTIFICATE-----
+
+Certigna
+========
+-----BEGIN CERTIFICATE-----
+MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
+EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
+MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
+Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
+XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
+GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
+ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
+DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
+Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
+tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
+BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
+SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
+hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
+PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
+1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
+WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
+-----END CERTIFICATE-----
+
+AC Ra+¡z Certic+ímara S.A.
+==========================
+-----BEGIN CERTIFICATE-----
+MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
+AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
+LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
+HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
+U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
+IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
+AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
+yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
+2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
+4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
+2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
+8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
+HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
+Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
+5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
+czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
+AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
+ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
+BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
+cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
+AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
+EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
+/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
+MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
+3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
+eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
+/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
+RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
+Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
+-----END CERTIFICATE-----
+
+TC TrustCenter Class 2 CA II
+============================
+-----BEGIN CERTIFICATE-----
+MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
+REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
+IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
+MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
+c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
+AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
+IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
+xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
+Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
+SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
+/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
+7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
+Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
+cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
+SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
+TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
+dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
+KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
+TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
+JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
+vQ==
+-----END CERTIFICATE-----
+
+TC TrustCenter Class 3 CA II
+============================
+-----BEGIN CERTIFICATE-----
+MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
+REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
+IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
+MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
+c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
+AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
+yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
+6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
+uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
+2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
+/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
+7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
+Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
+cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
+SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
+TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
+O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
+yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
+IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
+092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
+5A==
+-----END CERTIFICATE-----
+
+TC TrustCenter Universal CA I
+=============================
+-----BEGIN CERTIFICATE-----
+MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
+REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
+IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
+MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
+VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
+JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
+qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
+xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
+ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
+gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
+BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
+1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
+vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
+ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
+ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
+7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
+-----END CERTIFICATE-----
+
+Deutsche Telekom Root CA 2
+==========================
+-----BEGIN CERTIFICATE-----
+MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
+RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
+A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
+MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
+A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
+b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
+bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
+KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
+AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
+Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
+jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
+HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
+E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
+zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
+rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
+dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
+Cm26OWMohpLzGITY+9HPBVZkVw==
+-----END CERTIFICATE-----
+
+ComSign CA
+==========
+-----BEGIN CERTIFICATE-----
+MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD
+EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy
+MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp
+Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q
+ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy
+P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN
+GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk
+YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM
+rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy
+oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P
+AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+
+VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2
+QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI
+mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb
+/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG
+zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U
+AGegcQCCSA==
+-----END CERTIFICATE-----
+
+ComSign Secured CA
+==================
+-----BEGIN CERTIFICATE-----
+MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
+AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
+NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
+QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
+49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
+7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
+kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
+9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
+AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
+U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
+j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
+AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
+BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
+FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
+51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
+OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
+-----END CERTIFICATE-----
+
+Cybertrust Global Root
+======================
+-----BEGIN CERTIFICATE-----
+MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
+ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
+MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
+ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
+0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
+AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
+89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
+8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
+BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
+MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
+A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
+lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
+5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
+hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
+X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
+WL1WMRJOEcgh4LMRkWXbtKaIOM5V
+-----END CERTIFICATE-----
diff --git a/source/n/curl/curl.SlackBuild b/source/n/curl/curl.SlackBuild
index 5775024a6..1249dcb82 100755
--- a/source/n/curl/curl.SlackBuild
+++ b/source/n/curl/curl.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=7.19.6
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo curl-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
@@ -43,6 +52,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
diff --git a/source/n/dhcp/dhclient-script.PATH.diff b/source/n/dhcp/dhclient-script.PATH.diff
new file mode 100644
index 000000000..5dfe9f09c
--- /dev/null
+++ b/source/n/dhcp/dhclient-script.PATH.diff
@@ -0,0 +1,13 @@
+diff -Nur dhcp-4.1.1.orig//client/scripts/linux dhcp-4.1.1/client/scripts/linux
+--- dhcp-4.1.1.orig//client/scripts/linux 2009-04-21 09:21:09.000000000 -0500
++++ dhcp-4.1.1/client/scripts/linux 2010-03-03 09:14:33.261713322 -0600
+@@ -22,6 +22,9 @@
+ # 4. TIMEOUT not tested. ping has a flag I don't know, and I'm suspicious
+ # of the $1 in its args.
+
++PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
++export PATH
++
+ # 'ip' just looks too weird. /sbin/ip looks less weird.
+ ip=/sbin/ip
+
diff --git a/source/n/dhcp/dhcp.SlackBuild b/source/n/dhcp/dhcp.SlackBuild
index 10c211ce2..6baf041a7 100755
--- a/source/n/dhcp/dhcp.SlackBuild
+++ b/source/n/dhcp/dhcp.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,22 +20,38 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=3.1.2p1
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+
+VERSION=${VERSION:-$(echo dhcp-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-dhcp
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -43,27 +59,55 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf dhcp-$VERSION
-tar xvf $CWD/dhcp-$VERSION.tar.gz || exit 1
+tar xvf $CWD/dhcp-$VERSION.tar.?z* || exit 1
cd dhcp-$VERSION || exit 1
-./configure
-make DEBUG="$SLKCFLAGS" || exit 1
-make DEBUG="$SLKCFLAGS" install DESTDIR=$PKG || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Add PATH setting to /sbin/dhclient-script
+zcat $CWD/dhclient-script.PATH.diff.gz | patch -p1 || exit 1
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --docdir=/usr/doc/dhcp-$VERSION \
+ --build=$ARCH-slackware-linux \
+ --with-srv-lease-file=/var/state/dhcp/dhcpd.leases \
+ --with-srv6-lease-file=/var/state/dhcp/dhcpd6.leases \
+ --with-cli-lease-file=/var/state/dhcp/dhclient.leases \
+ --with-cli6-lease-file=/var/state/dhcp/dhclient6.leases
+# Default pid dir is still /var/run, so no need to declare it
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# DHCP libraries need not be included, yet.
+rm -rf $PKG/usr/{include,lib${LIBDIRSUFFIX}}
+
+# We need this in /sbin
+mkdir -p $PKG/sbin
+mv $PKG/usr/sbin/dhclient $PKG/sbin
+
+# Install the dhclient-script for linux
+cat client/scripts/linux > $PKG/sbin/dhclient-script
+chmod 700 $PKG/sbin/dhclient-script
mkdir -p $PKG/var/state/dhcp
-rm -f $PKG/var/state/dhcp/dhcpd.leases
-touch $PKG/var/state/dhcp/dhcpd.leases.new
-
-rm -rf $PKG/usr/local
-
-mkdir -p $PKG/usr/doc/dhcp-$VERSION
-cp -a \
- LICENSE README RELNOTES \
- $PKG/usr/doc/dhcp-$VERSION
-mkdir -p $PKG/usr/doc/dhcp-$VERSION/examples
-cp -a client/dhclient.conf server/dhcpd.conf \
- $PKG/usr/doc/dhcp-$VERSION/examples
-chown -R root:root $PKG/usr/doc/dhcp-$VERSION
+# The daemon should create these automatically as needed
+#touch $PKG/var/state/dhcp/dhcpd.leases.new
+#touch $PKG/var/state/dhcp/dhcpd6.leases.new
+#touch $PKG/var/state/dhcp/dhclient.leases.new
+#touch $PKG/var/state/dhcp/dhclient6.leases.new
cat << EOF > $PKG/etc/dhcpd.conf.new
# dhcpd.conf
@@ -79,37 +123,35 @@ cat << EOF > $PKG/etc/dhclient.conf.new
#
EOF
-cat client/scripts/linux > $PKG/sbin/dhclient-script
-chmod 700 $PKG/sbin/dhclient-script
-
-gzip -9 $PKG/usr/man/man?/*
-find $PKG/usr/man -type f -exec chmod 644 {} \;
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+mkdir -p $PKG/usr/doc/dhcp-$VERSION/examples
+cp -a \
+ LICENSE README RELNOTES \
+ $PKG/usr/doc/dhcp-$VERSION
+mv $PKG/etc/dhcpd.conf $PKG/etc/dhclient.conf \
+ $PKG/usr/doc/dhcp-$VERSION/examples
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
-cat << EOF > $PKG/install/doinst.sh
-#!/bin/sh
-config() {
- NEW="\$1"
- OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)"
- # If there's no config file by that name, mv it over:
- if [ ! -r \$OLD ]; then
- mv \$NEW \$OLD
- elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then # toss the redundant copy
- rm \$NEW
- fi
- # Otherwise, we leave the .new copy for the admin to consider...
-}
-config etc/dhcpd.conf.new
-config etc/dhclient.conf.new
-config var/state/dhcp/dhcpd.leases.new
-rm -f var/state/dhcp/dhcpd.leases.new
-EOF
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
-# Build the package:
cd $PKG
/sbin/makepkg -l y -c n $TMP/dhcp-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/dhcp/doinst.sh b/source/n/dhcp/doinst.sh
new file mode 100644
index 000000000..88d284f65
--- /dev/null
+++ b/source/n/dhcp/doinst.sh
@@ -0,0 +1,21 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/dhcpd.conf.new
+config etc/dhclient.conf.new
+#config var/state/dhcp/dhcpd.leases.new
+#config var/state/dhcp/dhcpd6.leases.new
+#config var/state/dhcp/dhclient.leases.new
+#config var/state/dhcp/dhclient6.leases.new
+#rm -f var/state/dhcp/*.leases.new
+
diff --git a/source/n/dhcpcd/50-ntp.conf.diff b/source/n/dhcpcd/50-ntp.conf.diff
new file mode 100644
index 000000000..d86c299e2
--- /dev/null
+++ b/source/n/dhcpcd/50-ntp.conf.diff
@@ -0,0 +1,19 @@
+diff -Nur dhcpcd-5.1.0.orig/dhcpcd-hooks/50-ntp.conf dhcpcd-5.1.0/dhcpcd-hooks/50-ntp.conf
+--- dhcpcd-5.1.0.orig/dhcpcd-hooks/50-ntp.conf 2009-09-02 15:21:11.000000000 -0500
++++ dhcpcd-5.1.0/dhcpcd-hooks/50-ntp.conf 2009-09-12 00:36:04.447859980 -0500
+@@ -8,14 +8,8 @@
+ # NTP_CONF=/usr/pkg/etc/ntpd.conf
+ # to use openntpd from pkgsrc instead of the system provided ntp.
+
+-# Detect OpenRC or BSD rc
+-# Distributions may want to just have their command here instead of this
+-if type rc-service >/dev/null 2>&1 && rc-service --exists ntpd; then
+- ntpd_restart_cmd="rc-service ntpd -- -Ds restart"
+-elif [ -x /etc/rc.d/ntpd ]; then
++if [ -x /etc/rc.d/ntpd ]; then
+ ntpd_restart_cmd="/etc/rc.d/ntpd status >/dev/null 2>&1 && /etc/rc.d/ntpd restart"
+-elif [ -x /usr/local/etc/rc.d/ntpd ]; then
+- ntpd_restart_cmd="/usr/local/etc/rc.d/ntpd status >/dev/null 2>&1 && /usr/local/etc/rc.d/ntpd restart"
+ fi
+
+ ntp_conf_dir="$state_dir/ntp.conf"
diff --git a/source/n/dhcpcd/dhcpcd.SlackBuild b/source/n/dhcpcd/dhcpcd.SlackBuild
index 409118746..3ee95a902 100755
--- a/source/n/dhcpcd/dhcpcd.SlackBuild
+++ b/source/n/dhcpcd/dhcpcd.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,27 +21,44 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-3.2.3}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo dhcpcd-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-dhcpcd
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf dhcpcd-$VERSION
-tar xvf $CWD/dhcpcd-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/dhcpcd-$VERSION.tar.?z* || exit 1
cd dhcpcd-$VERSION
chown -R root:root .
find . \
@@ -50,65 +67,49 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# This changes the default locations where *.pid and other files are
-# written - instead of various locations, use /etc/dhcpc
-# The latter directory was long traditional, and (more importantly)
-# you can't be sure that /var is mounted yet when dhcpcd is invoked.
-zcat $CWD/patches/config.h.diff.gz | patch -p1 || exit 1
-
-# Fixup the sample dhcpcd.sh script to reflect our changes
-zcat $CWD/patches/dhcpcd.sh.diff.gz | patch -p1 || exit 1
+# At this point, it should be safe to assume that /var will be mounted by the
+# time dhcpcd is called, as all non-root local filesystems are mounted from
+# /etc/rc.d/rc.S, and /var should not be on a network filesystem. As such,
+# we'll use the FHS layout instead of putting things in /etc/dhcpc
-# Fix a typo in the manpage
-zcat $CWD/patches/dhcpcd.8.in.diff.gz | patch -p1 || exit 1
-
-# Disable zeroconf support
-# I'm not sure if this is necessary, to be honest. If we do this though,
-# I think we'll want to edit the man page to remove references to it.
-#sed -i 's%#define ENABLE_IPV4LL%#undef ENABLE_IPV4LL%' config.h
-
-# Fix segfaulting on x86_64. Apparently i?86 is more forgiving
-#zcat $CWD/dhcpcd.vararg.diff.gz | patch -p1 --verbose || exit 1
+# Fixup the 50-ntp.conf hook with our init script location
+zcat $CWD/50-ntp.conf.diff.gz | patch -p1 || exit 1
+# Yes, /lib/dhcpcd is correct, even on x86_64.
CFLAGS="$SLKCFLAGS" \
- make INFODIR=/etc/dhcpc || exit 1
-
-# We'll install this manually, as the only thing "make install" actually
-# installs is the executable and the man page, and the man page goes to
-# the wrong place :-)
-mkdir -p $PKG/sbin
-cp -a dhcpcd $PKG/sbin
-
-mkdir -p $PKG/usr/man/man8
-gzip -9c dhcpcd.8 > $PKG/usr/man/man8/dhcpcd.8.gz
-
-# This script (or its equivalent) has been installed non-executable for
-# several dhcpcd releases leading me to believe this is intentional on the
-# part of the developers. Indeed, the script is called a "sample" in the
-# included comments, and there's been at least one security issue related
-# to its use in the past, so it's probably a safer bet to not install it so
-# that it works "out of the box". However, making it non-executable is not
-# the best solution for this as it leads to error messages in the system
-# logs which I hear about from time to time. Instead, we'll make it
-# executable, but will give it a suffix of -sample so that dhcpcd won't
-# attempt to run it unless the admin specifically configure it to do so.
-# As far as I can tell it does nothing more than add some extra verbosity
-# to the logs anyway, and rc.inet1 already does that. There's really no
-# need that I can see to enable the script.
-mkdir -p $PKG/etc/dhcpc
-cp -a dhcpcd.sh $PKG/etc/dhcpc/dhcpcd.sh-sample
-chmod 755 $PKG/etc/dhcpc/dhcpcd.sh-sample
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sbindir=/sbin \
+ --sysconfdir=/etc \
+ --dbdir=/var/lib/dhcpcd \
+ --libexecdir=/lib/dhcpcd \
+ --mandir=/usr/man \
+ --with-hooks="50-ntp.conf 50-yp.conf" \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG HOOKSCRIPTS="50-ntp.conf 50-yp.conf" || exit 1
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+# Let's not clobber the config file
+mv $PKG/etc/dhcpcd.conf $PKG/etc/dhcpcd.conf.new
+
+# Compress manpages
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
mkdir -p $PKG/usr/doc/dhcpcd-$VERSION
cp -a README $PKG/usr/doc/dhcpcd-$VERSION
zcat $CWD/COPYRIGHT.gz > $PKG/usr/doc/dhcpcd-$VERSION/COPYRIGHT
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $TMP/dhcpcd-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/n/dhcpcd/dhcpcd.vararg.diff b/source/n/dhcpcd/dhcpcd.vararg.diff
deleted file mode 100644
index b3ac81ca5..000000000
--- a/source/n/dhcpcd/dhcpcd.vararg.diff
+++ /dev/null
@@ -1,30 +0,0 @@
---- dhcpcd-2.0.8.orig/src/logger.c 2008-11-07 00:10:23.000000000 +0000
-+++ dhcpcd-2.0.8/src/logger.c 2008-11-07 00:13:46.000000000 +0000
-@@ -46,21 +46,25 @@
- {
- va_list p;
- va_list p2;
-+ va_list p3;
- FILE *f = stderr;
-
- va_start(p, fmt);
- va_copy(p2, p);
-+ va_copy(p3, p);
- /* The default to send debug to stderr is just WAY too much console noise, IMHO */
- if(!Daemonized && strcmp(syslog_level_msg[level],"Info")) {
- f = stdout;
- /* fprintf(f, "%s, ", syslog_level_msg[level]); */
- vfprintf(f, fmt, p);
- fputc('\n', f);
-- vsyslog(level, fmt, p);
-+ vsyslog(level, fmt, p2);
- }
- if ( level <= LogLevel )
-- vsyslog(level, fmt, p2);
-+ vsyslog(level, fmt, p3);
- va_end(p);
-+ va_end(p2);
-+ va_end(p3);
- }
-
- // vim: set ts=4 :
diff --git a/source/n/dhcpcd/doinst.sh b/source/n/dhcpcd/doinst.sh
new file mode 100644
index 000000000..a1a93b209
--- /dev/null
+++ b/source/n/dhcpcd/doinst.sh
@@ -0,0 +1,15 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/dhcpcd.conf.new
+
diff --git a/source/n/dhcpcd/patches/dhcpcd.8.in.diff b/source/n/dhcpcd/patches/dhcpcd.8.in.diff
deleted file mode 100644
index 7486c769a..000000000
--- a/source/n/dhcpcd/patches/dhcpcd.8.in.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur dhcpcd-3.2.3.orig/dhcpcd.8.in dhcpcd-3.2.3/dhcpcd.8.in
---- dhcpcd-3.2.3.orig/dhcpcd.8.in 2008-02-25 02:28:19.000000000 -0600
-+++ dhcpcd-3.2.3/dhcpcd.8.in 2009-03-06 19:36:02.207109931 -0600
-@@ -117,7 +117,7 @@
- up, down or new depending on the state of
- .Nm .
- .Nm
--ignores the exist code of the script.
-+ignores the exit code of the script.
- .Ss Fine tuning
- You can fine tune the behaviour of
- .Nm
diff --git a/source/n/dirmngr/dirmngr.SlackBuild b/source/n/dirmngr/dirmngr.SlackBuild
index d893aeb3d..1fb2e89c0 100755
--- a/source/n/dirmngr/dirmngr.SlackBuild
+++ b/source/n/dirmngr/dirmngr.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2006-2009 Robby Workman, Northport, AL, USA
-# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=dirmngr
-VERSION=1.0.3
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+PKGNAM=dirmngr
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -38,18 +47,21 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/pkg-$PRGNAM
+PKG=$TMP/pkg-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -66,7 +78,7 @@ CXXFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--mandir=/usr/man \
--infodir=/usr/info \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
--enable-static=no \
--enable-shared=yes \
--build=$ARCH-slackware-linux \
@@ -86,14 +98,22 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
rm $PKG/usr/info/dir
gzip -9 $PKG/usr/info/*
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
ABOUT-NLS AUTHORS COPYING INSTALL NEWS README* THANKS TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/dnsmasq/dnsmasq.SlackBuild b/source/n/dnsmasq/dnsmasq.SlackBuild
index 170cfab47..7b89d3efd 100755
--- a/source/n/dnsmasq/dnsmasq.SlackBuild
+++ b/source/n/dnsmasq/dnsmasq.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.49
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo dnsmasq-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-dnsmasq
@@ -34,7 +44,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf dnsmasq-$VERSION
-tar xvf $CWD/dnsmasq-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/dnsmasq-$VERSION.tar.?*z || exit 1
cd dnsmasq-$VERSION || exit 1
chown -R root:root .
find . \
@@ -45,6 +55,7 @@ find . \
zcat $CWD/dnsmasq.leasedir.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+# Default CFLAGS are "-W -Wall -O2" - that's good enough.
make $NUMJOBS all-i18n PREFIX=/usr MANDIR=/usr/man || exit 1
make install-i18n PREFIX=/usr DESTDIR=$PKG MANDIR=/usr/man || exit 1
chmod 0755 $PKG/usr/sbin/dnsmasq
@@ -77,9 +88,17 @@ zcat $CWD/rc.dnsmasq.gz > $PKG/etc/rc.d/rc.dnsmasq.new
mkdir -p $PKG/usr/doc/dnsmasq-$VERSION
cp -a \
- CHANGELOG COPYING FAQ doc.html setup.html \
+ COPYING FAQ doc.html setup.html \
$PKG/usr/doc/dnsmasq-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGELOG ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGELOG | head -n 1000 > $DOCSDIR/CHANGELOG
+ touch -r CHANGELOG $DOCSDIR/CHANGELOG
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
diff --git a/source/n/dnsmasq/dnsmasq.leasedir.diff b/source/n/dnsmasq/dnsmasq.leasedir.diff
index d0a4dafd7..9fec6b439 100644
--- a/source/n/dnsmasq/dnsmasq.leasedir.diff
+++ b/source/n/dnsmasq/dnsmasq.leasedir.diff
@@ -1,17 +1,7 @@
---- ./src/config.h.orig 2009-02-05 06:14:24.000000000 -0600
-+++ ./src/config.h 2009-02-19 17:51:07.000000000 -0600
-@@ -45,7 +45,7 @@
- # elif defined(__sun__) || defined (__sun)
- # define LEASEFILE "/var/cache/dnsmasq.leases"
- # else
--# define LEASEFILE "/var/lib/misc/dnsmasq.leases"
-+# define LEASEFILE "/var/state/dnsmasq/dnsmasq.leases"
- # endif
- #endif
-
---- ./dnsmasq.conf.example.orig 2009-01-03 14:28:51.000000000 -0600
-+++ ./dnsmasq.conf.example 2009-02-19 17:50:29.000000000 -0600
-@@ -381,7 +381,7 @@
+diff -Nur dnsmasq-2.52.orig/dnsmasq.conf.example dnsmasq-2.52/dnsmasq.conf.example
+--- dnsmasq-2.52.orig/dnsmasq.conf.example 2009-11-25 06:55:16.000000000 -0600
++++ dnsmasq-2.52/dnsmasq.conf.example 2010-01-22 15:32:41.137807274 -0600
+@@ -415,7 +415,7 @@
# The DHCP server needs somewhere on disk to keep its lease database.
# This defaults to a sane location, but if you want to change it, use
# the line below.
@@ -20,3 +10,15 @@
# Set the DHCP server to authoritative mode. In this mode it will barge in
# and take over the lease for any client which broadcasts on the network,
+diff -Nur dnsmasq-2.52.orig/src/config.h dnsmasq-2.52/src/config.h
+--- dnsmasq-2.52.orig/src/config.h 2010-01-21 08:22:06.000000000 -0600
++++ dnsmasq-2.52/src/config.h 2010-01-22 15:32:41.136833058 -0600
+@@ -47,7 +47,7 @@
+ # elif defined(__sun__) || defined (__sun)
+ # define LEASEFILE "/var/cache/dnsmasq.leases"
+ # else
+-# define LEASEFILE "/var/lib/misc/dnsmasq.leases"
++# define LEASEFILE "/var/state/dnsmasq/dnsmasq.leases"
+ # endif
+ #endif
+
diff --git a/source/n/dnsmasq/doinst.sh b/source/n/dnsmasq/doinst.sh
index 5a1ca426a..9aadc3e55 100644
--- a/source/n/dnsmasq/doinst.sh
+++ b/source/n/dnsmasq/doinst.sh
@@ -1,16 +1,26 @@
config() {
NEW="$1"
- OLD="`dirname $NEW`/`basename $NEW .new`"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
# If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
- elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
rm $NEW
fi
# Otherwise, we leave the .new copy for the admin to consider...
}
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname ${NEW})/$(basename ${NEW} .new)"
+ if [ -e ${OLD} ]; then
+ cp -a ${OLD} ${NEW}.incoming
+ cat ${NEW} > ${NEW}.incoming
+ mv ${NEW}.incoming ${NEW}
+ fi
+ config ${NEW}
+}
config etc/dnsmasq.conf.new
-config etc/rc.d/rc.dnsmasq.new
+preserve_perms etc/rc.d/rc.dnsmasq.new
# This should be mostly useless...
rm -f etc/rc.d/rc.dnsmasq.new
diff --git a/source/n/epic4/epic4.SlackBuild b/source/n/epic4/epic4.SlackBuild
deleted file mode 100755
index 0143b6eb2..000000000
--- a/source/n/epic4/epic4.SlackBuild
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/sh
-
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-VERSION=2.8
-HELPFILE=20070509
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
-
-NUMJOBS=${NUMJOBS:-" -j7 "}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-epic4
-
-rm -rf $PKG
-mkdir -p $TMP $PKG
-cd $TMP
-rm -rf epic4-$VERSION
-tar xvf $CWD/epic4-$VERSION.tar.bz2 || exit 1
-cd epic4-$VERSION || exit 1
-chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --build=$ARCH-slackware-linux
-
-make $NUMJOBS || make || exit 1
-make install IP=$PKG || exit 1
-
-( cd $PKG/usr/share/epic
- tar xvf $CWD/epic4-help-${HELPFILE}.tar.bz2 || exit 1
- chown -R root:root .
-) || exit 1
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" \
- | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-
-mkdir -p $PKG/usr/doc/epic4-$VERSION
-cp -a \
- BUG_FORM COPYRIGHT INSTALL KNOWNBUGS README* UPDATES VOTES doc \
- $PKG/usr/doc/epic4-$VERSION
-rm -f $PKG/usr/doc/epic4-$VERSION/doc/*.1
-
-gzip -9 $PKG/usr/man/man?/*.?
-
-# These extra directories are fixed in this release, but it
-# doesn't hurt to leave this code just in case...
-( cd $PKG && find . -name CVS -type d -exec rm -rf {} \; )
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/epic4-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/n/epic4/slack-desc b/source/n/epic4/slack-desc
deleted file mode 100644
index c17b4b549..000000000
--- a/source/n/epic4/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-epic4: epic4 (Internet Relay Chat client)
-epic4:
-epic4: EPIC is the (E)nhanced (P)rogrammable (I)RC-II (C)lient.
-epic4:
-epic4: The EPIC home page is: http://www.epicsol.org/
-epic4: The EPIC main ftp site is: ftp://ftp.epicsol.org/
-epic4: The EPIC IRC channel is: #epic on EFNet
-epic4:
-epic4:
-epic4:
-epic4:
diff --git a/source/n/epic5/epic5.SlackBuild b/source/n/epic5/epic5.SlackBuild
new file mode 100755
index 000000000..fb7aa1fdd
--- /dev/null
+++ b/source/n/epic5/epic5.SlackBuild
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+VERSION=1.1.2
+EPICVER=5
+HELPFILE=current
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-epic${EPICVER}
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf epic${EPICVER}-$VERSION
+tar xvf $CWD/epic${EPICVER}-$VERSION.tar.?z* || exit 1
+cd epic${EPICVER}-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install IP=$PKG || exit 1
+
+( cd $PKG/usr/share/epic${EPICVER}
+ tar xvf $CWD/epic-help-${HELPFILE}.tar.?z* || exit 1
+ chown -R root:root .
+) || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/epic${EPICVER}-$VERSION
+cp -a \
+ BUG_FORM COPYRIGHT INSTALL KNOWNBUGS README* UPDATES VOTES doc \
+ $PKG/usr/doc/epic${EPICVER}-$VERSION
+rm -f $PKG/usr/doc/epic${EPICVER}-$VERSION/doc/*.1
+
+# This is way too much. See the source if you care.
+if [ -r UPDATES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat UPDATES | head -n 1000 > $DOCSDIR/UPDATES
+ touch -r UPDATES $DOCSDIR/UPDATES
+fi
+
+gzip -9 $PKG/usr/man/man?/*.?
+
+# These extra directories are fixed in this release, but it
+# doesn't hurt to leave this code just in case...
+( cd $PKG && find . -name CVS -type d -exec rm -rf {} \; )
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/epic${EPICVER}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/n/epic5/slack-desc b/source/n/epic5/slack-desc
new file mode 100644
index 000000000..43cb81a36
--- /dev/null
+++ b/source/n/epic5/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+epic5: epic5 (Internet Relay Chat client)
+epic5:
+epic5: EPIC is the (E)nhanced (P)rogrammable (I)RC-II (C)lient.
+epic5:
+epic5: The EPIC home page is: http://www.epicsol.org/
+epic5: The EPIC main ftp site is: ftp://ftp.epicsol.org/
+epic5: The EPIC IRC channel is: #epic on EFNet
+epic5:
+epic5:
+epic5:
+epic5:
diff --git a/source/n/ethtool/ethtool.SlackBuild b/source/n/ethtool/ethtool.SlackBuild
index e485e8d31..ebe0919fd 100755
--- a/source/n/ethtool/ethtool.SlackBuild
+++ b/source/n/ethtool/ethtool.SlackBuild
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=6
-ARCH=${ARCH:-x86_64}
+VERSION=2.6.33
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-ethtool
@@ -37,14 +46,16 @@ rm -rf ethtool-$VERSION
tar xzf $CWD/ethtool-$VERSION.tar.gz || exit 1
cd ethtool-$VERSION || exit 1
chown -R root:root .
-./configure --prefix=/usr
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man
make || exit 1
make install DESTDIR=$PKG
strip $PKG/usr/sbin/ethtool
gzip -9 $PKG/usr/man/man8/ethtool.8
mkdir -p $PKG/usr/doc/ethtool-$VERSION
cp -a \
- AUTHORS COPYING ChangeLog NEWS README \
+ AUTHORS COPYING* ChangeLog LICENSE NEWS README* \
$PKG/usr/doc/ethtool-$VERSION
chmod 644 $PKG/usr/doc/ethtool-$VERSION/*
diff --git a/source/n/fetchmail/fetchmail.SlackBuild b/source/n/fetchmail/fetchmail.SlackBuild
index 11145cc9e..a69cef4d4 100755
--- a/source/n/fetchmail/fetchmail.SlackBuild
+++ b/source/n/fetchmail/fetchmail.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,19 +20,32 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=6.3.11
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+PKGNAM=fetchmail
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-fetchmail
@@ -78,7 +91,7 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
mkdir -p $PKG/usr/doc/fetchmail-$VERSION
cp -a \
- ABOUT-NLS COPYING* FAQ FEATURES INSTALL NEWS NOTES README* TODO \
+ ABOUT-NLS COPYING* FAQ FEATURES INSTALL NEWS* NOTES* README* TODO \
*.html contrib *.lsm \
$PKG/usr/doc/fetchmail-$VERSION
diff --git a/source/n/getmail/getmail.SlackBuild b/source/n/getmail/getmail.SlackBuild
index 14885943a..5a550bce6 100755
--- a/source/n/getmail/getmail.SlackBuild
+++ b/source/n/getmail/getmail.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,10 +20,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=4.11.0
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo getmail-*.tar.gz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-getmail
diff --git a/source/n/gnupg/gnupg.SlackBuild b/source/n/gnupg/gnupg.SlackBuild
index 9fab5b935..3a0a5b8ab 100755
--- a/source/n/gnupg/gnupg.SlackBuild
+++ b/source/n/gnupg/gnupg.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,10 +20,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.4.9
-ARCH=${ARCH:-x86_64}
+VERSION=1.4.10
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
@@ -36,6 +45,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
@@ -78,6 +89,14 @@ cp -a \
ln -sf /usr/share/gnupg/FAQ .
ln -sf /usr/share/gnupg/faq.html . )
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
# Add slack-desc files:
mkdir -p $PKG/install
cat $CWD/slack-desc.gnupg > $PKG/install/slack-desc
diff --git a/source/n/gnupg2/gnupg-2.0.14-encode-s2k.patch b/source/n/gnupg2/gnupg-2.0.14-encode-s2k.patch
new file mode 100644
index 000000000..26c798ee6
--- /dev/null
+++ b/source/n/gnupg2/gnupg-2.0.14-encode-s2k.patch
@@ -0,0 +1,65 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+NotDashEscaped: You need GnuPG to verify this message
+
+#! /bin/sh
+patch -p0 -f $* < $0
+exit $?
+
+agent/
+2010-01-26 Werner Koch <wk@g10code.com>
+
+ * protect.c (do_encryption): Encode the s2kcount and do not use a
+ static value of 96.
+
+--- agent/protect.c (revision 5231)
++++ agent/protect.c (working copy)
+@@ -360,19 +360,25 @@
+
+ in canoncical format of course. We use asprintf and %n modifier
+ and dummy values as placeholders. */
+- p = xtryasprintf
+- ("(9:protected%d:%s((4:sha18:%n_8bytes_2:96)%d:%n%*s)%d:%n%*s)",
+- (int)strlen (modestr), modestr,
+- &saltpos,
+- blklen, &ivpos, blklen, "",
+- enclen, &encpos, enclen, "");
+- if (!p)
+- {
+- gpg_error_t tmperr = out_of_core ();
+- xfree (iv);
+- xfree (outbuf);
+- return tmperr;
+- }
++ {
++ char countbuf[35];
++
++ snprintf (countbuf, sizeof countbuf, "%lu", get_standard_s2k_count ());
++ p = xtryasprintf
++ ("(9:protected%d:%s((4:sha18:%n_8bytes_%u:%s)%d:%n%*s)%d:%n%*s)",
++ (int)strlen (modestr), modestr,
++ &saltpos,
++ (unsigned int)strlen (countbuf), countbuf,
++ blklen, &ivpos, blklen, "",
++ enclen, &encpos, enclen, "");
++ if (!p)
++ {
++ gpg_error_t tmperr = out_of_core ();
++ xfree (iv);
++ xfree (outbuf);
++ return tmperr;
++ }
++ }
+ *resultlen = strlen (p);
+ *result = (unsigned char*)p;
+ memcpy (p+saltpos, iv+2*blklen, 8);
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.1.0-svn5201 (GNU/Linux)
+
+iJwEAQECAAYFAktmpLoACgkQU7Yg0BzgxjCj5wQAyZjQbZM77wdcXIgPgeLsG99W
+esWR89/5VM34dY5tOG+McCAiA4/0hl6CYUkkK/394wcfUXbvbZYARPjJg5wMoZsG
+VufEL+Uz+eLgkejYPVakOWzK00i7MHqDSjttOqHg0d8wSiy3LKk6CN6N19uPqxbI
+/1Io5f3gcroLGfEZlN0=
+=oP/V
+-----END PGP SIGNATURE-----
diff --git a/source/n/gnupg2/gnupg2.SlackBuild b/source/n/gnupg2/gnupg2.SlackBuild
index 3f3b4ccf0..1faf1666d 100755
--- a/source/n/gnupg2/gnupg2.SlackBuild
+++ b/source/n/gnupg2/gnupg2.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
-# Copyright 2006-2009 Robby Workman, Northport, AL, USA
-# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006-2010 Robby Workman, Northport, AL, USA
+# Copyright 2007-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,13 +22,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PKGNAME=gnupg2
-VERSION=2.0.12
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+PKGNAM=gnupg2
+VERSION=${VERSION:-$(echo gnupg-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-gnupg
@@ -42,6 +51,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -49,8 +61,11 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf gnupg-$VERSION
-tar xvf $CWD/gnupg-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/gnupg-$VERSION.tar.?z* || exit 1
cd gnupg-$VERSION
+
+zcat $CWD/gnupg-2.0.14-encode-s2k.patch.gz | patch -p0 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -62,18 +77,21 @@ CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
+ --sysconfdir=/etc \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--mandir=/usr/man \
--infodir=/usr/info \
--docdir=/usr/doc/gnupg2-$VERSION \
--program-prefix="" \
--program-suffix="" \
- --build=$ARCH-slackware-linux \
- --host=$ARCH-slackware-linux
+ --build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
+# Create directory for global gpg.conf:
+mkdir -p $PKG/etc/gnupg
+
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -114,14 +132,22 @@ mv Controlling-gpg_002dconnect_002dagent.html Controlling-gpg_connect_agent.html
mv Agent-GET_005fPASSPHRASE.html Agent-GET_PASSPHRASE.html
mv option-_002d_002dhomedir.html option-homedir.html
mv PKCS_002315-Card.html PKCS-15-Card.html
+mv option-_002d_002dexport_002downertrust.html option-export_ownertrust.html
)
# Move html doc to the proper location
mv $PKG/usr/doc/gnupg2-$VERSION/faq.html $PKG/usr/doc/gnupg2-$VERSION/html/
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PKGNAME-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/gnutls/gnutls.SlackBuild b/source/n/gnutls/gnutls.SlackBuild
index 0aea48b1c..34343b734 100755
--- a/source/n/gnutls/gnutls.SlackBuild
+++ b/source/n/gnutls/gnutls.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2007 Robby Workman (http://rlworkman.net)
-# Copyright 2007, 2008, 2009 Patrick Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=gnutls
-VERSION=2.6.6
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=gnutls
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -38,31 +47,34 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-if [ -r $CWD/$PRGNAM-$VERSION.tar.gz ]; then
- tar xf $CWD/$PRGNAM-$VERSION.tar.gz || exit 1
-elif [ -r $CWD/$PRGNAM-$VERSION.tar.bz2 ]; then
- tar xf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-elif [ -r $CWD/$PRGNAM-$VERSION.tar.xz ]; then
- tar xf $CWD/$PRGNAM-$VERSION.tar.xz || exit 1
-elif [ -r $CWD/$PRGNAM-$VERSION.tar.lzma ]; then
- tar xf $CWD/$PRGNAM-$VERSION.tar.lzma || exit 1
+rm -rf $PKGNAM-$VERSION
+if [ -r $CWD/$PKGNAM-$VERSION.tar.gz ]; then
+ tar xf $CWD/$PKGNAM-$VERSION.tar.gz || exit 1
+elif [ -r $CWD/$PKGNAM-$VERSION.tar.bz2 ]; then
+ tar xf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+elif [ -r $CWD/$PKGNAM-$VERSION.tar.xz ]; then
+ tar xf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
+elif [ -r $CWD/$PKGNAM-$VERSION.tar.lzma ]; then
+ tar xf $CWD/$PKGNAM-$VERSION.tar.lzma || exit 1
else
exit 1
fi
-cd $PRGNAM-$VERSION
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -99,14 +111,22 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
gzip -9 *.info*
)
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README* THANKS \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n -p $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n -p $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/gpgme/gpgme.SlackBuild b/source/n/gpgme/gpgme.SlackBuild
index 55afc5d74..a83c158d0 100755
--- a/source/n/gpgme/gpgme.SlackBuild
+++ b/source/n/gpgme/gpgme.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2006-2009 Robby Workman, Northport, AL, USA
-# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,16 +21,25 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=gpgme
-VERSION=1.1.8
-ARCH=${ARCH:-x86_64}
+PKGNAM=gpgme
+VERSION=1.2.0
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/pkg-$PRGNAM
+PKG=$TMP/pkg-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -41,14 +50,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -76,14 +88,22 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
rm $PKG/usr/info/dir
gzip -9 $PKG/usr/info/*
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
- AUTHORS COPYING* INSTALL NEWS README THANKS TODO VERSION \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ AUTHORS COPYING* INSTALL NEWS README* THANKS TODO VERSION \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/httpd/httpd.SlackBuild b/source/n/httpd/httpd.SlackBuild
index 2cdce1d87..009537769 100755
--- a/source/n/httpd/httpd.SlackBuild
+++ b/source/n/httpd/httpd.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,11 +25,20 @@
PKGNAM=httpd
-VERSION=${VERSION:-2.2.13}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-2.2.15}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -46,6 +55,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
diff --git a/source/n/iproute2/iproute2-2.6.33-fixup_dbpath_and_iptablespath.diff b/source/n/iproute2/iproute2-2.6.33-fixup_dbpath_and_iptablespath.diff
new file mode 100644
index 000000000..fe5b1abc4
--- /dev/null
+++ b/source/n/iproute2/iproute2-2.6.33-fixup_dbpath_and_iptablespath.diff
@@ -0,0 +1,34 @@
+diff -Nur iproute2-2.6.33.orig//Makefile iproute2-2.6.33/Makefile
+--- iproute2-2.6.33.orig//Makefile 2010-02-24 21:56:50.000000000 -0600
++++ iproute2-2.6.33/Makefile 2010-02-24 23:00:52.614825494 -0600
+@@ -1,14 +1,14 @@
+ DESTDIR=/usr/
+ ROOTDIR=$(DESTDIR)
+-LIBDIR=/usr/lib/
++LIBDIR=@LIBDIR@
+ SBINDIR=/sbin
+ CONFDIR=/etc/iproute2
+-DOCDIR=/share/doc/iproute2
+-MANDIR=/share/man
++DOCDIR=/doc/iproute2-@VERSION@
++MANDIR=/man
+ ARPDDIR=/var/lib/arpd
+
+ # Path to db_185.h include
+-DBM_INCLUDE:=$(ROOTDIR)/usr/include
++DBM_INCLUDE:=$(ROOTDIR)/usr/include/db44
+
+ SHARED_LIBS = y
+
+diff -Nur iproute2-2.6.33.orig//include/iptables.h iproute2-2.6.33/include/iptables.h
+--- iproute2-2.6.33.orig//include/iptables.h 2010-02-24 21:56:50.000000000 -0600
++++ iproute2-2.6.33/include/iptables.h 2010-02-24 23:02:21.891841749 -0600
+@@ -5,7 +5,7 @@
+ #include "libiptc/libiptc.h"
+
+ #ifndef IPT_LIB_DIR
+-#define IPT_LIB_DIR "/usr/local/lib/iptables"
++#define IPT_LIB_DIR "@LIBDIR@"
+ #endif
+
+ #ifndef IPPROTO_SCTP
diff --git a/source/n/iproute2/iproute2.SlackBuild b/source/n/iproute2/iproute2.SlackBuild
index 2a97fd43d..d9e8622cd 100755
--- a/source/n/iproute2/iproute2.SlackBuild
+++ b/source/n/iproute2/iproute2.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,20 @@
# Build this against 2.6.x kernel source and headers...
-VERSION=2.6.29-1
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
+VERSION=2.6.33
+BUILD=${BUILD:-1}
+
+#NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -36,6 +46,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -49,16 +62,6 @@ rm -rf iproute2-$VERSION
tar xvf $CWD/iproute2-$VERSION.tar.bz2 || exit 1
cd iproute2-$VERSION
-# Fix up path to bdb
-zcat $CWD/iproute2.dbpath.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
-# Fix up iptables lib path
-zcat $CWD/iproute2.iptablespath.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
-if [ "$ARCH" = "x86_64" ]; then
- sed -i -e "s#/lib/tc#/lib${LIBDIRSUFFIX}/tc#" $(grep -lr '/lib/tc' *) || exit 1
- sed -i -e "s#/usr/lib/#/usr/lib${LIBDIRSUFFIX}/#" include/iptables.h || exit 1
- sed -i -e "s#/usr/lib/#/usr/lib${LIBDIRSUFFIX}/#" tc/m_ipt.c || exit 1
-fi
-
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -66,14 +69,23 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-export CFLAGS="$SLKCFLAGS"
-make $NUMJOBS DOCDIR=doc/iproute2-$VERSION MANDIR=man/ || exit 1
+# Fix up path to bdb and iptables libs
+zcat $CWD/iproute2-2.6.33-fixup_dbpath_and_iptablespath.diff.gz | sed \
+ -e "s,@LIBDIR@,/usr/lib${LIBDIRSUFFIX},g" \
+ -e "s,@VERSION@,$VERSION,g" | patch -p1 || exit 1
+
+# Use our custom SLKCFLAGS
+sed -i "s/-O2 /-O2 -fPIC /" Makefile
+
+./configure # This is okay, really :-)
+make $NUMJOBS || exit 1
-# This doesn't embed any $TMP or $PKG paths in anything
-# Have a look at what the Makefile does for why :)
mkdir -p $PKG/usr
-make install DOCDIR=doc/iproute2-$VERSION MANDIR=man/ DESTDIR=$PKG/usr/ \
- || exit 1
+make install LIBDIR=/usr/lib${LIBDIRSUFFIX} DESTDIR=$PKG/usr/ || exit 1
+
+# I can't seem to make this go to the right place on x86_64, but all the
+# relevant stuff looks correct :/
+[ "$ARCH" = "x86_64" ] && mv $PKG/usr/lib $PKG/usr/lib${LIBDIRSUFFIX}
# This stuff has always been installed under /sbin rather than
# /usr/sbin, as the latter could possibly be network-mounted, and
@@ -96,6 +108,7 @@ done
# Remove junk:
[ -d $PKG/usr/usr ] && rm -r $PKG/usr/usr
+[ -d $PKG/usr/var ] && rm -r $PKG/usr/var
mkdir -p $PKG/var/lib/arpd
diff --git a/source/n/iproute2/iproute2.dbpath.diff b/source/n/iproute2/iproute2.dbpath.diff
deleted file mode 100644
index b6ad2b0f9..000000000
--- a/source/n/iproute2/iproute2.dbpath.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur orig/Makefile new/Makefile
---- orig/Makefile 2008-07-25 15:46:07.000000000 -0500
-+++ new/Makefile 2008-10-03 20:32:41.237630954 -0500
-@@ -5,7 +5,7 @@
- MANDIR=/share/man
-
- # Path to db_185.h include
--DBM_INCLUDE:=/usr/include
-+DBM_INCLUDE:=/usr/include/db44
-
- DEFINES= -DRESOLVE_HOSTNAMES -DDESTDIR=\"$(DESTDIR)\"
-
diff --git a/source/n/iproute2/iproute2.iptablespath.diff b/source/n/iproute2/iproute2.iptablespath.diff
deleted file mode 100644
index 89f61b65d..000000000
--- a/source/n/iproute2/iproute2.iptablespath.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur orig/include/iptables.h new/include/iptables.h
---- orig/include/iptables.h 2008-07-25 15:46:07.000000000 -0500
-+++ new/include/iptables.h 2008-10-03 20:35:56.731284537 -0500
-@@ -5,7 +5,7 @@
- #include "libiptc/libiptc.h"
-
- #ifndef IPT_LIB_DIR
--#define IPT_LIB_DIR "/usr/local/lib/iptables"
-+#define IPT_LIB_DIR "/usr/lib/iptables"
- #endif
-
- #ifndef IPPROTO_SCTP
diff --git a/source/n/iptables/iptables.SlackBuild b/source/n/iptables/iptables.SlackBuild
index fcf80a1ab..a9dc37bd5 100755
--- a/source/n/iptables/iptables.SlackBuild
+++ b/source/n/iptables/iptables.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,12 +20,21 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.4.3.2
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo iptables-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-iptables
@@ -33,19 +42,22 @@ PKG=$TMP/package-iptables
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf iptables-$VERSION
-tar xvf $CWD/iptables-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/iptables-$VERSION.tar.?z* || exit 1
cd iptables-$VERSION
chown -R root:root .
find . \
diff --git a/source/n/iputils/iputils.SlackBuild b/source/n/iputils/iputils.SlackBuild
index a5e3691a7..c7a77a4a9 100755
--- a/source/n/iputils/iputils.SlackBuild
+++ b/source/n/iputils/iputils.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,9 +20,28 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=s20070202
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=s20100418
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -37,8 +56,7 @@ cd $TMP
rm -rf iputils-$VERSION
tar xvf $CWD/iputils-$VERSION.tar.bz2 || exit 1
cd iputils-$VERSION || exit 1
-# Modern compiler...
-sed -i -e "s/OPEN_MAX/NR_OPEN/" $(grep -lr OPEN_MAX *)
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -46,7 +64,7 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-make || exit 1
+make VPATH=/usr/lib${LIBDIRSUFFIX} || exit 1
( cd doc ; make man || exit 1 ) || exit 1
strip arping clockdiff ping ping6 rarpd rdisc tracepath tracepath6 traceroute6
diff --git a/source/n/ipw2200-fw/ipw2200-fw.SlackBuild b/source/n/ipw2200-fw/ipw2200-fw.SlackBuild
index 9aac28a68..e6c5a3141 100755
--- a/source/n/ipw2200-fw/ipw2200-fw.SlackBuild
+++ b/source/n/ipw2200-fw/ipw2200-fw.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,9 +22,9 @@
PKGNAM=ipw2200-fw
-VERSION=${VERSION:-3.0}
+VERSION=${VERSION:-3.1}
ARCH=${ARCH:-fw}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
CWD=$(pwd)
@@ -35,7 +35,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
diff --git a/source/n/irssi/irssi.SlackBuild b/source/n/irssi/irssi.SlackBuild
index 828ab8748..367587973 100755
--- a/source/n/irssi/irssi.SlackBuild
+++ b/source/n/irssi/irssi.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,11 +25,20 @@ CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-irssi
-VERSION=0.8.14
-DIRCD=0.8.14
-ARCH=${ARCH:-x86_64}
+VERSION=0.8.15
+DIRCD=0.8.15
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -41,6 +50,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -57,8 +69,11 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Fix an error in the manual page
-zcat $CWD/irsi-0.8.14.manpage_fix.diff.gz | patch -p1 || exit 1
+# Fix an error in the manual page:
+zcat $CWD/irssi.manpage_fix.diff.gz | patch -p1 --verbose || exit 1
+
+# Fix an SSL proxy bug in 0.8.15:
+zcat $CWD/irssi.ssl_proxy.diff.gz | patch -p1 --verbose || exit 1
CFLAGS="$SLKCFLAGS" \
./configure \
@@ -83,17 +98,9 @@ make install \
# This removes our DESTDIR from the packlist filenames, to keep perl's
# internal inventories consistent and correct.
find $PKG -name .packlist | while read plist ; do
- sed -e "s%/share/man%/man%g" \
- -e "s%$PKG%%g" \
- -e "s%\.1$%\.1\.gz%g" \
- -e "s%\.2$%\.2\.gz%g" \
- -e "s%\.3$%\.3\.gz%g" \
- -e "s%\.3pm$%\.3pm\.gz%g" \
- -e "s%\.4$%\.4\.gz%g" \
- -e "s%\.5$%\.5\.gz%g" \
- -e "s%\.6$%\.6\.gz%g" \
- -e "s%\.7$%\.7\.gz%g" \
- -e "s%\.8$%\.8\.gz%g" \
+ sed -e "s%$PKG%%g" \
+ -e "s%/share/man%/man%g" \
+ -re "s%\.([1-9]n?|3pm)$%&.gz%g # extend man filenames for .gz" \
${plist} > ${plist}.new
mv -f ${plist}.new ${plist}
done
@@ -126,6 +133,14 @@ cp -a \
$PKG/usr/doc/irssi-$VERSION
( cd $PKG/usr/doc/irssi-$VERSION ; ln -sf /usr/share/irssi/help . )
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
diff --git a/source/n/irssi/irsi-0.8.14.manpage_fix.diff b/source/n/irssi/irssi.manpage_fix.diff
index 2219652df..2219652df 100644
--- a/source/n/irssi/irsi-0.8.14.manpage_fix.diff
+++ b/source/n/irssi/irssi.manpage_fix.diff
diff --git a/source/n/irssi/irssi.ssl_proxy.diff b/source/n/irssi/irssi.ssl_proxy.diff
new file mode 100644
index 000000000..401e07173
--- /dev/null
+++ b/source/n/irssi/irssi.ssl_proxy.diff
@@ -0,0 +1,24 @@
+Index: irssi-0.8.14/src/core/servers.c
+===================================================================
+--- irssi-0.8.14.orig/src/core/servers.c
++++ irssi-0.8.14/src/core/servers.c
+@@ -209,6 +209,7 @@
+ char *errmsg2;
+ char ipaddr[MAX_IP_LEN];
+ int port;
++ char *hostname;
+
+ g_return_if_fail(ip != NULL || unix_socket != NULL);
+
+@@ -223,8 +224,10 @@
+ server->connrec->own_ip4);
+ port = server->connrec->proxy != NULL ?
+ server->connrec->proxy_port : server->connrec->port;
++ hostname = server->connrec->proxy != NULL ?
++ server->connrec->proxy : server->connrec->address;
+ handle = server->connrec->use_ssl ?
+- net_connect_ip_ssl(ip, port, server->connrec->address, own_ip, server->connrec->ssl_cert, server->connrec->ssl_pkey,
++ net_connect_ip_ssl(ip, port, hostname, own_ip, server->connrec->ssl_cert, server->connrec->ssl_pkey,
+ server->connrec->ssl_cafile, server->connrec->ssl_capath, server->connrec->ssl_verify) :
+ net_connect_ip(ip, port, own_ip);
+ } else {
diff --git a/source/n/iwlwifi-1000-ucode/iwlwifi-1000-ucode.SlackBuild b/source/n/iwlwifi-1000-ucode/iwlwifi-1000-ucode.SlackBuild
new file mode 100755
index 000000000..80db4c100
--- /dev/null
+++ b/source/n/iwlwifi-1000-ucode/iwlwifi-1000-ucode.SlackBuild
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=iwlwifi-1000-ucode
+#VERSION will be determined automatically, and the package will use the last version found.
+ARCH=${ARCH:-fw}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+for file in $CWD/${PKGNAM}-*.tar.?z* ; do
+ VERSION=$(echo $file | rev | cut -f 3- -d . | cut -f 1 -d / | rev | cut -f 4- -d - )
+ rm -rf ${PKGNAM}-${VERSION}
+ tar xvf $file || exit 1
+ cd ${PKGNAM}-$VERSION || exit 1
+ # Make sure ownerships and permissions are sane:
+ chown -R root:root .
+ chmod 644 *
+ # install:
+ mkdir -p $PKG/lib/firmware
+ cp -a iwlwifi-*.ucode $PKG/lib/firmware
+ # Add a documentation directory:
+ mkdir -p $PKG/usr/doc/${PKGNAM}-${VERSION}
+ cp -a LICENSE* README* $PKG/usr/doc/${PKGNAM}-${VERSION}
+done
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/n/iwlwifi-1000-ucode/slack-desc b/source/n/iwlwifi-1000-ucode/slack-desc
new file mode 100644
index 000000000..e0c939e8c
--- /dev/null
+++ b/source/n/iwlwifi-1000-ucode/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+iwlwifi-1000-ucode: iwlwifi-1000-ucode (Intel 1000 wireless microcode)
+iwlwifi-1000-ucode:
+iwlwifi-1000-ucode: The microcode provided in this package is required for the Intel
+iwlwifi-1000-ucode: Wireless WiFi Link AGN driver for Linux (iwlagn) to operate.
+iwlwifi-1000-ucode:
+iwlwifi-1000-ucode: Visit Intel's Linux wireless website at this address:
+iwlwifi-1000-ucode: http://intellinuxwireless.org/
+iwlwifi-1000-ucode:
+iwlwifi-1000-ucode:
+iwlwifi-1000-ucode:
+iwlwifi-1000-ucode:
diff --git a/source/n/iwlwifi-6000-ucode/iwlwifi-6000-ucode.SlackBuild b/source/n/iwlwifi-6000-ucode/iwlwifi-6000-ucode.SlackBuild
new file mode 100755
index 000000000..251f7e619
--- /dev/null
+++ b/source/n/iwlwifi-6000-ucode/iwlwifi-6000-ucode.SlackBuild
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=iwlwifi-6000-ucode
+#VERSION will be determined automatically, and the package will use the last version found.
+ARCH=${ARCH:-fw}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+for file in $CWD/${PKGNAM}-*.tar.?z* ; do
+ VERSION=$(echo $file | rev | cut -f 3- -d . | cut -f 1 -d / | rev | cut -f 4- -d - )
+ rm -rf ${PKGNAM}-${VERSION}
+ tar xvf $file || exit 1
+ cd ${PKGNAM}-$VERSION || exit 1
+ # Make sure ownerships and permissions are sane:
+ chown -R root:root .
+ chmod 644 *
+ # install:
+ mkdir -p $PKG/lib/firmware
+ cp -a iwlwifi-*.ucode $PKG/lib/firmware
+ # Add a documentation directory:
+ mkdir -p $PKG/usr/doc/${PKGNAM}-${VERSION}
+ cp -a LICENSE* README* $PKG/usr/doc/${PKGNAM}-${VERSION}
+done
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/n/iwlwifi-6000-ucode/slack-desc b/source/n/iwlwifi-6000-ucode/slack-desc
new file mode 100644
index 000000000..50d56c38f
--- /dev/null
+++ b/source/n/iwlwifi-6000-ucode/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+iwlwifi-6000-ucode: iwlwifi-6000-ucode (Intel 6000 wireless microcode)
+iwlwifi-6000-ucode:
+iwlwifi-6000-ucode: The microcode provided in this package is required for the Intel
+iwlwifi-6000-ucode: Wireless WiFi Link AGN driver for Linux (iwlagn) to operate.
+iwlwifi-6000-ucode:
+iwlwifi-6000-ucode: Visit Intel's Linux wireless website at this address:
+iwlwifi-6000-ucode: http://intellinuxwireless.org/
+iwlwifi-6000-ucode:
+iwlwifi-6000-ucode:
+iwlwifi-6000-ucode:
+iwlwifi-6000-ucode:
diff --git a/source/n/lftp/lftp.SlackBuild b/source/n/lftp/lftp.SlackBuild
index 82b42993b..9e75153a6 100755
--- a/source/n/lftp/lftp.SlackBuild
+++ b/source/n/lftp/lftp.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=3.7.14
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo lftp-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-lftp
@@ -40,6 +49,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -61,7 +73,9 @@ CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
--mandir=/usr/man \
+ --infodir=/usr/info \
--docdir=/usr/doc/lftp-$VERSION \
--with-openssl \
--build=${ARCH}-slackware-linux
@@ -91,10 +105,18 @@ fi
mkdir -p $PKG/usr/doc/lftp-$VERSION
cp -a \
- ABOUT-NLS BUGS COPYING* ChangeLog FAQ FEATURES INSTALL MIRRORS NEWS \
+ BUGS COPYING* FAQ FEATURES INSTALL MIRRORS NEWS \
README* THANKS TODO lftp.lsm \
$PKG/usr/doc/lftp-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
diff --git a/source/n/libassuan/libassuan.SlackBuild b/source/n/libassuan/libassuan.SlackBuild
index 32cf41723..6d49096f1 100755
--- a/source/n/libassuan/libassuan.SlackBuild
+++ b/source/n/libassuan/libassuan.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2006-2007 Robby Workman (http://rlworkman.net)
-# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,15 +21,25 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SCRIPT, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=libassuan
-VERSION=1.0.4
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+PKGNAM=libassuan
+VERSION=1.0.5
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/pkg-$PRGNAM
+PKG=$TMP/pkg-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -40,14 +50,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -73,15 +86,22 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
gzip -9 $PKG/usr/info/*.info
rm -rf $PKG/usr/info/dir
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
- AUTHORS COPYING INSTALL NEWS README* THANKS TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+ AUTHORS COPYING* INSTALL NEWS README* THANKS TODO \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/libgcrypt/libgcrypt.SlackBuild b/source/n/libgcrypt/libgcrypt.SlackBuild
index bb4723948..720314cac 100755
--- a/source/n/libgcrypt/libgcrypt.SlackBuild
+++ b/source/n/libgcrypt/libgcrypt.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2006-2009 Robby Workman, Northport, AL, USA
-# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,16 +22,25 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=libgcrypt
-VERSION=${VERSION:-1.4.4}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+PKGNAM=libgcrypt
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/pkg-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -42,14 +51,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -74,21 +86,39 @@ CXXFLAGS="$SLKCFLAGS" \
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG
+# Move the shared library to $PKG/lib${LIBDIRSUFFIX}:
+mkdir -p $PKG/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ for file in lib*.so.??.* ; do
+ mv $file ../../lib${LIBDIRSUFFIX}
+ ln -sf ../../lib${LIBDIRSUFFIX}/$file .
+ done
+ cp -a lib*.so.?? ../../lib${LIBDIRSUFFIX}
+)
+
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
rm -f $PKG/usr/info/dir
gzip -9 $PKG/usr/info/*
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS BUGS COPYING* ChangeLog INSTALL NEWS \
- README README.SVN THANKS TODO VERSION \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ README* THANKS TODO VERSION \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/libgpg-error/libgpg-error.SlackBuild b/source/n/libgpg-error/libgpg-error.SlackBuild
index 62f1df43b..4d0384afe 100755
--- a/source/n/libgpg-error/libgpg-error.SlackBuild
+++ b/source/n/libgpg-error/libgpg-error.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2006, 2009 Robby Workman, Northport, AL, USA
-# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,16 +22,25 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=libgpg-error
-VERSION=1.7
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+PKGNAM=libgpg-error
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -42,14 +51,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -63,7 +75,7 @@ CXXFLAGS="$SLKCFLAGS" \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--infodir=/usr/info \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
--enable-shared=yes \
--enable-static=yes \
--build=$ARCH-slackware-linux \
@@ -72,17 +84,35 @@ CXXFLAGS="$SLKCFLAGS" \
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG
+# Move the shared library to $PKG/lib${LIBDIRSUFFIX}:
+mkdir -p $PKG/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ for file in lib*.so.?.* ; do
+ mv $file ../../lib${LIBDIRSUFFIX}
+ ln -sf ../../lib${LIBDIRSUFFIX}/$file .
+ done
+ cp -a lib*.so.? ../../lib${LIBDIRSUFFIX}
+)
+
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
- ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README THANKS VERSION \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README* THANKS VERSION \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/libksba/libksba.SlackBuild b/source/n/libksba/libksba.SlackBuild
index 0b42f53f8..5cbc4093a 100755
--- a/source/n/libksba/libksba.SlackBuild
+++ b/source/n/libksba/libksba.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2006,2009 Robby Workman, Northport, AL, USA
-# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,16 +21,25 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SCRIPT, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=libksba
-VERSION=1.0.6
-ARCH=${ARCH:-x86_64}
+PKGNAM=libksba
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/pkg-$PRGNAM
+PKG=$TMP/pkg-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -41,14 +50,17 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+cd $PKGNAM-$VERSION
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -64,7 +76,7 @@ CXXFLAGS="$SLKCFLAGS" \
--sysconfdir=/etc \
--localstatedir=/var \
--infodir=/usr/info \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
--enable-shared=yes \
--enable-static=no \
--build=$ARCH-slackware-linux \
@@ -79,14 +91,22 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
rm -f $PKG/usr/info/dir
gzip -9 $PKG/usr/info/*
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
- AUTHORS COPYING INSTALL NEWS README THANKS TODO VERSION \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ AUTHORS COPYING* INSTALL NEWS README* THANKS TODO VERSION \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/links/links.SlackBuild b/source/n/links/links.SlackBuild
index fd55faea5..c8839ebd0 100755
--- a/source/n/links/links.SlackBuild
+++ b/source/n/links/links.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,11 +20,21 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.2
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=2.3pre1
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-links
@@ -35,6 +45,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
@@ -80,6 +92,14 @@ find $PKG/usr/doc/links-$VERSION -type f -exec chmod 644 {} \;
find $PKG/usr/doc/links-$VERSION -type d -exec chmod 755 {} \;
chmod 0755 $PKG/usr/doc/links-$VERSION/mailcap.pl
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
diff --git a/source/n/lynx/lynx.SlackBuild b/source/n/lynx/lynx.SlackBuild
index 109c89621..5a298547d 100755
--- a/source/n/lynx/lynx.SlackBuild
+++ b/source/n/lynx/lynx.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,16 +21,33 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-SRCVER=2.8.6rel.5
-PKGVER=2.8.6rel.5
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+SRCVER=2.8.7
+PKGVER=2.8.7
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
-if [ "$ARCH" = "x86_64" ]; then
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
+ SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
@@ -39,24 +56,13 @@ TMP=${TMP:-/tmp}
PKG=$TMP/package-lynx
rm -rf $PKG
-mkdir -p $PKG
-# Add libdir to package:
-mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/lynx
-
+mkdir -p $TMP $PKG/usr/lib${LIBDIRSUFFIX}/lynx
cd $TMP
-rm -rf lynx2-8-6
-tar xvf $CWD/lynx${SRCVER}.tar.bz2 || exit 1
-cd lynx2-8-6
-# Fix /usr/local paths:
-zcat $CWD/lynx.path.diff.gz | sed -e "s#usr/lib/#usr/lib${LIBDIRSUFFIX}/#g" | patch -p1 --verbose || exit 1
-# Apply recolorizing patch:
-zcat $CWD/lynx.cfg.diff.gz | patch -p1 --verbose --backup || exit 1
+rm -rf lynx2-8-7
+tar xvf $CWD/lynx${SRCVER}.tar.?z* || exit 1
+cd lynx2-8-7
-## Apply official patches:
-#zcat $CWD/2.8.5rel.4.patch.gz | patch -p1 --verbose || exit
-#zcat $CWD/2.8.5rel.5.patch.gz | patch -p1 --verbose || exit
-
-find . -name "*~" | xargs rm
+find . -name "*~" -exec rm -f {} \;
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -64,6 +70,15 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Fix /usr/local paths and libdir paths
+zcat $CWD/lynx.path.diff.gz | \
+ sed -e "s#@SLACK_LIBDIR@#/usr/lib${LIBDIRSUFFIX}/#g" | \
+ patch -p1 --verbose || exit 1
+
+# Apply recolorizing patch:
+zcat $CWD/lynx.cfg.diff.gz | patch -p1 --verbose --backup || exit 1
+
+CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--sysconfdir=/etc \
@@ -121,6 +136,14 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
ln -sf /usr/share/lynx/lynx_help .
)
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
+
gzip -9 $PKG/usr/man/man?/*.?
mkdir -p $PKG/install
diff --git a/source/n/lynx/lynx.cfg.diff b/source/n/lynx/lynx.cfg.diff
index 4a52fcc5b..c7ab6257f 100644
--- a/source/n/lynx/lynx.cfg.diff
+++ b/source/n/lynx/lynx.cfg.diff
@@ -1,6 +1,7 @@
---- ./lynx.cfg.orig Tue Feb 26 23:18:35 2002
-+++ ./lynx.cfg Tue Feb 26 23:24:09 2002
-@@ -2841,8 +2841,18 @@
+diff -Nur lynx2-8-7.orig/lynx.cfg lynx2-8-7/lynx.cfg
+--- lynx2-8-7.orig/lynx.cfg 2009-06-23 18:53:58.000000000 -0500
++++ lynx2-8-7/lynx.cfg 2009-12-03 15:35:18.744461098 -0600
+@@ -3025,8 +3025,18 @@
#COLOR:4:magenta:white
#COLOR:5:blue:white
#COLOR:6:red:white
@@ -19,4 +20,4 @@
+COLOR:7:magenta:cyan
- .h2 ASSUMED_COLOR
+ .h2 COLOR_STYLE
diff --git a/source/n/lynx/lynx.path.diff b/source/n/lynx/lynx.path.diff
index 1ee216edf..045405c95 100644
--- a/source/n/lynx/lynx.path.diff
+++ b/source/n/lynx/lynx.path.diff
@@ -1,6 +1,7 @@
---- ./userdefs.h.orig Tue Feb 26 22:32:08 2002
-+++ ./userdefs.h Tue Feb 26 22:39:53 2002
-@@ -277,7 +277,7 @@
+diff -Nur lynx2-8-7.orig/userdefs.h lynx2-8-7/userdefs.h
+--- lynx2-8-7.orig/userdefs.h 2009-06-06 19:30:35.000000000 -0500
++++ lynx2-8-7/userdefs.h 2009-12-03 15:47:54.596486242 -0600
+@@ -289,7 +289,7 @@
#ifdef DOSPATH
#define LYNX_CFG_FILE "./lynx.cfg"
#else
@@ -9,30 +10,30 @@
#endif /* DOSPATH */
#endif /* LYNX_CFG_FILE */
#endif /* HAVE_CONFIG_H */
-@@ -289,7 +289,7 @@
+@@ -305,7 +305,7 @@
* Mappings in these global and personal files override any SUFFIX
* definitions in lynx.cfg and built-in defaults from src/HTInit.c.
*/
--#define GLOBAL_EXTENSION_MAP "/usr/local/lib/mosaic/mime.types"
-+#define GLOBAL_EXTENSION_MAP "/usr/lib/lynx/mime.types"
- #define PERSONAL_EXTENSION_MAP ".mime.types"
+-#define GLOBAL_EXTENSION_MAP MIME_LIBDIR "mime.types"
++#define GLOBAL_EXTENSION_MAP "@SLACK_LIBDIR@/lynx/mime.types"
+ #define PERSONAL_EXTENSION_MAP "~/.mime.types"
/**************************
-@@ -299,7 +299,7 @@
+@@ -315,7 +315,7 @@
* Mappings in these global and personal files override any VIEWER
* definitions in lynx.cfg and built-in defaults from src/HTInit.c.
*/
--#define GLOBAL_MAILCAP "/usr/local/lib/mosaic/mailcap"
-+#define GLOBAL_MAILCAP "/usr/lib/lynx/mailcap"
- #define PERSONAL_MAILCAP ".mailcap"
+-#define GLOBAL_MAILCAP MIME_LIBDIR "mailcap"
++#define GLOBAL_MAILCAP MIME_LIBDIR "/etc/mailcap"
+ #define PERSONAL_MAILCAP "~/.mailcap"
/**************************
-@@ -434,7 +434,7 @@
+@@ -445,7 +445,7 @@
* -lss command line switch will override these definitions.
*/
#ifndef LYNX_LSS_FILE
-#define LYNX_LSS_FILE "/usr/local/lib/lynx.lss"
-+#define LYNX_LSS_FILE "/usr/lib/lynx/lynx.lss"
++#define LYNX_LSS_FILE "/etc/lynx.lss"
#endif /* LYNX_LSS_FILE */
#endif /* VMS OR UNIX */
diff --git a/source/n/mcabber/mcabber.SlackBuild b/source/n/mcabber/mcabber.SlackBuild
index f23c3bef4..db46ac67a 100755
--- a/source/n/mcabber/mcabber.SlackBuild
+++ b/source/n/mcabber/mcabber.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,12 +22,20 @@
PKGNAM=mcabber
-VERSION=${VERSION:-0.9.9}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -37,15 +45,21 @@ mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
@@ -60,6 +74,7 @@ find . \
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
@@ -93,13 +108,21 @@ fi
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- AUTHORS COPYING* ChangeLog NEWS README* TODO mcabberrc.example \
+ AUTHORS COPYING* NEWS README* TODO mcabberrc.example \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/mtr/mtr-0.73.configure.error.diff b/source/n/mtr/mtr-0.73.configure.error.diff
deleted file mode 100644
index 896a5216d..000000000
--- a/source/n/mtr/mtr-0.73.configure.error.diff
+++ /dev/null
@@ -1,20 +0,0 @@
---- ./configure.orig 2008-04-07 11:32:49.000000000 -0500
-+++ ./configure 2008-07-24 12:57:20.000000000 -0500
-@@ -6737,17 +6737,6 @@
-
-
- rm -f conf.gtktest
--
-- else
-- AM_PATH_GTK(1.0.0, CFLAGS="$CFLAGS $GTK_CFLAGS"
-- LIBS="$LIBS $GTK_LIBS",
-- { echo "$as_me:$LINENO: WARNING: Building without GTK+ display support" >&5
--echo "$as_me: WARNING: Building without GTK+ display support" >&2;}
-- cat >>confdefs.h <<\_ACEOF
--#define NO_GTK 1
--_ACEOF
--
-- GTK_OBJ="")
- fi
- else
- cat >>confdefs.h <<\_ACEOF
diff --git a/source/n/mtr/mtr.SlackBuild b/source/n/mtr/mtr.SlackBuild
index 91ed7be9d..4f53c5876 100755
--- a/source/n/mtr/mtr.SlackBuild
+++ b/source/n/mtr/mtr.SlackBuild
@@ -22,10 +22,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=mtr
-VERSION=0.73
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=mtr
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -35,19 +44,20 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf ${PRGNAM}-${VERSION}
-tar xvf $CWD/${PRGNAM}-${VERSION}.tar.bz2 || exit 1
-cd ${PRGNAM}-${VERSION} || exit 1
-zcat $CWD/mtr-0.73.configure.error.diff.gz | patch -p1 --verbose || exit 1
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-${VERSION}.tar.?z* || exit 1
+cd ${PKGNAM}-${VERSION} || exit 1
chown -R root.root *
find . \
@@ -70,11 +80,19 @@ make DESTDIR=$PKG install || exit 1
chmod -s $PKG/usr/sbin/mtr
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING* FORMATS INSTALL NEWS README* SECURITY TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
-chmod -R a-w $PKG/usr/doc/$PRGNAM-$VERSION/*
+ $PKG/usr/doc/$PKGNAM-$VERSION
+chmod -R a-w $PKG/usr/doc/$PKGNAM-$VERSION/*
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
# Compress the man page(s)
find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
@@ -88,5 +106,6 @@ cat $CWD/slack-desc > $PKG/install/slack-desc
# Build the package:
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/n/ncftp/ncftp.SlackBuild b/source/n/ncftp/ncftp.SlackBuild
index 81cc729a6..f859b0878 100755
--- a/source/n/ncftp/ncftp.SlackBuild
+++ b/source/n/ncftp/ncftp.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,9 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=3.2.2
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=ncftp
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 2 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -33,6 +43,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
@@ -43,7 +55,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf ncftp-$VERSION
-tar xvf $CWD/ncftp-$VERSION-src.tar.bz2 || exit 1
+tar xvf $CWD/ncftp-$VERSION-src.tar.?z* || exit 1
cd ncftp-$VERSION || exit 1
chown -R root:root .
find . \
@@ -90,6 +102,14 @@ cp -a doc/* $PKG/usr/doc/ncftp-$VERSION
# Useless redundancy:
rm -r $PKG/usr/doc/ncftp-$VERSION/{html,man}
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r doc/CHANGELOG.txt ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat doc/CHANGELOG.txt | head -n 1000 > $DOCSDIR/CHANGELOG.txt
+ touch -r doc/CHANGELOG.txt $DOCSDIR/CHANGELOG.txt
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/n/net-snmp/net-snmp.SlackBuild b/source/n/net-snmp/net-snmp.SlackBuild
index a102b0e56..c9ca3e71e 100755
--- a/source/n/net-snmp/net-snmp.SlackBuild
+++ b/source/n/net-snmp/net-snmp.SlackBuild
@@ -22,10 +22,18 @@
PKGNAM=net-snmp
-VERSION=${VERSION:-5.4.2.1}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-5.5}
BUILD=${BUILD:-2}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -42,11 +50,14 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
# Make sure ownerships and permissions are sane:
@@ -129,6 +140,24 @@ fi
# Remove perllocal files:
( cd $PKG ; find . -name perllocal.pod -exec rm "{}" \; )
+# This removes our DESTDIR from the packlist filenames, to keep perl's
+# internal inventories consistent and correct.
+find $PKG -name .packlist | while read plist ; do
+ sed -e "s%/share/man%/man%g" \
+ -e "s%$PKG%%g" \
+ -e "s%\.1$%\.1\.gz%g" \
+ -e "s%\.2$%\.2\.gz%g" \
+ -e "s%\.3$%\.3\.gz%g" \
+ -e "s%\.3pm$%\.3pm\.gz%g" \
+ -e "s%\.4$%\.4\.gz%g" \
+ -e "s%\.5$%\.5\.gz%g" \
+ -e "s%\.6$%\.6\.gz%g" \
+ -e "s%\.7$%\.7\.gz%g" \
+ -e "s%\.8$%\.8\.gz%g" \
+ ${plist} > ${plist}.new
+ mv -f ${plist}.new ${plist}
+done
+
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
@@ -136,6 +165,14 @@ cp -a \
INSTALL NEWS PORTING README* TODO \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/n/netatalk/netatalk.SlackBuild b/source/n/netatalk/netatalk.SlackBuild
index 1bffea9f0..467825108 100755
--- a/source/n/netatalk/netatalk.SlackBuild
+++ b/source/n/netatalk/netatalk.SlackBuild
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.0.4
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo netatalk-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -46,7 +58,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf netatalk-$VERSION
-tar xvf $CWD/netatalk-$VERSION.tar.xz || exit 1
+tar xvf $CWD/netatalk-$VERSION.tar.?z* || exit 1
cd netatalk-$VERSION || exit 1
chown -R root:root .
find . \
@@ -59,11 +71,11 @@ find . \
zcat $CWD/netatalk.etc2ps.diff.gz | patch -p1 || exit 1
# Allow building without xfs quota support
-zcat $CWD/netatalk-2.0.4-without_xfs.diff.gz | patch -p1 || exit 1
+zcat $CWD/netatalk.without_xfs.diff.gz | patch -p1 || exit 1
# Disallow transmission of passwords via cleartext and with old version 1 of
# the Diffie-Hellman protocol
-zcat $CWD/netatalk-2.0.4-afpdconf.diff.gz | patch -p1 || exit 1
+zcat $CWD/netatalk.afpdconf.diff.gz | patch -p1 || exit 1
autoreconf -vif
CFLAGS="$SLKCFLAGS" \
diff --git a/source/n/netatalk/netatalk-2.0.4-afpdconf.diff b/source/n/netatalk/netatalk.afpdconf.diff
index b2cf5df6f..b2cf5df6f 100644
--- a/source/n/netatalk/netatalk-2.0.4-afpdconf.diff
+++ b/source/n/netatalk/netatalk.afpdconf.diff
diff --git a/source/n/netatalk/netatalk-2.0.4-without_xfs.diff b/source/n/netatalk/netatalk.without_xfs.diff
index 75f97a038..75f97a038 100644
--- a/source/n/netatalk/netatalk-2.0.4-without_xfs.diff
+++ b/source/n/netatalk/netatalk.without_xfs.diff
diff --git a/source/n/network-scripts/network-scripts.SlackBuild b/source/n/network-scripts/network-scripts.SlackBuild
index 319ca5e01..9cd6a4e7d 100755
--- a/source/n/network-scripts/network-scripts.SlackBuild
+++ b/source/n/network-scripts/network-scripts.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,13 +23,13 @@
PKGNAM=network-scripts
VERSION=${VERSION:-13.0}
-ARCH=${ARCH:-noarch}
-BUILD=${BUILD:-2}
-
+ARCH=noarch
+BUILD=${BUILD:-3}
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
+
rm -rf $PKG
mkdir -p $TMP $PKG/etc/rc.d
( cd $PKG/etc/rc.d
diff --git a/source/n/network-scripts/scripts/rc.inet1 b/source/n/network-scripts/scripts/rc.inet1
index 0080f7dac..4e6c7aa00 100644
--- a/source/n/network-scripts/scripts/rc.inet1
+++ b/source/n/network-scripts/scripts/rc.inet1
@@ -106,12 +106,12 @@ if_up() {
fi
if [ "${USE_DHCP[$i]}" = "yes" ]; then # use DHCP to bring interface up
[ ${DHCP_HOSTNAME[$i]} ] && DHCP_OPTIONS="-h ${DHCP_HOSTNAME[$i]}"
- [ "${DHCP_KEEPRESOLV[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -R"
- [ "${DHCP_KEEPNTP[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -N"
+ [ "${DHCP_KEEPRESOLV[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -C resolv.conf"
+ [ "${DHCP_KEEPNTP[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -C ntp.conf"
[ "${DHCP_KEEPGW[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -G"
[ "${DHCP_DEBUG[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -d"
[ "${DHCP_NOIPV4LL[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -L"
- [ ${DHCP_IPADDR[$i]} ] && DHCP_OPTIONS="$DHCP_OPTIONS -s ${DHCP_IPADDR[$i]}"
+ [ ${DHCP_IPADDR[$i]} ] && DHCP_OPTIONS="$DHCP_OPTIONS -r ${DHCP_IPADDR[$i]}"
echo "Polling for DHCP server on interface ${1}:"
# If you set a timeout, you get one, even if the kernel doesn't think that
# your device is connected, in case /sys isn't right (which it usually isn't
diff --git a/source/n/nfs-utils/nfs-utils-1.1.4.tar.bz2.sign b/source/n/nfs-utils/nfs-utils-1.1.4.tar.bz2.sign
deleted file mode 100644
index 3457f1ef7..000000000
--- a/source/n/nfs-utils/nfs-utils-1.1.4.tar.bz2.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBI+KqOyGugalF9Dw4RAuC3AJ97L3+wXMajwG6cIy+8GJJUQYWi3ACgkyET
-zLF2+bn5et1RX1dGiiijnhs=
-=VrzL
------END PGP SIGNATURE-----
diff --git a/source/n/nfs-utils/nfs-utils-1.2.2.tar.bz2.sign b/source/n/nfs-utils/nfs-utils-1.2.2.tar.bz2.sign
new file mode 100644
index 000000000..a4b95a792
--- /dev/null
+++ b/source/n/nfs-utils/nfs-utils-1.2.2.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBLfTsAyGugalF9Dw4RAgLSAJ0TnlJLHcU7dEWZ80LA775ZuQnrigCgjnWB
+bxbY8o9jiBY9G422Fh6b8bA=
+=dG1E
+-----END PGP SIGNATURE-----
diff --git a/source/n/nfs-utils/nfs-utils.SlackBuild b/source/n/nfs-utils/nfs-utils.SlackBuild
index 1e3f5cbf9..8f3e3ef88 100755
--- a/source/n/nfs-utils/nfs-utils.SlackBuild
+++ b/source/n/nfs-utils/nfs-utils.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.1.4
-ARCH=${ARCH:-x86_64}
+VERSION=1.2.2
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -33,6 +42,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
@@ -75,7 +86,7 @@ CFLAGS="$SLKCFLAGS" \
--enable-nfsv3 \
--enable-nfsv4=no \
--enable-gss=no \
- --enable-secure-statd \
+ --enable-tirpc=no \
--program-prefix= \
--program-suffix= \
--build=$ARCH-slackware-linux
diff --git a/source/n/nmap/nmap.SlackBuild b/source/n/nmap/nmap.SlackBuild
index ddf13b9e6..747836ccf 100755
--- a/source/n/nmap/nmap.SlackBuild
+++ b/source/n/nmap/nmap.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,11 +20,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${PKGVERSION:-5.00}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-5.21}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -37,8 +45,13 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-nmap
@@ -105,6 +118,14 @@ cp -a COPYING* HACKING INSTALL $PKG/usr/doc/nmap-$VERSION
fi
)
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGELOG ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGELOG | head -n 1000 > $DOCSDIR/CHANGELOG
+ touch -r CHANGELOG $DOCSDIR/CHANGELOG
+fi
+
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
diff --git a/source/n/nn/m-x86_64.h b/source/n/nn/m-x86_64.h
new file mode 100644
index 000000000..931a6139f
--- /dev/null
+++ b/source/n/nn/m-x86_64.h
@@ -0,0 +1,37 @@
+/************** Machine (and compiler) dependent definitions. **************
+ *
+ * This file is for 80386 based UNIX/XENIX systems.
+ */
+
+
+/* MACHINE TYPE DEFINED TYPE VALUE RANGE */
+
+typedef unsigned char int8; /* 0 .. 255 */
+typedef short int16; /* -10,000 .. 10,000 */
+typedef int int32; /* -100,000 .. 100,000 */
+typedef unsigned int uint32; /* 0 .. 2^31-1 */
+
+
+
+#ifdef NETWORK_DATABASE
+
+#if 1
+
+/* If you want network byte order, you most likely have TCP as well. */
+/* else... why want network byte order??? */
+
+#define NETWORK_BYTE_ORDER /* THEY ARE NOT */
+#include <netinet/in.h>
+
+#else
+
+#undef NETWORK_BYTE_ORDER /* THEY ARE NOT */
+/*
+YOU LOSE -- I DON'T KNOW HOW TO DO THIS ON 80386 BASED SYSTEMS!
+*/
+#define htonl(l) ... /* host long to network long */
+#define ntohl(l) ... /* network long to host long */
+
+#endif
+
+#endif /* NETWORK DATABASE */
diff --git a/source/n/nn/nn.SlackBuild b/source/n/nn/nn.SlackBuild
index 45b694375..41757fcca 100755
--- a/source/n/nn/nn.SlackBuild
+++ b/source/n/nn/nn.SlackBuild
@@ -21,18 +21,30 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
VERSION=6.7.3
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
+ MFILE="m-i80386.h"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+ MFILE="m-x86_64.h"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ MFILE="m-i80386.h"
fi
CWD=$(pwd)
@@ -53,14 +65,19 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-zcat $CWD/nn.diff.gz | sed -e "s#/usr/lib/nn#/usr/lib${LIBDIRSUFFIX}/nn#" \
- | patch -p1 --verbose || exit 1
+zcat $CWD/nn.diff.gz \
+ | sed -e "s#m-sparc.h#${MFILE}#" \
+ | sed -e "s#/usr/lib/nn#/usr/lib${LIBDIRSUFFIX}/nn#" \
+ | patch -p0 --verbose || exit 1
+if [ $ARCH = "x86_64" ]; then
+ zcat $CWD/m-x86_64.h.gz > conf/m-x86_64.h
+fi
zcat $CWD/nn.badnntphost.diff.gz | patch -p1 --verbose || exit 1
# Taken from slamd64 (who adapted an old Ubuntu patch);
# Besides adding DESTDIR support, it gets rid of the hardlinks that are created:
zcat $CWD/nn.destdir.diff.gz | patch -p1 --verbose || exit 1
-cp config.h-dist config.h
+cat config.h-dist | sed -e "s#m-sparc.h#${MFILE}#" > config.h
make all
echo "*** USE install option 's'"
diff --git a/source/n/nn/nn.diff b/source/n/nn/nn.diff
index 04ec3c4c2..e78cad97e 100644
--- a/source/n/nn/nn.diff
+++ b/source/n/nn/nn.diff
@@ -1,5 +1,19 @@
---- ./config.h-dist.orig 2005-04-01 14:44:22.000000000 -0600
-+++ ./config.h-dist 2006-06-27 16:33:00.000000000 -0500
+--- conf/s-linux.h.orig 2009-11-11 15:43:05.780197095 -0500
++++ conf/s-linux.h 2009-11-11 15:44:38.760195349 -0500
+@@ -131,9 +131,9 @@
+ * (in config.h).
+ */
+
+-#define HAVE_GETHOSTNAME /* BSD systems */
++/* #define HAVE_GETHOSTNAME /* BSD systems */
+ /* #define HAVE_UNAME */ /* System V */
+-/* #define HOSTNAME_FILE "/etc/uucpname" /* or another file */
++#define HOSTNAME_FILE "/etc/HOSTNAME" /* or another file */
+ /* #define HOSTNAME_WHOAMI /* in <whoami.h> */
+
+ /*
+--- config.h-dist.orig 2009-11-11 15:44:13.560225381 -0500
++++ config.h-dist 2009-11-11 15:49:36.937239629 -0500
@@ -45,7 +45,7 @@
#define DO_NOV_DIGEST
@@ -73,6 +87,17 @@
#define DAEMON_MAN_SECTION "8"
+@@ -301,8 +301,8 @@
+ * SIGN_TYPE is the program to be used to create digital signatures.
+ */
+
+-/* #define SIGN_TYPE "gpg" */
+-#define SIGN_TYPE "pgp"
++#define SIGN_TYPE "gpg"
++/* #define SIGN_TYPE "pgp" */
+
+ /*
+ * If no "Lines:" header field is present, NN can be made to
@@ -425,7 +425,7 @@
* Default: NEWS_LIB_DIR/{rm,del}group
*/
@@ -83,3 +108,13 @@
+/* #define NEWS_LIB_DIRECTORY "/var/lib/news" */
/************************ CONFIGURATION COMPLETED ************************/
+--- hostname.c.orig 2009-11-11 16:00:16.485194441 -0500
++++ hostname.c 2009-11-11 16:15:25.741225660 -0500
+@@ -17,6 +17,7 @@
+ #include <unistd.h>
+ #include <string.h>
+ #include "config.h"
++#include "global.h"
+
+ #undef DONE
+
diff --git a/source/n/ntp/ntp.SlackBuild b/source/n/ntp/ntp.SlackBuild
index 93ff1ee82..b8d4d3638 100755
--- a/source/n/ntp/ntp.SlackBuild
+++ b/source/n/ntp/ntp.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,11 +20,20 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-VERSION=4.2.4p7
-ARCH=${ARCH:-x86_64}
+PKGNAM=ntp
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -33,6 +42,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
@@ -45,6 +56,9 @@ cd $TMP
rm -rf ntp-${VERSION}*
tar xvf $CWD/ntp-${VERSION}*.tar.?z* || exit 1
cd ntp-${VERSION}* || exit 1
+
+zcat $CWD/ntp.nano.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 2777 -o -perm 2755 \) \
@@ -61,12 +75,13 @@ CFLAGS="$SLKCFLAGS" \
--sysconfdir=/etc \
--bindir=/usr/sbin \
--sbindir=/usr/sbin \
+ --mandir=/usr/man \
--program-prefix= \
--program-suffix= \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
-make install DESTDIR=$PKG || exit 1
+make -i install DESTDIR=$PKG || exit 1
# Since the Makefile's install pays no heed to the --bindir settings,
# we'll move things to where they've always been ourselves:
@@ -95,13 +110,37 @@ cp -a util/README $PKG/usr/doc/ntp-$VERSION/util
mkdir $PKG/usr/doc/ntp-$VERSION/ntpdate
cp -a ntpdate/README $PKG/usr/doc/ntp-$VERSION/ntpdate
( cd $PKG/usr/doc/ntp-$VERSION
- find . -type d -name .deps -exec rm -rf {} \; 2> /dev/null
+ find . -name ".deps*" -exec rm -rf "{}" \; 2> /dev/null
)
-find $PKG | xargs file | grep -e "executable" -e "shared object" \
- | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
-gzip -9 $PKG/usr/man/man?/*.?
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/n/ntp/ntp.nano.diff b/source/n/ntp/ntp.nano.diff
new file mode 100644
index 000000000..0ff361ce9
--- /dev/null
+++ b/source/n/ntp/ntp.nano.diff
@@ -0,0 +1,17 @@
+--- ./include/ntp_syscall.h.orig 2009-12-09 01:36:37.000000000 -0600
++++ ./include/ntp_syscall.h 2010-04-21 23:38:30.000000000 -0500
+@@ -14,6 +14,14 @@
+ # include <sys/timex.h>
+ #endif
+
++#if defined(ADJ_NANO) && !defined(MOD_NANO)
++#define MOD_NANO ADJ_NANO
++#endif
++
++#if defined(ADJ_TAI) && !defined(MOD_TAI)
++#define MOD_TAI ADJ_TAI
++#endif
++
+ #ifndef NTP_SYSCALLS_LIBC
+ #ifdef NTP_SYSCALLS_STD
+ # define ntp_adjtime(t) syscall(SYS_ntp_adjtime, (t))
diff --git a/source/n/ntp/rc.ntpd b/source/n/ntp/rc.ntpd
index 2db421f6c..7cf3d50b0 100644
--- a/source/n/ntp/rc.ntpd
+++ b/source/n/ntp/rc.ntpd
@@ -12,11 +12,13 @@ ntpd_start() {
# Stop ntpd:
ntpd_stop() {
echo -n "Stopping NTP daemon..."
- kill $(cat /var/run/ntpd.pid)
+ if [ -r /var/run/ntpd.pid ]; then
+ kill -HUP $(cat /var/run/ntpd.pid)
+ rm -f /var/run/ntpd.pid
+ else
+ killall -HUP -q ntpd
+ fi
echo
- sleep 1
- rm -f /var/run/ntpd.pid
- killall ntpd 2> /dev/null
}
# Restart ntpd:
@@ -32,6 +34,7 @@ ntpd_status() {
echo "ntpd is running."
else
echo "ntpd is stopped."
+ exit 1
fi
}
diff --git a/source/n/obex-data-server/doinst.sh b/source/n/obex-data-server/doinst.sh
new file mode 100644
index 000000000..6c2a2f1c3
--- /dev/null
+++ b/source/n/obex-data-server/doinst.sh
@@ -0,0 +1,16 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/obex-data-server/imaging_capabilities.xml.new
+config etc/obex-data-server/capability.xml.new
+
diff --git a/source/n/obex-data-server/obex-data-server.SlackBuild b/source/n/obex-data-server/obex-data-server.SlackBuild
new file mode 100755
index 000000000..512b0e0d2
--- /dev/null
+++ b/source/n/obex-data-server/obex-data-server.SlackBuild
@@ -0,0 +1,114 @@
+#!/bin/bash
+
+# Copyright 2009 Robby Workman, Northport, Alabama, USA
+# Copyright 2010 Patrick Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=obex-data-server
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Don't clobber config files
+mv $PKG/etc/obex-data-server/imaging_capabilities.xml \
+ $PKG/etc/obex-data-server/imaging_capabilities.xml.new
+mv $PKG/etc/obex-data-server/capability.xml \
+ $PKG/etc/obex-data-server/capability.xml.new
+
+gzip -9 $PKG/usr/man/man?/*.?
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING* NEWS README* \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/n/obex-data-server/slack-desc b/source/n/obex-data-server/slack-desc
new file mode 100644
index 000000000..68bd08907
--- /dev/null
+++ b/source/n/obex-data-server/slack-desc
@@ -0,0 +1,20 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+obex-data-server: obex-data-server (Obex D-Bus Service Support)
+obex-data-server:
+obex-data-server: Obex-data-server is a D-Bus service providing high-level OBEX client
+obex-data-server: and server side functionality, and currently supports OPP, FTP
+obex-data-server: profiles and Bluetooth transport.
+obex-data-server:
+obex-data-server:
+obex-data-server:
+obex-data-server:
+obex-data-server:
+obex-data-server:
+obex-data-server:
diff --git a/source/n/obexfs/obexfs.SlackBuild b/source/n/obexfs/obexfs.SlackBuild
new file mode 100755
index 000000000..05c9ceb32
--- /dev/null
+++ b/source/n/obexfs/obexfs.SlackBuild
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+# Slackware build script for obexfs
+
+# Copyright 2009 Robby Workman, Northport, Alabama, USA
+# Copyright 2010 Patrick Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=obexfs
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING* INSTALL NEWS README* \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/obexfs/slack-desc b/source/n/obexfs/slack-desc
new file mode 100644
index 000000000..73971edc1
--- /dev/null
+++ b/source/n/obexfs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+obexfs: obexfs (mount filesystem of ObexFTP capable devices)
+obexfs:
+obexfs: ObexFS uses FUSE to mount filesystems of ObexFTP capable devices
+obexfs: either manually or in autofs style mode. It can handle all devices
+obexfs: that the obexftp package can handle, connected via serial cable,
+obexfs: IrDA, bluetooth, or USB.
+obexfs:
+obexfs: http://dev.zuckschwerdt.org/openobex/wiki/ObexDownloads
+obexfs:
+obexfs:
+obexfs:
diff --git a/source/n/obexftp/obexftp.SlackBuild b/source/n/obexftp/obexftp.SlackBuild
index 821db8d21..e2992d559 100755
--- a/source/n/obexftp/obexftp.SlackBuild
+++ b/source/n/obexftp/obexftp.SlackBuild
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,17 +21,24 @@
PKGNAM=obexftp
-VERSION=${VERSION:-0.23}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-3}
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -42,11 +49,16 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION || exit 1
# Make sure ownerships and permissions are sane:
@@ -57,6 +69,9 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Fixes the RSTRINGLEN for ruby-1.9
+zcat $CWD/ruby_rstringlen.diff.gz | patch -p1 --verbose || exit 1
+
# Configure:
CFLAGS="$SLKCFLAGS" \
./configure \
@@ -110,27 +125,27 @@ fi
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README THANKS TODO contrib \
+ AUTHORS COPYING* INSTALL NEWS README* THANKS TODO contrib \
$PKG/usr/doc/${PKGNAM}-$VERSION
rm -f $PKG/usr/doc/${PKGNAM}-$VERSION/contrib/Makefile*
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
# Remove perllocal files:
find $PKG -name perllocal.pod -exec rm "{}" \;
# This removes our DESTDIR from the packlist filenames, to keep perl's
# internal inventories consistent and correct.
find $PKG -name .packlist | while read plist ; do
- sed -e "s%/share/man%/man%g" \
- -e "s%$PKG%%g" \
- -e "s%\.1$%\.1\.gz%g" \
- -e "s%\.2$%\.2\.gz%g" \
- -e "s%\.3$%\.3\.gz%g" \
- -e "s%\.3pm$%\.3pm\.gz%g" \
- -e "s%\.4$%\.4\.gz%g" \
- -e "s%\.5$%\.5\.gz%g" \
- -e "s%\.6$%\.6\.gz%g" \
- -e "s%\.7$%\.7\.gz%g" \
- -e "s%\.8$%\.8\.gz%g" \
+ sed -e "s%$PKG%%g" \
+ -e "s%/share/man%/man%g" \
+ -re "s%\.([1-9]n?|3pm)$%&.gz%g # extend man filenames for .gz" \
${plist} > ${plist}.new
mv -f ${plist}.new ${plist}
done
diff --git a/source/n/obexftp/ruby_rstringlen.diff b/source/n/obexftp/ruby_rstringlen.diff
new file mode 100644
index 000000000..c406b44c2
--- /dev/null
+++ b/source/n/obexftp/ruby_rstringlen.diff
@@ -0,0 +1,15 @@
+diff -Naur obexftp-0.23.orig/swig/ruby/ruby_wrap.c obexftp-0.23/swig/ruby/ruby_wrap.c
+--- obexftp-0.23.orig/swig/ruby/ruby_wrap.c 2009-02-17 12:30:40.000000000 -0600
++++ obexftp-0.23/swig/ruby/ruby_wrap.c 2010-04-19 12:55:10.445810800 -0500
+@@ -2580,7 +2580,11 @@
+
+ /* VALUE str = StringValue(argv[0]); // perhaps better? */
+ arg2 = STR2CSTR(argv[0]);
++#ifdef RSTRING_LEN
++ arg3 = (int) RSTRING_LEN(argv[0]);
++#else
+ arg3 = (int) RSTRING(argv[0])->len;
++#endif
+
+
+
diff --git a/source/n/openldap-client/openldap-client.SlackBuild b/source/n/openldap-client/openldap-client.SlackBuild
index 0131f63c9..c23e17f48 100755
--- a/source/n/openldap-client/openldap-client.SlackBuild
+++ b/source/n/openldap-client/openldap-client.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,10 +23,19 @@
# OpenLDAP (clients/libraries only!)
-VERSION=2.3.43
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo openldap-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -46,8 +58,8 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf openldap-$VERSION
-tar xjvf $CWD/openldap-$VERSION.tar.bz2 || exit 1
-cd openldap-$VERSION
+tar xvf $CWD/openldap-$VERSION.tar.?z* || exit 1
+cd openldap-$VERSION || exit 1
chown -R root:root .
find . -perm 777 -exec chmod 755 {} \;
find . -perm 664 -exec chmod 644 {} \;
@@ -57,6 +69,7 @@ CFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--localstatedir=/var/lib \
--sysconfdir=/etc \
+ --mandir=/usr/man \
--with-cyrus-sasl \
--with-tls \
--with-readline \
@@ -89,9 +102,17 @@ EOF
mkdir -p $PKG/usr/doc/openldap-$VERSION
cp -a \
- ANNOUNCEMENT CHANGES COPYRIGHT LICENSE README \
+ ANNOUNCEMENT COPYRIGHT LICENSE README \
$PKG/usr/doc/openldap-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
+
# Remove man pages for the servers (not currently supported or shipped...
# do they even work properly without the evil PAM?)
find $PKG/usr/man -name slap* -exec rm -f {} \;
diff --git a/source/n/openobex/openobex.SlackBuild b/source/n/openobex/openobex.SlackBuild
index 201735223..5559d9d29 100755
--- a/source/n/openobex/openobex.SlackBuild
+++ b/source/n/openobex/openobex.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,18 +22,23 @@
PKGNAM=openobex
-VERSION=${VERSION:-1.3}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine architecture for build & packaging:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -44,11 +49,16 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION || exit 1
# Make sure ownerships and permissions are sane:
@@ -106,9 +116,17 @@ fi
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- AUTHORS COPYING* ChangeLog INSTALL NEWS README* \
+ AUTHORS COPYING* INSTALL NEWS README* \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/n/openssh/openssh.SlackBuild b/source/n/openssh/openssh.SlackBuild
index 4a6611327..3d0d1a986 100755
--- a/source/n/openssh/openssh.SlackBuild
+++ b/source/n/openssh/openssh.SlackBuild
@@ -2,7 +2,7 @@
# Copyright 2000 BSDi, Inc. Concord, CA, USA
# Copyright 2001, 2002, 2003, 2004 Slackware Linux, Inc. Concord, CA, USA
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -28,9 +28,20 @@ CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-openssh
-VERSION=${VERSION:-5.2p1}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo openssh-*.tar.gz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -42,6 +53,8 @@ elif [ "$ARCH" = "arm" ]; then
SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
elif [ "$ARCH" = "armel" ]; then
SLKCFLAGS="-O2 -march=armv4t"
+else
+ SLKCFLAGS="-O2"
fi
# Clean target location:
@@ -51,7 +64,7 @@ mkdir -p $PKG
# Prepare the framework and extract the package:
cd $TMP
rm -rf $PKG openssh-$VERSION
-tar xjvf $CWD/openssh-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/openssh-$VERSION.tar.gz || tar xvf $CWD/openssh-$VERSION.tar.?z* || exit 1
cd openssh-$VERSION
chown -R root:root .
@@ -70,15 +83,13 @@ CFLAGS="$SLKCFLAGS" \
--with-privsep-user=sshd \
--build=$ARCH-slackware-linux
-make -j4 || exit 1
+make $NUMJOBS || make || exit 1
# Install the package:
make install DESTDIR=$PKG
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-)
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
# Compress and if needed symlink the man pages:
if [ -d $PKG/usr/man ]; then
@@ -107,6 +118,14 @@ cp -a \
$PKG/usr/doc/openssh-$VERSION
chmod 644 $PKG/usr/doc/openssh-$VERSION/*
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
# Install also 'ssh-copy-id' and its manpage from contrib:
( cd contrib
cp -a ssh-copy-id $PKG/usr/bin/ssh-copy-id
diff --git a/source/n/openssl/openssl.SlackBuild b/source/n/openssl/openssl.SlackBuild
index b6cb80741..82aa87f3c 100755
--- a/source/n/openssl/openssl.SlackBuild
+++ b/source/n/openssl/openssl.SlackBuild
@@ -2,7 +2,7 @@
# Copyright 2000 BSDi, Inc. Concord, CA, USA
# Copyright 2001, 2002 Slackware Linux, Inc. Concord, CA, USA
-# Copyright 2005, 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005, 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -27,9 +27,18 @@
CWD=$(pwd)
TMP=${TMP:-/tmp}
-VERSION=${VERSION:-0.9.8k}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo openssl-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
PKG1=$TMP/package-openssl
PKG2=$TMP/package-ossllibs
@@ -43,7 +52,7 @@ export LC_ALL=C
cd $TMP
rm -rf $PKG1 $PKG2 openssl-$VERSION
-tar xvf $CWD/openssl-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/openssl-$VERSION.tar.?z* || exit 1
cd openssl-$VERSION
# Use .so.0, not .so.0.9.8:
@@ -56,9 +65,6 @@ elif [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
fi
-# Advertise TLS extensions only on TLS handshakes, not SSL:
-zcat $CWD/openssl.no-extssl.diff.gz | patch -p1 --verbose || exit 1
-
chown -R root:root .
mkdir -p $PKG1/usr/doc/openssl-$VERSION
cp -a CHANGES CHANGES.SSLeay FAQ INSTALL INSTALL.MacOS INSTALL.VMS INSTALL.W32 \
@@ -66,6 +72,14 @@ cp -a CHANGES CHANGES.SSLeay FAQ INSTALL INSTALL.MacOS INSTALL.VMS INSTALL.W32 \
find $PKG1/usr/doc/openssl-$VERSION -type d -exec chmod 755 {} \;
find $PKG1/usr/doc/openssl-$VERSION -type f -exec chmod 644 {} \;
+# If there's a CHANGES file, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG1/usr/doc/*-$VERSION)
+ cat CHANGES | head -n 2000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
+
# These are the known patent issues with OpenSSL:
# name # expires
# MDC-2: 4,908,861 2007-03-13, included. :-)
@@ -86,8 +100,24 @@ make $NUMJOBS || make || exit 1
make install INSTALL_PREFIX=$PKG1 || exit 1
+# Use proper libdir:
( cd $PKG1/usr; mv lib lib${LIBDIRSUFFIX} )
+# Make the .so.? library symlinks:
+( cd $PKG1/usr/lib${LIBDIRSUFFIX} ; ldconfig -l lib*.so.* )
+
+# Move libraries, as they might be needed by programs that bring a network
+# mounted /usr online:
+
+mkdir $PKG1/lib${LIBDIRSUFFIX}
+( cd $PKG1/usr/lib${LIBDIRSUFFIX}
+ for file in lib*.so.?.* ; do
+ mv $file ../../lib${LIBDIRSUFFIX}
+ ln -sf ../../lib${LIBDIRSUFFIX}/$file .
+ done
+ cp -a lib*.so.? ../../lib${LIBDIRSUFFIX}
+)
+
# Add a cron script to warn root if a certificate is going to expire soon:
mkdir -p $PKG1/etc/cron.daily
zcat $CWD/certwatch.gz > $PKG1/etc/cron.daily/certwatch.new
@@ -100,9 +130,6 @@ mv $PKG1/etc/ssl/openssl.cnf $PKG1/etc/ssl/openssl.cnf.new
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
-( cd $PKG1/usr/lib${LIBDIRSUFFIX} ; ldconfig -l * 2> /dev/null )
-( cd $PKG1/usr/lib${LIBDIRSUFFIX} ; ln -sf libcrypto.so.0 libcrypto.so )
-( cd $PKG1/usr/lib${LIBDIRSUFFIX} ; ln -sf libssl.so.0 libssl.so )
mv $PKG1/etc/ssl/man $PKG1/usr
( cd $PKG1/usr/man/man1 ; mv passwd.1 ssl_passwd.1 )
( cd $PKG1/usr/man/man3 ; mv rand.3 ssl_rand.3 )
@@ -131,9 +158,9 @@ cat $CWD/slack-desc.openssl > install/slack-desc
/sbin/makepkg -l y -c n $TMP/${NAME1}.txz
# Make runtime package:
-mkdir -p $PKG2/usr/lib${LIBDIRSUFFIX}
-( cd usr/lib${LIBDIRSUFFIX} ; cp -a lib*.so.*.*.* $PKG2/usr/lib${LIBDIRSUFFIX} )
-( cd $PKG2/usr/lib${LIBDIRSUFFIX} ; ldconfig -l * )
+mkdir -p $PKG2/lib${LIBDIRSUFFIX}
+( cd lib${LIBDIRSUFFIX} ; cp -a lib*.so.* $PKG2/lib${LIBDIRSUFFIX} )
+( cd $PKG2/lib${LIBDIRSUFFIX} ; ldconfig -l * )
mkdir -p $PKG2/etc
( cd $PKG2/etc ; cp -a $PKG1/etc/ssl . )
mkdir -p $PKG2/usr/doc/openssl-$VERSION
@@ -141,6 +168,15 @@ mkdir -p $PKG2/usr/doc/openssl-$VERSION
cp -a CHANGES CHANGES.SSLeay FAQ INSTALL INSTALL.MacOS INSTALL.VMS INSTALL.W32 \
LICENSE NEWS README README.ENGINE $PKG2/usr/doc/openssl-$VERSION
)
+
+# If there's a CHANGES file, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG2/usr/doc/*-$VERSION)
+ cat CHANGES | head -n 2000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
+
find $PKG2/usr/doc/openssl-$VERSION -type d -exec chmod 755 {} \;
find $PKG2/usr/doc/openssl-$VERSION -type f -exec chmod 644 {} \;
cd $PKG2
diff --git a/source/n/openssl/openssl.no-extssl.diff b/source/n/openssl/openssl.no-extssl.diff
deleted file mode 100644
index de00d0c77..000000000
--- a/source/n/openssl/openssl.no-extssl.diff
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -up openssl-0.9.8g/ssl/t1_lib.c.no-extssl openssl-0.9.8g/ssl/t1_lib.c
---- openssl-0.9.8g/ssl/t1_lib.c.no-extssl 2007-10-19 09:44:10.000000000 +0200
-+++ openssl-0.9.8g/ssl/t1_lib.c 2008-08-10 21:42:11.000000000 +0200
-@@ -132,6 +132,11 @@ unsigned char *ssl_add_clienthello_tlsex
- int extdatalen=0;
- unsigned char *ret = p;
-
-+ if (s->client_version != TLS1_VERSION && s->client_version != DTLS1_VERSION)
-+ {
-+ return ret;
-+ }
-+
- ret+=2;
-
- if (ret>=limit) return NULL; /* this really never occurs, but ... */
-@@ -202,6 +207,11 @@ unsigned char *ssl_add_serverhello_tlsex
- int extdatalen=0;
- unsigned char *ret = p;
-
-+ if (s->version != TLS1_VERSION && s->version != DTLS1_VERSION)
-+ {
-+ return ret;
-+ }
-+
- ret+=2;
- if (ret>=limit) return NULL; /* this really never occurs, but ... */
-
diff --git a/source/n/openvpn/openvpn.SlackBuild b/source/n/openvpn/openvpn.SlackBuild
index 45c1a17d8..56e344c47 100755
--- a/source/n/openvpn/openvpn.SlackBuild
+++ b/source/n/openvpn/openvpn.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2006, Alan Hicks, Lizella, GA
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=openvpn
-VERSION=2.0.9
-ARCH=${ARCH:-x86_64}
+PKGNAM=openvpn
+VERSION=2.1.1
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -38,18 +47,21 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/pkg-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.gz || exit 1
+cd $PKGNAM-$VERSION || exit 1
# Fix ownership and permissions inside the source tarball.
# It's appalling how many projects have 777 permissions or
@@ -68,6 +80,8 @@ CXXFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc/openvpn \
--localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/openvpn-${VERSION} \
--enable-lzo \
--build=$ARCH-slackware-linux
@@ -87,7 +101,7 @@ chmod 644 $PKG/etc/openvpn/openvpn.conf.sample
# Let folks know about the other configs, if they haven't found them.
# They might even find the documentation there useful. ;-)
cat << EOF > $PKG/etc/openvpn/README.TXT
-Have a look in /usr/doc/$PRGNAM-$VERSION/sample-config-files
+Have a look in /usr/doc/$PKGNAM-$VERSION/sample-config-files
for some more examples of how to configure OpenVPN. You'll
need to add something to your /etc/rc.d/rc.local to start
OpenVPN, as well as to tell it where to find its config file.
@@ -97,8 +111,8 @@ See "man openvpn" and the other docs for more information.
EOF
# Add a link, too:
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/sample-config-files
-( cd $PKG/usr/doc/$PRGNAM-$VERSION/sample-config-files
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/sample-config-files
+( cd $PKG/usr/doc/$PKGNAM-$VERSION/sample-config-files
ln -sf /etc/openvpn/openvpn.conf.sample .
)
@@ -109,14 +123,22 @@ if [ -d $PKG/usr/man ]; then
)
fi
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS COPYING COPYRIGHT.GPL ChangeLog INSTALL INSTALL-win32.txt \
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a AUTHORS COPYING COPYRIGHT.GPL INSTALL INSTALL-win32.txt \
NEWS PORTS README sample-config-files sample-keys sample-scripts easy-rsa \
- $PKG/usr/doc/$PRGNAM-$VERSION
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/php/channels/pear.php.net.reg b/source/n/php/channels/pear.php.net.reg
deleted file mode 100644
index f836b1a22..000000000
--- a/source/n/php/channels/pear.php.net.reg
+++ /dev/null
@@ -1 +0,0 @@
-a:5:{s:4:"name";s:12:"pear.php.net";s:14:"suggestedalias";s:4:"pear";s:7:"summary";s:40:"PHP Extension and Application Repository";s:7:"servers";a:1:{s:7:"primary";a:2:{s:6:"xmlrpc";a:1:{s:8:"function";a:10:{i:0;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:9:"logintest";}i:1;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:26:"package.listLatestReleases";}i:2;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:15:"package.listAll";}i:3;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:12:"package.info";}i:4;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:22:"package.getDownloadURL";}i:5;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.1";}s:8:"_content";s:22:"package.getDownloadURL";}i:6;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:25:"package.getDepDownloadURL";}i:7;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.1";}s:8:"_content";s:25:"package.getDepDownloadURL";}i:8;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:14:"package.search";}i:9;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:15:"channel.listAll";}}}s:4:"rest";a:1:{s:7:"baseurl";a:2:{i:0;a:2:{s:7:"attribs";a:1:{s:4:"type";s:7:"REST1.0";}s:8:"_content";s:25:"http://pear.php.net/rest/";}i:1;a:2:{s:7:"attribs";a:1:{s:4:"type";s:7:"REST1.1";}s:8:"_content";s:25:"http://pear.php.net/rest/";}}}}}s:13:"_lastmodified";s:31:"Sat, 04 Apr 2009 17:17:11 -0500";} \ No newline at end of file
diff --git a/source/n/php/channels/pecl.php.net.reg b/source/n/php/channels/pecl.php.net.reg
deleted file mode 100644
index ea6eaa146..000000000
--- a/source/n/php/channels/pecl.php.net.reg
+++ /dev/null
@@ -1 +0,0 @@
-a:6:{s:4:"name";s:12:"pecl.php.net";s:14:"suggestedalias";s:4:"pecl";s:7:"summary";s:31:"PHP Extension Community Library";s:7:"servers";a:1:{s:7:"primary";a:2:{s:6:"xmlrpc";a:1:{s:8:"function";a:10:{i:0;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:9:"logintest";}i:1;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:26:"package.listLatestReleases";}i:2;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:15:"package.listAll";}i:3;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:12:"package.info";}i:4;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:22:"package.getDownloadURL";}i:5;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.1";}s:8:"_content";s:22:"package.getDownloadURL";}i:6;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:25:"package.getDepDownloadURL";}i:7;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.1";}s:8:"_content";s:25:"package.getDepDownloadURL";}i:8;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:14:"package.search";}i:9;a:2:{s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}s:8:"_content";s:15:"channel.listAll";}}}s:4:"rest";a:1:{s:7:"baseurl";a:2:{i:0;a:2:{s:7:"attribs";a:1:{s:4:"type";s:7:"REST1.0";}s:8:"_content";s:25:"http://pecl.php.net/rest/";}i:1;a:2:{s:7:"attribs";a:1:{s:4:"type";s:7:"REST1.1";}s:8:"_content";s:25:"http://pecl.php.net/rest/";}}}}}s:15:"validatepackage";a:2:{s:8:"_content";s:19:"PEAR_Validator_PECL";s:7:"attribs";a:1:{s:7:"version";s:3:"1.0";}}s:13:"_lastmodified";s:31:"Sat, 04 Apr 2009 17:17:11 -0500";} \ No newline at end of file
diff --git a/source/n/php/mod_php.conf.example b/source/n/php/mod_php.conf.example
index 7a678b90c..670eb7135 100644
--- a/source/n/php/mod_php.conf.example
+++ b/source/n/php/mod_php.conf.example
@@ -7,8 +7,10 @@ LoadModule php5_module lib/httpd/modules/libphp5.so
# Tell Apache to feed all *.php files through PHP. If you'd like to
# parse PHP embedded in files with different extensions, comment out
-# this line and see the example below.
-AddType application/x-httpd-php .php
+# these lines and see the example below.
+<FilesMatch \.php$>
+ SetHandler application/x-httpd-php
+</FilesMatch>
# Tell Apache to feed all *.php, *.html, and *.htm files through
# the PHP module. Add or subtract extensions here as desired. Please
@@ -16,7 +18,12 @@ AddType application/x-httpd-php .php
# and insecure, so be sure to know what you're doing. It's a convenient
# shortcut, but probably isn't suitible for high-traffic sites if you
# write any of your pages in straight HTML.
-#AddType application/x-httpd-php .php .html .htm
+#<FilesMatch "\.(php|html|htm)$">
+# SetHandler application/x-httpd-php
+#</FilesMatch>
# This will display PHP files in colored syntax form. Use with caution.
-#AddType application/x-httpd-php-source .phps
+#<FilesMatch "\.phps$">
+# SetHandler application/x-httpd-php-source
+#</FilesMatch>
+
diff --git a/source/n/php/php.SlackBuild b/source/n/php/php.SlackBuild
index 5f8e2d351..dc0b74bbd 100755
--- a/source/n/php/php.SlackBuild
+++ b/source/n/php/php.SlackBuild
@@ -3,7 +3,7 @@
# Build and package mod_php on Slackware.
# by: David Cantrell <david@slackware.com>
# Modified for PHP 4-5 by volkerdi@slackware.com
-# Copyright 2007, 2008, 2009 Patrick Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,11 +24,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=5.2.10
+VERSION=5.2.13
ALPINE=2.00
-ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-2}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
@@ -37,7 +46,10 @@ PKG=$TMP/package-php/
rm -rf $PKG
mkdir -p $TMP $PKG
-if [ "$ARCH" = "i486" ]; then
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
@@ -46,6 +58,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
# we need to compile alpine to get c-client.a for IMAP support:
@@ -77,9 +92,12 @@ fi
cd $TMP
rm -rf php-$VERSION
-tar xvf $CWD/php-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/php-$VERSION.tar.?z* || exit 1
cd php-$VERSION
+zcat $CWD/php.gmp5.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/php.gd_libpng-1.4.diff.gz | patch -p1 --verbose || exit 1
+
# Add missing(?) PEAR modules back:
if [ -d php-$VERSION/pear/packages ]; then
( cd php-$VERSION/pear/packages
@@ -178,7 +196,7 @@ CFLAGS="$SLKCFLAGS" \
--with-mysqli=shared,/usr/bin/mysql_config \
--enable-pdo=shared \
--with-pdo-mysql=shared,/usr \
- --with-pdo-sqlite=shared \
+ --with-pdo-sqlite=shared,/usr \
--with-pspell=shared,/usr \
--with-mm=/usr \
--enable-shmop=shared \
@@ -244,13 +262,13 @@ chmod 755 $PKG/usr/bin/pear
rm -rf .channels .depdb .depdblock .filemap .lock .registry
)
-# Fix a couple broken .reg files in php-5.2.10:
-if ! grep -q Download $PKG/usr/lib${LIBDIRSUFFIX}/php/.channels/pear.php.net.reg ; then
- cat $CWD/channels/pear.php.net.reg > $PKG/usr/lib${LIBDIRSUFFIX}/php/.channels/pear.php.net.reg
-fi
-if ! grep -q Download $PKG/usr/lib${LIBDIRSUFFIX}/php/.channels/pecl.php.net.reg ; then
- cat $CWD/channels/pecl.php.net.reg > $PKG/usr/lib${LIBDIRSUFFIX}/php/.channels/pecl.php.net.reg
-fi
+## Fix a couple broken .reg files in php-5.2.10:
+#if ! grep -q Download $PKG/usr/lib${LIBDIRSUFFIX}/php/.channels/pear.php.net.reg ; then
+# cat $CWD/channels/pear.php.net.reg > $PKG/usr/lib${LIBDIRSUFFIX}/php/.channels/pear.php.net.reg
+#fi
+#if ! grep -q Download $PKG/usr/lib${LIBDIRSUFFIX}/php/.channels/pecl.php.net.reg ; then
+# cat $CWD/channels/pecl.php.net.reg > $PKG/usr/lib${LIBDIRSUFFIX}/php/.channels/pecl.php.net.reg
+#fi
# Fix $PKG/usr/lib/php perms:
( cd $PKG/usr/lib${LIBDIRSUFFIX}/php
diff --git a/source/n/php/php.gd_libpng-1.4.diff b/source/n/php/php.gd_libpng-1.4.diff
new file mode 100644
index 000000000..a591b7331
--- /dev/null
+++ b/source/n/php/php.gd_libpng-1.4.diff
@@ -0,0 +1,12 @@
+diff -ru php-5.2.13.orig/ext/gd/libgd/gd_png.c php-5.2.13/ext/gd/libgd/gd_png.c
+--- php-5.2.13.orig/ext/gd/libgd/gd_png.c 2009-03-14 12:48:42.000000000 -0500
++++ php-5.2.13/ext/gd/libgd/gd_png.c 2010-03-21 02:17:03.000000000 -0500
+@@ -139,7 +139,7 @@
+ return NULL;
+ }
+
+- if (!png_check_sig (sig, 8)) { /* bad signature */
++ if (png_sig_cmp (sig, 0, 8)) { /* bad signature */
+ return NULL;
+ }
+
diff --git a/source/n/php/php.gmp5.diff b/source/n/php/php.gmp5.diff
new file mode 100644
index 000000000..f77dd33a1
--- /dev/null
+++ b/source/n/php/php.gmp5.diff
@@ -0,0 +1,11 @@
+--- ./ext/gmp/gmp.c.orig 2010-01-03 03:23:27.000000000 -0600
++++ ./ext/gmp/gmp.c 2010-03-05 21:27:46.000000000 -0600
+@@ -1396,7 +1396,7 @@
+
+ GMPG(rand_initialized) = 1;
+ }
+- mpz_urandomb(*gmpnum_result, GMPG(rand_state), GMP_ABS (limiter) * __GMP_BITS_PER_MP_LIMB);
++ mpz_urandomb(*gmpnum_result, GMPG(rand_state), GMP_ABS (limiter) * GMP_LIMB_BITS);
+
+ ZEND_REGISTER_RESOURCE(return_value, gmpnum_result, le_gmp);
+ }
diff --git a/source/n/pinentry/pinentry.SlackBuild b/source/n/pinentry/pinentry.SlackBuild
index 3e0dd44de..d01b1295d 100755
--- a/source/n/pinentry/pinentry.SlackBuild
+++ b/source/n/pinentry/pinentry.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2006 Robby Workman (http://rlworkman.net)
-# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=pinentry
-VERSION=0.7.6
-ARCH=${ARCH:-x86_64}
+PKGNAM=pinentry
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -45,19 +54,23 @@ elif [ "$ARCH" = "arm" ]; then
SLKCFLAGS="-O2 -march=armv4t"
LIBDIRSUFFIX=""
ARCHQUADLET="-gnueabi"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ARCHQUADLET=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -102,14 +115,21 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
rm $PKG/usr/info/dir
gzip -9 $PKG/usr/info/*.info
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
AUTHORS COPYING* INSTALL NEWS README* THANKS TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/ppp/ppp.SlackBuild b/source/n/ppp/ppp.SlackBuild
index 227a9beb0..f7732bd61 100755
--- a/source/n/ppp/ppp.SlackBuild
+++ b/source/n/ppp/ppp.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,14 +20,23 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.4.4
+VERSION=2.4.5
RADVER=0.3.2
PPPVER=1.98
-ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
else
@@ -96,7 +105,8 @@ rm -rf radiusclient-$RADVER
tar xf $CWD/radiusclient-$RADVER.tar.bz2 || exit 1
cd radiusclient-$RADVER || exit 1
chown -R root:root .
-cp /usr/share/libtool/config.{guess,sub} .
+#cp /usr/share/libtool/config.{guess,sub} . # libtool-1.x
+cp /usr/share/libtool/config/config.{guess,sub} . # libtool-2.x
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
diff --git a/source/n/proftpd/proftpd.SlackBuild b/source/n/proftpd/proftpd.SlackBuild
index b004745ab..e7227fda3 100755
--- a/source/n/proftpd/proftpd.SlackBuild
+++ b/source/n/proftpd/proftpd.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,13 +21,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.3.2
-DIRVER=1.3.2
-ARCH=${ARCH:-x86_64}
+VERSION=1.3.3
+DIRVER=1.3.3
BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -37,6 +46,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -48,7 +60,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf proftpd-$VERSION
-tar xvf $CWD/proftpd-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/proftpd-$VERSION.tar.?z* || exit 1
cd proftpd-$DIRVER || exit 1
chown -R root:root .
@@ -93,8 +105,13 @@ mkdir -p $PKG/usr/doc/proftpd-$VERSION
cp -a COPYING CREDITS INSTALL NEWS README* \
contrib/README.mod_wrap contrib/README.ratio \
$PKG/usr/doc/proftpd-$VERSION
-head -c 93 ChangeLog > $PKG/usr/doc/proftpd-$VERSION/ChangeLog
-touch -r ChangeLog $PKG/usr/doc/proftpd-$VERSION/ChangeLog
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/proftpd-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
cp -a contrib/README $PKG/usr/doc/proftpd-$VERSION/README.contrib
cp -a doc sample-configurations $PKG/usr/doc/proftpd-$VERSION
# Bloat removal:
diff --git a/source/n/pssh/pssh.SlackBuild b/source/n/pssh/pssh.SlackBuild
index 8bb3dcbe9..25c19ae3c 100755
--- a/source/n/pssh/pssh.SlackBuild
+++ b/source/n/pssh/pssh.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,20 @@
# required: package "python" version 2.2 or higher installed
-VERSION=1.3.1
-ARCH=${ARCH:-x86_64} # Note that the package will be created as 'noarch' !
+VERSION=2.1.1
BUILD=1
+# Note that the package will be created as 'noarch' !
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
PREFIX=/usr
if [ "$ARCH" = "x86_64" ]; then
diff --git a/source/n/pssh/slack-desc b/source/n/pssh/slack-desc
index 42d25006f..8b69ec685 100644
--- a/source/n/pssh/slack-desc
+++ b/source/n/pssh/slack-desc
@@ -14,6 +14,6 @@ pssh: of large number of machines, using parallel ssh sessions. Included
pssh: are parallel versions of ssh, scp, and rsync, as well as a parallel
pssh: kill command.
pssh:
-pssh: Pssh has been written by Brent N. Chun, and requires the python
-pssh: package installed.
+pssh: Pssh has been written by Brent Chun <bnc at theether.org>, and is
+pssh: currently maintained by Andrew McNabb <amcnabb at mcnabbs.org>.
pssh:
diff --git a/source/n/rdist/rdist-6.1.5-00.linux.diff b/source/n/rdist/rdist-6.1.5-00.linux.diff
new file mode 100644
index 000000000..1f9fb8245
--- /dev/null
+++ b/source/n/rdist/rdist-6.1.5-00.linux.diff
@@ -0,0 +1,23 @@
+diff: rdist-6.1.5/config/mf: No such file or directory
+--- rdist-6.1.5/config/os-linux.h.linux Mon Nov 9 22:59:59 1998
++++ rdist-6.1.5/config/os-linux.h Thu Nov 12 14:50:35 1998
+@@ -58,7 +58,7 @@
+ /*
+ * Select the type of executable file format.
+ */
+-#define EXE_TYPE EXE_AOUT
++#define EXE_TYPE EXE_ELF
+
+ /*
+ * Select the type of statfs() system call (if any).
+--- rdist-6.1.5/mf/Makefile.var.linux Tue Nov 10 00:02:11 1998
++++ rdist-6.1.5/mf/Makefile.var Thu Nov 12 14:50:35 1998
+@@ -67,7 +67,7 @@
+ #
+ # Name of YACC.
+ #
+-#YACC = bison -y
++YACC = bison -y
+
+ OPT = -g
+ RM = rm
diff --git a/source/n/rdist/rdist-6.1.5-01.links.diff b/source/n/rdist/rdist-6.1.5-01.links.diff
new file mode 100644
index 000000000..187dce4d3
--- /dev/null
+++ b/source/n/rdist/rdist-6.1.5-01.links.diff
@@ -0,0 +1,74 @@
+--- rdist-6.1.5/src/client.c.links Wed Feb 17 17:46:09 1999
++++ rdist-6.1.5/src/client.c Wed Feb 17 17:51:15 1999
+@@ -309,6 +309,18 @@
+ return(0);
+ }
+
++void freelinkinfo(lp)
++ struct linkbuf *lp;
++{
++ if (lp->pathname)
++ free(lp->pathname);
++ if (lp->src)
++ free(lp->src);
++ if (lp->target)
++ free(lp->target);
++ free(lp);
++}
++
+ /*
+ * Save and retrieve hard link info
+ */
+@@ -317,6 +329,7 @@
+ {
+ struct linkbuf *lp;
+
++ /* xxx: linear search doesn't scale with many links */
+ for (lp = ihead; lp != NULL; lp = lp->nextp)
+ if (lp->inum == statp->st_ino && lp->devnum == statp->st_dev) {
+ lp->count--;
+@@ -329,12 +342,14 @@
+ lp->inum = statp->st_ino;
+ lp->devnum = statp->st_dev;
+ lp->count = statp->st_nlink - 1;
+- (void) strcpy(lp->pathname, target);
+- (void) strcpy(lp->src, source);
++ lp->pathname = strdup(target);
++ lp->src = strdup(source);
+ if (Tdest)
+- (void) strcpy(lp->target, Tdest);
++ lp->target = strdup(Tdest);
+ else
+- *lp->target = CNULL;
++ lp->target = NULL;
++ if (!lp->pathname || !lp->src || !(Tdest && lp->target))
++ fatalerr("Cannot malloc memory in linkinfo.");
+
+ return((struct linkbuf *) NULL);
+ }
+--- rdist-6.1.5/src/docmd.c.links Wed Feb 17 17:51:23 1999
++++ rdist-6.1.5/src/docmd.c Wed Feb 17 17:52:44 1999
+@@ -586,7 +586,7 @@
+ if (!nflag) {
+ register struct linkbuf *nextl, *l;
+
+- for (l = ihead; l != NULL; free((char *)l), l = nextl) {
++ for (l = ihead; l != NULL; freelinkinfo(l), l = nextl) {
+ nextl = l->nextp;
+ if (contimedout || IS_ON(opts, DO_IGNLNKS) ||
+ l->count == 0)
+--- rdist-6.1.5/include/defs.h.links Wed Feb 17 17:52:58 1999
++++ rdist-6.1.5/include/defs.h Wed Feb 17 17:53:47 1999
+@@ -276,9 +276,9 @@
+ ino_t inum;
+ dev_t devnum;
+ int count;
+- char pathname[BUFSIZ];
+- char src[BUFSIZ];
+- char target[BUFSIZ];
++ char *pathname;
++ char *src;
++ char *target;
+ struct linkbuf *nextp;
+ };
+
diff --git a/source/n/rdist/rdist-6.1.5-03.hardlink.diff b/source/n/rdist/rdist-6.1.5-03.hardlink.diff
new file mode 100644
index 000000000..5eeebc1cc
--- /dev/null
+++ b/source/n/rdist/rdist-6.1.5-03.hardlink.diff
@@ -0,0 +1,20 @@
+--- rdist-6.1.5/src/client.c.hardlink Thu Jun 3 13:56:31 1999
++++ rdist-6.1.5/src/client.c Thu Jun 3 14:00:06 1999
+@@ -348,7 +348,7 @@
+ lp->target = strdup(Tdest);
+ else
+ lp->target = NULL;
+- if (!lp->pathname || !lp->src || !(Tdest && lp->target))
++ if (!lp->pathname || !lp->src || (Tdest && !lp->target))
+ fatalerr("Cannot malloc memory in linkinfo.");
+
+ return((struct linkbuf *) NULL);
+@@ -370,7 +370,7 @@
+ "sendhardlink: rname='%s' pathname='%s' src='%s' target='%s'\n",
+ rname, lp->pathname, lp->src, lp->target);
+
+- if (*lp->target == CNULL)
++ if (lp->target == NULL || *lp->target == CNULL)
+ (void) sendcmd(C_RECVHARDLINK, "%o %s %s",
+ opts, lp->pathname, rname);
+ else {
diff --git a/source/n/rdist/rdist-6.1.5-bison.diff b/source/n/rdist/rdist-6.1.5-04.bison.diff
index a09130abd..a09130abd 100644
--- a/source/n/rdist/rdist-6.1.5-bison.diff
+++ b/source/n/rdist/rdist-6.1.5-04.bison.diff
diff --git a/source/n/rdist/rdist-6.1.5-varargs.diff b/source/n/rdist/rdist-6.1.5-05.varargs.diff
index cf2786d2c..cf2786d2c 100644
--- a/source/n/rdist/rdist-6.1.5-varargs.diff
+++ b/source/n/rdist/rdist-6.1.5-05.varargs.diff
diff --git a/source/n/rdist/rdist-6.1.5-06.maxargs.diff b/source/n/rdist/rdist-6.1.5-06.maxargs.diff
new file mode 100644
index 000000000..4fbe147bf
--- /dev/null
+++ b/source/n/rdist/rdist-6.1.5-06.maxargs.diff
@@ -0,0 +1,11 @@
+--- rdist-6.1.5/src/setargs.c.maxargs 1998-11-10 05:15:56.000000000 +0100
++++ rdist-6.1.5/src/setargs.c 2003-09-04 14:39:03.000000000 +0200
+@@ -58,7 +58,7 @@
+ * Set process argument functions
+ */
+
+-#define MAXUSERENVIRON 40
++#define MAXUSERENVIRON 1024
+ char **Argv = NULL;
+ char *LastArgv = NULL;
+ char *UserEnviron[MAXUSERENVIRON+1];
diff --git a/source/n/rdist/rdist-6.1.5-07.lfs.diff b/source/n/rdist/rdist-6.1.5-07.lfs.diff
new file mode 100644
index 000000000..e1fe2a182
--- /dev/null
+++ b/source/n/rdist/rdist-6.1.5-07.lfs.diff
@@ -0,0 +1,137 @@
+--- rdist-6.1.5/src/client.c.lfs 2003-12-16 23:43:56.000000000 +0100
++++ rdist-6.1.5/src/client.c 2003-12-16 23:46:56.000000000 +0100
+@@ -414,9 +414,9 @@
+ /*
+ * Send file info
+ */
+- (void) sendcmd(C_RECVREG, "%o %04o %ld %ld %ld %s %s %s",
++ (void) sendcmd(C_RECVREG, "%o %04o %lld %ld %ld %s %s %s",
+ opts, stb->st_mode & 07777,
+- (long) stb->st_size,
++ (off_t) stb->st_size,
+ stb->st_mtime, stb->st_atime,
+ user, group, rname);
+ if (response() < 0) {
+@@ -424,8 +424,8 @@
+ return(-1);
+ }
+
+- debugmsg(DM_MISC, "Send file '%s' %d bytes\n",
+- rname, (long) stb->st_size);
++ debugmsg(DM_MISC, "Send file '%s' %lld bytes\n",
++ rname, (off_t) stb->st_size);
+
+ /*
+ * Set remote time out alarm handler.
+@@ -676,9 +676,9 @@
+ /*
+ * Gather and send basic link info
+ */
+- (void) sendcmd(C_RECVSYMLINK, "%o %04o %ld %ld %ld %s %s %s",
++ (void) sendcmd(C_RECVSYMLINK, "%o %04o %lld %ld %ld %s %s %s",
+ opts, stb->st_mode & 07777,
+- (long) stb->st_size,
++ (off_t) stb->st_size,
+ stb->st_mtime, stb->st_atime,
+ user, group, rname);
+ if (response() < 0)
+@@ -858,7 +858,7 @@
+ /*
+ * Parse size
+ */
+- size = strtol(cp, &cp, 10);
++ size = strtoll(cp, &cp, 10);
+ if (*cp++ != ' ') {
+ error("update: size not delimited");
+ return(US_NOTHING);
+@@ -910,8 +910,8 @@
+
+ debugmsg(DM_MISC, "update(%s,) local mode %04o remote mode %04o\n",
+ rname, lmode, rmode);
+- debugmsg(DM_MISC, "update(%s,) size %d mtime %d owner '%s' grp '%s'\n",
+- rname, (int) size, mtime, owner, group);
++ debugmsg(DM_MISC, "update(%s,) size %lld mtime %d owner '%s' grp '%s'\n",
++ rname, (off_t) size, mtime, owner, group);
+
+ if (statp->st_mtime != mtime) {
+ if (statp->st_mtime < mtime && IS_ON(opts, DO_YOUNGER)) {
+@@ -937,8 +937,8 @@
+ }
+
+ if (statp->st_size != size) {
+- debugmsg(DM_MISC, "size does not match (%d != %d).\n",
+- (int) statp->st_size, size);
++ debugmsg(DM_MISC, "size does not match (%lld != %lld).\n",
++ statp->st_size, size);
+ return(US_OUTDATE);
+ }
+
+--- rdist-6.1.5/src/server.c.lfs 1998-11-10 05:15:31.000000000 +0100
++++ rdist-6.1.5/src/server.c 2003-12-16 23:50:19.000000000 +0100
+@@ -645,8 +645,8 @@
+ case S_IFLNK:
+ case S_IFDIR:
+ case S_IFREG:
+- (void) sendcmd(QC_YES, "%ld %ld %o %s %s",
+- (long) stb.st_size,
++ (void) sendcmd(QC_YES, "%lld %ld %o %s %s",
++ (off_t) stb.st_size,
+ stb.st_mtime,
+ stb.st_mode & 07777,
+ getusername(stb.st_uid, target, options),
+@@ -1388,7 +1388,7 @@
+ /*
+ * Get file size
+ */
+- size = strtol(cp, &cp, 10);
++ size = strtoll(cp, &cp, 10);
+ if (*cp++ != ' ') {
+ error("recvit: size not delimited");
+ return;
+@@ -1441,7 +1441,7 @@
+ }
+
+ debugmsg(DM_MISC,
+- "recvit: opts = %04o mode = %04o size = %d mtime = %d",
++ "recvit: opts = %04o mode = %04o size = %lld mtime = %d",
+ opts, mode, size, mtime);
+ debugmsg(DM_MISC,
+ "recvit: owner = '%s' group = '%s' file = '%s' catname = %d isdir = %d",
+--- rdist-6.1.5/include/defs.h.lfs 2003-12-16 23:43:56.000000000 +0100
++++ rdist-6.1.5/include/defs.h 2003-12-16 23:43:56.000000000 +0100
+@@ -22,6 +22,8 @@
+ #include <stdlib.h>
+ #endif /* _POSIX_SOURCE */
+ #include <stdio.h>
++#include <string.h>
++#include <mntent.h>
+ #include <ctype.h>
+ #include <errno.h>
+ #include <pwd.h>
+@@ -317,15 +319,6 @@
+ #endif /* USE_STATDB */
+
+ /*
+- * System function declarations
+- */
+-char *hasmntopt();
+-char *strchr();
+-char *strdup();
+-char *strrchr();
+-char *strtok();
+-
+-/*
+ * Our own declarations.
+ */
+ char *exptilde();
+--- rdist-6.1.5/Makefile.local.lfs 1998-11-10 04:36:31.000000000 +0100
++++ rdist-6.1.5/Makefile.local 2003-12-16 23:43:56.000000000 +0100
+@@ -20,7 +20,7 @@
+ # Add any local definitions you want pass to the compiler to DEFS_LOCAL
+ # below. This includes those items found in "config/config.h".
+ #
+-#DEFS_LOCAL = -DDIRECT_RCMD
++DEFS_LOCAL = -O2 -g -pipe -Wall -D_POSIX_SOURCE -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+
+ #
+ # Add any local libraries that your system might need to LIBS_LOCAL below.
diff --git a/source/n/rdist/rdist-6.1.5-08.cleanup.diff b/source/n/rdist/rdist-6.1.5-08.cleanup.diff
new file mode 100644
index 000000000..5b5bfa6c6
--- /dev/null
+++ b/source/n/rdist/rdist-6.1.5-08.cleanup.diff
@@ -0,0 +1,2082 @@
+--- rdist-6.1.5/src/gram.y.cleanup 2003-12-17 11:38:16.000000000 +0100
++++ rdist-6.1.5/src/gram.y 2003-12-17 11:38:16.000000000 +0100
+@@ -40,7 +40,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: gram.y,v 6.30 1998/11/10 04:10:42 mcooper Exp $";
+
+@@ -170,7 +170,7 @@
+ ;
+
+ cmd: INSTALL options opt_namelist ';' {
+- register struct namelist *nl;
++ struct namelist *nl;
+
+ $1->sc_options = $2 | options;
+ if ($3 != NULL) {
+@@ -240,11 +240,11 @@
+ int yylineno = 1;
+ extern FILE *fin;
+
+-yylex()
++int yylex()
+ {
+ static char yytext[INMAX];
+- register int c;
+- register char *cp1, *cp2;
++ int c;
++ char *cp1, *cp2;
+ static char quotechars[] = "[]{}*?$";
+
+ again:
+@@ -409,8 +409,8 @@
+ * some of the characters we use.
+ */
+ extern int any(c, str)
+- register int c;
+- register char *str;
++ int c;
++ char *str;
+ {
+ while (*str)
+ if (c == *str++)
+@@ -421,13 +421,14 @@
+ /*
+ * Insert or append ARROW command to list of hosts to be updated.
+ */
++void
+ insert(label, files, hosts, subcmds)
+ char *label;
+ struct namelist *files, *hosts;
+ struct subcmd *subcmds;
+ {
+- register struct cmd *c, *prev, *nc;
+- register struct namelist *h, *lasth;
++ struct cmd *c, *prev, *nc;
++ struct namelist *h, *lasth;
+
+ debugmsg(DM_CALL, "insert(%s, %x, %x, %x) start, files = %s",
+ label == NULL ? "(null)" : label,
+@@ -475,13 +476,14 @@
+ * Append DCOLON command to the end of the command list since these are always
+ * executed in the order they appear in the distfile.
+ */
++void
+ append(label, files, stamp, subcmds)
+ char *label;
+ struct namelist *files;
+ char *stamp;
+ struct subcmd *subcmds;
+ {
+- register struct cmd *c;
++ struct cmd *c;
+
+ c = ALLOC(cmd);
+ c->c_type = DCOLON;
+@@ -501,6 +503,7 @@
+ /*
+ * Error printing routine in parser.
+ */
++void
+ yyerror(s)
+ char *s;
+ {
+@@ -530,7 +533,7 @@
+ makenl(name)
+ char *name;
+ {
+- register struct namelist *nl;
++ struct namelist *nl;
+
+ debugmsg(DM_CALL, "makenl(%s)", name == NULL ? "null" : name);
+
+@@ -627,7 +630,7 @@
+ makesubcmd(type)
+ int type;
+ {
+- register struct subcmd *sc;
++ struct subcmd *sc;
+
+ sc = ALLOC(subcmd);
+ sc->sc_type = type;
+--- rdist-6.1.5/src/rdist.c.cleanup 1998-11-10 05:13:50.000000000 +0100
++++ rdist-6.1.5/src/rdist.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: rdist.c,v 6.66 1998/11/10 04:13:49 mcooper Exp $";
+
+@@ -80,7 +80,7 @@
+ char *name;
+ struct namelist **hostlist;
+ {
+- register struct namelist *ptr, *new;
++ struct namelist *ptr, *new;
+
+ if (!name || !hostlist)
+ return;
+@@ -97,14 +97,15 @@
+ *hostlist = new;
+ }
+
++int
+ main(argc, argv, envp)
+ int argc;
+ char *argv[];
+ char **envp;
+ {
+ struct namelist *hostlist = NULL;
+- register int x;
+- register char *cp;
++ int x;
++ char *cp;
+ int cmdargs = 0;
+ int c;
+
+@@ -114,7 +115,7 @@
+ */
+ setprogname(argv);
+
+- if (cp = msgparseopts(localmsglist, TRUE)) {
++ if ((cp = msgparseopts(localmsglist, TRUE))) {
+ error("Bad builtin log option (%s): %s.",
+ localmsglist, cp);
+ usage();
+@@ -158,7 +159,7 @@
+ while ((c = getopt(argc, argv, optchars)) != -1)
+ switch (c) {
+ case 'l':
+- if (cp = msgparseopts(optarg, TRUE)) {
++ if ((cp = msgparseopts(optarg, TRUE))) {
+ error("Bad log option \"%s\": %s.", optarg,cp);
+ usage();
+ }
+@@ -206,7 +207,7 @@
+
+ case 'D':
+ debug = DM_ALL;
+- if (cp = msgparseopts("stdout=all,debug", TRUE)) {
++ if ((cp = msgparseopts("stdout=all,debug", TRUE))) {
+ error("Enable debug messages failed: %s.", cp);
+ usage();
+ }
+@@ -245,7 +246,7 @@
+ error("No path specified to \"-P\".");
+ usage();
+ }
+- if (cp = searchpath(optarg))
++ if ((cp = searchpath(optarg)))
+ path_remsh = strdup(cp);
+ else {
+ error("No component of path \"%s\" exists.",
+@@ -297,7 +298,7 @@
+ else {
+ if (fin == NULL)
+ fin = opendist(distfile);
+- (void) yyparse();
++ yyparse();
+ /*
+ * Need to keep stdin open for child processing later
+ */
+@@ -348,6 +349,7 @@
+ /*
+ * Print usage message and exit.
+ */
++void
+ usage()
+ {
+ char *sopts = "cDFnv";
+@@ -379,12 +381,13 @@
+ /*
+ * rcp like interface for distributing files.
+ */
++void
+ docmdargs(nargs, args)
+ int nargs;
+ char *args[];
+ {
+- register struct namelist *nl, *prev;
+- register char *cp;
++ struct namelist *nl, *prev;
++ char *cp;
+ struct namelist *files, *hosts;
+ struct subcmd *cmds;
+ char *dest;
+@@ -433,10 +436,10 @@
+ * Get a list of NAME blocks (mostly for debugging).
+ */
+ extern char *getnlstr(nl)
+- register struct namelist *nl;
++ struct namelist *nl;
+ {
+ static char buf[16384];
+- register int count = 0, len = 0;
++ int count = 0, len = 0;
+
+ (void) sprintf(buf, "(");
+
+--- rdist-6.1.5/src/client.c.cleanup 2003-12-17 11:38:16.000000000 +0100
++++ rdist-6.1.5/src/client.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: client.c,v 6.82 1998/11/10 04:08:47 mcooper Exp $";
+
+@@ -84,7 +84,7 @@
+ int destdir;
+ {
+ extern struct namelist *filelist;
+- register char *lname, *cp;
++ char *lname, *cp;
+ static char buff[BUFSIZ];
+ int srclen, pathlen;
+ char *p;
+@@ -146,7 +146,7 @@
+ struct namelist *list;
+ char *file;
+ {
+- register struct namelist *nl;
++ struct namelist *nl;
+
+ for (nl = list; nl != NULL; nl = nl->n_next)
+ if (strcmp(file, nl->n_name) == 0)
+@@ -163,7 +163,7 @@
+ char *rname;
+ int destdir;
+ {
+- register struct subcmd *sc;
++ struct subcmd *sc;
+ extern struct subcmd *subcmds;
+ char *rfile;
+
+@@ -200,7 +200,7 @@
+ {
+ char *rfile;
+ struct namelist *new;
+- register struct subcmd *sc;
++ struct subcmd *sc;
+ extern struct subcmd *subcmds;
+ int isokay = 0;
+
+@@ -227,7 +227,7 @@
+ */
+ static void freecmdspecialfiles()
+ {
+- register struct namelist *ptr, *save;
++ struct namelist *ptr, *save;
+
+ for (ptr = updfilelist; ptr; ) {
+ if (ptr->n_name) (void) free(ptr->n_name);
+@@ -249,10 +249,8 @@
+ char **filev;
+ opt_t opts;
+ {
+- register struct subcmd *sc;
+- register struct namelist *f;
+- register char **cpp;
+- char *file;
++ struct subcmd *sc;
++ struct namelist *f;
+ int first = TRUE;
+
+ for (sc = cmd->c_cmds; sc != NULL; sc = sc->sc_next) {
+@@ -294,7 +292,7 @@
+ int checkfilename(name)
+ char *name;
+ {
+- register char *cp;
++ char *cp;
+
+ if (strchr(name, '\n')) {
+ for (cp = name; *cp; cp++)
+@@ -501,7 +499,7 @@
+ static int rmchk(opts)
+ opt_t opts;
+ {
+- register u_char *s;
++ u_char *s;
+ struct stat stb;
+ int didupdate = 0;
+ int n;
+@@ -618,7 +616,7 @@
+
+ optarget = ptarget;
+ len = ptarget - target;
+- while (dp = readdir(d)) {
++ while ((dp = readdir(d))) {
+ if (!strcmp(dp->d_name, ".") ||
+ !strcmp(dp->d_name, ".."))
+ continue;
+@@ -631,7 +629,7 @@
+ if (ptarget[-1] != '/')
+ *ptarget++ = '/';
+ cp = dp->d_name;
+- while (*ptarget++ = *cp++)
++ while ((*ptarget++ = *cp++))
+ ;
+ ptarget--;
+ if (sendit(dp->d_name, opts, destdir) > 0)
+@@ -770,13 +768,13 @@
+ opt_t opts;
+ struct stat *statp;
+ {
+- register off_t size;
+- register time_t mtime;
++ off_t size;
++ time_t mtime;
+ unsigned short lmode;
+ unsigned short rmode;
+ char *owner = NULL, *group = NULL;
+ int done, n;
+- u_char *cp;
++ char *cp;
+
+ debugmsg(DM_CALL, "update(%s, 0x%x, 0x%x)\n", rname, opts, statp);
+
+@@ -1035,7 +1033,6 @@
+ int destdir;
+ {
+ static struct stat stb;
+- extern struct subcmd *subcmds;
+ char *user, *group;
+ int u, len;
+ int didupdate = 0;
+@@ -1157,7 +1154,7 @@
+ (void) unlink(statfile);
+ #endif
+
+- if (file = getnotifyfile())
++ if ((file = getnotifyfile()))
+ (void) unlink(file);
+ }
+
+--- rdist-6.1.5/src/child.c.cleanup 1998-11-10 05:18:57.000000000 +0100
++++ rdist-6.1.5/src/child.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: child.c,v 6.29 1998/11/10 04:18:56 mcooper Exp $";
+
+@@ -90,7 +90,7 @@
+ static void removechild(child)
+ CHILD *child;
+ {
+- register CHILD *pc, *prevpc;
++ CHILD *pc, *prevpc;
+
+ debugmsg(DM_CALL, "removechild(%s, %d, %d) start",
+ child->c_name, child->c_pid, child->c_readfd);
+@@ -148,7 +148,7 @@
+ static CHILD *copychild(child)
+ CHILD *child;
+ {
+- register CHILD *newc;
++ CHILD *newc;
+
+ newc = (CHILD *) xmalloc(sizeof(CHILD));
+
+@@ -167,7 +167,7 @@
+ static void addchild(child)
+ CHILD *child;
+ {
+- register CHILD *pc;
++ CHILD *pc;
+
+ debugmsg(DM_CALL, "addchild() start\n");
+
+@@ -280,7 +280,7 @@
+ */
+ static void reap()
+ {
+- register CHILD *pc;
++ CHILD *pc;
+ int status = 0;
+ pid_t pid;
+
+@@ -336,7 +336,7 @@
+ */
+ static void childscan()
+ {
+- register CHILD *pc, *nextpc;
++ CHILD *pc, *nextpc;
+
+ debugmsg(DM_CALL, "childscan() start");
+
+@@ -366,8 +366,8 @@
+ extern void waitup()
+ {
+ #if defined(HAVE_SELECT)
+- register int count;
+- register CHILD *pc;
++ int count;
++ CHILD *pc;
+ fd_set rchildfds;
+
+ debugmsg(DM_CALL, "waitup() start\n");
+--- rdist-6.1.5/src/docmd.c.cleanup 2003-12-17 11:38:16.000000000 +0100
++++ rdist-6.1.5/src/docmd.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: docmd.c,v 6.87 1998/11/10 04:08:32 mcooper Exp $";
+
+@@ -99,10 +99,10 @@
+ */
+ static void notify(rhost, to, lmod)
+ char *rhost;
+- register struct namelist *to;
++ struct namelist *to;
+ time_t lmod;
+ {
+- register int fd, len;
++ int fd, len;
+ FILE *pf, *popen();
+ struct stat stb;
+ static char buf[BUFSIZ];
+@@ -221,7 +221,7 @@
+ struct cmd *cmd;
+ struct cmd *cmdlist;
+ {
+- register struct cmd *pcmd;
++ struct cmd *pcmd;
+
+ for (pcmd = cmdlist; pcmd; pcmd = pcmd->c_next) {
+ checkcmd(pcmd);
+@@ -238,7 +238,7 @@
+ struct cmd *cmd;
+ struct cmd *cmdlist;
+ {
+- register struct cmd *pc;
++ struct cmd *pc;
+
+ if (!cmd) {
+ debugmsg(DM_MISC, "markfailed() NULL cmd parameter");
+@@ -309,7 +309,7 @@
+ static int makeconn(rhost)
+ char *rhost;
+ {
+- register char *ruser, *cp;
++ char *ruser, *cp;
+ static char *cur_host = NULL;
+ extern char *locuser;
+ extern long min_freefiles, min_freespace;
+@@ -430,9 +430,9 @@
+ struct cmd *cmd;
+ char **filev;
+ {
+- register struct namelist *f;
+- register struct subcmd *sc;
+- register char **cpp;
++ struct namelist *f;
++ struct subcmd *sc;
++ char **cpp;
+ int n, ddir, destdir, opts = options;
+ struct namelist *files;
+ struct subcmd *sbcmds;
+@@ -567,7 +567,6 @@
+ }
+ }
+
+-done:
+ /*
+ * Run any commands for the entire cmd
+ */
+@@ -584,7 +583,7 @@
+ notify(rhost, sc->sc_args, (time_t) 0);
+
+ if (!nflag) {
+- register struct linkbuf *nextl, *l;
++ struct linkbuf *nextl, *l;
+
+ for (l = ihead; l != NULL; freelinkinfo(l), l = nextl) {
+ nextl = l->nextp;
+@@ -601,11 +600,12 @@
+ setjmp_ok = FALSE;
+ }
+
++int
+ okname(name)
+- register char *name;
++ char *name;
+ {
+- register char *cp = name;
+- register int c, isbad;
++ char *cp = name;
++ int c, isbad;
+
+ for (isbad = FALSE; *cp && !isbad; ++cp) {
+ c = *cp;
+@@ -627,9 +627,9 @@
+ struct subcmd *sbcmds;
+ char **env;
+ {
+- register DIR *d;
+- register DIRENTRY *dp;
+- register char *cp;
++ DIR *d;
++ DIRENTRY *dp;
++ char *cp;
+ char *optarget;
+ int len;
+
+@@ -641,7 +641,7 @@
+ }
+ optarget = ptarget;
+ len = ptarget - target;
+- while (dp = readdir(d)) {
++ while ((dp = readdir(d))) {
+ if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, ".."))
+ continue;
+ if (len + 1 + (int)strlen(dp->d_name) >= BUFSIZ - 1) {
+@@ -651,7 +651,7 @@
+ ptarget = optarget;
+ *ptarget++ = '/';
+ cp = dp->d_name;
+- while (*ptarget++ = *cp++)
++ while ((*ptarget++ = *cp++))
+ ;
+ ptarget--;
+ cmptime(target, sbcmds, env);
+@@ -740,9 +740,9 @@
+ struct cmd *cmd;
+ char **filev;
+ {
+- register struct subcmd *sc;
+- register struct namelist *f;
+- register char *cp, **cpp;
++ struct subcmd *sc;
++ struct namelist *f;
++ char *cp, **cpp;
+ struct stat stb;
+ struct namelist *files = cmd->c_files;
+ struct subcmd *sbcmds = cmd->c_cmds;
+@@ -824,8 +824,8 @@
+ extern int except(file)
+ char *file;
+ {
+- register struct subcmd *sc;
+- register struct namelist *nl;
++ struct subcmd *sc;
++ struct namelist *nl;
+
+ debugmsg(DM_CALL, "except(%s)", file);
+
+@@ -918,8 +918,8 @@
+ int argc;
+ char **argv;
+ {
+- register struct namelist *f;
+- register int i;
++ struct namelist *f;
++ int i;
+
+ if (argc) {
+ for (i = 0; i < argc; i++) {
+@@ -962,9 +962,9 @@
+ int argc;
+ char **argv;
+ {
+- register struct cmd *c;
+- register char *cp;
+- register int i;
++ struct cmd *c;
++ char *cp;
++ int i;
+
+ (void) signal(SIGHUP, sighandler);
+ (void) signal(SIGINT, sighandler);
+@@ -1032,7 +1032,7 @@
+
+ if (hostlist) {
+ /* Do specific hosts as specified on command line */
+- register struct namelist *nlptr;
++ struct namelist *nlptr;
+
+ for (nlptr = hostlist; nlptr; nlptr = nlptr->n_next)
+ /*
+--- rdist-6.1.5/src/distopt.c.cleanup 1998-11-10 05:09:11.000000000 +0100
++++ rdist-6.1.5/src/distopt.c 2003-12-17 11:38:16.000000000 +0100
+@@ -6,7 +6,7 @@
+ * appropriately.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: distopt.c,v 6.12 1998/11/10 04:09:11 mcooper Exp $";
+
+@@ -55,7 +55,7 @@
+ extern DISTOPTINFO *getdistopt(name)
+ char *name;
+ {
+- register int i;
++ int i;
+
+ for (i = 0; distoptinfo[i].do_name; ++i)
+ if (strcasecmp(name, distoptinfo[i].do_name) == 0)
+@@ -74,7 +74,7 @@
+ opt_t *optptr;
+ int doerrs;
+ {
+- register char *string, *optstr;
++ char *string, *optstr;
+ DISTOPTINFO *distopt;
+ int negate;
+
+@@ -93,7 +93,7 @@
+ * and the option starts with "no", strip "no"
+ * from option and retry lookup.
+ */
+- if (distopt = getdistopt(optstr)) {
++ if ((distopt = getdistopt(optstr))) {
+ FLAG_ON(*optptr, distopt->do_value);
+ continue;
+ }
+@@ -116,7 +116,7 @@
+ */
+ extern char *getdistoptlist()
+ {
+- register int i;
++ int i;
+ static char buf[1024];
+
+ for (i = 0, buf[0] = CNULL; distoptinfo[i].do_name; ++i) {
+@@ -138,7 +138,7 @@
+ extern char *getondistoptlist(opts)
+ opt_t opts;
+ {
+- register int i;
++ int i;
+ static char buf[1024];
+
+ for (i = 0, buf[0] = CNULL; distoptinfo[i].do_name; ++i) {
+--- rdist-6.1.5/src/expand.c.cleanup 1998-11-10 05:09:31.000000000 +0100
++++ rdist-6.1.5/src/expand.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: expand.c,v 6.19 1998/11/10 04:09:31 mcooper Exp $";
+
+@@ -81,9 +81,9 @@
+ sizeof(*sortbase), argcmp), sortbase = &eargv[eargc]
+
+ static void Cat(s1, s2) /* quote in s1 and s2 */
+- register u_char *s1, *s2;
++ u_char *s1, *s2;
+ {
+- register char *cp;
++ char *cp;
+ int len = strlen((char *)s1) + strlen((char *)s2) + 2;
+
+ if ((eargc + 1) >= MAXEARGS) {
+@@ -97,12 +97,12 @@
+ do {
+ if (*s1 == QUOTECHAR)
+ s1++;
+- } while (*cp++ = *s1++);
++ } while ((*cp++ = *s1++));
+ cp--;
+ do {
+ if (*s2 == QUOTECHAR)
+ s2++;
+- } while (*cp++ = *s2++);
++ } while ((*cp++ = *s2++));
+ }
+
+ static void addpath(c)
+@@ -131,8 +131,8 @@
+ struct namelist *list;
+ int wh;
+ {
+- register struct namelist *nl, *prev;
+- register int n;
++ struct namelist *nl, *prev;
++ int n;
+ char pathbuf[BUFSIZ];
+
+ if (debug)
+@@ -182,7 +182,7 @@
+ u_char *str;
+ int ch;
+ {
+- register u_char *cp;
++ u_char *cp;
+
+ for (cp = str; cp && *cp != CNULL; ++cp)
+ if (ch == *cp)
+@@ -194,8 +194,8 @@
+ void expstr(s)
+ u_char *s;
+ {
+- register u_char *cp, *cp1;
+- register struct namelist *tp;
++ u_char *cp, *cp1;
++ struct namelist *tp;
+ u_char *tail;
+ u_char ebuf[BUFSIZ];
+ u_char varbuff[BUFSIZ];
+@@ -302,7 +302,7 @@
+ cp1 = (u_char *)pw->pw_dir;
+ s = cp;
+ }
+- for (cp = (u_char *)path; *cp++ = *cp1++; )
++ for (cp = (u_char *)path; (*cp++ = *cp1++); )
+ ;
+ tpathp = pathp = (char *)cp - 1;
+ } else {
+@@ -326,7 +326,7 @@
+ sort();
+ }
+
+-static
++static int
+ argcmp(a1, a2)
+ char **a1, **a2;
+ {
+@@ -341,8 +341,8 @@
+ void expsh(s) /* quote in s */
+ u_char *s;
+ {
+- register u_char *cp, *oldcp;
+- register char *spathp;
++ u_char *cp, *oldcp;
++ char *spathp;
+ struct stat stb;
+
+ spathp = pathp;
+@@ -380,7 +380,7 @@
+ char *pattern;
+ {
+ struct stat stb;
+- register DIRENTRY *dp;
++ DIRENTRY *dp;
+ DIR *dirp;
+
+ dirp = opendir(path);
+@@ -417,11 +417,12 @@
+ yyerror(path);
+ }
+
++int
+ execbrc(p, s) /* quote in p */
+ u_char *p, *s;
+ {
+ u_char restbuf[BUFSIZ + 2];
+- register u_char *pe, *pm, *pl;
++ u_char *pe, *pm, *pl;
+ int brclev = 0;
+ u_char *lm, savec;
+ char *spathp;
+@@ -507,11 +508,12 @@
+ return (0);
+ }
+
++int
+ match(s, p) /* quote in p */
+ char *s, *p;
+ {
+- register int c;
+- register char *sentp;
++ int c;
++ char *sentp;
+ char sexpany = expany;
+
+ if (*s == '.' && *p != '.')
+@@ -524,11 +526,12 @@
+ return (c);
+ }
+
++int
+ amatch(s, p) /* quote in p */
+- register char *s;
+- register u_char *p;
++ char *s;
++ u_char *p;
+ {
+- register int scc;
++ int scc;
+ int ok, lc;
+ char *spathp;
+ struct stat stb;
+@@ -545,7 +548,7 @@
+ case '[':
+ ok = 0;
+ lc = 077777;
+- while (cc = *p++) {
++ while ((cc = *p++)) {
+ if (cc == ']') {
+ if (ok)
+ break;
+@@ -599,7 +602,7 @@
+ while (*s)
+ addpath(*s++);
+ addpath('/');
+- if (stat(path, &stb) == 0 && S_ISDIR(stb.st_mode))
++ if (stat(path, &stb) == 0 && S_ISDIR(stb.st_mode)) {
+ if (*p == CNULL) {
+ if (which & E_TILDE)
+ Cat((u_char *)path,
+@@ -609,6 +612,7 @@
+ (u_char *)tpathp);
+ } else
+ expsh(p);
++ }
+ pathp = spathp;
+ *pathp = CNULL;
+ return (0);
+--- rdist-6.1.5/src/lookup.c.cleanup 1998-11-10 05:12:56.000000000 +0100
++++ rdist-6.1.5/src/lookup.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: lookup.c,v 6.9 1998/11/10 04:12:56 mcooper Exp $";
+
+@@ -68,11 +68,12 @@
+ /*
+ * Define a variable from a command line argument.
+ */
++void
+ define(name)
+ char *name;
+ {
+- register char *cp, *s;
+- register struct namelist *nl;
++ char *cp, *s;
++ struct namelist *nl;
+ struct namelist *value;
+
+ debugmsg(DM_CALL, "define(%s)", name);
+@@ -137,9 +138,9 @@
+ int action;
+ struct namelist *value;
+ {
+- register unsigned n;
+- register char *cp;
+- register struct syment *s;
++ unsigned n;
++ char *cp;
++ struct syment *s;
+ char ebuf[BUFSIZ];
+
+ debugmsg(DM_CALL, "lookup(%s, %d, %x)", name, action, value);
+--- rdist-6.1.5/src/isexec.c.cleanup 1998-11-10 05:11:42.000000000 +0100
++++ rdist-6.1.5/src/isexec.c 2003-12-17 11:38:16.000000000 +0100
+@@ -37,7 +37,7 @@
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: isexec.c,v 6.22 1998/11/10 04:11:42 mcooper Exp $";
+
+--- rdist-6.1.5/src/signal.c.cleanup 1998-11-10 05:16:13.000000000 +0100
++++ rdist-6.1.5/src/signal.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: signal.c,v 6.2 1998/11/10 04:16:13 mcooper Exp $";
+
+--- rdist-6.1.5/src/rshrcmd.c.cleanup 1998-11-10 05:15:07.000000000 +0100
++++ rdist-6.1.5/src/rshrcmd.c 2003-12-17 11:38:16.000000000 +0100
+@@ -10,7 +10,7 @@
+ * Chris Siebenmann <cks@utcc.utoronto.ca>.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: rshrcmd.c,v 1.9 1998/11/10 04:15:07 mcooper Exp $";
+
+@@ -34,6 +34,7 @@
+ * program in place of a direct rcmd() function call so as to
+ * avoid having to be root.
+ */
++int
+ rshrcmd(ahost, port, luser, ruser, cmd, fd2p)
+ char **ahost;
+ u_short port;
+@@ -108,6 +109,7 @@
+ (void) wait(0);
+ return sp[0];
+ }
++ return -1;
+ /*NOTREACHED*/
+ }
+
+--- rdist-6.1.5/src/common.c.cleanup 1998-11-10 05:09:01.000000000 +0100
++++ rdist-6.1.5/src/common.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: common.c,v 6.84 1998/11/10 04:09:01 mcooper Exp $";
+
+@@ -87,14 +87,14 @@
+ /*
+ * Front end to write() that handles partial write() requests.
+ */
+-extern WRITE_RETURN_T xwrite(fd, buf, len)
++WRITE_RETURN_T xwrite(fd, buf, len)
+ int fd;
+ void *buf;
+ WRITE_AMT_T len;
+ {
+ WRITE_AMT_T nleft = len;
+ WRITE_RETURN_T nwritten;
+- register char *ptr = buf;
++ char *ptr = buf;
+
+ while (nleft > 0) {
+ if ((nwritten = write(fd, ptr, nleft)) <= 0) {
+@@ -110,14 +110,14 @@
+ /*
+ * Set program name
+ */
+-extern void setprogname(argv)
++void setprogname(argv)
+ char **argv;
+ {
+- register char *cp;
++ char *cp;
+
+ if (!progname) {
+ progname = strdup(argv[0]);
+- if (cp = strrchr(progname, '/'))
++ if ((cp = strrchr(progname, '/')))
+ progname = cp + 1;
+ }
+ }
+@@ -125,14 +125,14 @@
+ /*
+ * Do run-time initialization
+ */
+-extern int init(argc, argv, envp)
++int init(argc, argv, envp)
+ /*ARGSUSED*/
+ int argc;
+ char **argv;
+ char **envp;
+ {
+- register int i;
+- register char *cp;
++ int i;
++ char *cp;
+
+ if (!isserver)
+ (void) signal(SIGSEGV, sighandler);
+@@ -182,7 +182,7 @@
+ /*
+ * Finish things up before ending.
+ */
+-extern void finish()
++void finish()
+ {
+ extern jmp_buf finish_jmpbuf;
+
+@@ -216,7 +216,7 @@
+ /*
+ * Handle lost connections
+ */
+-extern void lostconn()
++void lostconn()
+ {
+ /* Prevent looping */
+ (void) signal(SIGPIPE, SIG_IGN);
+@@ -232,7 +232,7 @@
+ /*
+ * Do a core dump
+ */
+-extern void coredump()
++void coredump()
+ {
+ error("Segmentation violation - dumping core [PID = %d, %s]",
+ getpid(),
+@@ -245,7 +245,7 @@
+ /*
+ * General signal handler
+ */
+-extern void sighandler(sig)
++void sighandler(sig)
+ int sig;
+ {
+ debugmsg(DM_CALL, "sighandler() received signal %d\n", sig);
+@@ -325,7 +325,7 @@
+ /*
+ * Stdarg frontend to sendcmdmsg()
+ */
+-extern int sendcmd(char cmd, char *fmt, ...)
++int sendcmd(char cmd, char *fmt, ...)
+ {
+ static char buf[BUFSIZ];
+ va_list args;
+@@ -345,7 +345,7 @@
+ /*
+ * Varargs frontend to sendcmdmsg()
+ */
+-extern int sendcmd(va_alist)
++int sendcmd(va_alist)
+ va_dcl
+ {
+ static char buf[BUFSIZ];
+@@ -372,7 +372,7 @@
+ * Stupid frontend to sendcmdmsg()
+ */
+ /*VARARGS2*/
+-extern int sendcmd(cmd, fmt, a1, a2, a3, a4, a5, a6, a7, a8)
++int sendcmd(cmd, fmt, a1, a2, a3, a4, a5, a6, a7, a8)
+ char cmd;
+ char *fmt;
+ {
+@@ -433,13 +433,13 @@
+ * errors, call cleanup() or lostconn(). In other words, unless
+ * the third argument is nonzero, this routine never returns failure.
+ */
+-extern int remline(buffer, space, doclean)
+- register u_char *buffer;
++int remline(buffer, space, doclean)
++ u_char *buffer;
+ int space;
+ int doclean;
+ {
+- register int c, left = space;
+- register u_char *p = buffer;
++ int c, left = space;
++ u_char *p = buffer;
+
+ if (rem_r < 0) {
+ error("Cannot read remote input: Remote descriptor not open.");
+@@ -494,9 +494,9 @@
+ /*
+ * Non-line-oriented remote read.
+ */
+-readrem(p, space)
++int readrem(p, space)
+ char *p;
+- register int space;
++ int space;
+ {
+ if (remleft <= 0) {
+ /*
+@@ -527,7 +527,7 @@
+ /*
+ * Get the user name for the uid.
+ */
+-extern char *getusername(uid, file, opts)
++char *getusername(uid, file, opts)
+ UID_T uid;
+ char *file;
+ opt_t opts;
+@@ -566,7 +566,7 @@
+ /*
+ * Get the group name for the gid.
+ */
+-extern char *getgroupname(gid, file, opts)
++char *getgroupname(gid, file, opts)
+ GID_T gid;
+ char *file;
+ opt_t opts;
+@@ -604,7 +604,7 @@
+ /*
+ * Read a response from the remote host.
+ */
+-extern int response()
++int response()
+ {
+ static u_char resp[BUFSIZ];
+ u_char *s;
+@@ -646,6 +646,7 @@
+ message(MT_FERROR, "%s", s);
+ finish();
+ }
++ return -1;
+ /*NOTREACHED*/
+ }
+
+@@ -657,11 +658,11 @@
+ * user's home directory path name. Return a pointer in buf to the
+ * part corresponding to `file'.
+ */
+-extern char *exptilde(ebuf, file)
++char *exptilde(ebuf, file)
+ char *ebuf;
+- register char *file;
++ char *file;
+ {
+- register char *s1, *s2, *s3;
++ char *s1, *s2, *s3;
+ extern char *homedir;
+
+ if (*file != '~') {
+@@ -694,12 +695,12 @@
+ *s3 = '/';
+ s2 = pw->pw_dir;
+ }
+- for (s1 = ebuf; *s1++ = *s2++; )
++ for (s1 = ebuf; (*s1++ = *s2++); )
+ ;
+ s2 = --s1;
+ if (s3 != NULL) {
+ s2++;
+- while (*s1++ = *s3++)
++ while ((*s1++ = *s3++))
+ ;
+ }
+ return(s2);
+@@ -710,7 +711,7 @@
+ * Set our effective user id to the user running us.
+ * This should be the uid we do most of our work as.
+ */
+-extern int becomeuser()
++int becomeuser()
+ {
+ int r = 0;
+
+@@ -732,7 +733,7 @@
+ /*
+ * Set our effective user id to "root" (uid = 0)
+ */
+-extern int becomeroot()
++int becomeroot()
+ {
+ int r = 0;
+
+@@ -753,7 +754,7 @@
+ /*
+ * Set access and modify times of a given file
+ */
+-extern int setfiletime(file, atime, mtime)
++int setfiletime(file, atime, mtime)
+ char *file;
+ time_t atime;
+ time_t mtime;
+@@ -790,7 +791,7 @@
+ /*
+ * Get version info
+ */
+-extern char *getversion()
++char *getversion()
+ {
+ static char buff[BUFSIZ];
+
+@@ -811,7 +812,7 @@
+ {
+ int fd[2], pid, i;
+ int status;
+- register char *cp, *s;
++ char *cp, *s;
+ char sbuf[BUFSIZ], buf[BUFSIZ];
+
+ if (pipe(fd) < 0) {
+@@ -933,12 +934,12 @@
+ /*
+ * Private version of basename()
+ */
+-extern char *xbasename(path)
++char *xbasename(path)
+ char *path;
+ {
+- register char *cp;
++ char *cp;
+
+- if (cp = strrchr(path, '/'))
++ if ((cp = strrchr(path, '/')))
+ return(cp+1);
+ else
+ return(path);
+@@ -949,11 +950,11 @@
+ * search until a component of that path is found and
+ * return the found file name.
+ */
+-extern char *searchpath(path)
++char *searchpath(path)
+ char *path;
+ {
+- register char *cp;
+- register char *file;
++ char *cp;
++ char *file;
+ struct stat statbuf;
+
+ for (; ;) {
+@@ -977,8 +978,7 @@
+ /*
+ * Set line buffering.
+ */
+-extern void
+-mysetlinebuf(fp)
++void mysetlinebuf(fp)
+ FILE *fp;
+ {
+ #if SETBUF_TYPE == SETBUF_SETLINEBUF
+@@ -995,8 +995,7 @@
+ /*
+ * Our interface to system call to get a socket pair.
+ */
+-int
+-getsocketpair(domain, type, protocol, sv)
++int getsocketpair(domain, type, protocol, sv)
+ int domain;
+ int type;
+ int protocol;
+--- rdist-6.1.5/src/message.c.cleanup 1998-11-10 05:13:30.000000000 +0100
++++ rdist-6.1.5/src/message.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: message.c,v 6.25 1998/11/10 04:13:30 mcooper Exp $";
+
+@@ -97,7 +97,7 @@
+ */
+ extern void msgprusage()
+ {
+- register int i, x;
++ int i, x;
+
+ (void) fprintf(stderr, "\nWhere <msgopt> is of form\n");
+ (void) fprintf(stderr,
+@@ -120,7 +120,7 @@
+ */
+ extern void msgprconfig()
+ {
+- register int i, x;
++ int i, x;
+ static char buf[MSGBUFSIZ];
+
+ debugmsg(DM_MISC, "Current message logging config:");
+@@ -145,7 +145,7 @@
+ static MSGFACILITY *getmsgfac(name)
+ char *name;
+ {
+- register int i;
++ int i;
+
+ for (i = 0; msgfacility[i].mf_name; ++i)
+ if (strcasecmp(name, msgfacility[i].mf_name) == 0)
+@@ -160,7 +160,7 @@
+ static MSGTYPE *getmsgtype(name)
+ char *name;
+ {
+- register int i;
++ int i;
+
+ for (i = 0; msgtypes[i].mt_name; ++i)
+ if (strcasecmp(name, msgtypes[i].mt_name) == 0)
+@@ -178,9 +178,9 @@
+ char *str;
+ {
+ static char ebuf[BUFSIZ];
+- register char *cp;
+- register char *strptr, *word;
+- register MSGTYPE *mtp;
++ char *cp;
++ char *strptr, *word;
++ MSGTYPE *mtp;
+
+ /*
+ * MF_SYSLOG is the only supported message facility for the server
+@@ -240,11 +240,11 @@
+ msgfac->mf_msgtypes = 0; /* Start from scratch */
+ while (strptr) {
+ word = strptr;
+- if (cp = strchr(strptr, ','))
++ if ((cp = strchr(strptr, ',')))
+ *cp++ = CNULL;
+ strptr = cp;
+
+- if (mtp = getmsgtype(word)) {
++ if ((mtp = getmsgtype(word))) {
+ msgfac->mf_msgtypes |= mtp->mt_type;
+ /*
+ * XXX This is really a kludge until we add real
+@@ -272,8 +272,8 @@
+ int doset;
+ {
+ static char ebuf[BUFSIZ], msgbuf[MSGBUFSIZ];
+- register char *cp, *optstr;
+- register char *word;
++ char *cp, *optstr;
++ char *word;
+ MSGFACILITY *msgfac;
+
+ if (msgstr == NULL)
+@@ -308,7 +308,7 @@
+ if (doset) {
+ char *mcp;
+
+- if (mcp = setmsgtypes(msgfac, cp))
++ if ((mcp = setmsgtypes(msgfac, cp)))
+ return(mcp);
+ }
+ }
+@@ -462,8 +462,9 @@
+ return;
+
+ if (!msgfac->mf_fptr) {
+- register char *cp;
++ char *cp;
+ char *getenv();
++ int fd;
+
+ /*
+ * Create and open a new temporary file
+@@ -475,7 +476,10 @@
+ (void) sprintf(tempfile, "%s/%s", cp, _RDIST_TMP);
+
+ msgfac->mf_filename = tempfile;
+- (void) mktemp(msgfac->mf_filename);
++ fd = mkstemp(msgfac->mf_filename);
++ if (fd < 0)
++ fatalerr("Cannot open notify file for writing: %s: %s.", msgfac->mf_filename, SYSERR);
++ close(fd);
+ if ((msgfac->mf_fptr = fopen(msgfac->mf_filename, "w"))==NULL)
+ fatalerr("Cannot open notify file for writing: %s: %s.",
+ msgfac->mf_filename, SYSERR);
+@@ -515,15 +519,15 @@
+ int flags;
+ char *msgbuf;
+ {
+- register int i, x;
+- register char *cp;
++ int i, x;
++ char *cp;
+ static char mbuf[2048];
+
+ if (msgbuf && *msgbuf) {
+ /*
+ * Ensure no stray newlines are present
+ */
+- if (cp = strchr(msgbuf, '\n'))
++ if ((cp = strchr(msgbuf, '\n')))
+ *cp = CNULL;
+
+ checkhostname();
+@@ -863,7 +867,7 @@
+ */
+ extern char *getnotifyfile()
+ {
+- register int i;
++ int i;
+
+ for (i = 0; msgfacility[i].mf_name; i++)
+ if (msgfacility[i].mf_msgfac == MF_NOTIFY &&
+--- rdist-6.1.5/src/setargs.c.cleanup 2003-12-17 11:38:16.000000000 +0100
++++ rdist-6.1.5/src/setargs.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: setargs.c,v 6.5 1998/11/10 04:15:56 mcooper Exp $";
+
+@@ -66,12 +66,12 @@
+ /*
+ * Settup things for using setproctitle()
+ */
+-setargs_settup(argc, argv, envp)
++void setargs_settup(argc, argv, envp)
+ int argc;
+ char **argv;
+ char **envp;
+ {
+- register int i;
++ int i;
+ extern char **environ;
+
+ /* Remember the User Environment */
+@@ -92,10 +92,10 @@
+ /*
+ * Set process title
+ */
+-extern void _setproctitle(msg)
++void _setproctitle(msg)
+ char *msg;
+ {
+- register int i;
++ int i;
+ char *p;
+
+ p = Argv[0];
+@@ -119,7 +119,7 @@
+ /*
+ * Varargs front-end to _setproctitle()
+ */
+-extern void setproctitle(va_alist)
++void setproctitle(va_alist)
+ va_dcl
+ {
+ static char buf[BUFSIZ];
+@@ -138,7 +138,7 @@
+ /*
+ * Stdarg front-end to _setproctitle()
+ */
+-extern void setproctitle(char *fmt, ...)
++void setproctitle(char *fmt, ...)
+ {
+ static char buf[BUFSIZ];
+ va_list args;
+@@ -155,7 +155,7 @@
+ * Non-Varargs front-end to _setproctitle()
+ */
+ /*VARARGS1*/
+-extern void setproctitle(fmt, a1, a2, a3, a4, a5, a6)
++void setproctitle(fmt, a1, a2, a3, a4, a5, a6)
+ char *fmt;
+ {
+ static char buf[BUFSIZ];
+--- rdist-6.1.5/src/rdistd.c.cleanup 1998-11-10 05:14:06.000000000 +0100
++++ rdist-6.1.5/src/rdistd.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: rdistd.c,v 6.23 1998/11/10 04:14:06 mcooper Exp $";
+
+@@ -53,21 +53,12 @@
+
+ #include "defs.h"
+
+-/*
+- * Print usage message
+- */
+-static void usage()
+-{
+- fprintf(stderr, "usage: %s -S [ -DV ]\n", progname);
+- exit(1);
+-}
+-
+ char localmsglist[] = "syslog=ferror";
+
+ /*
+ * The Beginning
+ */
+-main(argc, argv, envp)
++int main(argc, argv, envp)
+ int argc;
+ char **argv;
+ char **envp;
+@@ -95,7 +86,8 @@
+ case '?':
+ default:
+ error("Bad command line option.");
+- usage();
++ fprintf(stderr, "usage: %s -S [ -DV ]\n", progname);
++ exit(1);
+ }
+
+ if (!isserver) {
+@@ -108,7 +100,7 @@
+ rem_w = fileno(stdout);
+
+ /* Set logging */
+- if (cp = msgparseopts(localmsglist, TRUE))
++ if ((cp = msgparseopts(localmsglist, TRUE)))
+ fatalerr("Bad message logging option (%s): %s",
+ localmsglist, cp);
+
+--- rdist-6.1.5/src/server.c.cleanup 2003-12-17 11:38:16.000000000 +0100
++++ rdist-6.1.5/src/server.c 2003-12-17 11:38:16.000000000 +0100
+@@ -37,7 +37,7 @@
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: server.c,v 6.86 1998/11/10 04:15:31 mcooper Exp $";
+
+@@ -197,7 +197,7 @@
+ static UID_T last_uid = (UID_T)-2;
+ static GID_T last_primegid;
+ extern char *locuser;
+- register int i;
++ int i;
+ UID_T uid;
+ GID_T gid;
+ GID_T primegid = (GID_T)-2;
+@@ -252,7 +252,7 @@
+ /*
+ * Invalid cached values so we need to do a new lookup.
+ */
+- if (gr = mygetgroup(group)) {
++ if ((gr = mygetgroup(group))) {
+ last_gid = gid = gr->gr_gid;
+ strcpy(last_group, gr->gr_name);
+ } else {
+@@ -325,7 +325,7 @@
+ {
+ DIR *d;
+ static DIRENTRY *dp;
+- register char *cp;
++ char *cp;
+ struct stat stb;
+ char *optarget;
+ int len, failures = 0;
+@@ -362,7 +362,7 @@
+
+ optarget = ptarget;
+ len = ptarget - target;
+- while (dp = readdir(d)) {
++ while ((dp = readdir(d))) {
+ if ((D_NAMLEN(dp) == 1 && dp->d_name[0] == '.') ||
+ (D_NAMLEN(dp) == 2 && dp->d_name[0] == '.' &&
+ dp->d_name[1] == '.'))
+@@ -376,7 +376,7 @@
+ ptarget = optarget;
+ *ptarget++ = '/';
+ cp = dp->d_name;;
+- while (*ptarget++ = *cp++)
++ while ((*ptarget++ = *cp++))
+ ;
+ ptarget--;
+ if (lstat(target, &stb) < 0) {
+@@ -414,10 +414,10 @@
+ * for extraneous files and remove them.
+ */
+ static void doclean(cp)
+- register char *cp;
++ char *cp;
+ {
+ DIR *d;
+- register DIRENTRY *dp;
++ DIRENTRY *dp;
+ struct stat stb;
+ char *optarget, *ep;
+ int len;
+@@ -436,7 +436,7 @@
+
+ optarget = ptarget;
+ len = ptarget - target;
+- while (dp = readdir(d)) {
++ while ((dp = readdir(d))) {
+ if ((D_NAMLEN(dp) == 1 && dp->d_name[0] == '.') ||
+ (D_NAMLEN(dp) == 2 && dp->d_name[0] == '.' &&
+ dp->d_name[1] == '.'))
+@@ -450,7 +450,7 @@
+ ptarget = optarget;
+ *ptarget++ = '/';
+ cp = dp->d_name;;
+- while (*ptarget++ = *cp++)
++ while ((*ptarget++ = *cp++))
+ ;
+ ptarget--;
+ if (lstat(target, &stb) < 0) {
+@@ -481,7 +481,7 @@
+ * Frontend to doclean().
+ */
+ static void clean(cp)
+- register char *cp;
++ char *cp;
+ {
+ doclean(cp);
+ (void) sendcmd(CC_END, NULL);
+@@ -509,7 +509,7 @@
+ */
+ static void docmdspecial()
+ {
+- register char *cp;
++ char *cp;
+ char *cmd, *env = NULL;
+ int n;
+ int len;
+@@ -667,7 +667,7 @@
+ char *name;
+ opt_t opts;
+ {
+- register char *cp;
++ char *cp;
+ struct stat stb;
+ int r = -1;
+
+@@ -760,7 +760,7 @@
+ {
+ int f, wrerr, olderrno, lastwashole = 0, wassparse = 0;
+ off_t i;
+- register char *cp;
++ char *cp;
+ char *savefile = NULL;
+ static struct stat statbuff;
+
+@@ -987,7 +987,7 @@
+ char *owner, *group;
+ {
+ static char lowner[100], lgroup[100];
+- register char *cp;
++ char *cp;
+ struct stat stb;
+ int s;
+
+@@ -1044,7 +1044,7 @@
+
+ o = (owner[0] == ':') ? opts & DO_NUMCHKOWNER :
+ opts;
+- if (cp = getusername(stb.st_uid, target, o))
++ if ((cp = getusername(stb.st_uid, target, o)))
+ if (strcmp(owner, cp))
+ (void) strcpy(lowner, cp);
+ }
+@@ -1053,7 +1053,7 @@
+
+ o = (group[0] == ':') ? opts & DO_NUMCHKGROUP :
+ opts;
+- if (cp = getgroupname(stb.st_gid, target, o))
++ if ((cp = getgroupname(stb.st_gid, target, o)))
+ if (strcmp(group, cp))
+ (void) strcpy(lgroup, cp);
+ }
+@@ -1107,8 +1107,8 @@
+ if (s < 0) {
+ if (errno == ENOENT) {
+ if (mkdir(target, mode) == 0 ||
+- chkparent(target, opts) == 0 &&
+- mkdir(target, mode) == 0) {
++ (chkparent(target, opts) == 0 &&
++ mkdir(target, mode) == 0)) {
+ message(MT_NOTICE, "%s: mkdir", target);
+ (void) fchog(-1, target, owner, group, mode);
+ ack();
+@@ -1304,7 +1304,7 @@
+ static void setconfig(cmd)
+ char *cmd;
+ {
+- register char *cp = cmd;
++ char *cp = cmd;
+ char *estr;
+
+ switch (*cp++) {
+@@ -1338,7 +1338,7 @@
+ break;
+
+ case SC_LOGGING: /* Logging options */
+- if (estr = msgparseopts(cp, TRUE)) {
++ if ((estr = msgparseopts(cp, TRUE))) {
+ fatalerr("Bad message option string (%s): %s",
+ cp, estr);
+ return;
+@@ -1455,7 +1455,7 @@
+ sptarget[catname] = ptarget;
+ if (catname++) {
+ *ptarget++ = '/';
+- while (*ptarget++ = *file++)
++ while ((*ptarget++ = *file++))
+ ;
+ ptarget--;
+ }
+@@ -1463,6 +1463,7 @@
+ /*
+ * Create name of temporary file
+ */
++ int fd;
+ if (catname && cattarget(file) < 0) {
+ error("Cannot set file name.");
+ return;
+@@ -1477,7 +1478,12 @@
+ (void) sprintf(new, "%s/%s", target, tempname);
+ *file = '/';
+ }
+- (void) mktemp(new);
++ fd = mkstemp(new);
++ if (fd < 0) {
++ error("Cannot set file name.");
++ return;
++ }
++ close(fd);
+ }
+
+ /*
+@@ -1581,8 +1587,8 @@
+ extern void server()
+ {
+ static char cmdbuf[BUFSIZ];
+- register char *cp;
+- register int n;
++ char *cp;
++ int n;
+ extern jmp_buf finish_jmpbuf;
+
+ if (setjmp(finish_jmpbuf)) {
+--- rdist-6.1.5/src/filesys.c.cleanup 1998-11-10 05:10:18.000000000 +0100
++++ rdist-6.1.5/src/filesys.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: filesys.c,v 6.25 1998/11/10 04:10:17 mcooper Exp $";
+
+@@ -72,7 +72,7 @@
+ static char last_pathname[MAXPATHLEN];
+ static char file[MAXPATHLEN + 3];
+ static struct stat filestat;
+- register char *p;
++ char *p;
+
+ /*
+ * Mark the statbuf as invalid to start with.
+@@ -125,7 +125,7 @@
+ * Normally we want to change /dir1/dir2/file
+ * into "/dir1/dir2/."
+ */
+- if (p = (char *) strrchr(file, '/')) {
++ if ((p = (char *) strrchr(file, '/'))) {
+ *++p = '.';
+ *++p = CNULL;
+ } else {
+@@ -183,7 +183,7 @@
+ struct stat *filest;
+ struct mntinfo *mntinfo;
+ {
+- register struct mntinfo *mi;
++ struct mntinfo *mi;
+
+ for (mi = mntinfo; mi; mi = mi->mi_nxt) {
+ if (mi->mi_mnt->me_flags & MEFLAG_IGNORE)
+@@ -202,7 +202,7 @@
+ mntent_t *mnt;
+ struct mntinfo *mntinfo;
+ {
+- register struct mntinfo *m;
++ struct mntinfo *m;
+
+ for (m = mntinfo; m; m = m->mi_nxt)
+ if (strcmp(m->mi_mnt->me_path, mnt->me_path) == 0)
+@@ -247,7 +247,7 @@
+ }
+
+ mntinfo = mi;
+- while (mnt = getmountent(mfp)) {
++ while ((mnt = getmountent(mfp))) {
+ debugmsg(DM_MISC, "mountent = '%s' (%s)",
+ mnt->me_path, mnt->me_type);
+
+@@ -308,7 +308,7 @@
+ static struct stat filestat;
+ struct stat *pstat;
+ struct mntinfo *tmpmi;
+- register mntent_t *mnt;
++ mntent_t *mnt;
+
+ /*
+ * Use the supplied stat buffer if not NULL or our own.
+@@ -330,16 +330,16 @@
+ /*
+ * Find the mnt that pathname is on.
+ */
+- if (mnt = findmnt(pstat, mntinfo))
++ if ((mnt = findmnt(pstat, mntinfo)))
+ return(mnt);
+
+ /*
+ * We failed to find correct mnt, so maybe it's a newly
+ * mounted filesystem. We rebuild mntinfo and try again.
+ */
+- if (tmpmi = makemntinfo(mntinfo)) {
++ if ((tmpmi = makemntinfo(mntinfo))) {
+ mntinfo = tmpmi;
+- if (mnt = findmnt(pstat, mntinfo))
++ if ((mnt = findmnt(pstat, mntinfo)))
+ return(mnt);
+ }
+
+--- rdist-6.1.5/src/filesys-os.c.cleanup 1998-11-10 05:09:59.000000000 +0100
++++ rdist-6.1.5/src/filesys-os.c 2003-12-17 11:38:16.000000000 +0100
+@@ -38,7 +38,7 @@
+ * SUCH DAMAGE.
+ */
+
+-#ifndef lint
++#if 0
+ static char RCSid[] =
+ "$Id: filesys-os.c,v 6.18 1998/11/10 04:09:58 mcooper Exp $";
+
+@@ -314,7 +314,7 @@
+
+ bzero((char *)&me, sizeof(mntent_t));
+
+- if (mntent = getmntent(fptr)) {
++ if ((mntent = getmntent(fptr))) {
+ me.me_path = mntent->mnt_dir;
+ me.me_type = mntent->mnt_type;
+ if (mntent->mnt_opts && hasmntopt(mntent, MNTOPT_RO))
+--- rdist-6.1.5/src/strcasecmp.c.cleanup 1998-11-10 05:16:52.000000000 +0100
++++ rdist-6.1.5/src/strcasecmp.c 2003-12-17 11:38:16.000000000 +0100
+@@ -51,9 +51,9 @@
+ };
+
+ strcasecmp(s1, s2)
+- register char *s1, *s2;
++ char *s1, *s2;
+ {
+- register char *cm = charmap;
++ char *cm = charmap;
+
+ while (cm[*s1] == cm[*s2++])
+ if (*s1++ == '\0')
+@@ -62,10 +62,10 @@
+ }
+
+ strncasecmp(s1, s2, n)
+- register char *s1, *s2;
+- register int n;
++ char *s1, *s2;
++ int n;
+ {
+- register char *cm = charmap;
++ char *cm = charmap;
+
+ while (--n >= 0 && cm[*s1] == cm[*s2++])
+ if (*s1++ == '\0')
+--- rdist-6.1.5/src/strtol.c.cleanup 1994-03-17 00:25:50.000000000 +0100
++++ rdist-6.1.5/src/strtol.c 2003-12-17 11:38:16.000000000 +0100
+@@ -54,13 +54,13 @@
+ strtol(nptr, endptr, base)
+ char *nptr;
+ char **endptr;
+- register int base;
++ int base;
+ {
+- register char *s = nptr;
+- register unsigned long acc;
+- register int c;
+- register unsigned long cutoff;
+- register int neg = 0, any, cutlim;
++ char *s = nptr;
++ unsigned long acc;
++ int c;
++ unsigned long cutoff;
++ int neg = 0, any, cutlim;
+
+ /*
+ * Skip white space and pick up leading +/- sign if any.
+--- rdist-6.1.5/src/regex.c.cleanup 1998-11-10 05:14:28.000000000 +0100
++++ rdist-6.1.5/src/regex.c 2003-12-17 11:39:14.000000000 +0100
+@@ -142,10 +142,8 @@
+ */
+ char *
+ re_comp(sp)
+- register char *sp;
+ {
+- register int c;
+- register char *ep = expbuf;
++ char *ep = expbuf;
+ int cclcnt, numbra = 0;
+ char *lastep = 0;
+ char bracket[NBRA];
+@@ -266,10 +264,10 @@
+ */
+ int
+ re_exec(p1)
+- register char *p1;
++ char *p1;
+ {
+- register char *p2 = expbuf;
+- register int c;
++ char *p2 = expbuf;
++ int c;
+ int rv;
+
+ for (c = 0; c < NBRA; c++) {
+@@ -306,9 +304,9 @@
+ */
+ static int
+ advance(lp, ep)
+- register char *lp, *ep;
++ char *lp, *ep;
+ {
+- register char *curlp;
++ char *curlp;
+ int ct, i;
+ int rv;
+
+@@ -413,10 +411,10 @@
+ }
+
+ backref(i, lp)
+- register int i;
+- register char *lp;
++ int i;
++ char *lp;
+ {
+- register char *bp;
++ char *bp;
+
+ bp = braslist[i];
+ while (*bp++ == *lp++)
+@@ -427,10 +425,10 @@
+
+ int
+ cclass(set, c, af)
+- register char *set, c;
++ char *set, c;
+ int af;
+ {
+- register int n;
++ int n;
+
+ if (c == 0)
+ return(0);
+--- rdist-6.1.5/include/defs.h.cleanup 2003-12-17 11:38:16.000000000 +0100
++++ rdist-6.1.5/include/defs.h 2003-12-17 11:38:16.000000000 +0100
+@@ -30,11 +30,13 @@
+ #include <grp.h>
+ #include <syslog.h>
+ #include <setjmp.h>
++#include <time.h>
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <sys/file.h>
+-#include <sys/time.h>
+ #include <sys/stat.h>
++#include <sys/wait.h>
++#include <sys/socket.h>
+
+ #include "version.h"
+ #include "config-def.h"
+@@ -48,6 +50,9 @@
+ #endif /* yacc */
+
+ #include <signal.h>
++#define _REGEX_RE_COMP
++#include <regex.h>
++
+
+ /*
+ * This belongs in os-svr4.h but many SVR4 OS's
+@@ -321,12 +326,11 @@
+ /*
+ * Our own declarations.
+ */
+-char *exptilde();
+ char *makestr();
+ char *xcalloc();
+ char *xmalloc();
+ char *xrealloc();
+-extern char *xbasename();
++extern char *exptilde();
+ extern char *getdistoptlist();
+ extern char *getgroupname();
+ extern char *getnlstr();
+@@ -336,44 +340,75 @@
+ extern char *getversion();
+ extern char *msgparseopts();
+ extern char *searchpath();
++extern char *xbasename();
++extern int amatch();
+ extern int any();
++extern int becomeroot();
++extern int becomeuser();
++extern int except();
++extern int execbrc();
++extern int getfilesysinfo();
++extern int getsocketpair();
+ extern int init();
+ extern int install();
+ extern int isexec();
++extern int is_nfs_mounted();
++extern int is_ro_mounted();
++extern int is_symlinked();
++extern int match();
++extern int okname();
+ extern int parsedistopts();
++extern int readrem();
+ extern int remline();
++extern int response();
++extern int rshrcmd();
+ extern int setfiletime();
++extern int setnonblocking();
+ extern int spawn();
++extern int yylex();
++extern int yyparse();
+ extern struct subcmd *makesubcmd();
++extern void append();
+ extern void checkhostname();
+ extern void cleanup();
+ extern void complain();
++extern void coredump();
++extern void define();
++extern void docmdargs();
+ extern void docmds();
+ extern void finish();
+-extern void log();
++extern void freelinkinfo();
++extern void insert();
+ extern void logmsg();
+ extern void lostconn();
+ extern void markassigned();
++extern void msgprconfig();
+ extern void msgprusage();
++extern void mysetlinebuf();
+ extern void note();
+ extern void runcmdspecial();
+ extern void runcommand();
+ extern void server();
++extern void setargs_settup();
+ extern void setprogname();
+ extern void sighandler();
++extern void usage();
+ extern void waitup();
++extern void yyerror();
++extern WRITE_RETURN_T xwrite();
+ struct namelist *expand();
+ struct namelist *lookup();
+ struct namelist *makenl();
+-extern WRITE_RETURN_T xwrite();
+
+ #if defined(ARG_TYPE) && ARG_TYPE == ARG_STDARG
++extern int sendcmd(char cmd, char *fmt, ...);
+ extern void debugmsg(int, char *, ...);
+ extern void error(char *, ...);
+ extern void fatalerr(char *, ...);
+ extern void message(int, char *, ...);
+ extern void setproctitle(char *fmt, ...);
+ #else
++extern int sendcmd(va_alist);
+ extern void debugmsg();
+ extern void error();
+ extern void fatalerr();
diff --git a/source/n/rdist/rdist-6.1.5-09.svr4.diff b/source/n/rdist/rdist-6.1.5-09.svr4.diff
new file mode 100644
index 000000000..15fc23fbd
--- /dev/null
+++ b/source/n/rdist/rdist-6.1.5-09.svr4.diff
@@ -0,0 +1,10 @@
+--- rdist-6.1.5/build/os-type.svr4 2003-12-17 12:44:18.000000000 +0100
++++ rdist-6.1.5/build/os-type 2003-12-17 12:44:29.000000000 +0100
+@@ -83,7 +83,6 @@
+ if [ -z "${OS}" -a ! -z "${uname}" ]; then
+ case "`$uname -a | tr '[A-Z]' '[a-z]'`" in
+ osf1*) OS=break;;
+- *"4.0"*) OS=svr4;; # There has to be a better way
+ *" dcosx "*) OS=dcosx;;
+ *"cx/ux"*) OS=cxux;;
+ *"hp-ux"*) # HP-UX 9.x
diff --git a/source/n/rdist/rdist-6.1.5-10.ssh.diff b/source/n/rdist/rdist-6.1.5-10.ssh.diff
new file mode 100644
index 000000000..f70beb9bf
--- /dev/null
+++ b/source/n/rdist/rdist-6.1.5-10.ssh.diff
@@ -0,0 +1,9 @@
+--- rdist-6.1.5/src/rshrcmd.c.dist Tue Dec 12 08:20:56 1995
++++ rdist-6.1.5/src/rshrcmd.c Wed Dec 11 07:14:13 1996
+@@ -64,5 +64,5 @@
+ sp[0]. */
+ (void) close(sp[0]);
+- if (dup2(sp[1], 0) < 0 || dup2(0,1) < 0 || dup2(0, 2) < 0) {
++ if (dup2(sp[1], 0) < 0 || dup2(0,1) < 0) {
+ error("dup2 failed: %s.", SYSERR);
+ _exit(255);
diff --git a/source/n/rdist/rdist-6.1.5-11.mkstemp.diff b/source/n/rdist/rdist-6.1.5-11.mkstemp.diff
new file mode 100644
index 000000000..9d9297a8e
--- /dev/null
+++ b/source/n/rdist/rdist-6.1.5-11.mkstemp.diff
@@ -0,0 +1,23 @@
+--- rdist-6.1.5/src/server.c.mkstemp 2004-05-25 14:29:37.279312752 +0200
++++ rdist-6.1.5/src/server.c 2004-05-25 14:31:27.050744340 +0200
+@@ -1479,11 +1479,18 @@
+ *file = '/';
+ }
+ fd = mkstemp(new);
+- if (fd < 0) {
++ /*
++ * Don't consider it a fatal error if mkstemp() fails
++ * because parent directory didn't exist. (Missing
++ * parents are created later (in recvfile())
++ */
++ if ((fd < 0) && (errno != ENOENT)) {
+ error("Cannot set file name.");
+ return;
++ } else if (fd >= 0) {
++ close(fd);
++ unlink(new); /* Or symlink() will fail */
+ }
+- close(fd);
+ }
+
+ /*
diff --git a/source/n/rdist/rdist-6.1.5-12.stat64.diff b/source/n/rdist/rdist-6.1.5-12.stat64.diff
new file mode 100644
index 000000000..3b02d3e8a
--- /dev/null
+++ b/source/n/rdist/rdist-6.1.5-12.stat64.diff
@@ -0,0 +1,80 @@
+--- rdist-6.1.5/src/filesys.c.stat64 2005-05-04 14:11:03.000000000 +0200
++++ rdist-6.1.5/src/filesys.c 2005-05-04 14:11:10.000000000 +0200
+@@ -430,8 +430,8 @@
+ */
+ int getfilesysinfo(file, freespace, freefiles)
+ char *file;
+- long *freespace;
+- long *freefiles;
++ fsblkcnt_t *freespace;
++ fsfilcnt_t *freefiles;
+ {
+ #if defined(STATFS_TYPE)
+ static statfs_t statfsbuf;
+--- rdist-6.1.5/src/server.c.stat64 2005-05-04 14:11:23.000000000 +0200
++++ rdist-6.1.5/src/server.c 2005-05-04 14:20:34.000000000 +0200
+@@ -62,8 +62,8 @@
+ int catname = 0; /* cat name to target name */
+ char *sptarget[32]; /* stack of saved ptarget's for directories */
+ char *fromhost = NULL; /* Client hostname */
+-static long min_freespace = 0; /* Minimium free space on a filesystem */
+-static long min_freefiles = 0; /* Minimium free # files on a filesystem */
++static fsblkcnt_t min_freespace = 0; /* Minimium free space on a filesystem */
++static fsfilcnt_t min_freefiles = 0; /* Minimium free # files on a filesystem */
+ int oumask; /* Old umask */
+
+ /*
+@@ -1326,7 +1326,7 @@
+ fatalerr("Expected digit, got '%s'.", cp);
+ return;
+ }
+- min_freespace = (unsigned long) atoi(cp);
++ min_freespace = (fsblkcnt_t) atoll(cp);
+ break;
+
+ case SC_FREEFILES: /* Minimium free files */
+@@ -1334,7 +1334,7 @@
+ fatalerr("Expected digit, got '%s'.", cp);
+ return;
+ }
+- min_freefiles = (unsigned long) atoi(cp);
++ min_freefiles = (fsfilcnt_t) atoll(cp);
+ break;
+
+ case SC_LOGGING: /* Logging options */
+@@ -1364,7 +1364,8 @@
+ time_t mtime, atime;
+ char *owner, *group, *file;
+ char new[MAXPATHLEN];
+- long freespace = -1, freefiles = -1;
++ fsfilcnt_t freefiles = -1;
++ fsblkcnt_t freespace = -1;
+ char *cp = cmd;
+
+ /*
+@@ -1499,7 +1500,7 @@
+ */
+ if (min_freespace || min_freefiles) {
+ /* Convert file size to kilobytes */
+- long fsize = (long) (size / 1024);
++ fsblkcnt_t fsize = (fsblkcnt_t) (size / 1024);
+
+ if (getfilesysinfo(target, &freespace, &freefiles) != 0)
+ return;
+@@ -1511,14 +1512,14 @@
+ if (min_freespace && (freespace >= 0) &&
+ (freespace - fsize < min_freespace)) {
+ error(
+- "%s: Not enough free space on filesystem: min %d free %d",
++ "%s: Not enough free space on filesystem: min %lld free %lld",
+ target, min_freespace, freespace);
+ return;
+ }
+ if (min_freefiles && (freefiles >= 0) &&
+ (freefiles - 1 < min_freefiles)) {
+ error(
+- "%s: Not enough free files on filesystem: min %d free %d",
++ "%s: Not enough free files on filesystem: min %lld free %lld",
+ target, min_freefiles, freefiles);
+ return;
+ }
diff --git a/source/n/rdist/rdist-6.1.5-14.fix-msgsndnotify-loop.diff b/source/n/rdist/rdist-6.1.5-14.fix-msgsndnotify-loop.diff
new file mode 100644
index 000000000..d34aa78d8
--- /dev/null
+++ b/source/n/rdist/rdist-6.1.5-14.fix-msgsndnotify-loop.diff
@@ -0,0 +1,32 @@
+--- rdist-6.1.5/src/message.c.thestokes 2006-04-19 17:30:39.000000000 -0400
++++ rdist-6.1.5/src/message.c 2006-04-19 17:36:37.000000000 -0400
+@@ -793,15 +793,20 @@
+ char *msg;
+ {
+ static char buf[MSGBUFSIZ];
+-
+- ++nerrs;
+-
+- if (isserver)
+- (void) sprintf(buf, "REMOTE ERROR: %s", msg);
+- else
+- (void) sprintf(buf, "LOCAL ERROR: %s", msg);
+-
+- _message(MT_FERROR, buf);
++ /* Don't reenter this function. There is a nasty infinite recursion
++ case that pops up when msgsndnotify tries to exit. */
++ static int inside=0;
++
++ if(inside==0){
++ ++nerrs;
++ inside=1;
++
++ if (isserver)
++ (void) sprintf(buf, "REMOTE ERROR: %s", msg);
++ else
++ (void) sprintf(buf, "LOCAL ERROR: %s", msg);
++ _message(MT_FERROR, buf);
++ }
+
+ exit(nerrs);
+ }
diff --git a/source/n/rdist/rdist-6.1.5-cleanup.diff b/source/n/rdist/rdist-6.1.5-cleanup.diff
deleted file mode 100644
index 194291348..000000000
--- a/source/n/rdist/rdist-6.1.5-cleanup.diff
+++ /dev/null
@@ -1,2082 +0,0 @@
---- rdist-6.1.5/src/gram.y.cleanup 2003-12-17 11:38:16.000000000 +0100
-+++ rdist-6.1.5/src/gram.y 2003-12-17 11:38:16.000000000 +0100
-@@ -40,7 +40,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -170,7 +170,7 @@
- ;
-
- cmd: INSTALL options opt_namelist ';' {
-- register struct namelist *nl;
-+ struct namelist *nl;
-
- $1->sc_options = $2 | options;
- if ($3 != NULL) {
-@@ -240,11 +240,11 @@
- int yylineno = 1;
- extern FILE *fin;
-
--yylex()
-+int yylex()
- {
- static char yytext[INMAX];
-- register int c;
-- register char *cp1, *cp2;
-+ int c;
-+ char *cp1, *cp2;
- static char quotechars[] = "[]{}*?$";
-
- again:
-@@ -409,8 +409,8 @@
- * some of the characters we use.
- */
- extern int any(c, str)
-- register int c;
-- register char *str;
-+ int c;
-+ char *str;
- {
- while (*str)
- if (c == *str++)
-@@ -421,13 +421,14 @@
- /*
- * Insert or append ARROW command to list of hosts to be updated.
- */
-+void
- insert(label, files, hosts, subcmds)
- char *label;
- struct namelist *files, *hosts;
- struct subcmd *subcmds;
- {
-- register struct cmd *c, *prev, *nc;
-- register struct namelist *h, *lasth;
-+ struct cmd *c, *prev, *nc;
-+ struct namelist *h, *lasth;
-
- debugmsg(DM_CALL, "insert(%s, %x, %x, %x) start, files = %s",
- label == NULL ? "(null)" : label,
-@@ -475,13 +476,14 @@
- * Append DCOLON command to the end of the command list since these are always
- * executed in the order they appear in the distfile.
- */
-+void
- append(label, files, stamp, subcmds)
- char *label;
- struct namelist *files;
- char *stamp;
- struct subcmd *subcmds;
- {
-- register struct cmd *c;
-+ struct cmd *c;
-
- c = ALLOC(cmd);
- c->c_type = DCOLON;
-@@ -501,6 +503,7 @@
- /*
- * Error printing routine in parser.
- */
-+void
- yyerror(s)
- char *s;
- {
-@@ -530,7 +533,7 @@
- makenl(name)
- char *name;
- {
-- register struct namelist *nl;
-+ struct namelist *nl;
-
- debugmsg(DM_CALL, "makenl(%s)", name == NULL ? "null" : name);
-
-@@ -627,7 +630,7 @@
- makesubcmd(type)
- int type;
- {
-- register struct subcmd *sc;
-+ struct subcmd *sc;
-
- sc = ALLOC(subcmd);
- sc->sc_type = type;
---- rdist-6.1.5/src/rdist.c.cleanup 1998-11-10 05:13:50.000000000 +0100
-+++ rdist-6.1.5/src/rdist.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -80,7 +80,7 @@
- char *name;
- struct namelist **hostlist;
- {
-- register struct namelist *ptr, *new;
-+ struct namelist *ptr, *new;
-
- if (!name || !hostlist)
- return;
-@@ -97,14 +97,15 @@
- *hostlist = new;
- }
-
-+int
- main(argc, argv, envp)
- int argc;
- char *argv[];
- char **envp;
- {
- struct namelist *hostlist = NULL;
-- register int x;
-- register char *cp;
-+ int x;
-+ char *cp;
- int cmdargs = 0;
- int c;
-
-@@ -114,7 +115,7 @@
- */
- setprogname(argv);
-
-- if (cp = msgparseopts(localmsglist, TRUE)) {
-+ if ((cp = msgparseopts(localmsglist, TRUE))) {
- error("Bad builtin log option (%s): %s.",
- localmsglist, cp);
- usage();
-@@ -158,7 +159,7 @@
- while ((c = getopt(argc, argv, optchars)) != -1)
- switch (c) {
- case 'l':
-- if (cp = msgparseopts(optarg, TRUE)) {
-+ if ((cp = msgparseopts(optarg, TRUE))) {
- error("Bad log option \"%s\": %s.", optarg,cp);
- usage();
- }
-@@ -206,7 +207,7 @@
-
- case 'D':
- debug = DM_ALL;
-- if (cp = msgparseopts("stdout=all,debug", TRUE)) {
-+ if ((cp = msgparseopts("stdout=all,debug", TRUE))) {
- error("Enable debug messages failed: %s.", cp);
- usage();
- }
-@@ -245,7 +246,7 @@
- error("No path specified to \"-P\".");
- usage();
- }
-- if (cp = searchpath(optarg))
-+ if ((cp = searchpath(optarg)))
- path_remsh = strdup(cp);
- else {
- error("No component of path \"%s\" exists.",
-@@ -297,7 +298,7 @@
- else {
- if (fin == NULL)
- fin = opendist(distfile);
-- (void) yyparse();
-+ yyparse();
- /*
- * Need to keep stdin open for child processing later
- */
-@@ -348,6 +349,7 @@
- /*
- * Print usage message and exit.
- */
-+void
- usage()
- {
- char *sopts = "cDFnv";
-@@ -379,12 +381,13 @@
- /*
- * rcp like interface for distributing files.
- */
-+void
- docmdargs(nargs, args)
- int nargs;
- char *args[];
- {
-- register struct namelist *nl, *prev;
-- register char *cp;
-+ struct namelist *nl, *prev;
-+ char *cp;
- struct namelist *files, *hosts;
- struct subcmd *cmds;
- char *dest;
-@@ -433,10 +436,10 @@
- * Get a list of NAME blocks (mostly for debugging).
- */
- extern char *getnlstr(nl)
-- register struct namelist *nl;
-+ struct namelist *nl;
- {
- static char buf[16384];
-- register int count = 0, len = 0;
-+ int count = 0, len = 0;
-
- (void) sprintf(buf, "(");
-
---- rdist-6.1.5/src/client.c.cleanup 2003-12-17 11:38:16.000000000 +0100
-+++ rdist-6.1.5/src/client.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -84,7 +84,7 @@
- int destdir;
- {
- extern struct namelist *filelist;
-- register char *lname, *cp;
-+ char *lname, *cp;
- static char buff[BUFSIZ];
- int srclen, pathlen;
- char *p;
-@@ -146,7 +146,7 @@
- struct namelist *list;
- char *file;
- {
-- register struct namelist *nl;
-+ struct namelist *nl;
-
- for (nl = list; nl != NULL; nl = nl->n_next)
- if (strcmp(file, nl->n_name) == 0)
-@@ -163,7 +163,7 @@
- char *rname;
- int destdir;
- {
-- register struct subcmd *sc;
-+ struct subcmd *sc;
- extern struct subcmd *subcmds;
- char *rfile;
-
-@@ -200,7 +200,7 @@
- {
- char *rfile;
- struct namelist *new;
-- register struct subcmd *sc;
-+ struct subcmd *sc;
- extern struct subcmd *subcmds;
- int isokay = 0;
-
-@@ -227,7 +227,7 @@
- */
- static void freecmdspecialfiles()
- {
-- register struct namelist *ptr, *save;
-+ struct namelist *ptr, *save;
-
- for (ptr = updfilelist; ptr; ) {
- if (ptr->n_name) (void) free(ptr->n_name);
-@@ -249,10 +249,8 @@
- char **filev;
- opt_t opts;
- {
-- register struct subcmd *sc;
-- register struct namelist *f;
-- register char **cpp;
-- char *file;
-+ struct subcmd *sc;
-+ struct namelist *f;
- int first = TRUE;
-
- for (sc = cmd->c_cmds; sc != NULL; sc = sc->sc_next) {
-@@ -294,7 +292,7 @@
- int checkfilename(name)
- char *name;
- {
-- register char *cp;
-+ char *cp;
-
- if (strchr(name, '\n')) {
- for (cp = name; *cp; cp++)
-@@ -501,7 +499,7 @@
- static int rmchk(opts)
- opt_t opts;
- {
-- register u_char *s;
-+ u_char *s;
- struct stat stb;
- int didupdate = 0;
- int n;
-@@ -618,7 +616,7 @@
-
- optarget = ptarget;
- len = ptarget - target;
-- while (dp = readdir(d)) {
-+ while ((dp = readdir(d))) {
- if (!strcmp(dp->d_name, ".") ||
- !strcmp(dp->d_name, ".."))
- continue;
-@@ -631,7 +629,7 @@
- if (ptarget[-1] != '/')
- *ptarget++ = '/';
- cp = dp->d_name;
-- while (*ptarget++ = *cp++)
-+ while ((*ptarget++ = *cp++))
- ;
- ptarget--;
- if (sendit(dp->d_name, opts, destdir) > 0)
-@@ -770,13 +768,13 @@
- opt_t opts;
- struct stat *statp;
- {
-- register off_t size;
-- register time_t mtime;
-+ off_t size;
-+ time_t mtime;
- unsigned short lmode;
- unsigned short rmode;
- char *owner = NULL, *group = NULL;
- int done, n;
-- u_char *cp;
-+ char *cp;
-
- debugmsg(DM_CALL, "update(%s, 0x%x, 0x%x)\n", rname, opts, statp);
-
-@@ -1035,7 +1033,6 @@
- int destdir;
- {
- static struct stat stb;
-- extern struct subcmd *subcmds;
- char *user, *group;
- int u, len;
- int didupdate = 0;
-@@ -1157,7 +1154,7 @@
- (void) unlink(statfile);
- #endif
-
-- if (file = getnotifyfile())
-+ if ((file = getnotifyfile()))
- (void) unlink(file);
- }
-
---- rdist-6.1.5/src/child.c.cleanup 1998-11-10 05:18:57.000000000 +0100
-+++ rdist-6.1.5/src/child.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -90,7 +90,7 @@
- static void removechild(child)
- CHILD *child;
- {
-- register CHILD *pc, *prevpc;
-+ CHILD *pc, *prevpc;
-
- debugmsg(DM_CALL, "removechild(%s, %d, %d) start",
- child->c_name, child->c_pid, child->c_readfd);
-@@ -148,7 +148,7 @@
- static CHILD *copychild(child)
- CHILD *child;
- {
-- register CHILD *newc;
-+ CHILD *newc;
-
- newc = (CHILD *) xmalloc(sizeof(CHILD));
-
-@@ -167,7 +167,7 @@
- static void addchild(child)
- CHILD *child;
- {
-- register CHILD *pc;
-+ CHILD *pc;
-
- debugmsg(DM_CALL, "addchild() start\n");
-
-@@ -280,7 +280,7 @@
- */
- static void reap()
- {
-- register CHILD *pc;
-+ CHILD *pc;
- int status = 0;
- pid_t pid;
-
-@@ -336,7 +336,7 @@
- */
- static void childscan()
- {
-- register CHILD *pc, *nextpc;
-+ CHILD *pc, *nextpc;
-
- debugmsg(DM_CALL, "childscan() start");
-
-@@ -366,8 +366,8 @@
- extern void waitup()
- {
- #if defined(HAVE_SELECT)
-- register int count;
-- register CHILD *pc;
-+ int count;
-+ CHILD *pc;
- fd_set rchildfds;
-
- debugmsg(DM_CALL, "waitup() start\n");
---- rdist-6.1.5/src/docmd.c.cleanup 2003-12-17 11:38:16.000000000 +0100
-+++ rdist-6.1.5/src/docmd.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -99,10 +99,10 @@
- */
- static void notify(rhost, to, lmod)
- char *rhost;
-- register struct namelist *to;
-+ struct namelist *to;
- time_t lmod;
- {
-- register int fd, len;
-+ int fd, len;
- FILE *pf, *popen();
- struct stat stb;
- static char buf[BUFSIZ];
-@@ -221,7 +221,7 @@
- struct cmd *cmd;
- struct cmd *cmdlist;
- {
-- register struct cmd *pcmd;
-+ struct cmd *pcmd;
-
- for (pcmd = cmdlist; pcmd; pcmd = pcmd->c_next) {
- checkcmd(pcmd);
-@@ -238,7 +238,7 @@
- struct cmd *cmd;
- struct cmd *cmdlist;
- {
-- register struct cmd *pc;
-+ struct cmd *pc;
-
- if (!cmd) {
- debugmsg(DM_MISC, "markfailed() NULL cmd parameter");
-@@ -309,7 +309,7 @@
- static int makeconn(rhost)
- char *rhost;
- {
-- register char *ruser, *cp;
-+ char *ruser, *cp;
- static char *cur_host = NULL;
- extern char *locuser;
- extern long min_freefiles, min_freespace;
-@@ -430,9 +430,9 @@
- struct cmd *cmd;
- char **filev;
- {
-- register struct namelist *f;
-- register struct subcmd *sc;
-- register char **cpp;
-+ struct namelist *f;
-+ struct subcmd *sc;
-+ char **cpp;
- int n, ddir, destdir, opts = options;
- struct namelist *files;
- struct subcmd *sbcmds;
-@@ -567,7 +567,6 @@
- }
- }
-
--done:
- /*
- * Run any commands for the entire cmd
- */
-@@ -584,7 +583,7 @@
- notify(rhost, sc->sc_args, (time_t) 0);
-
- if (!nflag) {
-- register struct linkbuf *nextl, *l;
-+ struct linkbuf *nextl, *l;
-
- for (l = ihead; l != NULL; freelinkinfo(l), l = nextl) {
- nextl = l->nextp;
-@@ -601,11 +600,12 @@
- setjmp_ok = FALSE;
- }
-
-+int
- okname(name)
-- register char *name;
-+ char *name;
- {
-- register char *cp = name;
-- register int c, isbad;
-+ char *cp = name;
-+ int c, isbad;
-
- for (isbad = FALSE; *cp && !isbad; ++cp) {
- c = *cp;
-@@ -627,9 +627,9 @@
- struct subcmd *sbcmds;
- char **env;
- {
-- register DIR *d;
-- register DIRENTRY *dp;
-- register char *cp;
-+ DIR *d;
-+ DIRENTRY *dp;
-+ char *cp;
- char *optarget;
- int len;
-
-@@ -641,7 +641,7 @@
- }
- optarget = ptarget;
- len = ptarget - target;
-- while (dp = readdir(d)) {
-+ while ((dp = readdir(d))) {
- if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, ".."))
- continue;
- if (len + 1 + (int)strlen(dp->d_name) >= BUFSIZ - 1) {
-@@ -651,7 +651,7 @@
- ptarget = optarget;
- *ptarget++ = '/';
- cp = dp->d_name;
-- while (*ptarget++ = *cp++)
-+ while ((*ptarget++ = *cp++))
- ;
- ptarget--;
- cmptime(target, sbcmds, env);
-@@ -740,9 +740,9 @@
- struct cmd *cmd;
- char **filev;
- {
-- register struct subcmd *sc;
-- register struct namelist *f;
-- register char *cp, **cpp;
-+ struct subcmd *sc;
-+ struct namelist *f;
-+ char *cp, **cpp;
- struct stat stb;
- struct namelist *files = cmd->c_files;
- struct subcmd *sbcmds = cmd->c_cmds;
-@@ -824,8 +824,8 @@
- extern int except(file)
- char *file;
- {
-- register struct subcmd *sc;
-- register struct namelist *nl;
-+ struct subcmd *sc;
-+ struct namelist *nl;
-
- debugmsg(DM_CALL, "except(%s)", file);
-
-@@ -918,8 +918,8 @@
- int argc;
- char **argv;
- {
-- register struct namelist *f;
-- register int i;
-+ struct namelist *f;
-+ int i;
-
- if (argc) {
- for (i = 0; i < argc; i++) {
-@@ -962,9 +962,9 @@
- int argc;
- char **argv;
- {
-- register struct cmd *c;
-- register char *cp;
-- register int i;
-+ struct cmd *c;
-+ char *cp;
-+ int i;
-
- (void) signal(SIGHUP, sighandler);
- (void) signal(SIGINT, sighandler);
-@@ -1032,7 +1032,7 @@
-
- if (hostlist) {
- /* Do specific hosts as specified on command line */
-- register struct namelist *nlptr;
-+ struct namelist *nlptr;
-
- for (nlptr = hostlist; nlptr; nlptr = nlptr->n_next)
- /*
---- rdist-6.1.5/src/distopt.c.cleanup 1998-11-10 05:09:11.000000000 +0100
-+++ rdist-6.1.5/src/distopt.c 2003-12-17 11:38:16.000000000 +0100
-@@ -6,7 +6,7 @@
- * appropriately.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -55,7 +55,7 @@
- extern DISTOPTINFO *getdistopt(name)
- char *name;
- {
-- register int i;
-+ int i;
-
- for (i = 0; distoptinfo[i].do_name; ++i)
- if (strcasecmp(name, distoptinfo[i].do_name) == 0)
-@@ -74,7 +74,7 @@
- opt_t *optptr;
- int doerrs;
- {
-- register char *string, *optstr;
-+ char *string, *optstr;
- DISTOPTINFO *distopt;
- int negate;
-
-@@ -93,7 +93,7 @@
- * and the option starts with "no", strip "no"
- * from option and retry lookup.
- */
-- if (distopt = getdistopt(optstr)) {
-+ if ((distopt = getdistopt(optstr))) {
- FLAG_ON(*optptr, distopt->do_value);
- continue;
- }
-@@ -116,7 +116,7 @@
- */
- extern char *getdistoptlist()
- {
-- register int i;
-+ int i;
- static char buf[1024];
-
- for (i = 0, buf[0] = CNULL; distoptinfo[i].do_name; ++i) {
-@@ -138,7 +138,7 @@
- extern char *getondistoptlist(opts)
- opt_t opts;
- {
-- register int i;
-+ int i;
- static char buf[1024];
-
- for (i = 0, buf[0] = CNULL; distoptinfo[i].do_name; ++i) {
---- rdist-6.1.5/src/expand.c.cleanup 1998-11-10 05:09:31.000000000 +0100
-+++ rdist-6.1.5/src/expand.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -81,9 +81,9 @@
- sizeof(*sortbase), argcmp), sortbase = &eargv[eargc]
-
- static void Cat(s1, s2) /* quote in s1 and s2 */
-- register u_char *s1, *s2;
-+ u_char *s1, *s2;
- {
-- register char *cp;
-+ char *cp;
- int len = strlen((char *)s1) + strlen((char *)s2) + 2;
-
- if ((eargc + 1) >= MAXEARGS) {
-@@ -97,12 +97,12 @@
- do {
- if (*s1 == QUOTECHAR)
- s1++;
-- } while (*cp++ = *s1++);
-+ } while ((*cp++ = *s1++));
- cp--;
- do {
- if (*s2 == QUOTECHAR)
- s2++;
-- } while (*cp++ = *s2++);
-+ } while ((*cp++ = *s2++));
- }
-
- static void addpath(c)
-@@ -131,8 +131,8 @@
- struct namelist *list;
- int wh;
- {
-- register struct namelist *nl, *prev;
-- register int n;
-+ struct namelist *nl, *prev;
-+ int n;
- char pathbuf[BUFSIZ];
-
- if (debug)
-@@ -182,7 +182,7 @@
- u_char *str;
- int ch;
- {
-- register u_char *cp;
-+ u_char *cp;
-
- for (cp = str; cp && *cp != CNULL; ++cp)
- if (ch == *cp)
-@@ -194,8 +194,8 @@
- void expstr(s)
- u_char *s;
- {
-- register u_char *cp, *cp1;
-- register struct namelist *tp;
-+ u_char *cp, *cp1;
-+ struct namelist *tp;
- u_char *tail;
- u_char ebuf[BUFSIZ];
- u_char varbuff[BUFSIZ];
-@@ -302,7 +302,7 @@
- cp1 = (u_char *)pw->pw_dir;
- s = cp;
- }
-- for (cp = (u_char *)path; *cp++ = *cp1++; )
-+ for (cp = (u_char *)path; (*cp++ = *cp1++); )
- ;
- tpathp = pathp = (char *)cp - 1;
- } else {
-@@ -326,7 +326,7 @@
- sort();
- }
-
--static
-+static int
- argcmp(a1, a2)
- char **a1, **a2;
- {
-@@ -341,8 +341,8 @@
- void expsh(s) /* quote in s */
- u_char *s;
- {
-- register u_char *cp, *oldcp;
-- register char *spathp;
-+ u_char *cp, *oldcp;
-+ char *spathp;
- struct stat stb;
-
- spathp = pathp;
-@@ -380,7 +380,7 @@
- char *pattern;
- {
- struct stat stb;
-- register DIRENTRY *dp;
-+ DIRENTRY *dp;
- DIR *dirp;
-
- dirp = opendir(path);
-@@ -417,11 +417,12 @@
- yyerror(path);
- }
-
-+int
- execbrc(p, s) /* quote in p */
- u_char *p, *s;
- {
- u_char restbuf[BUFSIZ + 2];
-- register u_char *pe, *pm, *pl;
-+ u_char *pe, *pm, *pl;
- int brclev = 0;
- u_char *lm, savec;
- char *spathp;
-@@ -507,11 +508,12 @@
- return (0);
- }
-
-+int
- match(s, p) /* quote in p */
- char *s, *p;
- {
-- register int c;
-- register char *sentp;
-+ int c;
-+ char *sentp;
- char sexpany = expany;
-
- if (*s == '.' && *p != '.')
-@@ -524,11 +526,12 @@
- return (c);
- }
-
-+int
- amatch(s, p) /* quote in p */
-- register char *s;
-- register u_char *p;
-+ char *s;
-+ u_char *p;
- {
-- register int scc;
-+ int scc;
- int ok, lc;
- char *spathp;
- struct stat stb;
-@@ -545,7 +548,7 @@
- case '[':
- ok = 0;
- lc = 077777;
-- while (cc = *p++) {
-+ while ((cc = *p++)) {
- if (cc == ']') {
- if (ok)
- break;
-@@ -599,7 +602,7 @@
- while (*s)
- addpath(*s++);
- addpath('/');
-- if (stat(path, &stb) == 0 && S_ISDIR(stb.st_mode))
-+ if (stat(path, &stb) == 0 && S_ISDIR(stb.st_mode)) {
- if (*p == CNULL) {
- if (which & E_TILDE)
- Cat((u_char *)path,
-@@ -609,6 +612,7 @@
- (u_char *)tpathp);
- } else
- expsh(p);
-+ }
- pathp = spathp;
- *pathp = CNULL;
- return (0);
---- rdist-6.1.5/src/lookup.c.cleanup 1998-11-10 05:12:56.000000000 +0100
-+++ rdist-6.1.5/src/lookup.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -68,11 +68,12 @@
- /*
- * Define a variable from a command line argument.
- */
-+void
- define(name)
- char *name;
- {
-- register char *cp, *s;
-- register struct namelist *nl;
-+ char *cp, *s;
-+ struct namelist *nl;
- struct namelist *value;
-
- debugmsg(DM_CALL, "define(%s)", name);
-@@ -137,9 +138,9 @@
- int action;
- struct namelist *value;
- {
-- register unsigned n;
-- register char *cp;
-- register struct syment *s;
-+ unsigned n;
-+ char *cp;
-+ struct syment *s;
- char ebuf[BUFSIZ];
-
- debugmsg(DM_CALL, "lookup(%s, %d, %x)", name, action, value);
---- rdist-6.1.5/src/isexec.c.cleanup 1998-11-10 05:11:42.000000000 +0100
-+++ rdist-6.1.5/src/isexec.c 2003-12-17 11:38:16.000000000 +0100
-@@ -37,7 +37,7 @@
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
---- rdist-6.1.5/src/signal.c.cleanup 1998-11-10 05:16:13.000000000 +0100
-+++ rdist-6.1.5/src/signal.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
---- rdist-6.1.5/src/rshrcmd.c.cleanup 1998-11-10 05:15:07.000000000 +0100
-+++ rdist-6.1.5/src/rshrcmd.c 2003-12-17 11:38:16.000000000 +0100
-@@ -10,7 +10,7 @@
- * Chris Siebenmann <cks@utcc.utoronto.ca>.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -34,6 +34,7 @@
- * program in place of a direct rcmd() function call so as to
- * avoid having to be root.
- */
-+int
- rshrcmd(ahost, port, luser, ruser, cmd, fd2p)
- char **ahost;
- u_short port;
-@@ -108,6 +109,7 @@
- (void) wait(0);
- return sp[0];
- }
-+ return -1;
- /*NOTREACHED*/
- }
-
---- rdist-6.1.5/src/common.c.cleanup 1998-11-10 05:09:01.000000000 +0100
-+++ rdist-6.1.5/src/common.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -87,14 +87,14 @@
- /*
- * Front end to write() that handles partial write() requests.
- */
--extern WRITE_RETURN_T xwrite(fd, buf, len)
-+WRITE_RETURN_T xwrite(fd, buf, len)
- int fd;
- void *buf;
- WRITE_AMT_T len;
- {
- WRITE_AMT_T nleft = len;
- WRITE_RETURN_T nwritten;
-- register char *ptr = buf;
-+ char *ptr = buf;
-
- while (nleft > 0) {
- if ((nwritten = write(fd, ptr, nleft)) <= 0) {
-@@ -110,14 +110,14 @@
- /*
- * Set program name
- */
--extern void setprogname(argv)
-+void setprogname(argv)
- char **argv;
- {
-- register char *cp;
-+ char *cp;
-
- if (!progname) {
- progname = strdup(argv[0]);
-- if (cp = strrchr(progname, '/'))
-+ if ((cp = strrchr(progname, '/')))
- progname = cp + 1;
- }
- }
-@@ -125,14 +125,14 @@
- /*
- * Do run-time initialization
- */
--extern int init(argc, argv, envp)
-+int init(argc, argv, envp)
- /*ARGSUSED*/
- int argc;
- char **argv;
- char **envp;
- {
-- register int i;
-- register char *cp;
-+ int i;
-+ char *cp;
-
- if (!isserver)
- (void) signal(SIGSEGV, sighandler);
-@@ -182,7 +182,7 @@
- /*
- * Finish things up before ending.
- */
--extern void finish()
-+void finish()
- {
- extern jmp_buf finish_jmpbuf;
-
-@@ -216,7 +216,7 @@
- /*
- * Handle lost connections
- */
--extern void lostconn()
-+void lostconn()
- {
- /* Prevent looping */
- (void) signal(SIGPIPE, SIG_IGN);
-@@ -232,7 +232,7 @@
- /*
- * Do a core dump
- */
--extern void coredump()
-+void coredump()
- {
- error("Segmentation violation - dumping core [PID = %d, %s]",
- getpid(),
-@@ -245,7 +245,7 @@
- /*
- * General signal handler
- */
--extern void sighandler(sig)
-+void sighandler(sig)
- int sig;
- {
- debugmsg(DM_CALL, "sighandler() received signal %d\n", sig);
-@@ -325,7 +325,7 @@
- /*
- * Stdarg frontend to sendcmdmsg()
- */
--extern int sendcmd(char cmd, char *fmt, ...)
-+int sendcmd(char cmd, char *fmt, ...)
- {
- static char buf[BUFSIZ];
- va_list args;
-@@ -345,7 +345,7 @@
- /*
- * Varargs frontend to sendcmdmsg()
- */
--extern int sendcmd(va_alist)
-+int sendcmd(va_alist)
- va_dcl
- {
- static char buf[BUFSIZ];
-@@ -372,7 +372,7 @@
- * Stupid frontend to sendcmdmsg()
- */
- /*VARARGS2*/
--extern int sendcmd(cmd, fmt, a1, a2, a3, a4, a5, a6, a7, a8)
-+int sendcmd(cmd, fmt, a1, a2, a3, a4, a5, a6, a7, a8)
- char cmd;
- char *fmt;
- {
-@@ -433,13 +433,13 @@
- * errors, call cleanup() or lostconn(). In other words, unless
- * the third argument is nonzero, this routine never returns failure.
- */
--extern int remline(buffer, space, doclean)
-- register u_char *buffer;
-+int remline(buffer, space, doclean)
-+ u_char *buffer;
- int space;
- int doclean;
- {
-- register int c, left = space;
-- register u_char *p = buffer;
-+ int c, left = space;
-+ u_char *p = buffer;
-
- if (rem_r < 0) {
- error("Cannot read remote input: Remote descriptor not open.");
-@@ -494,9 +494,9 @@
- /*
- * Non-line-oriented remote read.
- */
--readrem(p, space)
-+int readrem(p, space)
- char *p;
-- register int space;
-+ int space;
- {
- if (remleft <= 0) {
- /*
-@@ -527,7 +527,7 @@
- /*
- * Get the user name for the uid.
- */
--extern char *getusername(uid, file, opts)
-+char *getusername(uid, file, opts)
- UID_T uid;
- char *file;
- opt_t opts;
-@@ -566,7 +566,7 @@
- /*
- * Get the group name for the gid.
- */
--extern char *getgroupname(gid, file, opts)
-+char *getgroupname(gid, file, opts)
- GID_T gid;
- char *file;
- opt_t opts;
-@@ -604,7 +604,7 @@
- /*
- * Read a response from the remote host.
- */
--extern int response()
-+int response()
- {
- static u_char resp[BUFSIZ];
- u_char *s;
-@@ -646,6 +646,7 @@
- message(MT_FERROR, "%s", s);
- finish();
- }
-+ return -1;
- /*NOTREACHED*/
- }
-
-@@ -657,11 +658,11 @@
- * user's home directory path name. Return a pointer in buf to the
- * part corresponding to `file'.
- */
--extern char *exptilde(ebuf, file)
-+char *exptilde(ebuf, file)
- char *ebuf;
-- register char *file;
-+ char *file;
- {
-- register char *s1, *s2, *s3;
-+ char *s1, *s2, *s3;
- extern char *homedir;
-
- if (*file != '~') {
-@@ -694,12 +695,12 @@
- *s3 = '/';
- s2 = pw->pw_dir;
- }
-- for (s1 = ebuf; *s1++ = *s2++; )
-+ for (s1 = ebuf; (*s1++ = *s2++); )
- ;
- s2 = --s1;
- if (s3 != NULL) {
- s2++;
-- while (*s1++ = *s3++)
-+ while ((*s1++ = *s3++))
- ;
- }
- return(s2);
-@@ -710,7 +711,7 @@
- * Set our effective user id to the user running us.
- * This should be the uid we do most of our work as.
- */
--extern int becomeuser()
-+int becomeuser()
- {
- int r = 0;
-
-@@ -732,7 +733,7 @@
- /*
- * Set our effective user id to "root" (uid = 0)
- */
--extern int becomeroot()
-+int becomeroot()
- {
- int r = 0;
-
-@@ -753,7 +754,7 @@
- /*
- * Set access and modify times of a given file
- */
--extern int setfiletime(file, atime, mtime)
-+int setfiletime(file, atime, mtime)
- char *file;
- time_t atime;
- time_t mtime;
-@@ -790,7 +791,7 @@
- /*
- * Get version info
- */
--extern char *getversion()
-+char *getversion()
- {
- static char buff[BUFSIZ];
-
-@@ -811,7 +812,7 @@
- {
- int fd[2], pid, i;
- int status;
-- register char *cp, *s;
-+ char *cp, *s;
- char sbuf[BUFSIZ], buf[BUFSIZ];
-
- if (pipe(fd) < 0) {
-@@ -933,12 +934,12 @@
- /*
- * Private version of basename()
- */
--extern char *xbasename(path)
-+char *xbasename(path)
- char *path;
- {
-- register char *cp;
-+ char *cp;
-
-- if (cp = strrchr(path, '/'))
-+ if ((cp = strrchr(path, '/')))
- return(cp+1);
- else
- return(path);
-@@ -949,11 +950,11 @@
- * search until a component of that path is found and
- * return the found file name.
- */
--extern char *searchpath(path)
-+char *searchpath(path)
- char *path;
- {
-- register char *cp;
-- register char *file;
-+ char *cp;
-+ char *file;
- struct stat statbuf;
-
- for (; ;) {
-@@ -977,8 +978,7 @@
- /*
- * Set line buffering.
- */
--extern void
--mysetlinebuf(fp)
-+void mysetlinebuf(fp)
- FILE *fp;
- {
- #if SETBUF_TYPE == SETBUF_SETLINEBUF
-@@ -995,8 +995,7 @@
- /*
- * Our interface to system call to get a socket pair.
- */
--int
--getsocketpair(domain, type, protocol, sv)
-+int getsocketpair(domain, type, protocol, sv)
- int domain;
- int type;
- int protocol;
---- rdist-6.1.5/src/message.c.cleanup 1998-11-10 05:13:30.000000000 +0100
-+++ rdist-6.1.5/src/message.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -97,7 +97,7 @@
- */
- extern void msgprusage()
- {
-- register int i, x;
-+ int i, x;
-
- (void) fprintf(stderr, "\nWhere <msgopt> is of form\n");
- (void) fprintf(stderr,
-@@ -120,7 +120,7 @@
- */
- extern void msgprconfig()
- {
-- register int i, x;
-+ int i, x;
- static char buf[MSGBUFSIZ];
-
- debugmsg(DM_MISC, "Current message logging config:");
-@@ -145,7 +145,7 @@
- static MSGFACILITY *getmsgfac(name)
- char *name;
- {
-- register int i;
-+ int i;
-
- for (i = 0; msgfacility[i].mf_name; ++i)
- if (strcasecmp(name, msgfacility[i].mf_name) == 0)
-@@ -160,7 +160,7 @@
- static MSGTYPE *getmsgtype(name)
- char *name;
- {
-- register int i;
-+ int i;
-
- for (i = 0; msgtypes[i].mt_name; ++i)
- if (strcasecmp(name, msgtypes[i].mt_name) == 0)
-@@ -178,9 +178,9 @@
- char *str;
- {
- static char ebuf[BUFSIZ];
-- register char *cp;
-- register char *strptr, *word;
-- register MSGTYPE *mtp;
-+ char *cp;
-+ char *strptr, *word;
-+ MSGTYPE *mtp;
-
- /*
- * MF_SYSLOG is the only supported message facility for the server
-@@ -240,11 +240,11 @@
- msgfac->mf_msgtypes = 0; /* Start from scratch */
- while (strptr) {
- word = strptr;
-- if (cp = strchr(strptr, ','))
-+ if ((cp = strchr(strptr, ',')))
- *cp++ = CNULL;
- strptr = cp;
-
-- if (mtp = getmsgtype(word)) {
-+ if ((mtp = getmsgtype(word))) {
- msgfac->mf_msgtypes |= mtp->mt_type;
- /*
- * XXX This is really a kludge until we add real
-@@ -272,8 +272,8 @@
- int doset;
- {
- static char ebuf[BUFSIZ], msgbuf[MSGBUFSIZ];
-- register char *cp, *optstr;
-- register char *word;
-+ char *cp, *optstr;
-+ char *word;
- MSGFACILITY *msgfac;
-
- if (msgstr == NULL)
-@@ -308,7 +308,7 @@
- if (doset) {
- char *mcp;
-
-- if (mcp = setmsgtypes(msgfac, cp))
-+ if ((mcp = setmsgtypes(msgfac, cp)))
- return(mcp);
- }
- }
-@@ -462,8 +462,9 @@
- return;
-
- if (!msgfac->mf_fptr) {
-- register char *cp;
-+ char *cp;
- char *getenv();
-+ int fd;
-
- /*
- * Create and open a new temporary file
-@@ -475,7 +476,10 @@
- (void) sprintf(tempfile, "%s/%s", cp, _RDIST_TMP);
-
- msgfac->mf_filename = tempfile;
-- (void) mktemp(msgfac->mf_filename);
-+ fd = mkstemp(msgfac->mf_filename);
-+ if (fd < 0)
-+ fatalerr("Cannot open notify file for writing: %s: %s.", msgfac->mf_filename, SYSERR);
-+ close(fd);
- if ((msgfac->mf_fptr = fopen(msgfac->mf_filename, "w"))==NULL)
- fatalerr("Cannot open notify file for writing: %s: %s.",
- msgfac->mf_filename, SYSERR);
-@@ -515,15 +519,15 @@
- int flags;
- char *msgbuf;
- {
-- register int i, x;
-- register char *cp;
-+ int i, x;
-+ char *cp;
- static char mbuf[2048];
-
- if (msgbuf && *msgbuf) {
- /*
- * Ensure no stray newlines are present
- */
-- if (cp = strchr(msgbuf, '\n'))
-+ if ((cp = strchr(msgbuf, '\n')))
- *cp = CNULL;
-
- checkhostname();
-@@ -863,7 +867,7 @@
- */
- extern char *getnotifyfile()
- {
-- register int i;
-+ int i;
-
- for (i = 0; msgfacility[i].mf_name; i++)
- if (msgfacility[i].mf_msgfac == MF_NOTIFY &&
---- rdist-6.1.5/src/setargs.c.cleanup 2003-12-17 11:38:16.000000000 +0100
-+++ rdist-6.1.5/src/setargs.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -66,12 +66,12 @@
- /*
- * Settup things for using setproctitle()
- */
--setargs_settup(argc, argv, envp)
-+void setargs_settup(argc, argv, envp)
- int argc;
- char **argv;
- char **envp;
- {
-- register int i;
-+ int i;
- extern char **environ;
-
- /* Remember the User Environment */
-@@ -92,10 +92,10 @@
- /*
- * Set process title
- */
--extern void _setproctitle(msg)
-+void _setproctitle(msg)
- char *msg;
- {
-- register int i;
-+ int i;
- char *p;
-
- p = Argv[0];
-@@ -119,7 +119,7 @@
- /*
- * Varargs front-end to _setproctitle()
- */
--extern void setproctitle(va_alist)
-+void setproctitle(va_alist)
- va_dcl
- {
- static char buf[BUFSIZ];
-@@ -138,7 +138,7 @@
- /*
- * Stdarg front-end to _setproctitle()
- */
--extern void setproctitle(char *fmt, ...)
-+void setproctitle(char *fmt, ...)
- {
- static char buf[BUFSIZ];
- va_list args;
-@@ -155,7 +155,7 @@
- * Non-Varargs front-end to _setproctitle()
- */
- /*VARARGS1*/
--extern void setproctitle(fmt, a1, a2, a3, a4, a5, a6)
-+void setproctitle(fmt, a1, a2, a3, a4, a5, a6)
- char *fmt;
- {
- static char buf[BUFSIZ];
---- rdist-6.1.5/src/rdistd.c.cleanup 1998-11-10 05:14:06.000000000 +0100
-+++ rdist-6.1.5/src/rdistd.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -53,21 +53,12 @@
-
- #include "defs.h"
-
--/*
-- * Print usage message
-- */
--static void usage()
--{
-- fprintf(stderr, "usage: %s -S [ -DV ]\n", progname);
-- exit(1);
--}
--
- char localmsglist[] = "syslog=ferror";
-
- /*
- * The Beginning
- */
--main(argc, argv, envp)
-+int main(argc, argv, envp)
- int argc;
- char **argv;
- char **envp;
-@@ -95,7 +86,8 @@
- case '?':
- default:
- error("Bad command line option.");
-- usage();
-+ fprintf(stderr, "usage: %s -S [ -DV ]\n", progname);
-+ exit(1);
- }
-
- if (!isserver) {
-@@ -108,7 +100,7 @@
- rem_w = fileno(stdout);
-
- /* Set logging */
-- if (cp = msgparseopts(localmsglist, TRUE))
-+ if ((cp = msgparseopts(localmsglist, TRUE)))
- fatalerr("Bad message logging option (%s): %s",
- localmsglist, cp);
-
---- rdist-6.1.5/src/server.c.cleanup 2003-12-17 11:38:16.000000000 +0100
-+++ rdist-6.1.5/src/server.c 2003-12-17 11:38:16.000000000 +0100
-@@ -37,7 +37,7 @@
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -197,7 +197,7 @@
- static UID_T last_uid = (UID_T)-2;
- static GID_T last_primegid;
- extern char *locuser;
-- register int i;
-+ int i;
- UID_T uid;
- GID_T gid;
- GID_T primegid = (GID_T)-2;
-@@ -252,7 +252,7 @@
- /*
- * Invalid cached values so we need to do a new lookup.
- */
-- if (gr = mygetgroup(group)) {
-+ if ((gr = mygetgroup(group))) {
- last_gid = gid = gr->gr_gid;
- strcpy(last_group, gr->gr_name);
- } else {
-@@ -325,7 +325,7 @@
- {
- DIR *d;
- static DIRENTRY *dp;
-- register char *cp;
-+ char *cp;
- struct stat stb;
- char *optarget;
- int len, failures = 0;
-@@ -362,7 +362,7 @@
-
- optarget = ptarget;
- len = ptarget - target;
-- while (dp = readdir(d)) {
-+ while ((dp = readdir(d))) {
- if ((D_NAMLEN(dp) == 1 && dp->d_name[0] == '.') ||
- (D_NAMLEN(dp) == 2 && dp->d_name[0] == '.' &&
- dp->d_name[1] == '.'))
-@@ -376,7 +376,7 @@
- ptarget = optarget;
- *ptarget++ = '/';
- cp = dp->d_name;;
-- while (*ptarget++ = *cp++)
-+ while ((*ptarget++ = *cp++))
- ;
- ptarget--;
- if (lstat(target, &stb) < 0) {
-@@ -414,10 +414,10 @@
- * for extraneous files and remove them.
- */
- static void doclean(cp)
-- register char *cp;
-+ char *cp;
- {
- DIR *d;
-- register DIRENTRY *dp;
-+ DIRENTRY *dp;
- struct stat stb;
- char *optarget, *ep;
- int len;
-@@ -436,7 +436,7 @@
-
- optarget = ptarget;
- len = ptarget - target;
-- while (dp = readdir(d)) {
-+ while ((dp = readdir(d))) {
- if ((D_NAMLEN(dp) == 1 && dp->d_name[0] == '.') ||
- (D_NAMLEN(dp) == 2 && dp->d_name[0] == '.' &&
- dp->d_name[1] == '.'))
-@@ -450,7 +450,7 @@
- ptarget = optarget;
- *ptarget++ = '/';
- cp = dp->d_name;;
-- while (*ptarget++ = *cp++)
-+ while ((*ptarget++ = *cp++))
- ;
- ptarget--;
- if (lstat(target, &stb) < 0) {
-@@ -481,7 +481,7 @@
- * Frontend to doclean().
- */
- static void clean(cp)
-- register char *cp;
-+ char *cp;
- {
- doclean(cp);
- (void) sendcmd(CC_END, NULL);
-@@ -509,7 +509,7 @@
- */
- static void docmdspecial()
- {
-- register char *cp;
-+ char *cp;
- char *cmd, *env = NULL;
- int n;
- int len;
-@@ -667,7 +667,7 @@
- char *name;
- opt_t opts;
- {
-- register char *cp;
-+ char *cp;
- struct stat stb;
- int r = -1;
-
-@@ -760,7 +760,7 @@
- {
- int f, wrerr, olderrno, lastwashole = 0, wassparse = 0;
- off_t i;
-- register char *cp;
-+ char *cp;
- char *savefile = NULL;
- static struct stat statbuff;
-
-@@ -987,7 +987,7 @@
- char *owner, *group;
- {
- static char lowner[100], lgroup[100];
-- register char *cp;
-+ char *cp;
- struct stat stb;
- int s;
-
-@@ -1044,7 +1044,7 @@
-
- o = (owner[0] == ':') ? opts & DO_NUMCHKOWNER :
- opts;
-- if (cp = getusername(stb.st_uid, target, o))
-+ if ((cp = getusername(stb.st_uid, target, o)))
- if (strcmp(owner, cp))
- (void) strcpy(lowner, cp);
- }
-@@ -1053,7 +1053,7 @@
-
- o = (group[0] == ':') ? opts & DO_NUMCHKGROUP :
- opts;
-- if (cp = getgroupname(stb.st_gid, target, o))
-+ if ((cp = getgroupname(stb.st_gid, target, o)))
- if (strcmp(group, cp))
- (void) strcpy(lgroup, cp);
- }
-@@ -1107,8 +1107,8 @@
- if (s < 0) {
- if (errno == ENOENT) {
- if (mkdir(target, mode) == 0 ||
-- chkparent(target, opts) == 0 &&
-- mkdir(target, mode) == 0) {
-+ (chkparent(target, opts) == 0 &&
-+ mkdir(target, mode) == 0)) {
- message(MT_NOTICE, "%s: mkdir", target);
- (void) fchog(-1, target, owner, group, mode);
- ack();
-@@ -1304,7 +1304,7 @@
- static void setconfig(cmd)
- char *cmd;
- {
-- register char *cp = cmd;
-+ char *cp = cmd;
- char *estr;
-
- switch (*cp++) {
-@@ -1338,7 +1338,7 @@
- break;
-
- case SC_LOGGING: /* Logging options */
-- if (estr = msgparseopts(cp, TRUE)) {
-+ if ((estr = msgparseopts(cp, TRUE))) {
- fatalerr("Bad message option string (%s): %s",
- cp, estr);
- return;
-@@ -1455,7 +1455,7 @@
- sptarget[catname] = ptarget;
- if (catname++) {
- *ptarget++ = '/';
-- while (*ptarget++ = *file++)
-+ while ((*ptarget++ = *file++))
- ;
- ptarget--;
- }
-@@ -1463,6 +1463,7 @@
- /*
- * Create name of temporary file
- */
-+ int fd;
- if (catname && cattarget(file) < 0) {
- error("Cannot set file name.");
- return;
-@@ -1477,7 +1478,12 @@
- (void) sprintf(new, "%s/%s", target, tempname);
- *file = '/';
- }
-- (void) mktemp(new);
-+ fd = mkstemp(new);
-+ if (fd < 0) {
-+ error("Cannot set file name.");
-+ return;
-+ }
-+ close(fd);
- }
-
- /*
-@@ -1581,8 +1587,8 @@
- extern void server()
- {
- static char cmdbuf[BUFSIZ];
-- register char *cp;
-- register int n;
-+ char *cp;
-+ int n;
- extern jmp_buf finish_jmpbuf;
-
- if (setjmp(finish_jmpbuf)) {
---- rdist-6.1.5/src/filesys.c.cleanup 1998-11-10 05:10:18.000000000 +0100
-+++ rdist-6.1.5/src/filesys.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -72,7 +72,7 @@
- static char last_pathname[MAXPATHLEN];
- static char file[MAXPATHLEN + 3];
- static struct stat filestat;
-- register char *p;
-+ char *p;
-
- /*
- * Mark the statbuf as invalid to start with.
-@@ -125,7 +125,7 @@
- * Normally we want to change /dir1/dir2/file
- * into "/dir1/dir2/."
- */
-- if (p = (char *) strrchr(file, '/')) {
-+ if ((p = (char *) strrchr(file, '/'))) {
- *++p = '.';
- *++p = CNULL;
- } else {
-@@ -183,7 +183,7 @@
- struct stat *filest;
- struct mntinfo *mntinfo;
- {
-- register struct mntinfo *mi;
-+ struct mntinfo *mi;
-
- for (mi = mntinfo; mi; mi = mi->mi_nxt) {
- if (mi->mi_mnt->me_flags & MEFLAG_IGNORE)
-@@ -202,7 +202,7 @@
- mntent_t *mnt;
- struct mntinfo *mntinfo;
- {
-- register struct mntinfo *m;
-+ struct mntinfo *m;
-
- for (m = mntinfo; m; m = m->mi_nxt)
- if (strcmp(m->mi_mnt->me_path, mnt->me_path) == 0)
-@@ -247,7 +247,7 @@
- }
-
- mntinfo = mi;
-- while (mnt = getmountent(mfp)) {
-+ while ((mnt = getmountent(mfp))) {
- debugmsg(DM_MISC, "mountent = '%s' (%s)",
- mnt->me_path, mnt->me_type);
-
-@@ -308,7 +308,7 @@
- static struct stat filestat;
- struct stat *pstat;
- struct mntinfo *tmpmi;
-- register mntent_t *mnt;
-+ mntent_t *mnt;
-
- /*
- * Use the supplied stat buffer if not NULL or our own.
-@@ -330,16 +330,16 @@
- /*
- * Find the mnt that pathname is on.
- */
-- if (mnt = findmnt(pstat, mntinfo))
-+ if ((mnt = findmnt(pstat, mntinfo)))
- return(mnt);
-
- /*
- * We failed to find correct mnt, so maybe it's a newly
- * mounted filesystem. We rebuild mntinfo and try again.
- */
-- if (tmpmi = makemntinfo(mntinfo)) {
-+ if ((tmpmi = makemntinfo(mntinfo))) {
- mntinfo = tmpmi;
-- if (mnt = findmnt(pstat, mntinfo))
-+ if ((mnt = findmnt(pstat, mntinfo)))
- return(mnt);
- }
-
---- rdist-6.1.5/src/filesys-os.c.cleanup 1998-11-10 05:09:59.000000000 +0100
-+++ rdist-6.1.5/src/filesys-os.c 2003-12-17 11:38:16.000000000 +0100
-@@ -38,7 +38,7 @@
- * SUCH DAMAGE.
- */
-
--#ifndef lint
-+#if 0
- static char RCSid[] =
- "$Id: rdist-6.1.5-cleanup.diff,v 1.1 2008/10/27 20:26:28 eha Exp eha $";
-
-@@ -314,7 +314,7 @@
-
- bzero((char *)&me, sizeof(mntent_t));
-
-- if (mntent = getmntent(fptr)) {
-+ if ((mntent = getmntent(fptr))) {
- me.me_path = mntent->mnt_dir;
- me.me_type = mntent->mnt_type;
- if (mntent->mnt_opts && hasmntopt(mntent, MNTOPT_RO))
---- rdist-6.1.5/src/strcasecmp.c.cleanup 1998-11-10 05:16:52.000000000 +0100
-+++ rdist-6.1.5/src/strcasecmp.c 2003-12-17 11:38:16.000000000 +0100
-@@ -51,9 +51,9 @@
- };
-
- strcasecmp(s1, s2)
-- register char *s1, *s2;
-+ char *s1, *s2;
- {
-- register char *cm = charmap;
-+ char *cm = charmap;
-
- while (cm[*s1] == cm[*s2++])
- if (*s1++ == '\0')
-@@ -62,10 +62,10 @@
- }
-
- strncasecmp(s1, s2, n)
-- register char *s1, *s2;
-- register int n;
-+ char *s1, *s2;
-+ int n;
- {
-- register char *cm = charmap;
-+ char *cm = charmap;
-
- while (--n >= 0 && cm[*s1] == cm[*s2++])
- if (*s1++ == '\0')
---- rdist-6.1.5/src/strtol.c.cleanup 1994-03-17 00:25:50.000000000 +0100
-+++ rdist-6.1.5/src/strtol.c 2003-12-17 11:38:16.000000000 +0100
-@@ -54,13 +54,13 @@
- strtol(nptr, endptr, base)
- char *nptr;
- char **endptr;
-- register int base;
-+ int base;
- {
-- register char *s = nptr;
-- register unsigned long acc;
-- register int c;
-- register unsigned long cutoff;
-- register int neg = 0, any, cutlim;
-+ char *s = nptr;
-+ unsigned long acc;
-+ int c;
-+ unsigned long cutoff;
-+ int neg = 0, any, cutlim;
-
- /*
- * Skip white space and pick up leading +/- sign if any.
---- rdist-6.1.5/src/regex.c.cleanup 1998-11-10 05:14:28.000000000 +0100
-+++ rdist-6.1.5/src/regex.c 2003-12-17 11:39:14.000000000 +0100
-@@ -142,10 +142,8 @@
- */
- char *
- re_comp(sp)
-- register char *sp;
- {
-- register int c;
-- register char *ep = expbuf;
-+ char *ep = expbuf;
- int cclcnt, numbra = 0;
- char *lastep = 0;
- char bracket[NBRA];
-@@ -266,10 +264,10 @@
- */
- int
- re_exec(p1)
-- register char *p1;
-+ char *p1;
- {
-- register char *p2 = expbuf;
-- register int c;
-+ char *p2 = expbuf;
-+ int c;
- int rv;
-
- for (c = 0; c < NBRA; c++) {
-@@ -306,9 +304,9 @@
- */
- static int
- advance(lp, ep)
-- register char *lp, *ep;
-+ char *lp, *ep;
- {
-- register char *curlp;
-+ char *curlp;
- int ct, i;
- int rv;
-
-@@ -413,10 +411,10 @@
- }
-
- backref(i, lp)
-- register int i;
-- register char *lp;
-+ int i;
-+ char *lp;
- {
-- register char *bp;
-+ char *bp;
-
- bp = braslist[i];
- while (*bp++ == *lp++)
-@@ -427,10 +425,10 @@
-
- int
- cclass(set, c, af)
-- register char *set, c;
-+ char *set, c;
- int af;
- {
-- register int n;
-+ int n;
-
- if (c == 0)
- return(0);
---- rdist-6.1.5/include/defs.h.cleanup 2003-12-17 11:38:16.000000000 +0100
-+++ rdist-6.1.5/include/defs.h 2003-12-17 11:38:16.000000000 +0100
-@@ -30,11 +30,13 @@
- #include <grp.h>
- #include <syslog.h>
- #include <setjmp.h>
-+#include <time.h>
- #include <sys/types.h>
- #include <sys/param.h>
- #include <sys/file.h>
--#include <sys/time.h>
- #include <sys/stat.h>
-+#include <sys/wait.h>
-+#include <sys/socket.h>
-
- #include "version.h"
- #include "config-def.h"
-@@ -48,6 +50,9 @@
- #endif /* yacc */
-
- #include <signal.h>
-+#define _REGEX_RE_COMP
-+#include <regex.h>
-+
-
- /*
- * This belongs in os-svr4.h but many SVR4 OS's
-@@ -321,12 +326,11 @@
- /*
- * Our own declarations.
- */
--char *exptilde();
- char *makestr();
- char *xcalloc();
- char *xmalloc();
- char *xrealloc();
--extern char *xbasename();
-+extern char *exptilde();
- extern char *getdistoptlist();
- extern char *getgroupname();
- extern char *getnlstr();
-@@ -336,44 +340,75 @@
- extern char *getversion();
- extern char *msgparseopts();
- extern char *searchpath();
-+extern char *xbasename();
-+extern int amatch();
- extern int any();
-+extern int becomeroot();
-+extern int becomeuser();
-+extern int except();
-+extern int execbrc();
-+extern int getfilesysinfo();
-+extern int getsocketpair();
- extern int init();
- extern int install();
- extern int isexec();
-+extern int is_nfs_mounted();
-+extern int is_ro_mounted();
-+extern int is_symlinked();
-+extern int match();
-+extern int okname();
- extern int parsedistopts();
-+extern int readrem();
- extern int remline();
-+extern int response();
-+extern int rshrcmd();
- extern int setfiletime();
-+extern int setnonblocking();
- extern int spawn();
-+extern int yylex();
-+extern int yyparse();
- extern struct subcmd *makesubcmd();
-+extern void append();
- extern void checkhostname();
- extern void cleanup();
- extern void complain();
-+extern void coredump();
-+extern void define();
-+extern void docmdargs();
- extern void docmds();
- extern void finish();
--extern void log();
-+extern void freelinkinfo();
-+extern void insert();
- extern void logmsg();
- extern void lostconn();
- extern void markassigned();
-+extern void msgprconfig();
- extern void msgprusage();
-+extern void mysetlinebuf();
- extern void note();
- extern void runcmdspecial();
- extern void runcommand();
- extern void server();
-+extern void setargs_settup();
- extern void setprogname();
- extern void sighandler();
-+extern void usage();
- extern void waitup();
-+extern void yyerror();
-+extern WRITE_RETURN_T xwrite();
- struct namelist *expand();
- struct namelist *lookup();
- struct namelist *makenl();
--extern WRITE_RETURN_T xwrite();
-
- #if defined(ARG_TYPE) && ARG_TYPE == ARG_STDARG
-+extern int sendcmd(char cmd, char *fmt, ...);
- extern void debugmsg(int, char *, ...);
- extern void error(char *, ...);
- extern void fatalerr(char *, ...);
- extern void message(int, char *, ...);
- extern void setproctitle(char *fmt, ...);
- #else
-+extern int sendcmd(va_alist);
- extern void debugmsg();
- extern void error();
- extern void fatalerr();
diff --git a/source/n/rdist/rdist-6.1.5.diff b/source/n/rdist/rdist-6.1.5.diff
deleted file mode 100644
index 0445ca9b0..000000000
--- a/source/n/rdist/rdist-6.1.5.diff
+++ /dev/null
@@ -1,107 +0,0 @@
-diff -ur rdist-6.1.5.orig/Makefile rdist-6.1.5/Makefile
---- rdist-6.1.5.orig/Makefile Mon Nov 9 19:36:06 1998
-+++ rdist-6.1.5/Makefile Tue Apr 3 10:56:28 2001
-@@ -17,9 +17,10 @@
- SHELL=/bin/sh
-
- all install install.man: FRC
-- @for t in $(TARGETS); do \
-+ @for t in $(TARGETS); do ( \
- echo Making \"$@\" in \"$$t\"; \
- (cd $$t; ${MAKE} $@); \
-+ ) || exit 1; \
- done
-
- clean:
-diff -ur rdist-6.1.5.orig/Makefile.local rdist-6.1.5/Makefile.local
---- rdist-6.1.5.orig/Makefile.local Mon Nov 9 19:36:31 1998
-+++ rdist-6.1.5/Makefile.local Tue Apr 3 10:56:28 2001
-@@ -15,6 +15,20 @@
- # or add your own line.
- #
- #BIN_DIR = /usr/bin
-+BIN_DIR = /usr/bin
-+MAN_1_DIR = /usr/man/man1
-+MAN_8_DIR = /usr/man/man8
-+RDIST_MODE = 755
-+RDISTD_MODE = 755
-+MAN_MODE = 644
-+MAN_OWNER = root
-+MAN_GROUP = root
-+BIN_GROUP = root
-+
-+INSTALL = install
-+YACC = bison -y
-+
-+OPT = -Wall -O2 -pipe
-
- #
- # Add any local definitions you want pass to the compiler to DEFS_LOCAL
-Only in rdist-6.1.5: Makefile.local~
-Only in rdist-6.1.5: Makefile~
-diff -ur rdist-6.1.5.orig/config/os-linux.h rdist-6.1.5/config/os-linux.h
---- rdist-6.1.5.orig/config/os-linux.h Mon Nov 9 19:59:59 1998
-+++ rdist-6.1.5/config/os-linux.h Tue Apr 3 10:56:28 2001
-@@ -93,8 +93,8 @@
- /*
- * Our types, usually these are uid_t and gid_t.
- */
--typedef uid_t UID_T; /* Must be signed */
--typedef gid_t GID_T; /* Must be signed */
-+typedef int UID_T; /* Must be signed */
-+typedef int GID_T; /* Must be signed */
-
- /*
- * Generic pointer, used by memcpy, malloc, etc. Usually char or void.
-Only in rdist-6.1.5/config: os-linux.h~
-diff -ur rdist-6.1.5.orig/doc/Makefile.real rdist-6.1.5/doc/Makefile.real
---- rdist-6.1.5.orig/doc/Makefile.real Mon Nov 9 21:40:06 1998
-+++ rdist-6.1.5/doc/Makefile.real Tue Apr 3 10:56:28 2001
-@@ -16,7 +16,7 @@
-
- doc:
-
--install:
-+install: install.man
-
- install.man: rdist.man rdistd.man
- ${INSTALL} ${INSTALL_ARGS} rdist.man ${CLIENT_DEST}
-Only in rdist-6.1.5/doc: Makefile.real~
-diff -ur rdist-6.1.5.orig/doc/rdist.man rdist-6.1.5/doc/rdist.man
---- rdist-6.1.5.orig/doc/rdist.man Mon Nov 9 21:38:53 1998
-+++ rdist-6.1.5/doc/rdist.man Tue Apr 3 10:56:28 2001
-@@ -171,7 +171,7 @@
- .I rdist
- was compiled with the location of the old rdist
- (usually either
--.I /usr/ucb/oldrdist
-+.I /usr/bin/oldrdist
- or
- .I /usr/old/rdist)
- and that program is available at run time.
-@@ -511,7 +511,7 @@
- may be a colon seperated list of possible pathnames.
- In this case, the first component of the path to exist is used.
- i.e.
--.B "/usr/ucb/rsh:/usr/bin/remsh",
-+.B "/usr/bin/rsh:/usr/bin/remsh",
- .B /usr/bsd/rsh.
- .TP
- .B "\-t \fItimeout\fR"
-Only in rdist-6.1.5/doc: rdist.man~
-diff -ur rdist-6.1.5.orig/src/Makefile.real rdist-6.1.5/src/Makefile.real
---- rdist-6.1.5.orig/src/Makefile.real Mon Nov 9 20:03:46 1998
-+++ rdist-6.1.5/src/Makefile.real Tue Apr 3 10:56:28 2001
-@@ -52,9 +52,9 @@
- $(COMMONOBJS) $(MISSINGOBJS)
-
- install:
-- $(INSTALL) ${IN_ARGS} -o $(BIN_OWNER) -m ${RDIST_MODE} \
-+ $(INSTALL) ${IN_ARGS} -s -o $(BIN_OWNER) -m ${RDIST_MODE} \
- $(CLIENT_BIN) $(BIN_DIR)/$(CLIENT)
-- $(INSTALL) ${IN_ARGS} -o ${BIN_OWNER} -m ${RDISTD_MODE} \
-+ $(INSTALL) ${IN_ARGS} -s -o ${BIN_OWNER} -m ${RDISTD_MODE} \
- $(SERVER_BIN) $(BIN_DIR)/$(SERVER)
-
- install.man:
-Only in rdist-6.1.5/src: Makefile.real~
diff --git a/source/n/rdist/rdist-eu-license.txt b/source/n/rdist/rdist-eu-license.txt
new file mode 100644
index 000000000..7ae1591b4
--- /dev/null
+++ b/source/n/rdist/rdist-eu-license.txt
@@ -0,0 +1,118 @@
+ MagniComp - End User License Agreement
+
+ www.MagniComp.com
+
+ RDist Version 6.1
+
+ Version of This Document: 19990724
+
+GRANT.
+
+MagniComp grants you a non-exclusive license to use RDist version 6.1 and
+all subsequent versions called 6.1.X software (the "Software") free of
+charge.
+
+This license does not entitle you to hard-copy documentation, support or
+telephone assistance. MagniComp reserves the right at any time to alter
+prices, features, specifications, capabilities, functions, licensing terms,
+general availability of the Software.
+
+SCOPE OF GRANT.
+
+You may:
+
+ * use the Software in any way you wish on any computer regardless of
+ ownership of said computer;
+ * redistribute the Software in any form, including source and binary, to
+ any party with or without charging a fee;
+ * copy the Software for any purpose.
+
+You may not:
+
+ * remove or alter this notice;
+ * remove or alter any proprietary notices or labels on the Software.
+
+REQUIREMENTS.
+
+ * All advertising materials mentioning features or use of this software
+ must display the following acknowledgement:
+
+ This product includes software developed by MagniComp
+ (www.MagniComp.com) and its contributors.
+
+ * Redistributions in binary form must reproduce this copyright notice,
+ this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither name of MagniComp nor the names of its contributors may be used
+ to endorse or promote products derived from this software without
+ specific prior written permission.
+
+TITLE.
+
+Title, ownership rights, and intellectual property rights in the Software
+shall remain in MagniComp and/or its suppliers. The Software is protected by
+copyright and other intellectual property laws and by international
+treaties. Title and related rights in the content accessed through the
+Software is the property of the applicable content owner and may be
+protected by applicable law. This license gives you no rights to such
+content.
+
+TERMINATION.
+
+The license will terminate automatically if you fail to comply with the
+limitations described herein. Upon termination of this license, you agree to
+destroy all copies of the Software.
+
+DISCLAIMER OF WARRANTY.
+
+The Software is provided on an "AS IS" basis, without warranty of any kind,
+including without limitation the warranties of merchantability, fitness for
+a particular purpose and non-infringement. The entire risk as to the quality
+and performance of the Software is borne by you. Should the Software prove
+defective, you and not MagniComp or its suppliers assume the entire cost of
+any service and repair. In addition, the security mechanisms implemented by
+MagniComp software have inherent limitations, and you must determine that
+the Software sufficiently meets your requirements. This disclaimer of
+warranty constitutes an essential part of the agreement. SOME JURISDICTIONS
+DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT
+APPLY TO YOU AND YOU MAY HAVE OTHER LEGAL RIGHTS THAT VARY BY JURISDICTION.
+
+LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, OR
+OTHERWISE, SHALL MAGNICOMP OR ITS SUPPLIERS OR RESELLERS BE LIABLE TO YOU OR
+ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL
+OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL MAGNICOMP BE LIABLE FOR
+ANY DAMAGES, EVEN IF MAGNICOMP SHALL HAVE BEEN INFORMED OF THE POSSIBILITY
+OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF
+LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE
+EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. FURTHERMORE, SOME
+JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO
+YOU.
+
+HIGH RISK ACTIVITIES.
+
+The Software is not fault-tolerant and is not designed, manufactured or
+intended for use or resale as on-line control equipment in hazardous
+environments requiring fail-safe performance, such as in the operation of
+nuclear facilities, aircraft navigation or communication systems, air
+traffic control, direct life support machines, or weapons systems, in which
+the failure of the Software could lead directly to death, personal injury,
+or severe physical or environmental damage ("High Risk Activities").
+MagniComp and its suppliers specifically disclaim any express or implied
+warranty of fitness for High Risk Activities.
+
+MISCELLANEOUS.
+
+This Agreement represents the complete agreement concerning this license and
+may amended only by a writing executed by both parties. If any provision of
+this Agreement is held to be unenforceable, such provision shall be reformed
+only to the extent necessary to make it enforceable. This Agreement shall be
+governed by California law (except for conflict of law provisions). The
+application the United Nations Convention of Contracts for the International
+Sale of Goods is expressly excluded.
+
+ END
diff --git a/source/n/rdist/rdist.SlackBuild b/source/n/rdist/rdist.SlackBuild
index e2dd87cdd..66f48c9b0 100755
--- a/source/n/rdist/rdist.SlackBuild
+++ b/source/n/rdist/rdist.SlackBuild
@@ -1,6 +1,5 @@
#!/bin/sh
-
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,59 +19,108 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=6.1.5
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+
+PKGNAM=rdist
+VERSION=${VERSION:-6.1.5}
+BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j7 "}
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-rdist
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$TMP" = "" ]; then
+ TMP=/tmp
+fi
+PKG=$TMP/package-${PKGNAM}
rm -rf $PKG
-mkdir -p $TMP $PKG
+mkdir -p $PKG
-# Explode the package framework:
-cd $PKG
-explodepkg $CWD/_rdist.tar.gz
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2"
+fi
cd $TMP
-rm -rf rdist-$VERSION
-tar xvf $CWD/rdist-$VERSION.tar.gz || exit 1
-cd rdist-$VERSION || exit 1
+
+rm -rf $PKGNAM-$VERSION
+tar xf $CWD/$PKGNAM-$VERSION.tar.gz || exit 1
+
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-zcat $CWD/rdist-$VERSION.diff.gz | patch -p1 --backup
-# Modern tools require patching:
-zcat $CWD/rdist-6.1.5-bison.diff.gz | patch -p1 --verbose || exit 1
-zcat $CWD/rdist-6.1.5-cleanup.diff.gz | patch -p1 --verbose || exit 1
-zcat $CWD/rdist-6.1.5-varargs.diff.gz | patch -p1 --verbose || exit 1
+find . -perm 666 -exec chmod 644 {} \;
+find . -perm 664 -exec chmod 644 {} \;
+find . -perm 600 -exec chmod 644 {} \;
+find . -perm 444 -exec chmod 644 {} \;
+find . -perm 400 -exec chmod 644 {} \;
+find . -perm 440 -exec chmod 644 {} \;
+find . -perm 777 -exec chmod 755 {} \;
+find . -perm 775 -exec chmod 755 {} \;
+find . -perm 511 -exec chmod 755 {} \;
+find . -perm 711 -exec chmod 755 {} \;
+find . -perm 555 -exec chmod 755 {} \;
+# Patch:
+for diff in $CWD/*.diff.gz ; do
+ zcat $diff | patch -p1 --verbose || exit 1
+done
+
+# Build:
make $NUMJOBS || make || exit 1
-cd src
-strip rdist rdistd
-cat rdist > $PKG/usr/bin/rdist
-cat rdistd > $PKG/usr/bin/rdistd
+# Install:
+mkdir -p $PKG/usr/bin
+cp -a src/{rdist,rdistd} $PKG/usr/bin
+
+mkdir -p $PKG/usr/man/man1
+cat doc/rdist.man | gzip -9c > $PKG/usr/man/man1/rdist.1.gz
+cat doc/rdistd.man | gzip -9c > $PKG/usr/man/man1/rdistd.1.gz
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ $CWD/rdist-eu-license.txt Copyright README \
+ $PKG/usr/doc/$PKGNAM-$VERSION
-cd ../doc
-cat rdist.man | gzip -9c > $PKG/usr/man/man1/rdist.1.gz
-cat rdistd.man | gzip -9c > $PKG/usr/man/man1/rdistd.1.gz
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
-cd ..
-mkdir -p $PKG/usr/doc/rdist-$VERSION
-cp -a README $PKG/usr/doc/rdist-$VERSION
-chmod 644 $PKG/usr/doc/rdist-$VERSION/*
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
-# Build the package:
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/rdist-$VERSION-$ARCH-$BUILD.txz
+cd $TMP/package-${PKGNAM}
+makepkg -l y -c n ../${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/n/rsync/rsync.SlackBuild b/source/n/rsync/rsync.SlackBuild
index e4def4e3c..dadf3cd56 100755
--- a/source/n/rsync/rsync.SlackBuild
+++ b/source/n/rsync/rsync.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,16 +21,27 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=3.0.6
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo rsync-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
diff --git a/source/n/rt2860-firmware/rt2860-firmware.SlackBuild b/source/n/rt2860-firmware/rt2860-firmware.SlackBuild
new file mode 100755
index 000000000..280b276ff
--- /dev/null
+++ b/source/n/rt2860-firmware/rt2860-firmware.SlackBuild
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+CWD=$(pwd)
+
+PKGNAM=rt2860-firmware
+VERSION=${VERSION:-26}
+ARCH=${ARCH:-fw}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf RT2860_Firmware_V${VERSION}
+unzip $CWD/RT2860_Firmware_V${VERSION}.zip || exit 1
+cd RT2860_Firmware_V${VERSION}
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Install:
+mkdir -p $PKG/lib/firmware
+mv LICEN* $PKG/lib/firmware/LICENSE.ralink-firmware-RT2860_Firmware_V${VERSION}.txt
+mv * $PKG/lib/firmware
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/n/rt2860-firmware/slack-desc b/source/n/rt2860-firmware/slack-desc
new file mode 100644
index 000000000..6cdecaecf
--- /dev/null
+++ b/source/n/rt2860-firmware/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+rt2860-firmware: rt2860-firmware (RT28XX/RT30XX PCI/mPCI/PCIe/CardBus firmware)
+rt2860-firmware:
+rt2860-firmware: This is firmware for PCI, mPCI, PCIe, and Cardbus wireless cards
+rt2860-firmware: using the Ralink RT2760, RT2790, RT2860, RT2890, RT3060, RT3062,
+rt2860-firmware: RT3562, RT2860, RT2760, RT2890, RT2790, and RT3090 wireless chipsets.
+rt2860-firmware:
+rt2860-firmware:
+rt2860-firmware:
+rt2860-firmware:
+rt2860-firmware:
+rt2860-firmware:
diff --git a/source/n/rt2870-firmware/rt2870-firmware.SlackBuild b/source/n/rt2870-firmware/rt2870-firmware.SlackBuild
new file mode 100755
index 000000000..28542412e
--- /dev/null
+++ b/source/n/rt2870-firmware/rt2870-firmware.SlackBuild
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+CWD=$(pwd)
+
+PKGNAM=rt2870-firmware
+VERSION=${VERSION:-22}
+ARCH=${ARCH:-fw}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf RT2870_Firmware_V${VERSION}
+unzip $CWD/RT2870_Firmware_V${VERSION}.zip || exit 1
+cd RT2870_Firmware_V${VERSION}
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 700 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Install:
+mkdir -p $PKG/lib/firmware
+mv LICEN* $PKG/lib/firmware/LICENSE.ralink-firmware-RT2870_Firmware_V${VERSION}.txt
+mv * $PKG/lib/firmware
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/n/rt2870-firmware/slack-desc b/source/n/rt2870-firmware/slack-desc
new file mode 100644
index 000000000..1b01f4947
--- /dev/null
+++ b/source/n/rt2870-firmware/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+rt2870-firmware: rt2870-firmware (RT28XX/RT30XX USB firmware)
+rt2870-firmware:
+rt2870-firmware: This is firmware for USB wireless devices using Ralink RT2870, RT2770,
+rt2870-firmware: RT3572, and RT3070 wireless chipsets.
+rt2870-firmware:
+rt2870-firmware:
+rt2870-firmware:
+rt2870-firmware:
+rt2870-firmware:
+rt2870-firmware:
+rt2870-firmware:
diff --git a/source/n/samba/samba.SlackBuild b/source/n/samba/samba.SlackBuild
index e62aab09b..cf3918a19 100755
--- a/source/n/samba/samba.SlackBuild
+++ b/source/n/samba/samba.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-3.2.13}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo samba-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-samba
@@ -36,6 +45,13 @@ rm -rf samba-$VERSION
tar xvf $CWD/samba-$VERSION.tar.?z* || exit 1
cd samba-$VERSION || exit 1
+if [ ! -d source3/lib/cmdline ]; then
+ ( cd source3/lib
+ mkdir cmdline
+ cd cmdline
+ ln -sf ../../../source3/include/popt_common.h . )
+fi
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -43,7 +59,7 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-cd source
+cd source3
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -58,11 +74,13 @@ fi
# Some of these options could be auto-detected, but declaring them
# here doesn't hurt and helps document what features we're trying to
# build in.
+#
+# LDFLAGS are needed to avoid problems with missing symbols.
+LDFLAGS="-Wl,--no-as-needed" \
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
- --with-libdir=/usr/lib${LIBDIRSUFFIX} \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--mandir=/usr/man \
@@ -80,6 +98,7 @@ CFLAGS="$SLKCFLAGS" \
--with-acl-support=yes \
--with-automount \
--with-cifsmount \
+ --with-cifsumount \
--with-quotas \
--with-syslog \
--with-utmp \
@@ -107,8 +126,8 @@ make install-everything DESTDIR=$PKG || exit 1
# Install libnss_win* libraries:
mkdir -p $PKG/lib${LIBDIRSUFFIX}
-cp -a nsswitch/libnss_winbind.so $PKG/lib${LIBDIRSUFFIX}/libnss_winbind.so.2
-cp -a nsswitch/libnss_wins.so $PKG/lib${LIBDIRSUFFIX}/libnss_wins.so.2
+cp -a ../nsswitch/libnss_winbind.so $PKG/lib${LIBDIRSUFFIX}/libnss_winbind.so.2
+cp -a ../nsswitch/libnss_wins.so $PKG/lib${LIBDIRSUFFIX}/libnss_wins.so.2
( cd $PKG/lib${LIBDIRSUFFIX}
ln -sf libnss_winbind.so.2 libnss_winbind.so
ln -sf libnss_wins.so.2 libnss_wins.so
@@ -159,6 +178,10 @@ gzip -9 $PKG/usr/man/man?/*.?
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+# PAM related stuff we don't use:
+rm -r $PKG/usr/share/locale
+rm -f $PKG/usr/man/man8/pam*
+
cd ..
cp -a \
COPYING* MAINTAINERS Manifest PFIF.txt README* \
@@ -170,7 +193,6 @@ rm -rf $PKG/usr/doc/samba-$VERSION/docs/htmldocs \
mkdir -p $PKG/usr/doc/samba-$VERSION/docs
( cd $PKG/usr/doc/samba-$VERSION/docs
ln -sf /usr/share/swat/help htmldocs
- ln -sf /usr/share/swat/using_samba using_samba
)
# I'm sorry, but when all this info is included in HTML, adding 7MB worth of
# PDF files just to have extra artwork is more fluff than I'll agree to.
diff --git a/source/n/samba/smb.conf.default b/source/n/samba/smb.conf.default
index 68e62f930..44ba134f6 100644
--- a/source/n/samba/smb.conf.default
+++ b/source/n/samba/smb.conf.default
@@ -204,7 +204,7 @@
; comment = Public Stuff
; path = /home/samba
; public = yes
-; writable = yes
+; writable = no
; printable = no
; write list = @staff
diff --git a/source/n/samba/smb.conf.default.orig b/source/n/samba/smb.conf.default.orig
index 971ca19c8..b4e3d63e0 100644
--- a/source/n/samba/smb.conf.default.orig
+++ b/source/n/samba/smb.conf.default.orig
@@ -204,7 +204,7 @@
; comment = Public Stuff
; path = /home/samba
; public = yes
-; writable = yes
+; writable = no
; printable = no
; write list = @staff
diff --git a/source/n/samba/smb.conf.diff b/source/n/samba/smb.conf.diff
index 553440c54..3573a8f0b 100644
--- a/source/n/samba/smb.conf.diff
+++ b/source/n/samba/smb.conf.diff
@@ -1,5 +1,5 @@
---- smb.conf.default.orig 2008-05-28 07:41:11.000000000 -0500
-+++ smb.conf.default 2008-05-28 13:53:01.000000000 -0500
+--- smb.conf.default.orig 2009-09-30 07:17:40.000000000 -0500
++++ smb.conf.default 2009-10-03 15:59:26.000000000 -0500
@@ -22,7 +22,7 @@
#======================= Global Settings =====================================
[global]
diff --git a/source/n/sendmail/SlackBuild-sendmail b/source/n/sendmail/SlackBuild-sendmail
index 54dc0c5c2..aec918ca7 100755
--- a/source/n/sendmail/SlackBuild-sendmail
+++ b/source/n/sendmail/SlackBuild-sendmail
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,9 +20,18 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=8.14.3
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=8.14.4
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -37,6 +46,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
diff --git a/source/n/sendmail/SlackBuild-sendmail-cf b/source/n/sendmail/SlackBuild-sendmail-cf
index 3d7fd4524..d54370b98 100755
--- a/source/n/sendmail/SlackBuild-sendmail-cf
+++ b/source/n/sendmail/SlackBuild-sendmail-cf
@@ -20,9 +20,9 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=8.14.3
+VERSION=8.14.4
ARCH=noarch
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
CWD=$(pwd)
TMP=${TMP:-/tmp}
diff --git a/source/n/sendmail/site.config.m4 b/source/n/sendmail/site.config.m4
index 1f6c7f87c..09b1d72ff 100644
--- a/source/n/sendmail/site.config.m4
+++ b/source/n/sendmail/site.config.m4
@@ -1,3 +1,4 @@
+APPENDDEF(`confENVDEF', `-DNETINET6')
APPENDDEF(`confMAPDEF', `-DNEWDB -DSTARTTLS -DSASL=2 -DTCPWRAPPERS -DNIS -DMAP_REGEX -DSOCKETMAP')
APPENDDEF(`confLIBS', `-lnsl -lssl -lcrypto -lsasl2 -lwrap -lm -ldb -lresolv')
APPENDDEF(`conf_libmilter_ENVDEF', `-DMILTER')
diff --git a/source/n/slrn/doinst.sh b/source/n/slrn/doinst.sh
index ad59028cd..23baae413 100644
--- a/source/n/slrn/doinst.sh
+++ b/source/n/slrn/doinst.sh
@@ -12,4 +12,5 @@ config() {
}
config etc/slrn.rc.new
+config var/spool/slrnpull/slrnpull.conf.new
diff --git a/source/n/slrn/slrn.SlackBuild b/source/n/slrn/slrn.SlackBuild
index d2a50362e..d983724d3 100755
--- a/source/n/slrn/slrn.SlackBuild
+++ b/source/n/slrn/slrn.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,8 +22,17 @@
VERSION=0.9.9p1
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -65,7 +77,7 @@ CFLAGS="$SLKCFLAGS" \
--docdir=/usr/doc/slrn-$VERSION \
--with-docdir=/usr/doc/slrn-$VERSION \
--with-ssl \
- --with-slrnpull \
+ --with-slrnpull=/var/spool/slrnpull \
--enable-setgid-code \
--with-server-file=/etc/nntpserver \
--with-slanginc=/usr/include/slang \
@@ -92,7 +104,7 @@ rm -f $PKG/usr/doc/slrn-$VERSION/changes.txt
chown root.news $PKG/usr/bin/slrnpull
chmod 2750 $PKG/usr/bin/slrnpull
mkdir -p $PKG/var/spool/slrnpull/{data,news,out.going/rejects}
-cp -a $PKG/usr/doc/slrn-$VERSION/slrnpull/slrnpull.conf $PKG/var/spool/slrnpull
+cp -a $PKG/usr/doc/slrn-$VERSION/slrnpull/slrnpull.conf $PKG/var/spool/slrnpull/slrnpull.conf.new
chown -R news.news $PKG/var/spool/slrnpull
chmod -R 3777 $PKG/var/spool/slrnpull/out.going
diff --git a/source/n/snownews/snownews.SlackBuild b/source/n/snownews/snownews.SlackBuild
index a8ac91857..724cab547 100755
--- a/source/n/snownews/snownews.SlackBuild
+++ b/source/n/snownews/snownews.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,9 +20,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.5.11
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=snownews
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -35,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -86,9 +99,17 @@ fi
mkdir -p $PKG/usr/doc/snownews-$VERSION
cp -a \
- AUTHOR COPYING* CREDITS Changelog INSTALL README* \
+ AUTHOR COPYING* CREDITS INSTALL README* \
$PKG/usr/doc/snownews-$VERSION
+# If there's a Changelog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r Changelog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat Changelog | head -n 1000 > $DOCSDIR/Changelog
+ touch -r Changelog $DOCSDIR/Changelog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/n/stunnel/stunnel.SlackBuild b/source/n/stunnel/stunnel.SlackBuild
index 187dfa526..f988a3c4e 100755
--- a/source/n/stunnel/stunnel.SlackBuild
+++ b/source/n/stunnel/stunnel.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=4.17
-ARCH=${ARCH:-x86_64}
+PKGNAM=stunnel
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -36,6 +46,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -47,7 +60,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf stunnel-$VERSION
-tar xvf $CWD/stunnel-$VERSION.tar.gz || exit 1
+tar xvf $CWD/stunnel-$VERSION.tar.?z || exit 1
cd stunnel-$VERSION || exit 1
chown -R root:root .
find . \
@@ -58,18 +71,27 @@ find . \
CFLAGS="$SLKCFLAGS" \
./configure \
- --prefix= \
+ --prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--exec-prefix= \
--sysconfdir=/etc \
--datadir=/usr/share \
--mandir=/usr/man \
--sbindir=/usr/sbin \
+ --bindir=/usr/bin \
--localstatedir=/var \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
+# This used to be installed in /usr/sbin, so it would probably be nice to
+# link from there:
+mkdir -p $PKG/usr/sbin
+( cd $PKG/usr/sbin
+ ln -sf ../bin/stunnel .
+ ln -sf ../bin/stunnel3 .
+)
+
mkdir -p $PKG/var/run/stunnel
# This will produce a useless key.
make -i install DESTDIR=$PKG
@@ -100,6 +122,14 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
chmod 0755 $PKG/var/lib
chown root:root $PKG/var/lib
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
diff --git a/source/n/tcpdump/libpcap.20-fix-any-intf.diff b/source/n/tcpdump/libpcap.20-fix-any-intf.diff
new file mode 100644
index 000000000..84afa6822
--- /dev/null
+++ b/source/n/tcpdump/libpcap.20-fix-any-intf.diff
@@ -0,0 +1,159 @@
+commit 8fa17a5a554aaeb85d3ec4118b45a31f1efd6808
+Author: guy <guy>
+Date: Wed Nov 19 08:20:39 2008 +0000
+
+ Fix the handling of the "any" device, including making it reject
+ attempts to open it in monitor mode.
+---
+ pcap-linux.c | 68 ++++++++++++++++++++++++++++++++++++-----------------------
+ 1 file changed, 42 insertions(+), 26 deletions(-)
+
+--- a/pcap-linux.c
++++ b/pcap-linux.c
+@@ -297,6 +297,12 @@
+ {
+ pcap_t *handle;
+
++ /*
++ * A null device name is equivalent to the "any" device.
++ */
++ if (device == NULL)
++ device = "any";
++
+ #ifdef HAVE_DAG_API
+ if (strstr(device, "dag")) {
+ return dag_create(device, ebuf);
+@@ -338,10 +344,9 @@
+ struct iwreq ireq;
+ #endif
+
+- if (p->opt.source == NULL) {
++ if (strcmp(p->opt.source, "any") == 0) {
+ /*
+- * This is equivalent to the "any" device, and we don't
+- * support monitor mode on it.
++ * Monitor mode makes no sense on the "any" device.
+ */
+ return 0;
+ }
+@@ -518,12 +523,11 @@
+ handle->stats_op = pcap_stats_linux;
+
+ /*
+- * NULL and "any" are special devices which give us the hint to
+- * monitor all devices.
++ * The "any" device is a special device which causes us not
++ * to bind to a particular device and thus to look at all
++ * devices.
+ */
+- if (!device || strcmp(device, "any") == 0) {
+- device = NULL;
+- handle->md.device = strdup("any");
++ if (strcmp(device, "any") == 0) {
+ if (handle->opt.promisc) {
+ handle->opt.promisc = 0;
+ /* Just a warning. */
+@@ -531,10 +535,9 @@
+ "Promiscuous mode not supported on the \"any\" device");
+ status = PCAP_WARNING_PROMISC_NOTSUP;
+ }
++ }
+
+- } else
+- handle->md.device = strdup(device);
+-
++ handle->md.device = strdup(device);
+ if (handle->md.device == NULL) {
+ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "strdup: %s",
+ pcap_strerror(errno) );
+@@ -1657,19 +1660,21 @@
+ activate_new(pcap_t *handle)
+ {
+ #ifdef HAVE_PF_PACKET_SOCKETS
++ const char *device = handle->opt.source;
++ int is_any_device = (strcmp(device, "any") == 0);
+ int sock_fd = -1, arptype, val;
+ int err = 0;
+ struct packet_mreq mr;
+- const char* device = handle->opt.source;
+
+ /*
+- * Open a socket with protocol family packet. If a device is
+- * given we try to open it in raw mode otherwise we use
+- * the cooked interface.
+- */
+- sock_fd = device ?
+- socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))
+- : socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL));
++ * Open a socket with protocol family packet. If the
++ * "any" device was specified, we open a SOCK_DGRAM
++ * socket for the cooked interface, otherwise we first
++ * try a SOCK_RAW socket for the raw interface.
++ */
++ sock_fd = is_any_device ?
++ socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL)) :
++ socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
+
+ if (sock_fd == -1) {
+ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "socket: %s",
+@@ -1704,7 +1709,7 @@
+ * to cooked mode if we have an unknown interface type
+ * or a type we know doesn't work well in raw mode.
+ */
+- if (device) {
++ if (!is_any_device) {
+ /* Assume for now we don't need cooked mode. */
+ handle->md.cooked = 0;
+
+@@ -1819,15 +1824,23 @@
+ }
+ } else {
+ /*
+- * This is cooked mode.
++ * The "any" device.
++ */
++ if (handle->opt.rfmon) {
++ /*
++ * It doesn't support monitor mode.
++ */
++ return PCAP_ERROR_RFMON_NOTSUP;
++ }
++
++ /*
++ * It uses cooked mode.
+ */
+ handle->md.cooked = 1;
+ handle->linktype = DLT_LINUX_SLL;
+
+ /*
+ * We're not bound to a device.
+- * XXX - true? Or true only if we're using
+- * the "any" device?
+ * For now, we're using this as an indication
+ * that we can't transmit; stop doing that only
+ * if we figure out how to transmit in cooked
+@@ -1852,10 +1865,13 @@
+
+ /*
+ * Hmm, how can we set promiscuous mode on all interfaces?
+- * I am not sure if that is possible at all.
++ * I am not sure if that is possible at all. For now, we
++ * silently ignore attempts to turn promiscuous mode on
++ * for the "any" device (so you don't have to explicitly
++ * disable it in programs such as tcpdump).
+ */
+
+- if (device && handle->opt.promisc) {
++ if (!is_any_device && handle->opt.promisc) {
+ memset(&mr, 0, sizeof(mr));
+ mr.mr_ifindex = handle->md.ifindex;
+ mr.mr_type = PACKET_MR_PROMISC;
+@@ -3118,7 +3134,7 @@
+
+ /* Bind to the given device */
+
+- if (!device) {
++ if (strcmp(device, "any") == 0) {
+ strncpy(handle->errbuf, "pcap_activate: The \"any\" device isn't supported on 2.0[.x]-kernel systems",
+ PCAP_ERRBUF_SIZE);
+ return PCAP_ERROR;
diff --git a/source/n/tcpdump/tcpdump.SlackBuild b/source/n/tcpdump/tcpdump.SlackBuild
index ec1d39ee9..15715c567 100755
--- a/source/n/tcpdump/tcpdump.SlackBuild
+++ b/source/n/tcpdump/tcpdump.SlackBuild
@@ -22,8 +22,17 @@
VERSION=4.0.0
LIBVER=1.0.0
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -47,6 +56,9 @@ cd $TMP
rm -rf libpcap-$LIBVER
tar xvf $CWD/libpcap-$LIBVER.tar.gz || exit 1
cd libpcap-$LIBVER || exit 1
+
+zcat $CWD/libpcap.20-fix-any-intf.diff.gz | patch -p1 --verbose || exit 1
+
find . -type d -name CVS -depth -exec rm -rf {} \;
chown -R root:root .
find . \
@@ -63,8 +75,16 @@ CFLAGS="$(getconf LFS_CFLAGS)" \
--enable-ipv6 \
--build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
+make shared $NUMJOBS || make || exit 1
mkdir -p $PKG/usr/bin # otherwise it errors out on install
make install DESTDIR=$PKG || exit 1
+strip --strip-debug libpcap.so.1.?.?
+cp libpcap.so.?.?.? $PKG/usr/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ ln -sf libpcap.so.1.?.? libpcap.so.1
+ ln -sf libpcap.so.1 libpcap.so.0
+ ln -sf libpcap.so.1 libpcap.so
+)
mkdir -p $PKG/usr/doc/libpcap-$LIBVER
cp -a \
CHANGES CREDITS FILES INSTALL.txt LICENSE README README.linux TODO VERSION \
diff --git a/source/n/tftp-hpa/tftp-hpa-0.48.tar.bz2.sign b/source/n/tftp-hpa/tftp-hpa-0.48.tar.bz2.sign
deleted file mode 100644
index 0bc250608..000000000
--- a/source/n/tftp-hpa/tftp-hpa-0.48.tar.bz2.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.6 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBFwHdCyGugalF9Dw4RArMGAJsGmXTId7KWtaaPU59qtvxfVqR2hACfV4pp
-QP4kzEDqgKlRw3+FYQsQMvY=
-=jnKl
------END PGP SIGNATURE-----
diff --git a/source/n/tftp-hpa/tftp-hpa-0.49.tar.bz2.sign b/source/n/tftp-hpa/tftp-hpa-0.49.tar.bz2.sign
new file mode 100644
index 000000000..de4c7fbb4
--- /dev/null
+++ b/source/n/tftp-hpa/tftp-hpa-0.49.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBI/QH7yGugalF9Dw4RAjZZAJ0Ro/KGEOFgQt0Ewk6BRuYQpnv/lQCfUIIJ
+lyM+y31FV4/xhLoNKcr8JtA=
+=X8qg
+-----END PGP SIGNATURE-----
diff --git a/source/n/tftp-hpa/tftp-hpa.SlackBuild b/source/n/tftp-hpa/tftp-hpa.SlackBuild
index c73c882f1..6fcc104ff 100755
--- a/source/n/tftp-hpa/tftp-hpa.SlackBuild
+++ b/source/n/tftp-hpa/tftp-hpa.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=0.48
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+PKGNAM=tftp-hpa
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-tftp-hpa
diff --git a/source/n/traceroute/traceroute.SlackBuild b/source/n/traceroute/traceroute.SlackBuild
index b687a436e..069ce1f18 100755
--- a/source/n/traceroute/traceroute.SlackBuild
+++ b/source/n/traceroute/traceroute.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,20 +21,29 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.4a12
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=traceroute
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX=64
+else
+ LIBDIRSUFFIX=
fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-traceroute
@@ -53,25 +62,26 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-zcat $CWD/traceroute_$VERSION-5.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
-zcat $CWD/traceroute.no.domain.strip.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+make $NUMJOBS VPATH=/usr/lib${LIBDIRSUFFIX} || make VPATH=/usr/lib${LIBDIRSUFFIX} || exit 1
-CFLAGS="$SLKCFLAGS -Ilinux-include" ./configure --prefix=/usr
-make $NUMJOBS || make || exit 1
-
-strip traceroute
mkdir -p $PKG/usr/bin
-cat traceroute > $PKG/usr/bin/traceroute
-chmod 4711 $PKG/usr/bin/traceroute
+cat traceroute/traceroute > $PKG/usr/bin/traceroute
+chmod 755 $PKG/usr/bin/traceroute
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
mkdir -p $PKG/usr/man/man8
-gzip -9c traceroute.8 > $PKG/usr/man/man8/traceroute.8.gz
+cat traceroute/traceroute.8 | gzip -9c > $PKG/usr/man/man8/traceroute.8.gz
mkdir -p $PKG/usr/doc/traceroute-$VERSION
cp -a \
- CHANGES FILES INSTALL README VERSION \
+ COPYING* CREDITS ChangeLog README* TODO VERSION \
+ wrappers \
$PKG/usr/doc/traceroute-$VERSION
-chmod 644 $PKG/usr/doc/traceroute-$VERSION/*
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/n/traceroute/traceroute.no.domain.strip.diff b/source/n/traceroute/traceroute.no.domain.strip.diff
deleted file mode 100644
index a9af38933..000000000
--- a/source/n/traceroute/traceroute.no.domain.strip.diff
+++ /dev/null
@@ -1,30 +0,0 @@
---- traceroute-1.4a12.orig/traceroute.c Tue Feb 4 11:01:05 2003
-+++ traceroute-1.4a12/traceroute.c Tue Feb 4 11:09:17 2003
-@@ -1297,8 +1297,10 @@
- register char *cp;
- register struct hostent *hp;
- static int first = 1;
-- static char domain[MAXHOSTNAMELEN + 1], line[MAXHOSTNAMELEN + 1];
-+/* static char domain[MAXHOSTNAMELEN + 1]; */
-+ static char line[MAXHOSTNAMELEN + 1];
-
-+/*
- if (first && !nflag) {
- first = 0;
- if (gethostname(domain, sizeof(domain) - 1) < 0)
-@@ -1319,12 +1321,15 @@
- }
- }
- }
-+*/
- if (!nflag && in.s_addr != INADDR_ANY) {
- hp = gethostbyaddr((char *)&in, sizeof(in), AF_INET);
- if (hp != NULL) {
-+/*
- if ((cp = strchr(hp->h_name, '.')) != NULL &&
- strcmp(cp + 1, domain) == 0)
- *cp = '\0';
-+*/
- (void)strncpy(line, hp->h_name, sizeof(line) - 1);
- line[sizeof(line) - 1] = '\0';
- return (line);
diff --git a/source/n/traceroute/traceroute_1.4a12-5.diff b/source/n/traceroute/traceroute_1.4a12-5.diff
deleted file mode 100644
index 8cf3d1fe1..000000000
--- a/source/n/traceroute/traceroute_1.4a12-5.diff
+++ /dev/null
@@ -1,1152 +0,0 @@
---- traceroute-1.4a12.orig/aclocal.m4
-+++ traceroute-1.4a12/aclocal.m4
-@@ -47,7 +47,7 @@
- AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
- AC_BEFORE([$0], [AC_LBL_DEVEL])
- AC_ARG_WITH(gcc, [ --without-gcc don't use gcc])
-- $1="-O"
-+ $1="-g -O"
- $2=""
- if test "${srcdir}" != "." ; then
- $2="-I\$\(srcdir\)"
-@@ -677,12 +677,11 @@
- AC_TRY_LINK(dnl
- ifelse([$2], [main], , dnl Avoid conflicting decl of main.
- [/* Override any gcc2 internal prototype to avoid an error. */
--]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
-+#ifdef __cplusplus
- extern "C"
- #endif
--])dnl
--[/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
- char $2();
- ]),
- [$2()],
---- traceroute-1.4a12.orig/configure.in
-+++ traceroute-1.4a12/configure.in
-@@ -22,7 +22,7 @@
- net/if_dl.h inet/mib2.h)
-
- AC_REPLACE_FUNCS(strerror usleep)
--AC_CHECK_FUNCS(setlinebuf)
-+AC_CHECK_FUNCS(setlinebuf snprintf)
- if test $ac_cv_func_usleep = "no" ; then
- AC_CHECK_FUNCS(nanosleep)
- fi
-@@ -44,8 +44,9 @@
- ;;
-
- linux*)
-- V_INCLS="$V_INCLS -Ilinux-include"
-+ V_INCLS="$V_INCLS -Ilinux-include -DUSE_KERNEL_ROUTING_TABLE"
- AC_DEFINE(BYTESWAP_IP_HDR)
-+ AC_DEFINE(HAVE_RAW_OPTIONS)
- ;;
-
- osf3*)
---- traceroute-1.4a12.orig/findsaddr-generic.c
-+++ traceroute-1.4a12/findsaddr-generic.c
-@@ -82,7 +82,11 @@
- static char errbuf[132];
-
- /* Get the interface address list */
-+#if HAVE_SNPRINTF
-+ if ((n = ifaddrlist(&al, errbuf, sizeof(errbuf))) < 0)
-+#else
- if ((n = ifaddrlist(&al, errbuf)) < 0)
-+#endif
- return (errbuf);
-
- if (n == 0)
---- traceroute-1.4a12.orig/findsaddr-linux.c
-+++ traceroute-1.4a12/findsaddr-linux.c
-@@ -90,7 +90,11 @@
- static char errbuf[132];
-
- if ((f = fopen(route, "r")) == NULL) {
-+#if HAVE_SNPRINTF
-+ snprintf(errbuf, sizeof(errbuf), "open %s: %.128s", route, strerror(errno));
-+#else
- sprintf(errbuf, "open %s: %.128s", route, strerror(errno));
-+#endif
- return (errbuf);
- }
-
-@@ -102,7 +106,7 @@
- ++n;
- if (n == 1 && strncmp(buf, "Iface", 5) == 0)
- continue;
-- if ((i = sscanf(buf, "%s %x %*s %*s %*s %*s %*s %x",
-+ if ((i = sscanf(buf, "%255s %x %*s %*s %*s %*s %*s %x",
- tdevice, &dest, &tmask)) != 3)
- return ("junk in buffer");
- if ((to->sin_addr.s_addr & tmask) == dest &&
-@@ -117,7 +121,11 @@
- return ("Can't find interface");
-
- /* Get the interface address list */
-+#if HAVE_SNPRINTF
-+ if ((n = ifaddrlist(&al, errbuf, sizeof(errbuf))) < 0)
-+#else
- if ((n = ifaddrlist(&al, errbuf)) < 0)
-+#endif
- return (errbuf);
-
- if (n == 0)
-@@ -128,7 +136,11 @@
- if (strcmp(device, al->device) == 0)
- break;
- if (i <= 0) {
-+#if HAVE_SNPRINTF
-+ snprintf(errbuf, sizeof(errbuf), "Can't find interface \"%.32s\"", device);
-+#else
- sprintf(errbuf, "Can't find interface \"%.32s\"", device);
-+#endif
- return (errbuf);
- }
-
---- traceroute-1.4a12.orig/findsaddr-socket.c
-+++ traceroute-1.4a12/findsaddr-socket.c
-@@ -114,7 +114,11 @@
-
- s = socket(PF_ROUTE, SOCK_RAW, AF_UNSPEC);
- if (s < 0) {
-+#if HAVE_SNPRINTF
-+ snprintf(errbuf, sizeof(errbuf), "socket: %.128s", strerror(errno));
-+#else
- sprintf(errbuf, "socket: %.128s", strerror(errno));
-+#endif
- return (errbuf);
- }
-
-@@ -134,12 +138,20 @@
-
- cc = write(s, (char *)rp, size);
- if (cc < 0) {
-+#if HAVE_SNPRINTF
-+ snprintf(errbuf, sizeof(errbuf), "write: %.128s", strerror(errno));
-+#else
- sprintf(errbuf, "write: %.128s", strerror(errno));
-+#endif
- close(s);
- return (errbuf);
- }
- if (cc != size) {
-+#if HAVE_SNPRINTF
-+ snprintf(errbuf, sizeof(errbuf), "short write (%d != %d)", cc, size);
-+#else
- sprintf(errbuf, "short write (%d != %d)", cc, size);
-+#endif
- close(s);
- return (errbuf);
- }
-@@ -149,7 +161,11 @@
- memset(rp, 0, size);
- cc = read(s, (char *)rp, size);
- if (cc < 0) {
-+#if HAVE_SNPRINTF
-+ snprintf(errbuf, sizeof(errbuf), "read: %.128s", strerror(errno));
-+#else
- sprintf(errbuf, "read: %.128s", strerror(errno));
-+#endif
- close(s);
- return (errbuf);
- }
-@@ -159,15 +175,27 @@
-
-
- if (rp->rtm_version != RTM_VERSION) {
-+#if HAVE_SNPRINTF
-+ snprintf(errbuf, sizeof(errbuf), "bad version %d", rp->rtm_version);
-+#else
- sprintf(errbuf, "bad version %d", rp->rtm_version);
-+#endif
- return (errbuf);
- }
- if (rp->rtm_msglen > cc) {
-+#if HAVE_SNPRINTF
-+ snprintf(errbuf, sizeof(errbuf), "bad msglen %d > %d", rp->rtm_msglen, cc);
-+#else
- sprintf(errbuf, "bad msglen %d > %d", rp->rtm_msglen, cc);
-+#endif
- return (errbuf);
- }
- if (rp->rtm_errno != 0) {
-+#if HAVE_SNPRINTF
-+ snprintf(errbuf, sizeof(errbuf), "rtm_errno: %.128s", strerror(rp->rtm_errno));
-+#else
- sprintf(errbuf, "rtm_errno: %.128s", strerror(rp->rtm_errno));
-+#endif
- return (errbuf);
- }
-
---- traceroute-1.4a12.orig/ifaddrlist.c
-+++ traceroute-1.4a12/ifaddrlist.c
-@@ -72,7 +72,12 @@
- * Return the interface list
- */
- int
-+#if HAVE_SNPRINTF
-+ifaddrlist(register struct ifaddrlist **ipaddrp, register char *errbuf,
-+ size_t nerrbuf)
-+#else
- ifaddrlist(register struct ifaddrlist **ipaddrp, register char *errbuf)
-+#endif
- {
- register int fd, nipaddr;
- #ifdef HAVE_SOCKADDR_SA_LEN
-@@ -89,7 +94,11 @@
-
- fd = socket(AF_INET, SOCK_DGRAM, 0);
- if (fd < 0) {
-+#if HAVE_SNPRINTF
-+ (void)snprintf(errbuf, nerrbuf, "socket: %s", strerror(errno));
-+#else
- (void)sprintf(errbuf, "socket: %s", strerror(errno));
-+#endif
- return (-1);
- }
- ifc.ifc_len = sizeof(ibuf);
-@@ -98,12 +107,23 @@
- if (ioctl(fd, SIOCGIFCONF, (char *)&ifc) < 0 ||
- ifc.ifc_len < sizeof(struct ifreq)) {
- if (errno == EINVAL)
-+#if HAVE_SNPRINTF
-+ (void)snprintf(errbuf, nerrbuf,
-+ "SIOCGIFCONF: ifreq struct too small (%d bytes)",
-+ sizeof(ibuf));
-+#else
- (void)sprintf(errbuf,
- "SIOCGIFCONF: ifreq struct too small (%d bytes)",
- sizeof(ibuf));
-+#endif
- else
-+#if HAVE_SNPRINTF
-+ (void)snprintf(errbuf, nerrbuf, "SIOCGIFCONF: %s",
-+ strerror(errno));
-+#else
- (void)sprintf(errbuf, "SIOCGIFCONF: %s",
- strerror(errno));
-+#endif
- (void)close(fd);
- return (-1);
- }
-@@ -135,9 +155,15 @@
- if (ioctl(fd, SIOCGIFFLAGS, (char *)&ifr) < 0) {
- if (errno == ENXIO)
- continue;
-+#if HAVE_SNPRINTF
-+ (void)snprintf(errbuf, nerrbuf, "SIOCGIFFLAGS: %.*s: %s",
-+ (int)sizeof(ifr.ifr_name), ifr.ifr_name,
-+ strerror(errno));
-+#else
- (void)sprintf(errbuf, "SIOCGIFFLAGS: %.*s: %s",
- (int)sizeof(ifr.ifr_name), ifr.ifr_name,
- strerror(errno));
-+#endif
- (void)close(fd);
- return (-1);
- }
-@@ -155,21 +181,35 @@
- continue;
- #endif
- if (ioctl(fd, SIOCGIFADDR, (char *)&ifr) < 0) {
-+#if HAVE_SNPRINTF
-+ (void)snprintf(errbuf, nerrbuf, "SIOCGIFADDR: %s: %s",
-+ device, strerror(errno));
-+#else
- (void)sprintf(errbuf, "SIOCGIFADDR: %s: %s",
- device, strerror(errno));
-+#endif
- (void)close(fd);
- return (-1);
- }
-
- if (nipaddr >= MAX_IPADDR) {
-+#if HAVE_SNPRINTF
-+ (void)snprintf(errbuf, nerrbuf, "Too many interfaces (%d)",
-+ MAX_IPADDR);
-+#else
- (void)sprintf(errbuf, "Too many interfaces (%d)",
- MAX_IPADDR);
-+#endif
- (void)close(fd);
- return (-1);
- }
- sin = (struct sockaddr_in *)&ifr.ifr_addr;
- al->addr = sin->sin_addr.s_addr;
- al->device = strdup(device);
-+ if (al->device == NULL) {
-+ fputs("ifaddrlist: strdup\n", stderr);
-+ exit(1);
-+ }
- ++al;
- ++nipaddr;
- }
---- traceroute-1.4a12.orig/ifaddrlist.h
-+++ traceroute-1.4a12/ifaddrlist.h
-@@ -26,4 +26,8 @@
- char *device;
- };
-
-+#if HAVE_SNPRINTF
-+int ifaddrlist(struct ifaddrlist **, char *, size_t);
-+#else
- int ifaddrlist(struct ifaddrlist **, char *);
-+#endif
---- traceroute-1.4a12.orig/traceroute.8
-+++ traceroute-1.4a12/traceroute.8
-@@ -23,7 +23,7 @@
- .na
- .B traceroute
- [
--.B \-dFInrvx
-+.B \-dFIlnrvx
- ] [
- .B \-f
- .I first_ttl
-@@ -110,6 +110,10 @@
- .B \-I
- Use ICMP ECHO instead of UDP datagrams.
- .TP
-+.B \-l
-+Display the ttl value of the returned packet. This is useful for
-+checking for assymetric routing.
-+.TP
- .B \-m
- Set the max time-to-live (max number of hops) used in outgoing probe
- packets. The default is 30 hops (the same default used for TCP
-@@ -146,9 +150,8 @@
- multi-homed hosts (those with more than one IP
- address), this option can be used to
- force the source address to be something other than the IP address
--of the interface the probe packet is sent on. If the IP address
--is not one of this machine's interface addresses, an error is
--returned and nothing is sent. (See the
-+of the interface the probe packet is sent on. This option can only
-+be used by the super-user. (See the
- .B \-i
- flag for another way to do this.)
- .TP
-@@ -329,6 +332,9 @@
- or
- .B !P
- (host, network or protocol unreachable),
-+.BR !A ,
-+.BR !C
-+(access to the network or host, respectively, is prohibited),
- .B !S
- (source route failed),
- .B !F\-<pmtu>
---- traceroute-1.4a12.orig/traceroute.c
-+++ traceroute-1.4a12/traceroute.c
-@@ -271,7 +271,7 @@
- struct outdata {
- u_char seq; /* sequence number of this packet */
- u_char ttl; /* ttl packet left with */
-- struct timeval tv; /* time packet left */
-+ struct timeval tv __attribute__((packed)); /* time packet left */
- };
-
- #ifndef HAVE_ICMP_NEXTMTU
-@@ -296,8 +296,8 @@
- int s; /* receive (icmp) socket file descriptor */
- int sndsock; /* send (udp/icmp) socket file descriptor */
-
--struct sockaddr whereto; /* Who to try to reach */
--struct sockaddr wherefrom; /* Who we are */
-+struct sockaddr_storage whereto; /* Who to try to reach */
-+struct sockaddr_storage wherefrom; /* Who we are */
- int packlen; /* total length of packet */
- int minpacket; /* min ip packet size */
- int maxpacket = 32 * 1024; /* max ip packet size */
-@@ -352,6 +352,11 @@
- int usleep(u_int);
- #endif
-
-+#ifdef USE_KERNEL_ROUTING_TABLE
-+struct ifaddrlist *search_routing_table(struct sockaddr_in *to, struct ifaddrlist *al, int n);
-+#endif
-+
-+
- int
- main(int argc, char **argv)
- {
-@@ -370,8 +375,12 @@
- int tos = 0, settos = 0;
- register int lsrr = 0;
- register u_short off = 0;
-- struct ifaddrlist *al;
-+ struct ifaddrlist *al, *allist;
- char errbuf[132];
-+ int ttl_flag = 0;
-+ int uid;
-+
-+ uid = getuid();
-
- if (argv[0] == NULL)
- prog = "traceroute";
-@@ -381,7 +390,7 @@
- prog = argv[0];
-
- opterr = 0;
-- while ((op = getopt(argc, argv, "dFInrvxf:g:i:m:p:q:s:t:w:z:")) != EOF)
-+ while ((op = getopt(argc, argv, "dFIlnrvxf:g:i:m:p:q:s:t:w:z:")) != EOF)
- switch (op) {
-
- case 'd':
-@@ -397,6 +406,10 @@
- break;
-
- case 'g':
-+ if (strlen(optarg) >= MAXHOSTNAMELEN) {
-+ Fprintf(stderr, "%s: Nice Try !\n", prog);
-+ exit(-1);
-+ }
- if (lsrr >= NGATEWAYS) {
- Fprintf(stderr,
- "%s: No more than %d gateways\n",
-@@ -409,12 +422,21 @@
-
- case 'i':
- device = optarg;
-+ if (strlen(device) >= 16) { /* that is the IFNAMSIZ
-+ * from kernel headers */
-+ Fprintf(stderr, "%s: Nice try !\n", prog);
-+ exit(-1);
-+ }
- break;
-
- case 'I':
- ++useicmp;
- break;
-
-+ case 'l':
-+ ++ttl_flag;
-+ break;
-+
- case 'm':
- max_ttl = str2val(optarg, "max ttl", 1, 255);
- break;
-@@ -441,7 +463,19 @@
- * set the ip source address of the outbound
- * probe (e.g., on a multi-homed host).
- */
-+ if (uid) {
-+ Fprintf(
-+ stderr,
-+ "%s: -s %s: Permission denied\n",
-+ prog, optarg
-+ );
-+ exit(-1);
-+ }
- source = optarg;
-+ if (strlen(source) >= MAXHOSTNAMELEN) {
-+ Fprintf(stderr, "%s: Nice Try !\n", prog);
-+ exit(-1);
-+ }
- break;
-
- case 't':
-@@ -500,6 +534,10 @@
-
- case 1:
- hostname = argv[optind];
-+ if (strlen(hostname) >= MAXHOSTNAMELEN) {
-+ Fprintf(stderr, "%s: Nice try !\n", prog);
-+ exit(-1);
-+ }
- hi = gethostinfo(hostname);
- setsin(to, hi->addrs[0]);
- if (hi->n > 1)
-@@ -515,75 +553,6 @@
- usage();
- }
-
--#ifdef HAVE_SETLINEBUF
-- setlinebuf (stdout);
--#else
-- setvbuf(stdout, NULL, _IOLBF, 0);
--#endif
--
-- outip = (struct ip *)malloc((unsigned)packlen);
-- if (outip == NULL) {
-- Fprintf(stderr, "%s: malloc: %s\n", prog, strerror(errno));
-- exit(1);
-- }
-- memset((char *)outip, 0, packlen);
--
-- outip->ip_v = IPVERSION;
-- if (settos)
-- outip->ip_tos = tos;
--#ifdef BYTESWAP_IP_HDR
-- outip->ip_len = htons(packlen);
-- outip->ip_off = htons(off);
--#else
-- outip->ip_len = packlen;
-- outip->ip_off = off;
--#endif
-- outp = (u_char *)(outip + 1);
--#ifdef HAVE_RAW_OPTIONS
-- if (lsrr > 0) {
-- register u_char *optlist;
--
-- optlist = outp;
-- outp += optlen;
--
-- /* final hop */
-- gwlist[lsrr] = to->sin_addr.s_addr;
--
-- outip->ip_dst.s_addr = gwlist[0];
--
-- /* force 4 byte alignment */
-- optlist[0] = IPOPT_NOP;
-- /* loose source route option */
-- optlist[1] = IPOPT_LSRR;
-- i = lsrr * sizeof(gwlist[0]);
-- optlist[2] = i + 3;
-- /* Pointer to LSRR addresses */
-- optlist[3] = IPOPT_MINOFF;
-- memcpy(optlist + 4, gwlist + 1, i);
-- } else
--#endif
-- outip->ip_dst = to->sin_addr;
--
-- outip->ip_hl = (outp - (u_char *)outip) >> 2;
-- ident = (getpid() & 0xffff) | 0x8000;
-- if (useicmp) {
-- outip->ip_p = IPPROTO_ICMP;
--
-- outicmp = (struct icmp *)outp;
-- outicmp->icmp_type = ICMP_ECHO;
-- outicmp->icmp_id = htons(ident);
--
-- outdata = (struct outdata *)(outp + 8); /* XXX magic number */
-- } else {
-- outip->ip_p = IPPROTO_UDP;
--
-- outudp = (struct udphdr *)outp;
-- outudp->uh_sport = htons(ident);
-- outudp->uh_ulen =
-- htons((u_short)(packlen - (sizeof(*outip) + optlen)));
-- outdata = (struct outdata *)(outudp + 1);
-- }
--
- cp = "icmp";
- if ((pe = getprotobyname(cp)) == NULL) {
- Fprintf(stderr, "%s: unknown protocol %s\n", prog, cp);
-@@ -591,12 +560,15 @@
- }
-
- /* Insure the socket fds won't be 0, 1 or 2 */
-- if (open(devnull, O_RDONLY) < 0 ||
-- open(devnull, O_RDONLY) < 0 ||
-- open(devnull, O_RDONLY) < 0) {
-- Fprintf(stderr, "%s: open \"%s\": %s\n",
-- prog, devnull, strerror(errno));
-- exit(1);
-+ do {
-+ if ((n = open(devnull, O_RDONLY)) < 0) {
-+ Fprintf(stderr, "%s: open \"%s\": %s\n",
-+ prog, devnull, strerror(errno));
-+ exit(1);
-+ }
-+ } while (n < 2);
-+ if (n > 2) {
-+ close(n);
- }
- if ((s = socket(AF_INET, SOCK_RAW, pe->p_proto)) < 0) {
- Fprintf(stderr, "%s: icmp socket: %s\n", prog, strerror(errno));
-@@ -662,7 +634,7 @@
- #endif
- #ifdef IP_HDRINCL
- if (setsockopt(sndsock, IPPROTO_IP, IP_HDRINCL, (char *)&on,
-- sizeof(on)) < 0) {
-+ sizeof(on)) < 0 && errno != ENOPROTOOPT) {
- Fprintf(stderr, "%s: IP_HDRINCL: %s\n", prog, strerror(errno));
- exit(1);
- }
-@@ -683,8 +655,88 @@
- (void)setsockopt(sndsock, SOL_SOCKET, SO_DONTROUTE, (char *)&on,
- sizeof(on));
-
-+ /* Revert to non-privileged user after opening sockets */
-+ setgid(getgid());
-+ setuid(uid);
-+
-+#ifndef __GLIBC__
-+#ifdef HAVE_SETLINEBUF
-+ setlinebuf (stdout);
-+#else
-+ setvbuf(stdout, NULL, _IOLBF, 0);
-+#endif
-+#endif
-+
-+ outip = (struct ip *)malloc((unsigned)packlen);
-+ if (outip == NULL) {
-+ Fprintf(stderr, "%s: malloc: %s\n", prog, strerror(errno));
-+ exit(1);
-+ }
-+ memset((char *)outip, 0, packlen);
-+
-+ outip->ip_v = IPVERSION;
-+ if (settos)
-+ outip->ip_tos = tos;
-+#ifdef BYTESWAP_IP_HDR
-+ outip->ip_len = htons(packlen);
-+ outip->ip_off = htons(off);
-+#else
-+ outip->ip_len = packlen;
-+ outip->ip_off = off;
-+#endif
-+ outp = (u_char *)(outip + 1);
-+#ifdef HAVE_RAW_OPTIONS
-+ if (lsrr > 0) {
-+ register u_char *optlist;
-+
-+ optlist = outp;
-+ outp += optlen;
-+
-+ /* final hop */
-+ gwlist[lsrr] = to->sin_addr.s_addr;
-+
-+ outip->ip_dst.s_addr = gwlist[0];
-+
-+ /* force 4 byte alignment */
-+ optlist[0] = IPOPT_NOP;
-+ /* loose source route option */
-+ optlist[1] = IPOPT_LSRR;
-+ i = lsrr * sizeof(gwlist[0]);
-+ optlist[2] = i + 3;
-+ /* Pointer to LSRR addresses */
-+ optlist[3] = IPOPT_MINOFF;
-+ memcpy(optlist + 4, gwlist + 1, i);
-+ } else
-+#endif
-+ outip->ip_dst = to->sin_addr;
-+
-+ outip->ip_hl = (outp - (u_char *)outip) >> 2;
-+ ident = (getpid() & 0xffff) | 0x8000;
-+ if (useicmp) {
-+ outip->ip_p = IPPROTO_ICMP;
-+
-+ outicmp = (struct icmp *)outp;
-+ outicmp->icmp_type = ICMP_ECHO;
-+ outicmp->icmp_id = htons(ident);
-+
-+ outdata = (struct outdata *)(outp + 8); /* XXX magic number */
-+ } else {
-+ outip->ip_p = IPPROTO_UDP;
-+
-+ outudp = (struct udphdr *)outp;
-+ outudp->uh_sport = htons(ident);
-+ outudp->uh_ulen =
-+ htons((u_short)(packlen - (sizeof(*outip) + optlen)));
-+ outdata = (struct outdata *)(outudp + 1);
-+ }
-+
- /* Get the interface address list */
-- n = ifaddrlist(&al, errbuf);
-+#if HAVE_SNPRINTF
-+ n = ifaddrlist(&allist, errbuf, sizeof(errbuf));
-+#else
-+ n = ifaddrlist(&allist, errbuf);
-+#endif
-+ al = allist;
- if (n < 0) {
- Fprintf(stderr, "%s: ifaddrlist: %s\n", prog, errbuf);
- exit(1);
-@@ -709,6 +761,15 @@
-
- /* Determine our source address */
- if (source == NULL) {
-+#ifdef USE_KERNEL_ROUTING_TABLE
-+ /* Search the kernel routing table for a match with the
-+ * destination address. Then use that interface. If
-+ * there is no match, default to using the first
-+ * interface found.
-+ */
-+ al = search_routing_table(to, allist, n);
-+ setsin(from, al->addr);
-+#else
- /*
- * If a device was specified, use the interface address.
- * Otherwise, try to determine our source address.
-@@ -720,6 +781,7 @@
- prog, err);
- exit(1);
- }
-+#endif
- } else {
- hi = gethostinfo(source);
- source = hi->name;
-@@ -751,10 +813,6 @@
- freehostinfo(hi);
- }
-
-- /* Revert to non-privileged user after opening sockets */
-- setgid(getgid());
-- setuid(getuid());
--
- outip->ip_src = from->sin_addr;
- #ifndef IP_HDRINCL
- if (bind(sndsock, (struct sockaddr *)from, sizeof(*from)) < 0) {
-@@ -803,9 +861,11 @@
- ++gotlastaddr;
- }
- Printf(" %.3f ms", deltaT(&t1, &t2));
-+ ip = (struct ip *)packet;
-+ if (ttl_flag)
-+ Printf(" (%d)", ip->ip_ttl);
- if (i == -2) {
- #ifndef ARCHAIC
-- ip = (struct ip *)packet;
- if (ip->ip_ttl <= 1)
- Printf(" !");
- #endif
-@@ -820,7 +880,6 @@
-
- case ICMP_UNREACH_PORT:
- #ifndef ARCHAIC
-- ip = (struct ip *)packet;
- if (ip->ip_ttl <= 1)
- Printf(" !");
- #endif
-@@ -853,8 +912,14 @@
- break;
-
- case ICMP_UNREACH_FILTER_PROHIB:
-+ case ICMP_UNREACH_NET_PROHIB: /* misuse */
-+ ++unreachable;
-+ Printf(" !A");
-+ break;
-+
-+ case ICMP_UNREACH_HOST_PROHIB:
- ++unreachable;
-- Printf(" !X");
-+ Printf(" !C");
- break;
-
- case ICMP_UNREACH_HOST_PRECEDENCE:
-@@ -867,6 +932,23 @@
- Printf(" !C");
- break;
-
-+ case ICMP_UNREACH_NET_UNKNOWN:
-+ case ICMP_UNREACH_HOST_UNKNOWN:
-+ ++unreachable;
-+ Printf(" !U");
-+ break;
-+
-+ case ICMP_UNREACH_ISOLATED:
-+ ++unreachable;
-+ Printf(" !I");
-+ break;
-+
-+ case ICMP_UNREACH_TOSNET:
-+ case ICMP_UNREACH_TOSHOST:
-+ ++unreachable;
-+ Printf(" !T");
-+ break;
-+
- default:
- ++unreachable;
- Printf(" !<%d>", code);
-@@ -894,7 +976,7 @@
- struct timeval now, wait;
- struct timezone tz;
- register int cc = 0;
-- int fromlen = sizeof(*fromp);
-+ socklen_t fromlen = sizeof(*fromp);
-
- FD_ZERO(&fds);
- FD_SET(sock, &fds);
-@@ -938,7 +1020,7 @@
- /* Payload */
- outdata->seq = seq;
- outdata->ttl = ttl;
-- outdata->tv = *tp;
-+ memcpy(&outdata->tv, tp, sizeof(outdata->tv));
-
- if (useicmp)
- outicmp->icmp_seq = htons(seq);
-@@ -1003,12 +1085,13 @@
-
- #ifdef __hpux
- cc = sendto(sndsock, useicmp ? (char *)outicmp : (char *)outudp,
-- packlen - (sizeof(*outip) + optlen), 0, &whereto, sizeof(whereto));
-+ packlen - (sizeof(*outip) + optlen), 0,
-+ (struct sockaddr *)&whereto, sizeof(whereto));
- if (cc > 0)
- cc += sizeof(*outip) + optlen;
- #else
- cc = sendto(sndsock, (char *)outip,
-- packlen, 0, &whereto, sizeof(whereto));
-+ packlen, 0, (struct sockaddr *)&whereto, sizeof(whereto));
- #endif
- if (cc < 0 || cc != packlen) {
- if (cc < 0)
-@@ -1039,12 +1122,12 @@
- static char *ttab[] = {
- "Echo Reply", "ICMP 1", "ICMP 2", "Dest Unreachable",
- "Source Quench", "Redirect", "ICMP 6", "ICMP 7",
-- "Echo", "ICMP 9", "ICMP 10", "Time Exceeded",
-+ "Echo", "Router Advert", "Router Solicit", "Time Exceeded",
- "Param Problem", "Timestamp", "Timestamp Reply", "Info Request",
-- "Info Reply"
-+ "Info Reply", "Mask Request", "Mask Reply"
- };
-
-- if (t > 16)
-+ if (t > 18)
- return("OUT-OF-RANGE");
-
- return(ttab[t]);
-@@ -1272,6 +1355,11 @@
- addr = inet_addr(hostname);
- if ((int32_t)addr != -1) {
- hi->name = strdup(hostname);
-+ if (hi->name == NULL) {
-+ Fprintf(stderr, "%s: strdup %s\n",
-+ prog, strerror(errno));
-+ exit(1);
-+ }
- hi->n = 1;
- hi->addrs = calloc(1, sizeof(hi->addrs[0]));
- if (hi->addrs == NULL) {
-@@ -1293,6 +1381,11 @@
- exit(1);
- }
- hi->name = strdup(hp->h_name);
-+ if (hi->name == NULL) {
-+ Fprintf(stderr, "%s: strdup %s\n",
-+ prog, strerror(errno));
-+ exit(1);
-+ }
- for (n = 0, p = hp->h_addr_list; *p != NULL; ++n, ++p)
- continue;
- hi->n = n;
-@@ -1381,8 +1474,96 @@
-
- Fprintf(stderr, "Version %s\n", version);
- Fprintf(stderr,
-- "Usage: %s [-dFInrvx] [-g gateway] [-i iface] [-f first_ttl]\n"
-+ "Usage: %s [-dFIlnrvx] [-g gateway] [-i iface] [-f first_ttl]\n"
- "\t[-m max_ttl] [ -p port] [-q nqueries] [-s src_addr] [-t tos]\n"
- "\t[-w waittime] [-z pausemsecs] host [packetlen]\n", prog);
- exit(1);
- }
-+
-+
-+#ifdef USE_KERNEL_ROUTING_TABLE
-+
-+/* This function currently only supports IPv4. Someone who knows
-+ * more about multi-protocol socket stuff should take a look at this.
-+ *
-+ * (But does it make any sense for traceroute to support other
-+ * protocols? Maybe IPv6...
-+ */
-+
-+struct ifaddrlist *search_routing_table(struct sockaddr_in *to, struct ifaddrlist *al, int n)
-+{
-+ struct ifaddrlist *first_if;
-+ FILE *fp;
-+ char buf[1024];
-+ char ifname[128];
-+ unsigned int route_dest;
-+ unsigned int mask;
-+ char best_name[128];
-+ unsigned int best_mask;
-+ unsigned int dest_addr;
-+ unsigned int convs;
-+
-+ /* How come using ntohl(to->sin_addr.s_addr) doesn't work here? */
-+ dest_addr = to->sin_addr.s_addr;
-+
-+ fp = fopen("/proc/net/route", "r");
-+ if (fp == NULL) {
-+ return al;
-+ }
-+
-+ /* Skip the first line (the column headings) */
-+ if (fgets(buf, sizeof(buf), fp) == NULL) {
-+ fclose(fp);
-+ return al;
-+ }
-+
-+ best_name[0] = '\0';
-+ best_mask = 0;
-+
-+ while (fgets(buf, sizeof(buf), fp) != NULL) {
-+ /* Field 1: interface name
-+ * Field 2: dest addr
-+ * Field 8: genmask
-+ */
-+ convs = sscanf(buf, "%127s %x %*s %*s %*s %*s %*s %x",
-+ ifname, &route_dest, &mask);
-+ if (convs != 3) {
-+ /* format error .... */
-+ fclose(fp);
-+ return al;
-+ }
-+
-+ if ((dest_addr & mask) == route_dest) {
-+ /* This routing entry applies to
-+ * our destination addr
-+ */
-+ if ((mask > best_mask) || (best_mask == 0)) {
-+ /* And it is more specific than any
-+ * previous match (or is the first match)
-+ */
-+ best_mask = mask;
-+ strncpy(best_name, ifname,
-+ sizeof(best_name) - 1);
-+ best_name[sizeof(best_name) - 1] = 0;
-+ }
-+ }
-+ }
-+
-+ fclose(fp);
-+
-+ /* If we don't find a match, we'll return the first entry */
-+ first_if = al;
-+
-+ while (al < first_if + n) {
-+ if (strcmp(best_name, al->device) == 0) {
-+ /* Got a match */
-+ return al;
-+ }
-+ al++;
-+ }
-+
-+ return first_if;
-+}
-+
-+#endif
-+
---- traceroute-1.4a12.orig/debian/changelog
-+++ traceroute-1.4a12/debian/changelog
-@@ -0,0 +1,63 @@
-+traceroute (1.4a12-5) unstable; urgency=low
-+
-+ * Restrict the -s option to the super-user.
-+ * Updated documentation for the -s option (closes: #105362).
-+
-+ -- Herbert Xu <herbert@debian.org> Mon, 16 Jul 2001 19:28:45 +1000
-+
-+traceroute (1.4a12-4) unstable; urgency=low
-+
-+ * Updated aclocal.m4 for autoconf 2.50 (closes: #98367).
-+
-+ -- Herbert Xu <herbert@debian.org> Wed, 23 May 2001 18:48:59 +1000
-+
-+traceroute (1.4a12-3) unstable; urgency=low
-+
-+ * Drop privileges earlier.
-+ * Applied "paranoia" patch from Richard Kettlewell (closes: #85619).
-+ - eliminate unbounded sprintf calls
-+ - eliminate unbounded sscanf calls
-+ - strncpy final-null paranoia
-+ * Set HAVE_RAW_OPTIONS (closes: #78475).
-+ * Added missing option to usage (Neale Banks, closes: #88892).
-+
-+ -- Herbert Xu <herbert@debian.org> Fri, 9 Mar 2001 22:24:11 +1100
-+
-+traceroute (1.4a12-2) unstable; urgency=low
-+
-+ * Made changes for dpkg-statoverride (closes: #83817).
-+
-+ -- Herbert Xu <herbert@debian.org> Sun, 28 Jan 2001 21:49:35 +1100
-+
-+traceroute (1.4a12-1) unstable; urgency=low
-+
-+ * New upstream release (closes: #79920, #81395).
-+ * Use struct sockaddr_stroage (closes: #79348).
-+
-+ -- Herbert Xu <herbert@debian.org> Fri, 26 Jan 2001 20:57:21 +1100
-+
-+traceroute (1.4a8-1) unstable; urgency=low
-+
-+ * New upstream release.
-+
-+ -- Herbert Xu <herbert@debian.org> Sat, 9 Dec 2000 14:18:00 +1100
-+
-+traceroute (1.4a5-3) stable unstable; urgency=low
-+
-+ * Fixed a bug where free(3) was called on non-malloced memory.
-+
-+ -- Herbert Xu <herbert@debian.org> Thu, 24 Aug 2000 20:44:51 +1000
-+
-+traceroute (1.4a5-2) frozen unstable; urgency=low
-+
-+ * Use config.* from automake, needed for building traceroute on ARM
-+ (closes: #61267).
-+
-+ -- Herbert Xu <herbert@debian.org> Fri, 31 Mar 2000 07:50:33 +1000
-+
-+traceroute (1.4a5-1) unstable; urgency=low
-+
-+ * Initial release (closes: #34166).
-+
-+ -- Herbert Xu <herbert@debian.org> Mon, 1 Nov 1999 15:11:06 +1100
-+
---- traceroute-1.4a12.orig/debian/control
-+++ traceroute-1.4a12/debian/control
-@@ -0,0 +1,22 @@
-+Source: traceroute
-+Section: net
-+Priority: optional
-+Maintainer: Herbert Xu <herbert@debian.org>
-+Standards-Version: 3.5.5
-+Build-Depends: automake, autoconf, debhelper
-+
-+Package: traceroute
-+Architecture: any
-+Depends: ${shlibs:Depends}
-+Conflicts: suidmanager (<< 0.50)
-+Replaces: netstd
-+Description: Traces the route taken by packets over a TCP/IP network.
-+ The traceroute utility displays the route used by IP packets on their way to a
-+ specified network (or Internet) host. Traceroute displays the IP number and
-+ host name (if possible) of the machines along the route taken by the packets.
-+ Traceroute is used as a network debugging tool. If you're having network
-+ connectivity problems, traceroute will show you where the trouble is coming
-+ from along the route.
-+ .
-+ Install traceroute if you need a tool for diagnosing network connectivity
-+ problems.
---- traceroute-1.4a12.orig/debian/copyright
-+++ traceroute-1.4a12/debian/copyright
-@@ -0,0 +1,16 @@
-+This package was split from netstd by Herbert Xu herbert@debian.org on
-+Mon, 1 Nov 1999 15:14:03 +1100.
-+
-+netstd was created by Peter Tobias tobias@et-inf.fho-emden.de on
-+Wed, 20 Jul 1994 17:23:21 +0200.
-+
-+It was downloaded from ftp://ftp.ee.lbl.gov/.
-+
-+Copyright:
-+
-+Copyright (c) 1988, 1989, 1991, 1994, 1995, 1996, 1997
-+The Regents of the University of California. All rights reserved.
-+
-+The license can be found in /usr/share/common-licenses/BSD.
-+
-+$Id: copyright,v 1.1 1999/11/01 04:34:49 herbert Exp $
---- traceroute-1.4a12.orig/debian/rules
-+++ traceroute-1.4a12/debian/rules
-@@ -0,0 +1,96 @@
-+#!/usr/bin/make -f
-+# GNU copyright 1997 to 1999 by Joey Hess.
-+# Copyright (c) 1999 Herbert Xu <herbert@debian.org>
-+
-+# Uncomment this to turn on verbose mode.
-+#export DH_VERBOSE=1
-+
-+# This is the debhelper compatability version to use.
-+export DH_COMPAT=2
-+
-+build: build-stamp
-+build-stamp:
-+ dh_testdir
-+
-+ if [ ! -f configure.old ]; then \
-+ mv configure configure.old; \
-+ mv config.guess config.guess.old; \
-+ mv config.sub config.sub.old; \
-+ mv linux-include/netinet/in_systm.h linux-include; \
-+ mv linux-include/netinet/ip.h linux-include; \
-+ mv linux-include/netinet/ip_icmp.h linux-include; \
-+ cp /usr/share/automake/config.guess .; \
-+ cp /usr/share/automake/config.sub .; \
-+ autoconf; \
-+ fi
-+ if [ ! -f Makefile ]; then ./configure; fi
-+ $(MAKE) CCOPT="-g -O2"
-+
-+ touch build-stamp
-+
-+clean:
-+ dh_testdir
-+ dh_testroot
-+ rm -f build-stamp install-stamp
-+
-+ -$(MAKE) distclean
-+ if [ -f configure.old ]; then \
-+ mv configure.old configure; \
-+ mv config.guess.old config.guess; \
-+ mv config.sub.old config.sub; \
-+ mv linux-include/in_systm.h linux-include/netinet; \
-+ mv linux-include/ip.h linux-include/netinet; \
-+ mv linux-include/ip_icmp.h linux-include/netinet; \
-+ fi
-+
-+ dh_clean
-+
-+install: build install-stamp
-+install-stamp:
-+ dh_testdir
-+ dh_testroot
-+ dh_clean -k
-+ dh_installdirs
-+
-+ install traceroute debian/traceroute/usr/sbin
-+ cp traceroute.8 debian/traceroute/usr/share/man/man8
-+
-+ touch install-stamp
-+
-+# Build architecture-independent files here.
-+binary-indep: build install
-+# We have nothing to do by default.
-+
-+# Build architecture-dependent files here.
-+binary-arch: build install
-+# dh_testversion
-+ dh_testdir
-+ dh_testroot
-+# dh_installdebconf
-+ dh_installdocs
-+ dh_installexamples
-+ dh_installmenu
-+# dh_installemacsen
-+# dh_installpam
-+# dh_installinit
-+ dh_installcron
-+ dh_installmanpages
-+ dh_installinfo
-+# dh_undocumented
-+ dh_installchangelogs CHANGES
-+ dh_link
-+ dh_strip
-+ dh_compress
-+ dh_fixperms
-+ # You may want to make some executables suid here.
-+ chmod u+s debian/traceroute/usr/sbin/traceroute
-+# dh_makeshlibs
-+ dh_installdeb
-+# dh_perl
-+ dh_shlibdeps
-+ dh_gencontrol
-+ dh_md5sums
-+ dh_builddeb
-+
-+binary: binary-indep binary-arch
-+.PHONY: build clean binary-indep binary-arch binary install
---- traceroute-1.4a12.orig/debian/traceroute.dirs
-+++ traceroute-1.4a12/debian/traceroute.dirs
-@@ -0,0 +1,2 @@
-+usr/sbin
-+usr/share/man/man8
---- traceroute-1.4a12.orig/debian/traceroute.docs
-+++ traceroute-1.4a12/debian/traceroute.docs
-@@ -0,0 +1 @@
-+README
---- traceroute-1.4a12.orig/debian/traceroute.examples
-+++ traceroute-1.4a12/debian/traceroute.examples
-@@ -0,0 +1,2 @@
-+mean.awk
-+median.awk
diff --git a/source/n/vsftpd/vsftpd.SlackBuild b/source/n/vsftpd/vsftpd.SlackBuild
index c202e392d..06b56763d 100755
--- a/source/n/vsftpd/vsftpd.SlackBuild
+++ b/source/n/vsftpd/vsftpd.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,11 +20,21 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.1.2
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo vsftpd-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
else
@@ -49,16 +59,9 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# This allows the libfinder script to find stuff in */lib64
-if [ "$LIBDIRSUFFIX" = "64" ]; then
- zcat $CWD/vsftpd.vsf_findlibs.sh.diff.gz | patch -p1 --verbose || exit 1
-fi
-
zcat $CWD/vsftpd.builddefs.diff.gz | patch -p1 --verbose || exit 1
zcat $CWD/vsftpd.conf.diff.gz | patch -p1 --verbose || exit 1
-sed -i -e "s#lib/#lib${LIBDIRSUFFIX}/#g" vsf_findlibs.sh
-
make $NUMJOBS || make || exit 1
mkdir -p $PKG/usr/sbin
@@ -81,10 +84,18 @@ mkdir -p $PKG/home/ftp
mkdir -p $PKG/usr/doc/vsftpd-$VERSION
cp -a \
- AUDIT BENCHMARKS BUGS COPYING* COPYRIGHT Changelog EXAMPLE FAQ \
+ AUDIT BENCHMARKS BUGS COPYING* COPYRIGHT EXAMPLE FAQ \
INSTALL LICENSE README* REFS REWARD SECURITY SIZE SPEED TODO TUNING \
$PKG/usr/doc/vsftpd-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r Changelog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat Changelog | head -n 1000 > $DOCSDIR/Changelog
+ touch -r Changelog $DOCSDIR/Changelog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
diff --git a/source/n/vsftpd/vsftpd.conf.diff b/source/n/vsftpd/vsftpd.conf.diff
index 230d858c8..1f410a7ac 100644
--- a/source/n/vsftpd/vsftpd.conf.diff
+++ b/source/n/vsftpd/vsftpd.conf.diff
@@ -1,5 +1,6 @@
---- ./vsftpd.conf.orig 2008-12-17 14:31:40.000000000 -0600
-+++ ./vsftpd.conf 2009-03-29 22:09:21.000000000 -0500
+diff -Nur vsftpd-2.2.1.orig/vsftpd.conf vsftpd-2.2.1/vsftpd.conf
+--- vsftpd-2.2.1.orig/vsftpd.conf 2009-10-18 21:04:23.000000000 -0500
++++ vsftpd-2.2.1/vsftpd.conf 2009-10-19 10:22:16.609407947 -0500
@@ -19,7 +19,7 @@
#
# Default umask for local users is 077. You may wish to change this to 022,
@@ -23,7 +24,7 @@
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
-@@ -100,14 +100,17 @@
+@@ -101,12 +101,13 @@
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
@@ -36,13 +37,9 @@
-listen=YES
+# When "listen" directive is enabled, vsftpd runs in standalone mode (rather
+# than from inetd) and listens on IPv4 sockets. To use vsftpd in standalone
-+# mode rather than with inetd, either change the line below to 'listen=YES'
-+# or comment it out. This directive cannot be used in conjunction with the
-+# listen_ipv6 directive.
++# mode rather than with inetd, change the line below to 'listen=YES'
++# This directive cannot be used in conjunction with the listen_ipv6 directive.
+listen=NO
#
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
- # sockets, you must run two copies of vsftpd whith two configuration files.
- # Make sure, that one of the listen options is commented !!
- #listen_ipv6=YES
-+
+ # sockets, you must run two copies of vsftpd with two configuration files.
diff --git a/source/n/vsftpd/vsftpd.vsf_findlibs.sh.diff b/source/n/vsftpd/vsftpd.vsf_findlibs.sh.diff
deleted file mode 100644
index 147ee7426..000000000
--- a/source/n/vsftpd/vsftpd.vsf_findlibs.sh.diff
+++ /dev/null
@@ -1,87 +0,0 @@
-diff -Nur vsftpd-2.1.2.orig/vsf_findlibs.sh vsftpd-2.1.2/vsf_findlibs.sh
---- vsftpd-2.1.2.orig/vsf_findlibs.sh 2009-05-21 15:43:11.000000000 -0500
-+++ vsftpd-2.1.2/vsf_findlibs.sh 2009-05-31 00:41:38.308704816 -0500
-@@ -6,61 +6,61 @@
-
- if find_func hosts_access tcpwrap.o; then
- echo "-lwrap";
-- locate_library /lib/libnsl.so && echo "-lnsl";
-+ locate_library /lib64/libnsl.so && echo "-lnsl";
- fi
-
- # Look for PAM (done weirdly due to distribution bugs (e.g. Debian) or the
- # crypt library.
- if find_func pam_start sysdeputil.o; then
-- locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0";
-- locate_library /usr/lib/libpam.so && echo "-lpam";
-+ locate_library /lib64/libpam.so.0 && echo "/lib64/libpam.so.0";
-+ locate_library /usr/lib64/libpam.so && echo "-lpam";
- # HP-UX ends shared libraries with .sl
-- locate_library /usr/lib/libpam.sl && echo "-lpam";
-+ locate_library /usr/lib64/libpam.sl && echo "-lpam";
- # AIX ends shared libraries with .a
-- locate_library /usr/lib/libpam.a && echo "-lpam";
-+ locate_library /usr/lib64/libpam.a && echo "-lpam";
- else
-- locate_library /lib/libcrypt.so && echo "-lcrypt";
-- locate_library /usr/lib/libcrypt.so && echo "-lcrypt";
-+ locate_library /lib64/libcrypt.so && echo "-lcrypt";
-+ locate_library /usr/lib64/libcrypt.so && echo "-lcrypt";
- fi
-
- # Look for the dynamic linker library. Needed by older RedHat when
- # you link in PAM
--locate_library /lib/libdl.so && echo "-ldl";
-+locate_library /lib64/libdl.so && echo "-ldl";
-
- # Look for libsocket. Solaris needs this.
--locate_library /lib/libsocket.so && echo "-lsocket";
-+locate_library /lib64/libsocket.so && echo "-lsocket";
-
- # Look for libnsl. Solaris needs this.
--locate_library /lib/libnsl.so && echo "-lnsl";
-+locate_library /lib64/libnsl.so && echo "-lnsl";
-
- # Look for libresolv. Solaris needs this.
--locate_library /lib/libresolv.so && echo "-lresolv";
-+locate_library /lib64/libresolv.so && echo "-lresolv";
-
- # Look for libutil. Older FreeBSD need this for setproctitle().
--locate_library /usr/lib/libutil.so && echo "-lutil";
-+locate_library /usr/lib64/libutil.so && echo "-lutil";
-
- # For older HP-UX...
--locate_library /usr/lib/libsec.sl && echo "-lsec";
-+locate_library /usr/lib64/libsec.sl && echo "-lsec";
-
- # Look for libcap (capabilities)
--if locate_library /lib/libcap.so.1; then
-- echo "/lib/libcap.so.1";
--elif locate_library /lib/libcap.so.2; then
-- echo "/lib/libcap.so.2";
-+if locate_library /lib64/libcap.so.1; then
-+ echo "/lib64/libcap.so.1";
-+elif locate_library /lib64/libcap.so.2; then
-+ echo "/lib64/libcap.so.2";
- else
-- locate_library /usr/lib/libcap.so && echo "-lcap";
-- locate_library /lib/libcap.so && echo "-lcap";
-+ locate_library /usr/lib64/libcap.so && echo "-lcap";
-+ locate_library /lib64/libcap.so && echo "-lcap";
- fi
-
- # Solaris needs this for nanosleep()..
--locate_library /lib/libposix4.so && echo "-lposix4";
--locate_library /usr/lib/libposix4.so && echo "-lposix4";
-+locate_library /lib64/libposix4.so && echo "-lposix4";
-+locate_library /usr/lib64/libposix4.so && echo "-lposix4";
-
- # Tru64 (nanosleep)
- locate_library /usr/shlib/librt.so && echo "-lrt";
-
- # Solaris sendfile
--locate_library /usr/lib/libsendfile.so && echo "-lsendfile";
-+locate_library /usr/lib64/libsendfile.so && echo "-lsendfile";
-
- # OpenSSL
- if find_func SSL_library_init ssl.o; then
diff --git a/source/n/wget/wget.SlackBuild b/source/n/wget/wget.SlackBuild
index 23fbe7342..e79de18cc 100755
--- a/source/n/wget/wget.SlackBuild
+++ b/source/n/wget/wget.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,17 +21,31 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.11.4
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo wget-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
-if [ "$ARCH" = "i486" ]; then
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mtune=i686"
+elif [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
@@ -76,6 +90,14 @@ cp -a \
AUTHORS COPYING* MAILING-LIST NEWS PATCHES README* TODO \
$PKG/usr/doc/wget-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
diff --git a/source/n/whois/whois.SlackBuild b/source/n/whois/whois.SlackBuild
index 26baacf8c..589b57dbd 100755
--- a/source/n/whois/whois.SlackBuild
+++ b/source/n/whois/whois.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,10 +20,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=4.7.26
-ARCH=${ARCH:-x86_64}
+PKGNAM=whois
+VERSION=${VERSION:-$(echo ${PKGNAM}_*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d _ | rev)}
BUILD=${BUILD:-1}
+# Automatically determine architecture for build & packaging:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-whois
@@ -42,27 +51,17 @@ find . \
-exec chmod 644 {} \;
make || exit
+make install install-pos BASEDIR=$PKG || exit 1
-mkdir -p $PKG/usr/bin
-cat whois > $PKG/usr/bin/whois
-chmod 755 $PKG/usr/bin/whois
-
-( cd po
- make
- for n in *.mo ; do \
- l=`basename $n .mo`; \
- /usr/bin/install -c -m 755 -d $PKG/usr/share/locale/$l; \
- /usr/bin/install -c -m 755 -d $PKG/usr/share/locale/$l/LC_MESSAGES; \
- /usr/bin/install -c -m 644 $n $PKG/usr/share/locale/$l/LC_MESSAGES/whois.mo; \
- done
-)
+mv $PKG/usr/share/man $PKG/usr
+gzip -9 $PKG/usr/man/man1/*.1
-mkdir -p $PKG/usr/man/man1
-cat whois.1 | gzip -9c > $PKG/usr/man/man1/whois.1.gz
+# Remove mkpasswd stuff:
+find $PKG -iname "mkpasswd*" -exec rm -f {} \;
mkdir -p $PKG/usr/doc/whois-$VERSION
cp -a \
- COPYING* README \
+ COPYING README \
$PKG/usr/doc/whois-$VERSION
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
diff --git a/source/n/wireless-tools/scripts/rc.wireless b/source/n/wireless-tools/scripts/rc.wireless
index baa148dc7..5d5c4be5b 100644
--- a/source/n/wireless-tools/scripts/rc.wireless
+++ b/source/n/wireless-tools/scripts/rc.wireless
@@ -48,6 +48,11 @@
# 23/apr/2008 * Pat Volkerding * Increase sleep time after bringing up an
# interface to 3 seconds. Some drivers
# need this additional time to initalize.
+# 02/jan/2010 * Pat Volkerding * Look for /sys/class/net/$NETDEV/wireless rather
+# than the contents of /proc/net/wireless to find
+# if a network device is wireless. In newer
+# kernels devices will not show up in
+# /proc/net/wireless until active.
# ------------------------------------------------------------------------------
LOGGER=${LOGGER:-cat}
@@ -82,7 +87,7 @@ is_wireless_device ()
#LC_ALL=C $IWPATH/iwconfig $1 2>&1 | \
# grep -Eiq "no wireless extensions|no such device" || return 0
#return 1
- if ! grep `echo ${1}: | cut -f 1 -d :`: /proc/net/wireless 1> /dev/null ; then
+ if [ ! -d /sys/class/net/${1}/wireless ]; then
# no wireless interface
return 1
else
diff --git a/source/n/wireless-tools/wireless_tools.SlackBuild b/source/n/wireless-tools/wireless_tools.SlackBuild
index 049fb47e0..2e78f0f9c 100755
--- a/source/n/wireless-tools/wireless_tools.SlackBuild
+++ b/source/n/wireless-tools/wireless_tools.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,9 +22,17 @@
VERSION=29
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-5}
-
+BUILD=${BUILD:-6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
diff --git a/source/n/wpa_supplicant/wpa_supplicant.SlackBuild b/source/n/wpa_supplicant/wpa_supplicant.SlackBuild
index a38fed35b..b3acc5834 100755
--- a/source/n/wpa_supplicant/wpa_supplicant.SlackBuild
+++ b/source/n/wpa_supplicant/wpa_supplicant.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2004-2008 Eric Hameleers, Eindhoven, NL
-# Copyright 2008-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008-2010 Patrick J. Volkerding, Sebeka, MN, USA
# Permission to use, copy, modify, and distribute this software for
# any purpose with or without fee is hereby granted, provided that
# the above copyright notice and this permission notice appear in all
@@ -21,10 +21,19 @@
# SUCH DAMAGE.
# -----------------------------------------------------------------------------
-PRGNAM=wpa_supplicant
-VERSION=${VERSION:-0.6.9}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+PKGNAM=wpa_supplicant
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -45,6 +54,9 @@ elif [ "$ARCH" = "arm" ]; then
elif [ "$ARCH" = "armel" ]; then
SLKCFLAGS="-O2 -march=armv4t"
LIBDIRSUFFIX=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
# Support for some of the wireless drivers needs the header files of those
@@ -59,19 +71,19 @@ BROADCOM_INCLUDES=""
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
-if ! [ -f $CWD/${PRGNAM}.defconfig ]; then
- echo "Could not find ${PRGNAM}.defconfig!"
+if ! [ -f $CWD/${PKGNAM}.defconfig ]; then
+ echo "Could not find ${PKGNAM}.defconfig!"
exit 1
fi
cd $TMP
-rm -rf ${PRGNAM}-${VERSION}
-tar -xvf $CWD/${PRGNAM}-${VERSION}.tar.bz2 || exit 1
-cd ${PRGNAM}-${VERSION}
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-${VERSION}.tar.?z* || exit 1
+cd ${PKGNAM}-${VERSION}
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -87,7 +99,7 @@ find . \
cd wpa_supplicant
# Create the configuration file for building wpa_supplicant:
-cat $CWD/${PRGNAM}.defconfig > .config
+cat $CWD/${PKGNAM}.defconfig > .config
if [ ! -z $MADWIFI_INCLUDES -a -d $MADWIFI_INCLUDES ]; then
echo "Adding madwifi driver (Atheros) support"
cat <<-EOT >> .config
@@ -162,7 +174,7 @@ done
# Install a default configuration file:
mkdir -p $PKG/etc
cat <<-_EOT_ > $PKG/etc/wpa_supplicant.conf.new
- # See /usr/doc/${PRGNAM}-${VERSION}/wpa_supplicant.conf.sample
+ # See /usr/doc/${PKGNAM}-${VERSION}/wpa_supplicant.conf.sample
# for many more options that you can use in this file.
# This line enables the use of wpa_cli which is used by rc.wireless
@@ -219,11 +231,11 @@ config etc/dbus-1/system.d/dbus-wpa_supplicant.conf.new
EOINS
# Add the documentation:
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a $CWD/README.slackware $PKG/usr/doc/${PRGNAM}-${VERSION}/
-chmod -R a-w $PKG/usr/doc/$PRGNAM-$VERSION/*
-chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION/*
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a $DOCS $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a $CWD/README.slackware $PKG/usr/doc/${PKGNAM}-${VERSION}/
+chmod -R a-w $PKG/usr/doc/$PKGNAM-$VERSION/*
+chown -R root:root $PKG/usr/doc/$PKGNAM-$VERSION/*
# This should only be read/write by root:
chmod 600 $PKG/etc/wpa_supplicant.conf.new
@@ -244,5 +256,5 @@ fi
# Build the package:
cd $PKG
-/sbin/makepkg -l y -c n $TMP/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.txz
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-${VERSION}-${ARCH}-${BUILD}.txz
diff --git a/source/n/yptools/yp-tools-2.12.tar.bz2.sign b/source/n/yptools/yp-tools-2.12.tar.bz2.sign
new file mode 100644
index 000000000..a06fde67a
--- /dev/null
+++ b/source/n/yptools/yp-tools-2.12.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBLzsykyGugalF9Dw4RAtmgAJ4sG0TJzmNkAz7Z+JJFfOjvGlbTGACgir1a
++uaNv6XQNH7Vu+Saqy/OsL8=
+=EcSX
+-----END PGP SIGNATURE-----
diff --git a/source/n/yptools/yp-tools-2.9.tar.bz2.sign b/source/n/yptools/yp-tools-2.9.tar.bz2.sign
deleted file mode 100644
index 2eaf4b97d..000000000
--- a/source/n/yptools/yp-tools-2.9.tar.bz2.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.2.1 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBA1tX5yGugalF9Dw4RApxKAJ4wnAJLtV+fLyqydt6C7/jlHI0S+ACeN8d9
-z4e9NxBySBZBdFi8xwGxHTo=
-=JakC
------END PGP SIGNATURE-----
diff --git a/source/n/yptools/ypbind-mt-1.19.1.tar.bz2.sign b/source/n/yptools/ypbind-mt-1.19.1.tar.bz2.sign
deleted file mode 100644
index 183edfaed..000000000
--- a/source/n/yptools/ypbind-mt-1.19.1.tar.bz2.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.2.6 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBCyRFDyGugalF9Dw4RAlOUAJ4kDj2kmYi2cVZqf0dLBlwexfqWhwCfTORG
-5qMKKLSrKQ8Mx/1l/ffOmDk=
-=zaLU
------END PGP SIGNATURE-----
diff --git a/source/n/yptools/ypbind-mt-1.31.tar.bz2.sign b/source/n/yptools/ypbind-mt-1.31.tar.bz2.sign
new file mode 100644
index 000000000..1e40e59de
--- /dev/null
+++ b/source/n/yptools/ypbind-mt-1.31.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD4DBQBLE+GAyGugalF9Dw4RAtllAJdwcdicAyMwnl/BtkHP+DnYseD9AJ4vS2ly
+HHNnyMFZ2A0tun7/Lt7Psw==
+=ob7L
+-----END PGP SIGNATURE-----
diff --git a/source/n/yptools/ypserv-2.18.tar.bz2.sign b/source/n/yptools/ypserv-2.18.tar.bz2.sign
deleted file mode 100644
index 017a6d21c..000000000
--- a/source/n/yptools/ypserv-2.18.tar.bz2.sign
+++ /dev/null
@@ -1,8 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.2.6 (GNU/Linux)
-Comment: See http://www.kernel.org/signature.html for info
-
-iD8DBQBC3lhmyGugalF9Dw4RArUaAJwP88PBcrq6A8W7600Aa1MOIeySugCfW02y
-jYf0vlXo93Vs13VQWcCzzo0=
-=ZIYE
------END PGP SIGNATURE-----
diff --git a/source/n/yptools/ypserv-2.23.tar.bz2.sign b/source/n/yptools/ypserv-2.23.tar.bz2.sign
new file mode 100644
index 000000000..9687e760a
--- /dev/null
+++ b/source/n/yptools/ypserv-2.23.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBLg+CRyGugalF9Dw4RAlGVAJ0Sokt5e5bQg6J8Hq4zUyrTY8g2kQCfaNyD
+sBJmO9Igqzku/yLWqtU2WKw=
+=dTwr
+-----END PGP SIGNATURE-----
diff --git a/source/n/yptools/yptools.SlackBuild b/source/n/yptools/yptools.SlackBuild
index 96f217245..3c98a8e3a 100755
--- a/source/n/yptools/yptools.SlackBuild
+++ b/source/n/yptools/yptools.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,14 +22,23 @@
# Package version number:
-VERSION=2.9
-ARCH=${ARCH:-x86_64}
+VERSION=2.12
BUILD=${BUILD:-1}
YPTOOLS=$VERSION
-YPBINDMT=1.19.1
+YPBINDMT=1.31
#YPMAKE=0.11
-YPSERV=2.18
+YPSERV=2.23
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -40,6 +49,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
diff --git a/source/t/tetex/tetex.SlackBuild b/source/t/tetex/tetex.SlackBuild
index f19273323..e813490d0 100755
--- a/source/t/tetex/tetex.SlackBuild
+++ b/source/t/tetex/tetex.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,9 +22,19 @@
VERSION=3.0
-ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-8}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-6}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -35,6 +45,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
# There were so many local security problems with this shared fontcache
@@ -58,6 +70,8 @@ mkdir -p /usr/share/texmf
tar xvf $CWD/tetex-texmf-$VERSION.tar.xz
chown -R root:root .
find . -type f -perm 666 -exec chmod 644 {} \;
+ # Change the sell-by date:
+ zcat $CWD/tetex.leet.diff.gz | patch -p1 --verbose || exit 1
)
cd $TMP
rm -rf tetex-src-$VERSION
@@ -91,6 +105,16 @@ zcat $CWD/tetex.amstex.fmtutil.diff.gz | patch -p1 --verbose || exit 1
# Don't leave texconfig junk in $TMP:
zcat $CWD/tetex.tmp.cleanup.diff.gz | patch -p1 --verbose || exit 1
+# Fix the cpascal header so there's no conflict with getline() in the
+# generated C code:
+zcat $CWD/tetex.cpascal.getline.posix.2008.diff.gz | patch -p1 --verbose || exit 1
+
+# Patch for libpng-1.4.0:
+zcat $CWD/tetex.png14.diff.gz | patch -p1 --verbose || exit 1
+
+# Another problem caused by getline() in glibc:
+zcat $CWD/tetex.afm2tfm.getline.diff.gz | patch -p1 --verbose || exit 1
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure --prefix=/usr/share/texmf \
diff --git a/source/t/tetex/tetex.afm2tfm.getline.diff b/source/t/tetex/tetex.afm2tfm.getline.diff
new file mode 100644
index 000000000..8406aa891
--- /dev/null
+++ b/source/t/tetex/tetex.afm2tfm.getline.diff
@@ -0,0 +1,38 @@
+--- ./texk/dvipsk/afm2tfm.c.orig 2005-01-30 07:17:09.000000000 -0600
++++ ./texk/dvipsk/afm2tfm.c 2010-02-19 11:56:12.000000000 -0600
+@@ -257,7 +257,7 @@
+ }
+
+ int
+-getline P1H(void) {
++afm_int_getline P1H(void) {
+ register char *p ;
+ register int c ;
+
+@@ -606,7 +606,7 @@
+ ai = newchar() ;
+ ai->adobenum = -1 ;
+ ai->adobename = "||" ; /* boundary character name */
+- while (getline()) {
++ while (afm_int_getline()) {
+ switch(interest(paramstring())) {
+ case FontName:
+ fontname = paramnewstring() ;
+@@ -1882,7 +1882,7 @@
+
+ while (1) {
+ while (param == 0 || *param == 0) {
+- if (getline() == 0)
++ if (afm_int_getline() == 0)
+ error("! premature end in encoding file") ;
+ for (p=buffer; *p; p++)
+ if (*p == '%') {
+@@ -1973,7 +1973,7 @@
+ p = gettoken() ;
+ if (strcmp(p, "]"))
+ error("! token 258 in encoding must be make-array (])") ;
+- while (getline()) {
++ while (afm_int_getline()) {
+ for (p=buffer; *p; p++)
+ if (*p == '%') {
+ if (ignoreligkern == 0)
diff --git a/source/t/tetex/tetex.cpascal.getline.posix.2008.diff b/source/t/tetex/tetex.cpascal.getline.posix.2008.diff
new file mode 100644
index 000000000..879adc441
--- /dev/null
+++ b/source/t/tetex/tetex.cpascal.getline.posix.2008.diff
@@ -0,0 +1,17 @@
+--- ./texk/web2c/cpascal.h.orig 2004-08-28 15:49:59.000000000 -0500
++++ ./texk/web2c/cpascal.h 2010-02-19 11:27:04.000000000 -0600
+@@ -241,6 +241,14 @@
+ #define getname vms_getname
+ #endif
+
++/* Apparently POSIX 2008 has getline and glibc 2.9.90 exports it.
++ tangle, weave, et al. use that symbol; try to define it away so
++ something that a standard won't usurp. */
++#ifdef getline
++#undef getline
++#endif
++#define getline web2c_getline
++
+ /* Declarations for the routines we provide ourselves in lib/. */
+
+ extern string basenamechangesuffix P3H(const_string,const_string,const_string);
diff --git a/source/t/tetex/tetex.leet.diff b/source/t/tetex/tetex.leet.diff
new file mode 100644
index 000000000..fe251893b
--- /dev/null
+++ b/source/t/tetex/tetex.leet.diff
@@ -0,0 +1,25 @@
+--- ./tex/latex/base/latex.ltx.orig 2004-03-13 20:19:52.000000000 -0600
++++ ./tex/latex/base/latex.ltx 2010-05-17 12:59:23.000000000 -0500
+@@ -525,11 +525,11 @@
+ \advance\count@\month
+ \advance\count@-#2\relax}
+ \expandafter\reserved@a\fmtversion\@nil
+-\ifnum\count@>65
++\ifnum\count@>16044
+ \typeout{^^J%
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
+ ! You are attempting to make a LaTeX format from a source file^^J%
+-! That is more than five years old.^^J%
++! That is more than 1337 years old.^^J%
+ !^^J%
+ ! If you enter <return> to scroll past this message then the format^^J%
+ ! will be built, but please consider obtaining newer source files^^J%
+@@ -537,7 +537,7 @@
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
+ }
+ \errhelp{To avoid this error message, obtain new LaTeX sources.}
+- \errmessage{LaTeX source files more than 5 years old!}
++ \errmessage{LaTeX source files more than 1337 years old!}
+ \fi
+ \let\reserved@a\relax
+ \fi
diff --git a/source/t/tetex/tetex.png14.diff b/source/t/tetex/tetex.png14.diff
new file mode 100644
index 000000000..4f6548ace
--- /dev/null
+++ b/source/t/tetex/tetex.png14.diff
@@ -0,0 +1,33 @@
+--- ./texk/dvipdfm/pngimage.c.orig 2002-12-25 11:51:16.000000000 -0600
++++ ./texk/dvipdfm/pngimage.c 2010-02-19 11:43:18.000000000 -0600
+@@ -42,7 +42,7 @@
+ rewind (png_file);
+ if (fread (sigbytes, 1, sizeof(sigbytes), png_file) !=
+ sizeof(sigbytes) ||
+- (!png_check_sig (sigbytes, sizeof(sigbytes))))
++ (!(png_sig_cmp(sigbytes, 0, sizeof(sigbytes)) == 0)))
+ return 0;
+ else
+ return 1;
+--- ./texk/dvipdfm/thumbnail.c.orig 2002-12-25 11:51:16.000000000 -0600
++++ ./texk/dvipdfm/thumbnail.c 2010-02-19 11:42:41.000000000 -0600
+@@ -79,7 +79,7 @@
+ }
+ if (fread (sigbytes, 1, sizeof(sigbytes), thumb_file) !=
+ sizeof(sigbytes) ||
+- (!png_check_sig (sigbytes, sizeof(sigbytes)))) {
++ (!(png_sig_cmp(sigbytes, 0, sizeof(sigbytes)) == 0))) {
+ fprintf (stderr, "\nThumbnail not a png file! Skipping\n");
+ return NULL;
+ }
+--- ./libs/gd/gd_png.c.orig 2004-10-28 13:09:52.000000000 -0500
++++ ./libs/gd/gd_png.c 2010-02-19 11:52:06.000000000 -0600
+@@ -143,7 +143,7 @@
+ /* first do a quick check that the file really is a PNG image; could
+ * have used slightly more general png_sig_cmp() function instead */
+ gdGetBuf (sig, 8, infile);
+- if (!png_check_sig (sig, 8))
++ if (!(png_sig_cmp(sig, 0, 8) == 0))
+ return NULL; /* bad signature */
+
+ #ifndef PNG_SETJMP_NOT_SUPPORTED
diff --git a/source/t/transfig/transfig.SlackBuild b/source/t/transfig/transfig.SlackBuild
index 70aa22133..051fb8a3b 100755
--- a/source/t/transfig/transfig.SlackBuild
+++ b/source/t/transfig/transfig.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,8 +23,17 @@
PKGNAM=transfig
VERSION=${VERSION:-3.2.4}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -61,8 +70,10 @@ find . \
zcat $CWD/transfig.diff.gz | sed -e "s#/usr/lib/#/usr/lib${LIBDIRSUFFIX}/#" \
| patch -p1 --verbose || exit 1
zcat $CWD/transfig.3.2.4-gcc4.patch.gz | patch -p1 --verbose || exit 1
-xmkmf
-make Makefiles
+zcat $CWD/transfig.png14.nodither.diff.gz | patch -p1 --verbose || exit 1
+
+xmkmf || exit 1
+make Makefiles || exit 1
# Build and install:
make $NUMJOBS || make || exit 1
diff --git a/source/t/transfig/transfig.png14.nodither.diff b/source/t/transfig/transfig.png14.nodither.diff
new file mode 100644
index 000000000..3964955ad
--- /dev/null
+++ b/source/t/transfig/transfig.png14.nodither.diff
@@ -0,0 +1,11 @@
+--- ./fig2dev/dev/readpng.c.orig 2002-12-18 16:40:35.000000000 -0600
++++ ./fig2dev/dev/readpng.c 2010-02-19 19:25:54.000000000 -0600
+@@ -127,7 +127,7 @@
+
+ if (png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette)) {
+ png_get_hIST(png_ptr, info_ptr, &histogram);
+- png_set_dither(png_ptr, palette, num_palette, 256, histogram, 0);
++ /* png_set_dither(png_ptr, palette, num_palette, 256, histogram, 0); */
+ }
+ }
+ if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
diff --git a/source/t/xfig/xfig.SlackBuild b/source/t/xfig/xfig.SlackBuild
index 010106ad0..00145d311 100755
--- a/source/t/xfig/xfig.SlackBuild
+++ b/source/t/xfig/xfig.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2007,2008,2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,8 +22,17 @@
VERSION=3.2.4
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-5}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -69,8 +78,11 @@ zcat $CWD/xfig.no.xfig_ref_en.pdf.diff.gz | patch -E -p1 --verbose || exit 1
# Use Firefox and xpdf, not netscape and acroread:
zcat $CWD/xfig.fig.ad.diff.gz | patch -E -p1 --verbose || exit 1
zcat $CWD/xfig.docs.location.diff.gz | patch -E -p1 --verbose || exit 1
+# Drop a call to a function no longer included in libpng-1.4.0 (by default,
+# anyway) to see if it really matters.
+zcat $CWD/xfig.png14.nodither.diff.gz | patch -p1 --verbose || exit 1
-xmkmf
+xmkmf || exit 1
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
make install.man DESTDIR=$PKG || exit 1
@@ -84,12 +96,20 @@ gzip -9 $PKG/usr/man/man1/*
mkdir -p $PKG/usr/doc/xfig-$VERSION
cp -a \
- CHANGES FIGAPPS LATEX.AND.XFIG README \
+ FIGAPPS LATEX.AND.XFIG README \
$PKG/usr/doc/xfig-$VERSION
( cd $PKG/usr/doc/xfig-$VERSION
ln -sf /usr/lib${LIBDIRSUFFIX}/X11/xfig/Libraries Libraries
)
+# If there's a CHANGES file, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/t/xfig/xfig.png14.nodither.diff b/source/t/xfig/xfig.png14.nodither.diff
new file mode 100644
index 000000000..512e236ab
--- /dev/null
+++ b/source/t/xfig/xfig.png14.nodither.diff
@@ -0,0 +1,11 @@
+--- ./f_readpng.c.orig 2002-09-19 16:07:59.000000000 -0500
++++ ./f_readpng.c 2010-02-19 19:31:42.000000000 -0600
+@@ -133,7 +133,7 @@
+
+ if (png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette)) {
+ png_get_hIST(png_ptr, info_ptr, &histogram);
+- png_set_dither(png_ptr, palette, num_palette, 256, histogram, 0);
++ /* png_set_dither(png_ptr, palette, num_palette, 256, histogram, 0); */
+ }
+ }
+ if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
diff --git a/source/tcl/tcl/tcl.SlackBuild b/source/tcl/tcl/tcl.SlackBuild
index 2d65ec5fa..596305f0b 100755
--- a/source/tcl/tcl/tcl.SlackBuild
+++ b/source/tcl/tcl/tcl.SlackBuild
@@ -21,11 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-8.5.7}
+VERSION=${VERSION:-8.5.8}
# See also version number 8.5 in the symlinks below...)
-ARCH=${ARCH:-x86_64}
BUILD=1
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-tcl
@@ -75,6 +84,7 @@ CFLAGS="$SLKCFLAGS" \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--enable-shared \
+ --enable-threads \
--enable-man-symlinks \
--enable-man-compression=gzip \
${CONFARGS} \
diff --git a/source/tcl/tclx/tclx.SlackBuild b/source/tcl/tclx/tclx.SlackBuild
index b8ca23e9c..f6d538cea 100755
--- a/source/tcl/tclx/tclx.SlackBuild
+++ b/source/tcl/tclx/tclx.SlackBuild
@@ -23,10 +23,18 @@
PKGNAM=tclx
VERSION=${VERSION:-8.4}
-ARCH=${ARCH:-x86_64}
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
-
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -69,6 +77,7 @@ CFLAGS="$SLKCFLAGS" \
--with-tcl=/usr/lib${LIBDIRSUFFIX} \
--enable-tk=YES \
--enable-shared \
+ --enable-threads \
--enable-64bit \
--build=$ARCH-slackware-linux
diff --git a/source/tcl/tix/tix.SlackBuild b/source/tcl/tix/tix.SlackBuild
index 2f83a6d65..56b62f555 100755
--- a/source/tcl/tix/tix.SlackBuild
+++ b/source/tcl/tix/tix.SlackBuild
@@ -24,9 +24,18 @@
PKGNAM=tix
VERSION=8.4.3
-ARCH=${ARCH:-x86_64}
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -64,6 +73,7 @@ CFLAGS="$SLKCFLAGS" \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--enable-shared \
+ --enable-threads \
--with-tcl=/usr/lib${LIBDIRSUFFIX} \
--with-tk=/usr/lib${LIBDIRSUFFIX} \
--build=$ARCH-slackware-linux
diff --git a/source/tcl/tk/tk.SlackBuild b/source/tcl/tk/tk.SlackBuild
index 90f191ceb..32a183d3c 100755
--- a/source/tcl/tk/tk.SlackBuild
+++ b/source/tcl/tk/tk.SlackBuild
@@ -21,11 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-8.5.7}
+VERSION=${VERSION:-8.5.8}
# See also version number 8.5 in the symlinks below...)
-ARCH=${ARCH:-x86_64}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -75,6 +84,7 @@ CFLAGS="$SLKCFLAGS" \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--enable-shared \
+ --enable-threads \
--enable-64bit \
--enable-man-symlinks \
--enable-man-compression=gzip \
diff --git a/source/x/dejavu-fonts-ttf/dejavu-fonts-ttf.SlackBuild b/source/x/dejavu-fonts-ttf/dejavu-fonts-ttf.SlackBuild
index 68bac2327..6bbaa8212 100755
--- a/source/x/dejavu-fonts-ttf/dejavu-fonts-ttf.SlackBuild
+++ b/source/x/dejavu-fonts-ttf/dejavu-fonts-ttf.SlackBuild
@@ -21,7 +21,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-2.29}
+VERSION=${VERSION:-2.30}
ARCH=noarch
BUILD=1
diff --git a/source/x/fontconfig/doinst.sh b/source/x/fontconfig/doinst.sh
new file mode 100644
index 000000000..6a4802323
--- /dev/null
+++ b/source/x/fontconfig/doinst.sh
@@ -0,0 +1,7 @@
+# Update the X font indexes:
+if [ -x /usr/bin/fc-cache ]; then
+ /usr/bin/fc-cache -f
+fi
+# else we'll catch it later with setup.fontconfig :-)
+# make links:
+
diff --git a/source/x/fontconfig/fontconfig.SlackBuild b/source/x/fontconfig/fontconfig.SlackBuild
index 4714b824f..5feb6fd90 100755
--- a/source/x/fontconfig/fontconfig.SlackBuild
+++ b/source/x/fontconfig/fontconfig.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.6.0
-export ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo fontconfig-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -39,6 +49,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -46,7 +59,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf fontconfig-$VERSION
-tar xvf $CWD/fontconfig-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/fontconfig-$VERSION.tar.?z* || exit 1
cd fontconfig-$VERSION
chown -R root:root .
find . \
@@ -55,8 +68,6 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-FCPREFIX=/usr
-
# The wonderful extended version of the font so generously
# opened up for free modification and distribution by one
# for the previously proprietary font founderies, and that
@@ -71,30 +82,32 @@ zcat $CWD/fontconfig.font.dir.list.diff.gz | patch -p1 --verbose --backup --suff
CFLAGS=$SLKCFLAGS \
./configure \
- --prefix=$FCPREFIX \
- --libdir=$FCPREFIX/lib${LIBDIRSUFFIX} \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
--mandir=/usr/man \
--sysconfdir=/etc \
- --localstatedir=/var
+ --localstatedir=/var \
+ --build=$ARCH-slackware-linux
# Uses a currently non-functional sgml tool, thus '-i':
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-# This ought to be easily found here, but it's still safer to move it:
-if [ ! -d $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig ]; then
- mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig
- mv ${PKG}${FCPREFIX}/lib${LIBDIRSUFFIX}/pkgconfig/* $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig
- rmdir ${PKG}${FCPREFIX}/lib${LIBDIRSUFFIX}/pkgconfig
-fi
-
mkdir -p $PKG/usr/doc/fontconfig-$VERSION
cp -a \
AUTHORS COPYING* INSTALL NEWS README \
$PKG/usr/doc/fontconfig-$VERSION
# You can shop for this kind of stuff in the source tarball.
-rm -rf ${PKG}${FCPREFIX}/share/doc
-rmdir ${PKG}${FCPREFIX}/share
+rm -rf $PKG/usr/share/doc
+rmdir $PKG/usr/share 2>/dev/null
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
mkdir -p $PKG/var/log/setup
cat $CWD/setup.05.fontconfig > $PKG/var/log/setup/setup.05.fontconfig
@@ -133,8 +146,8 @@ if [ ! $? = 0 ]; then
fi
# Fix manpages:
-if [ -d ${PKG}${FCPREFIX}/man ]; then
- ( cd ${PKG}${FCPREFIX}/man
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
for manpagedir in $(find . -type d -name "man*") ; do
( cd $manpagedir
for eachpage in $( find . -type l -maxdepth 1) ; do
@@ -148,16 +161,8 @@ if [ -d ${PKG}${FCPREFIX}/man ]; then
fi
mkdir $PKG/install
-cat << EOF >> $PKG/install/doinst.sh
-#!/bin/sh
-# Update the X font indexes:
-if [ -x /usr/bin/fc-cache ]; then
- /usr/bin/fc-cache -f
-fi
-# else we'll catch it later with setup.fontconfig :-)
-# make links:
-EOF
cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $TMP/fontconfig-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/x/fontconfig/fontconfig.dejavu.diff b/source/x/fontconfig/fontconfig.dejavu.diff
index 95f8e71e1..af71a44bd 100644
--- a/source/x/fontconfig/fontconfig.dejavu.diff
+++ b/source/x/fontconfig/fontconfig.dejavu.diff
@@ -1,5 +1,6 @@
---- ./conf.d/45-latin.conf.orig 2008-05-03 20:02:06.000000000 -0500
-+++ ./conf.d/45-latin.conf 2008-09-17 21:57:28.000000000 -0500
+diff -Nur fontconfig-2.8.0.orig/conf.d/45-latin.conf fontconfig-2.8.0/conf.d/45-latin.conf
+--- fontconfig-2.8.0.orig/conf.d/45-latin.conf 2009-11-16 11:24:52.000000000 -0600
++++ fontconfig-2.8.0/conf.d/45-latin.conf 2009-12-01 21:45:42.639936724 -0600
@@ -10,9 +10,9 @@
Serif faces
-->
@@ -30,11 +31,12 @@
<family>DejaVu Sans Mono</family>
<family>Liberation Mono</family>
+ <family>Bitstream Vera Sans Mono</family>
+ <family>Inconsolata</family>
<family>Courier New</family>
<family>Courier</family>
- <family>Andale Mono</family>
---- ./conf.d/60-latin.conf.orig 2008-05-03 21:17:18.000000000 -0500
-+++ ./conf.d/60-latin.conf 2008-09-17 21:56:37.000000000 -0500
+diff -Nur fontconfig-2.8.0.orig/conf.d/60-latin.conf fontconfig-2.8.0/conf.d/60-latin.conf
+--- fontconfig-2.8.0.orig/conf.d/60-latin.conf 2009-11-16 11:24:52.000000000 -0600
++++ fontconfig-2.8.0/conf.d/60-latin.conf 2009-12-01 21:46:39.925935327 -0600
@@ -4,8 +4,8 @@
<alias>
<family>serif</family>
@@ -62,6 +64,6 @@
- <family>Bitstream Vera Sans Mono</family>
<family>DejaVu Sans Mono</family>
+ <family>Bitstream Vera Sans Mono</family>
+ <family>Inconsolata</family>
<family>Andale Mono</family>
<family>Courier New</family>
- <family>Cumberland AMT</family>
diff --git a/source/x/fontconfig/fontconfig.font.dir.list.diff b/source/x/fontconfig/fontconfig.font.dir.list.diff
index a11ef0b6d..1e68b0d12 100644
--- a/source/x/fontconfig/fontconfig.font.dir.list.diff
+++ b/source/x/fontconfig/fontconfig.font.dir.list.diff
@@ -1,24 +1,25 @@
---- ./fonts.conf.in.orig 2007-10-25 16:14:27.000000000 -0500
-+++ ./fonts.conf.in 2008-09-22 15:42:21.000000000 -0500
+diff -Nur fontconfig-2.8.0.orig/fonts.conf.in fontconfig-2.8.0/fonts.conf.in
+--- fontconfig-2.8.0.orig/fonts.conf.in 2009-06-28 12:48:47.000000000 -0500
++++ fontconfig-2.8.0/fonts.conf.in 2009-12-01 21:48:48.134935536 -0600
@@ -23,10 +23,21 @@
<!-- Font directory list -->
- <dir>@FC_DEFAULT_FONTS@</dir>
- @FC_FONTPATH@
-+ <dir>/usr/share/fonts/OTF</dir>
-+ <dir>/usr/share/fonts/TTF</dir>
-+ <dir>/usr/share/fonts/Type1</dir>
-+ <dir>/usr/share/fonts/Speedo</dir>
-+ <dir>/usr/share/fonts/cyrillic</dir>
-+ <dir>/usr/share/fonts/misc</dir>
++ <dir>/usr/share/fonts/OTF</dir>
++ <dir>/usr/share/fonts/TTF</dir>
++ <dir>/usr/share/fonts/Type1</dir>
++ <dir>/usr/share/fonts/Speedo</dir>
++ <dir>/usr/share/fonts/cyrillic</dir>
++ <dir>/usr/share/fonts/misc</dir>
<dir>~/.fonts</dir>
+<!-- Commented out font directories:
+These are not indexed by default, as fontconfig then seems
+to prefer bitmapped fonts in some cases...
-+ <dir>/usr/share/fonts/100dpi</dir>
-+ <dir>/usr/share/fonts/75dpi</dir>
++ <dir>/usr/share/fonts/100dpi</dir>
++ <dir>/usr/share/fonts/75dpi</dir>
+-->
+
<!--
diff --git a/source/x/libdrm/libdrm.SlackBuild b/source/x/libdrm/libdrm.SlackBuild
index 5250cff64..fff398a10 100755
--- a/source/x/libdrm/libdrm.SlackBuild
+++ b/source/x/libdrm/libdrm.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PKGNAM=libdrm
-VERSION=${VERSION:-2.4.12}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine architecture for build & packaging:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
@@ -39,15 +48,21 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.xz || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION
+# Fix missing definitions in drm_mode.h:
+zcat $CWD/libdrm.uint32_t.diff.gz | patch -p1 --verbose || exit 1
+
# Make sure ownerships and permissions are sane:
chown -R root:root .
find . \
@@ -62,6 +77,8 @@ CFLAGS="$SLKCFLAGS" \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--enable-udev \
+ --enable-nouveau-experimental-api \
+ --enable-vmwgfx-experimental-api \
--build=$ARCH-slackware-linux
# Build and install:
diff --git a/source/x/libdrm/libdrm.uint32_t.diff b/source/x/libdrm/libdrm.uint32_t.diff
new file mode 100644
index 000000000..571d72ac1
--- /dev/null
+++ b/source/x/libdrm/libdrm.uint32_t.diff
@@ -0,0 +1,11 @@
+--- ./include/drm/drm_mode.h.orig 2010-01-21 12:45:40.000000000 -0600
++++ ./include/drm/drm_mode.h 2010-02-22 13:16:36.000000000 -0600
+@@ -307,6 +307,8 @@
+ #define DRM_MODE_PAGE_FLIP_EVENT 0x01
+ #define DRM_MODE_PAGE_FLIP_FLAGS DRM_MODE_PAGE_FLIP_EVENT
+
++#include <stdint.h> /* needed for uint32_t and uint64_t typedefs */
++
+ struct drm_mode_crtc_page_flip {
+ uint32_t crtc_id;
+ uint32_t fb_id;
diff --git a/source/x/mesa/mesa.SlackBuild b/source/x/mesa/mesa.SlackBuild
index 88696e3f9..d4579625d 100755
--- a/source/x/mesa/mesa.SlackBuild
+++ b/source/x/mesa/mesa.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,13 +21,23 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PKGNAM=mesa
-VERSION=${VERSION:-7.5}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo MesaLib-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+PKG_VERSION=${VERSION}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
# Be sure this list is up-to-date:
-#DRI_DRIVERS="i810,i915,i965,mach64,mga,nouveau,r128,r200,r300,radeon,s3v,savage,sis,tdfx,trident,unichrome,ffb,swrast"
-DRI_DRIVERS="i810,i915,i965,mach64,mga,r128,r200,r300,radeon,s3v,savage,sis,tdfx,trident,unichrome,ffb,swrast"
+DRI_DRIVERS="i810,i915,i965,mach64,mga,r128,r200,r300,r600,radeon,savage,sis,tdfx,unichrome,swrast"
NUMJOBS=${NUMJOBS:--j8}
@@ -50,9 +60,9 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf Mesa-${VERSION}
-tar xvf $CWD/MesaLib-$VERSION.tar.xz || exit 1
-tar xvf $CWD/MesaGLUT-$VERSION.tar.xz || exit 1
-tar xvf $CWD/MesaDemos-$VERSION.tar.xz || exit 1
+tar xvf $CWD/MesaLib-${PKG_VERSION}.tar.?z* || exit 1
+tar xvf $CWD/MesaGLUT-${PKG_VERSION}.tar.?z* || exit 1
+tar xvf $CWD/MesaDemos-${PKG_VERSION}.tar.?z* || exit 1
cd Mesa-$VERSION
# Make sure ownerships and permissions are sane:
@@ -77,17 +87,22 @@ CFLAGS="$SLKCFLAGS" \
# Nobody else is enabling this. Seems like it's asking for trouble.
# --enable-xcb
+# This doesn't seem to build - maybe it needs something else...
+# --enable-gallium-nouveau
+
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-# Install gears and glinfo manually, and make symlinks from the names
-# of the deprecated similar programs to reduce confusion:
+# Install gears and glinfo:
mkdir -p $PKG/usr/bin
cp -a progs/demos/gears $PKG/usr/bin/gears
cp -a progs/demos/glinfo $PKG/usr/bin/glinfo
-( cd $PKG/usr/bin
- ln -sf glinfo glxinfo
- ln -sf gears glxgears
+
+# Install some "demos":
+( cd progs/xdemos
+ cp glthreads glxcontexts glxdemo glxgears glxgears_fbconfig glxheads \
+ glxinfo glxpbdemo glxpixmap \
+ $PKG/usr/bin
)
# Strip binaries:
@@ -117,14 +132,14 @@ if [ -d $PKG/usr/info ]; then
)
fi
-mkdir -p $PKG/usr/doc/Mesa-$VERSION/html
-cp -a COPYING docs/relnotes-$VERSION.html $PKG/usr/doc/Mesa-$VERSION
+mkdir -p $PKG/usr/doc/Mesa-$PKG_VERSION/html
+cp -a COPYING docs/relnotes-$VERSION.html $PKG/usr/doc/Mesa-$PKG_VERSION
rm -f docs/relnotes*.html docs/RELNOTES*
-cp -a docs/*.html $PKG/usr/doc/Mesa-$VERSION/html
+cp -a docs/*.html $PKG/usr/doc/Mesa-$PKG_VERSION/html
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$PKG_VERSION-$ARCH-$BUILD.txz
diff --git a/source/x/mesa/mesa.url b/source/x/mesa/mesa.url
new file mode 100644
index 000000000..f4efeae63
--- /dev/null
+++ b/source/x/mesa/mesa.url
@@ -0,0 +1 @@
+ftp://ftp.freedesktop.org/pub/mesa/
diff --git a/source/x/x11/build/compiz b/source/x/x11/build/compiz
deleted file mode 100644
index b8626c4cf..000000000
--- a/source/x/x11/build/compiz
+++ /dev/null
@@ -1 +0,0 @@
-4
diff --git a/source/x/x11/build/font-adobe-100dpi b/source/x/x11/build/font-adobe-100dpi
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-adobe-100dpi
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-adobe-75dpi b/source/x/x11/build/font-adobe-75dpi
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-adobe-75dpi
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-adobe-utopia-100dpi b/source/x/x11/build/font-adobe-utopia-100dpi
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-adobe-utopia-100dpi
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-adobe-utopia-75dpi b/source/x/x11/build/font-adobe-utopia-75dpi
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-adobe-utopia-75dpi
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-adobe-utopia-type1 b/source/x/x11/build/font-adobe-utopia-type1
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-adobe-utopia-type1
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-arabic-misc b/source/x/x11/build/font-arabic-misc
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-arabic-misc
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-bh-100dpi b/source/x/x11/build/font-bh-100dpi
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-bh-100dpi
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-bh-75dpi b/source/x/x11/build/font-bh-75dpi
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-bh-75dpi
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-bh-lucidatypewriter-100dpi b/source/x/x11/build/font-bh-lucidatypewriter-100dpi
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-bh-lucidatypewriter-100dpi
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-bh-lucidatypewriter-75dpi b/source/x/x11/build/font-bh-lucidatypewriter-75dpi
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-bh-lucidatypewriter-75dpi
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-bh-ttf b/source/x/x11/build/font-bh-ttf
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-bh-ttf
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-bh-type1 b/source/x/x11/build/font-bh-type1
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-bh-type1
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-bitstream-100dpi b/source/x/x11/build/font-bitstream-100dpi
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-bitstream-100dpi
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-bitstream-75dpi b/source/x/x11/build/font-bitstream-75dpi
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-bitstream-75dpi
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-bitstream-speedo b/source/x/x11/build/font-bitstream-speedo
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-bitstream-speedo
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-bitstream-type1 b/source/x/x11/build/font-bitstream-type1
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-bitstream-type1
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-cronyx-cyrillic b/source/x/x11/build/font-cronyx-cyrillic
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-cronyx-cyrillic
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-cursor-misc b/source/x/x11/build/font-cursor-misc
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-cursor-misc
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-daewoo-misc b/source/x/x11/build/font-daewoo-misc
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-daewoo-misc
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-dec-misc b/source/x/x11/build/font-dec-misc
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-dec-misc
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-ibm-type1 b/source/x/x11/build/font-ibm-type1
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-ibm-type1
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-isas-misc b/source/x/x11/build/font-isas-misc
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-isas-misc
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-jis-misc b/source/x/x11/build/font-jis-misc
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-jis-misc
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-micro-misc b/source/x/x11/build/font-micro-misc
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-micro-misc
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-misc-cyrillic b/source/x/x11/build/font-misc-cyrillic
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-misc-cyrillic
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-misc-ethiopic b/source/x/x11/build/font-misc-ethiopic
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-misc-ethiopic
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-misc-meltho b/source/x/x11/build/font-misc-meltho
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-misc-meltho
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-misc-misc b/source/x/x11/build/font-misc-misc
deleted file mode 100644
index b8626c4cf..000000000
--- a/source/x/x11/build/font-misc-misc
+++ /dev/null
@@ -1 +0,0 @@
-4
diff --git a/source/x/x11/build/font-mutt-misc b/source/x/x11/build/font-mutt-misc
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-mutt-misc
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-schumacher-misc b/source/x/x11/build/font-schumacher-misc
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-schumacher-misc
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-screen-cyrillic b/source/x/x11/build/font-screen-cyrillic
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-screen-cyrillic
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-sony-misc b/source/x/x11/build/font-sony-misc
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-sony-misc
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-sun-misc b/source/x/x11/build/font-sun-misc
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-sun-misc
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/font-winitzki-cyrillic b/source/x/x11/build/font-winitzki-cyrillic
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/font-winitzki-cyrillic
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/imake b/source/x/x11/build/imake
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/imake
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/libXScrnSaver b/source/x/x11/build/libXScrnSaver
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXScrnSaver
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXau b/source/x/x11/build/libXau
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXau
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXcomposite b/source/x/x11/build/libXcomposite
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXcomposite
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXcursor b/source/x/x11/build/libXcursor
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXcursor
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXdamage b/source/x/x11/build/libXdamage
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXdamage
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXdmcp b/source/x/x11/build/libXdmcp
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXdmcp
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXfixes b/source/x/x11/build/libXfixes
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXfixes
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXfontcache b/source/x/x11/build/libXfontcache
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXfontcache
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXft b/source/x/x11/build/libXft
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXft
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXinerama b/source/x/x11/build/libXinerama
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXinerama
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXmu b/source/x/x11/build/libXmu
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXmu
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXpm b/source/x/x11/build/libXpm
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXpm
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXrender b/source/x/x11/build/libXrender
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXrender
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXres b/source/x/x11/build/libXres
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXres
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXtst b/source/x/x11/build/libXtst
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXtst
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXv b/source/x/x11/build/libXv
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXv
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXvMC b/source/x/x11/build/libXvMC
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXvMC
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXxf86dga b/source/x/x11/build/libXxf86dga
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXxf86dga
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXxf86misc b/source/x/x11/build/libXxf86misc
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXxf86misc
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libXxf86vm b/source/x/x11/build/libXxf86vm
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libXxf86vm
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libdmx b/source/x/x11/build/libdmx
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libdmx
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libfontenc b/source/x/x11/build/libfontenc
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libfontenc
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/liblbxutil b/source/x/x11/build/liblbxutil
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/liblbxutil
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libpthread-stubs b/source/x/x11/build/libpthread-stubs
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libpthread-stubs
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/libxkbfile b/source/x/x11/build/libxkbfile
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/libxkbfile
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/listres b/source/x/x11/build/listres
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/listres
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/luit b/source/x/x11/build/luit
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/luit
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/makedepend b/source/x/x11/build/makedepend
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/makedepend
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/mkcomposecache b/source/x/x11/build/mkcomposecache
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/mkcomposecache
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/mkfontdir b/source/x/x11/build/mkfontdir
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/mkfontdir
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/recordproto b/source/x/x11/build/recordproto
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/recordproto
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/resourceproto b/source/x/x11/build/resourceproto
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/resourceproto
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/scrnsaverproto b/source/x/x11/build/scrnsaverproto
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/scrnsaverproto
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/smproxy b/source/x/x11/build/smproxy
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/smproxy
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/twm b/source/x/x11/build/twm
index 0cfbf0888..00750edc0 100644
--- a/source/x/x11/build/twm
+++ b/source/x/x11/build/twm
@@ -1 +1 @@
-2
+3
diff --git a/source/x/x11/build/videoproto b/source/x/x11/build/videoproto
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/videoproto
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/viewres b/source/x/x11/build/viewres
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/viewres
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/x11perf b/source/x/x11/build/x11perf
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/x11perf
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xauth b/source/x/x11/build/xauth
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xauth
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xbacklight b/source/x/x11/build/xbacklight
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xbacklight
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xbiff b/source/x/x11/build/xbiff
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xbiff
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xbitmaps b/source/x/x11/build/xbitmaps
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xbitmaps
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xcalc b/source/x/x11/build/xcalc
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xcalc
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xclipboard b/source/x/x11/build/xclipboard
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xclipboard
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xclock b/source/x/x11/build/xclock
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xclock
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xcmiscproto b/source/x/x11/build/xcmiscproto
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xcmiscproto
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xcmsdb b/source/x/x11/build/xcmsdb
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xcmsdb
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xcompmgr b/source/x/x11/build/xcompmgr
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xcompmgr
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xcursor-themes b/source/x/x11/build/xcursor-themes
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xcursor-themes
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xcursorgen b/source/x/x11/build/xcursorgen
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xcursorgen
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xdriinfo b/source/x/x11/build/xdriinfo
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xdriinfo
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xev b/source/x/x11/build/xev
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xev
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xeyes b/source/x/x11/build/xeyes
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xeyes
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/appres b/source/x/x11/build/xf86-input-vmmouse
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/appres
+++ b/source/x/x11/build/xf86-input-vmmouse
diff --git a/source/x/x11/build/bdftopcf b/source/x/x11/build/xf86-video-apm
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/bdftopcf
+++ b/source/x/x11/build/xf86-video-apm
diff --git a/source/x/x11/build/bigreqsproto b/source/x/x11/build/xf86-video-ast
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/bigreqsproto
+++ b/source/x/x11/build/xf86-video-ast
diff --git a/source/x/x11/build/xf86-video-ati b/source/x/x11/build/xf86-video-ati
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xf86-video-ati
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/bitmap b/source/x/x11/build/xf86-video-cirrus
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/bitmap
+++ b/source/x/x11/build/xf86-video-cirrus
diff --git a/source/x/x11/build/compositeproto b/source/x/x11/build/xf86-video-glint
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/compositeproto
+++ b/source/x/x11/build/xf86-video-glint
diff --git a/source/x/x11/build/damageproto b/source/x/x11/build/xf86-video-i128
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/damageproto
+++ b/source/x/x11/build/xf86-video-i128
diff --git a/source/x/x11/build/dmxproto b/source/x/x11/build/xf86-video-i740
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/dmxproto
+++ b/source/x/x11/build/xf86-video-i740
diff --git a/source/x/x11/build/editres b/source/x/x11/build/xf86-video-mach64
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/editres
+++ b/source/x/x11/build/xf86-video-mach64
diff --git a/source/x/x11/build/encodings b/source/x/x11/build/xf86-video-mga
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/encodings
+++ b/source/x/x11/build/xf86-video-mga
diff --git a/source/x/x11/build/evieext b/source/x/x11/build/xf86-video-neomagic
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/evieext
+++ b/source/x/x11/build/xf86-video-neomagic
diff --git a/source/x/x11/build/xf86-video-nsc b/source/x/x11/build/xf86-video-nsc
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xf86-video-nsc
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xf86-video-openchrome b/source/x/x11/build/xf86-video-openchrome
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xf86-video-openchrome
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/fixesproto b/source/x/x11/build/xf86-video-r128
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/fixesproto
+++ b/source/x/x11/build/xf86-video-r128
diff --git a/source/x/x11/build/font-alias b/source/x/x11/build/xf86-video-s3
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/font-alias
+++ b/source/x/x11/build/xf86-video-s3
diff --git a/source/x/x11/build/font-util b/source/x/x11/build/xf86-video-s3virge
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/font-util
+++ b/source/x/x11/build/xf86-video-s3virge
diff --git a/source/x/x11/build/font-xfree86-type1 b/source/x/x11/build/xf86-video-savage
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/font-xfree86-type1
+++ b/source/x/x11/build/xf86-video-savage
diff --git a/source/x/x11/build/fontcacheproto b/source/x/x11/build/xf86-video-sis
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/fontcacheproto
+++ b/source/x/x11/build/xf86-video-sis
diff --git a/source/x/x11/build/fontsproto b/source/x/x11/build/xf86-video-sisusb
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/fontsproto
+++ b/source/x/x11/build/xf86-video-sisusb
diff --git a/source/x/x11/build/iceauth b/source/x/x11/build/xf86-video-tdfx
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/iceauth
+++ b/source/x/x11/build/xf86-video-tdfx
diff --git a/source/x/x11/build/xf86-video-v4l b/source/x/x11/build/xf86-video-v4l
index 0cfbf0888..00750edc0 100644
--- a/source/x/x11/build/xf86-video-v4l
+++ b/source/x/x11/build/xf86-video-v4l
@@ -1 +1 @@
-2
+3
diff --git a/source/x/x11/build/kbproto b/source/x/x11/build/xf86-video-vesa
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/kbproto
+++ b/source/x/x11/build/xf86-video-vesa
diff --git a/source/x/x11/build/lbxproxy b/source/x/x11/build/xf86-video-vmware
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/lbxproxy
+++ b/source/x/x11/build/xf86-video-vmware
diff --git a/source/x/x11/build/libICE b/source/x/x11/build/xf86-video-voodoo
index 0cfbf0888..0cfbf0888 100644
--- a/source/x/x11/build/libICE
+++ b/source/x/x11/build/xf86-video-voodoo
diff --git a/source/x/x11/build/xf86bigfontproto b/source/x/x11/build/xf86bigfontproto
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xf86bigfontproto
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xf86dgaproto b/source/x/x11/build/xf86dgaproto
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xf86dgaproto
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xf86driproto b/source/x/x11/build/xf86driproto
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xf86driproto
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xf86miscproto b/source/x/x11/build/xf86miscproto
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xf86miscproto
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xf86vidmodeproto b/source/x/x11/build/xf86vidmodeproto
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xf86vidmodeproto
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xgamma b/source/x/x11/build/xgamma
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xgamma
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xhost b/source/x/x11/build/xhost
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xhost
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xineramaproto b/source/x/x11/build/xineramaproto
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xineramaproto
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xkbevd b/source/x/x11/build/xkbevd
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xkbevd
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xkbprint b/source/x/x11/build/xkbprint
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xkbprint
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xkbutils b/source/x/x11/build/xkbutils
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xkbutils
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xkill b/source/x/x11/build/xkill
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xkill
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xlogo b/source/x/x11/build/xlogo
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xlogo
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xlsatoms b/source/x/x11/build/xlsatoms
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xlsatoms
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xlsclients b/source/x/x11/build/xlsclients
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xlsclients
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xmag b/source/x/x11/build/xmag
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xmag
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xman b/source/x/x11/build/xman
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xman
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xmessage b/source/x/x11/build/xmessage
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xmessage
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xmodmap b/source/x/x11/build/xmodmap
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xmodmap
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xorg-cf-files b/source/x/x11/build/xorg-cf-files
deleted file mode 100644
index 00750edc0..000000000
--- a/source/x/x11/build/xorg-cf-files
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/source/x/x11/build/xorg-docs b/source/x/x11/build/xorg-docs
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xorg-docs
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xorg-sgml-doctools b/source/x/x11/build/xorg-sgml-doctools
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xorg-sgml-doctools
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xpr b/source/x/x11/build/xpr
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xpr
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xprop b/source/x/x11/build/xprop
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xprop
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xproxymanagementprotocol b/source/x/x11/build/xproxymanagementprotocol
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xproxymanagementprotocol
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xrdb b/source/x/x11/build/xrdb
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xrdb
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xrefresh b/source/x/x11/build/xrefresh
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xrefresh
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xset b/source/x/x11/build/xset
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xset
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xsetroot b/source/x/x11/build/xsetroot
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xsetroot
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xvidtune b/source/x/x11/build/xvidtune
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xvidtune
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xvinfo b/source/x/x11/build/xvinfo
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xvinfo
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/build/xwud b/source/x/x11/build/xwud
deleted file mode 100644
index 0cfbf0888..000000000
--- a/source/x/x11/build/xwud
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/source/x/x11/configure/font-util b/source/x/x11/configure/font-util
new file mode 100644
index 000000000..698241b33
--- /dev/null
+++ b/source/x/x11/configure/font-util
@@ -0,0 +1,12 @@
+CFLAGS=$SLKCFLAGS \
+CXXFLAGS=$SLKCFLAGS \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --with-fontrootdir=/usr/share/fonts \
+ --disable-static \
+ --build=$ARCH-slackware-linux
diff --git a/source/x/x11/configure/xf86-input-vmmouse b/source/x/x11/configure/xf86-input-vmmouse
new file mode 100644
index 000000000..1b99250b6
--- /dev/null
+++ b/source/x/x11/configure/xf86-input-vmmouse
@@ -0,0 +1,15 @@
+CFLAGS=$SLKCFLAGS \
+CXXFLAGS=$SLKCFLAGS \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --disable-static \
+ --with-hal-bin-dir=/usr/bin \
+ --with-hal-callouts-dir=/usr/libexec \
+ --with-hal-fdi-dir=/usr/share/hal/fdi/policy/10osvendor \
+ --with-udev-rules-dir=none \
+ --build=$ARCH-slackware-linux
diff --git a/source/x/x11/configure/xf86-video-ati b/source/x/x11/configure/xf86-video-ati
index 6e41b488e..ae2458849 100644
--- a/source/x/x11/configure/xf86-video-ati
+++ b/source/x/x11/configure/xf86-video-ati
@@ -1,9 +1,11 @@
-xserver_source="/tmp/x11-build/xorg-server-1.6.2"
+xserver_source="/tmp/x11-build/xorg-server-1.7.5"
-if [ ! -d "$xserver_source" ]; then
- echo "$xserver_source does not exist, and you need it."
- exit 1
-fi
+# Let these just fail to build. In any case, an "exit 1"
+# here is just plain wrong.
+#if [ ! -d "$xserver_source" ]; then
+# echo "$xserver_source does not exist, and you need it."
+# exit 1
+#fi
CFLAGS="$SLKCFLAGS -I${xserver_source}/hw/xfree86/ramdac" \
CXXFLAGS="$SLKCFLAGS -I${xserver_source}/hw/xfree86/ramdac" \
diff --git a/source/x/x11/configure/xf86-video-nv b/source/x/x11/configure/xf86-video-nv
index 6e41b488e..ae2458849 100644
--- a/source/x/x11/configure/xf86-video-nv
+++ b/source/x/x11/configure/xf86-video-nv
@@ -1,9 +1,11 @@
-xserver_source="/tmp/x11-build/xorg-server-1.6.2"
+xserver_source="/tmp/x11-build/xorg-server-1.7.5"
-if [ ! -d "$xserver_source" ]; then
- echo "$xserver_source does not exist, and you need it."
- exit 1
-fi
+# Let these just fail to build. In any case, an "exit 1"
+# here is just plain wrong.
+#if [ ! -d "$xserver_source" ]; then
+# echo "$xserver_source does not exist, and you need it."
+# exit 1
+#fi
CFLAGS="$SLKCFLAGS -I${xserver_source}/hw/xfree86/ramdac" \
CXXFLAGS="$SLKCFLAGS -I${xserver_source}/hw/xfree86/ramdac" \
diff --git a/source/x/x11/configure/xorg-server b/source/x/x11/configure/xorg-server
index b66600258..943797bfd 100644
--- a/source/x/x11/configure/xorg-server
+++ b/source/x/x11/configure/xorg-server
@@ -7,7 +7,7 @@ BUILD_SERVERS="--enable-xorg \
--enable-xsdl \
--enable-xfbdev"
-MESA_VERSION=${MESA_VERSION:-7.5}
+MESA_VERSION=${MESA_VERSION:-7.5} # unused in 1.7.x
# Default font paths to be used by the X server
DEF_FONTPATH="/usr/share/fonts/local,/usr/share/fonts/TTF,/usr/share/fonts/OTF,/usr/share/fonts/Type1,/usr/share/fonts/misc,/usr/share/fonts/CID,/usr/share/fonts/75dpi/:unscaled,/usr/share/fonts/100dpi/:unscaled,/usr/share/fonts/75dpi,/usr/share/fonts/100dpi,/usr/share/fonts/cyrillic"
@@ -26,9 +26,8 @@ CFLAGS="$SLKCFLAGS" \
--with-default-font-path="${DEF_FONTPATH}" \
--with-module-dir=/usr/lib${LIBDIRSUFFIX}/xorg/modules \
--with-dri-driver-path=/usr/lib${LIBDIRSUFFIX}/xorg/modules/dri \
- --with-os-name="Slackware 13.0" \
+ --with-os-name="Slackware 13.1" \
--with-os-vendor="Slackware Linux Project" \
- --with-mesa-source=/tmp/Mesa-${MESA_VERSION} \
--with-xkb-path=/etc/X11/xkb \
--with-xkb-output=/var/lib/xkb \
$BUILD_SERVERS \
diff --git a/source/x/x11/modularize b/source/x/x11/modularize
index fd192efba..d915fd212 100644
--- a/source/x/x11/modularize
+++ b/source/x/x11/modularize
@@ -67,7 +67,6 @@ imake
inputproto
intel-gpu-tools
kbproto
-lbxproxy
libAppleWM
libFS
libICE
@@ -107,7 +106,6 @@ libXxf86misc
libXxf86vm
libdmx
libfontenc
-liblbxutil
libpciaccess
libpthread-stubs
libxcb
@@ -198,6 +196,7 @@ xf86-input-tek4957
xf86-input-ur98
xf86-input-vmmouse
xf86-input-void
+xf86-input-wacom
xf86-video-geode
xf86-video-apm
xf86-video-ark
diff --git a/source/x/x11/patch/compiz.patch b/source/x/x11/patch/compiz.patch
deleted file mode 100644
index c2920994d..000000000
--- a/source/x/x11/patch/compiz.patch
+++ /dev/null
@@ -1,3 +0,0 @@
-zcat $CWD/patch/compiz/compiz-0.7.8-kde42-crash.patch.gz | patch -p1 --verbose || exit 1
-zcat $CWD/patch/compiz/compiz-0.7.8-kde42-krunner.patch.gz | patch -p1 --verbose || exit 1
-zcat $CWD/patch/compiz/compiz-0.7.8-kde42.patch.gz | patch -p1 --verbose || exit 1
diff --git a/source/x/x11/patch/compiz/compiz-0.7.8-kde42-crash.patch b/source/x/x11/patch/compiz/compiz-0.7.8-kde42-crash.patch
deleted file mode 100644
index 00f89e2cd..000000000
--- a/source/x/x11/patch/compiz/compiz-0.7.8-kde42-crash.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-Implement KDecorationBridge unstable API, needed for KDE 4.2.
----
-
-diff --git a/kde/window-decorator-kde4/window.cpp b/kde/window-decorator-kde4/window.cpp
-index d2d362b..68c856b 100644
---- a/kde/window-decorator-kde4/window.cpp
-+++ b/kde/window-decorator-kde4/window.cpp
-@@ -764,6 +764,31 @@ KWD::Window::grabXServer (bool)
- }
-
- void
-+KWD::Window::repaintShadow (void)
-+{
-+}
-+
-+bool
-+KWD::Window::compositingActive (void) const
-+{
-+ return true;
-+}
-+
-+bool
-+KWD::Window::shadowsActive (void) const
-+{
-+ /* we are drawing the shadows ourselves, no need for the
-+ decoration engine to do so */
-+ return false;
-+}
-+
-+double
-+KWD::Window::opacity (void) const
-+{
-+ return 1.0;
-+}
-+
-+void
- KWD::Window::createDecoration (void)
- {
- KDecoration *decor;
-diff --git a/kde/window-decorator-kde4/window.h b/kde/window-decorator-kde4/window.h
-index bdf2c47..034e6fe 100644
---- a/kde/window-decorator-kde4/window.h
-+++ b/kde/window-decorator-kde4/window.h
-@@ -45,7 +45,7 @@ class QMenu;
-
- namespace KWD
- {
--class Window:public QWidget, public KDecorationBridge {
-+class Window:public QWidget, public KDecorationBridgeUnstable {
- Q_OBJECT public:
-
- enum Type
-@@ -104,6 +104,12 @@ class Window:public QWidget, public KDecorationBridge {
- virtual Qt::WFlags initialWFlags (void) const;
- virtual void grabXServer (bool grab);
-
-+ /* unstable API */
-+ virtual void repaintShadow ();
-+ virtual bool compositingActive () const;
-+ virtual bool shadowsActive () const;
-+ virtual double opacity () const;
-+
- void handleActiveChange (void);
- void updateFrame (WId frame);
- void updateWindowGeometry (void);
-
diff --git a/source/x/x11/patch/compiz/compiz-0.7.8-kde42-krunner.patch b/source/x/x11/patch/compiz/compiz-0.7.8-kde42-krunner.patch
deleted file mode 100644
index 3de71af82..000000000
--- a/source/x/x11/patch/compiz/compiz-0.7.8-kde42-krunner.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/kde/window-decorator-kde4/decorator.cpp b/kde/window-decorator-kde4/decorator.cpp
-index 96b818d..0bf4718 100644
---- a/kde/window-decorator-kde4/decorator.cpp
-+++ b/kde/window-decorator-kde4/decorator.cpp
-@@ -649,9 +649,10 @@ KWD::Decorator::x11EventFilter (XEvent *xevent)
- }
- else if (action == Atoms::toolkitActionRunDialogAtom)
- {
-- QDBusInterface krunner ("org.kde.krunner", "/Interface",
-- "org.kde.krunner.Interface");
-- krunner.call ("display", "");
-+ QDBusInterface krunner ("org.kde.krunner", "/App",
-+ "org.kde.krunner.App");
-+ if (krunner.isValid ())
-+ krunner.call ("display");
- }
- else if (action == Atoms::toolkitActionForceQuitDialogAtom)
- {
-
diff --git a/source/x/x11/patch/compiz/compiz-0.7.8-kde42.patch b/source/x/x11/patch/compiz/compiz-0.7.8-kde42.patch
deleted file mode 100644
index 0f9962233..000000000
--- a/source/x/x11/patch/compiz/compiz-0.7.8-kde42.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-diff -ur compiz-0.7.8/configure compiz-0.7.8-kde42/configure
---- compiz-0.7.8/configure 2008-09-17 13:34:28.000000000 +0200
-+++ compiz-0.7.8-kde42/configure 2008-12-01 19:07:49.000000000 +0100
-@@ -25429,7 +25429,7 @@
- kde4libs=`kde4-config --install lib --expandvars 2>/dev/null`
- kde4incs=`kde4-config --install include --expandvars 2>/dev/null`
-
-- kde4_test_includes="kdecoration.h kcommondecoration.h kdecorationbridge.h plasma/panelsvg.h"
-+ kde4_test_includes="kdecoration.h kcommondecoration.h kdecorationbridge.h plasma/framesvg.h"
-
- { echo "$as_me:$LINENO: checking for KWin headers" >&5
- echo $ECHO_N "checking for KWin headers... $ECHO_C" >&6; }
-diff -ur compiz-0.7.8/configure.ac compiz-0.7.8-kde42/configure.ac
---- compiz-0.7.8/configure.ac 2008-09-17 13:33:40.000000000 +0200
-+++ compiz-0.7.8-kde42/configure.ac 2008-12-01 19:07:33.000000000 +0100
-@@ -487,7 +487,7 @@
- kde4libs=`kde4-config --install lib --expandvars 2>/dev/null`
- kde4incs=`kde4-config --install include --expandvars 2>/dev/null`
-
-- kde4_test_includes="kdecoration.h kcommondecoration.h kdecorationbridge.h plasma/panelsvg.h"
-+ kde4_test_includes="kdecoration.h kcommondecoration.h kdecorationbridge.h plasma/framesvg.h"
-
- dnl Check for KWin headers
- AC_MSG_CHECKING([for KWin headers])
-diff -ur compiz-0.7.8/kde/window-decorator-kde4/switcher.cpp compiz-0.7.8-kde42/kde/window-decorator-kde4/switcher.cpp
---- compiz-0.7.8/kde/window-decorator-kde4/switcher.cpp 2008-08-08 13:20:31.000000000 +0200
-+++ compiz-0.7.8-kde42/kde/window-decorator-kde4/switcher.cpp 2008-12-01 19:13:18.000000000 +0100
-@@ -30,7 +30,7 @@
-
- #include <fixx11h.h>
-
--#include <KDE/Plasma/PanelSvg>
-+#include <KDE/Plasma/FrameSvg>
- #include <KDE/Plasma/Theme>
-
- #include <kwindowsystem.h>
-@@ -46,9 +46,9 @@
- QColor color;
- color = Plasma::Theme::defaultTheme ()->color (Plasma::Theme::TextColor);
-
-- mBackground = new Plasma::PanelSvg();
-+ mBackground = new Plasma::FrameSvg();
- mBackground->setImagePath ("dialogs/background");
-- mBackground->setEnabledBorders(Plasma::PanelSvg::AllBorders);
-+ mBackground->setEnabledBorders(Plasma::FrameSvg::AllBorders);
-
- mBorder.left = mBackground->marginSize(Plasma::LeftMargin);
- mBorder.right = mBackground->marginSize(Plasma::RightMargin);
-@@ -131,8 +131,8 @@
- p.setCompositionMode (QPainter::CompositionMode_Source);
- p.setRenderHint (QPainter::SmoothPixmapTransform);
-
-- mBackground->resizePanel (QSizeF (contentWidth, contentHeight));
-- mBackground->paintPanel (&p, QRect (0, 0, contentWidth,
-+ mBackground->resizeFrame (QSizeF (contentWidth, contentHeight));
-+ mBackground->paintFrame (&p, QRect (0, 0, contentWidth,
- contentHeight));
-
- mBackgroundPixmap = mPixmap.copy (mBorder.left, mBorder.top,
-@@ -168,7 +168,7 @@
- p.setCompositionMode (QPainter::CompositionMode_Source);
-
-
-- mBackground->paintPanel (&p, QRect (mBorder.left, mBorder.top +
-+ mBackground->paintFrame (&p, QRect (mBorder.left, mBorder.top +
- mGeometry.height () + 5, mGeometry.width (),
- fm.height ()));
-
-diff -ur compiz-0.7.8/kde/window-decorator-kde4/switcher.h compiz-0.7.8-kde42/kde/window-decorator-kde4/switcher.h
---- compiz-0.7.8/kde/window-decorator-kde4/switcher.h 2008-08-08 13:20:31.000000000 +0200
-+++ compiz-0.7.8-kde42/kde/window-decorator-kde4/switcher.h 2008-12-01 19:28:37.000000000 +0100
-@@ -30,7 +30,7 @@
-
- namespace Plasma
- {
--class PanelSvg;
-+class FrameSvg;
- }
-
- class QSpacerItem;
-@@ -70,7 +70,7 @@
-
- QRect mGeometry;
-
-- Plasma::PanelSvg *mBackground;
-+ Plasma::FrameSvg *mBackground;
- QPixmap mPixmap;
- QPixmap mBackgroundPixmap;
-
diff --git a/source/x/x11/patch/xcursorgen.patch b/source/x/x11/patch/xcursorgen.patch
new file mode 100644
index 000000000..5aa46dee5
--- /dev/null
+++ b/source/x/x11/patch/xcursorgen.patch
@@ -0,0 +1 @@
+zcat $CWD/patch/xcursorgen/xcursorgen.png14.configure.kludge.diff.gz | patch -p1 --verbose || exit 1
diff --git a/source/x/x11/patch/xcursorgen/xcursorgen.png14.configure.kludge.diff b/source/x/x11/patch/xcursorgen/xcursorgen.png14.configure.kludge.diff
new file mode 100644
index 000000000..ad7ae105c
--- /dev/null
+++ b/source/x/x11/patch/xcursorgen/xcursorgen.png14.configure.kludge.diff
@@ -0,0 +1,61 @@
+--- ./configure.orig 2009-10-16 19:42:25.000000000 -0500
++++ ./configure 2010-02-21 13:57:53.000000000 -0600
+@@ -5043,12 +5043,12 @@
+ pkg_cv_XCURSORGEN_CFLAGS="$XCURSORGEN_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"x11 xcursor libpng12\"") >&5
+- ($PKG_CONFIG --exists --print-errors "x11 xcursor libpng12") 2>&5
++ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"x11 xcursor libpng14\"") >&5
++ ($PKG_CONFIG --exists --print-errors "x11 xcursor libpng14") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- pkg_cv_XCURSORGEN_CFLAGS=`$PKG_CONFIG --cflags "x11 xcursor libpng12" 2>/dev/null`
++ pkg_cv_XCURSORGEN_CFLAGS=`$PKG_CONFIG --cflags "x11 xcursor libpng14" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+@@ -5059,12 +5059,12 @@
+ pkg_cv_XCURSORGEN_LIBS="$XCURSORGEN_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"x11 xcursor libpng12\"") >&5
+- ($PKG_CONFIG --exists --print-errors "x11 xcursor libpng12") 2>&5
++ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"x11 xcursor libpng14\"") >&5
++ ($PKG_CONFIG --exists --print-errors "x11 xcursor libpng14") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- pkg_cv_XCURSORGEN_LIBS=`$PKG_CONFIG --libs "x11 xcursor libpng12" 2>/dev/null`
++ pkg_cv_XCURSORGEN_LIBS=`$PKG_CONFIG --libs "x11 xcursor libpng14" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+@@ -5082,14 +5082,14 @@
+ _pkg_short_errors_supported=no
+ fi
+ if test $_pkg_short_errors_supported = yes; then
+- XCURSORGEN_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "x11 xcursor libpng12" 2>&1`
++ XCURSORGEN_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "x11 xcursor libpng14" 2>&1`
+ else
+- XCURSORGEN_PKG_ERRORS=`$PKG_CONFIG --print-errors "x11 xcursor libpng12" 2>&1`
++ XCURSORGEN_PKG_ERRORS=`$PKG_CONFIG --print-errors "x11 xcursor libpng14" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$XCURSORGEN_PKG_ERRORS" >&5
+
+- { { $as_echo "$as_me:$LINENO: error: Package requirements (x11 xcursor libpng12) were not met:
++ { { $as_echo "$as_me:$LINENO: error: Package requirements (x11 xcursor libpng14) were not met:
+
+ $XCURSORGEN_PKG_ERRORS
+
+@@ -5100,7 +5100,7 @@
+ and XCURSORGEN_LIBS to avoid the need to call pkg-config.
+ See the pkg-config man page for more details.
+ " >&5
+-$as_echo "$as_me: error: Package requirements (x11 xcursor libpng12) were not met:
++$as_echo "$as_me: error: Package requirements (x11 xcursor libpng14) were not met:
+
+ $XCURSORGEN_PKG_ERRORS
+
diff --git a/source/x/x11/patch/xf86-input-synaptics.patch b/source/x/x11/patch/xf86-input-synaptics.patch
new file mode 100644
index 000000000..f41034c37
--- /dev/null
+++ b/source/x/x11/patch/xf86-input-synaptics.patch
@@ -0,0 +1,4 @@
+# Enable tap-to-click out of the box, closing one of the
+# most reported bugs of the last 2 years or so.
+# Thanks to Piter Punk for figuring out the proper fix!
+zcat $CWD/patch/xf86-input-synaptics/xf86-input-synaptics.tap-to-click.diff.gz | patch -p1 --verbose || exit 1
diff --git a/source/x/x11/patch/xf86-input-synaptics/xf86-input-synaptics.tap-to-click.diff b/source/x/x11/patch/xf86-input-synaptics/xf86-input-synaptics.tap-to-click.diff
new file mode 100644
index 000000000..2fdf4e0d1
--- /dev/null
+++ b/source/x/x11/patch/xf86-input-synaptics/xf86-input-synaptics.tap-to-click.diff
@@ -0,0 +1,11 @@
+--- ./fdi/11-x11-synaptics.fdi.orig 2009-10-11 18:11:21.000000000 -0500
++++ ./fdi/11-x11-synaptics.fdi 2010-04-24 12:59:37.000000000 -0500
+@@ -3,6 +3,8 @@
+ <device>
+ <match key="info.capabilities" contains="input.touchpad">
+ <merge key="input.x11_driver" type="string">synaptics</merge>
++ <!-- Enable tap click by default: -->
++ <merge key="input.x11_options.TapButton1" type="string">1</merge>
+ <!-- Arbitrary options can be passed to the driver using
+ the input.x11_options property since xorg-server-1.5. -->
+ <!-- EXAMPLES:
diff --git a/source/x/x11/patch/xorg-server.patch b/source/x/x11/patch/xorg-server.patch
index 41aa4270d..16cf61e36 100644
--- a/source/x/x11/patch/xorg-server.patch
+++ b/source/x/x11/patch/xorg-server.patch
@@ -1 +1,2 @@
zcat $CWD/patch/xorg-server/x11.startwithblackscreen.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patch/xorg-server/xorg-server.fb.fbpict.c.mod.diff.gz | patch -p1 --verbose || exit 1
diff --git a/source/x/x11/patch/xorg-server/xorg-server.fb.fbpict.c.mod.diff b/source/x/x11/patch/xorg-server/xorg-server.fb.fbpict.c.mod.diff
new file mode 100644
index 000000000..f8abdccb2
--- /dev/null
+++ b/source/x/x11/patch/xorg-server/xorg-server.fb.fbpict.c.mod.diff
@@ -0,0 +1,11 @@
+--- ./fb/fbpict.c.orig 2010-03-11 22:38:21.000000000 -0600
++++ ./fb/fbpict.c 2010-04-29 14:14:52.000000000 -0500
+@@ -37,7 +37,7 @@
+ #include "mipict.h"
+ #include "fbpict.h"
+
+-#define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b))
++#define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-(a)) % (b))
+
+ void
+ fbWalkCompositeRegion (CARD8 op,
diff --git a/source/x/x11/patch/xscope.patch b/source/x/x11/patch/xscope.patch
deleted file mode 100644
index a41588a0b..000000000
--- a/source/x/x11/patch/xscope.patch
+++ /dev/null
@@ -1 +0,0 @@
-zcat $CWD/patch/xscope/xscope-1.1-scope.c.diff.gz | patch -p1 --verbose || exit 1
diff --git a/source/x/x11/patch/xscope/xscope-1.1-scope.c.diff b/source/x/x11/patch/xscope/xscope-1.1-scope.c.diff
deleted file mode 100644
index 2c01dbac2..000000000
--- a/source/x/x11/patch/xscope/xscope-1.1-scope.c.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nur xscope-1.1.orig/scope.c xscope-1.1/scope.c
---- xscope-1.1.orig/scope.c 2008-09-22 21:18:16.000000000 -0500
-+++ xscope-1.1/scope.c 2009-04-08 23:54:12.230818270 -0500
-@@ -58,6 +58,7 @@
- #include <errno.h>
- #include <unistd.h>
- #include <netdb.h>
-+#include <linux/param.h>
-
- #ifdef SYSV
- #define bzero(s,l) memset(s, 0, l)
diff --git a/source/x/x11/post-install/twm/xinitrc.twm b/source/x/x11/post-install/twm/xinitrc.twm
index 1bb5185e6..fb97e2e27 100644
--- a/source/x/x11/post-install/twm/xinitrc.twm
+++ b/source/x/x11/post-install/twm/xinitrc.twm
@@ -3,8 +3,8 @@
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
-sysresources=/usr/lib/X11/xinit/.Xresources
-sysmodmap=/usr/lib/X11/xinit/.Xmodmap
+sysresources=/etc/X11/xinit/.Xresources
+sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
diff --git a/source/x/x11/post-install/util-macros.post-install b/source/x/x11/post-install/util-macros.post-install
new file mode 100644
index 000000000..b25fb344b
--- /dev/null
+++ b/source/x/x11/post-install/util-macros.post-install
@@ -0,0 +1,2 @@
+mkdir -p $PKG/usr/lib
+mv $PKG/usr/share/pkgconfig $PKG/usr/lib
diff --git a/source/x/x11/post-install/xdm.post-install b/source/x/x11/post-install/xdm.post-install
index 05e37163e..83dcf7889 100644
--- a/source/x/x11/post-install/xdm.post-install
+++ b/source/x/x11/post-install/xdm.post-install
@@ -14,3 +14,6 @@ chmod 755 $PKG/etc/X11/xdm/Xsession $PKG/etc/X11/xdm/Xsetup_0
mv Xservers Xservers.new
mv Xsession Xsession.new
)
+mkdir -p $PKG/var/lib/xdm
+chown root:root $PKG/var/lib/xdm
+chmod 755 $PKG/var/lib/xdm
diff --git a/source/x/x11/post-install/xf86-input-synaptics.post-install b/source/x/x11/post-install/xf86-input-synaptics.post-install
index d7de8a4e0..00250982e 100644
--- a/source/x/x11/post-install/xf86-input-synaptics.post-install
+++ b/source/x/x11/post-install/xf86-input-synaptics.post-install
@@ -4,6 +4,6 @@ cat fdi/11-x11-synaptics.fdi > \
mkdir -p $PKG/usr/doc/xf86-input-synaptics-$MODULAR_PACKAGE_VERSION
cp -a \
- NEWS README TODO \
+ README TODO \
$PKG/usr/doc/xf86-input-synaptics-$MODULAR_PACKAGE_VERSION
diff --git a/source/x/x11/post-install/xf86-input-wacom.post-install b/source/x/x11/post-install/xf86-input-wacom.post-install
new file mode 100644
index 000000000..226678f4d
--- /dev/null
+++ b/source/x/x11/post-install/xf86-input-wacom.post-install
@@ -0,0 +1,4 @@
+mv $PKG/usr/share/hal/fdi/policy/20thirdparty \
+ $PKG/usr/share/hal/fdi/policy/10osvendor
+mv $PKG/usr/share/hal/fdi/policy/10osvendor/wacom.fdi \
+ $PKG/usr/share/hal/fdi/policy/10osvendor/11-x11-wacom.fdi
diff --git a/source/x/x11/slack-desc/xf86-input-wacom b/source/x/x11/slack-desc/xf86-input-wacom
new file mode 100644
index 000000000..88f68c1d2
--- /dev/null
+++ b/source/x/x11/slack-desc/xf86-input-wacom
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+xf86-input-wacom: xf86-input-wacom
+xf86-input-wacom:
+xf86-input-wacom: xf86-input-wacom is part of X11.
+xf86-input-wacom:
+xf86-input-wacom: For more information about the X.Org Foundation (the providers of the
+xf86-input-wacom: X.Org implementation of the X Window System), see their website:
+xf86-input-wacom:
+xf86-input-wacom: http://www.x.org
+xf86-input-wacom:
+xf86-input-wacom:
+xf86-input-wacom:
diff --git a/source/x/x11/slack-desc/xf86-video-xgi b/source/x/x11/slack-desc/xf86-video-xgi
new file mode 100644
index 000000000..a92ec854d
--- /dev/null
+++ b/source/x/x11/slack-desc/xf86-video-xgi
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+xf86-video-xgi: xf86-video-xgi
+xf86-video-xgi:
+xf86-video-xgi: xf86-video-xgi is part of X11.
+xf86-video-xgi:
+xf86-video-xgi: For more information about the X.Org Foundation (the providers of the
+xf86-video-xgi: X.Org implementation of the X Window System), see their website:
+xf86-video-xgi:
+xf86-video-xgi: http://www.x.org
+xf86-video-xgi:
+xf86-video-xgi:
+xf86-video-xgi:
diff --git a/source/x/x11/slack-desc/xf86-video-xgixp b/source/x/x11/slack-desc/xf86-video-xgixp
new file mode 100644
index 000000000..32aea9fd0
--- /dev/null
+++ b/source/x/x11/slack-desc/xf86-video-xgixp
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+xf86-video-xgixp: xf86-video-xgixp
+xf86-video-xgixp:
+xf86-video-xgixp: xf86-video-xgixp is part of X11.
+xf86-video-xgixp:
+xf86-video-xgixp: For more information about the X.Org Foundation (the providers of the
+xf86-video-xgixp: X.Org implementation of the X Window System), see their website:
+xf86-video-xgixp:
+xf86-video-xgixp: http://www.x.org
+xf86-video-xgixp:
+xf86-video-xgixp:
+xf86-video-xgixp:
diff --git a/source/x/x11/x11.SlackBuild b/source/x/x11/x11.SlackBuild
index e47537981..ca7297082 100755
--- a/source/x/x11/x11.SlackBuild
+++ b/source/x/x11/x11.SlackBuild
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2007-2009 Patrick Volkerding, Sebeka, MN, USA
+# Copyright 2007-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -51,13 +51,21 @@ pkgbase() {
CWD=$(pwd)
TMP=${TMP:-/tmp}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
# A lot of this stuff just controls the package names this time:
-VERSION=${VERSION:-7.4}
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=${VERSION:-7.5}
BUILD=${BUILD:-1}
-
PKGARCH=$ARCH
+NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
@@ -155,6 +163,10 @@ mkdir -p $SLACK_X_BUILD_DIR
else
continue
fi
+ else
+ echo
+ echo "Building from source ${x_pkg}"
+ echo
fi
if grep -wq "^$PKGNAME" ${CWD}/modularize ; then
# Set $PKG to a private dir for the modular package build:
@@ -194,6 +206,23 @@ mkdir -p $SLACK_X_BUILD_DIR
fi
make install DESTDIR=$PKG
+
+ mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION}
+ cp -a \
+ AUTHORS* COPYING* INSTALL* README* NEWS* TODO* \
+ $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION}
+
+ # If there's a ChangeLog, installing at least part of the recent history
+ # is useful, but don't let it get totally out of control:
+ if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+ fi
+
+ # Get rid of zero-length junk files:
+ find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \;
+ rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null
# Strip binaries:
( cd $PKG
diff --git a/source/x/xdg-utils/xdg-utils.SlackBuild b/source/x/xdg-utils/xdg-utils.SlackBuild
index dcf1c5c2d..630746e05 100755
--- a/source/x/xdg-utils/xdg-utils.SlackBuild
+++ b/source/x/xdg-utils/xdg-utils.SlackBuild
@@ -4,7 +4,7 @@
# Written by Erik Hanson erik@slackbuilds.org
# Modified for CVS version by Patrick Volkerding <volkerdi@slackware.com>
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -27,9 +27,9 @@
PRGNAM=xdg-utils
VERSION=1.0.2
-CVS=20090202cvs
+CVS=20100506cvs
ARCH=noarch
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-4}
NUMJOBS=${NUMJOBS:-" -j7 "}
diff --git a/source/x/xf86-video-nouveau/this_is_NOT_a_driver.txt b/source/x/xf86-video-nouveau/this_is_NOT_a_driver.txt
new file mode 100644
index 000000000..ea6e0e485
--- /dev/null
+++ b/source/x/xf86-video-nouveau/this_is_NOT_a_driver.txt
@@ -0,0 +1,14 @@
+
+This is not the experimental nouveau driver for nVidia cards.
+
+It is a stub package that installs /etc/modprobe.d/nouveau-blacklist.conf,
+to prevent the nouveau dri module shipped with our kernel from preventing
+the nv driver and/or the binary nVidia driver from working.
+
+If you want to use nouveau, remove this package.
+
+Sorry if it interferes with anyone's xf86-video-nouveau package that they
+didn't get from us, but this seems like the best default. When a real
+xf86-video-nouveau package appears someday, installing it will remove
+the module blacklist file.
+
diff --git a/source/x/xterm/xterm.SlackBuild b/source/x/xterm/xterm.SlackBuild
index 8f1607cbb..863ccae40 100755
--- a/source/x/xterm/xterm.SlackBuild
+++ b/source/x/xterm/xterm.SlackBuild
@@ -1,5 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+
+# Copyright 2006-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +22,21 @@
PKGNAM=xterm
-VERSION=${VERSION:-243}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
@@ -37,6 +47,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
diff --git a/source/xap/MPlayer/MPlayer.SlackBuild b/source/xap/MPlayer/MPlayer.SlackBuild
index 20b947417..0ce4b79ed 100755
--- a/source/xap/MPlayer/MPlayer.SlackBuild
+++ b/source/xap/MPlayer/MPlayer.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2006, 2007, 2008, 2009 Eric Hameleers, Eindhoven, NL
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Permission to use, copy, modify, and distribute this software for
@@ -32,12 +32,21 @@
# -----------------------------------------------------------------------------
PRGNAM=MPlayer
-VERSION=${VERSION:-r29390}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-20100218}
BUILD=${BUILD:-1}
TAG=${TAG:-}
-DOCS="AUTHORS Changelog Copyright LICENSE README DOCS/HTML-single DOCS/tech"
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+DOCS="AUTHORS Changelog Copyright LICENSE README DOCS/HTML DOCS/tech"
DEFSKIN=${DEFSKIN:-"Blue"} # Download more skins at the following url:
SKINVER=${SKINVER:-"1.7"} # http://www.mplayerhq.hu/design7/dload.html
@@ -135,6 +144,7 @@ src_checkout() {
mkdir MPlayer-${VERSION} \
&& cd MPlayer-${VERSION} \
&& svn checkout --revision $REV svn://svn.mplayerhq.hu/mplayer/trunk . \
+ && svn propget svn:externals | sed -e 's/[[:space:]].*$//g' | xargs svn up --revision $REV \
&& find . -type d -name '.svn' -depth | xargs rm -rf \
&& ([ "$USE_PATENTS" != "YES" ] && rm -rf libdvdcss || true) \
&& chown -R root:root . \
@@ -247,7 +257,8 @@ if [ "$USE_PATENTS" != "YES" ]; then
DO_PATENTED="--disable-libdvdcss-internal \
--disable-mp3lame --disable-mp3lame-lavc \
--disable-faac --disable-faac-lavc \
- --disable-libamr_nb --disable-libamr_wb"
+ --disable-libopencore_amrnb \
+ --disable-libopencore_amrwb"
else
DO_PATENTED=""
fi
@@ -345,7 +356,7 @@ EOINS
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION || true
cp -a $SRCDIR/$(basename $0) $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-mv $PKG/usr/doc/$PRGNAM-$VERSION/HTML-single $PKG/usr/doc/$PRGNAM-$VERSION/html
+#mv $PKG/usr/doc/$PRGNAM-$VERSION/HTML-single $PKG/usr/doc/$PRGNAM-$VERSION/html
# Save a sample of all configuration files:
for i in etc/*.conf ; do
cp $i $PKG/usr/doc/$PRGNAM-$VERSION/$(basename $i)-sample
diff --git a/source/xap/audacious-plugins/amidi-plug.fix-drct.diff b/source/xap/audacious-plugins/amidi-plug.fix-drct.diff
deleted file mode 100644
index 432b955d7..000000000
--- a/source/xap/audacious-plugins/amidi-plug.fix-drct.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ur ./src/amidi-plug/i_configure.c ../audacious-plugins-1.5.1/src/amidi-plug/i_configure.c
---- ./src/amidi-plug/i_configure.c 2008-05-24 00:44:19.000000000 +0200
-+++ ./src/amidi-plug/i_configure.c 2008-11-13 15:08:57.000000000 +0100
-@@ -28,6 +28,7 @@
- #include "i_configure-fluidsynth.h"
- #include "i_configure-dummy.h"
- #include "i_utils.h"
-+#include <audacious/plugin.h>
- #include <audacious/auddrct.h>
-
-
diff --git a/source/xap/audacious-plugins/audacious-plugins.SlackBuild b/source/xap/audacious-plugins/audacious-plugins.SlackBuild
index 47bc40f9f..84417ccbc 100755
--- a/source/xap/audacious-plugins/audacious-plugins.SlackBuild
+++ b/source/xap/audacious-plugins/audacious-plugins.SlackBuild
@@ -22,18 +22,24 @@
PKGNAM=audacious-plugins
-VERSION=${VERSION:-1.5.1}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-4}
+VERSION=${VERSION:-2.3}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -47,16 +53,19 @@ elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2"
LIBDIRSUFFIX="64"
ARCHOPTS=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ARCHOPTS=""
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.xz || exit 1
cd ${PKGNAM}-$VERSION || exit 1
-zcat $CWD/audacious-plugins.libmtp8.diff.gz | patch -p1 || exit 1
-zcat $CWD/amidi-plug.fix-drct.diff.gz | patch -p1 || exit 1
-
# Make sure ownerships and permissions are sane:
chown -R root:root .
find . \
@@ -75,7 +84,6 @@ CXXFLAGS="$SLKCFLAGS" \
--mandir=/usr/man \
--enable-chardet \
--enable-amidiplug \
- --enable-timidity \
--disable-altivec \
--program-prefix= \
--program-suffix= \
@@ -116,11 +124,10 @@ fi
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- AUTHORS COPYING INSTALL Mercurial-Access \
+ AUTHORS COPYING INSTALL Mercurial-Access README* \
$PKG/usr/doc/${PKGNAM}-$VERSION
mkdir -p $PKG/install
-#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
diff --git a/source/xap/audacious-plugins/audacious-plugins.libmtp8.diff b/source/xap/audacious-plugins/audacious-plugins.libmtp8.diff
deleted file mode 100644
index 6c224fa5d..000000000
--- a/source/xap/audacious-plugins/audacious-plugins.libmtp8.diff
+++ /dev/null
@@ -1,16 +0,0 @@
---- ./src/mtp_up/mtp.c.orig 2008-05-23 17:44:20.000000000 -0500
-+++ ./src/mtp_up/mtp.c 2008-09-14 14:28:44.000000000 -0500
-@@ -193,11 +193,12 @@
- g_free(from_path);
- g_free(tmp);
- parent_id = mtp_device->default_music_folder;
-+ gentrack->parent_id = parent_id;
-
- #if DEBUG
- g_print("Uploading track '%s'\n",filename);
- #endif
-- ret = LIBMTP_Send_Track_From_File(mtp_device, filename , gentrack, NULL , NULL, parent_id);
-+ ret = LIBMTP_Send_Track_From_File(mtp_device, filename , gentrack, NULL , NULL);
- LIBMTP_destroy_track_t(gentrack);
- if (ret == 0)
- g_print("Track upload finished!\n");
diff --git a/source/xap/audacious/audacious.SlackBuild b/source/xap/audacious/audacious.SlackBuild
index b18a06700..45b5c1717 100755
--- a/source/xap/audacious/audacious.SlackBuild
+++ b/source/xap/audacious/audacious.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006-2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,18 +22,24 @@
PKGNAM=audacious
-VERSION=${VERSION:-1.5.1}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+VERSION=${VERSION:-2.3}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
-rm -rf $PKG
-mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -53,16 +59,18 @@ elif [ "$ARCH" = "arm" ]; then
elif [ "$ARCH" = "armel" ]; then
SLKCFLAGS="-O2 -march=armv4t"
LIBDIRSUFFIX=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
+rm -rf $PKG
+mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.xz || exit 1
cd ${PKGNAM}-$VERSION || exit 1
-# Fix command line options handling:
-zcat $CWD/audacious.handle_cmd_line_options.diff.gz | patch -p1 || exit 1
-
# Make sure ownerships and permissions are sane:
chown -R root:root .
find . \
@@ -78,8 +86,7 @@ CFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--mandir=/usr/man \
- --enable-ipv6 \
- --enable-chardet \
+ --docdir=/usr/doc/${PKGNAM}-$VERSION \
--disable-altivec \
--program-prefix= \
--program-suffix= \
@@ -90,6 +97,13 @@ CFLAGS="$SLKCFLAGS" \
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
+# Fix broken symlinks pointing into the build directory
+( cd $PKG/usr/bin
+ rm -f audacious audtool
+ ln -s audacious2 audacious
+ ln -s audtool2 audtool
+)
+
# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -120,11 +134,11 @@ fi
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- ABOUT-NLS AUTHORS COPYING INSTALL Mercurial-Access NEWS README \
+ AUTHORS COPYING INSTALL Mercurial-Access NEWS README doc/* \
$PKG/usr/doc/${PKGNAM}-$VERSION
mkdir -p $PKG/install
-#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
diff --git a/source/xap/audacious/audacious.handle_cmd_line_options.diff b/source/xap/audacious/audacious.handle_cmd_line_options.diff
deleted file mode 100644
index 6ccb22433..000000000
--- a/source/xap/audacious/audacious.handle_cmd_line_options.diff
+++ /dev/null
@@ -1,38 +0,0 @@
---- ./src/audacious/main.c.orig 2008-05-23 17:00:34.000000000 -0500
-+++ ./src/audacious/main.c 2009-04-10 17:03:00.000000000 -0500
-@@ -315,7 +315,7 @@
- }
-
- static void
--handle_cmd_line_options()
-+handle_cmd_line_options(gboolean skip)
- {
- gchar **filenames = options.filenames;
- #ifdef USE_DBUS
-@@ -430,7 +430,7 @@
- } /* is_running */
- else
- #endif
-- { /* !is_running */
-+ if (!skip) { /* !is_running */
- if (filenames != NULL)
- {
- gint pos = 0;
-@@ -715,7 +715,7 @@
-
- signal_handlers_init();
-
-- handle_cmd_line_options();
-+ handle_cmd_line_options(TRUE);
-
- if (options.headless == FALSE)
- {
-@@ -735,6 +735,8 @@
- plugin_system_init();
- playlist_system_init();
-
-+ handle_cmd_line_options(FALSE);
-+
- #ifdef USE_DBUS
- init_dbus();
- #endif
diff --git a/source/xap/audacious/doinst.sh b/source/xap/audacious/doinst.sh
new file mode 100644
index 000000000..4e8ba7071
--- /dev/null
+++ b/source/xap/audacious/doinst.sh
@@ -0,0 +1,4 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
diff --git a/source/xap/blackbox/blackbox-0.70.1-gcc-4.3.patch b/source/xap/blackbox/blackbox-0.70.1-gcc-4.3.patch
new file mode 100644
index 000000000..480b99e85
--- /dev/null
+++ b/source/xap/blackbox/blackbox-0.70.1-gcc-4.3.patch
@@ -0,0 +1,109 @@
+http://mirrors.usc.edu/pub/linux/distributions/gentoo/x11-wm/blackbox/files/blackbox-0.70.1-gcc-4.3.patch
+
+
+diff -Naupr blackbox-0.70.1.orig/lib/Image.cc blackbox-0.70.1/lib/Image.cc
+--- blackbox-0.70.1.orig/lib/Image.cc 2005-04-08 17:41:09.000000000 +0200
++++ blackbox-0.70.1/lib/Image.cc 2008-02-24 08:31:28.000000000 +0100
+@@ -42,8 +42,9 @@
+
+ #include <assert.h>
+ #include <math.h>
+-#include <stdio.h>
+-#include <stdlib.h>
++#include <cstdio>
++#include <cstdlib>
++#include <cstring>
+
+ // #define COLORTABLE_DEBUG
+ // #define MITSHM_DEBUG
+diff -Naupr blackbox-0.70.1.orig/lib/Resource.cc blackbox-0.70.1/lib/Resource.cc
+--- blackbox-0.70.1.orig/lib/Resource.cc 2005-04-06 23:16:50.000000000 +0200
++++ blackbox-0.70.1/lib/Resource.cc 2008-02-24 08:33:11.000000000 +0100
+@@ -28,7 +28,8 @@
+ #include <X11/Xlib.h>
+ #include <X11/Xresource.h>
+
+-#include <stdio.h>
++#include <cstdio>
++#include <cstring>
+
+
+ bt::Resource::Resource(void)
+diff -Naupr blackbox-0.70.1.orig/lib/XDG.cc blackbox-0.70.1/lib/XDG.cc
+--- blackbox-0.70.1.orig/lib/XDG.cc 2005-04-06 16:04:38.000000000 +0200
++++ blackbox-0.70.1/lib/XDG.cc 2008-02-24 08:34:11.000000000 +0100
+@@ -25,7 +25,8 @@
+ #include "Util.hh"
+ #include "XDG.hh"
+
+-#include <stdlib.h>
++#include <cstdlib>
++#include <algorithm>
+
+
+ // make sure directory names end with a slash
+diff -Naupr blackbox-0.70.1.orig/src/BlackboxResource.cc blackbox-0.70.1/src/BlackboxResource.cc
+--- blackbox-0.70.1.orig/src/BlackboxResource.cc 2005-10-18 09:34:46.000000000 +0200
++++ blackbox-0.70.1/src/BlackboxResource.cc 2008-02-24 08:34:49.000000000 +0100
+@@ -33,6 +33,8 @@
+ #include <X11/Xutil.h>
+ #include <X11/cursorfont.h>
+
++#include <cstring>
++
+
+ BlackboxResource::BlackboxResource(const std::string& rc): rc_file(rc) {
+ screen_resources = 0;
+diff -Naupr blackbox-0.70.1.orig/src/main.cc blackbox-0.70.1/src/main.cc
+--- blackbox-0.70.1.orig/src/main.cc 2005-01-03 10:42:57.000000000 +0100
++++ blackbox-0.70.1/src/main.cc 2008-02-24 08:37:16.000000000 +0100
+@@ -34,7 +34,8 @@
+ #include "blackbox.hh"
+ #include "../version.h"
+
+-#include <stdio.h>
++#include <cstdio>
++#include <cstring>
+
+
+ static void showHelp(int exitval) {
+diff -Naupr blackbox-0.70.1.orig/src/Screen.cc blackbox-0.70.1/src/Screen.cc
+--- blackbox-0.70.1.orig/src/Screen.cc 2005-10-18 10:07:22.000000000 +0200
++++ blackbox-0.70.1/src/Screen.cc 2008-02-24 08:35:46.000000000 +0100
+@@ -45,8 +45,9 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <assert.h>
+-#include <ctype.h>
+ #include <dirent.h>
++#include <cctype>
++#include <cstring>
+
+
+ static bool running = true;
+diff -Naupr blackbox-0.70.1.orig/src/ScreenResource.cc blackbox-0.70.1/src/ScreenResource.cc
+--- blackbox-0.70.1.orig/src/ScreenResource.cc 2005-04-13 07:54:08.000000000 +0200
++++ blackbox-0.70.1/src/ScreenResource.cc 2008-02-24 08:36:31.000000000 +0100
+@@ -33,6 +33,8 @@
+
+ #include <assert.h>
+
++#include <cstring>
++
+
+ static const int iconify_width = 9;
+ static const int iconify_height = 9;
+diff -Naupr blackbox-0.70.1.orig/util/bsetroot.cc blackbox-0.70.1/util/bsetroot.cc
+--- blackbox-0.70.1.orig/util/bsetroot.cc 2005-03-15 08:01:37.000000000 +0100
++++ blackbox-0.70.1/util/bsetroot.cc 2008-02-24 08:38:41.000000000 +0100
+@@ -30,7 +30,9 @@
+ #include <cctype>
+
+ #include <X11/Xatom.h>
+-#include <stdio.h>
++#include <cstdio>
++#include <cstdlib>
++#include <cstring>
+
+
+ // ignore all X errors
diff --git a/source/xap/blackbox/blackbox.SlackBuild b/source/xap/blackbox/blackbox.SlackBuild
index 4505d06e3..130355f4b 100755
--- a/source/xap/blackbox/blackbox.SlackBuild
+++ b/source/xap/blackbox/blackbox.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,23 +20,48 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# http://downloads.sourceforge.net/project/blackboxwm/blackboxwm/Blackbox%200.70.1/blackbox-0.70.1.tar.bz2
+# http://downloads.sourceforge.net/project/bbkeys/bbkeys/0.9.1/bbkeys-0.9.1.tar.gz
PKGNAM=blackbox
-VERSION=${VERSION:-0.65.0}
-BBVER=${BBVER:-0.8.6}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-4}
-
+VERSION=${VERSION:-0.70.1}
+BBKEYSVER=${BBKEYSVER:-0.9.1}
+BUILD=${BUILD:-3}
NUMJOBS=${NUMJOBS:-" -j7 "}
+PKGEXT=${PKGEXT:-txz}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+# Determine the CFLAGS for the known architectures:
+case $ARCH in
+ i486) export SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ export LIBDIRSUFFIX=""
+ export ARCHQUADLET="" ;;
+ i686) export SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ export LIBDIRSUFFIX=""
+ export ARCHQUADLET="" ;;
+ x86_64) export SLKCFLAGS="-O2 -fPIC"
+ export LIBDIRSUFFIX="64"
+ export ARCHQUADLET="" ;;
+ s390) export SLKCFLAGS="-O2"
+ export LIBDIRSUFFIX=""
+ export ARCHQUADLET="" ;;
+ arm) export SLKCFLAGS="-O2 -march=armv4t"
+ export LIBDIRSUFFIX=""
+ export ARCHQUADLET="-gnueabi" ;;
+ *) export SLKCFLAGS="-O2"
+ export LIBDIRSUFFIX=""
+ export ARCHQUADLET="" ;;
+esac
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
-fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -46,7 +71,7 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf ${PKGNAM}-${VERSION}
-tar xvf $CWD/${PKGNAM}-$VERSION.tar.gz || exit 1
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.xz || exit 1
cd ${PKGNAM}-$VERSION || exit 1
# Make sure ownerships and permissions are sane:
@@ -57,24 +82,33 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Thanks for the gcc-4.1.1 patch, Debian. :-)
-zcat $CWD/blackbox_0.65.0-5.diff.gz | patch -p1 --verbose || exit 1
+# Build fix for gcc-4:
+zcat $CWD/blackbox-0.70.1-gcc-4.3.patch.gz | patch --verbose -p1 || exit 1
# Configure:
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
--enable-shape \
--enable-slit \
--enable-interlace \
--enable-nls \
+ --enable-shared=yes \
+ --enable-static=no \
--enable-timed-cache \
- $ARCH-slackware-linux
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux$ARCHQUADLET || exit 1
-# Build and install:
+# Build:
make $NUMJOBS || make || exit 1
-make install DESTDIR=$PKG || exit 1
+# Install onto filesystem - needed for bbkeys to find libbt:
+make install || exit 1
+
+# Install into package:
+make install DESTDIR=$PKG || exit 1
mkdir -p $PKG/etc/X11/xinit
zcat $CWD/xinitrc.blackbox.gz > $PKG/etc/X11/xinit/xinitrc.blackbox
chmod 755 $PKG/etc/X11/xinit/xinitrc.blackbox
@@ -85,12 +119,20 @@ cp -a \
AUTHORS INSTALL LICENSE README* TODO \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
######################################
# Compile bbkeys program for blackbox:
cd $TMP
-rm -rf bbkeys-${BBVER}
-tar xvf $CWD/bbkeys-${BBVER}.tar.gz || exit 1
-cd bbkeys-${BBVER} || exit 1
+rm -rf bbkeys-${BBKEYSVER}
+tar xvf $CWD/bbkeys-${BBKEYSVER}.tar.xz
+cd bbkeys-${BBKEYSVER} || exit 1
# Make sure ownerships and permissions are sane:
chown -R root:root .
@@ -104,18 +146,27 @@ find . \
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
- --enable-interlace \
- $ARCH-slackware-linux
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/bbkeys-$BBKEYSVER \
+ --build=$ARCH-slackware-linux$ARCHQUADLET || exit 1
+
+# --docdir isn't honoured:
+sed -i 's?^docdir.*=.*?docdir = /usr/doc/bbkeys-'"$BBKEYSVER"'?g' Makefile
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/bbkeys-${BBKEYSVER})
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
-# Build and install:
+# Build and install into package:
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-mkdir -p /usr/doc/bbkeys-$BBKEYS
-cp -a \
- AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README* TODO \
- /usr/doc/bbkeys-$BBKEYS
-
# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
@@ -135,9 +186,12 @@ if [ -d $PKG/usr/man ]; then
)
fi
+# Set doc permissions:
+find $PKG/usr/doc -type f -print0 | xargs -0 chmod 644
+find $PKG/usr/doc -type d -print0 | xargs -0 chmod 755
+
mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
+install -vpm644 $CWD/slack-desc $PKG/install/
cd $PKG
-/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
-
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.$PKGEXT
diff --git a/source/xap/blackbox/blackbox_0.65.0-5.diff b/source/xap/blackbox/blackbox_0.65.0-5.diff
deleted file mode 100644
index 4b6959d85..000000000
--- a/source/xap/blackbox/blackbox_0.65.0-5.diff
+++ /dev/null
@@ -1,12462 +0,0 @@
---- blackbox-0.65.0.orig/Makefile.in
-+++ blackbox-0.65.0/Makefile.in
-@@ -68,6 +68,7 @@
- ORDEREDPSEUDO = @ORDEREDPSEUDO@
- PACKAGE = @PACKAGE@
- SHAPE = @SHAPE@
-+XINERAMA = @XINERAMA@
- TIMEDCACHE = @TIMEDCACHE@
- VERSION = @VERSION@
- gencat_cmd = @gencat_cmd@
---- blackbox-0.65.0.orig/configure
-+++ blackbox-0.65.0/configure
-@@ -1,42 +1,325 @@
- #! /bin/sh
--
- # Guess values for system-dependent variables and create Makefiles.
--# Generated automatically using autoconf version 2.13
--# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-+# 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'"
-+
-
--# Defaults:
--ac_help=
-+# 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
--# Any additions from configure.in:
--ac_help="$ac_help
-- --with-x use the X Window System"
--ac_help="$ac_help
-- --enable-shape enable support of the XShape extension [default=yes]"
--ac_help="$ac_help
-- --enable-ordered-pseudo include code for ordered pseudocolor (8bpp)
-- dithering [default=no]"
--ac_help="$ac_help
-- --enable-debug include verbose debugging code [default=no]"
--ac_help="$ac_help
-- --enable-nls include natural language support [default=yes]"
--ac_help="$ac_help
-- --enable-timed-cache use new timed pixmap cache [default=yes]"
--ac_help="$ac_help
-- --enable-maintainer-mode enable make rules and dependencies not useful
-- (and sometimes confusing) to the casual installer"
-+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="src/blackbox.cc"
-+# Factoring default headers for most tests.
-+ac_includes_default="\
-+#include <stdio.h>
-+#if HAVE_SYS_TYPES_H
-+# include <sys/types.h>
-+#endif
-+#if HAVE_SYS_STAT_H
-+# include <sys/stat.h>
-+#endif
-+#if STDC_HEADERS
-+# include <stdlib.h>
-+# include <stddef.h>
-+#else
-+# if HAVE_STDLIB_H
-+# include <stdlib.h>
-+# endif
-+#endif
-+#if HAVE_STRING_H
-+# if !STDC_HEADERS && HAVE_MEMORY_H
-+# include <memory.h>
-+# endif
-+# include <string.h>
-+#endif
-+#if HAVE_STRINGS_H
-+# include <strings.h>
-+#endif
-+#if HAVE_INTTYPES_H
-+# include <inttypes.h>
-+#else
-+# if HAVE_STDINT_H
-+# include <stdint.h>
-+# endif
-+#endif
-+#if HAVE_UNISTD_H
-+# include <unistd.h>
-+#endif"
-+
-+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 PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX regex_cmd CPP EGREP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS SHAPE XINERAMA ORDEREDPSEUDO DEBUG NLS gencat_cmd TIMEDCACHE MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT 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.
--build=NONE
--cache_file=./config.cache
-+cache_file=/dev/null
- exec_prefix=NONE
--host=NONE
- no_create=
--nonopt=NONE
- no_recursion=
- prefix=NONE
- program_prefix=NONE
-@@ -45,10 +328,15 @@
- silent=
- site=
- srcdir=
--target=NONE
- 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'
-@@ -62,17 +350,9 @@
- infodir='${prefix}/info'
- mandir='${prefix}/man'
-
--# Initialize some other variables.
--subdirs=
--MFLAGS= MAKEFLAGS=
--SHELL=${CONFIG_SHELL-/bin/sh}
--# Maximum number of lines to put in a shell here document.
--ac_max_here_lines=12
--
- 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"
-@@ -80,59 +360,59 @@
- continue
- fi
-
-- case "$ac_option" in
-- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-- *) ac_optarg= ;;
-- esac
-+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
-- case "$ac_option" in
-+ case $ac_option in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-- bindir="$ac_optarg" ;;
-+ bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
-- ac_prev=build ;;
-+ ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-- build="$ac_optarg" ;;
-+ 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" ;;
-+ 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" ;;
-+ datadir=$ac_optarg ;;
-
- -disable-* | --disable-*)
-- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
-- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-- fi
-- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-- eval "enable_${ac_feature}=no" ;;
-+ 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=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
-- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-- fi
-- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-- case "$ac_option" in
-- *=*) ;;
-+ 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'" ;;
-+ eval "enable_$ac_feature='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-@@ -141,95 +421,47 @@
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
-- exec_prefix="$ac_optarg" ;;
-+ exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
-- -help | --help | --hel | --he)
-- # 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 << EOF
--Usage: configure [options] [host]
--Options: [defaults in brackets after descriptions]
--Configuration:
-- --cache-file=FILE cache test results in FILE
-- --help print this message
-- --no-create do not create output files
-- --quiet, --silent do not print \`checking...' messages
-- --version print the version of autoconf that created configure
--Directory and file names:
-- --prefix=PREFIX install architecture-independent files in PREFIX
-- [$ac_default_prefix]
-- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
-- [same as prefix]
-- --bindir=DIR user executables in DIR [EPREFIX/bin]
-- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
-- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
-- --datadir=DIR read-only architecture-independent data in DIR
-- [PREFIX/share]
-- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
-- --sharedstatedir=DIR modifiable architecture-independent data in DIR
-- [PREFIX/com]
-- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
-- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
-- --includedir=DIR C header files in DIR [PREFIX/include]
-- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
-- --infodir=DIR info documentation in DIR [PREFIX/info]
-- --mandir=DIR man documentation in DIR [PREFIX/man]
-- --srcdir=DIR find the sources in DIR [configure dir or ..]
-- --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
--EOF
-- cat << EOF
--Host type:
-- --build=BUILD configure for building on BUILD [BUILD=HOST]
-- --host=HOST configure for HOST [guessed]
-- --target=TARGET configure for TARGET [TARGET=HOST]
--Features and packages:
-- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
-- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
-- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
-- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-- --x-includes=DIR X include files are in DIR
-- --x-libraries=DIR X library files are in DIR
--EOF
-- if test -n "$ac_help"; then
-- echo "--enable and --with options recognized:$ac_help"
-- fi
-- exit 0 ;;
-+ -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 ;;
-+ ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
-- host="$ac_optarg" ;;
-+ 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" ;;
-+ includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-- infodir="$ac_optarg" ;;
-+ infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
-- libdir="$ac_optarg" ;;
-+ 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" ;;
-+ libexecdir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
-@@ -238,19 +470,19 @@
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-- localstatedir="$ac_optarg" ;;
-+ localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-- mandir="$ac_optarg" ;;
-+ 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)
-+ | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-@@ -264,26 +496,26 @@
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-- oldincludedir="$ac_optarg" ;;
-+ oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-- prefix="$ac_optarg" ;;
-+ 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_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_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
-@@ -300,7 +532,7 @@
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
-- program_transform_name="$ac_optarg" ;;
-+ program_transform_name=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
-@@ -310,7 +542,7 @@
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
-- sbindir="$ac_optarg" ;;
-+ sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-@@ -321,58 +553,57 @@
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
-- sharedstatedir="$ac_optarg" ;;
-+ sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
-- site="$ac_optarg" ;;
-+ site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-- srcdir="$ac_optarg" ;;
-+ 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" ;;
-+ sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
-- ac_prev=target ;;
-+ ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-- target="$ac_optarg" ;;
-+ target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
-- -version | --version | --versio | --versi | --vers)
-- echo "configure generated by autoconf version 2.13"
-- exit 0 ;;
-+ -version | --version | --versio | --versi | --vers | -V)
-+ ac_init_version=: ;;
-
- -with-* | --with-*)
-- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
-- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-- fi
-+ 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
-- *=*) ;;
-+ case $ac_option in
-+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
-- eval "with_${ac_package}='$ac_optarg'" ;;
-+ eval "with_$ac_package='$ac_optarg'" ;;
-
- -without-* | --without-*)
-- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
-- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-- fi
-- ac_package=`echo $ac_package| sed 's/-/_/g'`
-- eval "with_${ac_package}=no" ;;
-+ 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.
-@@ -383,99 +614,110 @@
- 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_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" ;;
-+ x_libraries=$ac_optarg ;;
-
-- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-+ -*) { 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 ;;
-+
- *)
-- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-- echo "configure: warning: $ac_option: invalid host type" 1>&2
-- fi
-- if test "x$nonopt" != xNONE; then
-- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-- fi
-- nonopt="$ac_option"
-+ # 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
-- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
--fi
--
--trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
--
--# File descriptor usage:
--# 0 standard input
--# 1 file creation
--# 2 errors and warnings
--# 3 some systems may open it to /dev/tty
--# 4 used on the Kubota Titan
--# 6 checking for... messages and results
--# 5 compiler messages saved in config.log
--if test "$silent" = yes; then
-- exec 6>/dev/null
--else
-- exec 6>&1
-+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-+ { echo "$as_me: error: missing argument to $ac_option" >&2
-+ { (exit 1); exit 1; }; }
- fi
--exec 5>./config.log
-
--echo "\
--This file contains any messages produced by compilers while
--running configure, to aid debugging if configure makes a mistake.
--" 1>&5
-+# 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
-
--# Strip out --no-create and --no-recursion so they do not pile up.
--# Also quote any args containing shell metacharacters.
--ac_configure_args=
--for ac_arg
-+# Be sure to have absolute paths.
-+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-+ localstatedir libdir includedir oldincludedir infodir mandir
- do
-- case "$ac_arg" in
-- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-- | --no-cr | --no-c) ;;
-- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-+ 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
-
--# NLS nuisances.
--# Only set these to C if already set. These must not be set unconditionally
--# because not all systems understand e.g. LANG=C (notably SCO).
--# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
--# Non-C LC_CTYPE values break the ctype check.
--if test "${LANG+set}" = set; then LANG=C; export LANG; fi
--if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
--if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
--if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
-+# 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
-
--# 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
-+ac_tool_prefix=
-+test -n "$host_alias" && ac_tool_prefix=$host_alias-
-+
-+test "$silent" = yes && exec 6>/dev/null
-
--# A filename unique to this package, relative to the directory that
--# configure is in, which we can look for to find out if srcdir is correct.
--ac_unique_file=src/blackbox.cc
-
- # 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_prog=$0
-- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-+ 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=..
-@@ -485,13 +727,491 @@
- fi
- if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
-- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
-+ { (exit 1); exit 1; }; }
- else
-- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-+ { (exit 1); exit 1; }; }
- fi
- fi
--srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-+(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
-+ac_env_CXX_set=${CXX+set}
-+ac_env_CXX_value=$CXX
-+ac_cv_env_CXX_set=${CXX+set}
-+ac_cv_env_CXX_value=$CXX
-+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
-+ac_env_CXXFLAGS_value=$CXXFLAGS
-+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
-+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
-+ac_env_CPP_set=${CPP+set}
-+ac_env_CPP_value=$CPP
-+ac_cv_env_CPP_set=${CPP+set}
-+ac_cv_env_CPP_value=$CPP
-+
-+#
-+# 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
-+
-+X features:
-+ --x-includes=DIR X include files are in DIR
-+ --x-libraries=DIR X library files are in DIR
-+_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-shape enable support of the XShape extension default=yes
-+ --enable-xinerama enable support of the xinerama extension default=yes
-+ --enable-ordered-pseudo include code for ordered pseudocolor (8bpp)
-+ dithering default=no
-+ --enable-debug include verbose debugging code default=no
-+ --enable-nls include natural language support default=yes
-+ --enable-timed-cache use new timed pixmap cache default=yes
-+ --enable-maintainer-mode enable make rules and dependencies not useful
-+ (and sometimes confusing) to the casual installer
-+
-+Optional Packages:
-+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
-+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-+ --with-x use the X Window System
-+
-+Some influential environment variables:
-+ CC C compiler command
-+ CFLAGS C compiler flags
-+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
-+ nonstandard directory <lib dir>
-+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
-+ headers in a nonstandard directory <include dir>
-+ CXX C++ compiler command
-+ CXXFLAGS C++ compiler flags
-+ CPP C preprocessor
-+
-+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
-@@ -502,39 +1222,103 @@
- fi
- for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
-- echo "loading site script $ac_site_file"
-+ { 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
-- echo "loading cache $cache_file"
-- . $cache_file
-+ # 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 "creating cache $cache_file"
-- > $cache_file
-+ { 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
--# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
- ac_cpp='$CPP $CPPFLAGS'
--ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
--cross_compiling=$ac_cv_prog_cc_cross
--
--ac_exeext=
--ac_objext=o
--if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-- ac_n= ac_c='
--' ac_t=' '
-- else
-- ac_n=-n ac_c= ac_t=
-- fi
--else
-- ac_n= ac_c='\c' ac_t=
--fi
-+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
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
- ac_aux_dir=
-@@ -547,14 +1331,20 @@
- 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 "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
--fi
--ac_config_guess=$ac_aux_dir/config.guess
--ac_config_sub=$ac_aux_dir/config.sub
--ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-+ { { 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
-@@ -563,65 +1353,80 @@
- # 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 $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
--echo "configure:572: checking for a BSD compatible install" >&5
-+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 eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+if test "${ac_cv_path_install+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
-- for ac_dir in $PATH; do
-- # Account for people who put trailing slashes in PATH elements.
-- case "$ac_dir/" in
-- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/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
-- if test -f $ac_dir/$ac_prog; then
-+ 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 $ac_dir/$ac_prog >/dev/null 2>&1; then
-+ 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="$ac_dir/$ac_prog -c"
-- break 2
-+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-+ break 3
- fi
- fi
- done
-- ;;
-- esac
-- done
-- IFS="$ac_save_IFS"
-+ done
-+ ;;
-+esac
-+done
-+
-
- fi
- if test "${ac_cv_path_install+set}" = set; then
-- INSTALL="$ac_cv_path_install"
-+ 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"
-+ INSTALL=$ac_install_sh
- fi
- fi
--echo "$ac_t""$INSTALL" 1>&6
-+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_PROGRAM}'
-+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
--echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
--echo "configure:625: checking whether build environment is sane" >&5
-+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 > conftestfile
-@@ -643,8 +1448,11 @@
- # 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 "configure: error: ls -t appears to fail. Make sure there is not a broken
--alias in your environment" 1>&2; exit 1; }
-+ { { 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" = conftestfile
-@@ -653,54 +1461,54 @@
- # Ok.
- :
- else
-- { echo "configure: error: newly created file is older than distributed files!
--Check your system clock" 1>&2; exit 1; }
-+ { { 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
- rm -f conftest*
--echo "$ac_t""yes" 1>&6
--if test "$program_transform_name" = s,x,x,; then
-- program_transform_name=
--else
-- # Double any \ or $. echo might interpret backslashes.
-- cat <<\EOF_SED > conftestsed
--s,\\,\\\\,g; s,\$,$$,g
--EOF_SED
-- program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
-- rm -f conftestsed
--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"
-+ 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"
--
--# sed with no file args requires a program.
--test "$program_transform_name" = "" && program_transform_name="s,x,x,"
--
--echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
--echo "configure:682: checking whether ${MAKE-make} sets \${MAKE}" >&5
--set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ 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
-+
-+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 > conftestmake <<\EOF
-+ cat >conftest.make <<\_ACEOF
- all:
-- @echo 'ac_maketemp="${MAKE}"'
--EOF
-+ @echo 'ac_maketemp="$(MAKE)"'
-+_ACEOF
- # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
--eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
-+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 conftestmake
-+rm -f conftest.make
- fi
- if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
- SET_MAKE=
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- SET_MAKE="MAKE=${MAKE-make}"
- fi
-
-@@ -710,75 +1518,87 @@
- VERSION=0.65.0
-
- if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
-- { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
-+ { { 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
-
-
-
- missing_dir=`cd $ac_aux_dir && pwd`
--echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
--echo "configure:721: checking for working aclocal" >&5
-+echo "$as_me:$LINENO: checking for working aclocal" >&5
-+echo $ECHO_N "checking for working aclocal... $ECHO_C" >&6
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
- if (aclocal --version) < /dev/null > /dev/null 2>&1; then
- ACLOCAL=aclocal
-- echo "$ac_t""found" 1>&6
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
- else
- ACLOCAL="$missing_dir/missing aclocal"
-- echo "$ac_t""missing" 1>&6
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
- fi
-
--echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
--echo "configure:734: checking for working autoconf" >&5
-+echo "$as_me:$LINENO: checking for working autoconf" >&5
-+echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
- if (autoconf --version) < /dev/null > /dev/null 2>&1; then
- AUTOCONF=autoconf
-- echo "$ac_t""found" 1>&6
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
- else
- AUTOCONF="$missing_dir/missing autoconf"
-- echo "$ac_t""missing" 1>&6
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
- fi
-
--echo $ac_n "checking for working automake""... $ac_c" 1>&6
--echo "configure:747: checking for working automake" >&5
-+echo "$as_me:$LINENO: checking for working automake" >&5
-+echo $ECHO_N "checking for working automake... $ECHO_C" >&6
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
- if (automake --version) < /dev/null > /dev/null 2>&1; then
- AUTOMAKE=automake
-- echo "$ac_t""found" 1>&6
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
- else
- AUTOMAKE="$missing_dir/missing automake"
-- echo "$ac_t""missing" 1>&6
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
- fi
-
--echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
--echo "configure:760: checking for working autoheader" >&5
-+echo "$as_me:$LINENO: checking for working autoheader" >&5
-+echo $ECHO_N "checking for working autoheader... $ECHO_C" >&6
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
- if (autoheader --version) < /dev/null > /dev/null 2>&1; then
- AUTOHEADER=autoheader
-- echo "$ac_t""found" 1>&6
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
- else
- AUTOHEADER="$missing_dir/missing autoheader"
-- echo "$ac_t""missing" 1>&6
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
- fi
-
--echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
--echo "configure:773: checking for working makeinfo" >&5
-+echo "$as_me:$LINENO: checking for working makeinfo" >&5
-+echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
- if (makeinfo --version) < /dev/null > /dev/null 2>&1; then
- MAKEINFO=makeinfo
-- echo "$ac_t""found" 1>&6
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
- else
- MAKEINFO="$missing_dir/missing makeinfo"
-- echo "$ac_t""missing" 1>&6
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
- fi
-
-
-@@ -786,214 +1606,657 @@
- test x$prefix = "xNONE" && prefix="$ac_default_prefix"
-
-
--# Extract the first word of "gcc", so it can be a program name with args.
--set dummy gcc; ac_word=$2
--echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:793: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+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
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_CC="gcc"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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"
-+CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- echo "$ac_t""$CC" 1>&6
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:823: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+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 "$CC"; then
-- ac_cv_prog_CC="$CC" # Let the user override the test.
-+ if test -n "$ac_ct_CC"; then
-+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_prog_rejected=no
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-- ac_prog_rejected=yes
-- continue
-- fi
-- ac_cv_prog_CC="cc"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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 $# -gt 0; then
-+ 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
-- set dummy "$ac_dir/$ac_word" "$@"
-- shift
-- ac_cv_prog_CC="$@"
-+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
- fi
- fi
- fi
--CC="$ac_cv_prog_CC"
-+CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- echo "$ac_t""$CC" 1>&6
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
-- if test -z "$CC"; then
-- case "`uname -s`" in
-- *win32* | *WIN32*)
-- # Extract the first word of "cl", so it can be a program name with args.
--set dummy cl; ac_word=$2
--echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:874: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+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
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_CC="cl"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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"
-+CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- echo "$ac_t""$CC" 1>&6
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-- ;;
-- esac
-+
-+ 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
-- test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-+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
-
--echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
--echo "configure:906: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-+ test -n "$ac_ct_CC" && break
-+done
-
--ac_ext=c
--# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
--ac_cpp='$CPP $CPPFLAGS'
--ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
--cross_compiling=$ac_cv_prog_cc_cross
-+ CC=$ac_ct_CC
-+fi
-
--cat > conftest.$ac_ext << EOF
-+fi
-
--#line 917 "configure"
--#include "confdefs.h"
-
--main(){return(0);}
--EOF
--if { (eval echo configure:922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- ac_cv_prog_cc_works=yes
-- # If we can't run a trivial program, we are probably using a cross compiler.
-- if (./conftest; exit) 2>/dev/null; then
-- ac_cv_prog_cc_cross=no
-- else
-- ac_cv_prog_cc_cross=yes
-- 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 </dev/null >&5\"") >&5
-+ (eval $ac_compiler --version </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
-+ (eval $ac_compiler -v </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
-+ (eval $ac_compiler -V </dev/null >&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 "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- ac_cv_prog_cc_works=no
--fi
--rm -fr conftest*
--ac_ext=c
--# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
--ac_cpp='$CPP $CPPFLAGS'
--ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
--cross_compiling=$ac_cv_prog_cc_cross
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
--echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
--if test $ac_cv_prog_cc_works = no; then
-- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
-+{ { 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 $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
--echo "configure:948: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
--echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
--cross_compiling=$ac_cv_prog_cc_cross
-+echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-
--echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
--echo "configure:953: checking whether we are using GNU C" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+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
-- cat > conftest.c <<EOF
--#ifdef __GNUC__
-- yes;
--#endif
--EOF
--if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:962: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-- ac_cv_prog_gcc=yes
-+ { { 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
-- ac_cv_prog_gcc=no
--fi
--fi
--
--echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
--if test $ac_cv_prog_gcc = yes; then
-- GCC=yes
--else
-- GCC=
--fi
-+{ { 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
-
--ac_test_CFLAGS="${CFLAGS+set}"
--ac_save_CFLAGS="$CFLAGS"
--CFLAGS=
--echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
--echo "configure:981: checking whether ${CC-cc} accepts -g" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- echo 'void f(){}' > conftest.c
--if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-+ ;
-+ 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
-- ac_cv_prog_cc_g=no
--fi
--rm -f conftest*
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
-+ac_cv_prog_cc_g=no
- fi
--
--echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-+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"
-+ CFLAGS=$ac_save_CFLAGS
- elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
-@@ -1007,136 +2270,494 @@
- CFLAGS=
- fi
- fi
--
--for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl
-+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 <stdarg.h>
-+#include <stdio.h>
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+/* 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
--# Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
--echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:1017: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ 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
-- if test -n "$CXX"; then
-- ac_cv_prog_CXX="$CXX" # Let the user override the test.
--else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_CXX="$ac_prog"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+ 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
--CXX="$ac_cv_prog_CXX"
--if test -n "$CXX"; then
-- echo "$ac_t""$CXX" 1>&6
-+
-+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 <stdlib.h>
-+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 "$ac_t""no" 1>&6
-+ 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
-
--test -n "$CXX" && break
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
--test -n "$CXX" || CXX="gcc"
-+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
-
--echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
--echo "configure:1049: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&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
-
--ac_ext=C
--# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-+ac_ext=cc
- ac_cpp='$CXXCPP $CPPFLAGS'
--ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
--cross_compiling=$ac_cv_prog_cxx_cross
--
--cat > conftest.$ac_ext << EOF
--
--#line 1060 "configure"
--#include "confdefs.h"
--
--int main(){return(0);}
--EOF
--if { (eval echo configure:1065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- ac_cv_prog_cxx_works=yes
-- # If we can't run a trivial program, we are probably using a cross compiler.
-- if (./conftest; exit) 2>/dev/null; then
-- ac_cv_prog_cxx_cross=no
-- else
-- ac_cv_prog_cxx_cross=yes
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+if test -n "$ac_tool_prefix"; then
-+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
-+ 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_CXX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CXX"; then
-+ ac_cv_prog_CXX="$CXX" # 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_CXX="$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
-+CXX=$ac_cv_prog_CXX
-+if test -n "$CXX"; then
-+ echo "$as_me:$LINENO: result: $CXX" >&5
-+echo "${ECHO_T}$CXX" >&6
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- ac_cv_prog_cxx_works=no
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
--rm -fr conftest*
--ac_ext=c
--# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
--ac_cpp='$CPP $CPPFLAGS'
--ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
--cross_compiling=$ac_cv_prog_cc_cross
-
--echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
--if test $ac_cv_prog_cxx_works = no; then
-- { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
-+ test -n "$CXX" && break
-+ done
- fi
--echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
--echo "configure:1091: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
--echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
--cross_compiling=$ac_cv_prog_cxx_cross
--
--echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
--echo "configure:1096: checking whether we are using GNU C++" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+if test -z "$CXX"; then
-+ ac_ct_CXX=$CXX
-+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
-+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_CXX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- cat > conftest.C <<EOF
--#ifdef __GNUC__
-- yes;
--#endif
--EOF
--if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1105: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-- ac_cv_prog_gxx=yes
-+ if test -n "$ac_ct_CXX"; then
-+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
- else
-- ac_cv_prog_gxx=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
-+ ac_cv_prog_ac_ct_CXX="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
- fi
- fi
-+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-+if test -n "$ac_ct_CXX"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-+echo "${ECHO_T}$ac_ct_CXX" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-
--echo "$ac_t""$ac_cv_prog_gxx" 1>&6
-+ test -n "$ac_ct_CXX" && break
-+done
-+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
-
--if test $ac_cv_prog_gxx = yes; then
-- GXX=yes
--else
-- GXX=
-+ CXX=$ac_ct_CXX
- fi
-
--ac_test_CXXFLAGS="${CXXFLAGS+set}"
--ac_save_CXXFLAGS="$CXXFLAGS"
--CXXFLAGS=
--echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
--echo "configure:1124: checking whether ${CXX-g++} accepts -g" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- echo 'void f(){}' > conftest.cc
--if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then
-+
-+# 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 </dev/null >&5\"") >&5
-+ (eval $ac_compiler --version </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
-+ (eval $ac_compiler -v </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
-+ (eval $ac_compiler -V </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+
-+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_cxx_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_cxx_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_cxx_compiler_gnu=$ac_compiler_gnu
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
-+GXX=`test $ac_compiler_gnu = yes && echo yes`
-+ac_test_CXXFLAGS=${CXXFLAGS+set}
-+ac_save_CXXFLAGS=$CXXFLAGS
-+CXXFLAGS="-g"
-+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
-+if test "${ac_cv_prog_cxx_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_cxx_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_cxx_g=yes
- else
-- ac_cv_prog_cxx_g=no
--fi
--rm -f conftest*
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
-+ac_cv_prog_cxx_g=no
- fi
--
--echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
- if test "$ac_test_CXXFLAGS" = set; then
-- CXXFLAGS="$ac_save_CXXFLAGS"
-+ CXXFLAGS=$ac_save_CXXFLAGS
- elif test $ac_cv_prog_cxx_g = yes; then
- if test "$GXX" = yes; then
- CXXFLAGS="-g -O2"
-@@ -1150,6 +2771,115 @@
- CXXFLAGS=
- fi
- fi
-+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 <stdlib.h>
-+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_cxx_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_cxx_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
-+
-+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
-
- # Find a good install program. We prefer a C program (faster),
- # so one script is as good as another. But avoid the broken or
-@@ -1158,505 +2888,1513 @@
- # 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 $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
--echo "configure:1167: checking for a BSD compatible install" >&5
-+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 eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+if test "${ac_cv_path_install+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
-- for ac_dir in $PATH; do
-- # Account for people who put trailing slashes in PATH elements.
-- case "$ac_dir/" in
-- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/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
-- if test -f $ac_dir/$ac_prog; then
-+ 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 $ac_dir/$ac_prog >/dev/null 2>&1; then
-+ 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="$ac_dir/$ac_prog -c"
-- break 2
-+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-+ break 3
- fi
- fi
- done
-- ;;
-- esac
-- done
-- IFS="$ac_save_IFS"
-+ done
-+ ;;
-+esac
-+done
-+
-
- fi
- if test "${ac_cv_path_install+set}" = set; then
-- INSTALL="$ac_cv_path_install"
-+ 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"
-+ INSTALL=$ac_install_sh
- fi
- fi
--echo "$ac_t""$INSTALL" 1>&6
-+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_PROGRAM}'
-+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
- for ac_prog in sed
- do
--# Extract the first word of "$ac_prog", so it can be a program name with args.
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
- set dummy $ac_prog; ac_word=$2
--echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:1225: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_regex_cmd'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_regex_cmd+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- if test -n "$regex_cmd"; then
- ac_cv_prog_regex_cmd="$regex_cmd" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_regex_cmd="$ac_prog"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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_regex_cmd="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
- fi
- fi
--regex_cmd="$ac_cv_prog_regex_cmd"
-+regex_cmd=$ac_cv_prog_regex_cmd
- if test -n "$regex_cmd"; then
-- echo "$ac_t""$regex_cmd" 1>&6
-+ echo "$as_me:$LINENO: result: $regex_cmd" >&5
-+echo "${ECHO_T}$regex_cmd" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
--test -n "$regex_cmd" && break
-+ test -n "$regex_cmd" && break
- done
-
- if test x$regex_cmd = "x"; then
-- { echo "configure: error: error. sed is required to build the default menu file." 1>&2; exit 1; }
-+ { { echo "$as_me:$LINENO: error: error. sed is required to build the default menu file." >&5
-+echo "$as_me: error: error. sed is required to build the default menu file." >&2;}
-+ { (exit 1); exit 1; }; }
- fi
-
--echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
--echo "configure:1259: checking how to run the C preprocessor" >&5
-+
-+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
-+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
- # On Suns, sometimes $CPP names a directory.
- if test -n "$CPP" && test -d "$CPP"; then
- CPP=
- fi
- if test -z "$CPP"; then
--if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ if test "${ac_cv_prog_CPP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- # This must be in double quotes, not single quotes, because CPP may get
-- # substituted into the Makefile and "${CC-cc}" will confuse make.
-- CPP="${CC-cc} -E"
-+ # Double quotes because CPP needs to be expanded
-+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-+ do
-+ ac_preproc_ok=false
-+for ac_c_preproc_warn_flag in '' yes
-+do
-+ # Use a header file that comes with gcc, so configuring glibc
-+ # with a fresh cross-compiler works.
-+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
-- # not just through cpp.
-- cat > conftest.$ac_ext <<EOF
--#line 1274 "configure"
--#include "confdefs.h"
--#include <assert.h>
--Syntax Error
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:1280: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-+ # not just through cpp. "Syntax error" is here to catch this case.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+ Syntax error
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
- :
- else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- CPP="${CC-cc} -E -traditional-cpp"
-- cat > conftest.$ac_ext <<EOF
--#line 1291 "configure"
--#include "confdefs.h"
--#include <assert.h>
--Syntax Error
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:1297: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Broken: fails on valid input.
-+continue
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+ # OK, works on sane cases. Now check whether non-existent headers
-+ # can be detected and how.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <ac_nonexistent.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ # Broken: success on invalid input.
-+continue
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Passes both tests.
-+ac_preproc_ok=:
-+break
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+done
-+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-+rm -f conftest.err conftest.$ac_ext
-+if $ac_preproc_ok; then
-+ break
-+fi
-+
-+ done
-+ ac_cv_prog_CPP=$CPP
-+
-+fi
-+ CPP=$ac_cv_prog_CPP
-+else
-+ ac_cv_prog_CPP=$CPP
-+fi
-+echo "$as_me:$LINENO: result: $CPP" >&5
-+echo "${ECHO_T}$CPP" >&6
-+ac_preproc_ok=false
-+for ac_c_preproc_warn_flag in '' yes
-+do
-+ # Use a header file that comes with gcc, so configuring glibc
-+ # with a fresh cross-compiler works.
-+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ # <limits.h> exists even on freestanding compilers.
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp. "Syntax error" is here to catch this case.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+ Syntax error
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Broken: fails on valid input.
-+continue
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+ # OK, works on sane cases. Now check whether non-existent headers
-+ # can be detected and how.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <ac_nonexistent.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ # Broken: success on invalid input.
-+continue
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Passes both tests.
-+ac_preproc_ok=:
-+break
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+done
-+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-+rm -f conftest.err conftest.$ac_ext
-+if $ac_preproc_ok; then
- :
- else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- CPP="${CC-cc} -nologo -E"
-- cat > conftest.$ac_ext <<EOF
--#line 1308 "configure"
--#include "confdefs.h"
--#include <assert.h>
--Syntax Error
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:1314: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-+See \`config.log' for more details." >&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
-+
-+
-+echo "$as_me:$LINENO: checking for egrep" >&5
-+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
-+if test "${ac_cv_prog_egrep+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-+ then ac_cv_prog_egrep='grep -E'
-+ else ac_cv_prog_egrep='egrep'
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
-+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
-+ EGREP=$ac_cv_prog_egrep
-+
-+
-+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-+if test "${ac_cv_header_stdc+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. */
-+#include <stdlib.h>
-+#include <stdarg.h>
-+#include <string.h>
-+#include <float.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_header_stdc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_header_stdc=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <string.h>
-+
-+_ACEOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ $EGREP "memchr" >/dev/null 2>&1; then
- :
- else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- CPP=/lib/cpp
-+ ac_cv_header_stdc=no
- fi
- rm -f conftest*
-+
- fi
--rm -f conftest*
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <stdlib.h>
-+
-+_ACEOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ $EGREP "free" >/dev/null 2>&1; then
-+ :
-+else
-+ ac_cv_header_stdc=no
- fi
- rm -f conftest*
-- ac_cv_prog_CPP="$CPP"
-+
- fi
-- CPP="$ac_cv_prog_CPP"
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-+ if test "$cross_compiling" = yes; then
-+ :
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <ctype.h>
-+#if ((' ' & 0x0FF) == 0x020)
-+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-+#else
-+# define ISLOWER(c) \
-+ (('a' <= (c) && (c) <= 'i') \
-+ || ('j' <= (c) && (c) <= 'r') \
-+ || ('s' <= (c) && (c) <= 'z'))
-+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-+#endif
-+
-+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-+int
-+main ()
-+{
-+ int i;
-+ for (i = 0; i < 256; i++)
-+ if (XOR (islower (i), ISLOWER (i))
-+ || toupper (i) != TOUPPER (i))
-+ exit(2);
-+ exit (0);
-+}
-+_ACEOF
-+rm -f conftest$ac_exeext
-+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); } && { ac_try='./conftest$ac_exeext'
-+ { (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
-- ac_cv_prog_CPP="$CPP"
-+ echo "$as_me: program exited with status $ac_status" >&5
-+echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+( exit $ac_status )
-+ac_cv_header_stdc=no
-+fi
-+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-+fi
-+fi
- fi
--echo "$ac_t""$CPP" 1>&6
-+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-+echo "${ECHO_T}$ac_cv_header_stdc" >&6
-+if test $ac_cv_header_stdc = yes; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define STDC_HEADERS 1
-+_ACEOF
-
--for ac_hdr in ctype.h dirent.h fcntl.h libgen.h locale.h nl_types.h process.h signal.h stdarg.h stdio.h stdlib.h string.h time.h unistd.h sys/param.h sys/select.h sys/signal.h sys/stat.h sys/time.h sys/types.h sys/wait.h
--do
--ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
--echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:1342: checking for $ac_hdr" >&5
--if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 1347 "configure"
--#include "confdefs.h"
--#include <$ac_hdr>
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:1352: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-- rm -rf conftest*
-- eval "ac_cv_header_$ac_safe=yes"
--else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_header_$ac_safe=no"
- fi
--rm -f conftest*
-+
-+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-+ inttypes.h stdint.h unistd.h
-+do
-+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_Header+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. */
-+$ac_includes_default
-+
-+#include <$ac_header>
-+_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
-+ eval "$as_ac_Header=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_Header=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+
-+done
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+for ac_header in ctype.h dirent.h fcntl.h libgen.h locale.h nl_types.h process.h signal.h stdarg.h stdio.h stdlib.h string.h time.h unistd.h sys/param.h sys/select.h sys/signal.h sys/stat.h sys/time.h sys/types.h sys/wait.h
-+do
-+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+#include <$ac_header>
-+_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_header_compiler=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+# Is the header present?
-+echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <$ac_header>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
- fi
--if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-- cat >> confdefs.h <<EOF
--#define $ac_tr_hdr 1
--EOF
--
--else
-- echo "$ac_t""no" 1>&6
-+if test -z "$ac_cpp_err"; then
-+ ac_header_preproc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ ac_header_preproc=no
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6
-+
-+# So? What about this header?
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-+ (
-+ cat <<\_ASBOX
-+## ------------------------------------------ ##
-+## Report this to the AC_PACKAGE_NAME lists. ##
-+## ------------------------------------------ ##
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+esac
-+echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ eval "$as_ac_Header=\$ac_header_preproc"
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+
-+fi
-+if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
- fi
-+
- done
-
--echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
--echo "configure:1379: checking whether time.h and sys/time.h may both be included" >&5
--if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 1384 "configure"
--#include "confdefs.h"
-+echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-+echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
-+if test "${ac_cv_header_time+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. */
- #include <sys/types.h>
- #include <sys/time.h>
- #include <time.h>
--int main() {
--struct tm *tp;
--; return 0; }
--EOF
--if { (eval echo configure:1393: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-- rm -rf conftest*
-+
-+int
-+main ()
-+{
-+if ((struct tm *) 0)
-+return 0;
-+ ;
-+ 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_header_time=yes
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- ac_cv_header_time=no
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_header_time=no
- fi
--rm -f conftest*
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
--
--echo "$ac_t""$ac_cv_header_time" 1>&6
-+echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-+echo "${ECHO_T}$ac_cv_header_time" >&6
- if test $ac_cv_header_time = yes; then
-- cat >> confdefs.h <<\EOF
-+
-+cat >>confdefs.h <<\_ACEOF
- #define TIME_WITH_SYS_TIME 1
--EOF
-+_ACEOF
-
- fi
-
-
-+
- for ac_func in basename
- do
--echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:1417: checking for $ac_func" >&5
--if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 1422 "configure"
--#include "confdefs.h"
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+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. */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define $ac_func innocuous_$ac_func
-+
- /* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char $ac_func(); below. */
--#include <assert.h>
-+ which can conflict with char $ac_func (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+
-+#undef $ac_func
-+
- /* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char $ac_func ();
-+/* The GNU C library defines this for functions which it implements
-+ to always fail with ENOSYS. Some functions are actually named
-+ something starting with __ and the normal name is an alias. */
-+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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
-+ eval "$as_ac_var=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+else
-+ echo "$as_me:$LINENO: checking for basename in -lgen" >&5
-+echo $ECHO_N "checking for basename in -lgen... $ECHO_C" >&6
-+if test "${ac_cv_lib_gen_basename+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lgen $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char basename ();
-+int
-+main ()
-+{
-+basename ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_gen_basename=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_gen_basename=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_gen_basename" >&5
-+echo "${ECHO_T}$ac_cv_lib_gen_basename" >&6
-+if test $ac_cv_lib_gen_basename = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+#define HAVE_BASENAME 1
-+_ACEOF
-+ LIBS="$LIBS -lgen"
-+fi
-+
-+fi
-+done
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+for ac_func in getpid setlocale sigaction strftime strcasestr snprintf vsnprintf catopen catgets catclose
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+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. */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+
-+#undef $ac_func
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
- /* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char $ac_func();
-+ builtin and then its argument prototype would still apply. */
-+char $ac_func ();
-+/* The GNU C library defines this for functions which it implements
-+ to always fail with ENOSYS. Some functions are actually named
-+ something starting with __ and the normal name is an alias. */
-+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-
--int main() {
-+int
-+main ()
-+{
-+return f != $ac_func;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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
-+ eval "$as_ac_var=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+done
-+
-+echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5
-+echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6
-+if test "${ac_cv_lib_nsl_t_open+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lnsl $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char t_open ();
-+int
-+main ()
-+{
-+t_open ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_nsl_t_open=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_nsl_t_open=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5
-+echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6
-+if test $ac_cv_lib_nsl_t_open = yes; then
-+ LIBS="$LIBS -lnsl"
-+fi
-+
-+echo "$as_me:$LINENO: checking for socket in -lsocket" >&5
-+echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6
-+if test "${ac_cv_lib_socket_socket+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lsocket $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char socket ();
-+int
-+main ()
-+{
-+socket ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_socket_socket=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_socket_socket=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5
-+echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6
-+if test $ac_cv_lib_socket_socket = yes; then
-+ LIBS="$LIBS -lsocket"
-+fi
-+
-+
-+echo "$as_me:$LINENO: checking for X" >&5
-+echo $ECHO_N "checking for X... $ECHO_C" >&6
-+
-+ac_path_x_has_been_run=yes
-+
-+# Check whether --with-x or --without-x was given.
-+if test "${with_x+set}" = set; then
-+ withval="$with_x"
-+
-+fi;
-+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
-+if test "x$with_x" = xno; then
-+ # The user explicitly disabled X.
-+ have_x=disabled
-+else
-+ if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then
-+ # Both variables are already set.
-+ have_x=yes
-+ else
-+ if test "${ac_cv_have_x+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # One or both of the vars are not set, and there is no cached value.
-+ac_x_includes=no ac_x_libraries=no
-+rm -fr conftest.dir
-+if mkdir conftest.dir; then
-+ cd conftest.dir
-+ # Make sure to not put "make" in the Imakefile rules, since we grep it out.
-+ cat >Imakefile <<'_ACEOF'
-+acfindx:
-+ @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"'
-+_ACEOF
-+ if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
-+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-+ eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
-+ # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
-+ for ac_extension in a so sl; do
-+ if test ! -f $ac_im_usrlibdir/libX11.$ac_extension &&
-+ test -f $ac_im_libdir/libX11.$ac_extension; then
-+ ac_im_usrlibdir=$ac_im_libdir; break
-+ fi
-+ done
-+ # Screen out bogus values from the imake configuration. They are
-+ # bogus both because they are the default anyway, and because
-+ # using them would break gcc on systems where it needs fixed includes.
-+ case $ac_im_incroot in
-+ /usr/include) ;;
-+ *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
-+ esac
-+ case $ac_im_usrlibdir in
-+ /usr/lib | /lib) ;;
-+ *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
-+ esac
-+ fi
-+ cd ..
-+ rm -fr conftest.dir
-+fi
-
--/* The GNU C library defines this for functions which it implements
-- to always fail with ENOSYS. Some functions are actually named
-- something starting with __ and the normal name is an alias. */
--#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
--choke me
--#else
--$ac_func();
--#endif
-+# Standard set of common directories for X headers.
-+# Check X11 before X11Rn because it is often a symlink to the current release.
-+ac_x_header_dirs='
-+/usr/X11/include
-+/usr/X11R6/include
-+/usr/X11R5/include
-+/usr/X11R4/include
-+
-+/usr/include/X11
-+/usr/include/X11R6
-+/usr/include/X11R5
-+/usr/include/X11R4
-+
-+/usr/local/X11/include
-+/usr/local/X11R6/include
-+/usr/local/X11R5/include
-+/usr/local/X11R4/include
-+
-+/usr/local/include/X11
-+/usr/local/include/X11R6
-+/usr/local/include/X11R5
-+/usr/local/include/X11R4
-+
-+/usr/X386/include
-+/usr/x386/include
-+/usr/XFree86/include/X11
-+
-+/usr/include
-+/usr/local/include
-+/usr/unsupported/include
-+/usr/athena/include
-+/usr/local/x11r5/include
-+/usr/lpp/Xamples/include
-
--; return 0; }
--EOF
--if { (eval echo configure:1445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_func_$ac_func=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_func_$ac_func=no"
--fi
--rm -f conftest*
--fi
-+/usr/openwin/include
-+/usr/openwin/share/include'
-
--if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-- cat >> confdefs.h <<EOF
--#define $ac_tr_func 1
--EOF
--
--else
-- echo "$ac_t""no" 1>&6
--echo $ac_n "checking for basename in -lgen""... $ac_c" 1>&6
--echo "configure:1467: checking for basename in -lgen" >&5
--ac_lib_var=`echo gen'_'basename | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+if test "$ac_x_includes" = no; then
-+ # Guess where to find include files, by looking for a specified header file.
-+ # First, try using that file with no special directory specified.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <X11/Intrinsic.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
- else
-- ac_save_LIBS="$LIBS"
--LIBS="-lgen $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 1475 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char basename();
--
--int main() {
--basename()
--; return 0; }
--EOF
--if { (eval echo configure:1486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
-+ ac_cpp_err=yes
- fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
--
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- cat >> confdefs.h <<\EOF
--#define HAVE_BASENAME 1
--EOF
-- LIBS="$LIBS -lgen"
-+if test -z "$ac_cpp_err"; then
-+ # We can compile using X headers with no special include directory.
-+ac_x_includes=
- else
-- echo "$ac_t""no" 1>&6
--fi
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
--fi
-+ for ac_dir in $ac_x_header_dirs; do
-+ if test -r "$ac_dir/X11/Intrinsic.h"; then
-+ ac_x_includes=$ac_dir
-+ break
-+ fi
- done
--
--for ac_func in getpid setlocale sigaction strftime strcasestr snprintf vsnprintf catopen catgets catclose
--do
--echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:1515: checking for $ac_func" >&5
--if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 1520 "configure"
--#include "confdefs.h"
--/* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char $ac_func(); below. */
--#include <assert.h>
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char $ac_func();
--
--int main() {
--
--/* The GNU C library defines this for functions which it implements
-- to always fail with ENOSYS. Some functions are actually named
-- something starting with __ and the normal name is an alias. */
--#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
--choke me
--#else
--$ac_func();
--#endif
--
--; return 0; }
--EOF
--if { (eval echo configure:1543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_func_$ac_func=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_func_$ac_func=no"
--fi
--rm -f conftest*
- fi
-+rm -f conftest.err conftest.$ac_ext
-+fi # $ac_x_includes = no
-
--if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-- cat >> confdefs.h <<EOF
--#define $ac_tr_func 1
--EOF
--
-+if test "$ac_x_libraries" = no; then
-+ # Check for the libraries.
-+ # See if we find them without any special options.
-+ # Don't add to $LIBS permanently.
-+ ac_save_LIBS=$LIBS
-+ LIBS="-lXt $LIBS"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <X11/Intrinsic.h>
-+int
-+main ()
-+{
-+XtMalloc (0)
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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
-+ LIBS=$ac_save_LIBS
-+# We can link X programs with no special library path.
-+ac_x_libraries=
- else
-- echo "$ac_t""no" 1>&6
--fi
--done
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
--echo $ac_n "checking for t_open in -lnsl""... $ac_c" 1>&6
--echo "configure:1568: checking for t_open in -lnsl" >&5
--ac_lib_var=`echo nsl'_'t_open | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- ac_save_LIBS="$LIBS"
--LIBS="-lnsl $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 1576 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char t_open();
--
--int main() {
--t_open()
--; return 0; }
--EOF
--if { (eval echo configure:1587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
-+LIBS=$ac_save_LIBS
-+for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
-+do
-+ # Don't even attempt the hair of trying to link an X program!
-+ for ac_extension in a so sl; do
-+ if test -r $ac_dir/libXt.$ac_extension; then
-+ ac_x_libraries=$ac_dir
-+ break 2
-+ fi
-+ done
-+done
- fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi # $ac_x_libraries = no
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- LIBS="$LIBS -lnsl"
-+if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then
-+ # Didn't find X anywhere. Cache the known absence of X.
-+ ac_cv_have_x="have_x=no"
- else
-- echo "$ac_t""no" 1>&6
-+ # Record where we found X for the cache.
-+ ac_cv_have_x="have_x=yes \
-+ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries"
- fi
--
--echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
--echo "configure:1608: checking for socket in -lsocket" >&5
--ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- ac_save_LIBS="$LIBS"
--LIBS="-lsocket $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 1616 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char socket();
--
--int main() {
--socket()
--; return 0; }
--EOF
--if { (eval echo configure:1627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
- fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- LIBS="$LIBS -lsocket"
-+ fi
-+ eval "$ac_cv_have_x"
-+fi # $with_x != no
-+
-+if test "$have_x" != yes; then
-+ echo "$as_me:$LINENO: result: $have_x" >&5
-+echo "${ECHO_T}$have_x" >&6
-+ no_x=yes
- else
-- echo "$ac_t""no" 1>&6
-+ # If each of the values was on the command line, it overrides each guess.
-+ test "x$x_includes" = xNONE && x_includes=$ac_x_includes
-+ test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
-+ # Update the cache value to reflect the command line values.
-+ ac_cv_have_x="have_x=yes \
-+ ac_x_includes=$x_includes ac_x_libraries=$x_libraries"
-+ # It might be that x_includes is empty (headers are found in the
-+ # standard search path. Then output the corresponding message
-+ ac_out_x_includes=$x_includes
-+ test "x$x_includes" = x && ac_out_x_includes="in standard search path"
-+ echo "$as_me:$LINENO: result: libraries $x_libraries, headers $ac_out_x_includes" >&5
-+echo "${ECHO_T}libraries $x_libraries, headers $ac_out_x_includes" >&6
- fi
-
-
--# If we find X, set shell vars x_includes and x_libraries to the
--# paths, otherwise set no_x=yes.
--# Uses ac_ vars as temps to allow command line to override cache and checks.
--# --without-x overrides everything else, but does not touch the cache.
--echo $ac_n "checking for X""... $ac_c" 1>&6
--echo "configure:1653: checking for X" >&5
-+if test "x$ac_path_x_has_been_run" != xyes; then
-+ echo "$as_me:$LINENO: checking for X" >&5
-+echo $ECHO_N "checking for X... $ECHO_C" >&6
-+
-+ac_path_x_has_been_run=yes
-
- # Check whether --with-x or --without-x was given.
- if test "${with_x+set}" = set; then
- withval="$with_x"
-- :
--fi
-
-+fi;
- # $have_x is `yes', `no', `disabled', or empty when we do not yet know.
- if test "x$with_x" = xno; then
- # The user explicitly disabled X.
-@@ -1666,207 +4404,209 @@
- # Both variables are already set.
- have_x=yes
- else
--if eval "test \"`echo '$''{'ac_cv_have_x'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ if test "${ac_cv_have_x+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- # One or both of the vars are not set, and there is no cached value.
--ac_x_includes=NO ac_x_libraries=NO
--rm -fr conftestdir
--if mkdir conftestdir; then
-- cd conftestdir
-+ac_x_includes=no ac_x_libraries=no
-+rm -fr conftest.dir
-+if mkdir conftest.dir; then
-+ cd conftest.dir
- # Make sure to not put "make" in the Imakefile rules, since we grep it out.
-- cat > Imakefile <<'EOF'
-+ cat >Imakefile <<'_ACEOF'
- acfindx:
- @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"'
--EOF
-+_ACEOF
- if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
- # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
- eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
- # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
- for ac_extension in a so sl; do
- if test ! -f $ac_im_usrlibdir/libX11.$ac_extension &&
-- test -f $ac_im_libdir/libX11.$ac_extension; then
-- ac_im_usrlibdir=$ac_im_libdir; break
-+ test -f $ac_im_libdir/libX11.$ac_extension; then
-+ ac_im_usrlibdir=$ac_im_libdir; break
- fi
- done
- # Screen out bogus values from the imake configuration. They are
- # bogus both because they are the default anyway, and because
- # using them would break gcc on systems where it needs fixed includes.
-- case "$ac_im_incroot" in
-+ case $ac_im_incroot in
- /usr/include) ;;
-- *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes="$ac_im_incroot" ;;
-+ *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
- esac
-- case "$ac_im_usrlibdir" in
-+ case $ac_im_usrlibdir in
- /usr/lib | /lib) ;;
-- *) test -d "$ac_im_usrlibdir" && ac_x_libraries="$ac_im_usrlibdir" ;;
-+ *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
- esac
- fi
- cd ..
-- rm -fr conftestdir
-+ rm -fr conftest.dir
- fi
-
--if test "$ac_x_includes" = NO; then
-- # Guess where to find include files, by looking for this one X11 .h file.
-- test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h
-+# Standard set of common directories for X headers.
-+# Check X11 before X11Rn because it is often a symlink to the current release.
-+ac_x_header_dirs='
-+/usr/X11/include
-+/usr/X11R6/include
-+/usr/X11R5/include
-+/usr/X11R4/include
-+
-+/usr/include/X11
-+/usr/include/X11R6
-+/usr/include/X11R5
-+/usr/include/X11R4
-+
-+/usr/local/X11/include
-+/usr/local/X11R6/include
-+/usr/local/X11R5/include
-+/usr/local/X11R4/include
-+
-+/usr/local/include/X11
-+/usr/local/include/X11R6
-+/usr/local/include/X11R5
-+/usr/local/include/X11R4
-+
-+/usr/X386/include
-+/usr/x386/include
-+/usr/XFree86/include/X11
-+
-+/usr/include
-+/usr/local/include
-+/usr/unsupported/include
-+/usr/athena/include
-+/usr/local/x11r5/include
-+/usr/lpp/Xamples/include
-+
-+/usr/openwin/include
-+/usr/openwin/share/include'
-
-+if test "$ac_x_includes" = no; then
-+ # Guess where to find include files, by looking for a specified header file.
- # First, try using that file with no special directory specified.
--cat > conftest.$ac_ext <<EOF
--#line 1715 "configure"
--#include "confdefs.h"
--#include <$x_direct_test_include>
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:1720: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-- rm -rf conftest*
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <X11/Intrinsic.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
- # We can compile using X headers with no special include directory.
- ac_x_includes=
- else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- # Look for the header file in a standard set of common directories.
--# Check X11 before X11Rn because it is often a symlink to the current release.
-- for ac_dir in \
-- /usr/X11/include \
-- /usr/X11R6/include \
-- /usr/X11R5/include \
-- /usr/X11R4/include \
-- \
-- /usr/include/X11 \
-- /usr/include/X11R6 \
-- /usr/include/X11R5 \
-- /usr/include/X11R4 \
-- \
-- /usr/local/X11/include \
-- /usr/local/X11R6/include \
-- /usr/local/X11R5/include \
-- /usr/local/X11R4/include \
-- \
-- /usr/local/include/X11 \
-- /usr/local/include/X11R6 \
-- /usr/local/include/X11R5 \
-- /usr/local/include/X11R4 \
-- \
-- /usr/X386/include \
-- /usr/x386/include \
-- /usr/XFree86/include/X11 \
-- \
-- /usr/include \
-- /usr/local/include \
-- /usr/unsupported/include \
-- /usr/athena/include \
-- /usr/local/x11r5/include \
-- /usr/lpp/Xamples/include \
-- \
-- /usr/openwin/include \
-- /usr/openwin/share/include \
-- ; \
-- do
-- if test -r "$ac_dir/$x_direct_test_include"; then
-- ac_x_includes=$ac_dir
-- break
-- fi
-- done
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ for ac_dir in $ac_x_header_dirs; do
-+ if test -r "$ac_dir/X11/Intrinsic.h"; then
-+ ac_x_includes=$ac_dir
-+ break
-+ fi
-+done
- fi
--rm -f conftest*
--fi # $ac_x_includes = NO
-+rm -f conftest.err conftest.$ac_ext
-+fi # $ac_x_includes = no
-
--if test "$ac_x_libraries" = NO; then
-+if test "$ac_x_libraries" = no; then
- # Check for the libraries.
--
-- test -z "$x_direct_test_library" && x_direct_test_library=Xt
-- test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc
--
- # See if we find them without any special options.
- # Don't add to $LIBS permanently.
-- ac_save_LIBS="$LIBS"
-- LIBS="-l$x_direct_test_library $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 1789 "configure"
--#include "confdefs.h"
--
--int main() {
--${x_direct_test_function}()
--; return 0; }
--EOF
--if { (eval echo configure:1796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- LIBS="$ac_save_LIBS"
-+ ac_save_LIBS=$LIBS
-+ LIBS="-lXt $LIBS"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <X11/Intrinsic.h>
-+int
-+main ()
-+{
-+XtMalloc (0)
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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
-+ LIBS=$ac_save_LIBS
- # We can link X programs with no special library path.
- ac_x_libraries=
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- LIBS="$ac_save_LIBS"
--# First see if replacing the include by lib works.
--# Check X11 before X11Rn because it is often a symlink to the current release.
--for ac_dir in `echo "$ac_x_includes" | sed s/include/lib/` \
-- /usr/X11/lib \
-- /usr/X11R6/lib \
-- /usr/X11R5/lib \
-- /usr/X11R4/lib \
-- \
-- /usr/lib/X11 \
-- /usr/lib/X11R6 \
-- /usr/lib/X11R5 \
-- /usr/lib/X11R4 \
-- \
-- /usr/local/X11/lib \
-- /usr/local/X11R6/lib \
-- /usr/local/X11R5/lib \
-- /usr/local/X11R4/lib \
-- \
-- /usr/local/lib/X11 \
-- /usr/local/lib/X11R6 \
-- /usr/local/lib/X11R5 \
-- /usr/local/lib/X11R4 \
-- \
-- /usr/X386/lib \
-- /usr/x386/lib \
-- /usr/XFree86/lib/X11 \
-- \
-- /usr/lib \
-- /usr/local/lib \
-- /usr/unsupported/lib \
-- /usr/athena/lib \
-- /usr/local/x11r5/lib \
-- /usr/lpp/Xamples/lib \
-- /lib/usr/lib/X11 \
-- \
-- /usr/openwin/lib \
-- /usr/openwin/share/lib \
-- ; \
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+LIBS=$ac_save_LIBS
-+for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
- do
-+ # Don't even attempt the hair of trying to link an X program!
- for ac_extension in a so sl; do
-- if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then
-+ if test -r $ac_dir/libXt.$ac_extension; then
- ac_x_libraries=$ac_dir
- break 2
- fi
- done
- done
- fi
--rm -f conftest*
--fi # $ac_x_libraries = NO
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi # $ac_x_libraries = no
-
--if test "$ac_x_includes" = NO || test "$ac_x_libraries" = NO; then
-+if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then
- # Didn't find X anywhere. Cache the known absence of X.
- ac_cv_have_x="have_x=no"
- else
- # Record where we found X for the cache.
- ac_cv_have_x="have_x=yes \
-- ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries"
-+ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries"
- fi
- fi
-+
- fi
- eval "$ac_cv_have_x"
- fi # $with_x != no
-
- if test "$have_x" != yes; then
-- echo "$ac_t""$have_x" 1>&6
-+ echo "$as_me:$LINENO: result: $have_x" >&5
-+echo "${ECHO_T}$have_x" >&6
- no_x=yes
- else
- # If each of the values was on the command line, it overrides each guess.
-@@ -1875,14 +4615,21 @@
- # Update the cache value to reflect the command line values.
- ac_cv_have_x="have_x=yes \
- ac_x_includes=$x_includes ac_x_libraries=$x_libraries"
-- echo "$ac_t""libraries $x_libraries, headers $x_includes" 1>&6
-+ # It might be that x_includes is empty (headers are found in the
-+ # standard search path. Then output the corresponding message
-+ ac_out_x_includes=$x_includes
-+ test "x$x_includes" = x && ac_out_x_includes="in standard search path"
-+ echo "$as_me:$LINENO: result: libraries $x_libraries, headers $ac_out_x_includes" >&5
-+echo "${ECHO_T}libraries $x_libraries, headers $ac_out_x_includes" >&6
- fi
-
-+fi
- if test "$no_x" = yes; then
- # Not all programs may use this symbol, but it does not hurt to define it.
-- cat >> confdefs.h <<\EOF
-+
-+cat >>confdefs.h <<\_ACEOF
- #define X_DISPLAY_MISSING 1
--EOF
-+_ACEOF
-
- X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
- else
-@@ -1895,60 +4642,117 @@
- X_LIBS="$X_LIBS -L$x_libraries"
- # For Solaris; some versions of Sun CC require a space after -R and
- # others require no space. Words are not sufficient . . . .
-- case "`(uname -sr) 2>/dev/null`" in
-+ case `(uname -sr) 2>/dev/null` in
- "SunOS 5"*)
-- echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6
--echo "configure:1902: checking whether -R must be followed by a space" >&5
-- ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
-- cat > conftest.$ac_ext <<EOF
--#line 1905 "configure"
--#include "confdefs.h"
--
--int main() {
--
--; return 0; }
--EOF
--if { (eval echo configure:1912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-+ echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5
-+echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6
-+ ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
-+ 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 conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_R_nospace=yes
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- ac_R_nospace=no
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_R_nospace=no
- fi
--rm -f conftest*
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
- if test $ac_R_nospace = yes; then
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- X_LIBS="$X_LIBS -R$x_libraries"
- else
- LIBS="$ac_xsave_LIBS -R $x_libraries"
-- cat > conftest.$ac_ext <<EOF
--#line 1928 "configure"
--#include "confdefs.h"
--
--int main() {
--
--; return 0; }
--EOF
--if { (eval echo configure:1935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-+ 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 conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_R_space=yes
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- ac_R_space=no
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_R_space=no
- fi
--rm -f conftest*
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
- if test $ac_R_space = yes; then
-- echo "$ac_t""yes" 1>&6
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
- X_LIBS="$X_LIBS -R $x_libraries"
- else
-- echo "$ac_t""neither works" 1>&6
-+ echo "$as_me:$LINENO: result: neither works" >&5
-+echo "${ECHO_T}neither works" >&6
- fi
- fi
-- LIBS="$ac_xsave_LIBS"
-+ LIBS=$ac_xsave_LIBS
- esac
- fi
-
-@@ -1959,527 +4763,1010 @@
- if test "$ISC" = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
- else
-- # Martyn.Johnson@cl.cam.ac.uk says this is needed for Ultrix, if the X
-- # libraries were built with DECnet support. And karl@cs.umb.edu says
-+ # Martyn Johnson says this is needed for Ultrix, if the X
-+ # libraries were built with DECnet support. And Karl Berry says
- # the Alpha needs dnet_stub (dnet does not exist).
-- echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
--echo "configure:1967: checking for dnet_ntoa in -ldnet" >&5
--ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char XOpenDisplay ();
-+int
-+main ()
-+{
-+XOpenDisplay ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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
-+
-+echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
-+echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6
-+if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-ldnet $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 1975 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char dnet_ntoa();
--
--int main() {
--dnet_ntoa()
--; return 0; }
--EOF
--if { (eval echo configure:1986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char dnet_ntoa ();
-+int
-+main ()
-+{
-+dnet_ntoa ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_dnet_dnet_ntoa=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dnet_dnet_ntoa=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
-+echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6
-+if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
--else
-- echo "$ac_t""no" 1>&6
- fi
-
- if test $ac_cv_lib_dnet_dnet_ntoa = no; then
-- echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6
--echo "configure:2008: checking for dnet_ntoa in -ldnet_stub" >&5
--ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
-+echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6
-+if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-ldnet_stub $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2016 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char dnet_ntoa();
--
--int main() {
--dnet_ntoa()
--; return 0; }
--EOF
--if { (eval echo configure:2027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char dnet_ntoa ();
-+int
-+main ()
-+{
-+dnet_ntoa ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_dnet_stub_dnet_ntoa=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dnet_stub_dnet_ntoa=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
-+echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6
-+if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
--else
-- echo "$ac_t""no" 1>&6
- fi
-
- fi
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+ LIBS="$ac_xsave_LIBS"
-
- # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
- # to get the SysV transport functions.
-- # chad@anasazi.com says the Pyramis MIS-ES running DC/OSx (SVR4)
-+ # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
- # needs -lnsl.
- # The nsl library prevents programs from opening the X display
-- # on Irix 5.2, according to dickey@clark.net.
-- echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
--echo "configure:2056: checking for gethostbyname" >&5
--if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 2061 "configure"
--#include "confdefs.h"
-+ # on Irix 5.2, according to T.E. Dickey.
-+ # The functions gethostbyname, getservbyname, and inet_addr are
-+ # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
-+ echo "$as_me:$LINENO: checking for gethostbyname" >&5
-+echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6
-+if test "${ac_cv_func_gethostbyname+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. */
-+/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define gethostbyname innocuous_gethostbyname
-+
- /* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char gethostbyname(); below. */
--#include <assert.h>
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char gethostbyname();
-+ which can conflict with char gethostbyname (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-
--int main() {
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-
-+#undef gethostbyname
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char gethostbyname ();
- /* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
- #if defined (__stub_gethostbyname) || defined (__stub___gethostbyname)
- choke me
- #else
--gethostbyname();
-+char (*f) () = gethostbyname;
-+#endif
-+#ifdef __cplusplus
-+}
- #endif
-
--; return 0; }
--EOF
--if { (eval echo configure:2084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_func_gethostbyname=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_func_gethostbyname=no"
--fi
--rm -f conftest*
--fi
-+int
-+main ()
-+{
-+return f != gethostbyname;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_func_gethostbyname=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
--if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- :
--else
-- echo "$ac_t""no" 1>&6
-+ac_cv_func_gethostbyname=no
- fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
-+echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6
-
- if test $ac_cv_func_gethostbyname = no; then
-- echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
--echo "configure:2105: checking for gethostbyname in -lnsl" >&5
--ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
-+echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6
-+if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-lnsl $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2113 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char gethostbyname();
--
--int main() {
--gethostbyname()
--; return 0; }
--EOF
--if { (eval echo configure:2124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char gethostbyname ();
-+int
-+main ()
-+{
-+gethostbyname ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_nsl_gethostbyname=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_nsl_gethostbyname=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
-+echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6
-+if test $ac_cv_lib_nsl_gethostbyname = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
--else
-- echo "$ac_t""no" 1>&6
- fi
-
-+ if test $ac_cv_lib_nsl_gethostbyname = no; then
-+ echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
-+echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6
-+if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lbsd $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char gethostbyname ();
-+int
-+main ()
-+{
-+gethostbyname ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_bsd_gethostbyname=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_bsd_gethostbyname=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
-+echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6
-+if test $ac_cv_lib_bsd_gethostbyname = yes; then
-+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
-+fi
-+
-+ fi
- fi
-
- # lieder@skyler.mavd.honeywell.com says without -lsocket,
- # socket/setsockopt and other routines are undefined under SCO ODT
- # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary
-- # on later versions), says simon@lia.di.epfl.ch: it contains
-- # gethostby* variants that don't use the nameserver (or something).
-- # -lsocket must be given before -lnsl if both are needed.
-- # We assume that if connect needs -lnsl, so does gethostbyname.
-- echo $ac_n "checking for connect""... $ac_c" 1>&6
--echo "configure:2154: checking for connect" >&5
--if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 2159 "configure"
--#include "confdefs.h"
-+ # on later versions), says Simon Leinen: it contains gethostby*
-+ # variants that don't use the name server (or something). -lsocket
-+ # must be given before -lnsl if both are needed. We assume that
-+ # if connect needs -lnsl, so does gethostbyname.
-+ echo "$as_me:$LINENO: checking for connect" >&5
-+echo $ECHO_N "checking for connect... $ECHO_C" >&6
-+if test "${ac_cv_func_connect+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. */
-+/* Define connect to an innocuous variant, in case <limits.h> declares connect.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define connect innocuous_connect
-+
- /* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char connect(); below. */
--#include <assert.h>
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char connect();
-+ which can conflict with char connect (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-
--int main() {
-+#undef connect
-
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char connect ();
- /* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
- #if defined (__stub_connect) || defined (__stub___connect)
- choke me
- #else
--connect();
-+char (*f) () = connect;
-+#endif
-+#ifdef __cplusplus
-+}
- #endif
-
--; return 0; }
--EOF
--if { (eval echo configure:2182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_func_connect=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_func_connect=no"
--fi
--rm -f conftest*
--fi
-+int
-+main ()
-+{
-+return f != connect;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_func_connect=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
--if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- :
--else
-- echo "$ac_t""no" 1>&6
-+ac_cv_func_connect=no
- fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
-+echo "${ECHO_T}$ac_cv_func_connect" >&6
-
- if test $ac_cv_func_connect = no; then
-- echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
--echo "configure:2203: checking for connect in -lsocket" >&5
--ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
-+echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6
-+if test "${ac_cv_lib_socket_connect+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2211 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char connect();
--
--int main() {
--connect()
--; return 0; }
--EOF
--if { (eval echo configure:2222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char connect ();
-+int
-+main ()
-+{
-+connect ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_socket_connect=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_socket_connect=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
-+echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6
-+if test $ac_cv_lib_socket_connect = yes; then
- X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
--else
-- echo "$ac_t""no" 1>&6
- fi
-
- fi
-
-- # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
-- echo $ac_n "checking for remove""... $ac_c" 1>&6
--echo "configure:2246: checking for remove" >&5
--if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 2251 "configure"
--#include "confdefs.h"
-+ # Guillermo Gomez says -lposix is necessary on A/UX.
-+ echo "$as_me:$LINENO: checking for remove" >&5
-+echo $ECHO_N "checking for remove... $ECHO_C" >&6
-+if test "${ac_cv_func_remove+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. */
-+/* Define remove to an innocuous variant, in case <limits.h> declares remove.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define remove innocuous_remove
-+
- /* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char remove(); below. */
--#include <assert.h>
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char remove();
-+ which can conflict with char remove (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-
--int main() {
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-
-+#undef remove
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char remove ();
- /* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
- #if defined (__stub_remove) || defined (__stub___remove)
- choke me
- #else
--remove();
-+char (*f) () = remove;
-+#endif
-+#ifdef __cplusplus
-+}
- #endif
-
--; return 0; }
--EOF
--if { (eval echo configure:2274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_func_remove=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_func_remove=no"
--fi
--rm -f conftest*
--fi
-+int
-+main ()
-+{
-+return f != remove;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_func_remove=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
--if eval "test \"`echo '$ac_cv_func_'remove`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- :
--else
-- echo "$ac_t""no" 1>&6
-+ac_cv_func_remove=no
- fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
-+echo "${ECHO_T}$ac_cv_func_remove" >&6
-
- if test $ac_cv_func_remove = no; then
-- echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
--echo "configure:2295: checking for remove in -lposix" >&5
--ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking for remove in -lposix" >&5
-+echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6
-+if test "${ac_cv_lib_posix_remove+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-lposix $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2303 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char remove();
--
--int main() {
--remove()
--; return 0; }
--EOF
--if { (eval echo configure:2314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char remove ();
-+int
-+main ()
-+{
-+remove ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_posix_remove=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_posix_remove=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
-+echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6
-+if test $ac_cv_lib_posix_remove = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
--else
-- echo "$ac_t""no" 1>&6
- fi
-
- fi
-
- # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
-- echo $ac_n "checking for shmat""... $ac_c" 1>&6
--echo "configure:2338: checking for shmat" >&5
--if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 2343 "configure"
--#include "confdefs.h"
-+ echo "$as_me:$LINENO: checking for shmat" >&5
-+echo $ECHO_N "checking for shmat... $ECHO_C" >&6
-+if test "${ac_cv_func_shmat+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. */
-+/* Define shmat to an innocuous variant, in case <limits.h> declares shmat.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define shmat innocuous_shmat
-+
- /* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char shmat(); below. */
--#include <assert.h>
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char shmat();
-+ which can conflict with char shmat (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-
--int main() {
-+#undef shmat
-
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char shmat ();
- /* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
- #if defined (__stub_shmat) || defined (__stub___shmat)
- choke me
- #else
--shmat();
-+char (*f) () = shmat;
-+#endif
-+#ifdef __cplusplus
-+}
- #endif
-
--; return 0; }
--EOF
--if { (eval echo configure:2366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_func_shmat=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_func_shmat=no"
--fi
--rm -f conftest*
--fi
-+int
-+main ()
-+{
-+return f != shmat;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_func_shmat=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
--if eval "test \"`echo '$ac_cv_func_'shmat`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- :
--else
-- echo "$ac_t""no" 1>&6
-+ac_cv_func_shmat=no
- fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
-+echo "${ECHO_T}$ac_cv_func_shmat" >&6
-
- if test $ac_cv_func_shmat = no; then
-- echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
--echo "configure:2387: checking for shmat in -lipc" >&5
--ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
-+echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6
-+if test "${ac_cv_lib_ipc_shmat+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-lipc $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2395 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char shmat();
--
--int main() {
--shmat()
--; return 0; }
--EOF
--if { (eval echo configure:2406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char shmat ();
-+int
-+main ()
-+{
-+shmat ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_ipc_shmat=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_ipc_shmat=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
-+echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6
-+if test $ac_cv_lib_ipc_shmat = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
--else
-- echo "$ac_t""no" 1>&6
- fi
-
- fi
- fi
-
- # Check for libraries that X11R6 Xt/Xaw programs need.
-- ac_save_LDFLAGS="$LDFLAGS"
-+ ac_save_LDFLAGS=$LDFLAGS
- test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
- # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
- # check for ICE first), but we must link in the order -lSM -lICE or
- # we get undefined symbols. So assume we have SM if we have ICE.
- # These have to be linked with before -lX11, unlike the other
- # libraries we check for below, so use a different variable.
-- # --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
-- echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6
--echo "configure:2439: checking for IceConnectionNumber in -lICE" >&5
--ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ # John Interrante, Karl Berry
-+ echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
-+echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6
-+if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
--LIBS="-lICE $X_EXTRA_LIBS $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2447 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char IceConnectionNumber();
--
--int main() {
--IceConnectionNumber()
--; return 0; }
--EOF
--if { (eval echo configure:2458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char IceConnectionNumber ();
-+int
-+main ()
-+{
-+IceConnectionNumber ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_ICE_IceConnectionNumber=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_ICE_IceConnectionNumber=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
-+echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6
-+if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
- X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
--else
-- echo "$ac_t""no" 1>&6
- fi
-
-- LDFLAGS="$ac_save_LDFLAGS"
-+ LDFLAGS=$ac_save_LDFLAGS
-
- fi
-
-
--test x$no_x = "xyes" && { echo "configure: error: Blackbox requires the X Window System libraries and headers." 1>&2; exit 1; }
-+test x$no_x = "xyes" && { { echo "$as_me:$LINENO: error: Blackbox requires the X Window System libraries and headers." >&5
-+echo "$as_me: error: Blackbox requires the X Window System libraries and headers." >&2;}
-+ { (exit 1); exit 1; }; }
-
- test x$x_includes = "x" && x_includes="/usr/include"
- test x$x_libraries = "x" && x_libraries="/usr/lib"
-@@ -2489,71 +5776,107 @@
- LIBS="$LIBS $X_LIBS"
- LDFLAGS="$LDFLAGS $LIBS $X_PRE_LIBS"
-
--echo $ac_n "checking for GCC""... $ac_c" 1>&6
--echo "configure:2494: checking for GCC" >&5
-+echo "$as_me:$LINENO: checking for GCC" >&5
-+echo $ECHO_N "checking for GCC... $ECHO_C" >&6
- if test x$GCC = "xyes"; then
-- echo "$ac_t""yes" 1>&6
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
- CXXFLAGS="${CXXFLAGS} -Wall -W -pedantic"
- else
-- echo "$ac_t""no, trying other compilers" 1>&6
-- echo $ac_n "checking for MIPSpro""... $ac_c" 1>&6
--echo "configure:2501: checking for MIPSpro" >&5
-+ echo "$as_me:$LINENO: result: no, trying other compilers" >&5
-+echo "${ECHO_T}no, trying other compilers" >&6
-+ echo "$as_me:$LINENO: checking for MIPSpro" >&5
-+echo $ECHO_N "checking for MIPSpro... $ECHO_C" >&6
- mips_pro_ver=`$CC -version 2>&1 | grep -i mipspro | cut -f4 -d ' '`
- if test "x$mips_pro_ver" = "x"; then
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- else
-- echo "$ac_t""yes, version $mips_pro_ver." 1>&6
-- echo $ac_n "checking for -LANG:std in CXXFLAGS""... $ac_c" 1>&6
--echo "configure:2508: checking for -LANG:std in CXXFLAGS" >&5
-+ echo "$as_me:$LINENO: result: yes, version $mips_pro_ver." >&5
-+echo "${ECHO_T}yes, version $mips_pro_ver." >&6
-+ echo "$as_me:$LINENO: checking for -LANG:std in CXXFLAGS" >&5
-+echo $ECHO_N "checking for -LANG:std in CXXFLAGS... $ECHO_C" >&6
- lang_std_not_set=`echo $CXXFLAGS | grep "\-LANG:std"`
- if test "x$lang_std_not_set" = "x"; then
-- echo "$ac_t""not set, setting." 1>&6
-+ echo "$as_me:$LINENO: result: not set, setting." >&5
-+echo "${ECHO_T}not set, setting." >&6
- CXXFLAGS="${CXXFLAGS} -LANG:std"
- else
-- echo "$ac_t""already set." 1>&6
-+ echo "$as_me:$LINENO: result: already set." >&5
-+echo "${ECHO_T}already set." >&6
- fi
-- fi
-+ fi
- fi
-
--echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
--echo "configure:2520: checking for XOpenDisplay in -lX11" >&5
--ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+echo "$as_me:$LINENO: checking for XOpenDisplay in -lX11" >&5
-+echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6
-+if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-lX11 $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2528 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char XOpenDisplay();
--
--int main() {
--XOpenDisplay()
--; return 0; }
--EOF
--if { (eval echo configure:2539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char XOpenDisplay ();
-+int
-+main ()
-+{
-+XOpenDisplay ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_X11_XOpenDisplay=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_X11_XOpenDisplay=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XOpenDisplay" >&5
-+echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6
-+if test $ac_cv_lib_X11_XOpenDisplay = yes; then
- LIBS="$LIBS -lX11"
- else
-- echo "$ac_t""no" 1>&6
--{ echo "configure: error: Could not find XOpenDisplay in -lX11." 1>&2; exit 1; }
-+ { { echo "$as_me:$LINENO: error: Could not find XOpenDisplay in -lX11." >&5
-+echo "$as_me: error: Could not find XOpenDisplay in -lX11." >&2;}
-+ { (exit 1); exit 1; }; }
-
- fi
-
-@@ -2563,227 +5886,469 @@
- Xext_lib=""
-
- SHAPE=""
--echo $ac_n "checking whether to build support for the XShape extension""... $ac_c" 1>&6
--echo "configure:2568: checking whether to build support for the XShape extension" >&5
-+echo "$as_me:$LINENO: checking whether to build support for the XShape extension" >&5
-+echo $ECHO_N "checking whether to build support for the XShape extension... $ECHO_C" >&6
- # Check whether --enable-shape or --disable-shape was given.
- if test "${enable_shape+set}" = set; then
- enableval="$enable_shape"
-- :
--fi
-
-+fi;
-
- : ${enableval="yes"}
- if test x$enableval = "xyes"; then
-- echo "$ac_t""yes" 1>&6
-- echo $ac_n "checking for XShapeCombineShape in -lXext""... $ac_c" 1>&6
--echo "configure:2580: checking for XShapeCombineShape in -lXext" >&5
--ac_lib_var=`echo Xext'_'XShapeCombineShape | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ echo "$as_me:$LINENO: checking for XShapeCombineShape in -lXext" >&5
-+echo $ECHO_N "checking for XShapeCombineShape in -lXext... $ECHO_C" >&6
-+if test "${ac_cv_lib_Xext_XShapeCombineShape+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-lXext $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2588 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char XShapeCombineShape();
--
--int main() {
--XShapeCombineShape()
--; return 0; }
--EOF
--if { (eval echo configure:2599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- echo $ac_n "checking for X11/extensions/shape.h""... $ac_c" 1>&6
--echo "configure:2615: checking for X11/extensions/shape.h" >&5
-- cat > conftest.$ac_ext <<EOF
--#line 2617 "configure"
--#include "confdefs.h"
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char XShapeCombineShape ();
-+int
-+main ()
-+{
-+XShapeCombineShape ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_Xext_XShapeCombineShape=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_Xext_XShapeCombineShape=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShapeCombineShape" >&5
-+echo "${ECHO_T}$ac_cv_lib_Xext_XShapeCombineShape" >&6
-+if test $ac_cv_lib_Xext_XShapeCombineShape = yes; then
-+ echo "$as_me:$LINENO: checking for X11/extensions/shape.h" >&5
-+echo $ECHO_N "checking for X11/extensions/shape.h... $ECHO_C" >&6
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <X11/Xlib.h>
- #include <X11/Xutil.h>
- #include <X11/extensions/shape.h>
-
--int main() {
-+int
-+main ()
-+{
- long foo = ShapeSet
--; return 0; }
--EOF
--if { (eval echo configure:2627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- echo "$ac_t""yes" 1>&6
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
- SHAPE="-DSHAPE"; Xext_lib="-lXext"
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- echo "$ac_t""no" 1>&6
--
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+
- fi
--rm -f conftest*
--
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+
-+LIBS="$LIBS $Xext_lib"
-+
-+LIBS="$LIBS $X_EXTRA_LIBS"
-+
-+Xext_lib=""
-+
-+XINERAMA=""
-+echo "$as_me:$LINENO: checking whether to build support for the Xinerama extension" >&5
-+echo $ECHO_N "checking whether to build support for the Xinerama extension... $ECHO_C" >&6
-+# Check whether --enable-xinerama or --disable-xinerama was given.
-+if test "${enable_xinerama+set}" = set; then
-+ enableval="$enable_xinerama"
-+
-+fi;
-+
-+: ${enableval="yes"}
-+if test x$enableval = "xyes"; then
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ echo "$as_me:$LINENO: checking for XineramaQueryScreens in -lXinerama" >&5
-+echo $ECHO_N "checking for XineramaQueryScreens in -lXinerama... $ECHO_C" >&6
-+if test "${ac_cv_lib_Xinerama_XineramaQueryScreens+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lXinerama $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char XineramaQueryScreens ();
-+int
-+main ()
-+{
-+XineramaQueryScreens ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_Xinerama_XineramaQueryScreens=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_Xinerama_XineramaQueryScreens=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_Xinerama_XineramaQueryScreens" >&5
-+echo "${ECHO_T}$ac_cv_lib_Xinerama_XineramaQueryScreens" >&6
-+if test $ac_cv_lib_Xinerama_XineramaQueryScreens = yes; then
-+ echo "$as_me:$LINENO: checking for X11/extensions/Xinerama.h" >&5
-+echo $ECHO_N "checking for X11/extensions/Xinerama.h... $ECHO_C" >&6
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+#include <X11/extensions/Xinerama.h>
-+
-+int
-+main ()
-+{
-+XineramaScreenInfo* s = 0
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ XINERAMA="-DXINERAMA"; Xext_lib="-lXext -lXinerama"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+
- fi
-
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
-
- LIBS="$LIBS $Xext_lib"
-
- ORDEREDPSEUDO=""
--echo $ac_n "checking whether to include Pseudocolor ordered dithering code""... $ac_c" 1>&6
--echo "configure:2653: checking whether to include Pseudocolor ordered dithering code" >&5
-+echo "$as_me:$LINENO: checking whether to include Pseudocolor ordered dithering code" >&5
-+echo $ECHO_N "checking whether to include Pseudocolor ordered dithering code... $ECHO_C" >&6
- # Check whether --enable-ordered-pseudo or --disable-ordered-pseudo was given.
- if test "${enable_ordered_pseudo+set}" = set; then
- enableval="$enable_ordered_pseudo"
- if test x$enableval = "xyes"; then
-- echo "$ac_t""yes" 1>&6
-- ORDEREDPSEUDO="-DORDEREDPSEUDO"
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+ ORDEREDPSEUDO="-DORDEREDPSEUDO"
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
- else
-- echo "$ac_t""no" 1>&6
--
--fi
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-
-+fi;
-
-
- DEBUG=""
--echo $ac_n "checking whether to include verbose debugging code""... $ac_c" 1>&6
--echo "configure:2672: checking whether to include verbose debugging code" >&5
-+echo "$as_me:$LINENO: checking whether to include verbose debugging code" >&5
-+echo $ECHO_N "checking whether to include verbose debugging code... $ECHO_C" >&6
- # Check whether --enable-debug or --disable-debug was given.
- if test "${enable_debug+set}" = set; then
- enableval="$enable_debug"
- if test x$enableval = "xyes"; then
-- echo "$ac_t""yes" 1>&6
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
- if test x$GCC = "xyes"; then
- DEBUG="-DDEBUG -fno-inline -g"
- else
- DEBUG="-DDEBUG"
- fi
- else
-- echo "$ac_t""no" 1>&6
-- DEBUG="-DNDEBUG"
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+ DEBUG="-DNDEBUG"
- fi
- else
-- echo "$ac_t""no" 1>&6
-- DEBUG="-DNDEBUG"
--
--fi
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+ DEBUG="-DNDEBUG"
-
-+fi;
-
-
- NLS=""
--echo $ac_n "checking whether to include NLS support""... $ac_c" 1>&6
--echo "configure:2697: checking whether to include NLS support" >&5
-+echo "$as_me:$LINENO: checking whether to include NLS support" >&5
-+echo $ECHO_N "checking whether to include NLS support... $ECHO_C" >&6
- # Check whether --enable-nls or --disable-nls was given.
- if test "${enable_nls+set}" = set; then
- enableval="$enable_nls"
- if test x$enableval = "xyes"; then
-- echo "$ac_t""yes" 1>&6
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
- NLS="-DNLS"
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
- else
-- echo "$ac_t""yes" 1>&6
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
- NLS="-DNLS"
-
--fi
--
-+fi;
-
-
--echo $ac_n "checking for setlocale in -lxpg4""... $ac_c" 1>&6
--echo "configure:2716: checking for setlocale in -lxpg4" >&5
--ac_lib_var=`echo xpg4'_'setlocale | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+echo "$as_me:$LINENO: checking for setlocale in -lxpg4" >&5
-+echo $ECHO_N "checking for setlocale in -lxpg4... $ECHO_C" >&6
-+if test "${ac_cv_lib_xpg4_setlocale+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-lxpg4 $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2724 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char setlocale();
--
--int main() {
--setlocale()
--; return 0; }
--EOF
--if { (eval echo configure:2735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char setlocale ();
-+int
-+main ()
-+{
-+setlocale ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_exeext'
-+ { (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_lib_xpg4_setlocale=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_xpg4_setlocale=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_xpg4_setlocale" >&5
-+echo "${ECHO_T}$ac_cv_lib_xpg4_setlocale" >&6
-+if test $ac_cv_lib_xpg4_setlocale = yes; then
- LIBS="$LIBS -lxpg4"
--else
-- echo "$ac_t""no" 1>&6
- fi
-
-
- for ac_prog in gencat
- do
--# Extract the first word of "$ac_prog", so it can be a program name with args.
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
- set dummy $ac_prog; ac_word=$2
--echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:2761: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_gencat_cmd'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_gencat_cmd+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- if test -n "$gencat_cmd"; then
- ac_cv_prog_gencat_cmd="$gencat_cmd" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_gencat_cmd="$ac_prog"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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_gencat_cmd="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
- fi
- fi
--gencat_cmd="$ac_cv_prog_gencat_cmd"
-+gencat_cmd=$ac_cv_prog_gencat_cmd
- if test -n "$gencat_cmd"; then
-- echo "$ac_t""$gencat_cmd" 1>&6
-+ echo "$as_me:$LINENO: result: $gencat_cmd" >&5
-+echo "${ECHO_T}$gencat_cmd" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
--test -n "$gencat_cmd" && break
-+ test -n "$gencat_cmd" && break
- done
-
- if test x$gencat_cmd = "x"; then
-@@ -2792,37 +6357,42 @@
-
-
- TIMEDCACHE=""
--echo $ac_n "checking whether to use the new timed pixmap cache""... $ac_c" 1>&6
--echo "configure:2797: checking whether to use the new timed pixmap cache" >&5
-+echo "$as_me:$LINENO: checking whether to use the new timed pixmap cache" >&5
-+echo $ECHO_N "checking whether to use the new timed pixmap cache... $ECHO_C" >&6
- # Check whether --enable-timed-cache or --disable-timed-cache was given.
- if test "${enable_timed_cache+set}" = set; then
- enableval="$enable_timed_cache"
- if test x$enableval = "xyes"; then
-- echo "$ac_t""yes" 1>&6
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
- TIMEDCACHE="-DTIMEDCACHE"
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
- else
-- echo "$ac_t""yes" 1>&6
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
- TIMEDCACHE="-DTIMEDCACHE"
-
--fi
--
-+fi;
-
-
--echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
--echo "configure:2816: checking return type of signal handlers" >&5
--if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 2821 "configure"
--#include "confdefs.h"
-+echo "$as_me:$LINENO: checking return type of signal handlers" >&5
-+echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
-+if test "${ac_cv_type_signal+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. */
- #include <sys/types.h>
- #include <signal.h>
- #ifdef signal
--#undef signal
-+# undef signal
- #endif
- #ifdef __cplusplus
- extern "C" void (*signal (int, void (*)(int)))(int);
-@@ -2830,41 +6400,65 @@
- void (*signal ()) ();
- #endif
-
--int main() {
-+int
-+main ()
-+{
- int i;
--; return 0; }
--EOF
--if { (eval echo configure:2838: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-- rm -rf conftest*
-+ ;
-+ 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_type_signal=void
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- ac_cv_type_signal=int
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_type_signal=int
- fi
--rm -f conftest*
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
-+echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
-+echo "${ECHO_T}$ac_cv_type_signal" >&6
-
--echo "$ac_t""$ac_cv_type_signal" 1>&6
--cat >> confdefs.h <<EOF
-+cat >>confdefs.h <<_ACEOF
- #define RETSIGTYPE $ac_cv_type_signal
--EOF
-+_ACEOF
-
-
-
--echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
--echo "configure:2858: checking whether to enable maintainer-specific portions of Makefiles" >&5
-+echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
-+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
- if test "${enable_maintainer_mode+set}" = set; then
- enableval="$enable_maintainer_mode"
- USE_MAINTAINER_MODE=$enableval
- else
- USE_MAINTAINER_MODE=no
--fi
-+fi;
-+ echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
-+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
-
-- echo "$ac_t""$USE_MAINTAINER_MODE" 1>&6
--
-
- if test $USE_MAINTAINER_MODE = yes; then
- MAINTAINER_MODE_TRUE=
-@@ -2874,460 +6468,1332 @@
- MAINTAINER_MODE_FALSE=
- fi
- MAINT=$MAINTAINER_MODE_TRUE
--
-
-
--echo "$ac_t""" 1>&6
--echo "$ac_t"" $PACKAGE version $VERSION configured successfully." 1>&6
--echo "$ac_t""" 1>&6
--echo "$ac_t""Using '$prefix' for installation." 1>&6
--echo "$ac_t""Using '$CXX' for C++ compiler." 1>&6
--echo "$ac_t""Building with '$CXXFLAGS' for C++ compiler flags." 1>&6
--echo "$ac_t""Building with '$LIBS' for linker flags." 1>&6
--echo "$ac_t""" 1>&6
-
-+echo "$as_me:$LINENO: result: " >&5
-+echo "${ECHO_T}" >&6
-+echo "$as_me:$LINENO: result: $PACKAGE version $VERSION configured successfully." >&5
-+echo "${ECHO_T} $PACKAGE version $VERSION configured successfully." >&6
-+echo "$as_me:$LINENO: result: " >&5
-+echo "${ECHO_T}" >&6
-+echo "$as_me:$LINENO: result: Using '$prefix' for installation." >&5
-+echo "${ECHO_T}Using '$prefix' for installation." >&6
-+echo "$as_me:$LINENO: result: Using '$CXX' for C++ compiler." >&5
-+echo "${ECHO_T}Using '$CXX' for C++ compiler." >&6
-+echo "$as_me:$LINENO: result: Building with '$CXXFLAGS' for C++ compiler flags." >&5
-+echo "${ECHO_T}Building with '$CXXFLAGS' for C++ compiler flags." >&6
-+echo "$as_me:$LINENO: result: Building with '$LIBS' for linker flags." >&5
-+echo "${ECHO_T}Building with '$LIBS' for linker flags." >&6
-+echo "$as_me:$LINENO: result: " >&5
-+echo "${ECHO_T}" >&6
-
-
-+ ac_config_headers="$ac_config_headers config.h"
-
--trap '' 1 2 15
--cat > confcache <<\EOF
-+ ac_config_commands="$ac_config_commands default-1"
-+
-+ ac_config_files="$ac_config_files Makefile src/Makefile util/Makefile data/Makefile data/styles/Makefile doc/Makefile nls/Makefile nls/C/Makefile nls/da_DK/Makefile nls/de_DE/Makefile nls/es_AR/Makefile nls/es_ES/Makefile nls/fr_FR/Makefile nls/hu_HU/Makefile nls/it_IT/Makefile nls/ja_JP/Makefile nls/ko_KR/Makefile nls/lv_LV/Makefile nls/nl_NL/Makefile nls/no_NO/Makefile nls/pl_PL/Makefile nls/pt_BR/Makefile nls/ro_RO/Makefile nls/ru_RU/Makefile nls/sk_SK/Makefile nls/sl_SI/Makefile nls/sv_SE/Makefile nls/uk_UA/Makefile nls/zh_CN/Makefile nls/zh_TW/Makefile version.h"
-+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. It is not useful on other systems.
--# If it contains results you don't want to keep, you may remove or edit it.
-+# 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.
- #
--# By default, configure uses ./config.cache as the cache file,
--# creating it if it does not exist already. You can give configure
--# the --cache-file=FILE option to use a different cache file; that is
--# what configure does when it calls configure scripts in
--# subdirectories, so they share the cache.
--# Giving --cache-file=/dev/null disables caching, for debugging configure.
--# config.status only pays attention to the cache file if you give it the
--# --recheck option to rerun configure.
-+# config.status only pays attention to the cache file if you give it
-+# the --recheck option to rerun configure.
- #
--EOF
-+# `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 \
-- -e "s/'/'\\\\''/g" \
-- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-- ;;
-- *)
-- # `set' quotes correctly as required by POSIX, so do not add quotes.
-- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
-- ;;
-- esac >> confcache
--if cmp -s $cache_file confcache; then
-- :
--else
-+{
-+ (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
-- echo "updating cache $cache_file"
-- cat confcache > $cache_file
-+ 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
-
--trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
--
- test "x$prefix" = xNONE && prefix=$ac_default_prefix
- # Let make expand exec_prefix.
- test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
--# Any assignment to VPATH causes Sun make to only execute
--# the first set of double-colon rules, so remove it if not needed.
--# If there is a colon in the path, we need to keep it.
-+# 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[ ]*=[^:]*$/d'
-+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
-+s/:*\$(srcdir):*/:/;
-+s/:*\${srcdir}:*/:/;
-+s/:*@srcdir@:*/:/;
-+s/^\([^=]*=[ ]*\):*/\1/;
-+s/:*$//;
-+s/^[^=]*=[ ]*$//;
-+}'
- fi
-
--trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
--
- DEFS=-DHAVE_CONFIG_H
-
--# Without the "./", some shells look in PATH for config.status.
--: ${CONFIG_STATUS=./config.status}
-+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
-
--echo creating $CONFIG_STATUS
--rm -f $CONFIG_STATUS
--cat > $CONFIG_STATUS <<EOF
--#! /bin/sh
--# Generated automatically by configure.
-+LTLIBOBJS=$ac_ltlibobjs
-+
-+
-+
-+: ${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.
--# This directory was configured as follows,
--# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
--#
--# $0 $ac_configure_args
--#
- # Compiler output produced by configure, useful for debugging
--# configure, is in ./config.log if it exists.
-+# configure, is in config.log if it exists.
-
--ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
--for ac_option
-+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 <bug-autoconf@gnu.org>."
-+_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 "\$ac_option" in
-+ 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)
-- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-- echo "$CONFIG_STATUS generated by autoconf version 2.13"
-- exit 0 ;;
-- -help | --help | --hel | --he | --h)
-- echo "\$ac_cs_usage"; exit 0 ;;
-- *) echo "\$ac_cs_usage"; exit 1 ;;
-+ 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_given_srcdir=$srcdir
--ac_given_INSTALL="$INSTALL"
-+ac_configure_extra_args=
-
--trap 'rm -fr `echo "Makefile
--src/Makefile
--util/Makefile
--data/Makefile
--data/styles/Makefile
--doc/Makefile
--nls/Makefile
--nls/C/Makefile
--nls/da_DK/Makefile
--nls/de_DE/Makefile
--nls/es_AR/Makefile
--nls/es_ES/Makefile
--nls/fr_FR/Makefile
--nls/hu_HU/Makefile
--nls/it_IT/Makefile
--nls/ja_JP/Makefile
--nls/ko_KR/Makefile
--nls/lv_LV/Makefile
--nls/nl_NL/Makefile
--nls/no_NO/Makefile
--nls/pl_PL/Makefile
--nls/pt_BR/Makefile
--nls/ro_RO/Makefile
--nls/ru_RU/Makefile
--nls/sk_SK/Makefile
--nls/sl_SI/Makefile
--nls/sv_SE/Makefile
--nls/uk_UA/Makefile
--nls/zh_CN/Makefile
--nls/zh_TW/Makefile
--version.h config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
--EOF
--cat >> $CONFIG_STATUS <<EOF
--
--# Protect against being on the right side of a sed subst in config.status.
--sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
-- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
--$ac_vpsub
--$extrasub
--s%@SHELL@%$SHELL%g
--s%@CFLAGS@%$CFLAGS%g
--s%@CPPFLAGS@%$CPPFLAGS%g
--s%@CXXFLAGS@%$CXXFLAGS%g
--s%@FFLAGS@%$FFLAGS%g
--s%@DEFS@%$DEFS%g
--s%@LDFLAGS@%$LDFLAGS%g
--s%@LIBS@%$LIBS%g
--s%@exec_prefix@%$exec_prefix%g
--s%@prefix@%$prefix%g
--s%@program_transform_name@%$program_transform_name%g
--s%@bindir@%$bindir%g
--s%@sbindir@%$sbindir%g
--s%@libexecdir@%$libexecdir%g
--s%@datadir@%$datadir%g
--s%@sysconfdir@%$sysconfdir%g
--s%@sharedstatedir@%$sharedstatedir%g
--s%@localstatedir@%$localstatedir%g
--s%@libdir@%$libdir%g
--s%@includedir@%$includedir%g
--s%@oldincludedir@%$oldincludedir%g
--s%@infodir@%$infodir%g
--s%@mandir@%$mandir%g
--s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
--s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
--s%@INSTALL_DATA@%$INSTALL_DATA%g
--s%@PACKAGE@%$PACKAGE%g
--s%@VERSION@%$VERSION%g
--s%@ACLOCAL@%$ACLOCAL%g
--s%@AUTOCONF@%$AUTOCONF%g
--s%@AUTOMAKE@%$AUTOMAKE%g
--s%@AUTOHEADER@%$AUTOHEADER%g
--s%@MAKEINFO@%$MAKEINFO%g
--s%@SET_MAKE@%$SET_MAKE%g
--s%@CC@%$CC%g
--s%@CXX@%$CXX%g
--s%@regex_cmd@%$regex_cmd%g
--s%@CPP@%$CPP%g
--s%@X_CFLAGS@%$X_CFLAGS%g
--s%@X_PRE_LIBS@%$X_PRE_LIBS%g
--s%@X_LIBS@%$X_LIBS%g
--s%@X_EXTRA_LIBS@%$X_EXTRA_LIBS%g
--s%@SHAPE@%$SHAPE%g
--s%@ORDEREDPSEUDO@%$ORDEREDPSEUDO%g
--s%@DEBUG@%$DEBUG%g
--s%@NLS@%$NLS%g
--s%@gencat_cmd@%$gencat_cmd%g
--s%@TIMEDCACHE@%$TIMEDCACHE%g
--s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g
--s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g
--s%@MAINT@%$MAINT%g
-+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.
-+#
-+
-+
-+
-+_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" ;;
-+ "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-+ "util/Makefile" ) CONFIG_FILES="$CONFIG_FILES util/Makefile" ;;
-+ "data/Makefile" ) CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
-+ "data/styles/Makefile" ) CONFIG_FILES="$CONFIG_FILES data/styles/Makefile" ;;
-+ "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
-+ "nls/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/Makefile" ;;
-+ "nls/C/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/C/Makefile" ;;
-+ "nls/da_DK/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/da_DK/Makefile" ;;
-+ "nls/de_DE/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/de_DE/Makefile" ;;
-+ "nls/es_AR/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/es_AR/Makefile" ;;
-+ "nls/es_ES/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/es_ES/Makefile" ;;
-+ "nls/fr_FR/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/fr_FR/Makefile" ;;
-+ "nls/hu_HU/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/hu_HU/Makefile" ;;
-+ "nls/it_IT/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/it_IT/Makefile" ;;
-+ "nls/ja_JP/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/ja_JP/Makefile" ;;
-+ "nls/ko_KR/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/ko_KR/Makefile" ;;
-+ "nls/lv_LV/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/lv_LV/Makefile" ;;
-+ "nls/nl_NL/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/nl_NL/Makefile" ;;
-+ "nls/no_NO/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/no_NO/Makefile" ;;
-+ "nls/pl_PL/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/pl_PL/Makefile" ;;
-+ "nls/pt_BR/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/pt_BR/Makefile" ;;
-+ "nls/ro_RO/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/ro_RO/Makefile" ;;
-+ "nls/ru_RU/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/ru_RU/Makefile" ;;
-+ "nls/sk_SK/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/sk_SK/Makefile" ;;
-+ "nls/sl_SI/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/sl_SI/Makefile" ;;
-+ "nls/sv_SE/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/sv_SE/Makefile" ;;
-+ "nls/uk_UA/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/uk_UA/Makefile" ;;
-+ "nls/zh_CN/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/zh_CN/Makefile" ;;
-+ "nls/zh_TW/Makefile" ) CONFIG_FILES="$CONFIG_FILES nls/zh_TW/Makefile" ;;
-+ "version.h" ) CONFIG_FILES="$CONFIG_FILES version.h" ;;
-+ "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
-+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS 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,@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,@SET_MAKE@,$SET_MAKE,;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,@CXX@,$CXX,;t t
-+s,@CXXFLAGS@,$CXXFLAGS,;t t
-+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
-+s,@regex_cmd@,$regex_cmd,;t t
-+s,@CPP@,$CPP,;t t
-+s,@EGREP@,$EGREP,;t t
-+s,@X_CFLAGS@,$X_CFLAGS,;t t
-+s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t
-+s,@X_LIBS@,$X_LIBS,;t t
-+s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t
-+s,@SHAPE@,$SHAPE,;t t
-+s,@XINERAMA@,$XINERAMA,;t t
-+s,@ORDEREDPSEUDO@,$ORDEREDPSEUDO,;t t
-+s,@DEBUG@,$DEBUG,;t t
-+s,@NLS@,$NLS,;t t
-+s,@gencat_cmd@,$gencat_cmd,;t t
-+s,@TIMEDCACHE@,$TIMEDCACHE,;t t
-+s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
-+s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
-+s,@MAINT@,$MAINT,;t t
-+s,@LIBOBJS@,$LIBOBJS,;t t
-+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
- CEOF
--EOF
-
--cat >> $CONFIG_STATUS <<\EOF
-+_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_cmds=90 # Maximum number of lines to put in a sed script.
--ac_file=1 # Number of current file.
--ac_beg=1 # First line for current file.
--ac_end=$ac_max_sed_cmds # 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" conftest.subs > conftest.s$ac_file
-- else
-- sed "${ac_end}q" conftest.subs > conftest.s$ac_file
-- fi
-- if test ! -s conftest.s$ac_file; then
-- ac_more_lines=false
-- rm -f conftest.s$ac_file
-- else
-- if test -z "$ac_sed_cmds"; then
-- ac_sed_cmds="sed -f conftest.s$ac_file"
-+ 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
-- ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
-+ # 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
-- ac_file=`expr $ac_file + 1`
-- ac_beg=$ac_end
-- ac_end=`expr $ac_end + $ac_max_sed_cmds`
-- fi
--done
--if test -z "$ac_sed_cmds"; then
-- ac_sed_cmds=cat
--fi
--EOF
--
--cat >> $CONFIG_STATUS <<EOF
--
--CONFIG_FILES=\${CONFIG_FILES-"Makefile
--src/Makefile
--util/Makefile
--data/Makefile
--data/styles/Makefile
--doc/Makefile
--nls/Makefile
--nls/C/Makefile
--nls/da_DK/Makefile
--nls/de_DE/Makefile
--nls/es_AR/Makefile
--nls/es_ES/Makefile
--nls/fr_FR/Makefile
--nls/hu_HU/Makefile
--nls/it_IT/Makefile
--nls/ja_JP/Makefile
--nls/ko_KR/Makefile
--nls/lv_LV/Makefile
--nls/nl_NL/Makefile
--nls/no_NO/Makefile
--nls/pl_PL/Makefile
--nls/pt_BR/Makefile
--nls/ro_RO/Makefile
--nls/ru_RU/Makefile
--nls/sk_SK/Makefile
--nls/sl_SI/Makefile
--nls/sv_SE/Makefile
--nls/uk_UA/Makefile
--nls/zh_CN/Makefile
--nls/zh_TW/Makefile
--version.h"}
--EOF
--cat >> $CONFIG_STATUS <<\EOF
--for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-+ 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
-- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-- *) ac_file_in="${ac_file}.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
-
-- # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
--
-- # Remove last slash and all that follows it. Not all systems have dirname.
-- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-- # The file is in a subdirectory.
-- test ! -d "$ac_dir" && mkdir "$ac_dir"
-- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-- # A "../" for each directory in $ac_dir_suffix.
-- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-- else
-- ac_dir_suffix= ac_dots=
-- fi
--
-- case "$ac_given_srcdir" in
-- .) srcdir=.
-- if test -z "$ac_dots"; then top_srcdir=.
-- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-+ # 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.
-- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-- top_srcdir="$ac_dots$ac_given_srcdir" ;;
-+ 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
-
-- case "$ac_given_INSTALL" in
-- [/$]*) INSTALL="$ac_given_INSTALL" ;;
-- *) INSTALL="$ac_dots$ac_given_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."
-
-- echo creating "$ac_file"
-- rm -f "$ac_file"
-- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-- case "$ac_file" in
-- *Makefile*) ac_comsub="1i\\
--# $configure_input" ;;
-- *) ac_comsub= ;;
-- esac
-+ # 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
-
-- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-- sed -e "$ac_comsub
--s%@configure_input@%$configure_input%g
--s%@srcdir@%$srcdir%g
--s%@top_srcdir@%$top_srcdir%g
--s%@INSTALL@%$INSTALL%g
--" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
--fi; done
--rm -f conftest.s*
-+#
-+# 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='\3'
--ac_dD='%g'
--# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
--ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
--ac_uB='\([ ]\)%\1#\2define\3'
-+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='\4%g'
--# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
--ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
--ac_eB='$%\1#\2define\3'
--ac_eC=' '
--ac_eD='%g'
--
--if test "${CONFIG_HEADERS+set}" != set; then
--EOF
--cat >> $CONFIG_STATUS <<EOF
-- CONFIG_HEADERS="config.h"
--EOF
--cat >> $CONFIG_STATUS <<\EOF
--fi
--for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
-+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
-- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-- *) ac_file_in="${ac_file}.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
-
-- echo creating $ac_file
-+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
-+echo "$as_me: creating $ac_file" >&6;}
-
-- rm -f conftest.frag conftest.in conftest.out
-- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-- cat $ac_file_inputs > conftest.in
--
--EOF
--
--# Transform confdefs.h into a sed script conftest.vals that substitutes
--# the proper values into config.h.in to produce config.h. 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.vals
--cat > conftest.hdr <<\EOF
--s/[\\&%]/\\&/g
--s%[\\$`]%\\&%g
--s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
--s%ac_d%ac_u%gp
--s%ac_u%ac_e%gp
--EOF
--sed -n -f conftest.hdr confdefs.h > conftest.vals
--rm -f conftest.hdr
-+ # 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.vals <<\EOF
--s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
--EOF
--
--# Break up conftest.vals because some shells have a limit on
--# the size of here documents, and old seds have small limits too.
--
-+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 :
-+while grep . conftest.defines >/dev/null
- do
-- ac_lines=`grep -c . conftest.vals`
-- # grep -c gives empty output for an empty file on some AIX systems.
-- if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
-- # Write a limited-size here document to conftest.frag.
-- echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
-- sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
-+ # Write a limited-size here document to $tmp/defines.sed.
-+ echo ' cat >$tmp/defines.sed <<CEOF' >>$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 conftest.frag conftest.in > conftest.out
-- rm -f conftest.in
-- mv conftest.out conftest.in
--' >> $CONFIG_STATUS
-- sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
-- rm -f conftest.vals
-- mv conftest.tail conftest.vals
--done
--rm -f conftest.vals
--
--cat >> $CONFIG_STATUS <<\EOF
-- rm -f conftest.frag conftest.h
-- echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
-- cat conftest.in >> conftest.h
-- rm -f conftest.in
-- if cmp -s $ac_file conftest.h 2>/dev/null; then
-- echo "$ac_file is unchanged"
-- rm -f conftest.h
-- else
-- # Remove last slash and all that follows it. Not all systems have dirname.
-- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-- # The file is in a subdirectory.
-- test ! -d "$ac_dir" && mkdir "$ac_dir"
-- fi
-- rm -f $ac_file
-- mv conftest.h $ac_file
-+ 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 <<CEOF' >>$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
--fi; done
-+ 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; }; }; }
-
--EOF
--cat >> $CONFIG_STATUS <<EOF
-+ rm -f $ac_file
-+ mv $tmp/config.h $ac_file
-+ fi
-+ else
-+ cat $tmp/config.h
-+ rm -f $tmp/config.h
-+ fi
-+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
-+ default-1 ) test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h ;;
-+ esac
-+done
-+_ACEOF
-
--EOF
--cat >> $CONFIG_STATUS <<\EOF
--test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
-+cat >>$CONFIG_STATUS <<\_ACEOF
-
--exit 0
--EOF
-+{ (exit 0); exit 0; }
-+_ACEOF
- chmod +x $CONFIG_STATUS
--rm -fr confdefs* $ac_clean_files
--test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-+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
-
---- blackbox-0.65.0.orig/configure.in
-+++ blackbox-0.65.0/configure.in
-@@ -106,6 +106,38 @@
-
- LIBS="$LIBS $Xext_lib"
-
-+LIBS="$LIBS $X_EXTRA_LIBS"
-+
-+Xext_lib=""
-+
-+dnl Check for Xinerama extension support and proper library files.
-+XINERAMA=""
-+AC_MSG_CHECKING([whether to build support for the Xinerama extension])
-+AC_ARG_ENABLE(
-+ xinerama, [ --enable-xinerama enable support of the xinerama extension [default=yes]])
-+
-+: ${enableval="yes"}
-+if test x$enableval = "xyes"; then
-+ AC_MSG_RESULT([yes])
-+ AC_CHECK_LIB(Xinerama, XineramaQueryScreens,
-+ AC_MSG_CHECKING([for X11/extensions/Xinerama.h])
-+ AC_TRY_LINK(
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+#include <X11/extensions/Xinerama.h>
-+, XineramaScreenInfo* s = 0,
-+ AC_MSG_RESULT([yes])
-+ XINERAMA="-DXINERAMA"; Xext_lib="-lXext -lXinerama",
-+ AC_MSG_RESULT([no])
-+ )
-+ )
-+else
-+ AC_MSG_RESULT([no])
-+fi
-+AC_SUBST(XINERAMA)
-+
-+LIBS="$LIBS $Xext_lib"
-+
- dnl Check for ordered 8bpp dithering
- ORDEREDPSEUDO=""
- AC_MSG_CHECKING([whether to include Pseudocolor ordered dithering code])
---- blackbox-0.65.0.orig/doc/blackbox.1.in
-+++ blackbox-0.65.0/doc/blackbox.1.in
-@@ -786,6 +786,13 @@
- .EX
- .B Default is False.
- .EE
-+.TP 3
-+.BI "session.screen<num>.slit.xineramaPlacement" " [True|False]"
-+Determines whether Xinerama inforation should be used to
-+avoid placing the slit in non-viewable regions of the display.
-+.EX
-+.B Default is True.
-+.EE
- .\"
- .\" ***** MENU CONFIGURABLE FROM MAIN MENU *****
- .\"
-@@ -845,6 +852,24 @@
- .B Default is TopToBottom.
- .EE
- .TP 3
-+.BI "session.screen<num>.xineramaPlacement" " [True|False]"
-+Use Xinerama information when deciding where to place windows.
-+.EX
-+.B Default is True.
-+.EE
-+.TP 3
-+.BI "session.screen<num>.xineramaMenus" " [True|False]"
-+Use Xinerama information to avoid menus spanning screen boundaries.
-+.EX
-+.B Default is True.
-+.EE
-+.TP 3
-+.BI "session.screen<num>.xineramaMaximize" " [True|False]"
-+Maximize windows to fill one screen when Xineramam is in use.
-+.EX
-+.B Default is True.
-+.EE
-+.TP 3
- .BI "session.imageDither" " [True|False]"
- This setting is only used when running in low
- color modes. Image Dithering helps to show an
-@@ -951,6 +976,19 @@
- .EX
- .B Default is False.
- .EE
-+.TP 3
-+.BI "session.screen<num>.toolbar.xineramaPlacement" " [True|False]"
-+Use Xinerama information to prevent toolbar from being split
-+across screens.
-+.EX
-+.B Default is True.
-+.EE
-+.TP 3
-+.BI "session.screen<num>.toolbar.xineramaScreen" " [integer]"
-+Xinerama screen number in which to place the toolbar.
-+.EX
-+.B Default is -1 (auto).
-+.EE
- .\"
- .\" ***** CONFIGURABLE IN BLACKBOXRC ONLY *****
- .\"
---- blackbox-0.65.0.orig/nls/C/Configmenu.m
-+++ blackbox-0.65.0/nls/C/Configmenu.m
-@@ -40,3 +40,13 @@
- # Top to Bottom
- $ #BottomTop
- # Bottom to Top
-+$ #XineramaOptions
-+# Xinerama Options
-+$ #XineramaPlacement
-+# Window Placement
-+$ #XineramaMaximize
-+# Window Maximizing
-+$ #XineramaToolbar
-+# Toolbar Placement
-+$ #XineramaMenus
-+# Menu Placement
---- blackbox-0.65.0.orig/nls/C/Toolbar.m
-+++ blackbox-0.65.0/nls/C/Toolbar.m
-@@ -20,3 +20,7 @@
- # Edit current workspace name
- $ #ToolbarPlacement
- # Toolbar Placement
-+$ #ScreenTop
-+# Screen %d Top
-+$ #ScreenBottom
-+# Screen %d Bottom
---- blackbox-0.65.0.orig/nls/convert.awk
-+++ blackbox-0.65.0/nls/convert.awk
-@@ -4,6 +4,8 @@
-
- if (major > 1)
- printf "\n" > output
-+ else if (codeset)
-+ printf "$ codeset=%s\n", codeset > output
- printf "$set %d %s\n", major, $3 > output
-
- if (header) {
---- blackbox-0.65.0.orig/nls/da_DK/Makefile.am
-+++ blackbox-0.65.0/nls/da_DK/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/da_DK/Makefile.in
-+++ blackbox-0.65.0/nls/da_DK/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/de_DE/Makefile.am
-+++ blackbox-0.65.0/nls/de_DE/Makefile.am
-@@ -26,7 +26,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/de_DE/Makefile.in
-+++ blackbox-0.65.0/nls/de_DE/Makefile.in
-@@ -200,7 +200,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/es_ES/Makefile.am
-+++ blackbox-0.65.0/nls/es_ES/Makefile.am
-@@ -28,7 +28,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/es_ES/Makefile.in
-+++ blackbox-0.65.0/nls/es_ES/Makefile.in
-@@ -202,7 +202,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/fr_FR/Makefile.am
-+++ blackbox-0.65.0/nls/fr_FR/Makefile.am
-@@ -26,7 +26,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/fr_FR/Makefile.in
-+++ blackbox-0.65.0/nls/fr_FR/Makefile.in
-@@ -200,7 +200,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/hu_HU/Makefile.am
-+++ blackbox-0.65.0/nls/hu_HU/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-2 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/hu_HU/Makefile.in
-+++ blackbox-0.65.0/nls/hu_HU/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-2 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/it_IT/Makefile.am
-+++ blackbox-0.65.0/nls/it_IT/Makefile.am
-@@ -26,7 +26,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/it_IT/Makefile.in
-+++ blackbox-0.65.0/nls/it_IT/Makefile.in
-@@ -200,7 +200,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/ja_JP/Makefile.am
-+++ blackbox-0.65.0/nls/ja_JP/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=eucJP output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/ja_JP/Makefile.in
-+++ blackbox-0.65.0/nls/ja_JP/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=eucJP output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/ko_KR/Makefile.am
-+++ blackbox-0.65.0/nls/ko_KR/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=eucKR output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/ko_KR/Makefile.in
-+++ blackbox-0.65.0/nls/ko_KR/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=eucKR output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/nl_NL/Makefile.am
-+++ blackbox-0.65.0/nls/nl_NL/Makefile.am
-@@ -26,7 +26,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/nl_NL/Makefile.in
-+++ blackbox-0.65.0/nls/nl_NL/Makefile.in
-@@ -200,7 +200,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/no_NO/Makefile.am
-+++ blackbox-0.65.0/nls/no_NO/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/no_NO/Makefile.in
-+++ blackbox-0.65.0/nls/no_NO/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/pt_BR/Makefile.am
-+++ blackbox-0.65.0/nls/pt_BR/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/pt_BR/Makefile.in
-+++ blackbox-0.65.0/nls/pt_BR/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/ru_RU/Makefile.am
-+++ blackbox-0.65.0/nls/ru_RU/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=KOI8-R output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/ru_RU/Makefile.in
-+++ blackbox-0.65.0/nls/ru_RU/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=KOI8-R output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/sl_SI/Makefile.am
-+++ blackbox-0.65.0/nls/sl_SI/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-2 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/sl_SI/Makefile.in
-+++ blackbox-0.65.0/nls/sl_SI/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-2 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/sv_SE/Makefile.am
-+++ blackbox-0.65.0/nls/sv_SE/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/sv_SE/Makefile.in
-+++ blackbox-0.65.0/nls/sv_SE/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/uk_UA/Makefile.am
-+++ blackbox-0.65.0/nls/uk_UA/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=KOI8-U output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/uk_UA/Makefile.in
-+++ blackbox-0.65.0/nls/uk_UA/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=KOI8-U output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/zh_CN/Makefile.am
-+++ blackbox-0.65.0/nls/zh_CN/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=GB2312 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/zh_CN/Makefile.in
-+++ blackbox-0.65.0/nls/zh_CN/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=GB2312 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/zh_TW/Makefile.am
-+++ blackbox-0.65.0/nls/zh_TW/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=BIG5 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/zh_TW/Makefile.in
-+++ blackbox-0.65.0/nls/zh_TW/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=BIG5 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/es_AR/Makefile.am
-+++ blackbox-0.65.0/nls/es_AR/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/es_AR/Makefile.in
-+++ blackbox-0.65.0/nls/es_AR/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-1 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/pl_PL/Makefile.in
-+++ blackbox-0.65.0/nls/pl_PL/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-2 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/pl_PL/Makefile.am
-+++ blackbox-0.65.0/nls/pl_PL/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-2 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/sk_SK/Makefile.am
-+++ blackbox-0.65.0/nls/sk_SK/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk convert=ISO-8859-2 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/sk_SK/Makefile.in
-+++ blackbox-0.65.0/nls/sk_SK/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-2 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/lv_LV/Makefile.am
-+++ blackbox-0.65.0/nls/lv_LV/Makefile.am
-@@ -23,7 +23,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-13 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/nls/lv_LV/Makefile.in
-+++ blackbox-0.65.0/nls/lv_LV/Makefile.in
-@@ -197,7 +197,7 @@
-
- Translation.m: $(MFILES)
- @if test x$(NLSTEST) = "x-DNLS"; then \
-- awk -f @srcdir@/../convert.awk output=Translation.m $(MFILES); \
-+ awk -f @srcdir@/../convert.awk codeset=ISO-8859-13 output=Translation.m $(MFILES); \
- fi
-
- blackbox.cat: Translation.m
---- blackbox-0.65.0.orig/src/BaseDisplay.cc
-+++ blackbox-0.65.0/src/BaseDisplay.cc
-@@ -86,6 +86,7 @@
- #include "GCCache.hh"
- #include "Timer.hh"
- #include "Util.hh"
-+#include "Xinerama.hh"
-
-
- // X error handler to handle any and all X errors while the application is
-@@ -400,9 +401,8 @@
- }
-
-
--ScreenInfo::ScreenInfo(BaseDisplay *d, unsigned int num) {
-- basedisplay = d;
-- screen_number = num;
-+ScreenInfo::ScreenInfo(BaseDisplay *d, unsigned int num)
-+ : basedisplay(d), screen_number(num), xinerama_info(0) {
-
- root_window = RootWindow(basedisplay->getXDisplay(), screen_number);
-
-@@ -465,4 +465,12 @@
-
- display_string = string("DISPLAY=") + default_string + '.' +
- itostring(static_cast<unsigned long>(screen_number));
-+
-+#ifdef XINERAMA
-+ xinerama_info = new XineramaInfo(this);
-+ if (! xinerama_info->haveXinerama()) {
-+ delete xinerama_info;
-+ xinerama_info = 0;
-+ }
-+#endif
- }
---- blackbox-0.65.0.orig/src/BaseDisplay.hh
-+++ blackbox-0.65.0/src/BaseDisplay.hh
-@@ -35,6 +35,7 @@
- // forward declaration
- class BaseDisplay;
- class BGCCache;
-+class XineramaInfo;
-
- #include "Timer.hh"
- #include "Util.hh"
-@@ -51,11 +52,14 @@
- std::string display_string;
- Rect rect;
-
-+ XineramaInfo* xinerama_info;
-+
- public:
- ScreenInfo(BaseDisplay *d, unsigned int num);
-
- inline BaseDisplay *getBaseDisplay(void) const { return basedisplay; }
- inline Visual *getVisual(void) const { return visual; }
-+ inline XineramaInfo *getXineramaInfo(void) const { return xinerama_info; }
- inline Window getRootWindow(void) const { return root_window; }
- inline Colormap getColormap(void) const { return colormap; }
- inline int getDepth(void) const { return depth; }
---- blackbox-0.65.0.orig/src/Basemenu.cc
-+++ blackbox-0.65.0/src/Basemenu.cc
-@@ -49,6 +49,7 @@
- #include "Image.hh"
- #include "Screen.hh"
- #include "Util.hh"
-+#include "Xinerama.hh"
-
- using std::string;
- using std::min;
-@@ -478,6 +479,29 @@
- drawSubmenu(which_sub);
- }
-
-+void Basemenu::moveInScreen(int screen_x, int screen_y, int dx, int dy) {
-+ int x = screen_x + dx;
-+ int y = screen_y + dy;
-+
-+ Rect rect = screen->getRect();
-+ if (screen->getXineramaInfo() && screen->doXineramaMenus()) {
-+ XineramaScreen xinerama = screen->getXineramaInfo()->
-+ screenContaining(screen_x, screen_y);
-+ if (xinerama.isValid()) {
-+ rect = xinerama.getRect();
-+ }
-+ }
-+
-+ if (x < rect.left()) x = rect.left();
-+ if (y < rect.top()) y = rect.top();
-+
-+ if (x + static_cast<signed>(getWidth()) > rect.right())
-+ x = rect.right() - getWidth() - screen->getBorderWidth();
-+ if (y + static_cast<signed>(getHeight()) > rect.bottom())
-+ y = rect.bottom() - getHeight() - screen->getBorderWidth();
-+
-+ move(x,y);
-+}
-
- void Basemenu::redrawTitle(void) {
- const char *text = (! menu.label.empty()) ? getLabel() :
-@@ -559,16 +583,24 @@
- y = (((shifted) ? menu.y_shift : menu.y) +
- menu.height - submenu->menu.height);
-
-- if ((x + submenu->getWidth()) > screen->getWidth())
-+ Rect rect = screen->getRect();
-+ if (screen->getXineramaInfo() && screen->doXineramaMenus()) {
-+ XineramaScreen scr =
-+ screen->getXineramaInfo()->screenContaining(menu.x, menu.y);
-+ if (scr.isValid())
-+ rect = scr.getRect();
-+ }
-+
-+ if ((x + static_cast<signed>(submenu->getWidth())) > rect.right())
- x = ((shifted) ? menu.x_shift : menu.x) -
- submenu->getWidth() - screen->getBorderWidth();
-
-- if (x < 0) x = 0;
-+ if (x < rect.left()) x = rect.left();
-
-- if ((y + submenu->getHeight()) > screen->getHeight())
-- y = screen->getHeight() - submenu->getHeight() -
-+ if ((y + static_cast<signed>(submenu->getHeight())) > rect.bottom())
-+ y = rect.bottom() - submenu->getHeight() -
- (screen->getBorderWidth() * 2);
-- if (y < 0) y = 0;
-+ if (y < rect.top()) y = rect.top();
-
- submenu->move(x, y);
- if (! moving) drawItem(index, True);
-@@ -961,22 +993,32 @@
-
- void Basemenu::enterNotifyEvent(XCrossingEvent *ce) {
- if (ce->window == menu.frame) {
-+
-+ Rect rect = screen->getRect();
-+#if 0
-+ if (screen->getXineramaInfo() && screen->doXineramaMenus()) {
-+ XineramaScreen xin_scr =
-+ screen->getXineramaInfo()->screenContaining(menu.x, menu.y);
-+ if (xin_scr.isValid()) {
-+ rect = xin_scr.getRect();
-+ }
-+ }
-+#endif
-+
- menu.x_shift = menu.x, menu.y_shift = menu.y;
-- if (menu.x + menu.width > screen->getWidth()) {
-- menu.x_shift = screen->getWidth() - menu.width -
-- screen->getBorderWidth();
-+ if (menu.x + static_cast<signed>(menu.width) > rect.right()) {
-+ menu.x_shift = rect.right() - menu.width - screen->getBorderWidth();
- shifted = True;
-- } else if (menu.x < 0) {
-- menu.x_shift = -screen->getBorderWidth();
-+ } else if (menu.x < rect.left()) {
-+ menu.x_shift = rect.left() - screen->getBorderWidth();
- shifted = True;
- }
-
-- if (menu.y + menu.height > screen->getHeight()) {
-- menu.y_shift = screen->getHeight() - menu.height -
-- screen->getBorderWidth();
-+ if (menu.y + static_cast<signed>(menu.height) > rect.bottom()) {
-+ menu.y_shift = rect.bottom() - menu.height - screen->getBorderWidth();
- shifted = True;
-- } else if (menu.y + static_cast<signed>(menu.title_h) < 0) {
-- menu.y_shift = -screen->getBorderWidth();
-+ } else if (menu.y + static_cast<signed>(menu.title_h) < rect.top()) {
-+ menu.y_shift = rect.top() - screen->getBorderWidth();
- shifted = True;
- }
-
---- blackbox-0.65.0.orig/src/Basemenu.hh
-+++ blackbox-0.65.0/src/Basemenu.hh
-@@ -129,6 +129,7 @@
- void reconfigure(void);
- void setLabel(const std::string& label);
- void move(int x, int y);
-+ void moveInScreen(int screen_x, int screen_y, int dx = 0, int dy = 0);
- void update(void);
- void setItemSelected(int index, bool sel);
- void setItemEnabled(int index, bool enable);
---- blackbox-0.65.0.orig/src/Configmenu.cc
-+++ blackbox-0.65.0/src/Configmenu.cc
-@@ -36,13 +36,21 @@
- setLabel(i18n(ConfigmenuSet, ConfigmenuConfigOptions, "Config options"));
- setInternalMenu();
-
-+ int position = 2;
- focusmenu = new Focusmenu(this);
- placementmenu = new Placementmenu(this);
-+ xineramamenu = 0;
-
- insert(i18n(ConfigmenuSet, ConfigmenuFocusModel,
- "Focus Model"), focusmenu);
- insert(i18n(ConfigmenuSet, ConfigmenuWindowPlacement,
- "Window Placement"), placementmenu);
-+ if (scr->getXineramaInfo()) {
-+ xineramamenu = new XineramaMenu(this);
-+ insert(i18n(ConfigmenuSet, ConfigmenuXineramaOptions,
-+ "Xinerama Options"), xineramamenu);
-+ position++;
-+ }
- insert(i18n(ConfigmenuSet, ConfigmenuImageDithering,
- "Image Dithering"), 1);
- insert(i18n(ConfigmenuSet, ConfigmenuOpaqueMove,
-@@ -57,18 +65,19 @@
- "Disable Bindings with Scroll Lock"), 6);
- update();
-
-- setItemSelected(2, getScreen()->getImageControl()->doDither());
-- setItemSelected(3, getScreen()->doOpaqueMove());
-- setItemSelected(4, getScreen()->doFullMax());
-- setItemSelected(5, getScreen()->doFocusNew());
-- setItemSelected(6, getScreen()->doFocusLast());
-- setItemSelected(7, getScreen()->allowScrollLock());
-+ setItemSelected(position++, getScreen()->getImageControl()->doDither());
-+ setItemSelected(position++, getScreen()->doOpaqueMove());
-+ setItemSelected(position++, getScreen()->doFullMax());
-+ setItemSelected(position++, getScreen()->doFocusNew());
-+ setItemSelected(position++, getScreen()->doFocusLast());
-+ setItemSelected(position++, getScreen()->allowScrollLock());
- }
-
-
- Configmenu::~Configmenu(void) {
- delete focusmenu;
- delete placementmenu;
-+ delete xineramamenu;
- }
-
-
-@@ -132,7 +141,8 @@
- void Configmenu::reconfigure(void) {
- focusmenu->reconfigure();
- placementmenu->reconfigure();
--
-+ if (xineramamenu)
-+ xineramamenu->reconfigure();
- Basemenu::reconfigure();
- }
-
-@@ -319,3 +329,59 @@
-
- reconfigure();
- }
-+
-+
-+Configmenu::XineramaMenu::XineramaMenu(Configmenu* cm)
-+ : Basemenu(cm->getScreen()) {
-+ setLabel(i18n(ConfigmenuSet, ConfigmenuXineramaOptions, "Xinerama Options"));
-+ setInternalMenu();
-+
-+ insert(i18n(ConfigmenuSet, ConfigmenuXineramaPlacement, "Window Placement"),
-+ ConfigmenuXineramaPlacement);
-+ insert(i18n(ConfigmenuSet, ConfigmenuXineramaMaximize, "Window Maximizing"),
-+ ConfigmenuXineramaMaximize);
-+ insert(i18n(ConfigmenuSet, ConfigmenuXineramaToolbar, "Toolbar Placement"),
-+ ConfigmenuXineramaToolbar);
-+ insert(i18n(ConfigmenuSet, ConfigmenuXineramaMenus, "Menu Placement"),
-+ ConfigmenuXineramaMenus);
-+ update();
-+
-+ setItemSelected(0, getScreen()->doXineramaPlacement());
-+ setItemSelected(1, getScreen()->doXineramaMaximize());
-+ setItemSelected(2, getScreen()->doXineramaToolbar());
-+ setItemSelected(3, getScreen()->doXineramaMenus());
-+}
-+
-+
-+void Configmenu::XineramaMenu::itemSelected(int button, unsigned int index) {
-+ if (button != 1)
-+ return;
-+
-+ switch (find(index)->function()) {
-+
-+ case ConfigmenuXineramaPlacement : {
-+ getScreen()->saveXineramaPlacement(! getScreen()->doXineramaPlacement());
-+ setItemSelected(index, getScreen()->doXineramaPlacement());
-+ break;
-+ }
-+
-+ case ConfigmenuXineramaMaximize : {
-+ getScreen()->saveXineramaMaximize(! getScreen()->doXineramaMaximize());
-+ setItemSelected(index, getScreen()->doXineramaMaximize());
-+ break;
-+ }
-+
-+ case ConfigmenuXineramaToolbar : {
-+ getScreen()->saveXineramaToolbar(! getScreen()->doXineramaToolbar());
-+ setItemSelected(index, getScreen()->doXineramaToolbar());
-+ getScreen()->getToolbar()->reconfigure();
-+ break;
-+ }
-+
-+ case ConfigmenuXineramaMenus : {
-+ getScreen()->saveXineramaMenus(! getScreen()->doXineramaMenus());
-+ setItemSelected(index, getScreen()->doXineramaMenus());
-+ break;
-+ }
-+ }
-+}
---- blackbox-0.65.0.orig/src/Configmenu.hh
-+++ blackbox-0.65.0/src/Configmenu.hh
-@@ -58,8 +58,21 @@
- virtual void reconfigure(void);
- };
-
-+ class XineramaMenu : public Basemenu {
-+ private:
-+ XineramaMenu(const XineramaMenu&);
-+ XineramaMenu& operator=(const XineramaMenu&);
-+
-+ protected:
-+ virtual void itemSelected(int button, unsigned int index);
-+
-+ public:
-+ XineramaMenu(Configmenu *cm);
-+ };
-+
- Focusmenu *focusmenu;
- Placementmenu *placementmenu;
-+ XineramaMenu* xineramamenu;
-
- friend class Focusmenu;
- friend class Placementmenu;
-@@ -76,6 +89,7 @@
-
- inline Basemenu *getFocusmenu(void) { return focusmenu; }
- inline Basemenu *getPlacementmenu(void) { return placementmenu; }
-+ inline Basemenu *getXineramamenu(void) { return xineramamenu; }
-
- void reconfigure(void);
- };
---- blackbox-0.65.0.orig/src/Makefile.in
-+++ blackbox-0.65.0/src/Makefile.in
-@@ -87,6 +87,7 @@
- ORDEREDPSEUDO = @ORDEREDPSEUDO@
- PACKAGE = @PACKAGE@
- SHAPE = @SHAPE@
-+XINERAMA = @XINERAMA@
- TIMEDCACHE = @TIMEDCACHE@
- VERSION = @VERSION@
- gencat_cmd = @gencat_cmd@
-@@ -95,7 +96,7 @@
- DEFAULT_MENU = $(pkgdatadir)/menu
- DEFAULT_STYLE = $(pkgdatadir)/styles/Results
-
--CPPFLAGS = @CPPFLAGS@ @SHAPE@ @ORDEREDPSEUDO@ @DEBUG@ @NLS@ @TIMEDCACHE@ -DLOCALEPATH=\"$(pkgdatadir)/nls\" -DDEFAULTMENU=\"$(DEFAULT_MENU)\" -DDEFAULTSTYLE=\"$(DEFAULT_STYLE)\"
-+CPPFLAGS = @CPPFLAGS@ @SHAPE@ @XINERAMA@ @ORDEREDPSEUDO@ @DEBUG@ @NLS@ @TIMEDCACHE@ -DLOCALEPATH=\"$(pkgdatadir)/nls\" -DDEFAULTMENU=\"$(DEFAULT_MENU)\" -DDEFAULTSTYLE=\"$(DEFAULT_STYLE)\"
-
-
- bin_PROGRAMS = blackbox
-@@ -119,7 +120,8 @@
- blackbox_OBJECTS = BaseDisplay.o Basemenu.o Clientmenu.o Color.o \
- Configmenu.o GCCache.o Iconmenu.o Image.o ImageControl.o Netizen.o \
- Rootmenu.o Screen.o Slit.o Texture.o Timer.o Toolbar.o Util.o Window.o \
--Windowmenu.o Workspace.o Workspacemenu.o blackbox.o i18n.o main.o
-+Windowmenu.o Workspace.o Workspacemenu.o Xinerama.o \
-+blackbox.o i18n.o main.o
- blackbox_LDADD = $(LDADD)
- blackbox_DEPENDENCIES =
- blackbox_LDFLAGS =
-@@ -321,11 +323,11 @@
-
- BaseDisplay.o: BaseDisplay.cc ../config.h i18n.hh \
- ../nls/blackbox-nls.hh BaseDisplay.hh Timer.hh GCCache.hh Color.hh \
-- Util.hh
-+ Util.hh Xinerama.hh
- Basemenu.o: Basemenu.cc ../config.h i18n.hh ../nls/blackbox-nls.hh \
- blackbox.hh BaseDisplay.hh Timer.hh Basemenu.hh GCCache.hh Color.hh \
- Image.hh Screen.hh Texture.hh Util.hh Configmenu.hh Iconmenu.hh \
-- Netizen.hh Rootmenu.hh Workspace.hh Workspacemenu.hh
-+ Netizen.hh Rootmenu.hh Workspace.hh Workspacemenu.hh Xinerama.hh
- Clientmenu.o: Clientmenu.cc ../config.h blackbox.hh i18n.hh \
- ../nls/blackbox-nls.hh BaseDisplay.hh Timer.hh Clientmenu.hh \
- Basemenu.hh Screen.hh Color.hh Texture.hh Util.hh Configmenu.hh \
-@@ -375,13 +377,13 @@
- blackbox.hh BaseDisplay.hh Timer.hh Clientmenu.hh Basemenu.hh \
- GCCache.hh Color.hh Iconmenu.hh Image.hh Rootmenu.hh Screen.hh \
- Texture.hh Util.hh Configmenu.hh Netizen.hh Workspace.hh \
-- Workspacemenu.hh Toolbar.hh Window.hh Windowmenu.hh Slit.hh
-+ Workspacemenu.hh Toolbar.hh Window.hh Windowmenu.hh Slit.hh Xinerama.hh
- Util.o: Util.cc ../config.h Util.hh
- Window.o: Window.cc ../config.h i18n.hh ../nls/blackbox-nls.hh \
- blackbox.hh BaseDisplay.hh Timer.hh GCCache.hh Color.hh Iconmenu.hh \
- Basemenu.hh Image.hh Screen.hh Texture.hh Util.hh Configmenu.hh \
- Netizen.hh Rootmenu.hh Workspace.hh Workspacemenu.hh Toolbar.hh \
-- Window.hh Windowmenu.hh Slit.hh
-+ Window.hh Windowmenu.hh Slit.hh Xinerama.hh
- Windowmenu.o: Windowmenu.cc ../config.h i18n.hh ../nls/blackbox-nls.hh \
- blackbox.hh BaseDisplay.hh Timer.hh Screen.hh Color.hh Texture.hh \
- Util.hh Configmenu.hh Basemenu.hh Iconmenu.hh Netizen.hh Rootmenu.hh \
-@@ -390,11 +392,12 @@
- blackbox.hh BaseDisplay.hh Timer.hh Clientmenu.hh Basemenu.hh \
- Netizen.hh Screen.hh Color.hh Texture.hh Util.hh Configmenu.hh \
- Iconmenu.hh Rootmenu.hh Workspace.hh Workspacemenu.hh Toolbar.hh \
-- Window.hh Windowmenu.hh
-+ Window.hh Windowmenu.hh Xinerama.hh
- Workspacemenu.o: Workspacemenu.cc ../config.h i18n.hh \
- ../nls/blackbox-nls.hh blackbox.hh BaseDisplay.hh Timer.hh Screen.hh \
- Color.hh Texture.hh Util.hh Configmenu.hh Basemenu.hh Iconmenu.hh \
- Netizen.hh Rootmenu.hh Workspace.hh Workspacemenu.hh Toolbar.hh
-+Xinerama.o: Xinerama.cc ../config.h Util.hh Xinerama.hh
- blackbox.o: blackbox.cc ../config.h i18n.hh ../nls/blackbox-nls.hh \
- blackbox.hh BaseDisplay.hh Timer.hh Basemenu.hh Clientmenu.hh \
- GCCache.hh Color.hh Image.hh Rootmenu.hh Screen.hh Texture.hh Util.hh \
---- blackbox-0.65.0.orig/src/Screen.cc
-+++ blackbox-0.65.0/src/Screen.cc
-@@ -998,6 +998,9 @@
-
- *(session_stack + i++) = configmenu->getFocusmenu()->getWindowID();
- *(session_stack + i++) = configmenu->getPlacementmenu()->getWindowID();
-+ if (configmenu->getXineramamenu())
-+ *(session_stack + i++) = configmenu->getXineramamenu()->getWindowID();
-+
- *(session_stack + i++) = configmenu->getWindowID();
-
- *(session_stack + i++) = slit->getMenu()->getDirectionmenu()->getWindowID();
-@@ -1704,38 +1707,18 @@
- if (rootmenu->isVisible())
- rootmenu->hide();
- } else if (xbutton->button == 2) {
-- int mx = xbutton->x_root - (workspacemenu->getWidth() / 2);
-- int my = xbutton->y_root - (workspacemenu->getTitleHeight() / 2);
--
-- if (mx < 0) mx = 0;
-- if (my < 0) my = 0;
--
-- if (mx + workspacemenu->getWidth() > getWidth())
-- mx = getWidth() - workspacemenu->getWidth() - getBorderWidth();
--
-- if (my + workspacemenu->getHeight() > getHeight())
-- my = getHeight() - workspacemenu->getHeight() - getBorderWidth();
--
-- workspacemenu->move(mx, my);
-+ workspacemenu->moveInScreen(xbutton->x_root, xbutton->y_root,
-+ -static_cast<signed>(workspacemenu->getWidth()) / 2,
-+ -static_cast<signed>(workspacemenu->getTitleHeight()) / 2);
-
- if (! workspacemenu->isVisible()) {
- workspacemenu->removeParent();
- workspacemenu->show();
- }
- } else if (xbutton->button == 3) {
-- int mx = xbutton->x_root - (rootmenu->getWidth() / 2);
-- int my = xbutton->y_root - (rootmenu->getTitleHeight() / 2);
--
-- if (mx < 0) mx = 0;
-- if (my < 0) my = 0;
--
-- if (mx + rootmenu->getWidth() > getWidth())
-- mx = getWidth() - rootmenu->getWidth() - getBorderWidth();
--
-- if (my + rootmenu->getHeight() > getHeight())
-- my = getHeight() - rootmenu->getHeight() - getBorderWidth();
--
-- rootmenu->move(mx, my);
-+ rootmenu->moveInScreen(xbutton->x_root, xbutton->y_root,
-+ -static_cast<signed>(rootmenu->getWidth()) / 2,
-+ -static_cast<signed>(rootmenu->getTitleHeight()) / 2);
-
- if (! rootmenu->isVisible()) {
- blackbox->checkMenu();
---- blackbox-0.65.0.orig/src/Screen.hh
-+++ blackbox-0.65.0/src/Screen.hh
-@@ -149,15 +149,16 @@
-
- bool toolbar_on_top, toolbar_auto_hide, sloppy_focus, auto_raise,
- auto_edge_balance, image_dither, ordered_dither, opaque_move, full_max,
-- focus_new, focus_last, click_raise, allow_scroll_lock;
-+ focus_new, focus_last, click_raise, allow_scroll_lock,
-+ xinerama_placement, xinerama_maximize, xinerama_menus, xinerama_toolbar;
- BColor border_color;
- XrmDatabase stylerc;
-
- unsigned int workspaces;
- int toolbar_placement, toolbar_width_percent, placement_policy,
-- edge_snap_threshold, row_direction, col_direction;
-+ edge_snap_threshold, row_direction, col_direction, toolbar_xin_screen;
-
-- bool slit_on_top, slit_auto_hide;
-+ bool slit_on_top, slit_auto_hide, xinerama_slit;
- int slit_placement, slit_direction;
-
- unsigned int handle_width, bevel_width, frame_width, border_width;
-@@ -224,6 +225,16 @@
- inline bool doFocusNew(void) const { return resource.focus_new; }
- inline bool doFocusLast(void) const { return resource.focus_last; }
- inline bool allowScrollLock(void) const { return resource.allow_scroll_lock;}
-+ inline bool doXineramaPlacement(void) const
-+ { return resource.xinerama_placement; }
-+ inline bool doXineramaMaximize(void) const
-+ { return resource.xinerama_maximize; }
-+ inline bool doXineramaMenus(void) const
-+ { return resource.xinerama_menus; }
-+ inline bool doXineramaToolbar(void) const
-+ { return resource.xinerama_toolbar; }
-+ inline bool doXineramaSlit(void) const
-+ { return resource.xinerama_slit; }
-
- inline const GC &getOpGC(void) const { return opGC; }
-
-@@ -281,6 +292,8 @@
- { return resource.row_direction; }
- inline int getColPlacementDirection(void) const
- { return resource.col_direction; }
-+ inline int getXineramaToolbarScreen(void) const
-+ { return resource.toolbar_xin_screen; }
-
- inline void setRootColormapInstalled(bool r) { root_colormap_installed = r; }
- inline void saveSloppyFocus(bool s) { resource.sloppy_focus = s; }
-@@ -295,6 +308,8 @@
- inline void savePlacementPolicy(int p) { resource.placement_policy = p; }
- inline void saveRowPlacementDirection(int d) { resource.row_direction = d; }
- inline void saveColPlacementDirection(int d) { resource.col_direction = d; }
-+ inline void saveXineramaToolbarScreen(int s)
-+ { resource.toolbar_xin_screen = s;}
- inline void saveEdgeSnapThreshold(int t)
- { resource.edge_snap_threshold = t; }
- inline void saveImageDither(bool d) { resource.image_dither = d; }
-@@ -303,6 +318,13 @@
- inline void saveFocusNew(bool f) { resource.focus_new = f; }
- inline void saveFocusLast(bool f) { resource.focus_last = f; }
- inline void saveAllowScrollLock(bool a) { resource.allow_scroll_lock = a; }
-+ inline void saveXineramaPlacement(bool p) { resource.xinerama_placement = p; }
-+ inline void saveXineramaMaximize(bool m) { resource.xinerama_maximize = m; }
-+ inline void saveXineramaMenus(bool m) { resource.xinerama_menus = m; }
-+ inline void saveXineramaToolbar(bool t) { resource.xinerama_toolbar = t; }
-+ inline void saveXinaramaToolbarScreen(int s)
-+ { resource.toolbar_xin_screen = s; }
-+ inline void saveXineramaSlit(bool s) { resource.xinerama_slit = s; }
-
- inline void iconUpdate(void) { iconmenu->update(); }
-
---- blackbox-0.65.0.orig/src/Slit.cc
-+++ blackbox-0.65.0/src/Slit.cc
-@@ -35,6 +35,7 @@
- #include "Screen.hh"
- #include "Slit.hh"
- #include "Toolbar.hh"
-+#include "Xinerama.hh"
-
-
- Slit::Slit(BScreen *scr) {
-@@ -481,6 +482,29 @@
-
- frame.rect.setPos(x, y);
-
-+ if (screen->getXineramaInfo() && screen->doXineramaSlit()) {
-+ XineramaScreen scr = screen->getXineramaInfo()->screenContaining(frame.rect);
-+ if (!scr.isValid()) {
-+ scr = screen->getXineramaInfo()->getClosestScreen(x,y);
-+ }
-+
-+ if (scr.isValid() && (scr.getRect() & frame.rect) != frame.rect) {
-+ int w = static_cast<signed>(frame.rect.width());
-+ if (x < scr.getRect().left())
-+ x = scr.getRect().left();
-+ else if (x + w > scr.getRect().right())
-+ x = scr.getRect().right() - w;
-+
-+ int h = static_cast<signed>(frame.rect.height());
-+ if (y < scr.getRect().top())
-+ y = scr.getRect().top();
-+ else if (y + h > scr.getRect().bottom())
-+ y = scr.getRect().bottom() - h;
-+
-+ frame.rect.setPos(x, y);
-+ }
-+ }
-+
- // we have to add the border to the rect as it is not accounted for
- Rect tbar_rect = screen->getToolbar()->getRect();
- tbar_rect.setSize(tbar_rect.width() + (screen->getBorderWidth() * 2),
-@@ -536,22 +560,9 @@
- XLowerWindow(display, frame.window);
- } else if (e->button == Button3) {
- if (! slitmenu->isVisible()) {
-- int x, y;
--
-- x = e->x_root - (slitmenu->getWidth() / 2);
-- y = e->y_root - (slitmenu->getHeight() / 2);
--
-- if (x < 0)
-- x = 0;
-- else if (x + slitmenu->getWidth() > screen->getWidth())
-- x = screen->getWidth() - slitmenu->getWidth();
--
-- if (y < 0)
-- y = 0;
-- else if (y + slitmenu->getHeight() > screen->getHeight())
-- y = screen->getHeight() - slitmenu->getHeight();
--
-- slitmenu->move(x, y);
-+ slitmenu->moveInScreen(e->x_root, e->y_root,
-+ -static_cast<signed>(slitmenu->getWidth()) / 2,
-+ -static_cast<signed>(slitmenu->getHeight()) / 2);
- slitmenu->show();
- } else {
- slitmenu->hide();
---- blackbox-0.65.0.orig/src/Timer.hh
-+++ blackbox-0.65.0/src/Timer.hh
-@@ -98,9 +98,9 @@
- ~_timer_queue(void) {}
-
- void release(const _Tp& value) {
-- c.erase(std::remove(c.begin(), c.end(), value), c.end());
-+ this->c.erase(std::remove(this->c.begin(), this->c.end(), value), this->c.end());
- // after removing the item we need to make the heap again
-- std::make_heap(c.begin(), c.end(), comp);
-+ std::make_heap(this->c.begin(), this->c.end(), this->comp);
- }
- bool empty(void) const { return _Base::empty(); }
- size_t size(void) const { return _Base::size(); }
---- blackbox-0.65.0.orig/src/Toolbar.cc
-+++ blackbox-0.65.0/src/Toolbar.cc
-@@ -62,6 +62,7 @@
- #include "Clientmenu.hh"
- #include "Workspacemenu.hh"
- #include "Slit.hh"
-+#include "Xinerama.hh"
-
-
- static long aMinuteFromNow(void) {
-@@ -198,8 +199,56 @@
-
-
- void Toolbar::reconfigure(void) {
-+ Rect rect = screen->getRect();
-+
-+ if (screen->getXineramaInfo() && screen->doXineramaToolbar()) {
-+
-+ XineramaScreen xinerama =
-+ screen->getXineramaInfo()->getScreen(screen->getXineramaToolbarScreen());
-+
-+ if (! xinerama.isValid()) {
-+
-+ XineramaList list;
-+ switch (screen->getToolbarPlacement()) {
-+ case TopLeft:
-+ case TopRight:
-+ case TopCenter:
-+ screen->getXineramaInfo()->getTopScreens(list);
-+ break;
-+ case BottomLeft:
-+ case BottomRight:
-+ case BottomCenter:
-+ default:
-+ screen->getXineramaInfo()->getBottomScreens(list);
-+ break;
-+ }
-+
-+ switch (screen->getToolbarPlacement()) {
-+ case TopLeft:
-+ case BottomLeft:
-+ xinerama = *list.begin();
-+ break;
-+ case TopRight:
-+ case BottomRight:
-+ xinerama = *list.rbegin();
-+ break;
-+ case TopCenter:
-+ case BottomCenter:
-+ default: {
-+ XineramaList::iterator itr = list.begin();
-+ for (int count = list.size()/2; count--; ++itr);
-+ xinerama = *itr;
-+ break;
-+ }
-+ }
-+ screen->saveXineramaToolbarScreen(xinerama.getScreenNumber());
-+ } // end if (invalid xinerama screen)
-+
-+ rect = xinerama.getRect();
-+ } // end if (xinerama)
-+
- unsigned int height = 0,
-- width = (screen->getWidth() * screen->getToolbarWidthPercent()) / 100;
-+ width = (rect.width() * screen->getToolbarWidthPercent()) / 100;
-
- if (i18n.multibyte())
- height = screen->getToolbarStyle()->fontset_extents->max_ink_extent.height;
-@@ -218,18 +267,25 @@
- int x, y;
- switch (screen->getToolbarPlacement()) {
- case TopLeft:
-+ case BottomLeft:
-+ x = rect.left();
-+ break;
- case TopRight:
-- case TopCenter:
-- if (screen->getToolbarPlacement() == TopLeft)
-- x = 0;
-- else if (screen->getToolbarPlacement() == TopRight)
-- x = screen->getWidth() - frame.rect.width()
-+ case BottomRight:
-+ x = rect.left() + rect.width() - frame.rect.width()
- - (screen->getBorderWidth() * 2);
-- else
-- x = (screen->getWidth() - frame.rect.width()) / 2;
--
-- y = 0;
--
-+ break;
-+ case TopCenter:
-+ case BottomCenter:
-+ default:
-+ x = rect.left() + (rect.width() - frame.rect.width()) / 2;
-+ break;
-+ }
-+ switch (screen->getToolbarPlacement()) {
-+ case TopLeft:
-+ case TopRight:
-+ case TopCenter:
-+ y = rect.top();
- frame.x_hidden = x;
- frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth()
- - frame.rect.height();
-@@ -239,19 +295,11 @@
- case BottomRight:
- case BottomCenter:
- default:
-- if (screen->getToolbarPlacement() == BottomLeft)
-- x = 0;
-- else if (screen->getToolbarPlacement() == BottomRight)
-- x = screen->getWidth() - frame.rect.width()
-- - (screen->getBorderWidth() * 2);
-- else
-- x = (screen->getWidth() - frame.rect.width()) / 2;
--
-- y = screen->getHeight() - frame.rect.height()
-+ y = rect.bottom() - frame.rect.height()
- - (screen->getBorderWidth() * 2);
-
- frame.x_hidden = x;
-- frame.y_hidden = screen->getHeight() - screen->getBevelWidth()
-+ frame.y_hidden = rect.bottom() - screen->getBevelWidth()
- - screen->getBorderWidth();
- break;
- }
-@@ -758,22 +806,9 @@
- if (toolbarmenu->isVisible()) {
- toolbarmenu->hide();
- } else {
-- int x, y;
--
-- x = be->x_root - (toolbarmenu->getWidth() / 2);
-- y = be->y_root - (toolbarmenu->getHeight() / 2);
--
-- if (x < 0)
-- x = 0;
-- else if (x + toolbarmenu->getWidth() > screen->getWidth())
-- x = screen->getWidth() - toolbarmenu->getWidth();
--
-- if (y < 0)
-- y = 0;
-- else if (y + toolbarmenu->getHeight() > screen->getHeight())
-- y = screen->getHeight() - toolbarmenu->getHeight();
--
-- toolbarmenu->move(x, y);
-+ toolbarmenu->moveInScreen(be->x_root, be->y_root,
-+ -static_cast<signed>(toolbarmenu->getWidth()) / 2,
-+ -static_cast<signed>(toolbarmenu->getHeight()) / 2);
- toolbarmenu->show();
- }
- }
-@@ -1069,21 +1104,88 @@
- : Basemenu(tm->toolbar->screen) {
- setLabel(i18n(ToolbarSet, ToolbarToolbarPlacement, "Toolbar Placement"));
- setInternalMenu();
-- setMinimumSublevels(3);
-+ reconfigure();
-+}
-
-- insert(i18n(CommonSet, CommonPlacementTopLeft, "Top Left"),
-- Toolbar::TopLeft);
-- insert(i18n(CommonSet, CommonPlacementBottomLeft, "Bottom Left"),
-- Toolbar::BottomLeft);
-- insert(i18n(CommonSet, CommonPlacementTopCenter, "Top Center"),
-- Toolbar::TopCenter);
-- insert(i18n(CommonSet, CommonPlacementBottomCenter, "Bottom Center"),
-- Toolbar::BottomCenter);
-- insert(i18n(CommonSet, CommonPlacementTopRight, "Top Right"),
-- Toolbar::TopRight);
-- insert(i18n(CommonSet, CommonPlacementBottomRight, "Bottom Right"),
-- Toolbar::BottomRight);
-+void Toolbarmenu::Placementmenu::reconfigure(void)
-+{
-+ for (int count = getCount(); count > 0; count = remove(count-1));
-+
-+ if (getScreen()->getXineramaInfo() && getScreen()->doXineramaToolbar()) {
-+ char buffer[256];
-+ XineramaList top_list, bottom_list;
-+ getScreen()->getXineramaInfo()->getTopScreens(top_list);
-+ getScreen()->getXineramaInfo()->getBottomScreens(bottom_list);
-+ int width = std::max(top_list.size(),bottom_list.size()) + 2;
-+ setMinimumSublevels(width);
-+
-+ XineramaList::const_iterator top = top_list.begin();
-+ XineramaList::const_iterator bottom = bottom_list.begin();
-+
-+ insert(i18n(CommonSet, CommonPlacementTopLeft, "Top Left"),
-+ handleFromPlacement(Toolbar::TopLeft, top->getScreenNumber()));
-+ insert(i18n(CommonSet, CommonPlacementBottomLeft, "Bottom Left"),
-+ handleFromPlacement(Toolbar::BottomLeft, bottom->getScreenNumber()));
-+
-+ for (int count = width - 2; count--; ) {
-+ if (top != top_list.end()) {
-+ sprintf(buffer,
-+ i18n(ToolbarSet, ToolbarScreenTop, "Screen %d Top"),
-+ top->getScreenNumber());
-+ insert(buffer,
-+ handleFromPlacement(Toolbar::TopCenter,top->getScreenNumber()));
-+ ++top;
-+ }
-+ else {
-+ insert("",-2);
-+ }
-+
-+ if (bottom != bottom_list.end()) {
-+ sprintf(buffer,
-+ i18n(ToolbarSet, ToolbarScreenBottom, "Screen %d Bottom"),
-+ bottom->getScreenNumber());
-+ insert(buffer,
-+ handleFromPlacement(Toolbar::BottomCenter,bottom->getScreenNumber()));
-+ ++bottom;
-+ }
-+ else {
-+ insert("",-2);
-+ }
-+ }
-+
-+ int last_scr = top_list.rbegin()->getScreenNumber();
-+ insert(i18n(CommonSet, CommonPlacementTopRight, "Top Right"),
-+ handleFromPlacement(Toolbar::TopRight, last_scr));
-+ last_scr = bottom_list.rbegin()->getScreenNumber();
-+ insert(i18n(CommonSet, CommonPlacementBottomRight, "Bottom Right"),
-+ handleFromPlacement(Toolbar::BottomRight, last_scr));
-+
-+ update();
-+
-+ for (int index = 0; index < static_cast<signed>(getCount()); index++) {
-+ if (find(index)->function() == -2) {
-+ setItemEnabled(index, false);
-+ }
-+ }
-+ }
-+ else {
-+ setMinimumSublevels(3);
-+
-+ insert(i18n(CommonSet, CommonPlacementTopLeft, "Top Left"),
-+ Toolbar::TopLeft);
-+ insert(i18n(CommonSet, CommonPlacementBottomLeft, "Bottom Left"),
-+ Toolbar::BottomLeft);
-+ insert(i18n(CommonSet, CommonPlacementTopCenter, "Top Center"),
-+ Toolbar::TopCenter);
-+ insert(i18n(CommonSet, CommonPlacementBottomCenter, "Bottom Center"),
-+ Toolbar::BottomCenter);
-+ insert(i18n(CommonSet, CommonPlacementTopRight, "Top Right"),
-+ Toolbar::TopRight);
-+ insert(i18n(CommonSet, CommonPlacementBottomRight, "Bottom Right"),
-+ Toolbar::BottomRight);
-+ }
- update();
-+ Basemenu::reconfigure();
- }
-
-
-@@ -1094,7 +1196,14 @@
- BasemenuItem *item = find(index);
- if (! item) return;
-
-- getScreen()->saveToolbarPlacement(item->function());
-+ int placement = Placementmenu::placementFromHandle(item->function());
-+ getScreen()->saveToolbarPlacement(placement);
-+
-+ if (getScreen()->getXineramaInfo() && getScreen()->doXineramaToolbar()) {
-+ int xinerama = Placementmenu::xineramaFromHandle(item->function());
-+ getScreen()->saveXineramaToolbarScreen(xinerama);
-+ }
-+
- hide();
- getScreen()->getToolbar()->reconfigure();
-
---- blackbox-0.65.0.orig/src/Toolbar.hh
-+++ blackbox-0.65.0/src/Toolbar.hh
-@@ -47,6 +47,15 @@
-
- public:
- Placementmenu(Toolbarmenu *tm);
-+
-+ inline static int handleFromPlacement(int placement, int xinerama_screen)
-+ { return ((xinerama_screen+1) << 3) | placement; }
-+ inline static int placementFromHandle(int handle)
-+ { return handle & 0x7; }
-+ inline static int xineramaFromHandle(int handle)
-+ { return (handle >> 3)-1; }
-+
-+ void reconfigure(void);
- };
-
- Toolbar *toolbar;
---- blackbox-0.65.0.orig/src/Util.hh
-+++ blackbox-0.65.0/src/Util.hh
-@@ -29,6 +29,14 @@
-
- #include <string>
-
-+struct Point {
-+ inline Point(void) : x(0), y(0) {}
-+ inline Point(int set_x, int set_y) : x(set_x), y(set_y) {}
-+ inline void set(int set_x, int set_y)
-+ { x = set_x; y = set_y; }
-+ int x, y;
-+};
-+
- class Rect {
- public:
- inline Rect(void) : _x1(0), _y1(0), _x2(0), _y2(0) { }
-@@ -51,6 +59,7 @@
-
- inline unsigned int width(void) const { return _x2 - _x1 + 1; }
- inline unsigned int height(void) const { return _y2 - _y1 + 1; }
-+ inline int area(void) const { return width() * height(); }
- void setWidth(unsigned int __w);
- void setHeight(unsigned int __h);
- void setSize(unsigned int __w, unsigned int __h);
-@@ -71,6 +80,9 @@
- inline bool valid(void) const { return _x2 > _x1 && _y2 > _y1; }
-
- bool intersects(const Rect &a) const;
-+
-+ inline bool contains( int x, int y ) const
-+ { return (x >= _x1) && (x <= _x2) && (y >= _y1) && (y <= _y2); }
-
- private:
- int _x1, _y1, _x2, _y2;
---- blackbox-0.65.0.orig/src/Window.cc
-+++ blackbox-0.65.0/src/Window.cc
-@@ -44,6 +44,8 @@
- #endif // HAVE_STDLIB_H
- }
-
-+#include <cassert>
-+
- #include "i18n.hh"
- #include "blackbox.hh"
- #include "GCCache.hh"
-@@ -55,6 +57,7 @@
- #include "Window.hh"
- #include "Windowmenu.hh"
- #include "Workspace.hh"
-+#include "Xinerama.hh"
-
-
- /*
-@@ -208,8 +211,16 @@
- client.normal_hint_flags & (PPosition|USPosition)) {
- applyGravity(frame.rect);
-
-- if (blackbox->isStartup() || client.rect.intersects(screen->getRect()))
-+ if (blackbox->isStartup()) {
-+ place_window = False;
-+ }
-+ else if (s->getXineramaInfo() && s->doXineramaPlacement()) {
-+ if (s->getXineramaInfo()->screenContaining(client.rect).isValid())
-+ place_window = False;
-+ }
-+ else if (client.rect.intersects(screen->getRect())) {
- place_window = False;
-+ }
- }
-
- /*
-@@ -1626,7 +1637,13 @@
- blackbox_attrib.premax_h =
- client.rect.height() + frame.margin.top + frame.margin.bottom;
-
-- const Rect &screen_area = screen->availableArea();
-+ Rect screen_area = screen->availableArea();
-+ if (screen->getXineramaInfo() && screen->doXineramaMaximize()) {
-+ XineramaScreen xinerama
-+ = screen->getXineramaInfo()->screenContaining(frame.rect);
-+ if (xinerama.isValid())
-+ screen_area &= xinerama.getRect();
-+ }
- frame.changing = screen_area;
-
- switch(button) {
-@@ -3288,6 +3305,7 @@
- do {
- if (multibyte) {
- XRectangle ink, logical;
-+ if (text_len>100) text_len=100;
- XmbTextExtents(fontset, text, text_len, &ink, &logical);
- length = logical.width;
- } else {
---- blackbox-0.65.0.orig/src/Workspace.cc
-+++ blackbox-0.65.0/src/Workspace.cc
-@@ -55,13 +55,12 @@
- #include "Window.hh"
- #include "Workspace.hh"
- #include "Windowmenu.hh"
-+#include "Xinerama.hh"
-
-
- Workspace::Workspace(BScreen *scrn, unsigned int i) {
- screen = scrn;
-
-- cascade_x = cascade_y = 32;
--
- id = i;
-
- clientmenu = new Clientmenu(this);
-@@ -123,9 +122,6 @@
- for (; it != end; ++it, ++i)
- (*it)->setWindowNumber(i);
-
-- if (i == 0)
-- cascade_x = cascade_y = 32;
--
- return i;
- }
-
-@@ -548,8 +544,19 @@
-
- bool Workspace::smartPlacement(Rect& win, const Rect& availableArea) {
- rectList spaces;
-- spaces.push_back(availableArea); //initially the entire screen is free
-
-+ // If xinerama info, initialize spaces to available xinerama screens
-+ if (screen->getXineramaInfo() && screen->doXineramaPlacement()) {
-+ const XineramaList& list = screen->getXineramaInfo()->getScreens();
-+ for (XineramaList::const_iterator itr = list.begin();
-+ itr != list.end(); ++itr) {
-+ spaces.push_back(availableArea & itr->getRect());
-+ }
-+ }
-+ else {
-+ spaces.push_back(availableArea); //initially the entire screen is free
-+ }
-+
- //Find Free Spaces
- BlackboxWindowList::const_iterator wit = windowList.begin(),
- end = windowList.end();
-@@ -621,17 +628,45 @@
- }
-
-
--bool Workspace::cascadePlacement(Rect &win, const Rect &availableArea) {
-- if (cascade_x > (availableArea.width() / 2) ||
-- cascade_y > (availableArea.height() / 2))
-- cascade_x = cascade_y = 32;
--
-- if (cascade_x == 32) {
-- cascade_x += availableArea.x();
-- cascade_y += availableArea.y();
-- }
--
-- win.setPos(cascade_x, cascade_y);
-+bool Workspace::cascadePlacement(Rect &win, Rect availableArea, int offset) {
-+
-+ // Place window in whichever xinerama screen contains the
-+ // pointer.
-+ int xinerama_screen = 0;
-+ if (screen->getXineramaInfo() && screen->doXineramaPlacement()) {
-+ int ptr_x, ptr_y, x, y;
-+ Window c, r;
-+ unsigned int m;
-+ XQueryPointer(screen->getBaseDisplay()->getXDisplay(),
-+ screen->getRootWindow(),
-+ &r, &c, &ptr_x, &ptr_y, &x, &y, &m);
-+ XineramaScreen xinerama =
-+ screen->getXineramaInfo()->screenContaining(ptr_x, ptr_y);
-+ if (! xinerama.isValid())
-+ xinerama = *(screen->getXineramaInfo()->getScreens().begin());
-+ xinerama_screen = xinerama.getScreenNumber();
-+ availableArea &= xinerama.getRect();
-+ }
-+
-+ if (cascade_points.count(xinerama_screen) == 0) {
-+ cascade_points[xinerama_screen] = Point(32,32);
-+ }
-+ Point& pos = cascade_points[xinerama_screen];
-+
-+ if (pos.x < (availableArea.left() + 32) ||
-+ pos.y < (availableArea.top() + 32) ||
-+ pos.x > (availableArea.left() + (int)availableArea.width() / 2) ||
-+ pos.y > (availableArea.top() + (int)availableArea.height() / 2))
-+ pos.x = pos.y = 32;
-+
-+ if (pos.x == 32) {
-+ pos.x += availableArea.x();
-+ pos.y += availableArea.y();
-+ }
-+
-+ win.setPos(pos.x, pos.y);
-+ pos.x += offset;
-+ pos.y += offset;
-
- return True;
- }
-@@ -653,9 +688,8 @@
- } // switch
-
- if (placed == False) {
-- cascadePlacement(new_win, availableArea);
-- cascade_x += win->getTitleHeight() + (screen->getBorderWidth() * 2);
-- cascade_y += win->getTitleHeight() + (screen->getBorderWidth() * 2);
-+ cascadePlacement(new_win, availableArea,
-+ win->getTitleHeight() + (screen->getBorderWidth() * 2));
- }
-
- if (new_win.right() > availableArea.right())
---- blackbox-0.65.0.orig/src/Workspace.hh
-+++ blackbox-0.65.0/src/Workspace.hh
-@@ -51,7 +51,7 @@
-
- std::string name;
- unsigned int id;
-- unsigned int cascade_x, cascade_y;
-+ std::map<int,Point> cascade_points;
-
- Workspace(const Workspace&);
- Workspace& operator=(const Workspace&);
-@@ -62,7 +62,7 @@
- StackVector::iterator &stack);
-
- void placeWindow(BlackboxWindow *win);
-- bool cascadePlacement(Rect& win, const Rect& availableArea);
-+ bool cascadePlacement(Rect& win, Rect availableArea, int offset);
- bool smartPlacement(Rect& win, const Rect& availableArea);
-
- public:
---- blackbox-0.65.0.orig/src/blackbox.cc
-+++ blackbox-0.65.0/src/blackbox.cc
-@@ -1094,6 +1094,26 @@
- screen_number, placement);
- XrmPutLineResource(&new_blackboxrc, rc_string);
-
-+ // write out xinerama settings
-+ sprintf(rc_string, "session.screen%d.xineramaPlacement: %s",
-+ screen_number, screen->doXineramaPlacement() ? "True" : "False");
-+ XrmPutLineResource(&new_blackboxrc, rc_string);
-+ sprintf(rc_string, "session.screen%d.xineramaMaximize: %s",
-+ screen_number, screen->doXineramaMaximize() ? "True" : "False");
-+ XrmPutLineResource(&new_blackboxrc, rc_string);
-+ sprintf(rc_string, "session.screen%d.xineramaMenuPlacement: %s",
-+ screen_number, screen->doXineramaMenus() ? "True" : "False");
-+ XrmPutLineResource(&new_blackboxrc, rc_string);
-+ sprintf(rc_string, "session.screen%d.slit.xineramaPlacement: %s",
-+ screen_number, screen->doXineramaSlit() ? "True" : "False");
-+ XrmPutLineResource(&new_blackboxrc, rc_string);
-+ sprintf(rc_string, "session.screen%d.toolbar.xineramaPlacement: %s",
-+ screen_number, screen->doXineramaToolbar() ? "True" : "False");
-+ XrmPutLineResource(&new_blackboxrc, rc_string);
-+ sprintf(rc_string, "session.screen%d.toolbar.xineramaScreen: %d",
-+ screen_number, screen->getXineramaToolbarScreen());
-+ XrmPutLineResource(&new_blackboxrc, rc_string);
-+
- load_rc(screen);
-
- // these are static, but may not be saved in the users .blackboxrc,
-@@ -1215,7 +1235,6 @@
- }
- }
-
--
- void Blackbox::load_rc(BScreen *screen) {
- XrmDatabase database = (XrmDatabase) 0;
-
-@@ -1492,6 +1511,50 @@
- ! strncasecmp("true", value.addr, value.size)) {
- screen->saveOpaqueMove(True);
- }
-+
-+ // load xinerama settings
-+ sprintf(name_lookup, "session.screen%d.xineramaPlacement", screen_number);
-+ sprintf(class_lookup, "Session.Screen%d.XineramaPlacement", screen_number);
-+ screen->saveXineramaPlacement(true);
-+ if ((XrmGetResource(database,name_lookup,class_lookup,&value_type,&value))
-+ && ! strncasecmp("false", value.addr, value.size)) {
-+ screen->saveXineramaPlacement(false);
-+ }
-+ sprintf(name_lookup, "session.screen%d.xineramaMaximize", screen_number);
-+ sprintf(class_lookup, "Session.Screen%d.XineramaMaximize", screen_number);
-+ screen->saveXineramaMaximize(true);
-+ if ((XrmGetResource(database,name_lookup,class_lookup,&value_type,&value))
-+ && ! strncasecmp("false", value.addr, value.size)) {
-+ screen->saveXineramaMaximize(false);
-+ }
-+ sprintf(name_lookup, "session.screen%d.xineramaMenuPlacement", screen_number);
-+ sprintf(class_lookup, "Session.Screen%d.XineramaMenuPlacement", screen_number);
-+ screen->saveXineramaMenus(true);
-+ if ((XrmGetResource(database,name_lookup,class_lookup,&value_type,&value))
-+ && ! strncasecmp("false", value.addr, value.size)) {
-+ screen->saveXineramaMenus(false);
-+ }
-+ sprintf(name_lookup, "session.screen%d.slit.xineramaPlacement", screen_number);
-+ sprintf(class_lookup, "Session.Screen%d.Slit.XineramaPlacement", screen_number);
-+ screen->saveXineramaSlit(true);
-+ if ((XrmGetResource(database,name_lookup,class_lookup,&value_type,&value))
-+ && ! strncasecmp("false", value.addr, value.size)) {
-+ screen->saveXineramaSlit(false);
-+ }
-+ sprintf(name_lookup, "session.screen%d.toolbar.xineramaPlacement", screen_number);
-+ sprintf(class_lookup, "Session.Screen%d.Toolbar.XineramaPlacement", screen_number);
-+ screen->saveXineramaToolbar(true);
-+ if ((XrmGetResource(database,name_lookup,class_lookup,&value_type,&value))
-+ && ! strncasecmp("false", value.addr, value.size)) {
-+ screen->saveXineramaToolbar(false);
-+ }
-+ sprintf(name_lookup, "session.screen%d.toolbar.xineramaScreen", screen_number);
-+ sprintf(class_lookup, "Session.Screen%d.Toolbar.XineramaScreen", screen_number);
-+ screen->saveXineramaToolbarScreen(-1);
-+ if ((XrmGetResource(database,name_lookup,class_lookup,&value_type,&value))
-+ && sscanf(value.addr, "%d", &int_value) == 1) {
-+ screen->saveXineramaToolbarScreen(int_value);
-+ }
-
- XrmDestroyDatabase(database);
- }
---- blackbox-0.65.0.orig/src/Xinerama.cc
-+++ blackbox-0.65.0/src/Xinerama.cc
-@@ -0,0 +1,153 @@
-+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
-+// Xinerama.cc for Blackbox - an X11 Window manager
-+// Copyright (c) 2002 Jason Kraftcheck <kraftche@cae.wisc.edu>
-+//
-+// 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.
-+
-+
-+extern "C" {
-+#include <X11/Xlib.h>
-+#ifdef XINERAMA
-+# include <X11/extensions/Xinerama.h>
-+#endif
-+}
-+
-+#include "Xinerama.hh"
-+#include "BaseDisplay.hh"
-+
-+bool XineramaInfo::update(void)
-+{
-+ screen_list.clear();
-+
-+#ifdef XINERAMA
-+ int count;
-+ XineramaScreenInfo* xinerama_list = XineramaQueryScreens(
-+ screen_info->getBaseDisplay()->getXDisplay(), &count );
-+ if (xinerama_list) {
-+ if (count > 1) {
-+ for( int i = 0; i < count; i++ ) {
-+ const XineramaScreenInfo& scr = xinerama_list[i];
-+ screen_list.push_back( XineramaScreen( scr.screen_number,
-+ Rect( scr.x_org, scr.y_org, scr.width, scr.height ) ) );
-+ }
-+ }
-+ XFree(xinerama_list);
-+ }
-+#endif
-+
-+ return haveXinerama();
-+}
-+
-+XineramaScreen XineramaInfo::screenContaining( int x, int y ) const
-+{
-+ XineramaList::const_iterator itr = getScreens().begin(),
-+ end = getScreens().end();
-+
-+ for ( ; itr != end; ++itr) {
-+ if (itr->getRect().contains(x,y))
-+ return *itr;
-+ };
-+
-+ return XineramaScreen();
-+}
-+
-+XineramaScreen XineramaInfo::screenContaining( const Rect& rect ) const
-+{
-+ XineramaScreen result;
-+ int area = 0;
-+ XineramaList::const_iterator itr = getScreens().begin(),
-+ end = getScreens().end();
-+ for ( ; itr != end; ++itr) {
-+ if (itr->getRect().intersects(rect)) {
-+ int a = (itr->getRect() & rect).area();
-+ if (a > area) {
-+ result = *itr;
-+ area = a;
-+ }
-+ }
-+ }
-+ return result;
-+}
-+
-+
-+XineramaScreen XineramaInfo::getScreen( int x_screen_number ) const
-+{
-+ XineramaList::const_iterator itr = getScreens().begin(),
-+ end = getScreens().end();
-+ for ( ; itr != end; ++itr) {
-+ if (itr->getScreenNumber() == x_screen_number)
-+ return *itr;
-+ }
-+
-+ return XineramaScreen();
-+}
-+
-+
-+void XineramaInfo::getTopBottom( XineramaList& result, bool top ) const
-+{
-+ for (XineramaList::const_iterator in_itr = screen_list.begin();
-+ in_itr != screen_list.end(); ++in_itr) {
-+
-+ XineramaList::iterator out_itr = result.begin();
-+ while (out_itr != result.end() &&
-+ in_itr->getRect().left() >= out_itr->getRect().right())
-+ ++out_itr;
-+
-+ if (out_itr == result.end()) {
-+ result.push_back(*in_itr);
-+ }
-+ else if (in_itr->getRect().right() <= out_itr->getRect().left()) {
-+ result.insert(out_itr,*in_itr);
-+ }
-+ else if ((!top && in_itr->getRect().bottom() > out_itr->getRect().bottom()) ||
-+ ( top && in_itr->getRect().top() < out_itr->getRect().top())) {
-+ *out_itr = *in_itr;
-+ }
-+ }
-+}
-+
-+XineramaScreen XineramaInfo::getClosestScreen( int x, int y ) const
-+{
-+ if (getScreens().empty())
-+ return XineramaScreen();
-+
-+ XineramaList::const_iterator itr = screen_list.begin();
-+ XineramaScreen result(*itr);
-+ unsigned long dist_sqr = distanceSquared(itr->getRect(),x,y);
-+ ++itr;
-+
-+ for ( ; itr != screen_list.end(); ++itr) {
-+ unsigned long ds = distanceSquared(itr->getRect(), x, y);
-+ if (ds < dist_sqr) {
-+ dist_sqr = ds;
-+ result = *itr;
-+ }
-+ }
-+
-+ return result;
-+}
-+
-+unsigned long XineramaInfo::distanceSquared(const Rect& rect,int x,int y)
-+{
-+ unsigned long x_dist = (x < rect.left() ) ? rect.left() - x :
-+ (x > rect.right() ) ? x - rect.right() : 0;
-+ unsigned long y_dist = (y < rect.top() ) ? rect.top() - y :
-+ (y > rect.bottom()) ? y - rect.bottom() : 0;
-+ return x_dist * x_dist + y_dist * y_dist;
-+}
---- blackbox-0.65.0.orig/src/Xinerama.hh
-+++ blackbox-0.65.0/src/Xinerama.hh
-@@ -0,0 +1,93 @@
-+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
-+// Xinerama.hh for Blackbox - an X11 Window manager
-+// Copyright (c) 2002 Jason Kraftcheck <kraftche@cae.wisc.edu>
-+//
-+// 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.
-+
-+#ifndef __Xinerama_hh
-+#define __Xinerama_hh
-+
-+#include <list>
-+
-+#include "Util.hh"
-+
-+class XineramaScreen;
-+class ScreenInfo;
-+
-+typedef std::list<XineramaScreen> XineramaList;
-+
-+class XineramaScreen {
-+private:
-+ int x_screen;
-+ Rect rect;
-+
-+public:
-+ inline XineramaScreen( int screen_number, const Rect& box )
-+ : x_screen(screen_number), rect(box) { }
-+
-+ inline XineramaScreen(void)
-+ : x_screen(-1) { }
-+
-+ inline const Rect& getRect(void) const { return rect; }
-+ inline int getScreenNumber(void) const { return x_screen; }
-+
-+ inline bool operator==( const XineramaScreen& other ) const
-+ { return x_screen == other.x_screen; }
-+
-+ inline bool operator!=( const XineramaScreen& other ) const
-+ { return x_screen != other.x_screen; }
-+
-+ inline bool isValid(void) const { return x_screen >= 0; }
-+};
-+
-+class XineramaInfo {
-+private:
-+ XineramaList screen_list;
-+ ScreenInfo* screen_info;
-+
-+protected:
-+ void getTopBottom( XineramaList& result_list, bool top ) const;
-+
-+ static unsigned long distanceSquared( const Rect& rect, int x, int y );
-+
-+public:
-+ inline XineramaInfo( ScreenInfo* screen ) : screen_info(screen)
-+ { update(); }
-+
-+ inline bool haveXinerama(void) const
-+ { return !screen_list.empty(); }
-+
-+ inline const XineramaList& getScreens(void) const
-+ { return screen_list; }
-+
-+ bool update(void);
-+
-+ XineramaScreen screenContaining( int x, int y ) const;
-+ XineramaScreen screenContaining( const Rect& rect ) const;
-+ XineramaScreen getScreen( int x_screen_number ) const;
-+ XineramaScreen getClosestScreen( int x, int y ) const;
-+
-+ inline void getTopScreens( XineramaList& result_list ) const
-+ { getTopBottom( result_list, true ); }
-+
-+ inline void getBottomScreens( XineramaList& result_list ) const
-+ { getTopBottom( result_list, false ); }
-+};
-+
-+#endif
---- blackbox-0.65.0.orig/util/Makefile.in
-+++ blackbox-0.65.0/util/Makefile.in
-@@ -79,7 +79,7 @@
- bin_PROGRAMS = bsetroot
-
- bsetroot_SOURCES = bsetroot.cc
--bsetroot_LDADD = ../src/BaseDisplay.o ../src/Color.o ../src/GCCache.o ../src/Texture.o ../src/Timer.o ../src/Image.o ../src/ImageControl.o ../src/i18n.o ../src/Util.o
-+bsetroot_LDADD = ../src/BaseDisplay.o ../src/Color.o ../src/GCCache.o ../src/Texture.o ../src/Timer.o ../src/Image.o ../src/ImageControl.o ../src/i18n.o ../src/Util.o ../src/Xinerama.o
-
- MAINTAINERCLEANFILES = Makefile.in
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
---- blackbox-0.65.0.orig/debian/changelog
-+++ blackbox-0.65.0/debian/changelog
-@@ -0,0 +1,188 @@
-+blackbox (0.65.0-5) unstable; urgency=high
-+
-+ * Fixed FTBFS with the missing build dependency on autoconf.
-+ (closes: #291133)
-+
-+ -- Bruno Barrera C. <bruno@debian.org> Tue, 18 Jan 2005 20:22:45 -0300
-+
-+blackbox (0.65.0-4) unstable; urgency=low
-+
-+ * Fixed the string length problem. (closes: #178001)
-+ * Added Xinerama support. (closes: #277517)
-+
-+ -- Bruno Barrera C. <bruno@debian.org> Mon, 17 Jan 2005 23:27:56 -0300
-+
-+blackbox (0.65.0-3) unstable; urgency=low
-+
-+ * Fixed FTBFS with gcc-3.4 (closes: #266642)
-+ * debian/postinst now checks for the correct files to be removed
-+ (blackbox-menu instead Blackbox-menu)
-+
-+ -- Bruno Barrera C. <bruno.barrera@igloo.cl> Fri, 20 Aug 2004 21:44:55 -0400
-+
-+blackbox (0.65.0-2) unstable; urgency=low
-+
-+ * New Maintainer (closes: #259585)
-+ * Corrected menu-method coding (closes: #251237)
-+ * Added a blackbox.desktop file. (closes: #257423)
-+ * Completed the debian/copyright file.
-+
-+ -- Bruno Barrera C. <bruno.barrera@igloo.cl> Fri, 16 Jul 2004 18:26:04 -0400
-+
-+blackbox (0.65.0-1.2) unstable; urgency=low
-+
-+ * Non Maintainer Upload
-+ * Patch by Matt Kraai to solve FTBFS: Closes: #208814.
-+
-+ -- Jesus Climent <jesus.climent@hispalinux.es> Wed, 15 Oct 2003 15:38:53 +0300
-+
-+blackbox (0.65.0-1.1) unstable; urgency=low
-+
-+ * Non Maintainer Upload
-+ * Include <cassert> in src/Window.cc (Closes: #196245)
-+
-+ -- David Pashley <david@davidpashley.com> Tue, 15 Jul 2003 16:36:04 +0200
-+
-+blackbox (0.65.0-1) unstable; urgency=low
-+
-+ * new upstream release
-+ * now has man pages for all binaries, closes: #93427
-+ * newer version of bsetbg behaves much better, closes: #109606
-+ * tilde expansion in blackboxrc and menus is now supported, closes: #139330
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 18 Sep 2002 11:02:00 -0700
-+
-+blackbox (0.65.0-0.pre1) unstable; urgency=low
-+
-+ * temporary deb
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 6 Sep 2002 19:33:37 -0700
-+
-+blackbox (0.62.1-1) unstable; urgency=low
-+
-+ * new upstream release
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 30 Jan 2002 22:17:06 -0800
-+
-+blackbox (0.62.0-1) unstable; urgency=low
-+
-+ * new upstream
-+ * I am now the upstream (-:
-+ * upstream fixes these, Closes: #72254, #103909, #116767
-+ * Documented update-menu and blackbox behaviour (closes: #117386)
-+ * Added README.menu and .style (closes: #81008)
-+ * removed empty dir (closes: #78777)
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 19 Jan 2002 11:22:06 -0800
-+
-+blackbox (0.61.1-1.1) unstable; urgency=low
-+
-+ * NMU
-+ * Fix unsafe temp files in bsetbg. Closes: #102126
-+ * Add class key as needed, printf is a macro as of gcc 3.0. Closes: #105452
-+
-+ -- LaMont Jones <lamont@smallone.fc.hp.com> Sun, 15 Jul 2001 23:29:46 -0600
-+
-+blackbox (0.61.1-1) unstable; urgency=low
-+
-+ * New upstream release
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 9 Oct 2000 10:10:31 -0700
-+
-+blackbox (0.61.0-3) unstable; urgency=low
-+
-+ * Changed menu-method to call x-terminal-emulator instead of xterm
-+ * Closes: #71981
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 20 Sep 2000 11:41:45 -0700
-+
-+blackbox (0.61.0-2) unstable; urgency=low
-+
-+ * removed echo from the postinst
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 31 Aug 2000 11:35:39 -0700
-+
-+blackbox (0.61.0-1) unstable; urgency=low
-+
-+ * New upstream
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 18 Aug 2000 13:29:31 -0700
-+
-+blackbox (0.61.0.20000806-1) unstable; urgency=low
-+
-+ * New upstream
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 7 Aug 2000 10:19:22 -0700
-+
-+blackbox (0.61.0.20000726-2) unstable; urgency=low
-+
-+ * Oops, forgot to re-run autofriends
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 26 Jul 2000 16:39:15 -0700
-+
-+blackbox (0.61.0.20000726-1) unstable; urgency=low
-+
-+ * New upstream beta
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 26 Jul 2000 13:10:07 -0700
-+
-+blackbox (0.60.3-5) unstable; urgency=low
-+
-+ * Fix for improper quoting of rootCommand
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 20 Jul 2000 21:41:11 -0700
-+
-+blackbox (0.60.3-4) unstable; urgency=low
-+
-+ * Bug fix release
-+ * added a CXXFLAGS setting to the rules file. This makes blackbox smaller
-+ and faster.
-+ * Closes: #45298, #55305, #61552, #64615, #64773, #64851, #64969
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 18 Jul 2000 13:01:43 -0700
-+
-+blackbox (0.60.3-3) unstable; urgency=low
-+
-+ * Oops, left the stylesmenu file
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 27 May 2000 19:40:41 -0700
-+
-+blackbox (0.60.3-2) unstable; urgency=low
-+
-+ * Oops, left a call to update-bbstyles
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 26 May 2000 16:12:27 -0700
-+
-+blackbox (0.60.3-1) unstable; urgency=low
-+
-+ * New upstream release
-+ * Changed user style menu to look in ~/.blackbox/styles to match
-+ current practice among style authors
-+ * Cleaned up menu-method script and thus the resulting menu file it
-+ generates
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 26 May 2000 12:08:34 -0700
-+
-+blackbox (0.60.2-2) unstable; urgency=low
-+
-+ * Removed update-styles
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 25 May 2000 14:02:15 -0700
-+
-+blackbox (0.60.2-1) unstable; urgency=low
-+
-+ * New upstream release
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 25 May 2000 12:55:42 -0700
-+
-+blackbox (0.60.0.alpha-2) unstable; urgency=low
-+
-+ * New maintainer
-+
-+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 25 May 2000 11:50:49 -0700
-+
-+blackbox (0.60.0.alpha-1) unstable; urgency=low
-+
-+ * The Alpha release.
-+
-+ -- Brent A. Fulgham <bfulgham@debian.org> Sat, 22 April 2000 13:32:08 -0800
---- blackbox-0.65.0.orig/debian/conffiles
-+++ blackbox-0.65.0/debian/conffiles
-@@ -0,0 +1 @@
-+/etc/menu-methods/blackbox
---- blackbox-0.65.0.orig/debian/control
-+++ blackbox-0.65.0/debian/control
-@@ -0,0 +1,26 @@
-+Source: blackbox
-+Section: x11
-+Priority: optional
-+Build-Depends: autoconf, xlibs-dev, debhelper
-+Maintainer: Bruno Barrera C. <bruno@debian.org>
-+Standards-Version: 3.5.0
-+
-+Package: blackbox
-+Architecture: any
-+Depends: ${shlibs:Depends}
-+Provides: x-window-manager
-+Suggests: menu (>=1.5)
-+Description: Window manager for X
-+ This is a window manager for X. It is similar in many respects to
-+ such popular packages as Window Maker, Enlightenment, and FVWM2. You
-+ might be interested in this package if you are tired of window managers
-+ that are a heavy drain on your system resources, but you still want
-+ an attractive and modern-looking interface.
-+ .
-+ The best part of all is that this program is coded in C++, so it
-+ is even more attractive "under the hood" than it is in service -- no
-+ small feat.
-+ .
-+ If none of this sounds familiar to you, or you want your computer to
-+ look like Microsoft Windows or Apple's OS X, you probably don't want
-+ this package.
---- blackbox-0.65.0.orig/debian/copyright
-+++ blackbox-0.65.0/debian/copyright
-@@ -0,0 +1,37 @@
-+This package was debianized by Brent A. Fulgham bfulgham@debian.org on
-+Thu, 15 Oct 1998 18:17:09 -0700.
-+
-+It was downloaded from http://sf.net/projects/blackboxwm
-+
-+Upstream Authors: Sean 'Shaleh' Perry <shaleh@debian.org>
-+ Brad Hughes <bhughes@trolltech.com>
-+ Jeff Raven <jraven@psu.edu>
-+
-+Copyright:
-+
-+The Regents of the University of California.
-+All rights reserved.
-+
-+Redistribution and use in source and binary forms, with or without
-+modification, are permitted provided that the following conditions
-+are met:
-+1. Redistributions of source code must retain the above copyright
-+ notice, this list of conditions and the following disclaimer.
-+2. Redistributions in binary form must reproduce the above copyright
-+ notice, this list of conditions and the following disclaimer in the
-+ documentation and/or other materials provided with the distribution.
-+3. Neither the name of the University nor the names of its contributors
-+ may be used to endorse or promote products derived from this software
-+ without specific prior written permission.
-+
-+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS `AS IS'' AND
-+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+SUCH DAMAGE.
---- blackbox-0.65.0.orig/debian/dirs
-+++ blackbox-0.65.0/debian/dirs
-@@ -0,0 +1,10 @@
-+etc/menu-methods
-+etc/X11/blackbox
-+usr/bin
-+usr/share/man/man1
-+usr/share/doc
-+usr/share/doc/blackbox
-+usr/share/blackbox
-+usr/share/blackbox/styles
-+usr/share/blackbox/nls
-+usr/share/xsessions
---- blackbox-0.65.0.orig/debian/docs
-+++ blackbox-0.65.0/debian/docs
-@@ -0,0 +1 @@
-+AUTHORS README README.bsetbg data/README.menu data/README.style
---- blackbox-0.65.0.orig/debian/menu
-+++ blackbox-0.65.0/debian/menu
-@@ -0,0 +1,24 @@
-+?package(blackbox):needs="wm" \
-+ section="WindowManagers" title="Blackbox" \
-+ command="/usr/bin/blackbox"
-+?package(blackbox):needs="blackbox" \
-+ section="WindowManagers" title="Exit" \
-+ command="exit"
-+?package(blackbox):needs="blackbox" \
-+ section="WindowManagers" title="Reconfigure" \
-+ command="reconfig"
-+?package(blackbox):needs="blackbox" \
-+ section="WindowManagers" title="Restart" \
-+ command="restart"
-+?package(blackbox):needs="blackbox" \
-+ section="Blackbox/Styles" title="/usr/share/blackbox/styles" \
-+ command="stylesdir"
-+?package(blackbox):needs="blackbox" \
-+ section="Blackbox/Styles" title="~/.blackbox/styles" \
-+ command="stylesdir"
-+?package(blackbox):needs="blackbox" \
-+ section="Blackbox" title="Workspaces" \
-+ command="workspaces"
-+?package(blackbox):needs="blackbox" \
-+ section="Blackbox" title="Configuration" \
-+ command="config"
---- blackbox-0.65.0.orig/debian/menu-method
-+++ blackbox-0.65.0/debian/menu-method
-@@ -0,0 +1,27 @@
-+#!/usr/sbin/install-menu
-+#
-+# Generates blackbox menus for all registered applications.
-+
-+!include menu.h
-+compat="menu-1"
-+outputencoding="LOCALE"
-+
-+genmenu="blackbox-menu"
-+rootprefix="/etc/X11/blackbox/"
-+userprefix=".blackbox/"
-+treewalk="M)"
-+
-+supported
-+ x11= nstring(level(), " ") "[exec] (" esc(title(), "()") ") {" esc($command, "()") "}\n"
-+ wm= nstring(level(), " ") "[restart] (" esc(title(), "()") ") {" esc($command, "()") "}\n"
-+ text= nstring(level(), " ") "[exec] (" esc(title(), "()") ") {" esc(term(), "()") "}\n"
-+blackbox= nstring(level(), " ") "[" esc($command, "()") "] (" esc(title(), "()") ")\n"
-+endsupported
-+
-+preoutput= \
-+ "# Automatically generated file. Do not edit (see /usr/share/doc/menu/README)\n\n[begin] (Debian)\n"
-+
-+startmenu= ""
-+submenutitle= nstring(level(), " ") "[submenu] (" esc(title(),"()") ") {" esc($longtitle,"()") "}\n"
-+endmenu= nstring(level(), " ") "[end]\n"
-+
---- blackbox-0.65.0.orig/debian/postinst
-+++ blackbox-0.65.0/debian/postinst
-@@ -0,0 +1,49 @@
-+#!/bin/sh
-+#
-+# Blackbox postinst
-+#
-+# Shamelessly ripped off of Marcelo Magallon's script
-+# by Brent Fulgham <bfulgham@debian.org>
-+#
-+set -e
-+
-+WMentry="/usr/bin/blackbox"
-+
-+add_wm_entry ()
-+{
-+ update-alternatives --install /usr/bin/x-window-manager x-window-manager $WMentry 50 \
-+ --slave /usr/share/man/man1/x-window-manager.1.gz x-window-manager.1.gz /usr/share/man/man1/blackbox.1.gz
-+}
-+
-+case "$1" in
-+ configure)
-+ if [ "$2" ] && dpkg --compare-versions $2 le 0.51.3-12; then
-+ update-alternatives --remove x-window-manager /etc/X11/window-managers
-+ fi
-+
-+ add_wm_entry
-+
-+ # clean up after eaarlier debs
-+ if [ -f /usr/share/blackbox/styles/stylesmenu ]; then
-+ rm /usr/share/blackbox/styles/stylesmenu
-+ fi
-+
-+ if [ -f /etc/X11/blackbox/blackbox-menu ]; then
-+ rm /etc/X11/blackbox/blackbox-menu
-+ fi
-+
-+ if [ -x /usr/sbin/wm-menu-config ]; then
-+ wm-menu-config blackbox on;
-+ fi
-+ ;;
-+
-+ abort-upgrade|abort-deconfigure|abort-remove)
-+ # how did we get here? Force a non-zero exit code
-+ exit 1
-+ ;;
-+
-+ *)
-+ ;;
-+esac
-+
-+#DEBHELPER#
---- blackbox-0.65.0.orig/debian/postrm
-+++ blackbox-0.65.0/debian/postrm
-@@ -0,0 +1,24 @@
-+#!/bin/sh
-+set -e
-+
-+Blackbox_entry="/usr/bin/blackbox"
-+
-+case "$1" in
-+ purge)
-+ rm -rf /etc/X11/blackbox
-+ ;;
-+ remove)
-+ if [ -x /usr/sbin/wm-menu-config ]; then
-+ wm-menu-config blackbox off
-+ fi
-+
-+ if [ -x /usr/sbin/register-window-manager ] ; then
-+ register-window-manager --remove $Blackbox_entry
-+ fi
-+
-+ ;;
-+ *)
-+ ;;
-+esac
-+
-+#DEBHELPER#
---- blackbox-0.65.0.orig/debian/rules
-+++ blackbox-0.65.0/debian/rules
-@@ -0,0 +1,71 @@
-+#!/usr/bin/make -f
-+# MAde with the aid of dh_make, by Craig Small
-+# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
-+# Some lines taken from debmake, by Cristoph Lameter.
-+
-+# Uncomment this to turn on verbose mode.
-+#export DH_VERBOSE=1
-+
-+PACKAGE=blackbox
-+
-+build: build-stamp
-+build-stamp:
-+ dh_testdir
-+ autoconf
-+ CXXFLAGS="-O2 -fno-rtti -fno-exceptions -fno-check-new" ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc/X11/blackbox
-+
-+ # Add here commands to compile the package.
-+ $(MAKE) DEFAULT_MENU=/etc/X11/blackbox/blackbox-menu
-+
-+ touch build-stamp
-+
-+clean:
-+ dh_testdir
-+ dh_testroot
-+ rm -f build-stamp install-stamp config.log
-+
-+ # Add here commands to clean up after the build process.
-+ -$(MAKE) distclean
-+
-+ dh_clean
-+
-+
-+install: install-stamp
-+install-stamp: build-stamp
-+ dh_testdir
-+ dh_testroot
-+ dh_clean -k
-+ dh_installdirs
-+
-+ # Add here commands to install the package into debian/tmp.
-+ $(MAKE) install DESTDIR=`pwd`/debian/tmp
-+ # make install places a menu here, but we don't want it
-+ rm -f `pwd`/debian/tmp/usr/share/blackbox/menu
-+ cp debian/blackbox.desktop `pwd`/debian/tmp/usr/share/xsessions/
-+ touch install-stamp
-+
-+# Build architecture-independent files here.
-+binary-indep: build install
-+# We have nothing to do by default.
-+
-+# Build architecture-dependent files here.
-+binary-arch: build install
-+ dh_testdir
-+ dh_testroot
-+ dh_installdocs
-+ dh_installmenu
-+ dh_installchangelogs ChangeLog
-+ dh_strip
-+ dh_compress
-+ dh_fixperms
-+ dh_installdeb
-+ dh_shlibdeps
-+ dh_gencontrol
-+ dh_md5sums
-+ dh_builddeb
-+
-+source diff:
-+ @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
-+
-+binary: binary-indep binary-arch
-+.PHONY: build clean binary-indep binary-arch binary
---- blackbox-0.65.0.orig/debian/prerm
-+++ blackbox-0.65.0/debian/prerm
-@@ -0,0 +1,13 @@
-+#!/bin/sh
-+set -e
-+
-+case "$1" in
-+ remove)
-+ update-alternatives --remove x-window-manager /usr/bin/blackbox
-+ ;;
-+ *)
-+ ;;
-+esac
-+
-+#DEBHELPER#
-+
---- blackbox-0.65.0.orig/debian/README.debian
-+++ blackbox-0.65.0/debian/README.debian
-@@ -0,0 +1,9 @@
-+User menus:
-+
-+When update-menus is run as a user it will create ~/.blackbox-menu. You then
-+need to exit blackbox if it is running and edit ~/.blackboxrc. Change the
-+line:
-+
-+session.menuFile: /etc/X11/blackbox/blackbox-menu
-+
-+to point to the new file.
---- blackbox-0.65.0.orig/debian/blackbox.desktop
-+++ blackbox-0.65.0/debian/blackbox.desktop
-@@ -0,0 +1,12 @@
-+[Desktop Entry]
-+Encoding=UTF-8
-+Name=Blackbox
-+Comment=Highly configurable and low resource X11 Window manager
-+Exec=blackbox
-+Terminal=False
-+TryExec=blackbox
-+Type=Application
-+
-+[Window Manager]
-+SessionManaged=true
-+
diff --git a/source/xap/blackbox/xinitrc.blackbox b/source/xap/blackbox/xinitrc.blackbox
index e5822118b..fbe0997be 100644
--- a/source/xap/blackbox/xinitrc.blackbox
+++ b/source/xap/blackbox/xinitrc.blackbox
@@ -3,8 +3,8 @@
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
-sysresources=/usr/lib/X11/xinit/.Xresources
-sysmodmap=/usr/lib/X11/xinit/.Xmodmap
+sysresources=/etc/X11/xinit/.Xresources
+sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
diff --git a/source/xap/blueman/blueman-open b/source/xap/blueman/blueman-open
new file mode 100644
index 000000000..0cfa688fa
--- /dev/null
+++ b/source/xap/blueman/blueman-open
@@ -0,0 +1,114 @@
+#!/bin/sh
+# Blueman Mount Script for Slackware
+# by Zarren Spry & Robby Workman
+# Based on http://kde-apps.org/content/show.php/kde4+bluetooth+files+open?content=108869
+
+# Set to 0 if you want more debugging messages
+DEBUG=1
+
+device_addr="$1"
+device_name="$(hcitool name $device_addr)"
+own_name="$(basename $0)"
+basedir="${basedir:-$HOME/obexfs}"
+mountpoint="${basedir}/${device_addr}"
+browser=${browser:-"xdg-open"}
+
+# If we're running in kde, use kdialog
+if [ "$KDE_FULL_SESSION" = "true" ]; then
+ if which kdialog 1>/dev/null 2>/dev/null; then
+ messagetype="kdialog"
+ fi
+# If not, then see if libnotify is available
+# Even if it is, there may not be a notification daemon running, but there's
+# no good way to check for this, so oh well...
+elif which notify-send 1>/dev/null 2>/dev/null; then
+ messagetype="libnotify"
+# If no libnotify, then use kdialog if it's installed
+elif which kdialog 1>/dev/null 2>/dev/null; then
+ messagetype="kdialog"
+# If all else fails, just don't do notifications
+else
+ messagetype=""
+fi
+
+# Mount function
+mount_device ()
+{
+ [ ! -z $DEBUG ] && logger -i -t $own_name "Attempting to mount device $device_name to $mountpoint..."
+ [ ! -z $DEBUG ] && logger -i -t $own_name "Execute: obexfs -b $device_addr $mountpoint"
+
+ mkdir -p $mountpoint
+ obexfs -b $device_addr $mountpoint 2>&1
+
+ if [ $? != 0 ]; then
+ MSG_TXT="Failed to mount $device_name to $mountpoint. $dbg_msg"
+ FAILZOR=definitely
+ if [ ! -z $DEBUG ]; then
+ logger -i -t $own_name "Failed to mount $device_name to $mountpoint."
+ fi
+ else
+ MSG_TXT="Successfully mounted $device_name to $mountpoint"
+ if [ ! -z $DEBUG ]; then
+ logger -i -t $own_name "Successfully mounted $device_name to $mountpoint."
+ fi
+ fi
+
+ if [ $messagetype == "kdialog" ]; then
+ kdialog --passivepopup "$MSG_TXT" 2
+ elif [ $messagetype == "libnotify" ]; then
+ notify-send --expire-time=20000 --icon=blueman "$MSG_TXT"
+ fi
+
+ [ "$FAILZOR" = "definitely" ] && exit 1
+
+ [ ! -z $DEBUG ] && logger -i -t $own_name "Opening $mountpoint with $browser..."
+ $browser $mountpoint 2>&1
+
+}
+
+# Unmount function
+umount_device ()
+{
+ if grep -qw $mountpoint /proc/mounts 2>/dev/null ; then
+ [ ! -z $DEBUG ] && logger -i -t $own_name \
+ "$mountpoint has something mounted on it already - unmounting it..."
+
+ fusermount -u $mountpoint 1>/dev/null 2>/dev/null
+
+ if [ $? != 0 ]; then
+ [ ! -z $DEBUG ] && logger -i -t $own_name "Failed to unmount $mountpoint with fusermount..."
+ umount -f $mountpoint 1>/dev/null 2>/dev/null
+ if [ $? != 0 ]; then
+ [ ! -z $DEBUG ] && \
+ logger -i -t $own_name \
+ "Failed to unmount $mountpoint with umount - try it manually as root and then start over."
+ FAILZOR=definitely
+ MSG_TXT="Failed to unmount $mountpoint with fusermount and umount - try it as root first."
+ else
+ break
+ fi
+ else
+ [ ! -z $DEBUG ] && logger -i -t $own_name "Successfully unmounted $device_name."
+ fi
+ else
+ [ ! -z $DEBUG ] && logger -i -t $own_name "$mountpoint has nothing mounted on it - continuing..."
+ fi
+
+ if [ $messagetype == "kdialog" ]; then
+ kdialog --passivepopup "$MSG_TXT" 3
+ elif [ $messagetype == "libnotify" ]; then
+ notify-send --expire-time=20000 --icon=blueman "$MSG_TXT"
+ fi
+ [ "$FAILZOR" = "definitely" ] && exit 1
+}
+
+MSG_TXT="Attempting to mount $device_name - please wait..."
+if [ $messagetype == "kdialog" ]; then
+ kdialog --passivepopup "$MSG_TXT" 4
+elif [ $messagetype == "libnotify" ]; then
+ notify-send --expire-time=20000 --icon=blueman "$MSG_TXT"
+fi
+
+umount_device
+mount_device
+
diff --git a/source/xap/blueman/blueman-use_blueman-open_for_obexfs.diff b/source/xap/blueman/blueman-use_blueman-open_for_obexfs.diff
new file mode 100644
index 000000000..542ee6e5d
--- /dev/null
+++ b/source/xap/blueman/blueman-use_blueman-open_for_obexfs.diff
@@ -0,0 +1,12 @@
+diff -Nur blueman-1.21.orig/blueman/Constants.py.in blueman-1.21/blueman/Constants.py.in
+--- blueman-1.21.orig/blueman/Constants.py.in 2009-09-20 05:01:26.000000000 -0500
++++ blueman-1.21/blueman/Constants.py.in 2009-12-13 16:26:29.643850538 -0600
+@@ -10,7 +10,7 @@
+ POLKIT = "@polkit_val@" == "yes"
+ HAL_ENABLED = "@hal_en@" == "yes"
+
+-DEF_BROWSE_COMMAND = "nautilus --browser obex://[%d]"
++DEF_BROWSE_COMMAND = "/usr/libexec/blueman-open %d"
+
+ import os
+ import gettext
diff --git a/source/xap/blueman/blueman.SlackBuild b/source/xap/blueman/blueman.SlackBuild
new file mode 100755
index 000000000..bdb134e0f
--- /dev/null
+++ b/source/xap/blueman/blueman.SlackBuild
@@ -0,0 +1,142 @@
+#!/bin/sh
+
+# Slackware build script for blueman
+
+# Copyright 2009 Robby Workman, Northport, Alabama, USA
+# Copyright 2010 Patrick Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=blueman
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+POLKIT_OPTION=" --disable-polkit "
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Address a couple of bugs that have been fixed in the bzr repo
+zcat $CWD/no_hide_applet.diff.gz | patch -p0 --verbose || exit 1
+zcat $CWD/fix_on_off_loop.diff.gz | patch -p0 --verbose || exit 1
+
+# Use blueman-open, a modified version of this, to browse obexfs shares:
+# http://www.kde-apps.org/content/show.php/kde4+bluetooth+files+open?content=108869
+zcat $CWD/blueman-use_blueman-open_for_obexfs.diff.gz | patch -p1 || exit 1
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
+ --disable-static \
+ --with-dhcp-config=/etc/dhcpd.conf \
+ --enable-hal \
+ $POLKIT_OPTION \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+if echo $POLKIT_OPTION | grep -q '\--disable-polkit' ; then
+ # Remove unneeded junk
+ rm -rf $PKG/usr/share/polkit-1
+fi
+
+# Add the blueman-open script to /usr/libexec for browsing obexfs shares
+# I don't want to put this in PATH and have someone accidentally run it
+mkdir -p $PKG/usr/libexec
+cat $CWD/blueman-open > $PKG/usr/libexec/blueman-open
+chmod 0755 $PKG/usr/libexec/blueman-open
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null || true
+)
+
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+)
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING* INSTALL NEWS README* \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -p -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/xap/blueman/doinst.sh b/source/xap/blueman/doinst.sh
new file mode 100644
index 000000000..17b18ef35
--- /dev/null
+++ b/source/xap/blueman/doinst.sh
@@ -0,0 +1,23 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+
diff --git a/source/xap/blueman/fix_on_off_loop.diff b/source/xap/blueman/fix_on_off_loop.diff
new file mode 100644
index 000000000..ac11c1351
--- /dev/null
+++ b/source/xap/blueman/fix_on_off_loop.diff
@@ -0,0 +1,58 @@
+revno: 602
+committer: walmis
+timestamp: Sun 2009-10-25 15:49:33 +0000
+message:
+ fix bluetooth on/off loop
+
+=== modified file 'blueman/plugins/applet/PowerManager.py'
+--- blueman/plugins/applet/PowerManager.py 2009-10-25 15:16:14 +0000
++++ blueman/plugins/applet/PowerManager.py 2009-10-25 15:49:33 +0000
+@@ -66,22 +66,6 @@
+ dprint("adapter powered on while in off state, turning bluetooth on")
+ self.bluetooth_off = False
+
+-
+- def on_manager_state_changed(self, state):
+- if state:
+- adapters = self.Applet.Manager.ListAdapters()
+- for adapter in adapters:
+- props = adapter.GetProperties()
+- if not props["Powered"]:
+- self.bluetooth_off = True
+- if self.state_change_deferred != -1:
+- break
+- else:
+- return
+-
+- if self.state_change_deferred != -1:
+- self.bluetooth_off = self.state_change_deferred
+- self.state_change_deferred = -1
+
+ def on_bluetooth_toggled(self):
+ self.bluetooth_off = not self.bluetooth_off
+@@ -97,9 +81,17 @@
+
+ return pixbuf
+
++ def process_deferred(self):
++ if self.state_change_deferred != -1:
++ dprint("Setting deferred status")
++ self.bluetooth_off = self.state_change_deferred
++ self.state_change_deferred = -1
++
+ def on_adapter_added(self, path):
+ adapter = Bluez.Adapter(path)
+ def on_ready():
++ self.process_deferred()
++
+ if self.bluetooth_off:
+ adapter.SetProperty("Powered", False)
+ else:
+@@ -134,6 +126,7 @@
+ self.__dict__[key] = value
+
+ if not self.Applet.Manager:
++ dprint("deferring status change")
+ self.state_change_deferred = value
+ return
+
diff --git a/source/xap/blueman/no_hide_applet.diff b/source/xap/blueman/no_hide_applet.diff
new file mode 100644
index 000000000..a57a2b8f9
--- /dev/null
+++ b/source/xap/blueman/no_hide_applet.diff
@@ -0,0 +1,30 @@
+revno: 647
+committer: Valmantas Palikša <walmis@balticum-tv.lt>
+branch nick: trunk
+timestamp: Wed 2009-12-02 21:31:16 +0200
+message:
+ don't force hide the applet if bluez manager is not initialized
+
+=== modified file 'blueman/plugins/applet/StatusIcon.py'
+--- blueman/plugins/applet/StatusIcon.py 2009-10-27 16:10:53 +0000
++++ blueman/plugins/applet/StatusIcon.py 2009-12-02 19:31:16 +0000
+@@ -55,15 +55,16 @@
+ self.Query()
+
+ def Query(self):
+- if not self.Applet.Manager:
+- self.props.visible = False
+- return
+
+ rets = self.Applet.Plugins.Run("on_query_status_icon_visibility")
+ if not StatusIcon.FORCE_HIDE in rets:
+ if StatusIcon.FORCE_SHOW in rets:
+ self.props.visible = True
+ else:
++ if not self.Applet.Manager:
++ self.props.visible = False
++ return
++
+ try:
+ if self.Applet.Manager.ListAdapters() == []:
+ self.props.visible = False
diff --git a/source/xap/blueman/slack-desc b/source/xap/blueman/slack-desc
new file mode 100644
index 000000000..d9b80088d
--- /dev/null
+++ b/source/xap/blueman/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+blueman: Blueman (Graphical Bluetooth Manager)
+blueman:
+blueman: Blueman is a GTK+ Bluetooth Manager for tasks such as:
+blueman:
+blueman: - Connecting to 3G/EDGE/GPRS via DUN profile.
+blueman: - Connecting to/Creating bluetooth networks
+blueman: - Connecting to input and audio devices
+blueman: - Sending/Receiving/Browsing files via OBEX
+blueman: - Pairing
+blueman:
+blueman: Homepage: http://blueman-project.org
diff --git a/source/xap/electricsheep/electricsheep.SlackBuild b/source/xap/electricsheep/electricsheep.SlackBuild
index 1ed540cdd..69ab99d02 100755
--- a/source/xap/electricsheep/electricsheep.SlackBuild
+++ b/source/xap/electricsheep/electricsheep.SlackBuild
@@ -34,8 +34,17 @@
PRGNAM=electricsheep
VERSION=${VERSION:-20090306}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
# Where do we look for sources?
SRCDIR=$(cd $(dirname $0); pwd)
@@ -116,6 +125,9 @@ case "$ARCH" in
armel) SLKCFLAGS="-O2 -march=armv4t"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
;;
+ *) SLKCFLAGS="-O2"
+ SLKLDFLAGS=""; LIBDIRSUFFIX=""
+ ;;
esac
# Create working directories:
diff --git a/source/xap/fluxbox/fluxbox.SlackBuild b/source/xap/fluxbox/fluxbox.SlackBuild
index bb0f03639..9685e3f6a 100755
--- a/source/xap/fluxbox/fluxbox.SlackBuild
+++ b/source/xap/fluxbox/fluxbox.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,22 +22,38 @@
VERSION=1.1.1
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-fluxbox
+
rm -rf $PKG
mkdir -p $TMP $PKG
diff --git a/source/xap/fluxbox/xinitrc.fluxbox b/source/xap/fluxbox/xinitrc.fluxbox
index d04675a98..593875db4 100644
--- a/source/xap/fluxbox/xinitrc.fluxbox
+++ b/source/xap/fluxbox/xinitrc.fluxbox
@@ -3,8 +3,8 @@
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
-sysresources=/usr/lib/X11/xinit/.Xresources
-sysmodmap=/usr/lib/X11/xinit/.Xmodmap
+sysresources=/etc/X11/xinit/.Xresources
+sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
diff --git a/source/xap/geeqie/doinst.sh b/source/xap/geeqie/doinst.sh
new file mode 100644
index 000000000..c9177adda
--- /dev/null
+++ b/source/xap/geeqie/doinst.sh
@@ -0,0 +1,7 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database usr/share/applications >/dev/null 2>&1
+fi
+#if [ -x /usr/bin/gtk-update-icon-cache ]; then
+# /usr/bin/gtk-update-icon-cache -f -t usr/share/icons/hicolor > /dev/null 2>&1
+#fi
+
diff --git a/source/xap/geeqie/geeqie.SlackBuild b/source/xap/geeqie/geeqie.SlackBuild
new file mode 100755
index 000000000..55b0b69d6
--- /dev/null
+++ b/source/xap/geeqie/geeqie.SlackBuild
@@ -0,0 +1,121 @@
+#!/bin/sh
+
+# Copyright 2010 Patrick Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Modified by the SlackBuilds.org project
+
+
+PKGNAM=geeqie
+VERSION=1.0
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --program-prefix="" \
+ --program-suffix="" \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install-strip DESTDIR=$PKG || exit 1
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+mv $PKG/usr/share/doc/$PKGNAM-$VERSION/* $PKG/usr/doc/$PKGNAM-$VERSION
+rm -r $PKG/usr/share/doc
+cp -a \
+ AUTHORS COPYING* INSTALL NEWS README* TODO \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/xap/geeqie/slack-desc b/source/xap/geeqie/slack-desc
new file mode 100644
index 000000000..cadbd7745
--- /dev/null
+++ b/source/xap/geeqie/slack-desc
@@ -0,0 +1,20 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+geeqie: geeqie (Geeqie image viewer)
+geeqie:
+geeqie: Geeqie is an interactive GTK based image viewer that supports multiple
+geeqie: image formats, zooming, panning, thumbnails, and sorting images into
+geeqie: collections.
+geeqie:
+geeqie: Homepage: http://geeqie.sourceforge.net
+geeqie:
+geeqie:
+geeqie:
+geeqie:
+geeqie:
diff --git a/source/xap/gimp/gimp.SlackBuild b/source/xap/gimp/gimp.SlackBuild
index ef001a681..377f519ca 100755
--- a/source/xap/gimp/gimp.SlackBuild
+++ b/source/xap/gimp/gimp.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.6.6
-ARCH=${ARCH:-x86_64}
+VERSION=2.6.8
BUILD=${BUILD:-2}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
@@ -46,8 +55,11 @@ fi
cd $TMP
rm -rf gimp-$VERSION
-tar xvf $CWD/gimp-$VERSION.tar.bz2 || exit 1
+tar xvf $CWD/gimp-$VERSION.tar.?z* || exit 1
cd gimp-$VERSION || exit 1
+
+zcat $CWD/gimp.png14.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -94,6 +106,14 @@ cp -a \
done
)
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
diff --git a/source/xap/gimp/gimp.png14.diff b/source/xap/gimp/gimp.png14.diff
new file mode 100644
index 000000000..5af06d6e3
--- /dev/null
+++ b/source/xap/gimp/gimp.png14.diff
@@ -0,0 +1,19 @@
+--- ./plug-ins/file-ico/ico-load.c.orig 2009-07-20 15:20:51.000000000 -0500
++++ ./plug-ins/file-ico/ico-load.c 2010-02-15 22:54:44.000000000 -0600
+@@ -287,14 +287,14 @@
+ switch (color_type)
+ {
+ case PNG_COLOR_TYPE_GRAY:
+- png_set_gray_1_2_4_to_8 (png_ptr);
++ png_set_expand_gray_1_2_4_to_8 (png_ptr);
+ if ( bit_depth == 16 )
+ png_set_strip_16 (png_ptr);
+ png_set_gray_to_rgb (png_ptr);
+ png_set_add_alpha (png_ptr, 0xff, PNG_FILLER_AFTER);
+ break;
+ case PNG_COLOR_TYPE_GRAY_ALPHA:
+- png_set_gray_1_2_4_to_8 (png_ptr);
++ png_set_expand_gray_1_2_4_to_8 (png_ptr);
+ if ( bit_depth == 16 )
+ png_set_strip_16 (png_ptr);
+ png_set_gray_to_rgb (png_ptr);
diff --git a/source/xap/gkrellm/gkrellm.SlackBuild b/source/xap/gkrellm/gkrellm.SlackBuild
index 222f2567e..f5243b755 100755
--- a/source/xap/gkrellm/gkrellm.SlackBuild
+++ b/source/xap/gkrellm/gkrellm.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,11 +20,20 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.3.2
-PKGVER=2.3.2
-ARCH=${ARCH:-x86_64}
+VERSION=2.3.4
+PKGVER=2.3.4
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
else
@@ -82,6 +91,14 @@ cp -a \
COPYRIGHT CREDITS INSTALL README Themes.html \
$PKG/usr/doc/gkrellm-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/gkrellm-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
gzip -9 $PKG/usr/man/man?/*.?
mkdir -p $PKG/install
@@ -105,9 +122,17 @@ cp gkrellm-countdown.so $PKG/usr/lib${LIBDIRSUFFIX}/gkrellm2/plugins
mkdir -p $PKG/usr/doc/gkrellm-countdown-$COUNTDOWN
cp -a \
- COPYING ChangeLog README \
+ COPYING README \
$PKG/usr/doc/gkrellm-countdown-$COUNTDOWN
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/gkrellm-countdown-$COUNTDOWN)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
diff --git a/source/xap/gnuchess/eboard.assert.diff b/source/xap/gnuchess/eboard.assert.diff
new file mode 100644
index 000000000..182359318
--- /dev/null
+++ b/source/xap/gnuchess/eboard.assert.diff
@@ -0,0 +1,41 @@
+--- ./ntext.cc.orig 2008-02-22 09:51:22.000000000 -0600
++++ ./ntext.cc 2010-02-19 21:53:58.000000000 -0600
+@@ -33,6 +33,7 @@
+ #include <gtk/gtkselection.h>
+ #include "ntext.h"
+ #include "global.h"
++#include <assert.h>
+
+ NLine::NLine() {
+ Text = NULL;
+@@ -238,23 +239,27 @@
+ int i;
+ NLine *nl;
+ char *p;
++ char *s;
+
+ if (len < 0) {
+ discardExcess();
+ return;
+ }
+
+- p = strchr(text, '\n');
++ s = strdup(text);
++ assert(s != NULL);
++ p = strchr(s, '\n');
+ if (p!=NULL) {
+ *p = 0;
+- i = strlen(text);
+- nl = new NLine(text, color);
++ i = strlen(s);
++ nl = new NLine(s, color);
+ *p = '\n';
+ lines.push_back(nl);
+ formatLine(lines.size()-1);
+ append(&p[1], len-(i+1), color);
+ return;
+ }
++ free (s);
+
+ // if search for \n failed, this is a single line
+ nl = new NLine(text, color);
diff --git a/source/xap/gnuchess/gnuchess.SlackBuild b/source/xap/gnuchess/gnuchess.SlackBuild
index 2b236ae40..99cb5c067 100755
--- a/source/xap/gnuchess/gnuchess.SlackBuild
+++ b/source/xap/gnuchess/gnuchess.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,10 +23,19 @@
VERGNUCHESS=5.07
VERSJENG=11.2
-VEREBOARD=1.0.3
-VERXBOARD=4.2.7
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-4}
+VEREBOARD=1.1.1
+VERXBOARD=4.4.2
+BUILD=${BUILD:-5}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -36,6 +45,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
@@ -52,6 +63,7 @@ tar xvf $CWD/gnuchess-$VERGNUCHESS.tar.bz2 || exit 1
cd gnuchess-$VERGNUCHESS || exit 1
# make gnuchess compile with gcc4
zcat $CWD/gnuchess.gcc4_fix.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+zcat $CWD/gnuchess.getline.glibc.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -101,6 +113,7 @@ cd $TMP
rm -rf eboard-$VEREBOARD
tar xvf $CWD/eboard-$VEREBOARD.tar.bz2 || exit 1
cd eboard-$VEREBOARD || exit 1
+zcat $CWD/eboard.assert.diff.gz | patch -p1 --verbose || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -122,7 +135,7 @@ cp -a \
### XBoard
cd $TMP
rm -rf xboard-$VERXBOARD
-tar xvf $CWD/xboard-$VERXBOARD.tar.bz2 || exit 1
+tar xvf $CWD/xboard-$VERXBOARD.tar.?z* || exit 1
cd xboard-$VERXBOARD || exit 1
chown -R root:root .
find . \
@@ -132,10 +145,10 @@ find . \
-exec chmod 644 {} \;
# --infodir is fubar.
-zcat $CWD/xboard.infodir.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+#zcat $CWD/xboard.infodir.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
# Taken from Debian to fix CVE-2004-2552
# FOR WHICH THERE IS NO ATTACK VECTOR!!!
-zcat $CWD/xboard.buffer_overflow_fix.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+#zcat $CWD/xboard.buffer_overflow_fix.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
diff --git a/source/xap/gnuchess/gnuchess.getline.glibc.diff b/source/xap/gnuchess/gnuchess.getline.glibc.diff
new file mode 100644
index 000000000..51a45df1d
--- /dev/null
+++ b/source/xap/gnuchess/gnuchess.getline.glibc.diff
@@ -0,0 +1,39 @@
+--- ./src/input.c.orig 2010-02-19 21:34:10.000000000 -0600
++++ ./src/input.c 2010-02-19 21:36:33.000000000 -0600
+@@ -127,7 +127,7 @@
+ (RealGameCnt+1)/2 + 1 );
+ }
+ pthread_mutex_lock(&input_mutex);
+- getline(prompt);
++ chess_getline(prompt);
+ input_status = INPUT_AVAILABLE;
+ pthread_cond_signal(&input_cond);
+ pthread_mutex_unlock(&input_mutex);
+@@ -173,13 +173,13 @@
+ {
+ #ifdef HAVE_LIBREADLINE
+ if (isatty(STDIN_FILENO)) {
+- getline = getline_readline;
++ chess_getline = getline_readline;
+ using_history();
+ } else {
+- getline = getline_standard;
++ chess_getline = getline_standard;
+ }
+ #else
+- getline = getline_standard;
++ chess_getline = getline_standard;
+ #endif
+ /* Start input thread */
+ pthread_create(&input_thread, NULL, input_func, NULL);
+--- ./src/common.h.orig 2003-06-30 06:28:38.000000000 -0500
++++ ./src/common.h 2010-02-19 21:35:33.000000000 -0600
+@@ -745,7 +745,7 @@
+ * Input routine, initialized to one of the specific
+ * input routines. The given argument is the prompt.
+ */
+-void (*getline) (char *);
++void (*chess_getline) (char *);
+
+ #define MAXSTR 128
+ extern char inputstr[MAXSTR];
diff --git a/source/xap/gnuchess/xboard.buffer_overflow_fix.diff b/source/xap/gnuchess/xboard.buffer_overflow_fix.diff
deleted file mode 100644
index f36d36bad..000000000
--- a/source/xap/gnuchess/xboard.buffer_overflow_fix.diff
+++ /dev/null
@@ -1,95 +0,0 @@
-#! /bin/sh /usr/share/dpatch/dpatch-run
-## 09_fix_-icshost_buffer_overflow.dpatch by Florian Ernst <florian@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Of minor importance, though, as there is probably no attack vector
-## DP: See bug#343560
-
-@DPATCH@
-diff -urNad xboard-4.2.7~/backend.c xboard-4.2.7/backend.c
---- xboard-4.2.7~/backend.c 2003-11-28 10:37:36.000000000 +0100
-+++ xboard-4.2.7/backend.c 2005-12-16 22:19:16.000000000 +0100
-@@ -692,7 +692,7 @@
- sprintf(buf, "Could not open comm port %s",
- appData.icsCommPort);
- } else {
-- sprintf(buf, "Could not connect to host %s, port %s",
-+ snprintf(buf, sizeof(buf), "Could not connect to host %s, port %s",
- appData.icsHost, appData.icsPort);
- }
- DisplayFatalError(buf, err, 1);
-@@ -869,18 +869,18 @@
- } else if (*appData.gateway != NULLCHAR) {
- if (*appData.remoteShell == NULLCHAR) {
- /* Use the rcmd protocol to run telnet program on a gateway host */
-- sprintf(buf, "%s %s %s",
-+ snprintf(buf, sizeof(buf), "%s %s %s",
- appData.telnetProgram, appData.icsHost, appData.icsPort);
- return OpenRcmd(appData.gateway, appData.remoteUser, buf, &icsPR);
-
- } else {
- /* Use the rsh program to run telnet program on a gateway host */
- if (*appData.remoteUser == NULLCHAR) {
-- sprintf(buf, "%s %s %s %s %s", appData.remoteShell,
-+ snprintf(buf, sizeof(buf), "%s %s %s %s %s", appData.remoteShell,
- appData.gateway, appData.telnetProgram,
- appData.icsHost, appData.icsPort);
- } else {
-- sprintf(buf, "%s %s -l %s %s %s %s",
-+ snprintf(buf, sizeof(buf), "%s %s -l %s %s %s %s",
- appData.remoteShell, appData.gateway,
- appData.remoteUser, appData.telnetProgram,
- appData.icsHost, appData.icsPort);
-@@ -1684,7 +1684,7 @@
-
- if (loggedOn && !have_set_title && ics_handle[0] != NULLCHAR) {
- char buf[MSG_SIZ];
-- sprintf(buf, "%s@%s", ics_handle, appData.icsHost);
-+ snprintf(buf, sizeof(buf), "%s@%s", ics_handle, appData.icsHost);
- DisplayIcsInteractionTitle(buf);
- have_set_title = TRUE;
- }
-@@ -4882,7 +4882,7 @@
- SendToProgram(buf, cps);
- }
- if (cps->sendICS) {
-- sprintf(buf, "ics %s\n", appData.icsActive ? appData.icsHost : "-");
-+ snprintf(buf, sizeof(buf), "ics %s\n", appData.icsActive ? appData.icsHost : "-");
- SendToProgram(buf, cps);
- }
- cps->maybeThinking = FALSE;
-diff -urNad xboard-4.2.7~/xboard.c xboard-4.2.7/xboard.c
---- xboard-4.2.7~/xboard.c 2003-11-19 09:42:18.000000000 +0100
-+++ xboard-4.2.7/xboard.c 2005-12-16 22:19:16.000000000 +0100
-@@ -6734,8 +6734,8 @@
- strcpy(icon, text);
- strcpy(title, text);
- } else if (appData.icsActive) {
-- sprintf(icon, "%s", appData.icsHost);
-- sprintf(title, "%s: %s", programName, appData.icsHost);
-+ snprintf(icon, sizeof(icon), "%s", appData.icsHost);
-+ snprintf(title, sizeof(title), "%s: %s", programName, appData.icsHost);
- } else if (appData.cmailGameName[0] != NULLCHAR) {
- sprintf(icon, "%s", "CMail");
- sprintf(title, "%s: %s", programName, "CMail");
-@@ -6804,7 +6804,7 @@
- } else {
- fprintf(stderr, "%s: %s: %s\n",
- programName, message, strerror(error));
-- sprintf(buf, "%s: %s", message, strerror(error));
-+ snprintf(buf, sizeof(buf), "%s: %s", message, strerror(error));
- message = buf;
- }
- if (appData.popupExitMessage && boardWidget && XtIsRealized(boardWidget)) {
-@@ -7488,9 +7488,9 @@
- char cmdLine[MSG_SIZ];
-
- if (port[0] == NULLCHAR) {
-- sprintf(cmdLine, "%s %s", appData.telnetProgram, host);
-+ snprintf(cmdLine, sizeof(cmdLine), "%s %s", appData.telnetProgram, host);
- } else {
-- sprintf(cmdLine, "%s %s %s", appData.telnetProgram, host, port);
-+ snprintf(cmdLine, sizeof(cmdLine), "%s %s %s", appData.telnetProgram, host, port);
- }
- return StartChildProcess(cmdLine, "", pr);
- }
diff --git a/source/xap/gnuchess/xboard.infodir.diff b/source/xap/gnuchess/xboard.infodir.diff
deleted file mode 100644
index 5c18bb026..000000000
--- a/source/xap/gnuchess/xboard.infodir.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./Makefile.in.orig 2003-11-28 13:12:57.000000000 -0800
-+++ ./Makefile.in 2004-06-26 15:47:07.000000000 -0700
-@@ -21,7 +21,7 @@
- # Yuck; the autoconf generated configure script sets an infodir variable
- # and provides a command-line flag to change it, but the default is
- # /usr/info instead of /usr/share/info.
--infodir = $(prefix)/share/info
-+infodir = /usr/info
-
- CC = @CC@
- CFLAGS = @CFLAGS@ @CPPFLAGS@ -DINFODIR=\"$(infodir)\"
diff --git a/source/xap/gnuplot/gnuplot.SlackBuild b/source/xap/gnuplot/gnuplot.SlackBuild
index f154e16d8..180336830 100755
--- a/source/xap/gnuplot/gnuplot.SlackBuild
+++ b/source/xap/gnuplot/gnuplot.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=4.2.5
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+VERSION=4.2.6
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -35,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
diff --git a/source/xap/gqview/doinst.sh b/source/xap/gqview/doinst.sh
deleted file mode 100644
index 31da22647..000000000
--- a/source/xap/gqview/doinst.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database usr/share/applications >/dev/null 2>&1
-fi
-if [ -x /usr/bin/gtk-update-icon-cache ]; then
- /usr/bin/gtk-update-icon-cache -f -t usr/share/icons/hicolor > /dev/null 2>&1
-fi
-
diff --git a/source/xap/gqview/gqview.SlackBuild b/source/xap/gqview/gqview.SlackBuild
deleted file mode 100755
index 74e0a3a97..000000000
--- a/source/xap/gqview/gqview.SlackBuild
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/bin/sh
-
-# Copyright 2006 Robby Workman (http://rlworkman.net)
-# Copyright 2007, 2009 Patrick Volkerding, Sebeka, MN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Modified by the SlackBuilds.org project
-
-
-PRGNAM=gqview
-VERSION=2.1.5
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686"
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
-rm -rf $PKG
-mkdir -p $TMP $PKG
-
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
-chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --program-prefix="" \
- --program-suffix="" \
- --build=i486-slackware-linux
-
-make $NUMJOBS || make || exit 1
-make install-strip DESTDIR=$PKG || exit 1
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-mv $PKG/usr/share/doc/$PRGNAM-$VERSION/* $PKG/usr/doc/$PRGNAM-$VERSION
-rm -r $PKG/usr/share/doc
-
-# Compress and if needed symlink the man pages:
-if [ -d $PKG/usr/man ]; then
- ( cd $PKG/usr/man
- for manpagedir in $(find . -type d -name "man*") ; do
- ( cd $manpagedir
- for eachpage in $( find . -type l -maxdepth 1) ; do
- ln -s $( readlink $eachpage ).gz $eachpage.gz
- rm $eachpage
- done
- gzip -9 *.?
- )
- done
- )
-fi
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
-
diff --git a/source/xap/gqview/slack-desc b/source/xap/gqview/slack-desc
deleted file mode 100644
index d6a6ceab4..000000000
--- a/source/xap/gqview/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-gqview: gqview (GQview Image Browser)
-gqview:
-gqview: GQview is an image browser that features single-click access to view
-gqview: images and move around the directory tree.
-gqview:
-gqview: Homepage: http://gqview.sourceforge.net/
-gqview:
-gqview:
-gqview:
-gqview:
-gqview:
diff --git a/source/xap/gucharmap/gucharmap.SlackBuild b/source/xap/gucharmap/gucharmap.SlackBuild
index 36f526148..f95766621 100755
--- a/source/xap/gucharmap/gucharmap.SlackBuild
+++ b/source/xap/gucharmap/gucharmap.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,10 +21,19 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=${VERSION:-2.26.2}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo gucharmap-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -84,6 +96,14 @@ cp -a \
COPYING* NEWS README TODO \
$PKG/usr/doc/gucharmap-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/xap/gv/gv.SlackBuild b/source/xap/gv/gv.SlackBuild
index d28abd8ed..b30eb321c 100755
--- a/source/xap/gv/gv.SlackBuild
+++ b/source/xap/gv/gv.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,19 @@
PKGNAM=gv
-VERSION=${VERSION:-3.6.7}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
CWD=$(pwd)
@@ -40,6 +49,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
cd $TMP
@@ -101,11 +112,18 @@ fi
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- AUTHORS COPYING INSTALL NEWS README \
+ AUTHORS COPYING* INSTALL NEWS README* \
$PKG/usr/doc/${PKGNAM}-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
-#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
diff --git a/source/xap/imagemagick/imagemagick.SlackBuild b/source/xap/imagemagick/imagemagick.SlackBuild
index cfa074977..eb285daf4 100755
--- a/source/xap/imagemagick/imagemagick.SlackBuild
+++ b/source/xap/imagemagick/imagemagick.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,11 +20,35 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
BUILD=${BUILD:-1}
+# NOTE: This is to cope with ImageMagick version numbers such as 5.4.7-4,
+# which occur fairly often (but not always). If these numbers are all the same,
+# then this is not one of those versions.
+
+# This is a bit messy, so we'll explain it well. :-)
+
+# This is the base version number, which is needed to cd into the source tree
+BASEVER=6.5.9-6
+
+# This is the version number used in the source tarball filename
+FILEVER=6.5.9-6
+
+# This is the version number used in the package, where a version number cannot
+# contain a '-'
+PKGVER=6.5.9_6
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -35,6 +59,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -43,22 +70,6 @@ PKG=$TMP/package-imagemagick
rm -rf $PKG
mkdir -p $TMP $PKG
-# NOTE: This is to cope with ImageMagick version numbers such as 5.4.7-4,
-# which occur fairly often (but not always). If these numbers are all the same,
-# then this is not one of those versions.
-
-# This is a bit messy, so we'll explain it well. :-)
-
-# This is the base version number, which is needed to cd into the source tree
-BASEVER=6.5.3-3
-
-# This is the version number used in the source tarball filename
-FILEVER=6.5.3-3
-
-# This is the version number used in the package, where a version number cannot
-# contain a '-'
-PKGVER=6.5.3_3
-
# --with-x or not --with-x, that is the question. It seems many other
# distributions don't compile with X support, but it's been traditional
# here. I am moving the prefix to /usr (instead of /usr/X11R6) though,
@@ -132,6 +143,14 @@ cp -a \
AUTHORS LICENSE NEWS NOTICE Platforms.txt QuickStart.txt README.txt \
$PKG/usr/doc/Imag*
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild b/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
index 22dfb33bd..4de240384 100755
--- a/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
+++ b/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -26,11 +26,19 @@
# This is a source build script. Unfortunately, there is no official
# binary tarball available for x86_64
-VERSION=${VERSION:-3.5.2}
-ARCH=${ARCH:-x86_64}
+VERSION=$(basename $(ls firefox-*.tar.bz2 | cut -d - -f 2 | rev | cut -f 3- -d . | rev) .source)
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
BUILD=${BUILD:-1}
-MOZVERS=${MOZVERS:-1.9.1}
+MOZVERS=${MOZVERS:-1.9.2}
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -61,7 +69,7 @@ mkdir -p $TMP $PKG/usr/lib${LIBDIRSUFFIX}
cd $TMP
rm -rf mozilla-$MOZVERS
-tar xvf $CWD/firefox-$VERSION-source.tar.bz2 || exit 1
+tar xvf $CWD/firefox-$VERSION.source.tar.bz2 || exit 1
cd mozilla-$MOZVERS || exit 1
# Fix a long standing bug that's prevented staying current on GTK+.
diff --git a/source/xap/mozilla-thunderbird/mimeTypes.rdf b/source/xap/mozilla-thunderbird/mimeTypes.rdf
new file mode 100644
index 000000000..366df44bc
--- /dev/null
+++ b/source/xap/mozilla-thunderbird/mimeTypes.rdf
@@ -0,0 +1,113 @@
+<?xml version="1.0"?>
+
+<!--
+ This file is used as a persistent data store for helper application
+ information about both MIME type and protocol scheme helpers.
+
+ The root of the data are the two containers
+ <RDF:Seq about="urn:mimetypes:root"/> and <RDF:Seq about="urn:schemes:root"/>.
+
+ These contain one <RDF:li/> entry per MIME type/protocol. Each <RDF:li/> entry
+ corresponds to a "urn:<class>:<type>" resource, where <class> is either
+ "mimetype" or "scheme" and <type> is either a MIME type in "major/minor" format
+ or a scheme. For example, for HTML we would have "urn:mimetype:text/html",
+ while for mailto: we would have "urn:scheme:mailto".
+
+ Typically, this resource will be in the <RDF:Description/> node which has the
+ corresponding "about" attribute.
+
+ Each "urn:<class>:<type>" resource can have the following properties:
+
+ NC:Value - the MIME type or scheme string
+ NC:editable - a "true" or "false" depending on whether this entry is
+ editable
+ NC:description - a description of the type ("HTML Document" for text/html)
+ NC:fileExtensions - for MIME types, there will be one of these properties
+ per extension that corresponds to this MIME type,
+ each one having a single extension as its value.
+ NC:handlerProp - the way the type should be handled. This corresponds to a
+ "urn:<class>:handler:<type>" resource. Eg, the way HTML is
+ handled would be stored in the
+ "urn:mimetype:handler:text/html" resource.
+
+ Each "urn:<class>:handler:<type>" resource can have the following properties:
+
+ NC:useSystemDefault - "true" if we should handle per default OS setting,
+ "false" or not set otherwise
+ NC:saveToDisk - "true" if the data should be saved to disk, "false" or not
+ set otherwise.
+ (Note - if both of these are false, that means "open in helper app")
+ NC:alwaysAsk - "true" if the user should always be prompted before handling
+ data of this type, false otherwise.
+ NC:externalApplication - the preferred helper application to use for this
+ type. This corresponds to a
+ "urn:<class>:externalApplication:<type>" resource.
+ NC:possibleApplication - a helper application that can be used for this type.
+ Since there can be multiple possible applications,
+ there can be multiple assertions in the graph with
+ this property for a given handler resource.
+
+ Each "urn:<class>:externalApplication:<type>" resource, and each resource
+ that represents a possible application, can have the following property:
+
+ NC:prettyName - the "pretty name" of the application ("Acrobat Reader" for
+ /usr/bin/acroread, eg).
+
+ If the resource represents a local application, then it can have the following
+ property:
+
+ NC:path - the path to the application on the local filesystem, for example
+ /usr/bin/test or C:\windows\system32\cmd.exe.
+
+ If the resource represents a web application, then it can have the following
+ property:
+
+ NC:uriTemplate - a URI pointing to the web application to which the type
+ should be handed off, with %s in the template representing
+ the place where the content should be inserted. For example,
+ here is a URI template for a service that lets you email
+ an address in a mailto: link:
+ http://www.example.com/sendmail?link=%s
+-->
+
+<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:NC="http://home.netscape.com/NC-rdf#">
+
+ <RDF:Description about="urn:mimetypes">
+ <NC:MIME-types>
+ <RDF:Seq about="urn:mimetypes:root">
+ </RDF:Seq>
+ </NC:MIME-types>
+ </RDF:Description>
+
+ <RDF:Description RDF:about="urn:scheme:handler:http"
+ NC:alwaysAsk="false">
+ <NC:externalApplication RDF:resource="urn:scheme:externalApplication:http"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:scheme:externalApplication:http"
+ NC:prettyName="firefox"
+ NC:path="/usr/bin/firefox" />
+ <RDF:Description RDF:about="urn:schemes">
+ <NC:Protocol-Schemes RDF:resource="urn:schemes:root"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:scheme:http"
+ NC:value="http">
+ <NC:handlerProp RDF:resource="urn:scheme:handler:http"/>
+ </RDF:Description>
+
+ <RDF:Description RDF:about="urn:scheme:handler:https"
+ NC:alwaysAsk="false">
+ <NC:externalApplication RDF:resource="urn:scheme:externalApplication:https"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:scheme:externalApplication:https"
+ NC:prettyName="firefox"
+ NC:path="/usr/bin/firefox" />
+ <RDF:Description RDF:about="urn:schemes">
+ <NC:Protocol-Schemes RDF:resource="urn:schemes:root"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:scheme:https"
+ NC:value="https">
+ <NC:handlerProp RDF:resource="urn:scheme:handler:https"/>
+ </RDF:Description>
+
+</RDF:RDF>
diff --git a/source/xap/mozilla-thunderbird/mozilla-thunderbird-firefox.diff b/source/xap/mozilla-thunderbird/mozilla-thunderbird-firefox.diff
deleted file mode 100644
index fdf20963d..000000000
--- a/source/xap/mozilla-thunderbird/mozilla-thunderbird-firefox.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./defaults/pref/all-thunderbird.js.orig 2005-10-25 22:03:39.000000000 -0500
-+++ ./defaults/pref/all-thunderbird.js 2005-12-09 16:22:00.000000000 -0600
-@@ -440,3 +440,8 @@
-
- // prevent status-bar spoofing even if people are foolish enough to turn on JS
- pref("dom.disable_window_status_change", true);
-+
-+// Use Firefox as the default for http:// and https:// links
-+pref("network.protocol-handler.app.http", "/usr/bin/firefox");
-+pref("network.protocol-handler.app.https", "/usr/bin/firefox");
-+
diff --git a/source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild b/source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild
index 9872927db..0a521dd70 100755
--- a/source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild
+++ b/source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,21 +23,42 @@
# Thanks to the folks at the Mozilla Foundation for permission to
# distribute this, and for all the great work! :-)
-VERSION=2.0.0.23
-ARCH=${ARCH:-x86_64}
+# This is a source build script. Unfortunately, there is no official
+# binary tarball available for x86_64
+
+VERSION=$(basename $(ls thunderbird-*.tar.bz2 | cut -d - -f 2 | rev | cut -f 3- -d . | rev) .source)
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
BUILD=${BUILD:-1}
+MOZVERS=${MOZVERS:-1.9.1}
+
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Try to be gentle to the compiler, no optimizations:
if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-Os -march=i486 -mcpu=i686"
+ SLKCFLAGS="-O"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-Os"
+ SLKCFLAGS="-O"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-Os -fPIC"
+ SLKCFLAGS="-O -fPIC"
LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "arm" ]; then
+ SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "armel" ]; then
+ SLKCFLAGS="-O2 -march=armv4t"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -45,12 +66,23 @@ TMP=${TMP:-/tmp}
PKG=$TMP/package-mozilla-thunderbird
rm -rf $PKG
-mkdir -p $TMP $PKG
+mkdir -p $TMP $PKG/usr/lib${LIBDIRSUFFIX}
cd $TMP
-rm -rf mozilla
-tar xvf $CWD/thunderbird-$VERSION-source.tar.bz2 || exit 1
-cd mozilla || exit 1
+rm -rf comm-$MOZVERS
+tar xvf $CWD/thunderbird-$VERSION.source.tar.bz2 || exit 1
+cd comm-$MOZVERS || exit 1
+
+# Fix a long standing bug that's prevented staying current on GTK+.
+# Thanks to the BLFS folks. :-)
+cat << EOF >> mozilla/layout/build/Makefile.in
+
+ifdef MOZ_ENABLE_CANVAS
+EXTRA_DSO_LDOPTS += \$(XLDFLAGS) -lX11 -lXrender
+endif
+
+EOF
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -60,7 +92,7 @@ find . \
export MOZILLA_OFFICIAL="1" &&
export BUILD_OFFICIAL="1" &&
-export MOZ_CO_PROJECT="mail" &&
+export MOZ_PHOENIX="1" &&
export CFLAGS="$SLKCFLAGS" &&
export CXXFLAGS="$SLKCFLAGS" &&
./configure \
@@ -68,61 +100,60 @@ export CXXFLAGS="$SLKCFLAGS" &&
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--with-default-mozilla-five-home=/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION \
- --with-user-appdir=.thunderbird \
--with-system-zlib \
- --with-system-png \
--enable-application=mail \
- --enable-default-toolkit=gtk2 \
+ --enable-default-toolkit=cairo-gtk2 \
--enable-crypto \
+ --enable-svg \
+ --enable-canvas \
--enable-xft \
- --enable-pango \
--enable-xinerama \
--enable-optimize \
--enable-reorder \
+ --enable-static \
--enable-strip \
+ --enable-system-cairo \
--enable-cpp-rtti \
--enable-single-profile \
- --enable-ldap \
- --disable-freetype2 \
+ --disable-ldap \
--disable-accessibility \
--disable-debug \
--disable-tests \
--disable-logging \
--disable-pedantic \
--disable-installer \
- --disable-profilesharing \
- --disable-gnomevfs \
- --disable-gnomeui
+ --disable-profilesharing
+ # Complains about missing APNG support in Slackware's libpng:
+ #--with-system-png \
-make MOZ_OPT_FLAGS="$SLKCFLAGS" MOZ_MAKE_FLAGS="$NUMJOBS" || make || exit 1
+#make -f client.mk build MOZ_MAKE_FLAGS="$NUMJOBS" || exit 1
+make MOZ_MAKE_FLAGS="$NUMJOBS" || exit 1
make install DESTDIR=$PKG || exit 1
-# We do not need 20+ MB of includes:
+# We don't need these (just symlinks anyway):
+rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-devel-$VERSION
+
+# Nor these:
rm -rf $PKG/usr/include
( cd $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION
- echo "Applying firefox patch"
- zcat $CWD/mozilla-thunderbird-firefox.diff.gz | patch -p0 --verbose || exit 1
+ cp -a defaults/profile/mimeTypes.rdf defaults/profile/mimeTypes.rdf.orig
+ zcat $CWD/mimeTypes.rdf > defaults/profile/mimeTypes.rdf || exit 1
) || exit 1
+mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/mozilla/plugins
mkdir -p $PKG/usr/share/applications
cat $CWD/mozilla-thunderbird.desktop > $PKG/usr/share/applications/mozilla-thunderbird.desktop
mkdir -p $PKG/usr/share/pixmaps
cat $CWD/thunderbird.png > $PKG/usr/share/pixmaps/thunderbird.png
-mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION/chrome/icons/default/
-install -m 644 other-licenses/branding/thunderbird/default.xpm \
- $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION/chrome/icons/default/
-install -m 644 other-licenses/branding/thunderbird/default.xpm \
- $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION/icons/
-
-# These files/directories are usually created if Thunderbird is run as root,
-# which on many systems might (and possibly should) be never. Therefore,
-# if we don't see them we'll put stubs in place to prevent startup errors.
+# These files/directories are usually created if Firefox is run as root,
+# which on many systems might (and possibly should) be never. Therefore, if we
+# don't see them we'll put stubs in place to prevent startup errors.
( cd $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION
- if [ -d chrome ]; then
- if [ ! -r chrome/app-chrome.manifest ]; then
- echo > chrome/app-chrome.manifest
+ if [ -d extensions/talkback\@mozilla.org ]; then
+ if [ ! -r extensions/talkback\@mozilla.org/chrome.manifest ]; then
+ echo > extensions/talkback\@mozilla.org/chrome.manifest
fi
fi
if [ ! -d updates ]; then
@@ -130,12 +161,22 @@ install -m 644 other-licenses/branding/thunderbird/default.xpm \
fi
)
+# Need some default icons in the right place:
+mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION/chrome/icons/default
+install -m 644 other-licenses/branding/thunderbird/default16.png \
+ $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION/icons/
+install -m 644 other-licenses/branding/thunderbird/default16.png \
+ $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION/chrome/icons/default/
+( cd $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION
+ install -m 644 icons/{default,mozicon50}.xpm chrome/icons/default/
+)
+
# Copy over the LICENSE
-install -c -m 644 LICENSE $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION
+install -p -c -m 644 LICENSE $PKG/usr/lib${LIBDIRSUFFIX}/thunderbird-$VERSION/
mkdir $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $TMP/mozilla-thunderbird-$VERSION-${ARCH}-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/mozilla-thunderbird-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/xap/mozilla-thunderbird/thunderbird.png b/source/xap/mozilla-thunderbird/thunderbird.png
index a6172dcda..61a37d70e 100644
--- a/source/xap/mozilla-thunderbird/thunderbird.png
+++ b/source/xap/mozilla-thunderbird/thunderbird.png
Binary files differ
diff --git a/source/xap/pan/pan.SlackBuild b/source/xap/pan/pan.SlackBuild
index 288b34a7b..4bfbcf7f5 100755
--- a/source/xap/pan/pan.SlackBuild
+++ b/source/xap/pan/pan.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,9 +22,18 @@
PKGNAM=pan
-VERSION=${VERSION:-0.133}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -35,6 +44,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
CWD=$(pwd)
@@ -48,6 +59,9 @@ rm -rf ${PKGNAM}-${VERSION}
tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
cd ${PKGNAM}-$VERSION || exit 1
+zcat $CWD/pan.gmime2.4.diff.gz | patch -p1 || exit 1
+zcat $CWD/pan.gcc44.diff.gz | patch -p1 || exit 1
+
# Make sure ownerships and permissions are sane:
chown -R root:root .
find . \
diff --git a/source/xap/pan/pan.gcc44.diff b/source/xap/pan/pan.gcc44.diff
new file mode 100644
index 000000000..22df125f8
--- /dev/null
+++ b/source/xap/pan/pan.gcc44.diff
@@ -0,0 +1,50 @@
+--- ./pan/usenet-utils/numbers.cc.orig 2008-07-04 10:01:53.000000000 -0500
++++ ./pan/usenet-utils/numbers.cc 2010-02-03 18:06:16.000000000 -0600
+@@ -19,6 +19,7 @@
+
+ #include <config.h>
+ #include <cctype>
++#include <cstdio>
+ #include <pan/general/string-view.h>
+ #include "numbers.h"
+ #include <algorithm>
+--- ./pan/tasks/nntp.cc.orig 2008-07-05 14:16:06.000000000 -0500
++++ ./pan/tasks/nntp.cc 2010-02-03 18:07:19.000000000 -0600
+@@ -20,6 +20,7 @@
+ #include <config.h>
+ #include <cassert>
+ #include <cstdarg>
++#include <cstdio>
+ #include <cstdlib> // abort, atoi, strtoul
+ extern "C" {
+ #include <glib.h>
+--- ./pan/tasks/nntp-pool.cc.orig 2008-07-05 01:39:27.000000000 -0500
++++ ./pan/tasks/nntp-pool.cc 2010-02-03 18:07:55.000000000 -0600
+@@ -19,6 +19,7 @@
+
+ #include <config.h>
+ #include <ctime>
++#include <cstdio>
+ #include <glib/gi18n.h>
+ #include <pan/general/debug.h>
+ #include <pan/general/log.h>
+--- ./pan/general/progress.cc.orig 2007-08-01 12:00:01.000000000 -0500
++++ ./pan/general/progress.cc 2010-02-03 18:05:38.000000000 -0600
+@@ -19,6 +19,7 @@
+
+ #include <config.h>
+ #include <cstdarg>
++#include <cstdio>
+ #include "progress.h"
+ #include "string-view.h"
+
+--- ./pan/general/log.cc.orig 2007-08-01 12:00:01.000000000 -0500
++++ ./pan/general/log.cc 2010-02-03 18:05:19.000000000 -0600
+@@ -20,6 +20,7 @@
+ #include <config.h>
+ #include <iostream>
+ #include <cstdarg>
++#include <cstdio>
+ #include "log.h"
+
+ using namespace pan;
diff --git a/source/xap/pan/pan.gmime2.4.diff b/source/xap/pan/pan.gmime2.4.diff
new file mode 100644
index 000000000..4816ea6cd
--- /dev/null
+++ b/source/xap/pan/pan.gmime2.4.diff
@@ -0,0 +1,1271 @@
+diff -ru pan-0.133.orig/configure pan-0.133/configure
+--- pan-0.133.orig/configure 2008-07-29 19:02:08.000000000 -0700
++++ pan-0.133/configure 2009-09-12 14:58:05.000000000 -0700
+@@ -2377,7 +2377,7 @@
+
+ PCRE_REQUIRED=5.0
+ GLIB_REQUIRED=2.4.0
+-GMIME_REQUIRED=2.1.9
++GMIME_REQUIRED=2.3.5
+ GTK_REQUIRED=2.4.0
+ GTKSPELL_REQUIRED=2.0.7
+
+@@ -7957,12 +7957,12 @@
+ pkg_cv_GMIME_CFLAGS="$GMIME_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gmime-2.0 >= \$GMIME_REQUIRED\"") >&5
+- ($PKG_CONFIG --exists --print-errors "gmime-2.0 >= $GMIME_REQUIRED") 2>&5
++ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gmime-2.4 >= \$GMIME_REQUIRED\"") >&5
++ ($PKG_CONFIG --exists --print-errors "gmime-2.4 >= $GMIME_REQUIRED") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- pkg_cv_GMIME_CFLAGS=`$PKG_CONFIG --cflags "gmime-2.0 >= $GMIME_REQUIRED" 2>/dev/null`
++ pkg_cv_GMIME_CFLAGS=`$PKG_CONFIG --cflags "gmime-2.4 >= $GMIME_REQUIRED" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+@@ -7973,12 +7973,12 @@
+ pkg_cv_GMIME_LIBS="$GMIME_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gmime-2.0 >= \$GMIME_REQUIRED\"") >&5
+- ($PKG_CONFIG --exists --print-errors "gmime-2.0 >= $GMIME_REQUIRED") 2>&5
++ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gmime-2.4 >= \$GMIME_REQUIRED\"") >&5
++ ($PKG_CONFIG --exists --print-errors "gmime-2.4 >= $GMIME_REQUIRED") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- pkg_cv_GMIME_LIBS=`$PKG_CONFIG --libs "gmime-2.0 >= $GMIME_REQUIRED" 2>/dev/null`
++ pkg_cv_GMIME_LIBS=`$PKG_CONFIG --libs "gmime-2.4 >= $GMIME_REQUIRED" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+@@ -7996,14 +7996,14 @@
+ _pkg_short_errors_supported=no
+ fi
+ if test $_pkg_short_errors_supported = yes; then
+- GMIME_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gmime-2.0 >= $GMIME_REQUIRED" 2>&1`
++ GMIME_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gmime-2.4 >= $GMIME_REQUIRED" 2>&1`
+ else
+- GMIME_PKG_ERRORS=`$PKG_CONFIG --print-errors "gmime-2.0 >= $GMIME_REQUIRED" 2>&1`
++ GMIME_PKG_ERRORS=`$PKG_CONFIG --print-errors "gmime-2.4 >= $GMIME_REQUIRED" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GMIME_PKG_ERRORS" >&5
+
+- { { echo "$as_me:$LINENO: error: Package requirements (gmime-2.0 >= $GMIME_REQUIRED) were not met:
++ { { echo "$as_me:$LINENO: error: Package requirements (gmime-2.4 >= $GMIME_REQUIRED) were not met:
+
+ $GMIME_PKG_ERRORS
+
+@@ -8014,7 +8014,7 @@
+ and GMIME_LIBS to avoid the need to call pkg-config.
+ See the pkg-config man page for more details.
+ " >&5
+-echo "$as_me: error: Package requirements (gmime-2.0 >= $GMIME_REQUIRED) were not met:
++echo "$as_me: error: Package requirements (gmime-2.4 >= $GMIME_REQUIRED) were not met:
+
+ $GMIME_PKG_ERRORS
+
+diff -ru pan-0.133.orig/configure.in pan-0.133/configure.in
+--- pan-0.133.orig/configure.in 2008-07-29 19:00:01.000000000 -0700
++++ pan-0.133/configure.in 2009-09-12 14:52:37.000000000 -0700
+@@ -18,7 +18,7 @@
+
+ PCRE_REQUIRED=5.0
+ GLIB_REQUIRED=2.4.0
+-GMIME_REQUIRED=2.1.9
++GMIME_REQUIRED=2.3.5
+ GTK_REQUIRED=2.4.0
+ GTKSPELL_REQUIRED=2.0.7
+ AC_SUBST(PCRE_REQUIRED)
+@@ -50,7 +50,7 @@
+
+ PKG_CHECK_MODULES(PCRE, libpcre >= $PCRE_REQUIRED)
+ AM_PATH_GLIB_2_0($GLIB_REQUIRED,,exit 1,gobject gmodule gthread)
+-PKG_CHECK_MODULES(GMIME, gmime-2.0 >= $GMIME_REQUIRED)
++PKG_CHECK_MODULES(GMIME, gmime-2.4 >= $GMIME_REQUIRED)
+ AM_PATH_GTK_2_0($GTK_REQUIRED,,exit 1,gthread)
+
+
+--- pan-0.133.orig/pan/general/utf8-utils.cc 2008-07-04 23:13:14.000000000 -0700
++++ pan-0.133/pan/general/utf8-utils.cc 2009-09-12 14:38:13.000000000 -0700
+@@ -136,7 +136,7 @@
+ {
+ std::string s = content_to_utf8 (header, fallback_charset1, fallback_charset2);
+ if (header.strstr ("=?")) {
+- char * decoded (g_mime_utils_8bit_header_decode ((const guchar*) s.c_str()));
++ char * decoded (g_mime_utils_header_decode_text (s.c_str()));
+ s = clean_utf8 (decoded);
+ g_free (decoded);
+ }
+@@ -147,15 +147,26 @@
+ pan :: mime_part_to_utf8 (GMimePart * part,
+ const char * fallback_charset)
+ {
++ GMimeDataWrapper *content;
++ GMimeStream *stream;
++ const char *charset;
++ GByteArray *buffer;
+ std::string ret;
+
+ g_return_val_if_fail (GMIME_IS_PART(part), ret);
+
+- size_t content_len (0);
+- const char * specified_charset (g_mime_object_get_content_type_parameter (GMIME_OBJECT (part), "charset"));
+- const char * content = g_mime_part_get_content (part, &content_len);
+- if (content && content_len)
+- ret = content_to_utf8 (StringView (content, content_len), specified_charset, fallback_charset);
++ charset = g_mime_object_get_content_type_parameter (GMIME_OBJECT (part), "charset");
++ content = g_mime_part_get_content_object (part);
++
++ stream = g_mime_stream_mem_new ();
++ g_mime_data_wrapper_write_to_stream (content, stream);
++//g_object_unref(content); //SKG gmime 2.4 don't unref returned data wrapper
++
++ buffer = ((GMimeStreamMem *) stream)->buffer;
++
++ ret = content_to_utf8 (StringView ((const char *) buffer->data, buffer->len), charset, fallback_charset);
++
++ g_object_unref (stream);
+
+ return ret;
+ }
+diff -ru pan-0.133.orig/pan/gui/body-pane.cc pan-0.133/pan/gui/body-pane.cc
+--- pan-0.133.orig/pan/gui/body-pane.cc 2008-07-06 07:20:54.000000000 -0700
++++ pan-0.133/pan/gui/body-pane.cc 2009-09-12 14:41:46.000000000 -0700
+@@ -837,7 +837,7 @@
+ }
+
+ g_object_unref (mem_stream);
+- g_object_unref (wrapper);
++ //g_object_unref (wrapper); //SKG gmime 2.4 don't unref returned data wrapper
+ }
+
+ // flush the loader
+@@ -874,7 +874,7 @@
+ return;
+
+ GMimePart * part = GMIME_PART (obj);
+- const GMimeContentType * type = g_mime_object_get_content_type (GMIME_OBJECT (part));
++ GMimeContentType * type = g_mime_object_get_content_type (GMIME_OBJECT (part));
+
+ // decide whether or not this part is a picture
+ bool is_image (g_mime_content_type_is_type (type, "image", "*"));
+@@ -952,11 +952,11 @@
+ GtkTextIter iter;
+ gtk_text_buffer_get_end_iter (_buffer, &iter);
+ gtk_text_buffer_insert (_buffer, &iter, pch, -1);
+- g_free (pch);
++// g_free (pch); //SKG don't unref returned const char *
+ }
+ }
+ void
+-BodyPane :: foreach_part_cb (GMimeObject* o, gpointer self)
++BodyPane :: foreach_part_cb (GMimeObject* /*parent*/, GMimeObject* o, gpointer self)
+ {
+ if (GMIME_IS_MULTIPART (o))
+ g_mime_multipart_foreach (GMIME_MULTIPART (o), foreach_part_cb, self);
+@@ -978,7 +978,7 @@
+ const char * key,
+ const char * fallback_charset)
+ {
+- const char * val (message ? g_mime_message_get_header (message, key) : "");
++ const char * val (message ? g_mime_object_get_header ((GMimeObject *) message, key) : "");
+ const std::string utf8_val (header_to_utf8 (val, fallback_charset));
+ char * e (0);
+ if (strcmp (key, "From"))
+@@ -1015,7 +1015,7 @@
+ const char * key,
+ const char * fallback_charset)
+ {
+- const char * val (msg ? g_mime_message_get_header (msg, key) : "");
++ const char * val (msg ? g_mime_object_get_header ((GMimeObject *) msg, key) : "");
+ return add_header_line (s, key_i18n, key, val, fallback_charset);
+ }
+ }
+@@ -1037,19 +1037,19 @@
+
+ // conditional headers...
+ if (message) {
+- const StringView newsgroups (g_mime_message_get_header (message, "Newsgroups"));
++ const StringView newsgroups (g_mime_object_get_header ((GMimeObject *) message, "Newsgroups"));
+ if (newsgroups.strchr(',')) {
+ l = add_header_line (s, message, _("Newsgroups"), "Newsgroups", fallback_charset);
+ w = std::max (w, l);
+ }
+- const StringView followup_to (g_mime_message_get_header (message, "Followup-To"));
++ const StringView followup_to (g_mime_object_get_header ((GMimeObject *) message, "Followup-To"));
+ if (!followup_to.empty() && (followup_to!=newsgroups)) {
+ l = add_header_line (s, message, _("Followup-To"), "Followup-To", fallback_charset);
+ w = std::max (w, l);
+ }
+- const StringView reply_to (g_mime_message_get_header (message, "Reply-To"));
++ const StringView reply_to (g_mime_object_get_header ((GMimeObject *) message, "Reply-To"));
+ if (!reply_to.empty()) {
+- const StringView from (g_mime_message_get_header (message, "From"));
++ const StringView from (g_mime_object_get_header ((GMimeObject *) message, "From"));
+ StringView f_addr, f_name, rt_addr, rt_name;
+ GNKSA :: do_check_from (from, f_addr, f_name, false);
+ GNKSA :: do_check_from (reply_to, rt_addr, rt_name, false);
+@@ -1070,7 +1070,7 @@
+
+ // set the x-face...
+ GdkPixbuf * pixbuf (0);
+- const char * pch = message ? g_mime_message_get_header (message, "X-Face") : 0;
++ const char * pch = message ? g_mime_object_get_header ((GMimeObject *) message, "X-Face") : 0;
+ if (pch && _xface->window)
+ pixbuf = pan_gdk_pixbuf_create_from_x_face (gtk_widget_get_colormap(_xface), _xface->window, pch);
+ gtk_image_set_from_pixbuf (GTK_IMAGE(_xface), pixbuf);
+@@ -1101,7 +1101,7 @@
+ // maybe add the headers
+ const bool do_show_headers (_prefs.get_flag ("show-all-headers", false));
+ if (message && do_show_headers) {
+- char * headers (g_mime_message_get_headers (message));
++ char * headers (g_mime_object_get_headers ((GMimeObject *) message));
+ GtkTextIter end;
+ gtk_text_buffer_get_end_iter (_buffer, &end);
+ StringView line, v(headers);
+@@ -1119,7 +1119,7 @@
+
+ // set the text buffer...
+ if (message)
+- g_mime_message_foreach_part (message, foreach_part_cb, this);
++ g_mime_message_foreach (message, foreach_part_cb, this);
+
+ // if there was a picture, scroll to it.
+ // otherwise scroll to the top of the body.
+@@ -1514,7 +1514,7 @@
+ const char * fallback_charset_1,
+ const char * fallback_charset_2)
+ {
+- const StringView v (g_mime_message_get_header (msg, key));
++ const StringView v (g_mime_object_get_header ((GMimeObject *) msg, key));
+ std::string s;
+ if (!v.empty())
+ s = header_to_utf8 (v, fallback_charset_1, fallback_charset_2);
+@@ -1527,7 +1527,7 @@
+ std::string body;
+ };
+
+- void get_utf8_body_foreach_part (GMimeObject *o, gpointer user_data)
++ void get_utf8_body_foreach_part (GMimeObject * /*parent*/, GMimeObject *o, gpointer user_data)
+ {
+ if (GMIME_IS_MULTIPART(o))
+ {
+@@ -1538,7 +1538,7 @@
+ else
+ {
+ GMimePart * part = GMIME_PART (o);
+- const GMimeContentType * type = g_mime_object_get_content_type (o);
++ GMimeContentType * type = g_mime_object_get_content_type (o);
+ const bool is_text (g_mime_content_type_is_type (type, "text", "*"));
+ if (is_text)
+ {
+@@ -1555,7 +1555,7 @@
+ if (fallback_charset)
+ tmp.fallback_charset = fallback_charset;
+ if (source)
+- g_mime_message_foreach_part (source, get_utf8_body_foreach_part, &tmp);
++ g_mime_message_foreach (source, get_utf8_body_foreach_part, &tmp);
+ return tmp.body;
+ }
+ }
+@@ -1571,7 +1571,7 @@
+
+ // fallback character encodings
+ const char * group_charset (_charset.c_str());
+- const GMimeContentType * type (g_mime_object_get_content_type (GMIME_OBJECT(_message)));
++ GMimeContentType * type (g_mime_object_get_content_type (GMIME_OBJECT(_message)));
+ const char * message_charset (type ? g_mime_content_type_get_parameter (type, "charset") : 0);
+
+ ///
+@@ -1585,14 +1585,14 @@
+ const std::string reply_to (get_header (_message, "Reply-To", message_charset, group_charset));
+ if (is_reply || fup_to=="poster") {
+ const std::string& to (reply_to.empty() ? from : reply_to);
+- g_mime_message_add_recipients_from_string (msg, (char*)GMIME_RECIPIENT_TYPE_TO, to.c_str());
++ g_mime_message_add_recipients_from_string (msg, GMIME_RECIPIENT_TYPE_TO, to.c_str());
+ } else {
+ const std::string& groups (fup_to.empty() ? newsgroups : fup_to);
+- g_mime_message_add_header (msg, "Newsgroups", groups.c_str());
++ g_mime_object_append_header ((GMimeObject *) msg, "Newsgroups", groups.c_str());
+ }
+
+ // Subject:
+- StringView v = g_mime_message_get_header (_message, "Subject");
++ StringView v = g_mime_object_get_header ((GMimeObject *) _message, "Subject");
+ std::string h = header_to_utf8 (v, message_charset, group_charset);
+ std::string val (normalize_subject_re (h));
+ if (val.find ("Re:") != 0) // add "Re: " if we don't have one
+@@ -1601,22 +1601,22 @@
+
+ // attribution lines
+
+- const char * cpch = g_mime_message_get_header (_message, "From");
++ const char * cpch = g_mime_object_get_header ((GMimeObject *) _message, "From");
+ h = header_to_utf8 (cpch, message_charset, group_charset);
+- g_mime_message_add_header (msg, "X-Draft-Attribution-Author", h.c_str());
++ g_mime_object_append_header ((GMimeObject *) msg, "X-Draft-Attribution-Author", h.c_str());
+
+ cpch = g_mime_message_get_message_id (_message);
+ h = header_to_utf8 (cpch, message_charset, group_charset);
+- g_mime_message_add_header (msg, "X-Draft-Attribution-Id", h.c_str());
++ g_mime_object_append_header ((GMimeObject *) msg, "X-Draft-Attribution-Id", h.c_str());
+
+- char * tmp = g_mime_message_get_date_string (_message);
++ char * tmp = g_mime_message_get_date_as_string (_message);
+ h = header_to_utf8 (tmp, message_charset, group_charset);
+- g_mime_message_add_header (msg, "X-Draft-Attribution-Date", h.c_str());
++ g_mime_object_append_header ((GMimeObject *) msg, "X-Draft-Attribution-Date", h.c_str());
+ g_free (tmp);
+
+ // references
+ const char * header = "References";
+- v = g_mime_message_get_header (_message, header);
++ v = g_mime_object_get_header ((GMimeObject *) _message, header);
+ val.assign (v.str, v.len);
+ if (!val.empty())
+ val += ' ';
+@@ -1624,7 +1624,7 @@
+ val += g_mime_message_get_message_id (_message);
+ val += ">";
+ val = GNKSA :: trim_references (val);
+- g_mime_message_add_header (msg, header, val.c_str());
++ g_mime_object_append_header ((GMimeObject *) msg, header, val.c_str());
+
+ ///
+ /// BODY
+@@ -1660,17 +1660,17 @@
+ // set the clone's content object with our modified body
+ GMimeStream * stream = g_mime_stream_mem_new ();
+ g_mime_stream_write_string (stream, s.c_str());
+- GMimeDataWrapper * wrapper = g_mime_data_wrapper_new_with_stream (stream, GMIME_PART_ENCODING_8BIT);
++ GMimeDataWrapper * wrapper = g_mime_data_wrapper_new_with_stream (stream, GMIME_CONTENT_ENCODING_8BIT);
+ GMimePart * part = g_mime_part_new ();
+ GMimeContentType * new_type = g_mime_content_type_new_from_string ("text/plain; charset=UTF-8");
+- g_mime_part_set_content_type (part, new_type);
++ g_mime_object_set_content_type ((GMimeObject *) part, new_type);
+ g_mime_part_set_content_object (part, wrapper);
+- g_mime_part_set_encoding (part, GMIME_PART_ENCODING_8BIT);
++ g_mime_part_set_content_encoding (part, GMIME_CONTENT_ENCODING_8BIT);
+ g_mime_message_set_mime_part (msg, GMIME_OBJECT(part));
+ g_object_unref (wrapper);
+ g_object_unref (part);
+ g_object_unref (stream);
+-//std::cerr << LINE_ID << " here is the modified clone\n [" << g_mime_message_to_string(msg) << ']' << std::endl;
++//std::cerr << LINE_ID << " here is the modified clone\n [" << g_mime_object_to_string((GMimeObject *) msg) << ']' << std::endl;
+ }
+
+ return msg;
+diff -ru pan-0.133.orig/pan/gui/body-pane.h pan-0.133/pan/gui/body-pane.h
+--- pan-0.133.orig/pan/gui/body-pane.h 2008-07-04 10:57:39.000000000 -0700
++++ pan-0.133/pan/gui/body-pane.h 2009-09-08 20:40:40.000000000 -0700
+@@ -86,7 +86,7 @@
+ void append_part (GMimeObject*, GtkAllocation*);
+ static gboolean expander_activated_idle (gpointer self);
+ static void expander_activated_cb (GtkExpander*, gpointer self);
+- static void foreach_part_cb (GMimeObject*, gpointer self);
++ static void foreach_part_cb (GMimeObject*, GMimeObject*, gpointer self);
+ static void text_size_allocated (GtkWidget*, GtkAllocation*, gpointer);
+ static gboolean text_size_allocated_idle_cb (gpointer p);
+ void text_size_allocated_idle ();
+diff -ru pan-0.133.orig/pan/gui/gui.cc pan-0.133/pan/gui/gui.cc
+--- pan-0.133.orig/pan/gui/gui.cc 2008-07-05 00:14:56.000000000 -0700
++++ pan-0.133/pan/gui/gui.cc 2009-09-12 14:44:06.000000000 -0700
+@@ -31,6 +31,7 @@
+ #include <pan/general/file-util.h>
+ #include <pan/general/macros.h>
+ #include <pan/usenet-utils/scorefile.h>
++#include <pan/usenet-utils/mime-utils.h>
+ #include <pan/tasks/task-article.h>
+ #include <pan/tasks/task-groups.h>
+ #include <pan/tasks/task-xover.h>
+@@ -567,7 +568,7 @@
+ ArticleCache& c, const Article& a, const std::string& path):
+ _data(d), _queue(q), _root(r), _prefs(p), _cache(c), _article(a), _path(path) {}
+
+- static void foreach_part_cb (GMimeObject *o, gpointer self)
++ static void foreach_part_cb (GMimeObject * /*parent*/, GMimeObject *o, gpointer self)
+ {
+ static_cast<SaveArticlesFromNZB*>(self)->foreach_part (o);
+ }
+@@ -591,7 +592,7 @@
+ if (!tasks.empty())
+ _queue.add_tasks (tasks, Queue::BOTTOM);
+ g_object_unref (mem_stream);
+- g_object_unref (wrapper);
++// g_object_unref (wrapper); //SKG gmime 2.4 don't unref returned data wrapper
+ }
+ }
+
+@@ -601,7 +602,7 @@
+ {
+ if (status == OK) {
+ GMimeMessage * message = _cache.get_message (_article.get_part_mids());
+- g_mime_message_foreach_part (message, foreach_part_cb, this);
++ g_mime_message_foreach (message, foreach_part_cb, this);
+ g_object_unref (message);
+ }
+ delete this;
+@@ -1041,19 +1042,19 @@
+ const char * cpch;
+ char * old_mid (g_strdup_printf ("<%s>", g_mime_message_get_message_id(message)));
+ GMimeMessage * new_message (g_mime_message_new (false));
+- g_mime_message_set_header (new_message, "Supersedes", old_mid);
++ g_mime_object_set_header ((GMimeObject *) new_message, "Supersedes", old_mid);
+ g_mime_message_set_sender (new_message, g_mime_message_get_sender (message));
+ g_mime_message_set_subject (new_message, g_mime_message_get_subject (message));
+- g_mime_message_set_header (new_message, "Newsgroups", g_mime_message_get_header (message, "Newsgroups"));
+- g_mime_message_set_header (new_message, "References", g_mime_message_get_header (message, "References"));
++ g_mime_object_set_header ((GMimeObject *) new_message, "Newsgroups", g_mime_object_get_header ((GMimeObject *) message, "Newsgroups"));
++ g_mime_object_set_header ((GMimeObject *) new_message, "References", g_mime_object_get_header ((GMimeObject *) message, "References"));
+ if ((cpch = g_mime_message_get_reply_to (message)))
+ g_mime_message_set_reply_to (new_message, cpch);
+- if ((cpch = g_mime_message_get_header (message, "Followup-To")))
+- g_mime_message_set_header (new_message, "Followup-To", cpch);
++ if ((cpch = g_mime_object_get_header ((GMimeObject *) message, "Followup-To")))
++ g_mime_object_set_header ((GMimeObject *) new_message, "Followup-To", cpch);
+ gboolean unused (false);
+- char * body (g_mime_message_get_body (message, true, &unused));
++ char * body (g_mime_message_get_body (message, &unused));
+ GMimeStream * stream = g_mime_stream_mem_new_with_buffer (body, strlen(body));
+- GMimeDataWrapper * content_object = g_mime_data_wrapper_new_with_stream (stream, GMIME_PART_ENCODING_DEFAULT);
++ GMimeDataWrapper * content_object = g_mime_data_wrapper_new_with_stream (stream, GMIME_CONTENT_ENCODING_DEFAULT);
+ GMimePart * part = g_mime_part_new ();
+ g_mime_part_set_content_object (part, content_object);
+ g_mime_message_set_mime_part (new_message, GMIME_OBJECT(part));
+@@ -1111,11 +1112,11 @@
+ char * cancel_message = g_strdup_printf ("cancel <%s>", g_mime_message_get_message_id(message));
+ g_mime_message_set_sender (cancel, g_mime_message_get_sender (message));
+ g_mime_message_set_subject (cancel, "Cancel");
+- g_mime_message_set_header (cancel, "Newsgroups", g_mime_message_get_header (message, "Newsgroups"));
+- g_mime_message_set_header (cancel, "Control", cancel_message);
++ g_mime_object_set_header ((GMimeObject *) cancel, "Newsgroups", g_mime_object_get_header ((GMimeObject *) message, "Newsgroups"));
++ g_mime_object_set_header ((GMimeObject *) cancel, "Control", cancel_message);
+ const char * body ("Ignore\r\nArticle canceled by author using " PACKAGE_STRING "\r\n");
+ GMimeStream * stream = g_mime_stream_mem_new_with_buffer (body, strlen(body));
+- GMimeDataWrapper * content_object = g_mime_data_wrapper_new_with_stream (stream, GMIME_PART_ENCODING_DEFAULT);
++ GMimeDataWrapper * content_object = g_mime_data_wrapper_new_with_stream (stream, GMIME_CONTENT_ENCODING_DEFAULT);
+ GMimePart * part = g_mime_part_new ();
+ g_mime_part_set_content_object (part, content_object);
+ g_mime_message_set_mime_part (cancel, GMIME_OBJECT(part));
+@@ -1194,12 +1195,12 @@
+ newsgroups = group;
+ }
+ if (!newsgroups.empty())
+- g_mime_message_add_header (message, "Newsgroups", newsgroups.c_str());
++ g_mime_object_append_header ((GMimeObject *) message, "Newsgroups", newsgroups.c_str());
+
+ // content type
+ GMimePart * part = g_mime_part_new ();
+- g_mime_part_set_content_type (part, g_mime_content_type_new_from_string ("text/plain; charset=UTF-8"));
+- g_mime_part_set_encoding (part, GMIME_PART_ENCODING_8BIT);
++ g_mime_object_set_content_type ((GMimeObject *) part, g_mime_content_type_new_from_string ("text/plain; charset=UTF-8"));
++ g_mime_part_set_content_encoding (part, GMIME_CONTENT_ENCODING_8BIT);
+ g_mime_message_set_mime_part (message, GMIME_OBJECT(part));
+ g_object_unref (part);
+
+@@ -1754,8 +1755,8 @@
+ g_snprintf (str, sizeof(str), "%s: %u/%u", _("Tasks"), running, size);
+
+ // build the tooltip
+- gulong queued, unused, stopped;
+- guint64 KiB_remain;
++ long unsigned int queued, unused, stopped; //SKG MacPorts can't find function
++ uint64_t KiB_remain; //SKG using gulong and guint64 types.
+ double KiBps;
+ int hr, min, sec;
+ _queue.get_stats (queued, unused, stopped,
+diff -ru pan-0.133.orig/pan/gui/pan.cc pan-0.133/pan/gui/pan.cc
+--- pan-0.133.orig/pan/gui/pan.cc 2008-07-04 11:30:29.000000000 -0700
++++ pan-0.133/pan/gui/pan.cc 2009-09-12 13:39:13.000000000 -0700
+@@ -211,7 +211,7 @@
+ textdomain (GETTEXT_PACKAGE);
+
+ g_thread_init (0);
+- g_mime_init (GMIME_INIT_FLAG_UTF8);
++ g_mime_init (GMIME_ENABLE_RFC2047_WORKAROUNDS);
+
+ bool gui(true), nzb(false);
+ std::string url;
+diff -ru pan-0.133.orig/pan/gui/post-ui.cc pan-0.133/pan/gui/post-ui.cc
+--- pan-0.133.orig/pan/gui/post-ui.cc 2008-07-13 06:32:11.000000000 -0700
++++ pan-0.133/pan/gui/post-ui.cc 2009-09-12 13:04:51.000000000 -0700
+@@ -529,8 +529,8 @@
+ {
+ std::string url, to, groups;
+ gboolean unused;
+- char * headers (g_mime_message_get_headers (message));
+- char * body (g_mime_message_get_body (message, true, &unused));
++ char * headers (g_mime_object_get_headers ((GMimeObject *) message));
++ char * body (g_mime_message_get_body (message, &unused));
+ StringView key, val, v(headers);
+ v.trim ();
+ while (v.pop_token (val, '\n') && val.pop_token(key,':')) {
+@@ -629,7 +629,7 @@
+ *** If this is email only, skip the rest of the posting...
+ *** we only stayed this long to get check_message()
+ **/
+- const StringView groups (g_mime_message_get_header (message, "Newsgroups"));
++ const StringView groups (g_mime_object_get_header ((GMimeObject *) message, "Newsgroups"));
+ if (groups.empty()) {
+ maybe_mail_message (message);
+ return true;
+@@ -903,9 +903,9 @@
+ */
+ void pan_g_mime_message_set_message_id (GMimeMessage *msg, const char *mid)
+ {
+- g_mime_message_add_header (msg, "Message-ID", mid);
++ g_mime_object_append_header ((GMimeObject *) msg, "Message-ID", mid);
+ char * bracketed = g_strdup_printf ("<%s>", mid);
+- g_mime_header_set (GMIME_OBJECT(msg)->headers, "Message-ID", bracketed);
++ g_mime_header_list_set (GMIME_OBJECT(msg)->headers, "Message-ID", bracketed);
+ g_free (bracketed);
+ }
+ }
+@@ -928,27 +928,27 @@
+ // headers from the ui: To
+ const StringView to (gtk_entry_get_text (GTK_ENTRY(_to_entry)));
+ if (!to.empty())
+- g_mime_message_add_recipients_from_string (msg, (char*)GMIME_RECIPIENT_TYPE_TO, to.str);
++ g_mime_message_add_recipients_from_string (msg, GMIME_RECIPIENT_TYPE_TO, to.str);
+
+ // headers from the ui: Newsgroups
+ const StringView groups (gtk_entry_get_text (GTK_ENTRY(_groups_entry)));
+ if (!groups.empty())
+- g_mime_message_set_header (msg, "Newsgroups", groups.str);
++ g_mime_object_set_header ((GMimeObject *) msg, "Newsgroups", groups.str);
+
+ // headers from the ui: Followup-To
+ const StringView followupto (gtk_entry_get_text (GTK_ENTRY(_followupto_entry)));
+ if (!followupto.empty())
+- g_mime_message_set_header (msg, "Followup-To", followupto.str);
++ g_mime_object_set_header ((GMimeObject *) msg, "Followup-To", followupto.str);
+
+ // headers from the ui: Reply-To
+ const StringView replyto (gtk_entry_get_text (GTK_ENTRY(_replyto_entry)));
+ if (!replyto.empty())
+- g_mime_message_set_header (msg, "Reply-To", replyto.str);
++ g_mime_object_set_header ((GMimeObject *) msg, "Reply-To", replyto.str);
+
+ // add the 'hidden headers'
+ foreach_const (str2str_t, _hidden_headers, it)
+ if ((mode==DRAFTING) || (it->first.find ("X-Draft-")!=0))
+- g_mime_message_set_header (msg, it->first.c_str(), it->second.c_str());
++ g_mime_object_set_header ((GMimeObject *) msg, it->first.c_str(), it->second.c_str());
+
+ // build headers from the 'more headers' entry field
+ std::map<std::string,std::string> headers;
+@@ -964,14 +964,14 @@
+ val.trim ();
+ std::string key_str (key.to_string());
+ if (extra_header_is_editable (key, val))
+- g_mime_message_set_header (msg, key.to_string().c_str(),
+- val.to_string().c_str());
++ g_mime_object_set_header ((GMimeObject *) msg, key.to_string().c_str(),
++ val.to_string().c_str());
+ }
+ g_free (pch);
+
+ // User-Agent
+ if (mode==POSTING && _prefs.get_flag (USER_AGENT_PREFS_KEY, true))
+- g_mime_message_set_header (msg, "User-Agent", get_user_agent());
++ g_mime_object_set_header ((GMimeObject *) msg, "User-Agent", get_user_agent());
+
+ // Message-ID
+ if (mode==POSTING && _prefs.get_flag (MESSAGE_ID_PREFS_KEY, false)) {
+@@ -987,22 +987,22 @@
+ const std::string charset ((mode==POSTING && !_charset.empty()) ? _charset : "UTF-8");
+ if (charset != "UTF-8") {
+ // add a wrapper to convert from UTF-8 to $charset
+- GMimeStream * tmp = g_mime_stream_filter_new_with_stream (stream);
++ GMimeStream * tmp = g_mime_stream_filter_new (stream);
+ g_object_unref (stream);
+ GMimeFilter * filter = g_mime_filter_charset_new ("UTF-8", charset.c_str());
+ g_mime_stream_filter_add (GMIME_STREAM_FILTER(tmp), filter);
+ g_object_unref (filter);
+ stream = tmp;
+ }
+- GMimeDataWrapper * content_object = g_mime_data_wrapper_new_with_stream (stream, GMIME_PART_ENCODING_DEFAULT);
++ GMimeDataWrapper * content_object = g_mime_data_wrapper_new_with_stream (stream, GMIME_CONTENT_ENCODING_DEFAULT);
+ g_object_unref (stream);
+ GMimePart * part = g_mime_part_new ();
+ pch = g_strdup_printf ("text/plain; charset=%s", charset.c_str());
+ GMimeContentType * type = g_mime_content_type_new_from_string (pch);
+ g_free (pch);
+- g_mime_part_set_content_type (part, type); // part owns type now. type isn't refcounted.
++ g_mime_object_set_content_type ((GMimeObject *) part, type); // part owns type now. type isn't refcounted.
+ g_mime_part_set_content_object (part, content_object);
+- g_mime_part_set_encoding (part, GMIME_PART_ENCODING_8BIT);
++ g_mime_part_set_content_encoding (part, GMIME_CONTENT_ENCODING_8BIT);
+ g_object_unref (content_object);
+ g_mime_message_set_mime_part (msg, GMIME_OBJECT(part));
+ g_object_unref (part);
+@@ -1036,7 +1036,7 @@
+
+ errno = 0;
+ std::ofstream o (filename);
+- char * pch = g_mime_message_to_string (msg);
++ char * pch = g_mime_object_to_string ((GMimeObject *) msg);
+ o << pch;
+ o.close ();
+
+@@ -1504,16 +1504,16 @@
+ std::string s = utf8ize (g_mime_message_get_subject (message));
+ gtk_entry_set_text (GTK_ENTRY(_subject_entry), s.c_str());
+
+- s = utf8ize (g_mime_message_get_header (message, "Newsgroups"));
++ s = utf8ize (g_mime_object_get_header ((GMimeObject *) message, "Newsgroups"));
+ gtk_entry_set_text (GTK_ENTRY(_groups_entry), s.c_str());
+
+- s = utf8ize (g_mime_message_get_header (message, "Followup-To"));
++ s = utf8ize (g_mime_object_get_header ((GMimeObject *) message, "Followup-To"));
+ gtk_entry_set_text (GTK_ENTRY(_followupto_entry), s.c_str());
+
+- s = utf8ize (g_mime_message_get_header (message, "Reply-To"));
++ s = utf8ize (g_mime_object_get_header ((GMimeObject *) message, "Reply-To"));
+ gtk_entry_set_text (GTK_ENTRY(_replyto_entry), s.c_str());
+
+- const InternetAddressList * addresses = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO);
++ InternetAddressList * addresses = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO);
+ char * pch = internet_address_list_to_string (addresses, true);
+ s = utf8ize (pch);
+ gtk_entry_set_text (GTK_ENTRY(_to_entry), s.c_str());
+@@ -1521,16 +1521,34 @@
+
+ // update 'other headers'
+ SetMessageForeachHeaderData data;
+- if (message->mime_part && g_mime_header_has_raw (message->mime_part->headers))
+- g_mime_header_foreach (message->mime_part->headers, set_message_foreach_header_func, &data);
+- g_mime_header_foreach (GMIME_OBJECT(message)->headers, set_message_foreach_header_func, &data);
++ const char *name, *value;
++ GMimeHeaderIter iter;
++
++ if (message->mime_part && g_mime_header_list_has_raw (message->mime_part->headers)) {
++ if (g_mime_header_list_get_iter (message->mime_part->headers, &iter)) {
++ do {
++ value = g_mime_header_iter_get_value (&iter);
++ name = g_mime_header_iter_get_name (&iter);
++ set_message_foreach_header_func (name, value, &data);
++ } while (g_mime_header_iter_next (&iter));
++ }
++ }
++
++ if (g_mime_header_list_get_iter (GMIME_OBJECT (message)->headers, &iter)) {
++ do {
++ value = g_mime_header_iter_get_value (&iter);
++ name = g_mime_header_iter_get_name (&iter);
++ set_message_foreach_header_func (name, value, &data);
++ } while (g_mime_header_iter_next (&iter));
++ }
++
+ s = utf8ize (data.visible_headers);
+ gtk_text_buffer_set_text (_headers_buf, s.c_str(), -1);
+ _hidden_headers = data.hidden_headers;
+
+ // update body
+ int ignored;
+- char * tmp = g_mime_message_get_body (message, true, &ignored);
++ char * tmp = g_mime_message_get_body (message, &ignored);
+ s = utf8ize (tmp);
+ g_free (tmp);
+ if (!s.empty()) {
+diff -ru pan-0.133.orig/pan/usenet-utils/message-check-test.cc pan-0.133/pan/usenet-utils/message-check-test.cc
+--- pan-0.133.orig/pan/usenet-utils/message-check-test.cc 2007-08-01 09:59:59.000000000 -0700
++++ pan-0.133/pan/usenet-utils/message-check-test.cc 2009-09-12 13:41:22.000000000 -0700
+@@ -22,6 +22,20 @@
+ std::cerr << LINE_ID << " [" << i << "][" << *it << ']' << std::endl; \
+ }
+
++static void
++mime_part_set_content (GMimePart *part, const char *str)
++{
++ GMimeDataWrapper *content;
++ GMimeStream *stream;
++
++ stream = g_mime_stream_mem_new_with_buffer (str, strlen (str));
++ content = g_mime_data_wrapper_new_with_stream (stream, GMIME_CONTENT_ENCODING_DEFAULT);
++ g_object_unref (stream);
++
++ g_mime_part_set_content_object (part, content);
++ g_object_unref (content);
++}
++
+ int main (void)
+ {
+ g_mime_init (0);
+@@ -41,11 +55,11 @@
+ std::string message_id = GNKSA :: generate_message_id ("rebelbase.com");
+ g_mime_message_set_message_id (msg, message_id.c_str());
+ g_mime_message_set_subject (msg, "MAKE MONEY FAST");
+- g_mime_message_set_header (msg, "Organization", "Lazars Android Works");
+- g_mime_message_set_header (msg, "Newsgroups", "alt.test");
++ g_mime_object_set_header ((GMimeObject *) msg, "Organization", "Lazars Android Works");
++ g_mime_object_set_header ((GMimeObject *) msg, "Newsgroups", "alt.test");
+ GMimePart * part = g_mime_part_new_with_type ("text", "plain");
+ const char * cpch = "Hello World!";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ g_mime_message_set_mime_part (msg, GMIME_OBJECT(part));
+ // this should pass the tests
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+@@ -54,7 +68,7 @@
+
+ // all quoted
+ cpch = "> Hello World!\n> All quoted text.";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ std::vector<std::string> e (errors.begin(), errors.end());
+ check (errors.size() == 2)
+@@ -64,7 +78,7 @@
+
+ // mostly quoted
+ cpch = "> Hello World!\n> quoted\n> text\n> foo\n> bar\nnew text";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 1)
+@@ -73,14 +87,14 @@
+
+ // mostly quoted border condition: 20% of message is new content (should pass)
+ cpch = "> Hello World!\n> quoted\n> text\n> foo\nnew text";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ check (errors.empty())
+ check (goodness.is_ok())
+
+ // sig check: too long
+ cpch = "Hello!\n\n-- \nThis\nSig\nIs\nToo\nLong\n";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 1)
+@@ -95,7 +109,7 @@
+ "This sig line is greater than 80 characters wide. In fact, it's 84 characters wide.\n"
+ "This sig line is greater than 80 characters wide. In fact, it measures 95 characters in width!\n"
+ "This sig line is less than 80 characters wide.";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 1)
+@@ -104,7 +118,7 @@
+
+ // sig check: sig marker, no sig
+ cpch = "Hello!\n\n-- \n";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 1)
+@@ -113,7 +127,7 @@
+
+ // sig check: okay sig
+ cpch = "Hello!\n\n-- \nThis is a short, narrow sig.\nIt should pass.\n";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ check (errors.empty())
+ check (goodness.is_ok())
+@@ -146,7 +160,7 @@
+ "This sig line is greater than 80 characters wide. In fact, it's 84 characters wide.\n"
+ "This sig line is greater than 80 characters wide. In fact, it measures 95 characters in width!\n"
+ "This sig line is less than 80 characters wide.";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 1)
+@@ -155,7 +169,7 @@
+
+ // body empty
+ cpch = "\n\t\n \n-- \nThis is the sig.";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 2)
+@@ -163,7 +177,7 @@
+ check (e[0] == "Error: Message appears to have no new content.");
+ check (e[1] == "Error: Message is empty.");
+ cpch = "Some valid message.";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+
+ // empty subject
+ g_mime_message_set_subject (msg, "");
+@@ -175,17 +189,17 @@
+ g_mime_message_set_subject (msg, "Happy Lucky Feeling");
+
+ // newsgroups
+- g_mime_message_set_header (msg, "Newsgroups", "alt.test,unknown.group");
++ g_mime_object_set_header ((GMimeObject *) msg, "Newsgroups", "alt.test,unknown.group");
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 1)
+ check (goodness.is_warn())
+ check (e[0] == "Warning: The posting profile's server doesn't carry newsgroup\n\t\"unknown.group\".\n\tIf the group name is correct, switch profiles in the \"From:\"\n\tline or edit the profile with \"Edit|Manage Posting Profiles\".")
+- g_mime_message_set_header (msg, "Newsgroups", "alt.test");
++ g_mime_object_set_header ((GMimeObject *) msg, "Newsgroups", "alt.test");
+
+ // newsgroups w/o followup
+- g_mime_message_set_header (msg, "Newsgroups", "alt.test,alt.religion.kibology,alt.binaries.sounds.mp3.indie");
+- g_mime_header_remove (GMIME_OBJECT(msg)->headers, "Followup-To");
++ g_mime_object_set_header ((GMimeObject *) msg, "Newsgroups", "alt.test,alt.religion.kibology,alt.binaries.sounds.mp3.indie");
++ g_mime_header_list_remove (GMIME_OBJECT(msg)->headers, "Followup-To");
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 1)
+@@ -193,8 +207,8 @@
+ check (e[0] == "Warning: Crossposting without setting Followup-To header.")
+
+ // unknown follow-up
+- g_mime_message_set_header (msg, "Newsgroups", "alt.test");
+- g_mime_message_set_header (msg, "Followup-To", "alt.test,unknown.group");
++ g_mime_object_set_header ((GMimeObject *) msg, "Newsgroups", "alt.test");
++ g_mime_object_set_header ((GMimeObject *) msg, "Followup-To", "alt.test,unknown.group");
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 1)
+@@ -203,11 +217,11 @@
+ g_mime_object_remove_header (GMIME_OBJECT(msg), "Followup-To");
+
+ // top posting
+- g_mime_message_set_header (msg, "References", "<asdf@foo.com>");
++ g_mime_object_set_header ((GMimeObject *) msg, "References", "<asdf@foo.com>");
+ cpch = "How Fascinating!\n"
+ "\n"
+ "> Blah blah blah.\n";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 1)
+@@ -216,7 +230,7 @@
+ g_mime_object_remove_header (GMIME_OBJECT(msg), "References");
+
+ // top posting
+- g_mime_message_set_header (msg, "References", "<asdf@foo.com>");
++ g_mime_object_set_header ((GMimeObject *) msg, "References", "<asdf@foo.com>");
+ cpch = "How Fascinating!\n"
+ "\n"
+ "> Blah blah blah.\n"
+@@ -224,7 +238,7 @@
+ "-- \n"
+ "Pan shouldn't mistake this signature for\n"
+ "original content in the top-posting check.\n";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 1)
+@@ -238,7 +252,7 @@
+ "\n"
+ "--\n"
+ "This is my signature.\n";
+- g_mime_part_set_content (part, cpch, strlen(cpch));
++ mime_part_set_content (part, cpch);
+ MessageCheck :: message_check (msg, attribution, groups_our_server_has, errors, goodness);
+ e.assign (errors.begin(), errors.end());
+ check (errors.size() == 1)
+diff -ru pan-0.133.orig/pan/usenet-utils/message-check.cc pan-0.133/pan/usenet-utils/message-check.cc
+--- pan-0.133.orig/pan/usenet-utils/message-check.cc 2008-07-04 23:15:22.000000000 -0700
++++ pan-0.133/pan/usenet-utils/message-check.cc 2009-09-12 13:42:37.000000000 -0700
+@@ -30,6 +30,7 @@
+ #include "gnksa.h"
+ #include "message-check.h"
+ #include "text-massager.h"
++#include "mime-utils.h"
+
+ using namespace pan;
+
+@@ -62,7 +63,7 @@
+ std::string body (body_in.to_string());
+
+ // strip attribution
+- const char * attribution = g_mime_message_get_header (message, PAN_ATTRIBUTION);
++ const char * attribution = g_mime_object_get_header ((GMimeObject *) message, PAN_ATTRIBUTION);
+ if (attribution && *attribution)
+ {
+ std::string::size_type attrib_start_pos = body.find (attribution);
+@@ -99,7 +100,7 @@
+ GMimeMessage * message)
+ {
+ // if it's not a reply, then top-posting check is moot
+- if (g_mime_message_get_header (message, "References") == NULL)
++ if (g_mime_object_get_header ((GMimeObject *) message, "References") == NULL)
+ return;
+
+ bool quoted_found (false);
+@@ -414,7 +415,6 @@
+ }
+ }
+
+-
+ void
+ MessageCheck :: message_check (const GMimeMessage * message_const,
+ const StringView & attribution,
+@@ -432,7 +432,7 @@
+ check_subject (errors, goodness, g_mime_message_get_subject (message));
+
+ // check the author...
+- if (GNKSA::check_from (g_mime_message_get_header (message, "From"), true)) {
++ if (GNKSA::check_from (g_mime_object_get_header ((GMimeObject *) message, "From"), true)) {
+ errors.insert (_("Error: Bad email address."));
+ goodness.raise_to_warn ();
+ }
+@@ -440,17 +440,17 @@
+ // check the body...
+ TextMassager tm;
+ gboolean is_html;
+- char * body = g_mime_message_get_body (message, true, &is_html);
++ char * body = g_mime_message_get_body (message, &is_html);
+ if (is_html) {
+ errors.insert (_("Warning: Most newsgroups frown upon HTML posts."));
+ goodness.raise_to_warn ();
+ }
+ check_body (errors, goodness, tm, message, body, attribution);
+ g_free (body);
+-
++
+ // check the optional followup-to...
+ bool followup_to_set (false);
+- const char * cpch = g_mime_message_get_header (message, "Followup-To");
++ const char * cpch = g_mime_object_get_header ((GMimeObject *) message, "Followup-To");
+ if (cpch && *cpch) {
+ quarks_t groups;
+ get_nntp_rcpts (cpch, groups);
+@@ -460,7 +460,7 @@
+
+ // check the groups...
+ size_t group_qty (0);
+- cpch = g_mime_message_get_header (message, "Newsgroups");
++ cpch = g_mime_object_get_header ((GMimeObject *) message, "Newsgroups");
+ if (cpch && *cpch) {
+ quarks_t groups;
+ get_nntp_rcpts (cpch, groups);
+@@ -469,7 +469,7 @@
+ }
+
+ // one last error check
+- const InternetAddressList * list (g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO));
++ InternetAddressList * list (g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO));
+ const int n_to (internet_address_list_length (list));
+ if (!group_qty && !n_to) {
+ errors.insert (_("Error: No Recipients."));
+diff -ru pan-0.133.orig/pan/usenet-utils/mime-utils.cc pan-0.133/pan/usenet-utils/mime-utils.cc
+--- pan-0.133.orig/pan/usenet-utils/mime-utils.cc 2008-07-04 23:15:24.000000000 -0700
++++ pan-0.133/pan/usenet-utils/mime-utils.cc 2009-09-12 14:46:25.000000000 -0700
+@@ -455,10 +455,10 @@
+ part->stream = g_mime_stream_mem_new ();
+ if (part->type != ENC_PLAIN) {
+ part->filter_stream =
+- g_mime_stream_filter_new_with_stream (part->stream);
++ g_mime_stream_filter_new (part->stream);
+ part->filter = part->type == ENC_UU
+- ? g_mime_filter_basic_new_type (GMIME_FILTER_BASIC_UU_DEC)
+- : g_mime_filter_yenc_new (GMIME_FILTER_YENC_DIRECTION_DECODE);
++ ? g_mime_filter_basic_new (GMIME_CONTENT_ENCODING_UUENCODE, FALSE)
++ : g_mime_filter_yenc_new (FALSE);
+ g_mime_stream_filter_add (GMIME_STREAM_FILTER(part->filter_stream),
+ part->filter);
+ }
+@@ -722,18 +722,21 @@
+ {
+ // if the part is a multipart, check its subparts
+ if (GMIME_IS_MULTIPART (*part)) {
+- GList * subparts = GMIME_MULTIPART (*part)->subparts;
+- while (subparts) {
+- GMimeObject * subpart = (GMimeObject *) subparts->data;
++ GMimeMultipart *multipart = (GMimeMultipart *) *part;
++ int count = g_mime_multipart_get_count(multipart);
++ int i;
++
++ for (i = 0; i < count; i++) {
++ GMimeObject * subpart = g_mime_multipart_remove_at (multipart, i);
+ handle_uu_and_yenc_in_text_plain (&subpart);
+- subparts->data = subpart;
+- subparts = subparts->next;
++ g_mime_multipart_insert (multipart, i, subpart);
++ g_object_unref (subpart);
+ }
+ return;
+ }
+
+ // we assume that inlined yenc and uu are only in text/plain blocks
+- const GMimeContentType * content_type = g_mime_object_get_content_type (*part);
++ GMimeContentType * content_type = g_mime_object_get_content_type (*part);
+ if (!g_mime_content_type_is_type (content_type, "text", "plain"))
+ return;
+
+@@ -746,8 +749,8 @@
+ GMimeStream * stream = g_mime_data_wrapper_get_stream (content);
+ g_mime_stream_reset (stream);
+ GMimeStream * istream = g_mime_stream_buffer_new (stream, GMIME_STREAM_BUFFER_BLOCK_READ);
+- g_object_unref (stream);
+- g_object_unref (content);
++// g_object_unref (stream); //SKG if this is unrefed, when istream is unrefed below, content loses its stream
++// g_object_unref (content); //SKG gmime 2.4 don't unref returned data wrapper
+
+ // break it into separate parts for text, uu, and yenc pieces.
+ temp_parts_t parts;
+@@ -774,22 +777,22 @@
+ g_mime_part_set_filename (subpart, filename);
+
+ GMimeStream * subpart_stream = tmp_part->stream;
+- content = g_mime_data_wrapper_new_with_stream (subpart_stream, GMIME_PART_ENCODING_DEFAULT);
++ content = g_mime_data_wrapper_new_with_stream (subpart_stream, GMIME_CONTENT_ENCODING_DEFAULT);
+ g_mime_part_set_content_object (subpart, content);
+- g_mime_multipart_add_part (GMIME_MULTIPART (multipart), GMIME_OBJECT (subpart));
++ g_mime_multipart_add (GMIME_MULTIPART (multipart), GMIME_OBJECT (subpart));
+
+ g_object_unref (content);
+ g_object_unref (subpart);
+ }
+
+ // replace the old part with the new multipart
+- g_mime_object_unref (*part);
++ g_object_unref (*part);
+ *part = GMIME_OBJECT (multipart);
+ }
+
+ foreach (temp_parts_t, parts, it)
+ delete *it;
+- g_mime_stream_unref (istream);
++ g_object_unref (istream);
+ }
+ }
+
+@@ -831,15 +834,15 @@
+ GMimeStream * stream = g_mime_data_wrapper_get_stream (wrapper);
+ g_mime_stream_reset (stream);
+ g_mime_stream_cat_add_source (GMIME_STREAM_CAT (cat), stream);
+- g_object_unref (stream);
+- g_object_unref (wrapper);
++// g_object_unref (stream); //SKG if this is unrefed cat loses its stream
++// g_object_unref (wrapper); //SKG gmime 2.4 don't unref returned data wrapper
+ }
+
+ GMimeMessage * message = messages[0];
+ GMimeDataWrapper * wrapper = g_mime_part_get_content_object (GMIME_PART(message->mime_part));
+ g_mime_stream_reset (cat);
+ g_mime_data_wrapper_set_stream (wrapper, cat);
+- g_object_unref (wrapper);
++// g_object_unref (wrapper); //SKG gmime 2.4 don't unref returned data wrapper
+ g_object_unref (cat);
+ }
+
+@@ -1007,3 +1010,174 @@
+ {
+ normalize_subject (subject, STRIP_MULTIPART_NUMERATOR, setme);
+ }
++
++static GMimeObject *
++handle_multipart_mixed (GMimeMultipart *multipart, gboolean *is_html);
++
++static GMimeObject *
++handle_multipart_alternative (GMimeMultipart *multipart, gboolean *is_html)
++{
++ GMimeObject *mime_part, *text_part = NULL;
++ GMimeContentType *type;
++ int count = g_mime_multipart_get_count (multipart);
++
++ for (int i = 0; i < count; ++i) {
++ mime_part = g_mime_multipart_get_part (multipart, i);
++
++ type = g_mime_object_get_content_type (mime_part);
++ if (g_mime_content_type_is_type (type, "text", "*")) {
++ if (!text_part || !g_ascii_strcasecmp (type->subtype, "plain")) {
++ *is_html = !g_ascii_strcasecmp (type->subtype, "html");
++ text_part = mime_part;
++ }
++ }
++ }
++
++ return text_part;
++}
++
++static GMimeObject *
++handle_multipart_mixed (GMimeMultipart *multipart, gboolean *is_html)
++{
++ GMimeObject *mime_part, *text_part = NULL;
++ GMimeContentType *type, *first_type = NULL;
++ int count = g_mime_multipart_get_count (multipart);
++
++ for (int i = 0; i < count; ++i) {
++ mime_part = g_mime_multipart_get_part (multipart, i);
++
++ type = g_mime_object_get_content_type (mime_part);
++ if (GMIME_IS_MULTIPART (mime_part)) {
++ multipart = GMIME_MULTIPART (mime_part);
++ if (g_mime_content_type_is_type (type, "multipart", "alternative")) {
++ mime_part = handle_multipart_alternative (multipart, is_html);
++ if (mime_part)
++ return mime_part;
++ } else {
++ mime_part = handle_multipart_mixed (multipart, is_html);
++ if (mime_part && !text_part)
++ text_part = mime_part;
++ }
++ } else if (g_mime_content_type_is_type (type, "text", "*")) {
++ if (!g_ascii_strcasecmp (type->subtype, "plain")) {
++ /* we got what we came for */
++ *is_html = !g_ascii_strcasecmp (type->subtype, "html");
++ return mime_part;
++ }
++
++ /* if we haven't yet found a text part or if it is a type we can
++ * * understand and it is the first of that type, save it */
++ if (!text_part || (!g_ascii_strcasecmp (type->subtype, "plain") && (first_type &&
++ g_ascii_strcasecmp (type->subtype, first_type->subtype) != 0))) {
++ *is_html = !g_ascii_strcasecmp (type->subtype, "html");
++ text_part = mime_part;
++ first_type = type;
++ }
++ }
++ }
++
++ return text_part;
++}
++
++#define NEEDS_DECODING(encoding) ((encoding == GMIME_CONTENT_ENCODING_BASE64) || \
++ (encoding == GMIME_CONTENT_ENCODING_UUENCODE) || \
++ (encoding == GMIME_CONTENT_ENCODING_QUOTEDPRINTABLE))
++
++static const char *
++g_mime_part_get_content (const GMimePart *mime_part, size_t *len)
++{
++ const char *retval = NULL;
++ GMimeStream *stream;
++
++ g_return_val_if_fail (GMIME_IS_PART (mime_part), NULL);
++
++ if (!mime_part->content || !mime_part->content->stream) {
++ g_warning ("no content set on this mime part");
++ return NULL;
++ }
++
++ stream = mime_part->content->stream;
++ if (!GMIME_IS_STREAM_MEM (stream) || NEEDS_DECODING (mime_part->content->encoding)) {
++ /* Decode and cache this mime part's contents... */
++ GMimeStream *cache;
++ GByteArray *buf;
++
++ buf = g_byte_array_new ();
++ cache = g_mime_stream_mem_new_with_byte_array (buf);
++
++ g_mime_data_wrapper_write_to_stream (mime_part->content, cache);
++
++ g_mime_data_wrapper_set_stream (mime_part->content, cache);
++ g_mime_data_wrapper_set_encoding (mime_part->content, GMIME_CONTENT_ENCODING_DEFAULT);
++ g_object_unref (cache);
++
++ *len = buf->len;
++ retval = (char *) buf->data;
++ } else {
++ GByteArray *buf = GMIME_STREAM_MEM (stream)->buffer;
++ off_t end_index = (off_t) buf->len;
++ off_t start_index = 0;
++
++ /* check boundaries */
++ if (stream->bound_start >= 0)
++ start_index = CLAMP (stream->bound_start, 0, (off_t) buf->len);
++ if (stream->bound_end >= 0)
++ end_index = CLAMP (stream->bound_end, 0, (off_t) buf->len);
++ if (end_index < start_index)
++ end_index = start_index;
++
++ *len = end_index - start_index;
++ retval = (char *) buf->data + start_index;
++ }
++
++ return retval;
++}
++
++char *g_mime_message_get_body (GMimeMessage *message, gboolean *is_html)
++{
++ GMimeObject *mime_part = NULL;
++ GMimeContentType *type;
++ GMimeMultipart *multipart;
++ const char *content;
++ char *body = NULL;
++ size_t len = 0;
++
++ g_return_val_if_fail (GMIME_IS_MESSAGE (message), NULL);
++ g_return_val_if_fail (is_html != NULL, NULL);
++
++ type = g_mime_object_get_content_type (message->mime_part);
++ if (GMIME_IS_MULTIPART (message->mime_part)) {
++ /* let's see if we can find a body in the multipart */
++ multipart = GMIME_MULTIPART (message->mime_part);
++ if (g_mime_content_type_is_type (type, "multipart", "alternative"))
++ mime_part = handle_multipart_alternative (multipart, is_html);
++ else
++ mime_part = handle_multipart_mixed (multipart, is_html);
++ } else if (g_mime_content_type_is_type (type, "text", "*")) {
++ /* this *has* to be the message body */
++ if (g_mime_content_type_is_type (type, "text", "html"))
++ *is_html = TRUE;
++ else
++ *is_html = FALSE;
++ mime_part = message->mime_part;
++ }
++
++ if (mime_part != NULL) {
++ content = g_mime_part_get_content (GMIME_PART (mime_part), &len);
++ body = g_strndup (content, len);
++ }
++
++ return body;
++}
++
++void g_mime_message_add_recipients_from_string (GMimeMessage *message, GMimeRecipientType type, const char *string)
++{
++ InternetAddressList *addrlist;
++ if ((addrlist = internet_address_list_parse_string (string))) {
++ for (int i = 0; i < internet_address_list_length (addrlist); ++i) {
++ InternetAddress *ia = internet_address_list_get_address (addrlist, i);
++ if (INTERNET_ADDRESS_IS_MAILBOX(ia))
++ g_mime_message_add_recipient (message, type, internet_address_get_name(ia), internet_address_mailbox_get_addr(INTERNET_ADDRESS_MAILBOX(ia)));
++ }
++ }
++}
+diff -ru pan-0.133.orig/pan/usenet-utils/mime-utils.h pan-0.133/pan/usenet-utils/mime-utils.h
+--- pan-0.133.orig/pan/usenet-utils/mime-utils.h 2007-08-01 09:59:59.000000000 -0700
++++ pan-0.133/pan/usenet-utils/mime-utils.h 2009-09-12 13:20:11.000000000 -0700
+@@ -64,4 +64,8 @@
+ };
+ }
+
++char *g_mime_message_get_body (GMimeMessage *message, gboolean *is_html);
++void g_mime_message_add_recipients_from_string (GMimeMessage *message, GMimeRecipientType type, const char *string);
++
++
+ #endif
+diff -ru pan-0.133.orig/pan.spec pan-0.133/pan.spec
+--- pan-0.133.orig/pan.spec 2008-07-29 19:05:05.000000000 -0700
++++ pan-0.133/pan.spec 2009-09-12 14:58:20.000000000 -0700
+@@ -15,14 +15,14 @@
+
+ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+ BuildRequires: glib2-devel >= 2.4.0
+-BuildRequires: gmime-devel >= 2.1.9
++BuildRequires: gmime-devel >= 2.3.5
+ BuildRequires: gtk2-devel >= 2.4.0
+ BuildRequires: pcre-devel >= 5.0
+ %{!?_without_gtkspell:BuildRequires: gtkspell-devel >= 2.0.7}
+
+ Requires: pcre >= 5.0
+ Requires: glib2 >= 2.4.0
+-Requires: gmime >= 2.1.9
++Requires: gmime >= 2.3.5
+ Requires: gtk2 >= 2.4.0
+ %{!?_without_gtkspell:Requires: gtkspell >= 2.0.7}
+
diff --git a/source/xap/pidgin/pidgin.SlackBuild b/source/xap/pidgin/pidgin.SlackBuild
index fb7def08f..d61713b60 100755
--- a/source/xap/pidgin/pidgin.SlackBuild
+++ b/source/xap/pidgin/pidgin.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,12 +22,21 @@
PKGNAM=pidgin
-VERSION=${VERSION:-2.5.9}
-PIDGINENC=${PIDGINENC:-3.0}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-2.7.0}
+PIDGINENC=${PIDGINENC:-3.1}
BUILD=${BUILD:-1}
-NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+NUMJOBS=${NUMJOBS:-" -j6 "}
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -38,18 +47,23 @@ mkdir -p $TMP $PKG
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
+ ARCHQUADLET=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
+ ARCHQUADLET=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+ ARCHQUADLET=""
elif [ "$ARCH" = "arm" ]; then
- SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "armel" ]; then
SLKCFLAGS="-O2 -march=armv4t"
LIBDIRSUFFIX=""
+ ARCHQUADLET="-gnueabi"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ARCHQUADLET=""
fi
cd $TMP
@@ -80,15 +94,19 @@ CXXFLAGS="$SLKCFLAGS" \
--enable-dbus \
--enable-gnutls=yes \
--enable-nss=no \
+ --disable-vv \
--enable-gtkspell \
--enable-cyrus-sasl \
- --with-perl-lib=vendor \
+ --enable-perl \
--disable-meanwhile \
--disable-avahi \
--disable-nm \
--program-prefix= \
--program-suffix= \
- --build=$ARCH-slackware-linux
+ --build=$ARCH-slackware-linux$ARCHQUADLET || exit 1
+
+# Fix install location:
+grep -lr -- "lib/perl" . | xargs sed -i 's?lib/perl?lib'"$LIBDIRSUFFIX"'/perl?g'
# Build and install:
make $NUMJOBS || make || exit 1
@@ -99,11 +117,21 @@ eval $(perl '-V:archlib')
eval $(perl '-V:privlib')
VENDORPERL="$(echo $archlib | sed -e "s/perl5/perl5\/vendor_perl/")"
-find $PKG -type f -name perllocal.pod -exec mv {} $PKG/$VENDORPERL/Pidgin.pod \;
+mkdir -vpm755 $PKG/$VENDORPERL/
+find $PKG -type f -name perllocal.pod -exec mv -fv {} $PKG/$VENDORPERL/Pidgin.pod \;
+# Fix install location for 64bit:
+sed -i 's?/lib/perl?/lib'"$LIBDIRSUFFIX"'/perl?g' $PKG/$VENDORPERL/Pidgin.pod
mkdir -p $PKG/usr/man/man3
-find $PKG/usr/share/man -type f -name *.3 -exec mv {} $PKG/usr/man/man3 \;
+find $PKG/usr/share/man -type f -name *.3 -exec mv -fv {} $PKG/usr/man/man3 \;
rm -rf $PKG/usr/share/man
rm -r $PKG$privlib
+# This is empty:
+rmdir $PKG/usr/lib$LIBDIRSUFFIX/perl[0-9]*/$ARCH-linux-thread-multi/
+
+# In case of unwanted junk dirs on 64-bit... this may fail, but doesn't hurt:
+rmdir $PKG/usr/lib/perl[0-9]*/$ARCH-linux-thread-multi/
+rmdir $PKG/usr/lib/perl[0-9]*
+rmdir $PKG/usr/lib
# This removes our DESTDIR from the packlist filenames, to keep perl's
# internal inventories consistent and correct.
@@ -142,7 +170,11 @@ done
--with-nspr-libs=/usr/lib${LIBDIRSUFFIX}/seamonkey/ \
--program-prefix="" \
--program-suffix="" \
- --build=$ARCH-slackware-linux
+ --build=$ARCH-slackware-linux$ARCHQUADLET || exit 1
+
+ # Fix install location:
+ grep -lr -- "lib/perl" . | xargs sed -i 's?lib/perl?lib'"$LIBDIRSUFFIX"'/perl?g'
+
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
) || exit 1
diff --git a/source/xap/sane/sane-frontends-1.0.14-sane_cap_always_settable.diff b/source/xap/sane/sane-frontends-1.0.14-sane_cap_always_settable.diff
new file mode 100644
index 000000000..98f2715ac
--- /dev/null
+++ b/source/xap/sane/sane-frontends-1.0.14-sane_cap_always_settable.diff
@@ -0,0 +1,11 @@
+diff -Nur sane-backends-1.0.20.orig/include/sane/sane.h sane-backends-1.0.20/include/sane/sane.h
+--- sane-backends-1.0.20.orig/include/sane/sane.h 2009-04-23 14:59:23.000000000 -0500
++++ sane-backends-1.0.20/include/sane/sane.h 2010-01-19 18:24:29.954762582 -0600
+@@ -115,6 +115,7 @@
+ #define SANE_CAP_AUTOMATIC (1 << 4)
+ #define SANE_CAP_INACTIVE (1 << 5)
+ #define SANE_CAP_ADVANCED (1 << 6)
++#define SANE_CAP_ALWAYS_SETTABLE (1 << 7)
+
+ #define SANE_OPTION_IS_ACTIVE(cap) (((cap) & SANE_CAP_INACTIVE) == 0)
+ #define SANE_OPTION_IS_SETTABLE(cap) (((cap) & SANE_CAP_SOFT_SELECT) != 0)
diff --git a/source/xap/sane/sane.SlackBuild b/source/xap/sane/sane.SlackBuild
index 2d82f09e0..95daed9de 100755
--- a/source/xap/sane/sane.SlackBuild
+++ b/source/xap/sane/sane.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,11 +20,20 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=1.0.19
-BACKVER=1.0.19
+VERSION=1.0.21
+BACKVER=1.0.21
FRONTVER=1.0.14
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-4}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -37,6 +46,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
@@ -52,6 +64,11 @@ rm -rf sane-backends-$BACKVER
tar xvf $CWD/sane-backends-$BACKVER.tar.bz2 || exit 1
cd sane-backends-$BACKVER
chown -R root:root .
+
+# Put the SANE_CAP_ALWAYS_SETTABLE definition back until
+# everything else catches up with the API change...
+zcat $CWD/sane-frontends-1.0.14-sane_cap_always_settable.diff.gz | patch -p1 || exit 1
+
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
@@ -69,11 +86,10 @@ make $NUMJOBS || make || exit 1
make install || exit 1
make install DESTDIR=$PKG || exit 1
-# Add the default udev rules, and until it's handled upstream,
-# fix their syntax work with recent versions of udev
+# Add the default udev rules
mkdir -p $PKG/lib/udev/rules.d
-sed s/SYSFS/ATTRS/g tools/udev/libsane.rules \
- > $PKG/lib/udev/rules.d/80-libsane.rules
+cat tools/udev/libsane.rules > $PKG/lib/udev/rules.d/80-libsane.rules
+
# Add the hal fdi file
mkdir -p $PKG/usr/share/hal/fdi/policy/10osvendor/
cat tools/hal/libsane.fdi \
@@ -85,6 +101,7 @@ rm -rf sane-frontends-$FRONTVER
tar xvf $CWD/sane-frontends-$FRONTVER.tar.bz2 || exit 1
cd sane-frontends-$FRONTVER
chown -R root:root .
+
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
diff --git a/source/xap/seamonkey/pkgconfig/seamonkey-gtkmozembed.pc b/source/xap/seamonkey/pkgconfig/seamonkey-gtkmozembed.pc
new file mode 100644
index 000000000..e5053267d
--- /dev/null
+++ b/source/xap/seamonkey/pkgconfig/seamonkey-gtkmozembed.pc
@@ -0,0 +1,11 @@
+prefix=/usr
+exec_prefix=/usr
+libdir=/usr/@LIB@/seamonkey-@VERSION@
+includedir=/usr/include/seamonkey-@VERSION@
+
+Name: Mozilla Gtk Embedding Widget
+Description: Mozilla Embedding Widget for Gtk+
+Version: @VERSION@
+Requires: seamonkey-xpcom = @VERSION@
+Libs: -L${libdir} -lgtkembedmoz
+Cflags: -I${includedir}/gtkembedmoz
diff --git a/source/xap/seamonkey/pkgconfig/seamonkey-js.pc b/source/xap/seamonkey/pkgconfig/seamonkey-js.pc
new file mode 100644
index 000000000..31433be28
--- /dev/null
+++ b/source/xap/seamonkey/pkgconfig/seamonkey-js.pc
@@ -0,0 +1,11 @@
+prefix=/usr
+exec_prefix=/usr
+libdir=/usr/@LIB@/seamonkey-@VERSION@
+includedir=/usr/include/seamonkey-@VERSION@
+
+Name: JavaScript
+Description: The Mozilla JavaScript Library
+Version: @VERSION@
+Requires: seamonkey-nspr >= 4.7.1
+Libs: -L${libdir} -lmozjs
+Cflags: -I${includedir}/js -DXP_UNIX -DJS_THREADSAFE
diff --git a/source/xap/seamonkey/pkgconfig/seamonkey-nspr.pc b/source/xap/seamonkey/pkgconfig/seamonkey-nspr.pc
new file mode 100644
index 000000000..756e996d6
--- /dev/null
+++ b/source/xap/seamonkey/pkgconfig/seamonkey-nspr.pc
@@ -0,0 +1,12 @@
+prefix=/usr
+exec_prefix=/usr
+libdir=/usr/@LIB@/seamonkey-@VERSION@
+includedir=/usr/include/seamonkey-@VERSION@
+
+Name: NSPR
+Description: The Netscape Portable Runtime
+Version: 4.7.1
+Libs: -L/usr/@LIB@/seamonkey-@VERSION@ -lplds4 -lplc4 -lnspr4 -lpthread -ldl
+Cflags: -I/usr/include/seamonkey-@VERSION@/nspr
+
+
diff --git a/source/xap/seamonkey/pkgconfig/seamonkey-nss.pc b/source/xap/seamonkey/pkgconfig/seamonkey-nss.pc
new file mode 100644
index 000000000..b929f202f
--- /dev/null
+++ b/source/xap/seamonkey/pkgconfig/seamonkey-nss.pc
@@ -0,0 +1,11 @@
+prefix=/usr
+exec_prefix=/usr
+libdir=/usr/@LIB@/seamonkey-@VERSION@
+includedir=/usr/include/seamonkey-@VERSION@
+
+Name: NSS
+Description: Mozilla Network Security Services
+Version: @VERSION@
+Requires: seamonkey-nspr >= 4.7.1
+Libs: -L${libdir} -lnss3 -lsmime3 -lssl3 -lsoftokn3
+Cflags: -I${includedir}/nss
diff --git a/source/xap/seamonkey/pkgconfig/seamonkey-plugin.pc b/source/xap/seamonkey/pkgconfig/seamonkey-plugin.pc
new file mode 100644
index 000000000..4550444af
--- /dev/null
+++ b/source/xap/seamonkey/pkgconfig/seamonkey-plugin.pc
@@ -0,0 +1,10 @@
+prefix=/usr
+exec_prefix=/usr
+libdir=/usr/@LIB@/seamonkey-@VERSION@
+includedir=/usr/include/seamonkey-@VERSION@
+
+Name: Mozilla Plug-In API
+Description: Mozilla Plug-In API
+Version: @VERSION@
+Requires: seamonkey-nspr >= 4.7.1
+Cflags: -I${includedir}/java -I${includedir}/plugin
diff --git a/source/xap/seamonkey/pkgconfig/seamonkey-xpcom.pc b/source/xap/seamonkey/pkgconfig/seamonkey-xpcom.pc
new file mode 100644
index 000000000..532005671
--- /dev/null
+++ b/source/xap/seamonkey/pkgconfig/seamonkey-xpcom.pc
@@ -0,0 +1,12 @@
+prefix=/usr
+exec_prefix=/usr
+libdir=/usr/@LIB@/seamonkey-@VERSION@
+includedir=/usr/include/seamonkey-@VERSION@
+idldir=/usr/share/idl/seamonkey-@VERSION@
+
+Name: XPCOM
+Description: The Mozilla Cross Platform Component Library
+Version: @VERSION@
+Requires: seamonkey-nspr >= 4.7.1
+Libs: -L${libdir} -lxpcom
+Cflags: -I${includedir} -I${includedir}/xpcom -I${includedir}/string
diff --git a/source/xap/seamonkey/seamonkey.SlackBuild b/source/xap/seamonkey/seamonkey.SlackBuild
index a08695589..af563c092 100755
--- a/source/xap/seamonkey/seamonkey.SlackBuild
+++ b/source/xap/seamonkey/seamonkey.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,27 +20,23 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-VERSION=${VERSION:-1.1.17}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-$(basename $(ls seamonkey-*.tar.* | cut -d - -f 2 | rev | cut -f 3- -d . | rev) .source)}
BUILD=${BUILD:-1}
-
NUMJOBS=${NUMJOBS:-" -j7 "}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "s390" ]; then
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
-elif [ "$ARCH" = "arm" ]; then
- SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "armel" ]; then
- SLKCFLAGS="-O2 -march=armv4t"
+else
LIBDIRSUFFIX=""
fi
@@ -51,15 +47,9 @@ rm -rf $PKG
mkdir -p $TMP $PKG/usr
cd $TMP
-rm -rf mozilla
-tar xvf $CWD/seamonkey-${VERSION}.source.tar.xz || exit 1
-cd mozilla || exit 1
-
-# Add /usr/lib/mozilla/plugins to MOZ_PLUGINS_PATH:
-zcat $CWD/seamonkey.moz_plugin_path.diff.gz \
- | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \
- | patch -p1 --verbose || exit 1
-rm -f xpfe/bootstrap/mozilla.in.orig
+rm -rf comm-1.9.1
+tar xvf $CWD/seamonkey-${VERSION}.source.tar.?z* || exit 1
+cd comm-1.9.1 || exit 1
# Make sure the perms/ownerships are sane:
chown -R root:root .
@@ -71,7 +61,7 @@ find . \
# Fix a long standing bug that's prevented staying current on GTK+.
# Thanks to the BLFS folks. :-)
-cat >> layout/build/Makefile.in << EOF
+cat >> mozilla/layout/build/Makefile.in << EOF
ifdef MOZ_ENABLE_CANVAS
EXTRA_DSO_LDOPTS += \$(XLDFLAGS) -lX11 -lXrender
@@ -83,7 +73,7 @@ chown -R root:root .
BUILD_OFFICIAL=1 MOZILLA_OFFICIAL=1 \
./configure --prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
- --enable-optimize="$CFLAGS" \
+ --enable-optimize=-O2 \
--disable-debug \
--with-default-mozilla-five-home=/usr/lib${LIBDIRSUFFIX}/seamonkey-${VERSION} \
--enable-strip \
@@ -99,7 +89,6 @@ BUILD_OFFICIAL=1 MOZILLA_OFFICIAL=1 \
--without-system-nspr \
--with-system-zlib \
--with-system-jpeg \
- --with-system-png \
--with-system-mng \
--enable-application=suite \
--enable-xft \
@@ -107,15 +96,25 @@ BUILD_OFFICIAL=1 MOZILLA_OFFICIAL=1 \
--target=$ARCH-slackware-linux \
--build=$ARCH-slackware-linux
-BUILD_OFFICIAL=1 MOZILLA_OFFICIAL=1 make $NUMJOBS -s export || exit 1
-BUILD_OFFICIAL=1 MOZILLA_OFFICIAL=1 make $NUMJOBS -s libs || exit 1
-BUILD_OFFICIAL=1 MOZILLA_OFFICIAL=1 DESTDIR=$PKG make install || exit 1
+ # --with-system-png
+make $NUMJOBS || exit 1
+DESTDIR=$PKG make install || exit 1
-# Install nss headers.
-mkdir -p $PKG/usr/include/seamonkey-${VERSION}/nss
-find security/nss/lib -name "*.h" -type f -exec cp -a {} $PKG/usr/include/seamonkey-${VERSION}/nss \;
-chown -R root:root $PKG/usr/include/seamonkey-${VERSION}/nss
-chmod 644 $PKG/usr/include/seamonkey-${VERSION}/nss/*
+# Install js/nspr/nss headers.
+for includedir in js nspr nspr/obsolete nspr/private nss plugin xpcom ; do
+ mkdir -p $PKG/usr/include/seamonkey-${VERSION}/$includedir
+ cp -aL mozilla/dist/include/${includedir}/*.h $PKG/usr/include/seamonkey-${VERSION}/$includedir
+done
+cp -aL mozilla/dist/include/js/*.tbl mozilla/dist/include/js/*.msg $PKG/usr/include/seamonkey-${VERSION}/js
+cp -aL mozilla/dist/include/*.h $PKG/usr/include/seamonkey-${VERSION}
+cp -aL mozilla/dist/sdk/include/* $PKG/usr/include/seamonkey-${VERSION}
+( cd $PKG/usr/include/seamonkey-${VERSION}/plugin
+ for file in ../j*.h ; do
+ ln -sf $file .
+ done
+)
+chown -R root:root $PKG/usr/include/seamonkey-${VERSION}
+find $PKG/usr/include/seamonkey-${VERSION} -name "*.h" -type f -exec chmod 644 {} \;
# Create a more generic include files symlink:
( cd $PKG/usr/include
if [ ! -e seamonkey ]; then
@@ -123,23 +122,23 @@ chmod 644 $PKG/usr/include/seamonkey-${VERSION}/nss/*
fi
)
-# Let the nspr be found by gxine:
-( cd $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig; ln -s seamonkey-nspr.pc nspr.pc )
-
-# A Better Way to handle the problem below is simply to add /usr/lib/seamonkey
-# to /etc/ld.so.conf. After all, the various Mozilla offshoots all set an
-# LD_LIBRARY_PATH to make sure *they* use the right libraries anyway, and as
-# far as I know seamonkey has the only set of Mozilla development libraries
-# right now. Plus, doing it this way doesn't stomp all over efforts by people
-# who would like to use seamonkey-nss-solibs.
+# Install pkgconfig files:
+mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig
+for file in $CWD/pkgconfig/* ; do
+cat $file \
+ | sed -e "s/@LIB@/lib${LIBDIRSUFFIX}/" \
+ -e "s/@VERSION@/$VERSION/" \
+ > $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/$(basename $file)
+done
-## Link some libraries into /usr/lib. Unless this is done, some things (like gxine)
-## will be unable to load them, even if they linked with them successfully.
-#( cd $PKG/usr/lib${LIBDIRSUFFIX} && ( for somelib in libmozjs.so libnspr4.so libnss3.so libplc4.so libplds4.so libsmime3.so libsoftokn3.so libssl3.so ; do
-# # Link to it:
-# ln -sf seamonkey-${VERSION}/$somelib .
-# done )
-#)
+# Add symlinks for the pkgconfig files:
+( cd $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig
+ ln -s seamonkey-js.pc js.pc
+ ln -s seamonkey-nspr.pc nspr.pc
+ ln -s seamonkey-nss.pc nss.pc
+ ln -s seamonkey-plugin.pc plugin.pc
+ ln -s seamonkey-xpcom.pc xpcom.pc
+)
# Compress and if needed symlink the man pages:
if [ -d $PKG/usr/man ]; then
@@ -163,7 +162,7 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
# This remains the standard plugin directory for all browsers.
mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/mozilla/plugins
-# Some software won't compile without this symlink:
+# This is traditional.
( cd $PKG/usr/lib${LIBDIRSUFFIX}
if [ ! -e seamonkey ]; then
ln -sf seamonkey-${VERSION} seamonkey
@@ -180,9 +179,11 @@ chown -R root:root $PKG/usr/share/pixmaps
chmod 644 $PKG/usr/share/pixmaps/*
mkdir -p $PKG/usr/doc/seamonkey-$VERSION
-cp -a \
- LEGAL LICENSE README.txt \
- $PKG/usr/doc/seamonkey-$VERSION
+( cd mozilla
+ cp -a \
+ LEGAL LICENSE README.txt \
+ $PKG/usr/doc/seamonkey-$VERSION
+)
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
@@ -198,8 +199,8 @@ mkdir -p $TMP/package-seamonkey-solibs/usr/doc
cp -a $PKG/usr/doc/seamonkey-$VERSION $TMP/package-seamonkey-solibs/usr/doc
mkdir -p $TMP/package-seamonkey-solibs/usr/lib${LIBDIRSUFFIX}/seamonkey-${VERSION}
for file in libfreebl3.chk libfreebl3.so libmozjs.so libnspr4.so libnss3.so \
- libnssckbi.so libplc4.so libplds4.so libsmime3.so libsoftokn3.chk \
- libsoftokn3.so libssl3.so ; do
+ libnssckbi.so libnssutil3.so libplc4.so libplds4.so libsmime3.so \
+ libsoftokn3.chk libsoftokn3.so libssl3.so ; do
cp -a $PKG/usr/lib${LIBDIRSUFFIX}/seamonkey-${VERSION}/$file \
$TMP/package-seamonkey-solibs/usr/lib${LIBDIRSUFFIX}/seamonkey-${VERSION}
done
diff --git a/source/xap/seamonkey/seamonkey.moz_plugin_path.diff b/source/xap/seamonkey/seamonkey.moz_plugin_path.diff
deleted file mode 100644
index f967580b6..000000000
--- a/source/xap/seamonkey/seamonkey.moz_plugin_path.diff
+++ /dev/null
@@ -1,16 +0,0 @@
---- ./xpfe/bootstrap/mozilla.in.orig 2006-08-20 17:44:28.000000000 -0500
-+++ ./xpfe/bootstrap/mozilla.in 2007-02-19 21:25:32.000000000 -0600
-@@ -60,6 +60,13 @@
- MOZ_PIS_SESSION_PID="$$"
- MOZ_PIS_USER_DIR="${MOZ_USER_DIR}"
- export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR
-+ # Include /usr/lib/mozilla/plugins in the plugin path:
-+ if [ "$MOZ_PLUGIN_PATH" ] ; then
-+ MOZ_PLUGIN_PATH=$MOZ_PLUGIN_PATH:${moz_libdir}/plugins:/usr/lib/mozilla/plugins
-+ else
-+ MOZ_PLUGIN_PATH=${moz_libdir}/plugins:/usr/lib/mozilla/plugins
-+ fi
-+ export MOZ_PLUGIN_PATH
-
- case "${1}" in
- "start")
diff --git a/source/xap/seamonkey/slack-desc b/source/xap/seamonkey/slack-desc
index 978c1d09b..af6ee2408 100644
--- a/source/xap/seamonkey/slack-desc
+++ b/source/xap/seamonkey/slack-desc
@@ -10,9 +10,9 @@ seamonkey: SeaMonkey (an open-source web browser suite)
seamonkey:
seamonkey: The SeaMonkey browser suite. SeaMonkey features a state-of-the-art
seamonkey: web browser and powerful email client, as well as a WYSIWYG web page
-seamonkey: composer and a feature-rich IRC chat client. For web developers,
-seamonkey: mozilla.org's DOM inspector and JavaScript debugger tools are
-seamonkey: included as well.
+seamonkey: composer and a feature-rich IRC chat client.
+seamonkey:
+seamonkey:
seamonkey:
seamonkey: Visit the SeaMonkey project at this URL:
seamonkey: http://www.mozilla.org/projects/seamonkey/
diff --git a/source/xap/windowmaker/windowmaker.SlackBuild b/source/xap/windowmaker/windowmaker.SlackBuild
index 8736f0589..15e32edfc 100755
--- a/source/xap/windowmaker/windowmaker.SlackBuild
+++ b/source/xap/windowmaker/windowmaker.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +22,20 @@
VERSION=20060427cvs
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
NUMJOBS=${NUMJOBS:-" -j7 "}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
@@ -36,11 +45,15 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-windowmaker
+
rm -rf $PKG
mkdir -p $TMP $PKG
@@ -50,6 +63,9 @@ tar xvf $CWD/WindowMaker-$VERSION.tar.bz2 || exit 1
cd WindowMaker-$VERSION || exit 1
zcat $CWD/windowmaker.no-mmx.diff.gz | patch -p1 --verbose -F 3 || exit 1
+
+zcat $CWD/windowmaker.png.1.4.0.diff.gz | patch -p1 --verbose || exit 1
+
sh autogen.sh
chown -R root:root .
@@ -89,6 +105,15 @@ mkdir -p $PKG/usr/doc/WindowMaker-$VERSION
cp -a \
AUTHORS BUGFORM BUGS COPYING COPYING.WTFPL FAQ FAQ.I18N FAQ.I18N.cs FAQ.I18N.sk INSTALL INSTALL.cs INSTALL.es INSTALL.fr INSTALL.pt INSTALL.sk MIRRORS NEWS README README.definable-cursor README.pt TODO \
$PKG/usr/doc/WindowMaker-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
cd $TMP
rm -rf WindowMaker-extra-0.1
tar xvf $CWD/WindowMaker-extra-0.1.tar.gz || exit 1
@@ -98,7 +123,7 @@ CFLAGS="$SLKCFLAGS" \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--with-iconsdir=/usr/share/pixmaps \
- $ARCH-slackware-linux
+ --build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
@@ -107,8 +132,8 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
mkdir -p $PKG/etc/X11/xinit
-cat $CWD/xinitrc.wmaker > $PKG/etc/X11/xinit/xinitrc.wmaker
-chmod 755 $PKG/etc/X11/xinit/xinitrc.wmaker
+zcat $CWD/xinitrc.wmaker.gz > $PKG/etc/X11/xinit/xinitrc.wmaker
+chmod 0755 $PKG/etc/X11/xinit/xinitrc.wmaker
gzip -9 $PKG/usr/man/man1/* $PKG/usr/man/sk/man1/*
diff --git a/source/xap/windowmaker/windowmaker.png.1.4.0.diff b/source/xap/windowmaker/windowmaker.png.1.4.0.diff
new file mode 100644
index 000000000..a6359c4b2
--- /dev/null
+++ b/source/xap/windowmaker/windowmaker.png.1.4.0.diff
@@ -0,0 +1,11 @@
+--- ./wrlib/load.c.orig 2008-04-30 15:45:26.000000000 -0500
++++ ./wrlib/load.c 2010-02-11 15:39:38.000000000 -0600
+@@ -348,7 +348,7 @@
+
+ #ifdef USE_PNG
+ /* check for PNG */
+- if (png_check_sig(buffer, 8))
++ if (!png_sig_cmp(buffer, 0, 8))
+ return IM_PNG;
+ #endif
+
diff --git a/source/xap/windowmaker/xinitrc.wmaker b/source/xap/windowmaker/xinitrc.wmaker
index 4e28503b1..09ca61b4f 100644
--- a/source/xap/windowmaker/xinitrc.wmaker
+++ b/source/xap/windowmaker/xinitrc.wmaker
@@ -3,8 +3,8 @@
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
-sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
-sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
+sysresources=/etc/X11/xinit/.Xresources
+sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
diff --git a/source/xap/xchat/xchat.SlackBuild b/source/xap/xchat/xchat.SlackBuild
index 1f05472bf..8058f9043 100755
--- a/source/xap/xchat/xchat.SlackBuild
+++ b/source/xap/xchat/xchat.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,8 +22,17 @@
VERSION=2.8.6
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-5}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
diff --git a/source/xap/xfce/patches/exo_quoting_fix.diff b/source/xap/xfce/patches/exo_quoting_fix.diff
deleted file mode 100644
index ac6544576..000000000
--- a/source/xap/xfce/patches/exo_quoting_fix.diff
+++ /dev/null
@@ -1,66 +0,0 @@
-Index: exo-open/main.c
-===================================================================
---- exo-open/main.c (revision 30250)
-+++ exo-open/main.c (revision 30251)
-@@ -36,7 +36,17 @@
- #include <exo/exo.h>
-
-
-+/**
-+ * For testing this code the following commands should work:
-+ *
-+ * exo-open --launch WebBrowser http://xfce.org (bug #5461).
-+ * exo-open http://xfce.org
-+ * exo-open --launch TerminalEmulator ./script.sh 'something with a space' 'nospace' (bug #5132).
-+ * exo-open --launch TerminalEmulator ssh -l username some.host.com
-+ **/
-
-+
-+
- static gboolean opt_help = FALSE;
- static gboolean opt_version = FALSE;
- static gchar *opt_launch = NULL;
-@@ -143,6 +153,8 @@
- {
- if (argc > 1)
- {
-+ /* NOTE: see the comment at the top of this document! */
-+
- /* combine all specified parameters to one parameter string */
- join = g_string_new (NULL);
- for (i = 1; argv[i] != NULL; i++)
-@@ -150,11 +162,18 @@
- /* separate the arguments */
- if (i > 1)
- join = g_string_append_c (join, ' ');
--
-- /* append the quoted argument */
-- quoted = g_shell_quote (argv[i]);
-- join = g_string_append (join, quoted);
-- g_free (quoted);
-+
-+ /* only quote arguments with spaces */
-+ if (strchr (argv[i], ' ') != NULL)
-+ {
-+ quoted = g_shell_quote (argv[i]);
-+ join = g_string_append (join, quoted);
-+ g_free (quoted);
-+ }
-+ else
-+ {
-+ join = g_string_append (join, argv[i]);
-+ }
- }
- parameter = g_string_free (join, FALSE);
- }
-@@ -163,6 +182,10 @@
- parameter = NULL;
- }
-
-+#ifndef NDEBUG
-+ g_message ("launch=%s, wd=%s, parameters (%d)=%s", opt_launch, opt_working_directory, argc, parameter);
-+#endif
-+
- /* run the preferred application */
- if (!exo_execute_preferred_application (opt_launch, parameter, opt_working_directory, NULL, &err))
- {
diff --git a/source/xap/xfce/patches/launcher-plugin-migrate-icon-cat.diff b/source/xap/xfce/patches/launcher-plugin-migrate-icon-cat.diff
deleted file mode 100644
index 4370281a3..000000000
--- a/source/xap/xfce/patches/launcher-plugin-migrate-icon-cat.diff
+++ /dev/null
@@ -1,48 +0,0 @@
-diff --git a/plugins/launcher/launcher.c b/plugins/launcher/launcher.c
-index 8edc66c..1e370c4 100644
---- a/plugins/launcher/launcher.c
-+++ b/plugins/launcher/launcher.c
-@@ -37,6 +37,30 @@
- #include "launcher-exec.h"
- #include "launcher-dialog.h"
-
-+/* for 4.4 settings migration */
-+static const gchar *icon_category_map[] = {
-+ "applications-other",
-+ "accessories-text-editor",
-+ "system-file-manager",
-+ "applications-accessories",
-+ "applications-games",
-+ "help-browser",
-+ "applications-multimedia",
-+ "applications-internet",
-+ "applications-graphics",
-+ "printer",
-+ "office-calendar",
-+ "applications-office",
-+ "audio-card",
-+ "utilities-terminal",
-+ "applications-development",
-+ "preferences-desktop",
-+ "applications-system",
-+ "applications-other",
-+ "applications-accessories",
-+};
-+#define ICON_CATEGORY_MAP_MAX (G_N_ELEMENTS (icon_category_map) - 1)
-+
- /* prototypes */
- static void launcher_utility_icon_theme_changed (GtkIconTheme *icon_theme,
- LauncherPlugin *launcher);
-@@ -1216,6 +1240,12 @@ launcher_plugin_read (LauncherPlugin *launcher)
- entry->name = launcher_plugin_read_entry (rc, "Name");
- entry->comment = launcher_plugin_read_entry (rc, "Comment");
- entry->icon = launcher_plugin_read_entry (rc, "Icon");
-+ if (G_UNLIKELY (!entry->icon))
-+ {
-+ gint icon_category = xfce_rc_read_int_entry (rc, "X-XFCE-IconCategory", -1);
-+ if (G_LIKELY (icon_category >= 0 && icon_category <= ICON_CATEGORY_MAP_MAX))
-+ entry->icon = g_strdup (icon_category_map[icon_category]);
-+ }
- entry->exec = launcher_plugin_read_entry (rc, "Exec");
- entry->path = launcher_plugin_read_entry (rc, "Path");
-
diff --git a/source/xap/xfce/patches/migrate-itheme-smartly.diff b/source/xap/xfce/patches/migrate-itheme-smartly.diff
deleted file mode 100644
index e9c66ed2e..000000000
--- a/source/xap/xfce/patches/migrate-itheme-smartly.diff
+++ /dev/null
@@ -1,92 +0,0 @@
-Index: scripts/xfconf-migration-4.6.pl.in
-===================================================================
---- a/scripts/xfconf-migration-4.6.pl.in (revision 29645)
-+++ b/scripts/xfconf-migration-4.6.pl.in (working copy)
-@@ -256,6 +256,77 @@
- return $mcs.'.xml';
- }
-
-+sub icon_theme_exists
-+{
-+ my ($dirref,$themename) = @_;
-+ my @dirs = @{$dirref};
-+
-+ foreach my $d (@dirs) {
-+ return 1 if(-f "$d/$themename/index.theme");
-+ }
-+
-+ return 0;
-+}
-+
-+sub migrate_icon_theme
-+{
-+ my ($ref,$chan) = @_;
-+ my %opts = %{$ref};
-+ my $opt = 'Net/IconThemeName';
-+
-+ return if(!defined($opts{$opt}));
-+ my $val = $opts{$opt}->{'value'};
-+
-+ if(lc($val) eq 'rodent') {
-+ # we don't ship rodent anymore, so try to find something suitable
-+ my @icondirs;
-+ if(defined($ENV{'XDG_DATA_HOME'})) {
-+ @icondirs = ( $ENV{'XDG_DATA_HOME'} . '/icons' );
-+ } else {
-+ @icondirs = ( $ENV{'HOME'} . '/.local/share/icons' );
-+ }
-+
-+ if(defined($ENV{'XDG_DATA_DIRS'})) {
-+ push(@icondirs, split(/:/, $ENV{'XDG_DATA_DIRS'}));
-+ } else {
-+ push(@icondirs, ( '/usr/share/icons', '/usr/local/share/icons' ));
-+ }
-+
-+ $val = undef;
-+ foreach my $itheme (('Tango', 'gnome', 'crystalsvg')) {
-+ if(icon_theme_exists(\@icondirs, $itheme)) {
-+ $val = $itheme;
-+ last;
-+ }
-+ }
-+
-+ if(!defined($val)) {
-+ # pick the first one that is not 'hicolor'
-+ foreach my $d (@icondirs) {
-+ opendir(DIR, $d) and do {
-+ my @subdirs = grep { $_ ne 'hicolor' && -d "$d/$_" } readdir(DIR);
-+ foreach my $sd (@subdirs) {
-+ if(-f "$d/$sd/index.theme") {
-+ $val = $sd;
-+ last;
-+ }
-+ }
-+ closedir(DIR);
-+ };
-+ last if(defined($val));
-+ }
-+
-+ if(!defined($val)) {
-+ # ok, their system is kinda b0rked; not much we can do
-+ warn("Couldn't find a suitable icon theme to migrate to");
-+ return;
-+ }
-+ }
-+ }
-+
-+ xfconf_set($chan, 'string', '/Net/IconThemeName', $val);
-+}
-+
- sub migrate_xsettings
- {
- my $mcs = 'gtk';
-@@ -283,8 +354,7 @@
- '/Net/CursorBlinkTime', 'int');
- save_xfconf_prop($ref, $chan, 'Net/DndDragThreshold',
- '/Net/DndDragThreshold', 'int');
-- save_xfconf_prop($ref, $chan, 'Net/IconThemeName',
-- '/Net/IconThemeName', 'string');
-+ migrate_icon_theme($ref, $chan);
- save_xfconf_prop($ref, $chan, 'Net/ThemeName',
- '/Net/ThemeName', 'string');
-
diff --git a/source/xap/xfce/patches/terminal-0.4.0-fixup_docdir.diff b/source/xap/xfce/patches/terminal-0.4.0-fixup_docdir.diff
deleted file mode 100644
index d9608470f..000000000
--- a/source/xap/xfce/patches/terminal-0.4.0-fixup_docdir.diff
+++ /dev/null
@@ -1,132 +0,0 @@
-diff -Nur Terminal-0.4.0.orig/Makefile.in Terminal-0.4.0/Makefile.in
---- Terminal-0.4.0.orig/Makefile.in 2009-07-20 13:04:04.000000000 -0500
-+++ Terminal-0.4.0/Makefile.in 2009-07-20 13:50:20.529864039 -0500
-@@ -986,7 +986,7 @@
-
- TerminalHelp: TerminalHelp.in Makefile
- rm -f TerminalHelp.gen TerminalHelp
-- sed -e "s,\@datadir\@,$(datadir),g" \
-+ sed -e "s,\@docdir\@,$(docdir),g" \
- < $(srcdir)/TerminalHelp.in \
- > TerminalHelp.gen
- mv TerminalHelp.gen TerminalHelp
-diff -Nur Terminal-0.4.0.orig/TerminalHelp.in Terminal-0.4.0/TerminalHelp.in
---- Terminal-0.4.0.orig/TerminalHelp.in 2009-07-20 13:03:50.000000000 -0500
-+++ Terminal-0.4.0/TerminalHelp.in 2009-07-20 13:50:20.529864039 -0500
-@@ -19,7 +19,7 @@
- # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- #
-
--HELPDIR="@datadir@/doc/Terminal/"
-+HELPDIR="@docdir@/"
-
- if test -n "$LC_ALL"; then
- LC=$LC_ALL
-diff -Nur Terminal-0.4.0.orig/doc/C/Makefile.in Terminal-0.4.0/doc/C/Makefile.in
---- Terminal-0.4.0.orig/doc/C/Makefile.in 2009-07-20 13:04:02.000000000 -0500
-+++ Terminal-0.4.0/doc/C/Makefile.in 2009-07-20 13:50:20.533867320 -0500
-@@ -260,7 +260,7 @@
- SUBDIRS = \
- images
-
--TARGET_DIR = $(datadir)/doc/Terminal/C
-+TARGET_DIR = $(docdir)/C
- STYLESHEET = ../terminal.xsl
- DOCUMENT = Terminal.xml
-
-diff -Nur Terminal-0.4.0.orig/doc/C/images/Makefile.in Terminal-0.4.0/doc/C/images/Makefile.in
---- Terminal-0.4.0.orig/doc/C/images/Makefile.in 2009-07-20 13:04:02.000000000 -0500
-+++ Terminal-0.4.0/doc/C/images/Makefile.in 2009-07-20 13:50:20.533867320 -0500
-@@ -240,7 +240,7 @@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
--imagesdir = $(datadir)/doc/Terminal/C/images
-+imagesdir = $(docdir)/C/images
- images_DATA = \
- terminal-compose-shortcut.png \
- terminal-edit-preferences.png \
-diff -Nur Terminal-0.4.0.orig/doc/Makefile.in Terminal-0.4.0/doc/Makefile.in
---- Terminal-0.4.0.orig/doc/Makefile.in 2009-07-20 13:04:02.000000000 -0500
-+++ Terminal-0.4.0/doc/Makefile.in 2009-07-20 13:51:00.229192942 -0500
-@@ -286,7 +286,7 @@
- fr \
- ja
-
--cssdir = $(datadir)/doc/Terminal
-+cssdir = $(docdir)/
- css_DATA = \
- terminal.css
-
-diff -Nur Terminal-0.4.0.orig/doc/da/Makefile.in Terminal-0.4.0/doc/da/Makefile.in
---- Terminal-0.4.0.orig/doc/da/Makefile.in 2009-07-20 13:04:02.000000000 -0500
-+++ Terminal-0.4.0/doc/da/Makefile.in 2009-07-20 13:50:20.533867320 -0500
-@@ -260,7 +260,7 @@
- SUBDIRS = \
- images
-
--TARGET_DIR = $(datadir)/doc/Terminal/da
-+TARGET_DIR = $(docdir)/da
- STYLESHEET = ../terminal.xsl
- DOCUMENT = Terminal.xml
-
-diff -Nur Terminal-0.4.0.orig/doc/da/images/Makefile.in Terminal-0.4.0/doc/da/images/Makefile.in
---- Terminal-0.4.0.orig/doc/da/images/Makefile.in 2009-07-20 13:04:02.000000000 -0500
-+++ Terminal-0.4.0/doc/da/images/Makefile.in 2009-07-20 13:50:20.533867320 -0500
-@@ -240,7 +240,7 @@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
--imagesdir = $(datadir)/doc/Terminal/da/images
-+imagesdir = $(docdir)/da/images
- images_DATA = \
- terminal-compose-shortcut.png \
- terminal-edit-preferences.png \
-diff -Nur Terminal-0.4.0.orig/doc/fr/Makefile.in Terminal-0.4.0/doc/fr/Makefile.in
---- Terminal-0.4.0.orig/doc/fr/Makefile.in 2009-07-20 13:04:02.000000000 -0500
-+++ Terminal-0.4.0/doc/fr/Makefile.in 2009-07-20 13:50:20.533867320 -0500
-@@ -260,7 +260,7 @@
- SUBDIRS = \
- images
-
--TARGET_DIR = $(datadir)/doc/Terminal/fr
-+TARGET_DIR = $(docdir)/fr
- STYLESHEET = ../terminal.xsl
- DOCUMENT = Terminal.xml
-
-diff -Nur Terminal-0.4.0.orig/doc/fr/images/Makefile.in Terminal-0.4.0/doc/fr/images/Makefile.in
---- Terminal-0.4.0.orig/doc/fr/images/Makefile.in 2009-07-20 13:04:03.000000000 -0500
-+++ Terminal-0.4.0/doc/fr/images/Makefile.in 2009-07-20 13:50:20.533867320 -0500
-@@ -240,7 +240,7 @@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
--imagesdir = $(datadir)/doc/Terminal/fr/images
-+imagesdir = $(docdir)/fr/images
- images_DATA = \
- terminal-compose-shortcut.png \
- terminal-edit-preferences.png \
-diff -Nur Terminal-0.4.0.orig/doc/ja/Makefile.in Terminal-0.4.0/doc/ja/Makefile.in
---- Terminal-0.4.0.orig/doc/ja/Makefile.in 2009-07-20 13:04:03.000000000 -0500
-+++ Terminal-0.4.0/doc/ja/Makefile.in 2009-07-20 13:50:20.537889876 -0500
-@@ -260,7 +260,7 @@
- SUBDIRS = \
- images
-
--TARGET_DIR = $(datadir)/doc/Terminal/ja
-+TARGET_DIR = $(docdir)/ja
- STYLESHEET = ../terminal.xsl
- DOCUMENT = Terminal.xml
-
-diff -Nur Terminal-0.4.0.orig/doc/ja/images/Makefile.in Terminal-0.4.0/doc/ja/images/Makefile.in
---- Terminal-0.4.0.orig/doc/ja/images/Makefile.in 2009-07-20 13:04:03.000000000 -0500
-+++ Terminal-0.4.0/doc/ja/images/Makefile.in 2009-07-20 13:50:20.537889876 -0500
-@@ -240,7 +240,7 @@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
--imagesdir = $(datadir)/doc/Terminal/ja/images
-+imagesdir = $(docdir)/ja/images
- images_DATA = \
- terminal-compose-shortcut.png \
- terminal-edit-preferences.png \
diff --git a/source/xap/xfce/patches/terminal.gtk.2.18.fix.diff b/source/xap/xfce/patches/terminal.gtk.2.18.fix.diff
new file mode 100644
index 000000000..69a9e70e8
--- /dev/null
+++ b/source/xap/xfce/patches/terminal.gtk.2.18.fix.diff
@@ -0,0 +1,101 @@
+From 028dc2efd846defe796c7fa097ed84818bb43431 Mon Sep 17 00:00:00 2001
+From: Nick Schermer <nick@xfce.org>
+Date: Sun, 21 Mar 2010 22:05:31 +0000
+Subject: Disconnect bindings before closing the dialog.
+
+This avoids possible problems when Gtk+ emits property
+changes before the widgets are destroyed. This is currently
+the case for text entries in some Gtk 2.18 releases.
+---
+diff --git a/terminal/terminal-preferences-dialog.c b/terminal/terminal-preferences-dialog.c
+index 587bd92..8f33628 100644
+--- a/terminal/terminal-preferences-dialog.c
++++ b/terminal/terminal-preferences-dialog.c
+@@ -64,24 +64,28 @@ terminal_preferences_dialog_class_init (TerminalPreferencesDialogClass *klass)
+
+
+ #define BIND_PROPERTIES(name, property) \
+- { object = gtk_builder_get_object (GTK_BUILDER (dialog), name); \
++ G_STMT_START { \
++ object = gtk_builder_get_object (GTK_BUILDER (dialog), name); \
+ terminal_return_if_fail (G_IS_OBJECT (object)); \
+- exo_mutual_binding_new (G_OBJECT (dialog->preferences), name, \
+- G_OBJECT (object), property); }
++ binding = exo_mutual_binding_new (G_OBJECT (dialog->preferences), name, \
++ G_OBJECT (object), property); \
++ dialog->bindings = g_slist_prepend (dialog->bindings, binding); \
++ } G_STMT_END
+
+
+
+ static void
+ terminal_preferences_dialog_init (TerminalPreferencesDialog *dialog)
+ {
+- GError *error = NULL;
+- guint i;
+- GObject *object, *object2;
+- GtkWidget *editor;
+- gchar palette_name[16];
+- GtkFileFilter *filter;
+- gchar *file;
+- const gchar *props_active[] = { "title-mode", "command-login-shell",
++ GError *error = NULL;
++ guint i;
++ GObject *object, *object2;
++ GtkWidget *editor;
++ gchar palette_name[16];
++ GtkFileFilter *filter;
++ gchar *file;
++ ExoMutualBinding *binding;
++ const gchar *props_active[] = { "title-mode", "command-login-shell",
+ "command-update-records", "scrolling-single-line",
+ "scrolling-on-output", "scrolling-on-keystroke",
+ "scrolling-bar", "font-allow-bold",
+@@ -94,9 +98,9 @@ terminal_preferences_dialog_init (TerminalPreferencesDialog *dialog)
+ , "font-anti-alias"
+ #endif
+ };
+- const gchar *props_color[] = { "color-foreground", "color-cursor",
+- "color-background", "tab-activity-color",
+- "color-selection" };
++ const gchar *props_color[] = { "color-foreground", "color-cursor",
++ "color-background", "tab-activity-color",
++ "color-selection" };
+
+ dialog->preferences = terminal_preferences_get ();
+
+@@ -248,6 +252,8 @@ terminal_preferences_dialog_response (GtkWidget *widget,
+ gint response,
+ TerminalPreferencesDialog *dialog)
+ {
++ GSList *li;
++
+ /* check if we should open the user manual */
+ if (G_UNLIKELY (response == 1))
+ {
+@@ -256,6 +262,11 @@ terminal_preferences_dialog_response (GtkWidget *widget,
+ }
+ else
+ {
++ /* disconnect all the bindings */
++ for (li = dialog->bindings; li != NULL; li = li->next)
++ exo_mutual_binding_unbind (li->data);
++ g_slist_free (dialog->bindings);
++
+ /* close the preferences dialog */
+ gtk_widget_destroy (widget);
+ }
+diff --git a/terminal/terminal-preferences-dialog.h b/terminal/terminal-preferences-dialog.h
+index b2db4f5..268d70a 100644
+--- a/terminal/terminal-preferences-dialog.h
++++ b/terminal/terminal-preferences-dialog.h
+@@ -48,6 +48,7 @@ struct _TerminalPreferencesDialog
+
+ TerminalPreferences *preferences;
+ guint signal_id;
++ GSList *bindings;
+ };
+
+ GType terminal_preferences_dialog_get_type (void) G_GNUC_CONST;
+--
+cgit v0.8.2.1
diff --git a/source/xap/xfce/patches/thunar-1.0.1-png14.diff b/source/xap/xfce/patches/thunar-1.0.1-png14.diff
new file mode 100644
index 000000000..6c67a407d
--- /dev/null
+++ b/source/xap/xfce/patches/thunar-1.0.1-png14.diff
@@ -0,0 +1,11 @@
+--- ./thunar-vfs/thunar-vfs-thumb.c.orig 2009-01-12 14:38:49.000000000 -0600
++++ ./thunar-vfs/thunar-vfs-thumb.c 2010-02-12 13:24:33.000000000 -0600
+@@ -1169,7 +1169,7 @@
+ goto done0;
+
+ /* verify the png signature */
+- if (G_LIKELY (png_check_sig ((png_bytep) signature, sizeof (signature))))
++ if (G_LIKELY (png_sig_cmp ((png_bytep) signature, 0, sizeof (signature)) == 0))
+ rewind (fp);
+ else
+ goto done0;
diff --git a/source/xap/xfce/patches/thunar-fix_umask_properly.diff b/source/xap/xfce/patches/thunar-fix_umask_properly.diff
new file mode 100644
index 000000000..2070b5802
--- /dev/null
+++ b/source/xap/xfce/patches/thunar-fix_umask_properly.diff
@@ -0,0 +1,52 @@
+commit eb58c6a6ba7f77c2c16016db064524df598ef421
+Author: Jannis Pohlmann <jannis@xfce.org>
+Date: Sat Oct 3 11:49:41 2009 +0200
+
+ Fix bugs #3532 (umask < 0022 not honoured) and #5813 properly (I hope).
+
+ The previous patch applied in e53de71e6add9b28ba034111a1d19db7def8f7e7
+ made things worse than before: it used DEFFILEMODE which seems to be
+ BSD-specific for creating files. It also reset the umask to 0 when
+ creating the first directory with _thunar_vfs_io_jobs_mkdir().
+
+ What we really want is to use 0777 (dirs) and 0666 (files) and let the
+ standard C system calls like open() apply the umask value. This should
+ work on all POSIX-compliant systems.
+
+ Patch provided by Craig Ringer <craig@postnewspapers.com.au>.
+
+diff --git a/thunar-vfs/thunar-vfs-io-jobs.c b/thunar-vfs/thunar-vfs-io-jobs.c
+index 8d70812..c94523a 100644
+--- a/thunar-vfs/thunar-vfs-io-jobs.c
++++ b/thunar-vfs/thunar-vfs-io-jobs.c
+@@ -432,8 +432,12 @@ _thunar_vfs_io_jobs_create (ThunarVfsJob *job,
+ absolute_path = thunar_vfs_path_dup_string (lp->data);
+
+ again:
+- /* try to create the file at the given path */
+- fd = g_open (absolute_path, O_CREAT | O_EXCL | O_WRONLY, DEFFILEMODE);
++ /* Try to create the file at the given path.
++ *
++ * Note that despite the 0666 mask, we won't really create a world-writable
++ * file unless the user's umask permits it (ie the umask is 0000).
++ */
++ fd = g_open (absolute_path, O_CREAT | O_EXCL | O_WRONLY, 0666);
+ if (G_UNLIKELY (fd < 0))
+ {
+ /* check if the file already exists */
+@@ -707,8 +711,13 @@ _thunar_vfs_io_jobs_mkdir (ThunarVfsJob *job,
+ /* update the progress information */
+ _thunar_vfs_job_process_path (job, lp);
+
+- /* try to create the target directory */
+- if (!_thunar_vfs_io_ops_mkdir (lp->data, 0777 & ~umask(0), THUNAR_VFS_IO_OPS_NONE, error))
++ /* try to create the target directory
++ *
++ * Note that the mode specified here is limited by the user's umask, so we will not
++ * actually be creating a world writable directory unless the user's umask permits
++ * it.
++ */
++ if (!_thunar_vfs_io_ops_mkdir (lp->data, 0777, THUNAR_VFS_IO_OPS_NONE, error))
+ return FALSE;
+ }
+
diff --git a/source/xap/xfce/patches/xfce-utils.xinitrc.consolekit.diff b/source/xap/xfce/patches/xfce-utils.xinitrc.consolekit.diff
new file mode 100644
index 000000000..a8d5b2a5f
--- /dev/null
+++ b/source/xap/xfce/patches/xfce-utils.xinitrc.consolekit.diff
@@ -0,0 +1,11 @@
+--- ./scripts/xinitrc.in.in.orig 2009-04-09 18:21:13.000000000 -0500
++++ ./scripts/xinitrc.in.in 2010-05-06 03:06:02.000000000 -0500
+@@ -131,7 +131,7 @@
+ x|xno*)
+ ;;
+ *)
+- $xfcesm
++ ck-launch-session $xfcesm
+
+ if test $kill_sshagent -eq 1; then
+ eval `$sshagent -k`
diff --git a/source/xap/xfce/patches/xfce4-settings.libxklavier5.diff b/source/xap/xfce/patches/xfce4-settings.libxklavier5.diff
new file mode 100644
index 000000000..d5f8ed8c6
--- /dev/null
+++ b/source/xap/xfce/patches/xfce4-settings.libxklavier5.diff
@@ -0,0 +1,11 @@
+--- ./dialogs/keyboard-settings/xfce-keyboard-settings.c.orig 2010-01-02 07:31:06.000000000 -0600
++++ ./dialogs/keyboard-settings/xfce-keyboard-settings.c 2010-02-12 02:11:05.000000000 -0600
+@@ -457,7 +457,7 @@
+
+ #ifdef HAVE_LIBXKLAVIER
+ /* Stop xklavier engine */
+- xkl_engine_stop_listen (settings->priv->xkl_engine);
++ xkl_engine_stop_listen (settings->priv->xkl_engine, XKLL_TRACK_KEYBOARD_STATE);
+ #endif /* HAVE_LIBXKLAVIER */
+
+ g_object_unref (settings->priv->provider);
diff --git a/source/xap/xfce/xfce.SlackBuild b/source/xap/xfce/xfce.SlackBuild
index 2ed8042e6..a59aa9497 100755
--- a/source/xap/xfce/xfce.SlackBuild
+++ b/source/xap/xfce/xfce.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright 2003 Slackware Linux, Inc., Concord, CA, USA
-# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,20 +22,35 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
VERSION=4.6.1
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-5}
+BUILD=${BUILD:-8}
# A few tarballs have different versions; handle them here
-XDT_VERS=4.6.0 # xfce4-dev-tools version
-EXO_VERS=0.3.101 # exo version
+XDT_VERS=4.7.2 # xfce4-dev-tools version
+# We're going to ship xdt from git (targeting xfce-4.8) since it's not used
+# for building release tarballs anyway, but it's handy to have around for
+# building from git, and some folks might want to do that later...
+EXO_VERS=0.3.106 # exo version
THUNAR_VERS=1.0.1 # thunar version
GXE_VERS=2.6.0 # gtk-xfce-engine version
-TERM_VERS=0.4.0 # terminal version
+TERM_VERS=0.4.4 # terminal version
MPAD_VERS=0.2.16 # mousepad version
XFWMTHEME_VERS=4.6.0 # xfwm4-themes version
+SETTINGS_VERS=4.6.4 # xfce4-settings version
+PANEL_VERS=4.6.3 # xfce4-panel version
+XFCEGUI_VERS=4.6.3 # libxfcegui4 version
NUMJOBS=${NUMJOBS:--j6}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp/xfce-build-dir}
PKG=$TMP/package-xfce
@@ -49,6 +64,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
@@ -66,12 +84,12 @@ for file in \
xfce4-dev-tools-$XDT_VERS.tar.$COMPRESSION \
libxfce4util-$VERSION.tar.$COMPRESSION \
xfconf-$VERSION.tar.$COMPRESSION \
- libxfcegui4-$VERSION.tar.$COMPRESSION \
+ libxfcegui4-$XFCEGUI_VERS.tar.$COMPRESSION \
libxfce4menu-$VERSION.tar.$COMPRESSION \
exo-$EXO_VERS.tar.$COMPRESSION \
- xfce4-panel-$VERSION.tar.$COMPRESSION \
+ xfce4-panel-$PANEL_VERS.tar.$COMPRESSION \
Thunar-$THUNAR_VERS.tar.$COMPRESSION \
- xfce4-settings-$VERSION.tar.$COMPRESSION \
+ xfce4-settings-$SETTINGS_VERS.tar.$COMPRESSION \
xfce4-session-$VERSION.tar.$COMPRESSION \
xfdesktop-$VERSION.tar.$COMPRESSION \
xfwm4-$VERSION.tar.$COMPRESSION \
@@ -100,24 +118,29 @@ do
if [ "$file" = "orage-$VERSION.tar.$COMPRESSION" ]; then
zcat $CWD/patches/xfcalendar.desktop.in.diff.gz | patch -p1 || exit 1
fi
- # Fix http://bugzilla.xfce.org/show_bug.cgi?id=5461
- # and enable python bindings in libexo
- if [ "$file" = "exo-$EXO_VERS.tar.$COMPRESSION" ]; then
- zcat $CWD/patches/exo_fix_quoting.diff.gz | patch -p0 || exit 1
- PACKAGE_SPECIFIC_OPTIONS="--enable-python"
- fi
- # Make Terminal respect --docdir
+ # Fix Terminal's title bar and preferences problems with GTK+ 2.18:
if [ "$file" = "Terminal-$TERM_VERS.tar.$COMPRESSION" ]; then
- zcat $CWD/patches/terminal-0.4.0-fixup_docdir.diff.gz | patch -p1 || exit 1
+ zcat $CWD/patches/terminal.gtk.2.18.fix.diff.gz | patch -p1 || exit 1
fi
# Make Thunar respect --docdir
if [ "$file" = "Thunar-$THUNAR_VERS.tar.$COMPRESSION" ]; then
zcat $CWD/patches/thunar-1.0.1-fixup_docdir.diff.gz | patch -p1 || exit 1
+ zcat $CWD/patches/thunar-fix_umask_properly.diff.gz | patch -p1 || exit 1
+ # Port to PNG 1.4.0:
+ zcat $CWD/patches/thunar-1.0.1-png14.diff.gz | patch -p1 || exit 1
fi
# Fix the missing education icon in the desktop menu
if [ "$file" = "xfdesktop-$VERSION.tar.$COMPRESSION" ]; then
zcat $CWD/patches/xfdesktop-fix_education_icon.diff.gz | patch -p1 || exit 1
fi
+ # Port xfce4-settings to libxklavier-5.x:
+ if [ "$file" = "xfce4-settings-$SETTINGS_VERS.tar.$COMPRESSION" ]; then
+ zcat $CWD/patches/xfce4-settings.libxklavier5.diff.gz | patch -p1 || exit 1
+ fi
+ # Launch xfce through consolekit so that ck enabled stuff works in xfce:
+ if [ "$file" = "xfce-utils-$VERSION.tar.$COMPRESSION" ]; then
+ zcat $CWD/patches/xfce-utils.xinitrc.consolekit.diff.gz | patch -p1 || exit 1
+ fi
# End patches/package-specific stuff
CFLAGS="$SLKCFLAGS" \
@@ -148,6 +171,14 @@ do
$PKG/usr/doc/xfce-$VERSION/$(basename $file .tar.$COMPRESSION) \
2> /dev/null || true
+ # If there's a ChangeLog, installing at least part of the recent history
+ # is useful, but don't let it get totally out of control:
+ if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/xfce-$VERSION/$(basename $file .tar.$COMPRESSION))
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+ fi
+
cd - ;
done
diff --git a/source/xap/xfce4-notifyd/doinst.sh b/source/xap/xfce4-notifyd/doinst.sh
new file mode 100644
index 000000000..ec1b3d8a2
--- /dev/null
+++ b/source/xap/xfce4-notifyd/doinst.sh
@@ -0,0 +1,10 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications 2>/dev/null
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+
diff --git a/source/xap/xfce4-notifyd/slack-desc b/source/xap/xfce4-notifyd/slack-desc
new file mode 100644
index 000000000..1463db0bd
--- /dev/null
+++ b/source/xap/xfce4-notifyd/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+xfce4-notifyd: xfce4-notifyd (Xfce Notify Daemon)
+xfce4-notifyd:
+xfce4-notifyd: Xfce4-notifyd is a simple, visually-appealing notification daemon
+xfce4-notifyd: for Xfce. Applications can use xfce4-notifyd to pop up a notification
+xfce4-notifyd: bubble by sending messages through D-Bus.
+xfce4-notifyd:
+xfce4-notifyd: Homepage: http://spuriousinterrupt.org/projects/xfce4-notifyd
+xfce4-notifyd:
+xfce4-notifyd:
+xfce4-notifyd:
+xfce4-notifyd:
diff --git a/source/xap/xfce4-notifyd/xfce4-notifyd.SlackBuild b/source/xap/xfce4-notifyd/xfce4-notifyd.SlackBuild
new file mode 100755
index 000000000..2f33dbd88
--- /dev/null
+++ b/source/xap/xfce4-notifyd/xfce4-notifyd.SlackBuild
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+# Slackware build script for Xfce4-notifyd
+
+# Copyright 2008 Frank Caraballo <fecaraballo{at}gmail{dot}com>
+# Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=xfce4-notifyd
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc/xfce \
+ --localstatedir=/var \
+ --enable-debug=no \
+ --build=$ARCH-slackware-linux
+
+make || exit 1
+make install-strip DESTDIR=$PKG || exit 1
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING INSTALL NEWS README TODO \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/xap/xfce4-power-manager/xfce4-power-manager.SlackBuild b/source/xap/xfce4-power-manager/xfce4-power-manager.SlackBuild
index 1487b2d05..1aa24bde0 100755
--- a/source/xap/xfce4-power-manager/xfce4-power-manager.SlackBuild
+++ b/source/xap/xfce4-power-manager/xfce4-power-manager.SlackBuild
@@ -2,8 +2,8 @@
# Slackware build script for xfce4-power-manager
-# Copyright 2008-2009 Robby Workman Northport, Alabama, USA
-# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006-2010 Robby Workman Northport, Alabama, USA
+# Copyright 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,14 +24,23 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-PRGNAM=xfce4-power-manager
-VERSION=0.6.6
-ARCH=${ARCH:-x86_64}
+PKGNAM=xfce4-power-manager
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
-PKG=$TMP/package-$PRGNAM
+PKG=$TMP/package-$PKGNAM
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -42,14 +51,17 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP || exit 1
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
-cd $PRGNAM-$VERSION || exit 1
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1
+cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -60,11 +72,14 @@ find . \
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
- --sysconfdir=/etc/xfce \
--libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc/xfce \
--mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
+ --enable-shared=yes \
+ --enable-static=no \
--enable-debug=no \
+ --disable-network-manager \
--build=$ARCH-slackware-linux
make || exit 1
@@ -73,19 +88,29 @@ make install DESTDIR=$PKG
find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/html
+gzip -9 $PKG/usr/man/man?/*.?
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/html
cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
-( cd $PKG/usr/doc/$PRGNAM-$VERSION/html
+ AUTHORS COPYING NEWS README TODO \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+( cd $PKG/usr/doc/$PKGNAM-$VERSION/html
ln -s /usr/share/xfce4/doc/C/xfce4-power-manager.html index.html
ln -s /usr/share/xfce4/doc/C/images .
)
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/xap/xine-lib/xine-lib-1.1.17.ff.diff b/source/xap/xine-lib/xine-lib-1.1.17.ff.diff
new file mode 100644
index 000000000..c08913eaa
--- /dev/null
+++ b/source/xap/xine-lib/xine-lib-1.1.17.ff.diff
@@ -0,0 +1,1044 @@
+--- ./src/combined/ffmpeg/ff_video_decoder.c.orig 2009-11-30 14:55:46.000000000 -0600
++++ ./src/combined/ffmpeg/ff_video_decoder.c 2009-04-02 13:44:01.000000000 -0500
+@@ -1,25 +1,25 @@
+ /*
+ * Copyright (C) 2001-2008 the xine project
+- *
++ *
+ * This file is part of xine, a free video player.
+- *
++ *
+ * xine 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.
+- *
++ *
+ * xine is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+- *
++ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ * xine video decoder plugin using ffmpeg
+ */
+-
++
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #include "../../libffmpeg/ffmpeg_config.h"
+@@ -73,7 +73,7 @@
+ int thread_count;
+ int8_t skip_loop_filter_enum;
+ int8_t choose_speed_over_accuracy;
+-
++
+ xine_t *xine;
+ } ff_video_class_t;
+
+@@ -107,13 +107,13 @@
+ int bufsize;
+ int size;
+ int skipframes;
+-
++
+ int slice_offset_size;
+
+ AVFrame *av_frame;
+ AVCodecContext *context;
+ AVCodec *codec;
+-
++
+ int pp_quality;
+ int pp_flags;
+ pp_context_t *pp_context;
+@@ -126,7 +126,7 @@
+ int aspect_ratio_prio;
+ int frame_flags;
+ int crop_right, crop_bottom;
+-
++
+ int output_format;
+
+ xine_list_t *dr1_frames;
+@@ -154,7 +154,7 @@
+ vo_frame_t *img;
+ int width = context->width;
+ int height = context->height;
+-
++
+ if (!this->bih.biWidth || !this->bih.biHeight) {
+ this->bih.biWidth = width;
+ this->bih.biHeight = height;
+@@ -166,12 +166,12 @@
+ set_stream_info(this);
+ }
+ }
+-
++
+ avcodec_align_dimensions(context, &width, &height);
+
+ if( this->context->pix_fmt != PIX_FMT_YUV420P && this->context->pix_fmt != PIX_FMT_YUVJ420P ) {
+ if (!this->is_direct_rendering_disabled) {
+- xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
++ xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
+ _("ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n"));
+ this->is_direct_rendering_disabled = 1;
+ }
+@@ -182,14 +182,14 @@
+ av_frame->data[2]= NULL;
+ return avcodec_default_get_buffer(context, av_frame);
+ }
+-
++
+ if((width != this->bih.biWidth) || (height != this->bih.biHeight)) {
+ if(this->stream->video_out->get_capabilities(this->stream->video_out) & VO_CAP_CROP) {
+ this->crop_right = width - this->bih.biWidth;
+ this->crop_bottom = height - this->bih.biHeight;
+ } else {
+ if (!this->is_direct_rendering_disabled) {
+- xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
++ xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
+ _("ffmpeg_video_dec: unsupported frame dimensions, DR1 disabled.\n"));
+ this->is_direct_rendering_disabled = 1;
+ }
+@@ -204,7 +204,7 @@
+ img = this->stream->video_out->get_frame (this->stream->video_out,
+ width,
+ height,
+- this->aspect_ratio,
++ this->aspect_ratio,
+ this->output_format,
+ VO_BOTH_FIELDS|this->frame_flags);
+
+@@ -246,7 +246,7 @@
+ }
+
+ xine_list_iterator_t it;
+-
++
+ it = xine_list_find(this->dr1_frames, av_frame);
+ assert(it);
+ if( it != NULL )
+@@ -300,7 +300,7 @@
+ }
+
+ if (!this->codec) {
+- xprintf (this->stream->xine, XINE_VERBOSITY_LOG,
++ xprintf (this->stream->xine, XINE_VERBOSITY_LOG,
+ _("ffmpeg_video_dec: couldn't find ffmpeg decoder for buf type 0x%X\n"),
+ codec_type);
+ _x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_HANDLED, 0);
+@@ -309,14 +309,14 @@
+
+ lprintf("lavc decoder found\n");
+
+- /* force (width % 8 == 0), otherwise there will be
+- * display problems with Xv.
+- */
++ /* force (width % 8 == 0), otherwise there will be
++ * display problems with Xv.
++ */
+ this->bih.biWidth = (this->bih.biWidth + 1) & (~1);
+
+ this->context->width = this->bih.biWidth;
+ this->context->height = this->bih.biHeight;
+- this->context->stream_codec_tag = this->context->codec_tag =
++ this->context->stream_codec_tag = this->context->codec_tag =
+ _x_stream_info_get(this->stream, XINE_STREAM_INFO_VIDEO_FOURCC);
+
+
+@@ -325,14 +325,14 @@
+ if(this->codec->capabilities & CODEC_CAP_DR1 && this->codec->id != CODEC_ID_H264) {
+ this->context->flags |= CODEC_FLAG_EMU_EDGE;
+ }
+-
++
+ if (this->class->choose_speed_over_accuracy)
+ this->context->flags2 |= CODEC_FLAG2_FAST;
+
+ pthread_mutex_lock(&ffmpeg_lock);
+ if (avcodec_open (this->context, this->codec) < 0) {
+ pthread_mutex_unlock(&ffmpeg_lock);
+- xprintf (this->stream->xine, XINE_VERBOSITY_LOG,
++ xprintf (this->stream->xine, XINE_VERBOSITY_LOG,
+ _("ffmpeg_video_dec: couldn't open decoder\n"));
+ free(this->context);
+ this->context = NULL;
+@@ -340,22 +340,6 @@
+ return;
+ }
+
+- if (this->codec->id == CODEC_ID_VC1 &&
+- (!this->bih.biWidth || !this->bih.biHeight)) {
+- /* VC1 codec must be re-opened with correct width and height. */
+- avcodec_close(this->context);
+-
+- if (avcodec_open (this->context, this->codec) < 0) {
+- pthread_mutex_unlock(&ffmpeg_lock);
+- xprintf (this->stream->xine, XINE_VERBOSITY_LOG,
+- _("ffmpeg_video_dec: couldn't open decoder (pass 2)\n"));
+- free(this->context);
+- this->context = NULL;
+- _x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_HANDLED, 0);
+- return;
+- }
+- }
+-
+ if (this->class->thread_count > 1) {
+ avcodec_thread_init(this->context, this->class->thread_count);
+ this->context->thread_count = this->class->thread_count;
+@@ -384,14 +368,14 @@
+ (this->stream->video_out->open) (this->stream->video_out, this->stream);
+
+ this->skipframes = 0;
+-
++
+ /* enable direct rendering by default */
+ this->output_format = XINE_IMGFMT_YV12;
+ #ifdef ENABLE_DIRECT_RENDERING
+ if( this->codec->capabilities & CODEC_CAP_DR1 && this->codec->id != CODEC_ID_H264 ) {
+ this->context->get_buffer = get_buffer;
+ this->context->release_buffer = release_buffer;
+- xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
++ xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
+ _("ffmpeg_video_dec: direct rendering enabled\n"));
+ }
+ #endif
+@@ -422,25 +406,25 @@
+
+ static void choose_speed_over_accuracy_cb(void *user_data, xine_cfg_entry_t *entry) {
+ ff_video_class_t *class = (ff_video_class_t *) user_data;
+-
++
+ class->choose_speed_over_accuracy = entry->num_value;
+ }
+
+ static void skip_loop_filter_enum_cb(void *user_data, xine_cfg_entry_t *entry) {
+ ff_video_class_t *class = (ff_video_class_t *) user_data;
+-
++
+ class->skip_loop_filter_enum = entry->num_value;
+ }
+
+ static void thread_count_cb(void *user_data, xine_cfg_entry_t *entry) {
+ ff_video_class_t *class = (ff_video_class_t *) user_data;
+-
++
+ class->thread_count = entry->num_value;
+ }
+
+ static void pp_quality_cb(void *user_data, xine_cfg_entry_t *entry) {
+ ff_video_class_t *class = (ff_video_class_t *) user_data;
+-
++
+ class->pp_quality = entry->num_value;
+ }
+
+@@ -453,15 +437,15 @@
+ this->pp_flags);
+ if(this->pp_mode)
+ pp_free_mode(this->pp_mode);
+-
+- this->pp_mode = pp_get_mode_by_name_and_quality("hb:a,vb:a,dr:a",
++
++ this->pp_mode = pp_get_mode_by_name_and_quality("hb:a,vb:a,dr:a",
+ this->pp_quality);
+ } else {
+ if(this->pp_mode) {
+ pp_free_mode(this->pp_mode);
+ this->pp_mode = NULL;
+ }
+-
++
+ if(this->pp_context) {
+ pp_free_context(this->pp_context);
+ this->pp_context = NULL;
+@@ -486,22 +470,22 @@
+ this->pp_available = 0;
+ break;
+ }
+-
++
+ /* Detect what cpu accel we have */
+ cpu_caps = xine_mm_accel();
+ this->pp_flags = PP_FORMAT_420;
+-
++
+ if(cpu_caps & MM_ACCEL_X86_MMX)
+ this->pp_flags |= PP_CPU_CAPS_MMX;
+-
++
+ if(cpu_caps & MM_ACCEL_X86_MMXEXT)
+ this->pp_flags |= PP_CPU_CAPS_MMX2;
+-
+- if(cpu_caps & MM_ACCEL_X86_3DNOW)
++
++ if(cpu_caps & MM_ACCEL_X86_3DNOW)
+ this->pp_flags |= PP_CPU_CAPS_3DNOW;
+-
++
+ /* Set level */
+- pp_change_quality(this);
++ pp_change_quality(this);
+ }
+
+ static int ff_handle_mpeg_sequence(ff_video_decoder_t *this, mpeg_parser_t *parser) {
+@@ -510,13 +494,13 @@
+ * init codec
+ */
+ if (this->decoder_init_mode) {
+- _x_meta_info_set_utf8(this->stream, XINE_META_INFO_VIDEOCODEC,
++ _x_meta_info_set_utf8(this->stream, XINE_META_INFO_VIDEOCODEC,
+ "mpeg-1 (ffmpeg)");
+
+ init_video_codec (this, BUF_VIDEO_MPEG);
+ this->decoder_init_mode = 0;
+ }
+-
++
+ /* frame format change */
+ if ((parser->width != this->bih.biWidth) ||
+ (parser->height != this->bih.biHeight) ||
+@@ -542,7 +526,7 @@
+ xine_event_send(this->stream, &event);
+ }
+ this->video_step = this->mpeg_parser->frame_duration;
+-
++
+ return 1;
+ }
+
+@@ -611,7 +595,7 @@
+ this->bih.biHeight);
+
+ } else if (this->context->pix_fmt == PIX_FMT_RGB32) {
+-
++
+ int x, plane_ptr = 0;
+ uint32_t *argb_pixels;
+ uint32_t argb;
+@@ -620,7 +604,7 @@
+ argb_pixels = (uint32_t *)sy;
+ for(x = 0; x < img->width; x++) {
+ uint8_t r, g, b;
+-
++
+ /* this is endian-safe as the ARGB pixels are stored in
+ * machine order */
+ argb = *argb_pixels++;
+@@ -635,9 +619,9 @@
+ }
+ sy += this->av_frame->linesize[0];
+ }
+-
++
+ yuv444_to_yuy2(&this->yuv, img->base[0], img->pitches[0]);
+-
++
+ } else if (this->context->pix_fmt == PIX_FMT_RGB565) {
+
+ int x, plane_ptr = 0;
+@@ -648,7 +632,7 @@
+ src = sy;
+ for(x = 0; x < img->width; x++) {
+ uint8_t r, g, b;
+-
++
+ /* a 16-bit RGB565 pixel is supposed to be stored in native-endian
+ * byte order; the following should be endian-safe */
+ pixel16 = *((uint16_t *)src);
+@@ -664,20 +648,20 @@
+ }
+ sy += this->av_frame->linesize[0];
+ }
+-
++
+ yuv444_to_yuy2(&this->yuv, img->base[0], img->pitches[0]);
+-
++
+ } else if (this->context->pix_fmt == PIX_FMT_RGB555) {
+-
++
+ int x, plane_ptr = 0;
+ uint8_t *src;
+ uint16_t pixel16;
+-
++
+ for(y = 0; y < this->bih.biHeight; y++) {
+ src = sy;
+ for(x = 0; x < img->width; x++) {
+ uint8_t r, g, b;
+-
++
+ /* a 16-bit RGB555 pixel is supposed to be stored in native-endian
+ * byte order; the following should be endian-safe */
+ pixel16 = *((uint16_t *)src);
+@@ -693,9 +677,9 @@
+ }
+ sy += this->av_frame->linesize[0];
+ }
+-
++
+ yuv444_to_yuy2(&this->yuv, img->base[0], img->pitches[0]);
+-
++
+ } else if (this->context->pix_fmt == PIX_FMT_BGR24) {
+
+ int x, plane_ptr = 0;
+@@ -705,7 +689,7 @@
+ src = sy;
+ for(x = 0; x < img->width; x++) {
+ uint8_t r, g, b;
+-
++
+ b = *src++;
+ g = *src++;
+ r = *src++;
+@@ -717,9 +701,9 @@
+ }
+ sy += this->av_frame->linesize[0];
+ }
+-
++
+ yuv444_to_yuy2(&this->yuv, img->base[0], img->pitches[0]);
+-
++
+ } else if (this->context->pix_fmt == PIX_FMT_RGB24) {
+
+ int x, plane_ptr = 0;
+@@ -729,7 +713,7 @@
+ src = sy;
+ for(x = 0; x < img->width; x++) {
+ uint8_t r, g, b;
+-
++
+ r = *src++;
+ g = *src++;
+ b = *src++;
+@@ -741,11 +725,11 @@
+ }
+ sy += this->av_frame->linesize[0];
+ }
+-
++
+ yuv444_to_yuy2(&this->yuv, img->base[0], img->pitches[0]);
+-
++
+ } else if (this->context->pix_fmt == PIX_FMT_PAL8) {
+-
++
+ int x, plane_ptr = 0;
+ uint8_t *src;
+ uint8_t pixel;
+@@ -780,34 +764,34 @@
+ }
+ sy += this->av_frame->linesize[0];
+ }
+-
++
+ yuv444_to_yuy2(&this->yuv, img->base[0], img->pitches[0]);
+-
++
+ } else {
+-
++
+ for (y = 0; y < this->bih.biHeight; y++) {
+ xine_fast_memcpy (dy, sy, img->width);
+-
++
+ dy += img->pitches[0];
+-
++
+ sy += this->av_frame->linesize[0];
+ }
+
+ for (y = 0; y < this->bih.biHeight / 2; y++) {
+-
++
+ if (this->context->pix_fmt != PIX_FMT_YUV444P) {
+-
++
+ xine_fast_memcpy (du, su, img->width/2);
+ xine_fast_memcpy (dv, sv, img->width/2);
+-
++
+ } else {
+-
++
+ int x;
+ uint8_t *src;
+ uint8_t *dst;
+-
++
+ /* subsample */
+-
++
+ src = su; dst = du;
+ for (x=0; x<(img->width/2); x++) {
+ *dst = *src;
+@@ -822,7 +806,7 @@
+ }
+
+ }
+-
++
+ du += img->pitches[1];
+ dv += img->pitches[2];
+
+@@ -840,8 +824,8 @@
+ static void ff_check_bufsize (ff_video_decoder_t *this, int size) {
+ if (size > this->bufsize) {
+ this->bufsize = size + size / 2;
+- xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
+- _("ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n"),
++ xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
++ _("ffmpeg_video_dec: increasing buffer to %d to avoid overflow.\n"),
+ this->bufsize);
+ this->buf = realloc(this->buf, this->bufsize + FF_INPUT_BUFFER_PADDING_SIZE );
+ }
+@@ -887,28 +871,28 @@
+ if (buf->decoder_flags & BUF_FLAG_STDHEADER) {
+
+ lprintf("standard header\n");
+-
++
+ /* init package containing bih */
+ memcpy ( &this->bih, this->buf, sizeof(xine_bmiheader) );
+
+ if (this->bih.biSize > sizeof(xine_bmiheader)) {
+ this->context->extradata_size = this->bih.biSize - sizeof(xine_bmiheader);
+- this->context->extradata = malloc(this->context->extradata_size +
++ this->context->extradata = malloc(this->context->extradata_size +
+ FF_INPUT_BUFFER_PADDING_SIZE);
+ memcpy(this->context->extradata, this->buf + sizeof(xine_bmiheader),
+ this->context->extradata_size);
+ }
+-
++
+ this->context->bits_per_sample = this->bih.biBitCount;
+-
++
+ } else {
+-
++
+ switch (codec_type) {
+ case BUF_VIDEO_RV10:
+ case BUF_VIDEO_RV20:
+ this->bih.biWidth = _X_BE_16(&this->buf[12]);
+ this->bih.biHeight = _X_BE_16(&this->buf[14]);
+-
++
+ this->context->sub_id = _X_BE_32(&this->buf[30]);
+
+ this->context->slice_offset = calloc(SLICE_OFFSET_SIZE, sizeof(int));
+@@ -950,7 +934,7 @@
+ }
+
+ static void ff_handle_special_buffer (ff_video_decoder_t *this, buf_element_t *buf) {
+- /* take care of all the various types of special buffers
++ /* take care of all the various types of special buffers
+ * note that order is important here */
+ lprintf("special buffer\n");
+
+@@ -959,34 +943,34 @@
+
+ lprintf("BUF_SPECIAL_STSD_ATOM\n");
+ this->context->extradata_size = buf->decoder_info[2];
+- this->context->extradata = malloc(buf->decoder_info[2] +
++ this->context->extradata = malloc(buf->decoder_info[2] +
+ FF_INPUT_BUFFER_PADDING_SIZE);
+ memcpy(this->context->extradata, buf->decoder_info_ptr[2],
+ buf->decoder_info[2]);
+
+ } else if (buf->decoder_info[1] == BUF_SPECIAL_DECODER_CONFIG &&
+ !this->context->extradata_size) {
+-
++
+ lprintf("BUF_SPECIAL_DECODER_CONFIG\n");
+ this->context->extradata_size = buf->decoder_info[2];
+ this->context->extradata = malloc(buf->decoder_info[2] +
+ FF_INPUT_BUFFER_PADDING_SIZE);
+ memcpy(this->context->extradata, buf->decoder_info_ptr[2],
+ buf->decoder_info[2]);
+-
++
+ } else if (buf->decoder_info[1] == BUF_SPECIAL_PALETTE) {
+ unsigned int i;
+
+ palette_entry_t *demuxer_palette;
+ AVPaletteControl *decoder_palette;
+-
++
+ lprintf("BUF_SPECIAL_PALETTE\n");
+ this->context->palctrl = &this->palette_control;
+ decoder_palette = (AVPaletteControl *)this->context->palctrl;
+ demuxer_palette = (palette_entry_t *)buf->decoder_info_ptr[2];
+
+ for (i = 0; i < buf->decoder_info[2]; i++) {
+- decoder_palette->palette[i] =
++ decoder_palette->palette[i] =
+ (demuxer_palette[i].r << 16) |
+ (demuxer_palette[i].g << 8) |
+ (demuxer_palette[i].b << 0);
+@@ -995,20 +979,20 @@
+
+ } else if (buf->decoder_info[1] == BUF_SPECIAL_RV_CHUNK_TABLE) {
+ int i;
+-
++
+ lprintf("BUF_SPECIAL_RV_CHUNK_TABLE\n");
+ this->context->slice_count = buf->decoder_info[2]+1;
+
+ lprintf("slice_count=%d\n", this->context->slice_count);
+-
++
+ if(this->context->slice_count > this->slice_offset_size) {
+ this->context->slice_offset = realloc(this->context->slice_offset,
+ sizeof(int)*this->context->slice_count);
+ this->slice_offset_size = this->context->slice_count;
+ }
+-
++
+ for(i = 0; i < this->context->slice_count; i++) {
+- this->context->slice_offset[i] =
++ this->context->slice_offset[i] =
+ ((uint32_t *) buf->decoder_info_ptr[2])[(2*i)+1];
+ lprintf("slice_offset[%d]=%d\n", i, this->context->slice_offset[i]);
+ }
+@@ -1051,7 +1035,7 @@
+
+ if (!this->decoder_ok)
+ return;
+-
++
+ if (flush) {
+ lprintf("flush lavc buffers\n");
+ /* hack: ffmpeg outputs the last frame if size=0 */
+@@ -1069,11 +1053,11 @@
+ len, got_picture);
+ len = current - buf->content - offset;
+ lprintf("avcodec_decode_video: consumed_size=%d\n", len);
+-
++
+ flush = next_flush;
+
+ if ((len < 0) || (len > buf->size)) {
+- xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
++ xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
+ "ffmpeg_video_dec: error decompressing frame\n");
+ size = 0; /* draw a bad frame and exit */
+ } else {
+@@ -1088,7 +1072,7 @@
+ img = this->stream->video_out->get_frame (this->stream->video_out,
+ this->bih.biWidth,
+ this->bih.biHeight,
+- this->aspect_ratio,
++ this->aspect_ratio,
+ this->output_format,
+ VO_BOTH_FIELDS|this->frame_flags);
+ free_img = 1;
+@@ -1108,7 +1092,7 @@
+
+ img->crop_right = this->crop_right;
+ img->crop_bottom = this->crop_bottom;
+-
++
+ this->skipframes = img->draw(img, this->stream);
+
+ if(free_img)
+@@ -1121,7 +1105,7 @@
+ img = this->stream->video_out->get_frame (this->stream->video_out,
+ this->bih.biWidth,
+ this->bih.biHeight,
+- this->aspect_ratio,
++ this->aspect_ratio,
+ this->output_format,
+ VO_BOTH_FIELDS|this->frame_flags);
+ img->pts = 0;
+@@ -1181,49 +1165,6 @@
+ }
+ }
+
+-static int ff_vc1_find_header(ff_video_decoder_t *this, buf_element_t *buf)
+-{
+- uint8_t *p = buf->content;
+-
+- if (!p[0] && !p[1] && p[2] == 1 && p[3] == 0x0f) {
+- int i;
+-
+- this->context->extradata = calloc(1, buf->size);
+- this->context->extradata_size = 0;
+-
+- for (i = 0; i < buf->size && i < 128; i++) {
+- if (!p[i] && !p[i+1] && p[i+2]) {
+- lprintf("00 00 01 %02x at %d\n", p[i+3], i);
+- if (p[i+3] != 0x0e && p[i+3] != 0x0f)
+- break;
+- }
+- this->context->extradata[i] = p[i];
+- this->context->extradata_size++;
+- }
+-
+- lprintf("ff_video_decoder: found VC1 sequence header\n");
+- return 1;
+- }
+-
+- xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG,
+- "ffmpeg_video_dec: VC1 extradata missing !\n");
+- return 0;
+-}
+-
+-static int ff_check_extradata(ff_video_decoder_t *this, unsigned int codec_type, buf_element_t *buf)
+-{
+- if (this->context && this->context->extradata)
+- return 1;
+-
+- switch (codec_type) {
+- case BUF_VIDEO_VC1:
+- return ff_vc1_find_header(this, buf);
+- default:;
+- }
+-
+- return 1;
+-}
+-
+ #endif /* AVCODEC_HAS_REORDERED_OPAQUE */
+ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) {
+ uint8_t *chunk_buf = this->buf;
+@@ -1235,9 +1176,6 @@
+ if (this->decoder_init_mode) {
+ int codec_type = buf->type & 0xFFFF0000;
+
+- if (!ff_check_extradata(this, codec_type, buf))
+- return;
+-
+ /* init ffmpeg decoder */
+ init_video_codec(this, codec_type);
+ init_postprocess(this);
+@@ -1256,8 +1194,7 @@
+ if (this->size == 0) {
+ /* take over pts when we are about to buffer a frame */
+ this->av_frame->reordered_opaque = ff_tag_pts(this, this->pts);
+- if (this->context) /* shouldn't be NULL */
+- this->context->reordered_opaque = ff_tag_pts(this, this->pts);
++ this->context->reordered_opaque = ff_tag_pts(this, this->pts);
+ this->pts = 0;
+ }
+ #endif /* AVCODEC_HAS_REORDERED_OPAQUE */
+@@ -1265,7 +1202,7 @@
+ /* data accumulation */
+ if (buf->size > 0) {
+ if ((this->size == 0) &&
+- ((buf->size + FF_INPUT_BUFFER_PADDING_SIZE) < buf->max_size) &&
++ ((buf->size + FF_INPUT_BUFFER_PADDING_SIZE) < buf->max_size) &&
+ (buf->decoder_flags & BUF_FLAG_FRAME_END)) {
+ /* buf contains a complete frame */
+ /* no memcpy needed */
+@@ -1278,7 +1215,7 @@
+ chunk_buf = this->buf; /* ff_check_bufsize might realloc this->buf */
+
+ xine_fast_memcpy (&this->buf[this->size], buf->content, buf->size);
+-
++
+ this->size += buf->size;
+ lprintf("accumulate data into this->buf\n");
+ }
+@@ -1301,7 +1238,7 @@
+ memset(&chunk_buf[this->size], 0, FF_INPUT_BUFFER_PADDING_SIZE);
+
+ while (this->size > 0) {
+-
++
+ /* DV frames can be completely skipped */
+ if( codec_type == BUF_VIDEO_DV && this->skipframes ) {
+ this->size = 0;
+@@ -1322,7 +1259,7 @@
+
+ lprintf("consumed size: %d, got_picture: %d\n", len, got_picture);
+ if ((len <= 0) || (len > this->size)) {
+- xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
++ xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
+ "ffmpeg_video_dec: error decompressing frame\n");
+ this->size = 0;
+
+@@ -1366,7 +1303,7 @@
+ this->bih.biHeight = this->context->height;
+ }
+
+- this->aspect_ratio = av_q2d(this->context->sample_aspect_ratio) *
++ this->aspect_ratio = av_q2d(this->context->sample_aspect_ratio) *
+ (double)this->bih.biWidth / (double)this->bih.biHeight;
+ this->aspect_ratio_prio = 2;
+ lprintf("ffmpeg aspect ratio: %f\n", this->aspect_ratio);
+@@ -1405,7 +1342,7 @@
+ img = this->stream->video_out->get_frame (this->stream->video_out,
+ (this->bih.biWidth + 15) & ~15,
+ (this->bih.biHeight + 15) & ~15,
+- this->aspect_ratio,
++ this->aspect_ratio,
+ this->output_format,
+ VO_BOTH_FIELDS|this->frame_flags);
+ free_img = 1;
+@@ -1426,17 +1363,17 @@
+ img = this->stream->video_out->get_frame (this->stream->video_out,
+ (img->width + 15) & ~15,
+ (img->height + 15) & ~15,
+- this->aspect_ratio,
++ this->aspect_ratio,
+ this->output_format,
+ VO_BOTH_FIELDS|this->frame_flags);
+ free_img = 1;
+ }
+
+- pp_postprocess(this->av_frame->data, this->av_frame->linesize,
+- img->base, img->pitches,
++ pp_postprocess(this->av_frame->data, this->av_frame->linesize,
++ img->base, img->pitches,
+ img->width, img->height,
+ this->av_frame->qscale_table, this->av_frame->qstride,
+- this->pp_mode, this->pp_context,
++ this->pp_mode, this->pp_context,
+ this->av_frame->pict_type);
+
+ } else if (!this->av_frame->opaque) {
+@@ -1476,7 +1413,7 @@
+ img->top_field_first = this->av_frame->top_field_first;
+
+ this->skipframes = img->draw(img, this->stream);
+-
++
+ if(free_img)
+ img->free(img);
+ }
+@@ -1490,7 +1427,7 @@
+ img = this->stream->video_out->get_frame (this->stream->video_out,
+ (this->bih.biWidth <= 0) ? 16 : ((this->bih.biWidth + 15) & ~15),
+ (this->bih.biHeight <= 0) ? 16 : ((this->bih.biHeight + 15) & ~15),
+- this->aspect_ratio,
++ this->aspect_ratio,
+ this->output_format,
+ VO_BOTH_FIELDS|this->frame_flags);
+ /* set PTS to allow early syncing */
+@@ -1520,7 +1457,7 @@
+ static void ff_decode_data (video_decoder_t *this_gen, buf_element_t *buf) {
+ ff_video_decoder_t *this = (ff_video_decoder_t *) this_gen;
+
+- lprintf ("processing packet type = %08x, len = %d, decoder_flags=%08x\n",
++ lprintf ("processing packet type = %08x, len = %d, decoder_flags=%08x\n",
+ buf->type, buf->size, buf->decoder_flags);
+
+ if (buf->decoder_flags & BUF_FLAG_FRAMERATE) {
+@@ -1529,7 +1466,7 @@
+ }
+
+ if (buf->decoder_flags & BUF_FLAG_PREVIEW) {
+-
++
+ ff_handle_preview_buffer(this, buf);
+
+ } else {
+@@ -1537,7 +1474,7 @@
+ if (buf->decoder_flags & BUF_FLAG_SPECIAL) {
+
+ ff_handle_special_buffer(this, buf);
+-
++
+ }
+
+ if (buf->decoder_flags & BUF_FLAG_HEADER) {
+@@ -1551,7 +1488,7 @@
+ lprintf("aspect ratio: %f\n", this->aspect_ratio);
+ set_stream_info(this);
+ }
+- }
++ }
+
+ } else {
+
+@@ -1582,7 +1519,7 @@
+
+ if(this->context && this->decoder_ok)
+ avcodec_flush_buffers(this->context);
+-
++
+ if (this->is_mpeg12)
+ mpeg_parser_reset(this->mpeg_parser);
+
+@@ -1596,14 +1533,14 @@
+
+ static void ff_discontinuity (video_decoder_t *this_gen) {
+ ff_video_decoder_t *this = (ff_video_decoder_t *) this_gen;
+-
++
+ lprintf ("ff_discontinuity\n");
+ this->pts = 0;
+
+ #ifdef AVCODEC_HAS_REORDERED_OPAQUE
+ /*
+ * there is currently no way to reset all the pts which are stored in the decoder.
+- * therefore, we add a unique tag (generated from pts_tag_counter) to pts (see
++ * therefore, we add a unique tag (generated from pts_tag_counter) to pts (see
+ * ff_tag_pts()) and wait for it to appear on returned frames.
+ * until then, any retrieved pts value will be reset to 0 (see ff_untag_pts()).
+ * when we see the tag returned, pts_tag will be reset to 0. from now on, any
+@@ -1640,15 +1577,15 @@
+ ff_video_decoder_t *this = (ff_video_decoder_t *) this_gen;
+
+ lprintf ("ff_dispose\n");
+-
++
+ if (this->decoder_ok) {
+ xine_list_iterator_t it;
+ AVFrame *av_frame;
+-
++
+ pthread_mutex_lock(&ffmpeg_lock);
+ avcodec_close (this->context);
+ pthread_mutex_unlock(&ffmpeg_lock);
+-
++
+ /* frame garbage collector here - workaround for buggy ffmpeg codecs that
+ * don't release their DR1 frames */
+ while( (it = xine_list_front(this->dr1_frames)) != NULL )
+@@ -1656,7 +1593,7 @@
+ av_frame = (AVFrame *)xine_list_get_value(this->dr1_frames, it);
+ release_buffer(this->context, av_frame);
+ }
+-
++
+ this->stream->video_out->close(this->stream->video_out, this->stream);
+ this->decoder_ok = 0;
+ }
+@@ -1669,27 +1606,27 @@
+
+ if(this->yuv_init)
+ free_yuv_planes(&this->yuv);
+-
++
+ if( this->context )
+ av_free( this->context );
+
+ if( this->av_frame )
+ av_free( this->av_frame );
+-
++
+ if (this->buf)
+ free(this->buf);
+ this->buf = NULL;
+-
++
+ if(this->pp_context)
+ pp_free_context(this->pp_context);
+-
++
+ if(this->pp_mode)
+ pp_free_mode(this->pp_mode);
+
+ mpeg_parser_dispose(this->mpeg_parser);
+-
++
+ xine_list_delete(this->dr1_frames);
+-
++
+ free (this_gen);
+ }
+
+@@ -1715,7 +1652,7 @@
+ this->context = avcodec_alloc_context();
+ this->context->opaque = this;
+ this->context->palctrl = NULL;
+-
++
+ this->decoder_ok = 0;
+ this->decoder_init_mode = 1;
+ this->buf = calloc(1, VIDEOBUFSIZE + FF_INPUT_BUFFER_PADDING_SIZE);
+@@ -1727,9 +1664,9 @@
+ this->pp_quality = 0;
+ this->pp_context = NULL;
+ this->pp_mode = NULL;
+-
++
+ this->mpeg_parser = NULL;
+-
++
+ this->dr1_frames = xine_list_new();
+
+ #ifdef LOG
+@@ -1755,7 +1692,7 @@
+
+ ff_video_class_t *this;
+ config_values_t *config;
+-
++
+ this = calloc(1, sizeof (ff_video_class_t));
+
+ this->decoder_class.open_plugin = ff_video_open_plugin;
+@@ -1765,12 +1702,12 @@
+ this->xine = xine;
+
+ pthread_once( &once_control, init_once_routine );
+-
++
+ /* Configuration for post processing quality - default to mid (3) for the
+ * moment */
+ config = xine->config;
+-
+- this->pp_quality = xine->config->register_range(config, "video.processing.ffmpeg_pp_quality", 3,
++
++ this->pp_quality = xine->config->register_range(config, "video.processing.ffmpeg_pp_quality", 3,
+ 0, PP_QUALITY_MAX,
+ _("MPEG-4 postprocessing quality"),
+ _("You can adjust the amount of post processing applied to MPEG-4 video.\n"
+@@ -1779,8 +1716,8 @@
+ "too heavy post processing can actually make the image worse by blurring it "
+ "too much."),
+ 10, pp_quality_cb, this);
+-
+- this->thread_count = xine->config->register_num(config, "video.processing.ffmpeg_thread_count", 1,
++
++ this->thread_count = xine->config->register_num(config, "video.processing.ffmpeg_thread_count", 1,
+ _("FFmpeg video decoding thread count"),
+ _("You can adjust the number of video decoding threads which FFmpeg may use.\n"
+ "Higher values should speed up decoding but it depends on the codec used "
+@@ -1789,7 +1726,7 @@
+ "A change of this setting will take effect with playing the next stream."),
+ 10, thread_count_cb, this);
+
+- this->skip_loop_filter_enum = xine->config->register_enum(config, "video.processing.ffmpeg_skip_loop_filter", 0,
++ this->skip_loop_filter_enum = xine->config->register_enum(config, "video.processing.ffmpeg_skip_loop_filter", 0,
+ (char **)skip_loop_filter_enum_names,
+ _("Skip loop filter"),
+ _("You can control for which frames the loop filter shall be skipped after "
+@@ -1800,7 +1737,7 @@
+ "A change of this setting will take effect with playing the next stream."),
+ 10, skip_loop_filter_enum_cb, this);
+
+- this->choose_speed_over_accuracy = xine->config->register_bool(config, "video.processing.ffmpeg_choose_speed_over_accuracy", 0,
++ this->choose_speed_over_accuracy = xine->config->register_bool(config, "video.processing.ffmpeg_choose_speed_over_accuracy", 0,
+ _("Choose speed over specification compliance"),
+ _("You may want to allow speed cheats which violate codec specification.\n"
+ "Cheating may speed up decoding but can also lead to decoding artefacts.\n"
+@@ -1810,14 +1747,14 @@
+ return this;
+ }
+
+-static uint32_t wmv8_video_types[] = {
++static uint32_t wmv8_video_types[] = {
+ BUF_VIDEO_WMV8,
+- 0
++ 0
+ };
+
+-static uint32_t wmv9_video_types[] = {
++static uint32_t wmv9_video_types[] = {
+ BUF_VIDEO_WMV9,
+- 0
++ 0
+ };
+
+ decoder_info_t dec_info_ffmpeg_video = {
diff --git a/source/xap/xine-lib/xine-lib.SlackBuild b/source/xap/xine-lib/xine-lib.SlackBuild
index 84c6703f1..50bc2edee 100755
--- a/source/xap/xine-lib/xine-lib.SlackBuild
+++ b/source/xap/xine-lib/xine-lib.SlackBuild
@@ -22,17 +22,26 @@
# Version on the tarball
-VERSION=1.1.16.3
+VERSION=1.1.17
# Version used in the source directory to cd into
-DIRVER=1.1.16.3
+DIRVER=1.1.17
# Version used for the Slackware package
-PKGVER=1.1.16.3
+PKGVER=1.1.17
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i686 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
# I would use "-march=i486 -mtune=i686" here as usual, but with XINE it's all or nothing.
# I'd rather have it work well for the i686/Athlon crowd than suck for everyone.
-ARCH=${ARCH:-x86_64}
TARGET=${TARGET:-$ARCH-pc-linux-gnu}
-BUILD=${BUILD:-6}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -53,6 +62,10 @@ rm -rf xine-lib-$VERSION
tar xvf $CWD/xine-lib-$VERSION.tar.bz2 || exit 1
cd xine-lib-$DIRVER || exit 1
+# revert to xine-lib-1.1.16.3 ffmpeg video decoder...
+# the new one doesn't compile:
+zcat $CWD/xine-lib-1.1.17.ff.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
diff --git a/source/xap/xine-ui/xine-ui.SlackBuild b/source/xap/xine-ui/xine-ui.SlackBuild
index 1dd61f1f6..61650223f 100755
--- a/source/xap/xine-ui/xine-ui.SlackBuild
+++ b/source/xap/xine-ui/xine-ui.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,12 +21,21 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=0.99.5
+VERSION=${VERSION:-$(echo xine-ui-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
# I would use "-march=i486 -mcpu=i686" here as usual, but with XINE it's all or nothing.
# I'd rather have it work well for the i686/Athlon crowd than suck for everyone.
-ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i686 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
TARGET=${TARGET:-$ARCH-pc-linux-gnu}
-BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -41,6 +50,8 @@ rm -rf xine-ui-$VERSION
tar xvf $CWD/xine-ui-$VERSION.tar.bz2 || exit 1
cd xine-ui-$VERSION || exit 1
+zcat $CWD/xine-ui.png14.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
diff --git a/source/xap/xine-ui/xine-ui.png14.diff b/source/xap/xine-ui/xine-ui.png14.diff
new file mode 100644
index 000000000..35a06513c
--- /dev/null
+++ b/source/xap/xine-ui/xine-ui.png14.diff
@@ -0,0 +1,11 @@
+--- ./src/xitk/Imlib-light/load.c.orig 2003-07-14 17:44:10.000000000 -0500
++++ ./src/xitk/Imlib-light/load.c 2010-02-19 13:41:27.000000000 -0600
+@@ -193,7 +193,7 @@
+ return 0;
+ fread(buf, 1, 8, f);
+ rewind(f);
+- return (int)png_check_sig(buf, 8);
++ return (int)(png_sig_cmp(buf, 0, 8) == 0);
+ }
+
+ ImlibImage * Imlib_load_image(ImlibData * id, char *file) {
diff --git a/source/xap/xmms/xmms.SlackBuild b/source/xap/xmms/xmms.SlackBuild
index b11afde61..042d8310e 100755
--- a/source/xap/xmms/xmms.SlackBuild
+++ b/source/xap/xmms/xmms.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,9 +22,17 @@
VERSION=1.2.11
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-4}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -38,8 +46,14 @@ elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
ARCHOPTS=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ARCHOPTS=""
fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-xmms
@@ -68,7 +82,7 @@ CXXFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--localstatedir=/var/lib \
--disable-static \
- --with-ipv6 \
+ --enable-ipv6 \
$ARCHOPTS \
--build=$ARCH-slackware-linux
@@ -79,6 +93,10 @@ make install DESTDIR=$PKG || exit 1
mkdir -p $PKG/usr/share/applications
cat $CWD/xmms.desktop > $PKG/usr/share/applications/xmms.desktop
+# Add an icon for the menus:
+mkdir -p $PKG/usr/share/pixmaps
+cat $CWD/xmms.png > $PKG/usr/share/pixmaps/xmms.png
+
mkdir -p $PKG/usr/doc/xmms-$VERSION
cp -a \
ABOUT-NLS AUTHORS COPYING FAQ INSTALL NEWS README TODO \
diff --git a/source/xap/xmms/xmms.png b/source/xap/xmms/xmms.png
new file mode 100644
index 000000000..7ff618709
--- /dev/null
+++ b/source/xap/xmms/xmms.png
Binary files differ
diff --git a/source/xap/xpaint/xpaint.SlackBuild b/source/xap/xpaint/xpaint.SlackBuild
index c353c7384..367df5ee0 100755
--- a/source/xap/xpaint/xpaint.SlackBuild
+++ b/source/xap/xpaint/xpaint.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,20 @@
PKGNAM=xpaint
-VERSION=${VERSION:-2.7.8.1}
-ARCH=${ARCH:-x86_64}
+VERSION=${VERSION:-2.8.16}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
CWD=$(pwd)
@@ -43,6 +53,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
cd $TMP
@@ -54,8 +67,6 @@ if [ "$ARCH" = "x86_64" ]; then
# Make it detect Xaw3d:
sed -i -e "s#usr/lib/#usr/lib${LIBDIRSUFFIX}/#g" $( grep -lr 'usr/lib/' * )
fi
-zcat ${CWD}/xpaint_xaw3d_no_scroll_mode.diff.gz | patch -p1 || exit 1
-#zcat ${CWD}/xpaint_2.7.8.1-1.2.diff.gz | patch -p1 || exit 1
# Make sure ownerships and permissions are sane:
chown -R root:root .
@@ -109,9 +120,17 @@ fi
# Add a documentation directory:
mkdir -p ${PKG}/usr/doc/xpaint-$VERSION
cp -a \
- README README.PNG README.old TODO \
+ GPL* INSTALL README* TODO* \
${PKG}/usr/doc/xpaint-$VERSION
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
mkdir -p $PKG/install
cat $CWD/slack-desc > ${PKG}/install/slack-desc
diff --git a/source/xap/xpaint/xpaint_2.7.8.1-1.2.diff b/source/xap/xpaint/xpaint_2.7.8.1-1.2.diff
deleted file mode 100644
index 1f8cc82e1..000000000
--- a/source/xap/xpaint/xpaint_2.7.8.1-1.2.diff
+++ /dev/null
@@ -1,47 +0,0 @@
---- ./misc.h.orig 2005-08-15 14:50:05.000000000 -0500
-+++ ./misc.h 2007-05-10 16:46:23.000000000 -0500
-@@ -24,7 +24,7 @@
- long random(void);
- #endif
-
--#if !defined(__VMS) & !defined(linux) & !defined(__EMX__) & !defined(__FreeBSD__) & !defined(__CYGWIN__)
-+#if !defined(__VMS) & !defined(linux) & !defined(__EMX__) & !defined(__FreeBSD__) & !defined(__CYGWIN__) & !defined(__GLIBC__)
- #if defined(BSD4_4) || defined(HPArchitecture) || defined(SGIArchitecture) || defined(_AIX) || defined(_SCO_DS)
- void srandom(unsigned int);
- #else
---- ./Local.config.orig 2005-04-30 16:33:14.000000000 -0500
-+++ ./Local.config 2007-05-10 16:47:02.000000000 -0500
-@@ -132,11 +132,11 @@
- XCOMM You must have the XPM library.
- XCOMM Make sure the path name to the library is correct.
-
--XPM_LIB = -L/usr/X11R6/lib -lXpm
-+XPM_LIB = -lXpm
-
- XCOMM Make sure this points to the location of the 'xpm.h' file.
-
--XPM_INCLUDE = -I/usr/X11R6/include/X11
-+XPM_INCLUDE = -I/usr/include/X11
-
-
- DEPENDFLAGS = -I./bitmaps
---- ./configure.orig 2005-06-03 07:26:11.000000000 -0500
-+++ ./configure 2007-05-10 16:46:23.000000000 -0500
-@@ -7,7 +7,7 @@
- echo "(looking for Xaw, Xaw3d, Xaw95, neXtaw)"
- echo ""
- else
-- WIDGETS=`echo $1 | tr [a:z] [A:Z]`
-+ WIDGETS=`echo $1`
- fi
-
- if test "$WIDGETS" = "" ; then
-@@ -54,7 +54,7 @@
- fi
- fi
-
--if test "$WIDGETS" = "XAW3DG" ; then
-+if test "$WIDGETS" = "xaw3dg" ; then
- ln -sf /usr/include/X11/Xaw3d xaw_incdir
- echo "XAWLIB_DEFINES = -DXAW3D -DXAW3DG"
- echo "XAWLIB_DEFINES = -DXAW3D -DXAW3DG" > Local.xawdefs
diff --git a/source/xap/xpaint/xpaint_xaw3d_no_scroll_mode.diff b/source/xap/xpaint/xpaint_xaw3d_no_scroll_mode.diff
deleted file mode 100644
index f89b12c1d..000000000
--- a/source/xap/xpaint/xpaint_xaw3d_no_scroll_mode.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- xpaint-2.7.8.1/misc.c.orig 2005-04-24 11:57:52.000000000 +0000
-+++ xpaint-2.7.8.1/misc.c 2008-11-06 21:43:46.000000000 +0000
-@@ -671,7 +671,7 @@
- }
- else return;
- if (sb == None) return;
--#ifdef XAW3DG
-+#if defined(XAW3DG) && defined(XAW_ARROW_SCROLLBARS)
- if (((ScrollbarWidget)sb)->scrollbar.scroll_mode == 2 /* if scroll continuous */
- || LookAhead (sb, event))
- return;
diff --git a/source/xap/xpdf/VendorP.h.buggy.diff b/source/xap/xpdf/VendorP.h.buggy.diff
deleted file mode 100644
index a8c91ab4b..000000000
--- a/source/xap/xpdf/VendorP.h.buggy.diff
+++ /dev/null
@@ -1,19 +0,0 @@
---- ./VendorP.h.orig 2007-02-14 02:45:33.000000000 -0600
-+++ ./VendorP.h 2007-08-08 14:22:17.000000000 -0500
-@@ -76,6 +76,8 @@
- XtPointer extension; /* pointer to extension record */
- } VendorShellClassPart;
-
-+struct VendorShellClassRec;
-+/*
- typedef struct _VendorShellClassRec {
- CoreClassPart core_class;
- CompositeClassPart composite_class;
-@@ -85,6 +87,7 @@
- } VendorShellClassRec;
-
- externalref VendorShellClassRec vendorShellClassRec;
-+*/
-
- /* New fields for the vendor shell widget. */
-
diff --git a/source/xap/xpdf/doinst.sh b/source/xap/xpdf/doinst.sh
new file mode 100644
index 000000000..03a6ae859
--- /dev/null
+++ b/source/xap/xpdf/doinst.sh
@@ -0,0 +1,19 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/xpdfrc.new
+
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
diff --git a/source/xap/xpdf/xpdf-arabic.diff b/source/xap/xpdf/lang/xpdf-arabic.diff
index a6dfcf1f5..a6dfcf1f5 100644
--- a/source/xap/xpdf/xpdf-arabic.diff
+++ b/source/xap/xpdf/lang/xpdf-arabic.diff
diff --git a/source/xap/xpdf/xpdf-chinese-simplified.diff b/source/xap/xpdf/lang/xpdf-chinese-simplified.diff
index adb125a49..adb125a49 100644
--- a/source/xap/xpdf/xpdf-chinese-simplified.diff
+++ b/source/xap/xpdf/lang/xpdf-chinese-simplified.diff
diff --git a/source/xap/xpdf/xpdf-chinese-traditional.diff b/source/xap/xpdf/lang/xpdf-chinese-traditional.diff
index 71d35ee5d..71d35ee5d 100644
--- a/source/xap/xpdf/xpdf-chinese-traditional.diff
+++ b/source/xap/xpdf/lang/xpdf-chinese-traditional.diff
diff --git a/source/xap/xpdf/xpdf-cyrillic.diff b/source/xap/xpdf/lang/xpdf-cyrillic.diff
index ec841961e..ec841961e 100644
--- a/source/xap/xpdf/xpdf-cyrillic.diff
+++ b/source/xap/xpdf/lang/xpdf-cyrillic.diff
diff --git a/source/xap/xpdf/xpdf-greek.diff b/source/xap/xpdf/lang/xpdf-greek.diff
index fe47d4434..fe47d4434 100644
--- a/source/xap/xpdf/xpdf-greek.diff
+++ b/source/xap/xpdf/lang/xpdf-greek.diff
diff --git a/source/xap/xpdf/xpdf-hebrew.diff b/source/xap/xpdf/lang/xpdf-hebrew.diff
index e7d091d00..e7d091d00 100644
--- a/source/xap/xpdf/xpdf-hebrew.diff
+++ b/source/xap/xpdf/lang/xpdf-hebrew.diff
diff --git a/source/xap/xpdf/xpdf-japanese.diff b/source/xap/xpdf/lang/xpdf-japanese.diff
index 5c1878fe8..5c1878fe8 100644
--- a/source/xap/xpdf/xpdf-japanese.diff
+++ b/source/xap/xpdf/lang/xpdf-japanese.diff
diff --git a/source/xap/xpdf/xpdf-korean.diff b/source/xap/xpdf/lang/xpdf-korean.diff
index 632fc2145..632fc2145 100644
--- a/source/xap/xpdf/xpdf-korean.diff
+++ b/source/xap/xpdf/lang/xpdf-korean.diff
diff --git a/source/xap/xpdf/xpdf-latin2.diff b/source/xap/xpdf/lang/xpdf-latin2.diff
index 88ce2444e..88ce2444e 100644
--- a/source/xap/xpdf/xpdf-latin2.diff
+++ b/source/xap/xpdf/lang/xpdf-latin2.diff
diff --git a/source/xap/xpdf/xpdf-thai.diff b/source/xap/xpdf/lang/xpdf-thai.diff
index 75b9b1a28..75b9b1a28 100644
--- a/source/xap/xpdf/xpdf-thai.diff
+++ b/source/xap/xpdf/lang/xpdf-thai.diff
diff --git a/source/xap/xpdf/xpdf-turkish.diff b/source/xap/xpdf/lang/xpdf-turkish.diff
index ec7fe79f0..ec7fe79f0 100644
--- a/source/xap/xpdf/xpdf-turkish.diff
+++ b/source/xap/xpdf/lang/xpdf-turkish.diff
diff --git a/source/xap/xpdf/xpdf-3.02pl1.patch b/source/xap/xpdf/patches/xpdf-3.02pl1.patch
index cd42fb962..cd42fb962 100644
--- a/source/xap/xpdf/xpdf-3.02pl1.patch
+++ b/source/xap/xpdf/patches/xpdf-3.02pl1.patch
diff --git a/source/xap/xpdf/xpdf-3.02pl2.patch b/source/xap/xpdf/patches/xpdf-3.02pl2.patch
index ab9e3c671..ab9e3c671 100644
--- a/source/xap/xpdf/xpdf-3.02pl2.patch
+++ b/source/xap/xpdf/patches/xpdf-3.02pl2.patch
diff --git a/source/xap/xpdf/xpdf-3.02pl3.patch b/source/xap/xpdf/patches/xpdf-3.02pl3.patch
index b5988805f..b5988805f 100644
--- a/source/xap/xpdf/xpdf-3.02pl3.patch
+++ b/source/xap/xpdf/patches/xpdf-3.02pl3.patch
diff --git a/source/xap/xpdf/patches/xpdf-3.02pl4.patch b/source/xap/xpdf/patches/xpdf-3.02pl4.patch
new file mode 100644
index 000000000..082d11750
--- /dev/null
+++ b/source/xap/xpdf/patches/xpdf-3.02pl4.patch
@@ -0,0 +1,282 @@
+*** xpdf-3.02.orig/xpdf/Stream.cc Fri Jul 24 14:30:46 2009
+--- xpdf-3.02/xpdf/Stream.cc Mon Oct 5 11:07:49 2009
+***************
+*** 323,328 ****
+--- 323,332 ----
+ } else {
+ imgLineSize = nVals;
+ }
++ if (width > INT_MAX / nComps) {
++ // force a call to gmallocn(-1,...), which will throw an exception
++ imgLineSize = -1;
++ }
+ imgLine = (Guchar *)gmallocn(imgLineSize, sizeof(Guchar));
+ imgIdx = nVals;
+ }
+*** xpdf-3.02.orig/xpdf/PSOutputDev.cc Tue Feb 27 14:05:52 2007
+--- xpdf-3.02/xpdf/PSOutputDev.cc Fri Oct 2 12:38:58 2009
+***************
+*** 4301,4307 ****
+ width, -height, height);
+
+ // allocate a line buffer
+! lineBuf = (Guchar *)gmalloc(4 * width);
+
+ // set up to process the data stream
+ imgStr = new ImageStream(str, width, colorMap->getNumPixelComps(),
+--- 4301,4307 ----
+ width, -height, height);
+
+ // allocate a line buffer
+! lineBuf = (Guchar *)gmallocn(width, 4);
+
+ // set up to process the data stream
+ imgStr = new ImageStream(str, width, colorMap->getNumPixelComps(),
+diff -r -c xpdf-3.02.orig/splash/Splash.cc xpdf-3.02/splash/Splash.cc
+*** xpdf-3.02.orig/splash/Splash.cc Tue Feb 27 14:05:52 2007
+--- xpdf-3.02/splash/Splash.cc Fri Aug 14 14:05:08 2009
+***************
+*** 12,17 ****
+--- 12,18 ----
+
+ #include <stdlib.h>
+ #include <string.h>
++ #include <limits.h>
+ #include "gmem.h"
+ #include "SplashErrorCodes.h"
+ #include "SplashMath.h"
+***************
+*** 1912,1918 ****
+ xq = w % scaledWidth;
+
+ // allocate pixel buffer
+! pixBuf = (SplashColorPtr)gmalloc((yp + 1) * w);
+
+ // initialize the pixel pipe
+ pipeInit(&pipe, 0, 0, state->fillPattern, NULL, state->fillAlpha,
+--- 1913,1922 ----
+ xq = w % scaledWidth;
+
+ // allocate pixel buffer
+! if (yp < 0 || yp > INT_MAX - 1) {
+! return splashErrBadArg;
+! }
+! pixBuf = (SplashColorPtr)gmallocn(yp + 1, w);
+
+ // initialize the pixel pipe
+ pipeInit(&pipe, 0, 0, state->fillPattern, NULL, state->fillAlpha,
+***************
+*** 2208,2216 ****
+ xq = w % scaledWidth;
+
+ // allocate pixel buffers
+! colorBuf = (SplashColorPtr)gmalloc((yp + 1) * w * nComps);
+ if (srcAlpha) {
+! alphaBuf = (Guchar *)gmalloc((yp + 1) * w);
+ } else {
+ alphaBuf = NULL;
+ }
+--- 2212,2223 ----
+ xq = w % scaledWidth;
+
+ // allocate pixel buffers
+! if (yp < 0 || yp > INT_MAX - 1 || w > INT_MAX / nComps) {
+! return splashErrBadArg;
+! }
+! colorBuf = (SplashColorPtr)gmallocn(yp + 1, w * nComps);
+ if (srcAlpha) {
+! alphaBuf = (Guchar *)gmallocn(yp + 1, w);
+ } else {
+ alphaBuf = NULL;
+ }
+diff -r -c xpdf-3.02.orig/splash/SplashErrorCodes.h xpdf-3.02/splash/SplashErrorCodes.h
+*** xpdf-3.02.orig/splash/SplashErrorCodes.h Tue Feb 27 14:05:52 2007
+--- xpdf-3.02/splash/SplashErrorCodes.h Fri Aug 14 14:03:46 2009
+***************
+*** 29,32 ****
+--- 29,34 ----
+
+ #define splashErrSingularMatrix 8 // matrix is singular
+
++ #define splashErrBadArg 9 // bad argument
++
+ #endif
+*** xpdf-3.02.orig/splash/SplashBitmap.cc Tue Feb 27 14:05:52 2007
+--- xpdf-3.02/splash/SplashBitmap.cc Wed Aug 19 14:55:39 2009
+***************
+*** 11,16 ****
+--- 11,17 ----
+ #endif
+
+ #include <stdio.h>
++ #include <limits.h>
+ #include "gmem.h"
+ #include "SplashErrorCodes.h"
+ #include "SplashBitmap.h"
+***************
+*** 27,56 ****
+ mode = modeA;
+ switch (mode) {
+ case splashModeMono1:
+! rowSize = (width + 7) >> 3;
+ break;
+ case splashModeMono8:
+! rowSize = width;
+ break;
+ case splashModeRGB8:
+ case splashModeBGR8:
+! rowSize = width * 3;
+ break;
+ #if SPLASH_CMYK
+ case splashModeCMYK8:
+! rowSize = width * 4;
+ break;
+ #endif
+ }
+! rowSize += rowPad - 1;
+! rowSize -= rowSize % rowPad;
+! data = (SplashColorPtr)gmalloc(rowSize * height);
+ if (!topDown) {
+ data += (height - 1) * rowSize;
+ rowSize = -rowSize;
+ }
+ if (alphaA) {
+! alpha = (Guchar *)gmalloc(width * height);
+ } else {
+ alpha = NULL;
+ }
+--- 28,75 ----
+ mode = modeA;
+ switch (mode) {
+ case splashModeMono1:
+! if (width > 0) {
+! rowSize = (width + 7) >> 3;
+! } else {
+! rowSize = -1;
+! }
+ break;
+ case splashModeMono8:
+! if (width > 0) {
+! rowSize = width;
+! } else {
+! rowSize = -1;
+! }
+ break;
+ case splashModeRGB8:
+ case splashModeBGR8:
+! if (width > 0 && width <= INT_MAX / 3) {
+! rowSize = width * 3;
+! } else {
+! rowSize = -1;
+! }
+ break;
+ #if SPLASH_CMYK
+ case splashModeCMYK8:
+! if (width > 0 && width <= INT_MAX / 4) {
+! rowSize = width * 4;
+! } else {
+! rowSize = -1;
+! }
+ break;
+ #endif
+ }
+! if (rowSize > 0) {
+! rowSize += rowPad - 1;
+! rowSize -= rowSize % rowPad;
+! }
+! data = (SplashColorPtr)gmallocn(height, rowSize);
+ if (!topDown) {
+ data += (height - 1) * rowSize;
+ rowSize = -rowSize;
+ }
+ if (alphaA) {
+! alpha = (Guchar *)gmallocn(width, height);
+ } else {
+ alpha = NULL;
+ }
+*** xpdf-3.02.orig/xpdf/XRef.cc Tue Feb 27 14:05:52 2007
+--- xpdf-3.02/xpdf/XRef.cc Tue Oct 13 11:57:24 2009
+***************
+*** 52,57 ****
+--- 52,59 ----
+ // generation 0.
+ ObjectStream(XRef *xref, int objStrNumA);
+
++ GBool isOk() { return ok; }
++
+ ~ObjectStream();
+
+ // Return the object number of this object stream.
+***************
+*** 67,72 ****
+--- 69,75 ----
+ int nObjects; // number of objects in the stream
+ Object *objs; // the objects (length = nObjects)
+ int *objNums; // the object numbers (length = nObjects)
++ GBool ok;
+ };
+
+ ObjectStream::ObjectStream(XRef *xref, int objStrNumA) {
+***************
+*** 80,85 ****
+--- 83,89 ----
+ nObjects = 0;
+ objs = NULL;
+ objNums = NULL;
++ ok = gFalse;
+
+ if (!xref->fetch(objStrNum, 0, &objStr)->isStream()) {
+ goto err1;
+***************
+*** 105,110 ****
+--- 109,121 ----
+ goto err1;
+ }
+
++ // this is an arbitrary limit to avoid integer overflow problems
++ // in the 'new Object[nObjects]' call (Acrobat apparently limits
++ // object streams to 100-200 objects)
++ if (nObjects > 1000000) {
++ error(-1, "Too many objects in an object stream");
++ goto err1;
++ }
+ objs = new Object[nObjects];
+ objNums = (int *)gmallocn(nObjects, sizeof(int));
+ offsets = (int *)gmallocn(nObjects, sizeof(int));
+***************
+*** 161,170 ****
+ }
+
+ gfree(offsets);
+
+ err1:
+ objStr.free();
+- return;
+ }
+
+ ObjectStream::~ObjectStream() {
+--- 172,181 ----
+ }
+
+ gfree(offsets);
++ ok = gTrue;
+
+ err1:
+ objStr.free();
+ }
+
+ ObjectStream::~ObjectStream() {
+***************
+*** 837,842 ****
+--- 848,858 ----
+ delete objStr;
+ }
+ objStr = new ObjectStream(this, e->offset);
++ if (!objStr->isOk()) {
++ delete objStr;
++ objStr = NULL;
++ goto err;
++ }
+ }
+ objStr->getObject(e->gen, num, obj);
+ break;
diff --git a/source/xap/xpdf/xpdf-resizefix.diff b/source/xap/xpdf/patches/xpdf-resizefix.diff
index 4be7feb0a..4be7feb0a 100644
--- a/source/xap/xpdf/xpdf-resizefix.diff
+++ b/source/xap/xpdf/patches/xpdf-resizefix.diff
diff --git a/source/xap/xpdf/xpdf_3.02-1.3.diff b/source/xap/xpdf/patches/xpdf_3.02-1.3.diff
index 6a769e5c9..6a769e5c9 100644
--- a/source/xap/xpdf/xpdf_3.02-1.3.diff
+++ b/source/xap/xpdf/patches/xpdf_3.02-1.3.diff
diff --git a/source/xap/xpdf/xpdfrc.diff b/source/xap/xpdf/patches/xpdfrc.diff
index f005414e0..f005414e0 100644
--- a/source/xap/xpdf/xpdfrc.diff
+++ b/source/xap/xpdf/patches/xpdfrc.diff
diff --git a/source/xap/xpdf/xpdf.SlackBuild b/source/xap/xpdf/xpdf.SlackBuild
index d07fb9aa6..5acf7c06e 100755
--- a/source/xap/xpdf/xpdf.SlackBuild
+++ b/source/xap/xpdf/xpdf.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,20 @@
VERSION=3.02
-PATCHLEVEL=pl3
-ARCH=${ARCH:-x86_64}
+PATCHLEVEL=pl4
+BUILD=${BUILD:-2}
+
NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=1
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -36,25 +46,23 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-xpdf
+
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf xpdf-$VERSION
-tar xvf $CWD/xpdf-$VERSION.tar.gz || exit 1
+tar xvf $CWD/xpdf-$VERSION.tar.?z || exit 1
cd xpdf-$VERSION || exit 1
-zcat $CWD/xpdf-resizefix.diff.gz | patch -p1 --verbose || exit 1
-cat $CWD/xpdf-3.02pl1.patch | patch -p1 --verbose || exit 1
-cat $CWD/xpdf-3.02pl2.patch | patch -p1 --verbose || exit 1
-cat $CWD/xpdf-3.02pl3.patch | patch -p1 --verbose || exit 1
-zcat $CWD/xpdf_3.02-1.3.diff.gz | patch -p1 --verbose || exit 1
-
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
@@ -62,7 +70,14 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-zcat $CWD/xpdfrc.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit
+zcat $CWD/patches/xpdf-resizefix.diff.gz | patch -p1 --verbose || exit 1
+cat $CWD/patches/xpdf-3.02pl1.patch | patch -p1 --verbose || exit 1
+cat $CWD/patches/xpdf-3.02pl2.patch | patch -p1 --verbose || exit 1
+cat $CWD/patches/xpdf-3.02pl3.patch | patch -p1 --verbose || exit 1
+cat $CWD/patches/xpdf-3.02pl4.patch | patch -p1 --verbose || exit 1
+zcat $CWD/patches/xpdf_3.02-1.3.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/xpdfrc.diff.gz | patch -p1 --verbose || exit 1
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -71,71 +86,68 @@ CXXFLAGS="$SLKCFLAGS" \
--mandir=/usr/man \
--sysconfdir=/etc \
--with-gzip \
- --with-freetype2-includes=/usr/include/freetype2
+ --with-freetype2-includes=/usr/include/freetype2 \
+ --build=$ARCH-slackware-linux
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
-mkdir -p $PKG/etc
-cat doc/sample-xpdfrc > $PKG/etc/xpdfrc
-mkdir -p $PKG/usr/share/applications
-cat $CWD/xpdf.desktop > $PKG/usr/share/applications/xpdf.desktop
-mkdir -p $PKG/usr/share/icons
-cat xpdf/xpdfIcon.xpm > $PKG/usr/share/icons/xpdfIcon.xpm
+chmod 0755 $PKG/usr/bin/*
+gzip -9 $PKG/usr/man/man?/*
-find $PKG | xargs file | grep -e "executable" -e "shared object" \
- | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+# We'll use the versions of these from the poppler derived work (if they exist here):
+( cd $PKG/usr/bin
+ rm -f pdfinfo pdftops pdftoppm pdftohtml pdftotext pdfimages pdffonts
+ cd $PKG/usr/man/man1
+ for file in pdfinfo pdftops pdftoppm pdftohtml pdftotext pdfimages pdffonts ; do
+ rm -f ${file}.1.gz
+ done
+)
-chmod 755 $PKG/usr/bin/*
-gzip -9 $PKG/usr/man/man?/*
+# Don't clobber /etc/xpdfrc
+mkdir -p $PKG/etc
+cat doc/sample-xpdfrc > $PKG/etc/xpdfrc
+mv $PKG/etc/xpdfrc $PKG/etc/xpdfrc.new
-mkdir -p $PKG/usr/doc/xpdf-$VERSION
-cp -a \
- ANNOUNCE CHANGES COPYING INSTALL README \
- $PKG/usr/doc/xpdf-$VERSION
-chmod 644 $PKG/usr/doc/xpdf-$VERSION/*
+# Add desktop menu entry and icon
+mkdir -p $PKG/usr/share/{applications,pixmaps}
+cat $CWD/xpdf.desktop > $PKG/usr/share/applications/xpdf.desktop
+cat xpdf/xpdfIcon.xpm > $PKG/usr/share/pixmaps/xpdfIcon.xpm
# Add additional language support:
for language in xpdf-arabic xpdf-chinese-simplified xpdf-chinese-traditional xpdf-cyrillic xpdf-greek xpdf-hebrew xpdf-japanese xpdf-korean xpdf-latin2 xpdf-thai xpdf-turkish ; do
rm -rf ${language}
- tar xf $CWD/${language}.tar.gz
+ tar xf $CWD/lang/${language}.tar.gz
( cd ${language}
- zcat $CWD/${language}.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+ zcat $CWD/lang/${language}.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
chown -R root:root .
find . -type f -exec chmod 644 {} \;
- cat add-to-xpdfrc >> $PKG/etc/xpdfrc
+ cat add-to-xpdfrc >> $PKG/etc/xpdfrc.new
mkdir -p $PKG/usr/share/xpdf/$(echo ${language} | cut -f2- -d -)
cp -a * $PKG/usr/share/xpdf/$(echo ${language} | cut -f2- -d -)
)
done
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/xpdf-$VERSION
+cp -a \
+ ANNOUNCE CHANGES COPYING INSTALL README \
+ $PKG/usr/doc/xpdf-$VERSION
+chmod 0644 $PKG/usr/doc/xpdf-$VERSION/*
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r CHANGES ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat CHANGES | head -n 1000 > $DOCSDIR/CHANGES
+ touch -r CHANGES $DOCSDIR/CHANGES
+fi
+
mkdir -p $PKG/install
-mv $PKG/etc/xpdfrc $PKG/etc/xpdfrc.new
-cat << EOF > $PKG/install/doinst.sh
-#!/bin/sh
-config() {
- NEW="\$1"
- OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)"
- # If there's no config file by that name, mv it over:
- if [ ! -r \$OLD ]; then
- mv \$NEW \$OLD
- elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then # toss the redundant copy
- rm \$NEW
- fi
- # Otherwise, we leave the .new copy for the admin to consider...
-}
-config etc/xpdfrc.new
-EOF
cat $CWD/slack-desc > $PKG/install/slack-desc
-
-# We'll use the versions of these from the poppler derived work (if they exist here):
-( cd $PKG/usr/bin
- rm -f pdfinfo pdftops pdftoppm pdftohtml pdftotext pdfimages pdffonts
- cd $PKG/usr/man/man1
- for file in pdfinfo pdftops pdftoppm pdftohtml pdftotext pdfimages pdffonts ; do
- rm -f ${file}.1.gz
- done
-)
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
# Build the package:
cd $PKG
diff --git a/source/xap/xpdf/xpdf.desktop b/source/xap/xpdf/xpdf.desktop
index b8f4c9b17..51d1a5a6d 100644
--- a/source/xap/xpdf/xpdf.desktop
+++ b/source/xap/xpdf/xpdf.desktop
@@ -1,5 +1,4 @@
[Desktop Entry]
-Encoding=UTF-8
Name=X PDF
Name[bn]=à¦à¦•à§à¦¸ পি-ডি-à¦à¦«
Name[de]=X-PDF
@@ -11,7 +10,7 @@ Name[ko]=Xìš© PDF
Name[mn]=X-PDF
Name[nds]=X-PDF
Name[te]=à°Žà°•à±à°¸à± పిడిఎఫà±
-MimeType=application/pdf
+MimeType=application/pdf;
GenericName=PDF Viewer
GenericName[af]=Pdf Aansig
GenericName[ar]=عارض الملÙات PDF
@@ -93,8 +92,7 @@ GenericName[zh_TW]=PDF 檢視程å¼
GenericName[zu]=Umbukisi we-PDF
Exec=xpdf
Icon=xpdfIcon
-Path=
Type=Application
Terminal=false
X-KDE-StartupNotify=false
-Categories=Graphics;PDFViewer;
+Categories=Graphics;
diff --git a/source/xap/xsane/xsane.SlackBuild b/source/xap/xsane/xsane.SlackBuild
index f8d730124..444700c51 100755
--- a/source/xap/xsane/xsane.SlackBuild
+++ b/source/xap/xsane/xsane.SlackBuild
@@ -22,8 +22,17 @@
VERSION=0.996
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -37,6 +46,8 @@ elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
fi
rm -rf $PKG
diff --git a/source/xap/xscreensaver/xscreensaver.SlackBuild b/source/xap/xscreensaver/xscreensaver.SlackBuild
index 4eb2fdfd4..6d01ced00 100755
--- a/source/xap/xscreensaver/xscreensaver.SlackBuild
+++ b/source/xap/xscreensaver/xscreensaver.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,11 +21,20 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=5.08
-ARCH=${ARCH:-x86_64}
-NUMJOBS=${NUMJOBS:-" -j7 "}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo xscreensaver-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+NUMJOBS=${NUMJOBS:-" -j7 "}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
@@ -36,6 +45,9 @@ elif [ "$ARCH" = "s390" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
fi
CWD=$(pwd)
diff --git a/source/xap/xv/xv-3.10a-enhancements.20070520-20081216.diff b/source/xap/xv/xv-3.10a-enhancements.20070520-20081216.diff
new file mode 100644
index 000000000..c9b5528f5
--- /dev/null
+++ b/source/xap/xv/xv-3.10a-enhancements.20070520-20081216.diff
@@ -0,0 +1,293 @@
+ 20070621
+ fixed improper ClearCode termination condition in GIF decoder (JZ); fixed
+ some minor inconsistencies in Makefile (GRR)
+ - xv-joe-zbiciak-20070621-gif-decoder-bugfix.dif
+
+ 20080121
+ removed duplicate "XDestroyWindow(theDisp, pngW);" in xvmisc.c (IMC); fixed
+ empty-filename click-and-crash bug in xvdir.c (IMC, DB)
+ - xv-ian-collier-20080118-crash-fixes.msg
+ - xv-david-bath-20080901-empty-filename-save-crash-fix.dif
+
+ 20081205
+ reverted xvxwd.c to SJT's version (bug reported by Jari Ruusu)
+
+ 20081216
+ fixed crash-bug in IFF decoder (EP)
+ - xv-elmar-plischke-20081216-xviff-crash-fix.dif
+
+
+
+diff -ru ../test3.20070520.stock/xv-3.10a/xv.h ./xv.h
+--- ../test3.20070520.stock/xv-3.10a/xv.h 2007-05-20 22:23:33.000000000 -0700
++++ ./xv.h 2008-12-16 09:45:00.000000000 -0800
+@@ -16,8 +16,9 @@
+ /* GRR 2nd public jumbo F+E patches: 20050410 */
+ /* GRR 3rd public jumbo F+E patches: 20050501 */
+ /* GRR 4th public jumbo F+E patch: 20070520 */
+-#define REVDATE "version 3.10a-jumboFix+Enh of 20070520"
+-#define VERSTR "3.10a-20070520"
++/* GRR 5th public jumbo F+E patch: 200xxxxx (probably mid-2009) */
++#define REVDATE "version 3.10a-jumboFix+Enh of 20081216 (interim!)"
++#define VERSTR "3.10a-20081216"
+
+ /*
+ * uncomment the following, and modify for your site, but only if you've
+
+
+
+diff -ru ../test3.20070520.stock/xv-3.10a/xvdir.c ./xvdir.c
+--- ../test3.20070520.stock/xv-3.10a/xvdir.c 2007-05-20 22:23:33.000000000 -0700
++++ ./xvdir.c 2008-01-21 13:02:38.000000000 -0800
+@@ -539,8 +539,9 @@
+ return -1;
+ }
+
+- /* handle clicks inside the filename box */
+- if (x > 80 &&
++ /* handle clicks inside the filename box, but only when box is not empty */
++ if (enPos > stPos &&
++ x > 80 &&
+ y > dList.y + (int) dList.h + 30 &&
+ x < 80 + DNAMWIDE+6 &&
+ y < dList.y + (int) dList.h + 30 + LINEHIGH+5) {
+
+
+
+diff -ru ../test3.20070520.stock/xv-3.10a/xvgif.c ./xvgif.c
+--- ../test3.20070520.stock/xv-3.10a/xvgif.c 2007-05-20 22:23:33.000000000 -0700
++++ ./xvgif.c 2007-06-21 09:36:40.000000000 -0700
+@@ -700,7 +700,7 @@
+ * associated output code on the output queue.
+ */
+
+- while (CurCode > BitMask) {
++ while (CurCode >= ClearCode) { /* Joe Zbiciak fix, 20070621 */
+ if (OutCount > 4096) break; /* corrupt file */
+ OutCode[OutCount++] = Suffix[CurCode];
+ CurCode = Prefix[CurCode];
+
+
+
+diff -ru ../test3.20070520.stock/xv-3.10a/xvmisc.c ./xvmisc.c
+--- ../test3.20070520.stock/xv-3.10a/xvmisc.c 2007-05-20 22:23:33.000000000 -0700
++++ ./xvmisc.c 2008-01-21 12:57:29.000000000 -0800
+@@ -561,10 +561,6 @@
+ if (mgcsfxW) XDestroyWindow(theDisp, mgcsfxW);
+ #endif
+
+-#ifdef HAVE_PNG
+- if (pngW) XDestroyWindow(theDisp, pngW);
+-#endif
+-
+ /* if NOT using stdcmap for images, free stdcmap */
+ if (colorMapMode != CM_STDCMAP) {
+ int j;
+
+
+
+[This one reverts xvxwd.c to the pre-2007 SJT version, which actually worked...]
+
+diff -ru ../test3.20070520.stock/xv-3.10a/xvxwd.c ./xvxwd.c
+--- ../test3.20070520.stock/xv-3.10a/xvxwd.c 2007-05-20 22:23:33.000000000 -0700
++++ ./xvxwd.c 2008-12-06 00:30:44.000000000 -0800
+@@ -19,6 +19,12 @@
+ */
+
+ #include "xv.h"
++#include <limits.h> /* for CHAR_BIT */
++
++/* SJT: just in case ... */
++#ifndef CHAR_BIT
++# define CHAR_BIT 8
++#endif
+
+
+ /***************************** x11wd.h *****************************/
+@@ -83,9 +89,14 @@
+ static int writebiglong PARM((FILE *, CARD32));
+ #endif
+
++static void getcolorshift PARM((CARD32, int *, int *)); /* SJT */
++
++/* SJT: for 16bpp and 24bpp shifts */
++static int red_shift_right, red_justify_left,
++ grn_shift_right, grn_justify_left,
++ blu_shift_right, blu_justify_left;
+ static byte *pic8, *pic24;
+-static CARD32 red_mask, green_mask, blue_mask;
+-static int red_shift, green_shift, blue_shift;
++static CARD32 red_mask, grn_mask, blu_mask;
+ static int bits_per_item, bits_used, bit_shift,
+ bits_per_pixel, bits_per_rgb;
+ static char buf[4];
+@@ -189,38 +200,34 @@
+ return 0;
+ }
+
+- switch (bits_per_pixel) {
+- case 16:
+- case 24:
+- case 32:
+- ;
+- default:
+- xwdError("True/Direct supports only 16, 24, and 32 bits");
+- return 0;
+- }
++ for (row=0; row<rows; row++) {
++ for (col=0, xP=pic24+(row*cols*3); col<cols; col++) {
++ CARD32 ul;
+
+- if (byte_order == MSBFirst) {
+- for (row=0; row<rows; row++) {
+- for (col=0, xP=pic24+(row*cols*3); col<cols; col++) {
+- register CARD32 ul = getpixnum(ifp);
+-
+- *xP++ = ul >> red_shift & red_mask ;
+- *xP++ = ul >> green_shift & green_mask;
+- *xP++ = ul >> blue_shift & blue_mask ;
+- };
+- for (col=0; col<padright; col++) getpixnum(ifp);
+- }
+- } else {
+- for (row=0; row<rows; row++) {
+- for (col=0, xP=pic24+(row*cols*3); col<cols; col++) {
+- register CARD32 ul = getpixnum(ifp);
+-
+- *xP++ = ul >> blue_shift & blue_mask ;
+- *xP++ = ul >> green_shift & green_mask;
+- *xP++ = ul >> red_shift & red_mask ;
+- };
+- for (col=0; col<padright; col++) getpixnum(ifp);
++ ul = getpixnum(ifp);
++ switch (bits_per_pixel) {
++ case 16:
++ case 24:
++ case 32:
++ /* SJT: shift all the way to the right and then shift left. The
++ pairs of shifts could be combined. There will be two right and
++ one left shift, but it's unknown which will be which. It seems
++ easier to do the shifts (which might be 0) separately than to
++ have a complex set of tests. I believe this is independent of
++ byte order but I have no way to test.
++ */
++ *xP++ = ((ul & red_mask) >> red_shift_right) << red_justify_left;
++ *xP++ = ((ul & grn_mask) >> grn_shift_right) << grn_justify_left;
++ *xP++ = ((ul & blu_mask) >> blu_shift_right) << blu_justify_left;
++ break;
++
++ default:
++ xwdError("True/Direct supports only 16, 24, and 32 bits");
++ return 0;
++ }
+ }
++
++ for (col=0; col<padright; col++) getpixnum(ifp);
+ }
+
+ pinfo->type = PIC24;
+@@ -445,28 +452,18 @@
+ (i.e., 3 bytes, no alpha/padding) */
+
+
+- bits_used = bits_per_item;
++ bits_used = bits_per_item;
+
+ if (bits_per_pixel == sizeof(pixel_mask) * 8) pixel_mask = (CARD32) -1;
+ else pixel_mask = (1 << bits_per_pixel) - 1;
+
+- red_mask = h11P->red_mask;
+- green_mask = h11P->grn_mask;
+- blue_mask = h11P->blu_mask;
+-
+- red_shift = blue_shift = green_shift = 0;
+- while (!(red_mask & 1)) {
+- red_mask >>= 1;
+- ++red_shift;
+- }
+- while (!(blue_mask & 1)) {
+- blue_mask >>= 1;
+- ++blue_shift;
+- }
+- while (!(green_mask & 1)) {
+- green_mask >>= 1;
+- ++green_shift;
+- }
++ red_mask = h11P->red_mask;
++ grn_mask = h11P->grn_mask;
++ blu_mask = h11P->blu_mask;
++
++ getcolorshift(red_mask, &red_shift_right, &red_justify_left);
++ getcolorshift(grn_mask, &grn_shift_right, &grn_justify_left);
++ getcolorshift(blu_mask, &blu_shift_right, &blu_justify_left);
+
+ byteP = (char *) buf;
+ shortP = (CARD16 *) buf;
+@@ -476,6 +473,45 @@
+ }
+
+
++/* SJT: figure out the proper shifts */
++static void getcolorshift (CARD32 mask, int *rightshift, int *leftshift)
++{
++ int lshift, rshift;
++ unsigned int uu;
++
++ if (mask == 0)
++ {
++ *rightshift = *leftshift = 0;
++ return;
++ }
++
++ uu = mask;
++ lshift = rshift = 0;
++ while ((uu & 0xf) == 0)
++ {
++ rshift += 4;
++ uu >>= 4;
++ }
++ while ((uu & 1) == 0)
++ {
++ rshift++;
++ uu >>= 1;
++ }
++
++ while (uu != 0)
++ {
++ if (uu & 1)
++ {
++ lshift++;
++ uu >>= 1;
++ }
++ }
++ *rightshift = rshift;
++ *leftshift = CHAR_BIT * sizeof(pixel) - lshift;
++ return;
++}
++
++
+ /******************************/
+ static CARD32 getpixnum(file)
+ FILE* file;
+
+
+
+diff -ru ../test3.20070520.stock/xv-3.10a/xviff.c ./xviff.c
+--- ../test3.20070520.stock/xv-3.10a/xviff.c 2007-05-13 17:50:59.000000000 -0700
++++ ./xviff.c 2008-12-16 09:20:25.000000000 -0800
+@@ -73,6 +73,7 @@
+ int BMHDok, CMAPok, CAMGok;
+ int bmhd_width, bmhd_height, bmhd_bitplanes, bmhd_transcol;
+ int i, j, k, lineskip, colors, fmt;
++ int npixels = 0; /* needs to be initialized _outside_ while-loop */
+ byte bmhd_masking, bmhd_compression;
+ long chunkLen, camg_viewmode;
+ byte *databuf, *dataptr, *cmapptr, *picptr, *pic, *bodyptr;
+@@ -138,7 +139,6 @@
+ BODY chunk was found or dataptr ran over end of file */
+
+ while ((rv<0) && (dataptr < (databuf + filesize))) {
+- int npixels = 0;
+ chunkLen = (iff_getlong(dataptr + 4) + 1) & 0xfffffffe; /* make even */
+
+ if (strncmp((char *) dataptr, "BMHD", (size_t) 4)==0) { /* BMHD chunk? */
diff --git a/source/xap/xv/xv-3.10a-jumbo-README.txt b/source/xap/xv/xv-3.10a-jumbo-README.txt
index 63627ddff..00b1c3e4e 100644
--- a/source/xap/xv/xv-3.10a-jumbo-README.txt
+++ b/source/xap/xv/xv-3.10a-jumbo-README.txt
@@ -1,6 +1,6 @@
-These are the latest versions of the XV jumbo patches I originally created
-in February 2000 (but never distributed) and eventually updated and released
-in May 2004, prompted by a discussion on LWN (http://lwn.net/Articles/76391/).
+This is the latest version of the XV jumbo patches I originally created in
+February 2000 (but never distributed) and eventually updated and released in
+May 2004, prompted by a discussion on LWN (http://lwn.net/Articles/76391/).
Information about the patches, updates to the patches, and the patches
themselves can all be found here:
@@ -10,16 +10,14 @@ themselves can all be found here:
(Use the "Subscribe to new releases" link on the latter page if you want to
be notified of new versions automatically; trivial registration required.)
-These two patches incorporate all of the fix- and enhancement-patches
-available from John's XV site (http://www.trilon.com/xv/downloads.html
-and ftp://ftp.trilon.com/pub/xv/patches/), plus a number of my own fixes
-and additions, plus quite a few from other people--though not all of the
-ones I'd intended to, due to lack of time after dealing with the latest
-set of security issues (one of which I discovered, sigh). They're still
-not fully complete, and it's possible they never will be, but I do plan
-to continue tinkering with them whenever the mood strikes--and I may even
-release them publicly on rare occasions. (At the current rate, it looks
-like once a year may be the best we can hope for...we'll see.)
+These patches incorporate all of the fix- and enhancement-patches available
+from John's XV site (http://www.trilon.com/xv/downloads.html and
+ftp://ftp.trilon.com/pub/xv/patches/), plus a number of my own fixes and
+additions (security-related and otherwise), plus quite a few from other
+people. They're still not fully complete, and it's probable they never
+will be, but I do plan to continue tinkering with them whenever the mood
+strikes--and I may even release them publicly on rare occasions. (At the
+current rate, once every few years may be the best we can hope for....)
Also be aware that several other people have had the same idea over the
years. Ones I've found, more or less by accident, include:
@@ -45,43 +43,58 @@ years. Ones I've found, more or less by accident, include:
- Kyoichiro Suda <sudakyo fat.coara.or.jp>
http://www.coara.or.jp/~sudakyo/XV_jp.html
-I very much doubt that this is an exhaustive list. So far, most of the
-other patch-sets appear not to be as extensive or as up-to-date as my own,
-particularly now that the (very large) "Japanese extension" patches are
-incorporated--big thanks to Werner Fink of SuSE for that!
+This is not an exhaustive list (e.g., Jörgen Grahn also had one). So far,
+most of the other patch-sets appear not to be as extensive or as up-to-date
+as my own, particularly now that the (very large) "Japanese extension" patches
+are incorporated--big thanks to Werner Fink of SuSE for that!
Below I summarize the component patches that are encompassed by my jumbo
-bugfixes and jumbo enhancements patches. Unfortunately, some of my own
-additions never saw the light of day as standalone patches, but considering
-the number of overlaps (collisions) already implicit in this list, it would
-have been difficult to accomplish even if I'd had the time.
+bugfixes and jumbo enhancements patches, circa 2005. (As of 2007, they're
+distributed as a single monster-patch, and the "component patches" are now
+listed in the changelog section at the bottom of this file.) Unfortunately,
+some of my own additions never saw the light of day as standalone patches,
+but considering the number of overlaps (collisions) already implicit in the
+list, that would have been difficult to accomplish even if I'd had the time.
-Here's a quick guide to the "third-party" credits in the lists below:
+Here's a quick guide to the "third-party" credits in the lists and changelog
+below:
AAC = Andrey A. Chernov [ache]
(http://cvsweb.freebsd.org/ports/graphics/xv/files/patch-ab)
AD = Andreas Dilger (adilger clusterfs.com)
AL = Alexander Lehmann (lehmann usa.net)
+ AS = Alexey Spiridonov (http://www-math.mit.edu/~lesha/)
AT = Anthony Thyssen (http://www.cit.gu.edu.au/~anthony/)
+ BR = Bruno Rohee (http://bruno.rohee.com/)
DAC = David A. Clunie (http://www.dclunie.com/xv-pcd.html)
+ EAJ = Erling A. Jacobsen (linuxcub email.dk)
EK = Egmont Koblinger (egmont users.sourceforge.net)
- GRR = Greg Roelofs (http://pobox.com/~newt/)
+ FG = Fabian Greffrath (fabian debian-unofficial.org)
+ GRR = Greg Roelofs (http://pobox.com/~newt/greg_contact.html)
GV = Guido Vollbeding (http://sylvana.net/guido/)
IM = IKEMOTO Masahiro (ikeyan airlab.cs.ritsumei.ac.jp)
+ JC = John Cooper (john.cooper third-harmonic.com)
JCE = John C. Elliott (http://www.seasip.demon.co.uk/ZX/zxdload.html)
+ JDB = John D. Baker (http://mylinuxisp.com/~jdbaker/)
+ JG = Jörgen Grahn (jgrahn algonet.se)
JHB = John H. Bradley, of course (http://www.trilon.com/xv/)
JPD = Jean-Pierre Demailly (http://www-fourier.ujf-grenoble.fr/~demailly/)
JR = John Rochester (http://www.freebsd.org/cgi/query-pr.cgi?pr=2920)
(also http://cvsweb.freebsd.org/ports/graphics/xv/files/patch-af, -ag)
+ JRK = James Roberts Kirkpatrick (uwyo.edu)
JZ = Joe Zbiciak (http://spatula-city.org/~im14u2c/)
KS = Kyoichiro Suda (http://www.coara.or.jp/~sudakyo/XV_jp.html)
LCN = Landon Curt "chongo" Noll (http://www.isthe.com/chongo/)
LJ = Larry Jones (lawrence.jones ugs.com)
PBJ = Peter Jordan (http://www.ibiblio.org/pub/Linux/apps/graphics/viewers/X/)
PSV = Pawel S. Veselov (http://manticore.2y.net/wbmp.html)
+ RAC = Ross Combs (rocombs cs.nmsu.edu)
+ RJH = Robin Humble (http://www.cita.utoronto.ca/~rjh/)
SB = Sean Borman (http://www.nd.edu/~sborman/software/xvwheelmouse.html)
SJT = TenThumbs (tenthumbs cybernex.net)
+ SBM = Scott B. Marovich (formerly marovich hpl.hp.com)
TA = Tim Adye (http://hepwww.rl.ac.uk/Adye/xv-psnewstyle.html)
+ TAR = Tim Ramsey (tar pobox.com)
TI = Tetsuya INOUE (tin329 chino.it.okayama-u.ac.jp)
TO = Tavis Ormandy (taviso gentoo.org)
WF = Werner Fink (http://www.suse.de/~werner/)
@@ -90,86 +103,79 @@ Other credits are as listed on the XV Downloads page or in the respective
patches (e.g., the jp-extension patches or within the PNG patch).
Finally, please note that these patches have not been blessed by John Bradley
-in any way (although I copied him on the May 2004 announcement--no response
-at that time). Nor have I personally tested every change and feature! (See
-the BIG SCARY WARNING below for further caveats.) In other words, they're
-both completely unofficial and completely unguaranteed. But they seem to
-work for me. (And when they don't, I fix 'em. Eventually, anyway... ;-) )
+in any way (although I copied him on the May 2004 announcement and wrote to
+him again in May 2005), unless you count Debian's redistribution permission
+(Daniel Kirchheimer, 5 Dec 2005). Nor have I personally tested every change
+and feature! (See the BIG SCARY WARNING below for further caveats.) In other
+words, they're both completely unofficial and completely unguaranteed. But
+they seem to work for me. (And when they don't, I try to fix 'em--eventually,
+anyway... ;-) )
-One further "final" note: as of this release, I am no longer updating the
-fixes patch; new stuff (including fixes) now appears only in the enhancements
-one. It simply became too much of a timesink to maintain parallel trees--not
-to mention parallel makefiles (generic/public vs. local/personal, old vs.
-new libjpeg/libtiff) and xv.h (unregistered/public vs. registered/personal),
-particularly when some fixes came about while working on an enhancement and
-others were provided by third parties relative to the previous fix+enh state.
-Hence the mismatched "20050410" date on the fixes patch.
-
-GRR 20050501
+Greg Roelofs, 20070520
+http://pobox.com/~newt/greg_contact.html
How to build
------------
-The following assumes you, the user, already have the libtiff,[1]
-libjpeg,[2] libpng,[3] and zlib[4] libraries downloaded, patched (if
-necessary), compiled, and installed, not to mention a C compiler and
-the bzip2,[5] tar,[6] patch,[7] and make[8] utilities. You should also
-have downloaded the original XV 3.10a source distribution from the XV
-Downloads page[9] and be able to edit its Makefile and config.h files
-as indicated in the INSTALL file. Finally, you should know what a
-Unix(-style) command line is, where to find one, and how to wield it
-with abandon (or at least with adult supervision)--and preferably not
-as the root user until the make install step. (A filesystem is a
-terrible thing to waste.)
+The following assumes you, the user, already have the libtiff,[1] libjpeg,[2]
+libpng,[3] zlib,[4] and JasPer[5] libraries downloaded, patched (if necessary),
+compiled, and installed, not to mention a C compiler and the bzip2,[6] tar,[7]
+patch,[8] and make[9] utilities. You should also have downloaded the original
+XV 3.10a source distribution from the XV Downloads page[10] and be able to edit
+its Makefile and config.h files as indicated in the INSTALL file. (Editing
+the Makefile will also allow you to disable some of the third-party libraries
+if you wish.) Finally, you should know what a Unix(-style) command line is,
+where to find one, and how to wield it with abandon (or at least with adult
+supervision)--and preferably not as the root user until the "make install"
+step. (A filesystem is a terrible thing to waste.)
[1] http://www.remotesensing.org/libtiff/
[2] http://www.ijg.org/
[3] http://www.libpng.org/pub/png/libpng.html
[4] http://www.zlib.net/
- [5] http://sources.redhat.com/bzip2/
- [6] http://www.gnu.org/directory/devel/specific/tar.html
- [7] http://www.gnu.org/directory/devel/specific/patch.html
- [8] http://www.gnu.org/directory/devel/specific/make.html
- [9] http://www.trilon.com/xv/downloads.html#src-distrib
+ [5] http://www.ece.uvic.ca/~mdadams/jasper/
+ [6] http://sources.redhat.com/bzip2/
+ [7] http://www.gnu.org/directory/devel/specific/tar.html
+ [8] http://www.gnu.org/directory/devel/specific/patch.html
+ [9] http://www.gnu.org/directory/devel/specific/make.html
+ [10] http://www.trilon.com/xv/downloads.html#src-distrib
+-------------------------------------------------------------------------+
| |
| BIG SCARY WARNING |
| |
-| These patches work for Greg (and parts of them apparently work for |
+| These patches work for Greg (and parts of them reportedly work for |
| various other people), and so far Greg's CPU still computes and his |
-| hard disks haven't been wiped. But there's no guarantee that that |
+| hard disks haven't been wiped. But there's no guarantee that this |
| will be the case for you! In particular, not every incorporated patch |
| has been explicitly tested, nor has every possible subcase of the |
-| explicitly tested subset. (Read that again; it's grammatical.) Nor are |
-| these patches officially blessed by John Bradley in any way. In other |
-| words, if you use these patches, you do so at your own risk. (Greg |
-| doesn't believe there are any serious problems remaining, but then, |
-| what programmer ever does? Bugs happen.) |
+| explicitly tested subset. (Read that again; it's grammatical.) Nor |
+| are these patches officially blessed by John Bradley in any way. In |
+| other words, if you use these patches, you do so at your own risk. |
+| (Greg doesn't believe there are any serious problems remaining, but |
+| then, what programmer ever does? Bugs happen.) |
| |
+-------------------------------------------------------------------------+
Assuming you have the prerequisites out of the way and aren't scared
off by the Big Scary Warning, here's the build procedure:
- bzip2 -dc xv-3.10a-jumbo-patches-20050501.tar.bz2 | tar xvf -
- (or tar xvzf xv-3.10a-jumbo-patches-20050501.tar.gz)
+ tar xvzf xv-3.10a-jumbo-patches-20070520.tar.gz
+ (or: gzip -dc xv-3.10a-jumbo-patches-20070520.tar.gz | tar xvf - )
tar xvzf xv-3.10a.tar.gz
cd xv-3.10a
- patch -p1 < ../xv-3.10a-jumbo-fix-patch-20050410.txt
-
- [optional] patch -p1 < ../xv-3.10a-jumbo-enh-patch-20050501.txt
+ patch -p1 < ../xv-3.10a-jumbo-fix-enh-patch-20070520.txt
edit Makefile and config.h as directed in INSTALL file (in particular,
ensure paths to external libraries and header files are correct)
make
- ./xv your_favorite_image your_other_favorite_image etc.
+ ./xv your_favorite_image your_other_favorite_image etc.
If everything seems to be working to your satisfaction, go ahead and install:
@@ -179,12 +185,14 @@ If everything seems to be working to your satisfaction, go ahead and install:
become root if necessary (e.g., type su)
make install
+ (or: sudo make install)
That wasn't so hard, was it?
-Summary of incorporated and unincorporated patches
---------------------------------------------------
+Summary of incorporated and unincorporated patches (through 20050501)
+---------------------------------------------------------------------
+(See the ChangeLog at the bottom for more recent incorporated patches.)
fixes ((*) = listed on XV Downloads page, (f) = on ftp site only):
@@ -270,7 +278,7 @@ enhancements ((*) = listed on XV Downloads page, (<who>) = third-party):
20050501:
- xv-3.10a-bmpfix.patch (WF) [*SECURITY*]
- xv310a-jp-extension-rev5.3.3.tar.gz (TI, IM, ..., WF)
- (adds support for MAG, MAKI, Pi, PIC, and PIC2 formats[*]; "magic suffix"
+ (adds support for MAG, MAKI, Pi, PIC, and PIC2 formats[!]; "magic suffix"
detection/conversion; MacBinary prefixes; archives as virtual filesystems;
multilingual text viewer [though not Unicode]; etc.)
- xv-3.10a-yaos.dif (WF, TO) [*SECURITY*]
@@ -288,7 +296,7 @@ enhancements ((*) = listed on XV Downloads page, (<who>) = third-party):
- PATCH.stat (LJ)
- PATCH.thumbs (LJ)
- xv-startgrab-imake-hips.patch (JPD)
- ("hips" portion only; adds support for HIPS image format[*])
+ ("hips" portion only; adds support for HIPS image format[!])
- xv-3.10a-formatstr.patch (KS)
- xv-3.10a-shortsleep.patch (KS)
- xv-3.10a-locale-linux.patch (KS)
@@ -298,8 +306,7 @@ enhancements ((*) = listed on XV Downloads page, (<who>) = third-party):
- xv-3.10a-xvexecpath.patch (but disabled pending fixes) (KS)
- xv-3.10a-zeroquit.patch (KS, GRR)
-
-[*] Note that all six of these formats may still suffer from exploitable heap
+[!] Note that all six of these formats may still suffer from exploitable heap
overflows [*SECURITY*] when decoding images with large (possibly invalid)
dimensions; as a result, they are DISABLED by default. (Search for "GRR
POSSIBLE OVERFLOW / FIXME" comments in xvmag.c, xvmaki.c, xvpi.c, xvpic.c,
@@ -334,9 +341,11 @@ not (yet?) included:
- xv-3.10a+jp-extension-rev5.3.3+FLmask.v2.1+png+misc.patch ["mask" support]
- - xv-psnewstyle.patch (TA) [coming later in 2005?]
+ - xv-psnewstyle.patch (TA) [coming "soon"?]
- xv-3.10a.patch.linux (PBJ) [maybe use vdcomp.c changes?]
- xvxpm-anthony-thyssen.c (AT) ["slate grey" bug already gone?]
+ - xv-geoff-kuenning-iconsize-slideshow.patch [var. icons; full-screen slides]
+ - xv-scott-marovich-20070214-xvtiff.c.patch6.unified [TIFF CMYK support]
- stuff in xv/unsupt:
-rw-r--r-- 30527 Dec 22 1994 FITS.rite
@@ -360,9 +369,8 @@ not finished (and/or even started ;-) ):
- (better) fix for never-ending pile of SLOW popups when viewing TIFFs with
unknown tags (or truncated/corrupted images)
- fix for minor .Z inefficiency in xv.c ("FIXME")
- - fix for filename entry-field mouse/cursor bogosity
- (want at least positioning to work; preferably also select/cut/paste)
- - fix for spacebar-for-next-image getting stuck at first text file
+ - fix for filename entry-field mouse/cursor deficiencies
+ (positioning fixed 20070104 by Ross Combs; would like select/cut/paste, too)
- fix for .ppm.gz "disk leak" [can't reproduce...already fixed?]
(maybe occurs only if filesystem is already nearly full? bad .gz?)
@@ -440,3 +448,112 @@ ChangeLog
suffix" (xv_mgcsfx) config dir (enh); added PREFIX and DESTDIR support to
Makefile (enh); fixed handling of zero-length files and other text-viewer
failures (enh)
+
+ 20050528
+ conditionally added missing alloca.h to xvpcd.c (required if alloca() is
+ a macro and alloca.h not included in stdlib.h, for example); fixed bogus
+ __S_IWRITE introduced in 20050501 release; fixed Makefile "install" target
+ (mkdir, chmod); fixed bug in MUST macro in xvwbmp.c; fixed prototype
+ warnings in xvevent.c, xvpcd.c (JRK, GRR)
+ - xv-3.10a-jimkirk-fixes.patch
+
+ 20050630
+ fixed broken mkdir(.xvpics) introduced in 20050501 release (RJH, GRR);
+ tweaked GUNZIP config for OpenBSD (GRR)
+ - xv-3.10a-xvpics-mkdir-fix.patch
+
+ 20051014
+ fixed longstanding xvevent.c typo (wasJpegUp -> wasPngUp) that caused build
+ failure if no JPEG support (TAR)
+
+ 20051019
+ fixed Darwin (Mac OS X) build error in xv.h and vdcomp.c due to lack of
+ malloc.h (JDB)
+
+ 20070210
+ fixed minor grammos (GRR); promoted PNG to first position, demoted GIF to
+ third (GRR); changed internal type of default image to PNG (GRR); increased
+ max files again, to 65536 (GRR)
+
+ 20070310
+ incorporated JPEG-2000 patch (SBM, GRR); added manual fax options for
+ unrecognized G3 images (SBM); relaxed 30-byte minimum file size (SBM)
+ - http://www.ece.uvic.ca/~mdadams/jasper/software/xv-patches
+
+ 20070318
+ incorporated 16bps raw (binary) PPM patch (define ASSUME_RAW_PPM_LSB_FIRST
+ for old behavior) (RAC, GRR); updated format list, web sites in xv man page
+ (GRR); fixed Makefile "install" target to create any necessary directories
+ (RAC, GRR); fixed GIF decoder bug (sizes of global, local color tables
+ different) (GRR)
+ - xv-ross-combs-ppm-16bps-rawbits.patch
+
+ 20070325
+ fixed invalid gamma assumption in PNG decoder (=> progressive color changes
+ over load/save cycles) (GRR)
+
+ 20070328
+ fixed animated-GIF /tmp/xvpgXXXXXX droppings (GRR)
+
+ 20070331
+ fixed PNG duplicate-palette-entries bug (GRR)
+
+ 20070415
+ incorporated EXIF-preserve patch (GHK); added missing JP2/JPC VS bits code
+ (GRR); added extended-warning options to CCOPTS (RAC); added "const" to
+ huge number of function args (RAC, GRR); made more effectively static
+ functions officially static (RAC); added mouse-clickability (but not
+ selectability) to text-entry fields (RAC); fixed window positioning (race
+ conditions?) under some virtual window managers (e.g., tvtwm) (RAC);
+ removed explicit paths for external (de)compressors (GRR, RAC)
+ - xv-geoff-kuenning-jpeg-exif-preserve.patch
+ - xv-ross-combs-20070104.diff
+
+ 20070422
+ incorporated function-key-scripts patch (see contrib/fnkey-scripts) (AS);
+ fixed man-page-section extensions ("1", not "l" or "1X") (FG); switched to
+ more sensible install paths for docs (FG); added Fedora Core build script
+ (see contrib/fedora) (JC); fixed VS to switch from move-mode to copy-mode
+ if source dir is read-only (EAJ); extended VS incremental-search mode (EAJ)
+ - xv-alexey-spiridonov-20070116-fnkey-scripts.tar.bz2
+ - xv-fabian-greffrath-20070215-debian-04-manpages.dpatch
+ - xv-fabian-greffrath-20070215-debian-03-makefiles.dpatch
+ - xv-john-cooper-Build-FC5-script.sh
+ - xv-erling-jacobsen-20060617-incr-search.patch
+
+ 20070428
+ modified install to include README.jumbo in docs (GRR); incorporated PNG
+ no-stdio patch (SBM); fixed XWD endianness support, improved performance
+ (replaces SJT 16/24-bit fix) (SBM)
+ - xv-scott-marovich-20070214-xvpng.diff
+ - xv-scott-marovich-20070214-xvxwd.c.patch
+
+ 20070506
+ added JPEG CMYK support (SBM); fixed TIFF (and others?) /tmp/xvpgXXXXXX
+ droppings (GRR); added VS clipboard support (JG)
+ - xv-scott-marovich-20070214-xvjpeg.c.patch
+ - xv-jurgen-grahn-20051127-schnauzer-clip.patch
+
+ 20070512
+ inverted handling of malloc.h header file to require NEED_MALLOC_H macro
+ for those few systems that actually need it (GRR)
+
+ 20070513
+ fixed GCC 4.1.x warnings (GRR); next round of const cleanup (GRR); fixed
+ minor TIFF memleak (GRR)
+
+ 20070514
+ fixed TIFF YCbCr reference black/white levels (SBM); added option to use
+ libjpeg YCbCr-to-RGB conversion for TIFF images (SBM, GRR)
+ - xv-scott-marovich-20070214-xvtiff.c.patch2.unified
+ - xv-scott-marovich-20070214-xvtiff.c.patch3.unified
+
+ 20070519
+ fixed handling of multi-page JPEG-compressed TIFFs (old or new) (SBM);
+ added TIFF YCbCr separated-color-plane support (may require libtiff
+ patch(es) to tif_ojpeg.c and/or tif_jpeg.c) (SBM)
+ - xv-scott-marovich-20070214-xvtiff.c.patch4.unified
+ - xv-scott-marovich-20070214-xvtiff.c.patch5.unified
+
+ 20070520
+ updated README.jumbo
diff --git a/source/xap/xv/xv-3.10a-jumbo-additions.diff b/source/xap/xv/xv-3.10a-jumbo-additions.diff
new file mode 100644
index 000000000..8f398ddf2
--- /dev/null
+++ b/source/xap/xv/xv-3.10a-jumbo-additions.diff
@@ -0,0 +1,18743 @@
+diff -u -r --new-file xv-3.10a.orig/README.jumbo xv-3.10a/README.jumbo
+--- xv-3.10a.orig/README.jumbo 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/README.jumbo 2007-05-21 00:19:20.000000000 -0500
+@@ -0,0 +1,559 @@
++This is the latest version of the XV jumbo patches I originally created in
++February 2000 (but never distributed) and eventually updated and released in
++May 2004, prompted by a discussion on LWN (http://lwn.net/Articles/76391/).
++Information about the patches, updates to the patches, and the patches
++themselves can all be found here:
++
++ http://pobox.com/~newt/greg_xv.html
++ http://freshmeat.net/projects/xvjumbopatches/
++
++(Use the "Subscribe to new releases" link on the latter page if you want to
++be notified of new versions automatically; trivial registration required.)
++
++These patches incorporate all of the fix- and enhancement-patches available
++from John's XV site (http://www.trilon.com/xv/downloads.html and
++ftp://ftp.trilon.com/pub/xv/patches/), plus a number of my own fixes and
++additions (security-related and otherwise), plus quite a few from other
++people. They're still not fully complete, and it's probable they never
++will be, but I do plan to continue tinkering with them whenever the mood
++strikes--and I may even release them publicly on rare occasions. (At the
++current rate, once every few years may be the best we can hope for....)
++
++Also be aware that several other people have had the same idea over the
++years. Ones I've found, more or less by accident, include:
++
++ - Landon Curt "chongo" Noll (http://www.isthe.com/chongo/)
++ http://www.isthe.com/chongo/src/xv-patch/
++ - Mark Ashley <mark ibiblio.org>
++ http://www.ibiblio.org/pub/packages/solaris/sparc/html/xv.3.10a.p19.html
++ - Peter Jordan <pete dc.seflin.org>
++ http://www.ibiblio.org/pub/Linux/apps/graphics/viewers/X/xv-3.10a.patch.*
++ - Uwe F. Mayer (http://www.tux.org/~mayer/)
++ http://www.tux.org/~mayer/linux/book/node311.html
++ - Kurt Wall <kwall kurtwerks.com>
++ http://www.kurtwerks.com/software/xv.html
++ - Chisato Yamauchi (http://phe.phyas.aichi-edu.ac.jp/~cyamauch/index_en.html)
++ http://phe.phyas.aichi-edu.ac.jp/~cyamauch/xv.html
++ - Daisuke Yabuki <dxy optix.org>
++ http://www.optix.org/~dxy/solaris/xv/
++ - Pekoe (http://pekoe.lair.net/)
++ http://pekoe.lair.net/diary/xv.html
++ - FreeBSD FreshPorts
++ http://www.freshports.org/graphics/xv/
++ - Kyoichiro Suda <sudakyo fat.coara.or.jp>
++ http://www.coara.or.jp/~sudakyo/XV_jp.html
++
++This is not an exhaustive list (e.g., Jörgen Grahn also had one). So far,
++most of the other patch-sets appear not to be as extensive or as up-to-date
++as my own, particularly now that the (very large) "Japanese extension" patches
++are incorporated--big thanks to Werner Fink of SuSE for that!
++
++Below I summarize the component patches that are encompassed by my jumbo
++bugfixes and jumbo enhancements patches, circa 2005. (As of 2007, they're
++distributed as a single monster-patch, and the "component patches" are now
++listed in the changelog section at the bottom of this file.) Unfortunately,
++some of my own additions never saw the light of day as standalone patches,
++but considering the number of overlaps (collisions) already implicit in the
++list, that would have been difficult to accomplish even if I'd had the time.
++
++Here's a quick guide to the "third-party" credits in the lists and changelog
++below:
++
++ AAC = Andrey A. Chernov [ache]
++ (http://cvsweb.freebsd.org/ports/graphics/xv/files/patch-ab)
++ AD = Andreas Dilger (adilger clusterfs.com)
++ AL = Alexander Lehmann (lehmann usa.net)
++ AS = Alexey Spiridonov (http://www-math.mit.edu/~lesha/)
++ AT = Anthony Thyssen (http://www.cit.gu.edu.au/~anthony/)
++ BR = Bruno Rohee (http://bruno.rohee.com/)
++ DAC = David A. Clunie (http://www.dclunie.com/xv-pcd.html)
++ EAJ = Erling A. Jacobsen (linuxcub email.dk)
++ EK = Egmont Koblinger (egmont users.sourceforge.net)
++ FG = Fabian Greffrath (fabian debian-unofficial.org)
++ GRR = Greg Roelofs (http://pobox.com/~newt/greg_contact.html)
++ GV = Guido Vollbeding (http://sylvana.net/guido/)
++ IM = IKEMOTO Masahiro (ikeyan airlab.cs.ritsumei.ac.jp)
++ JC = John Cooper (john.cooper third-harmonic.com)
++ JCE = John C. Elliott (http://www.seasip.demon.co.uk/ZX/zxdload.html)
++ JDB = John D. Baker (http://mylinuxisp.com/~jdbaker/)
++ JG = Jörgen Grahn (jgrahn algonet.se)
++ JHB = John H. Bradley, of course (http://www.trilon.com/xv/)
++ JPD = Jean-Pierre Demailly (http://www-fourier.ujf-grenoble.fr/~demailly/)
++ JR = John Rochester (http://www.freebsd.org/cgi/query-pr.cgi?pr=2920)
++ (also http://cvsweb.freebsd.org/ports/graphics/xv/files/patch-af, -ag)
++ JRK = James Roberts Kirkpatrick (uwyo.edu)
++ JZ = Joe Zbiciak (http://spatula-city.org/~im14u2c/)
++ KS = Kyoichiro Suda (http://www.coara.or.jp/~sudakyo/XV_jp.html)
++ LCN = Landon Curt "chongo" Noll (http://www.isthe.com/chongo/)
++ LJ = Larry Jones (lawrence.jones ugs.com)
++ PBJ = Peter Jordan (http://www.ibiblio.org/pub/Linux/apps/graphics/viewers/X/)
++ PSV = Pawel S. Veselov (http://manticore.2y.net/wbmp.html)
++ RAC = Ross Combs (rocombs cs.nmsu.edu)
++ RJH = Robin Humble (http://www.cita.utoronto.ca/~rjh/)
++ SB = Sean Borman (http://www.nd.edu/~sborman/software/xvwheelmouse.html)
++ SJT = TenThumbs (tenthumbs cybernex.net)
++ SBM = Scott B. Marovich (formerly marovich hpl.hp.com)
++ TA = Tim Adye (http://hepwww.rl.ac.uk/Adye/xv-psnewstyle.html)
++ TAR = Tim Ramsey (tar pobox.com)
++ TI = Tetsuya INOUE (tin329 chino.it.okayama-u.ac.jp)
++ TO = Tavis Ormandy (taviso gentoo.org)
++ WF = Werner Fink (http://www.suse.de/~werner/)
++
++Other credits are as listed on the XV Downloads page or in the respective
++patches (e.g., the jp-extension patches or within the PNG patch).
++
++Finally, please note that these patches have not been blessed by John Bradley
++in any way (although I copied him on the May 2004 announcement and wrote to
++him again in May 2005), unless you count Debian's redistribution permission
++(Daniel Kirchheimer, 5 Dec 2005). Nor have I personally tested every change
++and feature! (See the BIG SCARY WARNING below for further caveats.) In other
++words, they're both completely unofficial and completely unguaranteed. But
++they seem to work for me. (And when they don't, I try to fix 'em--eventually,
++anyway... ;-) )
++
++Greg Roelofs, 20070520
++http://pobox.com/~newt/greg_contact.html
++
++
++How to build
++------------
++
++The following assumes you, the user, already have the libtiff,[1] libjpeg,[2]
++libpng,[3] zlib,[4] and JasPer[5] libraries downloaded, patched (if necessary),
++compiled, and installed, not to mention a C compiler and the bzip2,[6] tar,[7]
++patch,[8] and make[9] utilities. You should also have downloaded the original
++XV 3.10a source distribution from the XV Downloads page[10] and be able to edit
++its Makefile and config.h files as indicated in the INSTALL file. (Editing
++the Makefile will also allow you to disable some of the third-party libraries
++if you wish.) Finally, you should know what a Unix(-style) command line is,
++where to find one, and how to wield it with abandon (or at least with adult
++supervision)--and preferably not as the root user until the "make install"
++step. (A filesystem is a terrible thing to waste.)
++
++ [1] http://www.remotesensing.org/libtiff/
++ [2] http://www.ijg.org/
++ [3] http://www.libpng.org/pub/png/libpng.html
++ [4] http://www.zlib.net/
++ [5] http://www.ece.uvic.ca/~mdadams/jasper/
++ [6] http://sources.redhat.com/bzip2/
++ [7] http://www.gnu.org/directory/devel/specific/tar.html
++ [8] http://www.gnu.org/directory/devel/specific/patch.html
++ [9] http://www.gnu.org/directory/devel/specific/make.html
++ [10] http://www.trilon.com/xv/downloads.html#src-distrib
++
+++-------------------------------------------------------------------------+
++| |
++| BIG SCARY WARNING |
++| |
++| These patches work for Greg (and parts of them reportedly work for |
++| various other people), and so far Greg's CPU still computes and his |
++| hard disks haven't been wiped. But there's no guarantee that this |
++| will be the case for you! In particular, not every incorporated patch |
++| has been explicitly tested, nor has every possible subcase of the |
++| explicitly tested subset. (Read that again; it's grammatical.) Nor |
++| are these patches officially blessed by John Bradley in any way. In |
++| other words, if you use these patches, you do so at your own risk. |
++| (Greg doesn't believe there are any serious problems remaining, but |
++| then, what programmer ever does? Bugs happen.) |
++| |
+++-------------------------------------------------------------------------+
++
++Assuming you have the prerequisites out of the way and aren't scared
++off by the Big Scary Warning, here's the build procedure:
++
++ tar xvzf xv-3.10a-jumbo-patches-20070520.tar.gz
++ (or: gzip -dc xv-3.10a-jumbo-patches-20070520.tar.gz | tar xvf - )
++
++ tar xvzf xv-3.10a.tar.gz
++
++ cd xv-3.10a
++
++ patch -p1 < ../xv-3.10a-jumbo-fix-enh-patch-20070520.txt
++
++ edit Makefile and config.h as directed in INSTALL file (in particular,
++ ensure paths to external libraries and header files are correct)
++
++ make
++
++ ./xv your_favorite_image your_other_favorite_image etc.
++
++If everything seems to be working to your satisfaction, go ahead and install:
++
++ make -n install (and double-check that things will be installed
++ where you want them to be)
++
++ become root if necessary (e.g., type su)
++
++ make install
++ (or: sudo make install)
++
++That wasn't so hard, was it?
++
++
++Summary of incorporated and unincorporated patches (through 20050501)
++---------------------------------------------------------------------
++(See the ChangeLog at the bottom for more recent incorporated patches.)
++
++fixes ((*) = listed on XV Downloads page, (f) = on ftp site only):
++
++20040516:
++ - grabpatch (*) [obsoleted by new-xvgrab.c below]
++ - vispatch (*)
++ - mp-tiff-patch (*) [technically an enhancement, but JHB says...]
++ - longname.patch (*) [*SECURITY*]
++ - xpm.patch (*)
++ - deepcolor.patch (*) [slightly modified for language conformance]
++ - gifpatch (*)
++ - exceed_grab.patch (*)
++ - xv-redhat6-readme.txt (*) [slightly modified for portability]
++ - beos.patch (*) [modified for portability]
++ - croppad.patch (f)
++ - epsfpatch (f)
++ - tiff1200.patch (*)
++ - gssafer.patch (*) [*SECURITY*]
++ - new-xvgrab.c (f) [includes grabpatch but not exceed_grab.patch]
++ - xcmap.diff (AD) [part of xv-3.10a-png-1.2d.tar.gz]
++ - fixes for huge number gcc -Wall warnings--including two bugs (GRR)
++ - fix for cleandir script when no makefile exists (GRR)
++ - *SECURITY* fix for gets() in vdcomp.c (GRR, LCN vdcomp-security.patch)
++ - *SECURITY* fix for getwd() on Linux (GRR, LCN Linux-compile.patch)
++ - fix for "no fuss" Linux compiles (LCN Linux-compile.patch)
++ - partial *SECURITY* fix for mktemp() in xv.c and xvdir.c (GRR)
++ (remaining instances in xv.c (2), xvimage.c, xvfits.c, xvpds.c, xvps.c, and
++ possibly xvtiff.c--most involve system())
++ - freebsd-vdcomp-newline.patch (AAC)
++ - xv-3.10a.patch.linux (PBJ) [/bin/sh versions of cleandir, RANLIB.sh only]
++ - removed trailing white space (GRR) [purely cosmetic]
++20040523:
++ - fixed compilation error in registered versions (GRR)
++20050410:
++ - fix for YCbCr oversaturated-green bug(s) in TIFF decoder (GRR)
++ - provisional fix for contiguous tiled TIFFs with bottom-* orientation (GRR)
++ - fixes for gcc 3.3 -Wall warnings (GRR)
++ - fix for incorrect 16/24-bit display of xwd dumps (SJT)
++ - *SECURITY* fix for multiple input-validation bugs (OpenBSD/SuSE, Gentoo, GRR)
++ (this also completes the partial mktemp() security fix listed above)
++ - fix for (probable) 24-bit endianness bug in fixpix code (GRR)
++
++
++enhancements ((*) = listed on XV Downloads page, (<who>) = third-party):
++
++20040516:
++ - xv-3.10a.JPEG-patch (*)
++ (xv-3.10a.JPEG-patch.old differs only in ftp site listed in comments at top)
++ - xv-3.10a.TIFF-patch (*)
++ - xv-3.10a-png-1.2d.tar.gz (AL, AD) (*)
++ (xvjpeg.diff and xvtiff.diff ignored; xcmap.diff included in fixes)
++ - xvpng-1.2d-fix3.patch (GRR, SJT) (*)
++ - pdf.patch (*)
++ - windowid.patch + windowid.patch.readme (*)
++ - bmp32.patch (*)
++ - fixpix-20000610.tar.gz (GV)
++ (identical to 19961127 version except for README updates and new Win32 file)
++ [modified to be runtime-selectable via -/+fixpix option]
++ - browse-remember.patch (JZ)
++ - faster-smooth.patch (JZ)
++ - PAM support (GRR)
++ - PNG/GIF -ibg ("image background") transparency option (GRR)
++ (does not yet support TIFF, XPM or TGA)
++ - VersionInfo* in help screen (GRR)
++ - minor grammar/spelling fixes (GRR)
++ - floating-point support for -wait when USE_TICKS enabled (GRR)
++ - wheelmouse.patch (SB)
++ - freebsd-gravity-hints-patch (JR)
++ - xv-zx.patch (JCE)
++ - xv3.10a.wapbmp.patch (PSV)
++ - xv-3.10a-pcd.patch.20010708 (DAC)
++ - jp-ext-bzip2-1.1.patch
++ (from ftp://ftp.freebsd.org/pub/FreeBSD/ports/local-distfiles/shige/xv/)
++20050410:
++ - boosted maximum number of files from 4096 to 32768 (GRR)
++ (note that OS kernel limits may also apply; for example, in Linux see
++ MAX_ARG_PAGES in linux-<version>/include/linux/binfmts.h)
++ - xv-3.10a-bmp16.patch (KS)
++ - final-image delay (e.g., "-wait 0.2,3" : pause 3 secs on final image) (GRR)
++ - xv-numpad.patch (EK)
++ - xv-delete-is-not-backspace.patch (EK)
++ - made browser window (schnauzer) and icons configurable (AT, GRR)
++20050501:
++ - xv-3.10a-bmpfix.patch (WF) [*SECURITY*]
++ - xv310a-jp-extension-rev5.3.3.tar.gz (TI, IM, ..., WF)
++ (adds support for MAG, MAKI, Pi, PIC, and PIC2 formats[!]; "magic suffix"
++ detection/conversion; MacBinary prefixes; archives as virtual filesystems;
++ multilingual text viewer [though not Unicode]; etc.)
++ - xv-3.10a-yaos.dif (WF, TO) [*SECURITY*]
++ (fixes a number of format-string issues and system() calls)
++ - xv-3.10a.dif (WF) [*SECURITY*]
++ (fixes more format-string issues, mktemp() and open() calls, and compilation
++ warnings [mostly from jp-extension patch])
++ - xv-3.10a-jumbo-jpd_startgrab-patch-20050420.txt (JPD)
++ - PATCH.alwaysnever (LJ)
++ - PATCH.bsd (LJ)
++ - PATCH.linedraw (LJ)
++ - PATCH.multipage (LJ)
++ - PATCH.multipageGIF (LJ)
++ - PATCH.random (LJ)
++ - PATCH.stat (LJ)
++ - PATCH.thumbs (LJ)
++ - xv-startgrab-imake-hips.patch (JPD)
++ ("hips" portion only; adds support for HIPS image format[!])
++ - xv-3.10a-formatstr.patch (KS)
++ - xv-3.10a-shortsleep.patch (KS)
++ - xv-3.10a-locale-linux.patch (KS)
++ - xv-3.10a-printkey.patch (KS)
++ - xv-3.10a-sysconfdir.patch (KS)
++ - added PREFIX and DESTDIR support to Makefile (KS, GRR)
++ - xv-3.10a-xvexecpath.patch (but disabled pending fixes) (KS)
++ - xv-3.10a-zeroquit.patch (KS, GRR)
++
++[!] Note that all six of these formats may still suffer from exploitable heap
++ overflows [*SECURITY*] when decoding images with large (possibly invalid)
++ dimensions; as a result, they are DISABLED by default. (Search for "GRR
++ POSSIBLE OVERFLOW / FIXME" comments in xvmag.c, xvmaki.c, xvpi.c, xvpic.c,
++ xvpic2.c, and xvhips.c, but keep in mind that these may not be exhaustive.)
++ Users who choose to overlook these security issues can enable any or all
++ of them by editing config.h.
++
++
++not (yet?) included:
++
++ - others from http://www.coara.or.jp/~sudakyo/XV_jp.html (some are duplicates):
++ -rw-r--r-- 4644 Mar 11 2004 xv-3.10a-directory.patch
++ -rw-r--r-- 462 Mar 11 2004 xv-3.10a-dirwkey.patch
++ -rw-r--r-- 688 Mar 11 2004 xv-3.10a-docdir.patch
++ -rw-r--r-- 11952 Mar 11 2004 xv-3.10a-download-test0.patch
++ -rw-r--r-- 41786 Mar 11 2004 xv-3.10a-download-test1.patch
++ -rw-r--r-- 42397 Mar 11 2004 xv-3.10a-download-test2.patch
++ -rw-r--r-- 47679 Mar 11 2004 xv-3.10a-download-test3.patch
++ -rw-r--r-- 52745 Mar 11 2004 xv-3.10a-download-test4.patch
++ -rw-r--r-- 3423 Apr 24 2004 xv-3.10a-keyzoom.patch
++ -rw-r--r-- 12387 Mar 15 2004 xv-3.10a-menubutton.patch
++ -rw-r--r-- 1178 Apr 24 2004 xv-3.10a-noblink.patch
++ -rw-r--r-- 57092 Jul 9 2004 xv-3.10a-resolution.patch
++ -rw-r--r-- 4645 Apr 24 2004 xv-3.10a-selall.patch
++ -rw-r--r-- 702 Apr 24 2004 xv-3.10a-showlongname.patch
++ -rw-r--r-- 1205 Apr 24 2004 xv-3.10a-staytoppdir.patch
++ -rw-r--r-- 4228 Apr 24 2004 xv-3.10a-wheelmouse.patch
++ -rw-r--r-- 744 Apr 24 2004 xv-3.10a-xvbutt_wait.patch
++ -rw-r--r-- 3757 Jul 9 2004 xv-3.10a-xvscrl_button2.patch
++ -rw-r--r-- 1494 Jul 9 2004 xv-3.10a-xvscrl_wait.patch
++ -rw-r--r-- 19352 Jul 9 2004 xv-3.10a-xvzoom.patch
++
++ - xv-3.10a+jp-extension-rev5.3.3+FLmask.v2.1+png+misc.patch ["mask" support]
++
++ - xv-psnewstyle.patch (TA) [coming "soon"?]
++ - xv-3.10a.patch.linux (PBJ) [maybe use vdcomp.c changes?]
++ - xvxpm-anthony-thyssen.c (AT) ["slate grey" bug already gone?]
++ - xv-geoff-kuenning-iconsize-slideshow.patch [var. icons; full-screen slides]
++ - xv-scott-marovich-20070214-xvtiff.c.patch6.unified [TIFF CMYK support]
++
++ - stuff in xv/unsupt:
++ -rw-r--r-- 30527 Dec 22 1994 FITS.rite
++ -rw-r--r-- 49152 Dec 22 1994 FITS.tar
++ -rw-r--r-- 3753 Dec 22 1994 G3.patch1
++ -rw-r--r-- 24576 Dec 22 1994 G3.tar
++ -rw-r--r-- 1098 Dec 22 1994 INFO.cgm
++ -rw-r--r-- 1941 Dec 22 1994 README
++ -rwxr-xr-x 1059 Dec 22 1994 getweather
++ -rwxr-xr-x 2186 Dec 22 1994 getweather.ksh
++ -rw-r--r-- 856 Dec 22 1994 twm.fix
++ -rw-r--r-- 844 Dec 22 1994 vargs.c
++ -rw-r--r-- 47626 Dec 22 1994 vis
++ -rw-r--r-- 21097 Dec 22 1994 xscm
++
++
++
++not finished (and/or even started ;-) ):
++
++ - fix xvpng.c not to use direct struct access
++ - (better) fix for never-ending pile of SLOW popups when viewing TIFFs with
++ unknown tags (or truncated/corrupted images)
++ - fix for minor .Z inefficiency in xv.c ("FIXME")
++ - fix for filename entry-field mouse/cursor deficiencies
++ (positioning fixed 20070104 by Ross Combs; would like select/cut/paste, too)
++ - fix for .ppm.gz "disk leak" [can't reproduce...already fixed?]
++ (maybe occurs only if filesystem is already nearly full? bad .gz?)
++
++ - transparency support for TIFF, XPM and TGA images
++ - support for tiled background image (with transparent foreground image)
++ - MNG/JNG support
++ - SVG support
++
++
++ChangeLog
++---------
++
++ 20000220
++ original pair of jumbo patches, comprising perhaps 16 fix-patches and a
++ dozen enhancement-patches; never publicly released
++
++ 20040516
++ first public release, incorporating 25 fix-patches and 21 enhancement-
++ patches
++
++ 20040523
++ minor fix to xvctrl.c to support registered versions (GRR warnings-patch
++ was slightly overzealous); switched to tarball packaging
++
++ 20040531
++ fixed undefined CLK_TCK with gcc -ansi (enh/USE_TICKS option); made
++ libjpeg, libtiff, libpng and zlib sections of makefile more consistent
++ (enh)
++
++ 20040606
++ added freshmeat link, build instructions, and changelog to jumbo README
++ (this file)
++
++ 20050213
++ increased max number of files from 4096 to 32768 (enh)
++
++ 20050320-20050410
++ fixed two very long-standing YCbCr bugs in TIFF decoder (fix);
++ provisionally fixed bug in TIFF decoder for contiguous tiled TIFFs with
++ bottom-* orientation (fix/USE_TILED_TIFF_BOTLEFT_FIX option); fixed new
++ gcc 3.3 warnings (fix); fixed incorrect 16/24-bit display of xwd dumps
++ (fix); fixed multiple input-validation bugs (potential heap overflows)
++ and mktemp() dependencies (*SECURITY* fixes: CAN-2004-1725, CAN-2004-
++ 1726, CAN-2005-0665, CERT VU#622622, and others); added support for 16-
++ and 32-bit BMPs using bitfields "compression" (enh); fixed probable byte-
++ sex bug in 24-bit FixPix display code (enh/USE_24BIT_ENDIAN_FIX option);
++ fixed numerical-keypad NumLock behavior and delete-key behavior in file-
++ load/save window (enh); made schnauzer window and icons configurable (enh)
++
++ 20050417
++ incorporated "Japanese extension" patches, revision 5.3.3 (enh); fixed
++ additional *SECURITY* issues (format-string vulnerabilities, system()
++ and mktemp() calls, etc., but NOT heap overflows in new decoders) both
++ in existing code and in jp-extension additions (enh)
++
++ 20050425
++ added support for -startgrab option (enh); added support for a "Never"
++ button to file-overwrite popups (enh); added NetBSD and BSDI to list of
++ mkstemp()-supporting systems (enh); improved line-drawing code to set the
++ correct pixels for lines of all slopes (enh); added "Page n of m" to Info
++ window for multipage images (enh); added support for multipage (animated)
++ GIFs (enh); fixed -random support so randomized file list can be traversed
++ normally in forward or backward direction (enh); added typecasts to stat()
++ printfs for portability (enh); fixed erroneous use of "creation" time and
++ forced unlink prior to overwrite in schnauzer thumbnail code (enh); added
++ HIPS support (enh/HAVE_HIPS option)
++
++ 20050501
++ extended multipage keyboard support (PgUp/PgDn) to all windows except
++ control ("console") and directory (enh); fixed minor (non-security)
++ format-string issue in xv.c (enh); shortened delay on popup error windows
++ from 3 seconds to 1 second (enh); tweaked text-viewer localization support
++ (TV_L10N) for Linux (enh); added keyboard short cuts for Color and
++ Grayscale buttons in print dialog (enh); added support for separate "magic
++ suffix" (xv_mgcsfx) config dir (enh); added PREFIX and DESTDIR support to
++ Makefile (enh); fixed handling of zero-length files and other text-viewer
++ failures (enh)
++
++ 20050528
++ conditionally added missing alloca.h to xvpcd.c (required if alloca() is
++ a macro and alloca.h not included in stdlib.h, for example); fixed bogus
++ __S_IWRITE introduced in 20050501 release; fixed Makefile "install" target
++ (mkdir, chmod); fixed bug in MUST macro in xvwbmp.c; fixed prototype
++ warnings in xvevent.c, xvpcd.c (JRK, GRR)
++ - xv-3.10a-jimkirk-fixes.patch
++
++ 20050630
++ fixed broken mkdir(.xvpics) introduced in 20050501 release (RJH, GRR);
++ tweaked GUNZIP config for OpenBSD (GRR)
++ - xv-3.10a-xvpics-mkdir-fix.patch
++
++ 20051014
++ fixed longstanding xvevent.c typo (wasJpegUp -> wasPngUp) that caused build
++ failure if no JPEG support (TAR)
++
++ 20051019
++ fixed Darwin (Mac OS X) build error in xv.h and vdcomp.c due to lack of
++ malloc.h (JDB)
++
++ 20070210
++ fixed minor grammos (GRR); promoted PNG to first position, demoted GIF to
++ third (GRR); changed internal type of default image to PNG (GRR); increased
++ max files again, to 65536 (GRR)
++
++ 20070310
++ incorporated JPEG-2000 patch (SBM, GRR); added manual fax options for
++ unrecognized G3 images (SBM); relaxed 30-byte minimum file size (SBM)
++ - http://www.ece.uvic.ca/~mdadams/jasper/software/xv-patches
++
++ 20070318
++ incorporated 16bps raw (binary) PPM patch (define ASSUME_RAW_PPM_LSB_FIRST
++ for old behavior) (RAC, GRR); updated format list, web sites in xv man page
++ (GRR); fixed Makefile "install" target to create any necessary directories
++ (RAC, GRR); fixed GIF decoder bug (sizes of global, local color tables
++ different) (GRR)
++ - xv-ross-combs-ppm-16bps-rawbits.patch
++
++ 20070325
++ fixed invalid gamma assumption in PNG decoder (=> progressive color changes
++ over load/save cycles) (GRR)
++
++ 20070328
++ fixed animated-GIF /tmp/xvpgXXXXXX droppings (GRR)
++
++ 20070331
++ fixed PNG duplicate-palette-entries bug (GRR)
++
++ 20070415
++ incorporated EXIF-preserve patch (GHK); added missing JP2/JPC VS bits code
++ (GRR); added extended-warning options to CCOPTS (RAC); added "const" to
++ huge number of function args (RAC, GRR); made more effectively static
++ functions officially static (RAC); added mouse-clickability (but not
++ selectability) to text-entry fields (RAC); fixed window positioning (race
++ conditions?) under some virtual window managers (e.g., tvtwm) (RAC);
++ removed explicit paths for external (de)compressors (GRR, RAC)
++ - xv-geoff-kuenning-jpeg-exif-preserve.patch
++ - xv-ross-combs-20070104.diff
++
++ 20070422
++ incorporated function-key-scripts patch (see contrib/fnkey-scripts) (AS);
++ fixed man-page-section extensions ("1", not "l" or "1X") (FG); switched to
++ more sensible install paths for docs (FG); added Fedora Core build script
++ (see contrib/fedora) (JC); fixed VS to switch from move-mode to copy-mode
++ if source dir is read-only (EAJ); extended VS incremental-search mode (EAJ)
++ - xv-alexey-spiridonov-20070116-fnkey-scripts.tar.bz2
++ - xv-fabian-greffrath-20070215-debian-04-manpages.dpatch
++ - xv-fabian-greffrath-20070215-debian-03-makefiles.dpatch
++ - xv-john-cooper-Build-FC5-script.sh
++ - xv-erling-jacobsen-20060617-incr-search.patch
++
++ 20070428
++ modified install to include README.jumbo in docs (GRR); incorporated PNG
++ no-stdio patch (SBM); fixed XWD endianness support, improved performance
++ (replaces SJT 16/24-bit fix) (SBM)
++ - xv-scott-marovich-20070214-xvpng.diff
++ - xv-scott-marovich-20070214-xvxwd.c.patch
++
++ 20070506
++ added JPEG CMYK support (SBM); fixed TIFF (and others?) /tmp/xvpgXXXXXX
++ droppings (GRR); added VS clipboard support (JG)
++ - xv-scott-marovich-20070214-xvjpeg.c.patch
++ - xv-jurgen-grahn-20051127-schnauzer-clip.patch
++
++ 20070512
++ inverted handling of malloc.h header file to require NEED_MALLOC_H macro
++ for those few systems that actually need it (GRR)
++
++ 20070513
++ fixed GCC 4.1.x warnings (GRR); next round of const cleanup (GRR); fixed
++ minor TIFF memleak (GRR)
++
++ 20070514
++ fixed TIFF YCbCr reference black/white levels (SBM); added option to use
++ libjpeg YCbCr-to-RGB conversion for TIFF images (SBM, GRR)
++ - xv-scott-marovich-20070214-xvtiff.c.patch2.unified
++ - xv-scott-marovich-20070214-xvtiff.c.patch3.unified
++
++ 20070519
++ fixed handling of multi-page JPEG-compressed TIFFs (old or new) (SBM);
++ added TIFF YCbCr separated-color-plane support (may require libtiff
++ patch(es) to tif_ojpeg.c and/or tif_jpeg.c) (SBM)
++ - xv-scott-marovich-20070214-xvtiff.c.patch4.unified
++ - xv-scott-marovich-20070214-xvtiff.c.patch5.unified
++
++ 20070520
++ updated README.jumbo
+diff -u -r --new-file xv-3.10a.orig/README.pcd xv-3.10a/README.pcd
+--- xv-3.10a.orig/README.pcd 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/README.pcd 2001-07-08 13:21:19.000000000 -0500
+@@ -0,0 +1,159 @@
++Copyright 1993-2001 David Clunie.
++
++PCD patch for XV 3.10a Release Notes 2001/07/08.
++
++See also the progress notes at the end of this file. Thanks to all those
++contributors who have substantially improved this patch.
++
++These patches allow xv to read Kodak photocd files and choose which of the
++5 available resolutions one wants to view.
++
++When a photocd file is loaded, a dialog box asks which resolution you
++would like. The visual schnauzer builds thumbnails by reading the lowest
++resolution image. The selected resolution can be selected from the
++command line with the -pcd option:
++
++ [-pcd 0|1|2|3|4]
++
++where:
++
++ 0=192*128, base/16 resolution
++ 1=384*256, base/4 resolution
++ 2=768*512, base resolution
++ 3=1536*1024, 4base resolution
++ 4=3072*2048 16base resolution.
++
++Note that the Pro format is not supported.
++
++The command line option allows loops without the dialog box popping up, eg.:
++
++ xv -pcd 1 -wloop -wait 10 *.pcd
++
++The code is pretty crude and was written quickly for a specific purpose and
++has not really been cleaned up. It is poorly structured, full of debugging
++codes and verbose comments, and there is very little attempt at optimizing
++things. No profiling has been done.
++
++There is not yet support for overview files, nor is there a facility to
++use the higher resolution chroma planes from when viewing lower resolution
++images.
++
++It's only claim to fame is that it works and produces reasonable looking
++images.
++
++The outline of this is shamelessly derived from xvpbm.c to read the
++file, and xvtiffwr.c to handle the popup window and X stuff (X never
++has been my forte !), and the PhotoCD format information (though not
++the code) was found in Hadmut Danisch's (danisch@ira.uka.de) hpcdtoppm
++program in which he has reverse engineered the format by studying
++hex dumps of PhotoCDs ! The color stuff and Huffman decding were
++extensively revised by Matthew Francey.
++
++Feel free to send me comments or improvements, or even better, more
++information about the photo CD format ... hopefully someone who really
++knows what they are doing will tidy it up or do a neater job.
++
++david (dclunie@dclunie.com)
++
++---------
++
++The trace #define in xvpcd.c is now in the right place, and the ansi
++prototype for the magnify function has been fixed. Colin made me switch to
++xvbcopy() which seems like a good idea for System V victims.
++
++---------
++
++Date: Wed, 22 Dec 1993 16:09:52 --1000
++From: colinc@fitmail.fit.qut.edu.au (Colin Canfield )
++
++I have done some more work using your patch I thought you might be intested in.
++The major change was adding a size parameter to the LoadPCD; either -1 to mean
++the popup or else the size you desired. This allows batch mode processing,
++specifically xv -pcd <size> <filename>, and the visual schnauzer can work in
++quick mode (ie. you don't have to select each image size when it is building
++the icons)
++
++I have added an xbm file for the file type but haven't drawn an icon for it,
++this is in bitmaps/br_pcd.xbm. I will just send you the new files.
++
++---------
++
++From: andrew@andrew.triumf.ca (Andrew Daviel)
++Date: 16 Feb 1995 23:32:21 GMT
++
++This is David Clunie's patch for xv-3.00 tuned a bit to work
++on xv-3.10. The code's all the same except for replacing
++"trace" with "fprintf" in xvpcd.c and adding an "unsigned" qualifier to
++keep my compiler (gcc) happy. Oh yes, changed RFT_PCD to 20 as
++John Bradley has now used 15 through 19.
++
++---------
++
++From: dclunie@flash.us.com (David A. Clunie)
++Date: Thu Jun 15 14:43:46 GMT+0300 1995
++
++Andrew's patch didn't include Colin's browser changes, so I redid the
++xv-3.10 update from scratch ... it seems pretty much the same as
++Andrew's changes. I also edited the Imakefile and Makefiles in order
++to support the PCD changes, as well as make the install process a
++little more flexible, with options to strip and set modes and so on.
++Also made RFT_PCD 25 so as not to conflict with magpic patch from Japan
++by Ikemoto Masahiro <ikeyan@airlab.cs.ritsumei.ac.jp>, and used his
++bitmap icon for pcd files.
++
++Now there are two versions of the patch, one which should be applied
++to the xv-3.10 distribution.
++
++The other should be applied to xv-3.10 AFTER Ikemoto Masahiro's
++Patch.magpic2.PhotoCD.XV319a, in order to add the browser features to
++the latter, as well as fixing a Makefile typo (was xcpcd.c not xvpcd.c)
++and including unistd.h for the SEEK_xxx constants in the magicpic
++stuff.
++
++---------
++
++Subject: Re: photo-cd patch for xv
++From: Matthew Francey <mdf@angoss.com>
++Date: Mon, 26 Mar 2001 15:37:55 +0000
++
++Attached is a revised version of xvpcd.c; the areas that I have
++re-written or changed are in a different coding style so you can tell
++what has changed. The GNU 'indent' program can be run against the file
++to enforce a consistent style ..
++
++Here is what I've done though:
++
++a) huffman table reader re-written, because it would fail on some
++ photocd files with "unusual" huffman codes.
++
++b) the huffman-coded corrections are now properly applied
++
++c) the corrections can sometimes over or underflow; clipping has been
++ introduced and effectively fixes the problem, but I suspect that
++ there is something deeper going on.
++
++d) the "official" YCC->sRGB transform is done. a "beyond 100% white"
++ mapping table was snarfed from ImageMagick. an option for using a
++ flat linear LUT was added -- this can make somewhat over-exposed images
++ look alot nicer.
++
++e) there were strange problems where the code wouldn't be able to find
++ the huffman tables and data for the 16base image (the bit-buffering
++ code was starting mid-sector, instead of at a sector boundary). Looking
++ at a pcd file with a hex editor suggests to me that it is possible to
++ just skip directly to these huffman tables -- no special "+12" and such
++ constants necessary. But I haven't tried this yet.
++
++The results: I've been able to read about 50 or 60 .pcd files [scattered
++in age from 6 years old to scans done last week] with this code without
++incident. Image quality at the high resolution is excellent. Even the
++trivial amount of LUT control is useful when dealing with over-exposed
++images.
++
++If I get around to it: finer LUT control to take advantage of the
++slightly extended dynamic range of PhotoCD scans, especially in regards to
++dark or somewhat underexposed scenes.
++
++
++
++
+diff -u -r --new-file xv-3.10a.orig/bits/br_bzip2 xv-3.10a/bits/br_bzip2
+--- xv-3.10a.orig/bits/br_bzip2 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_bzip2 1998-04-12 21:23:39.000000000 -0500
+@@ -0,0 +1,27 @@
++#define br_bzip2_width 48
++#define br_bzip2_height 48
++static unsigned char br_bzip2_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x7c, 0xbe, 0x3d, 0x0e, 0x02, 0x20, 0xfc, 0xbe, 0x7d, 0x1f, 0x02,
++ 0x20, 0xcc, 0xb0, 0x6d, 0x1b, 0x02, 0x20, 0xcc, 0x98, 0x6d, 0x1b, 0x02,
++ 0x20, 0xfc, 0x98, 0x6d, 0x18, 0x02, 0x20, 0x7c, 0x8c, 0x7d, 0x0c, 0x02,
++ 0x20, 0xcc, 0x8c, 0x3d, 0x0e, 0x02, 0x20, 0xcc, 0x84, 0x0d, 0x06, 0x02,
++ 0x20, 0xcc, 0x86, 0x0d, 0x03, 0x02, 0x20, 0xfc, 0xbe, 0x0d, 0x1f, 0x02,
++ 0x20, 0x7c, 0xbe, 0x0d, 0x1f, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
+diff -u -r --new-file xv-3.10a.orig/bits/br_jp2 xv-3.10a/bits/br_jp2
+--- xv-3.10a.orig/bits/br_jp2 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_jp2 2005-05-09 00:00:27.000000000 -0500
+@@ -0,0 +1,27 @@
++#define br_jp2_width 48
++#define br_jp2_height 48
++static unsigned char br_jp2_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0xfb, 0xf1, 0x01, 0x02,
++ 0x20, 0x00, 0xfb, 0xfb, 0x03, 0x02, 0x20, 0x00, 0x1b, 0x1b, 0x03, 0x02,
++ 0x20, 0x00, 0x1b, 0x1b, 0x00, 0x02, 0x20, 0x00, 0x1b, 0x1b, 0x00, 0x02,
++ 0x20, 0x00, 0x9b, 0x1b, 0x00, 0x02, 0x20, 0x00, 0xfb, 0x19, 0x00, 0x02,
++ 0x20, 0x00, 0xfb, 0x18, 0x00, 0x02, 0x20, 0x18, 0x1b, 0x18, 0x00, 0x02,
++ 0x20, 0x18, 0x1b, 0x18, 0x00, 0x02, 0x20, 0xb8, 0x1b, 0x18, 0x03, 0x02,
++ 0x20, 0xf0, 0x19, 0xf8, 0x03, 0x02, 0x20, 0xe0, 0x18, 0xf0, 0x01, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
+diff -u -r --new-file xv-3.10a.orig/bits/br_jpc xv-3.10a/bits/br_jpc
+--- xv-3.10a.orig/bits/br_jpc 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_jpc 2005-05-09 00:00:27.000000000 -0500
+@@ -0,0 +1,27 @@
++#define br_jpc_width 48
++#define br_jpc_height 48
++static unsigned char br_jpc_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0xfb, 0xf1, 0x01, 0x02,
++ 0x20, 0x00, 0xfb, 0xfb, 0x03, 0x02, 0x20, 0x00, 0x1b, 0x1b, 0x03, 0x02,
++ 0x20, 0x00, 0x1b, 0x03, 0x03, 0x02, 0x20, 0x00, 0x1b, 0x03, 0x03, 0x02,
++ 0x20, 0x00, 0x9b, 0x83, 0x01, 0x02, 0x20, 0x00, 0xfb, 0xc1, 0x01, 0x02,
++ 0x20, 0x00, 0xfb, 0xe0, 0x00, 0x02, 0x20, 0x18, 0x1b, 0x70, 0x00, 0x02,
++ 0x20, 0x18, 0x1b, 0x38, 0x00, 0x02, 0x20, 0xb8, 0x1b, 0x18, 0x00, 0x02,
++ 0x20, 0xf0, 0x19, 0xf8, 0x03, 0x02, 0x20, 0xe0, 0x18, 0xf8, 0x03, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
+diff -u -r --new-file xv-3.10a.orig/bits/br_mag xv-3.10a/bits/br_mag
+--- xv-3.10a.orig/bits/br_mag 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_mag 2005-04-17 16:04:22.000000000 -0500
+@@ -0,0 +1,27 @@
++#define br_mag_width 48
++#define br_mag_height 48
++static unsigned char br_mag_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x0c, 0x86, 0xc1, 0x0f, 0x02,
++ 0x20, 0x0c, 0xc6, 0xe3, 0x1f, 0x02, 0x20, 0x1c, 0xe7, 0x67, 0x18, 0x02,
++ 0x20, 0x1c, 0x77, 0x6e, 0x18, 0x02, 0x20, 0xbc, 0x37, 0x6c, 0x00, 0x02,
++ 0x20, 0xbc, 0x37, 0x6c, 0x00, 0x02, 0x20, 0xec, 0x36, 0x6c, 0x1e, 0x02,
++ 0x20, 0xec, 0xf6, 0x6f, 0x1e, 0x02, 0x20, 0x4c, 0xf6, 0x6f, 0x18, 0x02,
++ 0x20, 0x4c, 0x36, 0x6c, 0x18, 0x02, 0x20, 0x0c, 0x36, 0x6c, 0x18, 0x02,
++ 0x20, 0x0c, 0x36, 0xec, 0x1f, 0x02, 0x20, 0x0c, 0x36, 0xcc, 0x0f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
+diff -u -r --new-file xv-3.10a.orig/bits/br_maki xv-3.10a/bits/br_maki
+--- xv-3.10a.orig/bits/br_maki 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_maki 2005-04-17 16:04:22.000000000 -0500
+@@ -0,0 +1,27 @@
++#define br_maki_width 48
++#define br_maki_height 48
++static unsigned char br_maki_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x83, 0x61, 0x18, 0x33, 0x02,
++ 0x20, 0x83, 0xf1, 0x98, 0x33, 0x02, 0x20, 0xc7, 0xf9, 0x99, 0x31, 0x02,
++ 0x20, 0xc7, 0x9d, 0xdb, 0x30, 0x02, 0x20, 0xef, 0x0d, 0xfb, 0x30, 0x02,
++ 0x20, 0xef, 0x0d, 0x7b, 0x30, 0x02, 0x20, 0xbb, 0x0d, 0x7b, 0x30, 0x02,
++ 0x20, 0xbb, 0xfd, 0xdb, 0x30, 0x02, 0x20, 0x93, 0xfd, 0xdb, 0x30, 0x02,
++ 0x20, 0x93, 0x0d, 0x9b, 0x31, 0x02, 0x20, 0x83, 0x0d, 0x9b, 0x31, 0x02,
++ 0x20, 0x83, 0x0d, 0x1b, 0x33, 0x02, 0x20, 0x83, 0x0d, 0x1b, 0x33, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
+diff -u -r --new-file xv-3.10a.orig/bits/br_mgcsfx xv-3.10a/bits/br_mgcsfx
+--- xv-3.10a.orig/bits/br_mgcsfx 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_mgcsfx 2005-04-17 16:04:22.000000000 -0500
+@@ -0,0 +1,27 @@
++#define br_mgcsfx_width 48
++#define br_mgcsfx_height 48
++static unsigned char br_mgcsfx_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x3c, 0xcf, 0x71, 0x00, 0x02,
++ 0x20, 0x6c, 0x61, 0xda, 0x00, 0x02, 0x20, 0x6c, 0x67, 0xd8, 0x1e, 0x02,
++ 0x20, 0x3c, 0x61, 0xd8, 0x1e, 0x02, 0x20, 0x6c, 0x61, 0xda, 0x00, 0x02,
++ 0x20, 0x6c, 0xcf, 0x71, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x4e, 0x7a, 0xef, 0x3d, 0x02, 0x20, 0xd3, 0x32, 0x68, 0x6c, 0x02,
++ 0x20, 0xc3, 0x32, 0xe4, 0x6c, 0x02, 0x20, 0x5b, 0x33, 0x62, 0x6c, 0x02,
++ 0x20, 0x53, 0x33, 0x61, 0x6c, 0x02, 0x20, 0x4e, 0x7a, 0xef, 0x3d, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
+diff -u -r --new-file xv-3.10a.orig/bits/br_pcd xv-3.10a/bits/br_pcd
+--- xv-3.10a.orig/bits/br_pcd 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_pcd 1995-06-15 23:31:53.000000000 -0500
+@@ -0,0 +1,27 @@
++#define br_pcd_width 48
++#define br_pcd_height 48
++static unsigned char br_pcd_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x67, 0x00, 0xe0, 0x1c, 0x02,
++ 0x20, 0x6f, 0x00, 0xf0, 0x3d, 0x02, 0x20, 0x6b, 0x00, 0xb0, 0x2d, 0x02,
++ 0x20, 0x6b, 0x00, 0x33, 0x2c, 0x02, 0x20, 0x6b, 0x00, 0x33, 0x2c, 0x02,
++ 0x20, 0xeb, 0x98, 0x37, 0x2c, 0x02, 0x20, 0xef, 0xbd, 0x37, 0x2c, 0x02,
++ 0x20, 0x67, 0x2d, 0x33, 0x2c, 0x02, 0x20, 0x63, 0x2d, 0x33, 0x2c, 0x02,
++ 0x20, 0x63, 0x2d, 0x33, 0x2c, 0x02, 0x20, 0x63, 0x2d, 0xb3, 0x2d, 0x02,
++ 0x20, 0x63, 0x3d, 0xf7, 0x3d, 0x02, 0x20, 0x63, 0x19, 0xe6, 0x1c, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
+diff -u -r --new-file xv-3.10a.orig/bits/br_pi xv-3.10a/bits/br_pi
+--- xv-3.10a.orig/bits/br_pi 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_pi 2005-04-17 16:04:22.000000000 -0500
+@@ -0,0 +1,27 @@
++#define br_pi_width 48
++#define br_pi_height 48
++static unsigned char br_pi_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x80, 0x1f, 0x7e, 0x00, 0x02,
++ 0x20, 0x80, 0x3f, 0x7e, 0x00, 0x02, 0x20, 0x80, 0x31, 0x18, 0x00, 0x02,
++ 0x20, 0x80, 0x31, 0x18, 0x00, 0x02, 0x20, 0x80, 0x31, 0x18, 0x00, 0x02,
++ 0x20, 0x80, 0x39, 0x18, 0x00, 0x02, 0x20, 0x80, 0x1f, 0x18, 0x00, 0x02,
++ 0x20, 0x80, 0x0f, 0x18, 0x00, 0x02, 0x20, 0x80, 0x01, 0x18, 0x00, 0x02,
++ 0x20, 0x80, 0x01, 0x18, 0x00, 0x02, 0x20, 0x80, 0x01, 0x18, 0x00, 0x02,
++ 0x20, 0x80, 0x01, 0x7e, 0x00, 0x02, 0x20, 0x80, 0x01, 0x7e, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
+diff -u -r --new-file xv-3.10a.orig/bits/br_pic xv-3.10a/bits/br_pic
+--- xv-3.10a.orig/bits/br_pic 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_pic 2005-04-17 16:04:22.000000000 -0500
+@@ -0,0 +1,27 @@
++#define br_pic_width 48
++#define br_pic_height 48
++static unsigned char br_pic_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xf0, 0xf3, 0xf3, 0x01, 0x02,
++ 0x20, 0xf0, 0xf7, 0xfb, 0x03, 0x02, 0x20, 0x30, 0xc6, 0x18, 0x03, 0x02,
++ 0x20, 0x30, 0xc6, 0x18, 0x00, 0x02, 0x20, 0x30, 0xc6, 0x18, 0x00, 0x02,
++ 0x20, 0x30, 0xc7, 0x18, 0x00, 0x02, 0x20, 0xf0, 0xc3, 0x18, 0x00, 0x02,
++ 0x20, 0xf0, 0xc1, 0x18, 0x00, 0x02, 0x20, 0x30, 0xc0, 0x18, 0x00, 0x02,
++ 0x20, 0x30, 0xc0, 0x18, 0x00, 0x02, 0x20, 0x30, 0xc0, 0x18, 0x03, 0x02,
++ 0x20, 0x30, 0xf0, 0xfb, 0x03, 0x02, 0x20, 0x30, 0xf0, 0xf3, 0x01, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
+diff -u -r --new-file xv-3.10a.orig/bits/br_pic2 xv-3.10a/bits/br_pic2
+--- xv-3.10a.orig/bits/br_pic2 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_pic2 2005-04-17 16:04:22.000000000 -0500
+@@ -0,0 +1,27 @@
++#define br_pic2_width 48
++#define br_pic2_height 48
++static unsigned char br_pic2_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x3f, 0x3f, 0x1f, 0x1f, 0x02,
++ 0x20, 0x7f, 0xbf, 0xbf, 0x3f, 0x02, 0x20, 0x63, 0x8c, 0xb1, 0x31, 0x02,
++ 0x20, 0x63, 0x8c, 0x01, 0x30, 0x02, 0x20, 0x63, 0x8c, 0x01, 0x30, 0x02,
++ 0x20, 0x73, 0x8c, 0x01, 0x30, 0x02, 0x20, 0x3f, 0x8c, 0x01, 0x18, 0x02,
++ 0x20, 0x1f, 0x8c, 0x01, 0x0c, 0x02, 0x20, 0x03, 0x8c, 0x01, 0x06, 0x02,
++ 0x20, 0x03, 0x8c, 0x01, 0x03, 0x02, 0x20, 0x03, 0x8c, 0xb1, 0x01, 0x02,
++ 0x20, 0x03, 0xbf, 0xbf, 0x3f, 0x02, 0x20, 0x03, 0x3f, 0x9f, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
+diff -u -r --new-file xv-3.10a.orig/bits/br_png xv-3.10a/bits/br_png
+--- xv-3.10a.orig/bits/br_png 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_png 1996-06-13 16:32:08.000000000 -0500
+@@ -0,0 +1,28 @@
++#define br_png_width 48
++#define br_png_height 48
++static unsigned char br_png_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0xf8, 0x19, 0xc3, 0x07, 0x02, 0x20, 0x18, 0x3b, 0x63, 0x0c, 0x02,
++ 0x20, 0x18, 0x3b, 0x33, 0x00, 0x02, 0x20, 0x18, 0x5b, 0x33, 0x00, 0x02,
++ 0x20, 0xf8, 0x59, 0x33, 0x0f, 0x02, 0x20, 0x18, 0x98, 0x33, 0x0c, 0x02,
++ 0x20, 0x18, 0x98, 0x33, 0x0c, 0x02, 0x20, 0x18, 0x18, 0x63, 0x0c, 0x02,
++ 0x20, 0x18, 0x18, 0xc3, 0x0b, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03,
++ };
+diff -u -r --new-file xv-3.10a.orig/bits/br_zx xv-3.10a/bits/br_zx
+--- xv-3.10a.orig/bits/br_zx 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/bits/br_zx 1998-08-06 15:00:03.000000000 -0500
+@@ -0,0 +1,28 @@
++#define br_zx_width 48
++#define br_zx_height 48
++static unsigned char br_zx_bits[] = {
++ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
++ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x7f, 0xce, 0x01, 0x0e, 0x02, 0x20, 0x61, 0x84, 0x00, 0x11, 0x02,
++ 0x20, 0x30, 0x48, 0x00, 0x10, 0x02, 0x20, 0x18, 0x38, 0x10, 0x08, 0x02,
++ 0x20, 0x0c, 0x30, 0x10, 0x0e, 0x02, 0x20, 0x06, 0x68, 0x7c, 0x10, 0x02,
++ 0x20, 0x03, 0x48, 0x10, 0x10, 0x02, 0x20, 0x41, 0x84, 0x10, 0x11, 0x02,
++ 0x20, 0x7f, 0xce, 0x01, 0x0e, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0xff, 0xff, 0xff, 0xff, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x40, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
++ 0x20, 0x00, 0x00, 0x00, 0x10, 0x02, 0x20, 0x00, 0x00, 0x00, 0x08, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0x84, 0x03, 0x20, 0x00, 0x00, 0x00, 0xc2, 0x03,
++ 0x20, 0x00, 0x00, 0x00, 0xe1, 0x03, 0x20, 0x00, 0x00, 0x80, 0xf0, 0x02,
++ 0x20, 0x00, 0x00, 0x40, 0x78, 0x02, 0x20, 0x00, 0x00, 0x20, 0x3c, 0x02,
++ 0x20, 0x00, 0x00, 0x10, 0x1e, 0x02, 0x20, 0x00, 0x00, 0x08, 0x0f, 0x03,
++ 0x20, 0x00, 0x00, 0x84, 0x87, 0x03, 0x20, 0x00, 0x00, 0xc2, 0xc3, 0x03,
++ 0x20, 0x00, 0x00, 0xe1, 0xe1, 0x03, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03,
++ };
+diff -u -r --new-file xv-3.10a.orig/contrib/fedora/Build-FC5 xv-3.10a/contrib/fedora/Build-FC5
+--- xv-3.10a.orig/contrib/fedora/Build-FC5 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/contrib/fedora/Build-FC5 2006-06-01 10:12:47.000000000 -0500
+@@ -0,0 +1,56 @@
++#!/bin/bash
++#
++# prep and build XV for FC5
++#
++# adapted from Slackware 10.2 -- john.cooper@third-harmonic.com
++#
++
++if [ ${1}foo == "__LOGGED__foo" ]; then
++ shift
++else
++ for i in `seq 0 9`
++ do
++ if [ -e ${0}.log.$((9-i)) ]; then
++ mv ${0}.log.$((9-i)) ${0}.log.$((9-i+1))
++ fi
++ done
++
++ exec $0 __LOGGED__ $@ 2>&1 | tee $BUILDDIR/$0.log.0
++ exit $?
++fi
++
++SOURCE=`pwd`
++if [ "$BUILD" = "" ]; then
++ BUILD=./build
++fi
++
++if [ ! -d $BUILD ]; then
++ mkdir -p $BUILD
++fi
++
++PFLAGS="--verbose --backup --suffix=.orig"
++
++function bail()
++ {
++ echo "$0: failed $1"
++ exit 1
++ }
++
++cd $BUILD
++rm -rf xv-3.10
++tar xzvf $SOURCE/xv-3.10.tar.gz
++cd xv-3.10
++zcat $SOURCE/xv-3.10a.patch.gz | patch -p0 $PFLAGS || \
++ bail $SOURCE/xv-3.10a.patch.gz
++bzcat $SOURCE/xv-3.10a-jumbo-fix-patch-20050410.txt.bz2 | patch -p1 $PFLAGS || \
++ bail $SOURCE/xv-3.10a-jumbo-fix-patch-20050410.txt.bz2
++bzcat $SOURCE/xv-3.10a-jumbo-enh-patch-20050501.txt.bz2 | patch -p1 $PFLAGS || \
++ bail $SOURCE/xv-3.10a-jumbo-enh-patch-20050501.txt.bz2
++zcat $SOURCE/xv.prefix.diff.gz | patch -p1 $PFLAGS || \
++ bail $SOURCE/xv.prefix.diff.gz
++make -f Makefile.std || bail make
++strip --strip-unneeded bggen vdcomp xcmap xv xvpictoppm || bail strip
++
++exit $?
++
++# vi:set ts=4:
+diff -u -r --new-file xv-3.10a.orig/contrib/fedora/README xv-3.10a/contrib/fedora/README
+--- xv-3.10a.orig/contrib/fedora/README 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/contrib/fedora/README 2006-06-01 10:12:47.000000000 -0500
+@@ -0,0 +1,16 @@
++Greg,
++ After winding up in dark lonely places trying to
++get xv-3.10a to build on FC5 I suspected I was missing
++something. Then I happened on your patch manifest
++in Slackware 10.2.
++
++I bandsawed the script a bit to use in propagating XV
++to a handful of personal FC5 machines. Attached for
++reference.
++
++Thanks for your effort!
++
++-john
++
++--
++john.cooper@third-harmonic.com
+diff -u -r --new-file xv-3.10a.orig/contrib/fnkey-scripts/README xv-3.10a/contrib/fnkey-scripts/README
+--- xv-3.10a.orig/contrib/fnkey-scripts/README 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/contrib/fnkey-scripts/README 2007-01-16 02:41:51.000000000 -0600
+@@ -0,0 +1,111 @@
++-- License and Disclaimer --
++
++This patch & script package was written by Alexey Spiridonov, and is
++licensed under the GNU GPLv2. There is NO WARRANTY.
++
++XV is copyrighted by John Bradley.
++
++-- What is this? --
++
++This is a small patch for XV that allows you to run scripts by pressing
++a key from F1 through F12 (or more, just change 12 to your number in the
++patch file).
++
++The patch enables a number of useful features. Here is a my set-up:
++
++F1: Losslessly rotate JPEG 90 degrees to the right.
++F2: Losslessly rotate JPEG 90 degrees to the left.
++
++F3: Print the current selection rectangle (on the terminal where xv was
++ launched). This is useful for quickly recording a bunch of positions in
++ an image. Use case:
++ I'm annotating face positions.
++ 1) Select Joe in picture, hit F3, type "Joe" in the terminal.
++ 2) Select Jane in the picture, ...
++ ...
++ n) Copy the text visible in the terminal, and paste it into the
++ JPEG comment.
++ Of course, i would write a more convenient script if I annotated faces
++ with any any frequency.
++
++F4: Edit JPEG comment (I use it for annotations/tags).
++
++F5: Log a 'losslessly rotate right' command for batch processing. This
++ writes the rotation command for the current file into a shell script
++ somewhere ("~/photos/bin/rotscript" by default). This is great for
++ slower computers because you don't have to wait for each image to
++ rotate; instead, you just rotate them all at once by running the
++ resulting script.
++F6: Log a 'losslessly rotate left' batch command.
++
++F8: Crop image on disk, but back-up the uncropped version. You can make
++ a succession of crops this way, with a backup made at every step.
++ This wastes disk space, so be sure to clean up once you get a crop you
++ like.
++F7: Undo the last crop done on this image. This can be repeated until you're
++ back at the original.
++
++-- Installation --
++
++I'll tell you how to get the set-up I described above. Of course, you can
++customize it to your heart's content.
++
++(( 1 ))
++
++Go to:
++
++ http://www.sonic.net/~roelofs/greg_xv.html
++
++and follow the XV install instructions there. If you are okay with
++reading shell scripts, you might also give this a shot:
++
++ http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/media-gfx/xv/xv-3.10a-r12.ebuild
++
++When you're ready to type "make install", do the following to apply my patch:
++
++ $ cd WHEREVER_YOU_COMPILED_XV
++ $ patch -p1 --dry-run < PATH/TO/xv-3.10a-fkey-command-patch.greg-xv
++
++Hopefully, the above command won't complain; if it does, Greg Roelofs
++probably changed his patchset, and my patch has become out of date -- let me
++know. If that went well, run:
++
++ $ patch -p1 < PATH/TO/xv-3.10a-fkey-command-patch.greg-xv
++
++Now, simply recompile and install as described in the other instructions.
++
++(( 2 ))
++
++Copy 'jpegcrop.sh', 'jpegeditcom.sh', 'jpegundocrop.sh', 'jpegrot.sh',
++'jpeglogrot.sh' to some convenient directory.
++
++Suggestions: ~/photos/bin, /usr/local/bin, etc...
++
++Edit 'jpeglogrot.sh' and 'jpegeditcom.sh'. In the former, you need to
++customize the path to 'jpegrot.sh'. In the latter, you should make set
++your favorite editor. The spots to customize are marked as such.
++
++(( 3 ))
++
++Open .Xdefaults in your favorite text editor, and paste the following lines
++there:
++
++xv.F1command: ~/photos/bin/jpegrot.sh 90 %s
++xv.F2command: ~/photos/bin/jpegrot.sh 270 %s
++xv.F3command: @echo "The selection rect for '%s' is at (%d, %d) of size %dx%d."
++xv.F4command: @~/photos/bin/jpegeditcom.sh %s &
++xv.F5command: @~/photos/bin/jpeglogrot.sh 90 %s
++xv.F6command: @~/photos/bin/jpeglogrot.sh 270 %s
++xv.F7command: ~/photos/bin/jpegundocrop.sh %s
++xv.F8command: ~/photos/bin/jpegcrop.sh %s %d %d %d %d
++
++Change '~/photos/bin/' to the directory you chose in (( 2 )). In case you're
++wondering what the '@' symbol means, it tells XV not to reload the file
++after running this command. The default is to reload the file.
++
++-- Apologies --
++
++I didn't get a chance to run through the above instructions and check
++that they work. I know they're right in spirit, but I might've made a typo
++or two. Even if it's obvious to you, would you please let me know by writing
++to lesha at mit dot edu?
+diff -u -r --new-file xv-3.10a.orig/contrib/fnkey-scripts/jpegcrop.sh xv-3.10a/contrib/fnkey-scripts/jpegcrop.sh
+--- xv-3.10a.orig/contrib/fnkey-scripts/jpegcrop.sh 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/contrib/fnkey-scripts/jpegcrop.sh 2006-03-11 21:30:03.000000000 -0600
+@@ -0,0 +1,33 @@
++#!/bin/bash
++FILE=$1
++WIDTH=$4
++HEIGHT=$5
++XPOS=$2
++YPOS=$3
++if [[ $XPOS -lt 0 ]]; then
++ echo "Negative x position $XPOS converted to zero, width adjusted."
++ WIDTH=$((WIDTH+XPOS))
++ XPOS=0
++fi
++if [[ $YPOS -lt 0 ]]; then
++ echo "Negative y position $YPOS converted to zero, height adjusted."
++ HEIGHT=$((HEIGHT+YPOS))
++ YPOS=0
++fi
++if [[ $(($WIDTH+$HEIGHT)) == 0 ]]; then
++ echo "Refusing to crop $FILE with an empty rectangle."
++ exit 1
++fi
++
++TMPFILE=`mktemp $FILE.tmp-jpeg-rot-XXXXXXXX`
++if jpegtran -optimize -progressive -crop ${WIDTH}x${HEIGHT}+${XPOS}+${YPOS} \
++ -copy all $FILE > $TMPFILE; then
++ COUNT=`echo $FILE-uncropped | wc -c`
++ NEXT=$((`ls $FILE-uncropped* | cut -b $COUNT- | grep '^[0-9]*$' \
++ | sed 's/^0*/'/ | sort -n | tail -n 1`+1))
++ # the targets shouldn't exist, but -i just in case
++ mv -i $FILE $FILE-uncropped$NEXT
++ mv -i $TMPFILE $FILE
++else
++ rm $TMPFILE
++fi
+diff -u -r --new-file xv-3.10a.orig/contrib/fnkey-scripts/jpegeditcom.sh xv-3.10a/contrib/fnkey-scripts/jpegeditcom.sh
+--- xv-3.10a.orig/contrib/fnkey-scripts/jpegeditcom.sh 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/contrib/fnkey-scripts/jpegeditcom.sh 2007-01-16 00:23:04.000000000 -0600
+@@ -0,0 +1,12 @@
++#!/bin/bash
++CFILE=`mktemp $1.tmp-jpeg-comments-XXXXXXXX`
++TMPFILE=`mktemp $1.tmp-jpeg-XXXXXXXX`
++rdjpgcom $1 > $CFILE
++INITIAL=`md5sum $CFILE`
++xterm -e "$EDITOR" "$CFILE" # customize your editor here
++MODIFIED=`md5sum $CFILE`
++if [[ "$INITIAL" != "$MODIFIED" ]]; then
++ mv $1 $TMPFILE
++ wrjpgcom -replace -cfile $CFILE $TMPFILE > $1
++fi
++rm $TMPFILE $CFILE $CFILE~
+diff -u -r --new-file xv-3.10a.orig/contrib/fnkey-scripts/jpeglogrot.sh xv-3.10a/contrib/fnkey-scripts/jpeglogrot.sh
+--- xv-3.10a.orig/contrib/fnkey-scripts/jpeglogrot.sh 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/contrib/fnkey-scripts/jpeglogrot.sh 2007-01-16 00:55:18.000000000 -0600
+@@ -0,0 +1,10 @@
++#!/bin/bash
++curdir="`pwd`"
++LOG=~/photos/bin/rotscript # customize your install dir here
++if [[ ! -e "$LOG" ]]; then
++ echo '#!/bin/bash' >> "$LOG"
++ chmod u+x "$LOG"
++fi
++echo "# following entry made on `date`" >> "$LOG"
++# also customize the following line
++echo ~/photos/bin/jpegrot \""$1"\" \""$curdir/$2"\" >> "$LOG"
+diff -u -r --new-file xv-3.10a.orig/contrib/fnkey-scripts/jpegrot.sh xv-3.10a/contrib/fnkey-scripts/jpegrot.sh
+--- xv-3.10a.orig/contrib/fnkey-scripts/jpegrot.sh 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/contrib/fnkey-scripts/jpegrot.sh 2006-07-18 23:10:43.000000000 -0500
+@@ -0,0 +1,7 @@
++#!/bin/bash
++TMPFILE="`mktemp "$2".tmp-jpeg-rot-XXXXXXXX`"
++if jpegtran -perfect -optimize -progressive -rotate "$1" -copy all "$2" > "$TMPFILE"; then
++ mv "$TMPFILE" "$2"
++else
++ rm "$TMPFILE"
++fi
+diff -u -r --new-file xv-3.10a.orig/contrib/fnkey-scripts/jpegundocrop.sh xv-3.10a/contrib/fnkey-scripts/jpegundocrop.sh
+--- xv-3.10a.orig/contrib/fnkey-scripts/jpegundocrop.sh 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/contrib/fnkey-scripts/jpegundocrop.sh 2006-03-11 21:30:04.000000000 -0600
+@@ -0,0 +1,8 @@
++#!/bin/bash
++FILE=$1
++COUNT=`echo $FILE-uncropped | wc -c`
++LATEST=$((`ls $FILE-uncropped* | cut -b $COUNT- | grep '^[0-9]*$' \
++ | sed 's/^0*/'/ | sort -n | tail -n 1`))
++if [[ -f $FILE-uncropped$LATEST ]]; then
++ mv $FILE-uncropped$LATEST $FILE
++fi
+diff -u -r --new-file xv-3.10a.orig/tiff/RANLIB.sh xv-3.10a/tiff/RANLIB.sh
+--- xv-3.10a.orig/tiff/RANLIB.sh 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/tiff/RANLIB.sh 2004-05-11 01:31:38.000000000 -0500
+@@ -0,0 +1,22 @@
++#!/bin/sh -f
++#
++# tests to see if the program 'ranlib' exists. If it does, runs ranlib on
++# the first argument (a library name). Otherwise, does nothing, and returns
++#
++# written by John Bradley for the XV 3.00 release
++# thanks to John Hagan for shell-script hackery
++#
++
++echo "executing 'ranlib $1'..."
++
++# Is there a ranlib? Let's try and then suffer the consequences...
++ranlib $1 >& /dev/null
++
++if [ $? -ne 0 ]; then
++ echo "There doesn't seem to be a ranlib on this system..."
++ echo "Don't worry about it."
++fi
++
++echo ""
++echo ""
++
+diff -u -r --new-file xv-3.10a.orig/xv_mgcsfx.sample xv-3.10a/xv_mgcsfx.sample
+--- xv-3.10a.orig/xv_mgcsfx.sample 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xv_mgcsfx.sample 2005-04-17 16:04:22.000000000 -0500
+@@ -0,0 +1,125 @@
++#/*
++# Configuration file for XV with recognition of 'Magic and Suffix'
++#
++#
++# $Id: xv_mgcsfx.sample,v 1.11 95/10/03 17:00:05 tin329 Exp Locker: tin329 $
++#
++# Author: Tetsuya INOUE <tin329@chino.it.okayama-u.ac.jp>
++#
++#
++# MgcSfx definition should write in one line.
++# Format:
++# <desc>:<ms type>:<ofs>:<magic>:<suffix>:<in it>:<in c>:<out it>:<out c>
++# If you decide to not use preprocessor, comment style is allowed.
++# # <comment>
++#
++# <desc> Description of your recognized image format.
++# <ms type> Type ID for recognition. (You should use 'magic'.)
++# * magic Data of string style.
++# `\' escape for special characters:
++# \b \f \n \r \t \v \\ \' \" \a \?
++# \0 ...\377 octal value
++# \x0 ...\xff hexadecimal value
++# * suffix Suffix of file name.
++# This type check <suffix> instead
++# of <magic>.
++# * [b|l]eint16 2 byte integer of [big|little] endian.
++# * [b|l]eint32 4 byte integer of [big|little] endian.
++# <ofs> Offset of magic number in the target image file.
++# <magic> Data(magic number) of <ms type> to match at <ofs>.
++# <suffix> Suffix of filename with '.'start.
++#
++# <in it> Input image format type (output from <in c>).
++# * PNM (PPM, PGM, PBM)
++# * AUTO Recognized by xv management, and load.
++# This is different from others, because
++# this write file to temporary.
++# <out it> Output image format type (input to <out c>).
++# * PNM_RAW (PPM_RAW, PGM_RAW, PBM_RAW)
++# * PNM_ASCII (PPM_ASCII, PGM_ASCII, PBM_ASCII)
++#
++# <in c> Command to get the input image.
++# * Command mast read stdin or file(specified by
++# argument), and write to stdout.
++# * Use %s to represent the file name. Without %s,
++# get file on stdin.
++# <out c> Command to put the output image.
++# * Command mast read stdin and write to stdout.
++#
++# <comment> Any message.
++#*/
++
++#/*############################################################################
++#
++# definition of the rule with Magic and Suffix
++#
++#*/
++
++# /* Canon View Station Image Format */
++ViewStation(std):magic:0:VsStdImf V0.2:.vs:PNM:VStopnm %s:PNM_RAW:pnmtoVS
++ViewStation(obj):magic:0:VsObjFormat V1.0:.vs:PNM:VSobjtopnm -:PNM_RAW:pnmtoVSobj
++
++# /* CERN httpd cache */
++# /* unchc skip header of CERN httpd cache file, and write data to stdout. */
++CERN httpd cache:magic:0:HTTP/1.0::AUTO:unchc %s::
++
++# /* XLD4(Q4) image format */
++XLD(Q4):magic:11:MAJYO:.q4:PNM:q4toppm::
++
++# /* ML1 image format */
++ML1:magic:0:\1\0\0\x1a:.ml1:PNM:ml1toppm %s::
++
++# /* Pict image format, 256 color only */
++PICT:suffix:::.pict:PNM:picttoppm:PNM_RAW:ppmquant 256 | ppmtopict
++PICT(gzip):suffix:::.pict.gz:PNM:gzip -dc | picttoppm:PNM_RAW:ppmquant 256 | ppmtopict | gzip
++PICT(compress):suffix:::.pict.Z:PNM:compress -dc | picttoppm:PNM_RAW:ppmquant 256 | ppmtopict | compress
++
++# /* Tim image format(used by SONY PlayStation) */
++TIM:magic:0:\x10\x00\x00\x00:.tim:PNM:timtoppm::
++
++# /* Cam image format(used by CASIO QV-10) */
++# /* CAM:magic:0:\x07\x20\x4d\x4d:.cam:AUTO:camtoppm -j:PNM_RAW */
++CAM:magic:0:\x07\x20\x4d\x4d:.cam:PNM:camtoppm::
++
++# /* Portable Network Graphics (PNG) format : magic is "0x89 PNG" */
++PNG:magic:0:\x89\x50\x4e\x47:.png:PNM:pngtopnm %s:PNM_RAW:pnmtopng
++# /* PNG(interlace):magic:0:\x89\x50\x4e\x47:.png:PNM:pngtopnm %s:PNM_RAW:pnmtopng -interlace */
++
++# /* DB-Z, SAURUS Freehand Memo, PV-F1 Action Board, Wiz Quick Memo format */
++# /* Use xbm2free-1.10 or later. Old version is NOT a filter. */
++# /* To show version of xbm2free, type "xbm2free" (with no argument). */
++ZAURUS:magic:19:IMG1:.zau:PBM_ASCII:free2pbm:PBM:pbmtoxbm|xbm2free -s -
++DBZ:magic:19:IMG1:.dbz:::PBM:pbmtoxbm|xbm2free -d -
++PVF1:magic:12:IMG1:.pvf1:PBM_ASCII:free2pbm:PBM:pbmtoxbm|xbm2free -v -
++# /* WIZ:magic:19:IMG1:.wiz:::PBM:pbmtoxbm|xbm2free -w - */
++
++
++
++# /* Compress:magic:0:\037\235:.Z:AUTO:uncompress %s:: */
++# /* Gzip:magic:0:\037\213:.gz:AUTO:gunzip %s:: */
++# /* Gzip(old):magic:0:\037\236:.z:AUTO:gunzip %s:: */
++
++# /* MAKI:magic:0:MAKI01A\040:.mki:::: */
++# /* MAKI:magic:0:MAKI01B\040:.mki:::: */
++# /* MAG:magic:0:MAKI02\040\040:.mag:::: */
++# /* Pi:magic:0:Pi:.pi:::: */
++# /* PIC:magic:0:PIC:.pic:::: */
++# /* PIC2:magic:0:P2DT:.p2:::: */
++# /* PhotoCD:magic:0:\xff\xff\xff\xff:.pcd:::: */
++
++# /* PBM(ascii):magic:0:P1:.pbm:::: */
++# /* PGM(ascii):magic:0:P2:.pgm:::: */
++# /* PPM(ascii):magic:0:P3:.ppm:::: */
++# /* PBM(raw):magic:0:P4:.pbm:::: */
++# /* PGM(raw):magic:0:P5:.pgm:::: */
++# /* PPM(raw):magic:0:P6:.ppm:::: */
++
++# /* Sun raster:magic:0:\131\246\152\225:.sun:::: */
++# /* JFIF(JPEG):magic:0:\xff\xd8\xff:.jpg:::: */
++# /* TIFF big-endian:magic:0:\115\115:.tif:::: */
++# /* TIFF little-endian:magic:0:\111\111:.tif:::: */
++# /* GIF(87):magic:0:GIF87a:.gif:::: */
++# /* GIF(89):magic:0:GIF89a:.gif:::: */
++# /* SGI(1):magic:0:\x01\xda:.rgb:::: */
++# /* SGI(2):magic:0:\xda\x01:.rgb:::: */
++# /* XWD:magic:0:\0\0\0\7: :::: */
+diff -u -r --new-file xv-3.10a.orig/xvhips.c xv-3.10a/xvhips.c
+--- xv-3.10a.orig/xvhips.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvhips.c 2005-05-01 01:49:14.000000000 -0500
+@@ -0,0 +1,406 @@
++/*
++ * xvhips.c - load routine for 'HIPS' format pictures
++ *
++ * LoadHIPS(fname, numcols)
++ */
++
++/*
++ * Copyright 1989, 1990 by the University of Pennsylvania
++ *
++ * Permission to use, copy, and distribute for non-commercial purposes,
++ * is hereby granted without fee, providing that the above copyright
++ * notice appear in all copies and that both the copyright notice and this
++ * permission notice appear in supporting documentation.
++ *
++ * The software may be modified for your own purposes, but modified versions
++ * may not be distributed.
++ *
++ * This software is provided "as is" without any express or implied warranty.
++ */
++
++#include "xv.h"
++
++#ifdef HAVE_HIPS
++
++#define Boolean FREDDIE
++#include "xvhips.h"
++#undef Boolean
++
++#include <alloca.h>
++
++#define LINES 100
++#define LINELENGTH 132
++
++static int fread_header(int fd, struct header *hd);
++static char *getline(int fd, char **s, int *l);
++static int dfscanf(int fd);
++static void make_grayscale(char *r, char *g, char *b);
++static float hls_value (float n1, float n2, float hue);
++static void hls_to_rgb(float h, float l, float s,
++ float *r, float *g, float *b);
++static void make_huescale(char *r, char *g, char *b);
++static void make_heatscale(char *r, char *g, char *b);
++static int load_colourmap(char *filestem, int max_colours,
++ char *r, char *g, char *b);
++
++/************************************************************************
++ *
++ * Read Header routines
++ *
++ ************************************************************************/
++
++static char *ssave[LINES];
++static int slmax[LINES];
++static int lalloc = 0;
++//extern char *calloc();
++
++
++
++static int fread_header(fd, hd)
++ int fd;
++ struct header *hd;
++{
++ int lineno, len, i;
++ char *s;
++
++/*fprintf(stderr,"fread_header: entered\n");*/
++ if(lalloc<1) {
++ ssave[0] = calloc(LINELENGTH, sizeof (char));
++ slmax[0] = LINELENGTH;
++ lalloc = 1;
++ }
++/*fprintf(stderr,"fread_header: ssave allocated\n");*/
++ getline(fd,&ssave[0],&slmax[0]);
++ hd->orig_name = calloc(strlen(ssave[0])+1, sizeof (char));
++ strcpy(hd->orig_name,ssave[0]);
++ getline(fd,&ssave[0],&slmax[0]);
++ hd->seq_name = calloc(strlen(ssave[0])+1, sizeof (char));
++ strcpy(hd->seq_name,ssave[0]);
++ hd->num_frame = dfscanf(fd);
++ getline(fd,&ssave[0],&slmax[0]);
++ hd->orig_date = calloc(strlen(ssave[0])+1, sizeof (char));
++ strcpy(hd->orig_date,ssave[0]);
++ hd->rows = dfscanf(fd);
++ hd->cols = dfscanf(fd);
++ hd->bits_per_pixel = dfscanf(fd);
++ hd->bit_packing = dfscanf(fd);
++ hd->pixel_format = dfscanf(fd);
++ lineno = 0;
++ len = 1;
++ getline(fd,&ssave[0],&slmax[0]);
++ s = ssave[0];
++ while(*(s += strlen(s)-3) == '|') {
++ len += strlen(ssave[lineno]);
++ lineno++;
++ if (lineno >= LINES)
++ fprintf(stderr, "Too many lines in header history");
++ if(lineno >= lalloc) {
++ ssave[lineno] = calloc(LINELENGTH, sizeof (char));
++ slmax[lineno] = LINELENGTH;
++ lalloc++;
++ }
++ getline(fd,&ssave[lineno],&slmax[lineno]);
++ s = ssave[lineno];
++ }
++ len += strlen(ssave[lineno]);
++ hd->seq_history = calloc(len, sizeof (char));
++ hd->seq_history[0] = '\0';
++ for (i=0;i<=lineno;i++)
++ strcat(hd->seq_history,ssave[i]);
++ lineno = 0;
++ len = 1;
++ while(strcmp(getline(fd,&ssave[lineno],&slmax[lineno]),".\n")) {
++ len += strlen(ssave[lineno]);
++ lineno++;
++ if (lineno >= LINES)
++ fprintf(stderr, "Too many lines in header desc.");
++ if(lineno >= lalloc) {
++ ssave[lineno] = calloc(LINELENGTH, sizeof (char));
++ slmax[lineno] = LINELENGTH;
++ lalloc++;
++ }
++ }
++ hd->seq_desc = calloc(len, sizeof (char));
++ *hd->seq_desc = '\0';
++ for (i=0;i<lineno;i++)
++ strcat(hd->seq_desc,ssave[i]);
++/*fprintf(stderr,"fread_header: exiting\n");*/
++ return 0;
++}
++
++
++
++static char *getline(fd,s,l)
++ int fd;
++ char **s;
++ int *l;
++{
++ int i,m;
++ char c,*s1,*s2;
++
++ i = 0;
++ s1 = *s;
++ m = *l;
++ while(read(fd,&c,1) == 1 && c != '\n') {
++ if (m-- <= 2) {
++ s2 = calloc(LINELENGTH+*l,sizeof (char));
++ strcpy(s2,*s);
++ *s = s2;
++ *l += LINELENGTH;
++ m = LINELENGTH;
++ s1 = s2 + strlen(s2);
++ }
++ *s1++ = c;
++ }
++ if (c == '\n') {
++ *s1++ = '\n';
++ *s1 = '\0';
++ return *s;
++ }
++ fprintf(stderr, "Unexpected EOF while reading header.");
++ return NULL;
++}
++
++
++
++static int dfscanf(fd)
++ int fd;
++{
++ int i;
++
++ getline(fd,&ssave[0],&slmax[0]);
++ sscanf(ssave[0],"%d",&i);
++ return(i);
++}
++
++
++
++/*******************************************/
++int LoadHIPS(fname,pinfo)
++ char *fname;
++ PICINFO * pinfo;
++/*******************************************/
++{
++ FILE *fp;
++ struct header h;
++ char * pic;
++
++ /* open the stream, if necesary */
++ fp=fopen(fname,"r");
++ if (!fp) return 0;
++
++ if (!fread_header(fileno(fp), &h)) {
++ SetISTR(ISTR_WARNING,"Can't read HIPS header");
++ return 0;
++ }
++
++ pinfo->w = h.cols;
++ pinfo->h = h.rows;
++ pic = pinfo->pic = (byte *) malloc(h.rows * h.cols); // GRR POSSIBLE OVERFLOW / FIXME
++ if (!pic) FatalError("couldn't malloc HIPS file");
++
++ if (!fread(pic, 1, h.cols*h.rows, fp)) {
++ SetISTR(ISTR_WARNING,"Error reading HIPS data.\n");
++ return 0;
++ }
++ fclose (fp);
++
++ pinfo->frmType = F_SUNRAS;
++ pinfo->colType = F_FULLCOLOR;
++ sprintf(pinfo->fullInfo, "HIPS file (%d bytes)", h.cols*h.rows);
++ sprintf(pinfo->shrtInfo, "HIPS file.");
++ pinfo->comment = (char *) NULL;
++
++ {
++ char cmapname[256];
++ /* Check header for colormap spec */
++ char * s = h.seq_desc - 1;
++ char * cmaptag = "+COLORMAP";
++ int sl = strlen(cmaptag);
++ cmapname[0] = 0;
++ while (*++s)
++ if (*s == '+')
++ if (strncmp(s, cmaptag, sl) == 0) {
++ char * p = s + sl;
++ while (*p && (*p == ' ' || *p == '\n' || *p == '\t')) p++;
++ sscanf(p, "%s", cmapname);
++ SetISTR(ISTR_INFO, cmapname);
++ fprintf(stderr, "Colormap = [%s]\n", cmapname);
++ }
++
++ if (strcmp(cmapname, "gray") == 0 || strcmp(cmapname, "grey") == 0)
++ make_grayscale(pinfo->r, pinfo->g, pinfo->b);
++ else if (strcmp(cmapname, "heat") == 0)
++ make_heatscale(pinfo->r, pinfo->g, pinfo->b);
++ else if (strcmp(cmapname, "hues") == 0)
++ make_huescale(pinfo->r, pinfo->g, pinfo->b);
++ else if (!cmapname[0] || !load_colourmap(cmapname, 256, pinfo->r, pinfo->g, pinfo->b))
++ make_grayscale(pinfo->r, pinfo->g, pinfo->b);
++ sprintf(pinfo->fullInfo, "HIPS file (%d x %d), Colormap = [%s]", h.cols, h.rows, cmapname);
++ }
++
++ return 1;
++}
++
++
++
++static void make_grayscale(char * r, char * g, char * b)
++{
++ int i;
++ /* default grayscale colors */
++ r[0] = 40; g[0] = 150; b[0] = 100; /* "green4" background */
++ for(i = 1; i < 256; i++)
++ r[i] = g[i] = b[i] = i;
++}
++
++
++
++static float hls_value (n1, n2, hue)
++ float n1,n2,hue;
++{
++ if (hue>360.0)
++ hue-=360.0 ;
++ else if (hue<0.0)
++ hue+=360.0 ;
++
++ if (hue<60.0)
++ return( n1+(n2-n1)*hue/60.0 ) ;
++ else if (hue<180.0)
++ return ( n2 ) ;
++ else if (hue<240.0)
++ return ( n1+(n2-n1)*(240.0-hue)/60.0 ) ;
++ else
++ return (n1) ;
++}
++
++
++
++static void hls_to_rgb(h,l,s, r,g,b)
++ float h, l, s;
++ float *r, *g, *b;
++{
++ static float m1, m2 ;
++
++ if (l<=0.5)
++ m2=l*(1+s) ;
++ else
++ m2=l+s-l*s ;
++ m1=2.0*l-m2 ;
++ if (s==0.0) *r=*g=*b=l ;
++ else {
++ *r=hls_value(m1,m2,h+120.0) ;
++ *g=hls_value(m1,m2,h) ;
++ *b=hls_value(m1,m2,h-120.0) ;
++ }
++
++}
++
++
++
++static void make_huescale(char * r, char * g, char * b)
++{
++ int j;
++ r[0] = g[0] = b[0] = 0;
++ for (j = 1; j<256; j++)
++ {
++ float fr, fg, fb;
++ hls_to_rgb((double)(256.0-j)*360.0/256.0, 0.5, 1.0, &fr, &fg, &fb);
++ r[j] = rint(255*fr);
++ g[j] = rint(255*fg);
++ b[j] = rint(255*fb);
++ }
++}
++
++
++
++static void make_heatscale(char * r, char * g, char * b)
++{
++ int j;
++ r[0] = g[0] = b[0] = 0;
++ for (j = 1; j<256; j++)
++ {
++ if(j<255/2)
++ r[j] = j*255/(255/2-1);
++ else
++ r[j]=255;
++ if (j>=255/2+255/3)
++ g[j] = 255;
++ else if (j>255/3)
++ g[j] = (j-255/3)*255/(255/2-1);
++ else
++ g[j] = 0;
++ if (j>255/2)
++ b[j] = (j-255/2)*255/(255-255/2-1);
++ else
++ b[j] = 0;
++ }
++}
++
++
++
++static int load_colourmap(char *filestem, int max_colours,
++ char *r, char *g, char *b)
++{
++ FILE * fp;
++ int numread=0;
++ char * filename;
++ char str[200];
++ int num_colors;
++ /*
++ * Look for palette file in local directory
++ */
++
++ filename = (char*)alloca(strlen(filestem) + 5);
++ strcpy(filename, filestem);
++ strcat(filename, ".PAL"); /* Add the PAL suffix to the name specified */
++ fp = fopen(filename,"r");
++ if (!fp) {
++ /*
++ * If not found, try in $IM2HOME/etc/palettes
++ */
++ char * im2home = (char*)getenv("IM2HOME");
++ char * palette_subdirectory = "etc/palettes";
++ char * fullfilename;
++ if (!im2home)
++ {
++ im2home = "/home/jewel/imagine2";
++ fprintf(stderr,"IM2HOME environment variable not set -- using [%s]\n",im2home);
++ }
++ fullfilename = alloca(strlen(im2home)+strlen(palette_subdirectory)+strlen(filename)+5);
++ sprintf(fullfilename, "%s/%s/%s",im2home,palette_subdirectory,filename);
++ fp = fopen(fullfilename,"r");
++ if (!fp)
++ {
++ fprintf(stderr,"Couldn't find any palette file -- looked for [%s] and [%s].\n",
++ filename,fullfilename);
++ perror("Last system error message was");
++ return 0;
++ }
++ }
++
++ strcpy(str,"(null)");
++ if (!fscanf(fp,"%s\n",str) || strncmp(str,"Palette",7) != 0) {
++ fprintf(stderr,"error: First line of palette file should be `Palette', not [%s]\n", str);
++ return 0;
++ }
++
++ fscanf(fp,"%[^\n]",str) ; /* Scan to end of line */
++ fscanf (fp,"%d",&num_colors);/* Read the number of colours in the file */
++ fgets(str,120,fp) ; /* Skip the text description, and general info lines */
++ fgets(str,120,fp) ;
++
++ while ((numread<max_colours)&&(numread<num_colors)) {
++ int rc, gc, bc;
++ fscanf (fp,"%d %d %d -", &rc, &gc, &bc) ; /* Get the (r,g,b) tuples */
++ r[numread] = rc;
++ g[numread] = gc;
++ b[numread] = bc;
++ numread++;
++ fgets(str,120,fp) ; /* Skip the description, if present */
++ }
++
++ SetISTR(ISTR_INFO,"Read %d colors from palette file [%s]", numread, filename);
++ return (numread) ; /* Return the number of colours ACTUALLY READ */
++}
++
++#endif /* HAVE_HIPS */
+diff -u -r --new-file xv-3.10a.orig/xvhips.h xv-3.10a/xvhips.h
+--- xv-3.10a.orig/xvhips.h 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvhips.h 2005-04-25 10:34:14.000000000 -0500
+@@ -0,0 +1,154 @@
++/*
++ * HIPL Picture Header Format Standard
++ *
++ * Michael Landy - 2/1/82
++ */
++
++#define XHEADER
++#ifdef XHEADER
++struct extended {
++ char *name;
++ char *vals;
++ };
++#endif
++
++struct header {
++ char *orig_name; /* The originator of this sequence */
++ char *seq_name; /* The name of this sequence */
++ int num_frame; /* The number of frames in this sequence */
++ char *orig_date; /* The date the sequence was originated */
++ int rows; /* The number of rows in each image */
++ int cols; /* The number of columns in each image */
++ int bits_per_pixel; /* The number of significant bits per pixel */
++ int bit_packing; /* Nonzero if bits were packed contiguously */
++ int pixel_format; /* The format of each pixel, see below */
++ char *seq_history; /* The sequence's history of transformations */
++ char *seq_desc; /* Descriptive information */
++#ifdef XHEADER
++ struct extended *xheader;
++#endif
++};
++
++/*
++ * Pixel Format Codes
++ */
++
++#define PFBYTE 0 /* Bytes interpreted as integers (8 bits) */
++#define PFSHORT 1 /* Short integers (2 bytes) */
++#define PFINT 2 /* Integers (4 bytes) */
++#define PFFLOAT 3 /* Float's (4 bytes)*/
++#define PFCOMPLEX 4 /* 2 Float's interpreted as (real,imaginary) */
++#define PFASCII 5 /* ASCII rep, with linefeeds after each row */
++#define PFDOUBLE 6 /* Double's (8 byte floats) */
++#define PFDBLCOM 7 /* Double complex's (2 Double's) */
++#define PFQUAD 10 /* quad-tree encoding (Mimaging) */
++#define PFQUAD1 11 /* quad-tree encoding */
++#define PFBHIST 12 /* histogram of byte image (using ints) */
++#define PFSPAN 13 /* spanning tree format */
++#define PLOT3D 24 /* plot-3d format */
++#define PFINTPYR 50 /* integer pyramid */
++#define PFFLOATPYR 51 /* float pyramid */
++#define PFPOLYLINE 100 /* 2D points */
++#define PFCOLVEC 101 /* Set of RGB triplets defining colours */
++#define PFUKOOA 102 /* Data in standard UKOOA format */
++#define PFTRAINING 104 /* Set of colour vector training examples */
++#define PFTOSPACE 105 /* TOspace world model data structure */
++#define PFSTEREO 106 /* Stereo sequence (l, r, l, r, ...) */
++#define PFRGPLINE 107 /* 2D points with regions */
++#define PFRGISPLINE 108 /* 2D points with regions and interfaces */
++#define PFCHAIN 200 /* Chain code encoding (Mimaging) */
++#define PFLUT 300 /* LUT format (uses Ints) (Mimaging) */
++#define PFAHC 400 /* adaptive hierarchical encoding */
++#define PFOCT 401 /* oct-tree encoding */
++#define PFBT 402 /* binary tree encoding */
++#define PFAHC3 403 /* 3-d adaptive hierarchical encoding */
++#define PFBQ 404 /* binquad encoding */
++#define PFRLED 500 /* run-length encoding */
++#define PFRLEB 501 /* run-length encoding, line begins black */
++#define PFRLEW 502 /* run-length encoding, line begins white */
++#define PFPOLAR 600 /* rho-theta format (Mimaging) */
++
++/*
++ * Bit packing formats
++ */
++
++#define MSBFIRST 1 /* bit packing - most significant bit first */
++#define LSBFIRST 2 /* bit packing - least significant bit first */
++
++#define FBUFLIMIT 30000 /* increase this if you use large PLOT3D
++ files */
++
++/*
++ * For general readability
++ */
++
++#ifndef TRUE
++# define TRUE 1
++#endif
++
++#ifndef FALSE
++# define FALSE 0
++#endif
++
++typedef long Boolean;
++extern char *strsave(), *memalloc();
++
++/*
++ * image and pyramid type declarations for the pyramid routines.
++ *
++ * The pyramid utilities are derived from code originally written by
++ * Raj Hingorani at SRI/David Sarnoff Research Institute. The original
++ * Gaussian and Laplacian pyramid algorithms were designed by Peter Burt (also
++ * currently at SRI/DSRC). See: Computer Graphics and Image Processing,
++ * Volume 16, pp. 20-51, 1981, and IEEE Transactions on Communications,
++ * Volume COM-31, pp. 532-540, 1983.
++ */
++
++#define MAXLEV 12
++
++
++typedef struct {
++ float **ptr;
++ int nr;
++ int nc;
++} FIMAGE;
++
++typedef struct {
++ int **ptr;
++ int nr;
++ int nc;
++} IIMAGE;
++
++typedef FIMAGE FPYR[MAXLEV];
++typedef IIMAGE IPYR[MAXLEV];
++
++typedef struct {
++ float *k;
++ int taps2; /* the number of taps from the center rightward,
++ total number is 2*taps2-1 */
++} FILTER;
++
++/* function definitions */
++
++float **_read_fimgstr();
++int **_read_iimgstr();
++float **_alloc_fimage();
++int **_alloc_iimage();
++
++/* image macros */
++
++#ifndef MAX
++# define MAX(A,B) ((A) > (B) ? (A) : (B))
++#endif /* MAX */
++#ifndef MIN
++# define MIN(A,B) ((A) < (B) ? (A) : (B))
++#endif /* MIN */
++#ifndef ABS
++# define ABS(A) ((A) > 0 ? (A) : (-(A)))
++#endif /* ABS */
++#ifndef BETWEEN
++# define BETWEEN(A,B,C) (((A) < (B)) ? (B) : (((A) > (C)) ? (C) : (A)))
++#endif /* BETWEEN */
++#ifndef SIGN
++# define SIGN(A,B) (((B) > 0) ? (A) : (-(A)))
++#endif /* SIGN */
+diff -u -r --new-file xv-3.10a.orig/xvjp2k.c xv-3.10a/xvjp2k.c
+--- xv-3.10a.orig/xvjp2k.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvjp2k.c 2007-05-13 20:04:37.000000000 -0500
+@@ -0,0 +1,1326 @@
++/*
++ * xvjp2k.c - I/O subroutines for JPEG 2000 format pictures
++ *
++ * This module is a "shim" between XV and a JPEG 2000 CODEC in the open-source
++ * JasPer Library created by Michael D. Adams; for more information, see the URL
++ * "http://www.ece.uvic.ca/~mdadams/jasper". We don't use most of the other
++ * facilities in this library, so it's better to link XV with a UNIX "archive"
++ * representation of it, not a DLL.
++ *
++ * JPEG 2000 files can be represented in either of two general ways: The
++ * simplest representation is a "code stream", which often has a ".jpc" file
++ * name suffix and is organized much like a classical JPEG file, except that
++ * unfortunately, JPEG 2000 code streams indicate the no. of colors in an image
++ * but no longer give any clues about its color space (e.g., RGB or YCbCr).
++ * Instead, there is now a semantically higher-level representation, which often
++ * has a ".jp2" file name suffix and encapsulates a "code stream" with (possibly
++ * a lot of) color-space information, optionally including things like ICC
++ * correction tables.
++ *
++ * Compared to the IJG JPEG Library used in file "xvjpeg.c", one must solve
++ * several problems for color images when marrying JasPer to XV.
++ *
++ * 1. JPEG 2000 files can represent a wide range of image sizes, resolutions,
++ * and color spaces, not all of which can be easily rendered "as is" on a
++ * normal "X Windows" display, so we must carefully check a decoded image's
++ * parameters in order to reject anything that we can't handle gracefully.
++ *
++ * 2. JasPer prefers to decode/encode images using color-plane "slices", instead
++ * of interleaved pixels needed by "X Windows", so we must (de)interleave
++ * copies of the image buffer here.
++ *
++ * XXX Things to do:
++ *
++ * 1. In "LoadJP{2,C}()" try to handle the "quick" option, which requests
++ * faster loading of a reduced-size image for the visual schnauzer. The
++ * schnauzer's icon size is currently 80x60, so the old "xvjpeg.c" module tries
++ * to produce a 2X (160x120) image. Can we do the same?
++ *
++ * 2. In "StoreJP2K()", JasPer Library Version 1.701 apparently has no API to
++ * let the XV global "picComments" string be inserted in a JPEG 2000 comment
++ * record. If the library ever gets fixed, enhance our code accordingly.
++ *
++ * --Scott Marovich <marovich@hpl.hp.com>, Hewlett-Packard Laboratories,
++ * January 2005.
++ */
++#include "copyright.h"
++
++#define NEEDSARGS
++#include "xv.h"
++
++#ifdef HAVE_JP2K
++
++#include <jasper/jasper.h>
++/* missing prototype in 1.701.0, sigh: */
++jas_stream_t *jas_stream_freopen PARM((const char *, const char *, FILE *));
++
++static const char *fbasename, /* File's base name, for error/warning msgs */
++ bad_samp[] = "%s: can't read %d-plane %s file!",
++ fmode[] = "rb",
++ full_msg[] = "%s %s. (%ld bytes)",
++ jp2_kind[] = "JP2",
++ jpc_kind[] = "JPEG 2000",
++ load_msg[] = "Loading %dx%d %s %s (%ld bytes)...",
++ no_mem[] = "%s: can't read %s file - out of memory",
++ pixel_size[] = "%s: can't display %d-bit pixels!",
++ shrt_msg[] = "%dx%d %s %s. ",
++ truncated[] = "%s: Unexpected end of %s file",
++ read_err[] = "%s: I/O error reading %s file",
++ bad_dims[] = "%s: error in JPEG-2000 header (bad image size)";
++
++/* We only want to override the JasPer Library's "jas_eprintf()" subroutine in
++ order to make it a "wrapper" around XV's own error-reporting subroutine, but
++ because of the way the former is currently packaged in JasPer Library Version
++ 1.701, we must override everything else packaged in the "jas_debug.o" module
++ with it, otherwise we get "duplicate definition" messages from the linker.
++*/
++int jas_getdbglevel(void) {return 0;}
++int jas_setdbglevel(int n) {return 0;}
++int jas_memdump(FILE *fp,void *data,size_t len) {return 0;}
++
++int jas_eprintf(const char *fmt,...) /* Handle JasPer Library message */
++{
++ static char error[] = "error: ", warning[]= "warning: ";
++ va_list ap;
++ int kind = ISTR_WARNING;
++ char buffer[512];
++ register char *p;
++
++ /* Unlike the IJG JPEG Library, the JasPer Library current has no graceful way
++ for an application (= us!) to intercept its diagnostic messages and output
++ them using our own subroutines, so this ugly replacement for its output
++ subroutine will have to suffice. At Version 1.701, lthough the library's
++ own "jas_eprintf()" is a varargs subroutine, all calls currently pass just
++ 1 string with a Line Feed at the end and no "printf(3C)" arguments. Most
++ strings begin with "error: " or "warning: ", although a few have neither.
++ We try to translate these into the format preferred by XV, trimming any
++ trailing Line Feed character (ugh!).
++ */
++ va_start(ap, fmt);
++ vsnprintf(p = buffer,512,fmt,ap);
++ va_end(ap);
++ while (*p++);
++ if (p[-2] == '\n') p[-2] = '\0';
++ p = buffer;
++ if (strncmp(p,error,sizeof error) == 0) /* "error: ... " */
++ {
++ kind = ISTR_WARNING;
++ p += sizeof error;
++ }
++ else /* "warning: ... " */
++ if (strncmp(p,warning,sizeof warning) == 0)
++ {
++ kind = ISTR_INFO;
++ p += sizeof warning;
++ };
++ SetISTR(kind,"%s: %s",fbasename,p);
++ return strlen(fmt);
++}
++
++static char *SetBuf(FILE *f)
++{
++ char *buf;
++ register char *p;
++
++ /* JPEG 2000 image files are apt to be large, but the buffer size allocated by
++ most implementations of the "C" Standard I/O Library is still ridiculously
++ small, typically 1 KB. We want to allocate a much larger buffer for higher
++ I/O efficiency, but the details are unfortunately a bit platform-specific.
++ Under UNIX systems with virtual memory, we want to encourage its internal
++ "physio()" subroutine by making the buffer an integral number of pages,
++ aligned on a page-multiple memory address boundary. Under HP-UX 11.1+ and
++ perhaps other operating-systems, a Standard I/O buffer is preceded by a
++ header whose size must also be taken into account.
++ */
++# ifndef IOBUFSIZ
++# define IOBUFSIZ 65536
++# endif /* IOBUFSIZ */
++# ifdef __hpux
++# define OVERHEAD sizeof(mbstate_t)
++# endif /* __hpux */
++# ifndef OVERHEAD
++# define OVERHEAD 0
++# endif /* OVERHEAD */
++
++# ifdef NBPG
++ if (!(buf = p = malloc(NBPG+OVERHEAD+IOBUFSIZ))) return 0;
++ p = (char *)((unsigned long)p+NBPG-1 & ~(NBPG-1));
++ p -= OVERHEAD;
++# else /* not NBPG */
++ if (!(buf = p = malloc(OVERHEAD+IOBUFSIZ))) return 0;
++ p += OVERHEAD;
++# endif /* NBPG */
++ setvbuf(f,p,_IOFBF,OVERHEAD+IOBUFSIZ);
++ return buf;
++# undef OVERHEAD
++# undef IOBUFSIZ
++}
++
++int LoadJPC(char *fname,register PICINFO *pinfo,int quick)
++{
++ jas_image_t *img;
++ jas_stream_t *str;
++ FILE *fp;
++ char *iobuf;
++ const char *s;
++ unsigned long filesize;
++ long w, h, npixels, bufsize;
++ int ok = 0, vstride;
++ register int i;
++
++ /* Load a JPEG 2000 "code stream" image file into a pixel buffer for XV.
++ Unlike classical JPEG files, they have no clue about the image's color
++ space, so we check for 8-bit data samples but make no effort to check or
++ convert color spaces, and "what you see is what you get". For now, ignore
++ the "quick" option to return a reduced-resolution or -size image. Return 1
++ on success, or 0 on failure.
++ */
++ if (!(fp = xv_fopen(fname,fmode))) return 0;
++ fbasename = BaseName(fname); /* Input file's base name, for message(s) */
++ if (!(iobuf = SetBuf(fp)))
++ {
++ (void)fclose(fp);
++ SetISTR(ISTR_WARNING,no_mem,fbasename,jpc_kind);
++ goto L3;
++ }
++
++ /* Before telling the JasPer Library about this file, get its size for display
++ purposes. Non-UNIX systems don't necessarily simulate "stat(2)", so do it
++ crudely but portably by seeking to the end, then back to the beginning.
++ */
++ fseek(fp,0L,2);
++ filesize = ftell(fp);
++ fseek(fp,0L,0);
++
++ /* "jas_stream_close()" will eventually close the input file, so only do it
++ explicitly if no stream can be created:
++ */
++ if (!(str = jas_stream_freopen(fname,fmode,fp))) /* nice if prototype... */
++ {
++ (void)fclose(fp);
++ goto L3;
++ }
++
++ /* It's not clear to me whether the following represents a JasPer Library "bug"
++ but it sure looks goofy: Unless a stream buffer is marked "read only",
++ which only happens when the stream's "fillbuf" method is called, even though
++ our buffers are always "read only", the library will try to flush out buffer
++ contents when the stream is destroyed, which makes it die a horrible death.
++ So, mark the stream buffer proactively:
++ */
++ str->bufmode_ |= JAS_STREAM_RDBUF; /* We will only read the stream buffer */
++ if (!(img = jpc_decode(str,0))) goto L2;
++ if ((vstride = jas_image_numcmpts(img))) /* num. color planes */
++ {
++
++ /* After the image-component streams created, they are left in a "write"
++ state with the streams' cursors positioned at their ends, so "seek" in
++ order to "read" each stream from its beginning.
++ */
++ i = vstride;
++ while (--i >= 0)
++ if (jas_stream_seek(img->cmpts_[i]->stream_,0L,0))
++ {
++ SetISTR(ISTR_WARNING,read_err,fbasename,jpc_kind);
++ goto L1;
++ }
++ }
++ w = jas_image_width(img);
++ h = jas_image_height(img);
++
++ /* avoid buffer overflow */
++ npixels = w * h;
++ bufsize = vstride * npixels;
++ if (w <= 0 || h <= 0 || npixels/w != h || bufsize/vstride != npixels)
++ {
++ (void)fclose(fp);
++ SetISTR(ISTR_WARNING,bad_dims,fbasename);
++ goto L1;
++ }
++ pinfo->normw = pinfo->w = w;
++ pinfo->normh = pinfo->h = h;
++
++ /* Sanity-check the image's color space and no. of colors. For now, accept
++ only "generic" color spaces, not files needing image-specific color
++ correction, but fix that someday...
++ */
++ switch (vstride)
++ {
++ default:
++ SetISTR(ISTR_WARNING,bad_samp,fbasename,vstride,jpc_kind);
++ goto L1;
++ case 1:
++ if ((i = jas_image_cmptprec(img,0)) != 8) /* not 8-bit pixels */
++ {
++ SetISTR(ISTR_WARNING,pixel_size,fbasename,i);
++ goto L1;
++ }
++ s = "Greyscale";
++ pinfo->type = PIC8;
++ pinfo->colType = F_GREYSCALE;
++ i = 256; /* Return fake indexed-color "map" */
++ while (--i >= 0) pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
++ break;
++ case 3:
++
++ /* BEWARE OF KLUDGE: If the image's color space is RGB, assume that the
++ data-sample precision for all color planes is the
++ same. If the color space is YCbCr, assume the luminance (Y = 0th)
++ component has the greatest precision, although the chrominance
++ (Cr = 1st, Cb = 2nd) components are usually sub-sampled.
++ */
++ if ((i = jas_image_cmptprec(img,0)) != 8) /* not 24-bit pixels */
++ {
++ SetISTR(ISTR_WARNING,pixel_size,fbasename,i*3);
++ goto L1;
++ }
++ s = "Color";
++ pinfo->type = PIC24;
++ pinfo->colType = F_FULLCOLOR;
++
++ /* XXX Unlike the IJG JPEG Library, the JasPer Library is apparently
++ unable to quantize colors or tell us whether the image's colors
++ were quantized by its creator, so it seems that we can't return a
++ color map for XV to potentially use 8-bit indexed color. If there
++ *is* an easy way to do it that escapes me, put the code here someday.
++ */
++ }
++ if (!(pinfo->pic = (byte *)malloc(bufsize))) /* image buffer for XV */
++ {
++ SetISTR(ISTR_WARNING,no_mem,fbasename,jpc_kind);
++ goto L1;
++ }
++ pinfo->frmType = F_JPC;
++ sprintf(pinfo->fullInfo,full_msg,s,jpc_kind,filesize);
++ sprintf(pinfo->shrtInfo,shrt_msg,pinfo->w,pinfo->h,s,jpc_kind);
++ SetISTR(ISTR_INFO,load_msg,pinfo->normw,pinfo->normh,s,jpc_kind,filesize);
++ if (vstride == 1) /* gray-scale image */
++ { register jas_stream_t *c = img->cmpts_[0]->stream_;
++ register byte *p = pinfo->pic;
++
++ /* Since this is a 1-plane image, avoid a lot of errant nonsense in the
++ JasPer Library by sequentially reading all of the data into our buffer
++ directly.
++ */
++ do if ((i = (*c->ops_->read_)(c->obj_,(char *)p,bufsize)) <= 0)
++ {
++ SetISTR(ISTR_WARNING,i < 0 ? read_err : truncated,fbasename,
++ jpc_kind);
++ goto L1;
++ }
++ while ((p += i),(bufsize -= i) > 0);
++ }
++ else /* RGB color image */
++ {
++
++ /* Reading color images is inefficient because JPEG 2000 wants to partition
++ file data into separate image planes (colors), while XV wants data
++ samples from each plane to be interleaved as 3-byte pixels. Apparently
++ the fastest method consists of 3 passes through the XV image buffer,
++ into which we insert the bytes of each component.
++ */
++ i = 0;
++ do /* each color component */
++ { long npix = npixels;
++ register jas_stream_t *c = img->cmpts_[i]->stream_;
++ register byte *p = pinfo->pic + i;
++
++ do /* each pixel */
++ { register int b;
++
++ if ((b = jas_stream_getc(c)) < 0)
++ {
++ SetISTR(ISTR_WARNING,
++ (c->flags_ & JAS_STREAM_EOF) ? truncated : read_err,
++ fbasename,jpc_kind);
++ goto L1;
++ }
++ *p = b;
++ }
++ while ((p += 3),--npix > 0);
++ }
++ while (++i <= 2);
++ }
++ ok = 1; /* Success! */
++L1: jas_image_destroy(img);
++L2: (void)jas_stream_close(str);
++ free(iobuf);
++L3: return ok;
++}
++
++int LoadJP2(char *fname,register PICINFO *pinfo,int quick)
++{
++ jas_image_t *img;
++ jas_stream_t *str;
++ FILE *fp;
++ char *iobuf;
++ const char *s;
++ unsigned long filesize;
++ long w, h, npixels, bufsize;
++ int ok = 0, vstride;
++ register int i;
++
++ /* Load a JPEG 2000 JP2 image file into a pixel buffer for XV, doing any
++ necessary color-space conversion to end up with 8-bit gray scale or 24-bit
++ RGB. For now, ignore the "quick" option to return a reduced-resolution
++ or -size image. Return 1 on success, or 0 on failure.
++ */
++ if (!(fp = xv_fopen(fname,fmode))) return 0;
++ fbasename = BaseName(fname); /* Input file's base name, for message(s) */
++ if (!(iobuf = SetBuf(fp)))
++ {
++ (void)fclose(fp);
++ SetISTR(ISTR_WARNING,no_mem,fbasename,jpc_kind);
++ goto L3;
++ }
++
++ /* Before telling the JasPer Library about this file, get its size for display
++ purposes. Non-UNIX systems don't necessarily simulate "stat(2)", so do it
++ crudely but portably by seeking to the end, then back to the beginning.
++ */
++ fseek(fp,0L,2);
++ filesize = ftell(fp);
++ fseek(fp,0L,0);
++
++ /* "jas_stream_close()" will eventually close the input file, so only do it
++ explicitly if no stream can be created:
++ */
++ if (!(str = jas_stream_freopen(fname,fmode,fp)))
++ {
++ (void)fclose(fp);
++ goto L3;
++ }
++
++ /* It's not clear to me whether the following represents a JasPer Library "bug"
++ but it sure looks goofy: Unless a stream buffer is marked "read only",
++ which only happens when the stream's "fillbuf" method is called, even though
++ our buffers are always "read only", the library will try to flush out buffer
++ contents when the stream is destroyed, which makes it die a horrible death.
++ So, mark the stream buffer proactively:
++ */
++ str->bufmode_ |= JAS_STREAM_RDBUF; /* We will only read the stream buffer */
++ if (!(img = jp2_decode(str,0))) goto L2;
++ if ((vstride = jas_image_numcmpts(img))) /* num. color planes */
++ {
++
++ /* After the image-component streams created, they are left in a "write"
++ state with the streams' cursors positioned at their ends, so "seek" in
++ order to "read" each stream from its beginning.
++ */
++ i = vstride;
++ while (--i >= 0)
++ if (jas_stream_seek(img->cmpts_[i]->stream_,0L,0))
++ {
++ SetISTR(ISTR_WARNING,read_err,fbasename,jp2_kind);
++ goto L1;
++ }
++ }
++ w = jas_image_width(img);
++ h = jas_image_height(img);
++
++ /* avoid buffer overflow */
++ npixels = w * h;
++ bufsize = vstride * npixels;
++ if (w <= 0 || h <= 0 || npixels/w != h || bufsize/vstride != npixels)
++ {
++ (void)fclose(fp);
++ SetISTR(ISTR_WARNING,bad_dims,fbasename);
++ goto L1;
++ }
++ pinfo->normw = pinfo->w = w;
++ pinfo->normh = pinfo->h = h;
++
++ /* Sanity-check the image's color space and no. of colors. For now, accept
++ only "generic" color spaces, not files needing image-specific color
++ correction, but fix that someday...
++ */
++ switch (vstride)
++ { static char color_space[]={"%s: invalid color space!"};
++
++ default:
++ SetISTR(ISTR_WARNING,bad_samp,fbasename,vstride,jp2_kind);
++ goto L1;
++ case 1:
++ if ( !jas_clrspc_isunknown(i = jas_image_clrspc(img))
++ && jas_clrspc_fam(i) != JAS_CLRSPC_FAM_GRAY
++ )
++ {
++ SetISTR(ISTR_WARNING,color_space,fbasename);
++ goto L1;
++ }
++ if ((i = jas_image_cmptprec(img,0)) != 8) /* not 8-bit pixels */
++ {
++ SetISTR(ISTR_WARNING,pixel_size,fbasename,i);
++ goto L1;
++ }
++ s = "Greyscale";
++ pinfo->type = PIC8;
++ pinfo->colType = F_GREYSCALE;
++ i = 256; /* Return fake indexed-color "map" */
++ while (--i >= 0) pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
++ break;
++ case 3:
++ if (jas_clrspc_isunknown(i = jas_image_clrspc(img)))
++ {
++ SetISTR(ISTR_WARNING,color_space,fbasename);
++ goto L1;
++ }
++ if (jas_clrspc_fam(i) != JAS_CLRSPC_FAM_RGB)
++ { jas_image_t *oimg;
++ jas_cmprof_t *profile;
++
++ /* Here's where the JasPer Library really shines. The only color
++ space that XV handles is RGB, so if that's not what our image
++ uses, then to quote Capt. Kirk: "Make it so!"
++ */
++ if (!(profile = jas_cmprof_createfromclrspc(JAS_CLRSPC_SRGB)))
++ {
++ SetISTR(ISTR_WARNING,"%s: can't create RGB profile",
++ fbasename);
++ goto L1;
++ }
++ img = jas_image_chclrspc( oimg = img
++ , profile
++ , JAS_CMXFORM_INTENT_PER
++ );
++ jas_cmprof_destroy(profile);
++ if (!img) /* Oops! We failed, so restore original image */
++ {
++ img = oimg;
++ SetISTR(ISTR_WARNING,"%s: can't convert to RGB",fbasename);
++ goto L1;
++ }
++ jas_image_destroy(oimg);
++ }
++
++ /* BEWARE OF KLUDGE: If the image's color space is RGB, assume that the
++ data-sample precision for all color planes is the
++ same. If the color space is YCbCr, assume the luminance (Y = 0th)
++ component has the greatest precision, although the chrominance
++ (Cr = 1st, Cb = 2nd) components are usually sub-sampled.
++ */
++ if ((i = jas_image_cmptprec(img,0)) != 8) /* not 24-bit pixels */
++ {
++ SetISTR(ISTR_WARNING,pixel_size,fbasename,i*3);
++ goto L1;
++ }
++ s = "Color";
++ pinfo->type = PIC24;
++ pinfo->colType = F_FULLCOLOR;
++
++ /* XXX Unlike the IJG JPEG Library, the JasPer Library is apparently
++ unable to quantize colors or tell us whether the image's colors
++ were quantized by its creator, so it seems that we can't return a
++ color map for XV to potentially use 8-bit indexed color. If there
++ *is* an easy way to do it that escapes me, put the code here someday.
++ */
++ }
++ if (!(pinfo->pic = (byte *)malloc(bufsize))) /* image buffer for XV */
++ {
++ SetISTR(ISTR_WARNING,no_mem,fbasename,jp2_kind);
++ goto L1;
++ }
++ pinfo->frmType = F_JP2;
++ sprintf(pinfo->fullInfo,full_msg,s,jp2_kind,filesize);
++ sprintf(pinfo->shrtInfo,shrt_msg,pinfo->w,pinfo->h,s,jp2_kind);
++ SetISTR(ISTR_INFO,load_msg,pinfo->normw,pinfo->normh,s,jp2_kind,filesize);
++ if (vstride == 1) /* gray-scale image */
++ { register jas_stream_t *c = img->cmpts_[0]->stream_;
++ register byte *p = pinfo->pic;
++
++ /* Since this is a 1-plane image, avoid a lot of errant nonsense in the
++ JasPer Library by sequentially reading all of the data into our buffer
++ directly.
++ */
++ do if ((i = (*c->ops_->read_)(c->obj_,(char *)p,bufsize)) <= 0)
++ {
++ SetISTR(ISTR_WARNING,i < 0 ? read_err : truncated,fbasename,
++ jp2_kind);
++ goto L1;
++ }
++ while ((p += i),(bufsize -= i) > 0);
++ }
++ else /* RGB color image */
++ {
++
++ /* Reading color images is inefficient because JPEG 2000 wants to partition
++ file data into separate image planes (colors), while XV wants data
++ samples from each plane to be interleaved as 3-byte pixels. Apparently
++ the fastest method consists of 3 passes through the XV image buffer,
++ into which we insert the bytes of each component.
++ */
++ i = 0;
++ do /* each color component */
++ { long npix = npixels;
++ register jas_stream_t *c = img->cmpts_[i]->stream_;
++ register byte *p = pinfo->pic + i;
++
++ do /* each pixel */
++ { register int b;
++
++ if ((b = jas_stream_getc(c)) < 0)
++ {
++ SetISTR(ISTR_WARNING,
++ (c->flags_ & JAS_STREAM_EOF) ? truncated : read_err,
++ fbasename,jp2_kind);
++ goto L1;
++ }
++ *p = b;
++ }
++ while ((p += 3),--npix > 0);
++ }
++ while (++i <= 2);
++ }
++ ok = 1; /* Success! */
++L1: jas_image_destroy(img);
++L2: (void)jas_stream_close(str);
++ free(iobuf);
++L3: return ok;
++}
++
++/* The following variables and subroutines are used when writing a JPEG 2000
++ file, which is done mainly using call-backs from "X Windows" widgets. The
++ most complicated part of this interface is: managing interactions with a
++ window to request the boat-loads of options that the JasPer Library supports.
++ Start by defining subwindow sizes, plus indices into several arrays of
++ corresponding widget-state variables.
++
++ IMPLEMENTATION NOTES: The following dimensions create a tall, thin window
++ which appears to have considerable empty space at the
++ bottom. Before you complain, click the Precinct Height menu button in order
++ to the tall pop-up subwindow that it generates. If the parent window is made
++ shorter, then this pop-up will be clipped, which is an ugly nuisance. I
++ don't know how to make the pop-up visible outside its parent's borders; do
++ you? If there's some way to make "X Windows" do this, then we might consider
++ making the parent shorter.
++
++ Note that there is currently no mechanism to program the no. of intermediate
++ layers used by the encoder, or their rates. This is potentially a large and
++ complicated data-entry problem, and perhaps someday we can invent a clever
++ solution using the rest of the parent window's space.
++*/
++# define JP2KW 275 /* Window width, in pixels */
++# define JP2KH 400 /* Window height, in pixels */
++# define BUTTW 51 /* Button width, in pixels (odd for half-toning) */
++# define BUTTH 20 /* Button height, in pixels */
++# define MENUW 75 /* Menu-button width, in pixels (odd for half-toning) */
++# define MENUH 24 /* Menu-button height, in pixels */
++# define RBUTH 20 /* Radio button height, in pixels */
++# define RBUTW 51 /* Radio button width, in pixels (odd for half-toning) */
++# define TEXTH (LINEHIGH+5) /* Text subwindow height, in pixels */
++# define TEXTW 75 /* Text subwindow width, in pixels */
++
++# define J_BOK 0 /* Boolean "Ok" button */
++# define J_BCANC 1 /* Boolean "Cancel" button */
++# define J_NBUTT 2 /* No. of regular button widgets */
++
++# define J_CSOP 0 /* Boolean encoding-style option buttons */
++# define J_CEPH 1
++# define J_CLAZY 2
++# define J_CTERM 3
++# define J_CSEGS 4
++# define J_CVCAU 5
++# define J_CPTRM 6
++# define J_CRSTP 7
++# define J_NCHKB 8 /* No. of check-box button widgets */
++
++# define J_MCBXW 0 /* 1-of-N menu-selection buttons */
++# define J_MCBXH 1
++# define J_MPREW 2
++# define J_MPREH 3
++# define J_MPROG 4
++# define J_NMENU 5 /* No. of menu-button widgets */
++
++# define J_TGBIT 0 /* (Unsigned numeric) string subwindows */
++# define J_TRES 1
++# define J_TRATE 2
++# define J_NTEXT 3 /* No. of text subwindows */
++
++static BUTT button[J_NBUTT];
++static CBUTT chkbut[J_NCHKB];
++static MBUTT menu[J_NMENU];
++static RBUTT *radio;
++static Window text[J_NTEXT];
++static int colorType, format, textval[J_NTEXT];
++static const char *ProgList[]={"lrcp","rlcp","rpcl","pcrl","cprl"};
++
++void CreateJP2KW(void)
++{
++ static const char EXP2_0[] ={ "1"}, /* Successive powers of 2 */
++ EXP2_1[] ={ "2"},
++ EXP2_2[] ={ "4"},
++ EXP2_3[] ={ "8"},
++ EXP2_4[] ={ "16"},
++ EXP2_5[] ={ "32"},
++ EXP2_6[] ={ "64"},
++ EXP2_7[] ={ "128"},
++ EXP2_8[] ={ "256"},
++ EXP2_9[] ={ "512"},
++ EXP2_10[]={ "1024"},
++ EXP2_11[]={ "2048"},
++ EXP2_12[]={ "4096"},
++ EXP2_13[]={ "8192"},
++ EXP2_14[]={"16384"},
++ EXP2_15[]={"32768"};
++ static const char *CBoxList[]=
++ {
++ EXP2_1 ,EXP2_2 ,EXP2_3 ,EXP2_4 ,EXP2_5,EXP2_6 ,EXP2_7 ,EXP2_8 ,EXP2_9,
++ EXP2_10,EXP2_11
++ };
++ static const char *PrecList[]=
++ {
++ EXP2_0,EXP2_1,EXP2_2 ,EXP2_3 ,EXP2_4 ,EXP2_5 ,EXP2_6 ,EXP2_7 ,
++ EXP2_8,EXP2_9,EXP2_10,EXP2_11,EXP2_12,EXP2_13,EXP2_14,EXP2_15
++ };
++ static const char hstr[]={"Height"}, wstr[]={"Width"};
++
++ if (!(jp2kW = CreateWindow( "xvjp2k"
++ , "XVjp2k"
++ , 0
++ , JP2KW
++ , JP2KH
++ , infofg
++ , infobg
++ , 0
++ )
++ )
++ ) FatalError("can't create JPEG 2000 window!");
++ XSelectInput(theDisp,jp2kW,ExposureMask|ButtonPressMask|KeyPressMask);
++
++ /* Create a row of 2 boolean-valued, regular buttons ("Ok" and "Cancel") in the
++ window's bottom right corner.
++ */
++ BTCreate(&button[J_BOK ],jp2kW,
++ JP2KW-2*BUTTW-20,JP2KH-10-BUTTH-1,BUTTW,BUTTH,
++ "Ok" ,infofg,infobg,hicol,locol);
++ BTCreate(&button[J_BCANC],jp2kW,
++ JP2KW- BUTTW-10,JP2KH-10-BUTTH-1,BUTTW,BUTTH,
++ "Cancel",infofg,infobg,hicol,locol);
++
++ /* Create a vertical column of 8 boolean-valued, check-box buttons (for
++ encoding-style options) down the window's left side.
++ */
++ CBCreate(&chkbut[J_CSOP] ,jp2kW,
++ 10,10+ASCENT+SPACING+2*LINEHIGH+0*BUTTH,
++ "sop" ,infofg,infobg,hicol,locol);
++ CBCreate(&chkbut[J_CEPH] ,jp2kW,
++ 10,10+ASCENT+SPACING+2*LINEHIGH+1*BUTTH,
++ "eph" ,infofg,infobg,hicol,locol);
++ CBCreate(&chkbut[J_CLAZY],jp2kW,
++ 10,10+ASCENT+SPACING+2*LINEHIGH+2*BUTTH,
++ "lazy" ,infofg,infobg,hicol,locol);
++ CBCreate(&chkbut[J_CTERM],jp2kW,
++ 10,10+ASCENT+SPACING+2*LINEHIGH+3*BUTTH,
++ "termall" ,infofg,infobg,hicol,locol);
++ CBCreate(&chkbut[J_CSEGS],jp2kW,
++ 10,10+ASCENT+SPACING+2*LINEHIGH+4*BUTTH,
++ "segsym" ,infofg,infobg,hicol,locol);
++ CBCreate(&chkbut[J_CVCAU],jp2kW,
++ 10,10+ASCENT+SPACING+2*LINEHIGH+5*BUTTH,
++ "vcausal" ,infofg,infobg,hicol,locol);
++ CBCreate(&chkbut[J_CPTRM],jp2kW,
++ 10,10+ASCENT+SPACING+2*LINEHIGH+6*BUTTH,
++ "pterm" ,infofg,infobg,hicol,locol);
++ CBCreate(&chkbut[J_CRSTP],jp2kW,
++ 10,10+ASCENT+SPACING+2*LINEHIGH+7*BUTTH,
++ "resetprob",infofg,infobg,hicol,locol);
++ /* Create text subwindows for unsigned decimal integer values. */
++
++ text[J_TGBIT] = XCreateSimpleWindow(theDisp,jp2kW,
++ JP2KW-TEXTW-10,10+ASCENT+SPACING+2*LINEHIGH+3*MENUH+0*TEXTH,TEXTW,TEXTH,
++ 1,infofg,infobg);
++ XSelectInput(theDisp,text[J_TGBIT],ExposureMask|KeyPressMask);
++ text[J_TRES ] = XCreateSimpleWindow(theDisp,jp2kW,
++ JP2KW-TEXTW-10,10+ASCENT+SPACING+2*LINEHIGH+3*MENUH+1*TEXTH,TEXTW,TEXTH,
++ 1,infofg,infobg);
++ XSelectInput(theDisp,text[J_TRES ],ExposureMask|KeyPressMask);
++ text[J_TRATE] = XCreateSimpleWindow(theDisp,jp2kW,
++ JP2KW-TEXTW-10,10+ASCENT+SPACING+2*LINEHIGH+3*MENUH+2*TEXTH,TEXTW,TEXTH,
++ 1,infofg,infobg);
++ XSelectInput(theDisp,text[J_TRATE],ExposureMask|KeyPressMask);
++
++ /* Create a row of 2 boolean-valued radio buttons (for the "Rate" subwindow
++ value's unit of measure). The 1st button is "selected" by default.
++ */
++ radio = RBCreate(0,jp2kW,
++ JP2KW-19*RBUTW/8-10,10+ASCENT+SPACING+2*LINEHIGH+3*MENUH+3*TEXTH+4,
++ "Percent",infofg,infobg,hicol,locol);
++ (void)RBCreate(radio,jp2kW,
++ JP2KW-1*RBUTW-10 ,10+ASCENT+SPACING+2*LINEHIGH+3*MENUH+3*TEXTH+4,
++ "Bytes",infofg,infobg,hicol,locol);
++
++ /* Create pop-up menu-selection buttons after mapping the above subwindows,
++ since we don't want the pop-up menus mapped unless the corresponding button
++ is selected.
++ */
++ XMapSubwindows(theDisp,jp2kW);
++ MBCreate(&menu[J_MCBXW],jp2kW,
++ JP2KW-2*MENUW-10,10+ASCENT+SPACING+2*LINEHIGH+0*MENUH,MENUW,MENUH,
++ wstr ,CBoxList,sizeof CBoxList/sizeof *CBoxList,infofg,infobg,
++ hicol,locol);
++ MBCreate(&menu[J_MCBXH],jp2kW,
++ JP2KW-2*MENUW-10,10+ASCENT+SPACING+2*LINEHIGH+1*MENUH,MENUW,MENUH,
++ hstr ,CBoxList,sizeof CBoxList/sizeof *CBoxList,infofg,infobg,
++ hicol,locol);
++ MBCreate(&menu[J_MPREW],jp2kW,
++ JP2KW-1*MENUW-10,10+ASCENT+SPACING+2*LINEHIGH+0*MENUH,MENUW,MENUH,
++ wstr ,PrecList,sizeof PrecList/sizeof *PrecList,infofg,infobg,
++ hicol,locol);
++ MBCreate(&menu[J_MPREH],jp2kW,
++ JP2KW-1*MENUW-10,10+ASCENT+SPACING+2*LINEHIGH+1*MENUH,MENUW,MENUH,
++ hstr ,PrecList,sizeof PrecList/sizeof *PrecList,infofg,infobg,
++ hicol,locol);
++ MBCreate(&menu[J_MPROG],jp2kW,
++ JP2KW-1*MENUW-10,10+ASCENT+SPACING+2*LINEHIGH+2*MENUH,MENUW,MENUH,
++ "Order",ProgList,sizeof ProgList/sizeof *ProgList,infofg,infobg,
++ hicol,locol);
++
++ /* Initialize values represented by widgets, which should correspond to default
++ compiled into the JasPer Library. Unfortunately, as of Version 1.701 there
++ is no easy way for an application to extract these from the library, so the
++ following code might get out of sync over time:
++ */
++ menu[J_MCBXW].hascheck = 1; menu[J_MCBXW].flags[ 5] = 1;
++ menu[J_MCBXH].hascheck = 1; menu[J_MCBXH].flags[ 5] = 1;
++ menu[J_MPREW].hascheck = 1; menu[J_MPREW].flags[15] = 1;
++ menu[J_MPREH].hascheck = 1; menu[J_MPREH].flags[15] = 1;
++ menu[J_MPROG].hascheck = 1; menu[J_MPROG].flags[ 0] = 1;
++ textval[J_TGBIT] = 2; /* No. of guard bits */
++ textval[J_TRES ] = 6; /* Max. no. of resolution levels */
++ textval[J_TRATE] = 100; /* Rate = 100% */
++}
++
++void JP2KSaveParams(int fmt,char *fname,int col) /* Save output-file parms */
++{
++ format = fmt; /* Desired file format: F_JPC|F_JP2 */
++ fbasename = fname; /* ->Output file path */
++ colorType = col; /* Desired color space: F_GREYSCALE|... */
++}
++
++static void StoreJP2K(char *options)
++{
++ static jas_image_cmptparm_t parm[3]= /* Image parameters */
++ {{0,0,1,1,0,0,8,0},{0,0,1,1,0,0,8,0},{0,0,1,1,0,0,8,0}};
++ static char nomem[]={"StoreJP2K: out of memory\n"},
++ write[]={"w"};
++ jas_image_t *img;
++ jas_stream_t *str;
++ FILE *fp, *fp2;
++ byte *pic, *r, *g, *b;
++ const char *filename;
++ char *iobuf = 0;
++ unsigned long imagesize;
++ jas_clrspc_t color_space;
++ int nc, w, h, pfree, ptype, error = 1;
++ register int i;
++
++ /* This is a generic subroutine for writing JPEG 2000 image files using the
++ JasPer Library. Our argument is an ASCII string, containing a Space (" ")-
++ separated sequence of encoder options that currently aren't well documented.
++ Most of the work is identical for both ".jpc" and ".jp2" files. Start by
++ verifying that the output file can be opened, then get an image buffer from
++ XV and begin crunching it into a suitable form for the JasPer Library.
++ */
++ if (!(fp = OpenOutFile(filename = fbasename))) return; /* Oops! */
++ setbuf(fp,0); /* We don't really use this file pointer for I/O; see below */
++ fbasename = BaseName(filename);
++ WaitCursor();
++ pic = GenSavePic(&ptype,&w,&h,&pfree,&nc,&r,&g,&b);
++ imagesize = w*h;
++ if (ptype == PIC24) imagesize *= 3;
++
++ /* As an optimization to save file space, even if our user didn't ask to store
++ a gray-scale image, check whether we could and, if so, do it anyway.
++ */
++ if (colorType != F_GREYSCALE) /* can we force a gray-scale image? */
++ {
++ if (ptype == PIC8)
++ {
++ i = nc;
++ while (--i >= 0 && r[i] == g[i] && r[i] == b[i]);
++ }
++ else /* PIC24 */
++ { register byte *p = pic + imagesize;
++
++ while ((p -= 3) >= pic && p[0] == p[1] && p[0] == p[2]);
++ i = p-pic;
++ };
++ if (i < 0) colorType = F_GREYSCALE; /* We made it all the way through */
++ };
++
++ /* If XV is currently color-mapping the image, make a color-mapped copy so that
++ the map needn't be transmitted in the output file.
++ */
++ if ((i = (colorType != F_GREYSCALE) << 1 | (ptype != PIC8)) != 3)
++ { byte *tmp = pic, *last = pic + imagesize;
++ register byte *from = tmp, *to = pic;
++
++ if (!(pic = (byte *)malloc(imagesize))) FatalError(nomem);
++ switch (i)
++ {
++
++ /* Color-map 8->8 bit image. */
++
++ case 0: do
++ {
++ i = *from;
++ *to++ = MONO(r[i],g[i],b[i]);
++ }
++ while (++from < last);
++ break;
++
++ /* Color-map 24->8 bit image. */
++
++ case 1: do *to++ = MONO(from[0],from[1],from[2]);
++ while ((from += 3) < last);
++ break;
++
++ /* Color-map 8->24 bit image. */
++
++ case 2: do
++ {
++ i = *from;
++ *to++ = r[i]; *to++ = g[i]; *to++ = b[i];
++ }
++ while (++from < last);
++ break;
++ };
++ if (pfree) free(tmp); /* Release the original image buffer if we can */
++ pfree = 1; /* Let the modified buffer be released later */
++ };
++
++ /* Initialize various image-file parameter variables. */
++
++ parm[0].width = w;
++ parm[0].height = h;
++ if (colorType == F_GREYSCALE) /* gray-scale image */
++ {
++ ptype = 1; /* No. of color planes */
++ color_space = JAS_CLRSPC_SGRAY;
++ }
++ else /* RGB color image */
++ {
++ ptype = 3; /* No. of color planes */
++ color_space = JAS_CLRSPC_SRGB;
++ parm[2].width = parm[1].width = parm[0].width;
++ parm[2].height = parm[1].height = parm[0].height;
++ };
++
++ /* Now comes a egregious hack: The JasPer Library will eventually want to
++ close the output file that it writes, but since XV opened the file, XV also
++ thinks it has the right to close the file! In order to pacify them both,
++ we duplicate the file pointer and let the JasPer Library have it, while we
++ retain the original for XV.
++
++ XXX This code is very UNIX-specific; what's an equivalent hack for Windows?
++ */
++ if (!(fp2 = (i = dup(fileno(fp))) >= 0 ? fdopen(i,write) : 0))
++ FatalError("StoreJP2K: can't duplicate output file pointer\n");
++ if (!(iobuf = SetBuf(fp2)))
++ {
++ (void)fclose(fp2);
++ FatalError(nomem);
++ };
++
++ /* Hand our output file to the JasPer Library and create an image object.
++ "jas_stream_close()" will eventually close our output file, so only do it
++ explicitly if no stream can be created. If everything looks copacetic,
++ then write our buffer contents to the image components' streams.
++ */
++ if (!(str = jas_stream_freopen(filename,write,fp2)))
++ {
++ (void)fclose(fp2);
++ FatalError("StoreJP2K: can't open output stream\n");
++ };
++ if (!(img = jas_image_create(ptype,parm,color_space))) goto L2;
++ if (ptype == 1)
++ { register jas_stream_t *c = img->cmpts_[0]->stream_;
++ register byte *p = pic;
++
++ /* Since this is a 1-plane image, avoid a lot of errant nonsense in the
++ JasPer Library by sequentially writing all of the data directly from our
++ buffer.
++ */
++ jas_image_setcmpttype(img,0,JAS_IMAGE_CT_GRAY_Y);
++ img->cmpts_[0]->type_ = JAS_IMAGE_CT_GRAY_Y;
++ do if ((i = (*c->ops_->write_)(c->obj_,(char *)p,imagesize)) <= 0)
++ goto L1;
++ while ((p += i),(imagesize -= i) > 0);
++ if (jas_stream_flush(c) < 0) goto L1;
++ }
++ else /* RGB color image */
++ {
++
++ /* Writing color images is inefficient because JPEG 2000 wants to partition
++ file data into separate image planes (colors), while XV wants data
++ samples from each plane to be interleaved as 3-byte pixels. Apparently
++ the fastest method consists of 3 passes through the XV image buffer,
++ from which we extract the bytes of each component.
++ */
++ i = 0;
++ do /* each color component */
++ { long npix = imagesize/3;
++ register jas_stream_t *c = img->cmpts_[i]->stream_;
++ register byte *p = pic + i;
++
++ jas_image_setcmpttype(img,i,i+JAS_IMAGE_CT_RGB_R);
++ do if (jas_stream_putc(c,*p) < 0) goto L1;
++ while ((p += 3),--npix > 0);
++ if (jas_stream_flush(c) < 0) goto L1;
++ }
++ while (++i <= 2);
++ };
++ if ( (*(format == F_JPC ? jpc_encode : jp2_encode))(img,str,options) >= 0
++ && jas_stream_flush(str) >= 0
++ ) error = 0; /* Success! */
++L1: jas_image_destroy(img);
++L2: (void)jas_stream_close(str);
++ if (iobuf) free(iobuf);
++ if (pfree) free(pic);
++ if (!CloseOutFile(fp,filename,error)) DirBox(0);
++ SetCursors(-1);
++}
++
++void JP2KDialog(int vis)
++{
++ if ((jp2kUp = vis)) CenterMapWindow(jp2kW,0,0,JP2KW,JP2KH);
++ else XUnmapWindow(theDisp,jp2kW);
++}
++
++static void TWRedraw(Window w,unsigned int val)
++{
++ char buf[11];
++ register int i;
++
++ /* Draw a 1-line numeric text string in the specified window, representing the
++ argument value as a left-justified unsigned decimal integer, followed by a
++ "cursor" icon.
++ */
++ sprintf(buf,"%u",val);
++ if (ctrlColor) XClearArea(theDisp,w,2,2,TEXTW-4,TEXTH-4,False);
++ else XClearWindow(theDisp,w);
++ Draw3dRect(w,0,0,TEXTW-1,TEXTH-1,R3D_IN,2,hicol,locol,infobg);
++ XSetForeground(theDisp,theGC,infofg);
++ XDrawString(theDisp,w,theGC,3,ASCENT+3,buf,i = strlen(buf));
++
++ /* Draw a "cursor" icon after the numeric string. */
++
++ i = XTextWidth(mfinfo,buf,i);
++ XDrawLine(theDisp,w,theGC,i+3,2 ,i+3,2+CHIGH+1);
++ XDrawLine(theDisp,w,theGC,i+3,2+CHIGH+1,i+5,2+CHIGH+3);
++ XDrawLine(theDisp,w,theGC,i+3,2+CHIGH+1,i+1,2+CHIGH+3);
++}
++
++int JP2KCheckEvent(register XEvent *xev)
++{
++ int ok = 0;
++
++ /* Check whether the argument "X Windows" event is for one of our subwindows.
++ If it is, handle the event and return 1; otherwise, return 0.
++ */
++ if (!jp2kUp) return 0;
++ switch (xev->type)
++ { KeySym ks;
++ int len;
++ char buf[128];
++ register int i;
++
++ /* Throw away excess "expose" events for "dumb" windows. */
++
++ case Expose :
++# define E ((XExposeEvent *)xev)
++ if (E->window == jp2kW)
++ { XRectangle rect;
++
++ rect.x = E->x ; rect.y = E->y ;
++ rect.width = E->width; rect.height = E->height;
++ XSetClipRectangles(theDisp,theGC,0,0,&rect,1,Unsorted);
++ XSetForeground(theDisp,theGC,infofg);
++ XSetBackground(theDisp,theGC,infobg);
++ i = sizeof button/sizeof *button;
++ while (--i >= 0) BTRedraw(&button[i]);
++ i = sizeof chkbut/sizeof *chkbut;
++ while (--i >= 0) CBRedraw(&chkbut[i]);
++ i = sizeof menu/sizeof *menu;
++ while (--i >= 0) MBRedraw(&menu[i]);
++ RBRedraw(radio,-1);
++ DrawString(jp2kW,10,10+ASCENT,"Save JPEG 2000 File...");
++ DrawString(jp2kW,10,10+ASCENT+2*LINEHIGH,"Style options:");
++ DrawString(jp2kW,JP2KW-2*MENUW-10,10+ASCENT+2*LINEHIGH,
++ "Coding Blk");
++ DrawString(jp2kW,JP2KW-1*MENUW-10,10+ASCENT+2*LINEHIGH,
++ " Precinct");
++ DrawString(jp2kW,
++ JP2KW-2*MENUW-10,10+ASCENT+SPACING+3*LINEHIGH+2*MENUH,
++ "Progression:");
++ DrawString(jp2kW,
++ JP2KW-2*TEXTW-10,10+ASCENT+SPACING+3*LINEHIGH+3*MENUH+0*TEXTH,
++ "Guard bits:");
++ DrawString(jp2kW,
++ JP2KW-2*TEXTW-10,10+ASCENT+SPACING+3*LINEHIGH+3*MENUH+1*TEXTH,
++ "Res levels:");
++ DrawString(jp2kW,
++ JP2KW-2*TEXTW-10,10+ASCENT+SPACING+3*LINEHIGH+3*MENUH+2*TEXTH,
++ "Rate:");
++ XSetClipMask(theDisp,theGC,None);
++ ok = 1;
++ break;
++ };
++ i = sizeof text/sizeof *text;
++ while (--i >= 0 && E->window != text[i]);
++ if (i >= 0)
++ {
++ TWRedraw(E->window,textval[i]);
++ ok = 1;
++ };
++ break;
++# undef E
++
++ /* Check whether the user pressed one of our buttons. */
++
++ case ButtonPress:
++# define E ((XButtonEvent *)xev)
++ if (E->button == Button1 && E->window == jp2kW)
++ { register int j;
++
++ ok = 1; /* Check whether a regular button was pressed */
++ i = sizeof button/sizeof *button;
++ while ( --i >= 0
++ && !PTINRECT(E->x,E->y,button[i].x,button[i].y,button[i].w,button[i].h)
++ );
++ if (i >= 0) /* our button was pressed */
++ { char options[1024];
++ register char *p;
++ register const char *q;
++
++ if (!BTTrack(&button[i])) break; /* Ignore it */
++ if (i != J_BOK) /* must be "Cancel" button */
++ {
++ JP2KDialog(0);
++ break;
++ };
++
++ /* Our user hit the "Ok" button. At this point, we have an ugly
++ job to do: JasPer Library encoder options must be specified
++ as an ASCII string of Space (" ")-separated <tag>[=<value>]
++ entries, so we must collect the values of all of our widgets
++ and subwindows, determine whether our user has requested any
++ non-default values, then build the string only for the JasPer
++ Library to immediately tear it apart again. Yechh!
++ */
++ if ((unsigned)textval[J_TGBIT]-1 > 7)
++ {
++ OpenAlert("No. of guard bits must be 1-8");
++ sleep(3);
++ CloseAlert();
++ break;
++ };
++ if ((unsigned)textval[J_TRES ] <= 0)
++ {
++ OpenAlert("Maximum resolution levels must be >= 1");
++ sleep(3);
++ CloseAlert();
++ break;
++ };
++
++ /* XXX Should we check and complain if the rate is zero?
++ JasPer Library Version 1.701 apparently accepts that
++ value, even though it seems kinda weird.
++ */
++ p = options;
++ i = 0;
++ do if ((j = MBWhich(&menu[i])) != 5)
++ { static const char *parm[2] =
++ {"cblkwidth=%u", "cblkheight=%u"};
++
++ if (p > options) *p++ = ' ';
++ sprintf(p,parm[i-J_MCBXW],++j);
++ while (*++p);
++ }
++ while (++i <= J_MCBXH);
++ do if ((j = MBWhich(&menu[i])) < 15)
++ { static const char *parm[2] =
++ {"prcwidth=%u", "prcheight=%u"};
++
++ if (p > options) *p++ = ' ';
++ sprintf(p,parm[i-J_MPREW],j);
++ while (*++p);
++ }
++ while (++i <= J_MPREH);
++ if ((j = MBWhich(&menu[i])))
++ {
++ if (p > options) *p++ = ' ';
++ *p++ = 'p'; *p++ = 'r'; *p++ = 'g'; *p = '=';
++ q = ProgList[j];
++ while ((*++p = *q++));
++ };
++ if ((i = textval[J_TRES ]) != 6)
++ {
++ if (p > options) *p++ = ' ';
++ sprintf(p,"numrlvls=%u",i);
++ while (*++p);
++ };
++ i = 0;
++ do if (chkbut[i].val) /* append this encoding option */
++ {
++ if (p > options) *p++ = ' ';
++ q = chkbut[i].str;
++ while ((*p++ = *q++));
++ *--p = '\000';
++ }
++ while (++i < sizeof chkbut/sizeof *chkbut);
++ if ((i = textval[J_TGBIT]) != 2)
++ {
++ if (p > options) *p++ = ' ';
++ sprintf(p,"numgbits=%u",i);
++ while (*++p);
++ };
++ if ((i = textval[J_TRATE]) != 100)
++ {
++ if (p > options) *p++ = ' ';
++ *p++ = 'r'; *p++ = 'a'; *p++ = 't'; *p++ = 'e';
++ *p++ = '=';
++ if (i) /* non-zero rate */
++ {
++ if (RBWhich(radio)) sprintf(p,"%uB",i); /* # Bytes */
++ else /* the value is a percentage */
++ {
++ if (i > 100) i = 200; /* => Raw size + 1 */
++ sprintf(p,"%u.%.2u",i/100,i%100);
++ }
++ while (*++p);
++ }
++ else /* rate = 0 */
++ {
++
++ /* XXX This is apparently valid, since JasPer Library
++ Version 1.701 doesn't complain about it.
++ */
++ *p++ = '0';
++ *p = '\000';
++ }
++ };
++ StoreJP2K(options); /* Finally, do the *real* work! */
++ JP2KDialog(0);
++ p = GetDirFullName();
++ if (!ISPIPE(*p))
++ {
++ XVCreatedFile(p);
++ StickInCtrlList(0);
++ };
++ break;
++ };
++
++ /* See whether a check-box button was pressed. */
++
++ i = sizeof chkbut/sizeof *chkbut;
++ while (--i >= 0 && !CBClick(&chkbut[i],E->x,E->y));
++ if (i >= 0) /* our button was pressed */
++ {
++ (void)CBTrack(&chkbut[i]);
++ break;
++ };
++
++ /* See whether a menu button was pressed. */
++
++ i = sizeof menu/sizeof *menu;
++ while (--i >= 0 && !MBClick(&menu[i],E->x,E->y));
++ if (i >= 0) /* our button was pressed */
++ { register int j;
++
++ if ((j = MBTrack(&menu[i])) >= 0)
++ {
++ switch (i)
++ {
++
++ /* The JasPer Library constrains a coding box's area
++ (width x height) to be <= 4096 pixels, so if this
++ button-press would violate that condition, then
++ quietly limit the box's orthogonal dimension by just
++ enough to compensate.
++ */
++ case J_MCBXH:
++ case J_MCBXW: if (MBWhich(&menu[!i]) + j >= 10)
++ MBSelect(&menu[!i],10 - j);
++ };
++ MBSelect(&menu[i],j);
++ MBSetActive(&menu[i],1);
++ };
++ break;
++ };
++
++ /* See whether a radio button was pressed. */
++
++ if ( (i = RBClick(radio,E->x,E->y)) >= 0 /* button pressed */
++ && RBTrack(radio,i)
++ )
++ {
++ RBSelect(radio,i);
++ RBSetActive(radio,i,1);
++ };
++ break;
++ };
++ XBell(theDisp,50);
++ break;
++# undef E
++
++ /* Translate a few key-press events into simulated button events. */
++
++ case KeyPress :
++# define E ((XKeyEvent *)xev)
++ buf[len = XLookupString(E,buf,sizeof buf,&ks,0)] = '\000';
++ RemapKeyCheck(ks,buf,&len);
++ if (E->window == jp2kW)
++ {
++ ok = 1;
++ if (len > 0)
++ switch (buf[0])
++ {
++ case '\r' :
++ case '\n' : FakeButtonPress(&button[J_BOK ]);
++ break;
++ case '\033': FakeButtonPress(&button[J_BCANC]);
++ };
++ break;
++ };
++ i = sizeof text/sizeof *text;
++ while (--i >= 0 && E->window != text[i]);
++ if (i >= 0) /* a key was pressed in our text window */
++ { int oldval = textval[i]; /* Save this subwindow's old value */
++ register int c, j = 0;
++
++ /* This is a *very* simple text-input editing loop that assembles an
++ an unsigned integer from successive ASCII decimal digits, typed
++ into one of our 1-line subwindows. For convenience, the only
++ character recognized is Backspace.
++ */
++ ok = 1;
++ L: if (j >= len) break;
++ if ((unsigned)(c = buf[j++] - '0') <= 9)
++ {
++ TWRedraw(text[i],textval[i] = textval[i]*10 + c);
++ goto L;
++ };
++ if ((c += '0') == '\b')
++ {
++ TWRedraw(text[i],textval[i] = textval[i]/10);
++ goto L;
++ };
++ textval[i] = oldval;
++ };
++ XBell(theDisp,50);
++# undef E
++ };
++ return ok;
++}
++
++
++/*******************************************/
++void
++VersionInfoJP2K() /* GRR 20070304 */
++{
++ fprintf(stderr, " Compiled with libjasper %s; using libjasper %s.\n",
++ JAS_VERSION, jas_getversion());
++}
++
++#endif /* HAVE_JP2K */
+diff -u -r --new-file xv-3.10a.orig/xvmag.c xv-3.10a/xvmag.c
+--- xv-3.10a.orig/xvmag.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvmag.c 2005-04-18 00:56:58.000000000 -0500
+@@ -0,0 +1,866 @@
++/*
++ * xvmag.c - load routine for `MAG' format pictures.
++ *
++ * The `MAG' format is used by many Japanese personal computer users.
++ * This program is based on MAGBIBLE.DOC which is the specification
++ * for `MAG' format written by Woody RINN. It is written in Japanese,
++ * and exists in some anon-ftp sites.
++ */
++
++#include "xv.h"
++#include <setjmp.h>
++
++#ifdef HAVE_MAG
++
++typedef unsigned short data16;
++
++struct mag {
++ jmp_buf jmp;
++ FILE *fp;
++ long fsize;
++ int m_256, m_dig, m_8, m_200;
++ int x1, y1, x2, y2, left_pad, right_pad;
++ int p_width, p_height, width, height;
++ long h_off, a_off, a_size, b_off, b_size, p_off, p_size;
++ byte *a, *b, *p;
++};
++
++static void mag_open_file PARM((struct mag*, char*));
++static void mag_read_check_data PARM((struct mag*));
++static void mag_read_comment PARM((struct mag*, char**));
++static void mag_read_header PARM((struct mag*));
++static void mag_read_palette PARM((struct mag*, byte*, byte*, byte*));
++static void mag_read_flags PARM((struct mag*));
++static void mag_read_pixel_data PARM((struct mag*));
++static void mag_expand_body PARM((struct mag*, byte**));
++
++static void mag_compress_data PARM((struct mag*, byte*));
++static void mag_write_check_data PARM((struct mag*));
++static void mag_write_comment PARM((struct mag*, char *));
++static void mag_write_palette PARM((struct mag*, int,
++ byte*, byte*, byte*, int));
++static void mag_write_flags PARM((struct mag*));
++static void mag_write_pixel_data PARM((struct mag*));
++static void mag_write_header PARM((struct mag*));
++static void mag_set_double_word PARM((long, byte *));
++
++static void mag_init_info PARM((struct mag*));
++static void mag_cleanup_mag_info PARM((struct mag*, int));
++static void mag_cleanup_pinfo PARM((PICINFO*));
++static void mag_memory_error PARM((char*, char*));
++static void mag_error PARM((struct mag*, int));
++static void mag_file_error PARM((struct mag*, int));
++static void mag_file_warning PARM((struct mag*, int));
++static void mag_show_struct PARM((struct mag*));
++static void *mag_malloc PARM((size_t, char*));
++static void *mag_realloc PARM((void*, size_t, char*));
++
++
++static char *mag_id = "MAKI02 ";
++static struct{
++ int dx, dy;
++}points[16] = {
++ { 0, 0}, { 1, 0}, { 2, 0}, { 4, 0},
++ { 0, 1}, { 1, 1},
++ { 0, 2}, { 1, 2}, { 2, 2},
++ { 0, 4}, { 1, 4}, { 2, 4},
++ { 0, 8}, { 1, 8}, { 2, 8},
++ { 0, 16},
++};
++static int try[15] = {1, 4, 5, 6, 7, 9, 10, 2, 8, 11, 12, 13, 14, 3, 15};
++
++static char *mag_msgs[] = {
++ NULL,
++#define MAG_OPEN 1
++ "can't open file",
++#define MAG_CORRUPT 2
++ "file currupted.",
++#define MAG_FORMAT 3
++ "not MAG format.",
++#define MAG_WRITE 4
++ "write failed.",
++};
++
++
++#define H4(x) (((int) (x) >> 4) & 0x0f) /* operates on a byte */
++#define L4(x) ((x) & 0x0f)
++#define H8(x) (((x) >> 8) & 0xff) /* operates on a data16 */
++#define L8(x) ((x) & 0xff)
++
++#define error(msgnum) longjmp(mi->jmp, msgnum)
++
++
++/* The main routine to load a MAG file. */
++int LoadMAG(fname, pinfo)
++ char *fname;
++ PICINFO *pinfo;
++{
++ struct mag mag;
++ int e;
++
++ if(DEBUG) fputs("LoadMAG:\n", stderr);
++
++ pinfo->comment = NULL;
++ mag_init_info(&mag);
++ if((e = setjmp(mag.jmp)) != 0){
++ /* When an error occurs, comes here. */
++ mag_cleanup_mag_info(&mag, 0);
++ mag_cleanup_pinfo(pinfo);
++ return 0;
++ }
++
++ mag_open_file(&mag, fname);
++ mag_read_check_data(&mag);
++ mag_read_comment(&mag, &pinfo->comment);
++ mag_read_header(&mag);
++ mag_read_palette(&mag, pinfo->r, pinfo->g, pinfo->b);
++ mag_read_flags(&mag);
++ mag_read_pixel_data(&mag);
++ mag_expand_body(&mag, &pinfo->pic);
++
++ pinfo->w = pinfo->normw = mag.width;
++ pinfo->h = pinfo->normh = mag.height;
++ pinfo->type = PIC8;
++ pinfo->frmType = F_MAG;
++ pinfo->colType = F_FULLCOLOR;
++ sprintf(pinfo->fullInfo, "MAG, %d colors%s (%ld bytes)",
++ mag.m_256 ? 256 : (mag.m_8 ? 8 : 16),
++ mag.m_200 ? ", aspect 0.5" : "", mag.fsize);
++ sprintf(pinfo->shrtInfo, "%dx%d MAG", mag.width, mag.height);
++ if(mag.m_200)
++ normaspect = 0.5;
++
++ mag_cleanup_mag_info(&mag, 0);
++ return 1;
++}
++
++static void mag_open_file(mi, fname)
++ struct mag *mi;
++ char *fname;
++{
++ if((mi->fp = fopen(fname, "rb")) == NULL)
++ mag_file_error(mi, MAG_OPEN);
++ fseek(mi->fp, (size_t) 0, SEEK_END);
++ mi->fsize = ftell(mi->fp);
++ fseek(mi->fp, (size_t) 0, SEEK_SET);
++}
++
++static void mag_read_check_data(mi)
++ struct mag *mi;
++{
++ char buffer[8];
++
++ if(fread(buffer, (size_t) 8, (size_t) 1, mi->fp) != 1)
++ mag_file_error(mi, MAG_CORRUPT);
++ if(strncmp(buffer, mag_id, (size_t) 8) != 0)
++ mag_error(mi, MAG_FORMAT);
++}
++
++static void mag_read_comment(mi, p)
++ struct mag *mi;
++ char **p;
++{
++ int max = -1, i = 0;
++ int c;
++
++ while((c = fgetc(mi->fp)) != EOF){
++ if(c == 0x1a)
++ break;
++ if(max < i){
++ max += 16;
++ *p = mag_realloc(*p, (size_t) max + 1, "mag_read_comment#1");
++ }
++ (*p)[i++] = c;
++ }
++
++ if(c == EOF)
++ mag_file_error(mi, MAG_CORRUPT);
++
++ if(max < i){
++ *p = mag_realloc(*p, (size_t) max + 2, "mag_read_comment#2");
++ }
++ if(i > 24){
++ (*p)[i] = '\0';
++ strcpy(*p, &(*p)[24]);
++ }else{
++ (*p)[0] = '\0';
++ }
++}
++
++static void mag_read_header(mi)
++ struct mag *mi;
++{
++ byte buf[32];
++
++ mi->h_off = ftell(mi->fp);
++
++ if(fread(buf, (size_t) 32, (size_t) 1, mi->fp) != 1)
++ mag_file_error(mi, MAG_CORRUPT);
++
++ mi->m_256 = buf[3] & 0x80;
++ mi->m_dig = buf[3] & 0x04;
++ mi->m_8 = buf[3] & 0x02;
++ mi->m_200 = buf[3] & 0x01;
++
++ mi->x1 = buf[ 4] + buf[ 5] * 256;
++ mi->y1 = buf[ 6] + buf[ 7] * 256;
++ mi->x2 = buf[ 8] + buf[ 9] * 256;
++ mi->y2 = buf[10] + buf[11] * 256;
++
++#define get_dword(a, b, c, d) \
++ ((long)(a) << 24 | (long)(b) << 16 | (long)(c) << 8 | (long)(d))
++
++ mi->a_off = get_dword(buf[15], buf[14], buf[13], buf[12]);
++ mi->b_off = get_dword(buf[19], buf[18], buf[17], buf[16]);
++ mi->b_size = get_dword(buf[23], buf[22], buf[21], buf[20]);
++ mi->p_off = get_dword(buf[27], buf[26], buf[25], buf[24]);
++ mi->p_size = get_dword(buf[31], buf[30], buf[29], buf[28]);
++#undef get_dword
++
++ mi->a_size = mi->b_off - mi->a_off;
++ mi->a_off += mi->h_off;
++ mi->b_off += mi->h_off;
++ mi->p_off += mi->h_off;
++
++ mi->width = mi->x2 - mi->x1 + 1;
++ mi->height = mi->y2 - mi->y1 + 1;
++ mi->left_pad = mi->x1 & 07;
++ mi->right_pad = 07 - (mi->x2 & 07);
++ mi->x1 -= mi->left_pad; /* x1 = 8m */
++ mi->x2 += mi->right_pad; /* x2 = 8n+7 */
++ mi->p_width = ((mi->x2 + 1) - mi->x1) / (mi->m_256 ? 2 : 4);
++ mi->p_height = (mi->y2 + 1) - mi->y1;
++
++ if(DEBUG) mag_show_struct(mi);
++}
++
++static void mag_read_palette(mi, r, g, b)
++ struct mag *mi;
++ byte *r, *g, *b;
++{
++ int num_palettes;
++ byte *buf;
++
++ if(mi->m_256)
++ num_palettes = 256;
++ else
++ num_palettes = 16;
++
++ buf = mag_malloc((size_t)num_palettes * 3, "mag_read_palette");
++
++ if(fread(buf, (size_t) 3, (size_t) num_palettes, mi->fp) != num_palettes){
++ free(buf);
++ mag_file_error(mi, MAG_CORRUPT);
++ }
++
++ for(num_palettes--; num_palettes >= 0; num_palettes--){
++ g[num_palettes] = buf[num_palettes * 3 ];
++ r[num_palettes] = buf[num_palettes * 3 + 1];
++ b[num_palettes] = buf[num_palettes * 3 + 2];
++ }
++
++ free(buf);
++}
++
++static void mag_read_flags(mi)
++ struct mag *mi;
++{
++ mi->a = mag_malloc((size_t) mi->a_size, "mag_read_flags#1");
++ mi->b = mag_malloc((size_t) mi->b_size, "mag_read_flags#2");
++
++ fseek(mi->fp, mi->a_off, SEEK_SET);
++ if(fread(mi->a, (size_t) mi->a_size, (size_t) 1, mi->fp) != 1)
++ mag_file_warning(mi, MAG_CORRUPT);
++ if(fread(mi->b, (size_t) mi->b_size, (size_t) 1, mi->fp) != 1)
++ mag_file_warning(mi, MAG_CORRUPT);
++}
++
++static void mag_read_pixel_data(mi)
++ struct mag *mi;
++{
++ mi->p = mag_malloc((size_t) mi->p_size, "mag_read_pixel_data");
++
++ fseek(mi->fp, mi->p_off, SEEK_SET);
++ if(fread(mi->p, (size_t) mi->p_size, (size_t) 1, mi->fp) != 1)
++ mag_file_warning(mi, MAG_CORRUPT);
++}
++
++/* MAG expanding routine */
++static void mag_expand_body(mi, pic0)
++ struct mag *mi;
++ byte **pic0;
++{
++ int ai, bi, fi, pi;
++ int px, py, x, y;
++ byte *flag;
++ byte mask;
++ data16 *pixel0;
++
++ flag = mag_malloc((size_t) mi->p_width / 2, "mag_expand_body#1");
++ *pic0 = mag_malloc((size_t) mi->width * mi->height, "mag_expand_body#2"); // GRR POSSIBLE OVERFLOW / FIXME
++ pixel0 = mag_malloc((size_t) 2 * mi->p_width * 17, "mag_expand_body#3"); // GRR POSSIBLE OVERFLOW / FIXME
++
++#define pixel(x, y) pixel0[(y) % 17 * mi->p_width + (x)]
++
++ ai = bi = pi = 0;
++ mask = 0x80;
++ for(y = py = 0; py < mi->p_height; py++){
++ for(fi = 0; fi < mi->p_width / 2; fi++){
++ if(py == 0){
++ if(mi->a[ai] & mask)
++ flag[fi] = mi->b[bi++];
++ else
++ flag[fi] = 0;
++ }else{
++ if(mi->a[ai] & mask)
++ flag[fi] ^= mi->b[bi++];
++ }
++ if((mask >>= 1) == 0){
++ mask = 0x80;
++ ai++;
++ }
++ }
++
++ for(px = fi = 0; fi < mi->p_width / 2; fi++){
++ int f = H4(flag[fi]);
++ if(f == 0){
++ pixel(px, py) = mi->p[pi] + mi->p[pi + 1] * 256;
++ px++;
++ pi+=2;
++ }else{
++ int dx = points[f].dx, dy = points[f].dy;
++ pixel(px, py) = pixel(px - dx, py - dy);
++ px++;
++ }
++
++ f = L4(flag[fi]);
++ if(f == 0){
++ pixel(px, py) = mi->p[pi] + mi->p[pi + 1] * 256;
++ px++;
++ pi+=2;
++ }else{
++ int dx = points[f].dx, dy = points[f].dy;
++ pixel(px, py) = pixel(px - dx, py - dy);
++ px++;
++ }
++ }
++
++#define inside(x) ((unsigned int)(x) < mi->width)
++#define pic(x, y) (*pic0)[(y) * mi->width + (x)]
++ for(x = -mi->left_pad, px = 0; px < mi->p_width; px++){
++ data16 p = pixel(px, py);
++ if(mi->m_256){
++ if(inside(x))
++ pic(x, y) = L8(p);
++ x++;
++ if(inside(x))
++ pic(x, y) = H8(p);
++ x++;
++ }else{
++ if(inside(x))
++ pic(x, y) = H4(L8(p));
++ x++;
++ if(inside(x))
++ pic(x, y) = L4(L8(p));
++ x++;
++ if(inside(x))
++ pic(x, y) = H4(H8(p));
++ x++;
++ if(inside(x))
++ pic(x, y) = L4(H8(p));
++ x++;
++ }
++ }
++ y++;
++ }
++#undef pic
++#undef inside
++#undef pixel
++
++ free(flag);
++ free(pixel0);
++}
++
++
++/* The main routine to write a MAG file. */
++int WriteMAG(fp, pic, ptype, w, h, rmap, gmap, bmap, numcols, colorstyle,
++ comment)
++ FILE *fp;
++ byte *pic;
++ int ptype, w, h;
++ byte *rmap, *gmap, *bmap;
++ int numcols, colorstyle;
++ char *comment;
++{
++ byte rtemp[256], gtemp[256], btemp[256];
++ struct mag mag;
++ int e;
++
++ if(DEBUG) fputs("WriteMag\n", stderr);
++
++ mag_init_info(&mag);
++ mag.fp = fp;
++
++ if(ptype == PIC24){
++ if(!(pic = Conv24to8(pic, w, h, 256, rtemp, gtemp, btemp)))
++ mag_memory_error("Conv24to8", "WriteMAG");
++ rmap = rtemp;
++ gmap = gtemp;
++ bmap = btemp;
++ numcols = 256;
++ mag.m_256 = 1;
++ }else{
++ if(numcols > 16)
++ mag.m_256 = 1;
++ }
++
++ if((e = setjmp(mag.jmp)) != 0){
++ /* When an error occurs, comes here. */
++ mag_cleanup_mag_info(&mag, 1);
++ return -1;
++ }
++
++ mag.x2 = w - 1;
++ mag.y2 = h - 1;
++ mag.right_pad = 07 - (mag.x2 & 07);
++ mag.p_width = (w + mag.right_pad) / (mag.m_256 ? 2 : 4);
++ mag.p_height = h;
++ mag.width = w;
++ mag.height = h;
++ mag.a_size = (mag.p_width * mag.p_height + 15) / 16; /* x/2/8 */ // GRR POSSIBLE OVERFLOW / FIXME
++ if(mag.a_size % 2)
++ mag.a_size++;
++
++ mag_compress_data(&mag, pic);
++ mag_write_check_data(&mag);
++ mag_write_comment(&mag, comment);
++
++ mag.h_off = ftell(mag.fp);
++
++ mag_write_palette(&mag, numcols, rmap, gmap, bmap,
++ colorstyle == F_GREYSCALE);
++ mag_write_flags(&mag);
++ mag_write_pixel_data(&mag);
++ mag_write_header(&mag);
++
++ mag_cleanup_mag_info(&mag, 1);
++ return 0;
++}
++
++/* MAG compressing routine */
++static void mag_compress_data(mi, pic0)
++ struct mag *mi;
++ byte *pic0;
++{
++ int ai, bi, pi, i;
++ int bmax, pmax;
++ byte mask;
++ byte *flag0;
++ data16 *pixel0;
++ int px, py, x, y;
++
++ pixel0 = mag_malloc((size_t) 2 * mi->p_width * mi->p_height, // GRR POSSIBLE OVERFLOW / FIXME
++ "mag_compress_data#1");
++ flag0 = mag_malloc((size_t) mi->p_width * mi->p_height, // GRR POSSIBLE OVERFLOW / FIXME
++ "mag_compress_data#2");
++
++#define pic(x, y) pic0[(y) * mi->width + (x)]
++ /* convert dots to pixels */
++ i = 0;
++ for(y = py = 0; py < mi->p_height; py++){
++ for(x = px = 0; px < mi->p_width; px++){
++ data16 p = 0;
++ if(mi->m_256){
++ if(x < mi->width)
++ p += pic(x, y);
++ x++;
++ if(x < mi->width)
++ p += pic(x, y) * 256;
++ x++;
++ }else{
++ if(x < mi->width)
++ p += pic(x, y) * 16;
++ x++;
++ if(x < mi->width)
++ p += pic(x, y);
++ x++;
++ if(x < mi->width)
++ p += pic(x, y) * 4096;
++ x++;
++ if(x < mi->width)
++ p += pic(x, y) * 256;
++ x++;
++ }
++ pixel0[i++] = p;
++ }
++ y++;
++ }
++#undef pic
++
++#define pixel(x, y) pixel0[(y) * mi->p_width + (x)]
++#define flag(x, y) flag0[(y) * mi->p_width + (x)]
++ /* get flags */
++ pmax = pi = 0;
++ for(py = 0; py < mi->p_height; py++){
++ for(px = 0; px < mi->p_width; px++){
++ int t;
++ for(t = 0; t < 15; t++){
++ int dx = points[try[t]].dx, dy = points[try[t]].dy;
++ if(dx <= px && dy <= py){
++ if(pixel(px - dx, py - dy) == pixel(px, py))
++ break;
++ }
++ }
++ if(t < 15){
++ flag(px, py) = try[t];
++ }else{
++ flag(px, py) = 0;
++ if(pmax <= pi + 1){
++ pmax += 128;
++ mi->p = mag_realloc(mi->p, (size_t) pmax,
++ "mag_compress_data#3");
++ }
++ mi->p[pi++] = L8(pixel(px, py));
++ mi->p[pi++] = H8(pixel(px, py));
++ }
++ }
++ }
++#undef flag
++#undef pixel
++
++ /* pack 2 flags into 1 byte */
++ for(i = 0; i < mi->p_width / 2 * mi->p_height; i++)
++ flag0[i] = flag0[i * 2] * 16 + flag0[i * 2 + 1];
++
++#define flag(x, y) flag0[(y) * mi->p_width / 2 + (x)]
++ for(py = mi->p_height - 1; py >= 1; py--){
++ for(px = 0; px < mi->p_width / 2; px++)
++ flag(px, py) ^= flag(px, py - 1);
++ }
++#undef flag
++
++ mask = 0x80;
++ ai = bi = bmax = 0;
++ mi->a = mag_malloc((size_t) mi->a_size, "mag_compress_data#4"); // GRR POSSIBLE OVERFLOW / FIXME
++ for(i = 0; i < mi->p_width / 2 * mi->p_height; i++){
++ if(flag0[i] == 0){
++ mi->a[ai] &= ~mask;
++ }else{
++ if(bmax == bi){
++ bmax += 128;
++ mi->b = mag_realloc(mi->b, (size_t) bmax,
++ "mag_compress_data#4");
++ }
++ mi->b[bi++] = flag0[i];
++ mi->a[ai] |= mask;
++ }
++
++ if((mask >>= 1) == 0){
++ mask = 0x80;
++ ai++;
++ }
++ }
++
++ if(bi % 2)
++ bi++;
++ mi->b_size = bi;
++
++ mi->p_size = pi;
++
++ free(pixel0);
++ free(flag0);
++}
++
++static void mag_write_check_data(mi)
++ struct mag *mi;
++{
++ if(fwrite(mag_id, (size_t) 8, (size_t) 1, mi->fp) != 1)
++ mag_file_error(mi, MAG_WRITE);
++}
++
++static void mag_write_comment(mi, comment)
++ struct mag *mi;
++ char *comment;
++{
++ char *p;
++ int i;
++
++ if(fputs("XV ", mi->fp) == EOF)
++ mag_file_error(mi, MAG_WRITE);
++
++ if((p = (char *) getenv("USER")) == NULL)
++ p = "????????";
++ for(i = 5; i < 24; i++){
++ if(*p == '\0')
++ break;
++ if(fputc(*p++, mi->fp) == EOF)
++ mag_file_error(mi, MAG_WRITE);
++ }
++ for( ; i < 24; i++){
++ if(fputc(' ', mi->fp) == EOF)
++ mag_file_error(mi, MAG_WRITE);
++ }
++
++ if(comment){
++ int l = strlen(comment);
++ if(l > 0){
++ int i;
++ for(i = 0; i < l; i++){
++ if(comment[i] == 0x1a)
++ comment[i] = ' ';
++ }
++ if(fwrite(comment, (size_t) l, (size_t) 1, mi->fp) != 1)
++ mag_file_error(mi, MAG_WRITE);
++ }
++ }
++
++ if(fputc(0x1a, mi->fp) == EOF)
++ mag_file_error(mi, MAG_WRITE);
++}
++
++static void mag_write_palette(mi, num, r, g, b, grey)
++ struct mag *mi;
++ int num;
++ byte *r, *g, *b;
++ int grey;
++{
++ int i, left;
++ char buf[3];
++
++ fseek(mi->fp, 32L, SEEK_CUR); /* skip header area */
++ for(i = 0; i < num; i++){
++ buf[0] = *g++;
++ buf[1] = *r++;
++ buf[2] = *b++;
++ if(grey)
++ buf[0] = buf[1] = buf[2] = MONO(buf[1], buf[0], buf[2]);
++ if(fwrite(buf, (size_t) 3, (size_t) 1, mi->fp) != 1)
++ mag_file_error(mi, MAG_WRITE);
++ }
++ if(num < 16){
++ left = 16 - num;
++ }else if(num == 16){
++ left = 0;
++ }else if(num < 256){
++ left = 256 - num;
++ }else if(num == 256){
++ left = 0;
++ }else
++ left = 0; /* shouldn't happen */
++
++ if(left > 0){
++ for(i = 0; i < left; i++){
++ if(fwrite(buf, (size_t) 3, (size_t) 1, mi->fp) != 1)
++ mag_file_error(mi, MAG_WRITE);
++ }
++ }
++}
++
++static void mag_write_flags(mi)
++ struct mag *mi;
++{
++ int i;
++
++ mi->a_off = ftell(mi->fp);
++ for(i = 0; i < mi->a_size; i++){
++ if(fputc(mi->a[i], mi->fp) == EOF)
++ mag_file_error(mi, MAG_WRITE);
++ }
++
++ mi->b_off = ftell(mi->fp);
++ for(i = 0; i < mi->b_size; i++){
++ if(fputc(mi->b[i], mi->fp) == EOF)
++ mag_file_error(mi, MAG_WRITE);
++ }
++}
++
++static void mag_write_pixel_data(mi)
++ struct mag *mi;
++{
++ int i;
++
++ mi->p_off = ftell(mi->fp);
++ for(i = 0; i < mi->p_size; i++){
++ if(fputc(mi->p[i], mi->fp) == EOF)
++ mag_file_error(mi, MAG_WRITE);
++ }
++}
++
++static void mag_write_header(mi)
++ struct mag *mi;
++{
++ byte buf[32];
++
++ if(DEBUG) mag_show_struct(mi);
++
++ mi->a_off -= mi->h_off;
++ mi->b_off -= mi->h_off;
++ mi->p_off -= mi->h_off;
++
++ buf[ 0] = buf[1] = buf[2] = 0;
++ buf[ 3] = (mi->m_256 ? 0x80 : 0);
++ buf[ 4] = buf[5] = 0;
++ buf[ 6] = buf[7] = 0;
++ buf[ 8] = L8(mi->x2);
++ buf[ 9] = H8(mi->x2);
++ buf[10] = L8(mi->y2);
++ buf[11] = H8(mi->y2);
++ mag_set_double_word(mi->a_off, &buf[12]);
++ mag_set_double_word(mi->b_off, &buf[16]);
++ mag_set_double_word(mi->b_size, &buf[20]);
++ mag_set_double_word(mi->p_off, &buf[24]);
++ mag_set_double_word(mi->p_size, &buf[28]);
++
++ fseek(mi->fp, mi->h_off, SEEK_SET);
++ if(fwrite(buf, (size_t) 32, (size_t) 1, mi->fp) != 1)
++ mag_file_error(mi, MAG_WRITE);
++}
++
++static void mag_set_double_word(n, p)
++ long n;
++ byte *p;
++{
++ p[0] = n % 256; /* ugly...anything wrong with shift/mask operations? */
++ p[1] = n / 256 % 256; /* (n >> 8) & 0xff */
++ p[2] = n / 256 / 256 % 256; /* (n >> 16) & 0xff */
++ p[3] = n / 256 / 256 / 256 % 256; /* (n >> 24) & 0xff */
++}
++
++/*
++ * The routines to initialize or clean up.
++ * mag_init_info:
++ * initializes a mag structure.
++ * mag_cleanup_mag_info:
++ * cleans up a mag structure.
++ * mag_cleanup_pinfo:
++ * cleans up a PICINFO structure.
++ */
++static void mag_init_info(mi)
++ struct mag *mi;
++{
++ mi->fp = NULL;
++ mi->fsize = 0;
++ mi->m_256 = mi->m_dig = mi->m_8 = mi->m_200 = 0;
++ mi->x1 = mi->y1 = mi->x2 = mi->y2 = 0;
++ mi->left_pad = mi->right_pad = 0;
++ mi->p_width = mi->p_height = mi->width = mi->height = 0;
++ mi->h_off = mi->p_off = mi->p_size = 0;
++ mi->a_off = mi->a_size = mi->b_off = mi->b_size = 0;
++ mi->a = NULL;
++ mi->b = NULL;
++ mi->p = NULL;
++}
++
++static void mag_cleanup_mag_info(mi, writing)
++ struct mag *mi;
++ int writing;
++{
++ if(mi->fp && !writing)
++ fclose(mi->fp);
++ if(mi->a)
++ free(mi->a);
++ if(mi->b)
++ free(mi->b);
++ if(mi->p)
++ free(mi->p);
++}
++
++static void mag_cleanup_pinfo(pinfo)
++ PICINFO *pinfo;
++{
++ if(pinfo->comment){
++ free(pinfo->comment);
++ pinfo->comment = NULL;
++ }
++ if(pinfo->pic){
++ free(pinfo->pic);
++ pinfo->pic = NULL;
++ }
++}
++
++/*
++ * Error handler.
++ * mag_memory_error:
++ * shows an error message, and terminates.
++ * mag_error:
++ * shows an non-file error message, and jumps to the entry for errors.
++ * mag_file_error:
++ * shows an file error message, and jumps to the entry for errors.
++ * mag_file_warning:
++ * shows an file warning message.
++ */
++static void mag_memory_error(scm, fn)
++ char *scm, *fn;
++{
++ char buf[128];
++ sprintf(buf, "%s: can't allocate memory. (%s)", scm, fn);
++ FatalError(buf);
++}
++
++static void mag_error(mi, mn)
++ struct mag *mi;
++ int mn;
++{
++ SetISTR(ISTR_WARNING, "%s", mag_msgs[mn]);
++ longjmp(mi->jmp, 1);
++}
++
++static void mag_file_error(mi, mn)
++ struct mag *mi;
++ int mn;
++{
++ if(feof(mi->fp))
++ SetISTR(ISTR_WARNING, "%s (end of file)", mag_msgs[mn]);
++ else
++ SetISTR(ISTR_WARNING, "%s (%s)", mag_msgs[mn], ERRSTR(errno));
++ longjmp(mi->jmp, 1);
++}
++
++static void mag_file_warning(mi, mn)
++ struct mag *mi;
++ int mn;
++{
++ if(feof(mi->fp))
++ SetISTR(ISTR_WARNING, "%s (end of file)", mag_msgs[mn]);
++ else
++ SetISTR(ISTR_WARNING, "%s (%s)", mag_msgs[mn], ERRSTR(errno));
++}
++
++static void mag_show_struct (mi)
++ struct mag *mi;
++{
++ fprintf(stderr, " 256 colors: %s\n", mi->m_256 ? "true" : "false");
++ fprintf(stderr, " 8 colors: %s\n", mi->m_8 ? "true" : "false");
++ fprintf(stderr, " digital colors: %s\n", mi->m_dig ? "true" : "false");
++ fprintf(stderr, " aspect ratio: %f\n", mi->m_200 ? 0.5 : 1.0);
++ fprintf(stderr, " image size: %dx%d\n", mi->width, mi->height);
++ fprintf(stderr, " left pad: %d\n", mi->left_pad);
++ fprintf(stderr, " right pad: %d\n", mi->right_pad);
++ fprintf(stderr, " h_off: %ld\n", mi->h_off);
++ fprintf(stderr, " A: off:%ld, size:%ld\n", mi->a_off, mi->a_size);
++ fprintf(stderr, " B: off:%ld, size:%ld\n", mi->b_off, mi->b_size);
++ fprintf(stderr, " P: off:%ld, size:%ld\n", mi->p_off, mi->p_size);
++}
++
++/* Memory related routines. */
++static void *mag_malloc(n, fn)
++ size_t n;
++ char *fn;
++{
++ void *r = (void *) malloc(n);
++ if(r == NULL)
++ mag_memory_error("malloc", fn);
++ return r;
++}
++
++static void *mag_realloc(p, n, fn)
++ void *p;
++ size_t n;
++ char *fn;
++{
++ void *r = (p == NULL) ? (void *) malloc(n) : (void *) realloc(p, n);
++ if(r == NULL)
++ mag_memory_error("realloc", fn);
++ return r;
++}
++#endif /* HAVE_MAG */
+diff -u -r --new-file xv-3.10a.orig/xvmaki.c xv-3.10a/xvmaki.c
+--- xv-3.10a.orig/xvmaki.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvmaki.c 2005-04-18 00:57:01.000000000 -0500
+@@ -0,0 +1,794 @@
++/*
++ * xvmaki.c - load routine for `MAKI' format pictures.
++ *
++ * The `MAKI' format was used by some Japanese personal computer users.
++ */
++
++#include "xv.h"
++#include <setjmp.h>
++
++#ifdef HAVE_MAKI
++
++typedef unsigned short data16;
++typedef unsigned int data32;
++
++struct maki_info {
++ jmp_buf jmp;
++ FILE *fp;
++ long fsize;
++ int x0, y0, x1, y1;
++ int width, height;
++ float aspect;
++ long fb_size;
++ long pa_size, pb_size;
++ int m_maki01b, m_200, m_dig8;
++ data16 ext_flag;
++ byte *fa, *fb, *pa, *pb;
++ byte *vs;
++ int numcols;
++ byte *forma, *formb;
++};
++
++
++static void maki_open_file PARM((struct maki_info*, char*));
++static void maki_check_id PARM((struct maki_info*));
++static void maki_skip_comment PARM((struct maki_info*));
++static void maki_read_header PARM((struct maki_info*));
++static void maki_read_palette PARM((struct maki_info*,
++ byte*, byte*, byte*));
++static void maki_read_flags PARM((struct maki_info*));
++static void maki_read_pixel_data PARM((struct maki_info*));
++static void maki_expand_virtual_screen PARM((struct maki_info*));
++static void maki_expand_pixel_data PARM((struct maki_info*, byte**));
++static void maki_init_info PARM((struct maki_info*));
++
++static void maki_make_pixel_data PARM((struct maki_info*, byte*));
++static void maki_make_virtual_screen PARM((struct maki_info*));
++static void maki_make_flags PARM((struct maki_info*));
++static void maki_write_check_id PARM((struct maki_info*));
++static void maki_write_comment PARM((struct maki_info*));
++static void maki_write_header PARM((struct maki_info*));
++static void maki_write_palette PARM((struct maki_info*,
++ byte*, byte*, byte*, int));
++static void maki_write_flags PARM((struct maki_info*));
++static void maki_write_pixel_data PARM((struct maki_info*));
++
++static void maki_cleanup_maki_info PARM((struct maki_info*, int));
++static void maki_cleanup_pinfo PARM((PICINFO*));
++static void maki_memory_error PARM((char*, char*));
++static void maki_error PARM((struct maki_info*, int));
++static void maki_file_error PARM((struct maki_info*, int));
++static void maki_file_warning PARM((struct maki_info*, int));
++static void maki_show_maki_info PARM((struct maki_info*));
++static void *maki_malloc PARM((size_t, char*));
++static void *maki_realloc PARM((void *, size_t, char*));
++
++static char maki_id_a[] = "MAKI01A ";
++static char maki_id_b[] = "MAKI01B ";
++
++static char *maki_msgs[] = {
++ NULL,
++#define MAKI_OPEN 1
++ "can't open file.",
++#define MAKI_CORRUPT 2
++ "file corrupted.",
++#define MAKI_FORMAT 3
++ "not MAKI format.",
++#define MAKI_BAD_DATA 4
++ "bad data.",
++#define MAKI_COMMENT 5
++ "no '^Z' after comment.",
++#define MAKI_SIZE 6
++ "bad size.",
++#define MAKI_WRITE 7
++ "write failed.",
++};
++
++#define H4(b) ((b) >> 4 & 0xf)
++#define L4(b) ((b) & 0xf)
++#define error(msg_num) longjmp(mi->jmp, msg_num)
++
++int LoadMAKI(fname, pinfo)
++ char *fname;
++ PICINFO *pinfo;
++{
++ struct maki_info maki;
++ int e;
++
++ if(DEBUG) fputs("LoadMAKI:\n", stderr);
++
++ pinfo->comment = NULL;
++ maki_init_info(&maki);
++ if((e = setjmp(maki.jmp)) != 0){
++ /* When an error occurs, comes here. */
++ maki_cleanup_maki_info(&maki, 0);
++ maki_cleanup_pinfo(pinfo);
++ return 0;
++ }
++
++ maki_open_file(&maki, fname);
++ maki_check_id(&maki);
++ maki_skip_comment(&maki);
++ maki_read_header(&maki);
++ maki_read_palette(&maki, pinfo->r, pinfo->g, pinfo->b);
++ maki_read_flags(&maki);
++ maki_read_pixel_data(&maki);
++ maki_expand_virtual_screen(&maki);
++ maki_expand_pixel_data(&maki, &pinfo->pic);
++
++ pinfo->w = pinfo->normw = maki.width;
++ pinfo->h = pinfo->normh = maki.height;
++ pinfo->type = PIC8;
++ pinfo->frmType = F_MAKI;
++ pinfo->colType = F_FULLCOLOR;
++ sprintf(pinfo->fullInfo, "MAKI, 16 colors (%ld bytes)", maki.fsize);
++ sprintf(pinfo->shrtInfo, "%dx%d MAKI", maki.width, maki.height);
++ normaspect = maki.aspect;
++
++ maki_cleanup_maki_info(&maki, 0);
++ return 1;
++}
++
++static void maki_open_file(mi, fname)
++ struct maki_info *mi;
++ char *fname;
++{
++ if((mi->fp = fopen(fname, "rb")) == NULL)
++ maki_file_error(mi, MAKI_OPEN);
++ fseek(mi->fp, (size_t) 0, SEEK_END);
++ mi->fsize = ftell(mi->fp);
++ fseek(mi->fp, (size_t) 0, SEEK_SET);
++}
++
++static void maki_check_id(mi)
++ struct maki_info *mi;
++{
++ char buf[8];
++ if(fread(buf, (size_t) 8, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_CORRUPT);
++ if(strncmp(buf, maki_id_a, (size_t) 8) != 0 &&
++ strncmp(buf, maki_id_b, (size_t) 8) != 0)
++ maki_error(mi, MAKI_FORMAT);
++ mi->m_maki01b = (buf[6] == 'B');
++}
++
++static void maki_skip_comment(mi)
++ struct maki_info *mi;
++{
++ int i;
++ int c;
++
++ for(i = 0; i < 24; i++){
++ if((c = fgetc(mi->fp)) == EOF)
++ maki_file_error(mi, MAKI_CORRUPT);
++ if(c == '\032') /* ^Z, 0x1a */
++ break;
++ }
++ if(c != '\032')
++ maki_file_error(mi, MAKI_COMMENT);
++
++ fseek(mi->fp, 32L, SEEK_SET);
++}
++
++static void maki_read_header(mi)
++ struct maki_info *mi;
++{
++ byte buf[16];
++
++ if(fread(buf, (size_t) 16, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_CORRUPT);
++
++ mi->fb_size = (long)buf[ 0] << 8 | (long)buf[ 1];
++ mi->pa_size = (long)buf[ 2] << 8 | (long)buf[ 3];
++ mi->pb_size = (long)buf[ 4] << 8 | (long)buf[ 5];
++ mi->ext_flag = (long)buf[ 6] << 8 | (long)buf[ 7];
++ mi->x0 = (long)buf[ 8] << 8 | (long)buf[ 9];
++ mi->y0 = (long)buf[10] << 8 | (long)buf[11];
++ mi->x1 = (long)buf[12] << 8 | (long)buf[13];
++ mi->y1 = (long)buf[14] << 8 | (long)buf[15];
++
++ mi->width = mi->x1-- - mi->x0;
++ mi->height = mi->y1-- - mi->y0;
++ mi->m_200 = mi->ext_flag & 1;
++ mi->m_dig8 = mi->ext_flag & 2;
++ mi->aspect = mi->m_200 ? 0.5 : 1.0;
++
++ if(DEBUG) maki_show_maki_info(mi);
++}
++
++static void maki_read_palette(mi, r, g, b)
++ struct maki_info *mi;
++ byte *r, *g, *b;
++{
++ byte buf[48], *p;
++
++ if(fread(buf, (size_t) 48, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_CORRUPT);
++
++ for(p = buf; p < &buf[48]; ){
++ *g++ = *p++;
++ *r++ = *p++;
++ *b++ = *p++;
++ }
++}
++
++static void maki_read_flags(mi)
++ struct maki_info *mi;
++{
++ mi->fa = maki_malloc((size_t) 1000 , "maki_read_flags#1");
++ mi->fb = maki_malloc((size_t) mi->fb_size, "maki_read_flags#2");
++
++ if(fread(mi->fa, (size_t) 1000, (size_t) 1, mi->fp) != 1)
++ maki_file_warning(mi, MAKI_CORRUPT);
++ if(fread(mi->fb, (size_t) mi->fb_size, (size_t) 1, mi->fp) != 1)
++ maki_file_warning(mi, MAKI_CORRUPT);
++}
++
++static void maki_read_pixel_data(mi)
++ struct maki_info *mi;
++{
++ mi->pa = maki_malloc((size_t) mi->pa_size, "maki_read_pixel_data#1");
++ mi->pb = maki_malloc((size_t) mi->pb_size, "maki_read_pixel_data#2");
++
++ if(fread(mi->pa, (size_t) mi->pa_size, (size_t) 1, mi->fp) != 1)
++ maki_file_warning(mi, MAKI_CORRUPT);
++ if(fread(mi->pb, (size_t) mi->pb_size, (size_t) 1, mi->fp) != 1)
++ maki_file_warning(mi, MAKI_CORRUPT);
++}
++
++static void maki_expand_virtual_screen(mi)
++ struct maki_info *mi;
++{
++ int x, y, fai, fbi;
++ int bpl = mi->width / 2 / 8; /* bytes per line */
++ byte mask;
++ mi->vs = maki_malloc((size_t) bpl * mi->height, // GRR POSSIBLE OVERFLOW / FIXME
++ "maki_expand_virtual_screen");
++
++ fai = fbi = 0;
++ mask = 0x80;
++ for(y = 0; y < mi->height; y += 4){
++ for(x = 0; x < mi->width / 2; x += 4){
++ if(mi->fa[fai] & mask){
++ byte bh, bl;
++ bh = mi->fb[fbi++];
++ bl = mi->fb[fbi++];
++ if(x % 8 == 0){
++ mi->vs[ y * bpl + x / 8] = H4(bh) << 4;
++ mi->vs[(y + 1) * bpl + x / 8] = L4(bh) << 4;
++ mi->vs[(y + 2) * bpl + x / 8] = H4(bl) << 4;
++ mi->vs[(y + 3) * bpl + x / 8] = L4(bl) << 4;
++ }else{
++ mi->vs[ y * bpl + x / 8] |= H4(bh);
++ mi->vs[(y + 1) * bpl + x / 8] |= L4(bh);
++ mi->vs[(y + 2) * bpl + x / 8] |= H4(bl);
++ mi->vs[(y + 3) * bpl + x / 8] |= L4(bl);
++ }
++ }else{
++ if(x % 8 == 0){
++ mi->vs[ y * bpl + x / 8] = 0;
++ mi->vs[(y + 1) * bpl + x / 8] = 0;
++ mi->vs[(y + 2) * bpl + x / 8] = 0;
++ mi->vs[(y + 3) * bpl + x / 8] = 0;
++ }else{
++/* mi->vs[ y * bpl + x / 8] |= 0;
++ mi->vs[(y + 1) * bpl + x / 8] |= 0;
++ mi->vs[(y + 2) * bpl + x / 8] |= 0;
++ mi->vs[(y + 3) * bpl + x / 8] |= 0; */
++ }
++ }
++
++ if((mask >>= 1) == 0){
++ mask = 0x80;
++ fai++;
++ }
++ }
++ }
++}
++
++static void maki_expand_pixel_data(mi, pic)
++ struct maki_info *mi;
++ byte **pic;
++{
++ int x, y;
++ int vsi, pi, max_pi;
++ byte *p;
++ byte mask;
++ int gap;
++ *pic = maki_malloc((size_t) mi->width * mi->height, // GRR POSSIBLE OVERFLOW / FIXME
++ "maki_expand_pixel_data");
++
++ vsi = pi = 0;
++ p = mi->pa;
++ max_pi = mi->pa_size - 1;
++ mask = 0x80;
++ for(y = 0; y < mi->height; y++){
++ for(x = 0; x < mi->width; x += 2){
++ if(mi->vs[vsi] & mask){
++ if(pi > max_pi){
++ if(p == mi->pb)
++ maki_error(mi, MAKI_BAD_DATA);
++ pi = 0;
++ p = mi->pb;
++ max_pi = mi->pb_size - 1;
++ }
++ (*pic)[y * mi->width + x ] = H4(p[pi]);
++ (*pic)[y * mi->width + x + 1] = L4(p[pi]);
++ pi++;
++ }else{
++ (*pic)[y * mi->width + x ] = 0;
++ (*pic)[y * mi->width + x + 1] = 0;
++ }
++
++ if((mask >>= 1) == 0){
++ mask = 0x80;
++ vsi++;
++ }
++ }
++ }
++
++ gap = mi->m_maki01b ? 4 : 2;
++
++ for(y = gap; y < mi->height; y++){
++ for(x = 0; x < mi->width; x++)
++ (*pic)[y * mi->width + x] ^= (*pic)[(y - gap) * mi->width + x];
++ }
++}
++
++
++int WriteMAKI(fp, pic, ptype, w, h, rmap, gmap, bmap, numcols, colorstyle)
++ FILE *fp;
++ byte *pic;
++ int ptype, w, h;
++ byte *rmap, *gmap, *bmap;
++ int numcols, colorstyle;
++{
++ byte rtemp[256], gtemp[256], btemp[256];
++ struct maki_info maki, *mi = &maki;
++ int e;
++
++ if(DEBUG) fputs("WriteMAKI:\n", stderr);
++
++ maki_init_info(&maki);
++ if((e = setjmp(maki.jmp)) != 0){
++ /* An error occurs */
++ maki_cleanup_maki_info(&maki, 1);
++ return -1;
++ }
++
++ if(w != 640 || h != 400) {
++ char str[512];
++ sprintf(str,"MAKI: %s Should be 640x400", maki_msgs[MAKI_SIZE]);
++ ErrPopUp(str, "\nBummer!");
++ maki_error(mi, MAKI_SIZE);
++ }
++
++ maki.fp = fp;
++ maki.width = w;
++ maki.height = h;
++ maki.x1 = w - 1;
++ maki.y1 = h - 1;
++
++ if(ptype == PIC24){
++ if(!(pic = Conv24to8(pic, w, h, 16, rtemp, gtemp, btemp)))
++ maki_memory_error("Conv24to8#1", "WriteMAKI");
++ rmap = rtemp;
++ gmap = gtemp;
++ bmap = btemp;
++ }else if(numcols > 16){
++ if(!(pic = Conv8to24(pic, w, h, rmap, gmap, bmap)))
++ maki_memory_error("Conv8to24", "WriteMAKI");
++ if(!(pic = Conv24to8(pic, w, h, 16, rtemp, gtemp, btemp)))
++ maki_memory_error("Conv24to8#2", "WriteMAKI");
++ rmap = rtemp;
++ gmap = gtemp;
++ bmap = btemp;
++ }else
++ maki.numcols = numcols;
++
++ maki_make_pixel_data(&maki, pic);
++ maki_make_virtual_screen(&maki);
++ maki_make_flags(&maki);
++ maki_write_check_id(&maki);
++ maki_write_comment(&maki);
++ maki_write_header(&maki);
++ maki_write_palette(&maki, rmap, gmap, bmap, colorstyle == F_GREYSCALE);
++ maki_write_flags(&maki);
++ maki_write_pixel_data(&maki);
++
++ maki_cleanup_maki_info(&maki, 1);
++ return 0;
++}
++
++static void maki_make_pixel_data(mi, pic)
++ struct maki_info *mi;
++ byte *pic;
++{
++ int x, y, i;
++ int nza, nzb;
++
++ mi->forma = maki_malloc((size_t) mi->width / 2 * mi->height, // GRR POSSIBLE OVERFLOW / FIXME
++ "maki_make_pixel_data#1");
++ mi->formb = maki_malloc((size_t) mi->width / 2 * mi->height, // GRR POSSIBLE OVERFLOW / FIXME
++ "maki_make_pixel_data#2");
++
++ for(y = 0; y < mi->height; y++){
++ for(x = 0; x < mi->width; x += 2){
++ byte b;
++ b = pic[y * mi->width + x] << 4 | pic[y * mi->width + x + 1];
++ mi->forma[y * mi->width / 2 + x / 2] = b;
++ mi->formb[y * mi->width / 2 + x / 2] = b;
++ }
++ }
++
++ for(y = mi->height - 1; y >= 2; y--){
++ for(x = 0; x < mi->width / 2; x++){
++ mi->forma[y * mi->width / 2 + x] ^=
++ mi->forma[(y - 2) * mi->width / 2 + x];
++ }
++ }
++
++ for(y = mi->height - 1; y >= 4; y--){
++ for(x = 0; x < mi->width / 2; x++){
++ mi->formb[y * mi->width / 2 + x] ^=
++ mi->formb[(y - 4) * mi->width / 2 + x];
++ }
++ }
++
++ nza = nzb = 0;
++ for(i = 0; i < mi->width / 2 * mi->height; i++){
++ if(mi->forma[i] != 0)
++ nza++;
++ if(mi->formb[i] != 0)
++ nzb++;
++ }
++ if(nza > nzb){
++ mi->m_maki01b = 1;
++ free(mi->forma);
++ mi->forma = NULL;
++ }else{
++ mi->m_maki01b = 0;
++ free(mi->formb);
++ mi->formb = NULL;
++ }
++}
++
++static void maki_make_virtual_screen(mi)
++ struct maki_info *mi;
++{
++ int bpl = mi->width / 2 / 8;
++ int vsi, pai, pbi, max_pai, max_pbi;
++ byte mask;
++ byte *pixels;
++ int x, y;
++
++ mi->vs = maki_malloc((size_t) bpl * mi->height, // GRR POSSIBLE OVERFLOW / FIXME
++ "maki_make_virtual_screen#1");
++
++ if(mi->m_maki01b)
++ pixels = mi->formb;
++ else
++ pixels = mi->forma;
++
++ vsi = pai = pbi = 0;
++ max_pai = max_pbi = -1;
++ mask = 0x80;
++ for(y = 0; y < mi->height; y++){
++ for(x = 0; x < mi->width / 2; x++){
++ if(pixels[y * mi->width / 2 + x] == 0){
++ mi->vs[vsi] &= ~mask;
++ }else{
++ mi->vs[vsi] |= mask;
++ if(y < 200){
++ if(pai > max_pai){
++ max_pai += 1024;
++ mi->pa = maki_realloc(mi->pa, (size_t) max_pai + 1,
++ "maki_make_virtual_screen#2");
++ }
++ mi->pa[pai++] = pixels[y * mi->width / 2 + x];
++ }else{
++ if(pbi > max_pbi){
++ max_pbi += 1024;
++ mi->pb = maki_realloc(mi->pb, (size_t) max_pbi + 2,
++ "maki_make_virtual_screen#3");
++ }
++ mi->pb[pbi++] = pixels[y * mi->width / 2 + x];
++ }
++ }
++
++ if((mask >>= 1) == 0){
++ mask = 0x80;
++ vsi++;
++ }
++ }
++ }
++
++ mi->pa_size = pai;
++ mi->pb_size = pbi;
++}
++
++static void maki_make_flags(mi)
++ struct maki_info *mi;
++{
++ int bpl = mi->width / 2 / 8;
++ int fbi, max_fbi;
++ int fai;
++ int x, y;
++ byte mask;
++
++ mi->fa = maki_malloc((size_t) bpl * mi->height, "maki_make_flags#1"); // GRR POSSIBLE OVERFLOW / FIXME
++
++ fbi = fai = 0;
++ max_fbi = -1;
++ mask = 0x80;
++ for(y = 0; y < mi->height; y += 4){
++ for(x = 0; x < mi->width / 2; x += 4){
++ if(x % 8 == 0){
++ if(H4(mi->vs[ y * bpl + x / 8]) == 0 &&
++ H4(mi->vs[(y + 1) * bpl + x / 8]) == 0 &&
++ H4(mi->vs[(y + 2) * bpl + x / 8]) == 0 &&
++ H4(mi->vs[(y + 3) * bpl + x / 8]) == 0){
++ mi->fa[fai] &= ~mask;
++ }else{
++ mi->fa[fai] |= mask;
++ if(fbi + 1 > max_fbi){
++ max_fbi += 1024;
++ mi->fb = maki_realloc(mi->fb, (size_t) max_fbi + 1,
++ "maki_make_flags#2");
++ }
++ mi->fb[fbi++] = H4(mi->vs[ y * bpl + x / 8]) << 4
++ | H4(mi->vs[(y + 1) * bpl + x / 8]);
++ mi->fb[fbi++] = H4(mi->vs[(y + 2) * bpl + x / 8]) << 4
++ | H4(mi->vs[(y + 3) * bpl + x / 8]);
++ }
++ }else{
++ if(L4(mi->vs[ y * bpl + x / 8]) == 0 &&
++ L4(mi->vs[(y + 1) * bpl + x / 8]) == 0 &&
++ L4(mi->vs[(y + 2) * bpl + x / 8]) == 0 &&
++ L4(mi->vs[(y + 3) * bpl + x / 8]) == 0){
++ mi->fa[fai] &= ~mask;
++ }else{
++ mi->fa[fai] |= mask;
++ if(fbi + 1 > max_fbi){
++ max_fbi += 1024;
++ mi->fb = maki_realloc(mi->fb, (size_t) max_fbi + 1,
++ "maki_make_flags#3");
++ }
++ mi->fb[fbi++] = L4(mi->vs[ y * bpl + x / 8]) << 4
++ | L4(mi->vs[(y + 1) * bpl + x / 8]);
++ mi->fb[fbi++] = L4(mi->vs[(y + 2) * bpl + x / 8]) << 4
++ | L4(mi->vs[(y + 3) * bpl + x / 8]);
++ }
++ }
++
++ if((mask >>= 1) == 0){
++ mask = 0x80;
++ fai++;
++ }
++ }
++ }
++
++ mi->fb_size = fbi;
++}
++
++static void maki_write_check_id(mi)
++ struct maki_info *mi;
++{
++ char *id = mi->m_maki01b ? maki_id_b : maki_id_a;
++ if(fwrite(id, (size_t) 8, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_WRITE);
++}
++
++static void maki_write_comment(mi)
++ struct maki_info *mi;
++{
++ char buf[24];
++ char *p;
++ int i = 0;
++
++ strcpy(buf, "XV ");
++
++ if((p = (char *) getenv("USER")) == NULL)
++ p = "????????";
++ for(i = 5; i < 23; i++){
++ if(*p == '\0')
++ break;
++ buf[i] = *p++;
++ }
++ for( ; i < 23; i++)
++ buf[i] = ' ';
++
++ buf[i] = '\032'; /* ^Z, 0x1a */
++
++ if(fwrite(buf, (size_t) 24, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_WRITE);
++}
++
++static void maki_write_header(mi)
++ struct maki_info *mi;
++{
++ byte buf[16];
++
++ if(DEBUG) maki_show_maki_info(mi);
++
++#define set_word(i, v) {buf[i]=(v)>>8&0xff;buf[i+1]=(v)&0xff;}
++ set_word(0, mi->fb_size);
++ set_word(2, mi->pa_size);
++ set_word(4, mi->pb_size);
++ set_word(6, mi->ext_flag);
++ set_word(8, mi->x0);
++ set_word(10, mi->y0);
++ set_word(12, mi->x1 + 1);
++ set_word(14, mi->y1 + 1);
++#undef set_word
++
++ if(fwrite(buf, (size_t) 16, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_WRITE);
++}
++
++static void maki_write_palette(mi, r, g, b, grey)
++ struct maki_info *mi;
++ byte *r, *g, *b;
++ int grey;
++{
++ int i;
++ char buf[3];
++ for(i = 0; i < mi->numcols; i++){
++ buf[0] = *g++;
++ buf[1] = *r++;
++ buf[2] = *b++;
++ if(grey)
++ buf[0] = buf[1] = buf[2] = MONO(buf[1], buf[0], buf[2]);
++ if(fwrite(buf, (size_t) 3, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_WRITE);
++ }
++ for( ; i < 16; i++){
++ if(fwrite(buf, (size_t) 3, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_WRITE);
++ }
++}
++
++static void maki_write_flags(mi)
++ struct maki_info *mi;
++{
++ int bpl = mi->width / 2 / 8;
++ if(fwrite(mi->fa, (size_t) bpl * mi->height / 16, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_WRITE);
++
++ if(fwrite(mi->fb, (size_t) mi->fb_size, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_WRITE);
++}
++
++static void maki_write_pixel_data(mi)
++ struct maki_info *mi;
++{
++ if(fwrite(mi->pa, (size_t) mi->pa_size, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_WRITE);
++
++ if(fwrite(mi->pb, (size_t) mi->pb_size, (size_t) 1, mi->fp) != 1)
++ maki_file_error(mi, MAKI_WRITE);
++}
++
++
++
++static void maki_init_info(mi)
++ struct maki_info *mi;
++{
++ xvbzero((char *)mi, sizeof(struct maki_info));
++ mi->fp = NULL;
++ mi->fsize = 0;
++ mi->x0 = mi->y0 = mi->x1 = mi->y1 = 0;
++ mi->width = mi->height = 0;
++ mi->aspect = 1.0;
++ mi->fb_size = mi->pa_size = mi->pb_size = 0;
++ mi->m_maki01b = mi->m_200 = mi->m_dig8 = 0;
++ mi->ext_flag = 0;
++ mi->fa = mi->fb = mi->pa = mi->pb = NULL;
++ mi->vs = NULL;
++ mi->numcols = 16;
++ mi->forma = mi->formb = NULL;
++}
++
++static void maki_cleanup_maki_info(mi, writing)
++ struct maki_info *mi;
++ int writing;
++{
++ if(mi->fp && !writing)
++ fclose(mi->fp);
++ if(mi->fa)
++ free(mi->fa);
++ if(mi->fb)
++ free(mi->fb);
++ if(mi->pa)
++ free(mi->pa);
++ if(mi->pb)
++ free(mi->pb);
++ if(mi->vs)
++ free(mi->vs);
++ if(mi->forma)
++ free(mi->forma);
++ if(mi->formb)
++ free(mi->formb);
++}
++
++static void maki_cleanup_pinfo(pi)
++ PICINFO *pi;
++{
++ if(pi->pic){
++ free(pi->pic);
++ pi->pic = NULL;
++ }
++}
++
++static void maki_memory_error(scm, fn)
++ char *scm, *fn;
++{
++ char buf[128];
++ sprintf(buf, "%s: coulndn't allocate memory. (%s)", scm, fn);
++ FatalError(buf);
++}
++
++static void maki_error(mi, mn)
++ struct maki_info *mi;
++ int mn;
++{
++ SetISTR(ISTR_WARNING, "%s", maki_msgs[mn]);
++ longjmp(mi->jmp, 1);
++}
++
++static void maki_file_error(mi, mn)
++ struct maki_info *mi;
++ int mn;
++{
++ if(feof(mi->fp))
++ SetISTR(ISTR_WARNING, "%s (end of file)", maki_msgs[mn]);
++ else
++ SetISTR(ISTR_WARNING, "%s (%s)", maki_msgs[mn], ERRSTR(errno));
++ longjmp(mi->jmp, 1);
++}
++
++static void maki_file_warning(mi, mn)
++ struct maki_info *mi;
++ int mn;
++{
++ if(feof(mi->fp))
++ SetISTR(ISTR_WARNING, "%s (end of file)", maki_msgs[mn]);
++ else
++ SetISTR(ISTR_WARNING, "%s (%s)", maki_msgs[mn], ERRSTR(errno));
++}
++
++static void maki_show_maki_info(mi)
++ struct maki_info *mi;
++{
++ fprintf(stderr, " file size: %ld.\n", mi->fsize);
++ fprintf(stderr, " image size: %dx%d.\n", mi->width, mi->height);
++ fprintf(stderr, " aspect: %f.\n", mi->aspect);
++ fprintf(stderr, " flag B size: %ld.\n", mi->fb_size);
++ fprintf(stderr, " pixel data size: A:%ld, B:%ld.\n",
++ mi->pa_size, mi->pb_size);
++ fprintf(stderr, " MAKI01B: %s.\n", mi->m_maki01b ? "true" : "false");
++ fprintf(stderr, " 200 line mode: %s.\n", mi->m_200 ? "true" : "false");
++ fprintf(stderr, " digital 8 colors: %s.\n", mi->m_dig8 ? "true" : "false");
++}
++
++static void *maki_malloc(n, fn)
++ size_t n;
++ char *fn;
++{
++ void *r = (void *) malloc(n);
++ if(r == NULL)
++ maki_memory_error("malloc", fn);
++ return r;
++}
++
++static void *maki_realloc(p, n, fn)
++ void *p;
++ size_t n;
++ char *fn;
++{
++ void *r = (p == NULL) ? (void *) malloc(n) : (void *) realloc(p, n);
++ if(r == NULL)
++ maki_memory_error("realloc", fn);
++ return r;
++}
++#endif /* HAVE_MAKI */
+diff -u -r --new-file xv-3.10a.orig/xvmgcsfx.c xv-3.10a/xvmgcsfx.c
+--- xv-3.10a.orig/xvmgcsfx.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvmgcsfx.c 2007-04-15 17:02:32.000000000 -0500
+@@ -0,0 +1,2276 @@
++/*
++ * $Id: xvmgcsfx.c,v 1.23 95/11/27 19:03:36 tin329 Exp Locker: tin329 $
++ * xvmgcsfx.c - Use the filters as input and output method.
++ *
++ * Features
++ * ========
++ * Use the filters as input and output method for load and save unsupported
++ * image format file. The filter command is recognized by definition of
++ * magic number or suffix in "~/.xv_mgcsfx" .
++ *
++ * Bugs
++ * ====
++ * There are many bugs.
++ * Let's go hunting for insects with an insect net. (it's all joke.)
++ *
++ * Author
++ * ======
++ * Tetsuya INOUE <tin329@chino.it.okayama-u.ac.jp>
++ */
++
++/*
++ * Known Bugs and Todo / $B$"$l$3$l5$$K$J$k$3$H(B
++ *
++ * ~/.xv_mgcsfx $BFb(B
++ * $B!&Dj5A$,IT40A4$@$H%(%i!<(B (':'$B$N?t(B)$B!#(B
++ * $B!&%G%j%_%?$H$7$F(B ':' $B$r;H$&$N$G!"%9%?!<%H%"%C%W%U%!%$%kFb$G(B
++ * ':' $B$rMQ$$$FDj5A$O$G$-$J$$!#(B'\:'$B$G$b%@%a!#(B
++ * $B!&(B magic $B%?%$%W$G!"#8?J?t$O#37eJ,#0!A#7$rD4$Y!"#1#6?J?t$O(B
++ * isxdigit $B$,??$rJV$94VCf=hM}$5$l$k!#$7$+$7!"#1#b#y#t#e$H(B
++ * $B$7$F$7$+I>2A$5$l$J$$!#(B
++ * $B!&%W%j%W%m%;%C%5$r;H$&$H$-$O!"%3%a%s%H$N=q$-J}$KCm0U$7$J$1$l$P$J(B
++ * $B$i$J$$!#%W%j%W%m%;%C%5$K$h$C$F$O%3%a%s%H$,%(%i!<$K$J$k!#(B
++ * $B!&%Q%$%W$X$NF~=PNO$N%U%)!<%^%C%H$N<oN`$,(B PNM $B$N$_(B
++ * $BF~NO(B
++ * $B%U%!%$%k%]%$%s%?$r(B seek $B$7$F$O$$$1$J$$(B
++ * $B%U%!%$%k%5%$%:$rMQ$$$F$O$$$1$J$$(B
++ * $B=PNO(B
++ * $B%U%!%$%k%]%$%s%?$r(B seek $B$7$F$O$$$1$J$$(B
++ * exec $B$G$-$J$/$F=*N;$7$?%W%m%;%9$K=q$-9~$_IT2D(B
++ * $B!&%5%U%#%C%/%9$H%^%8%C%/%J%s%P!<$N;H$$J,$1$r$I$&$9$k$+!#(B
++ * $B%^%8%C%/%J%s%P!<$,F1$8$G!"%5%U%#%C%/%9$,0[$J$k>l9g$rG'$a$k$+!)(B
++ * $B!&(Bcompress(gzip)$B$N%U%!%$%k$O%F%s%]%i%j$G$O(B xvtmp??? $B$H$$$&L>A0$J(B
++ * $B$N$G(B suffix $B$G$O<1JL$G$-$J$$!#(B
++ *
++ * $BG'<1$9$k;~$K(B MACBINARY $B$K$OIi$1$k(B(in xv.c)$B!#(B
++ *
++ * $BB?=E$K(B pipe $B$rDL$9$3$H$,$G$-$J$$!#(B(pipe $B$,(B seek $B$G$-$J$$$+$i(B)
++ * $B!&(Bsocketpair $B$G!"(Brecv $B$K(B MSG_PEEK $B%U%i%0$r$D$+$C$F6uFI$_$9$k!#(B
++ * $B!&$3$l$r$d$k$H%U%!%$%k$NG'<1$,$a$A$c$a$A$cCY$/$J$k!#(B
++ *
++ * $B%j%=!<%9$G@_Dj(B
++ * $B!&%j%=!<%9$G@_Dj$9$kJ}$,LLE]$/$5$$(B
++ *
++ * $B%^%8%C%/%J%s%P!<$N@_Dj$K@55,I=8=(B
++ *
++ * $B%;!<%VMQ%W%m%;%9$,<:GT$9$k>l9g$NBP:v$,:#0l$D(B
++ *
++ * DEC OSF/1 V3.0 $B$G$O!"%Q%$%W$K%G!<%?$,$^$@$J$$;~$KFI$_9~$b$&$H$9$k$H!"(B
++ * read $B$,IT40A4$K$J$k!#(B(in xvpbm.c)
++ * $BF1MM$K=q$-9~$_;~$K$bLdBj$,@8$8$k$+$b$7$l$J$$!#(B
++ */
++
++#define NEEDSDIR /* for stat() */
++#include "xv.h"
++
++
++#ifdef HAVE_MGCSFX
++
++
++#ifdef __osf__
++# ifdef __alpha
++# define ARCHITECTURE64 1
++# endif /* __alpha */
++#endif /* __osf__ */
++
++#ifdef ARCHITECTURE64
++typedef short int16;
++typedef int int32;
++typedef long int64;
++#else
++typedef short int16;
++typedef long int32;
++#endif /* ARCHITECTURE64 */
++
++#ifdef sgi
++# define vfork fork
++#endif
++
++#define USE_SIGCHLD
++#if 0
++# undef USE_SIGCHLD
++#endif
++
++#ifdef USE_SIGCHLD
++# include <sys/wait.h>
++#endif
++
++typedef struct _mgcsfxtab
++{
++ struct _mgcsfxtab *next;
++ char *description;
++ int mgcsfx_type;
++ int offset;
++ union{
++ int16 int16_data;
++ int32 int32_data;
++ char *string_data;
++ } dt;
++ int string_len;
++ char *suffix;
++ int input_image_type;
++ char *input_command;
++ int output_image_type;
++ char *output_command;
++} mgcsfxtab;
++
++
++#ifndef MGCSFXDIR
++# define MGCSFXDIR "/usr/local/lib"
++#endif
++#ifndef SYSCONFDIR
++# define SYSCONFDIR MGCSFXDIR
++#endif
++#ifndef MGCSFX_SITE_RC
++# define MGCSFX_SITE_RC "xv_mgcsfx"
++#endif
++#ifndef MGCSFX_RC
++# define MGCSFX_RC ".xv_mgcsfx"
++#endif
++
++#ifdef USE_MGCSFX_PREPROCESSOR
++# ifndef MGCSFX_PREPROCESSOR
++# define MGCSFX_PREPROCESSOR "/usr/lib/cpp"
++# endif
++#endif
++
++
++/* Check type for Magic number and Suffix */
++enum {T_UNKNOWN,
++ T_MAGIC, T_SUFFIX,
++ T_BEINT16, T_BEINT32, T_BEINT64,
++ T_LEINT16, T_LEINT32, T_LEINT64};
++
++/* Image Type for input and output format */
++enum {IT_UNKNOWN,
++#ifdef HAVE_MGCSFX_AUTO
++ IT_AUTO,
++#endif /* HAVE_MGCSFX_AUTO */
++ IT_PNM, IT_PPM, IT_PGM, IT_PBM,
++ IT_PNM_RAW, IT_PPM_RAW, IT_PGM_RAW, IT_PBM_RAW,
++ IT_PNM_ASCII, IT_PPM_ASCII, IT_PGM_ASCII, IT_PBM_ASCII,
++ IT_GIF, IT_JPEG, IT_TIFF, IT_JFIF, /* IT_PS, IT_COMPRESS,*/
++ IT_XBM, IT_XPM, IT_BMP, IT_SUNRAS, IT_IRIS, IT_XWD,
++ /* IT_TARGA, IT_FITS, IT_PM, IT_UTAHRLE, IT_PCX, IT_PDSVICAR, IT_IFF, */
++ IT_MAG, IT_MAKI, IT_PI, IT_PIC, IT_PIC2 /* , IT_PCD */};
++
++
++/*--------------------------------------------------------------------------*/
++void mgcsfx_handler PARM((int));
++void mgcsfx_handler_setup PARM((void));
++
++#ifdef USE_MGCSFX_PREPROCESSOR
++static char *get_tmp_fname PARM((void));
++static char *make_preprocessed_file PARM((char *));
++#endif /* USE_MGCSFX_PREPROCESSOR */
++
++int is_mgcsfx PARM((char *, unsigned char *, int));
++
++char *mgcsfx_auto_input_com PARM((char *));
++
++
++static mgcsfxtab *free_mgcsfx PARM((mgcsfxtab *));
++static char *fgettoken PARM((FILE*, int));
++static int string_fin PARM((char *));
++static int type_mgcsfx PARM((char *));
++static int type_image PARM((char *));
++
++static void read_mgcsfx PARM((mgcsfxtab **, char *));
++static void init_mgcsfx PARM((void));
++static mgcsfxtab *find_mgcsfx PARM((char *, unsigned char *, int));
++
++int LoadMGCSFX PARM((char *, PICINFO *));
++
++#ifdef SVR4
++typedef void Sigfunc(int);
++static Sigfunc *xv_signal PARM((int , Sigfunc *));
++#endif
++
++/*--------------------------------------------------------------------------*/
++mgcsfxtab *mgcsfx_table = NULL;
++int mgcsfx_setup_flag = 0;
++
++int nitem_mgcsfx = 0;
++int desc_width = 0;
++
++int max_offset_mgcsfx = 0;
++int max_length_mgcsfx = 0;
++int need_buf_size = 0;
++
++static char input_command_ex[1024];
++static int input_command_ex_flag = 0;
++
++#ifdef USE_SIGCHLD
++static int w_p_fail=0;
++#endif
++
++/*--------------------------------------------------------------------------*/
++
++/***************************************************/
++void mgcsfx_handler(sig)
++ int sig;
++{
++#ifdef USE_SIGCHLD
++ int pid, pst;
++#endif
++
++#if defined(SYSV) || defined(SVR4)
++ sighold(sig);
++#else
++ sigblock(sigmask(sig));
++#endif
++
++#ifdef USE_SIGCHLD
++ if(w_p_fail == 1){
++ /*
++ * At this point, process write to broken pipe.
++ * Probably external command was can't exec.
++ */
++ w_p_fail = 2;
++ pid = wait(&pst);
++ }
++#endif
++
++ return;
++
++ /* Quit(1); */ /*exit(1);*/
++}
++
++void mgcsfx_handler_setup()
++{
++#ifdef SVR4
++ xv_signal(SIGPIPE, (void (*)PARM((int))) mgcsfx_handler);
++ xv_signal(SIGCHLD, (void (*)PARM((int))) mgcsfx_handler);
++#else
++# ifdef SYSV
++ sigset(SIGPIPE, (void (*)PARM((int))) mgcsfx_handler);
++ sigset(SIGCHLD, (void (*)PARM((int))) mgcsfx_handler);
++# else
++ signal(SIGPIPE, (void (*)PARM((int))) mgcsfx_handler);
++ signal(SIGCHLD, (void (*)PARM((int))) mgcsfx_handler);
++# endif
++#endif
++}
++
++/***************************************************/
++#ifdef USE_MGCSFX_PREPROCESSOR
++static char *get_tmp_fname()
++{
++ static char tmp[MAXPATHLEN+1];
++
++#ifndef VMS
++ sprintf(tmp, "%s/xvmgcsfxXXXXXX",tmpdir);
++#else
++ /* sprintf(tmp, "Sys$Scratch:xvmgcsfxXXXXXX"); */
++ strcpy(tmp, "[]xvmgcsfxXXXXXX");
++#endif /* VMS */
++
++#ifdef USE_MKSTEMP
++ close(mkstemp(tmp));
++#else
++ mktemp(tmp);
++#endif
++
++ return tmp;
++}
++
++static char *make_preprocessed_file(fname)
++ char *fname;
++{
++ char buf[512];
++ char *tmp_name;
++
++ tmp_name = get_tmp_fname();
++
++#ifndef VMS
++ sprintf(buf,"%s %s > %s", MGCSFX_PREPROCESSOR, fname, tmp_name);
++#else
++ sprintf(buf,"%s %s > %s", MGCSFX_PREPROCESSOR, fname, tmp_name); /* really OK? */
++#endif
++
++ SetISTR(ISTR_INFO, "Preprocessing '%s'...", BaseName(fname));
++#ifndef VMS
++ if (system(buf))
++#else
++ if (!system(buf))
++#endif
++ {
++ SetISTR(ISTR_INFO, "Unable to preprocess '%s'.", BaseName(fname));
++ Warning();
++ return NULL;
++ }
++
++ return tmp_name;
++}
++#endif /* USE_MGCSFX_PREPROCESSOR */
++
++/***************************************************/
++/* $BG'<1$G$-$k%U%!%$%k$+$I$&$+D4$Y$k(B */
++int is_mgcsfx(fname,buffer,size)
++ char *fname;
++ unsigned char *buffer;
++ int size;
++{
++ mgcsfxtab *magic;
++ FILE *fp;
++ unsigned char *buf;
++ int s;
++
++ if(nomgcsfx){
++ return 0;
++ }else{
++ if(size < need_buf_size){
++ if((buf = (unsigned char *)calloc(need_buf_size, sizeof(char)))==NULL){
++ fprintf(stderr,"Can't allocate memory\n");
++ return 0;
++ }
++ if((fp = xv_fopen(fname, "r"))==NULL){
++ fprintf(stderr,"Can't open file %s\n", fname);
++ free(buf);
++ return 0;
++ }
++ s = fread(buf, 1, need_buf_size, fp);
++ if((magic = find_mgcsfx(fname, buf, s))!=NULL &&
++ magic->input_command != NULL){
++ free(buf);
++ fclose(fp);
++ return 1;
++ }else{
++ free(buf);
++ fclose(fp);
++ return 0;
++ }
++ }else{
++ if((magic = find_mgcsfx(fname, buffer, size))!=NULL &&
++ magic->input_command != NULL){
++ return 1;
++ }else{
++ return 0;
++ }
++ }
++ }
++}
++
++#ifdef HAVE_MGCSFX_AUTO
++char *mgcsfx_auto_input_com(fname)
++char *fname;
++{
++ static char command[1024];
++ mgcsfxtab *magic;
++ char *ptr;
++
++ FILE *fp;
++ unsigned char *buf;
++ int s;
++
++ if((buf = (unsigned char *)calloc(need_buf_size, sizeof(char)))==NULL){
++ fprintf(stderr,"Can't allocate memory\n");
++ return NULL;
++ }
++ if((fp = xv_fopen(fname, "r"))==NULL){
++ fprintf(stderr,"Can't open file %s\n", fname);
++ free(buf);
++ return NULL;
++ }
++ s = fread(buf, 1, need_buf_size, fp);
++ if((magic = find_mgcsfx(fname, buf, s))!=NULL &&
++ magic->input_command != NULL && magic->input_image_type == IT_AUTO){
++ if ((ptr = strstr(magic->input_command, "%s"))){
++ sprintf(command, magic->input_command, fname);
++ }else{
++ sprintf(command, "%s < %s", magic->input_command, fname);
++ }
++ free(buf);
++ fclose(fp);
++ return command;
++ }else{
++ free(buf);
++ fclose(fp);
++ return NULL;
++ }
++}
++#endif /* HAVE_MGCSFX_AUTO */
++
++/***************************************************/
++static mgcsfxtab *free_mgcsfx(m)
++ mgcsfxtab *m;
++{
++ mgcsfxtab *next;
++ if(m == NULL) return NULL;
++ next = m->next;
++ if(m->description != NULL) free(m->description);
++ if(m->mgcsfx_type == T_MAGIC && m->dt.string_data != NULL)
++ free(m->dt.string_data);
++ if(m->suffix != NULL) free(m->suffix);
++ if(m->input_command != NULL) free(m->input_command);
++ if(m->output_command != NULL) free(m->output_command);
++ free(m);
++ return next;
++}
++
++
++
++/***************************************************/
++/* char c $B$^$?$O(B '\n' $B$G6h@Z$i$l$?J8;zNs$r<h$j=P$9(B
++ * $B%U%!%$%k$N:G8e$^$GFI$s$@$i(B NULL $B$rJV$9(B
++ * $B2~9T$J$i2~9T$rJV$9(B($B2~9T$G6h@Z$i$l$?>l9g$O(B '\n' $B$r%9%H%j!<%`$KLa$9(B)
++ */
++#define CBUF_SIZE 1024
++static char *fgettoken(fp, c)
++ FILE *fp;
++ int c; /* Real mean is char */
++{
++ char *buf;
++ char *buf2;
++ int i;
++ int n=0;
++ int max=0;
++ int count = 1;
++
++ char *ss;
++ char *se;
++
++ if((buf = (char *)calloc(CBUF_SIZE, sizeof(char))) == NULL){
++ fprintf(stderr,"Can't allocate memory\n");
++ exit(1);
++ }
++ max = CBUF_SIZE;
++ count = 2;
++
++ do{
++ if((i = getc(fp))==EOF || i == '\n' || i == c) break;
++
++ buf[n] = (char)i;
++
++ if(i != c && n == max-1){
++ buf[max] = '\0';
++ if((buf2 = (char *)calloc(CBUF_SIZE * count, sizeof(char))) == NULL){
++ fprintf(stderr,"Can't allocate memory\n");
++ exit(1);
++ }
++ strcpy(buf2, buf);
++ free(buf);
++ buf = buf2;
++ buf2 = NULL;
++ max = CBUF_SIZE * count;
++ count++;
++ }
++
++ n++;
++ }while(i != c);
++
++ buf[n] = '\0';
++
++ /* $B:G=i$H:G8e$N6uGrJ8;z$r@Z$j5M$a$k(B */
++ ss = buf + strspn(buf, " \t\b\r\n"); /* find the first non-white space */
++ se = buf + strlen(buf); /* find the end of the string */
++
++ /* strip from the end first */
++ while ((--se >= ss) && strchr(" \t\b\r\n", *se));
++ *(++se) = '\0';
++
++ if(i == EOF && strlen(ss)==0){ /* EOF $B$J$i(B NULL $B$rJV$9(B */
++ free(buf);
++ return NULL;
++ }else if(i == '\n' && strlen(ss)==0){ /* $B2~9T$N$_$N>l9g(B */
++ static char cr[2] = {'\n','\0'};
++ buf2 = strdup(cr);
++ free(buf);
++ return buf2;
++ }else{ /* $BDL>o(B */
++ if(i == '\n' && strlen(ss)>0) ungetc(i,fp);
++ buf2 = strdup(ss);
++ free(buf);
++ return buf2;
++ }
++}
++
++
++
++/***************************************************/
++/* $BJ8;zNsCf$NFC<l5-9f(B(\)$B$r@5$7$$$b$N$K$9$k(B
++ */
++static int string_fin(string_data)
++ char *string_data;
++{
++ char *cptr;
++ char *ptr;
++ int length;
++
++ /* Change all the \xx sequences into a single character */
++ cptr = string_data;
++
++ for (ptr = cptr; *ptr; ++ptr){
++ if (*ptr != '\\'){
++ *cptr = *ptr;
++ }else{
++ switch (*(++ptr)){
++#if defined(__STDC__)
++ case 'a': /* Audible alert (terminal bell) */
++ *cptr = '\007';
++ break;
++ case '?': /* Question mark */
++ *cptr = '\?';
++ break;
++#endif
++ case 'b': /* Backspace */
++ *cptr = '\b';
++ break;
++ case 'f': /* Form feed */
++ *cptr = '\f';
++ break;
++ case 'n': /* Line feed */
++ *cptr = '\n';
++ break;
++ case 'r': /* Carriage return */
++ *cptr = '\r';
++ break;
++ case 't': /* Horizontal tab */
++ *cptr = '\t';
++ break;
++ case 'v': /* Vertical tab */
++ *cptr = '\v';
++ break;
++ case '\\': /* Backslash */
++ *cptr = '\\';
++ break;
++ case '\'': /* Single quote */
++ *cptr = '\'';
++ break;
++ case '"': /* Double quote */
++ *cptr = '\"';
++ break;
++ case '0': /* Octal constant \0 ... \377 */
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ if ((ptr[1] >= '0') && (ptr[1] <= '7')){
++ if ((ptr[2] >= '0') && (ptr[2] <= '7')){ /* \000 ...\377 */
++ *cptr = ((*ptr - '0') * 64) +((ptr[1] - '0') * 8) +(ptr[1] - '0');
++ ptr += 2;
++ }else{ /* \00 ...\77 */
++ *cptr = ((*ptr - '0') * 8) + (ptr[1] - '0');
++ ++ptr;
++ }
++ }else{ /* \0 ...\7 */
++ *cptr = *ptr - '0';
++ }
++ break;
++ case 'x': /* Hexadecimal constant \x0 .. \xff */
++ if (isxdigit (ptr[1])){
++ *cptr = 0;
++ while (isxdigit (*(++ptr)))
++ *cptr = (*cptr * 16) +
++ (*ptr > '9' ? tolower (*ptr) - ('a' - 10) : *ptr - '0');
++ --ptr;
++ break;
++ }
++ default:
++ /* *(cptr++) = '\\'; No use for treat '\z' as 'z' */
++ *cptr = *ptr;
++ break;
++ }
++ }
++ ++cptr;
++ }
++ *cptr = '\0';
++ length = cptr - string_data;
++ return length;
++}
++
++/***************************************************/
++static int type_mgcsfx(str)
++ char *str;
++{
++ if(str == NULL){
++ return T_UNKNOWN;
++ }else if(!strcmp(str, "magic") || !strcmp(str, "MAGIC")){
++ return T_MAGIC;
++ }else if(!strcmp(str, "string") || !strcmp(str, "STRING")){
++ return T_MAGIC;
++ }else if(!strcmp(str, "suffix") || !strcmp(str, "SUFFIX")){
++ return T_SUFFIX;
++ }else if(!strcmp(str, "beint16") || !strcmp(str, "BEINT16")){
++ return T_BEINT16;
++ }else if(!strcmp(str, "leint16") || !strcmp(str, "LEINT16")){
++ return T_LEINT16;
++ }else if(!strcmp(str, "beint32") || !strcmp(str, "BEINT32")){
++ return T_BEINT32;
++ }else if(!strcmp(str, "leint32") || !strcmp(str, "LEINT32")){
++ return T_LEINT32;
++ }else{
++ return T_UNKNOWN;
++ }
++}
++
++/***************************************************/
++static int type_image(str)
++ char *str;
++{
++ if(str == NULL){
++ return IT_UNKNOWN;
++#ifdef HAVE_MGCSFX_AUTO
++ }else if(!strcmp(str, "auto") || !strcmp(str, "AUTO")){
++ return IT_AUTO;
++#endif /* HAVE_MGCSFX_AUTO */
++ }else if(!strcmp(str, "pnm") || !strcmp(str, "PNM")){
++ return IT_PNM;
++ }else if(!strcmp(str, "ppm") || !strcmp(str, "PPM")){
++ return IT_PPM;
++ }else if(!strcmp(str, "pgm") || !strcmp(str, "PGM")){
++ return IT_PGM;
++ }else if(!strcmp(str, "pbm") || !strcmp(str, "PBM")){
++ return IT_PBM;
++ }else if(!strcmp(str, "pnm_raw") || !strcmp(str, "PNM_RAW")){
++ return IT_PNM_RAW;
++ }else if(!strcmp(str, "ppm_raw") || !strcmp(str, "PPM_RAW")){
++ return IT_PPM_RAW;
++ }else if(!strcmp(str, "pgm_raw") || !strcmp(str, "PGM_RAW")){
++ return IT_PGM_RAW;
++ }else if(!strcmp(str, "pbm_raw") || !strcmp(str, "PBM_RAW")){
++ return IT_PBM_RAW;
++ }else if(!strcmp(str, "pnm_ascii") || !strcmp(str, "PNM_ASCII")){
++ return IT_PNM_ASCII;
++ }else if(!strcmp(str, "ppm_ascii") || !strcmp(str, "PPM_ASCII")){
++ return IT_PPM_ASCII;
++ }else if(!strcmp(str, "pgm_ascii") || !strcmp(str, "PGM_ASCII")){
++ return IT_PGM_ASCII;
++ }else if(!strcmp(str, "pbm_ascii") || !strcmp(str, "PBM_ASCII")){
++ return IT_PBM_ASCII;
++
++ }else if(!strcmp(str, "gif") || !strcmp(str, "GIF")){
++ return IT_GIF;
++ }else if(!strcmp(str, "jpeg") || !strcmp(str, "JPEG")){
++ return IT_JPEG;
++ }else if(!strcmp(str, "tiff") || !strcmp(str, "TIFF")){
++ return IT_TIFF;
++ }else if(!strcmp(str, "jfif") || !strcmp(str, "JFIF")){
++ return IT_JFIF;
++
++ }else if(!strcmp(str, "xbm") || !strcmp(str, "XBM")){
++ return IT_XBM;
++ }else if(!strcmp(str, "xpm") || !strcmp(str, "XPM")){
++ return IT_XPM;
++ }else if(!strcmp(str, "bmp") || !strcmp(str, "BMP")){
++ return IT_BMP;
++ }else if(!strcmp(str, "sunras") || !strcmp(str, "SUNRAS")){
++ return IT_SUNRAS;
++ }else if(!strcmp(str, "iris") || !strcmp(str, "IRIS")){
++ return IT_IRIS;
++ }else if(!strcmp(str, "xwd") || !strcmp(str, "XWD")){
++ return IT_XWD;
++
++ }else if(!strcmp(str, "mag") || !strcmp(str, "MAG")){
++ return IT_MAG;
++ }else if(!strcmp(str, "maki") || !strcmp(str, "MAKI")){
++ return IT_MAKI;
++ }else if(!strcmp(str, "pi") || !strcmp(str, "PI")){
++ return IT_PI;
++ }else if(!strcmp(str, "pic") || !strcmp(str, "PIC")){
++ return IT_PIC;
++ }else if(!strcmp(str, "pic2") || !strcmp(str, "PIC2")){
++ return IT_PIC2;
++
++ }else{
++ return IT_UNKNOWN;
++ }
++}
++
++/*--------------------------------------------------------------------------*/
++#define mgcsfx_read_error(FILENAME, LINENUM, AFTERFIELD) \
++fprintf (stderr,\
++"%s: line %d: missing fields of %s field\n",\
++FILENAME, LINENUM, AFTERFIELD);
++
++#define magic_type_error(FILENAME, LINENUM, MAGICNUMBER) \
++fprintf (stderr,\
++"%s: line %d: invalid <magic type> field '%s'\n",\
++FILENAME, LINENUM, MAGICNUMBER);
++/*--------------------------------------------------------------------------*/
++
++/***************************************************/
++static void read_mgcsfx(mgcsfx_table, fname)
++ mgcsfxtab **mgcsfx_table;
++ char *fname;
++{
++ FILE *fp;
++ char *s;
++ int line_number = 0;
++ int str_len;
++ int reach_end;
++ int def_err;
++
++ char *description;
++ char *mgcsfx_type;
++ char *offset;
++ char *magic;
++ char *suffix;
++ char *i_img;
++ char *i_com;
++ char *o_img;
++ char *o_com;
++
++ mgcsfxtab *ent;
++ mgcsfxtab **entry;
++
++
++ if((fp=fopen(fname, "r"))==NULL){
++ /* fprintf(stderr, "Can't open %s\n",fname); */
++ return;
++ }
++
++ while(1){
++retry:
++ line_number++;
++ def_err = 0;
++
++ s= NULL;
++ description = mgcsfx_type = offset = magic = suffix
++ = i_img = i_com = o_img = o_com = NULL;
++ reach_end = 0;
++
++ if((s = fgettoken(fp, ':'))==NULL) break; /* EOF $B$J$i=*$j(B */
++ if(*s == '#'){/* $B@hF,$,(B '#' $B$J$iFI$_$H$P$9(B */
++ while((s = fgettoken(fp, '\n'))!=NULL){
++ if(*s == '\n'){
++ free(s);
++ goto retry;
++ }
++ free(s);
++ }
++ if(s == NULL) break;
++ }else if(*s == '\n'){/* $B6u9T$OL5;k(B */
++ free(s);
++ goto retry;
++ }
++ if(strlen(s) > 0) description = s;
++ else free(s);
++
++ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
++ if(s != NULL) free(s);
++ mgcsfx_read_error(fname, line_number, "data type");
++ goto next;
++ }
++ if(strlen(s) > 0) mgcsfx_type = s;
++ else free(s);
++
++ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
++ if(s != NULL) free(s);
++ mgcsfx_read_error(fname, line_number, "byte offset");
++ goto next;
++ }
++ if(strlen(s) > 0) offset = s;
++ else free(s);
++
++ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
++ if(s != NULL) free(s);
++ mgcsfx_read_error(fname, line_number, "magic number");
++ goto next;
++ }
++ if(strlen(s) > 0) magic = s;
++ else free(s);
++
++ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
++ if(s != NULL) free(s);
++ mgcsfx_read_error(fname, line_number, "suffix");
++ goto next;
++ }
++ if(strlen(s) > 0) suffix = s;
++ else free(s);
++
++ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
++ if(s != NULL) free(s);
++ mgcsfx_read_error(fname, line_number, "input image type");
++ goto next;
++ }
++ if(strlen(s) > 0) i_img = s;
++ else free(s);
++
++ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
++ if(s != NULL) free(s);
++ mgcsfx_read_error(fname, line_number, "input command");
++ goto next;
++ }
++ if(strlen(s) > 0) i_com = s;
++ else free(s);
++
++ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
++ if(s != NULL) free(s);
++ mgcsfx_read_error(fname, line_number, "output image type");
++ goto next;
++ }
++ if(strlen(s) > 0) o_img = s;
++ else free(s);
++
++ if((s = fgettoken(fp, '#'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
++ /*
++ free(s);
++ mgcsfx_read_error(fname, line_number, "output command");
++ goto next;
++ */
++ if(s != NULL){
++ *s = '\0';
++ reach_end = 1;
++ }
++ }
++ if(s != NULL){
++ if(strlen(s) > 0) o_com = s;
++ else free(s);
++ }
++
++ if(reach_end == 0){
++ while((s = fgettoken(fp, '\n'))!=NULL){/* $B9TKv$N%4%_$r<N$F$k(B */
++ if(*s == '\n'){
++ free(s);
++ break; /* goto next; */
++ }
++ free(s);
++ }
++ }else{
++ reach_end = 0;
++ }
++
++
++
++ /* --------------------------------------------------------------------- */
++next:;
++
++ if(DEBUG){
++ fprintf(stderr,"Read: file %s: line %d.\n", fname, line_number);
++ fprintf(stderr,"Description : %s\n",
++ description ? description : "-- error --");
++ fprintf(stderr,"Type : %s\n",
++ mgcsfx_type ? mgcsfx_type : "-- error --");
++ fprintf(stderr,"Offset : %s\n", offset ? offset : "--+--");
++ fprintf(stderr,"Magic : %s\n", magic ? magic : "--+--");
++ fprintf(stderr,"Suffix : %s\n", suffix ? suffix : "--+--");
++ fprintf(stderr,"i Image : %s\n", i_img ? i_img : "--+--");
++ fprintf(stderr,"i Command : %s\n", i_com ? i_com : "--+--");
++ fprintf(stderr,"o Image : %s\n", o_img ? o_img : "--+--");
++ fprintf(stderr,"o Command : %s\n", o_com ? o_com : "--+--");
++ fprintf(stderr,"\n");
++ }
++
++ /* create mgcsfxtab */
++ if((ent = (mgcsfxtab *) malloc (sizeof (mgcsfxtab)))==NULL){
++ fprintf(stderr,"Can't allocate memory\n");
++ exit(1);
++ }
++ ent->next = NULL;
++ ent->description = NULL;
++ ent->mgcsfx_type = T_UNKNOWN;
++ ent->offset = 0;
++ ent->string_len = 0;
++ ent->suffix = NULL;
++ ent->input_image_type = IT_UNKNOWN;
++ ent->input_command = NULL;
++ ent->output_image_type = IT_UNKNOWN;
++ ent->output_command = NULL;
++
++ if(description != NULL){
++ ent->description = description;
++ description = NULL;
++ }else{
++ fprintf (stderr,"%s: line %d: undefined <description> field.\n",
++ fname, line_number);
++ def_err ++;
++ goto next2;
++ }
++
++ if(mgcsfx_type == NULL){
++ fprintf (stderr,"%s: line %d: undefined <mgcsfx type> field.\n",
++ fname, line_number);
++ def_err ++;
++ goto next2;
++ }
++ ent->mgcsfx_type = type_mgcsfx(mgcsfx_type);
++ switch(ent->mgcsfx_type){
++ case T_SUFFIX:
++ if(suffix == NULL){
++ fprintf (stderr,
++ "%s: line %d: conflict definition : undefined <suffix> field.\n",
++ fname, line_number);
++ def_err ++;
++ goto next2;
++ }
++ break;
++ case T_BEINT16:
++ if (sscanf(magic, "%hi", &(ent->dt.int16_data)) != 1){
++ magic_type_error(fname, line_number, magic);
++ def_err ++;
++ goto next2;
++ }
++ break;
++ case T_LEINT16:
++ if (sscanf(magic, "%hi", &(ent->dt.int16_data)) != 1){
++ magic_type_error(fname, line_number, magic);
++ def_err ++;
++ goto next2;
++ }
++ break;
++#ifdef ARCHITECTURE64
++ case T_BEINT32:
++ if (sscanf(magic, "%i", &(ent->dt.int32_data)) != 1){
++ magic_type_error(fname, line_number, magic);
++ def_err ++;
++ goto next2;
++ }
++ break;
++ case T_LEINT32:
++ if (sscanf(magic, "%i", &(ent->dt.int32_data)) != 1){
++ magic_type_error(fname, line_number, magic);
++ def_err ++;
++ goto next2;
++ }
++ break;
++#else
++ case T_BEINT32:
++ if (sscanf(magic, "%li", &(ent->dt.int32_data)) != 1){
++ magic_type_error(fname, line_number, magic);
++ def_err ++;
++ goto next2;
++ }
++ break;
++ case T_LEINT32:
++ if (sscanf(magic, "%li", &(ent->dt.int32_data)) != 1){
++ magic_type_error(fname, line_number, magic);
++ def_err ++;
++ goto next2;
++ }
++ break;
++#endif /* ARCHITECTURE64 */
++ case T_MAGIC:
++ if(magic == NULL){
++ fprintf (stderr,"%s: line %d: undefined <magic> field.\n",
++ fname, line_number);
++ def_err ++;
++ goto next2;
++ }
++ if((str_len = string_fin(magic))<=0){
++ fprintf (stderr,"%s: line %d: invalid <magic> field.\n",
++ fname, line_number);
++ def_err ++;
++ goto next2;
++ }
++
++ ent->string_len = str_len;
++ if((ent->dt.string_data = (char *)malloc(str_len + 1))==NULL){
++ fprintf(stderr,"Can't allocate memory\n");
++ exit(1);
++ }
++ memcpy(ent->dt.string_data, magic, str_len + 1);
++ break;
++ case T_UNKNOWN:
++ default:
++ fprintf (stderr,"%s: line %d: invalid <mgcsfx type> field.\n",
++ fname, line_number);
++ def_err ++;
++ goto next2;
++ break;
++ };
++
++
++ if(offset == NULL){
++ if(ent->mgcsfx_type == T_MAGIC ||
++ ent->mgcsfx_type == T_BEINT16 ||
++ ent->mgcsfx_type == T_LEINT16 ||
++ ent->mgcsfx_type == T_BEINT32 ||
++ ent->mgcsfx_type == T_LEINT32){
++ fprintf (stderr,
++ "%s: line %d: conflict definition : undefined <offset> field.\n",
++ fname, line_number);
++ def_err ++;
++ goto next2;
++ }
++ }else{
++ if(ent->mgcsfx_type != T_SUFFIX) sscanf(offset, "%i", &(ent->offset));
++ }
++
++ if(suffix != NULL){
++ ent->suffix = suffix;
++ suffix = NULL;
++ }
++
++ if((i_img == NULL && i_com == NULL) && (o_img == NULL || o_com == NULL)){
++ fprintf (stderr,"%s: line %d: invalid definition.\n",
++ fname, line_number);
++ def_err ++;
++ goto next2;
++ }
++ if((o_img == NULL && o_com == NULL) && (i_img == NULL || i_com == NULL)){
++ fprintf (stderr,"%s: line %d: invalid definition.\n",
++ fname, line_number);
++ def_err ++;
++ goto next2;
++ }
++
++ if(i_img != NULL && i_com != NULL){
++ ent->input_image_type = type_image(i_img);
++ ent->input_command = i_com;
++ i_com = NULL;
++ }else{
++ ent->input_image_type = IT_UNKNOWN;
++ ent->input_command = NULL;
++ }
++
++ if(o_img != NULL && o_com != NULL){
++ ent->output_image_type = type_image(o_img);
++ ent->output_command = o_com;
++ o_com = NULL;
++ }else{
++ ent->output_image_type = IT_UNKNOWN;
++ ent->output_command = NULL;
++ }
++ /* end of create mgcsfxtab */
++
++
++next2:;
++
++ if(def_err != 0 || DEBUG){
++ fprintf(stderr,"Description : %s \t -> %s\n",
++ description ? description : "--+--",
++ ent->description ? ent->description : "-- error --");
++ fprintf(stderr,"Type : %s \t -> %d\n",
++ mgcsfx_type ? mgcsfx_type : "--+--",
++ ent->mgcsfx_type);
++ fprintf(stderr,"Offset : %s \t -> %d\n",
++ offset ? offset : "--+--",
++ ent->offset);
++
++ fprintf(stderr,"Magic : %s", magic ? magic : "--+--");
++ switch(ent->mgcsfx_type){
++ case T_BEINT16:
++ case T_LEINT16:
++ fprintf(stderr," \t -> %d\n",ent->dt.int16_data);
++ break;
++ case T_BEINT32:
++ case T_LEINT32:
++ fprintf(stderr," \t -> %ld\n",ent->dt.int32_data);
++ break;
++ case T_MAGIC:
++ fprintf(stderr," \t -> %s\n",ent->dt.string_data);
++ break;
++ default:
++ fprintf(stderr,"\n");
++ break;
++ };
++
++ fprintf(stderr,"Suffix : %s \t -> %s\n",
++ suffix ? suffix : "--+--",
++ ent->suffix ? ent->suffix : "--+--");
++ fprintf(stderr,"i Image : %s \t -> %d\n",
++ i_img ? i_img : "--+--",
++ ent->input_image_type);
++ fprintf(stderr,"i Command : %s \t -> %s\n",
++ i_com ? i_com : "--+--",
++ ent->input_command ? ent->input_command : "--+--");
++ fprintf(stderr,"o Image : %s \t -> %d\n",
++ o_img ? o_img : "--+--",
++ ent->output_image_type);
++ fprintf(stderr,"o Command : %s \t -> %s\n",
++ o_com ? o_com : "--+--",
++ ent->output_command ? ent->output_command : "--+--");
++ fprintf(stderr,"\n");
++ }
++
++ if(description != NULL) free(description);
++ if(mgcsfx_type != NULL) free(mgcsfx_type);
++ if(offset != NULL) free(offset);
++ if(magic != NULL) free(magic);
++ if(suffix != NULL) free(suffix);
++ if(i_img != NULL) free(i_img);
++ if(i_com != NULL) free(i_com);
++ if(o_img != NULL) free(o_img);
++ if(o_com != NULL) free(o_com);
++
++
++ if(def_err != 0) goto next3;
++
++ /* Override any existing entry for this magic number/file type */
++ for(entry = mgcsfx_table; *entry; entry = &((*entry)->next)){
++ if((ent->mgcsfx_type == (*entry)->mgcsfx_type) &&
++ (
++ ((ent->offset == (*entry)->offset) &&
++ (((ent->mgcsfx_type == T_BEINT16) &&
++ (ent->dt.int16_data == (*entry)->dt.int16_data)) ||
++ ((ent->mgcsfx_type == T_BEINT32) &&
++ (ent->dt.int32_data == (*entry)->dt.int32_data)) ||
++ ((ent->mgcsfx_type == T_LEINT16) &&
++ (ent->dt.int16_data == (*entry)->dt.int16_data)) ||
++ ((ent->mgcsfx_type == T_LEINT32) &&
++ (ent->dt.int32_data == (*entry)->dt.int32_data)) ||
++
++ ((ent->mgcsfx_type == T_MAGIC) &&
++ !memcmp(ent->dt.string_data, (*entry)->dt.string_data,
++ ent->string_len))
++ )) ||
++ ((ent->mgcsfx_type == T_SUFFIX) &&
++ !strcmp(ent->suffix, (*entry)->suffix))
++ )
++ ){
++
++ free ((*entry)->description);
++ (*entry)->description = ent->description;
++ ent->description = NULL;
++
++ (*entry)->input_image_type = ent->input_image_type;
++ if ((*entry)->input_command) free ((*entry)->input_command);
++ (*entry)->input_command = ent->input_command;
++ ent->input_command = NULL;
++
++ (*entry)->output_image_type = ent->output_image_type;
++ if ((*entry)->output_command) free ((*entry)->output_command);
++ (*entry)->output_command = ent->output_command;
++ ent->output_command = NULL;
++
++ free_mgcsfx(ent);
++ break;
++ }
++ }
++ if (!*entry){
++ ent->next = NULL;
++ *entry = ent;
++ }
++
++ /* if(s == NULL) break; */
++next3:;
++ if(def_err != 0) free_mgcsfx(ent);
++ } /* end of while(1) */
++}
++
++
++/***************************************************/
++/* $B%^%8%C%/%J%s%P!<Dj5A%U%!%$%kL>$rF@$F!"FI$_9~$^$;$k(B */
++static void init_mgcsfx ()
++{
++ extern char *getenv ();
++
++ char *home_dir;
++ char fname[1024];
++ mgcsfxtab *entry;
++ int len;
++ struct stat st;
++
++#ifdef USE_MGCSFX_PREPROCESSOR
++ char *pp_fname;
++#endif /* USE_MGCSFX_PREPROCESSOR */
++
++ mgcsfx_table = NULL;
++
++ mgcsfx_handler_setup();
++
++ if(nomgcsfx){
++ mgcsfx_setup_flag = 1;
++ nitem_mgcsfx = 0;
++ desc_width = 0;
++ }else{
++ sprintf (fname, "%s/%s", SYSCONFDIR, MGCSFX_SITE_RC);
++ if(stat(fname, &st) == 0 && S_ISREG(st.st_mode)){
++ /* Read the site MagicSuffix table into a linked list */
++#ifdef USE_MGCSFX_PREPROCESSOR
++ if((pp_fname = make_preprocessed_file(fname)) != NULL){
++ read_mgcsfx (&mgcsfx_table, pp_fname);
++ }
++ unlink(pp_fname);
++#else
++ read_mgcsfx (&mgcsfx_table, fname);
++#endif /* USE_MGCSFX_PREPROCESSOR */
++ }
++
++ /* Read the personal MgcSfx table into the list overriding site entries */
++ if ((home_dir = getenv ("HOME"))){
++ sprintf (fname, "%s/%s", home_dir, MGCSFX_RC);
++ if(stat(fname, &st) == 0 && S_ISREG(st.st_mode)){
++#ifdef USE_MGCSFX_PREPROCESSOR
++ if((pp_fname = make_preprocessed_file(fname)) != NULL){
++ read_mgcsfx (&mgcsfx_table, pp_fname);
++ }
++ unlink(pp_fname);
++#else
++ read_mgcsfx (&mgcsfx_table, fname);
++#endif /* USE_MGCSFX_PREPROCESSOR */
++ }
++ }
++
++ mgcsfx_setup_flag = 1;
++
++ nitem_mgcsfx = 0;
++ desc_width = 0;
++ for (entry = mgcsfx_table; entry; entry = entry->next){
++ nitem_mgcsfx ++;
++ len = strlen(entry->description);
++ if(len > desc_width) desc_width = len;
++ if(max_offset_mgcsfx < entry->offset) max_offset_mgcsfx = entry->offset;
++ if(entry->mgcsfx_type == T_MAGIC &&
++ max_length_mgcsfx < entry->string_len)
++ max_length_mgcsfx = entry->string_len;
++ }
++ if(max_length_mgcsfx == 0) max_length_mgcsfx = sizeof(int32);
++ need_buf_size = max_offset_mgcsfx + max_length_mgcsfx + 1;/* 1 is safety */
++ }
++}
++
++/***************************************************/
++/* $B%^%8%C%/%J%s%P!<$rD4$Y$F!"Dj5A$7$F$$$k%F!<%V%k$r8!:w$9$k(B
++ $B%^%8%C%/%J%s%P!<$N%F!<%V%k$rFI$_9~$s$G$$$J$$$J$iFI$_9~$`(B */
++static mgcsfxtab *find_mgcsfx (fname, buffer, buffer_size)
++ char *fname;
++ unsigned char *buffer;
++ int buffer_size;
++{
++ mgcsfxtab *entry;
++ int16 buf16;
++ int32 buf32;
++ char *suf;
++
++ if (mgcsfx_setup_flag == 0) init_mgcsfx ();
++
++ for (entry = mgcsfx_table; entry; entry = entry->next){
++ switch (entry->mgcsfx_type){
++ case T_BEINT16:
++ if ((buffer_size > 0) &&
++ ((entry->offset + sizeof (int16)) <= buffer_size)){
++ buf16 = ((char)*(buffer + entry->offset) << 8) |
++ ((char)*(buffer + entry->offset +1));
++ if(entry->dt.int16_data == buf16) return entry;
++ }
++ break;
++ case T_LEINT16:
++ if ((buffer_size > 0) &&
++ ((entry->offset + sizeof (int16)) <= buffer_size)){
++ buf16 = ((char)*(buffer + entry->offset +1) << 8) |
++ ((char)*(buffer + entry->offset));
++ if(entry->dt.int16_data == buf16) return entry;
++ }
++ break;
++ case T_BEINT32:
++ if ((buffer_size > 0) &&
++ ((entry->offset + sizeof (int32)) <= buffer_size)){
++ buf32 = ((char)*(buffer + entry->offset) << 24) |
++ ((char)*(buffer + entry->offset +1) << 16) |
++ ((char)*(buffer + entry->offset +2) << 8) |
++ ((char)*(buffer + entry->offset +3));
++ if(entry->dt.int32_data == buf32) return entry;
++ }
++ break;
++ case T_LEINT32:
++ if ((buffer_size > 0) &&
++ ((entry->offset + sizeof (int32)) <= buffer_size)){
++ buf32 = ((char)*(buffer + entry->offset +3) << 24) |
++ ((char)*(buffer + entry->offset +2) << 16) |
++ ((char)*(buffer + entry->offset +1) << 8) |
++ ((char)*(buffer + entry->offset));
++ if(entry->dt.int32_data == buf32) return entry;
++ }
++ break;
++ case T_MAGIC:
++ if ((buffer_size > 0) &&
++ ((entry->offset + entry->string_len)
++ <= buffer_size) &&
++ !memcmp (entry->dt.string_data, buffer + entry->offset,
++ entry->string_len ))
++ return entry;
++ break;
++ case T_SUFFIX:
++ if(fname != NULL && entry->suffix != NULL){
++ if(strlen(fname) - strlen(entry->suffix) > 0){
++ suf = fname + (strlen(fname) - strlen(entry->suffix));
++ if(!strcmp(suf, entry->suffix)) return entry;
++ }
++ }
++ break;
++ case T_UNKNOWN:
++ default:
++ return NULL;
++ break;
++ }
++ }
++ return NULL;
++}
++
++
++
++
++
++/***************************************************/
++/* $B%^%8%C%/%J%s%P!<$NDj5A$rD4$Y$F!"$=$l$K$"$o$;$?%3%^%s%I$r<B9T$9$k(B */
++/* if OK return 1, else if ERROR return 0 */
++int
++LoadMGCSFX(file_name, pinfo)
++ char *file_name;
++ PICINFO *pinfo;
++{
++ unsigned char *buffer;
++ int size;
++ mgcsfxtab *magic;
++ mgcsfxtab *magic_cur;
++ char *ptr;
++ char command[1024];
++ int fd[2];
++ int pid = -2;
++ int file;
++ char *fname;
++ int rv;
++ int pst;
++
++ int i_it;
++ char *i_com;
++
++ WaitCursor();
++
++ fname = file_name;
++ if((file = open (fname, O_RDONLY))<0){
++ SetISTR(ISTR_WARNING, "Can't open %s",fname);
++ return 0;
++ }
++
++ if((buffer = (unsigned char *)calloc(need_buf_size, sizeof(char))) == NULL){
++ SetISTR(ISTR_WARNING, "Can't allocate memory");
++ return 0;
++ }
++
++ magic_cur = NULL;
++
++/* do{ */
++ size = read (file, buffer, need_buf_size);
++
++ if (lseek (file, 0L, 0) < 0){ /* can't seek pipe !! */
++ fprintf (stderr, "Can't lseek %s\n", file_name);
++ close(file);
++ return 0;
++ }
++
++ magic = find_mgcsfx (fname, buffer, size);
++
++ if ((magic != NULL && magic->input_command) ||
++ (magic == NULL && mgcsfx && input_command_ex_flag)){
++
++ if(magic == NULL){
++ if (fname != NULL && (ptr = strstr(input_command_ex, "%s"))){
++ sprintf (command, input_command_ex, fname);
++ }else{
++ strcpy (command, input_command_ex);
++ fname=NULL;
++ }
++ }else{
++ /* Use stdin or give file name */
++ if (fname != NULL && (ptr = strstr(magic->input_command, "%s"))){
++ sprintf (command, magic->input_command, fname);
++ }else{
++ strcpy (command, magic->input_command);
++ fname=NULL;
++ }
++ }
++
++ /* Do the pipe/fork/exec here */
++ if (pipe (fd) < 0){
++ fprintf (stderr, "Can't pipe : %s\n", file_name);
++ close(file);
++ return 0;
++ }
++
++ if ((pid = vfork ()) < 0){
++ fprintf (stderr, "Can't vfork : %s\n", file_name);
++ close (fd[0]);
++ close (fd[1]);
++ close(file);
++ return 0;
++ }
++
++ if (!pid){
++ close(0);
++ if (fname == NULL || (open ("/dev/null", O_RDONLY) < 0)){
++ dup(file);
++ }
++ close(file);
++ close(1);
++ dup(fd[1]);
++ close(2);
++ open("/dev/null", O_WRONLY);
++ close(fd[0]);
++ execl("/bin/sh", "/bin/sh", "-c", command, 0);
++ _exit(127);
++ }
++
++ close (fd[1]);
++ dup2(fd[0], file);
++ close (fd[0]);
++ fname = NULL;
++ magic_cur = magic;
++ }
++/* } while(magic != NULL); */
++
++ free(buffer);
++
++ if(magic_cur == NULL && mgcsfx && input_command_ex_flag){
++ i_it = IT_PNM;
++ i_com = input_command_ex;
++ }else{
++ i_it = magic_cur->input_image_type;
++ i_com = magic_cur->input_command;
++ }
++
++ if((magic_cur != NULL && i_com) ||
++ (magic_cur == NULL && mgcsfx && input_command_ex_flag)){
++ switch(i_it){
++ case IT_PNM:
++ case IT_PPM:
++ case IT_PGM:
++ case IT_PBM:
++ case IT_PNM_RAW:
++ case IT_PPM_RAW:
++ case IT_PGM_RAW:
++ case IT_PBM_RAW:
++ case IT_PNM_ASCII:
++ case IT_PPM_ASCII:
++ case IT_PGM_ASCII:
++ case IT_PBM_ASCII:
++ rv = LoadPBM(file_name, pinfo, file);
++ break;
++ case IT_GIF:
++ case IT_JPEG:
++ case IT_TIFF:
++ case IT_JFIF:
++ case IT_XBM:
++ case IT_XPM:
++ case IT_BMP:
++ case IT_SUNRAS:
++ case IT_IRIS:
++ case IT_XWD:
++ case IT_MAG:
++ case IT_MAKI:
++ case IT_PI:
++ case IT_PIC:
++ case IT_PIC2:
++ SetISTR(ISTR_WARNING, "Yet supported input image type (from filter output)");
++ rv = 0;
++ break;
++ case IT_UNKNOWN:
++ SetISTR(ISTR_WARNING, "Unknown input image type (from filter output)");
++ rv = 0;
++ break;
++#ifdef HAVE_MGCSFX_AUTO
++ case IT_AUTO:
++#endif
++ default:
++ SetISTR(ISTR_WARNING, "Error in input image type (from filter output)");
++ rv = 0;
++ break;
++ }
++ }else{
++ rv = 0;
++ }
++
++ /* fail if pid still == -2? */
++ while(wait(&pst) != pid); /* FIXME? pid isn't necessarily initialized... */
++ if( *((char *)&pst) != 0 ) rv = 0;
++
++ input_command_ex_flag = 0;
++
++ return rv;
++
++ /* fclose(fp); close in Load??? */
++ /* return 0; error */
++ /* return 1; ok */
++}
++
++
++
++
++
++/*--------------------------------------------------------------------------*/
++#ifndef MGCSFX_DEFAULT_INPUT_COMMAND
++# define MGCSFX_DEFAULT_INPUT_COMMAND "tifftopnm"
++#endif
++#ifndef MGCSFX_DEFAULT_OUTPUT_COMMAND
++# define MGCSFX_DEFAULT_OUTPUT_COMMAND "pnmtotiff"
++#endif
++
++int MSWIDE = 0;
++int MSHIGH = 0;
++
++#define MS_NBUTTS 2
++#define MS_BOK 0
++#define MS_BCANC 1
++#define BUTTW 60 /* width of buttons (OK or Cancel) */
++#define BUTTH 24 /* height of buttons (OK or Cancel) */
++#define RBSIZE 15 /* width and height of RB button (select, ON or OFF)*/
++#define CWIDE 8 /* width of character */
++/* #define CHIGH height of character defined in xv.h */
++#define MARGIN 3 /* margin of button and label SPACING */
++
++#define MSD_TITLE "Save file with external command..."
++#define MSD_RBTITLE "Type of Magic and Suffix"
++#define MSD_IC_TITLE "input command"
++
++static BUTT msbut[MS_NBUTTS];
++static RBUTT *typeRB;
++
++static char output_command_ex[1024];
++static int output_command_ex_flag = 0;
++
++static int colorType;
++
++static int w_pid;
++static int w_pstatus;
++
++#define MSNAMWIDE 252 /* width of 'file name' entry window */
++#define MAXFNLEN 256 /* max len of filename being entered */
++static char DialogFileName[MAXFNLEN+100]; /* filename being entered */
++static int curPos, stPos, enPos; /* filename textedit stuff */
++
++
++static mgcsfxtab *get_mgcsfx PARM((int));
++static void changeSuffix PARM((int));
++
++static int WriteMGCSFX PARM((FILE**,byte*,int,int,int,
++ byte*,byte*,byte*,int,int,char*,
++ int, int, char*));
++void CreateMGCSFXW PARM((void));
++void MGCSFXDialog PARM((int));
++int MGCSFXCheckEvent PARM((XEvent *));
++int MGCSFXSaveParams PARM((char *, int));
++
++static void drawMSD PARM((int,int,int,int));
++static void clickMSD PARM((int,int));
++static void doCmd PARM((int));
++static int writeMGCSFX PARM((void));
++
++static void changeSuffix PARM((int));
++static void redrawNamMSD PARM((void));
++static void showFNamMSD PARM((void));
++static int keyinMSD PARM((int));
++
++int getInputCom PARM((void));
++int getOutputCom PARM((void));
++/*--------------------------------------------------------------------------*/
++
++/***************************************************/
++/* $B$I$l$rA*$s$@$+D4$Y$k!##0$O%3%^%s%I$rF~NO$9$k$b$N$H$9$k(B */
++static mgcsfxtab *get_mgcsfx(ms_type)
++ int ms_type;
++{
++ mgcsfxtab *magic;
++ int i;
++
++ magic = NULL;
++ if(ms_type != 0){
++ i = 1;
++ for(magic = mgcsfx_table; (magic && i<ms_type); magic = magic->next){i++;}
++ }
++ return magic;
++}
++
++/***************************************************/
++/* $B30It%3%^%s%I$r<B9T$7$F!"$=$l$K=PNO$9$k(B */
++/* if OK return 0, else if ERROR return -1 */
++static
++int WriteMGCSFX(fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,file_name,
++ ms_type, file, comment)
++ FILE **fp;
++ byte *pic;
++ int ptype, w,h;
++ byte *rmap, *gmap, *bmap;
++ int numcols, colorstyle;
++ char *file_name;
++ int ms_type;
++ int file; /* file descriptor */
++ char *comment;
++{
++ mgcsfxtab *magic;
++
++ int fd[2];
++ int pid;
++ int rv;
++
++ WaitCursor();
++
++#ifdef USE_SIGCHLD
++ w_p_fail = 1;
++#endif
++
++ magic = get_mgcsfx(ms_type);
++ if(ms_type != 0 && magic == NULL) return -1;
++
++ if ((ms_type == 0 && output_command_ex_flag) ||
++ (ms_type !=0 && magic != NULL && magic->output_command)){
++
++ /* Do the pipe/fork/exec here */
++ if (pipe (fd) < 0){
++ fprintf (stderr, "Can't pipe : %s\n", file_name);
++ return -1;
++ }
++
++ if ((pid = vfork ()) < 0){
++ fprintf (stderr, "Can't vfork : %s\n", file_name);
++ close (fd[0]);
++ close (fd[1]);
++ return -1;
++ }
++
++ if (!pid){
++ close(1);
++ dup(file);
++ close(file);
++ close(0);
++ dup(fd[0]);
++ close(2);
++ open("/dev/null", O_WRONLY);
++ close(fd[1]);
++ if(ms_type == 0){
++ execl("/bin/sh", "/bin/sh", "-c", output_command_ex, 0);
++ }else{
++ execl("/bin/sh", "/bin/sh", "-c", magic->output_command, 0);
++ }
++ _exit(127);
++ }
++
++ close (fd[0]);
++ dup2(fd[1], file);
++ close (fd[1]);
++
++ }else{
++ return -1;
++ }
++
++
++ *fp = fdopen(file, "w");
++
++ /* sleep(1); Best way is wait for checking SIGCHLD, but it's feel waist.*/
++
++#ifdef USE_SIGCHLD
++ if(w_p_fail != 2){
++#endif
++ if(ms_type == 0){
++ rv = WritePBM(*fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,
++ 1, comment);
++ }else{
++ switch(magic -> output_image_type){
++ case IT_PNM:
++ case IT_PPM:
++ case IT_PGM:
++ case IT_PBM:
++ case IT_PNM_RAW:
++ case IT_PPM_RAW:
++ case IT_PGM_RAW:
++ case IT_PBM_RAW:
++ rv = WritePBM(*fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,
++ 1, comment);
++ break;
++ case IT_PNM_ASCII:
++ case IT_PPM_ASCII:
++ case IT_PGM_ASCII:
++ case IT_PBM_ASCII:
++ rv = WritePBM(*fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,
++ 0, comment);
++ break;
++ case IT_GIF:
++ case IT_JPEG:
++ case IT_TIFF:
++ case IT_JFIF:
++ case IT_XBM:
++ case IT_XPM:
++ case IT_BMP:
++ case IT_SUNRAS:
++ case IT_IRIS:
++ case IT_XWD:
++ case IT_MAG:
++ case IT_MAKI:
++ case IT_PI:
++ case IT_PIC:
++ case IT_PIC2:
++ SetISTR(ISTR_WARNING, "Yet supported output image type (to filter input)");
++ rv = -1;
++ break;
++ case IT_UNKNOWN:
++ SetISTR(ISTR_WARNING, "Unknown output image type (to filter input)");
++ rv = -1;
++ break;
++#ifdef HAVE_MGCSFX_AUTO
++ case IT_AUTO:
++#endif
++ default:
++ SetISTR(ISTR_WARNING, "Error in output image type (to filter input)");
++ rv = -1;
++ break;
++ }
++ }
++#ifdef USE_SIGCHLD
++ }else{
++ rv = -1;
++ }
++#endif
++
++#ifdef USE_SIGCHLD
++ if(w_p_fail != 2){
++#endif
++ w_pid = pid;
++#ifdef USE_SIGCHLD
++ w_p_fail = 0;
++ }else{
++ rv = -1;
++ }
++#endif
++
++ output_command_ex_flag = 0;
++
++ return rv;
++
++ /* fclose(*fp); close in CloseOutFile in writeMGCSFX */
++ /* return 0; ok */
++ /* return -1; error */
++}
++
++/***************************************************/
++void CreateMGCSFXW()
++{
++ int y;
++ int type_num;
++ mgcsfxtab *entry;
++
++ if (mgcsfx_setup_flag == 0) init_mgcsfx ();
++
++ if(desc_width < strlen(MSD_IC_TITLE)) desc_width = strlen(MSD_IC_TITLE);
++ nitem_mgcsfx ++;
++
++ MSWIDE = desc_width * CWIDE + RBSIZE + 36; /* 36 is start of RB button */
++ MSHIGH = nitem_mgcsfx * (RBSIZE + MARGIN);
++
++ if(MSWIDE < strlen(MSD_TITLE) + 20) MSWIDE = strlen(MSD_TITLE) + 20;
++ if(MSWIDE < strlen(MSD_RBTITLE) + 16) MSWIDE = strlen(MSD_RBTITLE) + 16;
++ if(MSWIDE < MSNAMWIDE + 10) MSWIDE = MSNAMWIDE + 10;
++ if(MSWIDE < BUTTW * 2 + 10) MSWIDE = BUTTW * 2 + 10;
++
++ MSHIGH += 55 + LINEHIGH + 10 + BUTTH + 10;
++
++ MSWIDE += 20; /* right side margin */
++ MSHIGH += 10; /* RB buttun down side margin */
++
++
++ mgcsfxW = CreateWindow("xv mgcsfx", "XVmgcsfx", NULL,
++ MSWIDE, MSHIGH, infofg, infobg, 0);
++ if (!mgcsfxW) FatalError("can't create mgcsfx window!");
++
++ XSelectInput(theDisp, mgcsfxW,
++ ExposureMask | ButtonPressMask | KeyPressMask);
++
++ mgcsfxNameW = XCreateSimpleWindow(theDisp, mgcsfxW,
++ 10, MSHIGH-LINEHIGH-10-BUTTH-10-1,
++ (u_int) MSNAMWIDE+6, (u_int) LINEHIGH+5,
++ 1, infofg, infobg);
++ if (!mgcsfxNameW) FatalError("can't create mgcsfx name window");
++ XSelectInput(theDisp, mgcsfxNameW, ExposureMask);
++
++ /* Ok $B%\%?%s(B */
++ BTCreate(&msbut[MS_BOK], mgcsfxW,
++ MSWIDE-BUTTW-10-BUTTW-10-1, MSHIGH-BUTTH-10-1,
++ BUTTW, BUTTH,
++ "Ok", infofg, infobg, hicol, locol);
++ /* Cancel $B%\%?%s(B*/
++ BTCreate(&msbut[MS_BCANC], mgcsfxW,
++ MSWIDE-BUTTW-10-1, MSHIGH-BUTTH-10-1,
++ BUTTW, BUTTH,
++ "Cancel", infofg, infobg, hicol, locol);
++
++ y = 55;
++ /* User should input command to exec external command */
++ typeRB = RBCreate(NULL, mgcsfxW, 36, y, MSD_IC_TITLE,
++ infofg, infobg,hicol,locol);
++ y += (RBSIZE + MARGIN); /* 18 */
++
++ type_num = 1;
++ for (entry = mgcsfx_table; entry; entry = entry->next){
++ RBCreate(typeRB, mgcsfxW, 36, y, entry->description,
++ infofg, infobg,hicol,locol);
++ y += (RBSIZE + MARGIN); /* 18 */
++ if(entry->output_command == NULL){
++ RBSetActive(typeRB, type_num, 0); /* if no command, off */
++ }
++ type_num++;
++ }
++
++ XMapSubwindows(theDisp, mgcsfxW);
++}
++
++
++/***************************************************/
++void MGCSFXDialog(vis)
++ int vis;
++{
++ if (vis) {
++ CenterMapWindow(mgcsfxW, msbut[MS_BOK].x + msbut[MS_BOK].w/2,
++ msbut[MS_BOK].y + msbut[MS_BOK].h/2, MSWIDE, MSHIGH);
++ }
++ else XUnmapWindow(theDisp, mgcsfxW);
++ mgcsfxUp = vis;
++}
++
++
++/***************************************************/
++int MGCSFXCheckEvent(xev)
++ XEvent *xev;
++{
++ /* check event to see if it's for one of our subwindows. If it is,
++ deal accordingly, and return '1'. Otherwise, return '0' */
++
++ int rv;
++ rv = 1;
++
++ if (!mgcsfxUp) return (0);
++
++ if (xev->type == Expose) {
++ int x,y,w,h;
++ XExposeEvent *e = (XExposeEvent *) xev;
++ x = e->x; y = e->y; w = e->width; h = e->height;
++
++ if (e->window == mgcsfxW) drawMSD(x, y, w, h);
++ else rv = 0;
++ }
++
++ else if (xev->type == ButtonPress) {
++ XButtonEvent *e = (XButtonEvent *) xev;
++ int x,y;
++ x = e->x; y = e->y;
++
++ if (e->button == Button1) {
++ if (e->window == mgcsfxW) clickMSD(x,y);
++ else rv = 0;
++ } /* button1 */
++ else rv = 0;
++ } /* button press */
++
++ else if (xev->type == KeyPress) {
++ XKeyEvent *e = (XKeyEvent *) xev;
++ char buf[128]; KeySym ks; XComposeStatus status;
++ int stlen;
++
++ stlen = XLookupString(e,buf,128,&ks,&status);
++ buf[stlen] = '\0';
++
++ if (e->window == mgcsfxW) {
++ if (stlen) {
++ keyinMSD(buf[0]);
++ }
++ }
++ else rv = 0;
++ }
++ else rv = 0;
++
++ if (rv == 0 && (xev->type == ButtonPress || xev->type == KeyPress)) {
++ XBell(theDisp, 50);
++ rv = 1; /* eat it */
++ }
++
++ return (rv);
++}
++
++
++/***************************************************/
++int MGCSFXSaveParams(fname, col)
++ char *fname;
++ int col;
++{
++ colorType = col;
++ strcpy(DialogFileName, GetDirFName());
++ return (0);
++}
++
++/***************************************************/
++/* $B%@%$%"%m%0$rI=<($9$k$H$-$N=hM}(B */
++static void drawMSD(x,y,w,h)
++ int x,y,w,h;
++{
++ int i;
++ XRectangle xr;
++
++ xr.x = x; xr.y = y; xr.width = w; xr.height = h;
++ XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
++
++ XSetForeground(theDisp, theGC, infofg);
++ XSetBackground(theDisp, theGC, infobg);
++
++ for (i = 0; i < MS_NBUTTS; i++) BTRedraw(&msbut[i]);
++
++ ULineString(mgcsfxW, typeRB->x-16, typeRB->y-3-DESCENT,
++ MSD_RBTITLE);
++ RBRedraw(typeRB, -1);
++
++ DrawString(mgcsfxW, 20, 29, MSD_TITLE);
++
++ XSetClipMask(theDisp, theGC, None);
++
++ showFNamMSD();
++}
++
++/***************************************************/
++/* $B%@%$%"%m%0$r%/%j%C%/$7$?$H$-$N=hM}(B */
++static void clickMSD(x,y)
++ int x,y;
++{
++ int i;
++ BUTT *bp;
++
++ /* check BUTTs */
++
++ /* check the RBUTTS first, since they don't DO anything */
++ if ((i = RBClick(typeRB, x,y)) >= 0) { /* $BA*Br(B(type)$B%\%?%s$N=hM}(B */
++ (void) RBTrack(typeRB, i); /* $BA*Br(B(type)$B%\%?%s$r2!$7$?$H$-(B */
++ changeSuffix(i);
++ return;
++ }
++
++ for (i = 0; i < MS_NBUTTS; i++) { /* Ok,Cancel $B%\%?%s$N=hM}(B */
++ bp = &msbut[i];
++ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h))
++ break;
++ }
++ if (i < MS_NBUTTS) /* found one */ /* Ok,Cancel $B%\%?%s$r2!$7$?$H$-(B */
++ if (BTTrack(bp)) doCmd(i);
++}
++
++/***************************************************/
++/* $B%\%?%s(B(Ok, Cancel) $B$N=hM}(B */
++static void doCmd(cmd)
++ int cmd;
++{
++ int rv;
++
++ switch (cmd) {
++ case MS_BOK: /* Ok button */ {
++ char *fullname;
++
++ rv = writeMGCSFX(); /* Save with filter(MGCSFX) */
++ MGCSFXDialog(0);
++
++ fullname = GetDirFullName();
++ if (!ISPIPE(fullname[0])) {
++ XVCreatedFile(fullname);
++ if(!rv) StickInCtrlList(0);
++ }
++ }
++ break;
++ case MS_BCANC: /* Cancel button */
++ DialogFileName[0] = '\0';
++ curPos = stPos = enPos = 0;
++ MGCSFXDialog(0);
++ break;
++ default:
++ break;
++ }
++}
++
++/*******************************************/
++static int writeMGCSFX()
++{
++ int rv, type;
++ int ptype, w, h, pfree, nc;
++ byte *inpix, *rmap, *gmap, *bmap;
++
++ FILE *fp = NULL;
++ int file;
++ char *fullname;
++
++ rv = -1;
++ type = RBWhich(typeRB);
++
++ SetDirFName(DialogFileName); /* change filename in dir dialog */
++ fullname = GetDirFullName();
++
++ if(type == 0){
++ if(getOutputCom() == 0) return rv;
++ }
++
++ file = OpenOutFileDesc(fullname);
++ if(file < 0) return rv;
++
++ WaitCursor();
++ inpix = GenSavePic(&ptype, &w, &h, &pfree, &nc, &rmap, &gmap, &bmap);
++
++ rv = WriteMGCSFX(&fp, inpix, ptype, w, h,
++ rmap, gmap, bmap, nc, colorType, fullname,
++ type, file, picComments);
++
++ SetCursors(-1);
++
++ if (CloseOutFile(fp, fullname, rv) == 0) DirBox(0);
++
++ WaitCursor();
++#ifdef USE_SIGCHLD
++ if(w_p_fail == 0){
++#endif
++ while(wait(&w_pstatus) != w_pid); /* if( *((char *)&w_pstatus) != 0 ) ; */
++#ifdef USE_SIGCHLD
++ }else{
++ w_p_fail = 0;
++ }
++#endif
++ w_pid = 0;
++ w_pstatus = 0;
++
++ if (pfree) free(inpix);
++ return rv;
++}
++
++
++/***************************************/
++static void changeSuffix(ms_type)
++ int ms_type;
++{
++ /* see if there's a common suffix at the end of the DialogFileName.
++ if there is, remember what case it was (all caps or all lower), lop
++ it off, and replace it with a new appropriate suffix, in the
++ same case */
++
++ int allcaps;
++ char *suffix, *sp, *dp, lowsuf[512];
++ mgcsfxtab *magic;
++
++ /* find the last '.' in the DialogFileName */
++ suffix = (char *) rindex(DialogFileName, '.');
++ if (!suffix) return;
++ suffix++; /* point to first letter of the suffix */
++
++ /* check for all-caposity */
++ for (sp = suffix, allcaps=1; *sp; sp++)
++ if (islower(*sp)) allcaps = 0;
++
++ /* copy the suffix into an all-lower-case buffer */
++ for (sp=suffix, dp=lowsuf; *sp; sp++, dp++) {
++ *dp = (isupper(*sp)) ? tolower(*sp) : *sp;
++ }
++ *dp = '\0';
++
++
++ magic = get_mgcsfx(ms_type);
++ if(magic != NULL && magic->suffix != NULL){
++ strcpy(lowsuf,(magic->suffix)+1);
++
++ if (allcaps) { /* upper-caseify lowsuf */
++ for (sp=lowsuf; *sp; sp++)
++ *sp = (islower(*sp)) ? toupper(*sp) : *sp;
++ }
++
++ /* one other case: if the original suffix started with a single
++ capital letter, make the new suffix start with a single cap */
++ if (isupper(suffix[0])) lowsuf[0] = toupper(lowsuf[0]);
++
++ strcpy(suffix, lowsuf); /* tack onto DialogFileName */
++ showFNamMSD();
++ }
++}
++
++/***************************************************/
++/* $B%@%$%"%m%0Fb$K%U%!%$%k%M!<%`$rI=<($9$k$H$-$N=hM}(B ($B2<@A$1(B)*/
++static void redrawNamMSD()
++{
++ int cpos;
++
++ /* draw substring DialogFileName[stPos:enPos] and cursor */
++
++ Draw3dRect(mgcsfxNameW, 0, 0, (u_int) MSNAMWIDE+5, (u_int) LINEHIGH+4, R3D_IN, 2,
++ hicol, locol, infobg);
++
++ XSetForeground(theDisp, theGC, infofg);
++
++ if (stPos>0) { /* draw a "there's more over here" doowah */
++ XDrawLine(theDisp, mgcsfxNameW, theGC, 0,0,0,LINEHIGH+5);
++ XDrawLine(theDisp, mgcsfxNameW, theGC, 1,0,1,LINEHIGH+5);
++ XDrawLine(theDisp, mgcsfxNameW, theGC, 2,0,2,LINEHIGH+5);
++ }
++
++ if ((size_t) enPos < strlen(DialogFileName)) {
++ /* draw a "there's more over here" doowah */
++ XDrawLine(theDisp, mgcsfxNameW, theGC, MSNAMWIDE+5,0,MSNAMWIDE+5,LINEHIGH+5);
++ XDrawLine(theDisp, mgcsfxNameW, theGC, MSNAMWIDE+4,0,MSNAMWIDE+4,LINEHIGH+5);
++ XDrawLine(theDisp, mgcsfxNameW, theGC, MSNAMWIDE+3,0,MSNAMWIDE+3,LINEHIGH+5);
++ }
++
++ XDrawString(theDisp, mgcsfxNameW, theGC,3,ASCENT+3,DialogFileName+stPos, enPos-stPos);
++
++ cpos = XTextWidth(mfinfo, &DialogFileName[stPos], curPos-stPos);
++ XDrawLine(theDisp, mgcsfxNameW, theGC, 3+cpos, 2, 3+cpos, 2+CHIGH+1);
++ XDrawLine(theDisp, mgcsfxNameW, theGC, 3+cpos, 2+CHIGH+1, 5+cpos, 2+CHIGH+3);
++ XDrawLine(theDisp, mgcsfxNameW, theGC, 3+cpos, 2+CHIGH+1, 1+cpos, 2+CHIGH+3);
++}
++
++/***************************************************/
++/* $B%@%$%"%m%0Fb$K%U%!%$%k%M!<%`$rI=<($9$k(B */
++static void showFNamMSD()
++{
++ int len;
++
++ len = strlen(DialogFileName);
++
++ if (curPos<stPos) stPos = curPos;
++ if (curPos>enPos) enPos = curPos;
++
++ if (stPos>len) stPos = (len>0) ? len-1 : 0;
++ if (enPos>len) enPos = (len>0) ? len-1 : 0;
++
++ /* while substring is shorter than window, inc enPos */
++
++ while (XTextWidth(mfinfo, &DialogFileName[stPos], enPos-stPos) < MSNAMWIDE
++ && enPos<len) { enPos++; }
++
++ /* while substring is longer than window, dec enpos, unless enpos==curpos,
++ in which case, inc stpos */
++
++ while (XTextWidth(mfinfo, &DialogFileName[stPos], enPos-stPos) > MSNAMWIDE) {
++ if (enPos != curPos) enPos--;
++ else stPos++;
++ }
++
++
++ if (ctrlColor) XClearArea(theDisp, mgcsfxNameW, 2,2, (u_int) MSNAMWIDE+5-3,
++ (u_int) LINEHIGH+4-3, False);
++ else XClearWindow(theDisp, mgcsfxNameW);
++
++ redrawNamMSD();
++ BTSetActive(&msbut[MS_BOK], strlen(DialogFileName)!=0);
++}
++
++/***************************************************/
++/* $B%-!<F~NO$7$?$H$-$N=hM}(B */
++static int keyinMSD(c)
++ int c;
++{
++ /* got keypress in dirW. stick on end of DialogFileName */
++ int len;
++
++ len = strlen(DialogFileName);
++
++ if (c>=' ' && c<'\177') { /* printable characters */
++ /* note: only allow 'piped commands' in savemode... */
++
++ /* only allow spaces in 'piped commands', not filenames */
++ if (c==' ' && (!ISPIPE(DialogFileName[0]) || curPos==0)) return (-1);
++
++ /* only allow vertbars in 'piped commands', not filenames */
++ if (c=='|' && curPos!=0 && !ISPIPE(DialogFileName[0])) return(-1);
++
++ if (len >= MAXFNLEN-1) return(-1); /* max length of string */
++ xvbcopy(&DialogFileName[curPos], &DialogFileName[curPos+1], (size_t) (len-curPos+1));
++ DialogFileName[curPos]=c; curPos++;
++ }
++
++ else if (c=='\010' || c=='\177') { /* BS or DEL */
++ if (curPos==0) return(-1); /* at beginning of str */
++ xvbcopy(&DialogFileName[curPos], &DialogFileName[curPos-1], (size_t) (len-curPos+1));
++ curPos--;
++ }
++
++ else if (c=='\025') { /* ^U: clear entire line */
++ DialogFileName[0] = '\0';
++ curPos = 0;
++ }
++
++ else if (c=='\013') { /* ^K: clear to end of line */
++ DialogFileName[curPos] = '\0';
++ }
++
++ else if (c=='\001') { /* ^A: move to beginning */
++ curPos = 0;
++ }
++
++ else if (c=='\005') { /* ^E: move to end */
++ curPos = len;
++ }
++
++ else if (c=='\004') { /* ^D: delete character at curPos */
++ if (curPos==len) return(-1);
++ xvbcopy(&DialogFileName[curPos+1], &DialogFileName[curPos], (size_t) (len-curPos));
++ }
++
++ else if (c=='\002') { /* ^B: move backwards char */
++ if (curPos==0) return(-1);
++ curPos--;
++ }
++
++ else if (c=='\006') { /* ^F: move forwards char */
++ if (curPos==len) return(-1);
++ curPos++;
++ }
++
++ else if (c=='\012' || c=='\015') { /* CR(\r) or LF(\n) */
++ FakeButtonPress(&msbut[MS_BOK]);
++ }
++
++ else if (c=='\033') { /* ESC = Cancel */
++ FakeButtonPress(&msbut[MS_BCANC]);
++ }
++
++ else if (c=='\011') { /* tab = filename expansion */
++ if (1 /* !autoComplete() */) XBell(theDisp, 0);
++ else {
++ curPos = strlen(DialogFileName);
++ }
++ }
++
++ else return(-1); /* unhandled character */
++
++ showFNamMSD();
++
++ return(0);
++}
++
++
++/*******************************************/
++int getInputCom()
++{
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ int i;
++
++ strcpy(input_command_ex, MGCSFX_DEFAULT_INPUT_COMMAND);
++ i = GetStrPopUp("Input External Command (Input is PNM):", labels, 2,
++ input_command_ex, 1024, "",0);
++ if (i == 0 && strlen(input_command_ex) != 0){
++ input_command_ex_flag = 1;
++ return 1;
++ }else{
++ input_command_ex_flag = 0;
++ return 0;
++ }
++}
++
++int getOutputCom()
++{
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ int i;
++
++ strcpy(output_command_ex, MGCSFX_DEFAULT_OUTPUT_COMMAND);
++ i = GetStrPopUp("Input External Command (Output is PNM_RAW):", labels, 2,
++ output_command_ex, 1024, "",0);
++ if (i == 0 && strlen(output_command_ex) != 0){
++ output_command_ex_flag = 1;
++ return 1;
++ }else{
++ output_command_ex_flag = 0;
++ return 0;
++ }
++}
++
++#ifdef SVR4
++Sigfunc *
++xv_signal(signo, func)
++ int signo;
++ Sigfunc *func;
++{
++ struct sigaction act, oact;
++
++ act.sa_handler = func;
++ sigemptyset(&act.sa_mask);
++ act.sa_flags = 0;
++ act.sa_flags |= SA_RESTART;
++
++ if (sigaction(signo, &act, &oact) < 0)
++ return SIG_ERR;
++
++ return oact.sa_handler;
++}
++#endif
++
++#endif /* HAVE_MGCSFX */
+diff -u -r --new-file xv-3.10a.orig/xvml.c xv-3.10a/xvml.c
+--- xv-3.10a.orig/xvml.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvml.c 2005-04-18 00:57:34.000000000 -0500
+@@ -0,0 +1,989 @@
++/*
++ * xvml.c - makes text item structure for multi-lingual textviewer.
++ *
++ * Entry Points:
++ * struct ml_text *ml_draw_text()
++ * struct context *ml_create_context()
++ * int ml_set_charsets()
++ * void get_monofont_size()
++ */
++
++#include "xv.h"
++#include <X11/Xresource.h>
++
++#ifdef TV_MULTILINGUAL /* whole this file. */
++
++#include "xvml.h"
++#define HAVE_STRDUP 1
++#define USE_MULE_EXTENSION
++
++#ifndef __STDC__
++#define CHAR char
++#else
++#define CHAR int
++#endif
++
++#define CODE_SI 0x0e /* LS0 */
++#define CODE_SO 0x0f /* LS1 */
++#define CODE_SS2 ((unsigned char) 0x8e)
++#define CODE_SS3 ((unsigned char) 0x8f)
++
++int ml_tab_width = 64; /* dots */
++
++struct charset {
++ int bpc; /* bytes per char */
++ int noc; /* number of chars */
++ char designator;
++ char *registry;
++ int bit7;
++
++ int loaded;
++ char *fontname;
++
++ XFontStruct *fs;
++} charset[] = {
++ { 1, 94, 'B', "iso8859-1", 0, 0, NULL, NULL},
++ { 1, 96, 'A', "iso8859-1", 1, 0, NULL, NULL},
++ { 1, 94, '0', "omron_udc_zh-0", 0, 0, NULL, NULL},
++ { 1, 94, '2', "mulearabic-0", 0, 0, NULL, NULL},
++ { 1, 94, '3', "mulearabic-1", 0, 0, NULL, NULL},
++ { 1, 94, '4', "mulearabic-2", 0, 0, NULL, NULL},
++ { 1, 94, 'J', "jisx0201.1976-0", 0, 0, NULL, NULL},
++ { 1, 96, '0', "muleipa-1", 1, 0, NULL, NULL},
++ { 1, 96, '1', "viscii1.1-1", 1, 0, NULL, NULL},
++ { 1, 96, '2', "viscii1.1-1", 1, 0, NULL, NULL},
++ { 1, 96, 'B', "iso8859-2", 1, 0, NULL, NULL},
++ { 1, 96, 'C', "iso8859-3", 1, 0, NULL, NULL},
++ { 1, 96, 'D', "iso8859-4", 1, 0, NULL, NULL},
++ { 1, 96, 'T', "tis620.1986-0", 1, 0, NULL, NULL},
++ { 1, 96, 'F', "iso8859-7", 1, 0, NULL, NULL},
++ { 1, 96, 'G', "iso8859-6", 1, 0, NULL, NULL},
++ { 1, 96, 'H', "iso8859-8", 1, 0, NULL, NULL},
++ { 1, 94, 'I', "jisx0201.1976-0", 1, 0, NULL, NULL},
++ { 1, 96, 'L', "iso8859-5", 1, 0, NULL, NULL},
++ { 1, 96, 'M', "iso8859-9", 1, 0, NULL, NULL},
++ { 2, 94, '2', "ethio-0", 0, 0, NULL, NULL},
++ { 2, 94, '@', "jisx0208.1978", 0, 0, NULL, NULL},
++ { 2, 94, 'A', "gb2312.1980-0", 0, 0, NULL, NULL},
++ { 2, 94, 'B', "jisx0208.1983-0", 0, 0, NULL, NULL},
++ { 2, 94, 'C', "ksc5601.1987-0", 0, 0, NULL, NULL},
++ { 2, 94, 'D', "jisx0212.1990-0", 0, 0, NULL, NULL},
++ { 2, 94, '0', "big5.eten-0", 0, 0, NULL, NULL},
++ { 2, 94, '1', "big5.hku-0", 0, 0, NULL, NULL},
++ /* End Mark */
++ { 0, 0, 0, NULL, 0, 0, NULL, NULL},
++};
++#define NR_CHARSETS ((int) (sizeof charset / sizeof charset[0]))
++
++static struct charset *ascii = NULL;
++
++struct context {
++ struct charset *g[4];
++ struct charset **gl, **gr;
++ struct charset **ss;
++ int eol; /* 0: \n, 1: \r\n, 2: \r, 3: any */
++ int valid[4]; /* g[i] is valid? */
++ int short_form; /* allow shortened designator sequence? */
++ int lock_shift; /* allow locking shift? */
++
++ unsigned char *cbuf, *cbp;
++ struct ml_text text;
++ int line;
++ int delta;
++ int toolong;
++
++ Display *dpy;
++ Screen *scr;
++ Window root_win;
++};
++#define DPY (context->dpy)
++#define SCR (context->scr)
++#define ROOT_WIN (context->root_win)
++
++static unsigned char *escape_sequence PARM((unsigned char *));
++static unsigned char *designator_sequence PARM((unsigned char *));
++static void locking_shift PARM((unsigned CHAR));
++static void single_shift PARM((unsigned CHAR));
++static void put_unknown_char PARM((unsigned CHAR));
++static struct charset *search_charset PARM((int, int, int));
++static void pack_string PARM((struct charset *,
++ unsigned char *, int));
++static void init_xrm PARM((void));
++static void init_xrm_fonts PARM((void));
++static void init_xrm_tab PARM((void));
++#ifndef HAVE_STRDUP
++static char *strdup PARM((char *));
++#endif
++
++static char *default_fonts[] = { /* default for xrm_fonts */
++ "-sony-fixed-medium-r-normal--16-*-*-*-*-*-iso8859-1",
++ "-jis-fixed-medium-r-normal--16-*-*-*-*-*-jisx0208.1983-0",
++};
++static int xrm_nfonts;
++static char **xrm_fonts;
++
++static struct context *context; /* current context */
++
++struct ml_text *ml_draw_text(ctx, string, len)
++ struct context *ctx;
++ char *string;
++ int len;
++{
++ unsigned char *str = (unsigned char *) string;
++ unsigned char *estr = str + len;
++
++ context = ctx;
++
++ if(ascii == NULL){
++ fputs("ml_draw_text: call ml_set_charsets, first.\n", stderr);
++ return NULL;
++ }
++
++ if(!str)
++ return &context->text;
++
++ WaitCursor();
++
++ if (context->text.maxlines != 0) {
++ struct ml_text *tp = &context->text;
++ struct ml_line *lp;
++ int i;
++ for (i = tp->nlines, lp = tp->lines; i > 0; i--, lp++) {
++ if (lp->maxitems != 0)
++ free((char *) lp->items);
++ }
++ free((char *) tp->lines);
++ tp->maxlines = tp->nlines = 0;
++ }
++ if (context->cbuf != NULL)
++ free((char *) context->cbuf);
++ context->cbp = (unsigned char *) malloc((size_t) len * 8);/* all \xxx */
++ context->cbuf = context->cbp;
++ context->line = 0;
++ context->delta = 0;
++ context->ss = NULL;
++
++ while(str < estr){
++ if((*str & 0x80) == 0){ /* left half */
++ struct charset *cs = context->ss ? *context->ss : *context->gl;
++ unsigned char min_char, max_char;
++ if (cs != NULL) {
++ if(cs->noc == 94){
++ min_char = 0x21;
++ max_char = 0x7e;
++ }else{
++ min_char = 0x20;
++ max_char = 0x7f;
++ }
++ }
++
++ if (cs == NULL)
++ put_unknown_char(*str++);
++ else if(*str < min_char || *str > max_char){ /* C1 */
++ switch(*str){
++ case ' ':
++ {
++ unsigned char *p = str + 1;
++ while (*p == ' ' && p < estr)
++ p++;
++ pack_string(ascii, str, (int) (p - str));
++ str = p;
++ }
++ break;
++
++ case '\t':
++ pack_string(ascii, str++, 0);
++ break;
++
++ case '\n':
++ switch (context->eol) {
++ case 0: /* unix type eol */
++ pack_string(ascii, str, 0);
++ WaitCursor();
++ str++;
++ break;
++ case 1: /* dos type eol */
++ case 2: /* mac type eol */
++ put_unknown_char('\n');
++ str++;
++ break;
++ case 3: /* any type eol */
++ pack_string(ascii, str++, 0);
++ while (*str == '\n' || *str == '\r')
++ str++;
++ WaitCursor();
++ break;
++ }
++ break;
++
++ case '\r':
++ switch (context->eol) {
++ case 0:
++ put_unknown_char('\r');
++ str++;
++ break;
++ case 1:
++ str++;
++ if (*str == '\n')
++ pack_string(ascii, str++, 0);
++ else
++ put_unknown_char('\r');
++ break;
++ case 2:
++ pack_string(ascii, str, 0);
++ WaitCursor();
++ str++;
++ break;
++ case 3:
++ pack_string(ascii, str++, 0);
++ while (*str == '\n' || *str == '\r')
++ str++;
++ WaitCursor();
++ break;
++ }
++ break;
++
++ case '\033':
++ {
++ unsigned char *p;
++ str++;
++ if((p = escape_sequence(str)) == str)
++ put_unknown_char('\033');
++ else
++ str = p;
++ }
++ break;
++
++ case CODE_SI:
++ case CODE_SO:
++ if (!context->lock_shift)
++ put_unknown_char((unsigned int) *str++);
++ else
++ locking_shift((unsigned int) *str++);
++ break;
++
++ default:
++ put_unknown_char((unsigned int) *str++);
++ }
++ }else{ /* GL */
++ if (context->ss != NULL) {
++ pack_string(cs, str, 1);
++ str += cs->bpc;
++ context->ss = NULL;
++ } else {
++ int n;
++
++ if (cs->bpc == 1) {
++ unsigned char *p = str;
++ for (n = 0; p < estr; n++) {
++ if (*p < min_char || *p > max_char)
++ break;
++ p++;
++ }
++ pack_string(cs, str, n);
++ str = p;
++ } else {
++ unsigned char *p = str;
++ for (n = 0; p < estr - 1; n++) {
++ if (*p < min_char || *p > max_char ||
++ *(p + 1) < min_char || *(p + 1) > max_char)
++ break;
++ p += 2;
++ }
++ if (n > 0)
++ pack_string(cs, str, n);
++ else
++ put_unknown_char(*p++);
++ str = p;
++ }
++ }
++ }
++ }else{ /* right half */
++ struct charset *cs = context->ss ? *context->ss : *context->gr;
++ unsigned char min_char, max_char;
++ if (cs != NULL) {
++ if(cs->noc == 94){
++ min_char = 0xa1;
++ max_char = 0xfe;
++ }else{
++ min_char = 0xa0;
++ max_char = 0xff;
++ }
++ }
++
++ if (cs == NULL)
++ put_unknown_char(*str++);
++ else if(*str < min_char || *str > max_char){ /* C2 */
++ unsigned char c = *str++;
++ switch(c){
++ case CODE_SS2:
++ case CODE_SS3:
++ single_shift((unsigned CHAR) c);
++ break;
++ default:
++ put_unknown_char(c);
++ }
++ }else{ /* GR */
++ if (context->ss != NULL) {
++ pack_string(cs, str, 1);
++ str += cs->bpc;
++ context->ss = NULL;
++ } else {
++ int n;
++
++ if (cs->bpc == 1) {
++ unsigned char *p = str;
++ for (n = 0; p < estr; n++) {
++ if (*p < min_char || *p > max_char)
++ break;
++ p++;
++ }
++ pack_string(cs, str, n);
++ str = p;
++ } else {
++ unsigned char *p = str;
++ for (n = 0; p < estr - 1; n++) {
++ if (*p < min_char || *p > max_char ||
++ *(p + 1) < min_char || *(p + 1) > max_char)
++ break;
++ p += 2;
++ }
++ if (n > 0)
++ pack_string(cs, str, n);
++ else
++ put_unknown_char(*p++);
++ str = p;
++ }
++ }
++ }
++ }
++ }
++
++ {
++ struct ml_text *tp = &context->text;
++ struct ml_line *lp;
++ int i;
++
++ tp->width = 0;
++ tp->height = 0;
++ for (lp = tp->lines, i = tp->nlines; i > 0; lp++, i--) {
++ if (lp->nitems == 0) {
++ lp->ascent = ascii->fs->ascent;
++ lp->descent = ascii->fs->descent;
++ }
++ if (tp->width < lp->width)
++ tp->width = lp->width;
++ tp->height += lp->ascent + lp->descent;
++ }
++ }
++
++ SetCursors(-1);
++ return &context->text;
++}
++
++static unsigned char *escape_sequence(str)
++ unsigned char *str;
++{
++ unsigned char *p;
++ switch(*str){
++ case '$':
++ case '(': case ')': case '*': case '+':
++ case '-': case '.': case '/': case ',':
++ if((p = designator_sequence(str)) == NULL)
++ return str;
++ return p;
++ case 'n': case 'o': case '~': case '}': case '|':
++ if (!context->lock_shift)
++ return str;
++ locking_shift(*str);
++ return str + 1;
++ case 'N': case 'O':
++ single_shift(*str);
++ return str + 1;
++ }
++ return str;
++
++}
++
++static unsigned char *designator_sequence(str)
++ unsigned char *str;
++{
++ unsigned char *p = str;
++ int noc, bpc, n_g, shortened;
++ unsigned char des;
++ struct charset *cs;
++
++ if(*p == '$'){
++ bpc = 2;
++ p++;
++ }else
++ bpc = 1;
++
++ switch(*p++){
++ case '(': noc = 94; n_g = 0; des = *p++; shortened = 0; break;
++ case ')': noc = 94; n_g = 1; des = *p++; shortened = 0; break;
++ case '*': noc = 94; n_g = 2; des = *p++; shortened = 0; break;
++ case '+': noc = 94; n_g = 3; des = *p++; shortened = 0; break;
++#ifdef USE_MULE_EXTENSION
++ case ',': noc = 96; n_g = 0; des = *p++; shortened = 0; break;
++#endif
++ case '-': noc = 96; n_g = 1; des = *p++; shortened = 0; break;
++ case '.': noc = 96; n_g = 2; des = *p++; shortened = 0; break;
++ case '/': noc = 96; n_g = 3; des = *p++; shortened = 0; break;
++ case '@': noc = 94; n_g = 0; des = 'B'; shortened = 0; break;
++ case 'A': noc = 94; n_g = 0; des = 'A'; shortened = 1; break;
++ case 'B': noc = 94; n_g = 0; des = 'B'; shortened = 1; break;
++ default: return NULL;
++ }
++ if (!context->short_form && shortened)
++ return NULL;
++
++ if((cs = search_charset(bpc, noc, des)) == NULL){
++ if(DEBUG){
++ fprintf(stderr, "designator_sequence: (%d,%d,%c) not found.\n",
++ bpc, noc, des);
++ }
++ return NULL;
++ }
++ if (!context->valid[n_g])
++ return NULL;
++ context->g[n_g] = cs;
++ if(DEBUG){
++ fprintf(stderr,
++ "designator_sequence: G%d is `%s'.\n", n_g, cs->registry);
++ }
++ return p;
++}
++
++static void locking_shift(c)
++ unsigned CHAR c;
++{
++ switch((unsigned char) c){
++ case CODE_SI: context->gl = &context->g[0]; break;
++ case CODE_SO: context->gl = &context->g[1]; break;
++ case 'n': context->gl = &context->g[2]; break;
++ case 'o': context->gl = &context->g[3]; break;
++ case '~': context->gr = &context->g[1]; break;
++ case '}': context->gr = &context->g[2]; break;
++ case '|': context->gr = &context->g[3]; break;
++ }
++ if(DEBUG){
++ fprintf(stderr, "locking_shift: (%d,%d).\n",
++ (int)(context->gl - context->g),
++ (int)(context->gr - context->g));
++ }
++}
++
++static void single_shift(c)
++ unsigned CHAR c;
++{
++ switch((unsigned char) c){
++ case CODE_SS2: context->ss = &context->g[2]; break;
++ case CODE_SS3: context->ss = &context->g[3]; break;
++ }
++}
++
++
++static void put_unknown_char(chr)
++ unsigned CHAR chr;
++{
++ unsigned char c = chr;
++
++ if(c < 0x20){
++ unsigned char buf[2];
++ buf[0] = '^';
++ buf[1] = c + 0x40;
++ pack_string(ascii, buf, 2);
++ }else{
++ unsigned char buf[4];
++ buf[0] = '\\';
++ buf[1] = ((c >> 6) & 07) + '0';
++ buf[2] = ((c >> 3) & 07) + '0';
++ buf[3] = ((c ) & 07) + '0';
++ pack_string(ascii, buf, 4);
++ }
++}
++
++struct context *ml_create_context(s)
++ Screen *s;
++{
++ context = (struct context *) malloc(sizeof *context);
++
++ context->g[0] = NULL;
++ context->g[1] = NULL;
++ context->g[2] = NULL;
++ context->g[3] = NULL;
++ context->gl = NULL;
++ context->gr = NULL;
++ context->ss = NULL;
++
++ context->cbuf = NULL;
++ context->text.maxlines = context->text.nlines = 0;
++ context->line = 0;
++ context->delta = 0;
++ context->toolong = 0;
++
++ DPY = DisplayOfScreen(s);
++ SCR = s;
++ ROOT_WIN = RootWindowOfScreen(s);
++
++ return context;
++}
++
++
++int ml_set_charsets(ctx, sys)
++ struct context *ctx;
++ struct coding_system *sys;
++{
++ int retval = 0;
++ int i;
++
++ context = ctx;
++
++ if(ascii == NULL){
++ init_xrm();
++ if((ascii = search_charset(1, 94, 'B')) == NULL){
++ fputs("ml_set_charsets: ascii charset not found.\n", stderr);
++ Quit(1);
++ }
++ if (ascii->fs == NULL) {
++ fputs("ml_set_charsets: iso8859-1 font not found.\n", stderr);
++ Quit(1);
++ }
++ }
++ for(i = 0; i < 4; i++){
++ switch(sys->design[i].bpc){
++ case -1: /* make G[i] invalid */
++ context->valid[i] = 0;
++ break;
++
++ case 0: /* don't change */
++ break;
++
++ case 1: case 2: /* change it */
++ if((context->g[i] = search_charset(sys->design[i].bpc,
++ sys->design[i].noc,
++ sys->design[i].des)) == NULL){
++ fputs("ml_set_charsets: ", stderr);
++ fprintf(stderr, "(%d,%d,%c) is specified as G%d, ",
++ sys->design[i].bpc, sys->design[i].noc,
++ sys->design[i].des, i);
++ fputs("but not found. using `iso8859-1'.\n", stderr);
++ context->g[i] = ascii;
++ retval++;
++ }
++ context->valid[i] = 1;
++ break;
++
++ default: /* error */
++ fprintf(stderr,"ml_set_charsets: bad arguments of G%d. ", i);
++ fputs("using `iso8859-1'.\n", stderr);
++ context->g[i] = ascii;
++ retval++;
++ }
++ }
++ if((unsigned int) sys->gl < 4)
++ context->gl = &context->g[sys->gl];
++ else{
++ fprintf(stderr, "ml_set_charsets: bad number as GL. using G0.\n");
++ context->gl = &context->g[0];
++ }
++ if((unsigned int) sys->gr < 4)
++ context->gr = &context->g[sys->gr];
++ else{
++ fprintf(stderr, "ml_set_charsets: bad number as GR. using G0.\n");
++ context->gr = &context->g[0];
++ }
++ context->eol = sys->eol;
++ context->short_form = sys->short_form;
++ context->lock_shift = sys->lock_shift;
++ return retval;
++}
++
++static struct charset *search_charset(bpc, noc, des)
++ int bpc, noc;
++ int des;
++{
++ struct charset *cset;
++ for(cset = charset; cset->bpc != 0; cset++){
++ if(cset->bpc == bpc &&
++ cset->noc == noc &&
++ cset->designator == (char) des){
++ if(!cset->loaded){
++#if 0
++ int i, l;
++ l = strlen(cset->registry);
++ for (i = 0; i < xrm_nfonts; i++) {
++ int li = strlen(xrm_fonts[i]);
++ if (li > l) {
++ if (xrm_fonts[i][li - l - 1] == '-' &&
++ strcmp(xrm_fonts[i] + li - l,
++ cset->registry) == 0) {
++ if ((cset->fs = XLoadQueryFont(DPY, xrm_fonts[i]))
++ != NULL) {
++ if (DEBUG) {
++ fprintf(stderr, "%s for %s\n",
++ xrm_fonts[i], cset->registry);
++ }
++ cset->fontname = xrm_fonts[i];
++ break;
++ } else
++ SetISTR(ISTR_WARNING,
++ "%s: font not found.", xrm_fonts[i]);
++ }
++ }
++ }
++#else
++ int i, l;
++ l = strlen(cset->registry);
++ for (i = 0; i < xrm_nfonts && cset->fs == NULL; i++) {
++ int j, nfnts = 0;
++ char **fnts = XListFonts(DPY, xrm_fonts[i],
++ 65535, &nfnts);
++ for (j = 0 ; j < nfnts; j++) {
++ int ll = strlen(fnts[j]);
++ if (*(fnts[j] + ll - l - 1) == '-' &&
++ strcmp(fnts[j] + ll - l, cset->registry)== 0) {
++ if ((cset->fs = XLoadQueryFont(DPY, fnts[j]))
++ != NULL) {
++ if (DEBUG) {
++ fprintf(stderr, "%s for %s\n",
++ fnts[j], cset->registry);
++ }
++ cset->fontname = strdup(fnts[j]);
++ break;
++ } else
++ SetISTR(ISTR_WARNING,
++ "%s: font not found", fnts[j]);
++ }
++ }
++ if (fnts != NULL)
++ XFreeFontNames(fnts);
++ }
++#endif
++ if(cset->fs == NULL){
++ SetISTR(ISTR_WARNING,
++ "font for %s not found.\nusing ascii font.",
++ cset->registry);
++ if (ascii != NULL)
++ cset->fs = ascii->fs;
++ }
++
++ cset->loaded = 1;
++ }
++ return cset;
++ }
++ }
++ return NULL;
++}
++
++static void pack_string(cs, str, len)
++ struct charset *cs;
++ unsigned char *str;
++ int len; /* number of chars(not bytes) */
++{
++ struct ml_text *mt = &context->text;
++ struct ml_line *lp;
++ XTextItem16 *ip;
++
++ if (context->line == mt->maxlines) {
++ int oldmax = mt->maxlines;
++ if (mt->maxlines < 1)
++ mt->maxlines = 1;
++ else
++ mt->maxlines = 2 * mt->maxlines;
++ if (oldmax == 0)
++ mt->lines = (struct ml_line *)
++ malloc(sizeof(struct ml_line) * mt->maxlines);
++ else {
++ mt->lines = (struct ml_line *)
++ realloc(mt->lines,
++ sizeof(struct ml_line) * mt->maxlines);
++ }
++ }
++ lp = &mt->lines[context->line];
++ if (mt->nlines == context->line) {
++ mt->nlines++;
++ lp->maxitems = 0;
++ lp->nitems = 0;
++ lp->width = 0;
++ lp->ascent = lp->descent = 0;
++ }
++
++ if (len == 0) {
++ switch (*str) {
++ case '\n':
++ context->line++;
++ context->delta = 0;
++ context->toolong = 0;
++ break;
++ case '\t':
++ {
++ int nx, x = lp->width + context->delta;
++ nx = (x + ml_tab_width) / ml_tab_width * ml_tab_width;
++ context->delta += nx - x;
++ }
++ break;
++ }
++ return;
++ }
++
++ if (context->toolong)
++ return;
++ if (lp->width > 30000) {
++ context->toolong = 1;
++ cs = ascii;
++ str = (unsigned char *) "...";
++ len = 3;
++ }
++
++ if (lp->nitems == lp->maxitems) {
++ int oldmax = lp->maxitems;
++ if (lp->maxitems < 1)
++ lp->maxitems = 1;
++ else
++ lp->maxitems = 2 * lp->maxitems;
++ if (oldmax == 0)
++ lp->items = (XTextItem16 *)
++ malloc(sizeof(XTextItem16) * lp->maxitems);
++ else
++ lp->items = (XTextItem16 *)
++ realloc(lp->items,
++ sizeof(XTextItem16) * lp->maxitems);
++ }
++ ip = &lp->items[lp->nitems++];
++ ip->chars = (XChar2b *) context->cbp;
++ ip->nchars = len;
++ ip->delta = context->delta;
++ ip->font = cs->fs->fid;
++ context->cbp += 2 * len;
++ context->delta = 0;
++
++ if (cs->bpc == 1) {
++ XChar2b *p;
++ unsigned char b7 = cs->bit7 ? 0x80 : 0;
++ int i;
++ for (i = len, p = ip->chars; i > 0; i--, p++) {
++ p->byte1 = '\0';
++ p->byte2 = (*str++ & 0x7f) | b7;
++ }
++ } else {
++ XChar2b *p;
++ unsigned char b7 = cs->bit7 ? 0x80 : 0;
++ int i;
++ for (i = len, p = ip->chars; i > 0; i--, p++) {
++ p->byte1 = (*str++ & 0x7f) | b7;
++ p->byte2 = (*str++ & 0x7f) | b7;
++ }
++ }
++
++ lp->width += XTextWidth16(cs->fs, ip->chars, ip->nchars);
++ if (lp->ascent < cs->fs->ascent)
++ lp->ascent = cs->fs->ascent;
++ if (lp->descent < cs->fs->descent)
++ lp->descent = cs->fs->descent;
++}
++
++void get_monofont_size(wide, high)
++ int *wide, *high;
++{
++ if (ascii == NULL) {
++ fputs("ml_draw_text: call ml_set_charsets, first.\n", stderr);
++ return;
++ }
++ *wide = ascii->fs->max_bounds.width;
++ *high = ascii->fs->ascent + ascii->fs->descent;
++}
++
++static void init_xrm()
++{
++ init_xrm_fonts();
++ init_xrm_tab();
++}
++
++static void init_xrm_fonts()
++{
++ char *p, *fns = XGetDefault(theDisp, "xv", "fontSet");
++ int n;
++ if (fns == NULL) {
++ xrm_fonts = default_fonts;
++ xrm_nfonts = sizeof default_fonts / sizeof *default_fonts;
++ return;
++ }
++ while(*fns == ' ' || *fns == '\t')
++ fns++;
++ if (*fns == '\0') {
++ xrm_fonts = default_fonts;
++ xrm_nfonts = sizeof default_fonts / sizeof *default_fonts;
++ return;
++ }
++ fns = strdup(fns);
++
++ n = 1;
++ for (p = fns; *p != '\0'; p++) {
++ if (*p == ',')
++ n++;
++ }
++ xrm_nfonts = n;
++ xrm_fonts = (char **) malloc(sizeof (char *) * xrm_nfonts);
++ for (n = 0, p = fns; n < xrm_nfonts && *p != '\0'; ) {
++ while (*p == ' ' || *p == '\t')
++ p++;
++ xrm_fonts[n++] = p;
++ while (1) {
++ char *q;
++ while (*p != ' ' && *p != '\t' && *p != ',' && *p != '\0')
++ p++;
++ q = p;
++ while (*q == ' ' || *q == '\t')
++ q++;
++ if (*q == ',' || *q == '\0') {
++ *p = '\0';
++ p = q + 1;
++ break;
++ } else
++ p = q;
++ }
++ }
++ for ( ; n < xrm_nfonts; n++)
++ xrm_fonts[n] = "";
++}
++
++static void init_xrm_tab()
++{
++ char *ts = XGetDefault(theDisp, "xv", "tabWidth");
++ unsigned short tab;
++ if (ts == NULL)
++ tab = 64;
++ else {
++ char *ep;
++ long t;
++ int bad = 0;
++ t = strtol(ts, &ep, 0);
++ tab = (unsigned short) t;
++ if (ep != NULL) {
++ while (*ep == ' ' && *ep == '\t')
++ ep++;
++ if (*ep != '\0')
++ bad = 1;
++ }
++ if (tab != (long) (unsigned long) t)
++ bad = 1;
++ if (bad) {
++ SetISTR(ISTR_WARNING, "bad tab width.");
++ tab = 64;
++ }
++ }
++ ml_tab_width = tab;
++}
++
++
++#ifndef HAVE_STRDUP
++static char *strdup(str)
++ char *str;
++{
++ return strcpy(malloc(strlen(str) + 1), str);
++}
++#endif
++
++char *lookup_registry(d, b7)
++ struct design d;
++ int *b7;
++{
++ int i;
++ for (i = 0; i < NR_CHARSETS; i++) {
++ if (charset[i].bpc == d.bpc && charset[i].noc == d.noc &&
++ charset[i].designator == d.des) {
++ *b7 = charset[i].bit7;
++ return charset[i].registry;
++ }
++ }
++ return NULL;
++}
++
++struct design lookup_design(registry, b7)
++ char *registry;
++ int b7;
++{
++ struct design d;
++ int i;
++ d.bpc = 0;
++ d.noc = 0;
++ d.des = '\0';
++ for (i = 0; i < NR_CHARSETS; i++) {
++ if (strcmp(charset[i].registry, registry) == 0 &&
++ charset[i].bit7 == b7) {
++ d.bpc = charset[i].bpc;
++ d.noc = charset[i].noc;
++ d.des = charset[i].designator;
++ break;
++ }
++ }
++ return d;
++}
++
++char *sjis_to_jis(orig, len, newlen)
++ char *orig;
++ int len, *newlen;
++{
++ unsigned char *new;
++ unsigned char *p, *q, *endp;
++ if (len == 0) {
++ *newlen = 0;
++ return (char *) malloc((size_t) 1);
++ }
++ new = (unsigned char *) malloc((size_t) len * 4); /* big enough */
++ for (p = (unsigned char *) orig, endp = p + len, q = new; p < endp; ) {
++ if ((*p & 0x80) == 0) /* 1 byte char */
++ *q++ = *p++;
++ else if (*p >= 0x81 && *p <= 0x9f) { /* kanji 1st byte */
++ unsigned char c1 = *p++;
++ unsigned char c2 = *p++;
++ if (c2 < 0x40 || c2 > 0xfc) { /* bad 2nd byte */
++ *q++ = CODE_SS2;
++ *q++ = c1;
++ *q++ = CODE_SS2;
++ *q++ = c2;
++ } else { /* right 2nd byte */
++ if (c2 <= 0x9e) {
++ if (c2 > 0x7f)
++ c2--;
++ c1 = (c1 - 0x81) * 2 + 1 + 0xa0;
++ c2 = (c2 - 0x40) + 1 + 0xa0;
++ } else {
++ c1 = (c1 - 0x81) * 2 + 2 + 0xa0;
++ c2 = (c2 - 0x9f) + 1 + 0xa0;
++ }
++ *q++ = c1;
++ *q++ = c2;
++ }
++ } else if (*p >= 0xe0 && *p <= 0xef) { /* kanji 1st byte */
++ unsigned char c1 = *p++;
++ unsigned char c2 = *p++;
++ if (c2 < 0x40 || c2 > 0xfc) { /* bad 2nd byte */
++ *q++ = CODE_SS2;
++ *q++ = c1;
++ *q++ = CODE_SS2;
++ *q++ = c2;
++ } else { /* right 2nd byte */
++ if (c2 <= 0x9e) {
++ c1 = (c1 - 0xe0) * 2 + 63 + 0xa0;
++ c2 = (c2 - 0x40) + 1 + 0xa0;
++ } else {
++ c1 = (c1 - 0xe0) * 2 + 64 + 0xa0;
++ c2 = (c2 - 0x9f) + 1 + 0xa0;
++ }
++ *q++ = c1;
++ *q++ = c2;
++ }
++ } else { /* katakana or something */
++ *q++ = CODE_SS2;
++ *q++ = *p++;
++ }
++ }
++ *newlen = q - new;
++
++ return (char *) realloc(new, (size_t) *newlen);
++}
++
++#endif /* TV_MULTILINGUAL */
+diff -u -r --new-file xv-3.10a.orig/xvml.h xv-3.10a/xvml.h
+--- xv-3.10a.orig/xvml.h 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvml.h 2005-04-18 00:57:45.000000000 -0500
+@@ -0,0 +1,96 @@
++#ifndef MLVIEW_H
++#define MLVIEW_H
++
++/*
++ * What is this?
++ *
++ * It is a package to show multi-lingual text.
++ *
++ * How to use?
++ *
++ * 1. Call ml_set_screen(Screen *scr);
++ * Tell this package the screen you use.
++ *
++ * 2. Call ml_set_charsets(struct char_spec spec[4], int gl, int gr);
++ * Tell this package the initial charsets.
++ * Gn is set to the charset specified by spec[n], respectively.
++ * GL and GR are set to G[gl] and G[gr], respectively.
++ * If first call, iso8859-1 font is loaded.
++ *
++ * 3. Call ml_draw_text(char *string);
++ * It Creates a bitmap, and returns it to you.
++ * If something goes wrong, it returns None.
++ * DON'T free the returned pixmaps!!
++ *
++ * BUGS:
++ * - Amharic and Tigrigna characters are strange.
++ * - Big5 is not supported.
++ * - Reverse direction is not supported.
++ * - Composing is not supported.
++ * - Cantonese can't be shown.
++ * - Texts which have many lines are buggy.
++ *
++ * NOTE:
++ * - Shifted JIS and Shifted GB must be converted to iso2022 in advance.
++ *
++ * Example of parameters to ml_set_charsets:
++ * - EUC-Japan
++ * spec = { {1, 94, 'B'}, G0 is US-ASCII
++ * {2, 94, 'B'}, G1 is JIS X0208
++ * {1, 94, 'J'}, G2 is (right-half of)JIS X0201
++ * {2, 94, 'D'} }; G3 is JIS X0212
++ * gl = 0; GL is G0
++ * gr = 1; GR is G1
++ *
++ * - Compound Text
++ * spec = { {1, 94, 'B'}, G0 is US-ASCII
++ * {1, 96, 'A'}, G1 is Latin-1
++ * {1, 94, 'B'}, G2 is US-ASCII (maybe unused)
++ * {1, 94, 'B'} }; G3 is US-ASCII (maybe unused)
++ * gl = 0; GL is G0
++ * gr = 1; GR is G1
++ *
++ * - Korean Mail
++ * spec = { {1, 94, 'B'}, G0 is US-ASCII
++ * {2, 94, 'C'}, G1 is KSC5601
++ * {1, 94, 'B'}, G2 is US-ASCII (maybe unused)
++ * {1, 94, 'B'} }; G3 is US-ASCII (maybe unused)
++ * gl = 0; GL is G0
++ * gl = 1; GR is G1
++ */
++
++struct coding_system {
++ struct design {
++ int bpc; /* byte per char if 1 or 2,
++ don't touch if 0, or
++ don't use if -1.*/
++ int noc; /* number of chars (94 or 96) */
++ char des; /* designator ('A', 'B', ...) */
++ } design[4];
++ int gl, gr;
++ int eol;
++ int short_form;
++ int lock_shift;
++};
++
++struct ml_text {
++ int maxlines, nlines;
++ struct ml_line {
++ int maxitems, nitems;
++ int width, ascent, descent;
++ XTextItem16 *items;
++ } *lines;
++ int width, height;
++};
++
++struct context;
++struct ml_text *ml_draw_text PARM((struct context *, char *, int));
++struct context *ml_create_context PARM((Screen *));
++int ml_set_charsets PARM((struct context *,
++ struct coding_system *));
++void get_monofont_size PARM((int *, int *));
++char *sjis_to_jis PARM((char *, int, int *));
++char *lookup_registry PARM((struct design, int *));
++struct design lookup_design PARM((char *, int));
++
++#endif
+diff -u -r --new-file xv-3.10a.orig/xvpcd.c xv-3.10a/xvpcd.c
+--- xv-3.10a.orig/xvpcd.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvpcd.c 2007-05-13 20:02:13.000000000 -0500
+@@ -0,0 +1,1311 @@
++/*
++ * xvpcd.c - load routine for 'PhotoCD' format pictures
++ *
++ * LoadPCD(fname, pinfo, size) - loads a PhotoCD file
++ *
++ * This routine will popup a choice of which of the 5 available resolutions
++ * the user wants to choose, then load it as a 24 bit image.
++ *
++ * Copyright 1993 David Clunie, Melbourne, Australia.
++ *
++ * The outline of this is shamelessly derived from xvpbm.c to read the
++ * file, and xvtiffwr.c to handle the popup window and X stuff (X never
++ * has been my forte !), and the PhotoCD format information (though not
++ * the code) was found in Hadmut Danisch's (danisch@ira.uka.de) hpcdtoppm
++ * program in which he has reverse engineered the format by studying
++ * hex dumps of PhotoCDs ! After all who can afford the Kodak developer's
++ * kit, which none of us have seen yet ? Am I even allowed to mention these
++ * words (Kodak, PhotoCD) ? I presume they are registered trade marks.
++ *
++ * PS. I have no idea how Halmut worked out the YCC <-> RGB conversion
++ * factors, but I have calculated them from his tables and the results
++ * look good enough to me.
++ *
++ * Added size parameter to allow the schnautzer to create thumnails
++ * without requesting the size every time.
++ */
++
++#include "xv.h"
++
++#ifdef HAVE_PCD
++
++#include <memory.h>
++#ifndef alloca
++# include <alloca.h> /* "not in POSIX or SUSv3" according to Linux man page */
++#endif /* ...but required for Sun C compiler (alloca = macro) */
++
++#define TRACE 0
++#if TRACE
++# define trace(x) fprintf x
++#else
++# define trace(x)
++#endif
++
++/* Comments on error-handling:
++ A truncated file is not considered a Major Error. The file is loaded,
++ and the rest of the pic is filled with 0's.
++
++ Not being able to malloc is a Fatal Error. The program is aborted. */
++
++
++#ifdef __STDC__
++static void magnify(int, int, int, int, int, byte *);
++static int pcdError(const char *, const char *);
++static int gethuffdata(byte *, byte *, byte *, int, int);
++#else
++static void magnify();
++static int pcdError();
++static int gethuffdata();
++#endif
++
++#define wcurfactor 16 /* Call WaitCursor() every n rows */
++
++static int size; /* Set by window routines */
++static int leaveitup;/* Cleared by docmd() when OK or CANCEL pressed */
++static int goforit; /* Set to 1 if OK or 0 if CANCEL */
++static FILE *fp;
++static CBUTT lutCB;
++
++/*
++ * This "beyond 100%" table is taken from ImageMagick (gamma 2.2).
++ * Why there are 351 entries and not 346 as per Kodak documentation
++ * is a mystery.
++ */
++static double rscale = 1.00,
++ gscale = 1.00,
++ bscale = 1.00;
++
++static byte Y[351] = {
++ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
++ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
++ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
++ 30, 32, 33, 34, 35, 36, 37, 38, 39, 40,
++ 41, 42, 43, 45, 46, 47, 48, 49, 50, 51,
++ 52, 53, 54, 56, 57, 58, 59, 60, 61, 62,
++ 63, 64, 66, 67, 68, 69, 70, 71, 72, 73,
++ 74, 76, 77, 78, 79, 80, 81, 82, 83, 84,
++ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
++ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
++ 107, 108, 110, 111, 112, 113, 114, 115, 116, 117,
++ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
++ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
++ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
++ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
++ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
++ 169, 170, 171, 172, 173, 174, 175, 176, 176, 177,
++ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
++ 188, 189, 190, 191, 192, 193, 193, 194, 195, 196,
++ 197, 198, 199, 200, 201, 201, 202, 203, 204, 205,
++ 206, 207, 207, 208, 209, 210, 211, 211, 212, 213,
++ 214, 215, 215, 216, 217, 218, 218, 219, 220, 221,
++ 221, 222, 223, 224, 224, 225, 226, 226, 227, 228,
++ 228, 229, 230, 230, 231, 232, 232, 233, 234, 234,
++ 235, 236, 236, 237, 237, 238, 238, 239, 240, 240,
++ 241, 241, 242, 242, 243, 243, 244, 244, 245, 245,
++ 245, 246, 246, 247, 247, 247, 248, 248, 248, 249,
++ 249, 249, 249, 250, 250, 250, 250, 251, 251, 251,
++ 251, 251, 252, 252, 252, 252, 252, 253, 253, 253,
++ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
++ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
++ 254, 254, 254, 254, 254, 254, 254, 254, 254, 255,
++ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
++ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
++ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
++ 255
++};
++
++/*******************************************/
++/* The size should be -1 for the popup to ask otherwise fast is assumed */
++/* returns '1' on success */
++/*******************************************/
++int
++LoadPCD(char *fname, PICINFO *pinfo, int theSize)
++{
++ long offset;
++ int mag;
++ int rotate;
++ byte header[3*0x800];
++ byte *pic24, *luma, *chroma1, *chroma2, *ptr, *lptr, *c1ptr, *c2ptr;
++ int w, h, npixels, bufsize;
++ int row, col;
++ int huffplanes;
++ const char *bname;
++
++ bname = BaseName(fname);
++ pinfo->pic = NULL;
++ pinfo->comment = NULL;
++
++
++ /*
++ * open the file
++ */
++ if((fp=fopen(fname,"r")) == NULL)
++ return pcdError(bname, "can't open file");
++
++ /*
++ * inspect the header
++ */
++ if(fread(&header[0], 1, sizeof(header), fp) != sizeof(header))
++ return pcdError(bname, "could not load PCD header");
++ if(strncmp((char *)&header[0x800], "PCD_", 4) != 0)
++ return pcdError(bname, "not a PCD file");
++ rotate = header[0x0E02] & 0x03;
++
++/* base/16
++ - plain data starts at sector 1+2+1=4
++ (numbered from 0, ie. the 5th sector)
++ - luma 192*128 = 24576 bytes (12 sectors)
++ + chroma1 96*64 = 6144 bytes (3 sectors)
++ + chroma2 96*64 = 6144 bytes (3 sectors)
++ = total 18 sectors
++
++ - NB. "Plain" data is interleaved - 2 luma rows 192 wide,
++ then 1 of each of the chroma rows 96 wide !
++
++ base/4
++ - plain data starts at sector 1+2+1+18+1=23
++ - luma 384*256 = 98304 bytes (48 sectors)
++ + chroma1 192*128 = 24576 bytes (12 sectors)
++ + chroma2 192*128 = 24576 bytes (12 sectors)
++ = total 72 sectors
++
++ - NB. "Plain" data is interleaved - 2 luma rows 384 wide,
++ then 1 of each of the chroma rows 192 wide !
++
++ base
++ - plain data starts at sector 1+2+1+18+1+72+1=96
++
++ - luma 768*512 = 393216 bytes (192 sectors)
++ + chroma1 384*256 = 98304 bytes (48 sectors)
++ + chroma2 384*256 = 98304 bytes (48 sectors)
++ = total 288 sectors
++
++ - NB. "Plain" data is interleaved - 2 luma rows 768 wide,
++ then 1 of each of the chroma rows 384 wide !
++
++ 4base
++ - plain data for base is read
++ - luma data interpolated *2
++ - chroma data interpolated *4
++
++ - cd_offset is 1+2+1+18+1+72+1+288=384
++ - at cd_offset+4 (388) is huffman table
++ - at cd_offset+5 (389) is 4base luma plane
++
++ (the sector at cd_offset+3 seems to contain 256 words each of
++ which is an offset presumably to the sector containing certain
++ rows ? rows/4 given 1024 possible rows. The rest of this sector
++ is filled with zeroes)
++
++
++ 16base
++ - plain data for base is read
++ - luma data interpolated *2
++ - chroma data interpolated *4
++
++ - cd_offset is 1+2+1+18+1+72+1+288=384
++ - at cd_offset+4 (388) is huffman table for 4 base
++ - at cd_offset+5 (389) is 4base luma plane
++ - luma plane interpolated *2
++
++ - cd_offset is set to current position (should be start of sector)
++ - at cd_offset+12 is huffman table for 16 base
++ - at cd_offset+14 is 16 base luma & 2 chroma planes which are read
++ (note that the luma plane comes first, with a sync pattern
++ announcing each row from 0 to 2047, then the two chroma planes
++ are interleaved by row, the row # being even from 0 to 2046, with
++ each row containing 1536 values, the chroma1 row coming first,
++ finally followed by a sync pattern with a row of 2048 announcing
++ the end (its plane seems to be set to 3, ie. chroma2)
++ - chroma planes interpolated *2
++
++ (the sector at cd_offset+10 & 11 seem to contain 1024 pairs of words
++ the first for luma and the second for chroma, each of
++ which is an offset presumably to the sector containing certain
++ rows ? rows/2 given 2048 possible rows)
++
++Not yet implemented:
++
++In order to do overskip for base and 4base, one has to reach the chroma
++data for 16 base:
++
++ - for 4base, after reading the 4base luma plane (and presumably
++ skipping the chroma planes) one sets cd_offset to the start of
++ the "current" sector
++
++ - for base, one has to skip the 4base data first:
++ - cd_offset is set to 384
++ - at (cd_offset+3 sectors)[510] is a 16 bit word high byte 1st
++ containing an offset to the beginning of the 16base stuff
++ though there is then a loop until >30 0xff's start a sector !
++
++ - being now positioned after the end of the 4base stuff,
++ - at (cd_offset+10 sectors)[2] is a 16 bit word high byte 1st
++ containing an offset to the chroma planes.
++ - at cd_offset+12 is the set of huffman tables
++
++ - for base, the 16base chroma planes are then halved
++*/
++
++ PCDSetParamOptions(bname);
++ if (theSize == -1)
++ {
++ PCDDialog(1); /* Open PCD Dialog box */
++ SetCursors(-1); /* Somebody has already set it to wait :( */
++ leaveitup=1;
++ goforit=0;
++ size = 1;
++ /* block until the popup window gets closed */
++ while (leaveitup) {
++ int i;
++ XEvent event;
++ XNextEvent(theDisp, &event);
++ HandleEvent(&event, &i);
++ }
++ /* At this point goforit and size will have been set */
++ if (!goforit) {
++ /* nothing allocated so nothing needs freeing */
++ return 0;
++ }
++ WaitCursor();
++ }
++ else
++ {
++ size = theSize;
++ goforit = 1;
++ }
++
++ if(lutCB.val)
++ rscale = gscale = bscale = 255.0/346.0;
++ else
++ rscale = gscale = bscale = 1.0;
++
++ switch (size) {
++ case 0:
++ pinfo->w = 192;
++ pinfo->h = 128;
++ offset=4*0x800;
++ mag=1;
++ huffplanes=0;
++ sprintf(pinfo->fullInfo, "PhotoCD, base/16 resolution");
++ break;
++
++ case 1:
++ pinfo->w = 384;
++ pinfo->h = 256;
++ offset=23*0x800;
++ mag=1;
++ huffplanes=0;
++ sprintf(pinfo->fullInfo, "PhotoCD, base/4 resolution");
++ break;
++
++ case 2:
++ default:
++ pinfo->w = 768;
++ pinfo->h = 512;
++ offset=96*0x800;
++ mag=1;
++ huffplanes=0;
++ sprintf(pinfo->fullInfo, "PhotoCD, base resolution");
++ break;
++
++ case 3:
++ pinfo->w = 1536;
++ pinfo->h = 1024;
++ offset=96*0x800;
++ mag=2;
++ huffplanes=1;
++ sprintf(pinfo->fullInfo, "PhotoCD, 4base resolution");
++ break;
++
++ case 4:
++ pinfo->w=3072;
++ pinfo->h=2048;
++ offset=96*0x800;
++ mag=4;
++ huffplanes=2;
++ sprintf(pinfo->fullInfo, "PhotoCD, 16base resolution");
++ break;
++ }
++
++ /*
++ * rotate?
++ */
++ w = pinfo->w;
++ h = pinfo->h;
++ switch(rotate) {
++ case 0:
++ break;
++
++ case 1:
++ case 3:
++ pinfo->w = h;
++ pinfo->h = w;
++ break;
++
++ default:
++ fprintf(stderr, "unknown image rotate %d; assuming none\n",
++ rotate);
++ rotate = 0;
++ }
++
++ /*
++ * allocate 24-bit image
++ */
++ npixels = pinfo->w * pinfo->h;
++ bufsize = 3 * npixels;
++ if (pinfo->w <= 0 || pinfo->h <= 0 || npixels/pinfo->w != pinfo->h ||
++ bufsize/3 != npixels)
++ FatalError("image dimensions out of range");
++
++ pinfo->pic = (byte *)malloc((size_t) bufsize);
++ if(!pinfo->pic)
++ FatalError("couldn't malloc '24-bit RGB plane'");
++
++ pinfo->type = PIC24;
++ sprintf(pinfo->shrtInfo, "%dx%d PhotoCD.", pinfo->w, pinfo->h);
++ pinfo->colType = F_FULLCOLOR;
++ pinfo->frmType = -1;
++
++ if(fseek(fp, offset, SEEK_SET) == -1) {
++ free(pinfo->pic);
++ return pcdError(bname,"Can't find start of data.");
++ }
++
++ pic24 = pinfo->pic;
++
++ luma=(byte *)calloc(npixels,1);
++ if(!luma) {
++ free(pinfo->pic);
++ FatalError("couldn't malloc 'luma plane'");
++ }
++
++ chroma1=(byte *)calloc(npixels/4,1);
++ if(!chroma1) {
++ free(pinfo->pic);
++ free(luma);
++ FatalError("couldn't malloc 'chroma1 plane'");
++ }
++
++ chroma2=(byte *)calloc(npixels/4,1);
++ if(!chroma2) {
++ free(pinfo->pic);
++ free(luma);
++ free(chroma1);
++ FatalError("couldn't malloc 'chroma2 plane'");
++ }
++
++ /* Read 2 luma rows length w, then one of each chroma rows w/2 */
++ /* If a mag factor is active, the small image is read into the */
++ /* top right hand corner of the larger allocated image */
++
++ trace((stderr, "base image: start @ 0x%08lx (sector %ld.%ld)\n",
++ ftell(fp), ftell(fp)/0x800, ftell(fp) % 0x800));
++ for(row=0,lptr=luma,c1ptr=chroma1,c2ptr=chroma2; row <h/mag;
++ row+=2,lptr+=w*2,c1ptr+=w/2,c2ptr+=w/2) {
++ if(fread(lptr, 1, w/mag, fp) != w/mag) {
++ pcdError(bname, "Luma plane too short.");
++ break;
++ }
++ if(fread(lptr+w, 1, w/mag, fp) != w/mag) {
++ pcdError(bname, "Luma plane too short.");
++ break;
++ }
++ if(fread(c1ptr, 1, w/2/mag, fp) != w/2/mag) {
++ pcdError(bname, "Chroma1 plane too short.");
++ break;
++ }
++ if(fread(c2ptr, 1, w/2/mag, fp) != w/2/mag) {
++ pcdError(bname, "Chroma2 plane too short.");
++ break;
++ }
++ if(row%wcurfactor == 0)
++ WaitCursor();
++ }
++ trace((stderr, "base image: done @ 0x%08lx (sector %ld.%ld)\n",
++ ftell(fp), ftell(fp)/0x800, ftell(fp) % 0x800));
++
++ if(huffplanes) {
++ if(fseek(fp, 388*0x800, SEEK_SET) == -1)
++ return pcdError(bname,
++ "Can't find start of huffman tables.");
++
++ magnify(2, h/mag, w/mag, h, w, luma);
++ magnify(2, h/2/mag, w/2/mag, h/2, w/2, chroma1);
++ magnify(2, h/2/mag, w/2/mag, h/2, w/2, chroma2);
++
++ /*
++ * doesn't really touch the chroma planes which aren't
++ * present in 4base
++ */
++ gethuffdata(luma, chroma1, chroma2, w, h/mag*2);
++
++ /*
++ * if only doing 4base should probably fetch 16bases
++ * chroma planes here
++ */
++ if(huffplanes == 2) {
++ /*
++ * This depends on gethuffdata() having grabbed
++ * things in 0x800 sectors AND still being
++ * positioned in the "last" sector of the data
++ * (cf. Hadmut's code which is positioned at start
++ * of the next sector)
++ */
++ long offset = ftell(fp)/0x800+12;
++
++ if(fseek(fp, offset*0x800, SEEK_SET) == 0) {
++ magnify(2,h/2,w/2,h,w,luma);
++ magnify(2,h/4,w/4,h/2,w/2,chroma1);
++ magnify(2,h/4,w/4,h/2,w/2,chroma2);
++ gethuffdata(luma,chroma1,chroma2,w,h);
++ } else
++ fprintf(stderr, "can't seek to 2nd huffman tables\n");
++ }
++ }
++ fclose(fp);
++
++ /*
++ * YCC -> R'G'B' and image rotate
++ */
++ ptr=pic24;
++ lptr=luma; c1ptr=chroma1; c2ptr=chroma2;
++ for(row = 0; row < h; ++row) {
++ byte *rowc1ptr = c1ptr,
++ *rowc2ptr = c2ptr;
++ int k = 0;
++
++ switch(rotate) {
++ case 1:
++ ptr = &pic24[row*3 + (w - 1)*h*3];
++ k = -3*(h + 1);
++ break;
++
++ case 3:
++ ptr = &pic24[(h - 1 - row)*3];
++ k = 3*(h - 1);
++ break;
++
++ default:
++ ptr = &pic24[row*w*3];
++ k = 0;
++ break;
++ }
++ for(col = 0; col < w; ++col) {
++ double L = 1.3584*(double) *lptr++,
++ C1 = 2.2179*(double) (*c1ptr - 156),
++ C2 = 1.8215*(double) (*c2ptr - 137);
++ int r = rscale*(L + C2),
++ g = gscale*(L - 0.194*C1 - 0.509*C2),
++ b = bscale*(L + C1);
++
++ if(lutCB.val) {
++ if(r < 0) r = 0; else if(r >= 255) r = 255;
++ if(g < 0) g = 0; else if(g >= 255) g = 255;
++ if(b < 0) b = 0; else if(b >= 255) b = 255;
++ } else {
++ if(r < 0) r = 0; else if(r >= 351) r = 350;
++ if(g < 0) g = 0; else if(g >= 351) g = 350;
++ if(b < 0) b = 0; else if(b >= 351) b = 350;
++ r = Y[r]; g = Y[g]; b = Y[b];
++ }
++ *ptr++ = r;
++ *ptr++ = g;
++ *ptr++ = b;
++ ptr += k;
++ if(col & 1) {
++ ++c1ptr;
++ ++c2ptr;
++ }
++ }
++ if((row & 1) == 0) {
++ c1ptr = rowc1ptr;
++ c2ptr = rowc2ptr;
++ }
++ if(row%wcurfactor == 0)
++ WaitCursor();
++ }
++ free(luma); free(chroma1); free(chroma2);
++ return 1;
++}
++
++/*
++ * derived from Hadmut Danisch's interpolate()
++ */
++static void
++magnify(int mag, /* power of 2 by which to magnify in place */
++ int h, int w, /* the "start" unmag'd dimensions of the array */
++ int mh, int mw, /* the real (maximum) dimensions of the array */
++ byte *p) /* pointer to the data */
++{
++ int x,y,yi;
++ byte *optr,*nptr,*uptr; /* MUST be unsigned, else averaging fails */
++
++ while (mag > 1) {
++
++ /* create every 2nd new row from 0 */
++ /* even pixels being equal to the old, odd ones averaged with successor */
++ /* special case being the last column which is just set equal to the */
++ /* second last) ... */
++
++ for(y=0;y<h;y++) {
++ yi=h-1-y;
++ optr=p+ yi*mw + (w-1); /* last pixel of an old row */
++ nptr=p+2*yi*mw + (2*w - 2); /* last pixel of a new row */
++
++ nptr[0]=nptr[1]=optr[0]; /* special cases */
++
++ for(x=1;x<w;x++) {
++ optr--; nptr-=2; /* next lower pixel(s) */
++ nptr[0]=optr[0]; /* even pixels duped */
++ nptr[1]=(((int)optr[0])+
++ ((int)optr[1])+1)>>1; /* odd averaged */
++ }
++ }
++
++ /* Fill in odd rows, as average of prior & succeeding rows, with */
++ /* even pixels average of one column, odd pixels average of two */
++
++ for(y=0;y<h-1;y++) { /* all but the last old row */
++ optr=p + 2*y*mw; /* start of the new "even" rows */
++ nptr=optr+mw; /* start of the next empty row */
++ uptr=nptr+mw; /* start of the next again (even) */
++
++ for(x=0;x<w-1;x++) { /* for all cols except the last */
++ nptr[0]=(((int)optr[0])+
++ ((int)uptr[0])+1)>>1; /* even pixels */
++ nptr[1]=(((int)optr[0])+
++ ((int)optr[2])+
++ ((int)uptr[0])+
++ ((int)uptr[2])+2)>>2; /* odd pixels */
++ nptr+=2; optr+=2; uptr+=2;
++ }
++ *(nptr++)=(((int)*(optr++))+
++ ((int)*(uptr++))+1)>>1; /* 2nd last pixel */
++ *(nptr++)=(((int)*(optr++))+
++ ((int)*(uptr++))+1)>>1; /* last pixel */
++ }
++
++ xvbcopy((char *)(p + (2*h-2)*mw), /* 2nd last row */
++ (char *)(p + (2*h-1)*mw), /* the last row */
++ 2*w); /* length of a new row */
++
++ h*=2; w*=2;
++ mag>>=1; /* Obviously mag must be a power of 2 ! */
++ }
++}
++
++/*******************************************/
++static int
++pcdError(const char *fname, const char *st)
++{
++ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
++ return 0;
++}
++
++
++/**** Stuff for PCDDialog box ****/
++
++#define TWIDE 380
++#define THIGH 160
++#define T_NBUTTS 2
++#define T_BOK 0
++#define T_BCANC 1
++#define BUTTH 24
++
++static void drawTD PARM((int, int, int, int));
++static void clickTD PARM((int, int));
++static void doCmd PARM((int));
++static void PCDSetParams PARM((void));
++
++/* local variables */
++static BUTT tbut[T_NBUTTS];
++static RBUTT *resnRB;
++
++
++
++/***************************************************/
++void CreatePCDW()
++{
++ int y;
++
++ pcdW = CreateWindow("xv pcd", "XVpcd", NULL,
++ TWIDE, THIGH, infofg, infobg, 0);
++ if (!pcdW) FatalError("can't create pcd window!");
++
++ XSelectInput(theDisp, pcdW, ExposureMask | ButtonPressMask | KeyPressMask);
++
++ BTCreate(&tbut[T_BOK], pcdW, TWIDE-140-1, THIGH-10-BUTTH-1, 60, BUTTH,
++ "Ok", infofg, infobg, hicol, locol);
++
++ BTCreate(&tbut[T_BCANC], pcdW, TWIDE-70-1, THIGH-10-BUTTH-1, 60, BUTTH,
++ "Cancel", infofg, infobg, hicol, locol);
++
++ y = 55;
++ resnRB = RBCreate(NULL, pcdW, 36, y, "192*128 Base/16",
++ infofg, infobg,hicol,locol);
++ RBCreate(resnRB, pcdW, 36, y+18, "384*256 Base/4",
++ infofg, infobg,hicol,locol);
++ RBCreate(resnRB, pcdW, 36, y+36, "768*512 Base",
++ infofg, infobg, hicol, locol);
++ RBCreate(resnRB, pcdW, TWIDE/2, y, "1536*1024 4Base",
++ infofg, infobg, hicol, locol);
++ RBCreate(resnRB, pcdW, TWIDE/2, y+18, "3072*2048 16Base",
++ infofg, infobg, hicol, locol);
++
++ CBCreate(&lutCB, pcdW, TWIDE/2, y+36, "Linear LUT",
++ infofg, infobg, hicol, locol);
++
++ RBSelect(resnRB, 2);
++
++ XMapSubwindows(theDisp, pcdW);
++}
++
++
++/***************************************************/
++void PCDDialog(vis)
++int vis;
++{
++ if (vis) {
++ CenterMapWindow(pcdW, tbut[T_BOK].x + tbut[T_BOK].w/2,
++ tbut[T_BOK].y + tbut[T_BOK].h/2, TWIDE, THIGH);
++ }
++ else XUnmapWindow(theDisp, pcdW);
++ pcdUp = vis;
++}
++
++
++/***************************************************/
++int PCDCheckEvent(xev)
++XEvent *xev;
++{
++ /* check event to see if it's for one of our subwindows. If it is,
++ deal accordingly, and return '1'. Otherwise, return '0' */
++
++ int rv;
++ rv = 1;
++
++ if (!pcdUp) return 0;
++
++ if (xev->type == Expose) {
++ int x,y,w,h;
++ XExposeEvent *e = (XExposeEvent *) xev;
++ x = e->x; y = e->y; w = e->width; h = e->height;
++
++ if (e->window == pcdW) drawTD(x, y, w, h);
++ else rv = 0;
++ }
++
++ else if (xev->type == ButtonPress) {
++ XButtonEvent *e = (XButtonEvent *) xev;
++ int x,y;
++ x = e->x; y = e->y;
++
++ if (e->button == Button1) {
++ if (e->window == pcdW) clickTD(x,y);
++ else rv = 0;
++ } /* button1 */
++ else rv = 0;
++ } /* button press */
++
++
++ else if (xev->type == KeyPress) {
++ XKeyEvent *e = (XKeyEvent *) xev;
++ char buf[128]; KeySym ks; XComposeStatus status;
++ int stlen;
++
++ stlen = XLookupString(e,buf,128,&ks,&status);
++ buf[stlen] = '\0';
++
++ RemapKeyCheck(ks, buf, &stlen);
++
++ if (e->window == pcdW) {
++ if (stlen) {
++ if (buf[0] == '\r' || buf[0] == '\n') { /* enter */
++ FakeButtonPress(&tbut[T_BOK]);
++ }
++ else if (buf[0] == '\033') { /* ESC */
++ FakeButtonPress(&tbut[T_BCANC]);
++ }
++ }
++ }
++ else rv = 0;
++ }
++ else rv = 0;
++
++ if (rv==0 && (xev->type == ButtonPress || xev->type == KeyPress)) {
++ XBell(theDisp, 50);
++ rv = 1; /* eat it */
++ }
++
++ return rv;
++}
++
++
++/***************************************************/
++void
++PCDSetParamOptions(const char *fname)
++{
++ int cur;
++ cur = RBWhich(resnRB);
++
++ RBSetActive(resnRB,0,1);
++ RBSetActive(resnRB,1,1);
++ RBSetActive(resnRB,2,1);
++ RBSetActive(resnRB,3,1);
++ RBSetActive(resnRB,4,1);
++ CBSetActive(&lutCB,1);
++}
++
++
++/***************************************************/
++static void
++drawTD(int x, int y, int w, int h)
++{
++ const char *title = "Load PhotoCD file...";
++ int i;
++ XRectangle xr;
++
++ xr.x = x; xr.y = y; xr.width = w; xr.height = h;
++ XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
++
++ XSetForeground(theDisp, theGC, infofg);
++ XSetBackground(theDisp, theGC, infobg);
++
++ for (i=0; i<T_NBUTTS; i++) BTRedraw(&tbut[i]);
++
++ ULineString(pcdW, resnRB->x-16, resnRB->y-10-DESCENT, "Resolution");
++ RBRedraw(resnRB, -1);
++ CBRedraw(&lutCB);
++
++ XDrawString(theDisp, pcdW, theGC, 20, 19, title, strlen(title));
++
++ XSetClipMask(theDisp, theGC, None);
++}
++
++
++/***************************************************/
++static void clickTD(x,y)
++int x,y;
++{
++ int i;
++ BUTT *bp;
++
++ /* check BUTTs */
++
++ /* check the RBUTTS first, since they don't DO anything */
++ if ( (i=RBClick(resnRB, x,y)) >= 0) {
++ (void) RBTrack(resnRB, i);
++ return;
++ }
++
++ if(CBClick(&lutCB, x, y)) {
++ (void) CBTrack(&lutCB);
++ return;
++ }
++
++ for (i=0; i<T_NBUTTS; i++) {
++ bp = &tbut[i];
++ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) break;
++ }
++
++ if (i<T_NBUTTS) { /* found one */
++ if (BTTrack(bp)) doCmd(i);
++ }
++}
++
++
++
++/***************************************************/
++static void doCmd(cmd)
++int cmd;
++{
++ leaveitup=0;
++ goforit=0;
++ switch (cmd) {
++ case T_BOK: PCDSetParams();
++ goforit=1;
++ case T_BCANC: PCDDialog(0);
++ break;
++
++ default: break;
++ }
++}
++
++
++/*******************************************/
++static void PCDSetParams()
++{
++ switch (RBWhich(resnRB)) {
++ case 0: size = 0; break;
++ case 1: size = 1; break;
++ case 2: size = 2; break;
++ case 3: size = 3; break;
++ case 4: size = 4; break;
++ case 5: size = 0; break;
++ default: size = 0; break;
++ }
++}
++
++/*
++ * Read the Huffman tables which consist of an unsigned byte # of entries
++ * (less 1) followed by up to 256 entries, each of which is a series of 4
++ * unsigned bytes - length, highseq, lowseq, and key.
++ *
++ * Store the huffman table into tree type structure:
++ *
++ * int int[n of entries*2]
++ *
++ * Each entry consists of two words (the 1st for zero and the 2nd for one).
++ *
++ * If the word is negative, then subtract it from the current pointer to
++ * get the next entry (ie. it is the negative offset from the current
++ * position*2 in order to skip entries not words) with which to
++ * make a decision.
++ *
++ * If the word is not negative, then the low 8 bits contain the value (which
++ * is supposed to be a signed char) and the rest of the word is zero.
++ */
++static void
++dumphufftab(int n, const byte *h, int m, const int *t)
++{
++ int j;
++
++ for(j = 0; j < n || j < m; ++j) {
++ if(j < m)
++ fprintf(stderr, "%04x %04x ::", 0xffff & t[2*j + 0],
++ 0xffff & t[2*j + 1]);
++ else
++ fprintf(stderr, "%s %s ::", " ", " ");
++ if(j < n) {
++ int k;
++ unsigned l = (h[4*j + 1] << 8) | h[4*j + 2];
++
++ fprintf(stderr, " %02x %2d ", h[4*j + 3], h[4*j + 0]);
++ for(k = 0; k <= h[4*j + 0]; ++k, l *= 2)
++ fprintf(stderr, "%c", '0'+((l & 0x8000) != 0));
++ }
++ fprintf(stderr, "\n");
++ }
++}
++
++static int *
++gethufftable(void)
++{
++ int *hufftab, *h, i, j, N, num, bufsize, huffptr, hufftop;
++ byte *huf;
++
++ /*
++ * absorb the entirety of the table in one chunk (for better
++ * dumps in case of error)
++ */
++ trace((stderr, "hufftab 0x%08lx ", ftell(fp)));
++ num = 1 + fgetc(fp); /* 256 max */
++ huf = (byte *)alloca(4*num*sizeof(byte));
++ if((i = fread(huf, 1, 4*num, fp)) != 4*num) {
++ fprintf(stderr, "unexpected EOF: got %d bytes, wanted %d\n",
++ i, 4*num);
++ return NULL;
++ }
++
++ /*
++ * guess an initial size and prepare the initial entry
++ */
++ trace((stderr, "length %u\n", num));
++ N = 2*num; /* 512 max */
++ bufsize = N * sizeof(int);
++/* this case can't happen, but added for symmetry with loop below
++ if (N/2 != num || bufsize/N != sizeof(int)) {
++ SetISTR(ISTR_WARNING, "Huffman table size out of range");
++ return NULL;
++ }
++ */
++ if((hufftab = (int *)malloc(bufsize)) == NULL)
++ FatalError("couldn't malloc initial Huffman table");
++ hufftab[0] = hufftab[1] = 0;
++
++ /*
++ * we check the table for reasonableness; there is a lack of detailed
++ * documentation on this format. in particular, for the base16,
++ * the position of the huffman tables is uncertain to within one
++ * "sector", and we have to detect his before trying to read
++ * bogusness.
++ */
++ hufftop = 0;
++ for(i = 0; i < num; ++i) {
++ unsigned length = huf[4*i + 0],
++ codeword = (huf[4*i + 1] << 8) | huf[4*i + 2];
++
++ /*
++ * some sanity checks
++ */
++ if(length >= 16) {
++ fprintf(stderr,
++ "gethufftable: improbable length @ %d/%d\n",
++ i, num);
++ dumphufftab(num, huf, hufftop/2, hufftab);
++ free(hufftab);
++ return NULL;
++ }
++
++ /*
++ * walk the whole set of codes
++ */
++ huffptr = 0;
++ for(j = 0; j < 16; ++j, codeword *= 2) {
++ /*
++ * choose the child node
++ */
++ if(codeword & 0x8000)
++ ++huffptr;
++
++ /*
++ * store value at end-of-code
++ */
++ if(j == length) {
++ /*
++ * more sanity
++ */
++ if((codeword *= 2) & 0xffff) {
++ fprintf(stderr,
++ "gethufftable: "
++ ":probable invalid code @ %d\n",
++ i);
++ dumphufftab(num, huf,
++ hufftop/2, hufftab);
++ free(hufftab);
++ return NULL;
++ }
++ hufftab[huffptr] = 1 + (int) huf[4*i + 3];
++ break;
++ }
++
++ /*
++ * otherwise, follow the tree to date
++ */
++ if(hufftab[huffptr] < 0) {
++ huffptr -= hufftab[huffptr];
++ continue;
++ } else if(hufftab[huffptr] > 0) {
++ fprintf(stderr, "duplicate code %d %d/%d\n",
++ huffptr, i, num);
++ dumphufftab(num, huf, hufftop/2, hufftab);
++ free(hufftab);
++ return NULL;
++ }
++
++ /*
++ * and if necessary, make the tree bigger
++ */
++ if((hufftop += 2) >= N) {
++ int oldN = N;
++#if TRACE
++ dumphufftab(num, huf, hufftop/2, hufftab);
++#endif
++ N *= 2;
++ bufsize = N*sizeof(int);
++ if (N/2 != oldN || bufsize/N != sizeof(int)) {
++ SetISTR(ISTR_WARNING,
++ "new Huffman table is too large");
++ free(hufftab);
++ return NULL;
++ }
++ h = (int *)realloc(hufftab, bufsize);
++ if(h == NULL) {
++ fprintf(stderr,
++ "Table overflow %d/%d\n",
++ i, num);
++ dumphufftab(num, huf,
++ hufftop/2, hufftab);
++ free(hufftab);
++ FatalError(
++ "couldn't realloc Huffman table");
++ }
++ hufftab = h;
++ }
++
++ /*
++ * then add new ptr
++ */
++ hufftab[huffptr] = huffptr - hufftop;
++ huffptr = hufftop;
++ hufftab[huffptr + 0] =
++ hufftab[huffptr + 1] = 0;
++ }
++ }
++ return hufftab;
++}
++
++/* WORDTYPE & char buffer must be unsigned else */
++/* fills with sign bit not 0 on right shifts */
++typedef unsigned int WORDTYPE;
++typedef int SWORDTYPE;
++#define WORDSIZE sizeof(WORDTYPE)
++#define NBYTESINBUF 0x800
++
++static byte buffer[NBYTESINBUF];
++static int bitsleft=0;
++static int bytesleft=0;
++static byte *bufptr;
++static WORDTYPE word;
++
++#if 0
++static void
++dumpbuffer(void)
++{
++ int i,left;
++ byte *ptr=buffer;
++
++ fprintf(stderr,"dumpbuffer: bytesleft=%d bitsleft= %d word=0x%08lx\n",
++ bytesleft,bitsleft,(unsigned long)word);
++ for (left=NBYTESINBUF; left>0; left-=16) {
++ fprintf(stderr,"%05d ",left);
++ for (i=0; i<8; i++) {
++ fprintf(stderr,"%02x",*ptr++);
++ fprintf(stderr,"%02x ",*ptr++);
++ }
++ fprintf(stderr,"\n");
++ }
++}
++#endif /* 0 */
++
++static void
++loadbuffer(void)
++{
++ if ((bytesleft=fread(buffer,1,NBYTESINBUF,fp)) == 0) {
++ fprintf(stderr,"Truncation error\n");
++ exit(1);
++ }
++ bufptr=buffer;
++ /* dumpbuffer(); */
++}
++
++static void
++loadbyte(void)
++{
++ if (bytesleft <= 0) loadbuffer();
++ --bytesleft;
++ word|=(WORDTYPE)(*bufptr++)<<(sizeof(WORDTYPE)*8-8-bitsleft);
++ bitsleft+=8;
++}
++
++static int
++getbit(void)
++{
++ int bit;
++
++ while (bitsleft <= 0) loadbyte();
++ --bitsleft;
++ bit=(SWORDTYPE)(word)<0; /* assumes word is signed */
++ /* bit=word>>(sizeof(WORDTYPE)*8-1); */
++ word<<=1;
++ return bit;
++}
++
++static WORDTYPE
++getnn(int nn)
++{
++ WORDTYPE value;
++
++ while (bitsleft <= nn) loadbyte();
++ bitsleft-=nn;
++ value=word>>(sizeof(WORDTYPE)*8-nn);
++ word<<=nn;
++ return value;
++}
++
++static WORDTYPE
++isnn(int nn)
++{
++ WORDTYPE value;
++
++ while (bitsleft <= nn) loadbyte();
++ value=word>>(sizeof(WORDTYPE)*8-nn);
++ return value;
++}
++
++static void
++skipnn(int nn)
++{
++ while (bitsleft <= nn) loadbyte();
++ bitsleft-=nn;
++ word<<=nn;
++}
++
++#define get1() (getbit())
++#define get2() (getnn(2))
++#define get8() (getnn(8))
++#define get13() (getnn(13))
++#define get16() (getnn(16))
++#define get24() (getnn(24))
++
++#define is24() (isnn(24))
++
++#define skip1() (skipnn(1))
++#define skip24() (skipnn(24))
++
++static int
++gethuffdata( byte *luma,
++ byte *chroma1,
++ byte *chroma2,
++ int realrowwidth,
++ int maxrownumber)
++{
++static byte clip[3*256];
++ int *hufftable[3], *huffstart = NULL, *huffptr = NULL;
++ int row, col, plane, i, result = 1;
++#if TRACE
++ int uflow = 0, oflow = 0;
++#endif
++ byte *pixelptr = NULL;
++
++ trace((stderr,"gethuffdata: start @ 0x%08lx (sector %ld.%ld)\n",
++ ftell(fp), ftell(fp)/0x800, ftell(fp) % 0x800));
++
++ /*
++ * correction clipping
++ */
++ if(clip[256+255] == 0) {
++ for(i = 0; i < 256; ++i)
++ clip[i + 0] = 0x00,
++ clip[i + 256] = (byte) i,
++ clip[i + 512] = 0xff;
++ }
++
++ /*
++ * should really only look for luma plane for 4base, but the
++ * there are zeroes in the rest of the sector that give both
++ * chroma tables 0 length
++ */
++ for(i = 0; i < 3; ++i)
++ hufftable[i] = NULL;
++ for(i = 0; i < 3; ++i) {
++ if((hufftable[i] = gethufftable()) == NULL) {
++ result = 0;
++ break;
++ }
++ }
++ if(result == 0)
++ goto oops;
++
++ /*
++ * skip remainder of current sector
++ */
++ i = (ftell(fp) | 0x7ff) + 1;
++ if(fseek(fp, i, SEEK_SET) < 0) {
++ fprintf(stderr, "gethuffdata: sector skip failed\n");
++ return 0;
++ }
++
++ /*
++ * skip remainder of "sector"
++ */
++ i = 0;
++ while (is24() != 0xfffffe) {
++ (void)get24();
++ if(++i == 1)
++ trace((stderr,"gethuffdata: skipping for sync ..."));
++ }
++ if(i != 0)
++ trace((stderr, " %d times\n", i));
++
++ while(result) {
++ if(is24() == 0xfffffe) {
++ skip24();
++ plane = get2();
++ row = get13(); col = 0;
++ skip1();
++ if(row >= maxrownumber) {
++ trace((stderr,
++ "gethuffdata: stopping at row %d\n",
++ row));
++ break;
++ }
++ switch (plane) {
++ case 0:
++ huffstart = hufftable[0];
++ pixelptr = luma + row*realrowwidth;
++ break;
++
++ case 2:
++ huffstart = hufftable[1];
++ pixelptr = chroma1 + row/2*realrowwidth/2;
++ break;
++
++ case 3:
++ huffstart = hufftable[2];
++ pixelptr = chroma2 + row/2*realrowwidth/2;
++ break;
++
++ default:
++ fprintf(stderr, "gethuffdata: bad plane %d\n",
++ plane);
++ result = 0;
++ break;
++ }
++ WaitCursor();
++ continue;
++ }
++
++ /*
++ * locate correction in huffman tree
++ */
++ for(huffptr = huffstart;;) {
++ huffptr += get1();
++ if(*huffptr < 0) {
++ huffptr -= *huffptr;
++ } else if(*huffptr == 0) {
++ fprintf(stderr,
++ "gethuffdata: invalid code: "
++ "image quality reduced\n");
++ result = 0;
++ break;
++ } else
++ break;
++ }
++ if(!result)
++ break;
++
++ /*
++ * apply correction to the pixel
++ *
++ * eeeek!! the corrections can sometimes over or underflow!
++ * this strongly suggested that the 'magnify' method was in
++ * some way wrong. however, experiments showed that the
++ * over/under flows even occured for the pixels that are
++ * copied through magnify without change (ie, the even
++ * row/even column case). curiously, though, the odd
++ * column and odd row cases were about 3x more likely to have
++ * the over/underflow, and the odd row/odd column case was
++ * about 5x higher, so maybe the use of a bi-linear
++ * interpolation is not correct -- just *close*?
++ *
++ * the other clue in this area is that the overflows are
++ * by far most frequenct along edges of very bright
++ * areas -- rarely in the interior of such regions.
++ */
++ i = (int) *pixelptr + (signed char) (*huffptr - 1);
++#if TRACE
++ if(i > 255)
++ ++oflow;
++/* trace((stderr,
++ "gethuffdata: oflow %d %d %d\n", row, col, i));*/
++ else if(i < 0)
++ ++uflow;
++/* trace((stderr,
++ "gethuffdata: uflow %d %d %d\n", row, col, i));*/
++ ++col;
++#endif
++ *pixelptr++ = clip[i + 256];
++ }
++
++oops:
++ for(i = 0; i < 3; ++i)
++ free(hufftable[i]);
++ trace((stderr, "gethuffdata: uflow=%d oflow=%d\n", uflow, oflow));
++ trace((stderr, "gethuffdata: done @ 0x%08lx (sector %ld.%d)\n",
++ ftell(fp), ftell(fp)/0x800, 0x800 - bytesleft));
++ return result;
++}
++
++#endif /* HAVE_PCD */
+diff -u -r --new-file xv-3.10a.orig/xvpi.c xv-3.10a/xvpi.c
+--- xv-3.10a.orig/xvpi.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvpi.c 2005-04-18 00:57:04.000000000 -0500
+@@ -0,0 +1,1060 @@
++/*
++ * xvpi.c - load routine for `Pi' format pictures.
++ *
++ * The `Pi' format is made by Yanagisawa.
++ * It is common among many Japanese personal computer users.
++ *
++ */
++
++#include "xv.h"
++#include <setjmp.h>
++
++#ifdef HAVE_PI
++
++typedef unsigned short data16;
++typedef unsigned int data32;
++
++struct pi_info {
++ jmp_buf jmp;
++ FILE *fp;
++ struct {
++ int rest;
++ byte cur;
++ }bs;
++ long fsize;
++ byte mode;
++ int width, height;
++ float aspect;
++ int cbits;
++ int numcols;
++ byte *cmap;
++ struct ct_t{
++ struct elt_t *top;
++ struct elt_t{
++ struct elt_t *old, *recent;
++ byte val;
++ } *elt;
++ }*ct;
++ int defcmap;
++ int writing_grey;
++};
++
++static void pi_open_file PARM((struct pi_info*, char*));
++static void pi_read_header PARM((struct pi_info*, char**));
++static void pi_check_id PARM((struct pi_info*));
++static void pi_read_comment PARM((struct pi_info*, char**));
++static void pi_read_palette PARM((struct pi_info*));
++static void pi_expand PARM((struct pi_info*, byte**));
++static byte pi_read_color PARM((struct pi_info*, int));
++static int pi_read_position PARM((struct pi_info*));
++static data32 pi_read_length PARM((struct pi_info*));
++static int pi_copy_pixels PARM((struct pi_info*,
++ byte*, int, int, data32));
++
++static void pi_write_header PARM((struct pi_info*,
++ char*, byte*, byte*, byte*));
++static void pi_write_id PARM((struct pi_info*));
++static void pi_write_comment PARM((struct pi_info*, char*));
++static void pi_write_palette PARM((struct pi_info*, byte*, byte*, byte*));
++static void pi_compress PARM((struct pi_info*, byte*));
++static void pi_write_gabage PARM((struct pi_info*));
++static void pi_write_color PARM((struct pi_info*, int, int));
++static int pi_test_matching PARM((struct pi_info*,
++ byte*, int, int, data32*));
++static void pi_write_position PARM((struct pi_info*, int));
++static void pi_write_length PARM((struct pi_info*, data32));
++
++static void pi_table_create PARM((struct pi_info*));
++static byte pi_table_get_value PARM((struct pi_info*, int, int));
++static int pi_table_lookup_value PARM((struct pi_info*, int, int));
++static data32 pi_read_bits PARM((struct pi_info*, int));
++static void pi_write_bits PARM((struct pi_info*, data32, int));
++static void pi_init_pi_info PARM((struct pi_info*));
++static void pi_cleanup_pi_info PARM((struct pi_info*, int));
++static void pi_cleanup_pinfo PARM((PICINFO*));
++static void pi_memory_error PARM((char*, char*));
++static void pi_error PARM((struct pi_info*, int));
++static void pi_file_error PARM((struct pi_info*, int));
++static void pi_file_warning PARM((struct pi_info*, int));
++static void pi_show_pi_info PARM((struct pi_info*));
++static void *pi_malloc PARM((size_t, char*));
++static void *pi_realloc PARM((void*, size_t, char*));
++
++
++static char *pi_id = "Pi";
++static char *pi_msgs[] = {
++ NULL,
++#define PI_OPEN 1
++ "couldn't open.",
++#define PI_CORRUPT 2
++ "file corrupted.",
++#define PI_FORMAT 3
++ "not PI format.",
++#define PI_PLANES 4
++ "bad number of planes.",
++#define PI_WRITE 5
++ "write failed.",
++};
++
++
++/* The main routine of `Pi' loader. */
++int LoadPi(fname, pinfo)
++ char *fname;
++ PICINFO *pinfo;
++{
++ struct pi_info pi;
++ int e;
++ int i;
++ if(DEBUG) fputs("LoadPi:\n", stderr);
++
++ pinfo->comment = NULL;
++ pi_init_pi_info(&pi);
++ if((e = setjmp(pi.jmp)) != 0){
++ /* When an error occurs, comes here. */
++ pi_cleanup_pi_info(&pi, 0);
++ pi_cleanup_pinfo(pinfo);
++ if(DEBUG) fputs("\n", stderr);
++ return 0;
++ }
++
++ pi_open_file(&pi, fname);
++ pi_read_header(&pi, &pinfo->comment);
++ pi_expand(&pi, &pinfo->pic);
++
++ pinfo->normw = pinfo->w = pi.width;
++ pinfo->normh = pinfo->h = pi.height;
++ pinfo->type = PIC8;
++ if(pi.numcols > 256) /* shouldn't happen. */
++ pi.numcols = 256;
++ for(i = 0; i < pi.numcols; i++){
++ pinfo->r[i] = pi.cmap[i * 3 ];
++ pinfo->g[i] = pi.cmap[i * 3 + 1];
++ pinfo->b[i] = pi.cmap[i * 3 + 2];
++ }
++ pinfo->frmType = F_PI;
++ pinfo->colType = F_FULLCOLOR;
++ sprintf(pinfo->fullInfo, "Pi, %d colors (%ld bytes)",
++ pi.numcols, pi.fsize);
++ sprintf(pinfo->shrtInfo, "%dx%d Pi.", pi.width, pi.height);
++ normaspect = pi.aspect;
++
++ pi_cleanup_pi_info(&pi, 0);
++ if(DEBUG) fputs("\n", stderr);
++ return 1;
++}
++
++static void pi_open_file(pi, fname)
++ struct pi_info *pi;
++ char *fname;
++{
++ if((pi->fp = fopen(fname, "rb")) == NULL)
++ pi_file_error(pi, PI_OPEN);
++ fseek(pi->fp, (size_t) 0, SEEK_END);
++ pi->fsize = ftell(pi->fp);
++ fseek(pi->fp, (size_t) 0, SEEK_SET);
++}
++
++static void pi_read_header(pi, comm)
++ struct pi_info *pi;
++ char **comm;
++{
++ byte buf[10];
++ int mda;
++ int i;
++
++ pi_check_id(pi);
++ pi_read_comment(pi, comm);
++
++ if(fread(buf, (size_t) 10, (size_t) 1, pi->fp) != 1)
++ pi_file_error(pi, PI_CORRUPT);
++
++ pi->mode = buf[0];
++ pi->defcmap = pi->mode & 0x80;
++ if(buf[1] != 0 && buf[2] != 0)
++ pi->aspect = (float) buf[2] / (int) buf[1];
++ pi->cbits = buf[3];
++ pi->numcols = 1 << pi->cbits;
++
++ if(pi->cbits != 4 && pi->cbits != 8)
++ pi_error(pi, PI_PLANES);
++
++ mda = (int) buf[8] << 8 | (int) buf[9];
++ for(i = 0; i < mda; i++){
++ if(fgetc(pi->fp) == EOF)
++ pi_file_error(pi, PI_CORRUPT);
++ }
++
++ if(fread(buf, (size_t) 4, (size_t) 1, pi->fp) != 1)
++ pi_file_error(pi, PI_CORRUPT);
++ pi->width = (int) buf[0] << 8 | (int) buf[1];
++ pi->height = (int) buf[2] << 8 | (int) buf[3];
++
++ pi_read_palette(pi);
++
++ if(DEBUG) pi_show_pi_info(pi);
++}
++
++static void pi_check_id(pi)
++ struct pi_info *pi;
++{
++ char buf[2];
++
++ if(fread(buf, (size_t) 2, (size_t) 1, pi->fp) != 1)
++ pi_file_error(pi, PI_CORRUPT);
++ if(strncmp(buf, pi_id, (size_t) 2) != 0)
++ pi_error(pi, PI_FORMAT);
++}
++
++static void pi_read_comment(pi, comm)
++ struct pi_info *pi;
++ char **comm;
++{
++/*
++ * The comment format is like:
++ * comment string `^Z' dummy string `\0'
++ */
++ int max = -1, i = 0;
++ int c;
++
++ while(1){
++ if((c = fgetc(pi->fp)) == EOF)
++ pi_file_error(pi, PI_CORRUPT);
++ if(c == '\032') /* 0x1a, '^Z' */
++ break;
++ if(max < i){
++ max += 32;
++ *comm = pi_realloc(*comm, (size_t) max + 1, "pi_read_comment(1)");
++ }
++ (*comm)[i++] = c;
++ }
++ if(max < i){
++ max++;
++ *comm = pi_realloc(*comm, (size_t) max + 1, "pi_read_comment(2)");
++ }
++ (*comm)[i] = '\0';
++
++ while((c = fgetc(pi->fp)) != '\0'){ /* skip the dummy area */
++ if(c == EOF)
++ pi_file_error(pi, PI_CORRUPT);
++ }
++}
++
++static void pi_read_palette(pi)
++ struct pi_info *pi;
++{
++ pi->cmap = pi_malloc((size_t) pi->numcols * 3, "pi_read_palette");
++ if(pi->mode & 0x80){
++ if(pi->numcols == 16){
++ int i;
++ byte on;
++
++ on = 0x77;
++ for(i = 0; i < 8; i++){
++ pi->cmap[i * 3 ] = i & 2 ? on : 0;
++ pi->cmap[i * 3 + 1] = i & 4 ? on : 0;
++ pi->cmap[i * 3 + 2] = i & 1 ? on : 0;
++ }
++ on = 0xff;
++ for(; i < 16; i++){
++ pi->cmap[i * 3 ] = i & 2 ? on : 0;
++ pi->cmap[i * 3 + 1] = i & 4 ? on : 0;
++ pi->cmap[i * 3 + 2] = i & 1 ? on : 0;
++ }
++ }else{ /* pi->numcols == 256 */
++ int i;
++ byte r, g, b;
++ r = g = b = 0;
++ for(i = 0; i < 256; i++){
++ pi->cmap[i * 3 ] = r;
++ pi->cmap[i * 3 + 1] = g;
++ pi->cmap[i * 3 + 2] = b;
++ if((b += 0x40) == 0){
++ if((r += 0x20) == 0)
++ g += 0x20;
++ }
++ }
++ }
++ }else{
++ if(fread(pi->cmap, (size_t) pi->numcols * 3, (size_t) 1, pi->fp) != 1)
++ pi_file_error(pi, PI_CORRUPT);
++ }
++}
++
++/* The main routine to expand `Pi' file. */
++static void pi_expand(pi, pic)
++ struct pi_info *pi;
++ byte **pic;
++{
++ byte prev_col = 0;
++ int prev_pos = -1;
++ int cnt = 0, max_cnt = pi->width * pi->height;
++
++ *pic = pi_malloc((size_t) max_cnt, "pi_expand"); // GRR POSSIBLE OVERFLOW / FIXME
++
++ pi_table_create(pi);
++
++ if(pi->width > 2){
++ (*pic)[0] = pi_read_color(pi, 0);
++ (*pic)[1] = pi_read_color(pi, (*pic)[0]);
++
++ while(cnt < max_cnt){
++ int pos = pi_read_position(pi);
++ if(pos != prev_pos){
++ data32 len = pi_read_length(pi);
++ cnt = pi_copy_pixels(pi, *pic, cnt, pos, len);
++ prev_col = (*pic)[cnt - 1];
++ prev_pos = pos;
++ }else{
++ do{
++ prev_col = pi_read_color(pi, (int) prev_col);
++ (*pic)[cnt++] = prev_col;
++ prev_col = pi_read_color(pi, (int) prev_col);
++ (*pic)[cnt++] = prev_col;
++ }while(pi_read_bits(pi, 1) == 1);
++
++ prev_pos = -1;
++ }
++ }
++ }else{
++ while(cnt < max_cnt){
++ prev_col = pi_read_color(pi, (int) prev_col);
++ (*pic)[cnt++] = prev_col;
++ }
++ }
++}
++
++static byte pi_read_color(pi, prev)
++ struct pi_info *pi;
++ int prev;
++{
++ byte n;
++ if(pi->cbits == 4){
++ if(pi_read_bits(pi, 1) == 1)
++ n = pi_read_bits(pi, 1); /* 1x */
++ else{
++ if(pi_read_bits(pi, 1) == 0)
++ n = pi_read_bits(pi, 1) + 2; /* 00x */
++ else{
++ if(pi_read_bits(pi, 1) == 0)
++ n = pi_read_bits(pi, 2) + 4; /* 010xx */
++ else
++ n = pi_read_bits(pi, 3) + 8; /* 011xxx */
++ }
++ }
++ }else{ /* cbits == 8 */
++ if(pi_read_bits(pi, 1) == 1)
++ n = pi_read_bits(pi, 1);
++ else{
++ int bits = 0;
++ byte base = 2;
++ while(bits < 6){
++ if(pi_read_bits(pi, 1) == 0)
++ break;
++ bits++;
++ base <<= 1;
++ }
++ n = pi_read_bits(pi, bits + 1) + base;
++ }
++ }
++
++ return pi_table_get_value(pi, prev, (int) n);
++}
++
++static int pi_read_position(pi)
++ struct pi_info *pi;
++{
++ byte r;
++ if((r = pi_read_bits(pi, 2)) != 3)
++ return (int) r;
++ else
++ return (int) pi_read_bits(pi, 1) + 3;
++}
++
++static data32 pi_read_length(pi)
++ struct pi_info *pi;
++{
++ data32 r = 1;
++ int bits = 0;
++ while(pi_read_bits(pi, 1) == 1){
++ r <<= 1;
++ bits++;
++ }
++ if(bits > 0)
++ return r + pi_read_bits(pi, bits);
++ return 1;
++}
++
++static int pi_copy_pixels(pi, pic, cnt, pos, len)
++ struct pi_info *pi;
++ byte *pic;
++ int cnt, pos;
++ data32 len;
++{
++ int s = 0, d = cnt;
++ int max = pi->width * pi->height;
++ switch(pos){
++ case 0:
++ if(cnt < 2){
++ if(pic[0] == pic[1])
++ s = cnt - 2;
++ else
++ s = cnt - 4;
++ }else{
++ if(pic[cnt - 2] == pic[cnt - 1])
++ s = cnt - 2;
++ else
++ s = cnt - 4;
++ }
++ break;
++ case 1:
++ s = cnt - pi->width;
++ break;
++ case 2:
++ s = cnt - pi->width * 2;
++ break;
++ case 3:
++ s = cnt - pi->width + 1;
++ break;
++ case 4:
++ s = cnt - pi->width - 1;
++ }
++
++ len *= 2;
++ while(s < 0 && len != 0 && d < max){
++ pic[d++] = pic[-(s++) % 2];
++ len--;
++ }
++ while(len != 0 && d < max){
++ pic[d++] = pic[s++];
++ len--;
++ }
++ return d;
++}
++
++/* The main routine of `Pi' saver. */
++int WritePi(fp, pic, ptype, w, h, rmap, gmap, bmap, numcols, colorstyle,
++ comment)
++ FILE *fp;
++ byte *pic;
++ int ptype, w, h;
++ byte *rmap, *gmap, *bmap;
++ int numcols, colorstyle;
++ char *comment;
++{
++ byte rtemp[256], gtemp[256], btemp[256];
++ struct pi_info pi;
++ int e;
++
++ if(DEBUG) fputs("WritePi\n", stderr);
++ pi_init_pi_info(&pi);
++ pi.fp = fp;
++ pi.width = w;
++ pi.height = h;
++ pi.writing_grey = (colorstyle == F_GREYSCALE);
++ if(ptype == PIC24){
++ if(!(pic = Conv24to8(pic, w, h, 256, rtemp, gtemp, btemp)))
++ pi_memory_error("Conv24to8", "WritePi");
++ rmap = rtemp;
++ gmap = gtemp;
++ bmap = btemp;
++ numcols = 256;
++ }
++
++ if((e = setjmp(pi.jmp)) != 0){
++ /* When an error occurs, comes here. */
++ pi_cleanup_pi_info(&pi, 1);
++ if(DEBUG) fputs("\n", stderr);
++ return -1;
++ }
++
++ pi.numcols = numcols;
++ pi_write_header(&pi, comment, rmap, gmap, bmap);
++ pi_compress(&pi, pic);
++ pi_write_gabage(&pi);
++
++ pi_cleanup_pi_info(&pi, 1);
++ if(DEBUG) fputs("\n", stderr);
++ return 0;
++}
++
++static void pi_write_header(pi, comm, r, g, b)
++ struct pi_info *pi;
++ char *comm;
++ byte *r, *g, *b;
++{
++ byte buf[14];
++
++ if(DEBUG) pi_show_pi_info(pi);
++
++ pi_write_id(pi);
++ pi_write_comment(pi, comm);
++
++ buf[0] = buf[1] = buf[2] = 0;
++ buf[3] = pi->cbits = pi->numcols > 16 ? 8 : 4;
++ buf[4] = 'X';
++ buf[5] = 'V';
++ buf[6] = ' ';
++ buf[7] = ' ';
++ buf[8] = buf[9] = 0;
++ buf[10] = pi->width >> 8;
++ buf[11] = pi->width;
++ buf[12] = pi->height >> 8;
++ buf[13] = pi->height;
++ if(fwrite(buf, (size_t) 14, (size_t) 1, pi->fp) != 1)
++ pi_file_error(pi, PI_WRITE);
++
++ pi_write_palette(pi, r, g, b);
++}
++
++static void pi_write_id(pi)
++ struct pi_info *pi;
++{
++ if(fwrite(pi_id, (size_t) 2, (size_t) 1, pi->fp) != 1)
++ pi_file_error(pi, PI_WRITE);
++}
++
++static void pi_write_comment(pi, comm)
++ struct pi_info *pi;
++ char *comm;
++{
++ if(comm){
++ int i;
++ for(i = 0; comm[i]; i++){
++ if(comm[i] == '\032') /* 0x1a, '^Z' */
++ comm[i] = ' ';
++ }
++ if(i > 0){
++ if(fwrite(comm, (size_t) i, (size_t) 1, pi->fp) != 1)
++ pi_file_error(pi, PI_WRITE);
++ }
++ }
++
++ if(fwrite("\032\0", (size_t) 2, (size_t) 1, pi->fp) != 1)
++ pi_file_error(pi, PI_WRITE);
++}
++
++static void pi_write_palette(pi, r, g, b)
++ struct pi_info *pi;
++ byte *r, *g, *b;
++{
++ int i;
++ int pinum = 1 << pi->cbits;
++ char buf[3];
++
++ for(i = 0; i < pi->numcols; i++){
++ buf[0] = *r++;
++ buf[1] = *g++;
++ buf[2] = *b++;
++ if(pi->writing_grey)
++ buf[0] = buf[1] = buf[2] = MONO(buf[0], buf[1], buf[2]);
++ if(fwrite(buf, (size_t) 3, (size_t) 1, pi->fp) != 1)
++ pi_file_error(pi, PI_WRITE);
++ }
++ for( ; i < pinum; i++){
++ if(fwrite(buf, (size_t) 3, (size_t) 1, pi->fp) != 1)
++ pi_file_error(pi, PI_WRITE);
++ }
++ pi->numcols = pinum;
++}
++
++/* The main routine to compress `Pi' format. */
++static void pi_compress(pi, pic)
++ struct pi_info *pi;
++ byte *pic;
++{
++ byte prev_col = 0;
++ int prev_pos = -1;
++ int cnt = 0, max_cnt = pi->width * pi->height;
++ pi_table_create(pi);
++
++ if(pi->width > 2){
++ int pos;
++ data32 len;
++
++ pi_write_color(pi, 0, pic[0]);
++ pi_write_color(pi, pic[0], pic[1]);
++ pos = pi_test_matching(pi, pic, prev_pos, cnt, &len);
++ while(cnt < max_cnt){
++ if(pos >= 0){
++ pi_write_position(pi, pos);
++ pi_write_length(pi, len);
++ if((cnt += len * 2) >= max_cnt)
++ break;
++ prev_col = pic[cnt - 1];
++ prev_pos = pos;
++ pos = pi_test_matching(pi, pic, prev_pos, cnt, &len);
++ }else{
++ pi_write_position(pi, prev_pos);
++ prev_pos = -1;
++ while(pos < 0){
++ pi_write_color(pi, (int) prev_col, pic[cnt]);
++ prev_col = pic[cnt];
++ if(++cnt >= max_cnt)
++ break;
++ pi_write_color(pi, (int) prev_col, pic[cnt]);
++ prev_col = pic[cnt];
++ if(++cnt >= max_cnt)
++ break;
++ pos = pi_test_matching(pi, pic, -1, cnt, &len);
++ if(pos < 0)
++ pi_write_bits(pi, 1, 1);
++ else
++ pi_write_bits(pi, 0, 1);
++ }
++ }
++ }
++ }else{
++ while(cnt < max_cnt){
++ pi_write_color(pi, (int) prev_col, pic[cnt]);
++ prev_col = pic[cnt++];
++ }
++ }
++}
++
++static void pi_write_gabage(pi)
++ struct pi_info *pi;
++{
++ pi_write_bits(pi, 0, 32);
++}
++
++static void pi_write_color(pi, prev, col)
++ struct pi_info *pi;
++ int prev, col;
++{
++ int n = pi_table_lookup_value(pi, prev, col);
++
++ if(pi->cbits == 4){
++ if(n < 2)
++ pi_write_bits(pi, (data32) n | 2, 2);
++ else if(n < 4)
++ pi_write_bits(pi, (data32) n - 2, 3);
++ else if(n < 8)
++ pi_write_bits(pi, (data32) (n - 4) | 8, 5);
++ else
++ pi_write_bits(pi, (data32) (n - 8) | 24, 6);
++ }else{ /* cbits == 8 */
++ if(n < 2){
++ pi_write_bits(pi, (data32) n | 2, 2);
++ }else{
++ int bits = 0;
++ byte base = 2;
++ while(bits < 6){
++ if(n < (int) base * 2)
++ break;
++ bits++;
++ base <<= 1;
++ }
++ pi_write_bits(pi, 0, 1);
++ if(bits > 0)
++ pi_write_bits(pi, 0xffffffff, bits);
++ if(bits < 6)
++ pi_write_bits(pi, 0, 1);
++ pi_write_bits(pi, (data32) n - base, bits + 1);
++ }
++ }
++}
++
++static int pi_test_matching(pi, pic, prev, cnt, len)
++ struct pi_info *pi;
++ byte *pic;
++ int prev, cnt;
++ data32 *len;
++{
++ data32 lens[5];
++ int pos, p;
++ int s, d = 0;
++ int max = pi->width * pi->height;
++
++ for(pos = 0; pos < 5; pos++){
++ switch(pos){
++ case 0:
++ if(cnt < 2){
++ if(pic[0] == pic[1])
++ d = cnt - 2;
++ else
++ d = cnt - 4;
++ }else{
++ if(pic[cnt - 2] == pic[cnt - 1])
++ d = cnt - 2;
++ else
++ d = cnt - 4;
++ }
++ break;
++ case 1:
++ d = cnt - pi->width;
++ break;
++ case 2:
++ d = cnt - pi->width * 2;
++ break;
++ case 3:
++ d = cnt - pi->width + 1;
++ break;
++ case 4:
++ d = cnt - pi->width - 1;
++ }
++ s = cnt;
++ lens[pos] = 0;
++
++ if(prev == 0 && pos == 0)
++ continue;
++
++ while(d < max){
++ if(pic[(d < 0) ? (-d) % 2 : d] != pic[s])
++ break;
++ lens[pos]++;
++ d++;
++ s++;
++ }
++
++ }
++
++ for(pos = 0, p = 1; p < 5; p++){
++ if(lens[p] >= lens[pos])
++ pos = p;
++ }
++
++ if(lens[pos] / 2 == 0)
++ return -1;
++ *len = lens[pos] / 2;
++ return pos;
++}
++
++static void pi_write_position(pi, pos)
++ struct pi_info *pi;
++ int pos;
++{
++ switch(pos){
++ case 0:
++ pi_write_bits(pi, 0, 2);
++ break;
++ case 1:
++ pi_write_bits(pi, 1, 2);
++ break;
++ case 2:
++ pi_write_bits(pi, 2, 2);
++ break;
++ case 3:
++ pi_write_bits(pi, 6, 3);
++ break;
++ case 4:
++ pi_write_bits(pi, 7, 3);
++ break;
++ }
++}
++
++static void pi_write_length(pi, len)
++ struct pi_info *pi;
++ data32 len;
++{
++ int bits = 0;
++ data32 base = 1;
++
++ while(len >= base * 2){
++ bits++;
++ base <<= 1;
++ }
++ if(bits > 0){
++ pi_write_bits(pi, 0xffffffff, bits);
++ pi_write_bits(pi, 0, 1);
++ pi_write_bits(pi, len - base, bits);
++ }else
++ pi_write_bits(pi, 0, 1);
++}
++
++/*
++ * These pi_table_* functions manipulate the color table.
++ * pi_table_create:
++ * allocates and initializes a color table.
++ * pi_table_get_value:
++ * get the specified value, and move it to the top of the list.
++ * pi_table_lookup_value:
++ * look up the specified value, and move it to the top of the list.
++ */
++static void pi_table_create(pi)
++ struct pi_info *pi;
++{
++ struct ct_t *t;
++ int i;
++ byte mask = pi->numcols - 1;
++ pi->ct = pi_malloc(sizeof *pi->ct * pi->numcols, "pi_table_create(1)");
++ for(i = 0, t = pi->ct; i < pi->numcols; i++, t++){
++ int j;
++ byte v = i;
++ t->elt = pi_malloc(sizeof *t->elt * pi->numcols, "pi_table_create(2)");
++ t->top = &t->elt[pi->numcols - 1];
++ for(j = 0; j < pi->numcols; j++){
++ v = (v + 1) & mask;
++ if(j > 0)
++ t->elt[j].old = &t->elt[j - 1];
++ else
++ t->elt[0].old = t->top;
++ if(j < pi->numcols - 1)
++ t->elt[j].recent = &t->elt[j + 1];
++ else
++ t->elt[j].recent = &t->elt[0];
++ t->elt[j].val = v;
++ }
++ t->elt[0].old = t->top;
++ t->top->recent = &t->elt[0];
++ }
++}
++
++static byte pi_table_get_value(pi, left, num)
++ struct pi_info *pi;
++ int left, num;
++{
++ struct ct_t *t = &pi->ct[left];
++ struct elt_t *e = t->top;
++ if(left >= pi->numcols || num >= pi->numcols)
++ abort();
++ if(num != 0){
++ do {
++ e = e->old;
++ }while(--num != 0);
++
++ e->old->recent = e->recent;
++ e->recent->old = e->old;
++
++ e->recent = t->top->recent;
++ e->recent->old = e;
++ e->old = t->top;
++ t->top->recent = e;
++
++ t->top = e;
++ }
++ return e->val;
++}
++
++static int pi_table_lookup_value(pi, left, v)
++ struct pi_info *pi;
++ int left, v;
++{
++ struct ct_t *t = &pi->ct[left];
++ struct elt_t *e = t->top;
++ int num = 0;
++
++ if(left >= pi->numcols || v >= pi->numcols)
++ abort();
++
++ while(e->val != v){
++ e = e->old;
++ num++;
++ }
++
++ if(num != 0){
++ e->old->recent = e->recent;
++ e->recent->old = e->old;
++
++ e->recent = t->top->recent;
++ e->recent->old = e;
++ e->old = t->top;
++ t->top->recent = e;
++
++ t->top = e;
++ }
++
++ return num;
++}
++
++/*
++ * These 2 functions read or write to a bit stream.
++ * pi_read_bits:
++ * reads a specified-bit data from the bit stream.
++ * pi_write_bits:
++ * writes a specified-bit data to the bit stream.
++ */
++static data32 pi_read_bits(pi, numbits)
++ struct pi_info *pi;
++ int numbits;
++{
++ data32 r = 0;
++
++ while(numbits > 0){
++ while(pi->bs.rest > 0 && numbits > 0){
++ r = (r << 1) | (pi->bs.cur & 0x80 ? 1 : 0);
++ pi->bs.cur <<= 1;
++ pi->bs.rest--;
++ numbits--;
++ }
++ if(numbits > 0){
++ int c;
++ if((c = fgetc(pi->fp)) == EOF)
++ pi_file_warning(pi, PI_CORRUPT);
++ pi->bs.cur = c;
++ pi->bs.rest = 8;
++ }
++ }
++
++ return r;
++}
++
++static void pi_write_bits(pi, dat, bits)
++ struct pi_info *pi;
++ data32 dat;
++ int bits;
++{
++ data32 dat_mask = 1 << (bits - 1);
++ while(bits > 0){
++ while(pi->bs.rest < 8 && bits > 0){
++ pi->bs.cur <<= 1;
++ if(dat & dat_mask)
++ pi->bs.cur |= 1;
++ pi->bs.rest++;
++ bits--;
++ dat_mask >>= 1;
++ }
++ if(pi->bs.rest >= 8){
++ if(fputc((int)pi->bs.cur, pi->fp) == EOF)
++ pi_file_error(pi, PI_WRITE);
++ pi->bs.cur = 0;
++ pi->bs.rest = 0;
++ }
++ }
++}
++
++/*
++ * The routines to initialize or clean up.
++ * pi_inif_pi_info:
++ * initializes a pi_info structure.
++ * pi_cleanup_pi_info:
++ * cleanup pi_info structure. It frees allocated memories.
++ * pi_cleanup_pinfo:
++ * cleanup PICINFO structure when an error occurs.
++ */
++static void pi_init_pi_info(pi)
++ struct pi_info *pi;
++{
++ pi->fp = NULL;
++ pi->bs.rest = 0;
++ pi->bs.cur = 0;
++ pi->fsize = 0;
++ pi->mode = 0;
++ pi->width = pi->mode = 0;
++ pi->aspect = 1.0;
++ pi->cbits = 0;
++ pi->numcols = 0;
++ pi->cmap = NULL;
++ pi->ct = NULL;
++ pi->defcmap = 0;
++ pi->writing_grey = 0;
++}
++
++static void pi_cleanup_pi_info(pi, writing)
++ struct pi_info *pi;
++ int writing;
++{
++ if(pi->fp && !writing){
++ fclose(pi->fp);
++ pi->fp = NULL;
++ }
++ if(pi->cmap){
++ free(pi->cmap);
++ pi->cmap = NULL;
++ }
++ if(pi->ct){
++ int i;
++ for(i = 0; i < pi->numcols; i++)
++ free(pi->ct[i].elt);
++ free(pi->ct);
++ pi->ct = NULL;
++ }
++}
++
++static void pi_cleanup_pinfo(pinfo)
++ PICINFO *pinfo;
++{
++ if(pinfo->pic){
++ free(pinfo->pic);
++ pinfo->pic = NULL;
++ }
++ if(pinfo->comment){
++ free(pinfo->comment);
++ pinfo->comment = NULL;
++ }
++}
++
++/*
++ * Error handling routins.
++ * pi_memory_error:
++ * shows a error message, and terminates.
++ * pi_error:
++ * shows a non-file error message.
++ * pi_file_error:
++ * shows a file error message.
++ */
++static void pi_memory_error(scm, fn)
++ char *scm, *fn;
++{
++ char buf[128];
++ sprintf(buf, "%s: couldn't allocate memory. (%s)", scm ,fn);
++ FatalError(buf);
++}
++
++static void pi_error(pi, mn)
++ struct pi_info *pi;
++ int mn;
++{
++ SetISTR(ISTR_WARNING, "%s", pi_msgs[mn]);
++ longjmp(pi->jmp, 1);
++}
++
++static void pi_file_error(pi, mn)
++ struct pi_info *pi;
++ int mn;
++{
++ if(feof(pi->fp))
++ SetISTR(ISTR_WARNING, "%s (end of file)", pi_msgs[mn]);
++ else
++ SetISTR(ISTR_WARNING, "%s (%s)", pi_msgs[mn], ERRSTR(errno));
++ longjmp(pi->jmp, 1);
++}
++
++static void pi_file_warning(pi, mn)
++ struct pi_info *pi;
++ int mn;
++{
++ if(feof(pi->fp))
++ SetISTR(ISTR_WARNING, "%s (end of file)", pi_msgs[mn]);
++ else
++ SetISTR(ISTR_WARNING, "%s (%s)", pi_msgs[mn], ERRSTR(errno));
++}
++
++static void pi_show_pi_info(pi)
++ struct pi_info *pi;
++{
++ fprintf(stderr, " file size: %ld.\n", pi->fsize);
++ fprintf(stderr, " mode: 0x%02x.\n", pi->mode);
++ fprintf(stderr, " image size: %dx%d.\n", pi->width, pi->height);
++ fprintf(stderr, " aspect: %f.\n", pi->aspect);
++ fprintf(stderr, " number of color bits: %d.\n", pi->cbits);
++ fprintf(stderr, " number of colors: %d.\n", pi->numcols);
++ fprintf(stderr, " using default colormap: %s.\n",
++ pi->defcmap ? "true" : "false");
++ fprintf(stderr, " writing greyscale image: %s.\n",
++ pi->writing_grey ? "true" : "false");
++}
++
++/*
++ * Memory related routines. If failed, they calls pi_memory_error.
++ */
++static void *pi_malloc(n, fn)
++ size_t n;
++ char *fn;
++{
++ void *r = (void *) malloc(n);
++ if(r == NULL)
++ pi_memory_error("malloc", fn);
++ return r;
++}
++
++static void *pi_realloc(p, n, fn)
++ void *p;
++ size_t n;
++ char *fn;
++{
++ void *r = (p == NULL) ? (void *) malloc(n) : (void *) realloc(p, n);
++ if(r == NULL)
++ pi_memory_error("realloc", fn);
++ return r;
++}
++#endif /* HAVE_PI */
+diff -u -r --new-file xv-3.10a.orig/xvpic.c xv-3.10a/xvpic.c
+--- xv-3.10a.orig/xvpic.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvpic.c 2005-04-18 00:57:08.000000000 -0500
+@@ -0,0 +1,1285 @@
++/*
++ * xvpic.c - load routine for `PIC' format pictures.
++ *
++ * The `PIC' format is used by many Japanese personal computer users.
++ */
++
++#include "xv.h"
++#include <setjmp.h>
++
++#ifdef HAVE_PIC
++
++typedef unsigned short data16;
++typedef unsigned int data32;
++
++struct pic_info {
++ jmp_buf jmp;
++ FILE *fp;
++ struct {
++ int rest;
++ byte cur;
++ }bs;
++ long fsize;
++ int type, mode;
++ int width, height;
++ float aspect;
++ int cbits;
++ int cmapped;
++ byte *cmap;
++ int cached;
++ struct cache_t {
++ int newest;
++ struct cachenode_t {
++ data32 dat;
++ int newer, older;
++ } *node;
++ } cache;
++ int g_bits, r_bits, b_bits, i_bits;
++ int inv_gr;
++ int tiled256;
++ int numcols;
++ int writing_grey;
++ data32 *data;
++};
++
++static void pic_open_file PARM((struct pic_info*,char*));
++static void pic_check_id PARM((struct pic_info*));
++static void pic_read_comment PARM((struct pic_info*, char**));
++static void pic_read_header PARM((struct pic_info*));
++static void pic_expand_data PARM((struct pic_info*));
++static int pic_expanding_read_len PARM((struct pic_info*));
++static data32 pic_expanding_read_color PARM((struct pic_info*));
++static void pic_expanding_read_chain
++ PARM((struct pic_info*, int, int, data32));
++static void pic_make_xvpic
++ PARM((struct pic_info*, byte**, byte*, byte*, byte*));
++
++static void pic_write_id PARM((struct pic_info*));
++static void pic_write_comment PARM((struct pic_info*, char*));
++static void pic_write_header PARM((struct pic_info*));
++static void pic_write_palette
++ PARM((struct pic_info*, byte*, byte*, byte*));
++static void pic_make_sparse_data PARM((struct pic_info*, byte*));
++static void pic_write_data PARM((struct pic_info*));
++static void pic_write_length PARM((struct pic_info*, data32));
++static void pic_write_color PARM((struct pic_info*, data32));
++static void pic_write_chain
++ PARM((struct pic_info*, int, int, data32));
++
++static data32 pic_read_rgb PARM((struct pic_info*));
++static data32 pic_read_color_code PARM((struct pic_info*));
++static void pic_write_rgb PARM((struct pic_info*, data32));
++static void pic_write_color_code PARM((struct pic_info*, data32));
++
++static void pic_cache_init PARM((struct pic_info*));
++static data32 pic_cache_get_value PARM((struct pic_info*, int));
++static void pic_cache_add_value PARM((struct pic_info*, data32));
++static int pic_cache_lookup PARM((struct pic_info*, data32));
++
++static data32 pic_read_bits PARM((struct pic_info*, int));
++static void pic_write_bits PARM((struct pic_info*, data32, int));
++static byte pic_pad_bit PARM((int, data32));
++
++static void pic_init_info PARM((struct pic_info*));
++static void pic_cleanup_pic_info PARM((struct pic_info*, int));
++static void pic_cleanup_pinfo PARM((PICINFO*));
++static void pic_memory_error PARM((char*, char*));
++static void pic_error PARM((struct pic_info*, int));
++static void pic_file_error PARM((struct pic_info*, int));
++static void pic_file_warning PARM((struct pic_info*, int));
++static void pic_show_pic_info PARM((struct pic_info*));
++static void *pic_malloc PARM((size_t, char*));
++static void *pic_realloc PARM((void*, size_t, char*));
++
++
++static char *pic_id = "PIC";
++
++/* Error Messages */
++static char *pic_msgs[] = {
++ NULL,
++#define PIC_OPEN 1
++ "can't open file.",
++#define PIC_CORRUPT 2
++ "file corrupted.",
++#define PIC_FORMAT 3
++ "not PIC format.",
++#define PIC_SUPPORT 4
++ "unsupported type.",
++#define PIC_COMMENT 5
++ "can't read comment.",
++#define PIC_TYPE 6
++ "bad machine type.",
++#define PIC_MODE 7
++ "bad machine-dependent mode.",
++#define PIC_NUM_COLORS 8
++ "bad number of colors.",
++#define PIC_SIZE 9
++ "bad size.",
++#define PIC_ASPECT 10
++ "bad aspect.",
++#define PIC_WRITE 11
++ "write failed.",
++};
++
++#define H4(b) (((b) >> 4) & 0x0f)
++#define L4(b) ( (b) & 0x0f)
++
++
++/* The main routine to load a PIC file. */
++int LoadPIC(fname, pinfo)
++ char *fname;
++ PICINFO *pinfo;
++{
++ int e;
++ struct pic_info pic;
++ char buf[128];
++
++ if(DEBUG) fputs("LoadPIC:\n", stderr);
++
++ pic_init_info(&pic);
++
++ pinfo->comment = NULL;
++ if((e = setjmp(pic.jmp)) != 0){
++ /* When an error occurs, comes here. */
++ pic_cleanup_pic_info(&pic, 0);
++ pic_cleanup_pinfo(pinfo);
++ if(DEBUG) fputs("\n", stderr);
++ return 0;
++ }
++
++ pic_open_file(&pic, fname);
++ pic_check_id(&pic);
++ pic_read_comment(&pic, &pinfo->comment);
++ pic_read_header(&pic);
++ pic_expand_data(&pic);
++ pic_make_xvpic(&pic, &pinfo->pic, pinfo->r, pinfo->g, pinfo->b);
++
++ pinfo->w = pic.width;
++ if(pic.tiled256)
++ pinfo->h = pic.height * 2;
++ else
++ pinfo->h = pic.height;
++ pinfo->normw = pinfo->w;
++ pinfo->normh = pinfo->h;
++ pinfo->type = pic.cmapped ? PIC8 : PIC24;
++ pinfo->frmType = F_PIC;
++ pinfo->colType = F_FULLCOLOR;
++ strcpy(pinfo->fullInfo, "PIC");
++ switch(pic.type){
++ case 0x0:
++ strcat(pinfo->fullInfo, ", X68k");
++ break;
++ case 0x1:
++ strcat(pinfo->fullInfo, ", PC-88VA");
++ if(pic.mode & 1)
++ strcat(pinfo->fullInfo, ", HR");
++ if(pic.mode & 2)
++ strcat(pinfo->fullInfo, ", tiled 256");
++ break;
++ case 0x2:
++ strcat(pinfo->fullInfo, ", FM-TOWNS");
++ if(pic.mode == 0x5){
++ strcat(pinfo->fullInfo, ", low-resolution");
++ }else{
++ strcat(pinfo->fullInfo, ", high-resolution");
++ }
++ break;
++ case 0x3:
++ strcat(pinfo->fullInfo, ", Macintosh");
++ break;
++ case 0xf:
++ ;
++ }
++ sprintf(buf, " (%ld bytes)", pic.fsize);
++ strcat(pinfo->fullInfo, buf);
++ sprintf(pinfo->shrtInfo, "%dx%d(aspect %4.2f) PIC.",
++ pinfo->w, pinfo->h, pic.aspect);
++ if (!nopicadjust)
++ normaspect = pic.aspect;
++
++ pic_cleanup_pic_info(&pic, 0);
++ if(DEBUG) fputs("\n", stderr);
++ return 1;
++}
++
++static void pic_open_file(pi, fname)
++ struct pic_info *pi;
++ char *fname;
++{
++ if((pi->fp = fopen(fname, "rb")) == NULL)
++ pic_file_error(pi, PIC_OPEN);
++ fseek(pi->fp, (size_t) 0, SEEK_END);
++ pi->fsize = ftell(pi->fp);
++ fseek(pi->fp, (size_t) 0, SEEK_SET);
++}
++
++static void pic_check_id(pi)
++ struct pic_info *pi;
++{
++ char buf[3];
++ if(fread(buf, (size_t) 3, (size_t) 1, pi->fp) != 1)
++ pic_file_error(pi, PIC_CORRUPT);
++ if(strncmp(buf, pic_id, (size_t) 3) != 0)
++ pic_error(pi, PIC_FORMAT);
++}
++
++static void pic_read_comment(pi, comm)
++ struct pic_info *pi;
++ char **comm;
++{
++ /* The comment field is like:
++ * comment-string ^Z dummy \0 \0
++ */
++ int max = -1, i = 0;
++ int c;
++
++ while(1){
++ if((c = fgetc(pi->fp)) == EOF)
++ pic_file_error(pi, PIC_CORRUPT);
++ if(c == '\032') /* 0x1a, '^Z' */
++ break;
++ if(max < i){
++ max += 32;
++ *comm = pic_realloc(*comm, (size_t) max + 1, "pic_read_comment#1");
++ }
++ (*comm)[i++] = c;
++ }
++
++ if(max < i){
++ max++;
++ *comm = pic_realloc(*comm, (size_t) max + 1, "pic_read_comment#2");
++ }
++ (*comm)[i] = '\0';
++
++ while((c = fgetc(pi->fp)) != '\0'){ /* skip the dummy area */
++ if(c == EOF)
++ pic_file_error(pi, PIC_CORRUPT);
++ }
++
++ if(fgetc(pi->fp) != '\0') /* check the reserved byte */
++ pic_error(pi, PIC_SUPPORT);
++}
++
++static void pic_read_header(pi)
++ struct pic_info *pi;
++{
++ pi->mode = pic_read_bits(pi, 4);
++ pi->type = pic_read_bits(pi, 4);
++ pi->cbits = pic_read_bits(pi, 16);
++ pi->width = pic_read_bits(pi, 16);
++ pi->height = pic_read_bits(pi, 16);
++
++ /* machine-dependent setup. */
++ switch(pi->type){
++ case 0x0: /* X68K */
++ if(pi->mode != 0)
++ pic_error(pi, PIC_MODE);
++ switch(pi->cbits){
++ case 4:
++ pi->aspect = 1.0;
++ pi->g_bits = pi->r_bits = pi->b_bits = 5;
++ pi->i_bits = 1;
++ pi->cmapped = 1;
++ break;
++
++ case 8:
++ pi->aspect = 4.0 / 3.0;
++ pi->g_bits = pi->r_bits = pi->b_bits = 5;
++ pi->i_bits = 1;
++ pi->cmapped = 1;
++ break;
++
++ case 15:
++ pi->aspect = 4.0 / 3.0;
++ pi->g_bits = pi->r_bits = pi->b_bits = 5;
++ pi->cached = 1;
++ break;
++
++ case 16:
++ pi->aspect = 4.0 / 3.0;
++ pi->g_bits = pi->r_bits = pi->b_bits = 5;
++ pi->i_bits = 1;
++ pi->cached = 1;
++ break;
++
++ default:
++ pic_error(pi, PIC_NUM_COLORS);
++ }
++ break;
++
++ case 0x1: /* PC-88VA */
++ if(pi->height > 1000)
++ pic_error(pi, PIC_SIZE);
++ switch(pi->width * 1000 + pi->height){
++ case 640400:
++ case 640204:
++ case 640200:
++ case 320408:
++ case 320400:
++ case 320200:
++ break;
++ default:
++ pic_error(pi, PIC_SIZE);
++ }
++ pi->aspect = 400.0 / pi->height;
++ pi->aspect *= pi->width / 640.0;
++ if(pi->mode & 0x1) /* HR mode */
++ pi->aspect *= 2.0;
++ if(pi->mode & 0x2){ /* tiled 256 format */
++ if(pi->cbits != 16)
++ pic_error(pi, PIC_NUM_COLORS);
++ pi->tiled256 = 1;
++ }
++ switch(pi->cbits){
++ case 8:
++ pi->g_bits = pi->r_bits = 3;
++ pi->b_bits = 2;
++ break;
++
++ case 12:
++ pi->g_bits = pi->r_bits = pi->b_bits = 4;
++ pi->cached = 1;
++ break;
++
++ case 16:
++ pi->g_bits = 6;
++ pi->r_bits = pi->b_bits = 5;
++ pi->cached = 1;
++ break;
++
++ default:
++ pic_error(pi, PIC_NUM_COLORS);
++ }
++ break;
++
++ case 0x2: /* FM-TOWNS */
++ if(pi->cbits != 15)
++ pic_error(pi, PIC_NUM_COLORS);
++ switch(pi->mode){
++ case 0x5:
++ case 0xc:
++ break;
++ default:
++ pic_error(pi, PIC_MODE);
++ }
++ pi->g_bits = pi->r_bits = pi->b_bits = 5;
++ pi->cached = 1;
++ break;
++
++ case 0x3: /* MAC */
++ if(pi->cbits != 15)
++ pic_error(pi, PIC_NUM_COLORS);
++ pi->r_bits = pi->g_bits = pi->b_bits = 5;
++ pi->inv_gr = 1;
++ break;
++
++ case 0xf: /* misc */
++ {
++ byte ah, al;
++
++ switch(pi->mode){
++ case 0x0:
++ break;
++ case 0x1:
++ pi->aspect = 4.0 / 3.0;
++ break;
++ case 0xf:
++ break;
++ default:
++ pic_error(pi, PIC_MODE);
++ }
++ pic_read_bits(pi, 16); /* x */
++ pic_read_bits(pi, 16); /* y */
++ ah = pic_read_bits(pi, 8);
++ al = pic_read_bits(pi, 8);
++ if(ah > 0 && al > 0)
++ pi->aspect = (float) al / (int) ah;
++ else if(pi->mode == 0xf)
++ pic_error(pi, PIC_ASPECT);
++ switch(pi->cbits){
++ case 4:
++ case 8:
++ pi->g_bits = pi->r_bits = pi->b_bits = pic_read_bits(pi, 8);
++ pi->cmapped = 1;
++ break;
++
++ case 12:
++ pi->g_bits = pi->r_bits = pi->b_bits = 4;
++ pi->cached = 1;
++ break;
++
++ case 15:
++ pi->g_bits = pi->r_bits = pi->b_bits = 5;
++ pi->cached = 1;
++ break;
++
++ case 16:
++ pi->g_bits = pi->r_bits = pi->b_bits = 5;
++ pi->i_bits = 1;
++ pi->cached = 1;
++ break;
++
++ case 24:
++ pi->g_bits = pi->r_bits = pi->b_bits = 8;
++ pi->cached = 1;
++ break;
++
++ case 32:
++ pic_error(pi, PIC_SUPPORT);
++ break;
++
++ default:
++ pic_error(pi, PIC_NUM_COLORS);
++ }
++ }
++ break;
++
++ default:
++ pic_error(pi, PIC_TYPE);
++ }
++
++ pi->numcols = 1 << pi->cbits;
++
++ /* read palette data */
++ if(pi->cmapped){
++ int i;
++ pi->cmap = pic_malloc((size_t) 3 * pi->numcols, "pic_read_header#1");
++ for(i = 0; i < pi->numcols; i++){
++ data32 c = pic_read_rgb(pi);
++ pi->cmap[i * 3 ] = c >> 16 & 0xff;
++ pi->cmap[i * 3 + 1] = c >> 8 & 0xff;
++ pi->cmap[i * 3 + 2] = c & 0xff;
++ }
++ }
++
++ /* setup color code cache */
++ if(pi->cached)
++ pic_cache_init(pi);
++
++
++ pi->data = pic_malloc(sizeof(data32) * pi->width * pi->height, // GRR POSSIBLE OVERFLOW / FIXME
++ "pic_read_header#2");
++ {
++ int i;
++ for(i = 0; i < pi->width * pi->height; i++)
++ pi->data[i] = 0xffffffff;
++ }
++
++ if(DEBUG)
++ pic_show_pic_info(pi);
++}
++
++/* The main routine to expand a PIC file. */
++static void pic_expand_data(pi)
++ struct pic_info *pi;
++{
++ int cnt;
++ data32 c;
++ pi->data[0] = c = 0;
++ for(cnt = -1; cnt < pi->width * pi->height; ){
++ int len = pic_expanding_read_len(pi);
++ cnt += len;
++ if(cnt < pi->width * pi->height){
++ int x = cnt % pi->width;
++ int y = cnt / pi->width;
++ data32 c = pic_expanding_read_color(pi);
++ pic_expanding_read_chain(pi, x, y, c);
++ }
++ }
++}
++
++static int pic_expanding_read_len(pi)
++ struct pic_info *pi;
++{
++ int len;
++ byte bits;
++ for(len = 2, bits = 1; pic_read_bits(pi, 1) == 1; bits++)
++ len <<= 1;
++ return len - 1 + pic_read_bits(pi, bits);
++}
++
++static data32 pic_expanding_read_color(pi)
++ struct pic_info *pi;
++{
++ if(pi->cached){
++ byte b = pic_read_bits(pi, 1);
++ if(b){
++ return pic_cache_get_value(pi, (int) pic_read_bits(pi, 7));
++ }else{
++ data32 c = pic_read_color_code(pi);
++ pic_cache_add_value(pi, c);
++ return c;
++ }
++ }
++ return pic_read_color_code(pi);
++}
++
++static void pic_expanding_read_chain(pi, x, y, c)
++ struct pic_info *pi;
++ int x, y;
++ data32 c;
++{
++ pi->data[y * pi->width + x] = c;
++ if(pic_read_bits(pi, 1) == 1){
++ int fin = 0;
++ while(!fin){
++ switch(pic_read_bits(pi, 2)){
++ case 1: /* left */
++ pi->data[(++y) * pi->width + (--x)] = c;
++ break;
++ case 2: /* middle */
++ pi->data[(++y) * pi->width + x ] = c;
++ break;
++ case 3: /* right */
++ pi->data[(++y) * pi->width + (++x)] = c;
++ break;
++ case 0: /* far or nothing */
++ if(pic_read_bits(pi, 1) == 0)
++ fin = 1;
++ else{
++ if(pic_read_bits(pi, 1) == 0)
++ pi->data[(++y) * pi->width + (x -= 2)] = c;
++ else
++ pi->data[(++y) * pi->width + (x += 2)] = c;
++ }
++ }
++ }
++ }
++}
++
++/*
++ * Make a picture from the expanded data.
++ */
++static void pic_make_xvpic(pi, xp, rp, gp, bp)
++ struct pic_info *pi;
++ byte **xp, *rp, *gp, *bp;
++{
++ if(pi->cmapped){
++ if(pi->tiled256)
++ *xp = pic_malloc((size_t) pi->width * pi->height * 2, // GRR POSSIBLE OVERFLOW / FIXME
++ "pic_make_xvpic#1");
++ else
++ *xp = pic_malloc((size_t) pi->width * pi->height, // GRR POSSIBLE OVERFLOW / FIXME
++ "pic_make_xvpic#2");
++ }else
++ *xp = pic_malloc((size_t) pi->width * pi->height * 3, // GRR POSSIBLE OVERFLOW / FIXME
++ "pic_make_xvpic#3");
++
++ if(pi->cmapped){
++ int i;
++
++ for(i = 0; i < pi->numcols; i++){
++ rp[i] = pi->cmap[i * 3 ];
++ gp[i] = pi->cmap[i * 3 + 1];
++ bp[i] = pi->cmap[i * 3 + 2];
++ }
++
++ if(pi->tiled256){
++ int pic_idx = 0, dat_idx;
++ data16 col = 0;
++ for(dat_idx = 0; dat_idx < pi->width * pi->height; dat_idx++){
++ if(pi->data[dat_idx] != 0xffffffff)
++ col = pi->data[dat_idx];
++ (*xp)[pic_idx++] = col & 0xff;
++ (*xp)[pic_idx++] = col >> 8 & 0xff;
++ dat_idx++;
++ }
++ }else{
++ int pic_idx = 0, dat_idx;
++ byte col = 0;
++ for(dat_idx = 0; dat_idx < pi->width * pi->height; dat_idx++){
++ if(pi->data[dat_idx] != 0xffffffff)
++ col = pi->data[dat_idx];
++ (*xp)[pic_idx++] = col;
++ }
++ }
++ }else{
++ int pic_idx = 0, dat_idx;
++ byte r = 0, g = 0, b = 0;
++ for(dat_idx = 0; dat_idx < pi->width * pi->height; dat_idx++){
++ if(pi->data[dat_idx] != 0xffffffff){
++ data32 col = pi->data[dat_idx];
++ r = col >> 16 & 0xff;
++ g = col >> 8 & 0xff;
++ b = col & 0xff;
++ }
++ (*xp)[pic_idx++] = r;
++ (*xp)[pic_idx++] = g;
++ (*xp)[pic_idx++] = b;
++ }
++ }
++}
++
++
++/* The main routine to write PIC file. */
++int WritePIC(fp, pic0, ptype, w, h, rmap, gmap, bmap, numcols, colorstyle,
++ comment)
++ FILE *fp;
++ byte *pic0;
++ int ptype, w, h;
++ byte *rmap, *gmap, *bmap;
++ int numcols, colorstyle;
++ char *comment;
++{
++ struct pic_info pic;
++ int e;
++
++ if(DEBUG) fputs("WritePIC:\n", stderr);
++
++ pic_init_info(&pic);
++ pic.fp = fp;
++ pic.width = w;
++ pic.height = h;
++ pic.writing_grey = (colorstyle == F_GREYSCALE);
++ if(ptype != PIC24){ /* PIC8 */
++ pic.cmapped = 1;
++ pic.cached = 0;
++ pic.cbits = 8;
++ pic.g_bits =
++ pic.r_bits =
++ pic.b_bits = 8;
++ pic.i_bits = 0;
++ pic.numcols = numcols;
++ }else{ /* PIC24 */
++ pic.cmapped = 0;
++ pic.cached = 1;
++ pic.cbits = 24;
++ pic.g_bits =
++ pic.r_bits =
++ pic.b_bits = 8;
++ pic.i_bits = 0;
++ pic.numcols = 1 << 24;
++ pic_cache_init(&pic);
++ }
++
++ if((e = setjmp(pic.jmp)) != 0){
++ /* When an error occurs while writing, comes here. */
++ pic_cleanup_pic_info(&pic, 1);
++ if(DEBUG) fputs("\n", stderr);
++ return -1;
++ }
++
++ pic_write_id(&pic);
++ pic_write_comment(&pic, comment);
++ pic_write_header(&pic);
++ if(pic.cmapped)
++ pic_write_palette(&pic, rmap, gmap, bmap);
++ pic_make_sparse_data(&pic, pic0);
++ pic_write_data(&pic);
++ pic_write_bits(&pic, 0, 8);
++
++ pic_cleanup_pic_info(&pic, 1);
++ if(DEBUG) fputs("\n", stderr);
++ return 0;
++}
++
++static void pic_write_id(pi)
++ struct pic_info *pi;
++{
++ if(fwrite("PIC", (size_t) 3, (size_t) 1, pi->fp) != 1)
++ pic_file_error(pi, PIC_WRITE);
++}
++
++static void pic_write_comment(pi, comm)
++ struct pic_info *pi;
++ char *comm;
++{
++ if(comm){
++ while(*comm){
++ int c = *comm;
++ if(c == '\032')
++ c = ' ';
++ if(fputc(*comm, pi->fp) == EOF)
++ pic_file_error(pi, PIC_WRITE);
++ comm++;
++ }
++ }
++ /* write ^Z, 0, and reserved. */
++ if(fwrite("\032\0\0", (size_t)3, (size_t) 1, pi->fp) != 1)
++ pic_file_error(pi, PIC_WRITE);
++}
++
++static void pic_write_header(pi)
++ struct pic_info *pi;
++{
++ if(DEBUG) pic_show_pic_info(pi);
++ pic_write_bits(pi, (data32) 0, 4); /* mode: 1:1 */
++ pic_write_bits(pi, (data32) 0xf, 4); /* type: misc */
++ pic_write_bits(pi, (data32) pi->cbits, 16); /* bits */
++ pic_write_bits(pi, (data32) pi->width, 16); /* width */
++ pic_write_bits(pi, (data32) pi->height, 16); /* height */
++ pic_write_bits(pi, (data32) 0xffff, 16); /* x: unused */
++ pic_write_bits(pi, (data32) 0xffff, 16); /* y: unused */
++ pic_write_bits(pi, (data32) 0x0101, 16); /* real aspect */
++}
++
++static void pic_write_palette(pi, r, g, b)
++ struct pic_info *pi;
++ byte *r, *g, *b;
++{
++ int i;
++ data32 rgb = 0;
++ pic_write_bits(pi, (data32) pi->g_bits, 8);
++ for(i = 0; i < pi->numcols; i++){
++ rgb = (data32) *r++ << 16 | (data32) *g++ << 8 | (data32) *b++;
++ pic_write_rgb(pi, rgb);
++ }
++ for( ; i < 256; i++)
++ pic_write_rgb(pi, rgb);
++}
++
++static void pic_make_sparse_data(pi, dat)
++ struct pic_info *pi;
++ byte *dat;
++{
++ int i;
++ data32 c;
++
++ pi->data = pic_malloc(sizeof(data32) * pi->width * pi->height, // GRR POSSIBLE OVERFLOW / FIXME
++ "pic_make_sparse_data");
++
++ if(pi->cmapped){
++ c = 0;
++ for(i = 0; i < pi->width * pi->height; i++){
++ if(c != dat[i])
++ c = pi->data[i] = dat[i];
++ else
++ pi->data[i] = 0xffffffff;
++ }
++ }else{
++ int j = 0;
++ c = 0;
++ for(i = 0; i < pi->width * pi->height; i++){
++ data32 r, g, b, t;
++ r = dat[j++];
++ g = dat[j++];
++ b = dat[j++];
++ t = r << 16 | g << 8 | b;
++ if(c != t)
++ c = pi->data[i] = t;
++ else
++ pi->data[i] = 0xffffffff;
++ }
++ }
++}
++
++static void pic_write_data(pi)
++ struct pic_info *pi;
++{
++ int i;
++ int max = pi->width * pi->height;
++ data32 c = 0;
++
++ i = -1;
++ while(i < max){
++ int j;
++ for(j = i + 1; j < max; j++){
++ if(pi->data[j] != 0xffffffff)
++ break;
++ }
++ pic_write_length(pi, (data32) j - i);
++ i = j;
++ if(i < max){
++ pic_write_color(pi, c = pi->data[i]);
++ pic_write_chain(pi, i % pi->width, i / pi->width, c);
++ }
++ }
++}
++
++static void pic_write_length(pi, len)
++ struct pic_info *pi;
++ data32 len;
++{
++ int bits = 0; /* leading 1's */
++ int max = 2;
++
++ while(len > max){
++ max = (max + 1) * 2;
++ bits++;
++ }
++ pic_write_bits(pi, 0xffffffff, bits);
++ pic_write_bits(pi, 0, 1);
++ pic_write_bits(pi, len - max / 2, bits + 1);
++}
++
++static void pic_write_color(pi, c)
++ struct pic_info *pi;
++ data32 c;
++{
++ if(pi->cached){
++ int idx = pic_cache_lookup(pi, c);
++ if(idx < 0){ /* not found */
++ pic_write_bits(pi, 0, 1);
++ pic_write_color_code(pi, c);
++ pic_cache_add_value(pi, c);
++ }else{ /* found */
++ pic_write_bits(pi, (data32) 0xffffffff, 1);
++ pic_write_bits(pi, (data32) idx, 7);
++ }
++ }else
++ pic_write_color_code(pi, c);
++}
++
++static void pic_write_chain(pi, x, y, c)
++ struct pic_info *pi;
++ int x, y;
++ data32 c;
++{
++ int ctr = (y + 1) * pi->width + x;
++
++ if(y < pi->height - 1 &&
++ ( pi->data[ctr ] == c ||
++ (x > 0 && pi->data[ctr - 1] == c) ||
++ (x < pi->width - 1 && pi->data[ctr + 1] == c) ||
++ (x > 1 && pi->data[ctr - 2] == c) ||
++ (x < pi->width - 2 && pi->data[ctr + 2] == c))){
++ pic_write_bits(pi, 1, 1);
++ while(++y < pi->height){
++ if(pi->data[ctr] == c){ /* center */
++ pic_write_bits(pi, 2, 2);
++ pi->data[ctr] = 0xffffffff;
++ ctr += pi->width;
++ }else if(x > 0 && pi->data[ctr - 1] == c){ /* left */
++ pic_write_bits(pi, 1, 2);
++ pi->data[ctr - 1] = 0xffffffff;
++ ctr += pi->width - 1;
++ }else if(x < pi->width - 1 && pi->data[ctr + 1] == c){/* right */
++ pic_write_bits(pi, 3, 2);
++ pi->data[ctr + 1] = 0xffffffff;
++ ctr += pi->width + 1;
++ }else if(x > 1 && pi->data[ctr - 2] == c){ /* 2-left */
++ pic_write_bits(pi, 2, 4);
++ pi->data[ctr - 2] = 0xffffffff;
++ ctr += pi->width - 2;
++ }else if(x < pi->width - 2 && pi->data[ctr + 2] == c){/* 2-right */
++ pic_write_bits(pi, 3, 4);
++ pi->data[ctr + 2] = 0xffffffff;
++ ctr += pi->width + 2;
++ }else /* nothing */
++ break;
++ }
++ pic_write_bits(pi, 0, 3);
++ }else
++ pic_write_bits(pi, 0, 1);
++}
++
++
++/*
++ * These 4 functions read or write a color.
++ *
++ * pic_read_rgb:
++ * reads an RGB. Each bit length is [rgb]_bits, but
++ * it is expanded to 8bits when returned.
++ *
++ * pic_read_color_code:
++ * reads a color code, whose length is cbits.
++ * It is the index to the colormap or RGB itself.
++ *
++ * pic_write_rgb:
++ * writes an RGB value.
++ *
++ * pic_write_color_code:
++ * writes a color code.
++ */
++static data32 pic_read_rgb(pi)
++ struct pic_info *pi;
++{
++ int rb = pi->r_bits, gb = pi->g_bits, bb = pi->b_bits;
++ byte r, g, b;
++ if(pi->inv_gr){
++ r = pic_read_bits(pi, rb);
++ g = pic_read_bits(pi, gb);
++ }else{
++ g = pic_read_bits(pi, gb);
++ r = pic_read_bits(pi, rb);
++ }
++ b = pic_read_bits(pi, bb);
++ if(pi->i_bits){
++ byte i;
++ i = pic_read_bits(pi, pi->i_bits);
++ r = r << pi->i_bits | i;
++ g = g << pi->i_bits | i;
++ b = b << pi->i_bits | i;
++ rb += pi->i_bits;
++ gb += pi->i_bits;
++ bb += pi->i_bits;
++ }
++ r = pic_pad_bit(rb, r);
++ g = pic_pad_bit(gb, g);
++ b = pic_pad_bit(bb, b);
++
++ return (data32) r << 16 | (data32) g << 8 | (data32) b;
++}
++
++static data32 pic_read_color_code(pi)
++ struct pic_info *pi;
++{
++ if(pi->cmapped)
++ return pic_read_bits(pi, pi->cbits);
++ return pic_read_rgb(pi);
++}
++
++static void pic_write_rgb(pi, rgb)
++ struct pic_info *pi;
++ data32 rgb;
++{
++ byte r = rgb >> 16;
++ byte g = rgb >> 8;
++ byte b = rgb;
++ if(pi->writing_grey)
++ r = g = b = MONO(r, g, b);
++ pic_write_bits(pi, g, pi->g_bits);
++ pic_write_bits(pi, r, pi->r_bits);
++ pic_write_bits(pi, b, pi->b_bits);
++}
++
++static void pic_write_color_code(pi, code)
++ struct pic_info *pi;
++ data32 code;
++{
++ if(pi->cmapped){
++ pic_write_bits(pi, code, pi->cbits);
++ }else{
++ pic_write_rgb(pi, code);
++ }
++}
++
++
++/*
++ * These pic_cache_* functions are an implementation of the color cache.
++ *
++ * pic_cache_init:
++ * initializes the cache.
++ *
++ * pic_cache_get_value:
++ * gets a color indexed by the argument `idx'.
++ * It updates the `most recently used' time.
++ *
++ * pic_cache_add_value:
++ * adds a color to the top of the cache list.
++ */
++static void pic_cache_init(pi)
++ struct pic_info *pi;
++{
++ int i;
++ pi->cache.node = pic_malloc(sizeof(struct cachenode_t) * 128,
++ "pic_cache_init");
++ for(i = 0; i < 128; i++){
++ pi->cache.node[i].newer = i + 1;
++ pi->cache.node[i].older = i - 1;
++ pi->cache.node[i].dat = 0;
++ }
++ pi->cache.node[ 0].older = 127;
++ pi->cache.node[127].newer = 0;
++ pi->cache.newest = 0;
++}
++
++static data32 pic_cache_get_value(pi, idx)
++ struct pic_info *pi;
++ int idx;
++{
++ struct cachenode_t *p = pi->cache.node;
++ int n = pi->cache.newest;
++ if(n != idx){
++ p[p[idx].newer].older = p[idx].older;
++ p[p[idx].older].newer = p[idx].newer;
++
++ p[p[n].newer].older = idx;
++ p[idx].newer = p[n].newer;
++ p[n].newer = idx;
++ p[idx].older = n;
++
++ pi->cache.newest = idx;
++ }
++ return pi->cache.node[idx].dat;
++}
++
++static void pic_cache_add_value(pi, dat)
++ struct pic_info *pi;
++ data32 dat;
++{
++ pi->cache.newest = pi->cache.node[pi->cache.newest].newer;
++ pi->cache.node[pi->cache.newest].dat = dat;
++}
++
++static int pic_cache_lookup(pi, dat)
++ struct pic_info *pi;
++ data32 dat;
++{
++ int i;
++ for(i = 0; i < 128; i++){
++ if(pi->cache.node[i].dat == dat){
++ pic_cache_get_value(pi, i);
++ return i;
++ }
++ }
++ return -1;
++}
++
++
++/*
++ * These pic_{read,write}_bits functions access the bit stream.
++ * pic_read_bits:
++ * reads the specified bits from the file.
++ *
++ * pic_write_bits:
++ * writes the specified bits to the file.
++ */
++static data32 pic_read_bits(pi, bits)
++ struct pic_info *pi;
++ int bits;
++{
++ data32 r = 0;
++
++ while(bits > 0){
++ while(pi->bs.rest > 0 && bits > 0){
++ r = (r << 1) | (pi->bs.cur & 0x80 ? 1 : 0);
++ pi->bs.cur <<= 1;
++ pi->bs.rest--;
++ bits--;
++ }
++ if(bits > 0){
++ int c;
++ if((c = fgetc(pi->fp)) == EOF){
++ pic_file_warning(pi, PIC_CORRUPT);
++ c = 0;
++ }
++ pi->bs.cur = c;
++ pi->bs.rest = 8;
++ }
++ }
++
++ return r;
++}
++
++static void pic_write_bits(pi, dat, bits)
++ struct pic_info *pi;
++ data32 dat;
++ int bits;
++{
++ data32 dat_mask = 1 << (bits - 1);
++ while(bits > 0){
++ while(pi->bs.rest < 8 && bits > 0){
++ pi->bs.cur <<= 1;
++ if(dat & dat_mask)
++ pi->bs.cur |= 1;
++ pi->bs.rest++;
++ bits--;
++ dat_mask >>= 1;
++ }
++ if(pi->bs.rest >= 8){
++ if(fputc((int)pi->bs.cur, pi->fp) == EOF)
++ pic_error(pi, PIC_WRITE);
++ pi->bs.cur = 0;
++ pi->bs.rest = 0;
++ }
++ }
++}
++
++
++/*
++ * This function extends sub-8-bit data to 8-bit data using bit-replication.
++ */
++static byte pic_pad_bit(bits, dat)
++ int bits;
++ data32 dat;
++{
++ switch(bits){
++ case 1:
++ if(dat & 1)
++ dat = 0xff;
++ else
++ dat = 0;
++ break;
++ case 2:
++ dat = dat << 6 | dat << 4 | dat << 2 | dat;
++ break;
++ case 3:
++ dat = dat << 5 | dat << 2 | dat >> 1;
++ break;
++ case 4:
++ dat = dat << 4 | dat;
++ break;
++ case 5:
++ dat = dat << 3 | dat >> 2;
++ break;
++ case 6:
++ dat = dat << 2 | dat >> 4;
++ break;
++ case 7:
++ dat = dat << 1 | dat >> 6;
++ }
++
++ return dat;
++}
++
++/*
++ * These functions initialize or clean up structures.
++ * pic_init_info:
++ * initializes a pic_info structure.
++ * pic_cleanup_pic_info:
++ * cleans up a pic_info structure.
++ * pic_cleanup_pinfo:
++ * cleans up a PICINFO structure.
++ */
++static void pic_init_info(pi)
++ struct pic_info *pi;
++{
++ pi->fp = NULL;
++ pi->bs.rest = 0;
++ pi->bs.cur = '\0';
++ pi->type = pi->mode = 0;
++ pi->width = pi->height = 0;
++ pi->aspect = 1.0;
++ pi->cbits = 0;
++ pi->cmapped = pi->cached = 0;
++ pi->cache.node = NULL;
++ pi->cmap = NULL;
++ pi->g_bits = pi->r_bits = pi->b_bits = pi->i_bits = 0;
++ pi->inv_gr = 0;
++ pi->tiled256 = 0;
++ pi->numcols = 0;
++ pi->writing_grey = 0;
++}
++
++static void pic_cleanup_pic_info(pi, writing)
++ struct pic_info *pi;
++ int writing;
++{
++ if(!writing && pi->fp)
++ fclose(pi->fp);
++ if(pi->cmap)
++ free(pi->cmap);
++ if(pi->cache.node)
++ free(pi->cache.node);
++ if(pi->data)
++ free(pi->data);
++ pi->fp = NULL;
++ pi->cmap = NULL;
++ pi->cache.node = NULL;
++ pi->data = NULL;
++}
++
++static void pic_cleanup_pinfo(pinfo)
++ PICINFO *pinfo;
++{
++ if(pinfo->pic){
++ free(pinfo->pic);
++ pinfo->pic = NULL;
++ }
++ if(pinfo->comment){
++ free(pinfo->comment);
++ pinfo->comment = NULL;
++ }
++}
++
++/*
++ * Error Handlers.
++ * pic_memory_error:
++ * shows an error message and terminates.
++ * pic_error:
++ * shows a non-file error message and jumps to the entry for errors.
++ * pic_file_error:
++ * shows a file error message and jumps to the entry for errors.
++ * pic_file_warning:
++ * shows a file warning message.
++ */
++static void pic_memory_error(scm, fn)
++ char *scm, *fn;
++{
++ char buf[128];
++ sprintf(buf, "%s: can't allocate memory. (%s)", scm, fn);
++ FatalError(buf);
++}
++
++static void pic_error(pi, mn)
++ struct pic_info *pi;
++ int mn;
++{
++ SetISTR(ISTR_WARNING, "%s", pic_msgs[mn]);
++ longjmp(pi->jmp, 1);
++}
++
++static void pic_file_error(pi, mn)
++ struct pic_info *pi;
++ int mn;
++{
++ if(feof(pi->fp))
++ SetISTR(ISTR_WARNING, "%s (end of file)", pic_msgs[mn]);
++ else
++ SetISTR(ISTR_WARNING, "%s (%s)", pic_msgs[mn], ERRSTR(errno));
++ longjmp(pi->jmp, 1);
++}
++
++static void pic_file_warning(pi, mn)
++ struct pic_info *pi;
++ int mn;
++{
++ if(feof(pi->fp))
++ SetISTR(ISTR_WARNING, "%s (end of file)", pic_msgs[mn]);
++ else
++ SetISTR(ISTR_WARNING, "%s (%s)", pic_msgs[mn], ERRSTR(errno));
++}
++
++static void pic_show_pic_info(pi)
++ struct pic_info *pi;
++{
++ fprintf(stderr, " file size: %ld.\n", pi->fsize);
++
++ fputs(" machine: ", stderr);
++ switch(pi->type){
++ case 0x0:
++ fputs("X68k", stderr);
++ break;
++ case 0x1:
++ fputs("PC-88VA", stderr);
++ if(pi->mode & 1)
++ fputs(",HR", stderr);
++ if(pi->mode & 2)
++ fputs(",tiled256", stderr);
++ break;
++ case 0x2:
++ fprintf(stderr,
++ "FM-TOWNS,%s-resolution", pi->mode == 5 ? "low" : "high");
++ break;
++ case 0x3:
++ fputs("Macintosh", stderr);
++ break;
++ case 0xf:
++ fputs("misc", stderr);
++ }
++ fputs("\n", stderr);
++
++ fprintf(stderr, " image size: %dx%d\n", pi->width, pi->height);
++ fprintf(stderr, " aspect: %f\n", pi->aspect);
++ fprintf(stderr, " cache: %s\n", pi->cached ? "on" : "off");
++ fprintf(stderr, " colormap: %s\n", pi->cmapped ? "on" : "off");
++ fprintf(stderr, " number of color bits: %d\n", pi->cbits);
++ fprintf(stderr, " number of RGB bits: R%d,G%d,B%d,I%d\n",
++ pi->r_bits, pi->g_bits, pi->b_bits, pi->i_bits);
++ fprintf(stderr, " inverted G&R: %s\n", pi->inv_gr ? "true" : "false");
++ fprintf(stderr, " number of colors: %d\n", pi->numcols);
++}
++
++/* Memory related routines. */
++static void *pic_malloc(n, fn)
++ size_t n;
++ char *fn;
++{
++ void *r = (void *) malloc(n);
++ if(r == NULL)
++ pic_memory_error("malloc", fn);
++ return r;
++}
++
++static void *pic_realloc(p, n, fn)
++ void *p;
++ size_t n;
++ char *fn;
++{
++ void *r = (p == NULL) ? (void *) malloc(n) : (void *) realloc(p, n);
++ if(r == NULL)
++ pic_memory_error("realloc", fn);
++ return r;
++}
++#endif /* HAVE_PIC */
+diff -u -r --new-file xv-3.10a.orig/xvpic2.c xv-3.10a/xvpic2.c
+--- xv-3.10a.orig/xvpic2.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvpic2.c 2007-04-15 17:02:32.000000000 -0500
+@@ -0,0 +1,3608 @@
++/*
++ * $Id: xvpic2.c,v 2.9.1.14 1995/04/24 15:34:15 ikeyan Exp $
++ * xvpic2.c - load and save routines for `PIC2' format pictures.
++ *
++ *
++ * Outline
++ * =======
++ * xvpic2.c supports the PIC2 format image file. It is used some
++ * Japanese personal computer users.
++ *
++ * The PIC2 format is designed by A.Yanagisawa. It is an excellent
++ * format except for its encode/decode speed. ;-)
++ *
++ * The features of the PIC2 format:
++ * - Powerful header information (included author, filename, title,
++ * saver, product number, created date and comment).
++ * - Reversible compression, and very high compression ratio (in many
++ * cases, a higher compression ratio than the JPEG compression;
++ * because of its compression method, PIC2 is especially good at
++ * pictures like cell animation).
++ * - Can handle full-color (24 bits) image.
++ * - Can include multi image blocks into one PIC2 file.
++ * - Have four different block format (P2SS, P2SF, P2BM and
++ * P2BI). P2SS format uses arithmetic compression for storing
++ * data. P2SF uses normal run-length compression. P2BM and P2BI is
++ * raw image format. Select any one according to the situation.
++ *
++ * Explanation of the PIC2 compression:
++
++ * - In the first place, try to record pixel color, uses color caches
++ * which keep some recent colors, and formed according to color's
++ * frequency. PIC2 has some color cache spaces that are switched by
++ * upper pixel value of current pixel. If cache is hit, record
++ * that.
++ * - Unfortunately, in the case of color cache didn't hit, record the
++ * difference from the value estimated with the value of upper and
++ * left pixel of current pixel (similar to PNG's AVG predictor).
++ * - And extract image's color chain if exist, and record that (it
++ * results in image's outline).
++ * - In all cases, arithmetic compression is used in the final stage
++ * before writing the file, which in theory produces the ideal
++ * compression ratio (P2SS).
++ *
++ * Features
++ * ========
++ * - Support 3,6,9,12,15,18,21,24bit PIC2 format (Load/Save).
++ * - Support all image block formats of PIC2 (Load/Save).
++ * - Support multi block PIC2 file (Load/Save).
++ *
++ *
++ * Bugs
++ * ====
++ * - Unsupport 8bit PIC2 image file.
++ *
++ * If you find other bugs (surely exist :-)), send me bug-report.
++ *
++ *
++ * Author
++ * ======
++ * IKEMOTO Masahiro <ikeyan@airlab.cs.ritsumei.ac.jp>
++ */
++
++#define PIC2_IGNORE_UNUSED_FUNCTIONS
++#define NEEDSDIR
++
++#include "xv.h"
++#include <setjmp.h>
++
++#ifdef HAVE_PIC2
++
++typedef unsigned long pixel;
++
++#define pic2_cextoshort(addr) ( \
++ (((short) (((byte *) addr)[0])) << 8) | \
++ ( (short) (((byte *) addr)[1])) \
++)
++#define pic2_cextolong(addr) ( \
++ (((long) (((byte *) addr)[0])) << 24) | \
++ (((long) (((byte *) addr)[1])) << 16) | \
++ (((long) (((byte *) addr)[2])) << 8) | \
++ ( (long) (((byte *) addr)[3])) \
++)
++#define pic2_shorttocex(addr, n) { \
++ ((byte *) addr)[0] = (((unsigned short) (n) >> 8) & 0xff); \
++ ((byte *) addr)[1] = ( (unsigned short) (n) & 0xff); \
++}
++#define pic2_longtocex(addr, n) { \
++ ((byte *) addr)[0] = (((unsigned long) (n) >> 24) & 0xff); \
++ ((byte *) addr)[1] = (((unsigned long) (n) >> 16) & 0xff); \
++ ((byte *) addr)[2] = (((unsigned long) (n) >> 8) & 0xff); \
++ ((byte *) addr)[3] = ( (unsigned long) (n) & 0xff); \
++}
++#define pic2_shift_bits(b, n) (((n) > 0) ? ((b) << (n)) : ((b) >> -(n)))
++
++#define PIC2_READ_MODE 0
++#define PIC2_WRITE_MODE 1
++
++#define PIC2_ARITH_CACHE 32
++#define PIC2_ARITH_CONTEXT 128
++#define PIC2_FAST_CACHE 64
++
++#define PIC2_HEADER_SIZE 124
++#define PIC2_BLOCK_HEADER_SIZE 26
++
++struct pic2_header {
++ char magic[4];
++ char name[18];
++ char subtitle[8];
++ char crlf0[2];
++ char title[30];
++ char crlf1[2];
++ char saver[30];
++ char crlf2[2];
++ char eof[1];
++ char reserve0[1];
++ short flag;
++ short no;
++ long time;
++ long size;
++ short depth;
++ short x_aspect;
++ short y_aspect;
++ short x_max;
++ short y_max;
++ long reserve1;
++};
++
++struct pic2_block {
++ char id[4];
++ long size;
++ short flag;
++ short x_wid;
++ short y_wid;
++ short x_offset;
++ short y_offset;
++ long opaque;
++ long reserve;
++};
++
++struct pic2_info {
++ jmp_buf jmp;
++ FILE *fp;
++ struct {
++ int rest;
++ byte cur;
++ int bits;
++ char zero;
++ }bs;
++ long fsize;
++ struct pic2_header *header;
++ struct pic2_block *block;
++ int n_pal;
++ int pal_bits;
++ byte pal[256][3];
++ char *comment;
++ char mode;
++ long next_pos;
++ long block_pos;
++ short x_max;
++ short y_max;
++ int ynow;
++ byte *buf;
++ pixel *vram_prev;
++ pixel *vram_now;
++ pixel *vram_next;
++ short *flag_now;
++ short *flag_next;
++ short *flag2_now;
++ short *flag2_next;
++ short *flag2_next2;
++ pixel (*cache)[PIC2_ARITH_CACHE];
++ unsigned short *cache_pos;
++ unsigned short *mulu_tab;
++ long aa;
++ long cc;
++ long dd;
++ char cache_hit_c;
++ int (*next_line) PARM((struct pic2_info *, pixel **));
++ char writing_grey;
++ char pagebname[64];
++ int pnum;
++};
++
++static void pic2_open_file PARM((struct pic2_info*,char*));
++static void pic2_read_header PARM((struct pic2_info*));
++static void pic2_read_block_header1 PARM((struct pic2_info*));
++static void pic2_read_block_header2 PARM((struct pic2_info*));
++static short pic2_arith_decode_bit PARM((struct pic2_info*,int));
++static short pic2_arith_decode_nn PARM((struct pic2_info*,int));
++static void pic2_arith_expand_chain PARM((struct pic2_info*,int,int,pixel));
++static short pic2_arith_get_number PARM((struct pic2_info*,int,int));
++static pixel pic2_arith_read_color PARM((struct pic2_info*,int));
++static int pic2_arith_expand_line PARM((struct pic2_info*,pixel**));
++static int pic2_arith_loader_init PARM((struct pic2_info*));
++static int pic2_fast_read_length PARM((struct pic2_info*));
++static void pic2_fast_expand_chain PARM((struct pic2_info*,int,pixel));
++static pixel pic2_fast_read_color PARM((struct pic2_info*,pixel));
++static int pic2_fast_expand_line PARM((struct pic2_info*,pixel**));
++static int pic2_fast_loader_init PARM((struct pic2_info*));
++static int pic2_beta_expand_line PARM((struct pic2_info*,pixel**));
++static int pic2_beta_loader_init PARM((struct pic2_info*));
++static void pic2_make_xvpic PARM((struct pic2_info*,byte**,
++ byte*,byte*,byte*));
++static void pic2_make_pagefile PARM((struct pic2_info*,char*,int));
++static void pic2_setup_pic2_info PARM((struct pic2_info*,
++ char*,char*,char*,char*,
++ int,int,int,int,int,int,char *));
++static void pic2_append PARM((struct pic2_info*));
++static void pic2_write_header1 PARM((struct pic2_info*));
++static void pic2_write_header2 PARM((struct pic2_info*));
++static void pic2_write_block_header PARM((struct pic2_info*));
++static void pic2_arith_write_zero_bit PARM((struct pic2_info*));
++static void pic2_arith_flush_bit_buf PARM((struct pic2_info*));
++static void pic2_arith_carry_bit PARM((struct pic2_info*));
++static void pic2_arith_encode_bit PARM((struct pic2_info*,int,int));
++static void pic2_arith_encode_nbyte PARM((struct pic2_info*,int,int,int));
++static void pic2_arith_encode_nn PARM((struct pic2_info*,int,int));
++static void pic2_arith_press_chain PARM((struct pic2_info*,int));
++static void pic2_arith_put_number PARM((struct pic2_info*,int,int,int));
++static void pic2_arith_write_color PARM((struct pic2_info*,int));
++static void pic2_arith_press_line2 PARM((struct pic2_info*));
++static int pic2_arith_press_line PARM((struct pic2_info*,pixel**));
++static int pic2_arith_saver_init PARM((struct pic2_info*,pixel**));
++static void pic2_fast_write_length PARM((struct pic2_info*,int));
++static void pic2_fast_press_chain PARM((struct pic2_info*,int));
++static void pic2_fast_press_chain2 PARM((struct pic2_info*,int));
++static void pic2_fast_flush_chain PARM((struct pic2_info*));
++static void pic2_fast_write_color PARM((struct pic2_info*,int));
++static void pic2_fast_press_line2 PARM((struct pic2_info*));
++static int pic2_fast_press_line PARM((struct pic2_info*,pixel**));
++static int pic2_fast_saver_init PARM((struct pic2_info*,pixel**));
++static int pic2_beta_press_line PARM((struct pic2_info*,pixel**));
++static int pic2_beta_saver_init PARM((struct pic2_info*,pixel**));
++static void pic2_write_data PARM((struct pic2_info*,byte*,
++ int,int,int,int,int,
++ byte*,byte*,byte*,int,int));
++static int pic2_next_line PARM((struct pic2_info*,pixel**));
++static int pic2_next_block PARM((struct pic2_info*));
++static int pic2_find_block PARM((struct pic2_info*));
++static int pic2_load_block PARM((struct pic2_info*));
++static int pic2_save_block PARM((struct pic2_info*,pixel**,
++ int,int,int,int,char*,pixel));
++#ifndef PIC2_IGNORE_UNUSED_FUNCTIONS
++static void pic2_read_palette PARM((struct pic2_info*,
++ byte*,byte*,byte*));
++static void pic2_write_palette PARM((struct pic2_info*,int,int,
++ byte*,byte*,byte*));
++#endif /* !PIC2_IGNORE_UNUSED_FUNCTIONS */
++static byte pic2_convert_color_bits PARM((int,int,int));
++static byte pic2_pad_color_bits PARM((int,int,int));
++static byte pic2_reduce_color_bits PARM((int,int,int));
++static pixel pic2_exchange_rg PARM((pixel,int));
++static void pic2_handle_para PARM((struct pic2_info*,int));
++static int pic2_alloc_buffer PARM((struct pic2_info*));
++static void pic2_free_buffer PARM((struct pic2_info*));
++static long pic2_seek_file PARM((struct pic2_info*,long,int));
++static long pic2_tell_file PARM((struct pic2_info*));
++static int pic2_read_file PARM((struct pic2_info*,void*,size_t));
++static long pic2_read_long PARM((struct pic2_info*));
++static short pic2_read_short PARM((struct pic2_info*));
++static char pic2_read_char PARM((struct pic2_info*));
++static int pic2_write_file PARM((struct pic2_info*,void*,size_t));
++static int pic2_write_long PARM((struct pic2_info*,long));
++static int pic2_write_short PARM((struct pic2_info*,int));
++static int pic2_write_char PARM((struct pic2_info*,int));
++static unsigned long pic2_read_bits PARM((struct pic2_info*,int));
++static void pic2_write_bits PARM((struct pic2_info*,
++ unsigned long,int));
++static void pic2_flush_bits PARM((struct pic2_info*));
++static void pic2_memory_error PARM((char*,char*));
++static void pic2_error PARM((struct pic2_info*,int));
++static void pic2_file_error PARM((struct pic2_info*,int));
++static void pic2_init_info PARM((struct pic2_info*));
++static void pic2_cleanup_pic2_info PARM((struct pic2_info*,int));
++static void pic2_cleanup_pinfo PARM((PICINFO*));
++static void pic2_show_pic2_info PARM((struct pic2_info*));
++static char *pic2_strncpy PARM((char*,char*,size_t));
++static void *pic2_malloc PARM((size_t,char*));
++static void *pic2_new PARM((size_t,char*));
++
++static int WritePIC2 PARM((FILE*,byte*,int,int,int,
++ byte*,byte*,byte*,int,int,char*,
++ int,int,int,int,int,char*));
++
++static char *pic2_id = "P2DT";
++
++/* Error Messages */
++static char *pic2_msgs[] = {
++ NULL,
++#define PIC2_OPEN 1
++ "can't open file.",
++#define PIC2_CORRUPT 2
++ "file corrupted.",
++#define PIC2_FORMAT 3
++ "not PIC2 format.",
++#define PIC2_DEPTH 4
++ "bit depths not divisible by 3 are unsupported.",
++#define PIC2_TMPFILE 5
++ "unable to create temporary filename???",
++#define PIC2_PAGE 6
++ "couldn't load the page.",
++#define PIC2_APPEND 7
++ "cannot append.",
++#define PIC2_WRITE 8
++ "write failed.",
++};
++
++struct _form_tab {
++ char *id;
++ int (*loader_init) PARM((struct pic2_info *));
++ int (*saver_init) PARM((struct pic2_info *, pixel **));
++} form_tab[] = {
++ { "P2SS", pic2_arith_loader_init, pic2_arith_saver_init},
++ { "P2SF", pic2_fast_loader_init, pic2_fast_saver_init},
++ { "P2BM", pic2_beta_loader_init, pic2_beta_saver_init},
++ { "P2BI", pic2_beta_loader_init, pic2_beta_saver_init},
++};
++#define n_form_tab (sizeof(form_tab) / sizeof(struct _form_tab))
++#define P2SS 0
++#define P2SF 1
++#define P2BM 2
++#define P2BI 3
++
++/* The main routine to load a PIC2 file. */
++int LoadPIC2(fname, pinfo, quick)
++char *fname;
++PICINFO *pinfo;
++int quick;
++{
++ int e, i, block;
++ struct pic2_info pic2;
++
++ if (DEBUG)
++ fputs("LoadPIC2:\n", stderr);
++
++ pic2_init_info(&pic2);
++
++ if ((e = setjmp(pic2.jmp)) != 0){
++ /* When an error occurs, comes here. */
++ pic2_free_buffer(&pic2);
++ pic2_cleanup_pic2_info(&pic2, 0);
++ pic2_cleanup_pinfo(pinfo);
++ if (pic2split)
++ KillPageFiles(pic2.pagebname, pic2.pnum);
++ SetCursors(-1);
++ if (DEBUG)
++ fputs("\n", stderr);
++ return (0);
++ }
++ pic2_open_file(&pic2, fname);
++ pic2_read_header(&pic2);
++
++ if ((i = pic2_find_block(&pic2)) == 0)
++ pic2_file_error(&pic2, PIC2_CORRUPT);
++
++ block = 1;
++ while(i == 2) {
++ SetISTR(ISTR_WARNING, "unknown or invalid block #%d.", block);
++ i = pic2_next_block(&pic2);
++ block++;
++ }
++
++ if (pic2split && !quick) {
++ char firstpage[512];
++ struct stat st;
++#ifndef USE_MKSTEMP
++ int tmpfd;
++#endif
++
++#ifndef VMS
++ sprintf(pic2.pagebname, "%s/xvpic2XXXXXX", tmpdir);
++#else
++ sprintf(pic2.pagebname, "Sys$Scratch:xvpic2XXXXXX");
++#endif
++#ifdef USE_MKSTEMP
++ close(mkstemp(pic2.pagebname));
++#else
++ mktemp(pic2.pagebname);
++ tmpfd = open(pic2.pagebname, O_WRONLY|O_CREAT|O_EXCL, S_IRWUSR);
++ if (tmpfd < 0) FatalError("LoadPIC2(): can't create temporary file");
++ close(tmpfd);
++#endif
++ if (pic2.pagebname[0] == '\0')
++ pic2_error(&pic2, PIC2_TMPFILE);
++ strcat(pic2.pagebname, ".");
++
++ sprintf(firstpage, "%s%d", pic2.pagebname, 1);
++ if (stat(firstpage, &st)) {
++ for (pic2.pnum = 1; i >= 1; pic2.pnum++) {
++ pic2_load_block(&pic2);
++ pic2_make_pagefile(&pic2, pic2.pagebname, pic2.pnum);
++ while(block++, (i = pic2_next_block(&pic2)) == 2)
++ SetISTR(ISTR_WARNING,
++ "unknown or invalid block #%d.", block);
++ }
++ pinfo->numpages = --pic2.pnum;
++ if (!LoadPIC2(firstpage, pinfo, 1))
++ pic2_error(&pic2, PIC2_PAGE);
++ if (pic2.pnum == 1)
++ unlink(firstpage);
++ else
++ strcpy(pinfo->pagebname, pic2.pagebname);
++ } else
++ if (!LoadPIC2(fname, pinfo, 1))
++ pic2_error(&pic2, PIC2_PAGE);
++ } else {
++ char buf[128], format[64];
++ int j;
++
++ pinfo->w = pic2.x_max;
++ pinfo->h = pic2.y_max;
++ pinfo->normw = pinfo->w;
++ pinfo->normh = pinfo->h;
++ pinfo->type = PIC24;
++ for (j = 0; j < n_form_tab; j++) {
++ if (xvbcmp(pic2.block->id, form_tab[j].id, (size_t) 4) == 0)
++ break;
++ }
++ pinfo->frmType = F_PIC2;
++ pinfo->colType = F_FULLCOLOR;
++ pinfo->comment = pic2.comment;
++
++ if (pic2split) {
++ pic2_make_xvpic(&pic2, &pinfo->pic, pinfo->r, pinfo->g, pinfo->b);
++ strcpy(format, form_tab[j].id);
++ } else {
++ for (pic2.pnum = 1; i >= 1; pic2.pnum++) {
++ SetISTR(ISTR_INFO, "composing block #%d", block);
++ pic2_make_xvpic(&pic2, &pinfo->pic,
++ pinfo->r, pinfo->g, pinfo->b);
++ while(block++, (i = pic2_next_block(&pic2)) == 2)
++ SetISTR(ISTR_WARNING,
++ "unknown or invalid block #%d.", block);
++ }
++ if (--block > 1)
++ if (block != --pic2.pnum)
++ sprintf(format, "MultiBlock[%d/%d]", block, pic2.pnum);
++ else
++ sprintf(format, "MultiBlock[%d]", block);
++ else
++ strcpy(format, form_tab[j].id);
++ }
++ sprintf(buf, "PIC2(%s). %d colors (%ld bytes)", format,
++ (int) 1 << pic2.header->depth, pic2.fsize);
++ strcat(pinfo->fullInfo, buf);
++ sprintf(pinfo->shrtInfo, "%dx%d(aspect %4.2f) PIC2(%s).",
++ pinfo->w, pinfo->h,
++ (float) pic2.header->x_aspect / (float) pic2.header->y_aspect,
++ format);
++ if (!nopicadjust)
++ normaspect = (float) pic2.header->x_aspect
++ / (float) pic2.header->y_aspect;
++ }
++ pic2_cleanup_pic2_info(&pic2, 0);
++ SetCursors(-1);
++ if (DEBUG)
++ fputs("\n", stderr);
++ return (1);
++}
++
++/*
++ * This function opens the file, and set its size.
++ */
++static void pic2_open_file(pi, fname)
++ struct pic2_info *pi;
++ char *fname;
++{
++ if ((pi->fp = fopen(fname, "rb")) == NULL)
++ pic2_file_error(pi, PIC2_OPEN);
++ fseek(pi->fp, (size_t) 0, SEEK_END);
++ pi->fsize = ftell(pi->fp);
++ fseek(pi->fp, (size_t) 0, SEEK_SET);
++}
++
++/*
++ * These functions read the PIC2 header informations.
++ * pic2_read_header:
++ * reads the PIC2 header.
++ * pic2_read_block_header1:
++ * reads the id number of block header and the size of block.
++ * pic2_read_block_header2:
++ * reads the rest of block header.
++ */
++static void pic2_read_header(pi)
++struct pic2_info *pi;
++{
++ long s_comment;
++
++ pi->mode = PIC2_READ_MODE;
++
++ /* read header image */
++ pic2_read_file(pi, pi->header->magic, 4);
++ pic2_read_file(pi, pi->header->name, 18);
++ pic2_read_file(pi, pi->header->subtitle, 8);
++ pic2_read_file(pi, pi->header->crlf0, 2);
++ pic2_read_file(pi, pi->header->title, 30);
++ pic2_read_file(pi, pi->header->crlf1, 2);
++ pic2_read_file(pi, pi->header->saver, 30);
++ pic2_read_file(pi, pi->header->crlf2, 2);
++ pic2_read_file(pi, pi->header->eof, 1);
++ pic2_read_file(pi, pi->header->reserve0, 1);
++ pi->header->flag = pic2_read_short(pi);
++ pi->header->no = pic2_read_short(pi);
++ pi->header->time = pic2_read_long(pi);
++ pi->header->size = pic2_read_long(pi);
++ pi->header->depth = pic2_read_short(pi);
++ pi->header->x_aspect = pic2_read_short(pi);
++ pi->header->y_aspect = pic2_read_short(pi);
++ pi->header->x_max = pic2_read_short(pi);
++ pi->header->y_max = pic2_read_short(pi);
++ pi->header->reserve1 = pic2_read_long(pi);
++
++ /* check magic number */
++ if (strncmp(pi->header->magic, pic2_id, (size_t) 4) != 0)
++ pic2_error(pi, PIC2_FORMAT);
++
++ /* read palette data, if exists */
++ if (pi->header->flag & 1) {
++ pi->pal_bits = pic2_read_char(pi);
++ pi->n_pal = pic2_read_short(pi);
++ pic2_read_file(pi, pi->pal, (size_t) (pi->n_pal * 3));
++ }
++
++ /* read comments */
++ s_comment = pi->header->size - pic2_tell_file(pi);
++ pi->comment = pic2_new(s_comment + 1, "pic2_read_header");
++ pic2_read_file(pi, pi->comment, (size_t) s_comment);
++ pi->comment[s_comment] = '\0';
++
++ pi->x_max = pi->header->x_max;
++ pi->y_max = pi->header->y_max;
++
++ /* set initial block point */
++ pi->next_pos = pic2_tell_file(pi);
++}
++
++static void pic2_read_block_header1(pi)
++struct pic2_info *pi;
++{
++ pic2_read_file(pi, pi->block->id, 4);
++ pi->block->size = pic2_read_long(pi);
++}
++
++static void pic2_read_block_header2(pi)
++struct pic2_info *pi;
++{
++ pi->block->flag = pic2_read_short(pi);
++ pi->block->x_wid = pic2_read_short(pi);
++ pi->block->y_wid = pic2_read_short(pi);
++ pi->block->x_offset = pic2_read_short(pi);
++ pi->block->y_offset = pic2_read_short(pi);
++ pi->block->opaque = pic2_read_long(pi);
++ pi->block->reserve = pic2_read_long(pi);
++}
++
++/*
++ * These functions are arithmetic pic2 format extractor.
++ */
++static short pic2_arith_decode_bit(pi, c)
++struct pic2_info *pi;
++int c;
++{
++ unsigned short pp;
++
++ pp = pi->mulu_tab[(pi->aa & 0x7f00) / 2 + c];
++ if (pi->dd >= (int) pp) {
++ pi->dd -= pp;
++ pi->aa -= pp;
++
++ while ((short) pi->aa >= 0) {
++ pi->dd *= 2;
++ if (pic2_read_bits(pi, 1))
++ pi->dd++;
++ pi->aa *= 2;
++ }
++ return (1);
++ } else {
++ pi->aa = pp;
++
++ while ((short) pi->aa >= 0) {
++ pi->dd *= 2;
++ if (pic2_read_bits(pi, 1))
++ pi->dd++;
++ pi->aa *= 2;
++ }
++ return (0);
++ }
++}
++
++static short pic2_arith_decode_nn(pi, c)
++struct pic2_info *pi;
++int c;
++{
++ int n;
++
++ if (pic2_arith_decode_bit(pi, c)) {
++ /* n < 1 */
++ n = 0;
++ } else if (pic2_arith_decode_bit(pi, c + 1)) {
++ /* n < 1 + 2 */
++ n = 1;
++ if (pic2_arith_decode_bit(pi, c + 8))
++ n += 1;
++ } else if (pic2_arith_decode_bit(pi, c + 2)) {
++ /* n < 1 + 2 + 4 */
++ n = 1 + 2;
++ if (pic2_arith_decode_bit(pi, c + 8))
++ n += 1;
++ if (pic2_arith_decode_bit(pi, c + 9))
++ n += 2;
++ } else if (pic2_arith_decode_bit(pi, c + 3)) {
++ /* n < 1 + 2 + 4 + 8 */
++ n = 1 + 2 + 4;
++ if (pic2_arith_decode_bit(pi, c + 8))
++ n += 1;
++ if (pic2_arith_decode_bit(pi, c + 9))
++ n += 2;
++ if (pic2_arith_decode_bit(pi, c + 10))
++ n += 4;
++ } else if (pic2_arith_decode_bit(pi, c + 4)) {
++ /* n < 1 + 2 + 4 + 8 + 16 */
++ n = 1 + 2 + 4 + 8;
++ if (pic2_arith_decode_bit(pi, c + 8))
++ n += 1;
++ if (pic2_arith_decode_bit(pi, c + 9))
++ n += 2;
++ if (pic2_arith_decode_bit(pi, c + 10))
++ n += 4;
++ if (pic2_arith_decode_bit(pi, c + 11))
++ n += 8;
++ } else if (pic2_arith_decode_bit(pi, c + 5)) {
++ /* n < 1 + 2 + 4 + 8 + 16 + 32 */
++ n = 1 + 2 + 4 + 8 + 16;
++ if (pic2_arith_decode_bit(pi, c + 8))
++ n += 1;
++ if (pic2_arith_decode_bit(pi, c + 9))
++ n += 2;
++ if (pic2_arith_decode_bit(pi, c + 10))
++ n += 4;
++ if (pic2_arith_decode_bit(pi, c + 11))
++ n += 8;
++ if (pic2_arith_decode_bit(pi, c + 12))
++ n += 16;
++
++ } else if (pic2_arith_decode_bit(pi, c + 6)) {
++ /* n < 1 + 2 + 4 + 8 + 16 + 32 + 64 */
++ n = 1 + 2 + 4 + 8 + 16 + 32;
++ if (pic2_arith_decode_bit(pi, c + 8))
++ n += 1;
++ if (pic2_arith_decode_bit(pi, c + 9))
++ n += 2;
++ if (pic2_arith_decode_bit(pi, c + 10))
++ n += 4;
++ if (pic2_arith_decode_bit(pi, c + 11))
++ n += 8;
++ if (pic2_arith_decode_bit(pi, c + 12))
++ n += 16;
++ if (pic2_arith_decode_bit(pi, c + 13))
++ n += 32;
++
++ } else if (pic2_arith_decode_bit(pi, c + 7)) {
++ /* n < 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 */
++ n = 1 + 2 + 4 + 8 + 16 + 32 + 64;
++ if (pic2_arith_decode_bit(pi, c + 8))
++ n += 1;
++ if (pic2_arith_decode_bit(pi, c + 9))
++ n += 2;
++ if (pic2_arith_decode_bit(pi, c + 10))
++ n += 4;
++ if (pic2_arith_decode_bit(pi, c + 11))
++ n += 8;
++ if (pic2_arith_decode_bit(pi, c + 12))
++ n += 16;
++ if (pic2_arith_decode_bit(pi, c + 13))
++ n += 32;
++ if (pic2_arith_decode_bit(pi, c + 14))
++ n += 64;
++
++ } else {
++ n = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128;
++ }
++ return (n);
++}
++
++static void pic2_arith_expand_chain(pi, x, y, cc)
++struct pic2_info *pi;
++int x, y;
++pixel cc;
++{
++ static const unsigned short c_tab[] = {
++ 80 + 6 * 5, /* -5 */
++ 80 + 6 * 4,
++ 80 + 6 * 3,
++ 80 + 6 * 2,
++ 80 + 6 * 1,
++ 80 + 6 * 0, /* 0 */
++ 80 + 6 * 0, /* 1 */
++ };
++ unsigned short b;
++
++ b = c_tab[pi->flag_now[x] + 5];
++ if (!pic2_arith_decode_bit(pi, b++)) {
++ if (pic2_arith_decode_bit(pi, b++)) { /* down */
++ pi->vram_next[x ] = cc;
++ pi->flag_next[x ] = -1;
++ } else if (pic2_arith_decode_bit(pi, b++)) { /* left */
++ pi->vram_next[x - 1] = cc;
++ pi->flag_next[x - 1] = -2;
++ } else if (pic2_arith_decode_bit(pi, b++)) { /* right */
++ pi->vram_next[x + 1] = cc;
++ pi->flag_next[x + 1] = -3;
++ } else if (pic2_arith_decode_bit(pi, b++)) { /* left2 */
++ pi->vram_next[x - 2] = cc;
++ pi->flag_next[x - 2] = -4;
++ } else { /* right2 */
++ pi->vram_next[x + 2] = cc;
++ pi->flag_next[x + 2] = -5;
++ }
++ }
++}
++
++static short pic2_arith_get_number(pi, c, bef)
++struct pic2_info *pi;
++int c, bef;
++{
++ unsigned short n;
++ byte maxcol;
++
++ maxcol = 0xff >> (8 - pi->header->depth / 3);
++
++ n = pic2_arith_decode_nn(pi, c);
++ if (bef > ((int) maxcol >> 1)) {
++ if (n > ((int) maxcol - bef) * 2)
++ n = maxcol - n;
++ else if (n & 1)
++ n = n / 2 + bef + 1;
++ else
++ n = bef - n / 2;
++ } else {
++ if ((int) n > (bef * 2))
++ n = n;
++ else if (n & 1)
++ n = n / 2 + bef + 1;
++ else
++ n = bef - n / 2;
++ }
++ return (n);
++}
++
++static pixel pic2_arith_read_color(pi, x)
++struct pic2_info *pi;
++int x;
++{
++ pixel c1, c2, cc;
++ unsigned short i, j, k, m;
++ short r, g, b, r0, g0, b0;
++ short colbits;
++ pixel rmask, gmask, bmask;
++ byte maxcol;
++
++ colbits = pi->header->depth / 3;
++ rmask = (0xff >> (8 - colbits)) << (colbits * 2);
++ gmask = (0xff >> (8 - colbits)) << colbits;
++ bmask = (0xff >> (8 - colbits));
++ maxcol = (byte) bmask;
++
++ c1 = pi->vram_prev[x];
++ k = ((c1 >> ((colbits - 3) * 3)) & 0x1c0)
++ | ((c1 >> ((colbits - 3) * 2)) & 0x038)
++ | ((c1 >> (colbits - 3) ) & 0x007);
++ if (colbits == 5)
++ k = pic2_exchange_rg(k, 3);
++
++ if (pic2_arith_decode_bit(pi, pi->cache_hit_c)) { /* ouch */
++ pi->cache_hit_c = 16;
++
++ c2 = pi->vram_now[x - 1];
++ r = ((c1 & rmask) + (c2 & rmask)) >> (colbits * 2 + 1);
++ g = ((c1 & gmask) + (c2 & gmask)) >> (colbits + 1);
++ b = ((c1 & bmask) + (c2 & bmask)) >> ( 1);
++
++ g0 = pic2_arith_get_number(pi, 32, g);
++ r = r + g0 - g;
++ if (r > (short) maxcol)
++ r = maxcol;
++ else if (r < 0)
++ r = 0;
++
++ b = b + g0 - g;
++ if (b > (short) maxcol)
++ b = maxcol;
++ else if (b < 0)
++ b = 0;
++
++ r0 = pic2_arith_get_number(pi, 48, r);
++ b0 = pic2_arith_get_number(pi, 64, b);
++
++ pi->cache_pos[k] = j = (pi->cache_pos[k] - 1) & (PIC2_ARITH_CACHE - 1);
++ pi->cache[k][j] = cc = (r0 << (colbits * 2)) | (g0 << colbits) | b0;
++ } else {
++ pi->cache_hit_c = 15;
++
++ j = pic2_arith_decode_nn(pi, 17);
++ m = pi->cache_pos[k];
++ i = (m + j / 2) & (PIC2_ARITH_CACHE - 1);
++ j = (m + j) & (PIC2_ARITH_CACHE - 1);
++
++ cc = pi->cache[k][j];
++ pi->cache[k][j] = pi->cache[k][i];
++ pi->cache[k][i] = pi->cache[k][m];
++ pi->cache[k][m] = cc;
++ }
++ return (cc);
++}
++
++static int pic2_arith_expand_line(pi, line)
++struct pic2_info *pi;
++pixel **line;
++{
++ int ymax;
++ int x, xw;
++ pixel cc;
++
++ pic2_handle_para(pi, 0);
++
++ xw = pi->block->x_wid;
++ ymax = pi->block->y_wid - 1;
++
++ if (pi->ynow > ymax)
++ return (-2); /* end */
++
++ /* set right end of previous line before left end of current line. */
++ if (pi->ynow == 0) {
++ cc = 0;
++ } else
++ cc = pi->vram_prev[xw - 1];
++ pi->vram_now[-1] = cc;
++
++ /* clear flag for change point */
++ xvbzero((char *) pi->flag_next, xw * sizeof(pi->flag_next[0]));
++
++ /* clear flag for position probability space */
++ xvbzero((char *) pi->flag2_next2, xw * sizeof(pi->flag2_next2[0]));
++
++ for (x = 0; x < xw; x++) {
++ if (pi->flag_now[x] < 0) {
++ cc = pi->vram_now[x];
++ if (pi->ynow < ymax)
++ pic2_arith_expand_chain(pi, x, pi->ynow, cc);
++ } else if (pic2_arith_decode_bit(pi, pi->flag2_now[x])) {
++ /* ajust probability space around of change point */
++ pi->flag2_now [x + 1]++;
++ pi->flag2_now [x + 2]++;
++ pi->flag2_next [x - 1]++;
++ pi->flag2_next [x ]++;
++ pi->flag2_next [x + 1]++;
++ pi->flag2_next2[x - 1]++;
++ pi->flag2_next2[x ]++;
++ pi->flag2_next2[x + 1]++;
++
++ pi->vram_now[x] = cc = pic2_arith_read_color(pi, x);
++ if (pi->ynow < ymax)
++ pic2_arith_expand_chain(pi, x, pi->ynow, cc);
++ } else
++ pi->vram_now[x] = cc;
++ }
++ if (line != NULL)
++ *line = pi->vram_now;
++ pi->ynow++;
++
++ pic2_handle_para(pi, 1);
++
++ return (pi->ynow - 1);
++}
++
++static int pic2_arith_loader_init(pi)
++struct pic2_info *pi;
++{
++ unsigned short p2b[256];
++ int i, xw;
++
++ pi->ynow = 0;
++
++ /* check the color depth */
++ if (pi->header->depth % 3)
++ pic2_error(pi, PIC2_DEPTH);
++
++ /* set function for extract next line */
++ pi->next_line = pic2_arith_expand_line;
++
++ /* clear cache and flags */
++ xw = pi->block->x_wid;
++ xvbzero((char *) pi->cache, 8 * 8 * 8 * sizeof(pi->cache[0]));
++ xvbzero((char *) pi->cache_pos, 8 * 8 * 8 * sizeof(pi->cache_pos[0]));
++
++ xvbzero((char *) pi->flag_now, xw * sizeof(pi->flag_now[0]));
++ xvbzero((char *) pi->flag2_now, 8 + xw * sizeof(pi->flag2_now[0]));
++ xvbzero((char *) pi->flag2_next, 8 + xw * sizeof(pi->flag2_next[0]));
++
++ /* go to picture data field */
++ pic2_seek_file(pi, pi->block_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
++
++ /* clear bit field marker */
++ pi->bs.rest = 0;
++ pi->bs.cur = 0;
++
++ /* read probability table */
++ for (i = 0; i < PIC2_ARITH_CONTEXT; i++)
++ p2b[i] = pic2_read_short(pi);
++
++ /* make multiplication table */
++ for (i = 0; i < 16384; i++) {
++ pi->mulu_tab[i] = (long) (i / 128 + 128) * (int) p2b[i & 127] / 256;
++ if (pi->mulu_tab[i] == 0) pi->mulu_tab[i] = 1;
++ }
++ /* initialize some valuables */
++ pi->aa = 0xffff;
++ pi->dd = 0;
++ for (i = 0; i < 16; i++) {
++ pi->dd *= 2;
++ if (pic2_read_bits(pi, 1))
++ pi->dd |= 1;
++ }
++ pi->cache_hit_c = 16;
++
++ return (0);
++}
++
++/*
++ * These functions are fast pic2 compression extractor.
++ */
++static int pic2_fast_read_length(pi)
++struct pic2_info *pi;
++{
++ int a;
++
++ a = 0;
++ while (pic2_read_bits(pi, 1)) {
++ a++;
++ }
++ if (a == 0)
++ return (0);
++ return (pic2_read_bits(pi, a) + (1 << a) - 1);
++}
++
++static void pic2_fast_expand_chain(pi, x, cc)
++struct pic2_info *pi;
++int x;
++pixel cc;
++{
++ if (pic2_read_bits(pi, 1) != 0) {
++ if (pic2_read_bits(pi, 1) != 0) { /* down */
++ pi->vram_next[x] = cc;
++ pi->flag_next[x] = -1;
++ } else if (pic2_read_bits(pi, 1) != 0) {
++ if (pic2_read_bits(pi, 1) == 0) { /* left2down */
++ pi->vram_next[x - 2] = cc;
++ pi->flag_next[x - 2] = -1;
++ } else { /* left1down */
++ pi->vram_next[x - 1] = cc;
++ pi->flag_next[x - 1] = -1;
++ }
++ } else {
++ if (pic2_read_bits(pi, 1) == 0) { /* right2down */
++ pi->vram_next[x + 2] = cc;
++ pi->flag_next[x + 2] = -1;
++ } else { /* left1down */
++ pi->vram_next[x + 1] = cc;
++ pi->flag_next[x + 1] = -1;
++ }
++ }
++ }
++}
++
++static pixel pic2_fast_read_color(pi, bc)
++struct pic2_info *pi;
++pixel bc;
++{
++ pixel cc;
++ unsigned short j, k, m;
++ short depth, colbits;
++ pixel (*cache)[PIC2_FAST_CACHE];
++
++ depth = pi->header->depth;
++ colbits = depth / 3;
++ cache = (pixel (*)[PIC2_FAST_CACHE]) pi->cache;
++
++ bc = pic2_exchange_rg(bc, colbits);
++ k = pic2_shift_bits(bc, 8 - depth);
++ if (pic2_read_bits(pi, 1) == 0) {
++ pi->cache_pos[k] = m = (pi->cache_pos[k] - 1) & (PIC2_FAST_CACHE - 1);
++ cc = pic2_read_bits(pi, depth);
++ cc = pic2_exchange_rg(cc, colbits);
++ cache[k][m] = cc;
++ } else {
++ j = pic2_read_bits(pi, 6); /* 6= log2(PIC2_FAST_CACHE) */
++ m = pi->cache_pos[k];
++ cc = cache[k][(m + j) & (PIC2_FAST_CACHE - 1)];
++ }
++ return (cc);
++}
++
++static int pic2_fast_expand_line(pi, line)
++struct pic2_info *pi;
++pixel **line;
++{
++ int ymax;
++ int x, xw;
++ pixel cc;
++
++ pic2_handle_para(pi, 0);
++
++ xw = pi->block->x_wid;
++ ymax = pi->block->y_wid - 1;
++
++ if (pi->ynow > ymax)
++ return (-2);
++
++ if (pi->ynow == 0) {
++ pi->dd = 0;
++ pi->aa = pic2_fast_read_length(pi);
++ if (pi->aa == 1023)
++ pi->dd = 1023;
++ else if (pi->aa > 1023)
++ pi->aa--;
++ cc = 0;
++ } else
++ cc = pi->vram_prev[xw - 1];
++
++ xvbzero((char *) pi->flag_next, xw * sizeof(pi->flag_next[0]));
++
++ for (x = 0; x < xw; x++) {
++ if (pi->dd > 0) {
++ if (pi->flag_now[x] < 0) { /* on chain ? */
++ cc = pi->vram_now[x];
++ pic2_fast_expand_chain(pi, x, cc);
++ if (--pi->dd == 0) {
++ pi->aa = pic2_fast_read_length(pi);
++ if (pi->aa == 1023)
++ pi->dd = 1023;
++ else if (pi->aa > 1023)
++ pi->aa--;
++ }
++ } else
++ pi->vram_now[x] = cc;
++ } else {
++ if (pi->flag_now[x] < 0) { /* on chain ? */
++ cc = pi->vram_now[x];
++ pic2_fast_expand_chain(pi, x, cc);
++ } else if (--pi->aa < 0) {
++ cc = pi->vram_now[x] = pic2_fast_read_color(pi, cc);
++ pic2_fast_expand_chain(pi, x, cc);
++ pi->aa = pic2_fast_read_length(pi);
++ if (pi->aa == 1023)
++ pi->dd = 1023;
++ else if (pi->aa > 1023)
++ pi->aa--;
++ } else
++ pi->vram_now[x] = cc;
++ }
++ }
++ if (line != NULL)
++ *line = pi->vram_now;
++ pi->ynow++;
++
++ pic2_handle_para(pi, 1);
++
++ return (pi->ynow - 1);
++}
++
++static int pic2_fast_loader_init(pi)
++struct pic2_info *pi;
++{
++ int xw;
++
++ pi->ynow = 0;
++
++ /* check the color depth */
++ if (pi->header->depth % 3)
++ pic2_error(pi, PIC2_DEPTH);
++
++ /* set function for extract next line */
++ pi->next_line = pic2_fast_expand_line;
++
++ /* clear cache and flags */
++ xw = pi->block->x_wid;
++ xvbzero((char *) pi->cache, sizeof(pi->cache[0]) * 256);
++ xvbzero((char *) pi->cache_pos, sizeof(pi->cache_pos[0]) * 8 * 8 * 8);
++ xvbzero((char *) pi->flag_now, (xw + 8) * sizeof(pi->flag_now[0]));
++ xvbzero((char *) pi->flag_next, (xw + 8) * sizeof(pi->flag_next[0]));
++
++ /* go to picture data field */
++ pic2_seek_file(pi, pi->block_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
++
++ /* clear bit field marker */
++ pi->bs.rest = 0;
++ pi->bs.cur = 0;
++
++ return (0);
++}
++
++/*
++ * These functions are beta pic2 format extractor.
++ */
++static int pic2_beta_expand_line(pi, line)
++struct pic2_info *pi;
++pixel **line;
++{
++ int i, xw, ymax;
++ byte a, b, c, *p;
++ pixel *pc;
++ short depth, pixbyte, colbits;
++
++ depth = pi->header->depth;
++ pixbyte = depth / 8 + ((depth % 8) > 0);
++ colbits = depth / 3;
++
++ xw = pi->block->x_wid;
++ ymax = pi->block->y_wid - 1;
++
++ if (pi->ynow > ymax)
++ return (-2); /* end */
++
++ pc = pi->vram_now;
++ p = (byte *) pi->vram_prev;
++ if (pixbyte == 3) {
++ pic2_read_file(pi, pi->vram_prev, (size_t) (xw * pixbyte));
++ for (i = 0; i < xw; i++, pc++) {
++ a = *p++;
++ b = *p++;
++ c = *p++;
++ *pc = ((pixel) a << 16) | ((pixel) b << 8) | (pixel) c;
++ }
++ } else if (pixbyte == 2) {
++ pic2_read_file(pi, pi->vram_prev, (size_t) (xw * 2));
++ if (strncmp(pi->block->id, "P2BM", 4) == 0) {
++ for (i = 0; i < xw; i++, pc++) {
++ a = *p++;
++ b = *p++;
++ *pc = ((pixel) a << 8) | (pixel) b;
++ if (colbits == 5) {
++ *pc >>= 1;
++ *pc = pic2_exchange_rg(*pc, colbits);
++ }
++ }
++ } else {
++ for (i = 0; i < xw; i++, pc++) {
++ a = *p++;
++ b = *p++;
++ *pc = ((pixel) b << 8) | (pixel) a;
++ if (colbits == 5) {
++ *pc >>= 1;
++ *pc = pic2_exchange_rg(*pc, colbits);
++ }
++ }
++ }
++ } else {
++ pic2_read_file(pi, pi->vram_prev, (size_t) xw);
++ for (i = 0; i < xw; i++)
++ *pc++ = *p++;
++ }
++ if (line != NULL)
++ *line = pi->vram_now;
++
++ pc = pi->vram_prev;
++ pi->vram_prev = pi->vram_now;
++ pi->vram_now = pi->vram_next;
++ pi->vram_next = pc;
++
++ pi->ynow++;
++ return (pi->ynow - 1);
++}
++
++static int pic2_beta_loader_init(pi)
++struct pic2_info *pi;
++{
++ pi->ynow = 0;
++ pi->next_line = pic2_beta_expand_line;
++ pic2_seek_file(pi, pi->block_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
++ return (0);
++}
++
++/*
++ * Make a picture from the expanded data.
++ */
++static void pic2_make_xvpic(pi, xp, rp, gp, bp)
++struct pic2_info *pi;
++byte **xp, *rp, *gp, *bp;
++{
++ int line, i;
++ pixel *linep, opaque;
++ short colbits;
++ byte colmask;
++
++ if (*xp == NULL)
++ *xp = pic2_new((size_t) pi->x_max * pi->y_max * 3, "pic2_make_xvpic"); // GRR POSSIBLE OVERFLOW / FIXME
++
++ if (pi->block->flag & 1)
++ opaque = pi->block->opaque;
++ else
++ opaque = 0xffffffff;
++
++ colbits = pi->header->depth / 3;
++ colmask = 0xff >> (8 - colbits);
++
++ line = pic2_load_block(pi);
++ for (;;) {
++ int pic_idx;
++
++ line = pic2_next_line(pi, &linep);
++ if (line < 0)
++ break;
++ pic_idx = ((line + pi->block->y_offset) * pi->x_max
++ + pi->block->x_offset) * 3;
++
++ for (i = 0; i < pi->block->x_wid; i++, linep++) {
++ byte r, g, b;
++
++ if (*linep != opaque) {
++ r = ((*linep >> (colbits * 2)) & colmask);
++ r = pic2_convert_color_bits(r, colbits, 8);
++ g = ((*linep >> colbits ) & colmask);
++ g = pic2_convert_color_bits(g, colbits, 8);
++ b = ( *linep & colmask);
++ b = pic2_convert_color_bits(b, colbits, 8);
++ (*xp)[pic_idx++] = r;
++ (*xp)[pic_idx++] = g;
++ (*xp)[pic_idx++] = b;
++ } else
++ pic_idx += 3;
++
++ WaitCursor();
++ }
++ }
++}
++
++/*
++ * This function splits a multiblock PIC2 file into several pages.
++ */
++static void pic2_make_pagefile(pi, pagebname, pnum)
++struct pic2_info *pi;
++char *pagebname;
++int pnum;
++{
++ struct pic2_info pic2;
++ FILE *fp;
++ char pagefile[64], *buf;
++ size_t imagesize;
++
++ sprintf(pagefile, "%s%d", pagebname, pnum);
++ if ((fp = fopen(pagefile, "wb")) == NULL)
++ pic2_error(pi, PIC2_WRITE);
++
++ xvbcopy((char *) pi, (char *) &pic2, sizeof(struct pic2_info));
++ pic2.fp = fp;
++
++ pic2_write_header1(&pic2);
++
++ pic2_write_block_header(&pic2);
++
++ imagesize = pi->block->size - PIC2_BLOCK_HEADER_SIZE;
++ buf = (char *) pic2_malloc(imagesize, "pic2_make_pagefile");
++
++ pic2_seek_file(pi, pi->block_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
++ if (fread(buf, (size_t) 1, imagesize, pi->fp) < imagesize) {
++ free(buf);
++ pic2_file_error(pi, PIC2_CORRUPT);
++ }
++ if (fwrite(buf, (size_t) 1, imagesize, fp) < imagesize) {
++ free(buf);
++ pic2_error(pi, PIC2_WRITE);
++ }
++ free(buf);
++
++ pic2.next_pos = pic2_tell_file(&pic2);
++ pic2_write_header2(&pic2);
++
++ fclose(fp);
++}
++
++/* The main routine to save a PIC2 file. */
++static int WritePIC2(fp, pic0, ptype, w, h, rmap, gmap, bmap, numcols,
++ colorstyle, fname, type, depth, x_offset, y_offset,
++ append, comment)
++FILE *fp;
++byte *pic0;
++int ptype, w, h;
++byte *rmap, *gmap, *bmap;
++int numcols, colorstyle;
++char *fname;
++int type, depth;
++int x_offset, y_offset;
++int append;
++char *comment;
++{
++ struct pic2_info pic2;
++ char creator[256], title[256], saver[256];
++ int e;
++
++ if (DEBUG)
++ fputs("WritePIC2:\n", stderr);
++
++ pic2_init_info(&pic2);
++ pic2.fp = fp;
++ pic2.writing_grey = (colorstyle == F_GREYSCALE);
++
++ if ((e = setjmp(pic2.jmp)) != 0){
++ /* When an error occurs while writing, comes here. */
++ pic2_free_buffer(&pic2);
++ pic2_cleanup_pic2_info(&pic2, 1);
++ SetCursors(-1);
++ if (DEBUG)
++ fputs("\n", stderr);
++ return (-1);
++ }
++ sprintf(creator, "XV Version %s", VERSTR);
++ pic2_strncpy(title, comment, 30);
++ sprintf(saver, "XV %s/UNIX/Bradley", VERSTR);
++
++ if (!append) {
++ pic2_setup_pic2_info(&pic2, creator, fname, title, saver,
++ 0, depth, 1, 1, w, h, comment);
++ pic2_write_header1(&pic2);
++ } else {
++ pic2_read_header(&pic2);
++ pic2_append(&pic2);
++ free(pic2.comment);
++ pic2_setup_pic2_info(&pic2, creator, fname, title, saver,
++ 0, depth, 1, 1, w, h, comment);
++ }
++
++ pic2_write_data(&pic2, pic0, ptype, x_offset, y_offset, w, h,
++ rmap, gmap, bmap, type, depth);
++ pic2_write_header2(&pic2);
++
++ pic2_cleanup_pic2_info(&pic2, 1);
++ SetCursors(-1);
++ if (DEBUG)
++ fputs("\n", stderr);
++ return (0);
++}
++
++/*
++ * This function initializes pic2_info.
++ */
++static void pic2_setup_pic2_info(pi, name, fname, title, saver, no, depth,
++ x_aspect, y_aspect, x_max, y_max, comment)
++struct pic2_info *pi;
++char *name, *fname, *title, *saver;
++int no, depth;
++int x_aspect, y_aspect;
++int x_max, y_max;
++char *comment;
++{
++ char basename[256], *suffix;
++
++ pi->mode = PIC2_WRITE_MODE;
++
++ /* set magic number */
++ strncpy(pi->header->magic, pic2_id, 4);
++
++ /* set creator's name */
++ pic2_strncpy(pi->header->name, (char *) name, 18);
++
++ /* set title and subtitle */
++ pic2_strncpy(pi->header->title, (char *) title, 30);
++ strcpy(basename, BaseName(fname));
++ suffix = (char *) rindex(basename, '.');
++ if (suffix) {
++ suffix++;
++ if (!strcmp(suffix, "p2") || !strcmp(suffix, "P2"))
++ *(suffix - 1) = '\0';
++ }
++ pic2_strncpy(pi->header->subtitle, basename, 8);
++
++ /* set saver */
++ pic2_strncpy(pi->header->saver, saver, 30);
++
++ /* set picture number */
++ pi->header->no = no;
++
++ /* import comment */
++ pi->comment = comment;
++
++ /* set some picture's info */
++ pi->header->depth = depth;
++ pi->header->x_aspect = x_aspect;
++ pi->header->y_aspect = y_aspect;
++ pi->header->x_max = x_max;
++ pi->header->y_max = y_max;
++
++ /* set some gaps */
++ pi->header->crlf0[0] = pi->header->crlf1[0] = pi->header->crlf2[0] = 0x0d;
++ pi->header->crlf0[1] = pi->header->crlf1[1] = pi->header->crlf2[1] = 0x0a;
++
++ pi->header->eof[0] = 0x1a;
++ pi->header->reserve0[0] = 0;
++ pi->header->reserve1 = 0;
++
++ /* set palettes */
++ if (pi->n_pal > 0)
++ pi->header->flag = 1;
++ else
++ pi->header->flag = 0;
++}
++
++/*
++ * This function appends to existing pic2 file.
++ */
++static void pic2_append(pi)
++struct pic2_info *pi;
++{
++ int block;
++
++ block = pic2_find_block(pi);
++ while (block > 0)
++ block = pic2_next_block(pi);
++
++ if (block != 0)
++ pic2_error(pi, PIC2_APPEND);
++}
++
++/*
++ * These functions write the PIC2 header.
++ * pic2_write_header1:
++ * write palette data and comment.
++ * pic2_write_header2:
++ * write the terminate block and rest header.
++ * pic2_write_block_header:
++ * write the block header.
++ */
++static void pic2_write_header1(pi)
++struct pic2_info *pi;
++{
++ char *comment;
++
++ /* seek to block start position */
++ pic2_seek_file(pi, PIC2_HEADER_SIZE, SEEK_SET);
++
++ /* write palette */
++ if (pi->n_pal > 0) {
++ pic2_write_char(pi, pi->pal_bits);
++ pic2_write_short(pi, pi->n_pal);
++ pic2_write_file(pi, pi->pal, (size_t) (pi->n_pal * 3));
++ }
++ /* save comment */
++ comment = pi->comment;
++ if (pi->comment != NULL) {
++ for (comment = pi->comment; *comment; comment++) {
++ if (*comment == '\n') {
++ pic2_write_char(pi, '\r');
++ pic2_write_char(pi, '\n');
++ } else if (*comment != '\r')
++ pic2_write_char(pi, *comment);
++ }
++ pic2_write_char(pi, 0);
++ }
++ /* set the next block position */
++ pi->next_pos = pic2_tell_file(pi);
++ pi->header->size = pi->next_pos;
++}
++
++static void pic2_write_header2(pi)
++struct pic2_info *pi;
++{
++ pic2_seek_file(pi, pi->next_pos, SEEK_SET);
++
++ /* write terminate block */
++ pic2_write_long(pi, 0);
++ pic2_write_long(pi, 0);
++
++ /* set some header information */
++ if (pi->header->x_max < pi->x_max)
++ pi->header->x_max = pi->x_max;
++ if (pi->header->y_max < pi->x_max)
++ pi->header->y_max = pi->y_max;
++
++ pi->header->time = time(NULL);
++ pic2_seek_file(pi, 0, SEEK_SET);
++
++ /* write header image */
++ pic2_write_file(pi, pi->header->magic, 4);
++ pic2_write_file(pi, pi->header->name, 18);
++ pic2_write_file(pi, pi->header->subtitle, 8);
++ pic2_write_file(pi, pi->header->crlf0, 2);
++ pic2_write_file(pi, pi->header->title, 30);
++ pic2_write_file(pi, pi->header->crlf1, 2);
++ pic2_write_file(pi, pi->header->saver, 30);
++ pic2_write_file(pi, pi->header->crlf2, 2);
++ pic2_write_file(pi, pi->header->eof, 1);
++ pic2_write_file(pi, pi->header->reserve0, 1);
++ pic2_write_short(pi, pi->header->flag);
++ pic2_write_short(pi, pi->header->no);
++ pic2_write_long(pi, pi->header->time);
++ pic2_write_long(pi, pi->header->size);
++ pic2_write_short(pi, pi->header->depth);
++ pic2_write_short(pi, pi->header->x_aspect);
++ pic2_write_short(pi, pi->header->y_aspect);
++ pic2_write_short(pi, pi->header->x_max);
++ pic2_write_short(pi, pi->header->y_max);
++ pic2_write_long(pi, pi->header->reserve1);
++}
++
++static void pic2_write_block_header(pi)
++struct pic2_info *pi;
++{
++ pic2_write_file(pi, pi->block->id, 4);
++ pic2_write_long(pi, pi->block->size);
++ pic2_write_short(pi, pi->block->flag);
++ pic2_write_short(pi, pi->block->x_wid);
++ pic2_write_short(pi, pi->block->y_wid);
++ pic2_write_short(pi, pi->block->x_offset);
++ pic2_write_short(pi, pi->block->y_offset);
++ pic2_write_long(pi, pi->block->opaque);
++ pic2_write_long(pi, pi->block->reserve);
++}
++
++/*
++ * These functions implement the arithmetic-format compressor.
++ */
++#define pic2_arith_write_one_bit(pi) (pi->bs.bits++)
++
++static void pic2_arith_write_zero_bit(pi)
++struct pic2_info *pi;
++{
++ if (pi->bs.zero)
++ pic2_write_bits(pi, 0, 1);
++
++ while (pi->bs.bits--)
++ pic2_write_bits(pi, 1, 1);
++
++ pi->bs.bits = 0;
++ pi->bs.zero = 1;
++}
++
++static void pic2_arith_flush_bit_buf(pi)
++struct pic2_info *pi;
++{
++ int i;
++
++ for (i = 0; i < 16; i++) {
++ if (pi->cc & 0x8000)
++ pic2_arith_write_one_bit(pi);
++ else
++ pic2_arith_write_zero_bit(pi);
++ pi->cc <<= 1;
++ }
++ pic2_arith_write_zero_bit(pi);
++ pic2_flush_bits(pi);
++}
++
++static void pic2_arith_carry_bit(pi)
++struct pic2_info *pi;
++{
++ pic2_write_bits(pi, 1, 1);
++
++ if (pi->bs.bits == 0) {
++ pi->bs.zero = 0;
++ } else {
++ while (--pi->bs.bits)
++ pic2_write_bits(pi, 0, 1);
++ pi->bs.zero = 1;
++ }
++}
++
++static void pic2_arith_encode_bit(pi, n, c)
++struct pic2_info *pi;
++int n, c;
++{
++ int pp;
++ long *c_sum, *c_0_sum;
++
++ c_sum = (long *) pi->mulu_tab;
++ c_0_sum = c_sum + PIC2_ARITH_CONTEXT + 1;
++
++ if (pi->dd == 0) {
++ c_sum[c]++;
++ if (n == 0)
++ c_0_sum[c]++;
++ return;
++ }
++ pp = pi->mulu_tab[(pi->aa & 0x7f00) / 2 + c];
++ if (n != 0) {
++ pi->cc = pi->cc + pp;
++ if (pi->cc > 0xffff) {
++ pic2_arith_carry_bit(pi);
++ pi->cc = pi->cc & 0xffff;
++ }
++ pi->aa = pi->aa - pp;
++ while (pi->aa < 0x8000) {
++ if (pi->cc & 0x8000)
++ pic2_arith_write_one_bit(pi);
++ else
++ pic2_arith_write_zero_bit(pi);
++ pi->cc = (pi->cc * 2) & 0xffff;
++ pi->aa = pi->aa * 2;
++ }
++ } else {
++ pi->aa = pp;
++
++ while (pi->aa < 0x8000) {
++ if (pi->cc & 0x8000)
++ pic2_arith_write_one_bit(pi);
++ else
++ pic2_arith_write_zero_bit(pi);
++ pi->cc = (pi->cc * 2) & 0xffff;
++ pi->aa = pi->aa * 2;
++ }
++ }
++}
++
++static void pic2_arith_encode_nbyte(pi, n, c, max)
++struct pic2_info *pi;
++int n, c, max;
++{
++ short i;
++
++ for (i = 0; i < n; i++) {
++ pic2_arith_encode_bit(pi, 0, c + i);
++ }
++ if (n < max)
++ pic2_arith_encode_bit(pi, 1, c + n);
++}
++
++static void pic2_arith_encode_nn(pi, n, c)
++struct pic2_info *pi;
++int n, c;
++{
++ if (n < 1) {
++ pic2_arith_encode_bit(pi, 1, c);
++ } else if (n < 1 + 2) {
++ pic2_arith_encode_bit(pi, 0, c);
++ pic2_arith_encode_bit(pi, 1, c + 1);
++ n -= 1;
++ pic2_arith_encode_bit(pi, n & 1, c + 8);
++ } else if (n < 1 + 2 + 4) {
++ pic2_arith_encode_bit(pi, 0, c);
++ pic2_arith_encode_bit(pi, 0, c + 1);
++ pic2_arith_encode_bit(pi, 1, c + 2);
++ n -= 1 + 2;
++ pic2_arith_encode_bit(pi, n & 1, c + 8);
++ pic2_arith_encode_bit(pi, n & 2, c + 9);
++ } else if (n < 1 + 2 + 4 + 8) {
++ pic2_arith_encode_bit(pi, 0, c);
++ pic2_arith_encode_bit(pi, 0, c + 1);
++ pic2_arith_encode_bit(pi, 0, c + 2);
++ pic2_arith_encode_bit(pi, 1, c + 3);
++ n -= 1 + 2 + 4;
++ pic2_arith_encode_bit(pi, n & 1, c + 8);
++ pic2_arith_encode_bit(pi, n & 2, c + 9);
++ pic2_arith_encode_bit(pi, n & 4, c + 10);
++ } else if (n < 1 + 2 + 4 + 8 + 16) {
++ pic2_arith_encode_bit(pi, 0, c);
++ pic2_arith_encode_bit(pi, 0, c + 1);
++ pic2_arith_encode_bit(pi, 0, c + 2);
++ pic2_arith_encode_bit(pi, 0, c + 3);
++ pic2_arith_encode_bit(pi, 1, c + 4);
++ n -= 1 + 2 + 4 + 8;
++ pic2_arith_encode_bit(pi, n & 1, c + 8);
++ pic2_arith_encode_bit(pi, n & 2, c + 9);
++ pic2_arith_encode_bit(pi, n & 4, c + 10);
++ pic2_arith_encode_bit(pi, n & 8, c + 11);
++ } else if (n < 1 + 2 + 4 + 8 + 16 + 32) {
++ pic2_arith_encode_bit(pi, 0, c);
++ pic2_arith_encode_bit(pi, 0, c + 1);
++ pic2_arith_encode_bit(pi, 0, c + 2);
++ pic2_arith_encode_bit(pi, 0, c + 3);
++ pic2_arith_encode_bit(pi, 0, c + 4);
++ pic2_arith_encode_bit(pi, 1, c + 5);
++ n -= 1 + 2 + 4 + 8 + 16;
++ pic2_arith_encode_bit(pi, n & 1, c + 8);
++ pic2_arith_encode_bit(pi, n & 2, c + 9);
++ pic2_arith_encode_bit(pi, n & 4, c + 10);
++ pic2_arith_encode_bit(pi, n & 8, c + 11);
++ pic2_arith_encode_bit(pi, n & 16, c + 12);
++ } else if (n < 1 + 2 + 4 + 8 + 16 + 32 + 64) {
++ pic2_arith_encode_bit(pi, 0, c);
++ pic2_arith_encode_bit(pi, 0, c + 1);
++ pic2_arith_encode_bit(pi, 0, c + 2);
++ pic2_arith_encode_bit(pi, 0, c + 3);
++ pic2_arith_encode_bit(pi, 0, c + 4);
++ pic2_arith_encode_bit(pi, 0, c + 5);
++ pic2_arith_encode_bit(pi, 1, c + 6);
++ n -= 1 + 2 + 4 + 8 + 16 + 32;
++ pic2_arith_encode_bit(pi, n & 1, c + 8);
++ pic2_arith_encode_bit(pi, n & 2, c + 9);
++ pic2_arith_encode_bit(pi, n & 4, c + 10);
++ pic2_arith_encode_bit(pi, n & 8, c + 11);
++ pic2_arith_encode_bit(pi, n & 16, c + 12);
++ pic2_arith_encode_bit(pi, n & 32, c + 13);
++ } else if (n < 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128) {
++ pic2_arith_encode_bit(pi, 0, c);
++ pic2_arith_encode_bit(pi, 0, c + 1);
++ pic2_arith_encode_bit(pi, 0, c + 2);
++ pic2_arith_encode_bit(pi, 0, c + 3);
++ pic2_arith_encode_bit(pi, 0, c + 4);
++ pic2_arith_encode_bit(pi, 0, c + 5);
++ pic2_arith_encode_bit(pi, 0, c + 6);
++ pic2_arith_encode_bit(pi, 1, c + 7);
++ n -= 1 + 2 + 4 + 8 + 16 + 32 + 64;
++ pic2_arith_encode_bit(pi, n & 1, c + 8);
++ pic2_arith_encode_bit(pi, n & 2, c + 9);
++ pic2_arith_encode_bit(pi, n & 4, c + 10);
++ pic2_arith_encode_bit(pi, n & 8, c + 11);
++ pic2_arith_encode_bit(pi, n & 16, c + 12);
++ pic2_arith_encode_bit(pi, n & 32, c + 13);
++ pic2_arith_encode_bit(pi, n & 64, c + 14);
++ } else {
++ pic2_arith_encode_bit(pi, 0, c);
++ pic2_arith_encode_bit(pi, 0, c + 1);
++ pic2_arith_encode_bit(pi, 0, c + 2);
++ pic2_arith_encode_bit(pi, 0, c + 3);
++ pic2_arith_encode_bit(pi, 0, c + 4);
++ pic2_arith_encode_bit(pi, 0, c + 5);
++ pic2_arith_encode_bit(pi, 0, c + 6);
++ pic2_arith_encode_bit(pi, 0, c + 7);
++ }
++}
++
++static void pic2_arith_press_chain(pi, x)
++struct pic2_info *pi;
++int x;
++{
++ int b, d;
++ pixel c;
++
++ b = -(pi->flag_now[x]);
++ c = pi->vram_now[x];
++ d = 0;
++
++ if (b < 0)
++ b = 0;
++
++ if (pi->flag_next[x] == 1 && pi->vram_next[x] == c) {
++ d = 1;
++ pi->flag_next[x] = -1;
++ } else if (pi->flag_next[x - 1] == 1 && pi->vram_next[x - 1] == c) {
++ d = 2;
++ pi->flag_next[x - 1] = -2;
++ } else if (pi->flag_next[x + 1] == 1 && pi->vram_next[x + 1] == c) {
++ d = 3;
++ pi->flag_next[x + 1] = -3;
++ } else if (pi->flag_next[x - 2] == 1 && pi->vram_next[x - 2] == c) {
++ d = 4;
++ pi->flag_next[x - 2] = -4;
++ } else if (pi->flag_next[x + 2] == 1 && pi->vram_next[x + 2] == c) {
++ if ((pi->flag_now[x + 2] != 0 && pi->vram_now[x + 2] == c)
++ || (pi->flag_now[x + 1] != 0 && pi->vram_now[x + 1] == c)
++ || (pi->flag_now[x + 3] != 0 && pi->vram_now[x + 3] == c)) {
++ pic2_arith_encode_nbyte(pi, 0, 80 + 6 * b, 5);
++ return;
++ }
++ d = 5;
++ pi->flag_next[x + 2] = -5;
++ }
++ pic2_arith_encode_nbyte(pi, d, 80 + 6 * b, 5);
++}
++
++static void pic2_arith_put_number(pi, xn, xa, xb)
++struct pic2_info *pi;
++int xn, xa, xb;
++{
++ short n;
++ byte maxcol;
++
++ maxcol = 0xff >> (8 - pi->header->depth / 3);
++
++ if (xa > ((int) maxcol >> 1)) {
++ if (xb > xa)
++ n = (xb - xa) * 2 - 1;
++ else if (xa - ((int) maxcol - xa) > xb)
++ n = maxcol - xb;
++ else
++ n = (xa - xb) * 2;
++ } else {
++ if (xb <= xa)
++ n = (xa - xb) * 2;
++ else if (2 * xa < xb)
++ n = xb;
++ else
++ n = (xb - xa) * 2 - 1;
++ }
++ pic2_arith_encode_nn(pi, n, xn);
++}
++
++static void pic2_arith_write_color(pi, x)
++struct pic2_info *pi;
++int x;
++{
++ pixel c1, c2, cc;
++ short g0, r0, b0, r, g, b;
++ int i, j;
++ unsigned short k;
++ pixel *p, *pp;
++ short colbits;
++ pixel rmask, gmask, bmask;
++ byte maxcol;
++
++ colbits = pi->header->depth / 3;
++ rmask = (0xff >> (8 - colbits)) << (colbits * 2);
++ gmask = (0xff >> (8 - colbits)) << colbits;
++ bmask = (0xff >> (8 - colbits));
++ maxcol = (byte) bmask;
++
++ cc = pi->vram_now[x];
++ c1 = pi->vram_prev[x];
++ k = ((c1 >> ((colbits - 3) * 3)) & 0x1c0)
++ | ((c1 >> ((colbits - 3) * 2)) & 0x038)
++ | ((c1 >> (colbits - 3) ) & 0x007);
++ if (colbits == 5)
++ k = pic2_exchange_rg(k, 3);
++
++ p = pi->cache[k];
++ for (i = 0; i < (PIC2_ARITH_CACHE - 1); i++) {
++ if (cc == *p++)
++ break;
++ }
++ if (i == (PIC2_ARITH_CACHE - 1)) {
++ pp = p - 1;
++ for (j = i; j > 0; j--) {
++ *--p = *--pp;
++ }
++ pi->cache[k][0] = cc;
++ pic2_arith_encode_bit(pi, 1, pi->cache_hit_c);
++ pi->cache_hit_c = 16;
++
++ c2 = pi->vram_now[x - 1];
++ r = ((c1 & rmask) + (c2 & rmask)) >> (colbits * 2 + 1);
++ g = ((c1 & gmask) + (c2 & gmask)) >> (colbits + 1);
++ b = ((c1 & bmask) + (c2 & bmask)) >> ( 1);
++
++ r0 = (cc >> (colbits * 2)) & maxcol;
++ g0 = (cc >> colbits ) & maxcol;
++ b0 = cc & maxcol;
++
++ r = r + g0 - g;
++ if (r < 0)
++ r = 0;
++ else if (r > (short) maxcol)
++ r = maxcol;
++
++ b = b + g0 - g;
++ if (b < 0)
++ b = 0;
++ else if (b > (short) maxcol)
++ b = maxcol;
++
++ pic2_arith_put_number(pi, 32, g, g0);
++ pic2_arith_put_number(pi, 48, r, r0);
++ pic2_arith_put_number(pi, 64, b, b0);
++ } else {
++ *--p = pi->cache[k][i / 2];
++ pi->cache[k][i / 2] = pi->cache[k][0];
++ pi->cache[k][0] = cc;
++
++ pic2_arith_encode_bit(pi, 0, pi->cache_hit_c);
++ pi->cache_hit_c = 15;
++ pic2_arith_encode_nn(pi, i, 17);
++ }
++}
++
++static void pic2_arith_press_line2(pi)
++struct pic2_info *pi;
++{
++ int x, xw, ymax;
++ pixel cc;
++
++ xw = pi->block->x_wid;
++ ymax = pi->block->y_wid -1;
++ cc = pi->vram_now[xw - 1]; /* last color */
++ pi->vram_next[-1] = cc;
++
++ /* mark change point */
++ for (x = 0; x < xw; x++)
++ if (cc != pi->vram_next[x]) {
++ pi->flag_next[x] = 1;
++ cc = pi->vram_next[x];
++ } else
++ pi->flag_next[x] = 0;
++
++ for (x = 0; x < xw; x++) {
++ if (pi->flag_now[x] == 1) { /* change point */
++ pi->flag2_now [x + 1]++;
++ pi->flag2_now [x + 2]++;
++ pi->flag2_next [x - 1]++;
++ pi->flag2_next [x ]++;
++ pi->flag2_next [x + 1]++;
++ pi->flag2_next2[x - 1]++;
++ pi->flag2_next2[x ]++;
++ pi->flag2_next2[x + 1]++;
++
++ /* write change point */
++ pic2_arith_encode_bit(pi, 1, pi->flag2_now[x]);
++
++ /* write color */
++ pic2_arith_write_color(pi, x);
++
++ /* if not last line, write chain */
++ if (pi->ynow - 1 < ymax)
++ pic2_arith_press_chain(pi, x);
++ } else if (pi->flag_now[x] == 0) /* not on chain */
++ /* write change point */
++ pic2_arith_encode_bit(pi, 0, pi->flag2_now[x]);
++ else /* on chain */
++ /* if not on last line, write next chain */
++ if (pi->ynow - 1 < ymax)
++ pic2_arith_press_chain(pi, x);
++ }
++}
++
++static int pic2_arith_press_line(pi, line)
++struct pic2_info *pi;
++pixel **line;
++{
++ int i, xw, ymax;
++ long *c_sum, *c_0_sum;
++
++ xw = pi->block->x_wid;
++ ymax = pi->block->y_wid -1;
++ c_sum = (long *) pi->mulu_tab;
++ c_0_sum = c_sum + PIC2_ARITH_CONTEXT +1;
++
++ pic2_handle_para(pi, 0);
++
++ xvbzero((char *) pi->flag2_next2 - 4,
++ (8 + xw) * sizeof(pi->flag2_next2[0]));
++
++ if (pi->ynow == 0) { /* first line */
++ int x;
++ pixel cc = 0;
++
++ if (pi->dd != 0) { /* compress pass */
++ unsigned short c_tab[PIC2_ARITH_CONTEXT];
++
++ for (i = 0; i < PIC2_ARITH_CONTEXT; i++) {
++ unsigned long a, b;
++ a = c_0_sum[i];
++ b = c_sum[i];
++ while (a > 32767) {
++ a /= 2;
++ b /= 2;
++ }
++ if (a == b)
++ c_tab[i] = 0xffff; /* b==0 here, too */
++ else
++ c_tab[i] = (65536 * a) / b; /* a < b, so less 65536 */
++ }
++ for (i = 0; i < 16384; i++) {
++ pi->mulu_tab[i] = (long) (i / 128 + 128) * (int) c_tab[i & 127] / 256;
++ if (pi->mulu_tab[i] == 0)
++ pi->mulu_tab[i] = 1; /* 0 is wrong */
++ }
++ for (i = 0; i < PIC2_ARITH_CONTEXT; i++)
++ pic2_write_short(pi, c_tab[i]);
++
++ xvbzero((char *) pi->vram_now, xw * sizeof(pi->vram_now[0]));
++ } else { /* statistical pass */
++ xvbzero((char *) c_0_sum, PIC2_ARITH_CONTEXT * sizeof(c_0_sum[0]));
++ xvbzero((char *) c_sum, PIC2_ARITH_CONTEXT * sizeof(c_sum[0]));
++ }
++
++ /* initialize flags */
++ xvbzero((char *) pi->cache, 8 * 8 * 8 * sizeof(pi->cache[0]));
++ xvbzero((char *) pi->cache_pos, 8 * 8 * 8 * sizeof(pi->cache_pos[0]));
++
++ xvbzero((char *) pi->flag2_next - 4,
++ (8 + xw) * sizeof(pi->flag2_next[0]));
++ xvbzero((char *) pi->flag2_next2 - 4,
++ (8 + xw) * sizeof(pi->flag2_next2[0]));
++
++ pi->vram_next[-1] = cc;
++ for (x = 0; x < xw; x++)
++ if (cc != pi->vram_next[x]) {
++ pi->flag_next[x] = 1;
++ cc = pi->vram_next[x];
++ } else
++ pi->flag_next[x] = 0;
++
++ pi->aa = 0xffff;
++ cc = 0;
++ pi->cache_hit_c = 16;
++ } else /* after second line */
++ pic2_arith_press_line2(pi);
++
++ if (pi->ynow == ymax) {
++ pi->ynow++;
++ pic2_handle_para(pi, 1);
++ pic2_handle_para(pi, 0);
++ pic2_arith_press_line2(pi);
++ }
++ /* line buffer for next data */
++ if (line != NULL)
++ *line = pi->vram_prev;
++
++ pi->ynow++;
++
++ if (pi->ynow - 1 < ymax) {
++ pic2_handle_para(pi, 1);
++ return (pi->ynow);
++ } else { /* end */
++ if (pi->dd == 0) { /* statistical pass */
++ pi->dd = 1;
++ pi->ynow = 0;
++ pic2_handle_para(pi, 1);
++ return (0);
++ } else {
++ pic2_handle_para(pi, 1);
++ pic2_arith_flush_bit_buf(pi);
++ return (-2); /* end */
++ }
++ }
++}
++
++static int pic2_arith_saver_init(pi, line)
++struct pic2_info *pi;
++pixel **line;
++{
++ pi->ynow = 0;
++
++ /* check the color depth */
++ if (pi->header->depth % 3)
++ pic2_error(pi, PIC2_DEPTH);
++
++ /* set next line function */
++ pi->next_line = pic2_arith_press_line;
++
++ if (line != NULL)
++ *line = pi->vram_next + 4;
++
++ pic2_seek_file(pi, pi->next_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
++
++ /* clear bit field marker */
++ pi->bs.rest = 0;
++ pi->bs.cur = 0;
++ pi->bs.zero = 0;
++ pi->bs.bits = 0;
++
++ return (0);
++}
++
++/*
++ * These functions are fast pic2 format compressor.
++ */
++static void pic2_fast_write_length(pi, n)
++struct pic2_info *pi;
++int n;
++{
++ int a, b;
++ static const unsigned short len_data[8][2] = {
++ {1, 0},
++ {1, 0},
++ {3, 4},
++ {3, 5},
++ {5, 24},
++ {5, 25},
++ {5, 26},
++ {5, 27},
++ };
++
++ n++;
++ if (n < 8)
++ pic2_write_bits(pi, len_data[n][1], len_data[n][0]);
++ else {
++ a = 0;
++ b = 2;
++ while (n > b - 1) {
++ a = a + 1;
++ b = b * 2;
++ }
++ pic2_write_bits(pi, 0xfffffffe, a + 1);
++ if (a > 0)
++ pic2_write_bits(pi, n - b / 2, a);
++ }
++}
++
++static void pic2_fast_press_chain(pi, x)
++struct pic2_info *pi;
++int x;
++{
++ int ymax;
++ pixel cc;
++
++ ymax = pi->block->y_wid -1;
++ cc = pi->vram_now[x];
++
++ if (pi->ynow - 1 == ymax) {
++ pic2_write_bits(pi, 0, 1);
++ return;
++ }
++ if (pi->flag_next[x] == 1 && pi->vram_next[x] == cc) {
++ pi->flag_next[x] = -1;
++ pic2_write_bits(pi, 3, 2);
++ } else if (pi->flag_next[x - 1] == 1 && pi->vram_next[x - 1] == cc) {
++ pi->flag_next[x - 1] = -1;
++ pic2_write_bits(pi, 11, 4);
++ } else if (pi->flag_next[x + 1] == 1 && pi->vram_next[x + 1] == cc) {
++ pi->flag_next[x + 1] = -1;
++ pic2_write_bits(pi, 9, 4);
++ } else if (pi->flag_next[x - 2] == 1 && pi->vram_next[x - 2] == cc) {
++ pi->flag_next[x - 2] = -1;
++ pic2_write_bits(pi, 10, 4);
++ } else if ((pi->flag_next[x + 2] == 1 && pi->vram_next[x + 2] == cc)
++ && !(pi->flag_now[x + 2] != 0 && pi->vram_now[x + 2] == cc)) {
++ pi->flag_next[x + 2] = -1;
++ pic2_write_bits(pi, 8, 4);
++ } else
++ pic2_write_bits(pi, 0, 1);
++}
++
++static void pic2_fast_press_chain2(pi, x)
++struct pic2_info *pi;
++int x;
++{
++ int ymax;
++ pixel cc;
++ char *chain_buff;
++
++ ymax = pi->block->y_wid -1;
++ chain_buff = (char *) pi->mulu_tab;
++ cc = pi->vram_now[x];
++
++ if (pi->ynow - 1 == ymax) {
++ chain_buff[pi->cc++] = 0;
++ return;
++ }
++ if (pi->flag_next[x] == 1 && pi->vram_next[x] == cc) {
++ pi->flag_next[x] = -1;
++ chain_buff[pi->cc++] = 1;
++ } else if (pi->flag_next[x - 1] == 1 && pi->vram_next[x - 1] == cc) {
++ pi->flag_next[x - 1] = -1;
++ chain_buff[pi->cc++] = 2;
++ } else if (pi->flag_next[x + 1] == 1 && pi->vram_next[x + 1] == cc) {
++ pi->flag_next[x + 1] = -1;
++ chain_buff[pi->cc++] = 3;
++ } else if (pi->flag_next[x - 2] == 1 && pi->vram_next[x - 2] == cc) {
++ pi->flag_next[x - 2] = -1;
++ chain_buff[pi->cc++] = 4;
++ } else if ((pi->flag_next[x + 2] == 1 && pi->vram_next[x + 2] == cc)
++ && !(pi->flag_now[x + 2] != 0 && pi->vram_now[x + 2] == cc)) {
++ pi->flag_next[x + 2] = -1;
++ chain_buff[pi->cc++] = 5;
++ } else
++ chain_buff[pi->cc++] = 0;
++}
++
++static void pic2_fast_flush_chain(pi)
++struct pic2_info *pi;
++{
++ int i;
++ char *chain_buf;
++
++ chain_buf = (char *) pi->mulu_tab;
++ for (i = 0; i < pi->cc; i++){
++ switch (chain_buf[i]) {
++ case 0:
++ pic2_write_bits(pi, 0, 1);
++ break;
++ case 1:
++ pic2_write_bits(pi, 3, 2);
++ break;
++ case 2:
++ pic2_write_bits(pi, 11, 4);
++ break;
++ case 3:
++ pic2_write_bits(pi, 9, 4);
++ break;
++ case 4:
++ pic2_write_bits(pi, 10, 4);
++ break;
++ case 5:
++ pic2_write_bits(pi, 8, 4);
++ break;
++ }
++ }
++ pi->cc = 0;
++}
++
++static void pic2_fast_write_color(pi, x)
++struct pic2_info *pi;
++int x;
++{
++ pixel cc, bc;
++ unsigned short j, k, m;
++ short depth, colbits;
++ pixel (*cache)[PIC2_FAST_CACHE];
++
++ depth = pi->header->depth;
++ colbits = depth / 3;
++ cache = (pixel (*)[PIC2_FAST_CACHE]) pi->cache;
++
++ bc = pi->vram_now[x - 1];
++ bc = pic2_exchange_rg(bc, colbits);
++ k = pic2_shift_bits(bc, 8 - depth);
++ cc = pi->vram_now[x];
++ m = pi->cache_pos[k];
++
++ for (j = 0; j < PIC2_FAST_CACHE; j++)
++ if (cache[k][(m + j) & (PIC2_FAST_CACHE - 1)] == cc)
++ break;
++
++ if (j == PIC2_FAST_CACHE) {
++ m = (m - 1) & (PIC2_FAST_CACHE - 1);
++ pi->cache_pos[k] = m;
++ cache[k][m] = cc;
++
++ cc = pic2_exchange_rg(cc, colbits);
++ pic2_write_bits(pi, 0, 1);
++ pic2_write_bits(pi, cc, depth);
++ } else {
++ pic2_write_bits(pi, 1, 1);
++ pic2_write_bits(pi, j, 6);
++ }
++}
++
++static void pic2_fast_press_line2(pi)
++struct pic2_info *pi;
++{
++ int x, xw;
++ pixel cc;
++
++ xw = pi->block->x_wid;
++ cc = pi->vram_now[xw - 1]; /* last color */
++ pi->vram_next[-1] = cc;
++
++ /* mark change point */
++ for (x = 0; x < xw; x++)
++ if (cc != pi->vram_next[x]) {
++ pi->flag_next[x] = 1;
++ cc = pi->vram_next[x];
++ } else
++ pi->flag_next[x] = 0;
++
++ for (x = 0; x < xw; x++)
++ if (pi->flag_now[x] == 1) { /* change point */
++ if (pi->aa >= 1023)
++ pi->aa++;
++ pic2_fast_write_length(pi, pi->aa);
++ pic2_fast_flush_chain(pi);
++ pi->aa = 0;
++ pic2_fast_write_color(pi, x);
++ pic2_fast_press_chain(pi, x);
++ } else if (pi->flag_now[x] == 0) {
++ pi->aa++;
++ } else {
++ pic2_fast_press_chain2(pi, x);
++ if (pi->cc == 1023) {
++ pic2_fast_write_length(pi, 1023);
++ pic2_fast_flush_chain(pi);
++ pi->aa = 0;
++ }
++ }
++}
++
++static int pic2_fast_press_line(pi, line)
++struct pic2_info *pi;
++pixel **line;
++{
++ int xw, ymax;
++
++ xw = pi->block->x_wid;
++ ymax = pi->block->y_wid -1;
++
++ pic2_handle_para(pi, 0);
++
++ if (pi->ynow == 0) { /* first line */
++ int x;
++ pixel cc = 0;
++
++ /* initialize flags */
++ xvbzero((char *) pi->cache, 256 * sizeof(pi->cache[0]));
++ xvbzero((char *) pi->cache_pos,
++ PIC2_FAST_CACHE * sizeof(pi->cache_pos[0]));
++
++ /* mark change point */
++ pi->vram_next[-1] = cc;
++ for (x = 0; x < xw; x++)
++ if (cc != pi->vram_next[x]) {
++ pi->flag_next[x] = 1;
++ cc = pi->vram_next[x];
++ } else
++ pi->flag_next[x] = 0;
++
++ pi->cc = 0;
++ pi->aa = 0;
++ } else /* after second line */
++ pic2_fast_press_line2(pi);
++
++ if (pi->ynow == ymax) {
++ pi->ynow++;
++ pic2_handle_para(pi, 1);
++ pic2_handle_para(pi, 0);
++ pic2_fast_press_line2(pi);
++ }
++ /* line buffer for next data */
++ if (line != NULL)
++ *line = pi->vram_prev;
++
++ pi->ynow++;
++
++ if (pi->ynow - 1 < ymax) {
++ pic2_handle_para(pi, 1);
++ return (pi->ynow);
++ } else { /* end */
++ pic2_handle_para(pi, 1);
++ if (pi->aa >= 1023)
++ pi->aa++;
++ pic2_fast_write_length(pi, pi->aa);
++ pic2_fast_flush_chain(pi);
++ return (-2); /* end */
++ }
++}
++
++static int pic2_fast_saver_init(pi, line)
++struct pic2_info *pi;
++pixel **line;
++{
++ pi->ynow = 0;
++
++ /* check the color depth */
++ if (pi->header->depth % 3)
++ pic2_error(pi, PIC2_DEPTH);
++
++ /* set next line function */
++ pi->next_line = pic2_fast_press_line;
++ if (line != NULL)
++ *line = pi->vram_next + 4;
++
++ pic2_seek_file(pi, pi->next_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
++
++ /* clear bit field marker */
++ pi->bs.rest = 0;
++ pi->bs.cur = 0;
++
++ return (0);
++}
++
++/*
++ * These functions are beta pic2 format compressor.
++ */
++static int pic2_beta_press_line(pi, line)
++struct pic2_info *pi;
++pixel **line;
++{
++ int i, xw, ymax;
++ byte *p;
++ pixel *pc;
++ short depth, pixbyte, colbits;
++
++ depth = pi->header->depth;
++ pixbyte = depth / 8 + ((depth % 8) > 0);
++ colbits = depth / 3;
++
++ xw = pi->block->x_wid;
++ ymax = pi->block->y_wid - 1;
++
++ pc = pi->vram_now;
++ p = (byte *) pi->vram_prev;
++ if (pixbyte == 3) {
++ for (i = 0; i < xw; i++, pc++) {
++ *p++ = *pc >> 16;
++ *p++ = *pc >> 8;
++ *p++ = *pc;
++ }
++ pic2_write_file(pi, pi->vram_prev, (size_t) (xw * 3));
++ } else if (pixbyte == 2) {
++ if (strncmp(pi->block->id, "P2BM", 4) == 0)
++ for (i = 0; i < xw; i++, pc++) {
++ if (colbits == 5) {
++ *pc = pic2_exchange_rg(*pc, colbits);
++ *pc <<= 1;
++ }
++ *p++ = *pc >> 8;
++ *p++ = *pc;
++ }
++ else
++ for (i = 0; i < xw; i++, pc++) {
++ if (colbits == 5) {
++ *pc = pic2_exchange_rg(*pc, colbits);
++ *pc <<= 1;
++ }
++ *p++ = *pc;
++ *p++ = *pc >> 8;
++ }
++ pic2_write_file(pi, pi->vram_prev, (size_t) (xw * 2));
++ } else {
++ for (i = 0; i < xw; i++, pc++)
++ *p++ = *pc;
++ pic2_write_file(pi, pi->vram_prev, (size_t) xw);
++ }
++ if (line != NULL)
++ *line = pi->vram_now;
++
++ pi->ynow++;
++ if (pi->ynow > ymax)
++ return (-2);
++ return (pi->ynow);
++}
++
++static int pic2_beta_saver_init(pi, line)
++struct pic2_info *pi;
++pixel **line;
++{
++ pi->ynow = 0;
++
++ *line = pi->vram_now;
++ pi->next_line = pic2_beta_press_line;
++ pic2_seek_file(pi, pi->next_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
++ return (0);
++}
++
++/*
++ * This function saves compressed data.
++ */
++static void pic2_write_data(pi, data, ptype, x_offset, y_offset, w, h,
++ rmap, gmap, bmap, type, depth)
++struct pic2_info *pi;
++byte *data;
++int ptype;
++int x_offset, y_offset;
++int w, h;
++byte *rmap, *gmap, *bmap;
++int type, depth;
++{
++ int i, line;
++ pixel *linep;
++ short colbits;
++
++ colbits = pi->header->depth / 3;
++
++ line = pic2_save_block(pi, &linep, x_offset, y_offset, w, h,
++ form_tab[type].id, 0xffffffff);
++ while (line >= 0) {
++ byte r, g, b;
++ int pic_idx;
++
++ pic_idx = line * w * ((ptype == PIC24) ? 3 : 1);
++
++ for (i = 0; i < w; i++) {
++ if (ptype != PIC24) {
++ r = rmap[data[pic_idx]];
++ g = gmap[data[pic_idx]];
++ b = bmap[data[pic_idx]];
++ pic_idx++;
++ } else {
++ r = data[pic_idx++];
++ g = data[pic_idx++];
++ b = data[pic_idx++];
++ }
++ if (pi->writing_grey)
++ r = g = b = MONO(r, g, b);
++
++ r = pic2_convert_color_bits(r, 8, colbits);
++ g = pic2_convert_color_bits(g, 8, colbits);
++ b = pic2_convert_color_bits(b, 8, colbits);
++
++ linep[i] = ((pixel) r << (colbits * 2))
++ | ((pixel) g << colbits )
++ | ((pixel) b );
++ }
++ line = pic2_next_line(pi, &linep);
++ WaitCursor();
++ }
++}
++
++/*
++ * This function compresses/extracts one line buffer.
++ */
++static int pic2_next_line(pi, line)
++struct pic2_info *pi;
++pixel **line;
++{
++ int res;
++
++ res = pi->next_line(pi, line);
++ if (res == -2) {
++ if (pi->mode == PIC2_WRITE_MODE) {
++ long new_pos;
++
++ new_pos = pic2_tell_file(pi);
++ pi->block->size = new_pos - pi->next_pos;
++ pic2_seek_file(pi, pi->next_pos, SEEK_SET);
++ pic2_write_block_header(pi);
++ pi->next_pos = new_pos;
++ if (DEBUG)
++ pic2_show_pic2_info(pi);
++ }
++ pic2_free_buffer(pi);
++ }
++ return (res);
++}
++
++/*
++ * These functions find the pic2 image block.
++ * pic2_next_block:
++ * moves the file pointer to the next image block.
++ * pic2_find_block:
++ * finds the first image block and moves the file pointer there.
++ */
++static int pic2_next_block(pi)
++struct pic2_info *pi;
++{
++ int i;
++
++ if (pi->mode != PIC2_READ_MODE)
++ return (-1);
++
++ /* go to block for read */
++ pic2_seek_file(pi, pi->next_pos, SEEK_SET);
++
++ /* read the head of block header */
++ pic2_read_block_header1(pi);
++
++ /* end block ? */
++ if (pi->block->id[0] == 0)
++ return (0);
++
++ /* set current block */
++ pi->block_pos = pi->next_pos;
++
++ /* set next block */
++ pi->next_pos += pi->block->size;
++
++ /* check block id */
++ for (i = 0; i < n_form_tab; i++) {
++ if (xvbcmp(pi->block->id, form_tab[i].id, (size_t) 4) == 0)
++ break;
++ }
++ if (i == n_form_tab)
++ return (2);
++
++ /* read the rest of block header */
++ pic2_read_block_header2(pi);
++
++ if (pi->block->x_offset + pi->block->x_wid > pi->x_max)
++ pi->x_max = pi->block->x_offset + pi->block->x_wid;
++
++ if (pi->block->y_offset + pi->block->y_wid > pi->y_max)
++ pi->y_max = pi->block->y_offset + pi->block->y_wid;
++
++ if (DEBUG)
++ pic2_show_pic2_info(pi);
++ return (1);
++}
++
++static int pic2_find_block(pi)
++struct pic2_info *pi;
++{
++ if (pi->mode != PIC2_READ_MODE)
++ return (-1);
++
++ pi->next_pos = pi->header->size;
++ return (pic2_next_block(pi));
++}
++
++/*
++ * These functions load/save the pic2 image block.
++ * pic2_load_block:
++ * initializes loader information with current block information.
++ * pic2_save_block:
++ * initializes saver information.
++ */
++static int pic2_load_block(pi)
++struct pic2_info *pi;
++{
++ int i;
++
++ for (i = 0; i < n_form_tab; i++) {
++ if (xvbcmp(pi->block->id, form_tab[i].id, (size_t) 4) == 0)
++ break;
++ }
++ if (i == n_form_tab)
++ return (2);
++
++ pic2_alloc_buffer(pi);
++ return (form_tab[i].loader_init(pi));
++}
++
++static int pic2_save_block(pi, line, x, y, xw, yw, id, opaque)
++struct pic2_info *pi;
++pixel **line;
++int x, y, xw, yw;
++char *id;
++pixel opaque;
++{
++ int i;
++
++ for (i = 0; i < n_form_tab; i++) {
++ if (xvbcmp(id, form_tab[i].id, (size_t) 4) == 0)
++ break;
++ }
++ if (i == n_form_tab)
++ return (2);
++
++ strncpy(pi->block->id, id, 4);
++ pi->block->x_wid = xw;
++ pi->block->y_wid = yw;
++ pi->block->x_offset = x;
++ pi->block->y_offset = y;
++ pi->block->reserve = 0;
++
++ if (x < 0)
++ x = 0;
++ if (y < 0)
++ y = 0;
++ if (x + xw > pi->x_max)
++ pi->x_max = x + xw;
++ if (y + yw > pi->y_max)
++ pi->y_max = y + yw;
++
++ if (opaque != 0xffffffff) {
++ pi->block->flag = 1;
++ pi->block->opaque = opaque;
++ } else {
++ pi->block->flag = 0;
++ pi->block->opaque = 0;
++ }
++ pic2_alloc_buffer(pi);
++
++ return (form_tab[i].saver_init(pi, line));
++}
++
++/*
++ * These functions set/get palettes.
++ * pic2_read_palette:
++ * copy the palettes from pic2_info to PICINFO.
++ * pic2_write_palette:
++ * copy the palettes from PICINFO to pic2_info.
++ */
++#ifndef PIC2_IGNORE_UNUSED_FUNCTIONS
++static void pic2_read_palette(pi, r, g, b)
++struct pic2_info *pi;
++byte *r, *g, *b;
++{
++ int i;
++
++ if (pi->n_pal > 256)
++ pi->n_pal = 256;
++
++ if (pi->pal_bits > 8)
++ pi->pal_bits = 8;
++
++ for (i = 0; i < pi->n_pal; i++) {
++ *r++ =pic2_convert_color_bits(pi->pal[i][0] >> (8 - pi->pal_bits),
++ pi->pal_bits, 8);
++ *g++ =pic2_convert_color_bits(pi->pal[i][1] >> (8 - pi->pal_bits),
++ pi->pal_bits, 8);
++ *b++ =pic2_convert_color_bits(pi->pal[i][2] >> (8 - pi->pal_bits),
++ pi->pal_bits, 8);
++ }
++}
++
++static void pic2_write_palette(pi, n_pal, pal_bits, r, g, b)
++struct pic2_info *pi;
++int n_pal, pal_bits;
++byte *r, *g, *b;
++{
++ int i;
++
++ if (n_pal > 256)
++ pi->n_pal = 256;
++ else
++ pi->n_pal = n_pal;
++
++ if (pal_bits > 8)
++ pi->pal_bits = 8;
++ else
++ pi->pal_bits = pal_bits;
++
++ for (i = 0; i < n_pal; i++) {
++ pi->pal[i][0] = pic2_convert_color_bits(*r++, 8, pal_bits)
++ << (8 - pal_bits);
++ pi->pal[i][1] = pic2_convert_color_bits(*g++, 8, pal_bits)
++ << (8 - pal_bits);
++ pi->pal[i][2] = pic2_convert_color_bits(*b++, 8, pal_bits)
++ << (8 - pal_bits);
++ }
++}
++#endif /* PIC2_IGNORE_UNUSED_FUNCTIONS */
++
++/*
++ * These functions handle color bits.
++ * pic2_convert_color_bits:
++ * converts color bits.
++ * pic2_pad_color_bits:
++ * pads color bits.
++ * pic2_reduce_color_bits:
++ * reduces color bits.
++ * pic2_exchange_rg:
++ * exchanges red and green values.
++ */
++static byte pic2_convert_color_bits(c, from, to)
++int c, from, to;
++{
++ if (from == to)
++ return ((byte) c);
++ else if (from < to)
++ return (pic2_pad_color_bits(c, from, to));
++ else
++ return (pic2_reduce_color_bits(c, from, to));
++}
++
++static byte pic2_pad_color_bits(c, from, to)
++int c, from, to;
++{
++ byte p = 0;
++
++ do {
++ to -= from;
++ p |= pic2_shift_bits(c, to);
++ } while (to >= 0);
++ return (p);
++}
++
++static byte pic2_reduce_color_bits(c, from, to)
++int c, from, to;
++{
++ return ((byte) (c >> (from - to)));
++}
++
++static pixel pic2_exchange_rg(p, colbits)
++pixel p;
++int colbits;
++{
++ pixel rmask, gmask, bmask;
++
++ rmask = (0xff >> (8 - colbits)) << (colbits * 2);
++ gmask = (0xff >> (8 - colbits)) << colbits;
++ bmask = (0xff >> (8 - colbits));
++
++ p = ((p << colbits) & rmask)
++ | ((p >> colbits) & gmask)
++ | ( p & bmask);
++ return (p);
++}
++
++/*
++ * This function handles work memory buffer.
++ */
++static void pic2_handle_para(pi, mode)
++struct pic2_info *pi;
++int mode;
++{
++ static pixel *vram_prev, *vram_now, *vram_next;
++ static short *flag_now, *flag_next;
++ static short *flag2_now, *flag2_next, *flag2_next2;
++
++ switch (mode) {
++ case 0:
++ vram_prev = pi->vram_prev;
++ vram_now = pi->vram_now;
++ vram_next = pi->vram_next;
++ flag_now = pi->flag_now;
++ flag_next = pi->flag_next;
++ flag2_now = pi->flag2_now;
++ flag2_next = pi->flag2_next;
++ flag2_next2 = pi->flag2_next2;
++ pi->vram_prev += 4;
++ pi->vram_now += 4;
++ pi->vram_next += 4;
++ pi->flag_now += 4;
++ pi->flag_next += 4;
++ pi->flag2_now += 4;
++ pi->flag2_next += 4;
++ pi->flag2_next2 += 4;
++ break;
++ case 1:
++ pi->vram_prev = vram_now;
++ pi->vram_now = vram_next;
++ pi->vram_next = vram_prev;
++ pi->flag_now = flag_next;
++ pi->flag_next = flag_now;
++ pi->flag2_now = flag2_next;
++ pi->flag2_next = flag2_next2;
++ pi->flag2_next2 = flag2_now;
++ break;
++ }
++}
++
++/*
++ * These functions alloc/free work memory.
++ * pic2_alloc_buffer:
++ * alloc work memory buffer.
++ * pic2_free_buffer:
++ * free work memory buffer.
++ */
++static int pic2_alloc_buffer(pi)
++struct pic2_info *pi;
++{
++ int wid;
++ byte *p;
++
++ if (pi->buf != NULL)
++ return (-1);
++
++ wid = pi->block->x_wid;
++
++ p = pi->buf = (byte *) pic2_new((wid + 8) * sizeof(pixel) * 3 // GRR POSSIBLE OVERFLOW / FIXME
++ + sizeof(pi->cache[0]) * 8 * 8 * 8
++ + sizeof(pi->cache_pos[0]) * 8 * 8 * 8
++ + sizeof(pi->mulu_tab[0]) * 16384
++ + sizeof(pi->flag_now[0]) * ((wid+8) * 5),
++ "pic2_alloc_buffer");
++
++ pi->vram_prev = (pixel *) p;
++ p += (wid + 8) * sizeof(pixel);
++ pi->vram_now = (pixel *) p;
++ p += (wid + 8) * sizeof(pixel);
++ pi->vram_next = (pixel *) p;
++ p += (wid + 8) * sizeof(pixel);
++ pi->cache = (pixel (*)[PIC2_ARITH_CACHE]) p;
++ p += sizeof(pi->cache[0]) * 8 * 8 * 8;
++ pi->cache_pos = (unsigned short *) p;
++ p += sizeof(pi->cache_pos[0]) * 8 * 8 * 8;
++ pi->mulu_tab = (unsigned short *) p;
++ p += sizeof(pi->mulu_tab[0]) * 16384;
++ pi->flag_now = (short *) p;
++ p += sizeof(pi->flag_now[0]) * (wid + 8);
++ pi->flag_next = (short *) p;
++ p += sizeof(pi->flag_next[0]) * (wid + 8);
++ pi->flag2_now = (short *) p;
++ p += sizeof(pi->flag2_now[0]) * (wid + 8);
++ pi->flag2_next = (short *) p;
++ p += sizeof(pi->flag2_next[0]) * (wid + 8);
++ pi->flag2_next2 = (short *) p;
++ p += sizeof(pi->flag2_next2[0]) * (wid + 8);
++ return (0);
++}
++
++static void pic2_free_buffer(pi)
++struct pic2_info *pi;
++{
++ free(pi->buf);
++ pi->buf = NULL;
++}
++
++/*
++ * These functions handle the file pointer.
++ * pic2_seek_file:
++ * moves the file pointer.
++ * pic2_tell_file:
++ * tells the location of the file pointer.
++ */
++static long pic2_seek_file(pi, offset, whence)
++struct pic2_info *pi;
++long offset;
++int whence;
++{
++ long n;
++
++ n = fseek(pi->fp, offset, whence);
++ if (n < 0)
++ pic2_file_error(pi, PIC2_CORRUPT);
++
++ return (n);
++}
++
++static long pic2_tell_file(pi)
++struct pic2_info *pi;
++{
++ return (ftell(pi->fp));
++}
++
++/*
++ * These functions handle file.
++ * pic2_read_file:
++ * reads data from the file.
++ * pic2_read_long:
++ * reads long word data from the file and converts to internal expression.
++ * pic2_read_short:
++ * reads word data from the file and converts to internal expression.
++ * pic2_read_char:
++ * reads byte data from the file.
++ * pic2_write_file:
++ * writes data to the file.
++ * pic2_write_long:
++ * converts long word data to common expression and writes to the file.
++ * pic2_write_short:
++ * converts word data to common expression and writes to the file.
++ * pic2_write_char:
++ * writes byte data to the file.
++ */
++static int pic2_read_file(pi, buf, size)
++struct pic2_info *pi;
++void *buf;
++size_t size;
++{
++ if (fread(buf, (size_t) 1, size, pi->fp) < size)
++ pic2_file_error(pi, PIC2_CORRUPT);
++ return (0);
++}
++
++static long pic2_read_long(pi)
++struct pic2_info *pi;
++{
++ byte buf[4];
++
++ if (fread(buf, (size_t) 4, (size_t) 1, pi->fp) < 1)
++ pic2_file_error(pi, PIC2_CORRUPT);
++ return (pic2_cextolong(buf));
++}
++
++static short pic2_read_short(pi)
++struct pic2_info *pi;
++{
++ byte buf[2];
++
++ if (fread(buf, (size_t) 2, (size_t) 1, pi->fp) < 1)
++ pic2_file_error(pi, PIC2_CORRUPT);
++ return (pic2_cextoshort(buf));
++}
++
++static char pic2_read_char(pi)
++struct pic2_info *pi;
++{
++ int c;
++
++ if ((c = fgetc(pi->fp)) == EOF)
++ pic2_file_error(pi, PIC2_CORRUPT);
++ return ((char) c);
++}
++
++static int pic2_write_file(pi, buf, size)
++struct pic2_info *pi;
++void *buf;
++size_t size;
++{
++ if (fwrite(buf, (size_t) 1, size, pi->fp) < size)
++ pic2_error(pi, PIC2_WRITE);
++ return (0);
++}
++
++static int pic2_write_long(pi, n)
++struct pic2_info *pi;
++long n;
++{
++ byte buf[4];
++
++ pic2_longtocex(buf, n);
++ if (fwrite(buf, (size_t) 4, (size_t) 1, pi->fp) < 1)
++ pic2_error(pi, PIC2_WRITE);
++ return (0);
++}
++
++static int pic2_write_short(pi, n)
++struct pic2_info *pi;
++int n;
++{
++ byte buf[2];
++
++ pic2_shorttocex(buf, n);
++ if (fwrite(buf, (size_t) 2, (size_t) 1, pi->fp) < 1)
++ pic2_error(pi, PIC2_WRITE);
++ return (0);
++}
++
++static int pic2_write_char(pi, c)
++struct pic2_info *pi;
++int c;
++{
++ if (fputc(c, pi->fp) == EOF)
++ pic2_error(pi, PIC2_WRITE);
++ return (0);
++}
++
++/*
++ * These functions access the bit stream.
++ * pic2_read_bits:
++ * reads the specified bits from the file.
++ * pic2_write_bits:
++ * writes the specified bits to the file.
++ * pic2_flush_bits:
++ * flushes bit buffer to the file.
++ */
++static unsigned long pic2_read_bits(pi, bits)
++struct pic2_info *pi;
++int bits;
++{
++ unsigned long r = 0;
++
++ while (bits > 0) {
++ while (pi->bs.rest > 0 && bits > 0) {
++ r = (r << 1) | (pi->bs.cur & 0x80 ? 1 : 0);
++ pi->bs.cur <<= 1;
++ pi->bs.rest--;
++ bits--;
++ }
++ if (bits > 0) {
++ int c;
++ if ((c = fgetc(pi->fp)) == EOF)
++ pic2_file_error(pi, PIC2_CORRUPT);
++ pi->bs.cur = (byte) c;
++ pi->bs.rest = 8;
++ }
++ }
++ return r;
++}
++
++static void pic2_write_bits(pi, dat, bits)
++struct pic2_info *pi;
++unsigned long dat;
++int bits;
++{
++ unsigned long dat_mask = 1 << (bits - 1);
++
++ while (bits > 0) {
++ while (pi->bs.rest < 8 && bits > 0) {
++ pi->bs.cur <<= 1;
++ if (dat & dat_mask)
++ pi->bs.cur |= 1;
++ pi->bs.rest++;
++ bits--;
++ dat_mask >>= 1;
++ }
++ if (pi->bs.rest >= 8) {
++ if ((fputc((int) pi->bs.cur, pi->fp)) == EOF)
++ pic2_error(pi, PIC2_WRITE);
++ pi->bs.cur = 0;
++ pi->bs.rest = 0;
++ }
++ }
++}
++
++static void pic2_flush_bits(pi)
++struct pic2_info *pi;
++{
++ if (pi->bs.rest < 8) {
++ pi->bs.cur <<= 8 - pi->bs.rest;
++ if (fputc((int) pi->bs.cur, pi->fp) == EOF)
++ pic2_error(pi, PIC2_WRITE);
++ pi->bs.cur = 0;
++ pi->bs.rest = 0;
++ }
++}
++
++/*
++ * These functions initialize or clean up structures.
++ * pic2_init_info:
++ * initializes a pic2_info structure.
++ * pic2_cleanup_pic2_info:
++ * cleans up a pic_info structure.
++ * pic2_cleanup_pinfo:
++ * cleans up a PICINFO structure.
++ */
++static void pic2_init_info(pi)
++struct pic2_info *pi;
++{
++ xvbzero((char *) pi, sizeof(struct pic2_info));
++ pi->header = pic2_new(sizeof(struct pic2_header), "pic2_init_info#1");
++ pi->block = pic2_new(sizeof(struct pic2_block), "pic2_init_info#2");
++}
++
++static void pic2_cleanup_pic2_info(pi, writing)
++struct pic2_info *pi;
++int writing;
++{
++ if (!writing && pi->fp)
++ fclose(pi->fp);
++ if (pi->header)
++ free(pi->header);
++ if (pi->block)
++ free(pi->block);
++ pi->fp = NULL;
++ pi->header = NULL;
++ pi->block = NULL;
++ pi->comment = NULL;
++}
++
++static void pic2_cleanup_pinfo(pinfo)
++PICINFO *pinfo;
++{
++ if (pinfo->pic){
++ free(pinfo->pic);
++ pinfo->pic = NULL;
++ }
++ if (pinfo->comment){
++ free(pinfo->comment);
++ pinfo->comment = NULL;
++ }
++}
++
++/*
++ * Error Handlers.
++ * pic2_memory_error:
++ * shows an error message and terminates.
++ * pic2_error:
++ * shows a non-file error message and jumps to the entry for errors.
++ * pic2_file_error:
++ * shows a file error message and jumps to the entry for errors.
++ */
++static void pic2_memory_error(scm, fn)
++char *scm, *fn;
++{
++ char buf[128];
++ sprintf(buf, "%s: can't allocate memory. (%s)", scm, fn);
++ FatalError(buf);
++}
++
++static void pic2_error(pi, mn)
++struct pic2_info *pi;
++int mn;
++{
++ SetISTR(ISTR_WARNING, "%s", pic2_msgs[mn]);
++ longjmp(pi->jmp, 1);
++}
++
++static void pic2_file_error(pi, mn)
++ struct pic2_info *pi;
++ int mn;
++{
++ if (feof(pi->fp))
++ SetISTR(ISTR_WARNING, "%s (end of file)", pic2_msgs[mn]);
++ else
++ SetISTR(ISTR_WARNING, "%s (%s)", pic2_msgs[mn], ERRSTR(errno));
++ longjmp(pi->jmp, 1);
++}
++
++static void pic2_show_pic2_info(pi)
++ struct pic2_info *pi;
++{
++ fprintf(stderr, "file size: %ld.\n", pi->fsize);
++ fprintf(stderr, "full image size: %dx%d\n", pi->x_max, pi->y_max);
++ fprintf(stderr, "number of palettes: %d\n", pi->n_pal);
++ fprintf(stderr, "depth of palettes: %d\n", pi->pal_bits);
++ fprintf(stderr, "current block position: %ld\n", pi->block_pos);
++ fprintf(stderr, "next block position: %ld\n\n", pi->next_pos);
++
++ fprintf(stderr, "header flag: %x\n", pi->header->flag);
++ fprintf(stderr, "header size: %ld\n", pi->header->size);
++ fprintf(stderr, "x_aspect: %d, y_aspect: %d\n",
++ pi->header->x_aspect, pi->header->y_aspect);
++ fprintf(stderr, "number of color bits: %d\n\n", pi->header->depth);
++
++ fprintf(stderr, "image block id: %s\n", pi->block->id);
++ fprintf(stderr, "image block size: %ld\n", pi->block->size);
++ fprintf(stderr, "block flag: %x\n", pi->block->flag);
++
++ fprintf(stderr, "block image size: %dx%d\n",
++ pi->block->x_wid, pi->block->y_wid);
++ fprintf(stderr, "x_offset: %d\n", pi->block->x_offset);
++ fprintf(stderr, "y_offset: %d\n", pi->block->y_offset);
++ fprintf(stderr, "opaque color: %lx\n\n", pi->block->opaque);
++}
++
++/*
++ * This function is similar to strncpy.
++ * But this pads with whitespace after the null character.
++ */
++static char *pic2_strncpy(dest, src, n)
++char *dest, *src;
++size_t n;
++{
++ char *r;
++
++ r = dest;
++ while (n--)
++ if ((src != NULL) && (*src != '\r') && (*src != '\n') && *src)
++ *dest++ = *src++;
++ else
++ *dest++ = ' ';
++ return (r);
++}
++
++/*
++ * These functions create a memory block.
++ */
++static void *pic2_malloc(size, fn)
++size_t size;
++char *fn;
++{
++ void *p;
++
++ p = (void *) malloc(size);
++ if (p == NULL)
++ pic2_memory_error("malloc", fn);
++ return (p);
++}
++
++static void *pic2_new(size, fn)
++size_t size;
++char *fn;
++{
++ void *p;
++
++ p = (void *) pic2_malloc(size, fn);
++ xvbzero((char *) p, size);
++ return (p);
++}
++
++
++
++
++/**** Stuff for PIC2Dialog box ****/
++
++#define TWIDE 320
++#define THIGH 178
++#define T_NBUTTS 2
++#define T_BOK 0
++#define T_BCANC 1
++#define BUTTH 24
++
++static void drawTD PARM((int,int,int,int));
++static void clickTD PARM((int,int));
++static void doCmd PARM((int));
++static void writePIC2 PARM((void));
++
++/* local variables */
++static FILE *fp;
++static char *filename;
++static int colorType;
++static int append;
++static int x_offset;
++static int y_offset;
++static BUTT tbut[T_NBUTTS];
++static RBUTT *typeRB;
++static RBUTT *depthRB;
++
++
++
++/***************************************************/
++void CreatePIC2W()
++{
++ int y;
++
++ pic2W = CreateWindow("xv pic2", "XVpic2", NULL,
++ TWIDE, THIGH, infofg, infobg, 0);
++ if (!pic2W)
++ FatalError("can't create pic2 window!");
++
++ XSelectInput(theDisp, pic2W,
++ ExposureMask | ButtonPressMask | KeyPressMask);
++
++ BTCreate(&tbut[T_BOK], pic2W, TWIDE-140-1, THIGH-10-BUTTH-1, 60, BUTTH,
++ "Ok", infofg, infobg, hicol, locol);
++
++ BTCreate(&tbut[T_BCANC], pic2W, TWIDE-70-1, THIGH-10-BUTTH-1, 60, BUTTH,
++ "Cancel", infofg, infobg, hicol, locol);
++
++ y = 55;
++ typeRB = RBCreate(NULL, pic2W, 36, y, "P2SS",
++ infofg, infobg,hicol,locol);
++ RBCreate(typeRB, pic2W, 36, y+18, "P2SF",
++ infofg, infobg,hicol,locol);
++ RBCreate(typeRB, pic2W, 36, y+36, "P2BM",
++ infofg, infobg, hicol, locol);
++ RBCreate(typeRB, pic2W, 36, y+54, "P2BI",
++ infofg, infobg, hicol, locol);
++
++ depthRB = RBCreate(NULL, pic2W, TWIDE/2-16, y, " 3bit",
++ infofg, infobg,hicol,locol);
++ RBCreate(depthRB, pic2W, TWIDE/2-16, y+18, " 6bit",
++ infofg, infobg,hicol,locol);
++ RBCreate(depthRB, pic2W, TWIDE/2-16, y+36, " 9bit",
++ infofg, infobg, hicol, locol);
++ RBCreate(depthRB, pic2W, TWIDE/2-16, y+54, "12bit",
++ infofg, infobg, hicol, locol);
++ RBCreate(depthRB, pic2W, TWIDE/4*3-16, y, "15bit",
++ infofg, infobg, hicol, locol);
++ RBCreate(depthRB, pic2W, TWIDE/4*3-16, y+18, "18bit",
++ infofg, infobg, hicol, locol);
++ RBCreate(depthRB, pic2W, TWIDE/4*3-16, y+36, "21bit",
++ infofg, infobg, hicol, locol);
++ RBCreate(depthRB, pic2W, TWIDE/4*3-16, y+54, "24bit",
++ infofg, infobg, hicol, locol);
++
++ XMapSubwindows(theDisp, pic2W);
++}
++
++
++/***************************************************/
++void PIC2Dialog(vis)
++int vis;
++{
++ if (vis) {
++ CenterMapWindow(pic2W, tbut[T_BOK].x + tbut[T_BOK].w/2,
++ tbut[T_BOK].y + tbut[T_BOK].h/2, TWIDE, THIGH);
++ }
++ else XUnmapWindow(theDisp, pic2W);
++ pic2Up = vis;
++}
++
++
++/***************************************************/
++int PIC2CheckEvent(xev)
++XEvent *xev;
++{
++ /* check event to see if it's for one of our subwindows. If it is,
++ deal accordingly and return '1'. Otherwise, return '0'. */
++
++ int rv;
++ rv = 1;
++
++ if (!pic2Up)
++ return (0);
++
++ if (xev->type == Expose) {
++ int x,y,w,h;
++ XExposeEvent *e = (XExposeEvent *) xev;
++ x = e->x; y = e->y; w = e->width; h = e->height;
++
++ if (e->window == pic2W) drawTD(x, y, w, h);
++ else rv = 0;
++ }
++
++ else if (xev->type == ButtonPress) {
++ XButtonEvent *e = (XButtonEvent *) xev;
++ int x,y;
++ x = e->x; y = e->y;
++
++ if (e->button == Button1) {
++ if (e->window == pic2W) clickTD(x,y);
++ else rv = 0;
++ } /* button1 */
++ else rv = 0;
++ } /* button press */
++
++
++ else if (xev->type == KeyPress) {
++ XKeyEvent *e = (XKeyEvent *) xev;
++ char buf[128]; KeySym ks; XComposeStatus status;
++ int stlen;
++
++ stlen = XLookupString(e,buf,128,&ks,&status);
++ buf[stlen] = '\0';
++
++ if (e->window == pic2W) {
++ if (stlen) {
++ if (buf[0] == '\r' || buf[0] == '\n') { /* enter */
++ FakeButtonPress(&tbut[T_BOK]);
++ }
++ else if (buf[0] == '\033') { /* ESC */
++ FakeButtonPress(&tbut[T_BCANC]);
++ }
++ }
++ }
++ else rv = 0;
++ }
++ else rv = 0;
++
++ if (rv == 0 && (xev->type == ButtonPress || xev->type == KeyPress)) {
++ XBell(theDisp, 50);
++ rv = 1; /* eat it */
++ }
++
++ return (rv);
++}
++
++
++/***************************************************/
++int PIC2SaveParams(fname, col)
++char *fname;
++int col;
++{
++ filename = fname;
++ colorType = col;
++
++ /* see if we can open the output file before proceeding */
++ fp = pic2_OpenOutFile(filename, &append);
++ if (!fp)
++ return (-1);
++
++ RBSetActive(typeRB,0,1);
++ RBSetActive(typeRB,1,1);
++ RBSetActive(typeRB,2,1);
++ RBSetActive(typeRB,3,1);
++ RBSelect(typeRB,0);
++
++
++ if (append) {
++ struct pic2_info pic2;
++
++ pic2_init_info(&pic2);
++ pic2.fp = fp;
++ pic2_read_header(&pic2);
++
++ RBSetActive(depthRB,0,0);
++ RBSetActive(depthRB,1,0);
++ RBSetActive(depthRB,2,0);
++ RBSetActive(depthRB,3,0);
++ RBSetActive(depthRB,4,0);
++ RBSetActive(depthRB,5,0);
++ RBSetActive(depthRB,6,0);
++ RBSetActive(depthRB,7,0);
++
++ switch (pic2.header->depth) {
++ case 3:
++ RBSetActive(depthRB,0,1);
++ RBSelect(depthRB,0);
++ RBSetActive(typeRB,3,0);
++ break;
++ case 6:
++ RBSetActive(depthRB,1,1);
++ RBSelect(depthRB,1);
++ RBSetActive(typeRB,3,0);
++ break;
++ case 9:
++ RBSetActive(depthRB,2,1);
++ RBSelect(depthRB,2);
++ break;
++ case 12:
++ RBSetActive(depthRB,3,1);
++ RBSelect(depthRB,3);
++ break;
++ case 15:
++ RBSetActive(depthRB,4,1);
++ RBSelect(depthRB,4);
++ break;
++ case 18:
++ RBSetActive(depthRB,5,1);
++ RBSelect(depthRB,5);
++ RBSetActive(typeRB,3,0);
++ break;
++ case 21:
++ RBSetActive(depthRB,6,1);
++ RBSelect(depthRB,6);
++ RBSetActive(typeRB,3,0);
++ break;
++ case 24:
++ RBSetActive(depthRB,7,1);
++ RBSelect(depthRB,7);
++ RBSetActive(typeRB,3,0);
++ break;
++ default: {
++ char str[512];
++ sprintf(str, "unsupported PIC2 file '%s'.", filename);
++ ErrPopUp(str, "\nBummer");
++ CloseOutFile(fp, filename, 0);
++ fp = OpenOutFile(fname);
++ if (!fp)
++ return (-1);
++ break;
++ }
++ }
++ pic2_seek_file(&pic2, 0, SEEK_SET);
++ pic2_cleanup_pic2_info(&pic2, 1);
++ } else {
++ RBSetActive(depthRB,0,1);
++ RBSetActive(depthRB,1,1);
++ RBSetActive(depthRB,2,1);
++ RBSetActive(depthRB,3,1);
++ RBSetActive(depthRB,4,1);
++ RBSetActive(depthRB,5,1);
++ RBSetActive(depthRB,6,1);
++ RBSetActive(depthRB,7,1);
++ RBSelect(depthRB,7);
++ RBSetActive(typeRB,3,0);
++ }
++ return (0);
++}
++
++
++/***************************************************/
++static void drawTD(x,y,w,h)
++int x,y,w,h;
++{
++ char *title = "Save PIC2 file...";
++ int i;
++ XRectangle xr;
++
++ xr.x = x; xr.y = y; xr.width = w; xr.height = h;
++ XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
++
++ XSetForeground(theDisp, theGC, infofg);
++ XSetBackground(theDisp, theGC, infobg);
++
++ for (i = 0; i < T_NBUTTS; i++)
++ BTRedraw(&tbut[i]);
++
++ ULineString(pic2W, typeRB->x-16, typeRB->y-3-DESCENT, "FormatType");
++ ULineString(pic2W, depthRB->x-16, depthRB->y-3-DESCENT, "ColorDepth");
++ RBRedraw(typeRB, -1);
++ RBRedraw(depthRB, -1);
++
++ DrawString(pic2W, 20, 29, title);
++
++ XSetClipMask(theDisp, theGC, None);
++}
++
++static void clickTD(x,y)
++int x,y;
++{
++ int i;
++ BUTT *bp;
++
++ /* check BUTTs */
++
++ /* check the RBUTTS first, since they don't DO anything */
++ if ((i = RBClick(typeRB, x,y)) >= 0) {
++ (void) RBTrack(typeRB, i);
++ return;
++ } else if ((i = RBClick(depthRB, x,y)) >= 0) {
++ (void) RBTrack(depthRB, i);
++ if ((2 <= i) && (i <= 4))
++ RBSetActive(typeRB,3,1);
++ else {
++ RBSetActive(typeRB,3,0);
++ if (RBWhich(typeRB) == 3)
++ RBSelect(typeRB,0);
++ return;
++ }
++ }
++ for (i = 0; i < T_NBUTTS; i++) {
++ bp = &tbut[i];
++ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h))
++ break;
++ }
++ if (i < T_NBUTTS) /* found one */
++ if (BTTrack(bp))
++ doCmd(i);
++}
++
++
++
++/***************************************************/
++static void doCmd(cmd)
++int cmd;
++{
++ switch (cmd) {
++ case T_BOK: {
++ char *fullname;
++ char buf[64], *x_offsetp, *y_offsetp;
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ XEvent event;
++ int i;
++
++ strcpy(buf, "0,0");
++ i = GetStrPopUp("Enter offset (x,y):", labels, 2, buf, 64,
++ "01234567890,", 1);
++
++ if (i)
++ return;
++ if (strlen(buf)==0)
++ return;
++
++ x_offsetp = buf;
++ y_offsetp = index(buf, ',');
++ if (!y_offsetp)
++ return;
++ *(y_offsetp++) = '\0';
++ if ((*x_offsetp == '\0') || (*y_offsetp == '\0'))
++ return;
++ x_offset = atoi(x_offsetp);
++ y_offset = atoi(y_offsetp);
++
++ XNextEvent(theDisp, &event);
++ HandleEvent(&event, &i);
++
++ writePIC2();
++ PIC2Dialog(0);
++
++ fullname = GetDirFullName();
++ if (!ISPIPE(fullname[0])) {
++ XVCreatedFile(fullname);
++ StickInCtrlList(0);
++ }
++ }
++ break;
++ case T_BCANC:
++ pic2_KillNullFile(fp);
++ PIC2Dialog(0);
++ break;
++ default:
++ break;
++ }
++}
++
++
++/*******************************************/
++static void writePIC2()
++{
++ int w, h, nc, rv, type, depth, ptype, pfree;
++ byte *inpix, *rmap, *gmap, *bmap;
++
++
++ WaitCursor();
++ inpix = GenSavePic(&ptype, &w, &h, &pfree, &nc, &rmap, &gmap, &bmap);
++
++ if (colorType == F_REDUCED)
++ colorType = F_FULLCOLOR;
++
++ switch (RBWhich(typeRB)) {
++ case 0: type = P2SS; break;
++ case 1: type = P2SF; break;
++ case 2: type = P2BM; break;
++ case 3: type = P2BI; break;
++ default: type = P2SS; break;
++ }
++ switch (RBWhich(depthRB)) {
++ case 0: depth = 3; break;
++ case 1: depth = 6; break;
++ case 2: depth = 9; break;
++ case 3: depth = 12; break;
++ case 4: depth = 15; break;
++ case 5: depth = 18; break;
++ case 6: depth = 21; break;
++ case 7: depth = 24; break;
++ default: depth = 24; break;
++ }
++ rv = WritePIC2(fp, inpix, ptype, w, h,
++ rmap, gmap, bmap, nc, colorType, filename,
++ type, depth, x_offset, y_offset, append, picComments);
++
++ if (CloseOutFile(fp, filename, rv) == 0)
++ DirBox(0);
++
++ if (pfree)
++ free(inpix);
++}
++#endif /* HAVE_PIC2 */
+diff -u -r --new-file xv-3.10a.orig/xvpng.c xv-3.10a/xvpng.c
+--- xv-3.10a.orig/xvpng.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvpng.c 2007-05-13 19:53:28.000000000 -0500
+@@ -0,0 +1,1173 @@
++/*
++ * xvpng.c - load and write routines for 'PNG' format pictures
++ *
++ * callable functions
++ *
++ * CreatePNGW()
++ * PNGDialog(vis)
++ * PNGCheckEvent(xev)
++ * PNGSaveParams(fname, col)
++ * LoadPNG(fname, pinfo)
++ * VersionInfoPNG()
++ */
++
++/*#include "copyright.h"*/
++
++/* (c) 1995 by Alexander Lehmann <lehmann@mathematik.th-darmstadt.de>
++ * This file is a suplement to xv and is supplied under the same copying
++ * conditions (except the shareware part).
++ * The copyright will be passed on to JB at some future point if he
++ * so desires.
++ *
++ * Modified by Andreas Dilger <adilger@enel.ucalgary.ca> to fix
++ * error handling for bad PNGs, add dialogs for interlacing and
++ * compression selection, and upgrade to libpng-0.89.
++ *
++ * Modified by Greg Roelofs, TenThumbs and others to fix bugs and add
++ * features. See README.jumbo for details.
++ */
++
++#include "xv.h"
++
++#ifdef HAVE_PNG
++
++#include "png.h"
++
++/*** Stuff for PNG Dialog box ***/
++#define PWIDE 318
++#define PHIGH 215
++
++#define DISPLAY_GAMMA 2.20 /* default display gamma */
++#define COMPRESSION 6 /* default zlib compression level, not max
++ (Z_BEST_COMPRESSION) */
++
++#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS)
++
++#define DWIDE 86
++#define DHIGH 104
++#define PFX (PWIDE-93)
++#define PFY 44
++#define PFH 20
++
++#define P_BOK 0
++#define P_BCANC 1
++#define P_NBUTTS 2
++
++#define BUTTH 24
++
++#define LF 10 /* a.k.a. '\n' on ASCII machines */
++#define CR 13 /* a.k.a. '\r' on ASCII machines */
++
++/*** local functions ***/
++static void drawPD PARM((int, int, int, int));
++static void clickPD PARM((int, int));
++static void doCmd PARM((int));
++static void writePNG PARM((void));
++static int WritePNG PARM((FILE *, byte *, int, int, int,
++ byte *, byte *, byte *, int));
++
++static void png_xv_error PARM((png_structp png_ptr,
++ png_const_charp message));
++static void png_xv_warning PARM((png_structp png_ptr,
++ png_const_charp message));
++
++/*** local variables ***/
++static char *filename;
++static const char *fbasename;
++static int colorType;
++static int read_anything;
++static double Display_Gamma = DISPLAY_GAMMA;
++
++static DIAL cDial, gDial;
++static BUTT pbut[P_NBUTTS];
++static CBUTT interCB;
++static CBUTT FdefCB, FnoneCB, FsubCB, FupCB, FavgCB, FPaethCB;
++
++
++#ifdef PNG_NO_STDIO
++/* NOTE: Some sites configure their version of the PNG Library without
++ * Standard I/O Library interfaces in order to avoid unnecessary inter-
++ * library dependencies at link time for applications that don't need Standard
++ * I/O. If your site is one of these, the following skeletal stubs, copied
++ * from libpng code, should be enough for this module. --Scott B. Marovich,
++ * Hewlett-Packard Laboratories, March 2001.
++ */
++static void
++png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
++{
++
++ /* fread() returns 0 on error, so it is OK to store this in a png_size_t
++ * instead of an int, which is what fread() actually returns.
++ */
++ if (fread(data,1,length,(FILE *)png_ptr->io_ptr) != length)
++ png_error(png_ptr, "Read Error");
++}
++
++static void
++png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
++{
++ if (fwrite(data, 1, length, (FILE *)png_ptr->io_ptr) != length)
++ png_error(png_ptr, "Write Error");
++}
++#endif /* PNG_NO_STDIO */
++
++
++/**************************************************************************/
++/* PNG SAVE DIALOG ROUTINES ***********************************************/
++/**************************************************************************/
++
++
++/*******************************************/
++void CreatePNGW()
++{
++ pngW = CreateWindow("xv png", "XVPNG", NULL,
++ PWIDE, PHIGH, infofg, infobg, 0);
++ if (!pngW) FatalError("can't create PNG window!");
++
++ XSelectInput(theDisp, pngW, ExposureMask | ButtonPressMask | KeyPressMask);
++
++ DCreate(&cDial, pngW, 12, 25, DWIDE, DHIGH, (double)Z_NO_COMPRESSION,
++ (double)Z_BEST_COMPRESSION, COMPRESSION, 1.0, 3.0,
++ infofg, infobg, hicol, locol, "Compression", NULL);
++
++ DCreate(&gDial, pngW, DWIDE+27, 25, DWIDE, DHIGH, 1.0, 3.5,DISPLAY_GAMMA,0.01,0.2,
++ infofg, infobg, hicol, locol, "Disp. Gamma", NULL);
++
++ CBCreate(&interCB, pngW, DWIDE+30, DHIGH+3*LINEHIGH+2, "interlace",
++ infofg, infobg, hicol, locol);
++
++ CBCreate(&FdefCB, pngW, PFX, PFY, "Default",
++ infofg, infobg, hicol, locol);
++ FdefCB.val = 1;
++
++ CBCreate(&FnoneCB, pngW, PFX, FdefCB.y + PFH + 4, "none",
++ infofg, infobg, hicol, locol);
++ CBCreate(&FsubCB, pngW, PFX, FnoneCB.y + PFH, "sub",
++ infofg, infobg, hicol, locol);
++ CBCreate(&FupCB, pngW, PFX, FsubCB.y + PFH, "up",
++ infofg, infobg, hicol, locol);
++ CBCreate(&FavgCB, pngW, PFX, FupCB.y + PFH, "average",
++ infofg, infobg, hicol, locol);
++ CBCreate(&FPaethCB, pngW, PFX, FavgCB.y + PFH, "Paeth",
++ infofg, infobg, hicol, locol);
++
++ FnoneCB.val = FsubCB.val = FupCB.val = FavgCB.val = FPaethCB.val = 1;
++ CBSetActive(&FnoneCB, !FdefCB.val);
++ CBSetActive(&FsubCB, !FdefCB.val);
++ CBSetActive(&FupCB, !FdefCB.val);
++ CBSetActive(&FavgCB, !FdefCB.val);
++ CBSetActive(&FPaethCB, !FdefCB.val);
++
++ BTCreate(&pbut[P_BOK], pngW, PWIDE-180-1, PHIGH-10-BUTTH-1, 80, BUTTH,
++ "Ok", infofg, infobg, hicol, locol);
++ BTCreate(&pbut[P_BCANC], pngW, PWIDE-90-1, PHIGH-10-BUTTH-1, 80, BUTTH,
++ "Cancel", infofg, infobg, hicol, locol);
++
++ XMapSubwindows(theDisp, pngW);
++}
++
++
++/*******************************************/
++void PNGDialog(vis)
++ int vis;
++{
++ if (vis) {
++ CenterMapWindow(pngW, pbut[P_BOK].x + (int) pbut[P_BOK].w/2,
++ pbut[P_BOK].y + (int) pbut[P_BOK].h/2,
++ PWIDE, PHIGH);
++ }
++ else XUnmapWindow(theDisp, pngW);
++ pngUp = vis;
++}
++
++
++/*******************************************/
++int PNGCheckEvent(xev)
++ XEvent *xev;
++{
++ /* check event to see if it's for one of our subwindows. If it is,
++ deal accordingly, and return '1'. Otherwise, return '0' */
++
++ int rv;
++ rv = 1;
++
++ if (!pngUp) return 0;
++
++ if (xev->type == Expose) {
++ int x,y,w,h;
++ XExposeEvent *e = (XExposeEvent *) xev;
++ x = e->x; y = e->y; w = e->width; h = e->height;
++
++ /* throw away excess expose events for 'dumb' windows */
++ if (e->count > 0 && (e->window == cDial.win)) {}
++
++ else if (e->window == pngW) drawPD(x, y, w, h);
++ else if (e->window == cDial.win) DRedraw(&cDial);
++ else if (e->window == gDial.win) DRedraw(&gDial);
++ else rv = 0;
++ }
++
++ else if (xev->type == ButtonPress) {
++ XButtonEvent *e = (XButtonEvent *) xev;
++ int x,y;
++ x = e->x; y = e->y;
++
++ if (e->button == Button1) {
++ if (e->window == pngW) clickPD(x,y);
++ else if (e->window == cDial.win) DTrack(&cDial,x,y);
++ else if (e->window == gDial.win) DTrack(&gDial,x,y);
++ else rv = 0;
++ } /* button1 */
++ else rv = 0;
++ } /* button press */
++
++ else if (xev->type == KeyPress) {
++ XKeyEvent *e = (XKeyEvent *) xev;
++ char buf[128]; KeySym ks;
++ int stlen;
++
++ stlen = XLookupString(e,buf,128,&ks,(XComposeStatus *) NULL);
++ buf[stlen] = '\0';
++
++ RemapKeyCheck(ks, buf, &stlen);
++
++ if (e->window == pngW) {
++ if (stlen) {
++ if (buf[0] == '\r' || buf[0] == '\n') { /* enter */
++ FakeButtonPress(&pbut[P_BOK]);
++ }
++ else if (buf[0] == '\033') { /* ESC */
++ FakeButtonPress(&pbut[P_BCANC]);
++ }
++ }
++ }
++ else rv = 0;
++ }
++ else rv = 0;
++
++ if (rv==0 && (xev->type == ButtonPress || xev->type == KeyPress)) {
++ XBell(theDisp, 50);
++ rv = 1; /* eat it */
++ }
++
++ return rv;
++}
++
++
++/*******************************************/
++void PNGSaveParams(fname, col)
++ char *fname;
++ int col;
++{
++ filename = fname;
++ colorType = col;
++}
++
++
++/*******************************************/
++static void drawPD(x, y, w, h)
++ int x, y, w, h;
++{
++ const char *title = "Save PNG file...";
++
++ char ctitle1[20];
++ const char *ctitle2 = "Useful range";
++ const char *ctitle3 = "is 2 - 7.";
++ const char *ctitle4 = "Uncompressed = 0";
++
++ const char *ftitle = "Row Filters:";
++
++ char gtitle[20];
++
++ int i;
++ XRectangle xr;
++
++ xr.x = x; xr.y = y; xr.width = w; xr.height = h;
++ XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
++
++ XSetForeground(theDisp, theGC, infofg);
++ XSetBackground(theDisp, theGC, infobg);
++
++ for (i=0; i<P_NBUTTS; i++) BTRedraw(&pbut[i]);
++
++ DrawString(pngW, 15, 6+ASCENT, title);
++
++ sprintf(ctitle1, "Default = %d", COMPRESSION);
++ DrawString(pngW, 18, 6+DHIGH+cDial.y+ASCENT, ctitle1);
++ DrawString(pngW, 17, 6+DHIGH+cDial.y+ASCENT+LINEHIGH, ctitle2);
++ DrawString(pngW, 17, 6+DHIGH+cDial.y+ASCENT+2*LINEHIGH, ctitle3);
++ DrawString(pngW, 17, 6+DHIGH+cDial.y+ASCENT+3*LINEHIGH, ctitle4);
++
++ sprintf(gtitle, "Default = %g", DISPLAY_GAMMA);
++ DrawString(pngW, DWIDE+30, 6+DHIGH+gDial.y+ASCENT, gtitle);
++
++ ULineString(pngW, FdefCB.x, FdefCB.y-3-DESCENT, ftitle);
++ XDrawRectangle(theDisp, pngW, theGC, FdefCB.x-11, FdefCB.y-LINEHIGH-3,
++ 93, 8*LINEHIGH+15);
++ CBRedraw(&FdefCB);
++ XDrawLine(theDisp, pngW, theGC, FdefCB.x-11, FdefCB.y+LINEHIGH+4,
++ FdefCB.x+82, FdefCB.y+LINEHIGH+4);
++
++ CBRedraw(&FnoneCB);
++ CBRedraw(&FupCB);
++ CBRedraw(&FsubCB);
++ CBRedraw(&FavgCB);
++ CBRedraw(&FPaethCB);
++
++ CBRedraw(&interCB);
++
++ XSetClipMask(theDisp, theGC, None);
++}
++
++
++/*******************************************/
++static void clickPD(x,y)
++ int x,y;
++{
++ int i;
++ BUTT *bp;
++
++ /* check BUTTs */
++
++ for (i=0; i<P_NBUTTS; i++) {
++ bp = &pbut[i];
++ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) break;
++ }
++
++ if (i<P_NBUTTS) { /* found one */
++ if (BTTrack(bp)) doCmd(i);
++ }
++
++ /* check CBUTTs */
++
++ else if (CBClick(&FdefCB,x,y)) {
++ int oldval = FdefCB.val;
++
++ CBTrack(&FdefCB);
++
++ if (oldval != FdefCB.val)
++ {
++ CBSetActive(&FnoneCB, !FdefCB.val);
++ CBSetActive(&FsubCB, !FdefCB.val);
++ CBSetActive(&FupCB, !FdefCB.val);
++ CBSetActive(&FavgCB, !FdefCB.val);
++ CBSetActive(&FPaethCB, !FdefCB.val);
++
++ CBRedraw(&FnoneCB);
++ CBRedraw(&FupCB);
++ CBRedraw(&FsubCB);
++ CBRedraw(&FavgCB);
++ CBRedraw(&FPaethCB);
++ }
++ }
++ else if (CBClick(&FnoneCB,x,y)) CBTrack(&FnoneCB);
++ else if (CBClick(&FsubCB,x,y)) CBTrack(&FsubCB);
++ else if (CBClick(&FupCB,x,y)) CBTrack(&FupCB);
++ else if (CBClick(&FavgCB,x,y)) CBTrack(&FavgCB);
++ else if (CBClick(&FPaethCB,x,y)) CBTrack(&FPaethCB);
++ else if (CBClick(&interCB,x,y)) CBTrack(&interCB);
++}
++
++
++/*******************************************/
++static void doCmd(cmd)
++ int cmd;
++{
++ switch (cmd) {
++ case P_BOK:
++ {
++ char *fullname;
++
++ writePNG();
++ PNGDialog(0);
++
++ fullname = GetDirFullName();
++ if (!ISPIPE(fullname[0])) {
++ XVCreatedFile(fullname);
++ StickInCtrlList(0);
++ }
++ }
++ break;
++
++ case P_BCANC:
++ PNGDialog(0);
++ break;
++
++ default:
++ break;
++ }
++}
++
++
++/*******************************************/
++static void writePNG()
++{
++ FILE *fp;
++ int w, h, nc, rv, ptype, pfree;
++ byte *inpix, *rmap, *gmap, *bmap;
++
++ fp = OpenOutFile(filename);
++ if (!fp) return;
++
++ fbasename = BaseName(filename);
++
++ WaitCursor();
++ inpix = GenSavePic(&ptype, &w, &h, &pfree, &nc, &rmap, &gmap, &bmap);
++
++ rv = WritePNG(fp, inpix, ptype, w, h, rmap, gmap, bmap, nc);
++
++ SetCursors(-1);
++
++ if (CloseOutFile(fp, filename, rv) == 0) DirBox(0);
++
++ if (pfree) free(inpix);
++}
++
++
++/*******************************************/
++int WritePNG(fp, pic, ptype, w, h, rmap, gmap, bmap, numcols)
++ FILE *fp;
++ byte *pic;
++ int ptype, w, h;
++ byte *rmap, *gmap, *bmap;
++ int numcols;
++ /* FIXME? what's diff between picComments and WriteGIF's comment arg? */
++{
++ png_struct *png_ptr;
++ png_info *info_ptr;
++ png_color palette[256];
++ png_textp text;
++ byte r1[256], g1[256], b1[256]; /* storage for deduped palette */
++ byte pc2nc[256]; /* for duplicated-color remapping (1st level) */
++ byte remap[256]; /* for bw/grayscale remapping (2nd level) */
++ int i, j, numuniqcols=0, filter, linesize, pass;
++ byte *p, *png_line;
++ char software[256];
++ char *savecmnt;
++
++ if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL,
++ png_xv_error, png_xv_warning)) == NULL) {
++ sprintf(software, "png_create_write_struct() failure in WritePNG");
++ FatalError(software);
++ }
++
++ if ((info_ptr = png_create_info_struct(png_ptr)) == NULL)
++ {
++ png_destroy_write_struct(&png_ptr, &info_ptr);
++ sprintf(software, "png_create_info_struct() failure in WritePNG");
++ FatalError(software);
++ }
++
++ if (setjmp(png_ptr->jmpbuf)) {
++ png_destroy_write_struct(&png_ptr, &info_ptr);
++ return -1;
++ }
++
++#ifdef PNG_NO_STDIO
++ png_set_write_fn(png_ptr, fp, png_default_write_data, NULL);
++ png_set_error_fn(png_ptr, NULL, png_xv_error, png_xv_warning);
++#else
++ png_init_io(png_ptr, fp);
++#endif
++
++ png_set_compression_level(png_ptr, (int)cDial.val);
++
++ /* Don't bother filtering if we aren't compressing the image */
++ if (FdefCB.val)
++ {
++ if ((int)cDial.val == 0)
++ png_set_filter(png_ptr, 0, PNG_FILTER_NONE);
++ }
++ else
++ {
++ filter = FnoneCB.val ? PNG_FILTER_NONE : 0;
++ filter |= FsubCB.val ? PNG_FILTER_SUB : 0;
++ filter |= FupCB.val ? PNG_FILTER_UP : 0;
++ filter |= FavgCB.val ? PNG_FILTER_AVG : 0;
++ filter |= FPaethCB.val ? PNG_FILTER_PAETH : 0;
++
++ png_set_filter(png_ptr, 0, filter);
++ }
++
++ info_ptr->width = w;
++ info_ptr->height = h;
++ if (w <= 0 || h <= 0) {
++ SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)",
++ fbasename, w, h);
++ png_destroy_write_struct(&png_ptr, &info_ptr);
++ return -1;
++ }
++
++ info_ptr->interlace_type = interCB.val ? 1 : 0;
++
++ linesize = 0; /* quiet a compiler warning */
++
++
++ /* GRR 20070331: remap palette to eliminate duplicated colors (as in
++ * xvgifwr.c) */
++ if (ptype == PIC8) {
++ for (i=0; i<256; ++i) {
++ pc2nc[i] = r1[i] = g1[i] = b1[i] = 0;
++ }
++
++ /* compute number of unique colors */
++ numuniqcols = 0;
++
++ for (i=0; i<numcols; ++i) {
++ /* see if color #i is already used */
++ for (j=0; j<i; ++j) {
++ if (rmap[i] == rmap[j] && gmap[i] == gmap[j] && bmap[i] == bmap[j])
++ break;
++ }
++
++ if (j==i) { /* wasn't found */
++ pc2nc[i] = numuniqcols;
++ r1[numuniqcols] = rmap[i]; /* i.e., r1[pc2nc[i]] == rmap[i] */
++ g1[numuniqcols] = gmap[i];
++ b1[numuniqcols] = bmap[i];
++ ++numuniqcols;
++ }
++ else pc2nc[i] = pc2nc[j];
++ }
++ }
++
++
++ /* Appendix G.2 of user manual claims colorType will never be F_REDUCED... */
++ if (colorType == F_FULLCOLOR || colorType == F_REDUCED) {
++ if (ptype == PIC24) {
++ linesize = 3*w;
++ if (linesize/3 < w) {
++ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
++ fbasename, w, h);
++ png_destroy_write_struct(&png_ptr, &info_ptr);
++ return -1;
++ }
++ info_ptr->color_type = PNG_COLOR_TYPE_RGB;
++ info_ptr->bit_depth = 8;
++ } else /* ptype == PIC8 */ {
++ linesize = w;
++ info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
++ if (numuniqcols <= 2)
++ info_ptr->bit_depth = 1;
++ else
++ if (numuniqcols <= 4)
++ info_ptr->bit_depth = 2;
++ else
++ if (numuniqcols <= 16)
++ info_ptr->bit_depth = 4;
++ else
++ info_ptr->bit_depth = 8;
++
++ for (i = 0; i < numuniqcols; i++) {
++ palette[i].red = r1[i];
++ palette[i].green = g1[i];
++ palette[i].blue = b1[i];
++ }
++ info_ptr->num_palette = numuniqcols;
++ info_ptr->palette = palette;
++ info_ptr->valid |= PNG_INFO_PLTE;
++ }
++ }
++
++ else if (colorType == F_GREYSCALE || colorType == F_BWDITHER) {
++ info_ptr->color_type = PNG_COLOR_TYPE_GRAY;
++ if (colorType == F_BWDITHER) {
++ /* shouldn't happen */
++ if (ptype == PIC24) FatalError("PIC24 and B/W Stipple in WritePNG()");
++
++ info_ptr->bit_depth = 1;
++ if (MONO(r1[0], g1[0], b1[0]) > MONO(r1[1], g1[1], b1[1])) {
++ remap[0] = 1;
++ remap[1] = 0;
++ }
++ else {
++ remap[0] = 0;
++ remap[1] = 1;
++ }
++ linesize = w;
++ }
++ else /* F_GREYSCALE */ {
++ if (ptype == PIC24) {
++ linesize = 3*w;
++ if (linesize/3 < w) {
++ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
++ fbasename, w, h);
++ png_destroy_write_struct(&png_ptr, &info_ptr);
++ return -1;
++ }
++ info_ptr->bit_depth = 8;
++ }
++ else /* ptype == PIC8 */ {
++ int low_precision;
++
++ linesize = w;
++
++ /* NOTE: currently remap[] is the _secondary_ remapping of "palette"
++ * colors; its values are the final color/grayscale values, and,
++ * like r1/g1/b1[], it is _indexed_ by pc2nc[] (which is why its
++ * values come from r1/g1/b1[] and not from rmap/gmap/bmap[]).
++ *
++ * FIXME (probably): MONO() will create new duplicates; ideally should
++ * do extra round of dup-detection (and preferably collapse all
++ * remapping levels into single LUT). This stuff is a tad confusing.
++ */
++ for (i = 0; i < numuniqcols; i++)
++ remap[i] = MONO(r1[i], g1[i], b1[i]);
++
++ for (; i < 256; i++)
++ remap[i]=0; /* shouldn't be necessary, but... */
++
++ info_ptr->bit_depth = 8;
++
++ /* Note that this fails most of the time because of gamma */
++ /* (and that would be a bug: GRR FIXME) */
++ /* try to adjust to 4-bit precision grayscale */
++
++ low_precision=1;
++
++ for (i = 0; i < numuniqcols; i++) {
++ if ((remap[i] & 0x0f) * 0x11 != remap[i]) {
++ low_precision = 0;
++ break;
++ }
++ }
++
++ if (low_precision) {
++ for (i = 0; i < numuniqcols; i++) {
++ remap[i] &= 0xf;
++ }
++ info_ptr->bit_depth = 4;
++
++ /* try to adjust to 2-bit precision grayscale */
++
++ for (i = 0; i < numuniqcols; i++) {
++ if ((remap[i] & 0x03) * 0x05 != remap[i]) {
++ low_precision = 0;
++ break;
++ }
++ }
++ }
++
++ if (low_precision) {
++ for (i = 0; i < numuniqcols; i++) {
++ remap[i] &= 3;
++ }
++ info_ptr->bit_depth = 2;
++
++ /* try to adjust to 1-bit precision grayscale */
++
++ for (i = 0; i < numuniqcols; i++) {
++ if ((remap[i] & 0x01) * 0x03 != remap[i]) {
++ low_precision = 0;
++ break;
++ }
++ }
++ }
++
++ if (low_precision) {
++ for (i = 0; i < numuniqcols; i++) {
++ remap[i] &= 1;
++ }
++ info_ptr->bit_depth = 1;
++ }
++ }
++ }
++ }
++
++ else
++ png_error(png_ptr, "Unknown colorstyle in WritePNG");
++
++ if ((text = (png_textp)malloc(sizeof(png_text)))) {
++ sprintf(software, "XV %s", REVDATE);
++
++ text->compression = -1;
++ text->key = "Software";
++ text->text = software;
++ text->text_length = strlen(text->text);
++
++ info_ptr->max_text = 1;
++ info_ptr->num_text = 1;
++ info_ptr->text = text;
++ }
++
++ Display_Gamma = gDial.val; /* Save the current gamma for loading */
++
++// GRR FIXME: add .Xdefaults option to omit writing gamma (size, cumulative errors when editing)--alternatively, modify save box to include "omit" checkbox
++ info_ptr->gamma = 1.0/gDial.val;
++ info_ptr->valid |= PNG_INFO_gAMA;
++
++ png_write_info(png_ptr, info_ptr);
++
++ if (info_ptr->bit_depth < 8)
++ png_set_packing(png_ptr);
++
++ pass=png_set_interlace_handling(png_ptr);
++
++ if ((png_line = malloc(linesize)) == NULL)
++ png_error(png_ptr, "cannot allocate temp image line");
++ /* FIXME: should be FatalError() */
++
++ for (i = 0; i < pass; ++i) {
++ int j;
++ p = pic;
++ for (j = 0; j < h; ++j) {
++ if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY) {
++ int k;
++ for (k = 0; k < w; ++k)
++ png_line[k] = ptype==PIC24 ? MONO(p[k*3], p[k*3+1], p[k*3+2]) :
++ remap[pc2nc[p[k]]];
++ png_write_row(png_ptr, png_line);
++ } else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) {
++ int k;
++ for (k = 0; k < w; ++k)
++ png_line[k] = pc2nc[p[k]];
++ png_write_row(png_ptr, png_line);
++ } else { /* PNG_COLOR_TYPE_RGB */
++ png_write_row(png_ptr, p);
++ }
++ if ((j & 0x1f) == 0) WaitCursor();
++ p += linesize;
++ }
++ }
++
++ free(png_line);
++
++ savecmnt = NULL; /* quiet a compiler warning */
++
++ if (text) {
++ if (picComments && strlen(picComments) &&
++ (savecmnt = (char *)malloc((strlen(picComments) + 1)*sizeof(char)))) {
++ png_textp tp;
++ char *comment, *key;
++
++ strcpy(savecmnt, picComments);
++ key = savecmnt;
++ tp = text;
++ info_ptr->num_text = 0;
++
++ comment = strchr(key, ':');
++
++ do {
++ /* Allocate a larger structure for comments if necessary */
++ if (info_ptr->num_text >= info_ptr->max_text)
++ {
++ if ((tp =
++ realloc(text, (info_ptr->num_text + 2)*sizeof(png_text))) == NULL)
++ {
++ break;
++ }
++ else
++ {
++ text = tp;
++ tp = &text[info_ptr->num_text];
++ info_ptr->max_text += 2;
++ }
++ }
++
++ /* See if it looks like a PNG keyword from LoadPNG */
++ /* GRR: should test for strictly < 80, right? (key = 1-79 chars only) */
++ if (comment && comment[1] == ':' && comment - key <= 80) {
++ *(comment++) = '\0';
++ *(comment++) = '\0';
++
++ /* If the comment is the 'Software' chunk XV writes, we remove it,
++ since we have already stored one */
++ if (strcmp(key, "Software") == 0 && strncmp(comment, "XV", 2) == 0) {
++ key = strchr(comment, '\n');
++ if (key)
++ key++; /* skip \n */
++ comment = strchr(key, ':');
++ }
++ /* We have another keyword and/or comment to write out */
++ else {
++ tp->key = key;
++ tp->text = comment;
++
++ /* We have to find the end of this comment, and the next keyword
++ if there is one */
++ for (; NULL != (key = comment = strchr(comment, ':')); comment++)
++ if (key[1] == ':')
++ break;
++
++ /* It looks like another keyword, go backward to the beginning */
++ if (key) {
++ while (key > tp->text && *key != '\n')
++ key--;
++
++ if (key > tp->text && comment - key <= 80) {
++ *key = '\0';
++ key++;
++ }
++ }
++
++ tp->text_length = strlen(tp->text);
++
++ /* We don't have another keyword, so remove the last newline */
++ if (!key && tp->text[tp->text_length - 1] == '\n')
++ {
++ tp->text[tp->text_length] = '\0';
++ tp->text_length--;
++ }
++
++ tp->compression = tp->text_length > 640 ? 0 : -1;
++ info_ptr->num_text++;
++ tp++;
++ }
++ }
++ /* Just a generic comment: make sure line-endings are valid for PNG */
++ else {
++ char *p=key, *q=key; /* only deleting chars, not adding any */
++
++ while (*p) {
++ if (*p == CR) { /* lone CR or CR/LF: EOL either way */
++ *q++ = LF; /* LF is the only allowed PNG line-ending */
++ if (p[1] == LF) /* get rid of any original LF */
++ ++p;
++ } else if (*p == LF) /* lone LF */
++ *q++ = LF;
++ else
++ *q++ = *p;
++ ++p;
++ }
++ *q = '\0'; /* unnecessary...but what the heck */
++ tp->key = "Comment";
++ tp->text = key;
++ tp->text_length = q - key;
++ tp->compression = tp->text_length > 750 ? 0 : -1;
++ info_ptr->num_text++;
++ key = NULL;
++ }
++ } while (key && *key);
++ }
++ else {
++ info_ptr->num_text = 0;
++ }
++ }
++ info_ptr->text = text;
++
++ png_convert_from_time_t(&(info_ptr->mod_time), time(NULL));
++ info_ptr->valid |= PNG_INFO_tIME;
++
++ png_write_end(png_ptr, info_ptr);
++ fflush(fp); /* just in case we core-dump before finishing... */
++
++ if (text) {
++ free(text);
++ /* must do this or png_destroy_write_struct() 0.97+ will free text again: */
++ info_ptr->text = (png_textp)NULL;
++ if (savecmnt)
++ {
++ free(savecmnt);
++ savecmnt = (char *)NULL;
++ }
++ }
++
++ png_destroy_write_struct(&png_ptr, &info_ptr);
++
++ return 0;
++}
++
++
++/*******************************************/
++int LoadPNG(fname, pinfo)
++ char *fname;
++ PICINFO *pinfo;
++/*******************************************/
++{
++ /* returns '1' on success */
++
++ FILE *fp;
++ png_struct *png_ptr;
++ png_info *info_ptr;
++ png_color_16 my_background;
++ int i,j;
++ int linesize, bufsize;
++ int filesize;
++ int pass;
++ int gray_to_rgb;
++ size_t commentsize;
++
++ fbasename = BaseName(fname);
++
++ pinfo->pic = (byte *) NULL;
++ pinfo->comment = (char *) NULL;
++
++ read_anything=0;
++
++ /* open the file */
++ fp = xv_fopen(fname,"r");
++ if (!fp) {
++ SetISTR(ISTR_WARNING,"%s: can't open file", fname);
++ return 0;
++ }
++
++ /* find the size of the file */
++ fseek(fp, 0L, 2);
++ filesize = ftell(fp);
++ fseek(fp, 0L, 0);
++
++ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL,
++ png_xv_error, png_xv_warning);
++ if (!png_ptr) {
++ fclose(fp);
++ FatalError("malloc failure in LoadPNG");
++ }
++
++ info_ptr = png_create_info_struct(png_ptr);
++
++ if (!info_ptr) {
++ fclose(fp);
++ png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL);
++ FatalError("malloc failure in LoadPNG");
++ }
++
++ if (setjmp(png_ptr->jmpbuf)) {
++ fclose(fp);
++ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
++ if (!read_anything) {
++ if (pinfo->pic) {
++ free(pinfo->pic);
++ pinfo->pic = NULL;
++ }
++ if (pinfo->comment) {
++ free(pinfo->comment);
++ pinfo->comment = NULL;
++ }
++ }
++ return read_anything;
++ }
++
++#ifdef PNG_NO_STDIO
++ png_set_read_fn(png_ptr, fp, png_default_read_data);
++ png_set_error_fn(png_ptr, NULL, png_xv_error, png_xv_warning);
++#else
++ png_init_io(png_ptr, fp);
++#endif
++ png_read_info(png_ptr, info_ptr);
++
++ pinfo->w = pinfo->normw = info_ptr->width;
++ pinfo->h = pinfo->normh = info_ptr->height;
++ if (pinfo->w <= 0 || pinfo->h <= 0) {
++ SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)",
++ fbasename, pinfo->w, pinfo->h);
++ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
++ return read_anything;
++ }
++
++ pinfo->frmType = F_PNG;
++
++ sprintf(pinfo->fullInfo, "PNG, %d bit ",
++ info_ptr->bit_depth * info_ptr->channels);
++
++ switch(info_ptr->color_type) {
++ case PNG_COLOR_TYPE_PALETTE:
++ strcat(pinfo->fullInfo, "palette color");
++ break;
++
++ case PNG_COLOR_TYPE_GRAY:
++ strcat(pinfo->fullInfo, "grayscale");
++ break;
++
++ case PNG_COLOR_TYPE_GRAY_ALPHA:
++ strcat(pinfo->fullInfo, "grayscale+alpha");
++ break;
++
++ case PNG_COLOR_TYPE_RGB:
++ strcat(pinfo->fullInfo, "truecolor");
++ break;
++
++ case PNG_COLOR_TYPE_RGB_ALPHA:
++ strcat(pinfo->fullInfo, "truecolor+alpha");
++ break;
++ }
++
++ sprintf(pinfo->fullInfo + strlen(pinfo->fullInfo),
++ ", %sinterlaced. (%d bytes)",
++ info_ptr->interlace_type ? "" : "non-", filesize);
++
++ sprintf(pinfo->shrtInfo, "%lux%lu PNG", info_ptr->width, info_ptr->height);
++
++ if (info_ptr->bit_depth < 8)
++ png_set_packing(png_ptr);
++
++ if (info_ptr->valid & PNG_INFO_gAMA)
++ png_set_gamma(png_ptr, Display_Gamma, info_ptr->gamma);
++/*
++ *else
++ * png_set_gamma(png_ptr, Display_Gamma, 0.45);
++ */
++
++ gray_to_rgb = 0; /* quiet a compiler warning */
++
++ if (have_imagebg) {
++ if (info_ptr->bit_depth == 16) {
++ my_background.red = imagebgR;
++ my_background.green = imagebgG;
++ my_background.blue = imagebgB;
++ my_background.gray = imagebgG; /* used only if all three equal... */
++ } else {
++ my_background.red = (imagebgR >> 8);
++ my_background.green = (imagebgG >> 8);
++ my_background.blue = (imagebgB >> 8);
++ my_background.gray = my_background.green;
++ }
++ png_set_background(png_ptr, &my_background, PNG_BACKGROUND_GAMMA_SCREEN,
++ 0, Display_Gamma);
++ if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA ||
++ (info_ptr->color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) &&
++ (imagebgR != imagebgG || imagebgR != imagebgB)) /* i.e., colored bg */
++ {
++ png_set_gray_to_rgb(png_ptr);
++ png_set_expand(png_ptr);
++ gray_to_rgb = 1;
++ }
++ } else {
++ if (info_ptr->valid & PNG_INFO_bKGD) {
++ png_set_background(png_ptr, &info_ptr->background,
++ PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
++ } else {
++ my_background.red = my_background.green = my_background.blue =
++ my_background.gray = 0;
++ png_set_background(png_ptr, &my_background, PNG_BACKGROUND_GAMMA_SCREEN,
++ 0, Display_Gamma);
++ }
++ }
++
++ if (info_ptr->bit_depth == 16)
++ png_set_strip_16(png_ptr);
++
++ if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||
++ info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
++ {
++ if (info_ptr->bit_depth == 1)
++ pinfo->colType = F_BWDITHER;
++ else
++ pinfo->colType = F_GREYSCALE;
++ png_set_expand(png_ptr);
++ }
++
++ pass=png_set_interlace_handling(png_ptr);
++
++ png_read_update_info(png_ptr, info_ptr);
++
++ if (info_ptr->color_type == PNG_COLOR_TYPE_RGB ||
++ info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb)
++ {
++ linesize = 3 * pinfo->w;
++ if (linesize/3 < pinfo->w) { /* know pinfo->w > 0 (see above) */
++ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
++ fbasename, pinfo->w, pinfo->h);
++ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
++ return read_anything;
++ }
++ pinfo->colType = F_FULLCOLOR;
++ pinfo->type = PIC24;
++ } else {
++ linesize = pinfo->w;
++ pinfo->type = PIC8;
++ if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||
++ info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
++ for (i = 0; i < 256; i++)
++ pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
++ } else {
++ pinfo->colType = F_FULLCOLOR;
++ for (i = 0; i < info_ptr->num_palette; i++) {
++ pinfo->r[i] = info_ptr->palette[i].red;
++ pinfo->g[i] = info_ptr->palette[i].green;
++ pinfo->b[i] = info_ptr->palette[i].blue;
++ }
++ }
++ }
++
++ bufsize = linesize * pinfo->h;
++ if (bufsize/linesize < pinfo->h) { /* know linesize, pinfo->h > 0 (above) */
++ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
++ fbasename, pinfo->w, pinfo->h);
++ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
++ return read_anything;
++ }
++ pinfo->pic = calloc((size_t)bufsize, (size_t)1);
++
++ if (!pinfo->pic) {
++ png_error(png_ptr, "can't allocate space for PNG image");
++ }
++
++ png_start_read_image(png_ptr);
++
++ for (i = 0; i < pass; i++) {
++ byte *p = pinfo->pic;
++ for (j = 0; j < pinfo->h; j++) {
++ png_read_row(png_ptr, p, NULL);
++ read_anything = 1;
++ if ((j & 0x1f) == 0) WaitCursor();
++ p += linesize;
++ }
++ }
++
++ png_read_end(png_ptr, info_ptr);
++
++ if (info_ptr->num_text > 0) {
++ commentsize = 1;
++
++ for (i = 0; i < info_ptr->num_text; i++)
++ commentsize += strlen(info_ptr->text[i].key) + 1 +
++ info_ptr->text[i].text_length + 2;
++
++ if ((pinfo->comment = malloc(commentsize)) == NULL) {
++ png_warning(png_ptr,"can't allocate comment string");
++ }
++ else {
++ pinfo->comment[0] = '\0';
++ for (i = 0; i < info_ptr->num_text; i++) {
++ strcat(pinfo->comment, info_ptr->text[i].key);
++ strcat(pinfo->comment, "::");
++ strcat(pinfo->comment, info_ptr->text[i].text);
++ strcat(pinfo->comment, "\n");
++ }
++ }
++ }
++
++ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
++
++ fclose(fp);
++
++ return 1;
++}
++
++
++/*******************************************/
++static void
++png_xv_error(png_ptr, message)
++ png_structp png_ptr;
++ png_const_charp message;
++{
++ SetISTR(ISTR_WARNING,"%s: libpng error: %s", fbasename, message);
++
++ longjmp(png_ptr->jmpbuf, 1);
++}
++
++
++/*******************************************/
++static void
++png_xv_warning(png_ptr, message)
++ png_structp png_ptr;
++ png_const_charp message;
++{
++ if (!png_ptr)
++ return;
++
++ SetISTR(ISTR_WARNING,"%s: libpng warning: %s", fbasename, message);
++}
++
++
++/*******************************************/
++void
++VersionInfoPNG() /* GRR 19980605 */
++{
++ fprintf(stderr, " Compiled with libpng %s; using libpng %s.\n",
++ PNG_LIBPNG_VER_STRING, png_libpng_ver);
++ fprintf(stderr, " Compiled with zlib %s; using zlib %s.\n",
++ ZLIB_VERSION, zlib_version);
++}
++
++#endif /* HAVE_PNG */
+diff -u -r --new-file xv-3.10a.orig/xvvd.c xv-3.10a/xvvd.c
+--- xv-3.10a.orig/xvvd.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvvd.c 2007-04-15 23:30:19.000000000 -0500
+@@ -0,0 +1,1101 @@
++
++/*
++ * xvvd.c - extract archived file automatically and regard it as a
++ * (virtual) directory.
++ */
++
++#define NEEDSDIR
++
++#include "xv.h"
++
++#ifdef AUTO_EXPAND
++
++static void vd_Dirtovd PARM((char *));
++static void vd_Vdtodir PARM((char *));
++static int vd_Mkvdir PARM((char *));
++static int vd_Rmvdir PARM((char *));
++static int vd_Movevdir PARM((char *, char *));
++static void vd_addvdtable PARM((char *));
++static void vd_packvdtable PARM((void));
++static int vd_recursive_mkdir PARM((char *));
++static int vd_recursive_rmdir PARM((char *));
++static void vd_optimize_path PARM((char *));
++static int vd_ftype PARM((char *));
++static int vd_compp PARM((char *, char *));
++static int vd_UncompressFile PARM((char *, char *));
++static int vd_tarc PARM((char *));
++static u_int vd_tar_sumchk PARM((char *));
++
++#define VD_VDTABLESIZE 100
++
++#define VD_ERR -2
++#define VD_UKN -1
++
++static char *ext_command[] = {
++/* KEEP 0 */
++ NULL,
++#define VD_ARC 1
++ "arc xo %s",
++#define VD_ARJ 2
++ "unarj x %s",
++#define VD_LZH 3
++ "lha -xf %s",
++#define VD_TAR 4
++ "tar xvf %s",
++#define VD_ZIP 5
++ "unzip -xo %s",
++#define VD_ZOO 6
++ "zoo xOS %s",
++};
++
++int vdcount = 0;
++
++static char vdroot[MAXPATHLEN+1];
++static char *vdtable[VD_VDTABLESIZE];
++
++/*
++ * These functions initialize and settle virtual directory system.
++ * Vdinit:
++ * creates root of virtual directory.
++ * Vdsettle:
++ * sweeps virtual directories.
++ */
++void Vdinit()
++{
++#ifndef VMS
++ char tmp[MAXPATHLEN+1];
++
++ xv_getwd(tmp, MAXPATHLEN+1);
++ if (chdir(tmpdir)) {
++ fprintf(stderr, "Warning: cannot chdir to tmpdir = '%s'.\n", tmpdir);
++ fprintf(stderr,
++ " I will use current directory '%s' instead of tmpdir.\n",
++ tmp);
++ }
++ xv_getwd(vdroot, MAXPATHLEN+1);
++ strcat(vdroot, "/.xvvdXXXXXX");
++ chdir(tmp);
++#else
++ sprintf(vdroot, "Sys$Scratch:xvvdXXXXXX");
++#endif /* VMS */
++#ifdef USE_MKSTEMP
++ close(mkstemp(vdroot));
++#else
++ mktemp(vdroot);
++#endif
++
++ if (!vd_recursive_mkdir(vdroot))
++ tmpdir = vdroot;
++}
++
++void Vdsettle()
++{
++ int i;
++
++ for (i = 0; i < vdcount; i++)
++ free(vdtable[i]);
++
++ vdcount = 0;
++
++ vd_recursive_rmdir(vdroot);
++}
++
++/*
++ * This function chdir to virtual directory, if specified path is in
++ * virtual directlry.
++ */
++int Chvdir(dir)
++char *dir;
++{
++ char buf[MAXPATHLEN+1];
++
++ if (Mkvdir(dir) == VD_ERR)
++ return -1;
++
++ strcpy(buf, dir);
++ Dirtovd(buf);
++
++ return (chdir(buf));
++}
++
++/*
++ * These functions convert directory <-> virtual directory.
++ * Dirtovd:
++ * front interface of vd_Dirtovd.
++ * vd_Dirtovd:
++ * converts directory to virtual directory.
++ * Vdtodir:
++ * front interface of vd_Vdtodir.
++ * vd_Vdtodir:
++ * converts virtual directory to normal directory.
++ * Dirtosubst:
++ * converts directory to substance of archive.
++ */
++void Dirtovd(dir)
++char *dir;
++{
++ vd_optimize_path(dir);
++
++ vd_Dirtovd(dir);
++}
++
++static void vd_Dirtovd(dir)
++char *dir;
++{
++ int i;
++
++ for (i = 0; i < vdcount; i++)
++ if (!strncmp(dir, vdtable[i], strlen(vdtable[i]))) {
++ char tmp[MAXPATHLEN+1];
++
++ sprintf(tmp, "%s%s", vdroot, dir);
++ strcpy(dir, tmp);
++ Dirtovd(dir);
++ }
++}
++
++void Vdtodir(dir)
++char *dir;
++{
++ vd_optimize_path(dir);
++
++ vd_Vdtodir(dir);
++}
++
++static void vd_Vdtodir(vd)
++char *vd;
++{
++ int i;
++ char tmp[MAXPATHLEN+1];
++
++ for (i = vdcount-1; i >= 0; i--) {
++ sprintf(tmp, "%s%s", vdroot, vdtable[i]);
++ if(!strncmp(vd, tmp, strlen(tmp))) {
++ strcpy(tmp, vd+strlen(vdroot));
++ strcpy(vd, tmp);
++ Vdtodir(vd);
++ }
++ }
++}
++
++void Dirtosubst(dir)
++char *dir;
++{
++ char tmp[MAXPATHLEN+1];
++
++ Dirtovd(dir);
++
++ strcpy(tmp, dir+strlen(vdroot));
++
++ if (Isarchive(tmp))
++ strcpy(dir, tmp);
++}
++
++/*
++ * These functions make virtual directory and extracts archive, if
++ * specified path is archive.
++ * Mkvdir:
++ * front interface of vd_Mkvdir.
++ * vd_Mkvdir:
++ * does real work.
++ * Mkvdir_force: (used by makeThumbDir(in xvbrowse.c) only)
++ * make virtual directory by force.
++ */
++int Mkvdir(dir)
++char *dir;
++{
++ char dir1[MAXPATHLEN+1], dir2[MAXPATHLEN+1];
++ char *d1, *d2;
++ int rv;
++
++#if defined(SYSV) || defined(SVR4) || defined(__USE_XOPEN_EXTENDED)
++ sighold(SIGHUP);
++ sighold(SIGCHLD);
++#else
++ int mask;
++ mask = sigblock(sigmask(SIGHUP)|sigmask(SIGCHLD));
++#endif
++
++ strcpy(dir1, dir);
++ vd_optimize_path(dir1);
++
++ if ((rv = vd_Mkvdir(dir1)) != VD_ERR)
++ goto MKVDIR_END;
++
++ strcpy(dir2, dir1);
++ d2 = dir2 + strlen(dir2);
++ while (rv == VD_ERR) {
++ d2--;
++ while (*d2 != '/')
++ d2--;
++ *d2 = '\0';
++ rv = vd_Mkvdir(dir2);
++ }
++ d1 = dir1 + strlen(dir2);
++ while ((rv != VD_ERR) && (*d1 != '\0')) {
++ *d2++ = *d1++;
++ while ((*d1 != '/') && (*d1 != '\0'))
++ *d2++ = *d1++;
++ *d2 = '\0';
++ rv = vd_Mkvdir(dir2);
++ }
++
++MKVDIR_END:
++#if defined(SYSV) || defined(SVR4) || defined(__USE_XOPEN_EXTENDED)
++ sigrelse(SIGHUP);
++ sigrelse(SIGCHLD);
++#else
++ sigsetmask(mask);
++#endif
++
++ return rv;
++}
++
++static int vd_Mkvdir(dir)
++char *dir;
++{
++ char dir1[MAXPATHLEN+1], dir2[MAXPATHLEN+1], tmp[MAXPATHLEN+1];
++ int ftype, i;
++ struct stat st;
++ FILE *pfp;
++
++ strcpy(dir1, dir);
++ Dirtovd(dir1);
++ strcpy(dir2, dir1);
++
++ WaitCursor();
++
++ if ((ftype = vd_ftype(dir1)) < 0) {
++ SetCursors(-1);
++ return ftype;
++ }
++ if (ftype == RFT_COMPRESS) {
++ if (!(ftype = vd_compp(dir1, tmp))) {
++ SetCursors(-1);
++ return ftype;
++ }
++ strcpy(dir1, tmp);
++ }
++
++ if (!stat(dir1, &st)) {
++ for(i = 0; i < vdcount; i++)
++ if (!strcmp(vdtable[i], dir2)) {
++ SetCursors(-1);
++ return 0;
++ }
++
++ if (!S_ISDIR(st.st_mode)) {
++ char origdir[MAXPATHLEN+1], buf[MAXPATHLEN+10], buf1[100];
++
++ if (vdcount >= VD_VDTABLESIZE) {
++ ErrPopUp("Sorry, you can't make virtual directory any more.",
++ "\nBummer!");
++ goto VD_MKVDIR_ERR;
++ }
++
++ WaitCursor();
++
++ xv_getwd(origdir, MAXPATHLEN+1);
++
++ sprintf(tmp, "%s%s", vdroot, dir2);
++ if (vd_recursive_mkdir(tmp) || chdir(tmp)) {
++ SetISTR(ISTR_INFO, "fail to make virtual directory.");
++ Warning();
++ goto VD_MKVDIR_ERR;
++ }
++ sprintf(buf, ext_command[ftype], dir1);
++
++ WaitCursor();
++
++ if((pfp = popen(buf, "r")) == NULL) {
++ SetISTR(ISTR_INFO, "fail to extract archive '%s'.",
++ BaseName(dir2));
++ Warning();
++ goto VD_MKVDIR_ERR;
++ }
++ while (1) {
++ if (fread(buf1, 1, sizeof(buf1), pfp) < sizeof(buf1))
++ break;
++ WaitCursor();
++ }
++ if (!feof(pfp)) {
++ SetISTR(ISTR_INFO, "Pipe was broken.");
++ Warning();
++ pclose(pfp);
++ goto VD_MKVDIR_ERR;
++ }
++ pclose(pfp);
++
++ if (strcmp(dir1, dir2))
++ unlink(dir1);
++
++ vd_addvdtable(dir2);
++ Dirtovd(origdir);
++ chdir(origdir);
++ SetCursors(-1);
++ return 0;
++
++VD_MKVDIR_ERR:
++ if (strcmp(dir1, dir2))
++ unlink(dir1);
++ SetCursors(-1);
++ return VD_ERR;
++ }
++ }
++ SetCursors(-1);
++ return VD_ERR;
++}
++
++#ifdef VIRTUAL_TD
++void Mkvdir_force(dir)
++char *dir;
++{
++ char tmp[MAXPATHLEN+1];
++
++ if (vdcount >= VD_VDTABLESIZE) {
++ ErrPopUp("Sorry, you can't make virtual directory any more.",
++ "\nBummer!");
++ return;
++ }
++
++ sprintf(tmp, "%s%s", vdroot, dir);
++ if (vd_recursive_mkdir(tmp)) {
++ SetISTR(ISTR_INFO, "Failed to make virtual directory.");
++ Warning();
++ return;
++ }
++
++ vd_addvdtable(dir);
++}
++#endif /* VIRTUAL_TD */
++
++/*
++ * These functions remove virtual directory, if exists.
++ * Rmvdir:
++ * front interface of vd_Rmvdir.
++ * vd_Rmvdir:
++ * remove virtual directory function.
++ */
++int Rmvdir(dir)
++char *dir;
++{
++ int rv;
++ char buf[MAXPATHLEN+1];
++
++ strcpy(buf, dir);
++ vd_optimize_path(buf);
++
++ rv = vd_Rmvdir(buf);
++ vd_packvdtable();
++ return rv;
++}
++
++static int vd_Rmvdir(dir)
++char *dir;
++{
++ int i;
++ char tmp[MAXPATHLEN+1];
++
++ for(i = 0; i < vdcount; i++)
++ if (!strncmp(dir, vdtable[i], strlen(dir))) {
++ sprintf(tmp, "%s%s", vdroot, vdtable[i]);
++ if (vd_Rmvdir(tmp))
++ return 1;
++ if (vd_recursive_rmdir(tmp))
++ return 1;
++ vdtable[i][0] = '\0';
++ }
++ return 0;
++}
++
++/*
++ * These functions move virtual directory, if exists.
++ * Movevdir:
++ * front interface of move virtual directory function.
++ * vd_Movevdir:
++ * does real work.
++ */
++int Movevdir(src, dst)
++char *src, *dst;
++{
++/*
++ char sbuf[MAXPATHLEN+1], dbuf[MAXPATHLEN+1];
++
++ strcpy(sbuf, src);
++ vd_optimize_path(sbuf);
++
++ strcpy(dbuf, dst);
++ vd_optimize_path(dbuf);
++
++ return (vd_Movevdir(sbuf, dbuf));
++*/
++ return (vd_Movevdir(src, dst));
++}
++
++static int vd_Movevdir(src, dst)
++char *src, *dst;
++{
++ int i;
++ char *p, *pp;
++ char tmp[MAXPATHLEN+1], tmps[MAXPATHLEN+1], tmpd[MAXPATHLEN+1];
++
++ for (i = 0; i < vdcount; i++)
++ if (!strncmp(src, vdtable[i], strlen(src))) {
++ sprintf(tmps, "%s%s", vdroot, vdtable[i]);
++ sprintf(tmp, "%s%s", dst, vdtable[i]+strlen(src));
++ sprintf(tmpd, "%s%s", vdroot, tmp);
++
++ if (vd_Movevdir(tmps, tmpd))
++ return 1;
++
++ pp = vdtable[i];
++ p = (char *) malloc(strlen(tmp)+1);
++ strcpy(p, tmp);
++ vdtable[i] = p;
++
++ strcpy(tmp, tmpd);
++ for (p = tmp+strlen(tmp); *p != '/'; p--)
++ ;
++ *p = '\0';
++
++ if (vd_recursive_mkdir(tmp))
++ goto VD_MOVEVDIR_ERR;
++
++ if (rename(tmps, tmpd) < 0)
++ goto VD_MOVEVDIR_ERR;
++
++ free(pp);
++ }
++ return 0;
++
++VD_MOVEVDIR_ERR:
++ free(vdtable[i]);
++ vdtable[i] = pp;
++ return 1;
++}
++
++/*
++ * These functions handle table of virtual directories.
++ * vd_addvdtable:
++ * adds virtual directory to table.
++ * vd_packvdtable:
++ * removes disused virtual directories from table.
++ */
++static void vd_addvdtable(vd)
++char *vd;
++{
++ char *p;
++ p = (char *) malloc(strlen(vd)+1);
++ strcpy(p, vd);
++ vdtable[vdcount] = p;
++ vdcount++;
++}
++
++static void vd_packvdtable()
++{
++ int i, j;
++
++ for (i = j = 0; i < vdcount; i++)
++ if (vdtable[i][0] != '\0')
++ vdtable[j++] = vdtable[i];
++ else
++ free(vdtable[i]);
++
++ vdcount = j;
++}
++
++/*
++ * These are utility functions.
++ * vd_recursive_mkdir:
++ * makes directories recursively.
++ * vd_recursive_rmdir
++ * removes directories recursively.
++ */
++static int vd_recursive_mkdir(dir)
++char *dir;
++{
++ char buf[MAXPATHLEN+1], *p;
++ struct stat st;
++
++ strcpy(buf, dir);
++
++ if (buf[strlen(buf) - 1] == '/')
++ buf[strlen(buf) - 1] = '\0';
++
++ p = rindex(buf, '/');
++ *p = '\0';
++
++ if (stat(buf, &st) < 0)
++ if (vd_recursive_mkdir(buf) < 0)
++ return (-1);
++
++ *p = '/';
++ if (mkdir(buf, 0700) < 0)
++ return (-1);
++
++ return (0);
++}
++
++static int vd_recursive_rmdir(dir)
++char *dir;
++{
++ char buf[MAXPATHLEN+1], buf2[MAXPATHLEN+1];
++ DIR *dp;
++ struct dirent *di;
++
++ strcpy(buf, dir);
++
++ if (buf[strlen(buf) - 1] == '/')
++ buf[strlen(buf) - 1] = '\0';
++
++ if ((dp = opendir(buf)) == NULL)
++ return (-1);
++
++ while ((di = readdir(dp)) != NULL) {
++ struct stat st;
++
++ if (!strcmp(di->d_name, ".") || !strcmp(di->d_name, ".."))
++ continue;
++
++ sprintf(buf2, "%s/%s", dir, di->d_name);
++
++ stat(buf2, &st);
++ if (S_ISDIR(st.st_mode)) {
++ if (vd_recursive_rmdir(buf2) < 0)
++ goto VD_RECURSIVE_RMDIR_ERR;
++ } else
++ unlink(buf2);
++ }
++ if (rmdir(buf) < 0)
++ goto VD_RECURSIVE_RMDIR_ERR;
++
++ closedir(dp);
++ return (0);
++
++VD_RECURSIVE_RMDIR_ERR:
++ closedir(dp);
++ return (-1);
++}
++
++/*
++ * These functions test specified path.
++ * Isarchive:
++ * tests whether it's an archive?
++ * Isvdir:
++ * tests whether it's in the virtual directory?
++ */
++int Isarchive(path)
++char *path;
++{
++ int ftype;
++
++ if ((ftype = vd_ftype(path)) < 0)
++ return 0;
++
++ if (ftype == RFT_COMPRESS)
++ if (!(ftype = vd_compp(path, NULL)))
++ return 0;
++
++ return ftype;
++}
++
++int Isvdir(path)
++char *path;
++{
++ int rv = 0;
++ char tmp1[MAXPATHLEN+1], tmp2[MAXPATHLEN+1];
++ int archive1, archive2;
++
++ strcpy(tmp1, path);
++ strcpy(tmp2, path);
++
++ vd_optimize_path(tmp1);
++ Dirtovd(tmp2);
++
++ archive1 = Isarchive(tmp1);
++ archive2 = Isarchive(tmp2);
++
++ if (strcmp(tmp1, tmp2)) {
++ char tmp3[MAXPATHLEN+1], tmp4[MAXPATHLEN+1];
++ int archive3, archive4;
++
++ sprintf(tmp3, "%s%s", vdroot, tmp1);
++ strcpy(tmp4, tmp2+strlen(vdroot));
++
++ archive3 = Isarchive(tmp3);
++ archive4 = Isarchive(tmp4);
++
++ if (archive4 && !strcmp(tmp1, tmp4)) {
++ rv |= 06;
++ return rv;
++ }
++ rv |= 01;
++ if (archive2)
++ rv |= 02;
++ else if (archive4)
++ rv |= 06;
++ return rv;
++ }
++ if (archive1)
++ rv |= 02;
++
++ return rv;
++}
++
++/*
++ * This function optimizes given path.
++ * Expand '~' to home directory and removes '.', and treat '..'.
++ */
++static void vd_optimize_path(path)
++char *path;
++{
++ char *tmp, *reserve;
++
++ if (!strcmp(path, STDINSTR))
++ return;
++
++ if (*path == '\0') {
++ xv_getwd(path, MAXPATHLEN+1);
++ return;
++ }
++ if (*path == '~')
++ Globify(path);
++ if (*path != '/') {
++ char tmp[MAXPATHLEN+1];
++
++ strcpy(tmp, path);
++ xv_getwd(path, MAXPATHLEN+1);
++ strcat(path, "/");
++ strcat(path, tmp);
++ }
++
++ reserve = tmp = path;
++ while(*path != '\0') {
++ if (*path == '/') {
++ *tmp++ = *path;
++ while (*++path == '/')
++ ;
++ continue;
++ }
++ if ((*path == '.') && (*(path-1) == '/')) {
++ if (*(path+1) == '/') {
++ tmp--;
++ path++;
++ continue;
++ } else if (*(path+1) == '\0') {
++ tmp--;
++ break;
++ } else if (*(path+1) == '.') {
++ if (*(path+2) == '/') {
++ if ((tmp - reserve) > 1)
++ for (tmp-=2; (*tmp != '/'); tmp--)
++ ;
++ else
++ tmp = reserve;
++ path+=2;
++ continue;
++ } else if (*(path+2) == '\0') {
++ if ((tmp - reserve) > 1)
++ for (tmp-=2; (*tmp != '/'); tmp--)
++ ;
++ else
++ tmp = reserve+1;
++ break;
++ }
++ }
++ }
++ *tmp++ = *path++;
++ }
++ if (((tmp - reserve) > 1) && *(tmp-1) == '/')
++ tmp--;
++ if (tmp == reserve)
++ *tmp++ = '/';
++
++ *tmp = '\0';
++}
++
++/*
++ * These functions detect file type.
++ */
++static int vd_ftype(fname)
++char *fname;
++{
++ /* check archive type */
++
++ FILE *fp;
++ byte magicno[30]; /* first 30 bytes of file */
++ int rv, n;
++ struct stat st;
++
++ if (!fname) return VD_ERR; /* shouldn't happen */
++
++ if ((!stat(fname, &st)) && (st.st_mode & S_IFMT) == S_IFDIR)
++ return VD_UKN;
++ fp = xv_fopen(fname, "r");
++ if (!fp) return VD_ERR;
++
++ n = fread(magicno, (size_t) 1, (size_t) 30, fp);
++ fclose(fp);
++
++ if (n<30) return VD_UKN; /* files less than 30 bytes long... */
++
++ rv = VD_UKN;
++
++ if (magicno[0] == 0x60 && magicno[1]==0xea) rv = VD_ARJ;
++
++ else if (magicno[2] == '-' && magicno[3] == 'l' &&
++ magicno[4] == 'h') rv = VD_LZH;
++
++ else if (strncmp((char *) magicno,"PK", (size_t) 2)==0) rv = VD_ZIP;
++
++ else if (magicno[20]==0xdc && magicno[21]==0xa7 &&
++ magicno[22]==0xc4 && magicno[23]==0xfd) rv = VD_ZOO;
++
++ else if (vd_tarc(fname)) rv = VD_TAR;
++
++ else if (magicno[0]==0x1f && magicno[1]==0x9d) rv = RFT_COMPRESS;
++
++ else if (!strncmp((char *) &magicno[11], "MAJYO", (size_t) 5))
++ rv = VD_UKN; /* XXX */
++
++ else if (magicno[0] == 26) rv = VD_ARC;
++
++#ifdef GUNZIP
++ else if (magicno[0]==0x1f && magicno[1]==0x8b) rv = RFT_COMPRESS;/* gzip */
++ else if (magicno[0]==0x1f && magicno[1]==0x9e) rv = RFT_COMPRESS;/* old */
++ else if (magicno[0]==0x1f && magicno[1]==0x1e) rv = RFT_COMPRESS;/* pack */
++#endif
++
++ return rv;
++}
++
++static int vd_compp(path, newpath)
++char *path, *newpath;
++{
++ /*
++ * uncompress and check archive type.
++ *
++ * If newpath is NULL, uncompress only 512 byte of 'path' and
++ * check archive type, so it is for SPEED-UP strategy.
++ * In this case, caller this function does not have to unlink
++ * tempoary file.
++ * Unfortunately it does not work in VMS system.
++ */
++
++ int file_type, r;
++ char uncompname[128], basename[128];
++ int comptype;
++
++ if (newpath) *newpath = '\0';
++ strncpy(basename, path, 127);
++ comptype = ReadFileType(path);
++#if (defined(VMS) && !defined(GUNZIP))
++ /* VMS decompress doesn't like the file to have a trailing .Z in fname
++ however, GUnZip is OK with it, which we are calling UnCompress */
++ *rindex (basename, '.') = '\0';
++#endif
++#ifdef VMS
++ if (UncompressFile(basename, uncompname)) {
++#else
++ if (newpath == NULL)
++ r = vd_UncompressFile(basename, uncompname);
++ else
++ r = UncompressFile(basename, uncompname, comptype);
++ if (r) {
++#endif
++ if ((file_type = vd_ftype(uncompname)) < 0) {
++ unlink(uncompname);
++ return 0;
++ }
++ if (newpath) strcpy(newpath, uncompname);
++ else unlink(uncompname);
++ } else {
++ return 0;
++ }
++ return file_type;
++}
++
++#define HEADERSIZE 512
++
++static void vd_Dirtovd PARM((char *));
++static int stderr_on PARM((void));
++static int stderr_off PARM((void));
++static FILE *popen_nul PARM((char *, char *));
++
++static int vd_UncompressFile(name, uncompname)
++char *name, *uncompname;
++{
++ /* Yap, I`m nearly same as original `UncompnameFile' function, but,
++ 1) I extract `name' file ONLY first 512 byte.
++ 2) I'm called only from UNIX and UNIX like OS, *NOT* VMS */
++ /* returns '1' on success, with name of uncompressed file in uncompname
++ returns '0' on failure */
++
++ char namez[128], *fname, buf[512], tmp[HEADERSIZE];
++ int n, tmpfd;
++ FILE *pfp, *tfp;
++
++ fname = name;
++ namez[0] = '\0';
++
++
++#ifndef GUNZIP
++ /* see if compressed file name ends with '.Z'. If it *doesn't*, we need
++ to temporarily rename it so it *does*, uncompress it, and rename it
++ *back* to what it was. necessary because uncompress doesn't handle
++ files that don't end with '.Z' */
++
++ if (strlen(name) >= (size_t) 2 &&
++ strcmp(name + strlen(name)-2,".Z")!=0 &&
++ strcmp(name + strlen(name)-2,".z")!=0) {
++ strcpy(namez, name);
++ strcat(namez,".Z");
++
++ if (rename(name, namez) < 0) {
++ sprintf(buf, "Error renaming '%s' to '%s': %s",
++ name, namez, ERRSTR(errno));
++ ErrPopUp(buf, "\nBummer!");
++ return 0;
++ }
++
++ fname = namez;
++ }
++#endif /* not GUNZIP */
++
++ sprintf(uncompname, "%s/xvuXXXXXX", tmpdir);
++#ifdef USE_MKSTEMP
++ tmpfd = mkstemp(uncompname);
++#else
++ mktemp(uncompname);
++#endif
++
++ sprintf(buf,"%s -c %s", UNCOMPRESS, fname);
++ SetISTR(ISTR_INFO, "Uncompressing Header '%s'...", BaseName(fname));
++ if ((pfp = popen_nul(buf, "r")) == NULL) {
++ SetISTR(ISTR_INFO, "Cannot extract for archive '%s'.",
++ BaseName(fname));
++ Warning();
++#ifdef USE_MKSTEMP
++ if (tmpfd >= 0)
++ close(tmpfd);
++#endif
++ return 0;
++ }
++#ifdef USE_MKSTEMP
++ if (tmpfd < 0)
++#else
++ if ((tmpfd = open(uncompname,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR)) < 0)
++#endif
++ {
++ SetISTR(ISTR_INFO, "Unable to create temporary file.",
++ BaseName(uncompname));
++ Warning();
++ pclose(pfp);
++ }
++ if ((tfp = fdopen(tmpfd, "w")) == NULL) {
++ SetISTR(ISTR_INFO, "Unable to create temporary file.",
++ BaseName(uncompname));
++ Warning();
++ close(tmpfd);
++ pclose(pfp);
++ return 0;
++ }
++ if ((n = fread(tmp, 1, sizeof(tmp), pfp)) != HEADERSIZE) {
++ SetISTR(ISTR_INFO, "Unable to read '%s'.",
++ BaseName(fname));
++ Warning();
++ pclose(pfp);
++ fflush(tfp);
++ fclose(tfp);
++ close(tmpfd);
++ return 0;
++ }
++ fwrite(tmp, 1, n, tfp);
++ fflush(tfp);
++ fclose(tfp);
++ close(tmpfd);
++ pclose(pfp);
++
++ /* if we renamed the file to end with a .Z for the sake of 'uncompress',
++ rename it back to what it once was... */
++
++ if (strlen(namez)) {
++ if (rename(namez, name) < 0) {
++ sprintf(buf, "Error renaming '%s' to '%s': %s",
++ namez, name, ERRSTR(errno));
++ ErrPopUp(buf, "\nBummer!");
++ }
++ }
++
++ return 1;
++}
++
++#define TARBLOCK 512
++#define CKSTART 148 /* XXX */
++#define CKSIZE 8
++
++/*
++ * Tar file: 1, other: 0
++ */
++static int vd_tarc(fname)
++char *fname;
++{
++ FILE *fp;
++ unsigned int sum;
++ char *ckp, buf[TARBLOCK];
++
++ if ((fp = fopen(fname, "r")) == NULL)
++ return 0;
++
++ fread(buf, TARBLOCK, 1, fp);
++ fclose(fp);
++
++ for (sum = 0, ckp = buf + CKSTART;
++ (ckp < buf + CKSTART + CKSIZE) && *ckp != '\0';
++ ckp++) {
++ sum *= 8;
++ if (*ckp == ' ')
++ continue;
++ if (*ckp < '0' || '7' < *ckp)
++ return 0;
++ sum += *ckp - '0';
++ }
++ if (sum != vd_tar_sumchk(buf))
++ return 0;
++
++ return 1;
++}
++
++static unsigned int vd_tar_sumchk(buf)
++char *buf;
++{
++ int i;
++ unsigned int sum = 0;
++
++ for (i = 0; i < CKSTART; i++) {
++ sum += *(buf + i);
++ }
++ sum += ' ' * 8;
++ for (i += 8; i < TARBLOCK; i++) {
++ sum += *(buf + i);
++ }
++ return sum;
++}
++
++
++static int stde = -1; /* fd of stderr */
++static int nul = -1; /* fd of /dev/null */
++
++/*
++ * switch off the output to stderr(bypass to /dev/null).
++ */
++static int stderr_off()
++{
++ if (nul < 0)
++ nul = open("/dev/null", O_RDONLY);
++ if (nul < 0) {
++ fprintf(stderr, "/dev/null open failure\n");
++ return -1;
++ }
++ if (stde < 0)
++ stde = dup(2);
++ if (stde < 0) {
++ fprintf(stderr, "duplicate stderr failure\n");
++ return -1;
++ }
++ close(2);
++ dup(nul);
++ return 0;
++}
++
++/*
++ * turn on stderr output.
++ */
++static int stderr_on()
++{
++ if ((stde < 0) || (nul < 0)) {
++ fprintf(stderr, "stderr_on should call after stderr_off\n");
++ return -1;
++ }
++ close(2);
++ dup(stde);
++ return 0;
++}
++
++/*
++ * popen with no output to stderr.
++ */
++static FILE *popen_nul(prog, mode)
++char *prog, *mode;
++{
++ FILE *fp;
++
++ stderr_off();
++ fp = popen(prog, mode);
++ stderr_on();
++ return fp;
++}
++
++/*
++ * These functions are for SIGNAL.
++ * If XV end by C-c, there are dust of directory which name is .xvvd???,
++ * made by xvvd. Then, I handle SIGINT, and add good finish.
++ */
++void vd_HUPhandler()
++{
++#if defined(SYSV) || defined(SVR4) || defined(__USE_XOPEN_EXTENDED)
++ sighold(SIGHUP);
++#else
++ int mask;
++ mask = sigblock(sigmask(SIGHUP));
++#endif
++
++ Vdsettle();
++
++#if defined(SYSV) || defined(SVR4) || defined(__USE_XOPEN_EXTENDED)
++ sigrelse(SIGHUP);
++ signal(SIGHUP, (void (*)PARM((int))) vd_HUPhandler);
++#else
++ sigsetmask(mask);
++#endif
++}
++
++void vd_handler(sig)
++int sig;
++{
++#if defined(SYSV) || defined(SVR4) || defined(__USE_XOPEN_EXTENDED)
++ sighold(sig);
++#else
++ sigblock(sigmask(sig));
++#endif
++
++ Quit(1); /*exit(1);*/
++}
++
++int vd_Xhandler(disp,event)
++Display *disp;
++XErrorEvent *event;
++{
++ Quit(1); /*exit(1);*/
++ return (1); /* Not reached */
++}
++
++int vd_XIOhandler(disp)
++Display *disp;
++{
++ fprintf(stderr, "XIO fatal IO error ? (?) on X server\n");
++ fprintf(stderr, "You must exit normally in xv usage.\n");
++ Quit(1); /*exit(1);*/
++ return (1); /* Not reached */
++}
++
++void vd_handler_setup()
++{
++ signal(SIGHUP, (void (*)PARM((int))) vd_HUPhandler);
++ signal(SIGINT, (void (*)PARM((int))) vd_handler);
++ signal(SIGTERM,(void (*)PARM((int))) vd_handler);
++
++ (void)XSetErrorHandler(vd_Xhandler);
++ (void)XSetIOErrorHandler(vd_XIOhandler);
++}
++#endif /* AUTO_EXPAND */
+diff -u -r --new-file xv-3.10a.orig/xvwbmp.c xv-3.10a/xvwbmp.c
+--- xv-3.10a.orig/xvwbmp.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvwbmp.c 2007-04-15 23:38:05.000000000 -0500
+@@ -0,0 +1,345 @@
++/*
++ * xvwbmp.c - i/o routings for WBMP files
++ * defined by OMA (http://www.openmobilealliance.com)
++ * as a standard for images for micro devices.
++ *
++ * exports :
++ *
++ * LoadWBMP(fname, numcols);
++ * WriteWBMP(fp, pic, ptype, w, h, r, g, b, numcols, style);
++ *
++ * author: Pawel S. Veselov <vps@manticore.2y.net>
++ * http://manticore.2y.net/
++ *
++ */
++
++#include "xv.h"
++
++typedef short int16;
++typedef unsigned char uint8;
++typedef unsigned short uint16; /* sizeof (uint16) must == 2 */
++#if defined(__alpha) || _MIPS_SZLONG == 64
++typedef int int32;
++typedef unsigned int uint32; /* sizeof (uint32) must == 4 */
++#else
++typedef long int32;
++typedef unsigned long uint32; /* sizeof (uint32) must == 4 */
++#endif
++
++#define MUST(a) if (!(a)) {\
++ close(fd); \
++ return fail(st_fname, st_err); }
++#define READU8(fd,u) if ((read(fd, &u, 1)<1)) {\
++ myfree(); \
++ close(fd); \
++ return fail(st_fname, err_ueof); }
++#define SREADU8(fd, u) if ((read(fd, &u, 1,)<1)) {\
++ { st_err = err_ueof; return 0; }
++
++#define SREADC(fd, str, l) { \
++ str = (char*)mymalloc(l); \
++ if (!str) { \
++ myfree(); \
++ FatalError("LoadWBMP: can't malloc extension buffer"); \
++ } \
++ if (read(fd, str, l)<l) { \
++ st_err = err_ueof; \
++ return 0; \
++ }
++
++static const char err_ueof[] = "Unexpected EOF";
++static const char err_unst[] = "Unsupported image type";
++static const char err_extf[] = "Extensions are forbidden";
++static const char err_inmb[] = "Invalid multibyte integer";
++
++static const char *st_fname;
++static const char *st_err;
++
++static int fail PARM((const char *, const char *));
++static int read_mb PARM((int *, int));
++static void write_mb PARM((uint32, FILE *));
++static int read_ext PARM((int, uint8));
++static void *mymalloc PARM((int));
++static void myfree PARM((void));
++static uint8 *render1 PARM((uint8 *, int, int));
++
++static void **mymem = NULL;
++static int mymems = 0;
++
++
++int LoadWBMP(fname, pinfo)
++ char *fname;
++ PICINFO *pinfo;
++{
++ int fd;
++ int im_type; /* image type (only type 0 supported) */
++ uint8 fix_header; /* fixed header field */
++ int width, height;
++ int npixels, raw_size, aux;
++ uint8 * raw;
++
++ st_fname = fname;
++
++ fd = open(fname, O_RDONLY);
++ if (fd < 0) {
++ return fail(fname, "Couldn't open the file");
++ }
++
++ MUST(read_mb(&im_type, fd));
++ if (im_type) {
++ return fail(fname, err_unst);
++ }
++
++ READU8(fd, fix_header);
++
++ MUST(read_ext(fd, fix_header));
++
++ MUST(read_mb(&width, fd));
++ MUST(read_mb(&height, fd));
++
++ npixels = width * height;
++ raw_size = (npixels+7) / 8;
++ if (width <= 0 || height <= 0 || npixels/width != height ||
++ npixels+7 < npixels)
++ {
++ return fail(fname, "image dimensions out of range");
++ }
++
++ raw = mymalloc(raw_size);
++ if (!raw) {
++ myfree();
++ FatalError("LoadWBMP: can't malloc image buffer");
++ }
++
++ aux = read(fd, raw, raw_size);
++ if (aux < raw_size) {
++ fail(fname, "Image size shrank");
++ raw_size = aux;
++ }
++
++ pinfo->r[0] = 0;
++ pinfo->g[0] = 0;
++ pinfo->b[0] = 0;
++ pinfo->r[1] = 255;
++ pinfo->g[1] = 255;
++ pinfo->b[1] = 255;
++
++ pinfo->pic = render1(raw, raw_size, npixels);
++ pinfo->type = PIC8;
++
++ pinfo->w = pinfo->normw = width;
++ pinfo->h = pinfo->normh = height;
++ pinfo->frmType = F_BWDITHER;
++
++ sprintf(pinfo->fullInfo, "WBMP, 1 bit per pixel, %d bytes", raw_size);
++ sprintf(pinfo->shrtInfo, "%dx%d WBMP (WAP/OMA).", width, height);
++ pinfo->comment = (char*)NULL;
++
++ close(fd);
++
++ myfree();
++ return 1;
++}
++
++
++int WriteWBMP(fp, pic, ptype, w, h, rmap, gmap, bmap, numcols, colorstyle)
++ FILE *fp;
++ byte *pic;
++ int ptype, w, h;
++ byte *rmap, *gmap, *bmap;
++ int numcols, colorstyle;
++{
++ int count = 0;
++ uint8 bit = 0;
++ int i;
++
++ write_mb(0, fp); /* type : always 0 */
++ putc(0, fp); /* fixed header : always 0 for type 0 */
++ write_mb((uint32)w, fp);
++ write_mb((uint32)h, fp);
++
++ /* ready to write data */
++
++ for (i=0; i<w*h; i++) {
++ bit |= (((pic[i]&1)<<(7-(count++))));
++ if (count == 8) {
++ putc(bit, fp);
++ count = 0;
++ }
++ }
++
++ if (!count) {
++ putc(bit, fp);
++ }
++
++ return 0;
++}
++
++
++static int fail(name, msg)
++ const char *name, *msg;
++{
++ SetISTR(ISTR_WARNING, "%s : %s", name, msg);
++ return 0;
++}
++
++
++static void write_mb(data, f)
++ uint32 data;
++ FILE *f;
++{
++ int i = 32;
++ uint32 aux = data;
++ int no;
++
++ if (!aux) {
++ i = 1;
++ } else {
++ while (!(aux & 0x80000000)) {
++ aux <<= 1;
++ i--;
++ }
++ }
++
++ /* i tells us how many bits are left to encode */
++
++ no = (i / 7 + ((i % 7)?1:0))-1;
++
++ /*
++ fprintf(stderr, "writing %x, bits to write=%d, passes=%d\n",
++ data, i, no);
++ */
++
++ do {
++ uint8 value = no?0x80:0x0;
++ value |= ((data >> (no*7)) & 0x7f);
++ putc(value, f);
++ } while ((no--)>0);
++
++}
++
++
++static int read_mb(dst, fd)
++ int *dst, fd;
++{
++ int ac = 0;
++ int ct = 0;
++
++ while (1) {
++ uint8 bt;
++ if ((ct++)==6) {
++ st_err = err_inmb;
++ return 0;
++ }
++
++ if ((read(fd, &bt, 1)) < 1) {
++ st_err = err_ueof;
++ return 0;
++ }
++ ac = (ac << 7) | (bt & 0x7f); /* accumulates up to 42 bits?? FIXME */
++ if (!(bt & 0x80))
++ break;
++ }
++ *dst = ac;
++ return 1;
++}
++
++
++static int read_ext(fd, fixed)
++ int fd;
++ uint8 fixed;
++{
++ if (!(fixed&0x7f)) { /* no extensions */
++ return 1;
++ }
++
++ /*
++ * The only described type is WBMP 0, that must not
++ * have extensions.
++ */
++
++ st_err = err_extf;
++ return 0;
++
++ /*
++
++ fixed = (fixed >> 5)&0x3;
++
++ switch (fixed) {
++ case 0:
++ while (true) {
++ SREADU8(fd, fixed);
++ if (!(fixed & 0x7f)) { break; }
++ }
++ break;
++ case 0x3:
++ {
++ char * par;
++ char * val;
++ SREADU8(fd, fixed);
++ SREADC(fd, par, (fixed>>4)&0x6);
++ SREADC(fd, val, fixed&0xf);
++ }
++ break;
++ }
++ */
++}
++
++
++static void *mymalloc(numbytes)
++ int numbytes;
++{
++ mymem = (void**)realloc(mymem, mymems+1);
++ if (!mymem)
++ FatalError("LoadWBMP: can't realloc buffer");
++ return (mymem[mymems++] = malloc(numbytes));
++}
++
++
++static void myfree()
++{
++ int i;
++
++ if (mymem) {
++ for (i=0; i<mymems; i++) {
++ if (mymem[i])
++ free(mymem[i]);
++ }
++ free(mymem);
++ }
++ mymem = (void**)NULL;
++ mymems = 0;
++}
++
++
++static uint8 *render1(data, size, npixels)
++ uint8 *data;
++ int size, npixels;
++{
++ byte * pic;
++ int i;
++ int cnt = 0;
++ uint8 cb = *data;
++
++ pic = calloc(npixels,1); /* checked for overflow by caller */
++ if (!pic) {
++ myfree();
++ FatalError("LoadWBMP: can't allocate 'pic' buffer");
++ }
++
++ /* expand bits into bytes */
++ /* memset(pic, 0, npixels); */
++
++ for (i=0; i<npixels; i++) {
++
++ pic[i] = (cb>>7)&1;
++
++ if ((++cnt)==8) {
++ cb = *(++data);
++ cnt = 0;
++ } else {
++ cb <<=1;
++ }
++ }
++ return pic;
++}
+diff -u -r --new-file xv-3.10a.orig/xvzx.c xv-3.10a/xvzx.c
+--- xv-3.10a.orig/xvzx.c 1969-12-31 18:00:00.000000000 -0600
++++ xv-3.10a/xvzx.c 2007-05-13 19:53:46.000000000 -0500
+@@ -0,0 +1,349 @@
++/*
++ * xvzx.c - load routine for Spectrum screen$
++ *
++ * John Elliott, 7 August 1998
++ *
++ * LoadZX(fname, pinfo) - load file
++ * WriteZX(fp,pic,ptype,w,h,r,g,b,numcols,style,cmt,comment) - convert to
++ * 256x192 SCREEN$ and save.
++ */
++
++#include "copyright.h"
++
++#include "xv.h"
++
++
++
++/*
++ * comments on error handling:
++ * a file with a bad header checksum is a warning error.
++ *
++ * not being able to malloc is a Fatal Error. The program is aborted.
++ */
++
++
++#define TRUNCSTR "File appears to be truncated."
++
++static int zxError PARM((const char *, const char *));
++
++static const char *bname;
++
++/*******************************************/
++int LoadZX(fname, pinfo)
++ char *fname;
++ PICINFO *pinfo;
++/*******************************************/
++{
++ /* returns '1' on success */
++
++ FILE *fp;
++ unsigned int c, c1;
++ int x,y, trunc;
++ byte *zxfile;
++
++ bname = BaseName(fname);
++
++ pinfo->pic = (byte *) NULL;
++ pinfo->comment = (char *) NULL;
++
++ /* Allocate memory for a 256x192x8bit image */
++
++ pinfo->pic = (byte *)malloc(256*192);
++ if (!pinfo->pic) FatalError("malloc failure in xvzx.c LoadZX");
++
++ /* Allocate 1B80h bytes and slurp the whole file into memory */
++
++ zxfile = (byte *)malloc(7040);
++ if (!zxfile) FatalError("malloc failure in xvzx.c LoadZX");
++
++ /* open the file */
++ fp = xv_fopen(fname,"r");
++ if (!fp) return (zxError(bname, "can't open file"));
++
++ /* Load it in en bloc */
++ memset(zxfile, 0, 7040);
++ if (fread(zxfile, 1, 7040, fp) < 7040) trunc = 1;
++
++ /* Transform to 8-bit */
++
++ for (y = 0; y < 192; y++) for (x = 0; x < 256; x++)
++ {
++ /* Spectrum screen layout: three 2k segments at y=0, y=64, y=128 */
++ /* In each segment: Scan lines 0,8,16,...,56,1,9,...,57 etc. Each
++ scanline is 32 bytes, so line 1 is 256 bytes after line 0
++
++ So address of line start is ((y>>6) * 2048) + ((y & 7) * 256)
++ + ((y & 0x38) * 4)
++
++ The colour byte for a cell is at screen + 6k + (y >> 3)*32 + (x>>3)
++
++ */
++
++ int offset;
++ byte *dst = pinfo->pic + 256*y + x;
++ byte attr, pt, mask;
++
++ offset = (y >> 6) * 2048;
++ offset += (y & 7) * 256;
++ offset += (y & 0x38) * 4;
++ offset += (x >> 3);
++
++ pt = zxfile[offset + 128]; /* Ink/paper map */
++
++ offset = 0x1880;
++ offset += (y >> 3) * 32;
++ offset += (x >> 3);
++
++ attr = zxfile[offset]; /* Colours for cell */
++
++ mask = 0x80;
++
++ if (x & 7) mask >>= (x & 7);
++
++ if (pt & mask) *dst = attr & 7; /* Ink */
++ else *dst = (attr >> 3) & 7; /* Paper */
++
++ if (attr & 0x40) *dst |= 8; /* High intensity */
++ }
++
++ /* Picture bytes converted; now build the colour maps */
++
++ pinfo->normw = pinfo->w = 256;
++ pinfo->normh = pinfo->h = 192;
++ pinfo->type = PIC8;
++
++ for (c = 0; c < 16; c++)
++ {
++ if (c < 8) c1 = 192; else c1 = 255; /* low-intensity colours use 192 */
++ /* high-intensity colours use 255 */
++ pinfo->b[c] = (c & 1 ? c1 : 0);
++ pinfo->r[c] = (c & 2 ? c1 : 0);
++ pinfo->g[c] = (c & 4 ? c1 : 0);
++ }
++
++ pinfo->colType = F_FULLCOLOR;
++ pinfo->frmType = F_ZX; /* Save as SCREEN$ */
++ sprintf(pinfo->fullInfo, "Spectrum SCREEN$, load address %04x",
++ zxfile[16]+256*zxfile[17]);
++ strcpy(pinfo->shrtInfo, "Spectrum SCREEN$.");
++
++ /* Almost as an afterthought, check that the +3DOS header is valid.
++
++ If it isn't, then odds are that the file isn't a graphic. But it
++ had the right magic number, so it might be. Let them see it anyway.
++
++ The check is: Byte 127 of the header should be the 8-bit sum of bytes
++ 0-126 of the header. The header should also have the
++ +3DOS magic number, but we know it does or we wouldn't
++ have got this far.
++ */
++
++ c1 = 0;
++ for (c1 = c = 0; c < 127; c++) c1 = ((c1 + zxfile[c]) & 0xFF);
++ if (c1 != zxfile[127]) zxError(bname, "Bad header checksum.");
++
++ fclose(fp);
++ free(zxfile);
++ return 1;
++}
++
++
++
++
++
++/*******************************************/
++static int zxError(fname, st)
++ const char *fname, *st;
++{
++ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
++ return 0;
++}
++
++
++/* Spectrum screen file header. The first 18 bytes are used in the magic
++ number test */
++
++byte ZXheader[128] =
++{
++ 'P', 'L', 'U', 'S', '3', 'D', 'O', 'S', 26, /* Spectrum +3DOS file */
++ 1, 0, /* Header type 1.0 */
++ 128, 27, 0, 0, /* 7040 bytes */
++ 3, /* Binary format */
++ 0, 27, /* 6912 data bytes */
++ 0, 64 /* load address 0x4000 */
++};
++
++
++
++/* Get the Spectrum colour/bright byte (0-15) from a pixel */
++
++static int PointZX(pic, w, h, rmap, gmap, bmap, x, y)
++ byte *pic;
++ int w,h;
++ byte *rmap, *gmap, *bmap;
++ int x,y;
++{
++ int index, r, g, b, zxc;
++
++ /* If the picture is smaller than the screen, pad out the edges
++ with "bright black" - a colour not otherwise returned */
++
++ if (x >= w || y >= h) return 8;
++
++ /* Get colour index */
++
++ index = pic[y*w + x];
++
++ /* Convert to rgb */
++
++ r = rmap[index];
++ g = gmap[index];
++ b = bmap[index];
++ zxc = 0;
++
++ /* Work out Spectrum colour by a simplistic "nearest colour" method */
++
++ if (b >= 160) zxc |= 1; /* Blue */
++ if (r >= 160) zxc |= 2; /* Red */
++ if (g >= 160) zxc |= 4; /* Green */
++ if (r > 208 || g >= 208 || b >= 208) zxc |= 8; /* High intensity */
++
++ return zxc;
++}
++
++
++/* Work out what colours should be used in a cell */
++
++static void CellZX(pic, w, h, rmap, gmap, bmap, cx, cy, zxfile)
++ byte *pic;
++ int w,h;
++ byte *rmap, *gmap, *bmap;
++ int cx,cy;
++ byte *zxfile;
++{
++ byte counts[16]; /* Count of no. of colours */
++ int offset, ink, paper, n, m, x, y, x0, y0, di, dp;
++
++ x0 = cx * 8; /* Convert from cell to pixel coords */
++ y0 = cy * 8;
++
++ for (n = 0; n < 16; n++) counts[n] = 0; /* Reset all counts */
++
++ /* Count no. of pixels of various colours */
++
++ for (y = y0; y < y0+8; y++) for (x = x0; x < x0+8; x++)
++ {
++ m = PointZX(pic, w, h, rmap, gmap, bmap, x, y);
++
++ counts[m]++;
++ }
++ counts[8] = 0; /* Discard Bright Black (pixels not in the picture area)
++ */
++
++ /* Assign the most popular colour as ink */
++ for (n = m = ink = 0; n < 16; n++) if (counts[n] > m)
++ {
++ ink = n;
++ m = counts[n];
++ }
++ counts[ink] = 0;
++
++ /* Assign the next most popular colour as paper */
++ for (n = m = paper = 0; n < 16; n++) if (counts[n] > m)
++ {
++ paper = n;
++ m = counts[n];
++ }
++ /* We have ink and paper. Set cell's attributes */
++
++ offset = cy*32 + cx + 0x1880;
++
++ /* Set the high-intensity bit if ink is high-intensity */
++ if (ink & 8) zxfile[offset] = 0x40; else zxfile[offset] = 0;
++ zxfile[offset] |= ((paper & 7) << 3);
++ zxfile[offset] |= (ink & 7);
++
++ /* Plot the points */
++ for (y = y0; y < y0+8; y++)
++ {
++ byte mask = 0x80;
++
++ offset = (y >> 6) * 2048;
++ offset += (y & 7) * 256;
++ offset += (y & 0x38) * 4;
++ offset += (x0 >> 3);
++
++ for (x = x0; x < x0+8; x++)
++ {
++ /* Work out whether the point should be plotted as ink or
++ paper */
++ m = PointZX(pic, w, h, rmap, gmap, bmap, x, y);
++
++ di = (ink & 7) - (m & 7); /* "Difference" from ink */
++ dp = (paper & 7) - (m & 7); /* "Difference" from paper */
++
++ if (di < 0) di = -di;
++ if (dp < 0) dp = -dp;
++
++ if (di < dp) /* Point is more like ink */
++ zxfile[offset+128] |= mask;
++
++ mask = (mask >> 1);
++ }
++ }
++
++}
++
++
++
++/*******************************************/
++int WriteZX(fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,comment)
++ FILE *fp;
++ byte *pic;
++ int ptype, w,h;
++ byte *rmap, *gmap, *bmap;
++ int numcols, colorstyle;
++ char *comment;
++{
++ int rv, x, y;
++ byte *zxfile;
++ byte *pic8;
++ byte rtemp[256],gtemp[256],btemp[256];
++
++ /* To simplify matters, reduce 24-bit to 8-bit. Since the Spectrum
++ screen is 3.5-bit anyway, it doesn't make much difference */
++
++ if (ptype == PIC24)
++ {
++ pic8 = Conv24to8(pic, w, h, 256, rtemp,gtemp,btemp);
++ if (!pic8) FatalError("Unable to malloc in WriteZX()");
++ rmap = rtemp; gmap = gtemp; bmap = btemp; numcols=256;
++ }
++ else pic8 = pic;
++
++ ZXheader[127] = 0x71; /* The correct checksum. */
++
++ /* Create a memory image of the SCREEN$ */
++
++ zxfile = (byte *)malloc(7040);
++ if (!zxfile) FatalError("malloc failure in xvzx.c WriteZX");
++
++ memset(zxfile, 0, 7040); /* Reset all points to black */
++ memcpy(zxfile, ZXheader, 128); /* Create +3DOS header */
++
++ /* Convert the image, character cell by character cell */
++ for (y = 0; y < 24; y++) for (x = 0; x < 32; x++)
++ {
++ CellZX(pic8, w, h, rmap, gmap, bmap, x, y, zxfile);
++ }
++ rv = 0;
++ if (fwrite(zxfile, 1, 7040, fp) < 7040) rv = -1;
++
++ if (ptype == PIC24) free(pic8);
++ free(zxfile);
++
++ if (ferror(fp)) rv = -1;
++
++ return rv;
++}
++
diff --git a/source/xap/xv/xv-3.10a-jumbo-enh-patch-20050501.txt b/source/xap/xv/xv-3.10a-jumbo-enh-patch-20050501.txt
deleted file mode 100644
index d78b601a9..000000000
--- a/source/xap/xv/xv-3.10a-jumbo-enh-patch-20050501.txt
+++ /dev/null
@@ -1,28167 +0,0 @@
-diff : xv-3.10a-jumbo-enh-patch-20050501.txt
-
-This is a unified diff. It should be applied (using Larry Wall's "patch"
-program) to the XV 3.10a sources AFTER the jumbo-fixes patch has already
-been applied.
-
-diffs below:
- Imakefile
- Makefile
- Makefile.std
- README.jumbo
- README.pcd
- bggen.c
- bits/br_bzip2
- bits/br_mag
- bits/br_maki
- bits/br_mgcsfx
- bits/br_pcd
- bits/br_pi
- bits/br_pic
- bits/br_pic2
- bits/br_png
- bits/br_zx
- config.h
- tiff/Makefile
- vdcomp.c
- xcmap.c
- xv.c
- xv.h
- xv_mgcsfx.sample
- xvbmp.c
- xvbrowse.c
- xvctrl.c
- xvdial.c
- xvdir.c
- xvevent.c
- xvfits.c
- xvgam.c
- xvgif.c
- xvgrab.c
- xvhips.c
- xvhips.h
- xvimage.c
- xvinfo.c
- xvjpeg.c
- xvmag.c
- xvmaki.c
- xvmgcsfx.c
- xvmisc.c
- xvml.c
- xvml.h
- xvpbm.c
- xvpcd.c
- xvpds.c
- xvpi.c
- xvpic.c
- xvpic2.c
- xvpng.c
- xvpopup.c
- xvps.c
- xvrle.c
- xvroot.c
- xvsmooth.c
- xvtext.c
- xvtiff.c
- xvtiffwr.c
- xvvd.c
- xvwbmp.c
- xvxpm.c
- xvzx.c
-
-
-diff -ruN xv-3.10a-bugfixes/Imakefile xv-3.10a-enhancements/Imakefile
---- xv-3.10a-bugfixes/Imakefile 1995-01-13 12:24:01.000000000 -0800
-+++ xv-3.10a-enhancements/Imakefile 2005-04-17 14:04:22.000000000 -0700
-@@ -104,6 +104,11 @@
- SGI = -Dsgi
- #endif
-
-+/* install directory of xv_mgcsfx.sample. */
-+MGCSFXDIR = $(LIBDIR)
-+/* Directory of default configuration file. */
-+MGCSFX = -DMGCSFXDIR=\"$(MGCSFXDIR)\"
-+
-
-
-
-@@ -137,6 +142,8 @@
- #if defined(SCOArchitecture)
- SCO= -Dsco -DPOSIX -DNO_RANDOM
- SYS_LIBRARIES= -lm -lc -lx
-+#elif defined(HPArchitecture)
-+SYS_LIBRARIES= -lm -lV3
- #else
- SYS_LIBRARIES= -lm
- #endif
-@@ -147,7 +154,7 @@
-
- DEFINES= $(SCO) $(UNIX) $(NODIRENT) $(VPRINTF) $(TIMERS) \
- $(HPUX7) $(JPEG) $(TIFF) $(PDS) $(DXWM) $(RAND) \
-- $(BACKING_STORE) $(BSDTYPES) $(SGI)
-+ $(BACKING_STORE) $(BSDTYPES) $(SGI) $(MGCSFX)
-
- INCLUDES = $(JPEGINCLUDE) $(TIFFINCLUDE)
-
-@@ -157,7 +164,9 @@
- xvdial.c xvgraf.c xvsunras.c xvjpeg.c xvps.c xvpopup.c xvdflt.c \
- xvtiff.c xvtiffwr.c xvpds.c xvrle.c xviris.c xvgrab.c vprintf.c \
- xvbrowse.c xvtext.c xvpcx.c xviff.c xvtarga.c xvxpm.c xvcut.c \
-- xvxwd.c xvfits.c
-+ xvxwd.c xvfits.c xvpng.c xvzx.c xvwbmp.c xvpcd.c \
-+ xvmag.c xvpic.c xvmaki.c xvpi.c xvpic2.c xvvd.c xvmgcsfx.c \
-+ xvml.c
-
- OBJS1 = xv.o xvevent.o xvroot.o xvmisc.o xvimage.o xvcolor.o xvsmooth.o \
- xv24to8.o xvgif.o xvpm.o xvinfo.o xvctrl.o xvscrl.o xvalg.o \
-@@ -165,7 +174,9 @@
- xvdial.o xvgraf.o xvsunras.o xvjpeg.o xvps.o xvpopup.o xvdflt.o \
- xvtiff.o xvtiffwr.o xvpds.o xvrle.o xviris.o xvgrab.o vprintf.o \
- xvbrowse.o xvtext.o xvpcx.o xviff.o xvtarga.o xvxpm.o xvcut.o \
-- xvxwd.o xvfits.o
-+ xvxwd.o xvfits.o xvpng.o xvzx.o xvwbmp.o xvpcd.o \
-+ xvmag.o xvpic.o xvmaki.o xvpi.o xvpic2.o xvvd.o xvmgcsfx.o \
-+ xvml.o
-
- SRCS2= bggen.c
- OBJS2= bggen.o
-@@ -266,6 +277,8 @@
- InstallManPageLong(docs/xvp2p,$(MANDIR),xvpictoppm)
- InstallManPageLong(docs/vdcomp,$(MANDIR),vdcomp)
-
-+InstallNonExecFile(xv_mgcsfx.sample,$(MGCSFXDIR))
-+
- tar:
- tar cf xv.tar Makefile* Imakefile *.c *.h bits docs \
- docs unsupt vms $(JPEGDIR) $(TIFFDIR) $(MISC)
-diff -ruN xv-3.10a-bugfixes/Makefile xv-3.10a-enhancements/Makefile
---- xv-3.10a-bugfixes/Makefile 2005-04-06 08:17:13.000000000 -0700
-+++ xv-3.10a-enhancements/Makefile 2005-05-01 10:23:32.000000000 -0700
-@@ -41,10 +41,14 @@
-
-
- ### Installation locations
--BINDIR = /usr/local/bin
--MANDIR = /usr/local/man/man1
-+PREFIX = /usr/local
-+BINDIR = $(PREFIX)/bin
-+MANDIR = $(PREFIX)/man/man1
- MANSUF = 1
--LIBDIR = /usr/local/lib
-+DOCDIR = $(PREFIX)/doc/xv-3.10a
-+LIBDIR = $(PREFIX)/lib/xv
-+SYSCONFDIR = $(PREFIX)/etc
-+DESTDIR =
-
-
- buildit: all
-@@ -59,13 +63,59 @@
- ### on your machine, *COMMENT OUT* the following lines
- ###
- JPEG = -DDOJPEG
--JPEGDIR = jpeg
--JPEGINC = -I$(JPEGDIR)
--JPEGLIB = $(JPEGDIR)/libjpeg.a
--$(JPEGDIR)/jconfig.h:
-- cd $(JPEGDIR) ; ./configure CC='$(CC)'
--$(JPEGLIB): $(JPEGDIR)/jconfig.h
-- cd $(JPEGDIR) ; make
-+#JPEGDIR = jpeg
-+JPEGDIR = /usr
-+#JPEGDIR = /usr/local
-+#JPEGDIR = ../../libjpeg
-+###
-+JPEGINC = -I$(JPEGDIR)/include
-+#JPEGINC = -I$(JPEGDIR)
-+###
-+JPEGLIB = -L$(JPEGDIR)/lib -ljpeg
-+#JPEGLIB = -L$(JPEGDIR) -ljpeg
-+#JPEGLIB = $(JPEGDIR)/libjpeg.a
-+###
-+### this is intended to build the ancient version (5a) that's included in the
-+### "jpeg" subdir of XV, not an arbitrary copy of libjpeg:
-+###
-+#$(JPEGDIR)/jconfig.h:
-+# cd $(JPEGDIR) ; ./configure CC='$(CC)'
-+#$(JPEGLIB): $(JPEGDIR)/jconfig.h
-+# cd $(JPEGDIR) ; make
-+
-+
-+###
-+### if, for whatever reason, you're unable to get the PNG library to compile
-+### on your machine, *COMMENT OUT* the following lines
-+###
-+PNG = -DDOPNG
-+PNGDIR = /usr
-+#PNGDIR = /usr/local
-+#PNGDIR = ../../libpng
-+###
-+PNGINC = -I$(PNGDIR)/include
-+#PNGINC = -I$(PNGDIR)
-+###
-+PNGLIB = -L$(PNGDIR)/lib -lpng
-+#PNGLIB = -L$(PNGDIR) -lpng
-+#PNGLIB = $(PNGDIR)/libpng.a
-+
-+
-+###
-+### if, for whatever reason, you're unable to get both the PNG library and
-+### (newer versions of) the TIFF library to compile on your machine, *COMMENT
-+### OUT* the following lines
-+###
-+ZLIBDIR = /usr
-+#ZLIBDIR = /usr/local
-+#ZLIBDIR = ../../zlib
-+###
-+ZLIBINC = -I$(ZLIBDIR)/include
-+#ZLIBINC = -I$(ZLIBDIR)
-+###
-+ZLIBLIB = -L$(ZLIBDIR)/lib -lz
-+#ZLIBLIB = -L$(ZLIBDIR) -lz
-+#ZLIBLIB = $(ZLIBDIR)/libz.a
-
-
- ###
-@@ -80,17 +130,32 @@
- ###
- #TIFF = -DDOTIFF
- TIFF = -DDOTIFF -DUSE_TILED_TIFF_BOTLEFT_FIX
--TIFFDIR = tiff
--TIFFINC = -I$(TIFFDIR)
--TIFFLIB = $(TIFFDIR)/libtiff.a
--$(TIFFLIB):
-- ( cd $(TIFFDIR) ; make CC='$(CC)' COPTS='$(CCOPTS) $(MCHN)' )
-+#TIFFDIR = tiff
-+TIFFDIR = /usr
-+#TIFFDIR = /usr/local
-+#TIFFDIR = ../../libtiff
-+###
-+TIFFINC = -I$(TIFFDIR)/include
-+#TIFFINC = -I$(TIFFDIR)
-+###
-+### libtiff 3.5 and up may be compiled with zlib and libjpeg, but dependency
-+### is properly handled in LIBS line ~143 lines below
-+###
-+TIFFLIB = -L$(TIFFDIR)/lib -ltiff
-+#TIFFLIB = -L$(TIFFDIR) -ltiff
-+#TIFFLIB = $(TIFFDIR)/libtiff.a
-+###
-+### this is intended to build the ancient version (3.3.016 beta) that's included
-+### in the "tiff" subdir of XV, not an arbitrary copy of libtiff:
-+###
-+#$(TIFFLIB):
-+# ( cd $(TIFFDIR) ; make CC='$(CC)' COPTS='$(CCOPTS) $(MCHN)' )
-
-
- ###
- ### if, for whatever reason, you're unable to get the PDS/VICAR support
- ### to compile (xvpds.c, and vdcomp.c), *COMMENT OUT* the following line,
--### and also remove 'vdcomp' from the 'all:' dependancy
-+### and also remove 'vdcomp' from the 'all:' dependency
- ###
- PDS = -DDOPDS
-
-@@ -98,8 +163,10 @@
- #----------System V----------
-
- # if you are running on a SysV-based machine, such as HP, Silicon Graphics,
--# Solaris, etc., uncomment the following line to get mostly there.
--#UNIX = -DSVR4
-+# Solaris, etc.; uncomment one of the following lines to get you *most* of
-+# the way there. SYSV means System V R3.
-+# UNIX = -DSVR4
-+# UNIX = -DSYSV
-
-
- #----------Machine-Specific Configurations----------
-@@ -121,12 +188,15 @@
- # To use old HP compilers (HPUX 7.0 or so), you may need
- #MCHN= -Dhpux -D_HPUX_SOURCE +Ns4000
- #
--# also, if you're using HP's compiler, add '-Aa' to whichever of those
-+# Also, if you're using HP's compiler, add '-Aa' to whichever of those
- # two lines you're using, to turn on ANSI C mode. Or so I'm told.
- #
--# note: You may need to add '-I/usr/include/X11R5' (or R6, or whatever)
-+# Note: You may need to add '-I/usr/include/X11R5' (or R6, or whatever)
- # to whichever of those lines you used, as HP tends to store their X11
- # include files in a non-standard place...
-+#
-+# And you probably have to add '-lV3' to the end of the LIBS def when
-+# using XV's AUTO_EXPAND option.
-
-
- ### for LINUX, uncomment the following line
-@@ -205,6 +275,16 @@
- #VPRINTF = -DNEED_VPRINTF -DLONGINT -DNOSTDHDRS
-
-
-+# if your X Window System compiled with -DX_LOCALE,
-+# uncomment the following line:
-+# TVL10N = -DX_LOCALE
-+
-+# Install directory of xv_mgcsfx.sample.
-+MGCSFXDIR = $(LIBDIR)
-+# Directory of default configuration file.
-+MGCSFX = -DMGCSFXDIR=\"$(MGCSFXDIR)\"
-+
-+
-
-
- ################ END OF CONFIGURATION OPTIONS #################
-@@ -212,13 +292,14 @@
-
-
-
--CFLAGS = $(CCOPTS) $(JPEG) $(JPEGINC) $(TIFF) $(TIFFINC) $(PDS) \
-- $(NODIRENT) $(VPRINTF) $(TIMERS) $(UNIX) $(BSDTYPES) $(RAND) \
-- $(DXWM) $(MCHN)
-+CFLAGS = $(CCOPTS) $(PNG) $(PNGINC) $(ZLIBINC) $(JPEG) $(JPEGINC) \
-+ $(TIFF) $(TIFFINC) $(PDS) $(NODIRENT) $(VPRINTF) $(TIMERS) \
-+ $(UNIX) $(BSDTYPES) $(RAND) $(DXWM) $(MCHN) $(TVL10N) $(MGCSFX) \
-+ -DSYSCONFDIR=\"$(SYSCONFDIR)\" -DXVEXECPATH=\"$(LIBDIR)\"
-
- ### remove -lm for BeOS:
--LIBS = -lX11 $(JPEGLIB) $(TIFFLIB) -lm
--#LIBS = -lX11 $(JPEGLIB) $(TIFFLIB)
-+LIBS = $(TIFFLIB) $(JPEGLIB) $(PNGLIB) $(ZLIBLIB) -L/usr/X11R6/lib -lX11 -lm
-+#LIBS = $(TIFFLIB) $(JPEGLIB) $(PNGLIB) $(ZLIBLIB) -lX11
-
- OBJS = xv.o xvevent.o xvroot.o xvmisc.o xvimage.o xvcolor.o xvsmooth.o \
- xv24to8.o xvgif.o xvpm.o xvinfo.o xvctrl.o xvscrl.o xvalg.o \
-@@ -226,7 +307,9 @@
- xvdial.o xvgraf.o xvsunras.o xvjpeg.o xvps.o xvpopup.o xvdflt.o \
- xvtiff.o xvtiffwr.o xvpds.o xvrle.o xviris.o xvgrab.o vprintf.o \
- xvbrowse.o xvtext.o xvpcx.o xviff.o xvtarga.o xvxpm.o xvcut.o \
-- xvxwd.o xvfits.o
-+ xvxwd.o xvfits.o xvpng.o xvzx.o xvwbmp.o xvpcd.o xvhips.o \
-+ xvmag.o xvpic.o xvmaki.o xvpi.o xvpic2.o xvvd.o xvmgcsfx.o \
-+ xvml.o
-
- MISC = README INSTALL CHANGELOG IDEAS
-
-@@ -236,10 +319,12 @@
-
-
-
--all: $(JPEGLIB) $(TIFFLIB) xv bggen vdcomp xcmap xvpictoppm
-+#all: $(JPEGLIB) $(TIFFLIB) xv bggen vdcomp xcmap xvpictoppm
-+all: xv bggen vdcomp xcmap xvpictoppm
-
-
--xv: $(OBJS) $(JPEGLIB) $(TIFFLIB)
-+#xv: $(OBJS) $(JPEGLIB) $(TIFFLIB)
-+xv: $(OBJS)
- $(CC) -o xv $(CFLAGS) $(OBJS) $(LIBS)
-
- bggen: bggen.c
-@@ -268,13 +353,14 @@
-
-
- install: all
-- cp xv bggen vdcomp xcmap xvpictoppm $(BINDIR)
-- cp docs/xv.man $(MANDIR)/xv.$(MANSUF)
-- cp docs/bggen.man $(MANDIR)/bggen.$(MANSUF)
-- cp docs/xcmap.man $(MANDIR)/xcmap.$(MANSUF)
-- cp docs/xvp2p.man $(MANDIR)/xvpictoppm.$(MANSUF)
-- cp docs/vdcomp.man $(MANDIR)/vdcomp.$(MANSUF)
-- cp docs/xvdocs.ps* $(LIBDIR)
-+ cp xv bggen vdcomp xcmap xvpictoppm $(DESTDIR)$(BINDIR)
-+ cp docs/xv.man $(DESTDIR)$(MANDIR)/xv.$(MANSUF)
-+ cp docs/bggen.man $(DESTDIR)$(MANDIR)/bggen.$(MANSUF)
-+ cp docs/xcmap.man $(DESTDIR)$(MANDIR)/xcmap.$(MANSUF)
-+ cp docs/xvp2p.man $(DESTDIR)$(MANDIR)/xvpictoppm.$(MANSUF)
-+ cp docs/vdcomp.man $(DESTDIR)$(MANDIR)/vdcomp.$(MANSUF)
-+ cp docs/xvdocs.ps* $(DESTDIR)$(LIBDIR) # or $(DESTDIR)$(DOCDIR)
-+ #cp xv_mgcsfx.sample $(DESTDIR)$(SYSCONFDIR)/xv_mgcsfx
-
- tar:
- # tar only local jpeg and tiff dirs, not user's or system's copies:
-@@ -299,7 +385,7 @@
- xvbrowse.o: bits/br_pcx bits/br_jfif bits/br_tiff bits/br_pds
- xvbrowse.o: bits/br_ps bits/br_iff bits/br_targa bits/br_xpm
- xvbrowse.o: bits/br_trash bits/fcurs bits/fccurs bits/fdcurs bits/fcursm
--xvbrowse.o: bits/br_xwd
-+xvbrowse.o: bits/br_xwd bits/br_png bits/br_zx bits/br_pcd bits/br_bzip2
-
- xvbutt.o: bits/cboard50 bits/rb_frame bits/rb_frame1 bits/rb_top
- xvbutt.o: bits/rb_bot bits/rb_dtop bits/rb_dbot bits/rb_body
-diff -ruN xv-3.10a-bugfixes/Makefile.std xv-3.10a-enhancements/Makefile.std
---- xv-3.10a-bugfixes/Makefile.std 2005-04-06 08:17:13.000000000 -0700
-+++ xv-3.10a-enhancements/Makefile.std 2005-05-01 10:23:32.000000000 -0700
-@@ -41,10 +41,14 @@
-
-
- ### Installation locations
--BINDIR = /usr/local/bin
--MANDIR = /usr/local/man/man1
-+PREFIX = /usr/local
-+BINDIR = $(PREFIX)/bin
-+MANDIR = $(PREFIX)/man/man1
- MANSUF = 1
--LIBDIR = /usr/local/lib
-+DOCDIR = $(PREFIX)/doc/xv-3.10a
-+LIBDIR = $(PREFIX)/lib/xv
-+SYSCONFDIR = $(PREFIX)/etc
-+DESTDIR =
-
-
- buildit: all
-@@ -59,13 +63,59 @@
- ### on your machine, *COMMENT OUT* the following lines
- ###
- JPEG = -DDOJPEG
--JPEGDIR = jpeg
--JPEGINC = -I$(JPEGDIR)
--JPEGLIB = $(JPEGDIR)/libjpeg.a
--$(JPEGDIR)/jconfig.h:
-- cd $(JPEGDIR) ; ./configure CC='$(CC)'
--$(JPEGLIB): $(JPEGDIR)/jconfig.h
-- cd $(JPEGDIR) ; make
-+#JPEGDIR = jpeg
-+JPEGDIR = /usr
-+#JPEGDIR = /usr/local
-+#JPEGDIR = ../../libjpeg
-+###
-+JPEGINC = -I$(JPEGDIR)/include
-+#JPEGINC = -I$(JPEGDIR)
-+###
-+JPEGLIB = -L$(JPEGDIR)/lib -ljpeg
-+#JPEGLIB = -L$(JPEGDIR) -ljpeg
-+#JPEGLIB = $(JPEGDIR)/libjpeg.a
-+###
-+### this is intended to build the ancient version (5a) that's included in the
-+### "jpeg" subdir of XV, not an arbitrary copy of libjpeg:
-+###
-+#$(JPEGDIR)/jconfig.h:
-+# cd $(JPEGDIR) ; ./configure CC='$(CC)'
-+#$(JPEGLIB): $(JPEGDIR)/jconfig.h
-+# cd $(JPEGDIR) ; make
-+
-+
-+###
-+### if, for whatever reason, you're unable to get the PNG library to compile
-+### on your machine, *COMMENT OUT* the following lines
-+###
-+PNG = -DDOPNG
-+PNGDIR = /usr
-+#PNGDIR = /usr/local
-+#PNGDIR = ../../libpng
-+###
-+PNGINC = -I$(PNGDIR)/include
-+#PNGINC = -I$(PNGDIR)
-+###
-+PNGLIB = -L$(PNGDIR)/lib -lpng
-+#PNGLIB = -L$(PNGDIR) -lpng
-+#PNGLIB = $(PNGDIR)/libpng.a
-+
-+
-+###
-+### if, for whatever reason, you're unable to get both the PNG library and
-+### (newer versions of) the TIFF library to compile on your machine, *COMMENT
-+### OUT* the following lines
-+###
-+ZLIBDIR = /usr
-+#ZLIBDIR = /usr/local
-+#ZLIBDIR = ../../zlib
-+###
-+ZLIBINC = -I$(ZLIBDIR)/include
-+#ZLIBINC = -I$(ZLIBDIR)
-+###
-+ZLIBLIB = -L$(ZLIBDIR)/lib -lz
-+#ZLIBLIB = -L$(ZLIBDIR) -lz
-+#ZLIBLIB = $(ZLIBDIR)/libz.a
-
-
- ###
-@@ -80,17 +130,32 @@
- ###
- #TIFF = -DDOTIFF
- TIFF = -DDOTIFF -DUSE_TILED_TIFF_BOTLEFT_FIX
--TIFFDIR = tiff
--TIFFINC = -I$(TIFFDIR)
--TIFFLIB = $(TIFFDIR)/libtiff.a
--$(TIFFLIB):
-- ( cd $(TIFFDIR) ; make CC='$(CC)' COPTS='$(CCOPTS) $(MCHN)' )
-+#TIFFDIR = tiff
-+TIFFDIR = /usr
-+#TIFFDIR = /usr/local
-+#TIFFDIR = ../../libtiff
-+###
-+TIFFINC = -I$(TIFFDIR)/include
-+#TIFFINC = -I$(TIFFDIR)
-+###
-+### libtiff 3.5 and up may be compiled with zlib and libjpeg, but dependency
-+### is properly handled in LIBS line ~143 lines below
-+###
-+TIFFLIB = -L$(TIFFDIR)/lib -ltiff
-+#TIFFLIB = -L$(TIFFDIR) -ltiff
-+#TIFFLIB = $(TIFFDIR)/libtiff.a
-+###
-+### this is intended to build the ancient version (3.3.016 beta) that's included
-+### in the "tiff" subdir of XV, not an arbitrary copy of libtiff:
-+###
-+#$(TIFFLIB):
-+# ( cd $(TIFFDIR) ; make CC='$(CC)' COPTS='$(CCOPTS) $(MCHN)' )
-
-
- ###
- ### if, for whatever reason, you're unable to get the PDS/VICAR support
- ### to compile (xvpds.c, and vdcomp.c), *COMMENT OUT* the following line,
--### and also remove 'vdcomp' from the 'all:' dependancy
-+### and also remove 'vdcomp' from the 'all:' dependency
- ###
- PDS = -DDOPDS
-
-@@ -98,8 +163,10 @@
- #----------System V----------
-
- # if you are running on a SysV-based machine, such as HP, Silicon Graphics,
--# Solaris, etc., uncomment the following line to get mostly there.
--#UNIX = -DSVR4
-+# Solaris, etc.; uncomment one of the following lines to get you *most* of
-+# the way there. SYSV means System V R3.
-+# UNIX = -DSVR4
-+# UNIX = -DSYSV
-
-
- #----------Machine-Specific Configurations----------
-@@ -121,12 +188,15 @@
- # To use old HP compilers (HPUX 7.0 or so), you may need
- #MCHN= -Dhpux -D_HPUX_SOURCE +Ns4000
- #
--# also, if you're using HP's compiler, add '-Aa' to whichever of those
-+# Also, if you're using HP's compiler, add '-Aa' to whichever of those
- # two lines you're using, to turn on ANSI C mode. Or so I'm told.
- #
--# note: You may need to add '-I/usr/include/X11R5' (or R6, or whatever)
-+# Note: You may need to add '-I/usr/include/X11R5' (or R6, or whatever)
- # to whichever of those lines you used, as HP tends to store their X11
- # include files in a non-standard place...
-+#
-+# And you probably have to add '-lV3' to the end of the LIBS def when
-+# using XV's AUTO_EXPAND option.
-
-
- ### for LINUX, uncomment the following line
-@@ -205,6 +275,16 @@
- #VPRINTF = -DNEED_VPRINTF -DLONGINT -DNOSTDHDRS
-
-
-+# if your X Window System compiled with -DX_LOCALE,
-+# uncomment the following line:
-+# TVL10N = -DX_LOCALE
-+
-+# Install directory of xv_mgcsfx.sample.
-+MGCSFXDIR = $(LIBDIR)
-+# Directory of default configuration file.
-+MGCSFX = -DMGCSFXDIR=\"$(MGCSFXDIR)\"
-+
-+
-
-
- ################ END OF CONFIGURATION OPTIONS #################
-@@ -212,13 +292,14 @@
-
-
-
--CFLAGS = $(CCOPTS) $(JPEG) $(JPEGINC) $(TIFF) $(TIFFINC) $(PDS) \
-- $(NODIRENT) $(VPRINTF) $(TIMERS) $(UNIX) $(BSDTYPES) $(RAND) \
-- $(DXWM) $(MCHN)
-+CFLAGS = $(CCOPTS) $(PNG) $(PNGINC) $(ZLIBINC) $(JPEG) $(JPEGINC) \
-+ $(TIFF) $(TIFFINC) $(PDS) $(NODIRENT) $(VPRINTF) $(TIMERS) \
-+ $(UNIX) $(BSDTYPES) $(RAND) $(DXWM) $(MCHN) $(TVL10N) $(MGCSFX) \
-+ -DSYSCONFDIR=\"$(SYSCONFDIR)\" -DXVEXECPATH=\"$(LIBDIR)\"
-
- ### remove -lm for BeOS:
--LIBS = -lX11 $(JPEGLIB) $(TIFFLIB) -lm
--#LIBS = -lX11 $(JPEGLIB) $(TIFFLIB)
-+LIBS = $(TIFFLIB) $(JPEGLIB) $(PNGLIB) $(ZLIBLIB) -L/usr/X11R6/lib -lX11 -lm
-+#LIBS = $(TIFFLIB) $(JPEGLIB) $(PNGLIB) $(ZLIBLIB) -lX11
-
- OBJS = xv.o xvevent.o xvroot.o xvmisc.o xvimage.o xvcolor.o xvsmooth.o \
- xv24to8.o xvgif.o xvpm.o xvinfo.o xvctrl.o xvscrl.o xvalg.o \
-@@ -226,7 +307,9 @@
- xvdial.o xvgraf.o xvsunras.o xvjpeg.o xvps.o xvpopup.o xvdflt.o \
- xvtiff.o xvtiffwr.o xvpds.o xvrle.o xviris.o xvgrab.o vprintf.o \
- xvbrowse.o xvtext.o xvpcx.o xviff.o xvtarga.o xvxpm.o xvcut.o \
-- xvxwd.o xvfits.o
-+ xvxwd.o xvfits.o xvpng.o xvzx.o xvwbmp.o xvpcd.o xvhips.o \
-+ xvmag.o xvpic.o xvmaki.o xvpi.o xvpic2.o xvvd.o xvmgcsfx.o \
-+ xvml.o
-
- MISC = README INSTALL CHANGELOG IDEAS
-
-@@ -236,10 +319,12 @@
-
-
-
--all: $(JPEGLIB) $(TIFFLIB) xv bggen vdcomp xcmap xvpictoppm
-+#all: $(JPEGLIB) $(TIFFLIB) xv bggen vdcomp xcmap xvpictoppm
-+all: xv bggen vdcomp xcmap xvpictoppm
-
-
--xv: $(OBJS) $(JPEGLIB) $(TIFFLIB)
-+#xv: $(OBJS) $(JPEGLIB) $(TIFFLIB)
-+xv: $(OBJS)
- $(CC) -o xv $(CFLAGS) $(OBJS) $(LIBS)
-
- bggen: bggen.c
-@@ -268,13 +353,14 @@
-
-
- install: all
-- cp xv bggen vdcomp xcmap xvpictoppm $(BINDIR)
-- cp docs/xv.man $(MANDIR)/xv.$(MANSUF)
-- cp docs/bggen.man $(MANDIR)/bggen.$(MANSUF)
-- cp docs/xcmap.man $(MANDIR)/xcmap.$(MANSUF)
-- cp docs/xvp2p.man $(MANDIR)/xvpictoppm.$(MANSUF)
-- cp docs/vdcomp.man $(MANDIR)/vdcomp.$(MANSUF)
-- cp docs/xvdocs.ps* $(LIBDIR)
-+ cp xv bggen vdcomp xcmap xvpictoppm $(DESTDIR)$(BINDIR)
-+ cp docs/xv.man $(DESTDIR)$(MANDIR)/xv.$(MANSUF)
-+ cp docs/bggen.man $(DESTDIR)$(MANDIR)/bggen.$(MANSUF)
-+ cp docs/xcmap.man $(DESTDIR)$(MANDIR)/xcmap.$(MANSUF)
-+ cp docs/xvp2p.man $(DESTDIR)$(MANDIR)/xvpictoppm.$(MANSUF)
-+ cp docs/vdcomp.man $(DESTDIR)$(MANDIR)/vdcomp.$(MANSUF)
-+ cp docs/xvdocs.ps* $(DESTDIR)$(LIBDIR) # or $(DESTDIR)$(DOCDIR)
-+ #cp xv_mgcsfx.sample $(DESTDIR)$(SYSCONFDIR)/xv_mgcsfx
-
- tar:
- # tar only local jpeg and tiff dirs, not user's or system's copies:
-@@ -299,7 +385,7 @@
- xvbrowse.o: bits/br_pcx bits/br_jfif bits/br_tiff bits/br_pds
- xvbrowse.o: bits/br_ps bits/br_iff bits/br_targa bits/br_xpm
- xvbrowse.o: bits/br_trash bits/fcurs bits/fccurs bits/fdcurs bits/fcursm
--xvbrowse.o: bits/br_xwd
-+xvbrowse.o: bits/br_xwd bits/br_png bits/br_zx bits/br_pcd bits/br_bzip2
-
- xvbutt.o: bits/cboard50 bits/rb_frame bits/rb_frame1 bits/rb_top
- xvbutt.o: bits/rb_bot bits/rb_dtop bits/rb_dbot bits/rb_body
-diff -ruN xv-3.10a-bugfixes/README.jumbo xv-3.10a-enhancements/README.jumbo
---- xv-3.10a-bugfixes/README.jumbo 2005-04-10 19:55:23.000000000 -0700
-+++ xv-3.10a-enhancements/README.jumbo 2005-05-01 13:45:58.000000000 -0700
-@@ -14,10 +14,10 @@
- available from John's XV site (http://www.trilon.com/xv/downloads.html
- and ftp://ftp.trilon.com/pub/xv/patches/), plus a number of my own fixes
- and additions, plus quite a few from other people--though not all of the
--ones I'd intended to (sorry, SJT, AT, and JPD!) due to lack of time after
--dealing with the latest security issue (which I discovered, sigh). They're
--still not fully complete, and it's possible they never will be, but I do
--plan to continue working on them whenever the mood strikes--and I may even
-+ones I'd intended to, due to lack of time after dealing with the latest
-+set of security issues (one of which I discovered, sigh). They're still
-+not fully complete, and it's possible they never will be, but I do plan
-+to continue tinkering with them whenever the mood strikes--and I may even
- release them publicly on rare occasions. (At the current rate, it looks
- like once a year may be the best we can hope for...we'll see.)
-
-@@ -26,91 +26,86 @@
-
- - Landon Curt "chongo" Noll (http://www.isthe.com/chongo/)
- http://www.isthe.com/chongo/src/xv-patch/
-- - Mark Ashley <mark@ibiblio.org>
-+ - Mark Ashley <mark ibiblio.org>
- http://www.ibiblio.org/pub/packages/solaris/sparc/html/xv.3.10a.p19.html
-- - Peter Jordan <pete@dc.seflin.org>
-+ - Peter Jordan <pete dc.seflin.org>
- http://www.ibiblio.org/pub/Linux/apps/graphics/viewers/X/xv-3.10a.patch.*
- - Uwe F. Mayer (http://www.tux.org/~mayer/)
- http://www.tux.org/~mayer/linux/book/node311.html
-- - Kurt Wall <kwall@kurtwerks.com>
-+ - Kurt Wall <kwall kurtwerks.com>
- http://www.kurtwerks.com/software/xv.html
- - Chisato Yamauchi (http://phe.phyas.aichi-edu.ac.jp/~cyamauch/index_en.html)
- http://phe.phyas.aichi-edu.ac.jp/~cyamauch/xv.html
-- - Daisuke Yabuki <dxy@optix.org>
-+ - Daisuke Yabuki <dxy optix.org>
- http://www.optix.org/~dxy/solaris/xv/
- - Pekoe (http://pekoe.lair.net/)
- http://pekoe.lair.net/diary/xv.html
- - FreeBSD FreshPorts
- http://www.freshports.org/graphics/xv/
-- - <sudakyo@fat.coara.or.jp>
-+ - Kyoichiro Suda <sudakyo fat.coara.or.jp>
- http://www.coara.or.jp/~sudakyo/XV_jp.html
-
--I very much doubt that this is an exhaustive list. So far, most of the other
--patch-sets appear not to be quite as extensive or as up-to-date as my own,
--although the last three or four do include the [large] Japanese extension
--patches that I omitted--not because they're unworthy, but simply because I
--didn't find them until collisions between the two sets of patches had become
--a large problem. (Maybe for the next release... I'd intended to try for
--this release, but the security issues ended up taking almost all of my
--available time. And, to be honest, from my perspective, inclusion of the
--jp-extension patches is more for completeness' sake than personal interest,
--so their priority is fairly low.)
-+I very much doubt that this is an exhaustive list. So far, most of the
-+other patch-sets appear not to be as extensive or as up-to-date as my own,
-+particularly now that the (very large) "Japanese extension" patches are
-+incorporated--big thanks to Werner Fink of SuSE for that!
-
- Below I summarize the component patches that are encompassed by my jumbo
- bugfixes and jumbo enhancements patches. Unfortunately, some of my own
- additions never saw the light of day as standalone patches, but considering
- the number of overlaps (collisions) already implicit in this list, it would
--have been difficult to accomplish even if I'd had the time. In any case,
--they're present in these jumbo patches but not chongo's, so those who _really_
--care can "subtract" the two sets of patches to see what I did.
-+have been difficult to accomplish even if I'd had the time.
-
- Here's a quick guide to the "third-party" credits in the lists below:
-
- AAC = Andrey A. Chernov [ache]
- (http://cvsweb.freebsd.org/ports/graphics/xv/files/patch-ab)
-- AD = Andreas Dilger (adilger@clusterfs.com)
-- AL = Alexander Lehmann (lehmann@usa.net)
-+ AD = Andreas Dilger (adilger clusterfs.com)
-+ AL = Alexander Lehmann (lehmann usa.net)
- AT = Anthony Thyssen (http://www.cit.gu.edu.au/~anthony/)
- DAC = David A. Clunie (http://www.dclunie.com/xv-pcd.html)
-- EK = Egmont Koblinger (egmont@users.sourceforge.net)
-+ EK = Egmont Koblinger (egmont users.sourceforge.net)
- GRR = Greg Roelofs (http://pobox.com/~newt/)
- GV = Guido Vollbeding (http://sylvana.net/guido/)
-+ IM = IKEMOTO Masahiro (ikeyan airlab.cs.ritsumei.ac.jp)
- JCE = John C. Elliott (http://www.seasip.demon.co.uk/ZX/zxdload.html)
- JHB = John H. Bradley, of course (http://www.trilon.com/xv/)
- JPD = Jean-Pierre Demailly (http://www-fourier.ujf-grenoble.fr/~demailly/)
- JR = John Rochester (http://www.freebsd.org/cgi/query-pr.cgi?pr=2920)
- (also http://cvsweb.freebsd.org/ports/graphics/xv/files/patch-af, -ag)
- JZ = Joe Zbiciak (http://spatula-city.org/~im14u2c/)
-+ KS = Kyoichiro Suda (http://www.coara.or.jp/~sudakyo/XV_jp.html)
- LCN = Landon Curt "chongo" Noll (http://www.isthe.com/chongo/)
-+ LJ = Larry Jones (lawrence.jones ugs.com)
- PBJ = Peter Jordan (http://www.ibiblio.org/pub/Linux/apps/graphics/viewers/X/)
- PSV = Pawel S. Veselov (http://manticore.2y.net/wbmp.html)
- SB = Sean Borman (http://www.nd.edu/~sborman/software/xvwheelmouse.html)
-- SJT = TenThumbs (tenthumbs@cybernex.net)
-+ SJT = TenThumbs (tenthumbs cybernex.net)
- TA = Tim Adye (http://hepwww.rl.ac.uk/Adye/xv-psnewstyle.html)
-+ TI = Tetsuya INOUE (tin329 chino.it.okayama-u.ac.jp)
-+ TO = Tavis Ormandy (taviso gentoo.org)
-+ WF = Werner Fink (http://www.suse.de/~werner/)
-
- Other credits are as listed on the XV Downloads page or in the respective
- patches (e.g., the jp-extension patches or within the PNG patch).
-
- Finally, please note that these patches have not been blessed by John Bradley
--in any way (although I copied him on the May 2004 announcement--no response).
--Nor have I personally tested every change and feature! (See the BIG SCARY
--WARNING below for further caveats.) In other words, they're both completely
--unofficial and completely unguaranteed. But they seem to work for me. (And
--when they don't, I fix 'em. Eventually, anyway... ;-) )
--
--One further "final" note: this may well be the last release to include
--separate fix- and enhancements-patches. It is too much of a timesink to
--maintain parallel trees--not to mention parallel makefiles (generic/public
--vs. local/personal, old vs. new libjpeg/libtiff) and xv.h (unregistered/
--public vs. registered/personal), particularly when some fixes come about
--while working on an enhancement. Henceforth--assuming, of course, that
--there _is_ a "henceforth"--I expect to merge the patches into a single
--jumbo patch. (Alternatively, I may simply freeze the current fix-patch
--and continue to evolve only the enhancements patch; in particular, new
--fixes would appear only in it. Either approach would be simple enough;
--feedback as to which would be preferable is welcomed.)
-+in any way (although I copied him on the May 2004 announcement--no response
-+at that time). Nor have I personally tested every change and feature! (See
-+the BIG SCARY WARNING below for further caveats.) In other words, they're
-+both completely unofficial and completely unguaranteed. But they seem to
-+work for me. (And when they don't, I fix 'em. Eventually, anyway... ;-) )
-+
-+One further "final" note: as of this release, I am no longer updating the
-+fixes patch; new stuff (including fixes) now appears only in the enhancements
-+one. It simply became too much of a timesink to maintain parallel trees--not
-+to mention parallel makefiles (generic/public vs. local/personal, old vs.
-+new libjpeg/libtiff) and xv.h (unregistered/public vs. registered/personal),
-+particularly when some fixes came about while working on an enhancement and
-+others were provided by third parties relative to the previous fix+enh state.
-+Hence the mismatched "20050410" date on the fixes patch.
-
--GRR 20050410
-+GRR 20050501
-
-
- How to build
-@@ -158,8 +153,8 @@
- Assuming you have the prerequisites out of the way and aren't scared
- off by the Big Scary Warning, here's the build procedure:
-
-- bzip2 -dc xv-3.10a-jumbo-patches-20050410.tar.bz2 | tar xvf -
-- (or tar xvzf xv-3.10a-jumbo-patches-20050410.tar.gz)
-+ bzip2 -dc xv-3.10a-jumbo-patches-20050501.tar.bz2 | tar xvf -
-+ (or tar xvzf xv-3.10a-jumbo-patches-20050501.tar.gz)
-
- tar xvzf xv-3.10a.tar.gz
-
-@@ -167,7 +162,7 @@
-
- patch -p1 < ../xv-3.10a-jumbo-fix-patch-20050410.txt
-
-- [optional] patch -p1 < ../xv-3.10a-jumbo-enh-patch-20050410.txt
-+ [optional] patch -p1 < ../xv-3.10a-jumbo-enh-patch-20050501.txt
-
- edit Makefile and config.h as directed in INSTALL file (in particular,
- ensure paths to external libraries and header files are correct)
-@@ -221,6 +216,8 @@
- - freebsd-vdcomp-newline.patch (AAC)
- - xv-3.10a.patch.linux (PBJ) [/bin/sh versions of cleandir, RANLIB.sh only]
- - removed trailing white space (GRR) [purely cosmetic]
-+20040523:
-+ - fixed compilation error in registered versions (GRR)
- 20050410:
- - fix for YCbCr oversaturated-green bug(s) in TIFF decoder (GRR)
- - provisional fix for contiguous tiled TIFFs with bottom-* orientation (GRR)
-@@ -265,12 +262,50 @@
- - boosted maximum number of files from 4096 to 32768 (GRR)
- (note that OS kernel limits may also apply; for example, in Linux see
- MAX_ARG_PAGES in linux-<version>/include/linux/binfmts.h)
-- - xv-3.10a-bmp16.patch
-- (from http://www.coara.or.jp/~sudakyo/XV_jp.html)
-+ - xv-3.10a-bmp16.patch (KS)
- - final-image delay (e.g., "-wait 0.2,3" : pause 3 secs on final image) (GRR)
- - xv-numpad.patch (EK)
- - xv-delete-is-not-backspace.patch (EK)
- - made browser window (schnauzer) and icons configurable (AT, GRR)
-+20050501:
-+ - xv-3.10a-bmpfix.patch (WF) [*SECURITY*]
-+ - xv310a-jp-extension-rev5.3.3.tar.gz (TI, IM, ..., WF)
-+ (adds support for MAG, MAKI, Pi, PIC, and PIC2 formats[*]; "magic suffix"
-+ detection/conversion; MacBinary prefixes; archives as virtual filesystems;
-+ multilingual text viewer [though not Unicode]; etc.)
-+ - xv-3.10a-yaos.dif (WF, TO) [*SECURITY*]
-+ (fixes a number of format-string issues and system() calls)
-+ - xv-3.10a.dif (WF) [*SECURITY*]
-+ (fixes more format-string issues, mktemp() and open() calls, and compilation
-+ warnings [mostly from jp-extension patch])
-+ - xv-3.10a-jumbo-jpd_startgrab-patch-20050420.txt (JPD)
-+ - PATCH.alwaysnever (LJ)
-+ - PATCH.bsd (LJ)
-+ - PATCH.linedraw (LJ)
-+ - PATCH.multipage (LJ)
-+ - PATCH.multipageGIF (LJ)
-+ - PATCH.random (LJ)
-+ - PATCH.stat (LJ)
-+ - PATCH.thumbs (LJ)
-+ - xv-startgrab-imake-hips.patch (JPD)
-+ ("hips" portion only; adds support for HIPS image format[*])
-+ - xv-3.10a-formatstr.patch (KS)
-+ - xv-3.10a-shortsleep.patch (KS)
-+ - xv-3.10a-locale-linux.patch (KS)
-+ - xv-3.10a-printkey.patch (KS)
-+ - xv-3.10a-sysconfdir.patch (KS)
-+ - added PREFIX and DESTDIR support to Makefile (KS, GRR)
-+ - xv-3.10a-xvexecpath.patch (but disabled pending fixes) (KS)
-+ - xv-3.10a-zeroquit.patch (KS, GRR)
-+
-+
-+[*] Note that all six of these formats may still suffer from exploitable heap
-+ overflows [*SECURITY*] when decoding images with large (possibly invalid)
-+ dimensions; as a result, they are DISABLED by default. (Search for "GRR
-+ POSSIBLE OVERFLOW / FIXME" comments in xvmag.c, xvmaki.c, xvpi.c, xvpic.c,
-+ xvpic2.c, and xvhips.c, but keep in mind that these may not be exhaustive.)
-+ Users who choose to overlook these security issues can enable any or all
-+ of them by editing config.h.
-
-
- not (yet?) included:
-@@ -284,31 +319,21 @@
- -rw-r--r-- 42397 Mar 11 2004 xv-3.10a-download-test2.patch
- -rw-r--r-- 47679 Mar 11 2004 xv-3.10a-download-test3.patch
- -rw-r--r-- 52745 Mar 11 2004 xv-3.10a-download-test4.patch
-- -rw-r--r-- 415 Mar 11 2004 xv-3.10a-formatstr.patch
- -rw-r--r-- 3423 Apr 24 2004 xv-3.10a-keyzoom.patch
-- -rw-r--r-- 1461 Mar 11 2004 xv-3.10a-locale-linux.patch
- -rw-r--r-- 12387 Mar 15 2004 xv-3.10a-menubutton.patch
- -rw-r--r-- 1178 Apr 24 2004 xv-3.10a-noblink.patch
-- -rw-r--r-- 484 Mar 11 2004 xv-3.10a-printkey.patch
- -rw-r--r-- 57092 Jul 9 2004 xv-3.10a-resolution.patch
- -rw-r--r-- 4645 Apr 24 2004 xv-3.10a-selall.patch
-- -rw-r--r-- 360 Mar 11 2004 xv-3.10a-shortsleep.patch
- -rw-r--r-- 702 Apr 24 2004 xv-3.10a-showlongname.patch
- -rw-r--r-- 1205 Apr 24 2004 xv-3.10a-staytoppdir.patch
-- -rw-r--r-- 1591 Mar 15 2004 xv-3.10a-sysconfdir.patch
- -rw-r--r-- 4228 Apr 24 2004 xv-3.10a-wheelmouse.patch
- -rw-r--r-- 744 Apr 24 2004 xv-3.10a-xvbutt_wait.patch
-- -rw-r--r-- 712 Mar 11 2004 xv-3.10a-xvexecpath.patch
- -rw-r--r-- 3757 Jul 9 2004 xv-3.10a-xvscrl_button2.patch
- -rw-r--r-- 1494 Jul 9 2004 xv-3.10a-xvscrl_wait.patch
- -rw-r--r-- 19352 Jul 9 2004 xv-3.10a-xvzoom.patch
-- -rw-r--r-- 1827 Apr 24 2004 xv-3.10a-zeroquit.patch
-
-- - xv310a-jp-extension-rev5.3.3.tar.gz [extensive]
-- - xv-3.10a-jp-extension-5.3.3-png-1.2d.patch [PNG patch relative to jp-ext]
-- - xv-3.10a+jp-extension-rev5.3.3+FLmask.v2.1+png+misc.patch [??]
-+ - xv-3.10a+jp-extension-rev5.3.3+FLmask.v2.1+png+misc.patch ["mask" support]
-
-- - xv-grab-imake-hips.patch (JPD) [HIPS format, -startgrab option]
- - xv-psnewstyle.patch (TA) [coming later in 2005?]
- - xv-3.10a.patch.linux (PBJ) [maybe use vdcomp.c changes?]
- - xvxpm-anthony-thyssen.c (AT) ["slate grey" bug already gone?]
-@@ -332,8 +357,8 @@
- not finished (and/or even started ;-) ):
-
- - fix xvpng.c not to use direct struct access
-- - fix for never-ending pile of SLOW popups when viewing TIFFs with unknown tags
-- (or truncated/corrupted images)
-+ - (better) fix for never-ending pile of SLOW popups when viewing TIFFs with
-+ unknown tags (or truncated/corrupted images)
- - fix for minor .Z inefficiency in xv.c ("FIXME")
- - fix for filename entry-field mouse/cursor bogosity
- (want at least positioning to work; preferably also select/cut/paste)
-@@ -344,6 +369,7 @@
- - transparency support for TIFF, XPM and TGA images
- - support for tiled background image (with transparent foreground image)
- - MNG/JNG support
-+ - SVG support
-
-
- ChangeLog
-@@ -364,7 +390,7 @@
- 20040531
- fixed undefined CLK_TCK with gcc -ansi (enh/USE_TICKS option); made
- libjpeg, libtiff, libpng and zlib sections of makefile more consistent
-- (enh);
-+ (enh)
-
- 20040606
- added freshmeat link, build instructions, and changelog to jumbo README
-@@ -385,3 +411,32 @@
- sex bug in 24-bit FixPix display code (enh/USE_24BIT_ENDIAN_FIX option);
- fixed numerical-keypad NumLock behavior and delete-key behavior in file-
- load/save window (enh); made schnauzer window and icons configurable (enh)
-+
-+ 20050417
-+ incorporated "Japanese extension" patches, revision 5.3.3 (enh); fixed
-+ additional *SECURITY* issues (format-string vulnerabilities, system()
-+ and mktemp() calls, etc., but NOT heap overflows in new decoders) both
-+ in existing code and in jp-extension additions (enh)
-+
-+ 20050425
-+ added support for -startgrab option (enh); added support for a "Never"
-+ button to file-overwrite popups (enh); added NetBSD and BSDI to list of
-+ mkstemp()-supporting systems (enh); improved line-drawing code to set the
-+ correct pixels for lines of all slopes (enh); added "Page n of m" to Info
-+ window for multipage images (enh); added support for multipage (animated)
-+ GIFs (enh); fixed -random support so randomized file list can be traversed
-+ normally in forward or backward direction (enh); added typecasts to stat()
-+ printfs for portability (enh); fixed erroneous use of "creation" time and
-+ forced unlink prior to overwrite in schnauzer thumbnail code (enh); added
-+ HIPS support (enh/HAVE_HIPS option)
-+
-+ 20050501
-+ extended multipage keyboard support (PgUp/PgDn) to all windows except
-+ control ("console") and directory (enh); fixed minor (non-security)
-+ format-string issue in xv.c (enh); shortened delay on popup error windows
-+ from 3 seconds to 1 second (enh); tweaked text-viewer localization support
-+ (TV_L10N) for Linux (enh); added keyboard short cuts for Color and
-+ Grayscale buttons in print dialog (enh); added support for separate "magic
-+ suffix" (xv_mgcsfx) config dir (enh); added PREFIX and DESTDIR support to
-+ Makefile (enh); fixed handling of zero-length files and other text-viewer
-+ failures (enh)
-diff -ruN xv-3.10a-bugfixes/README.pcd xv-3.10a-enhancements/README.pcd
---- xv-3.10a-bugfixes/README.pcd 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/README.pcd 2001-07-08 11:21:19.000000000 -0700
-@@ -0,0 +1,159 @@
-+Copyright 1993-2001 David Clunie.
-+
-+PCD patch for XV 3.10a Release Notes 2001/07/08.
-+
-+See also the progress notes at the end of this file. Thanks to all those
-+contributors who have substantially improved this patch.
-+
-+These patches allow xv to read Kodak photocd files and choose which of the
-+5 available resolutions one wants to view.
-+
-+When a photocd file is loaded, a dialog box asks which resolution you
-+would like. The visual schnauzer builds thumbnails by reading the lowest
-+resolution image. The selected resolution can be selected from the
-+command line with the -pcd option:
-+
-+ [-pcd 0|1|2|3|4]
-+
-+where:
-+
-+ 0=192*128, base/16 resolution
-+ 1=384*256, base/4 resolution
-+ 2=768*512, base resolution
-+ 3=1536*1024, 4base resolution
-+ 4=3072*2048 16base resolution.
-+
-+Note that the Pro format is not supported.
-+
-+The command line option allows loops without the dialog box popping up, eg.:
-+
-+ xv -pcd 1 -wloop -wait 10 *.pcd
-+
-+The code is pretty crude and was written quickly for a specific purpose and
-+has not really been cleaned up. It is poorly structured, full of debugging
-+codes and verbose comments, and there is very little attempt at optimizing
-+things. No profiling has been done.
-+
-+There is not yet support for overview files, nor is there a facility to
-+use the higher resolution chroma planes from when viewing lower resolution
-+images.
-+
-+It's only claim to fame is that it works and produces reasonable looking
-+images.
-+
-+The outline of this is shamelessly derived from xvpbm.c to read the
-+file, and xvtiffwr.c to handle the popup window and X stuff (X never
-+has been my forte !), and the PhotoCD format information (though not
-+the code) was found in Hadmut Danisch's (danisch@ira.uka.de) hpcdtoppm
-+program in which he has reverse engineered the format by studying
-+hex dumps of PhotoCDs ! The color stuff and Huffman decding were
-+extensively revised by Matthew Francey.
-+
-+Feel free to send me comments or improvements, or even better, more
-+information about the photo CD format ... hopefully someone who really
-+knows what they are doing will tidy it up or do a neater job.
-+
-+david (dclunie@dclunie.com)
-+
-+---------
-+
-+The trace #define in xvpcd.c is now in the right place, and the ansi
-+prototype for the magnify function has been fixed. Colin made me switch to
-+xvbcopy() which seems like a good idea for System V victims.
-+
-+---------
-+
-+Date: Wed, 22 Dec 1993 16:09:52 --1000
-+From: colinc@fitmail.fit.qut.edu.au (Colin Canfield )
-+
-+I have done some more work using your patch I thought you might be intested in.
-+The major change was adding a size parameter to the LoadPCD; either -1 to mean
-+the popup or else the size you desired. This allows batch mode processing,
-+specifically xv -pcd <size> <filename>, and the visual schnauzer can work in
-+quick mode (ie. you don't have to select each image size when it is building
-+the icons)
-+
-+I have added an xbm file for the file type but haven't drawn an icon for it,
-+this is in bitmaps/br_pcd.xbm. I will just send you the new files.
-+
-+---------
-+
-+From: andrew@andrew.triumf.ca (Andrew Daviel)
-+Date: 16 Feb 1995 23:32:21 GMT
-+
-+This is David Clunie's patch for xv-3.00 tuned a bit to work
-+on xv-3.10. The code's all the same except for replacing
-+"trace" with "fprintf" in xvpcd.c and adding an "unsigned" qualifier to
-+keep my compiler (gcc) happy. Oh yes, changed RFT_PCD to 20 as
-+John Bradley has now used 15 through 19.
-+
-+---------
-+
-+From: dclunie@flash.us.com (David A. Clunie)
-+Date: Thu Jun 15 14:43:46 GMT+0300 1995
-+
-+Andrew's patch didn't include Colin's browser changes, so I redid the
-+xv-3.10 update from scratch ... it seems pretty much the same as
-+Andrew's changes. I also edited the Imakefile and Makefiles in order
-+to support the PCD changes, as well as make the install process a
-+little more flexible, with options to strip and set modes and so on.
-+Also made RFT_PCD 25 so as not to conflict with magpic patch from Japan
-+by Ikemoto Masahiro <ikeyan@airlab.cs.ritsumei.ac.jp>, and used his
-+bitmap icon for pcd files.
-+
-+Now there are two versions of the patch, one which should be applied
-+to the xv-3.10 distribution.
-+
-+The other should be applied to xv-3.10 AFTER Ikemoto Masahiro's
-+Patch.magpic2.PhotoCD.XV319a, in order to add the browser features to
-+the latter, as well as fixing a Makefile typo (was xcpcd.c not xvpcd.c)
-+and including unistd.h for the SEEK_xxx constants in the magicpic
-+stuff.
-+
-+---------
-+
-+Subject: Re: photo-cd patch for xv
-+From: Matthew Francey <mdf@angoss.com>
-+Date: Mon, 26 Mar 2001 15:37:55 +0000
-+
-+Attached is a revised version of xvpcd.c; the areas that I have
-+re-written or changed are in a different coding style so you can tell
-+what has changed. The GNU 'indent' program can be run against the file
-+to enforce a consistent style ..
-+
-+Here is what I've done though:
-+
-+a) huffman table reader re-written, because it would fail on some
-+ photocd files with "unusual" huffman codes.
-+
-+b) the huffman-coded corrections are now properly applied
-+
-+c) the corrections can sometimes over or underflow; clipping has been
-+ introduced and effectively fixes the problem, but I suspect that
-+ there is something deeper going on.
-+
-+d) the "official" YCC->sRGB transform is done. a "beyond 100% white"
-+ mapping table was snarfed from ImageMagick. an option for using a
-+ flat linear LUT was added -- this can make somewhat over-exposed images
-+ look alot nicer.
-+
-+e) there were strange problems where the code wouldn't be able to find
-+ the huffman tables and data for the 16base image (the bit-buffering
-+ code was starting mid-sector, instead of at a sector boundary). Looking
-+ at a pcd file with a hex editor suggests to me that it is possible to
-+ just skip directly to these huffman tables -- no special "+12" and such
-+ constants necessary. But I haven't tried this yet.
-+
-+The results: I've been able to read about 50 or 60 .pcd files [scattered
-+in age from 6 years old to scans done last week] with this code without
-+incident. Image quality at the high resolution is excellent. Even the
-+trivial amount of LUT control is useful when dealing with over-exposed
-+images.
-+
-+If I get around to it: finer LUT control to take advantage of the
-+slightly extended dynamic range of PhotoCD scans, especially in regards to
-+dark or somewhat underexposed scenes.
-+
-+
-+
-+
-diff -ruN xv-3.10a-bugfixes/bggen.c xv-3.10a-enhancements/bggen.c
---- xv-3.10a-bugfixes/bggen.c 2004-05-16 17:50:52.000000000 -0700
-+++ xv-3.10a-enhancements/bggen.c 2005-04-17 14:04:22.000000000 -0700
-@@ -34,7 +34,7 @@
- #define MAXCOLS 128
-
- /* some VMS thing... */
--#ifdef vax11c
-+#if defined(vax11c) || (defined(__sony_news) && (defined(bsd43) || defined(__bsd43) || defined(SYSTYPE_BSD) || defined(__SYSTYPE_BSD)))
- #include <ctype.h>
- #endif
-
-diff -ruN xv-3.10a-bugfixes/bits/br_bzip2 xv-3.10a-enhancements/bits/br_bzip2
---- xv-3.10a-bugfixes/bits/br_bzip2 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/bits/br_bzip2 1998-04-12 19:23:39.000000000 -0700
-@@ -0,0 +1,27 @@
-+#define br_bzip2_width 48
-+#define br_bzip2_height 48
-+static unsigned char br_bzip2_bits[] = {
-+ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x7c, 0xbe, 0x3d, 0x0e, 0x02, 0x20, 0xfc, 0xbe, 0x7d, 0x1f, 0x02,
-+ 0x20, 0xcc, 0xb0, 0x6d, 0x1b, 0x02, 0x20, 0xcc, 0x98, 0x6d, 0x1b, 0x02,
-+ 0x20, 0xfc, 0x98, 0x6d, 0x18, 0x02, 0x20, 0x7c, 0x8c, 0x7d, 0x0c, 0x02,
-+ 0x20, 0xcc, 0x8c, 0x3d, 0x0e, 0x02, 0x20, 0xcc, 0x84, 0x0d, 0x06, 0x02,
-+ 0x20, 0xcc, 0x86, 0x0d, 0x03, 0x02, 0x20, 0xfc, 0xbe, 0x0d, 0x1f, 0x02,
-+ 0x20, 0x7c, 0xbe, 0x0d, 0x1f, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
-diff -ruN xv-3.10a-bugfixes/bits/br_mag xv-3.10a-enhancements/bits/br_mag
---- xv-3.10a-bugfixes/bits/br_mag 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/bits/br_mag 2005-04-17 14:04:22.000000000 -0700
-@@ -0,0 +1,27 @@
-+#define br_mag_width 48
-+#define br_mag_height 48
-+static unsigned char br_mag_bits[] = {
-+ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x0c, 0x86, 0xc1, 0x0f, 0x02,
-+ 0x20, 0x0c, 0xc6, 0xe3, 0x1f, 0x02, 0x20, 0x1c, 0xe7, 0x67, 0x18, 0x02,
-+ 0x20, 0x1c, 0x77, 0x6e, 0x18, 0x02, 0x20, 0xbc, 0x37, 0x6c, 0x00, 0x02,
-+ 0x20, 0xbc, 0x37, 0x6c, 0x00, 0x02, 0x20, 0xec, 0x36, 0x6c, 0x1e, 0x02,
-+ 0x20, 0xec, 0xf6, 0x6f, 0x1e, 0x02, 0x20, 0x4c, 0xf6, 0x6f, 0x18, 0x02,
-+ 0x20, 0x4c, 0x36, 0x6c, 0x18, 0x02, 0x20, 0x0c, 0x36, 0x6c, 0x18, 0x02,
-+ 0x20, 0x0c, 0x36, 0xec, 0x1f, 0x02, 0x20, 0x0c, 0x36, 0xcc, 0x0f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
-diff -ruN xv-3.10a-bugfixes/bits/br_maki xv-3.10a-enhancements/bits/br_maki
---- xv-3.10a-bugfixes/bits/br_maki 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/bits/br_maki 2005-04-17 14:04:22.000000000 -0700
-@@ -0,0 +1,27 @@
-+#define br_maki_width 48
-+#define br_maki_height 48
-+static unsigned char br_maki_bits[] = {
-+ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x83, 0x61, 0x18, 0x33, 0x02,
-+ 0x20, 0x83, 0xf1, 0x98, 0x33, 0x02, 0x20, 0xc7, 0xf9, 0x99, 0x31, 0x02,
-+ 0x20, 0xc7, 0x9d, 0xdb, 0x30, 0x02, 0x20, 0xef, 0x0d, 0xfb, 0x30, 0x02,
-+ 0x20, 0xef, 0x0d, 0x7b, 0x30, 0x02, 0x20, 0xbb, 0x0d, 0x7b, 0x30, 0x02,
-+ 0x20, 0xbb, 0xfd, 0xdb, 0x30, 0x02, 0x20, 0x93, 0xfd, 0xdb, 0x30, 0x02,
-+ 0x20, 0x93, 0x0d, 0x9b, 0x31, 0x02, 0x20, 0x83, 0x0d, 0x9b, 0x31, 0x02,
-+ 0x20, 0x83, 0x0d, 0x1b, 0x33, 0x02, 0x20, 0x83, 0x0d, 0x1b, 0x33, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
-diff -ruN xv-3.10a-bugfixes/bits/br_mgcsfx xv-3.10a-enhancements/bits/br_mgcsfx
---- xv-3.10a-bugfixes/bits/br_mgcsfx 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/bits/br_mgcsfx 2005-04-17 14:04:22.000000000 -0700
-@@ -0,0 +1,27 @@
-+#define br_mgcsfx_width 48
-+#define br_mgcsfx_height 48
-+static unsigned char br_mgcsfx_bits[] = {
-+ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x3c, 0xcf, 0x71, 0x00, 0x02,
-+ 0x20, 0x6c, 0x61, 0xda, 0x00, 0x02, 0x20, 0x6c, 0x67, 0xd8, 0x1e, 0x02,
-+ 0x20, 0x3c, 0x61, 0xd8, 0x1e, 0x02, 0x20, 0x6c, 0x61, 0xda, 0x00, 0x02,
-+ 0x20, 0x6c, 0xcf, 0x71, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x4e, 0x7a, 0xef, 0x3d, 0x02, 0x20, 0xd3, 0x32, 0x68, 0x6c, 0x02,
-+ 0x20, 0xc3, 0x32, 0xe4, 0x6c, 0x02, 0x20, 0x5b, 0x33, 0x62, 0x6c, 0x02,
-+ 0x20, 0x53, 0x33, 0x61, 0x6c, 0x02, 0x20, 0x4e, 0x7a, 0xef, 0x3d, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
-diff -ruN xv-3.10a-bugfixes/bits/br_pcd xv-3.10a-enhancements/bits/br_pcd
---- xv-3.10a-bugfixes/bits/br_pcd 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/bits/br_pcd 1995-06-15 21:31:53.000000000 -0700
-@@ -0,0 +1,27 @@
-+#define br_pcd_width 48
-+#define br_pcd_height 48
-+static unsigned char br_pcd_bits[] = {
-+ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x67, 0x00, 0xe0, 0x1c, 0x02,
-+ 0x20, 0x6f, 0x00, 0xf0, 0x3d, 0x02, 0x20, 0x6b, 0x00, 0xb0, 0x2d, 0x02,
-+ 0x20, 0x6b, 0x00, 0x33, 0x2c, 0x02, 0x20, 0x6b, 0x00, 0x33, 0x2c, 0x02,
-+ 0x20, 0xeb, 0x98, 0x37, 0x2c, 0x02, 0x20, 0xef, 0xbd, 0x37, 0x2c, 0x02,
-+ 0x20, 0x67, 0x2d, 0x33, 0x2c, 0x02, 0x20, 0x63, 0x2d, 0x33, 0x2c, 0x02,
-+ 0x20, 0x63, 0x2d, 0x33, 0x2c, 0x02, 0x20, 0x63, 0x2d, 0xb3, 0x2d, 0x02,
-+ 0x20, 0x63, 0x3d, 0xf7, 0x3d, 0x02, 0x20, 0x63, 0x19, 0xe6, 0x1c, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
-diff -ruN xv-3.10a-bugfixes/bits/br_pi xv-3.10a-enhancements/bits/br_pi
---- xv-3.10a-bugfixes/bits/br_pi 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/bits/br_pi 2005-04-17 14:04:22.000000000 -0700
-@@ -0,0 +1,27 @@
-+#define br_pi_width 48
-+#define br_pi_height 48
-+static unsigned char br_pi_bits[] = {
-+ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x80, 0x1f, 0x7e, 0x00, 0x02,
-+ 0x20, 0x80, 0x3f, 0x7e, 0x00, 0x02, 0x20, 0x80, 0x31, 0x18, 0x00, 0x02,
-+ 0x20, 0x80, 0x31, 0x18, 0x00, 0x02, 0x20, 0x80, 0x31, 0x18, 0x00, 0x02,
-+ 0x20, 0x80, 0x39, 0x18, 0x00, 0x02, 0x20, 0x80, 0x1f, 0x18, 0x00, 0x02,
-+ 0x20, 0x80, 0x0f, 0x18, 0x00, 0x02, 0x20, 0x80, 0x01, 0x18, 0x00, 0x02,
-+ 0x20, 0x80, 0x01, 0x18, 0x00, 0x02, 0x20, 0x80, 0x01, 0x18, 0x00, 0x02,
-+ 0x20, 0x80, 0x01, 0x7e, 0x00, 0x02, 0x20, 0x80, 0x01, 0x7e, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
-diff -ruN xv-3.10a-bugfixes/bits/br_pic xv-3.10a-enhancements/bits/br_pic
---- xv-3.10a-bugfixes/bits/br_pic 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/bits/br_pic 2005-04-17 14:04:22.000000000 -0700
-@@ -0,0 +1,27 @@
-+#define br_pic_width 48
-+#define br_pic_height 48
-+static unsigned char br_pic_bits[] = {
-+ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xf0, 0xf3, 0xf3, 0x01, 0x02,
-+ 0x20, 0xf0, 0xf7, 0xfb, 0x03, 0x02, 0x20, 0x30, 0xc6, 0x18, 0x03, 0x02,
-+ 0x20, 0x30, 0xc6, 0x18, 0x00, 0x02, 0x20, 0x30, 0xc6, 0x18, 0x00, 0x02,
-+ 0x20, 0x30, 0xc7, 0x18, 0x00, 0x02, 0x20, 0xf0, 0xc3, 0x18, 0x00, 0x02,
-+ 0x20, 0xf0, 0xc1, 0x18, 0x00, 0x02, 0x20, 0x30, 0xc0, 0x18, 0x00, 0x02,
-+ 0x20, 0x30, 0xc0, 0x18, 0x00, 0x02, 0x20, 0x30, 0xc0, 0x18, 0x03, 0x02,
-+ 0x20, 0x30, 0xf0, 0xfb, 0x03, 0x02, 0x20, 0x30, 0xf0, 0xf3, 0x01, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
-diff -ruN xv-3.10a-bugfixes/bits/br_pic2 xv-3.10a-enhancements/bits/br_pic2
---- xv-3.10a-bugfixes/bits/br_pic2 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/bits/br_pic2 2005-04-17 14:04:22.000000000 -0700
-@@ -0,0 +1,27 @@
-+#define br_pic2_width 48
-+#define br_pic2_height 48
-+static unsigned char br_pic2_bits[] = {
-+ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x3f, 0x3f, 0x1f, 0x1f, 0x02,
-+ 0x20, 0x7f, 0xbf, 0xbf, 0x3f, 0x02, 0x20, 0x63, 0x8c, 0xb1, 0x31, 0x02,
-+ 0x20, 0x63, 0x8c, 0x01, 0x30, 0x02, 0x20, 0x63, 0x8c, 0x01, 0x30, 0x02,
-+ 0x20, 0x73, 0x8c, 0x01, 0x30, 0x02, 0x20, 0x3f, 0x8c, 0x01, 0x18, 0x02,
-+ 0x20, 0x1f, 0x8c, 0x01, 0x0c, 0x02, 0x20, 0x03, 0x8c, 0x01, 0x06, 0x02,
-+ 0x20, 0x03, 0x8c, 0x01, 0x03, 0x02, 0x20, 0x03, 0x8c, 0xb1, 0x01, 0x02,
-+ 0x20, 0x03, 0xbf, 0xbf, 0x3f, 0x02, 0x20, 0x03, 0x3f, 0x9f, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03};
-diff -ruN xv-3.10a-bugfixes/bits/br_png xv-3.10a-enhancements/bits/br_png
---- xv-3.10a-bugfixes/bits/br_png 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/bits/br_png 1996-06-13 14:32:08.000000000 -0700
-@@ -0,0 +1,28 @@
-+#define br_png_width 48
-+#define br_png_height 48
-+static unsigned char br_png_bits[] = {
-+ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0xf8, 0x19, 0xc3, 0x07, 0x02, 0x20, 0x18, 0x3b, 0x63, 0x0c, 0x02,
-+ 0x20, 0x18, 0x3b, 0x33, 0x00, 0x02, 0x20, 0x18, 0x5b, 0x33, 0x00, 0x02,
-+ 0x20, 0xf8, 0x59, 0x33, 0x0f, 0x02, 0x20, 0x18, 0x98, 0x33, 0x0c, 0x02,
-+ 0x20, 0x18, 0x98, 0x33, 0x0c, 0x02, 0x20, 0x18, 0x18, 0x63, 0x0c, 0x02,
-+ 0x20, 0x18, 0x18, 0xc3, 0x0b, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03,
-+ };
-diff -ruN xv-3.10a-bugfixes/bits/br_zx xv-3.10a-enhancements/bits/br_zx
---- xv-3.10a-bugfixes/bits/br_zx 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/bits/br_zx 1998-08-06 13:00:03.000000000 -0700
-@@ -0,0 +1,28 @@
-+#define br_zx_width 48
-+#define br_zx_height 48
-+static unsigned char br_zx_bits[] = {
-+ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x81, 0x00,
-+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0xff, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0x7f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x7f, 0xce, 0x01, 0x0e, 0x02, 0x20, 0x61, 0x84, 0x00, 0x11, 0x02,
-+ 0x20, 0x30, 0x48, 0x00, 0x10, 0x02, 0x20, 0x18, 0x38, 0x10, 0x08, 0x02,
-+ 0x20, 0x0c, 0x30, 0x10, 0x0e, 0x02, 0x20, 0x06, 0x68, 0x7c, 0x10, 0x02,
-+ 0x20, 0x03, 0x48, 0x10, 0x10, 0x02, 0x20, 0x41, 0x84, 0x10, 0x11, 0x02,
-+ 0x20, 0x7f, 0xce, 0x01, 0x0e, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0xff, 0xff, 0xff, 0xff, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x40, 0x02, 0x20, 0xff, 0xff, 0xff, 0x3f, 0x02,
-+ 0x20, 0x00, 0x00, 0x00, 0x10, 0x02, 0x20, 0x00, 0x00, 0x00, 0x08, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0x84, 0x03, 0x20, 0x00, 0x00, 0x00, 0xc2, 0x03,
-+ 0x20, 0x00, 0x00, 0x00, 0xe1, 0x03, 0x20, 0x00, 0x00, 0x80, 0xf0, 0x02,
-+ 0x20, 0x00, 0x00, 0x40, 0x78, 0x02, 0x20, 0x00, 0x00, 0x20, 0x3c, 0x02,
-+ 0x20, 0x00, 0x00, 0x10, 0x1e, 0x02, 0x20, 0x00, 0x00, 0x08, 0x0f, 0x03,
-+ 0x20, 0x00, 0x00, 0x84, 0x87, 0x03, 0x20, 0x00, 0x00, 0xc2, 0xc3, 0x03,
-+ 0x20, 0x00, 0x00, 0xe1, 0xe1, 0x03, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03,
-+ };
-diff -ruN xv-3.10a-bugfixes/config.h xv-3.10a-enhancements/config.h
---- xv-3.10a-bugfixes/config.h 2005-03-21 23:21:31.000000000 -0800
-+++ xv-3.10a-enhancements/config.h 2005-04-30 23:52:42.000000000 -0700
-@@ -6,26 +6,46 @@
- /***************************************************************************
- * GZIP'd file support
- *
-- * if you have the gnu uncompression utility 'gunzip', XV can use it to
-- * automatically 'unzip' any gzip'd files. To enable this feature,
-- * change 'undef' to 'define' in the following line. Needless to say, if
-- * your gunzip is installed elsewhere on your machine, change the 'GUNZIP'
-- * definition appropriately. (use 'which gunzip' to find if you have gunzip,
-- * and where it lives)
-+ * if you have the GNU uncompression utility 'gunzip' (or 'gzip' itself,
-+ * which is just a link to gunzip), XV can use it to automatically 'unzip'
-+ * any gzip'd files. To enable this feature, change 'undef' to 'define' in
-+ * the following line. Needless to say, if your gunzip is installed elsewhere
-+ * on your machine, change the 'GUNZIP' definition appropriately. (use
-+ * 'which gunzip' to find if you have gunzip, and where it lives; ditto for
-+ * gzip)
- */
--#undef USE_GUNZIP
-+#define USE_GUNZIP
-
- #ifdef USE_GUNZIP
- # ifdef VMS
- # define GUNZIP "UNCOMPRESS"
- # else
--/* define GUNZIP "/usr/local/bin/gunzip -q" */
--# define GUNZIP "/usr/bin/gzip -dq" /* more portable */
-+# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__linux__)
-+# define GUNZIP "/usr/bin/gzip -dq"
-+# else
-+# define GUNZIP "/usr/local/bin/gzip -dq" /* is full path truly needed? */
-+# endif
- # endif
- #endif
-
-
- /***************************************************************************
-+ * BZIP2'd file support
-+ *
-+ * if you have the uncompression utility 'bunzip2' (or 'bzip2' itself, which
-+ * is just a link to bunzip2), XV can use it to automatically 'unzip' any
-+ * bzip2'd files. To enable this feature, change 'undef' to 'define' in the
-+ * following line (if not already done). Use 'which bunzip2' or 'which bzip2'
-+ * to find if you have bzip2/bunzip2, and where it lives.
-+ */
-+#define USE_BUNZIP2
-+
-+#ifdef USE_BUNZIP2
-+# define BUNZIP2 "bzip2 -d" /* should this include the full path? */
-+#endif
-+
-+
-+/***************************************************************************
- * compress'd file support
- *
- * if you have GUNZIP defined above, just ignore this, as 'gunzip' can
-@@ -38,7 +58,14 @@
- */
- #define UNCOMPRESS "/usr/ucb/uncompress"
-
--#if defined(hpux) || defined(SVR4) || defined(__386BSD__)
-+#if defined(hpux) || defined(SVR4) || \
-+ defined(__386BSD__) || defined(__FreeBSD__) || defined(__NetBSD__) || \
-+ defined(__linux__)
-+ /*
-+ I want to use BSD macro for checking if this OS is *BSD or not,
-+ but the macro is defined in <sys/parm.h>, which I don't know all
-+ machine has or not.
-+ */
- # undef UNCOMPRESS
- # define UNCOMPRESS "/usr/bin/uncompress"
- #endif
-@@ -90,6 +117,7 @@
- */
-
- /* #define GS_PATH "/usr/local/bin/gs" */
-+#define GS_PATH "/usr/bin/gs"
- /* #define GS_LIB "." */
- /* #define GS_DEV "ppmraw" */
-
-@@ -120,3 +148,201 @@
-
- #define BACKING_STORE
-
-+
-+/***************************************************************************
-+ * PhotoCD/MAG/PIC/MAKI/Pi/PIC2/HIPS format Support:
-+ *
-+ * if, for whatever reason--say, security concerns--you don't want to
-+ * include support for one or more of the PhotoCD, MAG/MAKI/Pi/PIC/PIC2
-+ * (Japanese), or HIPS (astronomical) image formats, change the relevant
-+ * 'define' to 'undef' in the following lines. Conversely, if you *do*
-+ * want them, change 'undef' to 'define' as appropriate.
-+ */
-+
-+#define HAVE_PCD /* believed to be reasonably safe */
-+
-+#undef HAVE_MAG /* probable security issues */
-+#undef HAVE_MAKI /* probable security issues */
-+#undef HAVE_PI /* probable security issues */
-+#undef HAVE_PIC /* probable security issues */
-+#undef HAVE_PIC2 /* probable security issues */
-+
-+#undef HAVE_HIPS /* probable security issues */
-+
-+
-+/***************************************************************************
-+ * MacBinary file support:
-+ *
-+ * if you want XV to be able to handle ``MacBinary'' files (which have
-+ * 128 byte info file header at the head), change 'undef' to 'define'
-+ * in the following line.
-+ */
-+
-+#undef MACBINARY
-+
-+
-+/***************************************************************************
-+ * Auto Expand support:
-+ *
-+ * if you want to extract archived file automatically and regard it as
-+ * a directory, change 'undef' to 'define' in the AUTO_EXPAND line.
-+ *
-+ * Virtual Thumbdir support:
-+ *
-+ * if you want Virtual directory based Thumbdir(It means that XV
-+ * doesn't forget builded Icons still be quited even if the directory
-+ * is read-only), change 'undef' to 'define' the VIRTUAL_TD line.
-+ */
-+
-+#undef AUTO_EXPAND
-+#undef VIRTUAL_TD
-+
-+#if defined(VIRTUAL_TD) && !defined(AUTO_EXPAND)
-+# undef VIRTUAL_TD
-+#endif
-+
-+
-+/***************************************************************************
-+ * Adjust the aspect ratio of Icons:
-+ *
-+ * if you want to adjust the aspect ratio of the icons in Visual
-+ * Schnauzer, change 'undef' to 'define' in the following line.
-+ */
-+
-+#undef VS_ADJUST
-+
-+
-+/***************************************************************************
-+ * Restore original colormap:
-+ *
-+ * if you want to restore original colormap when icons in Visual
-+ * Shunauzer is double-clicked, change 'undef' to 'define' in the
-+ * following line.
-+ */
-+
-+#undef VS_RESCMAP
-+
-+
-+/***************************************************************************
-+ * TextViewer l10n support:
-+ *
-+ * if you want XV to show the text in Japanese on TextViewer, change
-+ * 'undef' to 'define' in the following line.
-+ */
-+
-+#undef TV_L10N
-+
-+#ifdef TV_L10N
-+/*
-+ * if you want to change the default code-set used in case that XV
-+ * fails to select correct code-set, uncomment the '#define
-+ * LOCALE_DEFAULT' line and change the 'LOCALE_DEFAULT' definition
-+ * appropriately.
-+ * (0:ASCII, 1:EUC-j, 2:JIS, 3:MS Kanji) */
-+
-+/* # define LOCALE_DEFAULT 0 */
-+
-+/*
-+ * Uncomment and edit the following lines, if your X Window System was
-+ * not compiled with -DX_LOCALE and you failed to display the Japanese
-+ * text in TextViewer. You don't have to write locale name of JIS code-set
-+ * and Microsoft code-set, if your system doesn't support those code-sets.
-+ */
-+
-+/*
-+# define LOCALE_NAME_EUC "ja_JP.EUC"
-+# define LOCALE_NAME_JIS "ja_JP.JIS"
-+# define LOCALE_NAME_MSCODE "ja_JP.SJIS"
-+*/
-+
-+/*
-+ * if your system doesn't have the Japanese fonts in the sizes,
-+ * Uncomment and edit the following font size entries.
-+ */
-+
-+/* # define TV_FONTSIZE 14,16,24 */
-+
-+/*
-+ * If you need, uncomment and modify the following font name.
-+ */
-+
-+/* # define TV_FONTSET "-*-fixed-medium-r-normal--%d-*" */
-+#endif /* TV_L10N */
-+
-+
-+/***************************************************************************
-+ * User definable filter support:
-+ *
-+ * Use the filters as input and output method for load and save unsupported
-+ * image format file. The filter command is recognized by definition of
-+ * magic number or suffix in "~/.xv_mgcsfx" .
-+ * To enable this feature, change 'undef' to 'define' in the following line.
-+ */
-+#undef HAVE_MGCSFX
-+
-+#ifdef HAVE_MGCSFX
-+/*
-+ * Support symbol 'auto' as <input image type> in startup file. This type
-+ * cannot use pipe as input; it writes to a temporary file and recognizes
-+ * the actual filetype by XV processing.
-+ */
-+# define HAVE_MGCSFX_AUTO
-+
-+/*
-+ * The startup file of definition for MgcSfx. 'MGCSFX_SITE_RC' is read
-+ * first and '~/MGCSFX_RC' is second. So same definitions in both files
-+ * are overridden by '~/MGCSFX_RC'
-+ * To define startup file, see the sample of startup file 'xv_mgcsfx.sample'.
-+ */
-+# define MGCSFX_SITE_RC "xv_mgcsfx"
-+# define MGCSFX_RC ".xv_mgcsfx"
-+
-+/*
-+ * If you want startup file to pass preprocessor in reading time, then
-+ * change 'undef' to 'define' in the following line.
-+ *
-+ * WARNING : If you decide to use preprocessor, you must not write
-+ * '# <comment>' style comment in startup file. Because,
-+ * preprocessor can't recognize. */
-+# undef USE_MGCSFX_PREPROCESSOR
-+
-+# ifdef USE_MGCSFX_PREPROCESSOR
-+/*
-+ * This is used like "system("MGCSFX_PREPROCESSOR MGCSFX_RC > tmp_name");",
-+ * and read tmp_name instead of MGCSFX_RC.
-+ */
-+# define MGCSFX_PREPROCESSOR "/usr/lib/cpp"
-+/* # define MGCSFX_PREPROCESSOR "cc -E" */
-+
-+# endif /* USE_MGCSFX_PREPROCESSOR */
-+
-+/*
-+ * Default string of command. If input command is required for undefined file,
-+ * dialog is popuped with 'MGCSFX_DEFAULT_INPUT_COMMAND'. And, if output
-+ * command is required in save dialog of MgcSfx, dialog is popuped with
-+ * 'MGCSFX_DEFAULT_OUTPUT_COMMAND'.
-+ *
-+ * WARNING : Now, supported only 'PNM' image format, when command input is
-+ * required. You should define filter which use 'PNM' image format
-+ * as input or output.
-+ */
-+# define MGCSFX_DEFAULT_INPUT_COMMAND "tifftopnm"
-+# define MGCSFX_DEFAULT_OUTPUT_COMMAND "pnmtotiff"
-+
-+#endif /* HAVE_MGCSFX */
-+
-+
-+/***************************************************************************
-+ * Multi-Lingual TextViewer
-+ *
-+ * if you want XV to show the text in multi-lingual on TextViewer, change
-+ * 'undef' to 'define' in the following line.
-+ */
-+
-+#undef TV_MULTILINGUAL
-+
-+#define TV_DEFAULT_CODESET TV_EUC_JAPAN
-+
-+#ifdef TV_MULTILINGUAL
-+# undef TV_L10N
-+#endif
-diff -ruN xv-3.10a-bugfixes/tiff/Makefile xv-3.10a-enhancements/tiff/Makefile
---- xv-3.10a-bugfixes/tiff/Makefile 2004-05-16 18:49:11.000000000 -0700
-+++ xv-3.10a-enhancements/tiff/Makefile 2005-04-17 14:45:28.000000000 -0700
-@@ -38,7 +38,7 @@
- IPATH= -I.
-
- COPTS= -O
--CFLAGS= ${COPTS} ${IPATH}
-+CFLAGS= ${COPTS} ${IPATH} -D_BSD_SOURCE
-
- INCS= tiff.h tiffio.h
-
-diff -ruN xv-3.10a-bugfixes/vdcomp.c xv-3.10a-enhancements/vdcomp.c
---- xv-3.10a-bugfixes/vdcomp.c 2005-03-20 17:48:59.000000000 -0800
-+++ xv-3.10a-enhancements/vdcomp.c 2005-04-17 22:59:39.000000000 -0700
-@@ -106,6 +106,7 @@
- !defined(pyr) && \
- !defined(__UMAXV__) && \
- !defined(bsd43) && \
-+ !defined(__bsd43) && \
- !defined(aux) && \
- !defined(__bsdi__) && \
- !defined(sequent) && \
-@@ -115,7 +116,14 @@
- # if defined(hp300) || defined(hp800) || defined(NeXT)
- # include <sys/malloc.h> /* it's in 'sys' on HPs and NeXT */
- # else
--# include <malloc.h>
-+# if !defined(__386BSD__) && !defined(__FreeBSD__) && !defined(__NetBSD__)
-+ /*
-+ I want to use BSD macro for checking if this OS is *BSD or not,
-+ but the macro is defined in <sys/parm.h>, which I don't know all
-+ machine has or not.
-+ */
-+# include <malloc.h>
-+# endif
- # endif
- # endif
- #endif /* !VMS */
-diff -ruN xv-3.10a-bugfixes/xcmap.c xv-3.10a-enhancements/xcmap.c
---- xv-3.10a-bugfixes/xcmap.c 2005-03-20 15:51:59.000000000 -0800
-+++ xv-3.10a-enhancements/xcmap.c 2005-04-17 14:45:28.000000000 -0700
-@@ -163,7 +163,7 @@
- XSetBackground(theDisp,theGC,bcol);
-
- CreateMainWindow(cmd,geom,argc,argv);
-- Resize(WIDE,HIGH);
-+ Resize((int)WIDE,(int)HIGH);
-
- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
- | StructureNotifyMask | ButtonPressMask);
-@@ -212,10 +212,10 @@
-
- case ConfigureNotify: {
- XConfigureEvent *conf_event = (XConfigureEvent *) event;
-+ int w = conf_event->width, h = conf_event->height;
-
-- if (conf_event->window == mainW &&
-- (conf_event->width != WIDE || conf_event->height != HIGH))
-- Resize(conf_event->width, conf_event->height);
-+ if (conf_event->window == mainW && (w != WIDE || h != HIGH))
-+ Resize((int)(w ? w : WIDE), (int)(h ? h : HIGH));
- }
- break;
-
-@@ -274,6 +274,8 @@
- WIDE = HIGH = 256; /* default window size */
-
- x=y=w=h=1;
-+ hints.flags = 0;
-+
- i=XParseGeometry(geom,&x,&y,&w,&h);
- if (i&WidthValue)
- {
-diff -ruN xv-3.10a-bugfixes/xv.c xv-3.10a-enhancements/xv.c
---- xv-3.10a-bugfixes/xv.c 2005-03-20 22:25:22.000000000 -0800
-+++ xv-3.10a-enhancements/xv.c 2005-05-01 13:33:25.000000000 -0700
-@@ -62,6 +62,19 @@
-
- static char basefname[128]; /* just the current fname, no path */
-
-+#ifdef TV_L10N
-+# ifndef TV_FONTSET
-+# define TV_FONTSET "-*-fixed-medium-r-normal--%d-*"
-+# endif
-+# ifndef TV_FONTSIZE
-+# define TV_FONTSIZE 14,16
-+# endif
-+
-+static int mfontsize[] = { TV_FONTSIZE, 0 };
-+static char mfontset[256];
-+#endif
-+
-+
- /* things to do upon successfully loading an image */
- static int autoraw = 0; /* force raw if using stdcmap */
- static int autodither = 0; /* dither */
-@@ -78,6 +91,12 @@
-
- static int force8 = 0; /* force 8-bit mode */
- static int force24 = 0; /* force 24-bit mode */
-+#ifdef HAVE_PCD
-+static int PcdSize = -1; /* force dialog to ask */
-+#endif
-+
-+static float waitsec_nonfinal = -1; /* "normal" waitsec value */
-+static float waitsec_final = -1; /* final-image waitsec value */
-
- /* used in DeleteCmd() and Quit() */
- static char **mainargv;
-@@ -103,7 +122,6 @@
- static void openNextLoop PARM((void));
- static void openPrevPic PARM((void));
- static void openNamedPic PARM((void));
--static int findRandomPic PARM((void));
- static void mainLoop PARM((void));
- static void createMainWindow PARM((char *, char *));
- static void setWinIconNames PARM((char *));
-@@ -120,16 +138,17 @@
- int imap, ctrlmap, gmap, browmap, cmtmap, clrroot, nopos, limit2x;
- char *display, *whitestr, *blackstr, *histr, *lostr,
- *infogeom, *fgstr, *bgstr, *ctrlgeom, *gamgeom, *browgeom, *tmpstr;
--char *rootfgstr, *rootbgstr, *visualstr, *textgeom, *cmtgeom;
-+char *rootfgstr, *rootbgstr, *imagebgstr, *visualstr, *textgeom, *cmtgeom;
- char *monofontname, *flistName;
-+#ifdef TV_L10N
-+char **misscharset, *defstr;
-+int nmisscharset;
-+#endif
- int curstype, stdinflag, browseMode, savenorm, preview, pscomp, preset,
- rmodeset, gamset, cgamset, perfect, owncmap, rwcolor, stdcmap;
- int nodecor;
- double gamval, rgamval, ggamval, bgamval;
-
--
--
--
- /*******************************************/
- int main(argc, argv)
- int argc;
-@@ -137,6 +156,9 @@
- /*******************************************/
- {
- int i;
-+#ifdef TV_L10N
-+ int j;
-+#endif
- XColor ecdef;
- Window rootReturn, parentReturn, *children;
- unsigned int numChildren, rootDEEP;
-@@ -153,6 +175,13 @@
- /*** variable Initialization ***/
- /*****************************************************/
-
-+#ifdef TV_L10N
-+ /* setlocale(LC_ALL, localeList[LOCALE_EUCJ]); */
-+ setlocale(LC_ALL, "");
-+ xlocale = (int)XSupportsLocale(); /* assume that (Bool) is (int) */
-+ /* if X doesn't support ja_JP.ujis text viewer l10n doesn't work. */
-+#endif
-+
- xv_getwd(initdir, sizeof(initdir));
- searchdir[0] = '\0';
- fullfname[0] = '\0';
-@@ -162,7 +191,7 @@
-
- /* init internal variables */
- display = NULL;
-- fgstr = bgstr = rootfgstr = rootbgstr = NULL;
-+ fgstr = bgstr = rootfgstr = rootbgstr = imagebgstr = NULL;
- histr = lostr = whitestr = blackstr = NULL;
- visualstr = monofontname = flistName = NULL;
- winTitle = NULL;
-@@ -180,6 +209,7 @@
- autoclose = autoDelete = 0;
- cmapInGam = 0;
- grabDelay = 0;
-+ startGrab = 0;
- showzoomcursor = 0;
- perfect = owncmap = stdcmap = rwcolor = 0;
-
-@@ -228,6 +258,10 @@
- if (!tmpdir) FatalError("can't malloc 'tmpdir'\n");
- strcpy(tmpdir, tmpstr);
- }
-+#ifdef AUTO_EXPAND
-+ Vdinit();
-+ vd_handler_setup();
-+#endif
-
- /* init command-line options flags */
- infogeom = DEFINFOGEOM; ctrlgeom = DEFCTRLGEOM;
-@@ -238,7 +272,7 @@
- ninstall = 0; fixedaspect = 0; noFreeCols = nodecor = 0;
- DEBUG = 0; bwidth = 2;
- nolimits = useroot = clrroot = noqcheck = 0;
-- waitsec = -1; waitloop = 0; automax = 0;
-+ waitsec = waitsec_final = -1.0; waitloop = 0; automax = 0;
- rootMode = 0; hsvmode = 0;
- rmodeset = gamset = cgamset = 0;
- nopos = limit2x = 0;
-@@ -251,6 +285,10 @@
- preset = 0;
- viewonly = 0;
-
-+#ifdef ENABLE_FIXPIX_SMOOTH
-+ do_fixpix_smooth = 0;
-+#endif
-+
- /* init 'xormasks' array */
- xorMasks[0] = 0x01010101;
- xorMasks[1] = 0x02020203;
-@@ -277,6 +315,24 @@
- tiffW = (Window) NULL; tiffUp = 0;
- #endif
-
-+#ifdef HAVE_PNG
-+ pngW = (Window) NULL; pngUp = 0;
-+#endif
-+
-+ pcdW = (Window) NULL; pcdUp = 0;
-+
-+#ifdef HAVE_PIC2
-+ pic2W = (Window) NULL; pic2Up = 0;
-+#endif
-+
-+#ifdef HAVE_PCD
-+ pcdW = (Window) NULL; pcdUp = 0;
-+#endif
-+
-+#ifdef HAVE_MGCSFX
-+ mgcsfxW = (Window) NULL; mgcsfxUp = 0;
-+#endif
-+
- imap = ctrlmap = gmap = browmap = cmtmap = 0;
-
- ch_offx = ch_offy = p_offx = p_offy = 0;
-@@ -303,13 +359,35 @@
- verifyArgs();
-
-
-+#if 0
-+#ifdef XVEXECPATH
-+ /* set up path to search for external executables */
-+ {
-+ char *systempath = getenv("PATH");
-+ char *xvexecpath = getenv("XVPATH");
-+ if (xvexecpath == NULL) xvexecpath = XVEXECPATH;
-+ /* FIXME: can systempath == NULL? */
-+ strcat(systempath, ":"); /* FIXME: writing to mem we don't own */
-+ strcat(systempath, xvexecpath); /* FIXME: writing to mem we don't own */
-+ /* FIXME: was there supposed to be a setenv() call in here? */
-+ if (DEBUG)
-+ fprintf(stderr, "DEBUG: executable search path: %s\n", systempath);
-+ }
-+#endif
-+#endif
-+
-+
- /*****************************************************/
- /*** X Setup ***/
- /*****************************************************/
-
- theScreen = DefaultScreen(theDisp);
- theCmap = DefaultColormap(theDisp, theScreen);
-- rootW = RootWindow(theDisp,theScreen);
-+ if (spec_window) {
-+ rootW = spec_window;
-+ } else {
-+ rootW = RootWindow(theDisp,theScreen);
-+ }
- theGC = DefaultGC(theDisp,theScreen);
- theVisual = DefaultVisual(theDisp,theScreen);
- ncells = DisplayCells(theDisp, theScreen);
-@@ -320,7 +398,7 @@
-
- rootDEEP = dispDEEP;
-
-- /* things dependant on theVisual:
-+ /* things dependent on theVisual:
- * dispDEEP, theScreen, rootW, ncells, theCmap, theGC,
- * vrWIDE, dispWIDE, vrHIGH, dispHIGH, maxWIDE, maxHIGH
- */
-@@ -500,6 +578,7 @@
- arrow = XCreateFontCursor(theDisp,(u_int) curstype);
- cross = XCreateFontCursor(theDisp,XC_crosshair);
- tcross = XCreateFontCursor(theDisp,XC_tcross);
-+ tlcorner = XCreateFontCursor(theDisp,XC_top_left_corner);
- zoom = XCreateFontCursor(theDisp,XC_sizing);
-
- {
-@@ -575,6 +654,18 @@
- xvAllocColor(theDisp, theCmap, &ecdef)) rootbg = ecdef.pixel;
-
-
-+ /* GRR 19980308: set up image bg color (for transparent images) */
-+ have_imagebg = 0;
-+ if (imagebgstr && XParseColor(theDisp, theCmap, imagebgstr, &ecdef) &&
-+ xvAllocColor(theDisp, theCmap, &ecdef)) {
-+ /* imagebg = ecdef.pixel; */
-+ have_imagebg = 1;
-+ imagebgR = ecdef.red;
-+ imagebgG = ecdef.green;
-+ imagebgB = ecdef.blue;
-+ }
-+
-+
- /* set up hi/lo colors */
- i=0;
- if (dispDEEP > 1) { /* only if we're on a reasonable display */
-@@ -664,6 +755,61 @@
-
- monofont=monofinfo->fid;
-
-+#ifdef TV_L10N
-+ if (xlocale) {
-+ i = 0;
-+ while (mfontsize[i]) {
-+ xlocale = 1; /* True */
-+
-+ sprintf(mfontset, TV_FONTSET, mfontsize[i]);
-+/*fprintf(stderr, "FontSet: %s\n", mfontset);*/
-+
-+ monofset = XCreateFontSet(theDisp, mfontset,
-+ &misscharset, &nmisscharset, &defstr);
-+# if 0 /* not useful */
-+ if (!monofset) {
-+ /* the current locale is not supported */
-+/*fprintf(stderr, "Current locale `%s' is not supported.\n", localeList[i]);*/
-+ xlocale = 0;
-+ break;
-+ }
-+# endif
-+/*fprintf(stderr, "# of misscharset in mfontsize[%d]: %d\n", i,nmisscharset);*/
-+
-+ for (j = 0; j < nmisscharset; j++) {
-+ if (!strncmp(misscharset[j], "jisx0208", 8)) {
-+ /* font for JIS X 0208 is not found */
-+ xlocale = 0;
-+ break;
-+ }
-+ }
-+
-+ if (xlocale) {
-+ monofsetinfo = XExtentsOfFontSet(monofset);
-+ monofsetinfo->max_logical_extent.width = mfontsize[i];
-+ /* correct size of TextViewer
-+ in case that JIS X 0208 is not found */
-+ break;
-+ }
-+
-+ i++;
-+ } /* while (mfontsize[i]) */
-+
-+# if 0
-+ if (nmisscharset > 0) {
-+ sprintf(str,"missing %d charset:\n", nmisscharset);
-+ for (i = 0; i < nmisscharset; i++) {
-+ sprintf(str, "%s\t%s\n", str, misscharset[i]);
-+ }
-+# if 0
-+ FatalError(str);
-+# else
-+ fprintf(stderr, "%s", str);
-+# endif
-+ }
-+# endif
-+ }
-+#endif /* TV_L10N */
-
-
-
-@@ -693,6 +839,18 @@
- }
- else namelist[0] = NULL;
- }
-+ else if (randomShow) {
-+ int i, j;
-+ char *tmp;
-+
-+ srandom((int)time((time_t *)0));
-+ for (i = numnames; i > 1; i--) {
-+ j = random() % i;
-+ tmp = namelist[i-1];
-+ namelist[i-1] = namelist[j];
-+ namelist[j] = tmp;
-+ }
-+ }
-
- if (numnames) makeDispNames();
-
-@@ -796,6 +954,25 @@
- XSetTransientForHint(theDisp, tiffW, dirW);
- #endif
-
-+#ifdef HAVE_PNG
-+ CreatePNGW();
-+ XSetTransientForHint(theDisp, pngW, dirW);
-+#endif
-+
-+#ifdef HAVE_PCD
-+ CreatePCDW();
-+ XSetTransientForHint(theDisp, pcdW, dirW);
-+#endif
-+
-+#ifdef HAVE_PIC2
-+ CreatePIC2W();
-+ XSetTransientForHint(theDisp, pic2W, dirW);
-+#endif
-+
-+#ifdef HAVE_MGCSFX
-+ CreateMGCSFXW();
-+ XSetTransientForHint(theDisp, mgcsfxW, dirW);
-+#endif
-
- LoadFishCursors();
- SetCursors(-1);
-@@ -964,7 +1141,11 @@
-
- dispDEEP = vinfo[best].depth;
- theScreen = vinfo[best].screen;
-- rootW = RootWindow(theDisp, theScreen);
-+ if (spec_window) {
-+ rootW = spec_window;
-+ } else {
-+ rootW = RootWindow(theDisp,theScreen);
-+ }
- ncells = vinfo[best].colormap_size;
- theCmap = XCreateColormap(theDisp, rootW, theVisual, AllocNone);
-
-@@ -1095,6 +1276,9 @@
-
- if (rd_str ("fileList")) flistName = def_str;
- if (rd_flag("fixed")) fixedaspect = def_int;
-+#ifdef ENABLE_FIXPIX_SMOOTH
-+ if (rd_flag("fixpix")) do_fixpix_smooth = def_int;
-+#endif
- if (rd_flag("force8")) force8 = def_int;
- if (rd_flag("force24")) force24 = def_int;
- if (rd_str ("foreground")) fgstr = def_str;
-@@ -1106,21 +1290,37 @@
- if (rd_str ("highlight")) histr = def_str;
- if (rd_str ("iconGeometry")) icongeom = def_str;
- if (rd_flag("iconic")) startIconic = def_int;
-+ if (rd_str ("imageBackground")) imagebgstr = def_str;
- if (rd_str ("infoGeometry")) infogeom = def_str;
- if (rd_flag("infoMap")) imap = def_int;
- if (rd_flag("loadBrowse")) browseMode = def_int;
- if (rd_str ("lowlight")) lostr = def_str;
-+#ifdef MACBINARY
-+ if (rd_flag("macbinary")) handlemacb = def_int;
-+#endif
-+#ifdef HAVE_MGCSFX
-+ if (rd_flag("mgcsfx")) mgcsfx = def_int;
-+#endif
- if (rd_flag("mono")) mono = def_int;
- if (rd_str ("monofont")) monofontname = def_str;
- if (rd_int ("ncols")) ncols = def_int;
- if (rd_flag("ninstall")) ninstall = def_int;
- if (rd_flag("nodecor")) nodecor = def_int;
- if (rd_flag("nolimits")) nolimits = def_int;
-+#ifdef HAVE_MGCSFX
-+ if (rd_flag("nomgcsfx")) nomgcsfx = def_int;
-+#endif
-+#if defined(HAVE_PIC) || defined(HAVE_PIC2)
-+ if (rd_flag("nopicadjust")) nopicadjust = def_int;
-+#endif
- if (rd_flag("nopos")) nopos = def_int;
- if (rd_flag("noqcheck")) noqcheck = def_int;
- if (rd_flag("nostat")) nostat = def_int;
- if (rd_flag("ownCmap")) owncmap = def_int;
- if (rd_flag("perfect")) perfect = def_int;
-+#ifdef HAVE_PIC2
-+ if (rd_flag("pic2split")) pic2split = def_int;
-+#endif
- if (rd_flag("popupKludge")) winCtrPosKludge = def_int;
- if (rd_str ("print")) strncpy(printCmd, def_str,
- (size_t) PRINTCMDLEN);
-@@ -1138,6 +1338,9 @@
- if (rd_str ("textviewGeometry")) textgeom = def_str;
- if (rd_flag("useStdCmap")) stdcmap = def_int;
- if (rd_str ("visual")) visualstr = def_str;
-+#ifdef VS_ADJUST
-+ if (rd_flag("vsadjust")) vsadjust = def_int;
-+#endif
- if (rd_flag("vsDisable")) novbrowse = def_int;
- if (rd_str ("vsGeometry")) browgeom = def_str;
- if (rd_flag("vsMap")) browmap = def_int;
-@@ -1172,7 +1375,13 @@
- }
-
- if (numnames<MAXNAMES) {
-+#ifdef AUTO_EXPAND
-+ if(Isarchive(argv[i]) == 0){ /* Not archive file */
-+ namelist[numnames++] = argv[i];
-+ }
-+#else
- namelist[numnames++] = argv[i];
-+#endif
- if (numnames==MAXNAMES) {
- fprintf(stderr,"%s: too many filenames. Only using first %d.\n",
- cmd, MAXNAMES);
-@@ -1198,6 +1407,14 @@
- }
- }
-
-+ else if (!argcmp(argv[i],"-windowid",3,0,&pm)) {
-+ if (++i<argc) {
-+ if (sscanf(argv[i], "%ld", &spec_window) != 1) {
-+ fprintf(stderr,"%s: bad argument to -windowid '%s'\n",cmd,argv[i]);
-+ }
-+ }
-+ }
-+
- else if (!argcmp(argv[i],"-best24",3,0,&pm)) /* -best */
- conv24 = CONV24_BEST;
-
-@@ -1289,7 +1506,11 @@
- else if (!argcmp(argv[i],"-fg",3,0,&pm)) /* fg color */
- { if (++i<argc) fgstr = argv[i]; }
-
-- else if (!argcmp(argv[i],"-fixed",3,1,&fixedaspect)); /* fix asp. ratio */
-+ else if (!argcmp(argv[i],"-fixed",5,1,&fixedaspect)); /* fix asp. ratio */
-+
-+#ifdef ENABLE_FIXPIX_SMOOTH
-+ else if (!argcmp(argv[i],"-fixpix",5,1,&do_fixpix_smooth)); /* dithering */
-+#endif
-
- else if (!argcmp(argv[i],"-flist",3,0,&pm)) /* file list */
- { if (++i<argc) flistName = argv[i]; }
-@@ -1330,6 +1551,10 @@
- { if (++i<argc) infogeom = argv[i]; }
-
- else if (!argcmp(argv[i],"-imap", 3,1,&imap)); /* imap */
-+
-+ else if (!argcmp(argv[i],"-ibg",3,0,&pm)) /* GRR: image background color */
-+ { if (++i<argc) imagebgstr = argv[i]; }
-+
- else if (!argcmp(argv[i],"-lbrowse", 3,1,&browseMode)); /* browse mode */
-
- else if (!argcmp(argv[i],"-lo",3,0,&pm)) /* lowlight */
-@@ -1354,9 +1579,17 @@
- else if (!argcmp(argv[i],"-maxpect",5,1,&pm)) /* auto maximize */
- { automax=pm; fixedaspect=pm; }
-
-+#ifdef MACBINARY
-+ else if (!argcmp(argv[i],"-macbinary",3,1,&handlemacb)); /* macbinary */
-+#endif
-+
- else if (!argcmp(argv[i],"-mfn",3,0,&pm)) /* mono font name */
- { if (++i<argc) monofontname = argv[i]; }
-
-+#ifdef HAVE_MGCSFX
-+ else if (!argcmp(argv[i],"-mgcsfx", 4,1,&mgcsfx)); /* mgcsfx */
-+#endif
-+
- else if (!argcmp(argv[i],"-mono",3,1,&mono)); /* mono */
-
- else if (!argcmp(argv[i],"-name",3,0,&pm)) /* name */
-@@ -1365,17 +1598,30 @@
- else if (!argcmp(argv[i],"-ncols",3,0,&pm)) /* ncols */
- { if (++i<argc) ncols=abs(atoi(argv[i])); }
-
-- else if (!argcmp(argv[i],"-ninstall", 3,1,&ninstall)); /* inst cmaps?*/
-+ else if (!argcmp(argv[i],"-ninstall", 3,1,&ninstall)); /* inst cmaps? */
- else if (!argcmp(argv[i],"-nodecor", 4,1,&nodecor));
- else if (!argcmp(argv[i],"-nofreecols",4,1,&noFreeCols));
- else if (!argcmp(argv[i],"-nolimits", 4,1,&nolimits)); /* nolimits */
-+#ifdef HAVE_MGCSFX
-+ else if (!argcmp(argv[i],"-nomgcsfx", 4,1,&nomgcsfx)); /* nomgcsfx */
-+#endif
-+#if defined(HAVE_PIC) || defined(HAVE_PIC2)
-+ else if (!argcmp(argv[i],"-nopicadjust", 4,1,&nopicadjust));/*nopicadjust*/
-+#endif
- else if (!argcmp(argv[i],"-nopos", 4,1,&nopos)); /* nopos */
- else if (!argcmp(argv[i],"-noqcheck", 4,1,&noqcheck)); /* noqcheck */
-- else if (!argcmp(argv[i],"-noresetroot",5,1,&resetroot)); /* reset root*/
-+ else if (!argcmp(argv[i],"-noresetroot",5,1,&resetroot)); /* reset root */
- else if (!argcmp(argv[i],"-norm", 5,1,&autonorm)); /* norm */
- else if (!argcmp(argv[i],"-nostat", 4,1,&nostat)); /* nostat */
- else if (!argcmp(argv[i],"-owncmap", 2,1,&owncmap)); /* own cmap */
-+#ifdef HAVE_PCD
-+ else if (!argcmp(argv[i],"-pcd", 4,0,&pm)) /* pcd with size */
-+ { if (i+1<argc) PcdSize = atoi(argv[++i]); }
-+#endif
- else if (!argcmp(argv[i],"-perfect", 3,1,&perfect)); /* -perfect */
-+#ifdef HAVE_PIC2
-+ else if (!argcmp(argv[i],"-pic2split", 3,1,&pic2split)); /* pic2split */
-+#endif
- else if (!argcmp(argv[i],"-pkludge", 3,1,&winCtrPosKludge));
- else if (!argcmp(argv[i],"-poll", 3,1,&polling)); /* chk mod? */
-
-@@ -1418,6 +1664,7 @@
- conv24 = CONV24_SLOW;
-
- else if (!argcmp(argv[i],"-smooth",3,1,&autosmooth)); /* autosmooth */
-+ else if (!argcmp(argv[i],"-startgrab",3,1,&startGrab)); /* startGrab */
- else if (!argcmp(argv[i],"-stdcmap",3,1,&stdcmap)); /* use stdcmap */
-
- else if (!argcmp(argv[i],"-tgeometry",2,0,&pm)) /* textview geom */
-@@ -1429,6 +1676,10 @@
- else if (!argcmp(argv[i],"-visual",4,0,&pm)) /* visual */
- { if (++i<argc) visualstr = argv[i]; }
-
-+#ifdef VS_ADJUST
-+ else if (!argcmp(argv[i],"-vsadjust", 3,1,&vsadjust)); /* vsadjust */
-+#endif
-+
- else if (!argcmp(argv[i],"-vsdisable",4,1,&novbrowse)); /* disable sch? */
-
- else if (!argcmp(argv[i],"-vsgeometry",4,0,&pm)) /* visSchnauzer geom */
-@@ -1440,8 +1691,9 @@
-
- else if (!argcmp(argv[i],"-wait",3,0,&pm)) { /* secs betwn pics */
- if (++i<argc) {
-- waitsec = abs(atoi(argv[i]));
-- if (waitsec<0) waitsec = 0;
-+ char *comma = strchr(argv[i], ',');
-+ waitsec_nonfinal = fabs(atof(argv[i]));
-+ waitsec_final = comma? fabs(atof(comma+1)) : waitsec_nonfinal;
- }
- }
-
-@@ -1467,7 +1719,11 @@
- /* check options for validity */
-
- if (strlen(searchdir)) { /* got a search directory */
-+#ifdef AUTO_EXPAND
-+ if (Chvdir(searchdir)) {
-+#else
- if (chdir(searchdir)) {
-+#endif
- fprintf(stderr,"xv: unable to cd to directory '%s'.\n",searchdir);
- fprintf(stderr,
- " Ignoring '-dir' option and/or 'xv.searchDirectory' resource\n");
-@@ -1514,7 +1770,7 @@
- preset = 0;
- }
-
-- if (waitsec < 0) noFreeCols = 0; /* disallow nfc if not doing slideshow */
-+ if (waitsec < 0.0) noFreeCols = 0; /* disallow nfc if not doing slideshow */
- if (noFreeCols && perfect) { perfect = 0; owncmap = 1; }
-
- /* decide what default color allocation stuff we've settled on */
-@@ -1556,6 +1812,20 @@
-
- static void cmdSyntax()
- {
-+ /* GRR 19980605: added version info for most common libraries */
-+ fprintf(stderr, "XV - %s.\n", REVDATE);
-+#ifdef HAVE_JPEG
-+ VersionInfoJPEG();
-+#endif
-+#ifdef HAVE_TIFF
-+ VersionInfoTIFF();
-+#endif
-+#ifdef HAVE_PNG
-+ VersionInfoPNG();
-+#endif
-+ /* pbm/pgm/ppm support is native, not via pbmplus/netpbm libraries */
-+ fprintf(stderr, "\n");
-+
- fprintf(stderr, "Usage:\n");
- printoption(cmd);
- printoption("[-]");
-@@ -1595,6 +1865,9 @@
- printoption("[-expand exp | hexp:vexp]");
- printoption("[-fg color]");
- printoption("[-/+fixed]");
-+#ifdef ENABLE_FIXPIX_SMOOTH
-+ printoption("[-/+fixpix]");
-+#endif
- printoption("[-flist fname]");
- printoption("[-gamma val]");
- printoption("[-geometry geom]");
-@@ -1607,6 +1880,7 @@
- printoption("[-hi color]");
- printoption("[-/+hist]");
- printoption("[-/+hsv]");
-+ printoption("[-ibg color]"); /* GRR 19980314 */
- printoption("[-icgeometry geom]");
- printoption("[-/+iconic]");
- printoption("[-igeometry geom]");
-@@ -1614,9 +1888,15 @@
- printoption("[-/+lbrowse]");
- printoption("[-lo color]");
- printoption("[-/+loadclear]");
-+#ifdef MACBINARY
-+ printoption("[-/+macbinary]");
-+#endif
- printoption("[-/+max]");
- printoption("[-/+maxpect]");
- printoption("[-mfn font]");
-+#ifdef HAVE_MGCSFX
-+ printoption("[-/+mgcsfx]");
-+#endif
- printoption("[-/+mono]");
- printoption("[-name str]");
- printoption("[-ncols #]");
-@@ -1624,13 +1904,25 @@
- printoption("[-/+nodecor]");
- printoption("[-/+nofreecols]");
- printoption("[-/+nolimits]");
-+#ifdef HAVE_MGCSFX
-+ printoption("[-/+nomgcsfx]");
-+#endif
-+#if defined(HAVE_PIC) || defined(HAVE_PIC2)
-+ printoption("[-/+nopicadjust]");
-+#endif
- printoption("[-/+nopos]");
- printoption("[-/+noqcheck]");
- printoption("[-/+noresetroot]");
- printoption("[-/+norm]");
- printoption("[-/+nostat]");
- printoption("[-/+owncmap]");
-+#ifdef HAVE_PCD
-+ printoption("[-pcd size(0=192*128,1,2,3,4=3072*2048)]");
-+#endif
- printoption("[-/+perfect]");
-+#ifdef HAVE_PIC2
-+ printoption("[-/+pic2split]");
-+#endif
- printoption("[-/+pkludge]");
- printoption("[-/+poll]");
- printoption("[-preset #]");
-@@ -1649,17 +1941,22 @@
- printoption("[-/+rw]");
- printoption("[-slow24]");
- printoption("[-/+smooth]");
-+ printoption("[-/+startgrab]");
- printoption("[-/+stdcmap]");
- printoption("[-tgeometry geom]");
- printoption("[-/+vflip]");
- printoption("[-/+viewonly]");
- printoption("[-visual type]");
-+#ifdef VS_ADJUST
-+ printoption("[-/+vsadjust]");
-+#endif
- printoption("[-/+vsdisable]");
- printoption("[-vsgeometry geom]");
- printoption("[-/+vsmap]");
- printoption("[-/+vsperfect]");
-- printoption("[-wait seconds]");
-+ printoption("[-wait secs[,final_secs]]");
- printoption("[-white color]");
-+ printoption("[-windowid windowid]");
- printoption("[-/+wloop]");
- printoption("[filename ...]");
- fprintf(stderr,"\n\n");
-@@ -1682,6 +1979,7 @@
- fprintf(stderr,"\t7: centered on a 'brick' background\n");
- fprintf(stderr,"\t8: symmetrical tiling\n");
- fprintf(stderr,"\t9: symmetrical mirrored tiling\n");
-+ fprintf(stderr,"\t10: upper left corner\n");
- fprintf(stderr,"\n");
- Quit(1);
- }
-@@ -1694,7 +1992,7 @@
- int *plusminus;
- {
- /* does a string compare between a1 and a2. To return '0', a1 and a2
-- must match to the length of a2, and that length has to
-+ must match to the length of a1, and that length has to
- be at least 'minlen'. Otherwise, return non-zero. plusminus set to '1'
- if '-option', '0' if '+option' */
-
-@@ -1734,6 +2032,10 @@
- char *tmp;
- char *fullname, /* full name of the original file */
- filename[512]; /* full name of file to load (could be /tmp/xxx)*/
-+#ifdef MACBINARY
-+ char origname[512]; /* file name of original file (NO processing) */
-+ origname[0] = '\0';
-+#endif
-
- xvbzero((char *) &pinfo, sizeof(PICINFO));
-
-@@ -1866,8 +2168,22 @@
- frompipe = 1;
- }
- }
-+#ifdef AUTO_EXPAND
-+ else {
-+ fullname = (char *) malloc(MAXPATHLEN+2);
-+ strcpy(fullname, namelist[filenum]);
-+ freename = 1;
-+ }
-+ tmp = (char *) rindex(fullname, '/');
-+ if (tmp) {
-+ *tmp = '\0';
-+ Mkvdir(fullname);
-+ *tmp = '/';
-+ }
-+ Dirtovd(fullname);
-+#else
- else fullname = namelist[filenum];
--
-+#endif
-
- strcpy(fullfname, fullname);
- tmp = BaseName(fullname);
-@@ -1875,18 +2191,20 @@
-
-
- /* chop off trailing ".Z", ".z", or ".gz" from displayed basefname, if any */
-- if (strlen(basefname) > (size_t) 2 &&
-- strcmp(basefname+strlen(basefname)-2,".Z")==0)
-+ if (strlen(basefname)>2 && strcmp(basefname+strlen(basefname)-2,".Z")==0)
- basefname[strlen(basefname)-2]='\0';
- else {
- #ifdef GUNZIP
-- if (strlen(basefname)>2 && strcmp(basefname+strlen(basefname)-2,".Z")==0)
-+ if (strlen(basefname)>2 && strcmp(basefname+strlen(basefname)-2,".z")==0)
- basefname[strlen(basefname)-2]='\0';
--
-- else if (strlen(basefname)>3 &&
-- strcmp(basefname+strlen(basefname)-3,".gz")==0)
-+ else
-+ if (strlen(basefname)>3 && strcmp(basefname+strlen(basefname)-3,".gz")==0)
- basefname[strlen(basefname)-3]='\0';
--#endif /* GUNZIP */
-+#endif
-+#ifdef BUNZIP2
-+ if (strlen(basefname)>4 && strcmp(basefname+strlen(basefname)-4,".bz2")==0)
-+ basefname[strlen(basefname)-4]='\0';
-+#endif
- }
-
-
-@@ -1973,6 +2291,9 @@
-
- if (strcmp(filename,STDINSTR)==0) {
- FILE *fp = NULL;
-+#ifndef USE_MKSTEMP
-+ int tmpfd;
-+#endif
-
- #ifndef VMS
- sprintf(filename,"%s/xvXXXXXX",tmpdir);
-@@ -1984,13 +2305,18 @@
- fp = fdopen(mkstemp(filename), "w");
- #else
- mktemp(filename);
-- fp = fopen(filename, "w");
-+ tmpfd = open(filename,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
-+ if (tmpfd < 0) FatalError("openPic(): can't create temporary file");
-+ fp = fdopen(tmpfd,"w");
- #endif
- if (!fp) FatalError("openPic(): can't write temporary file");
-
- clearerr(stdin);
- while ( (i=getchar()) != EOF) putc(i,fp);
- fclose(fp);
-+#ifndef USE_MKSTEMP
-+ close(tmpfd);
-+#endif
-
- /* and remove it from list, since we can never reload from stdin */
- if (strcmp(namelist[0], STDINSTR)==0) deleteFromList(0);
-@@ -2005,15 +2331,21 @@
- (no pipes or stdin, though it could be compressed) to be loaded */
- filetype = ReadFileType(filename);
-
-+#ifdef HAVE_MGCSFX
-+ if (mgcsfx && filetype == RFT_UNKNOWN){ /* force use MgcSfx */
-+ if(getInputCom() != 0) filetype = RFT_MGCSFX;
-+ }
-+#endif
-
-- if (filetype == RFT_COMPRESS) { /* a compressed file. uncompress it */
-+ /* if it's a compressed file, uncompress it: */
-+ if ((filetype == RFT_COMPRESS) || (filetype == RFT_BZIP2)) {
- char tmpname[128];
-
- if (
- #ifndef VMS
-- UncompressFile(filename, tmpname)
-+ UncompressFile(filename, tmpname, filetype)
- #else
-- UncompressFile(basefname, tmpname)
-+ UncompressFile(basefname, tmpname, filetype)
- #endif
- ) {
-
-@@ -2029,6 +2361,57 @@
- WaitCursor();
- }
-
-+#ifdef MACBINARY
-+ if (handlemacb && macb_file == True) {
-+ char tmpname[128];
-+
-+ if (RemoveMacbinary(filename, tmpname)) {
-+ if (strcmp(fullname,filename)!=0) unlink(filename);
-+ strcpy(origname, filename);
-+ strcpy(filename, tmpname);
-+ }
-+ else filetype = RFT_ERROR;
-+
-+ WaitCursor();
-+ }
-+#endif
-+
-+#ifdef HAVE_MGCSFX_AUTO
-+ if (filetype == RFT_MGCSFX) {
-+ char tmpname[128], tmp[256];
-+ char *icom;
-+
-+ if ((icom = mgcsfx_auto_input_com(filename)) != NULL) {
-+ sprintf(tmpname, "%s/xvmsautoXXXXXX", tmpdir);
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(tmpname));
-+#else
-+ mktemp(tmpname);
-+#endif
-+ SetISTR(ISTR_INFO, "Converting to known format by MgcSfx auto...");
-+ sprintf(tmp,"%s >%s", icom, tmpname);
-+ }
-+ else goto ms_auto_no;
-+
-+#ifndef VMS
-+ if (system(tmp))
-+#else
-+ if (!system(tmp))
-+#endif
-+ {
-+ SetISTR(ISTR_INFO, "Unable to convert '%s' by MgcSfx auto.",
-+ BaseName(filename));
-+ Warning();
-+ filetype = RFT_ERROR;
-+ goto ms_auto_no;
-+ }
-+
-+ filetype = ReadFileType(tmpname);
-+ if (strcmp(fullname,filename)!=0) unlink(filename);
-+ strcpy(filename, tmpname);
-+ }
-+ms_auto_no:
-+#endif /* HAVE_MGCSFX_AUTO */
-
- if (filetype == RFT_ERROR) {
- char foostr[512];
-@@ -2042,10 +2425,16 @@
-
- if (filetype == RFT_UNKNOWN) {
- /* view as a text/hex file */
-- TextView(filename);
-+#ifdef MACBINARY
-+ if (origname[0])
-+ i = TextView(origname);
-+ else
-+#endif
-+ i = TextView(filename);
- SetISTR(ISTR_INFO,"'%s' not in a recognized format.", basefname);
- /* Warning(); */
-- goto SHOWN_AS_TEXT;
-+ if (i) goto SHOWN_AS_TEXT;
-+ else goto FAILED;
- }
-
- if (filetype < RFT_ERROR) {
-@@ -2073,8 +2462,9 @@
- if (filetype == RFT_XBM && (!i || pinfo.w==0 || pinfo.h==0)) {
- /* probably just a '.h' file or something... */
- SetISTR(ISTR_INFO," ");
-- TextView(filename);
-- goto SHOWN_AS_TEXT;
-+ i = TextView(filename);
-+ if (i) goto SHOWN_AS_TEXT;
-+ else goto FAILED;
- }
-
- if (!i) {
-@@ -2209,12 +2599,15 @@
- if (fullname && strcmp(fullname,filename)!=0) unlink(filename);
-
-
-- SetISTR(ISTR_INFO,formatStr);
-+ SetISTR(ISTR_INFO, "%s", formatStr);
-
- SetInfoMode(INF_PART);
-- SetISTR(ISTR_FILENAME, "%s",
-- (filenum==DFLTPIC || filenum==GRABBED || frompipe) ?
-- "<none>" : basefname);
-+ if (filenum==DFLTPIC || filenum==GRABBED || frompipe)
-+ SetISTR(ISTR_FILENAME, "<none>");
-+ else if (numPages > 1)
-+ SetISTR(ISTR_FILENAME, "%s Page %d of %d", basefname, curPage+1, numPages);
-+ else
-+ SetISTR(ISTR_FILENAME, "%s", basefname);
-
- SetISTR(ISTR_RES,"%d x %d",pWIDE,pHIGH);
- SetISTR(ISTR_COLOR, "");
-@@ -2424,7 +2817,7 @@
- if (autodither && ncols>0) epicMode = EM_DITH;
-
- /* if in CM_STDCMAP mode, and *not* in '-wait 0', then autodither */
-- if (colorMapMode == CM_STDCMAP && waitsec != 0) epicMode = EM_DITH;
-+ if (colorMapMode == CM_STDCMAP && waitsec != 0.0) epicMode = EM_DITH;
-
- /* if -smooth or image has been shrunk to fit screen */
- if (autosmooth || (pWIDE >maxWIDE || pHIGH>maxHIGH)
-@@ -2510,7 +2903,11 @@
- to generate the correct exposes (particularly with 'BitGravity' turned
- on */
-
-- if (mainW && !useroot) GenExpose(mainW, 0, 0, (u_int) eWIDE, (u_int) eHIGH);
-+ /*Brian T. Schellenberger: fix for X 4.2 refresh problem*/
-+ if (mainW && !useroot) {
-+ XSync(theDisp, False);
-+ GenExpose(mainW, 0, 0, (u_int) eWIDE, (u_int) eHIGH);
-+ }
-
- return 1;
-
-@@ -2542,6 +2939,9 @@
- }
-
-
-+extern byte ZXheader[128]; /* [JCE] Spectrum screen magic number is
-+ defined in xvzx.c */
-+
-
- /********************************/
- int ReadFileType(fname)
-@@ -2554,76 +2954,105 @@
-
- FILE *fp;
- byte magicno[30]; /* first 30 bytes of file */
-- int rv, n;
-+ int rv=RFT_UNKNOWN, n;
-+#ifdef MACBINARY
-+ int macbin_alrchk = False;
-+#endif
-
- if (!fname) return RFT_ERROR; /* shouldn't happen */
-
- fp = xv_fopen(fname, "r");
- if (!fp) return RFT_ERROR;
-
-+ if (strlen(fname) > 4 &&
-+ strcasecmp(fname+strlen(fname)-5, ".wbmp")==0) rv = RFT_WBMP;
-+
- n = fread(magicno, (size_t) 1, (size_t) 30, fp);
- fclose(fp);
-
-- if (n<30) return RFT_UNKNOWN; /* files less than 30 bytes long... */
-+ if (n<30) return rv; /* files less than 30 bytes long... */
-
-- rv = RFT_UNKNOWN;
-+#ifdef MACBINARY
-+ macb_file = False;
-+ while (1) {
-+#endif
-
-- if (strncmp((char *) magicno,"GIF87a", (size_t) 6)==0 ||
-- strncmp((char *) magicno,"GIF89a", (size_t) 6)==0) rv = RFT_GIF;
-+#ifdef HAVE_MGCSFX
-+ if (is_mgcsfx(fname, magicno, 30) != 0) rv = RFT_MGCSFX;
-+ else
-+#endif
-+ if (strncmp((char *) magicno,"GIF87a", (size_t) 6)==0 ||
-+ strncmp((char *) magicno,"GIF89a", (size_t) 6)==0) rv = RFT_GIF;
-
- else if (strncmp((char *) magicno,"VIEW", (size_t) 4)==0 ||
-- strncmp((char *) magicno,"WEIV", (size_t) 4)==0) rv = RFT_PM;
-+ strncmp((char *) magicno,"WEIV", (size_t) 4)==0) rv = RFT_PM;
-+
-+#ifdef HAVE_PIC2
-+ else if (magicno[0]=='P' && magicno[1]=='2' &&
-+ magicno[2]=='D' && magicno[3]=='T') rv = RFT_PIC2;
-+#endif
-
- else if (magicno[0] == 'P' && magicno[1]>='1' &&
-- magicno[1]<='6') rv = RFT_PBM;
-+ (magicno[1]<='6' || magicno[1]=='8')) rv = RFT_PBM;
-
- /* note: have to check XPM before XBM, as first 2 chars are the same */
- else if (strncmp((char *) magicno, "/* XPM */", (size_t) 9)==0) rv = RFT_XPM;
-
- else if (strncmp((char *) magicno,"#define", (size_t) 7)==0 ||
-- (magicno[0] == '/' && magicno[1] == '*')) rv = RFT_XBM;
-+ (magicno[0] == '/' && magicno[1] == '*')) rv = RFT_XBM;
-
- else if (magicno[0]==0x59 && (magicno[1]&0x7f)==0x26 &&
-- magicno[2]==0x6a && (magicno[3]&0x7f)==0x15) rv = RFT_SUNRAS;
-+ magicno[2]==0x6a && (magicno[3]&0x7f)==0x15) rv = RFT_SUNRAS;
-
-- else if (magicno[0] == 'B' && magicno[1] == 'M') rv = RFT_BMP;
-+ else if (magicno[0] == 'B' && magicno[1] == 'M') rv = RFT_BMP;
-
-- else if (magicno[0]==0x52 && magicno[1]==0xcc) rv = RFT_UTAHRLE;
-+ else if (magicno[0]==0x52 && magicno[1]==0xcc) rv = RFT_UTAHRLE;
-
- else if ((magicno[0]==0x01 && magicno[1]==0xda) ||
-- (magicno[0]==0xda && magicno[1]==0x01)) rv = RFT_IRIS;
-+ (magicno[0]==0xda && magicno[1]==0x01)) rv = RFT_IRIS;
-
-- else if (magicno[0]==0x1f && magicno[1]==0x9d) rv = RFT_COMPRESS;
-+ else if (magicno[0]==0x1f && magicno[1]==0x9d) rv = RFT_COMPRESS;
-
- #ifdef GUNZIP
-- else if (magicno[0]==0x1f && magicno[1]==0x8b) rv = RFT_COMPRESS;
-+ else if (magicno[0]==0x1f && magicno[1]==0x8b) rv = RFT_COMPRESS;
- #endif
-
-- else if (magicno[0]==0x0a && magicno[1] <= 5) rv = RFT_PCX;
-+#ifdef BUNZIP2
-+ else if (magicno[0]==0x42 && magicno[1]==0x5a) rv = RFT_BZIP2;
-+#endif
-+
-+ else if (magicno[0]==0x0a && magicno[1] <= 5) rv = RFT_PCX;
-
- else if (strncmp((char *) magicno, "FORM", (size_t) 4)==0 &&
-- strncmp((char *) magicno+8, "ILBM", (size_t) 4)==0) rv = RFT_IFF;
-+ strncmp((char *) magicno+8, "ILBM", (size_t) 4)==0) rv = RFT_IFF;
-
- else if (magicno[0]==0 && magicno[1]==0 &&
- magicno[2]==2 && magicno[3]==0 &&
- magicno[4]==0 && magicno[5]==0 &&
-- magicno[6]==0 && magicno[7]==0) rv = RFT_TARGA;
-+ magicno[6]==0 && magicno[7]==0) rv = RFT_TARGA;
-
- else if (magicno[4]==0x00 && magicno[5]==0x00 &&
-- magicno[6]==0x00 && magicno[7]==0x07) rv = RFT_XWD;
-+ magicno[6]==0x00 && magicno[7]==0x07) rv = RFT_XWD;
-
- else if (strncmp((char *) magicno,"SIMPLE ", (size_t) 8)==0 &&
-- magicno[29] == 'T') rv = RFT_FITS;
-+ magicno[29] == 'T') rv = RFT_FITS;
-
-+ /* [JCE] Spectrum screen */
-+ else if (memcmp(magicno, ZXheader, (size_t) 18)==0) rv = RFT_ZX;
-
- #ifdef HAVE_JPEG
- else if (magicno[0]==0xff && magicno[1]==0xd8 &&
-- magicno[2]==0xff) rv = RFT_JFIF;
-+ magicno[2]==0xff) rv = RFT_JFIF;
- #endif
-
- #ifdef HAVE_TIFF
- else if ((magicno[0]=='M' && magicno[1]=='M') ||
-- (magicno[0]=='I' && magicno[1]=='I')) rv = RFT_TIFF;
-+ (magicno[0]=='I' && magicno[1]=='I')) rv = RFT_TIFF;
-+#endif
-+
-+#ifdef HAVE_PNG
-+ else if (magicno[0]==0x89 && magicno[1]=='P' &&
-+ magicno[2]=='N' && magicno[3]=='G') rv = RFT_PNG;
- #endif
-
- #ifdef HAVE_PDS
-@@ -2635,11 +3064,59 @@
- rv = RFT_PDSVICAR;
- #endif
-
--#ifdef GS_PATH
-+#ifdef GS_PATH /* Ghostscript handles both PostScript and PDF */
- else if (strncmp((char *) magicno, "%!", (size_t) 2)==0 ||
-- strncmp((char *) magicno, "\004%!", (size_t) 3)==0) rv = RFT_PS;
-+ strncmp((char *) magicno, "\004%!", (size_t) 3)==0 ||
-+ strncmp((char *) magicno, "%PDF", (size_t) 4)==0) rv = RFT_PS;
- #endif
-
-+#ifdef HAVE_MAG
-+ else if (strncmp((char *) magicno,"MAKI02 ", (size_t) 8)==0) rv = RFT_MAG;
-+#endif
-+
-+#ifdef HAVE_MAKI
-+ else if (strncmp((char *) magicno,"MAKI01A ", (size_t) 8)==0 ||
-+ strncmp((char *) magicno,"MAKI01B ", (size_t) 8)==0) rv = RFT_MAKI;
-+#endif
-+
-+#ifdef HAVE_PIC
-+ else if (magicno[0]=='P' && magicno[1]=='I'&&magicno[2]=='C') rv = RFT_PIC;
-+#endif
-+
-+#ifdef HAVE_PI
-+ else if (magicno[0]=='P' && magicno[1]=='i') rv = RFT_PI;
-+#endif
-+
-+#ifdef HAVE_HIPS
-+ else if (strstr((char *) magicno, "./digest")) rv = RFT_HIPS;
-+#endif
-+
-+#ifdef HAVE_PCD
-+ else if (magicno[0]==0xff && magicno[1]==0xff &&
-+ magicno[2]==0xff && magicno[3]==0xff) rv = RFT_PCD;
-+#endif
-+
-+#ifdef MACBINARY
-+ /* Now we try to handle MacBinary files, but the method is VERY dirty... */
-+ if (macbin_alrchk == True) {
-+ macb_file = True;
-+ break;
-+ }
-+
-+ if (rv != RFT_UNKNOWN)
-+ break;
-+
-+ /* Skip MACBSIZE and recheck */
-+ macbin_alrchk = True;
-+ fp = xv_fopen(fname, "r");
-+ if (!fp) return RFT_ERROR;
-+ fseek(fp, MACBSIZE, SEEK_SET);
-+ n = fread(magicno, (size_t) 1, (size_t) 30, fp);
-+ fclose(fp);
-+
-+ if (n<30) return RFT_UNKNOWN; /* files less than 30 bytes long... */
-+ }
-+#endif
- return rv;
- }
-
-@@ -2652,9 +3129,10 @@
- PICINFO *pinfo;
- {
- /* if quick is set, we're being called to generate icons, or something
-- like that. We should load the image as quickly as possible. Currently,
-- this only affects the LoadPS routine, which, if quick is set, only
-- generates the page file for the first page of the document */
-+ like that. We should load the image as quickly as possible. Previously,
-+ this affected only the LoadPS routine, which, if quick is set, only
-+ generates the page file for the first page of the document. Now it
-+ also affects PCD, which loads only a thumbnail. */
-
- int rv = 0;
-
-@@ -2665,7 +3143,11 @@
- switch (ftype) {
- case RFT_GIF: rv = LoadGIF (fname, pinfo); break;
- case RFT_PM: rv = LoadPM (fname, pinfo); break;
-+#ifdef HAVE_MGCSFX
-+ case RFT_PBM: rv = LoadPBM (fname, pinfo, -1); break;
-+#else
- case RFT_PBM: rv = LoadPBM (fname, pinfo); break;
-+#endif
- case RFT_XBM: rv = LoadXBM (fname, pinfo); break;
- case RFT_SUNRAS: rv = LoadSunRas(fname, pinfo); break;
- case RFT_BMP: rv = LoadBMP (fname, pinfo); break;
-@@ -2677,21 +3159,60 @@
- case RFT_XPM: rv = LoadXPM (fname, pinfo); break;
- case RFT_XWD: rv = LoadXWD (fname, pinfo); break;
- case RFT_FITS: rv = LoadFITS (fname, pinfo, quick); break;
-+ case RFT_ZX: rv = LoadZX (fname, pinfo); break; /* [JCE] */
-+ case RFT_WBMP: rv = LoadWBMP (fname, pinfo); break;
-+
-+#ifdef HAVE_PCD
-+ /* if quick is switched on, use the smallest image size; don't ask the user */
-+ case RFT_PCD: rv = LoadPCD (fname, pinfo, quick ? 0 : PcdSize); break;
-+#endif
-
- #ifdef HAVE_JPEG
-- case RFT_JFIF: rv = LoadJFIF (fname, pinfo, quick); break;
-+ case RFT_JFIF: rv = LoadJFIF (fname, pinfo, quick); break;
- #endif
-
- #ifdef HAVE_TIFF
-- case RFT_TIFF: rv = LoadTIFF (fname, pinfo, quick); break;
-+ case RFT_TIFF: rv = LoadTIFF (fname, pinfo, quick); break;
-+#endif
-+
-+#ifdef HAVE_PNG
-+ case RFT_PNG: rv = LoadPNG (fname, pinfo); break;
- #endif
-
- #ifdef HAVE_PDS
-- case RFT_PDSVICAR: rv = LoadPDS (fname, pinfo); break;
-+ case RFT_PDSVICAR: rv = LoadPDS (fname, pinfo); break;
- #endif
-
- #ifdef GS_PATH
-- case RFT_PS: rv = LoadPS (fname, pinfo, quick); break;
-+ case RFT_PS: rv = LoadPS (fname, pinfo, quick); break;
-+#endif
-+
-+#ifdef HAVE_MAG
-+ case RFT_MAG: rv = LoadMAG (fname, pinfo); break;
-+#endif
-+
-+#ifdef HAVE_MAKI
-+ case RFT_MAKI: rv = LoadMAKI (fname, pinfo); break;
-+#endif
-+
-+#ifdef HAVE_PIC
-+ case RFT_PIC: rv = LoadPIC (fname, pinfo); break;
-+#endif
-+
-+#ifdef HAVE_PI
-+ case RFT_PI: rv = LoadPi (fname, pinfo); break;
-+#endif
-+
-+#ifdef HAVE_PIC2
-+ case RFT_PIC2: rv = LoadPIC2 (fname, pinfo, quick); break;
-+#endif
-+
-+#ifdef HAVE_HIPS
-+ case RFT_HIPS: rv = LoadHIPS (fname, pinfo); break;
-+#endif
-+
-+#ifdef HAVE_MGCSFX
-+ case RFT_MGCSFX: rv = LoadMGCSFX (fname, pinfo); break;
- #endif
-
- }
-@@ -2700,13 +3221,17 @@
-
-
- /********************************/
--int UncompressFile(name, uncompname)
-+int UncompressFile(name, uncompname, filetype)
- char *name, *uncompname;
-+ int filetype;
- {
- /* returns '1' on success, with name of uncompressed file in uncompname
- returns '0' on failure */
-
- char namez[128], *fname, buf[512];
-+#ifndef USE_MKSTEMP
-+ int tmpfd;
-+#endif
-
- fname = name;
- namez[0] = '\0';
-@@ -2746,15 +3271,23 @@
- close(mkstemp(uncompname));
- #else
- mktemp(uncompname);
-+ tmpfd = open(uncompname,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
-+ if (tmpfd < 0) FatalError("UncompressFile(): can't create temporary file");
-+ close(tmpfd);
- #endif
-
- #ifndef VMS
-- sprintf(buf,"%s -c %s >%s", UNCOMPRESS, fname, uncompname);
-+ if (filetype == RFT_COMPRESS)
-+ sprintf(buf,"%s -c '%s' > '%s'", UNCOMPRESS, fname, uncompname);
-+# ifdef BUNZIP2
-+ else if (filetype == RFT_BZIP2)
-+ sprintf(buf,"%s -c '%s' > '%s'", BUNZIP2, fname, uncompname);
-+# endif
- #else /* it IS VMS */
- # ifdef GUNZIP
-- sprintf(buf,"%s %s %s", UNCOMPRESS, fname, uncompname);
-+ sprintf(buf,"%s '%s' '%s'", UNCOMPRESS, fname, uncompname);
- # else
-- sprintf(buf,"%s %s", UNCOMPRESS, fname);
-+ sprintf(buf,"%s '%s'", UNCOMPRESS, fname);
- # endif
- #endif
-
-@@ -2797,6 +3330,62 @@
- }
-
-
-+#ifdef MACBINARY
-+/********************************/
-+int RemoveMacbinary(src, dst)
-+ char *src, *dst;
-+{
-+ char buffer[8192]; /* XXX */
-+ int n, eof;
-+#ifndef USE_MKSTEMP
-+ int tmpfd;
-+#endif
-+ FILE *sfp, *dfp;
-+
-+ sprintf(dst, "%s/xvmXXXXXX", tmpdir);
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(dst));
-+#else
-+ mktemp(dst);
-+ tmpfd = open(dst,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
-+ if (tmpfd < 0) FatalError("RemoveMacbinary(): can't create temporary file");
-+#endif
-+
-+ SetISTR(ISTR_INFO, "Removing MacBinary...");
-+
-+ sfp = xv_fopen(src, "r");
-+#ifdef USE_MKSTEMP
-+ dfp = xv_fopen(dst, "w");
-+#else
-+ dfp = fdopen(tmpfd, "w");
-+#endif
-+ if (!sfp || !dfp) {
-+ SetISTR(ISTR_INFO, "Unable to remove a InfoFile header form '%s'.", src);
-+ Warning();
-+ return 0;
-+ }
-+ fseek(sfp, MACBSIZE, SEEK_SET);
-+ while ((n = fread(buffer, 1, sizeof(buffer), sfp)) == 8192) /* XXX */
-+ fwrite(buffer, 1, n, dfp);
-+ if ((eof = feof(sfp)))
-+ fwrite(buffer, 1, n, dfp);
-+ fclose(sfp);
-+ fflush(dfp);
-+ fclose(dfp);
-+#ifndef USE_MKSTEMP
-+ close(tmpfd);
-+#endif
-+ if (!eof) {
-+ SetISTR(ISTR_INFO, "Unable to remove a InfoFile header form '%s'.", src);
-+ Warning();
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+#endif
-+
-+
- /********************************/
- void KillPageFiles(bname, numpages)
- char *bname;
-@@ -2918,6 +3507,9 @@
-
- char fullcmd[512], tmpname[64], str[512];
- int i;
-+#ifndef USE_MKSTEMP
-+ int tmpfd;
-+#endif
-
- if (!cmd || (strlen(cmd) < (size_t) 2)) return 1;
-
-@@ -2926,6 +3518,9 @@
- close(mkstemp(tmpname));
- #else
- mktemp(tmpname);
-+ tmpfd = open(tmpname,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
-+ if (tmpfd < 0) FatalError("openPic(): can't create temporary file");
-+ close(tmpfd);
- #endif
- if (tmpname[0] == '\0') { /* mktemp() or mkstemp() blew up */
- sprintf(str,"Unable to create temporary filename.");
-@@ -2966,26 +3561,21 @@
- {
- int i;
-
-+ waitsec = (numnames <= 1)? waitsec_final : waitsec_nonfinal;
-+
- if (!numnames) { openPic(DFLTPIC); return; }
-
- i = 0;
-- if (!randomShow) {
-- while (numnames>0) {
-- if (openPic(0)) return; /* success */
-- else {
-- if (polling && !i)
-- fprintf(stderr,"%s: POLLING: Waiting for file '%s' \n\tto %s\n",
-- cmd, namelist[0], "be created, or whatever...");
-- i = 1;
-- }
-+ while (numnames>0) {
-+ if (openPic(0)) return; /* success */
-+ else {
-+ if (polling && !i)
-+ fprintf(stderr,"%s: POLLING: Waiting for file '%s' \n\tto %s\n",
-+ cmd, namelist[0], "be created, or whatever...");
-+ i = 1;
- }
- }
-
-- else { /* pick random first picture */
-- for (i=findRandomPic(); i>=0; i=findRandomPic())
-- if (openPic(i)) return; /* success */
-- }
--
- if (numnames>1) FatalError("couldn't open any pictures");
- else Quit(-1);
- }
-@@ -3014,19 +3604,15 @@
- {
- int i;
-
-- if (!randomShow) {
-- if (curname>=0) i = curname+1;
-- else if (nList.selected >= 0 && nList.selected < numnames)
-- i = nList.selected;
-- else i = 0;
-+ if (curname>=0) i = curname+1;
-+ else if (nList.selected >= 0 && nList.selected < numnames)
-+ i = nList.selected;
-+ else i = 0;
-
-- while (i<numnames && !openPic(i));
-- if (i<numnames) return; /* success */
-- }
-- else {
-- for (i=findRandomPic(); i>=0; i=findRandomPic())
-- if (openPic(i)) return;
-- }
-+ waitsec = (i == numnames-1)? waitsec_final : waitsec_nonfinal;
-+
-+ while (i<numnames && !openPic(i));
-+ if (i<numnames) return; /* success */
-
- Quit(0);
- }
-@@ -3039,25 +3625,21 @@
-
- j = loop = 0;
- while (1) {
-- if (!randomShow) {
-
-- if (curname>=0) i = curname+1;
-- else if (nList.selected >= 0 && nList.selected < numnames)
-- i = nList.selected;
-- else i = 0;
-+ if (curname>=0) i = curname+1;
-+ else if (nList.selected >= 0 && nList.selected < numnames)
-+ i = nList.selected;
-+ else i = 0;
-
-- if (loop) { i = 0; loop = 0; }
-+ if (loop) { i = 0; loop = 0; }
-
-- while (i<numnames && !openPic(i));
-- if (i<numnames) return;
-- }
-- else {
-- for (i=findRandomPic(); i>=0; i=findRandomPic())
-- if (openPic(i)) return;
-- }
-+ waitsec = (i == numnames-1)? waitsec_final : waitsec_nonfinal;
-+
-+ while (i<numnames && !openPic(i));
-+ if (i<numnames) return;
-
- loop = 1; /* back to top of list */
-- if (j) break; /* we're in a 'failure loop' */
-+ if (j) break; /* we're in a 'failure loop' */
- j++;
- }
-
-@@ -3090,47 +3672,6 @@
- openPic(LOADPIC);
- }
-
--
--
--
--/****************/
--static int findRandomPic()
--/****************/
--{
-- static byte *loadList;
-- static int left_to_load, listLen = -1;
-- int k;
-- time_t t;
--
-- /* picks a random name out of the list, and returns it's index. If there
-- are no more names to pick, it returns '-1' and resets itself */
--
-- if (!loadList || numnames!=listLen) {
-- if (loadList) free(loadList);
-- else {
-- time(&t);
-- srandom((unsigned int) t); /* seed the random */
-- }
--
-- left_to_load = listLen = numnames;
-- loadList = (byte *) malloc((size_t) listLen);
-- for (k=0; k<listLen; k++) loadList[k] = 0;
-- }
--
-- if (left_to_load <= 0) { /* we've loaded all the pics */
-- for (k=0; k<listLen; k++) loadList[k] = 0; /* clear flags */
-- left_to_load = listLen;
-- return -1; /* 'done' return */
-- }
--
-- for (k=abs(random()) % listLen; loadList[k]; k = (k+1) % listLen);
--
-- left_to_load--;
-- loadList[k] = TRUE;
--
-- return k;
--}
--
- /****************/
- static void mainLoop()
- {
-@@ -3144,10 +3685,11 @@
- selected file (or the 0th file, if no selection either), and 'Prev' means
- view the one right before the selected file */
-
-- openFirstPic(); /* find first displayable picture, exit if none */
-+ /* find first displayable picture, exit if none */
-+ if (!startGrab) openFirstPic();
-
- if (!pic) { /* must've opened a text file... display dflt pic */
-- openPic(DFLTPIC);
-+ if (!startGrab) openPic(DFLTPIC);
- if (mainW && !useroot) RaiseTextWindows();
- }
-
-@@ -3224,8 +3766,16 @@
- hints.flags = 0;
- if ((i&XValue || i&YValue)) hints.flags = USPosition;
-
-- if (i&XValue && i&XNegative) x = vrWIDE - eWIDE - abs(x);
-- if (i&YValue && i&YNegative) y = vrHIGH - eHIGH - abs(y);
-+ hints.win_gravity = NorthWestGravity;
-+ if (i&XValue && i&XNegative) {
-+ hints.win_gravity = NorthEastGravity;
-+ x = vrWIDE - (eWIDE + 2 * bwidth) - abs(x);
-+ }
-+ if (i&YValue && i&YNegative) {
-+ hints.win_gravity = (hints.win_gravity == NorthWestGravity) ?
-+ SouthWestGravity : SouthEastGravity;
-+ y = vrHIGH - (eHIGH + 2 * bwidth) - abs(y);
-+ }
-
- if (x+eWIDE > vrWIDE) x = vrWIDE - eWIDE; /* keep on screen */
- if (y+eHIGH > vrHIGH) y = vrHIGH - eHIGH;
-@@ -3245,7 +3795,7 @@
- hints.x = x; hints.y = y;
- hints.width = eWIDE; hints.height = eHIGH;
- hints.max_width = maxWIDE; hints.max_height = maxHIGH;
-- hints.flags |= USSize | PMaxSize;
-+ hints.flags |= USSize | PMaxSize | PWinGravity;
-
- xswa.bit_gravity = StaticGravity;
- xswa.background_pixel = bg;
-@@ -3294,10 +3844,6 @@
- }
- }
-
--
-- XSetStandardProperties(theDisp,mainW,"","",None,NULL,0,&hints);
-- setWinIconNames(name);
--
- xwmh.input = True;
- xwmh.flags = InputHint;
-
-@@ -3322,12 +3868,13 @@
- }
- }
- }
-- XSetWMHints(theDisp, mainW, &xwmh);
-
- classh.res_name = "xv";
- classh.res_class = "XVroot";
-- XSetClassHint(theDisp, mainW, &classh);
-
-+ XmbSetWMProperties(theDisp, mainW, NULL, NULL, NULL, 0, &hints, &xwmh,
-+ &classh);
-+ setWinIconNames(name);
-
- if (nodecor) { /* turn of image window decorations (in MWM) */
- Atom mwm_wm_hints;
-@@ -4070,16 +4617,30 @@
- unsigned long nitems, nleft;
- byte *data;
-
-- i = XGetWindowProperty(theDisp, RootWindow(theDisp, 0),
-- resAtom, 0L, 1L, False,
-- XA_STRING, &actType, &actFormat, &nitems, &nleft,
-- (unsigned char **) &data);
-+ if (spec_window) {
-+ i = XGetWindowProperty(theDisp, spec_window,
-+ resAtom, 0L, 1L, False,
-+ XA_STRING, &actType, &actFormat, &nitems, &nleft,
-+ (unsigned char **) &data);
-+ } else {
-+ i = XGetWindowProperty(theDisp, RootWindow(theDisp, 0),
-+ resAtom, 0L, 1L, False,
-+ XA_STRING, &actType, &actFormat, &nitems, &nleft,
-+ (unsigned char **) &data);
-+ }
- if (i==Success && actType==XA_STRING && actFormat==8) {
- if (nitems>0 && data) XFree(data);
-- i = XGetWindowProperty(theDisp, RootWindow(theDisp, 0), resAtom, 0L,
-- (long) ((nleft+4+3)/4),
-- False, XA_STRING, &actType, &actFormat,
-- &nitems, &nleft, (unsigned char **) &data);
-+ if (spec_window) {
-+ i = XGetWindowProperty(theDisp, spec_window, resAtom, 0L,
-+ (long) ((nleft+4+3)/4),
-+ False, XA_STRING, &actType, &actFormat,
-+ &nitems, &nleft, (unsigned char **) &data);
-+ } else {
-+ i = XGetWindowProperty(theDisp, RootWindow(theDisp, 0), resAtom, 0L,
-+ (long) ((nleft+4+3)/4),
-+ False, XA_STRING, &actType, &actFormat,
-+ &nitems, &nleft, (unsigned char **) &data);
-+ }
- if (i==Success && actType==XA_STRING && actFormat==8 && data) {
- def_resource = XrmGetStringDatabase((char *) data);
- XFree(data);
-diff -ruN xv-3.10a-bugfixes/xv.h xv-3.10a-enhancements/xv.h
---- xv-3.10a-bugfixes/xv.h 2005-04-10 09:37:18.000000000 -0700
-+++ xv-3.10a-enhancements/xv.h 2005-05-01 13:32:10.000000000 -0700
-@@ -14,8 +14,9 @@
- /* GRR orig jumbo enhancements patch: 20000220 */
- /* GRR 1st public jumbo F+E patches: 20040531 */
- /* GRR 2nd public jumbo F+E patches: 20050410 */
--#define REVDATE "version 3.10a-jumboFix of 20050410"
--#define VERSTR "3.10a-20050410"
-+/* GRR 3rd public jumbo F+E patches: 20050501 */
-+#define REVDATE "version 3.10a-jumboFix+Enh of 20050501"
-+#define VERSTR "3.10a-20050501"
-
- /*
- * uncomment the following, and modify for your site, but only if you've
-@@ -49,6 +50,10 @@
- /* START OF MACHINE-DEPENDENT CONFIGURATION INFO */
- /*************************************************/
-
-+
-+#define ENABLE_FIXPIX_SMOOTH /* GRR 19980607 */
-+
-+
- /* Things to make xv more likely to just build, without the user tweaking
- the makefile */
-
-@@ -67,6 +72,14 @@
- # define SVR4
- #endif
-
-+#if defined(__sony_news) && defined(bsd43) && !defined(__bsd43)
-+# define __bsd43
-+#elif defined(__sony_news) && (defined(SYSTYPE_BSD) || defined(__SYSTYPE_BSD)) && !defined(bsd43) && !defined(__bsd43)
-+# define bsd43
-+# define __bsd43
-+#endif
-+
-+#include <signal.h> /* for interrupt handling */
-
- /* at least on Linux, the following file (1) includes sys/types.h and
- * (2) defines __USE_BSD (which was not defined before here), so __linux__
-@@ -78,7 +91,9 @@
- # ifndef _LINUX_LIMITS_H
- # include <linux/limits.h>
- # endif
--# define USLEEP
-+# ifndef USLEEP
-+# define USLEEP
-+# endif
- /* want only one or the other defined, not both: */
- # if !defined(BSDTYPES) && !defined(__USE_BSD)
- # define BSDTYPES
-@@ -117,6 +132,16 @@
- #endif
-
-
-+#if defined(__sony_news) && defined(__bsd43)
-+# include <unistd.h>
-+#endif
-+
-+
-+#if defined(__FreeBSD__)
-+# include <sys/param.h>
-+#endif
-+
-+
- /* include files */
- #include <stdio.h>
- #include <math.h>
-@@ -132,9 +157,11 @@
-
- #ifndef VMS
- # include <errno.h>
-- extern int errno; /* SHOULD be in errno.h, but often isn't */
--# if !defined(__NetBSD__) && !(defined(__linux__) && defined(__USE_BSD))
-- extern char *sys_errlist[]; /* this too... */
-+# ifndef __NetBSD__
-+# if !(defined __GLIBC__ && __GLIBC__ >= 2)
-+ extern int errno; /* SHOULD be in errno.h, but often isn't */
-+ extern char *sys_errlist[]; /* this too... */
-+# endif
- # endif
- #endif
-
-@@ -203,9 +230,10 @@
- #include <X11/Xatom.h>
- #include <X11/Xmd.h>
-
-+#ifdef TV_L10N
-+# include <X11/Xlocale.h>
-+#endif
-
--#undef SIGCHLD /* defined in both Xos.h and signal.h */
--#include <signal.h> /* for interrupt handling */
-
- #include <sys/types.h>
-
-@@ -316,7 +344,9 @@
- # endif
- #endif
-
--
-+#ifndef S_IRWUSR
-+# define S_IRWUSR (S_IRUSR|__S_IWRITE)
-+#endif
-
- #ifndef MAXPATHLEN
- # define MAXPATHLEN 256
-@@ -343,13 +373,36 @@
- #endif
-
-
--/* GRR 20040430: This is new and still only partially implemented. No doubt
-- * there are many other systems that have mkstemp() (SUSv3),
-- * but let's start small... */
--#if defined(__linux__) || defined(__OpenBSD__)
--# define USE_MKSTEMP /* use 'mkstemp()' instead of 'mktemp()' */
-+/* GRR 20040430: This is new and still not fully deployed. No doubt there
-+ * are other systems that have mkstemp() (SUSv3); we can add
-+ * them later. */
-+#ifndef VMS /* VMS hates multi-line definitions */
-+# if defined(__linux__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
-+ defined(__bsdi__)
-+# ifndef USE_MKSTEMP
-+# define USE_MKSTEMP /* use 'mkstemp()' instead of 'mktemp()' */
-+# endif /* >> SECURITY ISSUE << */
-+# endif
-+#endif
-+
-+
-+/* GRR 20040503: This is new and so far tested only under Linux. But it
-+ * allows -wait to work with subsecond values as long as
-+ * times() exists and clock_t is a long int (latter matters
-+ * only if/when clocks wrap, which for Linux is multiples of
-+ * 497.11 days since the last reboot). */
-+#if defined(__linux__)
-+# define USE_TICKS /* use times()/Timer(), not time()/sleep() */
-+# include <limits.h> /* LONG_MAX (really want CLOCK_T_MAX) */
-+# include <sys/times.h> /* times() */
-+# ifndef CLK_TCK /* can be undefined in strict-ANSI mode */
-+# define CLK_TCK CLOCKS_PER_SEC /* claimed to be same thing in time.h */
-+# endif
- #endif
-
-+#if (defined(SYSV) || defined(SVR4) || defined(linux)) && !defined(USE_GETCWD)
-+# define USE_GETCWD
-+#endif
-
- /*****************************/
- /* END OF CONFIGURATION INFO */
-@@ -363,17 +416,21 @@
- # define HAVE_TIFF
- #endif
-
-+#ifdef DOPNG
-+# define HAVE_PNG
-+#endif
-+
- #ifdef DOPDS
- # define HAVE_PDS
- #endif
-
-
-
--#define PROGNAME "xv" /* used in resource database */
-+#define PROGNAME "xv" /* used in resource database */
-
--#define MAXNAMES 4096 /* max # of files in ctrlW list */
-+#define MAXNAMES 32768 /* max # of files in ctrlW list */
-
--#define MAXBRWIN 4 /* max # of vis browser windows */
-+#define MAXBRWIN 16 /* max # of vis browser windows */
-
- /* strings in the INFOBOX (used in SetISTR and GetISTR) */
- #define NISTR 10 /* number of ISTRs */
-@@ -494,24 +551,80 @@
- #define F_TIFINC 0
- #endif
-
-+#ifdef HAVE_PNG
-+#define F_PNGINC 1
-+#else
-+#define F_PNGINC 0
-+#endif
-+
-+#ifdef HAVE_MAG
-+# define F_MAGINC 1
-+#else
-+# define F_MAGINC 0
-+#endif
-+
-+#ifdef HAVE_PIC
-+# define F_PICINC 1
-+#else
-+# define F_PICINC 0
-+#endif
-+
-+#ifdef HAVE_MAKI
-+# define F_MAKINC 1
-+#else
-+# define F_MAKINC 0
-+#endif
-+
-+#ifdef HAVE_PI
-+# define F_PAIINC 1
-+#else
-+# define F_PAIINC 0
-+#endif
-+
-+#ifdef HAVE_PIC2
-+# define F_PC2INC 1
-+#else
-+# define F_PC2INC 0
-+#endif
-+
-+#ifdef HAVE_MGCSFX
-+# define F_MGCSFXINC 1
-+#else
-+# define F_MGCSFXINC 0
-+#endif
-+
-+#ifdef MACBINARY
-+# define MACBSIZE 128
-+#endif
-
- #define F_GIF 0
- #define F_JPEG ( 0 + F_JPGINC)
- #define F_TIFF ( 0 + F_JPGINC + F_TIFINC)
--#define F_PS ( 1 + F_JPGINC + F_TIFINC)
--#define F_PBMRAW ( 2 + F_JPGINC + F_TIFINC)
--#define F_PBMASCII ( 3 + F_JPGINC + F_TIFINC)
--#define F_XBM ( 4 + F_JPGINC + F_TIFINC)
--#define F_XPM ( 5 + F_JPGINC + F_TIFINC)
--#define F_BMP ( 6 + F_JPGINC + F_TIFINC)
--#define F_SUNRAS ( 7 + F_JPGINC + F_TIFINC)
--#define F_IRIS ( 8 + F_JPGINC + F_TIFINC)
--#define F_TARGA ( 9 + F_JPGINC + F_TIFINC)
--#define F_FITS (10 + F_JPGINC + F_TIFINC)
--#define F_PM (11 + F_JPGINC + F_TIFINC)
--#define F_DELIM1 (12 + F_JPGINC + F_TIFINC) /* ----- */
--#define F_FILELIST (13 + F_JPGINC + F_TIFINC)
--#define F_MAXFMTS (14 + F_JPGINC + F_TIFINC) /* 15, normally */
-+#define F_PNG ( 0 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_PS ( 1 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_PBMRAW ( 2 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_PBMASCII ( 3 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_XBM ( 4 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_XPM ( 5 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_BMP ( 6 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_SUNRAS ( 7 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_IRIS ( 8 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_TARGA ( 9 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_FITS (10 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_PM (11 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define F_ZX (12 + F_JPGINC + F_TIFINC + F_PNGINC) /* [JCE] */
-+#define F_WBMP (13 + F_JPGINC + F_TIFINC + F_PNGINC)
-+#define JP_EXT_F (F_WBMP)
-+#define F_MAG (JP_EXT_F + F_MAGINC)
-+#define F_PIC (JP_EXT_F + F_MAGINC + F_PICINC)
-+#define F_MAKI (JP_EXT_F + F_MAGINC + F_PICINC + F_MAKINC)
-+#define F_PI (JP_EXT_F + F_MAGINC + F_PICINC + F_MAKINC + F_PAIINC)
-+#define F_PIC2 (JP_EXT_F + F_MAGINC + F_PICINC + F_MAKINC + F_PAIINC + F_PC2INC)
-+#define F_MGCSFX (JP_EXT_F + F_MAGINC + F_PICINC + F_MAKINC + F_PAIINC + F_PC2INC + F_MGCSFXINC)
-+#define JP_EXT_F_END (F_MGCSFX)
-+#define F_DELIM1 (JP_EXT_F_END + 1) /* ----- */
-+#define F_FILELIST (JP_EXT_F_END + 2)
-+#define F_MAXFMTS (JP_EXT_F_END + 3) /* 23, normally */
-
-
-
-@@ -541,6 +654,19 @@
- #define RFT_XPM 17
- #define RFT_XWD 18
- #define RFT_FITS 19
-+#define RFT_PNG 20
-+#define RFT_ZX 21 /* [JCE] */
-+#define RFT_WBMP 22
-+#define RFT_PCD 23
-+#define RFT_HIPS 24
-+#define RFT_BZIP2 25
-+#define JP_EXT_RFT (RFT_BZIP2)
-+#define RFT_MAG (JP_EXT_RFT + 1)
-+#define RFT_MAKI (JP_EXT_RFT + 2)
-+#define RFT_PIC (JP_EXT_RFT + 3)
-+#define RFT_PI (JP_EXT_RFT + 4)
-+#define RFT_PIC2 (JP_EXT_RFT + 5)
-+#define RFT_MGCSFX (JP_EXT_RFT + 6)
-
- /* definitions for page up/down, arrow up/down list control */
- #define LS_PAGEUP 0
-@@ -599,7 +725,8 @@
- #define RM_CBRICK 7 /* centered on a 'brick' bg */
- #define RM_ECENTER 8 /* symmetrical tiled */
- #define RM_ECMIRR 9 /* symmetrical mirror tiled */
--#define RM_MAX RM_ECMIRR
-+#define RM_UPLEFT 10 /* just in upper left corner */
-+#define RM_MAX RM_UPLEFT
-
-
- /* values of colorMapMode */
-@@ -649,7 +776,8 @@
- #define RMB_CBRICK 8
- #define RMB_ECENTER 9
- #define RMB_ECMIRR 10
--#define RMB_MAX 11
-+#define RMB_UPLEFT 11
-+#define RMB_MAX 12
-
-
- /* indicies into conv24MB */
-@@ -784,9 +912,9 @@
- int len; /* length of major axis */
- int vert; /* true if vertical, else horizontal */
- int active; /* true if scroll bar can do anything*/
-- int min,max; /* min/max values 'pos' can take */
-- int val; /* 'value' of scrollbar */
-- int page; /* amt val change on pageup/pagedown */
-+ double min,max; /* min/max values 'pos' can take */
-+ double val; /* 'value' of scrollbar */
-+ double page; /* amt val change on pageup/pagedown */
- int tpos; /* thumb pos. (pixels from tmin) */
- int tmin,tmax; /* min/max thumb offsets (from 0,0) */
- int tsize; /* size of thumb (in pixels) */
-@@ -801,9 +929,10 @@
- typedef struct { Window win; /* window ID */
- int x,y,w,h; /* window coords in parent */
- int active; /* true if can do anything*/
-- int min,max; /* min/max values 'pos' can take */
-- int val; /* 'value' of dial */
-- int page; /* amt val change on pageup/pagedown */
-+ double min,max; /* min/max values 'pos' can take */
-+ double val; /* 'value' of dial */
-+ double inc; /* amt val change on up/down */
-+ double page; /* amt val change on pageup/pagedown */
- char *title; /* title for this guage */
- char *units; /* string appended to value */
- u_long fg,bg,hi,lo; /* colors */
-@@ -971,15 +1100,19 @@
- WHERE unsigned int ncells, dispWIDE, dispHIGH, dispDEEP;
- WHERE unsigned int vrWIDE, vrHIGH, maxWIDE, maxHIGH;
- WHERE Colormap theCmap, LocalCmap;
--WHERE Window rootW, mainW, vrootW;
-+WHERE Window spec_window, rootW, mainW, vrootW;
- WHERE GC theGC;
- WHERE u_long black, white, fg, bg, infofg, infobg;
- WHERE u_long hicol, locol;
- WHERE u_long blkRGB, whtRGB;
- WHERE Font mfont, monofont;
- WHERE XFontStruct *mfinfo, *monofinfo;
-+#ifdef TV_L10N
-+WHERE XFontSet monofset;
-+WHERE XFontSetExtents *monofsetinfo;
-+#endif
- WHERE Visual *theVisual;
--WHERE Cursor arrow, cross, tcross, zoom, inviso;
-+WHERE Cursor arrow, cross, tcross, zoom, inviso, tlcorner;
- WHERE Pixmap iconPix, iconmask;
- WHERE Pixmap riconPix, riconmask;
- WHERE int showzoomcursor;
-@@ -996,6 +1129,10 @@
- WHERE int picType; /* CONV24_8BIT,CONV24_24BIT,etc.*/
- WHERE char *picComments; /* text comments on current pic */
-
-+#ifdef TV_L10N
-+WHERE int xlocale; /* true if Xlib supports locale */
-+#endif
-+
- WHERE int numPages, curPage; /* for multi-page files */
- WHERE char pageBaseName[64]; /* basename for multi-page files */
-
-@@ -1029,6 +1166,23 @@
- WHERE unsigned long cols[256]; /* maps pic pixel values to X pixel vals */
- WHERE int fc2pcol[256]; /* maps freecols into pic pixel values */
- WHERE int numcols; /* # of desired colors in picture */
-+#ifdef MACBINARY
-+WHERE char macb_file; /* True if this file type is MacBinary */
-+WHERE int handlemacb; /* True if we want to handle MacBinary */
-+#endif
-+#if defined(HAVE_PIC) || defined(HAVE_PIC2)
-+WHERE int nopicadjust; /* True if we don't want to adjust aspect */
-+#endif
-+#ifdef HAVE_PIC2
-+WHERE int pic2split; /* True if we want to split multiblocks */
-+#endif
-+#ifdef VS_ADJUST
-+WHERE int vsadjust; /* True if we want to adjust aspect of icons */
-+#endif
-+#ifdef HAVE_MGCSFX
-+WHERE int mgcsfx; /* True if we want to force use MgcSfx */
-+WHERE int nomgcsfx; /* True if we don't want to use MgcSfx */
-+#endif
-
- /* Std Cmap stuff */
- WHERE byte stdr[256], stdg[256], stdb[256]; /* std 3/3/2 cmap */
-@@ -1083,42 +1237,47 @@
- noFreeCols, /* don't free colors when loading new pic */
- autoquit, /* quit in '-root' or when click on win */
- xerrcode, /* errorcode of last X error */
-- grabDelay; /* # of seconds to sleep at start of Grab */
-+ grabDelay, /* # of seconds to sleep at start of Grab */
-+ startGrab; /* start immediate grab ? */
-
- WHERE int state824; /* displays warning when going 8->24 */
-
- WHERE float defaspect, /* default aspect ratio to use */
- normaspect; /* normal aspect ratio of this picture */
-
--WHERE unsigned long rootbg, rootfg; /* fg/bg for root border */
--WHERE int waitsec; /* secs btwn pics. -1=wait for event */
--WHERE int waitloop; /* loop at end of slide show? */
--WHERE int automax; /* maximize pic on open */
--WHERE int rootMode; /* mode used for -root images */
-+WHERE u_long rootbg, rootfg; /* fg/bg for root border */
-+WHERE u_short imagebgR;
-+WHERE u_short imagebgG; /* GRR 19980308: bg for transpar. images */
-+WHERE u_short imagebgB;
-+WHERE int have_imagebg;
-+WHERE double waitsec; /* secs btwn pics. -1.0=wait for event */
-+WHERE int waitloop; /* loop at end of slide show? */
-+WHERE int automax; /* maximize pic on open */
-+WHERE int rootMode; /* mode used for -root images */
-
--WHERE int nostat; /* if true, don't stat() in LdCurDir */
-+WHERE int nostat; /* if true, don't stat() in LdCurDir */
-
--WHERE int ctrlColor; /* whether or not to use colored butts */
-+WHERE int ctrlColor; /* whether or not to use colored butts */
-
--WHERE char *def_str; /* used by rd_*() routines */
-+WHERE char *def_str; /* used by rd_*() routines */
- WHERE int def_int;
--WHERE char *tmpdir; /* equal to "/tmp" or $TMPDIR env var */
--WHERE Pixmap gray25Tile, /* used for 3d effect on 1-bit disp's */
-+WHERE char *tmpdir; /* equal to "/tmp" or $TMPDIR env var */
-+WHERE Pixmap gray25Tile, /* used for 3d effect on 1-bit disp's */
- gray50Tile;
--WHERE int autoDelete; /* delete cmd-line files on exit? */
-+WHERE int autoDelete; /* delete cmd-line files on exit? */
-
- #define PRINTCMDLEN 256
- WHERE char printCmd[PRINTCMDLEN];
-
- /* stuff used for 'info' box */
- WHERE Window infoW;
--WHERE int infoUp; /* boolean: whether infobox is visible */
-+WHERE int infoUp; /* boolean: whether infobox is visible */
- WHERE int infoMode;
-
-
- /* stuff used for 'ctrl' box */
- WHERE Window ctrlW;
--WHERE int ctrlUp; /* boolean: whether ctrlbox is visible */
-+WHERE int ctrlUp; /* boolean: whether ctrlbox is visible */
- WHERE char *namelist[MAXNAMES]; /* list of file names from argv */
- WHERE char *origlist[MAXNAMES]; /* only names from argv (autoDelete)*/
- WHERE int orignumnames;
-@@ -1157,25 +1316,30 @@
-
-
- /* stuff used for 'browse' box */
--WHERE int anyBrowUp; /* whether *any* browser visible */
-+WHERE int anyBrowUp; /* whether *any* browser visible */
-
- /* stuff used for textview windows */
--WHERE int anyTextUp; /* are any text windows visible? */
--WHERE int commentUp; /* comment window up? */
-+WHERE int anyTextUp; /* are any text windows visible? */
-+WHERE int commentUp; /* comment window up? */
-
- /* stuff used for xvcut.c */
--WHERE int forceClipFile; /* don't use property clipboard */
--WHERE int clearR, clearG, clearB; /* clear color in 24-bit mode */
-+WHERE int forceClipFile; /* don't use property clipboard */
-+WHERE int clearR, clearG, clearB; /* clear color in 24-bit mode */
-
-
- /* stuff used for 'ps' box */
- WHERE Window psW;
--WHERE int psUp; /* is psW mapped, or what? */
-+WHERE int psUp; /* is psW mapped, or what? */
- WHERE CBUTT encapsCB, pscompCB;
- WHERE char *gsDev, *gsGeomStr;
- WHERE int gsRes;
-
-
-+/* stuff used for 'pcd' box */
-+WHERE Window pcdW;
-+WHERE int pcdUp; /* is pcdW mapped, or what? */
-+
-+
- #ifdef HAVE_JPEG
- /* stuff used for 'jpeg' box */
- WHERE Window jpegW;
-@@ -1190,6 +1354,91 @@
- #endif
-
-
-+#ifdef HAVE_PNG
-+/* stuff used for 'png' box */
-+WHERE Window pngW;
-+WHERE int pngUp; /* is pngW mapped, or what? */
-+#endif
-+
-+
-+#ifdef ENABLE_FIXPIX_SMOOTH
-+WHERE int do_fixpix_smooth; /* GRR 19980607: runtime FS dithering */
-+#endif
-+
-+#ifdef HAVE_PIC2
-+/* stuff used for 'pic2' box */
-+WHERE Window pic2W;
-+WHERE int pic2Up; /* is pic2W mapped, or what? */
-+#endif /* HAVE_PIC2 */
-+
-+#ifdef HAVE_PCD
-+/* stuff used for 'pcd' box */
-+WHERE Window pcdW;
-+WHERE int pcdUp; /* is pcdW mapped, or what? */
-+#endif /* HAVE_PCD */
-+
-+#ifdef HAVE_MGCSFX
-+/* stuff used for 'mgcsfx' box */
-+WHERE Window mgcsfxW;
-+WHERE Window mgcsfxNameW;
-+WHERE int mgcsfxUp; /* is mgcsfxW mapped, or what? */
-+#endif /* HAVE_MGCSFX */
-+
-+#ifdef TV_L10N
-+/* stuff used for TextViewer Japanization */
-+# define LOCALE_USASCII 0
-+# define LOCALE_EUCJ 1
-+# define LOCALE_JIS 2
-+# define LOCALE_MSCODE 3
-+
-+# ifndef LOCALE_DEFAULT
-+# define LOCALE_DEFAULT 0
-+# endif /* !LOCALE_DEFAULT */
-+
-+# ifndef MAIN
-+ extern char *localeList[];
-+# else
-+# ifndef LOCALE_NAME_EUC
-+# ifndef X_LOCALE
-+# if defined(__FreeBSD__)
-+ char *localeList[] = {"", "ja_JP.EUC", "none", "none"};
-+# elif defined(__linux__)
-+ char *localeList[] = {"", "ja_JP.eucJP", "none", "ja_JP.SJIS"};
-+# elif defined(__sun) || defined(sun)
-+ char *localeList[] = {"", "ja", "none", "none"};
-+# elif defined(__sgi) /* sgi, __sgi, __sgi__ (gcc) */
-+ char *localeList[] = {"", "ja_JP.EUC", "none", "none"};
-+# elif defined(sony_news)
-+ char *localeList[] = {"", "ja_JP.EUC", "none", "ja_JP.SJIS"};
-+# elif defined(nec)
-+ char *localeList[] = {"", "japan", "none", "none"};
-+# elif defined(__hpux)
-+ char *localeList[] = {"", "japanese.euc", "none", "japanese"};
-+# elif defined(__osf__)
-+ char *localeList[] = {"", "ja_JP.deckanji", "none", "ja_JP.SJIS"};
-+# elif defined(_AIX)
-+ char *localeList[] = {"", "ja_JP", "none", "Ja_JP" };
-+# elif defined(__bsdi)
-+ char *localeList[] = {"", "Japanese-EUC", "none", "none" };
-+# else
-+ char *localeList[] = {"", "ja_JP.EUC", "ja_JP.JIS", "ja_JP.SJIS"};
-+# endif
-+# else
-+# if (XlibSpecificationRelease > 5)
-+ char *localeList[] = {"", "ja_JP.eucJP", "ja_JP.JIS7",
-+ "ja_JP.SJIS"};
-+# else
-+ char *localeList[] = {"", "ja_JP.ujis", "ja_JP.jis7",
-+ "ja_JP.mscode"};
-+# endif
-+# endif /* X_LOCALE */
-+# else
-+ char *localeList[] = {"", LOCALE_NAME_EUC,
-+ LOCALE_NAME_JIS, LOCALE_NAME_MSCODE};
-+# endif /* LOCALE_NAME_EUC */
-+# endif /* MAIN */
-+#endif /* TV_L10N */
-+
- #undef WHERE
-
-
-@@ -1199,8 +1448,11 @@
- /****************************** XV.C ****************************/
- int ReadFileType PARM((char *));
- int ReadPicFile PARM((char *, int, PICINFO *, int));
--int UncompressFile PARM((char *, char *));
-+int UncompressFile PARM((char *, char *, int));
- void KillPageFiles PARM((char *, int));
-+#ifdef MACBINARY
-+int RemoveMacbinary PARM((char *, char *));
-+#endif
-
- void NewPicGetColors PARM((int, int));
- void FixAspect PARM((int, int *, int *));
-@@ -1429,6 +1681,9 @@
- int CheckPoll PARM((int));
- void DIRDeletedFile PARM((char *));
- void DIRCreatedFile PARM((char *));
-+FILE *pic2_OpenOutFile PARM((char *, int *));
-+void pic2_KillNullFile PARM((FILE *));
-+int OpenOutFileDesc PARM((char *));
-
-
- /*************************** XVBROWSE.C ************************/
-@@ -1448,7 +1703,7 @@
-
- /*************************** XVTEXT.C ************************/
- void CreateTextWins PARM((char *, char *));
--void TextView PARM((char *));
-+int TextView PARM((char *));
- void OpenTextView PARM((char *, int, char *, int));
-
- void OpenCommentText PARM((void));
-@@ -1466,6 +1721,8 @@
- int TextCheckEvent PARM((XEvent *, int *, int *));
- int TextDelWin PARM((Window));
-
-+int CharsetCheckEvent PARM((XEvent *));
-+int CharsetDelWin PARM((Window));
-
-
- /**************************** XVGAM.C **************************/
-@@ -1502,12 +1759,12 @@
-
-
- /*************************** XVDIAL.C ***************************/
--void DCreate PARM((DIAL *, Window, int, int, int, int, int,
-- int, int, int, u_long, u_long, u_long,
-- u_long, char *, char *));
-+void DCreate PARM((DIAL *, Window, int, int, int, int, double,
-+ double, double, double, double, u_long,
-+ u_long, u_long, u_long, char *, char *));
-
--void DSetRange PARM((DIAL *, int, int, int, int));
--void DSetVal PARM((DIAL *, int));
-+void DSetRange PARM((DIAL *, double,double,double,double,double));
-+void DSetVal PARM((DIAL *, double));
- void DSetActive PARM((DIAL *, int));
- void DRedraw PARM((DIAL *));
- int DTrack PARM((DIAL *, int, int));
-@@ -1585,7 +1842,11 @@
- byte *, byte *, int, int, char *));
-
- /**************************** XVPBM.C ***************************/
-+#ifdef HAVE_MGCSFX
-+int LoadPBM PARM((char *, PICINFO *, int));
-+#else
- int LoadPBM PARM((char *, PICINFO *));
-+#endif
- int WritePBM PARM((FILE *, byte *, int, int, int, byte *,
- byte *, byte *, int, int, int, char *));
-
-@@ -1604,6 +1865,11 @@
- int WriteBMP PARM((FILE *, byte *, int, int, int, byte *,
- byte *, byte *, int, int));
-
-+/**************************** XVWBMP.C ***************************/
-+int LoadWBMP PARM((char *, PICINFO *));
-+int WriteWBMP PARM((FILE *, byte *, int, int, int, byte *,
-+ byte *, byte *, int, int));
-+
- /**************************** XVRLE.C ***************************/
- int LoadRLE PARM((char *, PICINFO *));
-
-@@ -1642,6 +1908,7 @@
- void JPEGDialog PARM((int));
- int JPEGCheckEvent PARM((XEvent *));
- void JPEGSaveParams PARM((char *, int));
-+void VersionInfoJPEG PARM((void)); /* GRR 19980605 */
-
- /**************************** XVTIFF.C ***************************/
- int LoadTIFF PARM((char *, PICINFO *, int));
-@@ -1649,6 +1916,15 @@
- void TIFFDialog PARM((int));
- int TIFFCheckEvent PARM((XEvent *));
- void TIFFSaveParams PARM((char *, int));
-+void VersionInfoTIFF PARM((void)); /* GRR 19980605 */
-+
-+/**************************** XVPNG.C ***************************/
-+int LoadPNG PARM((char *, PICINFO *));
-+void CreatePNGW PARM((void));
-+void PNGDialog PARM((int));
-+int PNGCheckEvent PARM((XEvent *));
-+void PNGSaveParams PARM((char *, int));
-+void VersionInfoPNG PARM((void)); /* GRR 19980605 */
-
- /**************************** XVPDS.C ***************************/
- int LoadPDS PARM((char *, PICINFO *));
-@@ -1661,6 +1937,87 @@
- void PSResize PARM((void));
- int LoadPS PARM((char *, PICINFO *, int));
-
-+/************************ [JCE] XVZX.C ***************************/
-+
-+int LoadZX PARM((char *, PICINFO *));
-+int WriteZX PARM((FILE *, byte *, int, int, int, byte *,
-+ byte *, byte *, int, int, char *));
-+
-+/**************************** XVPCD.C ***************************/
-+int LoadPCD PARM((char *, PICINFO *, int));
-+void CreatePCDW PARM((void));
-+void PCDDialog PARM((int));
-+int PCDCheckEvent PARM((XEvent *));
-+void PCDSetParamOptions PARM((char *));
-+
-+/*************************** XVMAG.C ***************************/
-+int LoadMAG PARM((char *, PICINFO *));
-+int WriteMAG PARM((FILE *, byte *, int, int, int,
-+ byte *, byte *, byte *, int, int, char *));
-+
-+/*************************** XVMAKI.C ***************************/
-+int LoadMAKI PARM((char *, PICINFO *));
-+int WriteMAKI PARM((FILE *, byte *, int, int, int,
-+ byte *, byte *, byte *, int, int));
-+
-+/*************************** XVPIC.C ***************************/
-+int LoadPIC PARM((char *, PICINFO *));
-+int WritePIC PARM((FILE *, byte *, int, int, int,
-+ byte *, byte *, byte *, int, int, char *));
-+
-+/*************************** XVPI.C ***************************/
-+int LoadPi PARM((char *, PICINFO *));
-+int WritePi PARM((FILE *, byte *, int, int, int,
-+ byte *, byte *, byte *, int, int, char *));
-+
-+/*************************** XVPIC2.C ***************************/
-+int LoadPIC2 PARM((char *, PICINFO *, int));
-+void CreatePIC2W PARM((void));
-+void PIC2Dialog PARM((int));
-+int PIC2CheckEvent PARM((XEvent *));
-+int PIC2SetParamOptions PARM((char *));
-+
-+/**************************** XVPCD.C ***************************/
-+int LoadPCD PARM((char *, PICINFO *,int));
-+void CreatePCDW PARM((void));
-+void PCDDialog PARM((int));
-+int PCDCheckEvent PARM((XEvent *));
-+void PCDSetParamOptions PARM((char *));
-+
-+/**************************** XVHIPS.C ***************************/
-+int LoadHIPS PARM((char *, PICINFO *));
-+
-+/*************************** XVMGCSFX.C ***************************/
-+int is_mgcsfx PARM((char *, unsigned char *, int));
-+char *mgcsfx_auto_input_com PARM((char *));
-+int LoadMGCSFX PARM((char *, PICINFO *));
-+void CreateMGCSFXW PARM((void));
-+void MGCSFXDialog PARM((int));
-+int MGCSFXCheckEvent PARM((XEvent *));
-+int MGCSFXSaveParams PARM((char *, int));
-+
-+int getInputCom PARM((void));
-+int getOutputCom PARM((void));
-+
-+/**************************** XVVD.C ****************************/
-+void Vdinit PARM((void));
-+void Vdsettle PARM((void));
-+int Chvdir PARM((char *));
-+void Dirtovd PARM((char *));
-+void Vdtodir PARM((char *));
-+void Dirtosubst PARM((char *));
-+int Mkvdir PARM((char *));
-+void Mkvdir_force PARM((char *));
-+int Rmvdir PARM((char *));
-+int Movevdir PARM((char *, char *));
-+int Isarchive PARM((char *));
-+int Isvdir PARM((char *));
-+void vd_HUPhandler PARM((void));
-+void vd_handler PARM((int));
-+int vd_Xhandler PARM((Display *, XErrorEvent *));
-+int vd_XIOhandler PARM((Display *));
-+void vd_handler_setup PARM((void));
-+
- /*************************** XVPOPUP.C ***************************/
- void CenterMapWindow PARM((Window, int, int, int, int));
- int PopUp PARM((char *, char **, int));
-@@ -1714,3 +2071,13 @@
- void CoordP2E PARM((int, int, int *, int *));
- void CoordE2P PARM((int, int, int *, int *));
-
-+#if defined(__mips) && defined(__SYSTYPE_BSD43)
-+# define strstr(A,B) pds_strstr((A),(B))
-+# undef S_IFIFO
-+#endif /* !mips_bsd */
-+
-+#ifndef SEEK_SET
-+# define SEEK_SET 0
-+# define SEEK_CUR 1
-+# define SEEK_END 2
-+#endif
-diff -ruN xv-3.10a-bugfixes/xv_mgcsfx.sample xv-3.10a-enhancements/xv_mgcsfx.sample
---- xv-3.10a-bugfixes/xv_mgcsfx.sample 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xv_mgcsfx.sample 2005-04-17 14:04:22.000000000 -0700
-@@ -0,0 +1,125 @@
-+#/*
-+# Configuration file for XV with recognition of 'Magic and Suffix'
-+#
-+#
-+# $Id: xv_mgcsfx.sample,v 1.11 95/10/03 17:00:05 tin329 Exp Locker: tin329 $
-+#
-+# Author: Tetsuya INOUE <tin329@chino.it.okayama-u.ac.jp>
-+#
-+#
-+# MgcSfx definition should write in one line.
-+# Format:
-+# <desc>:<ms type>:<ofs>:<magic>:<suffix>:<in it>:<in c>:<out it>:<out c>
-+# If you decide to not use preprocessor, comment style is allowed.
-+# # <comment>
-+#
-+# <desc> Description of your recognized image format.
-+# <ms type> Type ID for recognition. (You should use 'magic'.)
-+# * magic Data of string style.
-+# `\' escape for special characters:
-+# \b \f \n \r \t \v \\ \' \" \a \?
-+# \0 ...\377 octal value
-+# \x0 ...\xff hexadecimal value
-+# * suffix Suffix of file name.
-+# This type check <suffix> instead
-+# of <magic>.
-+# * [b|l]eint16 2 byte integer of [big|little] endian.
-+# * [b|l]eint32 4 byte integer of [big|little] endian.
-+# <ofs> Offset of magic number in the target image file.
-+# <magic> Data(magic number) of <ms type> to match at <ofs>.
-+# <suffix> Suffix of filename with '.'start.
-+#
-+# <in it> Input image format type (output from <in c>).
-+# * PNM (PPM, PGM, PBM)
-+# * AUTO Recognized by xv management, and load.
-+# This is different from others, because
-+# this write file to temporary.
-+# <out it> Output image format type (input to <out c>).
-+# * PNM_RAW (PPM_RAW, PGM_RAW, PBM_RAW)
-+# * PNM_ASCII (PPM_ASCII, PGM_ASCII, PBM_ASCII)
-+#
-+# <in c> Command to get the input image.
-+# * Command mast read stdin or file(specified by
-+# argument), and write to stdout.
-+# * Use %s to represent the file name. Without %s,
-+# get file on stdin.
-+# <out c> Command to put the output image.
-+# * Command mast read stdin and write to stdout.
-+#
-+# <comment> Any message.
-+#*/
-+
-+#/*############################################################################
-+#
-+# definition of the rule with Magic and Suffix
-+#
-+#*/
-+
-+# /* Canon View Station Image Format */
-+ViewStation(std):magic:0:VsStdImf V0.2:.vs:PNM:VStopnm %s:PNM_RAW:pnmtoVS
-+ViewStation(obj):magic:0:VsObjFormat V1.0:.vs:PNM:VSobjtopnm -:PNM_RAW:pnmtoVSobj
-+
-+# /* CERN httpd cache */
-+# /* unchc skip header of CERN httpd cache file, and write data to stdout. */
-+CERN httpd cache:magic:0:HTTP/1.0::AUTO:unchc %s::
-+
-+# /* XLD4(Q4) image format */
-+XLD(Q4):magic:11:MAJYO:.q4:PNM:q4toppm::
-+
-+# /* ML1 image format */
-+ML1:magic:0:\1\0\0\x1a:.ml1:PNM:ml1toppm %s::
-+
-+# /* Pict image format, 256 color only */
-+PICT:suffix:::.pict:PNM:picttoppm:PNM_RAW:ppmquant 256 | ppmtopict
-+PICT(gzip):suffix:::.pict.gz:PNM:gzip -dc | picttoppm:PNM_RAW:ppmquant 256 | ppmtopict | gzip
-+PICT(compress):suffix:::.pict.Z:PNM:compress -dc | picttoppm:PNM_RAW:ppmquant 256 | ppmtopict | compress
-+
-+# /* Tim image format(used by SONY PlayStation) */
-+TIM:magic:0:\x10\x00\x00\x00:.tim:PNM:timtoppm::
-+
-+# /* Cam image format(used by CASIO QV-10) */
-+# /* CAM:magic:0:\x07\x20\x4d\x4d:.cam:AUTO:camtoppm -j:PNM_RAW */
-+CAM:magic:0:\x07\x20\x4d\x4d:.cam:PNM:camtoppm::
-+
-+# /* Portable Network Graphics (PNG) format : magic is "0x89 PNG" */
-+PNG:magic:0:\x89\x50\x4e\x47:.png:PNM:pngtopnm %s:PNM_RAW:pnmtopng
-+# /* PNG(interlace):magic:0:\x89\x50\x4e\x47:.png:PNM:pngtopnm %s:PNM_RAW:pnmtopng -interlace */
-+
-+# /* DB-Z, SAURUS Freehand Memo, PV-F1 Action Board, Wiz Quick Memo format */
-+# /* Use xbm2free-1.10 or later. Old version is NOT a filter. */
-+# /* To show version of xbm2free, type "xbm2free" (with no argument). */
-+ZAURUS:magic:19:IMG1:.zau:PBM_ASCII:free2pbm:PBM:pbmtoxbm|xbm2free -s -
-+DBZ:magic:19:IMG1:.dbz:::PBM:pbmtoxbm|xbm2free -d -
-+PVF1:magic:12:IMG1:.pvf1:PBM_ASCII:free2pbm:PBM:pbmtoxbm|xbm2free -v -
-+# /* WIZ:magic:19:IMG1:.wiz:::PBM:pbmtoxbm|xbm2free -w - */
-+
-+
-+
-+# /* Compress:magic:0:\037\235:.Z:AUTO:uncompress %s:: */
-+# /* Gzip:magic:0:\037\213:.gz:AUTO:gunzip %s:: */
-+# /* Gzip(old):magic:0:\037\236:.z:AUTO:gunzip %s:: */
-+
-+# /* MAKI:magic:0:MAKI01A\040:.mki:::: */
-+# /* MAKI:magic:0:MAKI01B\040:.mki:::: */
-+# /* MAG:magic:0:MAKI02\040\040:.mag:::: */
-+# /* Pi:magic:0:Pi:.pi:::: */
-+# /* PIC:magic:0:PIC:.pic:::: */
-+# /* PIC2:magic:0:P2DT:.p2:::: */
-+# /* PhotoCD:magic:0:\xff\xff\xff\xff:.pcd:::: */
-+
-+# /* PBM(ascii):magic:0:P1:.pbm:::: */
-+# /* PGM(ascii):magic:0:P2:.pgm:::: */
-+# /* PPM(ascii):magic:0:P3:.ppm:::: */
-+# /* PBM(raw):magic:0:P4:.pbm:::: */
-+# /* PGM(raw):magic:0:P5:.pgm:::: */
-+# /* PPM(raw):magic:0:P6:.ppm:::: */
-+
-+# /* Sun raster:magic:0:\131\246\152\225:.sun:::: */
-+# /* JFIF(JPEG):magic:0:\xff\xd8\xff:.jpg:::: */
-+# /* TIFF big-endian:magic:0:\115\115:.tif:::: */
-+# /* TIFF little-endian:magic:0:\111\111:.tif:::: */
-+# /* GIF(87):magic:0:GIF87a:.gif:::: */
-+# /* GIF(89):magic:0:GIF89a:.gif:::: */
-+# /* SGI(1):magic:0:\x01\xda:.rgb:::: */
-+# /* SGI(2):magic:0:\xda\x01:.rgb:::: */
-+# /* XWD:magic:0:\0\0\0\7: :::: */
-diff -ruN xv-3.10a-bugfixes/xvbmp.c xv-3.10a-enhancements/xvbmp.c
---- xv-3.10a-bugfixes/xvbmp.c 2005-03-27 18:12:17.000000000 -0800
-+++ xv-3.10a-enhancements/xvbmp.c 2005-04-17 13:56:31.000000000 -0700
-@@ -1,5 +1,5 @@
- /*
-- * xvbmp.c - i/o routines for .BMP files (MS Windows 3.x)
-+ * xvbmp.c - I/O routines for .BMP files (MS Windows 3.x and later; OS/2)
- *
- * LoadBMP(fname, numcols)
- * WriteBMP(fp, pic, ptype, w, h, r, g, b, numcols, style);
-@@ -9,30 +9,39 @@
-
- #include "xv.h"
-
--/* comments on error handling:
-- a truncated file is not considered a Major Error. The file is loaded, the
-- rest of the pic is filled with 0's.
--
-- a file with garbage characters in it is an unloadable file. All allocated
-- stuff is tossed, and LoadBMP returns non-zero
--
-- not being able to malloc is a Fatal Error. The program is aborted. */
--
--
--#define BI_RGB 0
--#define BI_RLE8 1
--#define BI_RLE4 2
-+/* Comments on error-handling:
-+ A truncated file is not considered a Major Error. The file is loaded,
-+ and the rest of the pic is filled with 0's.
-+
-+ A file with garbage characters in it is an unloadable file. All allocated
-+ stuff is tossed, and LoadBMP returns non-zero.
-+
-+ Not being able to malloc is a Fatal Error. The program is aborted. */
-+
-+
-+#define BI_RGB 0 /* a.k.a. uncompressed */
-+#define BI_RLE8 1
-+#define BI_RLE4 2
-+#define BI_BITFIELDS 3 /* BMP version 4 */
-+#define BI_JPEG 4 /* BMP version 5 (not yet supported) */
-+#define BI_PNG 5 /* BMP version 5 (not yet supported) */
-
- #define WIN_OS2_OLD 12
- #define WIN_NEW 40
- #define OS2_NEW 64
-
-+#if (defined(UINT_MAX) && UINT_MAX != 0xffffffffU)
-+# error XV's BMP code requires 32-bit unsigned integer type, but u_int isn't
-+#endif
-+
- static long filesize;
-
- static int loadBMP1 PARM((FILE *, byte *, u_int, u_int));
- static int loadBMP4 PARM((FILE *, byte *, u_int, u_int, u_int));
- static int loadBMP8 PARM((FILE *, byte *, u_int, u_int, u_int));
--static int loadBMP24 PARM((FILE *, byte *, u_int, u_int));
-+static int loadBMP16 PARM((FILE *, byte *, u_int, u_int, u_int *));
-+static int loadBMP24 PARM((FILE *, byte *, u_int, u_int, u_int));
-+static int loadBMP32 PARM((FILE *, byte *, u_int, u_int, u_int *));
- static u_int getshort PARM((FILE *));
- static u_int getint PARM((FILE *));
- static void putshort PARM((FILE *, int));
-@@ -52,15 +61,14 @@
- PICINFO *pinfo;
- /*******************************************/
- {
-- FILE *fp;
-- int i, c, c1, rv;
-- u_int bfSize, bfOffBits, biSize, biWidth, biHeight, biPlanes;
-- u_int biBitCount, biCompression, biSizeImage, biXPelsPerMeter;
-- u_int biYPelsPerMeter, biClrUsed, biClrImportant;
-- int bPad;
-- char *cmpstr;
-- byte *pic24, *pic8;
-- char buf[512], *bname;
-+ FILE *fp;
-+ int i, c, c1, rv, bPad;
-+ u_int bfSize, bfOffBits, biSize, biWidth, biHeight, biPlanes;
-+ u_int biBitCount, biCompression, biSizeImage, biXPelsPerMeter;
-+ u_int biYPelsPerMeter, biClrUsed, biClrImportant;
-+ u_int colormask[3];
-+ char buf[512], *bname, *cmpstr, rgb_bits[16];
-+ byte *pic24, *pic8;
-
- /* returns '1' on success */
-
-@@ -98,14 +106,13 @@
- biClrUsed = getint(fp);
- biClrImportant = getint(fp);
- }
--
- else { /* old bitmap format */
- biWidth = getshort(fp); /* Types have changed ! */
- biHeight = getshort(fp);
- biPlanes = getshort(fp);
- biBitCount = getshort(fp);
-
-- /* Not in old versions so have to compute them*/
-+ /* not in old versions, so have to compute them */
- biSizeImage = (((biPlanes * biBitCount*biWidth)+31)/32)*4*biHeight;
-
- biCompression = BI_RGB;
-@@ -126,25 +133,39 @@
- if (FERROR(fp)) { bmpError(bname,"EOF reached in file header"); goto ERROR; }
-
-
-- /* error checking */
-- if ((biBitCount!=1 && biBitCount!=4 && biBitCount!=8 && biBitCount!=24) ||
-- biPlanes!=1 || biCompression>BI_RLE4 ||
-+ /* error-checking */
-+ if ((biBitCount!=1 && biBitCount!=4 && biBitCount!=8 &&
-+ biBitCount!=16 && biBitCount!=24 && biBitCount!=32) ||
-+ biPlanes!=1 || biCompression>BI_PNG ||
- biWidth<=0 || biHeight<=0 ||
- (biClrUsed && biClrUsed > (1 << biBitCount))) {
-
- sprintf(buf,
-- "Bogus BMP File! (%dx%d, Bits=%d, Colors=%d, Planes=%d, Compr=%d)",
-+ "Unsupported BMP type (%dx%d, Bits=%d, Colors=%d, Planes=%d, "
-+ "Compr=%d)",
- biWidth, biHeight, biBitCount, biClrUsed, biPlanes, biCompression);
-
- bmpError(bname, buf);
- goto ERROR;
- }
-
-+ if (biCompression>BI_BITFIELDS) {
-+ sprintf(buf, "Unsupported BMP compression method (%s)",
-+ biCompression == BI_JPEG? "JPEG" :
-+ biCompression == BI_PNG? "PNG" :
-+ "unknown/newer than v5");
-+
-+ bmpError(bname, buf);
-+ goto ERROR;
-+ }
-+
- if (((biBitCount==1 || biBitCount==24) && biCompression != BI_RGB) ||
-- (biBitCount==4 && biCompression==BI_RLE8) ||
-- (biBitCount==8 && biCompression==BI_RLE4)) {
-+ (biBitCount==4 && biCompression!=BI_RGB && biCompression!=BI_RLE4) ||
-+ (biBitCount==8 && biCompression!=BI_RGB && biCompression!=BI_RLE8) ||
-+ ((biBitCount==16 || biBitCount==32) &&
-+ biCompression!=BI_RGB && biCompression!=BI_BITFIELDS)) {
-
-- sprintf(buf,"Bogus BMP File! (bitCount=%d, Compression=%d)",
-+ sprintf(buf,"Unsupported BMP type (bitCount=%d, Compression=%d)",
- biBitCount, biCompression);
-
- bmpError(bname, buf);
-@@ -156,20 +177,23 @@
- if (biSize != WIN_OS2_OLD) {
- /* skip ahead to colormap, using biSize */
- c = biSize - 40; /* 40 bytes read from biSize to biClrImportant */
-- for (i=0; i<c; i++) getc(fp);
--
-+ for (i=0; i<c; i++)
-+ getc(fp);
- bPad = bfOffBits - (biSize + 14);
- }
-
-+ /* 16-bit or 32-bit color mask */
-+ if (biCompression==BI_BITFIELDS) {
-+ colormask[0] = getint(fp);
-+ colormask[1] = getint(fp);
-+ colormask[2] = getint(fp);
-+ bPad -= 12;
-+ }
-+
- /* load up colormap, if any */
-- if (biBitCount!=24) {
-+ if (biBitCount == 1 || biBitCount == 4 || biBitCount == 8) {
- int i, cmaplen;
-
--/* this is superfluous; see identical test in "error checking" block above
-- if (biClrUsed > (1 << biBitCount))
-- biClrUsed = (1 << biBitCount);
-- */
--
- cmaplen = (biClrUsed) ? biClrUsed : 1 << biBitCount;
- for (i=0; i<cmaplen; i++) {
- pinfo->b[i] = getc(fp);
-@@ -205,7 +229,7 @@
-
- /* create pic8 or pic24 */
-
-- if (biBitCount==24) {
-+ if (biBitCount==16 || biBitCount==24 || biBitCount==32) {
- u_int npixels = biWidth * biHeight;
- u_int count = 3 * npixels;
-
-@@ -227,19 +251,35 @@
- WaitCursor();
-
- /* load up the image */
-- if (biBitCount == 1) rv = loadBMP1(fp,pic8,biWidth,biHeight);
-- else if (biBitCount == 4) rv = loadBMP4(fp,pic8,biWidth,biHeight,
-- biCompression);
-- else if (biBitCount == 8) rv = loadBMP8(fp,pic8,biWidth,biHeight,
-- biCompression);
-- else rv = loadBMP24(fp,pic24,biWidth,biHeight);
-+ switch (biBitCount) {
-+ case 1:
-+ rv = loadBMP1(fp, pic8, biWidth, biHeight);
-+ break;
-+ case 4:
-+ rv = loadBMP4(fp, pic8, biWidth, biHeight, biCompression);
-+ break;
-+ case 8:
-+ rv = loadBMP8(fp, pic8, biWidth, biHeight, biCompression);
-+ break;
-+ case 16:
-+ rv = loadBMP16(fp, pic24, biWidth, biHeight, /* v-- BI_RGB */
-+ biCompression == BI_BITFIELDS? colormask : NULL);
-+ break;
-+ default:
-+ if (biBitCount == 32 && biCompression == BI_BITFIELDS)
-+ rv = loadBMP32(fp, pic24, biWidth, biHeight, colormask);
-+ else /* 24 or (32 and BI_RGB) */
-+ rv = loadBMP24(fp, pic24, biWidth, biHeight, biBitCount);
-+ break;
-+ }
-
- if (rv) bmpError(bname, "File appears truncated. Winging it.");
-
-+
- fclose(fp);
-
-
-- if (biBitCount == 24) {
-+ if (biBitCount > 8) {
- pinfo->pic = pic24;
- pinfo->type = PIC24;
- }
-@@ -251,6 +291,22 @@
- cmpstr = "";
- if (biCompression == BI_RLE4) cmpstr = ", RLE4 compressed";
- else if (biCompression == BI_RLE8) cmpstr = ", RLE8 compressed";
-+ else if (biCompression == BI_BITFIELDS) {
-+ int bit, c[3], i;
-+ u_int mask;
-+
-+ for (i = 0; i < 3; ++i) {
-+ mask = colormask[i];
-+ c[i] = 0;
-+ for (bit = 0; bit < 32; ++bit) {
-+ if (mask & 1)
-+ ++c[i];
-+ mask >>= 1;
-+ }
-+ }
-+ sprintf(rgb_bits, ", RGB%d%d%d", c[0], c[1], c[2]);
-+ cmpstr = rgb_bits;
-+ }
-
- pinfo->w = biWidth; pinfo->h = biHeight;
- pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
-@@ -282,12 +338,13 @@
- u_int w,h;
- {
- int i,j,c,bitnum,padw;
-- byte *pp;
-+ byte *pp = pic8 + ((h - 1) * w);
-+ size_t l = w*h;
-
- c = 0;
- padw = ((w + 31)/32) * 32; /* 'w', padded to be a multiple of 32 */
-
-- for (i=h-1; i>=0; i--) {
-+ for (i=h-1; i>=0 && (pp - pic8 <= l); i--) {
- pp = pic8 + (i * w);
- if ((i&0x3f)==0) WaitCursor();
- for (j=bitnum=0; j<padw; j++,bitnum++) {
-@@ -316,8 +373,8 @@
- u_int w,h,comp;
- {
- int i,j,c,c1,x,y,nybnum,padw,rv;
-- byte *pp;
--
-+ byte *pp = pic8 + ((h - 1) * w);
-+ size_t l = w*h;
-
- rv = 0;
- c = c1 = 0;
-@@ -325,7 +382,7 @@
- if (comp == BI_RGB) { /* read uncompressed data */
- padw = ((w + 7)/8) * 8; /* 'w' padded to a multiple of 8pix (32 bits) */
-
-- for (i=h-1; i>=0; i--) {
-+ for (i=h-1; i>=0 && (pp - pic8 <= l); i--) {
- pp = pic8 + (i * w);
- if ((i&0x3f)==0) WaitCursor();
-
-@@ -353,7 +410,7 @@
-
- if (c) { /* encoded mode */
- c1 = getc(fp);
-- for (i=0; i<c; i++,x++,pp++)
-+ for (i=0; i<c && (pp - pic8 <= l); i++,x++,pp++)
- *pp = (i&1) ? (c1 & 0x0f) : ((c1>>4)&0x0f);
- }
-
-@@ -373,7 +430,7 @@
- }
-
- else { /* absolute mode */
-- for (i=0; i<c; i++, x++, pp++) {
-+ for (i=0; i<c && (pp - pic8 <= l); i++, x++, pp++) {
- if ((i&1) == 0) c1 = getc(fp);
- *pp = (i&1) ? (c1 & 0x0f) : ((c1>>4)&0x0f);
- }
-@@ -402,14 +459,18 @@
- u_int w,h,comp;
- {
- int i,j,c,c1,padw,x,y,rv;
-- byte *pp;
-+ byte *pp = pic8 + ((h - 1) * w);
-+ size_t l = w*h;
-+ byte *pend;
-
- rv = 0;
-
-+ pend = pic8 + w * h;
-+
- if (comp == BI_RGB) { /* read uncompressed data */
- padw = ((w + 3)/4) * 4; /* 'w' padded to a multiple of 4pix (32 bits) */
-
-- for (i=h-1; i>=0; i--) {
-+ for (i=h-1; i>=0 && (pp - pic8 <= l); i--) {
- pp = pic8 + (i * w);
- if ((i&0x3f)==0) WaitCursor();
-
-@@ -425,12 +486,12 @@
- x = y = 0;
- pp = pic8 + x + (h-y-1)*w;
-
-- while (y<h) {
-+ while (y<h && pp<=pend) {
- c = getc(fp); if (c == EOF) { rv = 1; break; }
-
- if (c) { /* encoded mode */
- c1 = getc(fp);
-- for (i=0; i<c; i++,x++,pp++) *pp = c1;
-+ for (i=0; i<c && pp<=pend; i++,x++,pp++) *pp = c1;
- }
-
- else { /* c==0x00 : escape codes */
-@@ -449,7 +510,7 @@
- }
-
- else { /* absolute mode */
-- for (i=0; i<c; i++, x++, pp++) {
-+ for (i=0; i<c && pp<=pend; i++, x++, pp++) {
- c1 = getc(fp);
- *pp = c1;
- }
-@@ -472,26 +533,133 @@
-
-
- /*******************************************/
--static int loadBMP24(fp, pic24, w, h)
-+static int loadBMP16(fp, pic24, w, h, mask)
-+ FILE *fp;
-+ byte *pic24;
-+ u_int w, h, *mask;
-+{
-+ int x, y;
-+ byte *pp = pic24 + ((h - 1) * w * 3);
-+ size_t l = w*h*3;
-+ u_int buf, colormask[6];
-+ int i, bit, bitshift[6], colorbits[6], bitshift2[6];
-+
-+ if (mask == NULL) { /* RGB555 */
-+ colormask[0] = 0x00007c00;
-+ colormask[1] = 0x000003e0;
-+ colormask[2] = 0x0000001f;
-+ colormask[3] = 0x7c000000;
-+ colormask[4] = 0x03e00000;
-+ colormask[5] = 0x001f0000;
-+ bitshift[0] = 7; bitshift2[0] = 0;
-+ bitshift[1] = 2; bitshift2[1] = 0;
-+ bitshift[2] = 0; bitshift2[2] = 3;
-+ bitshift[3] = 23; bitshift2[3] = 0;
-+ bitshift[4] = 18; bitshift2[4] = 0;
-+ bitshift[5] = 13; bitshift2[5] = 0;
-+ } else {
-+ colormask[0] = mask[0];
-+ colormask[1] = mask[1];
-+ colormask[2] = mask[2];
-+ colormask[3] = (mask[0] & 0xffff) << 16;
-+ colormask[4] = (mask[1] & 0xffff) << 16;
-+ colormask[5] = (mask[2] & 0xffff) << 16;
-+
-+ for (i = 0; i < 3; ++i) {
-+ buf = colormask[i];
-+
-+ bitshift[i] = 0;
-+ for (bit = 0; bit < 32; ++bit) {
-+ if (buf & 1)
-+ break;
-+ else
-+ ++bitshift[i];
-+ buf >>= 1;
-+ }
-+ bitshift[i+3] = bitshift[i] + 16;
-+
-+ colorbits[i] = 0;
-+ for (; bit < 32; ++bit) {
-+ if (buf & 1)
-+ ++colorbits[i];
-+ else
-+ break;
-+ buf >>= 1;
-+ }
-+ if (colorbits[i] > 8) { /* over 8-bit depth */
-+ bitshift[i] += (colorbits[i] - 8);
-+ bitshift[i+3] = bitshift[i] + 16;
-+ bitshift2[i] = bitshift2[i+3] = 0;
-+ } else
-+ bitshift2[i] = bitshift2[i+3] = 8 - colorbits[i];
-+ }
-+ }
-+
-+ if (DEBUG > 1)
-+ fprintf(stderr, "loadBMP16: bitfields\n"
-+ "\tR: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n"
-+ "\t (mask = %08x, shift >>%2d, <<%2d)\n"
-+ "\tG: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n"
-+ "\t (mask = %08x, shift >>%2d, <<%2d)\n"
-+ "\tB: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n"
-+ "\t (mask = %08x, shift >>%2d, <<%2d)\n",
-+ colorbits[0], colormask[0], bitshift[0], bitshift2[0],
-+ colormask[3], bitshift[3], bitshift2[3],
-+ colorbits[1], colormask[1], bitshift[1], bitshift2[1],
-+ colormask[4], bitshift[4], bitshift2[4],
-+ colorbits[2], colormask[2], bitshift[2], bitshift2[2],
-+ colormask[5], bitshift[5], bitshift2[5]);
-+
-+ for (y = h-1; y >= 0 && (pp - pic24 <= l); y--) {
-+ pp = pic24 + (3 * w * y);
-+ if ((y&0x3f)==0) WaitCursor();
-+
-+ for (x = w; x > 1; x -= 2) {
-+ buf = getint(fp);
-+ *(pp++) = (buf & colormask[0]) >> bitshift[0] << bitshift2[0];
-+ *(pp++) = (buf & colormask[1]) >> bitshift[1] << bitshift2[1];
-+ *(pp++) = (buf & colormask[2]) >> bitshift[2] << bitshift2[2];
-+ *(pp++) = (buf & colormask[3]) >> bitshift[3] << bitshift2[3];
-+ *(pp++) = (buf & colormask[4]) >> bitshift[4] << bitshift2[4];
-+ *(pp++) = (buf & colormask[5]) >> bitshift[5] << bitshift2[5];
-+ }
-+ if (w & 1) { /* padded to 2 pix */
-+ buf = getint(fp);
-+ *(pp++) = (buf & colormask[0]) >> bitshift[0];
-+ *(pp++) = (buf & colormask[1]) >> bitshift[1];
-+ *(pp++) = (buf & colormask[2]) >> bitshift[2];
-+ }
-+ }
-+
-+ return FERROR(fp)? 1 : 0;
-+}
-+
-+
-+
-+/*******************************************/
-+static int loadBMP24(fp, pic24, w, h, bits) /* also handles 32-bit BI_RGB */
- FILE *fp;
- byte *pic24;
-- u_int w,h;
-+ u_int w,h, bits;
- {
- int i,j,padb,rv;
-- byte *pp;
-+ byte *pp = pic24 + ((h - 1) * w * 3);
-+ size_t l = w*h*3;
-
- rv = 0;
-
- padb = (4 - ((w*3) % 4)) & 0x03; /* # of pad bytes to read at EOscanline */
-+ if (bits==32) padb = 0;
-
- for (i=h-1; i>=0; i--) {
- pp = pic24 + (i * w * 3);
- if ((i&0x3f)==0) WaitCursor();
-
-- for (j=0; j<w; j++) {
-+ for (j=0; j<w && (pp - pic24 <= l); j++) {
- pp[2] = getc(fp); /* blue */
- pp[1] = getc(fp); /* green */
- pp[0] = getc(fp); /* red */
-+ if (bits==32) getc(fp);
- pp += 3;
- }
-
-@@ -507,6 +675,70 @@
-
-
- /*******************************************/
-+static int loadBMP32(fp, pic24, w, h, colormask) /* 32-bit BI_BITFIELDS only */
-+ FILE *fp;
-+ byte *pic24;
-+ u_int w, h, *colormask;
-+{
-+ int x, y;
-+ byte *pp;
-+ u_int buf;
-+ int i, bit, bitshift[3], colorbits[3], bitshift2[3];
-+
-+ for (i = 0; i < 3; ++i) {
-+ buf = colormask[i];
-+
-+ bitshift[i] = 0;
-+ for (bit = 0; bit < 32; ++bit) {
-+ if (buf & 1)
-+ break;
-+ else
-+ ++bitshift[i];
-+ buf >>= 1;
-+ }
-+
-+ colorbits[i] = 0;
-+ for (; bit < 32; ++bit) {
-+ if (buf & 1)
-+ ++colorbits[i];
-+ else
-+ break;
-+ buf >>= 1;
-+ }
-+ if (colorbits[i] > 8) { /* over 8-bit depth */
-+ bitshift[i] += (colorbits[i] - 8);
-+ bitshift2[i] = 0;
-+ } else
-+ bitshift2[i] = 8 - colorbits[i];
-+ }
-+
-+ if (DEBUG > 1)
-+ fprintf(stderr, "loadBMP32: bitfields\n"
-+ "\tR: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n"
-+ "\tG: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n"
-+ "\tB: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n",
-+ colorbits[0], colormask[0], bitshift[0], bitshift2[0],
-+ colorbits[1], colormask[1], bitshift[1], bitshift2[1],
-+ colorbits[2], colormask[2], bitshift[2], bitshift2[2]);
-+
-+ for (y = h-1; y >= 0; y--) {
-+ pp = pic24 + (3 * w * y);
-+ if ((y&0x3f)==0) WaitCursor();
-+
-+ for(x = w; x > 0; x --) {
-+ buf = getint(fp);
-+ *(pp++) = (buf & colormask[0]) >> bitshift[0] << bitshift2[0];
-+ *(pp++) = (buf & colormask[1]) >> bitshift[1] << bitshift2[1];
-+ *(pp++) = (buf & colormask[2]) >> bitshift[2] << bitshift2[2];
-+ }
-+ }
-+
-+ return FERROR(fp)? 1 : 0;
-+}
-+
-+
-+
-+/*******************************************/
- static u_int getshort(fp)
- FILE *fp;
- {
-@@ -523,7 +755,7 @@
- int c, c1, c2, c3;
- c = getc(fp); c1 = getc(fp); c2 = getc(fp); c3 = getc(fp);
- return ((u_int) c) +
-- (((u_int) c1) << 8) +
-+ (((u_int) c1) << 8) +
- (((u_int) c2) << 16) +
- (((u_int) c3) << 24);
- }
-diff -ruN xv-3.10a-bugfixes/xvbrowse.c xv-3.10a-enhancements/xvbrowse.c
---- xv-3.10a-bugfixes/xvbrowse.c 2004-05-16 18:01:25.000000000 -0700
-+++ xv-3.10a-enhancements/xvbrowse.c 2005-04-25 23:30:27.000000000 -0700
-@@ -24,6 +24,10 @@
- typedef unsigned int mode_t; /* file mode bits */
- #endif
-
-+#ifndef MAX
-+# define MAX(a,b) (((a)>(b))?(a):(b)) /* used only for wheelmouse support */
-+#endif
-+
-
- /* load up built-in icons */
- #include "bits/br_file"
-@@ -36,6 +40,7 @@
- #include "bits/br_error"
- /* #include "bits/br_unknown" commented out (near line 492) */
- #include "bits/br_cmpres"
-+#include "bits/br_bzip2"
-
- #include "bits/br_gif"
- #include "bits/br_pm"
-@@ -50,11 +55,20 @@
- #include "bits/br_tiff"
- #include "bits/br_pds"
- #include "bits/br_ps"
-+#include "bits/br_pcd"
- #include "bits/br_iff"
- #include "bits/br_targa"
- #include "bits/br_xpm"
- #include "bits/br_xwd"
- #include "bits/br_fits"
-+#include "bits/br_png"
-+#include "bits/br_zx" /* [JCE] The Spectrum+3 icon */
-+#include "bits/br_mag"
-+#include "bits/br_maki"
-+#include "bits/br_pic"
-+#include "bits/br_pi"
-+#include "bits/br_pic2"
-+#include "bits/br_mgcsfx"
-
- #include "bits/br_trash"
- #include "bits/fcurs"
-@@ -94,14 +108,23 @@
- #define BF_XPM 25
- #define BF_XWD 26
- #define BF_FITS 27
--#define BF_MAX 28 /* # of built-in icons */
-+#define BF_PNG 28
-+#define BF_ZX 29 /* [JCE] Spectrum SCREEN$ */
-+#define BF_PCD 30
-+#define BF_BZIP2 31
-+#define JP_EXT_BF (BF_BZIP2)
-+#define BF_MAG (JP_EXT_BF + 1)
-+#define BF_MAKI (JP_EXT_BF + 2)
-+#define BF_PIC (JP_EXT_BF + 3)
-+#define BF_PI (JP_EXT_BF + 4)
-+#define BF_PIC2 (JP_EXT_BF + 5)
-+#define BF_MGCSFX (JP_EXT_BF + 6)
-+#define JP_EXT_BF_END (BF_MGCSFX)
-+#define BF_MAX (JP_EXT_BF_END + 1) /* # of built-in icons */
-
- #define ISLOADABLE(ftyp) (ftyp!=BF_DIR && ftyp!=BF_CHR && ftyp!=BF_BLK && \
- ftyp!=BF_SOCK && ftyp!=BF_FIFO)
-
--#define DEF_BROWWIDE 615 /* default size of window */
--#define DEF_BROWHIGH 356
--
- #define SCROLLVERT 8 /* height of scroll region at top/bottom of iconw */
- #define PAGEVERT 40 /* during rect drag, if further than this, page */
-
-@@ -113,16 +136,35 @@
- #define BOTMARGIN 58 /* room for a row of buttons and a line of text */
- #define LRMARGINS 5 /* left and right margins */
-
--#define ISIZE_WIDE 80 /* maximum size of an icon */
--#define ISIZE_HIGH 60
-+/* some people like bigger icons; 4:3 aspect ratio is recommended
-+ * (NOTE: standard XV binaries will not be able to read larger icons!) */
-+#ifndef ISIZE_WIDE
-+# define ISIZE_WIDE 80 /* maximum size of an icon */
-+#endif
-+#ifndef ISIZE_HIGH
-+# define ISIZE_HIGH 60
-+#endif
-
--#define ISPACE_WIDE (ISIZE_WIDE+16) /* icon spacing */
-+#ifndef ISIZE_WPAD
-+# define ISIZE_WPAD 16 /* extra horizontal padding between icons */
-+#endif
-+
-+#ifndef INUM_WIDE
-+# define INUM_WIDE 6 /* size initial window to hold this many icons */
-+#endif
-+#ifndef INUM_HIGH
-+# define INUM_HIGH 3
-+#endif
-+
-+#define ISPACE_WIDE (ISIZE_WIDE+ISIZE_WPAD) /* icon spacing */
- #define ISPACE_TOP 4 /* dist btwn top of ISPACE and ISIZE */
- #define ISPACE_TTOP 4 /* dist btwn bot of icon and title */
- #define ISPACE_HIGH (ISIZE_HIGH+ISPACE_TOP+ISPACE_TTOP+16+4)
-
- #define DBLCLICKTIME 300 /* milliseconds */
-
-+#define COUNT(x) (sizeof (x) / sizeof (x)[0])
-+
- /* button/menu indicies */
- #define BR_CHDIR 0
- #define BR_DELETE 1
-@@ -140,12 +182,23 @@
- #define BR_NBUTTS 13 /* # of command buttons */
- #define BR_SEP1 13 /* separator */
- #define BR_HIDDEN 14
-+#ifdef AUTO_EXPAND
-+#define BR_CLEARVD 15
-+#define BR_SELFILES 16
-+#define BR_NCMDS 17 /* # of menu commands */
-+#else
- #define BR_SELFILES 15
- #define BR_NCMDS 16 /* # of menu commands */
-+#endif
-
- #define BUTTW 80
- #define BUTTH 24
-
-+/* original size of window was 615 x 356 (for 80x60 thumbnails in 6x3 array) */
-+#define DEF_BROWWIDE (ISPACE_WIDE * INUM_WIDE + LRMARGINS * 2 + 29)
-+#define DEF_BROWHIGH (ISPACE_HIGH * INUM_HIGH + BUTTH * 2 + 16 + 28)
-+/* last number is a fudge--e.g., extra spaces, borders, etc. -----^ */
-+
- static char *showHstr = "Show hidden files";
- static char *hideHstr = "Hide 'hidden' files";
-
-@@ -164,6 +217,9 @@
- "Close window\t^c",
- MBSEP,
- "Show hidden files", /* no equiv */
-+#ifdef AUTO_EXPAND
-+ "Clear virtual directory",
-+#endif
- "Select files...\t^f"
- };
-
-@@ -209,6 +265,13 @@
- } BROWINFO;
-
-
-+/* keep track of last icon visible in each path */
-+typedef struct IVIS IVIS;
-+ struct IVIS { IVIS *next;
-+ char *name;
-+ int icon;
-+ };
-+
- static Cursor movecurs, copycurs, delcurs;
- static BROWINFO binfo[MAXBRWIN];
- static Pixmap bfIcons[BF_MAX], trashPix;
-@@ -294,10 +357,16 @@
- static void cp_special PARM((struct stat *, int));
- static void cp_fifo PARM((struct stat *, int));
-
-+#ifdef AUTO_EXPAND
-+static int stat2bf PARM((u_int, char *));
-+#else
- static int stat2bf PARM((u_int));
-+#endif
-
- static int selmatch PARM((char *, char *));
- static int selmatch1 PARM((char *, char *));
-+static void recIconVisible PARM((char *, int));
-+static void restIconVisible PARM((BROWINFO *));
-
-
-
-@@ -511,9 +580,10 @@
- bfIcons[BF_JFIF]=MakePix1(br->win,br_jfif_bits,br_jfif_width,br_jfif_height);
- bfIcons[BF_TIFF]=MakePix1(br->win,br_tiff_bits,br_tiff_width,br_tiff_height);
- bfIcons[BF_PDS] =MakePix1(br->win,br_pds_bits, br_pds_width, br_pds_height);
--
-- bfIcons[BF_COMPRESS]= MakePix1(br->win, br_cmpres_bits,
-- br_cmpres_width, br_cmpres_height);
-+ bfIcons[BF_COMPRESS] = MakePix1(br->win, br_cmpres_bits,
-+ br_cmpres_width, br_cmpres_height);
-+ bfIcons[BF_BZIP2] = MakePix1(br->win, br_bzip2_bits,
-+ br_bzip2_width, br_bzip2_height);
-
- bfIcons[BF_PS] =MakePix1(br->win,br_ps_bits, br_ps_width, br_ps_height);
- bfIcons[BF_IFF] =MakePix1(br->win,br_iff_bits, br_iff_width, br_iff_height);
-@@ -524,6 +594,16 @@
- bfIcons[BF_XPM] =MakePix1(br->win,br_xpm_bits, br_xpm_width, br_xpm_height);
- bfIcons[BF_XWD] =MakePix1(br->win,br_xwd_bits, br_xwd_width, br_xwd_height);
- bfIcons[BF_FITS]=MakePix1(br->win,br_fits_bits,br_fits_width,br_fits_height);
-+ bfIcons[BF_PNG] =MakePix1(br->win,br_png_bits, br_png_width, br_png_height);
-+ bfIcons[BF_ZX] =MakePix1(br->win,br_zx_bits, br_zx_width, br_zx_height);
-+ bfIcons[BF_PCD] =MakePix1(br->win,br_pcd_bits, br_pcd_width, br_pcd_height);
-+ bfIcons[BF_MAG] =MakePix1(br->win,br_mag_bits, br_mag_width, br_mag_height);
-+ bfIcons[BF_MAKI]=MakePix1(br->win,br_maki_bits,br_maki_width,br_maki_height);
-+ bfIcons[BF_PIC] =MakePix1(br->win,br_pic_bits, br_pic_width, br_pic_height);
-+ bfIcons[BF_PI] =MakePix1(br->win,br_pi_bits, br_pi_width, br_pi_height);
-+ bfIcons[BF_PIC2]=MakePix1(br->win,br_pic2_bits,br_pic2_width,br_pic2_height);
-+ bfIcons[BF_MGCSFX] = MakePix1(br->win,br_mgcsfx_bits,
-+ br_mgcsfx_width,br_mgcsfx_height);
-
-
- /* check that they all got built */
-@@ -698,6 +778,9 @@
- }
- }
-
-+#ifdef VS_RESCMAP
-+static int _IfTempOut=0;
-+#endif
-
- /***************************************************************/
- void KillBrowseWindows()
-@@ -730,7 +813,6 @@
- return 0;
- }
-
--
- /***************************************************************/
- static int brChkEvent(br, xev)
- BROWINFO *br;
-@@ -745,15 +827,32 @@
-
- if (!hasBeenSized) return 0; /* ignore evrythng until we get 1st Resize */
-
-+
-+#ifdef VS_RESCMAP
-+ /* force change color map if have LocalCmap */
-+ if (browPerfect && browCmap && (_IfTempOut==2)) {
-+ int i;
-+ XSetWindowAttributes xswa;
-+
-+ xswa.colormap = LocalCmap? LocalCmap : theCmap;
-+ for (i=0; i<MAXBRWIN; ++i)
-+ XChangeWindowAttributes(theDisp, binfo[i].win, CWColormap, &xswa);
-+ XFlush(theDisp);
-+ _IfTempOut=1;
-+ }
-+#endif
-+
- if (xev->type == Expose) {
- int x,y,w,h;
- XExposeEvent *e = (XExposeEvent *) xev;
- x = e->x; y = e->y; w = e->width; h = e->height;
-
- /* throw away excess redraws for 'dumb' windows */
-- if (e->count > 0 && (e->window == br->scrl.win)) {}
-+ if (e->count > 0 && (e->window == br->scrl.win))
-+ ;
-
-- else if (e->window == br->scrl.win) SCRedraw(&(br->scrl));
-+ else if (e->window == br->scrl.win)
-+ SCRedraw(&(br->scrl));
-
- else if (e->window == br->win || e->window == br->iconW) { /* smart wins */
- /* group individual expose rects into a single expose region */
-@@ -806,13 +905,57 @@
- int i,x,y;
- x = e->x; y = e->y;
-
-- if (e->button == Button1) {
-+#ifdef VS_RESCMAP
-+ if (browCmap && browPerfect && (_IfTempOut!=0))
-+ {
-+ XSetWindowAttributes xswa;
-+ _IfTempOut--;
-+ xswa.colormap = browCmap;
-+ for(i=0;i<MAXBRWIN;i++)
-+ XChangeWindowAttributes(theDisp, binfo[i].win, CWColormap, &xswa);
-+ XFlush(theDisp);
-+ }
-+
-+#endif
-+
-+ if (e->button == Button1) {
- if (e->window == br->win) clickBrow(br,x,y);
- else if (e->window == br->scrl.win) SCTrack(&(br->scrl),x,y);
- else if (e->window == br->iconW) {
- i = clickIconWin(br, x,y,(unsigned long) e->time,
- (e->state&ControlMask) || (e->state&ShiftMask));
--
-+ }
-+ else rv = 0;
-+ }
-+ else if (e->button == Button4) { /* note min vs. max, + vs. - */
-+ /* scroll regardless of where we are in the browser window */
-+ if (e->window == br->win ||
-+ e->window == br->scrl.win ||
-+ e->window == br->iconW)
-+ {
-+ SCRL *sp=&(br->scrl);
-+ int halfpage=MAX(1,sp->page/2); /* user resize to 1 line? */
-+
-+ if (sp->val > sp->min+halfpage)
-+ SCSetVal(sp,sp->val-halfpage);
-+ else
-+ SCSetVal(sp,sp->min);
-+ }
-+ else rv = 0;
-+ }
-+ else if (e->button == Button5) { /* note max vs. min, - vs. + */
-+ /* scroll regardless of where we are in the browser window */
-+ if (e->window == br->win ||
-+ e->window == br->scrl.win ||
-+ e->window == br->iconW)
-+ {
-+ SCRL *sp=&(br->scrl);
-+ int halfpage=MAX(1,sp->page/2); /* user resize to 1 line? */
-+
-+ if (sp->val < sp->max-halfpage)
-+ SCSetVal(sp,sp->val+halfpage);
-+ else
-+ SCSetVal(sp,sp->max);
- }
- else rv = 0;
- }
-@@ -1101,6 +1244,10 @@
- case BR_SELFILES: doSelFilesCmd(br); break;
-
- case BR_RECURSUP: doRecurseCmd(br); break;
-+
-+#ifdef AUTO_EXPAND
-+ case BR_CLEARVD: Vdsettle(); break;
-+#endif
- }
- }
-
-@@ -1250,6 +1397,18 @@
- int i, allowtext;
-
- if (!nostr) setSelInfoStr(br, sel);
-+#ifdef AUTO_EXPAND
-+ if (Isvdir(br->path)) {
-+ BTSetActive(&br->but[BR_DELETE], 0);
-+ br->cmdMB.dim[BR_DELETE] = 1;
-+
-+ BTSetActive(&br->but[BR_RENAME], 0);
-+ br->cmdMB.dim[BR_RENAME] = 1;
-+
-+ BTSetActive(&br->but[BR_MKDIR], 0);
-+ br->cmdMB.dim[BR_MKDIR] = 1;
-+ } else {
-+#endif
- BTSetActive(&br->but[BR_DELETE], br->numlit>0);
- br->cmdMB.dim[BR_DELETE] = !(br->numlit>0);
-
-@@ -1258,6 +1417,11 @@
-
- BTSetActive(&br->but[BR_GENICON], br->numlit>0);
- br->cmdMB.dim[BR_GENICON] = !(br->numlit>0);
-+#ifdef AUTO_EXPAND
-+ BTSetActive(&br->but[BR_MKDIR], 1);
-+ br->cmdMB.dim[BR_MKDIR] = 0;
-+ }
-+#endif
-
- /* turn on 'text view' cmd if exactly one non-dir is lit */
- allowtext = 0;
-@@ -1318,8 +1482,11 @@
- struct stat st;
-
- sprintf(buf, "%s%s", br->path, bf->name); /* build filename */
-+#ifdef AUTO_EXPAND
-+ Dirtovd(buf);
-+#endif
- if (stat(buf, &st) == 0) {
-- sprintf(buf, "%s: %ld bytes", bf->name, st.st_size);
-+ sprintf(buf, "%s: %ld bytes", bf->name, (long)st.st_size);
- strcat(buf, buf1);
- }
- }
-@@ -1598,6 +1765,10 @@
- {
- int sval, first, numvis;
-
-+ /* if we know what path we have, remember last visible icon for this path */
-+ if (br->path)
-+ recIconVisible(br->path, num);
-+
- /* if icon #i isn't visible, adjust scrollbar so it *is* */
-
- sval = br->scrl.val;
-@@ -1649,29 +1820,14 @@
- return;
- }
-
--
- /***************************************************************/
--static int clickIconWin(br, mx, my, mtime, multi)
-- BROWINFO *br;
-- int mx,my,multi;
-- unsigned long mtime;
-+static int updateSel(br, sel, multi, mtime)
-+ BROWINFO *br;
-+ int sel, multi;
-+ unsigned long mtime;
- {
-- /* returns '-1' normally, returns an index into bfList[] if the user
-- double-clicks an icon */
--
-- int i,j, rv, sel, cpymode, dodel;
-- BROWINFO *destBr;
-- BFIL *bf;
-- char buf[256], *destFolderName;
--
-- rv = -1; /* default return value */
-- if (!br->bfList || !br->bfLen) return rv;
--
-- destBr = br; destFolderName = ".";
--
-- sel = mouseInWhichIcon(br, mx, my);
--
-- dodel = 0;
-+ int i;
-+ BFIL *bf;
-
- if (sel == -1) { /* clicked on nothing */
- if (!multi) { /* deselect all */
-@@ -1728,11 +1884,12 @@
-
-
- /* see if we've double-clicked something */
-- if (sel==br->lastIconClicked && mtime-br->lastClickTime < DBLCLICKTIME) {
-+ if (mtime &&
-+ sel==br->lastIconClicked && mtime-br->lastClickTime < DBLCLICKTIME) {
- br->lastIconClicked = -1; /* YES */
-
- doubleClick(br, sel);
-- return rv;
-+ return -1;
- }
-
- else {
-@@ -1741,9 +1898,36 @@
- }
- }
-
--
- changedNumLit(br, -1, 0);
-+ return 0;
-+}
-+
-
-+/***************************************************************/
-+static int clickIconWin(br, mx, my, mtime, multi)
-+ BROWINFO *br;
-+ int mx,my,multi;
-+ unsigned long mtime;
-+{
-+ /* returns '-1' normally, returns an index into bfList[] if the user
-+ double-clicks an icon */
-+
-+ int i,j, sel, cpymode, dodel;
-+ BROWINFO *destBr;
-+ BFIL *bf;
-+ char buf[256], *destFolderName;
-+
-+ if (!br->bfList || !br->bfLen) return -1;
-+
-+ destBr = br; destFolderName = ".";
-+
-+ sel = mouseInWhichIcon(br, mx, my);
-+ dodel = 0;
-+
-+ recIconVisible(br->path, sel);
-+
-+ if (updateSel(br, sel, multi, mtime))
-+ return -1;
-
-
- { /* track mouse until button1 is released */
-@@ -2098,7 +2282,7 @@
- }
- } /* end of 'tracking' sub-function */
-
-- return rv;
-+ return -1;
- }
-
- /*******************************************/
-@@ -2164,15 +2348,35 @@
- else sprintf(buf, "%s%s", br->path, br->bfList[sel].name);
- #endif
-
-+#ifdef AUTO_EXPAND
-+ if (Chvdir(buf)) {
-+#else
- if (chdir(buf)) {
-+#endif
- char str[512];
- sprintf(str,"Unable to cd to '%s'\n", br->bfList[sel].name);
- setBrowStr(br, str);
- XBell(theDisp, 50);
- }
- else {
-+#ifdef AUTO_EXPAND
-+ if (Isvdir(buf)) {
-+ BTSetActive(&br->but[BR_DELETE], 0);
-+ br->cmdMB.dim[BR_DELETE] = 1;
-+
-+ BTSetActive(&br->but[BR_RENAME], 0);
-+ br->cmdMB.dim[BR_RENAME] = 1;
-+
-+ BTSetActive(&br->but[BR_MKDIR], 0);
-+ br->cmdMB.dim[BR_MKDIR] = 1;
-+ } else {
-+ BTSetActive(&br->but[BR_MKDIR], 1);
-+ br->cmdMB.dim[BR_MKDIR] = 0;
-+ }
-+#endif
- scanDir(br);
- SCSetVal(&(br->scrl), 0); /* reset to top on a chdir */
-+ restIconVisible(br);
- }
- }
-
-@@ -2193,6 +2397,28 @@
- }
- else { *event_retP = LOADPIC; SetDirFName(buf); }
-
-+#ifdef VS_RESCMAP
-+ /* Change Colormap for browser */
-+ if (browPerfect && browCmap)
-+ {
-+ int i;
-+ XSetWindowAttributes xswa;
-+ if(LocalCmap)
-+ {
-+ xswa.colormap = LocalCmap;
-+ _IfTempOut=2;
-+ }
-+ else
-+ {
-+ xswa.colormap = theCmap;
-+ _IfTempOut=2;
-+ }
-+ for(i=0;i<MAXBRWIN;i++)
-+ XChangeWindowAttributes(theDisp, binfo[i].win, CWColormap, &xswa);
-+ XFlush(theDisp);
-+ }
-+#endif
-+
- *event_doneP = 1; /* make MainLoop load image */
- }
- }
-@@ -2347,6 +2573,9 @@
-
- /* try to open this file */
- sprintf(foo, "%s%s", br->path, br->bfList[i].name);
-+#ifdef AUTO_EXPAND
-+ Dirtovd(foo);
-+#endif
- for (j=0; j<numnames && strcmp(namelist[j],foo); j++);
- if (j<numnames) {
- curname = nList.selected = j;
-@@ -2362,6 +2591,9 @@
- else { /* not SPACE, or SPACE and lit=1 and not shift */
- for (i=0; i<br->bfLen && !br->bfList[i].lit; i++); /* find lit one */
- sprintf(fname, "%s%s", br->path, br->bfList[i].name);
-+#ifdef AUTO_EXPAND
-+ Dirtovd(fname);
-+#endif
- viewsel = !(strcmp(fname, fullfname));
-
- if (viewsel) {
-@@ -2553,7 +2785,11 @@
- }
- #endif
-
-+#ifdef AUTO_EXPAND
-+ if (Chvdir(tmppath)) {
-+#else
- if (chdir(tmppath)) {
-+#endif
- char str[512];
- sprintf(str,"Unable to cd to '%s'\n", tmppath);
- MBRedraw(&(br->dirMB));
-@@ -2561,8 +2797,24 @@
- XBell(theDisp, 50);
- }
- else {
-+#ifdef AUTO_EXPAND
-+ if (Isvdir(tmppath)) {
-+ BTSetActive(&br->but[BR_DELETE], 0);
-+ br->cmdMB.dim[BR_DELETE] = 1;
-+
-+ BTSetActive(&br->but[BR_RENAME], 0);
-+ br->cmdMB.dim[BR_RENAME] = 1;
-+
-+ BTSetActive(&br->but[BR_MKDIR], 0);
-+ br->cmdMB.dim[BR_MKDIR] = 1;
-+ } else {
-+ BTSetActive(&br->but[BR_MKDIR], 1);
-+ br->cmdMB.dim[BR_MKDIR] = 0;
-+ }
-+#endif
- scanDir(br);
- SCSetVal(&br->scrl, 0); /* reset to top of window on a chdir */
-+ restIconVisible(br);
- }
- }
- }
-@@ -2581,7 +2833,11 @@
- if ((strlen(br->path) > (size_t) 2) && br->path[strlen(br->path)-1] == '/')
- br->path[strlen(br->path)-1] = '\0';
-
-+#ifdef AUTO_EXPAND
-+ rv = Chvdir(br->path);
-+#else
- rv = chdir(br->path);
-+#endif
- if (rv) {
- char str[512];
- sprintf(str, "Unable to cd to '%s'\n", br->path);
-@@ -2589,6 +2845,23 @@
- XBell(theDisp, 50);
- }
-
-+#ifdef AUTO_EXPAND
-+ if (Isvdir(br->path)) {
-+ BTSetActive(&br->but[BR_DELETE], 0);
-+ br->cmdMB.dim[BR_DELETE] = 1;
-+
-+ BTSetActive(&br->but[BR_RENAME], 0);
-+ br->cmdMB.dim[BR_RENAME] = 1;
-+
-+ BTSetActive(&br->but[BR_MKDIR], 0);
-+ br->cmdMB.dim[BR_MKDIR] = 1;
-+ } else {
-+ BTSetActive(&br->but[BR_MKDIR], 1);
-+ br->cmdMB.dim[BR_MKDIR] = 0;
-+ }
-+#endif
-+
-+ restIconVisible(br);
- strcat(br->path, "/"); /* put trailing '/' back on */
- return rv;
- }
-@@ -2615,8 +2888,13 @@
- strcpy(dstbr->mblist[i], srcbr->mblist[i]);
- }
-
-- dstbr->dirMB.list = srcbr->mblist;
-+#if 0
-+ dstbr->dirMB.list = srcbr->mblist; /* original bug..? */
- dstbr->dirMB.nlist = srcbr->ndirs;
-+#else
-+ dstbr->dirMB.list = dstbr->mblist; /* fixed by */
-+ dstbr->dirMB.nlist = dstbr->ndirs; /* jp-extension. */
-+#endif
-
- XClearArea(theDisp, dstbr->dirMB.win, dstbr->dirMB.x, dstbr->dirMB.y,
- dstbr->dirMB.w+3, dstbr->dirMB.h+3, False);
-@@ -2974,7 +3252,11 @@
-
-
- if (stat(bf->name, &st)==0) {
-+#ifdef AUTO_EXPAND
-+ bf->ftype = stat2bf((u_int) st.st_mode , bf->name);
-+#else
- bf->ftype = stat2bf((u_int) st.st_mode);
-+#endif
- if (bf->ftype == BF_FILE && (st.st_mode & 0111)) bf->ftype = BF_EXE;
-
- switch (bf->ftype) {
-@@ -3006,6 +3288,7 @@
- case RFT_XBM: bf->ftype = BF_XBM; break;
- case RFT_SUNRAS: bf->ftype = BF_SUNRAS; break;
- case RFT_BMP: bf->ftype = BF_BMP; break;
-+ case RFT_WBMP: bf->ftype = BF_BMP; break;
- case RFT_UTAHRLE: bf->ftype = BF_UTAHRLE; break;
- case RFT_IRIS: bf->ftype = BF_IRIS; break;
- case RFT_PCX: bf->ftype = BF_PCX; break;
-@@ -3013,12 +3296,22 @@
- case RFT_TIFF: bf->ftype = BF_TIFF; break;
- case RFT_PDSVICAR: bf->ftype = BF_PDS; break;
- case RFT_COMPRESS: bf->ftype = BF_COMPRESS; break;
-+ case RFT_BZIP2: bf->ftype = BF_BZIP2; break;
- case RFT_PS: bf->ftype = BF_PS; break;
- case RFT_IFF: bf->ftype = BF_IFF; break;
- case RFT_TARGA: bf->ftype = BF_TARGA; break;
- case RFT_XPM: bf->ftype = BF_XPM; break;
- case RFT_XWD: bf->ftype = BF_XWD; break;
- case RFT_FITS: bf->ftype = BF_FITS; break;
-+ case RFT_PNG: bf->ftype = BF_PNG; break;
-+ case RFT_ZX: bf->ftype = BF_ZX; break; /* [JCE] */
-+ case RFT_PCD: bf->ftype = BF_PCD; break;
-+ case RFT_MAG: bf->ftype = BF_MAG; break;
-+ case RFT_MAKI: bf->ftype = BF_MAKI; break;
-+ case RFT_PIC: bf->ftype = BF_PIC; break;
-+ case RFT_PI: bf->ftype = BF_PI; break;
-+ case RFT_PIC2: bf->ftype = BF_PIC2; break;
-+ case RFT_MGCSFX: bf->ftype = BF_MGCSFX; break;
- }
- }
- }
-@@ -3405,7 +3698,7 @@
- double wexpand,hexpand;
- int iwide, ihigh;
- byte *icon24, *icon8;
-- char str[256], str1[256], *readname, uncompname[128];
-+ char str[256], str1[256], readname[128], uncompname[128];
- char basefname[128], *uncName;
-
-
-@@ -3414,7 +3707,7 @@
- basefname[0] = '\0';
- pinfo.pic = (byte *) NULL;
- pinfo.comment = (char *) NULL;
-- readname = bf->name;
-+ strncpy(readname, bf->name, sizeof(readname) - 1);
-
- /* free any old info in 'bf' */
- if (bf->imginfo) free (bf->imginfo);
-@@ -3431,7 +3724,7 @@
-
- filetype = ReadFileType(bf->name);
-
-- if (filetype == RFT_COMPRESS) {
-+ if ((filetype == RFT_COMPRESS) || (filetype == RFT_BZIP2)) {
- #if (defined(VMS) && !defined(GUNZIP))
- /* VMS decompress doesn't like the file to have a trailing .Z in fname
- however, GUnZip is OK with it, which we are calling UnCompress */
-@@ -3442,9 +3735,9 @@
- uncName = bf->name;
- #endif
-
-- if (UncompressFile(uncName, uncompname)) {
-+ if (UncompressFile(uncName, uncompname, filetype)) {
- filetype = ReadFileType(uncompname);
-- readname = uncompname;
-+ strncpy(readname, uncompname, sizeof(readname) - 1);
- }
- else {
- sprintf(str, "Couldn't uncompress file '%s'", bf->name);
-@@ -3453,6 +3746,56 @@
- }
- }
-
-+#ifdef MACBINARY
-+ if (handlemacb && macb_file == True && bf->ftype != BF_ERROR) {
-+ if (RemoveMacbinary(readname, uncompname)) {
-+ if (strcmp(readname, bf->name)!=0) unlink(readname);
-+ strncpy(readname, uncompname, sizeof(readname) - 1);
-+ }
-+ else {
-+ sprintf(str, "Unable to remove a InfoFile header form '%s'.", bf->name);
-+ setBrowStr(br, str);
-+ bf->ftype = BF_ERROR;
-+ }
-+ }
-+#endif
-+
-+#ifdef HAVE_MGCSFX_AUTO
-+ if (bf->ftype != BF_ERROR) {
-+ if(filetype == RFT_MGCSFX){
-+ char tmpname[128];
-+ char *icom;
-+
-+ if((icom = mgcsfx_auto_input_com(bf->name)) != NULL){
-+ sprintf(tmpname, "%s/xvmsautoXXXXXX", tmpdir);
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(tmpname));
-+#else
-+ mktemp(tmpname);
-+#endif
-+ SetISTR(ISTR_INFO, "Converting to known format by MgcSfx auto...");
-+ sprintf(str,"%s >%s", icom, tmpname);
-+ }else goto ms_auto_no;
-+
-+#ifndef VMS
-+ if (system(str))
-+#else
-+ if (!system(str))
-+#endif
-+ {
-+ sprintf(str, "Unable to convert '%s' by MgcSfx auto.", bf->name);
-+ setBrowStr(br, str);
-+ bf->ftype = BF_ERROR;
-+ } else {
-+ filetype = ReadFileType(tmpname);
-+ if (strcmp(readname, bf->name)!=0) unlink(readname);
-+ strncpy(readname, tmpname, sizeof(readname) - 1);
-+ }
-+ }
-+ }
-+ms_auto_no:
-+#endif /* HAVE_MGCSFX_AUTO */
-+
- /* get rid of comments. don't need 'em */
- if (pinfo.comment) free(pinfo.comment); pinfo.comment = (char *) NULL;
-
-@@ -3470,6 +3813,9 @@
- else {
- /* otherwise it's a known filetype... do the *hard* part now... */
-
-+#ifdef VS_ADJUST
-+ normaspect = defaspect;
-+#endif
- i = ReadPicFile(readname, filetype, &pinfo, 1);
- KillPageFiles(pinfo.pagebname, pinfo.numpages);
-
-@@ -3489,7 +3835,7 @@
- }
-
- /* if we made an uncompressed file, we can rm it now */
-- if (readname != bf->name) unlink(readname);
-+ if (strcmp(readname, bf->name)!=0) unlink(readname);
-
-
- /* at this point either BF_ERROR, BF_UNKNOWN, BF_EXE or pic */
-@@ -3507,16 +3853,30 @@
-
- /* compute size of icon (iwide,ihigh) */
-
-+#ifdef VS_ADJUST
-+ if (!vsadjust) normaspect = 1;
-+
-+ wexpand = (double) (pinfo.w * normaspect) / (double) ISIZE_WIDE;
-+#else
- wexpand = (double) pinfo.w / (double) ISIZE_WIDE;
-+#endif /* VS_ADJUST */
- hexpand = (double) pinfo.h / (double) ISIZE_HIGH;
-
- if (wexpand >= 1.0 || hexpand >= 1.0) { /* don't expand small icons */
- if (wexpand>hexpand) {
-+#ifdef VS_ADJUST
-+ iwide = (int) ((pinfo.w * normaspect) / wexpand + 0.5);
-+#else
- iwide = (int) (pinfo.w / wexpand + 0.5);
-+#endif
- ihigh = (int) (pinfo.h / wexpand + 0.5);
- }
- else {
-+#ifdef VS_ADJUST
-+ iwide = (int) ((pinfo.w * normaspect) / hexpand + 0.5);
-+#else
- iwide = (int) (pinfo.w / hexpand + 0.5);
-+#endif
- ihigh = (int) (pinfo.h / hexpand + 0.5);
- }
- }
-@@ -3566,6 +3926,15 @@
- case RFT_XPM: strcat(str,"XPM file"); break;
- case RFT_XWD: strcat(str,"XWD file"); break;
- case RFT_FITS: strcat(str,"FITS file"); break;
-+ case RFT_PNG: strcat(str,"PNG file"); break;
-+ case RFT_ZX: strcat(str,"Spectrum SCREEN$"); break; /* [JCE] */
-+ case RFT_PCD: strcat(str,"PhotoCD file"); break;
-+ case RFT_MAG: strcat(str,"MAG file"); break;
-+ case RFT_MAKI: strcat(str,"MAKI file"); break;
-+ case RFT_PIC: strcat(str,"PIC file"); break;
-+ case RFT_PI: strcat(str,"PI file"); break;
-+ case RFT_PIC2: strcat(str,"PIC2 file"); break;
-+ case RFT_MGCSFX: strcat(str,"Magic Suffix file"); break;
- default: strcat(str,"file of unknown type"); break;
- }
-
-@@ -3669,6 +4038,10 @@
-
- sprintf(thFname, "%s%s/%s", br->path, THUMBDIR, bf->name);
-
-+#ifdef AUTO_EXPAND
-+ Dirtovd(thFname);
-+#endif
-+
- fp = fopen(thFname, "r");
- if (!fp) return; /* nope, it doesn't have one */
-
-@@ -3784,6 +4157,11 @@
-
- sprintf(thFname, "%s%s/%s", br->path, THUMBDIR, bf->name);
-
-+#ifdef AUTO_EXPAND
-+ Dirtovd(thFname);
-+#endif
-+
-+ unlink(thFname); /* just in case there's already an unwritable one */
- fp = fopen(thFname, "w");
- if (!fp) {
- sprintf(buf, "Can't create thumbnail file '%s': %s", thFname,
-@@ -3848,15 +4226,30 @@
-
- sprintf(thFname, "%s%s", br->path, THUMBDIRNAME);
-
-+#ifdef AUTO_EXPAND
-+ Dirtovd(thFname);
-+#endif
-+
- i = stat(thFname, &st);
- if (i) { /* failed, let's create it */
- sprintf(thFname, "%s.", br->path);
-+#ifdef AUTO_EXPAND
-+ Dirtovd(thFname);
-+#endif
- i = stat(thFname, &st); /* get permissions of parent dir */
- if (!i) perm = st.st_mode & 07777;
- else perm = 0755;
-
- sprintf(thFname, "%s%s", br->path, THUMBDIRNAME);
-+#ifdef AUTO_EXPAND
-+ Dirtovd(thFname);
-+# ifdef VIRTUAL_TD
-+ if (mkdir(thFname, (mode_t) perm) < 0)
-+ Mkvdir_force(thFname);
-+# else
- mkdir(thFname, (mode_t) perm);
-+# endif
-+#endif
- }
- }
-
-@@ -3898,7 +4291,7 @@
- for (i=0, bf=br->bfList; i<br->bfLen; i++, bf++) {
- if (bf->ftype <= BF_FILE || bf->ftype >= BF_ERROR || bf->ftype==BF_EXE) {
-
-- /* ie, not a 'special' file */
-+ /* i.e., not a 'special' file */
-
- int s1, s2;
- char thfname[256];
-@@ -3912,10 +4305,9 @@
- sprintf(thfname, "%s/%s", THUMBDIR, bf->name);
- s2 = stat(thfname, &thumbst);
-
-- if (s1 || s2 || filest.st_mtime > thumbst.st_mtime ||
-- filest.st_ctime > thumbst.st_ctime) {
-+ if (s1 || s2 || filest.st_mtime > thumbst.st_mtime) {
- /* either stat'ing the file or the thumbfile failed, or
-- both stat's succeeded and the file has a newer mod or creation
-+ both stat's succeeded and the file has a newer mod
- time than the thumbnail file */
-
- makeIconVisible(br, i);
-@@ -3927,8 +4319,12 @@
- iconsBuilt++;
- if (DEBUG)
- fprintf(stderr,"icon made:fname='%s' thfname='%s' %d,%d,%ld,%ld\n",
-- bf->name, thfname, s1,s2,filest.st_mtime,thumbst.st_mtime);
-+ bf->name, thfname, s1, s2,
-+ (long)filest.st_mtime, (long)thumbst.st_mtime);
- }
-+ } else if (filest.st_ctime > thumbst.st_ctime) {
-+ /* update protections */
-+ chmod(thfname, (mode_t) (filest.st_mode & 07777));
- }
- }
- statcount++;
-@@ -3963,7 +4359,11 @@
- sprintf(thfname, "%s/%s", THUMBDIR, dp->d_name);
- if (stat(thfname, &thumbst)==0) { /* success */
- int tmp;
-+#ifdef AUTO_EXPAND
-+ tmp = stat2bf((u_int) thumbst.st_mode , thfname);
-+#else
- tmp = stat2bf((u_int) thumbst.st_mode);
-+#endif
-
- if (tmp == BF_FILE) { /* a plain file */
- /* see if this thumbfile has an associated pic file */
-@@ -4042,6 +4442,15 @@
- static char *labels[] = { "\nOk", "\033Cancel" };
- struct stat st;
-
-+#ifdef AUTO_EXPAND
-+ if (Isvdir(br->path)) {
-+ sprintf(buf,"Sorry, you can't rename file in the virtual directory, '%s'",
-+ br->path);
-+ ErrPopUp(buf, "\nBummer!");
-+ return;
-+ }
-+#endif
-+
- if (cdBrow(br)) return;
-
- /* find the selected file */
-@@ -4129,6 +4538,15 @@
- static char *labels[] = { "\nOk", "\033Cancel" };
- struct stat st;
-
-+#ifdef AUTO_EXPAND
-+ if (Isvdir(br->path)) {
-+ sprintf(buf,"Sorry, you can't mkdir in the virtual directory, '%s'",
-+ br->path);
-+ ErrPopUp(buf, "\nBummer!");
-+ return;
-+ }
-+#endif
-+
- if (cdBrow(br)) return;
-
- buf[0] = '\0';
-@@ -4197,14 +4615,34 @@
- if (cdBrow(br)) return; /* prints its own error message */
- }
-
-+#ifdef AUTO_EXPAND
-+ if (Chvdir(buf)) {
-+#else
- if (chdir(buf)) {
-+#endif
- sprintf(str,"Unable to cd to '%s'\n", buf);
- setBrowStr(br, str);
- XBell(theDisp, 50);
- }
- else {
-+#ifdef AUTO_EXPAND
-+ if (Isvdir(buf)) {
-+ BTSetActive(&br->but[BR_DELETE], 0);
-+ br->cmdMB.dim[BR_DELETE] = 1;
-+
-+ BTSetActive(&br->but[BR_RENAME], 0);
-+ br->cmdMB.dim[BR_RENAME] = 1;
-+
-+ BTSetActive(&br->but[BR_MKDIR], 0);
-+ br->cmdMB.dim[BR_MKDIR] = 1;
-+ } else {
-+ BTSetActive(&br->but[BR_MKDIR], 1);
-+ br->cmdMB.dim[BR_MKDIR] = 0;
-+ }
-+#endif
- scanDir(br);
- SCSetVal(&(br->scrl), 0); /* reset to top on a chdir */
-+ restIconVisible(br);
- }
- }
-
-@@ -4229,6 +4667,15 @@
- char buf[512];
- static char *yesno[] = { "\004Delete", "\033Cancel" };
-
-+#ifdef AUTO_EXPAND
-+ if (Isvdir(br->path)) {
-+ sprintf(buf,"Sorry, you can't delete file at the virtual directory, '%s'",
-+ br->path);
-+ ErrPopUp(buf, "\nBummer!");
-+ return;
-+ }
-+#endif
-+
- if (!br->bfLen || !br->bfList || !br->numlit) return;
-
- if (cdBrow(br)) return; /* can't cd to this directory. screw it! */
-@@ -4251,7 +4698,11 @@
- for (i=0, bf=br->bfList; i<br->bfLen; i++,bf++) {
- if (bf->lit) {
- if (firstdel == -1) firstdel = i;
-- if (bf->ftype == BF_DIR) numdirs++;
-+ if (bf->ftype == BF_DIR
-+#ifdef AUTO_EXPAND
-+ && (!Isarchive(bf->name))
-+#endif
-+ ) numdirs++;
- else numfiles++;
- }
- }
-@@ -4265,7 +4716,12 @@
- slen = strlen(buf);
-
- for (i=0, bf=br->bfList; i<br->bfLen; i++,bf++) {
-+#ifdef AUTO_EXPAND
-+ if (bf->lit && (bf->ftype != BF_DIR || Isarchive(bf->name))) {
-+#else
- if (bf->lit && bf->ftype != BF_DIR) {
-+#endif
-+
- if ( (slen + strlen(bf->name) + 1) > 256) {
- strcat(buf,"...");
- break;
-@@ -4277,7 +4733,7 @@
- }
- }
-
-- i = PopUp(buf, yesno, 2);
-+ i = PopUp(buf, yesno, COUNT(yesno));
- if (i) return; /* cancelled */
- }
-
-@@ -4290,7 +4746,11 @@
- slen = strlen(buf);
-
- for (i=0, bf=br->bfList; i<br->bfLen; i++,bf++) {
-+#ifdef AUTO_EXPAND
-+ if (bf->lit && (bf->ftype == BF_DIR || !Isarchive(bf->name))) {
-+#else
- if (bf->lit && bf->ftype == BF_DIR) {
-+#endif
- if ( (slen + strlen(bf->name) + 1) > 256) {
- strcat(buf,"...");
- break;
-@@ -4302,7 +4762,7 @@
- }
- }
-
-- i = PopUp(buf, yesno, 2);
-+ i = PopUp(buf, yesno, COUNT(yesno));
- if (i) return; /* cancelled */
- }
-
-@@ -4311,7 +4771,11 @@
-
- for (i=0, bf=br->bfList; i<br->bfLen; i++,bf++) {
- if (bf->lit) {
-- if (bf->ftype == BF_DIR) rm_dir (br, bf->name);
-+ if (bf->ftype == BF_DIR
-+#ifdef AUTO_EXPAND
-+ && !Isarchive(bf->name)
-+#endif
-+ ) rm_dir (br, bf->name);
- else rm_file(br, bf->name);
- }
- }
-@@ -4440,7 +4904,11 @@
- xv_getwd(orgDir, sizeof(orgDir));
-
- sprintf(curDir, "%s%s", br->path, subdir);
-+#ifdef AUTO_EXPAND
-+ if (Chvdir(curDir)) {
-+#else
- if (chdir(curDir)) {
-+#endif
- char str[512];
- sprintf(str, "Unable to cd to '%s'\n", curDir);
- setBrowStr(br, str);
-@@ -4452,14 +4920,24 @@
- /* have we looped? */
- for (i=0; i<dirStackLen && strcmp(curDir, dirStack[i]); i++);
- if (i<dirStackLen) { /* YES */
-+#ifdef AUTO_EXPAND
-+ Chvdir(orgDir);
-+#else
- chdir(orgDir);
-+#endif
-+ restIconVisible(br);
- return;
- }
-
- sp = (char *) malloc((size_t) strlen(curDir) + 1);
- if (!sp) {
- setBrowStr(br, "malloc() error in recurseUpdate()\n");
-+#ifdef AUTO_EXPAND
-+ Chvdir(orgDir);
-+#else
- chdir(orgDir);
-+#endif
-+ restIconVisible(br);
- return;
- }
-
-@@ -4494,7 +4972,12 @@
-
- xv_getwd(curDir, sizeof(curDir));
- if (strcmp(orgDir, curDir)) { /* change back to orgdir */
-+#ifdef AUTO_EXPAND
-+ Chvdir(orgDir);
-+#else
- chdir(orgDir);
-+#endif
-+ restIconVisible(br);
- scanDir(br);
- }
- }
-@@ -4518,6 +5001,13 @@
- setBrowStr(br, buf);
- }
-
-+#ifdef AUTO_EXPAND
-+ if (Rmvdir(name)) {
-+ sprintf(buf, "fail to remove virturl directory: %s", name);
-+ setBrowStr(br, buf);
-+ }
-+#endif
-+
- /* try to delete a thumbnail file, as well. ignore errors */
- strcpy(buf1, name); /* tmp1 = leading path of name */
- tmp = (char *) rindex(buf1, '/');
-@@ -4586,7 +5076,14 @@
- goto done;
- }
-
-- if (stat2bf((u_int) st.st_mode) == BF_DIR) { /* skip, for now */
-+#ifdef AUTO_EXPAND
-+ if ((stat2bf((u_int) st.st_mode , rmdirPath) == BF_DIR)
-+ && !Isarchive(rmdirPath)) /* skip, for now */
-+#else
-+
-+ if (stat2bf((u_int) st.st_mode) == BF_DIR) /* skip, for now */
-+#endif
-+ {
- rmdirPath[oldpathlen] = '\0';
- continue; /* don't remove from list */
- }
-@@ -4639,9 +5136,9 @@
-
- static int overwrite;
- #define OWRT_ASK 0
--#define OWRT_NOASK 1
--#define OWRT_CANCEL 2
--
-+#define OWRT_ALWAYS 1
-+#define OWRT_NEVER 2
-+#define OWRT_CANCEL 3
-
- /*******************************************/
- static void dragFiles(srcBr, dstBr, srcpath, dstpath, dstdir,
-@@ -4676,11 +5173,26 @@
- }
- else if (strcmp(dstdir,".")!=0) sprintf(dstp, "%s%s/", dstpath, dstdir);
-
-+#ifdef AUTO_EXPAND
-+ if (Isvdir(dstp)) {
-+ sprintf(buf,"Sorry, you can't %s to the virtual directory, '%s'",
-+ cpymode ? "copy" : "move", dstp);
-+ ErrPopUp(buf, "\nBummer!");
-+ SetCursors(-1);
-+ return;
-+ }
-+ if (Isvdir(srcpath))
-+ cpymode = 1;
-+#endif
-+
-
-
- /* if there is a thumbnail directory in 'srcpath', make one for dstpath */
- sprintf(src,"%s%s", srcpath, THUMBDIR);
- dothumbs = 0;
-+#ifdef AUTO_EXPAND
-+ Dirtovd(src);
-+#endif
- if (stat(src, &st)==0) {
- sprintf(dst,"%s%s", dstp, THUMBDIR);
- mkdir(dst, st.st_mode & 07777);
-@@ -4711,6 +5223,14 @@
- if (overwrite == OWRT_CANCEL) break; /* abort move */
- if (j==1) fail++;
-
-+#ifdef AUTO_EXPAND
-+ if (!cpymode && j==0)
-+ if (Movevdir(src,dst)) {
-+ sprintf(buf, "fail to move virturl directory: %s", names[i]);
-+ setBrowStr(srcBr, buf);
-+ }
-+#endif
-+
- if (dothumbs && j==0) {
- sprintf(src,"%s%s/%s", srcpath, THUMBDIR, names[i]);
- sprintf(dst,"%s%s/%s", dstp, THUMBDIR, names[i]);
-@@ -4748,6 +5268,15 @@
- }
-
-
-+ if (!cpymode) {
-+ /* clear all lit files in the source folder (as they've been moved)
-+ note: this won't be the optimal behavior if any files failed to
-+ move, but screw it, that's not going to happen too often... */
-+ for (i=0; i<srcBr->bfLen; i++) srcBr->bfList[i].lit = 0;
-+ srcBr->numlit = 0;
-+ }
-+
-+
- /* clear all files in the destination folder */
- for (i=0; i<dstBr->bfLen; i++) {
- dstBr->bfList[i].lit = 0;
-@@ -4793,7 +5322,51 @@
- SetCursors(-1);
- }
-
-+static int recursive_remove(dir)
-+ char *dir;
-+{
-+ DIR *dp = NULL;
-+ struct dirent *di;
-+ char name[MAXPATHLEN+1];
-+
-+ strncpy(name, dir, MAXPATHLEN);
-+ name[MAXPATHLEN] = 0;
-+
-+ if (name[strlen(name) - 1] == '/')
-+ name[strlen(name) - 1] = 0;
-
-+ if ((dp = opendir(name)) == NULL)
-+ goto err;
-+
-+ while ((di = readdir(dp)) != NULL) {
-+ char buf[MAXPATHLEN+1];
-+ struct stat st;
-+
-+ if (!strcmp(di->d_name, ".") || !strcmp(di->d_name, ".."))
-+ continue;
-+
-+ snprintf(buf, MAXPATHLEN, "%s/%s", name, di->d_name);
-+
-+ if (stat(buf, &st) < 0)
-+ continue;
-+
-+ if (S_ISDIR(st.st_mode)) {
-+ if (recursive_remove(buf) < 0)
-+ goto err;
-+ } else
-+ unlink(buf);
-+ }
-+
-+ if (rmdir(name) < 0)
-+ goto err;
-+
-+ closedir(dp);
-+ return 0;
-+
-+err:
-+ if (dp) closedir(dp);
-+ return -1;
-+}
-
- /*************************************************/
- static int moveFile(src,dst)
-@@ -4811,31 +5384,45 @@
- int i, srcdir, dstdir;
- struct stat st;
- char buf[512];
-- static char *owbuts[4] = { "\nOk", "dDon't ask", "nNo", "\033Cancel" };
-+ static char *owbuts[] = { "\nOk", "aAlways", "nNo", "NNever", "\033Cancel" };
-
- if (DEBUG) fprintf(stderr,"moveFile %s %s\n", src, dst);
-
-+#ifdef AUTO_EXPAND
-+ Dirtosubst(src);
-+#endif
-+
- if (stat(src, &st)) return 0; /* src doesn't exist, it would seem */
-+#ifdef AUTO_EXPAND
-+ srcdir = (stat2bf((u_int) st.st_mode , src) == BF_DIR);
-+#else
- srcdir = (stat2bf((u_int) st.st_mode) == BF_DIR);
-+#endif
-
- /* see if destination exists */
-+
- if (stat(dst, &st)==0) {
-+ if (overwrite==OWRT_NEVER) return -1;
-+#ifdef AUTO_EXPAND
-+ dstdir = (stat2bf((u_int) st.st_mode , dst) == BF_DIR);
-+#else
- dstdir = (stat2bf((u_int) st.st_mode) == BF_DIR);
-+#endif
-
- if (overwrite==OWRT_ASK) {
-- sprintf(buf, "%s '%s' exists.\n\nOverwrite?",
-+ snprintf(buf, sizeof(buf), "%s '%s' exists.\n\nOverwrite?",
- dstdir ? "Directory" : "File", dst);
-- i = PopUp(buf, owbuts, 4);
--
-- if (i==1) overwrite = OWRT_NOASK;
-- else if (i==2) return -1;
-- else if (i==3) { overwrite = OWRT_CANCEL; return 1; }
-+ switch (PopUp(buf, owbuts, COUNT(owbuts))) {
-+ case 1: overwrite = OWRT_ALWAYS; break;
-+ case 2: return -1;
-+ case 3: overwrite = OWRT_NEVER; return -1;
-+ case 4: overwrite = OWRT_CANCEL; return 1;
-+ }
- }
-
- if (dstdir) {
- #ifndef VMS /* we don't delete directories in VMS */
-- sprintf(buf, "rm -rf %s", dst);
-- if (system(buf)) { /* okay, so it's cheating... */
-+ if (recursive_remove(dst)) { /* okay, so it's cheating... */
- SetISTR(ISTR_WARNING, "Unable to remove directory %s", dst);
- return 1;
- }
-@@ -4858,9 +5445,8 @@
- if (i == 0) { /* copied okay, kill the original */
- if (srcdir) {
- #ifndef VMS /* we don't delete directories in VMS */
-- sprintf(buf, "rm -rf %s", src);
-- if (system(buf)) { /* okay, so it's cheating... */
-- SetISTR(ISTR_WARNING, "Unable to remove directory %s", dst);
-+ if (recursive_remove(src)) { /* okay, so it's cheating... */
-+ SetISTR(ISTR_WARNING, "Unable to remove directory %s", src);
- return 1;
- }
- #endif /* VMS */
-@@ -4906,38 +5492,51 @@
- fall through: if dest doesn't exist, copy the directory, recurs */
-
-
-- int i, dstExists, srcdir, dstdir;
-+ int dstExists, srcdir, dstdir;
- struct stat srcSt, dstSt;
- char buf[1024];
-- static char *owdiff[3] = { "\nOk", "nNo", "\033Cancel" };
-- static char *owsame[4] = { "\nOk", "dDon't Ask", "nNo", "\033Cancel" };
-+ static char *owdiff[] = { "\nOk", "nNo", "\033Cancel" };
-+ static char *owsame[] = { "\nOk", "aAlways", "nNo", "NNever", "\033Cancel" };
-
- if (DEBUG) fprintf(stderr,"copyFile %s %s\n", src, dst);
-
-+#ifdef AUTO_EXPAND
-+ Dirtosubst(src);
-+#endif
-+
- if (stat(src,&srcSt)) return 0; /* source doesn't exist, it would seem */
-
- dstExists = (stat(dst, &dstSt)==0);
-
- if (dstExists) { /* ask about overwriting... */
-- srcdir = (stat2bf((u_int) srcSt.st_mode) == BF_DIR);
-- dstdir = (stat2bf((u_int) dstSt.st_mode) == BF_DIR);
-+#ifdef AUTO_EXPAND
-+ srcdir = (stat2bf((u_int) srcSt.st_mode , src) == BF_DIR);
-+ dstdir = (stat2bf((u_int) dstSt.st_mode , dst) == BF_DIR);
-+#else
-+ srcdir = (stat2bf((u_int) srcSt.st_mode) == BF_DIR);
-+ dstdir = (stat2bf((u_int) dstSt.st_mode) == BF_DIR);
-+#endif
-
- sprintf(buf, "%s '%s' already exists. Replace it with %s '%s'?",
- (dstdir) ? "Directory" : "File", dst,
- (srcdir) ? "contents of directory" : "file", src);
-
- if (srcdir == dstdir) {
-+ if (overwrite==OWRT_NEVER) return -1;
- if (overwrite==OWRT_ASK) {
-- i = PopUp(buf, owsame, 4);
-- if (i==1) overwrite = OWRT_NOASK;
-- if (i==2) return -1;
-- else if (i==3) { overwrite = OWRT_CANCEL; return 1; }
-+ switch (PopUp(buf, owsame, COUNT(owsame))) {
-+ case 1: overwrite = OWRT_ALWAYS; break;
-+ case 2: return -1;
-+ case 3: overwrite = OWRT_NEVER; return -1;
-+ case 4: overwrite = OWRT_CANCEL; return 1;
-+ }
- }
- }
- else { /* one's a dir, the other's a file. *ALWAYS* ask! */
-- i = PopUp(buf, owdiff, 3);
-- if (i==1) return -1;
-- else if (i==2) { overwrite = OWRT_CANCEL; return 1; }
-+ switch (PopUp(buf, owdiff, COUNT(owdiff))) {
-+ case 1: return -1;
-+ case 2: overwrite = OWRT_CANCEL; return 1;
-+ }
- }
-
-
-@@ -5035,8 +5634,11 @@
- havedst = 1;
- }
-
--
-+#ifdef AUTO_EXPAND
-+ switch(stat2bf((u_int) srcSt.st_mode , cpDstPath)) {
-+#else
- switch(stat2bf((u_int) srcSt.st_mode)) {
-+#endif
- /* determine how to copy, by filetype */
-
- /* NOTE: There is no S_IFLNK case here, since we're using 'stat()' and
-@@ -5052,7 +5654,11 @@
- }
- }
- else {
-+#ifdef AUTO_EXPAND
-+ if (stat2bf((u_int) dstSt.st_mode , cpDstPath) != BF_DIR) {
-+#else
- if (stat2bf((u_int) dstSt.st_mode) != BF_DIR) {
-+#endif
- SetISTR(ISTR_WARNING,"%s: not a directory", cpDstPath);
- copyerr++;
- return;
-@@ -5130,7 +5736,12 @@
- goto done;
- }
-
-- if (stat2bf((u_int) srcSt.st_mode) == BF_DIR) {
-+#ifdef AUTO_EXPAND
-+ if (stat2bf((u_int) srcSt.st_mode , cpSrcPath) == BF_DIR)
-+#else
-+ if (stat2bf((u_int) srcSt.st_mode) == BF_DIR)
-+#endif
-+ {
- cpSrcPath[oldsrclen] = '\0';
- continue; /* don't remove from list, just skip */
- }
-@@ -5189,9 +5800,9 @@
- int exists;
- /*****************************/
- {
-- register int srcFd, dstFd, rcount, wcount, i;
-+ register int srcFd, dstFd, rcount, wcount;
- char buf[8192];
-- static char *owbuts[4] = { "\nOk", "dDon't Ask", "nNo", "\033Cancel" };
-+ static char *owbuts[] = { "\nOk", "aAlways", "nNo", "NNever", "\033Cancel" };
-
- if (DEBUG) fprintf(stderr,"cp_file: src='%s', dst='%s'\n",
- cpSrcPath, cpDstPath);
-@@ -5203,13 +5814,15 @@
- }
-
- if (exists) {
-+ if (overwrite==OWRT_NEVER) return;
- if (overwrite==OWRT_ASK) {
- sprintf(buf, "File '%s' exists.\n\nOverwrite?", cpDstPath);
-- i = PopUp(buf, owbuts, 4);
--
-- if (i==1) overwrite = OWRT_NOASK;
-- else if (i==2) return;
-- else if (i==3) { overwrite = OWRT_CANCEL; return; }
-+ switch (PopUp(buf, owbuts, 4)) {
-+ case 1: overwrite = OWRT_ALWAYS; break;
-+ case 2: return;
-+ case 3: overwrite = OWRT_NEVER; return;
-+ case 4: overwrite = OWRT_CANCEL; return;
-+ }
- }
- dstFd = open(cpDstPath, O_WRONLY|O_TRUNC, 0);
- }
-@@ -5303,8 +5916,14 @@
-
-
- /*********************************/
-+#ifdef AUTO_EXPAND
-+static int stat2bf(uistmode, path)
-+ u_int uistmode;
-+ char *path;
-+#else
- static int stat2bf(uistmode)
- u_int uistmode;
-+#endif
- {
- /* given the 'st.st_mode' field from a successful stat(), returns
- BF_FILE, BF_DIR, BF_BLK, BF_CHR, BF_FIFO, or BF_SOCK. Does *NOT*
-@@ -5318,6 +5937,9 @@
- else if (S_ISBLK(stmode)) rv = BF_BLK;
- else if (S_ISFIFO(stmode)) rv = BF_FIFO;
- else if (S_ISSOCK(stmode)) rv = BF_SOCK;
-+#ifdef AUTO_EXPAND
-+ else if (Isarchive(path)) rv = BF_DIR;
-+#endif
- else rv = BF_FILE;
-
- return rv;
-@@ -5418,4 +6040,56 @@
- }
-
-
-+static IVIS *icon_vis_list = NULL;
-+
-+/***************************************************************/
-+static void recIconVisible(name, icon)
-+ char *name;
-+ int icon;
-+{
-+ IVIS *ptr, *prev = NULL;
-+
-+ for (ptr = icon_vis_list; ptr; prev = ptr, ptr = ptr->next) {
-+ if (!strcmp(ptr->name, name)) {
-+ ptr->icon = icon;
-+ return;
-+ }
-+ }
-+
-+ ptr = calloc(sizeof(IVIS), 1);
-+ if (!ptr)
-+ return;
-+
-+ ptr->name = strdup(name);
-
-+ if (!ptr->name) {
-+ free(ptr);
-+ return;
-+ }
-+
-+ if (!prev) {
-+ icon_vis_list = ptr;
-+ } else {
-+ prev->next = ptr;
-+ }
-+
-+ ptr->next = NULL;
-+ ptr->icon = icon;
-+}
-+
-+/***************************************************************/
-+static void restIconVisible(br)
-+ BROWINFO *br;
-+{
-+ IVIS *ptr;
-+
-+ for (ptr = icon_vis_list; ptr; ptr = ptr->next) {
-+ if (!strcmp(ptr->name, br->path)) {
-+ if (ptr->icon >= 0) {
-+ makeIconVisible(br, ptr->icon);
-+ updateSel(br, ptr->icon, 0, 0);
-+ }
-+ return;
-+ }
-+ }
-+}
-diff -ruN xv-3.10a-bugfixes/xvctrl.c xv-3.10a-enhancements/xvctrl.c
---- xv-3.10a-bugfixes/xvctrl.c 2004-05-23 11:56:37.000000000 -0700
-+++ xv-3.10a-enhancements/xvctrl.c 2004-05-23 12:15:18.000000000 -0700
-@@ -104,7 +104,8 @@
- "Root: centered, warp",
- "Root: centered, brick",
- "Root: symmetrical tiled",
-- "Root: symmetrical mirrored" };
-+ "Root: symmetrical mirrored",
-+ "Root: upper left corner" };
-
- static char *conv24MList[] = { "8-bit mode\t\2448",
- "24-bit mode\t\2448",
-diff -ruN xv-3.10a-bugfixes/xvdial.c xv-3.10a-enhancements/xvdial.c
---- xv-3.10a-bugfixes/xvdial.c 2004-05-16 18:01:57.000000000 -0700
-+++ xv-3.10a-enhancements/xvdial.c 2004-05-16 18:06:38.000000000 -0700
-@@ -41,20 +41,21 @@
-
-
- /* local functions */
--static int whereInDial PARM((DIAL *, int, int));
--static void drawArrow PARM((DIAL *));
--static void drawValStr PARM((DIAL *));
--static void drawButt PARM((DIAL *, int, int));
--static int computeDialVal PARM((DIAL *, int, int));
--static void dimDial PARM((DIAL *));
-+static int whereInDial PARM((DIAL *, int, int));
-+static void drawArrow PARM((DIAL *));
-+static void drawValStr PARM((DIAL *));
-+static void drawButt PARM((DIAL *, int, int));
-+static double computeDialVal PARM((DIAL *, int, int));
-+static void dimDial PARM((DIAL *));
-
-
- /***************************************************/
--void DCreate(dp, parent, x, y, w, h, minv, maxv, curv, page,
-+void DCreate(dp, parent, x, y, w, h, minv, maxv, curv, inc, page,
- fg, bg, hi, lo, title, units)
- DIAL *dp;
- Window parent;
--int x,y,w,h,minv,maxv,curv,page;
-+int x,y,w,h;
-+double minv,maxv,curv,inc,page;
- unsigned long fg,bg,hi,lo;
- char *title, *units;
- {
-@@ -98,18 +99,18 @@
- 1,fg,bg);
- if (!dp->win) FatalError("can't create dial window");
-
-- DSetRange(dp, minv, maxv, curv, page);
-+ DSetRange(dp, minv, maxv, curv, inc, page);
- XSelectInput(theDisp, dp->win, ExposureMask | ButtonPressMask);
- }
-
-
- /***************************************************/
--void DSetRange(dp, minv, maxv, curv, page)
--DIAL *dp;
--int minv, maxv, curv, page;
-+void DSetRange(dp, minv, maxv, curv, inc, page)
-+DIAL *dp;
-+double minv, maxv, curv, inc, page;
- {
- if (maxv<minv) maxv=minv;
-- dp->min = minv; dp->max = maxv; dp->page = page;
-+ dp->min = minv; dp->max = maxv; dp->inc = inc; dp->page = page;
- dp->active = (minv < maxv);
-
- DSetVal(dp, curv);
-@@ -118,8 +119,8 @@
-
- /***************************************************/
- void DSetVal(dp, curv)
--DIAL *dp;
--int curv;
-+DIAL *dp;
-+double curv;
- {
- RANGE(curv, dp->min, dp->max); /* make sure curv is in-range */
-
-@@ -129,7 +130,7 @@
- XSetForeground(theDisp, theGC, dp->bg);
- drawArrow(dp);
-
-- dp->val = curv;
-+ dp->val = (double)((int)(curv / dp->inc + (curv > 0 ? 0.5 : -0.5))) * dp->inc;
-
- /* draw new arrow and string */
- XSetForeground(theDisp, theGC, dp->fg);
-@@ -202,7 +203,8 @@
- int mx,my;
- {
- Window rW,cW;
-- int rx,ry, x,y, ipos, pos, lit, i, origval;
-+ int rx, ry, x, y, ipos, pos, lit;
-+ double origval;
- unsigned int mask;
-
- lit = 0;
-@@ -224,9 +226,9 @@
- if (ipos != INDIAL) {
- drawButt(dp, ipos, 1);
- switch (ipos) {
-- case INCW1: if (dp->val < dp->max) DSetVal(dp, dp->val+1); break;
-+ case INCW1: if (dp->val < dp->max) DSetVal(dp, dp->val+dp->inc); break;
- case INCW2: if (dp->val < dp->max) DSetVal(dp, dp->val+dp->page); break;
-- case INCCW1: if (dp->val > dp->min) DSetVal(dp, dp->val-1); break;
-+ case INCCW1: if (dp->val > dp->min) DSetVal(dp, dp->val-dp->inc); break;
- case INCCW2: if (dp->val > dp->min) DSetVal(dp, dp->val-dp->page); break;
- }
- if (dp->drawobj != NULL) (dp->drawobj)();
-@@ -235,8 +237,9 @@
- }
-
- else {
-- i = computeDialVal(dp, mx, my);
-- DSetVal(dp, i);
-+ double v;
-+ v = computeDialVal(dp, mx, my);
-+ DSetVal(dp, v);
- if (dp->drawobj != NULL) (dp->drawobj)();
- }
-
-@@ -246,11 +249,11 @@
- if (!(mask & Button1Mask)) break; /* button released */
-
- if (ipos == INDIAL) {
-- int j;
-- i = computeDialVal(dp, x, y);
-- j = dp->val;
-- DSetVal(dp, i);
-- if (j != dp->val) {
-+ double v, w;
-+ v = computeDialVal(dp, x, y);
-+ w = dp->val;
-+ DSetVal(dp, v);
-+ if (w != dp->val) {
- /* track whatever dial controls */
- if (dp->drawobj != NULL) (dp->drawobj)();
- }
-@@ -266,11 +269,11 @@
-
- if (lit) {
- switch (ipos) {
-- case INCW1: if (dp->val < dp->max) DSetVal(dp, dp->val+1);
-+ case INCW1: if (dp->val < dp->max) DSetVal(dp, dp->val+dp->inc);
- break;
- case INCW2: if (dp->val < dp->max) DSetVal(dp, dp->val+dp->page);
- break;
-- case INCCW1: if (dp->val > dp->min) DSetVal(dp, dp->val-1);
-+ case INCCW1: if (dp->val > dp->min) DSetVal(dp, dp->val-dp->inc);
- break;
- case INCCW2: if (dp->val > dp->min) DSetVal(dp, dp->val-dp->page);
- break;
-@@ -320,19 +323,20 @@
- static void drawArrow(dp)
- DIAL *dp;
- {
-- int i, rad, cx, cy;
-+ int rad, cx, cy;
-+ double v;
- XPoint arrow[4];
-
- rad = dp->rad; cx = dp->cx; cy = dp->cy;
-
- /* map pos (range minv..maxv) into degrees (range 240..-60) */
-- i = 240 + (-300 * (dp->val - dp->min)) / (dp->max - dp->min);
-- arrow[0].x = cx + (int) ((double) rad * .80 * cos(i * DEG2RAD));
-- arrow[0].y = cy - (int) ((double) rad * .80 * sin(i * DEG2RAD));
-- arrow[1].x = cx + (int) ((double) rad * .33 * cos((i+160) * DEG2RAD));
-- arrow[1].y = cy - (int) ((double) rad * .33 * sin((i+160) * DEG2RAD));
-- arrow[2].x = cx + (int) ((double) rad * .33 * cos((i-160) * DEG2RAD));
-- arrow[2].y = cy - (int) ((double) rad * .33 * sin((i-160) * DEG2RAD));
-+ v = 240 + (-300 * (dp->val - dp->min)) / (dp->max - dp->min);
-+ arrow[0].x = cx + (int) ((double) rad * .80 * cos(v * DEG2RAD));
-+ arrow[0].y = cy - (int) ((double) rad * .80 * sin(v * DEG2RAD));
-+ arrow[1].x = cx + (int) ((double) rad * .33 * cos((v+160) * DEG2RAD));
-+ arrow[1].y = cy - (int) ((double) rad * .33 * sin((v+160) * DEG2RAD));
-+ arrow[2].x = cx + (int) ((double) rad * .33 * cos((v-160) * DEG2RAD));
-+ arrow[2].y = cy - (int) ((double) rad * .33 * sin((v-160) * DEG2RAD));
- arrow[3].x = arrow[0].x;
- arrow[3].y = arrow[0].y;
- XDrawLines(theDisp, dp->win, theGC, arrow, 4, CoordModeOrigin);
-@@ -343,23 +347,37 @@
- static void drawValStr(dp)
- DIAL *dp;
- {
-- int i, x1, x2;
-+ int tot, i, x1, x2;
- char foo[60], foo1[60];
-
- /* compute longest string necessary so we can right-align this thing */
-- sprintf(foo,"%d",dp->min); x1 = strlen(foo);
-- sprintf(foo,"%d",dp->max); x2 = strlen(foo);
-+ sprintf(foo,"%d",(int)dp->min); x1 = strlen(foo);
-+ sprintf(foo,"%d",(int)dp->max); x2 = strlen(foo);
- if (dp->min < 0 && dp->max > 0) x2++; /* put '+' at beginning */
- i = x1; if (x2>x1) i = x2;
- if (dp->units) i += strlen(dp->units);
-
-- if (dp->min < 0 && dp->max > 0) sprintf(foo,"%+d", dp->val);
-- else sprintf(foo,"%d", dp->val);
-+ sprintf(foo,"%g",dp->inc); /* space for decimal values */
-+ tot = i + strlen(foo) - 1; /* Take away the 0 from the beginning */
-+
-+ if (dp->min < 0.0 && dp->max > 0.0) sprintf(foo,"%+g", dp->val);
-+ else sprintf(foo,"%g", dp->val);
-+
-+ if (dp->inc < 1.0)
-+ {
-+ int j;
-+
-+ if (dp->val == (double)((int)dp->val))
-+ strcat(foo,".");
-+
-+ for (j = strlen(foo); j < tot; j++)
-+ strcat(foo,"0");
-+ }
-
- if (dp->units) strcat(foo,dp->units);
- foo1[0] = '\0';
- if (strlen(foo) < (size_t) i) {
-- for (i = i - strlen(foo); i>0; i--) strcat(foo1," ");
-+ for (i-=strlen(foo);i>0;i--) strcat(foo1," ");
- }
- strcat(foo1, foo);
-
-@@ -411,12 +429,13 @@
-
-
- /***************************************************/
--static int computeDialVal(dp, x, y)
-+static double computeDialVal(dp, x, y)
- DIAL *dp;
- int x, y;
- {
-- int dx, dy, val;
-- double angle;
-+ int dx, dy;
-+
-+ double angle, val;
-
- /* compute dx, dy (distance from cx, cy). Note: +dy is *up* */
- dx = x - dp->cx; dy = dp->cy - y;
-@@ -436,8 +455,10 @@
- if (angle > 270.0) angle -= 360.0;
- if (angle < -90.0) angle += 360.0;
-
-- val = (int) ((dp->max - dp->min) * (240.0 - angle) / 300.0) + dp->min;
-+ val = ((dp->max - dp->min) * (240.0 - angle) / 300.0) + dp->min;
-
-+ /* round value to be an even multiple of dp->inc */
-+ val = (double)((int)(val / dp->inc + 0.5)) * dp->inc;
- return val;
- }
-
-diff -ruN xv-3.10a-bugfixes/xvdir.c xv-3.10a-enhancements/xvdir.c
---- xv-3.10a-bugfixes/xvdir.c 2005-03-20 18:38:30.000000000 -0800
-+++ xv-3.10a-enhancements/xvdir.c 2005-04-25 22:24:28.000000000 -0700
-@@ -62,6 +62,9 @@
- #ifdef HAVE_TIFF
- "TIFF",
- #endif
-+#ifdef HAVE_PNG
-+ "PNG",
-+#endif
- "PostScript",
- "PBM/PGM/PPM (raw)",
- "PBM/PGM/PPM (ascii)",
-@@ -73,9 +76,32 @@
- "Targa (24-bit)",
- "FITS",
- "PM",
-+ "Spectrum SCREEN$", /* [JCE] */
-+ "WBMP",
-+#ifdef HAVE_MAG
-+ "MAG",
-+#endif
-+#ifdef HAVE_PIC
-+ "PIC",
-+#endif
-+#ifdef HAVE_MAKI
-+ "MAKI (640x400 only)",
-+#endif
-+#ifdef HAVE_PI
-+ "PI",
-+#endif
-+#ifdef HAVE_PIC2
-+ "PIC2",
-+#endif
-+#ifdef HAVE_MGCSFX
-+ "MgcSfx",
-+#endif
- MBSEP,
- "Filename List"};
-
-+#ifdef HAVE_PIC2
-+extern int PIC2SaveParams PARM((char *, int));
-+#endif
-
- static void arrangeButts PARM((int));
- static void RedrawDList PARM((int, SCRL *));
-@@ -570,7 +596,11 @@
- }
- #endif
-
-+#ifdef AUTO_EXPAND
-+ if (Chvdir(tmppath)) {
-+#else
- if (chdir(tmppath)) {
-+#endif
- char str[512];
- sprintf(str,"Unable to cd to '%s'\n", tmppath);
- *trunc_point = '/'; /* restore the path */
-@@ -635,7 +665,11 @@
- xv_getwd(path, sizeof(path));
- #endif
-
-+#ifdef AUTO_EXPAND
-+ if (Chvdir(path)) {
-+#else
- if (chdir(path)) {
-+#endif
- ErrPopUp("Current load/save directory seems to have gone away!",
- "\nYikes!");
- #ifdef apollo
-@@ -643,7 +677,11 @@
- #else
- strcpy(path,"/");
- #endif
-+#ifdef AUTO_EXPAND
-+ Chvdir(path);
-+#else
- chdir(path);
-+#endif
- }
-
- changedDir = strcmp(path, oldpath);
-@@ -748,6 +786,9 @@
- else if (S_ISFIFO(ftype)) fnames[i][0] = C_FIFO;
- else if (S_ISSOCK(ftype)) fnames[i][0] = C_SOCK;
- else if (fnames[i][0] == C_REG && (mode&0111)) fnames[i][0] = C_EXE;
-+#ifdef AUTO_EXPAND
-+ else if (Isarchive(fnames[i]+1)) fnames[i][0] = C_DIR;
-+#endif
- }
- else {
- /* fprintf(stderr,"problems 'stat-ing' files\n");*/
-@@ -847,7 +888,7 @@
- scrollToFileName();
- }
-
-- else if (c=='\010' || c=='\177') { /* BS or DEL */
-+ else if (c=='\010') { /* BS */
- if (curPos==0) return(-1); /* at beginning of str */
- xvbcopy(&filename[curPos], &filename[curPos-1], (size_t) (len-curPos+1));
- curPos--;
-@@ -872,7 +913,7 @@
- curPos = len;
- }
-
-- else if (c=='\004') { /* ^D: delete character at curPos */
-+ else if (c=='\004' || c=='\177') { /* ^D or DEL: delete character at curPos */
- if (curPos==len) return(-1);
- xvbcopy(&filename[curPos+1], &filename[curPos], (size_t) (len-curPos));
- }
-@@ -1055,6 +1096,25 @@
-
- fullname = GetDirFullName();
-
-+#ifdef AUTO_EXPAND
-+ {
-+ char path[MAXPATHLEN];
-+
-+ GetDirPath(path);
-+ Mkvdir(path);
-+ if ((i = Isvdir(fullname)) & 01) {
-+ char buf[128];
-+ sprintf(buf,
-+ "Sorry, you can't save file in the virtual directory, '%s'",
-+ path);
-+ ErrPopUp(buf, "\nBummer!");
-+ return -1;
-+ }
-+ if (i & 06)
-+ Rmvdir(fullname);
-+ }
-+#endif
-+
- fmt = MBWhich(&fmtMB);
- col = MBWhich(&colMB);
-
-@@ -1116,7 +1176,34 @@
- }
- #endif
-
-+#ifdef HAVE_PNG
-+ else if (fmt == F_PNG) { /* PNG */
-+ PNGSaveParams(fullname, col);
-+ PNGDialog(1); /* open PNG Dialog box */
-+ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
-+ return 0; /* always 'succeeds' */
-+ }
-+#endif
-+
-+#ifdef HAVE_PIC2
-+ else if (fmt == F_PIC2) { /* PIC2 */
-+ if (PIC2SaveParams(fullname, col) < 0)
-+ return 0;
-+ PIC2Dialog(1); /* open PIC2 Dialog box */
-+ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
-+ return 0; /* always 'succeeds' */
-+ }
-+#endif /* HAVE_PIC2 */
-
-+#ifdef HAVE_MGCSFX
-+ else if (fmt == F_MGCSFX) { /* MGCSFX */
-+ if (MGCSFXSaveParams(fullname, col) < 0)
-+ return 0;
-+ MGCSFXDialog(1); /* open MGCSFX Dialog box */
-+ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
-+ return 0; /* always 'succeeds' */
-+ }
-+#endif /* HAVE_MGCSFX */
-
-
- WaitCursor();
-@@ -1164,6 +1251,10 @@
- rv = WriteBMP (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
- break;
-
-+ case F_WBMP:
-+ rv = WriteWBMP (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
-+ break;
-+
- case F_IRIS:
- rv = WriteIRIS (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
- break;
-@@ -1181,6 +1272,35 @@
- rv = WriteFITS (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
- picComments);
- break;
-+
-+ case F_ZX: /* [JCE] Spectrum SCREEN$ */
-+ rv = WriteZX (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
-+ picComments);
-+ break;
-+#ifdef HAVE_MAG
-+ case F_MAG:
-+ rv = WriteMAG (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
-+ picComments);
-+ break;
-+#endif /* HAVE_MAG */
-+#ifdef HAVE_PIC
-+ case F_PIC:
-+ rv = WritePIC (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
-+ picComments);
-+ break;
-+#endif /* HAVE_PIC */
-+#ifdef HAVE_MAKI
-+ case F_MAKI:
-+ rv = WriteMAKI (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
-+ break;
-+#endif /* HAVE_MAKI */
-+
-+#ifdef HAVE_PI
-+ case F_PI:
-+ rv = WritePi (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
-+ picComments);
-+ break;
-+#endif /* HAVE_PI */
- }
-
-
-@@ -1310,7 +1430,8 @@
-
- else if (group == F_FORMAT) {
- MBSelect(&fmtMB, bnum);
-- if (MBWhich(&fmtMB) == F_XBM) { /* turn off all but B/W */
-+ if (MBWhich(&fmtMB) == F_XBM ||
-+ MBWhich(&fmtMB) == F_WBMP) { /* turn off all but B/W */
- colMB.dim[F_FULLCOLOR] = 1;
- colMB.dim[F_GREYSCALE] = 1;
- colMB.dim[F_BWDITHER] = 0;
-@@ -1389,14 +1510,29 @@
- (strcmp(lowsuf,"eps" )==0) ||
- (strcmp(lowsuf,"rgb" )==0) ||
- (strcmp(lowsuf,"tga" )==0) ||
-- (strcmp(lowsuf,"xpm" )==0) ||
- (strcmp(lowsuf,"fits")==0) ||
- (strcmp(lowsuf,"fts" )==0) ||
-+#ifdef HAVE_JPEG
- (strcmp(lowsuf,"jpg" )==0) ||
- (strcmp(lowsuf,"jpeg")==0) ||
- (strcmp(lowsuf,"jfif")==0) ||
-+#endif
-+#ifdef HAVE_TIFF
- (strcmp(lowsuf,"tif" )==0) ||
-- (strcmp(lowsuf,"tiff")==0)) {
-+ (strcmp(lowsuf,"tiff")==0) ||
-+#endif
-+#ifdef HAVE_PNG
-+ (strcmp(lowsuf,"png" )==0) ||
-+#endif
-+ (strcmp(lowsuf,"wbmp")==0) ||
-+ (strcmp(lowsuf,"xpm" )==0) ||
-+ (strcmp(lowsuf,"tiff")==0) ||
-+ (strcmp(lowsuf,"mag" )==0) ||
-+ (strcmp(lowsuf,"pic" )==0) ||
-+ (strcmp(lowsuf,"mki" )==0) ||
-+ (strcmp(lowsuf,"pi" )==0) ||
-+ (strcmp(lowsuf,"p2" )==0) ||
-+ (strcmp(lowsuf,"pcd" )==0)) {
-
- /* found one. set lowsuf = to the new suffix, and tack on to filename */
-
-@@ -1419,6 +1555,7 @@
- case F_XBM: strcpy(lowsuf,"xbm"); break;
- case F_SUNRAS: strcpy(lowsuf,"ras"); break;
- case F_BMP: strcpy(lowsuf,"bmp"); break;
-+ case F_WBMP: strcpy(lowsuf,"wbmp"); break;
- case F_PS: strcpy(lowsuf,"ps"); break;
- case F_IRIS: strcpy(lowsuf,"rgb"); break;
- case F_TARGA: strcpy(lowsuf,"tga"); break;
-@@ -1432,8 +1569,33 @@
- #ifdef HAVE_TIFF
- case F_TIFF: strcpy(lowsuf,"tif"); break;
- #endif
-+
-+#ifdef HAVE_PNG
-+ case F_PNG: strcpy(lowsuf,"png"); break;
-+#endif
-+
-+#ifdef HAVE_MAG
-+ case F_MAG: strcpy(lowsuf,"mag"); break;
-+#endif
-+
-+#ifdef HAVE_PIC
-+ case F_PIC: strcpy(lowsuf,"pic"); break;
-+#endif
-+
-+#ifdef HAVE_MAKI
-+ case F_MAKI: strcpy(lowsuf,"mki"); break;
-+#endif
-+
-+#ifdef HAVE_PI
-+ case F_PI: strcpy(lowsuf,"pi"); break;
-+#endif
-+
-+#ifdef HAVE_PIC2
-+ case F_PIC2: strcpy(lowsuf,"p2"); break;
-+#endif
- }
-
-+
- if (allcaps) { /* upper-caseify lowsuf */
- for (sp=lowsuf; *sp; sp++)
- *sp = (islower(*sp)) ? toupper(*sp) : *sp;
-@@ -1499,6 +1661,11 @@
- }
- #endif
-
-+#ifdef AUTO_EXPAND
-+ Mkvdir(newpath);
-+ Dirtovd(newpath);
-+#endif
-+
- if (stat(newpath, &st)==0) {
- int isdir;
-
-@@ -1596,7 +1763,11 @@
- dopipe = 0;
-
- /* make sure we're in the correct directory */
-+#ifdef AUTO_EXPAND
-+ if (strlen(path)) Chvdir(path);
-+#else
- if (strlen(path)) chdir(path);
-+#endif
-
- if (ISPIPE(filename[0])) { /* do piping */
- /* make up some bogus temp file to put this in */
-@@ -2002,7 +2173,7 @@
- if (stat(namelist[curname], &origStat)==0) {
- haveStat = 1;
- if (DEBUG) fprintf(stderr," origStat.size=%ld, origStat.mtime=%ld\n",
-- origStat.st_size, origStat.st_mtime);
-+ (long)origStat.st_size, (long)origStat.st_mtime);
- }
- }
- }
-@@ -2027,7 +2198,7 @@
-
- if (stat(namelist[curname], &st)==0) {
- if (DEBUG) fprintf(stderr," st.size=%ld, st.mtime=%ld\n",
-- st.st_size, st.st_mtime);
-+ (long)st.st_size, (long)st.st_mtime);
-
- if ((st.st_size == origStat.st_size) &&
- (st.st_mtime == origStat.st_mtime)) return 0; /* no change */
-@@ -2080,3 +2251,164 @@
- }
-
-
-+#ifdef HAVE_PIC2
-+/**** Stuff for PIC2Dialog box ****/
-+FILE *pic2_OpenOutFile(filename, append)
-+char *filename;
-+int *append;
-+{
-+ /* opens file for output. does various error handling bits. Returns
-+ an open file pointer if success, NULL if failure */
-+
-+ FILE *fp = NULL;
-+ struct stat st;
-+
-+ if (!filename || filename[0] == '\0')
-+ return (NULL);
-+ strcpy(outFName, filename);
-+ dopipe = 0;
-+
-+ /* make sure we're in the correct directory */
-+#ifdef AUTO_EXPAND
-+ if (strlen(path)) Chvdir(path);
-+#else
-+ if (strlen(path)) chdir(path);
-+#endif
-+
-+ if (ISPIPE(filename[0])) { /* do piping */
-+ /* make up some bogus temp file to put this in */
-+#ifndef VMS
-+ sprintf(outFName, "%s/xvXXXXXX", tmpdir);
-+#else
-+ strcpy(outFName, "[]xvXXXXXX.lis");
-+#endif
-+#ifdef USE_MKSTEMP
-+ fp = fdopen(mkstemp(outFName), "w");
-+#else
-+ mktemp(outFName);
-+#endif
-+ dopipe = 1;
-+ }
-+
-+
-+ /* see if file exists (i.e., we're overwriting) */
-+ *append = 0;
-+#ifdef USE_MKSTEMP
-+ if (!dopipe)
-+#endif
-+ if (stat(outFName, &st)==0) { /* stat succeeded, file must exist */
-+ if (ReadFileType(outFName) != RFT_PIC2) {
-+ static char *foo[] = { "\nOk", "\033Cancel" };
-+ char str[512];
-+
-+ sprintf(str,"Overwrite existing file '%s'?", outFName);
-+ if (PopUp(str, foo, 2))
-+ return (NULL);
-+ } else {
-+ static char *foo[] = { "\nOk", "\033Cancel" };
-+ char str[512];
-+
-+ sprintf(str,"Append to existing file '%s'?", outFName);
-+ if (PopUp(str, foo, 2)) {
-+ sprintf(str,"Overwrite existing file '%s'?", outFName);
-+ if (PopUp(str, foo, 2))
-+ return (NULL);
-+ } else
-+ *append = 1;
-+ }
-+ }
-+
-+ /* Open file */
-+#ifdef USE_MKSTEMP
-+ if (!dopipe)
-+#endif
-+ fp = *append ? fopen(outFName, "r+") : fopen(outFName, "w");
-+ if (!fp) {
-+ char str[512];
-+ sprintf(str,"Can't write file '%s'\n\n %s.",outFName, ERRSTR(errno));
-+ ErrPopUp(str, "\nBummer");
-+ return (NULL);
-+ }
-+
-+ return (fp);
-+}
-+
-+
-+/***************************************/
-+void pic2_KillNullFile(fp)
-+FILE *fp;
-+{
-+ fseek(fp, (size_t) 0, SEEK_END);
-+ if (ftell(fp) > 0) {
-+ fclose(fp);
-+ return;
-+ } else {
-+ fclose(fp);
-+ unlink(outFName);
-+ return;
-+ }
-+}
-+#endif /* HAVE_PIC2 */
-+
-+
-+#ifdef HAVE_MGCSFX
-+/**** Stuff for MGCSFX Dialog box ****/
-+/***************************************/
-+int OpenOutFileDesc(filename)
-+ char *filename;
-+{
-+ /* opens file for output. does various error handling bits. Returns
-+ an open file pointer if success, NULL if failure */
-+
-+ int fd;
-+ struct stat st;
-+
-+ if (!filename || filename[0] == '\0') return -1;
-+ strcpy(outFName, filename);
-+ dopipe = 0;
-+
-+ /* make sure we're in the correct directory */
-+#ifdef AUTO_EXPAND
-+ if (strlen(path)) Chvdir(path);
-+#else
-+ if (strlen(path)) chdir(path);
-+#endif
-+
-+ if (ISPIPE(filename[0])) { /* do piping */
-+ /* make up some bogus temp file to put this in */
-+#ifndef VMS
-+ sprintf(outFName, "%s/xvXXXXXX", tmpdir);
-+#else
-+ strcpy(outFName, "[]xvXXXXXX.lis");
-+#endif
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(outFName));
-+#else
-+ mktemp(outFName);
-+#endif
-+ dopipe = 1;
-+ }
-+
-+
-+ /* if didn't just create it, see if file exists (i.e., we're overwriting) */
-+ if (!dopipe && stat(outFName, &st)==0) { /* stat succeeded, file exists */
-+ static char *foo[] = { "\nOk", "\033Cancel" };
-+ char str[512];
-+
-+ sprintf(str,"Overwrite existing file '%s'?", outFName);
-+ if (PopUp(str, foo, 2)) return -1;
-+ }
-+
-+
-+ /* Open file */
-+ fd = open(outFName, O_WRONLY | O_CREAT | O_TRUNC, (0644));
-+ if (fd < 0) {
-+ char str[512];
-+ sprintf(str,"Can't write file '%s'\n\n %s.", outFName, ERRSTR(errno));
-+ ErrPopUp(str, "\nBummer");
-+ return -1;
-+ }
-+
-+ return fd;
-+}
-+#endif /* HAVE_MGCSFX */
-diff -ruN xv-3.10a-bugfixes/xvevent.c xv-3.10a-enhancements/xvevent.c
---- xv-3.10a-bugfixes/xvevent.c 2004-05-16 18:02:03.000000000 -0700
-+++ xv-3.10a-enhancements/xvevent.c 2005-05-01 09:33:38.000000000 -0700
-@@ -64,6 +64,8 @@
-
- static void annotatePic PARM((void));
-
-+static int debkludge_offx;
-+static int debkludge_offy;
-
- /****************/
- int EventLoop()
-@@ -71,13 +73,25 @@
- {
- XEvent event;
- int retval,done,waiting;
-- time_t orgtime, curtime;
-+#ifdef USE_TICKS
-+ clock_t waitsec_ticks=0L, orgtime_ticks=0L, curtime_ticks;
-+ clock_t elapsed_ticks=0L, remaining_interval;
-+#else
-+ time_t orgtime=0L, curtime;
-+#endif
-
-
- #ifndef NOSIGNAL
- signal(SIGQUIT, onInterrupt);
- #endif
-
-+ if (startGrab == 1) {
-+ startGrab = 2;
-+ FakeButtonPress(&but[BGRAB]);
-+ FakeKeyPress(ctrlW, XK_Return);
-+ return(1);
-+ }
-+
- /* note: there's no special event handling if we're using the root window.
- if we're using the root window, we will recieve NO events for mainW */
-
-@@ -100,18 +114,24 @@
-
- while (!done) {
-
-- if (waitsec > -1 && canstartwait && !waiting && XPending(theDisp)==0) {
-+ if (waitsec >= 0.0 && canstartwait && !waiting && XPending(theDisp)==0) {
- /* we wanna wait, we can wait, we haven't started waiting yet, and
- all pending events (ie, drawing the image the first time)
- have been dealt with: START WAITING */
-- time((time_t *) &orgtime);
-+#ifdef USE_TICKS
-+ waitsec_ticks = (clock_t)(waitsec * CLK_TCK);
-+ orgtime_ticks = times(NULL); /* unclear if NULL valid, but OK on Linux */
-+#else
-+ orgtime = time(NULL);
-+#endif
- waiting = 1;
- }
-
-
- /* if there's an XEvent pending *or* we're not doing anything
- in real-time (polling, flashing the selection, etc.) get next event */
-- if ((waitsec==-1 && !polling && !HaveSelection()) || XPending(theDisp)>0) {
-+ if ((waitsec<0.0 && !polling && !HaveSelection()) || XPending(theDisp)>0)
-+ {
- XNextEvent(theDisp, &event);
- retval = HandleEvent(&event,&done);
- }
-@@ -121,7 +141,7 @@
- DrawSelection(0);
- DrawSelection(1);
- XFlush(theDisp);
-- Timer(200);
-+ Timer(200); /* milliseconds */
- }
-
- if (polling) {
-@@ -129,13 +149,32 @@
- else if (!XPending(theDisp)) sleep(1);
- }
-
-- if (waitsec>-1 && waiting) {
-- time((time_t *) &curtime);
-- if (curtime - orgtime < waitsec) sleep(1);
-- else {
-- if (waitloop) return NEXTLOOP;
-- else return NEXTQUIT;
-- }
-+ if (waitsec>=0.0 && waiting) {
-+#ifdef USE_TICKS
-+ curtime_ticks = times(NULL); /* value in ticks */
-+ if (curtime_ticks < orgtime_ticks) {
-+ /* clock ticks rolled over: need to correct for that (i.e.,
-+ * curtime_ticks is presumably quite small, while orgtime_ticks
-+ * should be close to LONG_MAX, so do math accordingly--any way
-+ * to check whether clock_t is *not* a signed long?) */
-+ elapsed_ticks = curtime_ticks + (LONG_MAX - orgtime_ticks);
-+ } else
-+ elapsed_ticks = curtime_ticks - orgtime_ticks;
-+ remaining_interval = waitsec_ticks - elapsed_ticks;
-+ if (remaining_interval >= (clock_t)(1 * CLK_TCK))
-+ sleep(1);
-+ else {
-+ /* less than one second remaining: do delay in msec, then return */
-+ Timer((remaining_interval * 1000L) / CLK_TCK); /* can't overflow */
-+ return waitloop? NEXTLOOP : NEXTQUIT;
-+ }
-+#else
-+ curtime = time(NULL); /* value in seconds */
-+ if (curtime - orgtime < (time_t)waitsec)
-+ sleep(1);
-+ else
-+ return waitloop? NEXTLOOP : NEXTQUIT;
-+#endif
- }
- }
- } /* while (!done) */
-@@ -154,7 +193,24 @@
- int *donep;
- {
- static int wasInfoUp=0, wasCtrlUp=0, wasDirUp=0, wasGamUp=0, wasPsUp=0;
-- static int wasJpegUp=0, wasTiffUp=0;
-+#ifdef HAVE_JPEG
-+ static int wasJpegUp=0;
-+#endif
-+#ifdef HAVE_TIFF
-+ static int wasTiffUp=0;
-+#endif
-+#ifdef HAVE_PNG
-+ static int wasPngUp=0;
-+#endif
-+#ifdef HAVE_PCD
-+ static int wasPcdUp=0;
-+#endif
-+#ifdef HAVE_PIC2
-+ static int wasPic2Up=0;
-+#endif
-+#ifdef HAVE_MGCSFX
-+ static int wasMgcSfxUp=0;
-+#endif
-
- static int mainWKludge=0; /* force first mainW expose after a mainW config
- to redraw all of mainW */
-@@ -233,6 +289,28 @@
- if (TIFFCheckEvent(event)) break; /* event has been processed */
- #endif
-
-+#ifdef HAVE_PNG
-+ if (PNGCheckEvent (event)) break; /* event has been processed */
-+#endif
-+
-+ if (PCDCheckEvent(event)) break; /* event has been processed */
-+
-+#ifdef HAVE_PIC2
-+ if (PIC2CheckEvent(event)) break; /* event has been processed */
-+#endif
-+
-+#ifdef HAVE_PCD
-+ if (PCDCheckEvent (event)) break; /* event has been processed */
-+#endif
-+
-+#ifdef HAVE_MGCSFX
-+ if (MGCSFXCheckEvent(event)) break; /* event has been processed */
-+#endif
-+
-+#ifdef TV_MULTILINGUAL
-+ if (CharsetCheckEvent(event)) break; /* event has been processed */
-+#endif
-+
- if (GamCheckEvent (event)) break; /* event has been processed */
- if (BrowseCheckEvent (event, &retval, &done)) break; /* event eaten */
- if (TextCheckEvent (event, &retval, &done)) break; /* event eaten */
-@@ -344,6 +422,9 @@
-
- if (BrowseDelWin(client_event->window)) break;
- if (TextDelWin(client_event->window)) break;
-+#ifdef TV_MULTILINGUAL
-+ if (CharsetDelWin(client_event->window)) break;
-+#endif
-
- if (client_event->window == infoW) InfoBox(0);
- else if (client_event->window == gamW) GamBox(0);
-@@ -359,6 +440,24 @@
- else if (client_event->window == tiffW) TIFFDialog(0);
- #endif
-
-+#ifdef HAVE_PNG
-+ else if (client_event->window == pngW) PNGDialog(0);
-+#endif
-+
-+ else if (client_event->window == pcdW) PCDDialog(0);
-+
-+#ifdef HAVE_PIC2
-+ else if (client_event->window == pic2W) PIC2Dialog(0);
-+#endif
-+
-+#ifdef HAVE_PCD
-+ else if (client_event->window == pcdW) PCDDialog(0);
-+#endif
-+
-+#ifdef HAVE_MGCSFX
-+ else if (client_event->window == mgcsfxW) MGCSFXDialog(0);
-+#endif
-+
- else if (client_event->window == mainW) Quit(0);
- }
- }
-@@ -534,10 +633,21 @@
- #ifdef HAVE_JPEG
- if (wasJpegUp) { JPEGDialog(wasJpegUp); wasJpegUp=0; }
- #endif
--
- #ifdef HAVE_TIFF
- if (wasTiffUp) { TIFFDialog(wasTiffUp); wasTiffUp=0; }
- #endif
-+#ifdef HAVE_PNG
-+ if (wasPngUp) { PNGDialog(wasJpegUp); wasPngUp=0; }
-+#endif
-+#ifdef HAVE_PCD
-+ if (wasPcdUp) { PCDDialog(wasPcdUp); wasPcdUp=0; }
-+#endif
-+#ifdef HAVE_PIC2
-+ if (wasPic2Up) { PIC2Dialog(wasPic2Up); wasPic2Up=0; }
-+#endif
-+#ifdef HAVE_MGCSFX
-+ if (wasMgcSfxUp) { MGCSFXDialog(wasMgcSfxUp); wasMgcSfxUp=0; }
-+#endif
- }
- }
- }
-@@ -572,10 +682,21 @@
- #ifdef HAVE_JPEG
- if (jpegUp) { wasJpegUp = jpegUp; JPEGDialog(0); }
- #endif
--
- #ifdef HAVE_TIFF
- if (tiffUp) { wasTiffUp = tiffUp; TIFFDialog(0); }
- #endif
-+#ifdef HAVE_PNG
-+ if (pngUp) { wasPngUp = pngUp; PNGDialog(0); }
-+#endif
-+#ifdef HAVE_PCD
-+ if (pcdUp) { wasPcdUp = pcdUp; PCDDialog(0); }
-+#endif
-+#ifdef HAVE_PIC2
-+ if (pic2Up) { wasPic2Up = pic2Up; PIC2Dialog(0); }
-+#endif
-+#ifdef HAVE_MGCSFX
-+ if (mgcsfxUp) { wasMgcSfxUp = mgcsfxUp; MGCSFXDialog(0); }
-+#endif
- }
- }
- }
-@@ -641,6 +762,30 @@
- p_offy = xwa.y;
- }
-
-+ /* Gather info to keep right border inside */
-+ {
-+ Window current;
-+ Window root_r;
-+ Window parent_r;
-+ Window *children_r;
-+ int nchildren_r;
-+ XWindowAttributes xwa;
-+
-+ parent_r=mainW;
-+ current=mainW;
-+ do {
-+ current=parent_r;
-+ XQueryTree(theDisp, current, &root_r, &parent_r,
-+ &children_r, &nchildren_r);
-+ if (children_r!=NULL) {
-+ XFree(children_r);
-+ }
-+ } while(parent_r!=root_r);
-+ XGetWindowAttributes(theDisp, current, &xwa);
-+ debkludge_offx=eWIDE-xwa.width+p_offx;
-+ debkludge_offy=eHIGH-xwa.height+p_offy;
-+ }
-+
-
- /* move window around a bit... */
- {
-@@ -997,7 +1142,8 @@
-
- int i;
- char txt[512], str[PRINTCMDLEN + 10];
-- static char *labels[] = { " Color", " Grayscale", " B/W", "\033Cancel" };
-+ static char *labels[] = { "\03Color", "\07Grayscale", " B/W", "\033Cancel" };
-+ /* ^B ("\02") already used for moving cursor back */
-
- strcpy(txt, "Print: Enter a command that will read a PostScript file ");
- strcat(txt, "from stdin and print it to the desired printer.\n\n");
-@@ -1147,6 +1293,26 @@
- if (TIFFCheckEvent(event)) break;
- #endif
-
-+#ifdef HAVE_PNG
-+ if (PNGCheckEvent (event)) break;
-+#endif
-+
-+#ifdef HAVE_PCD
-+ if (PCDCheckEvent (event)) break; /* event has been processed */
-+#endif
-+
-+#ifdef HAVE_PIC2
-+ if (PIC2CheckEvent(event)) break;
-+#endif
-+
-+#ifdef HAVE_MGCSFX
-+ if (MGCSFXCheckEvent(event)) break;
-+#endif
-+
-+#ifdef TV_MULTILINGUAL
-+ if (CharsetCheckEvent(event)) break;
-+#endif
-+
- if (GamCheckEvent (event)) break;
- if (BrowseCheckEvent (event, &retval, &done)) break;
- if (TextCheckEvent (event, &retval, &done)) break;
-@@ -1276,6 +1442,48 @@
- else if (shift) BlurPaint();
- break;
-
-+ case Button4: /* note min vs. max, + vs. - */
-+ if (win == ctrlW || win == nList.win || win == nList.scrl.win) {
-+ SCRL *sp=&nList.scrl;
-+ int halfpage=sp->page/2;
-+
-+ if (sp->val > sp->min+halfpage)
-+ SCSetVal(sp,sp->val-halfpage);
-+ else
-+ SCSetVal(sp,sp->min);
-+ }
-+ else if (win == dirW || win == dList.win || win == dList.scrl.win) {
-+ SCRL *sp=&dList.scrl;
-+ int halfpage=sp->page/2;
-+
-+ if (sp->val > sp->min+halfpage)
-+ SCSetVal(sp,sp->val-halfpage);
-+ else
-+ SCSetVal(sp,sp->min);
-+ }
-+ break;
-+
-+ case Button5: /* note max vs. min, - vs. + */
-+ if (win == ctrlW || win == nList.win || win == nList.scrl.win) {
-+ SCRL *sp=&nList.scrl;
-+ int halfpage=sp->page/2;
-+
-+ if (sp->val < sp->max-halfpage)
-+ SCSetVal(sp,sp->val+halfpage);
-+ else
-+ SCSetVal(sp,sp->max);
-+ }
-+ else if (win == dirW || win == dList.win || win == dList.scrl.win) {
-+ SCRL *sp=&dList.scrl;
-+ int halfpage=sp->page/2;
-+
-+ if (sp->val < sp->max-halfpage)
-+ SCSetVal(sp,sp->val+halfpage);
-+ else
-+ SCSetVal(sp,sp->max);
-+ }
-+ break;
-+
- default: break;
- }
- }
-@@ -1364,16 +1572,35 @@
- if (TIFFCheckEvent(event)) break;
- #endif
-
-+#ifdef HAVE_PNG
-+ if (PNGCheckEvent (event)) break;
-+#endif
-+
-+ if (PCDCheckEvent (event)) break;
-+
-+#ifdef HAVE_PIC2
-+ if (PIC2CheckEvent(event)) break;
-+#endif
-+
-+#ifdef HAVE_PCD
-+ if (PCDCheckEvent (event)) break;
-+#endif
-+
-+#ifdef HAVE_MGCSFX
-+ if (MGCSFXCheckEvent(event)) break;
-+#endif
-+
- if (GamCheckEvent (event)) break;
- if (BrowseCheckEvent (event, &retval, &done)) break;
- if (TextCheckEvent (event, &retval, &done)) break;
-
-
-- /* check for pageup/pagedown, 'p' in main window
-- (you can use shift-up or shift-down if no crop rectangle drawn)
-- (for viewing multipage docs) */
-+ /* Support for multi-image files ("multipage docs"). Check for PgUp/PgDn
-+ or 'p' in any window but control or directory; PgUp/PgDn are already
-+ used to page through the file list in those windows. If no cropping
-+ rectangle is active, shift-Up and shift-Down also work. */
-
-- if (key_event->window == mainW) {
-+ if (key_event->window != ctrlW && key_event->window != dirW) {
- dealt = 1;
-
- ck = CursorKey(ks, shift, 0);
-@@ -1578,13 +1805,13 @@
- }
- break;
-
-- case '\010':
-- case '\177': FakeButtonPress(&but[BPREV]); break;
-+ case '\010': FakeButtonPress(&but[BPREV]); break;
-
-
- case '\014': FakeButtonPress(&but[BLOAD]); break; /* ^L */
- case '\023': FakeButtonPress(&but[BSAVE]); break; /* ^S */
- case '\020': FakeButtonPress(&but[BPRINT]); break; /* ^P */
-+ case '\177':
- case '\004': FakeButtonPress(&but[BDELETE]); break; /* ^D */
-
- /* BCOPY, BCUT, BPASTE, BCLEAR handled in 'meta' case */
-@@ -2025,6 +2252,16 @@
- if (xwa->width < dispWIDE && xwc.x < p_offx) xwc.x = p_offx;
- if (xwa->height < dispHIGH && xwc.y < p_offy) xwc.y = p_offy;
-
-+ /* Try to keep bottom right decorations inside */
-+ if (xwc.x+eWIDE-debkludge_offx>dispWIDE) {
-+ xwc.x=dispWIDE-eWIDE+debkludge_offx;
-+ if (xwc.x<0) xwc.x=0;
-+ }
-+ if (xwc.y+eHIGH-debkludge_offy>dispHIGH) {
-+ xwc.y=dispHIGH-eHIGH+debkludge_offy;
-+ if (xwc.y<0) xwc.y=0;
-+ }
-+
- xwc.width = xwa->width;
- xwc.height = xwa->height;
-
-@@ -2370,6 +2607,24 @@
- if (tiffUp) TIFFDialog(0); /* close tiff window */
- #endif
-
-+#ifdef HAVE_PNG
-+ if (pngUp) PNGDialog(0); /* close png window */
-+#endif
-+
-+ if (pcdUp) PCDDialog(0); /* close pcd window */
-+
-+#ifdef HAVE_PIC2
-+ if (pic2Up) PIC2Dialog(0); /* close pic2 window */
-+#endif
-+
-+#ifdef HAVE_PCD
-+ if (pcdUp) PCDDialog(0); /* close pcd window */
-+#endif
-+
-+#ifdef HAVE_MGCSFX
-+ if (mgcsfxUp) MGCSFXDialog(0); /* close mgcsfx window */
-+#endif
-+
- ClosePopUp();
-
- /* make the interrupt signal look like a '\n' keypress in ctrlW */
-@@ -2574,26 +2829,43 @@
- static void paintLine(x,y,x1,y1)
- int x,y,x1,y1;
- {
-- int dx,dy,i,lx,ly,adx,ady;
-+ int t,dx,dy,d,dd;
-
-- dx = x1-x; dy = y1-y;
-- adx = abs(dx); ady = abs(dy);
-+ dx = abs(x1-x); dy = abs(y1-y);
-
-- if (dx == 0 && dy == 0) paintPixel(x,y);
--
-- else if (adx > ady) { /* X is major axis */
-- for (i=0; i<=adx; i++) {
-- lx = x + (i * dx + (adx/2)) / abs(dx);
-- ly = y + (i * dy + (adx/2)) / abs(dx);
-- paintPixel(lx,ly);
-+ if (dx >= dy) { /* X is major axis */
-+ if (x > x1) {
-+ t = x; x = x1; x1 = t;
-+ t = y; y = y1; y1 = t;
-+ }
-+ d = dy + dy - dx;
-+ dd = y < y1 ? 1 : -1;
-+ while (x <= x1) {
-+ paintPixel(x,y);
-+ if (d > 0) {
-+ y += dd;
-+ d -= dx + dx;
-+ }
-+ ++x;
-+ d += dy + dy;
- }
- }
-
- else { /* Y is major axis */
-- for (i=0; i<=ady; i++) {
-- lx = x + (i * dx + (ady/2)) / ady;
-- ly = y + (i * dy + (ady/2)) / ady;
-- paintPixel(lx,ly);
-+ if (y > y1) {
-+ t = x; x = x1; x1 = t;
-+ t = y; y = y1; y1 = t;
-+ }
-+ d = dx + dx - dy;
-+ dd = x < x1 ? 1 : -1;
-+ while (y <= y1) {
-+ paintPixel(x,y);
-+ if (d > 0) {
-+ x += dd;
-+ d -= dy + dy;
-+ }
-+ ++y;
-+ d += dx + dx;
- }
- }
-
-diff -ruN xv-3.10a-bugfixes/xvfits.c xv-3.10a-enhancements/xvfits.c
---- xv-3.10a-bugfixes/xvfits.c 2005-04-02 21:08:45.000000000 -0800
-+++ xv-3.10a-enhancements/xvfits.c 2005-04-17 14:45:28.000000000 -0700
-@@ -14,7 +14,7 @@
- * provided "as is" without express or implied warranty.
- */
-
--
-+#define NEEDSDIR /* for S_IRUSR|S_IWUSR */
- #include "xv.h"
-
- #define NCARDS (36)
-@@ -228,7 +228,7 @@
- * If there was a problem writing files, then a error message will be set.
- */
-
-- int i, npixels=nx * ny, nwrt;
-+ int i, npixels=nx * ny, nwrt, tmpfd;
- FILE *fp;
- char *error;
- char filename[70];
-@@ -254,7 +254,12 @@
-
- for (i=0; i < nz && !error; i++) {
- sprintf(filename, "%s%d", basename, i+1);
-- fp = xv_fopen(filename, "w");
-+ tmpfd = open(filename,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
-+ if (tmpfd < 0) {
-+ error = "Unable to open temporary file";
-+ break;
-+ }
-+ fp = fdopen(tmpfd, "w");
- if (!fp) {
- error = "Unable to open temporary file";
- break;
-@@ -262,13 +267,17 @@
-
- if (wrheader(fp, nx, ny, comment)) {
- error = "I/O error writing temporary file";
-+ fflush(fp);
- fclose(fp);
- unlink(filename);
-+ close(tmpfd);
- break;
- }
-
- nwrt = fwrite(image+i*npixels, sizeof(byte), (size_t) npixels, fp);
-+ fflush(fp);
- fclose(fp);
-+ close(tmpfd);
-
- if (nwrt == 0) { /* failed to write any data */
- error = "I/O error writing temporary file";
-diff -ruN xv-3.10a-bugfixes/xvgam.c xv-3.10a-enhancements/xvgam.c
---- xv-3.10a-bugfixes/xvgam.c 2004-05-16 18:02:11.000000000 -0700
-+++ xv-3.10a-enhancements/xvgam.c 2004-05-16 18:06:48.000000000 -0700
-@@ -265,11 +265,11 @@
- BTCreate(&gbut[G_BRNDCOL], cmapF, 5 + 66 + 67 + 2, 189, 66, BUTTH,
- "Random", infofg, infobg, hicol, locol);
-
-- DCreate(&rhDial, cmapF, 5, 215, 66, 100, 0,360,180, 5,
-+ DCreate(&rhDial, cmapF, 5, 215, 66, 100, 0.0, 360.0, 180.0, 1.0, 5.0,
- infofg, infobg, hicol, locol, "Hue", NULL);
-- DCreate(&gsDial, cmapF, 72, 215, 66, 100, 0,360,180, 5,
-+ DCreate(&gsDial, cmapF, 72, 215, 66, 100, 0.0, 360.0, 180.0, 1.0, 5.0,
- infofg, infobg, hicol, locol, "Sat.", NULL);
-- DCreate(&bvDial, cmapF, 139, 215, 66, 100, 0,360,180, 5,
-+ DCreate(&bvDial, cmapF, 139, 215, 66, 100, 0.0, 360.0, 180.0, 1.0, 5.0,
- infofg, infobg, hicol, locol, "Value", NULL);
-
- rhDial.drawobj = gsDial.drawobj = bvDial.drawobj = dragEditColor;
-@@ -359,7 +359,7 @@
-
- srcHD.drawobj = dstHD.drawobj = whtHD.drawobj = dragHueDial;
-
-- DCreate(&satDial, hsvF, 100, 199, 100, 121, -100, 100, 0, 5,
-+ DCreate(&satDial, hsvF, 100, 199, 100, 121, -100.0, 100.0, 0.0, 1.0, 5.0,
- infofg, infobg,hicol,locol, "Saturation", "%");
-
- hueRB = RBCreate(NULL, hsvF, 7, 153, "1",
-@@ -722,7 +722,7 @@
-
- if (whtHD.enabCB.val && whtHD.satval) hsvnonlinear++;
-
-- if (satDial.val != 0) hsvnonlinear++;
-+ if (satDial.val != 0.0) hsvnonlinear++;
-
- /* check intensity graf */
- for (i=0; i<256 && intGraf.func[i]==i; i++);
-@@ -1291,14 +1291,14 @@
- rgb2hsv(rcmap[editColor], gcmap[editColor], bcmap[editColor], &h, &s, &v);
- if (h<0) h = 0;
-
-- DSetVal(&rhDial, (int) h);
-- DSetVal(&gsDial, (int) (s*100));
-- DSetVal(&bvDial, (int) (v*100));
-+ DSetVal(&rhDial, h);
-+ DSetVal(&gsDial, s*100);
-+ DSetVal(&bvDial, v*100);
- }
- else {
-- DSetVal(&rhDial, rcmap[editColor]);
-- DSetVal(&gsDial, gcmap[editColor]);
-- DSetVal(&bvDial, bcmap[editColor]);
-+ DSetVal(&rhDial, (double)rcmap[editColor]);
-+ DSetVal(&gsDial, (double)gcmap[editColor]);
-+ DSetVal(&bvDial, (double)bcmap[editColor]);
- }
- }
-
-@@ -1310,16 +1310,15 @@
-
- if (hsvmode) {
- int rv, gv, bv;
-- hsv2rgb((double) rhDial.val, ((double) gsDial.val) / 100.0,
-- ((double) bvDial.val) / 100.0, &rv, &gv, &bv);
-+ hsv2rgb(rhDial.val, gsDial.val / 100.0, bvDial.val / 100.0, &rv, &gv, &bv);
- rcmap[editColor] = rv;
- gcmap[editColor] = gv;
- bcmap[editColor] = bv;
- }
- else {
-- rcmap[editColor] = rhDial.val;
-- gcmap[editColor] = gsDial.val;
-- bcmap[editColor] = bvDial.val;
-+ rcmap[editColor] = (int)rhDial.val;
-+ gcmap[editColor] = (int)gsDial.val;
-+ bcmap[editColor] = (int)bvDial.val;
- }
- }
-
-@@ -1561,9 +1560,9 @@
- gsDial.title = "Green";
- bvDial.title = "Blue";
-
-- DSetRange(&rhDial, 0, 255, rcmap[editColor], 16);
-- DSetRange(&gsDial, 0, 255, gcmap[editColor], 16);
-- DSetRange(&bvDial, 0, 255, bcmap[editColor], 16);
-+ DSetRange(&rhDial, 0.0, 255.0, (double)rcmap[editColor], 1.0, 16.0);
-+ DSetRange(&gsDial, 0.0, 255.0, (double)gcmap[editColor], 1.0, 16.0);
-+ DSetRange(&bvDial, 0.0, 255.0, (double)bcmap[editColor], 1.0, 16.0);
-
- XClearWindow(theDisp, rhDial.win); DRedraw(&rhDial);
- XClearWindow(theDisp, gsDial.win); DRedraw(&gsDial);
-@@ -1581,9 +1580,9 @@
- &h, &s, &v);
-
- if (h<0.0) h = 0.0;
-- DSetRange(&rhDial, 0, 360, (int) h, 5);
-- DSetRange(&gsDial, 0, 100, (int) (s*100), 5);
-- DSetRange(&bvDial, 0, 100, (int) (v*100), 5);
-+ DSetRange(&rhDial, 0.0, 360.0, h, 1.0, 5.0);
-+ DSetRange(&gsDial, 0.0, 100.0, s*100, 1.0, 5.0);
-+ DSetRange(&bvDial, 0.0, 100.0, v*100, 1.0, 5.0);
-
- XClearWindow(theDisp, rhDial.win); DRedraw(&rhDial);
- XClearWindow(theDisp, gsDial.win); DRedraw(&gsDial);
-@@ -1891,7 +1890,7 @@
- }
-
- /* apply satDial value to s */
-- s = s + ((double) satDial.val) / 100.0;
-+ s = s + satDial.val / 100.0;
- if (s<0.0) s = 0.0;
- if (s>1.0) s = 1.0;
-
-@@ -2007,7 +2006,7 @@
-
- gs->hueRBnum = RBWhich(hueRB);
-
-- gs->satval = satDial.val;
-+ gs->satval = (int)satDial.val;
- GetGrafState(&intGraf,&gs->istate);
- GetGrafState(&rGraf, &gs->rstate);
- GetGrafState(&gGraf, &gs->gstate);
-@@ -2064,8 +2063,8 @@
- changed++;
- }
-
-- if (gs->satval != satDial.val) {
-- DSetVal(&satDial,gs->satval);
-+ if (gs->satval != (int)satDial.val) {
-+ DSetVal(&satDial,(double)gs->satval);
- changed++;
- }
-
-@@ -3200,7 +3199,7 @@
-
- if (whtHD.enabCB.val && whtHD.satval) hsvmod++;
-
-- if (satDial.val != 0) hsvmod++;
-+ if (satDial.val != 0.0) hsvmod++;
-
- /* check intensity graf */
- for (i=0; i<256; i++) {
-@@ -3284,7 +3283,7 @@
- }
-
- /* apply satDial value to s */
-- s = s + satDial.val;
-+ s = s + (int)satDial.val;
- if (s< 0) s = 0;
- if (s>100) s = 100;
-
-diff -ruN xv-3.10a-bugfixes/xvgif.c xv-3.10a-enhancements/xvgif.c
---- xv-3.10a-bugfixes/xvgif.c 2005-04-03 11:53:13.000000000 -0700
-+++ xv-3.10a-enhancements/xvgif.c 2005-04-30 21:47:44.000000000 -0700
-@@ -50,6 +50,7 @@
- BytesPerScanline, /* bytes per scanline in output raster */
- ColorMapSize, /* number of colors */
- Background, /* background color */
-+ Transparent, /* transparent color (GRR 19980314) */
- CodeSize, /* Code size, read from GIF header */
- InitCodeSize, /* Starting code size, used during Clear */
- Code, /* Value returned by ReadCode */
-@@ -111,16 +112,20 @@
-
- register byte ch, *origptr;
- register int i, block;
-- int aspect, gotimage;
-+ int aspect;
-+ char tmpname[256];
-+ byte r[256], g[256], b[256];
-
- /* initialize variables */
-- BitOffset = XC = YC = OutCount = gotimage = 0;
-+ BitOffset = XC = YC = OutCount = 0;
- Pass = -1;
- RawGIF = Raster = pic8 = NULL;
- gif89 = 0;
-+ Transparent = -1;
-
- pinfo->pic = (byte *) NULL;
- pinfo->comment = (char *) NULL;
-+ pinfo->numpages= 0;
-
- bname = BaseName(fname);
- fp = xv_fopen(fname,"r");
-@@ -145,7 +150,7 @@
-
- if (fread(dataptr, (size_t) filesize, (size_t) 1, fp) != 1)
- return( gifError(pinfo, "GIF data read failed") );
--
-+ fclose(fp);
-
- origptr = dataptr;
-
-@@ -161,6 +166,7 @@
- RWidth = ch + 0x100 * NEXTBYTE; /* screen dimensions... not used. */
- ch = NEXTBYTE;
- RHeight = ch + 0x100 * NEXTBYTE;
-+ if (DEBUG) fprintf(stderr,"GIF89 logical screen = %d x %d\n",RWidth,RHeight);
-
- ch = NEXTBYTE;
- HasColormap = ((ch & COLORMAPMASK) ? True : False);
-@@ -176,6 +182,8 @@
- if (!gif89) return(gifError(pinfo,"corrupt GIF file (screen descriptor)"));
- else normaspect = (float) (aspect + 15) / 64.0; /* gif89 aspect ratio */
- if (DEBUG) fprintf(stderr,"GIF89 aspect = %f\n", normaspect);
-+ /* FIXME: apparently this _should_ apply to all frames in a multi-image
-+ * GIF (i.e., PgUp/PgDn), but it doesn't */
- }
-
-
-@@ -183,20 +191,23 @@
-
- if (HasColormap)
- for (i=0; i<ColorMapSize; i++) {
-- pinfo->r[i] = NEXTBYTE;
-- pinfo->g[i] = NEXTBYTE;
-- pinfo->b[i] = NEXTBYTE;
-+ r[i] = NEXTBYTE;
-+ g[i] = NEXTBYTE;
-+ b[i] = NEXTBYTE;
- }
- else { /* no colormap in GIF file */
- /* put std EGA palette (repeated 16 times) into colormap, for lack of
- anything better to do */
-
- for (i=0; i<256; i++) {
-- pinfo->r[i] = EGApalette[i&15][0];
-- pinfo->g[i] = EGApalette[i&15][1];
-- pinfo->b[i] = EGApalette[i&15][2];
-+ r[i] = EGApalette[i&15][0];
-+ g[i] = EGApalette[i&15][1];
-+ b[i] = EGApalette[i&15][2];
- }
- }
-+ memcpy(pinfo->r, r, sizeof r);
-+ memcpy(pinfo->g, g, sizeof g);
-+ memcpy(pinfo->b, b, sizeof b);
-
- /* possible things at this point are:
- * an application extension block
-@@ -334,12 +345,28 @@
- if (DEBUG) fprintf(stderr,"Graphic Control extension\n\n");
-
- SetISTR(ISTR_INFO, "%s: %s", bname,
-- "Graphic Control Extension in GIF file. Ignored.");
-+ "Graphic Control Extension ignored.");
-
-- /* read (and ignore) data sub-blocks */
-+ /* read (and ignore) data sub-blocks, unless compositing with
-+ * user-defined background */
- do {
-- j = 0; sbsize = NEXTBYTE;
-- while (j<sbsize) { SKIPBYTE; j++; }
-+ j = 0;
-+ sbsize = NEXTBYTE;
-+ /* GRR 19980314: get transparent index out of block */
-+ if (have_imagebg && sbsize == 4 && Transparent < 0) {
-+ byte packed_fields = NEXTBYTE;
-+
-+ j++;
-+ SKIPBYTE; j++;
-+ SKIPBYTE; j++;
-+ if (packed_fields & 1) {
-+ Transparent = NEXTBYTE;
-+ j++;
-+ }
-+ }
-+ while (j<sbsize) {
-+ SKIPBYTE; j++;
-+ }
- } while (sbsize);
- }
-
-@@ -376,36 +403,42 @@
-
-
- else if (block == IMAGESEP) {
-- if (DEBUG) fprintf(stderr,"imagesep (got=%d) ",gotimage);
-+ if (DEBUG) fprintf(stderr,"imagesep (page=%d) ",pinfo->numpages+1);
- if (DEBUG) fprintf(stderr," at start: offset=0x%x\n",dataptr-RawGIF);
-
-- if (gotimage) { /* just skip over remaining images */
-- int i,misc,ch,ch1;
-+ BitOffset = XC = YC = Pass = OutCount = 0;
-
-- /* skip image header */
-- SKIPBYTE; SKIPBYTE; /* left position */
-- SKIPBYTE; SKIPBYTE; /* top position */
-- SKIPBYTE; SKIPBYTE; /* width */
-- SKIPBYTE; SKIPBYTE; /* height */
-- misc = NEXTBYTE; /* misc. bits */
--
-- if (misc & 0x80) { /* image has local colormap. skip it */
-- for (i=0; i< 1 << ((misc&7)+1); i++) {
-- SKIPBYTE; SKIPBYTE; SKIPBYTE;
-+ if (pinfo->numpages > 0) { /* do multipage stuff */
-+ if (pinfo->numpages == 1) { /* first time only... */
-+ xv_mktemp(pinfo->pagebname, "xvpgXXXXXX");
-+ if (pinfo->pagebname[0] == '\0') {
-+ ErrPopUp("LoadGIF: Unable to create temporary filename???",
-+ "\nHow unlikely!");
-+ return 0;
- }
- }
--
-- SKIPBYTE; /* minimum code size */
--
-- /* skip image data sub-blocks */
-- do {
-- ch = ch1 = NEXTBYTE;
-- while (ch--) SKIPBYTE;
-- if ((dataptr - RawGIF) > filesize) break; /* EOF */
-- } while(ch1);
-+ sprintf(tmpname, "%s%d", pinfo->pagebname, pinfo->numpages);
-+ fp = xv_fopen(tmpname, "w");
-+ if (!fp) {
-+ ErrPopUp("LoadGIF: Unable to open temp file", "\nDang!");
-+ return 0;
-+ }
-+ if (WriteGIF(fp, pinfo->pic, pinfo->type, pinfo->w, pinfo->h, pinfo->r,
-+ pinfo->g, pinfo->b, numcols, pinfo->colType, NULL)) {
-+ fclose(fp);
-+ ErrPopUp("LoadGIF: Error writing temp file", "\nBummer!");
-+ return 0;
-+ }
-+ fclose(fp);
-+ free(pinfo->pic);
-+ pinfo->pic = (byte *) NULL;
-+ if (HasColormap) {
-+ memcpy(pinfo->r, r, sizeof r);
-+ memcpy(pinfo->g, g, sizeof g);
-+ memcpy(pinfo->b, b, sizeof b);
-+ }
- }
--
-- else if (readImage(pinfo)) gotimage = 1;
-+ if (readImage(pinfo)) pinfo->numpages++;
- if (DEBUG) fprintf(stderr," at end: dataptr=0x%x\n",dataptr-RawGIF);
- }
-
-@@ -425,7 +458,7 @@
- sprintf(str, "Unknown block type (0x%02x) at offset 0x%x",
- block, (dataptr - origptr) - 1);
-
-- if (!gotimage) return gifError(pinfo, str);
-+ if (!pinfo->numpages) return gifError(pinfo, str);
- else gifWarning(str);
- }
-
-@@ -438,8 +471,34 @@
- free(RawGIF); RawGIF = NULL;
- free(Raster); Raster = NULL;
-
-- if (!gotimage)
-+ if (!pinfo->numpages)
- return( gifError(pinfo, "no image data found in GIF file") );
-+ if (pinfo->numpages > 1) {
-+ /* write the last page temp file */
-+ int numpages = pinfo->numpages;
-+ char *comment = pinfo->comment;
-+ sprintf(tmpname, "%s%d", pinfo->pagebname, pinfo->numpages);
-+ fp = xv_fopen(tmpname, "w");
-+ if (!fp) {
-+ ErrPopUp("LoadGIF: Unable to open temp file", "\nDang!");
-+ return 0;
-+ }
-+ if (WriteGIF(fp, pinfo->pic, pinfo->type, pinfo->w, pinfo->h, pinfo->r,
-+ pinfo->g, pinfo->b, numcols, pinfo->colType, NULL)) {
-+ fclose(fp);
-+ ErrPopUp("LoadGIF: Error writing temp file", "\nBummer!");
-+ return 0;
-+ }
-+ fclose(fp);
-+ free(pinfo->pic);
-+ pinfo->pic = (byte *) NULL;
-+
-+ /* load the first page temp file */
-+ sprintf(tmpname, "%s%d", pinfo->pagebname, 1);
-+ i = LoadGIF(tmpname, pinfo);
-+ pinfo->numpages = numpages;
-+ pinfo->comment = comment;
-+ }
-
- return 1;
- }
-@@ -484,6 +543,17 @@
- }
-
-
-+ /* GRR 19980314 */
-+ /* need not worry about size of EGA palette: full 256 colors */
-+ if (have_imagebg && Transparent >= 0 &&
-+ Transparent < ((Misc&0x80)? (1 << ((Misc&7)+1)) : ColorMapSize) )
-+ {
-+ pinfo->r[Transparent] = (imagebgR >> 8);
-+ pinfo->g[Transparent] = (imagebgG >> 8);
-+ pinfo->b[Transparent] = (imagebgB >> 8);
-+ }
-+
-+
-
- /* Start reading the raster data. First we get the intial code size
- * and compute decompressor constant values, based on this code size.
-@@ -540,7 +610,7 @@
- return( gifError(pinfo, "image dimensions out of range") );
- picptr = pic8 = (byte *) malloc((size_t) maxpixels);
- if (!pic8) FatalError("LoadGIF: couldn't malloc 'pic8'");
--
-+
-
-
- /* Decompress the file, continuing until you see the GIF EOF code.
-@@ -642,11 +712,10 @@
- SetISTR(ISTR_WARNING,"%s: %s", bname,
- "This GIF file seems to be truncated. Winging it.");
- if (!Interlace) /* clear->EOBuffer */
-- xvbzero((char *) pic8+npixels, (size_t) (maxpixels-npixels));
-+ xvbzero((char *) pic8+npixels,
-+ (size_t) (maxpixels-npixels<0 ? 0 : maxpixels-npixels));
- }
-
-- fclose(fp);
--
- /* fill in the PICINFO structure */
-
- pinfo->pic = pic8;
-diff -ruN xv-3.10a-bugfixes/xvgrab.c xv-3.10a-enhancements/xvgrab.c
---- xv-3.10a-bugfixes/xvgrab.c 2004-05-16 18:03:30.000000000 -0700
-+++ xv-3.10a-enhancements/xvgrab.c 2005-04-25 23:39:32.000000000 -0700
-@@ -14,6 +14,13 @@
- #define NEEDSTIME
- #include "xv.h"
-
-+/* Allow flexibility in use of buttons JPD */
-+#define WINDOWGRABMASK Button1Mask /* JPD prefers Button2Mask */
-+#define RECTGTRACKMASK Button2Mask /* JPD prefers Button1Mask*/
-+#define CANCELGRABMASK Button3Mask
-+
-+#define DO_GRABFLASH /* JPD prefers not to do that; just a loss of time ... */
-+
-
- union swapun {
- CARD32 l;
-@@ -69,12 +76,15 @@
- 0 if cancelled */
-
- int i, x, y, x1, y1, x2, y2, ix, iy, iw, ih, rv;
-- int rx, ry, pretendGotB1, autograb;
-+ int rx, ry, GotButton, autograb;
-+ int cancelled = 0;
- Window rW, cW, clickWin;
- unsigned int mask;
-+#ifdef RECOLOR_GRAB_CURSOR
- XColor fc, bc;
-+#endif
-
-- pretendGotB1 = 0;
-+ GotButton = 0;
-
- if (grabInProgress) return 0; /* avoid recursive grabs during delay */
-
-@@ -122,15 +132,23 @@
- free(grabPic); grabPic = (byte *) NULL;
- }
-
--
-+ /* recolor cursor to indicate that grabbing is active? */
-+ /* Instead, change cursor JPD */
-+#ifdef RECOLOR_GRAB_CURSOR
- fc.flags = bc.flags = DoRed | DoGreen | DoBlue;
- fc.red = fc.green = fc.blue = 0xffff;
- bc.red = bc.green = bc.blue = 0x0000;
- XRecolorCursor(theDisp, tcross, &fc, &bc);
-+#endif
-
-
- XBell(theDisp, 0); /* beep once at start of grab */
-
-+ /* Change cursor to top_left_corner JPD */
-+ XGrabPointer(theDisp, rootW, False,
-+ PointerMotionMask|ButtonPressMask|ButtonReleaseMask,
-+ GrabModeAsync, GrabModeAsync, None, tlcorner, CurrentTime);
-+
- if (!autograb) XGrabButton(theDisp, (u_int) AnyButton, 0, rootW, False, 0,
- GrabModeAsync, GrabModeSync, None, tcross);
-
-@@ -142,7 +160,7 @@
- rv = 0;
- goto exit;
- }
-- else { pretendGotB1 = 1; mask = Button1Mask; }
-+ else { GotButton = 1; mask = WINDOWGRABMASK; }
- }
-
- else { /* !autograb */
-@@ -170,16 +188,20 @@
- }
- }
-
-+ XUngrabPointer(theDisp, CurrentTime);
-+ /* Reset cursor to XC_tcross JPD */
-+ XGrabPointer(theDisp, rootW, False,
-+ PointerMotionMask|ButtonPressMask|ButtonReleaseMask,
-+ GrabModeAsync, GrabModeAsync, None, tcross, CurrentTime);
-
- /***
- *** got button click (or pretending we did, if autograb)
- ***/
-
--
-- if (mask & Button3Mask || rW!=rootW) { /* Button3: CANCEL GRAB */
-+ if (mask & CANCELGRABMASK || rW!=rootW) { /* CANCEL GRAB */
- while (1) { /* wait for button to be released */
- if (XQueryPointer(theDisp,rootW,&rW,&cW,&rx,&ry,&x1,&y1,&mask)) {
-- if (!(mask & Button3Mask)) break;
-+ if (!(mask & CANCELGRABMASK)) break;
- }
- }
-
-@@ -187,19 +209,21 @@
- XBell(theDisp, 0);
- XBell(theDisp, 0);
- rv = 0;
-+ cancelled = 1;
- goto exit;
- }
-
-
--
-- if (mask & Button1Mask) { /* Button1: GRAB WINDOW (& FRAME, maybe) */
-- while (!pretendGotB1) { /* wait for button to be released, if clicked */
-+ if (mask & WINDOWGRABMASK) { /* GRAB WINDOW (& FRAME, maybe) */
-+ while (!GotButton) { /* wait for button to be released, if clicked */
- int rx,ry,x1,y1; Window rW, cW;
- if (XQueryPointer(theDisp,rootW,&rW,&cW,&rx,&ry,&x1,&y1,&mask)) {
-- if (!(mask & Button1Mask)) break;
-+ if (!(mask & WINDOWGRABMASK)) break;
- }
- }
-
-+ grabwin:
-+
- clickWin = (cW) ? cW : rootW;
-
- if (clickWin == rootW) { /* grab entire screen */
-@@ -223,7 +247,6 @@
- }
- }
-
--
- /* range checking: keep rectangle fully on-screen */
- if (ix<0) { iw += ix; ix = 0; }
- if (iy<0) { ih += iy; iy = 0; }
-@@ -244,8 +267,7 @@
- endflash();
- }
-
--
-- else { /* Button2: TRACK A RECTANGLE */
-+ else { /* TRACK A RECTANGLE */
- int origrx, origry;
-
- clickWin = rootW;
-@@ -259,7 +281,7 @@
- /* Wait for button release while tracking rectangle on screen */
- while (1) {
- if (XQueryPointer(theDisp,rootW,&rW,&cW,&rx,&ry,&x,&y,&mask)) {
-- if (!(mask & Button2Mask)) break;
-+ if (!(mask & RECTGTRACKMASK)) break;
- }
-
- flashrect(ix, iy, iw, ih, 0); /* turn off rect */
-@@ -276,6 +298,7 @@
-
- flashrect(ix, iy, iw, ih, 0); /* turn off rect */
-
-+#ifdef DO_GRABFLASH
- /* flash the rectangle a bit... */
- for (i=0; i<5; i++) {
- flashrect(ix, iy, iw, ih, 1);
-@@ -283,13 +306,26 @@
- flashrect(ix, iy, iw, ih, 0);
- XFlush(theDisp); Timer(100);
- }
-+#endif
-+
- endflash();
-
-+ /* if rectangle has zero width or height, search for child window JPD */
-+ if (iw==0 && ih==0) {
-+ int xr, yr;
-+ Window childW = 0;
-+ if (rW && cW)
-+ XTranslateCoordinates(theDisp, rW, cW, rx, ry, &xr, &yr, &childW);
-+ if (childW)
-+ cW = childW;
-+ goto grabwin;
-+ }
-+
- XUngrabServer(theDisp);
- }
-
--
- /***
-+ *** now that clickWin,ix,iy,iw,ih are known, try to grab the bits :
- *** grab screen area (ix,iy,iw,ih)
- ***/
-
-@@ -303,9 +339,16 @@
-
- SetCursors(-1);
-
--
- exit:
-
-+ XUngrabPointer(theDisp, CurrentTime);
-+ XUngrabServer(theDisp);
-+
-+ if (startGrab) {
-+ startGrab = 0;
-+ if (cancelled) Quit(0);
-+ }
-+
- if (hidewins) { /* remap XV windows */
- autoclose += 2; /* force it on once */
- if (mainW && dispMode == RMB_WINDOW) {
-@@ -1217,7 +1260,3 @@
-
- return 1;
- }
--
--
--
--
-diff -ruN xv-3.10a-bugfixes/xvhips.c xv-3.10a-enhancements/xvhips.c
---- xv-3.10a-bugfixes/xvhips.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvhips.c 2005-04-30 23:49:14.000000000 -0700
-@@ -0,0 +1,406 @@
-+/*
-+ * xvhips.c - load routine for 'HIPS' format pictures
-+ *
-+ * LoadHIPS(fname, numcols)
-+ */
-+
-+/*
-+ * Copyright 1989, 1990 by the University of Pennsylvania
-+ *
-+ * Permission to use, copy, and distribute for non-commercial purposes,
-+ * is hereby granted without fee, providing that the above copyright
-+ * notice appear in all copies and that both the copyright notice and this
-+ * permission notice appear in supporting documentation.
-+ *
-+ * The software may be modified for your own purposes, but modified versions
-+ * may not be distributed.
-+ *
-+ * This software is provided "as is" without any express or implied warranty.
-+ */
-+
-+#include "xv.h"
-+
-+#ifdef HAVE_HIPS
-+
-+#define Boolean FREDDIE
-+#include "xvhips.h"
-+#undef Boolean
-+
-+#include <alloca.h>
-+
-+#define LINES 100
-+#define LINELENGTH 132
-+
-+static int fread_header(int fd, struct header *hd);
-+static char *getline(int fd, char **s, int *l);
-+static int dfscanf(int fd);
-+static void make_grayscale(char *r, char *g, char *b);
-+static float hls_value (float n1, float n2, float hue);
-+static void hls_to_rgb(float h, float l, float s,
-+ float *r, float *g, float *b);
-+static void make_huescale(char *r, char *g, char *b);
-+static void make_heatscale(char *r, char *g, char *b);
-+static int load_colourmap(char *filestem, int max_colours,
-+ char *r, char *g, char *b);
-+
-+/************************************************************************
-+ *
-+ * Read Header routines
-+ *
-+ ************************************************************************/
-+
-+static char *ssave[LINES];
-+static int slmax[LINES];
-+static int lalloc = 0;
-+//extern char *calloc();
-+
-+
-+
-+static int fread_header(fd, hd)
-+ int fd;
-+ struct header *hd;
-+{
-+ int lineno, len, i;
-+ char *s;
-+
-+/*fprintf(stderr,"fread_header: entered\n");*/
-+ if(lalloc<1) {
-+ ssave[0] = calloc(LINELENGTH, sizeof (char));
-+ slmax[0] = LINELENGTH;
-+ lalloc = 1;
-+ }
-+/*fprintf(stderr,"fread_header: ssave allocated\n");*/
-+ getline(fd,&ssave[0],&slmax[0]);
-+ hd->orig_name = calloc(strlen(ssave[0])+1, sizeof (char));
-+ strcpy(hd->orig_name,ssave[0]);
-+ getline(fd,&ssave[0],&slmax[0]);
-+ hd->seq_name = calloc(strlen(ssave[0])+1, sizeof (char));
-+ strcpy(hd->seq_name,ssave[0]);
-+ hd->num_frame = dfscanf(fd);
-+ getline(fd,&ssave[0],&slmax[0]);
-+ hd->orig_date = calloc(strlen(ssave[0])+1, sizeof (char));
-+ strcpy(hd->orig_date,ssave[0]);
-+ hd->rows = dfscanf(fd);
-+ hd->cols = dfscanf(fd);
-+ hd->bits_per_pixel = dfscanf(fd);
-+ hd->bit_packing = dfscanf(fd);
-+ hd->pixel_format = dfscanf(fd);
-+ lineno = 0;
-+ len = 1;
-+ getline(fd,&ssave[0],&slmax[0]);
-+ s = ssave[0];
-+ while(*(s += strlen(s)-3) == '|') {
-+ len += strlen(ssave[lineno]);
-+ lineno++;
-+ if (lineno >= LINES)
-+ fprintf(stderr, "Too many lines in header history");
-+ if(lineno >= lalloc) {
-+ ssave[lineno] = calloc(LINELENGTH, sizeof (char));
-+ slmax[lineno] = LINELENGTH;
-+ lalloc++;
-+ }
-+ getline(fd,&ssave[lineno],&slmax[lineno]);
-+ s = ssave[lineno];
-+ }
-+ len += strlen(ssave[lineno]);
-+ hd->seq_history = calloc(len, sizeof (char));
-+ hd->seq_history[0] = '\0';
-+ for (i=0;i<=lineno;i++)
-+ strcat(hd->seq_history,ssave[i]);
-+ lineno = 0;
-+ len = 1;
-+ while(strcmp(getline(fd,&ssave[lineno],&slmax[lineno]),".\n")) {
-+ len += strlen(ssave[lineno]);
-+ lineno++;
-+ if (lineno >= LINES)
-+ fprintf(stderr, "Too many lines in header desc.");
-+ if(lineno >= lalloc) {
-+ ssave[lineno] = calloc(LINELENGTH, sizeof (char));
-+ slmax[lineno] = LINELENGTH;
-+ lalloc++;
-+ }
-+ }
-+ hd->seq_desc = calloc(len, sizeof (char));
-+ *hd->seq_desc = '\0';
-+ for (i=0;i<lineno;i++)
-+ strcat(hd->seq_desc,ssave[i]);
-+/*fprintf(stderr,"fread_header: exiting\n");*/
-+ return 0;
-+}
-+
-+
-+
-+static char *getline(fd,s,l)
-+ int fd;
-+ char **s;
-+ int *l;
-+{
-+ int i,m;
-+ char c,*s1,*s2;
-+
-+ i = 0;
-+ s1 = *s;
-+ m = *l;
-+ while(read(fd,&c,1) == 1 && c != '\n') {
-+ if (m-- <= 2) {
-+ s2 = calloc(LINELENGTH+*l,sizeof (char));
-+ strcpy(s2,*s);
-+ *s = s2;
-+ *l += LINELENGTH;
-+ m = LINELENGTH;
-+ s1 = s2 + strlen(s2);
-+ }
-+ *s1++ = c;
-+ }
-+ if (c == '\n') {
-+ *s1++ = '\n';
-+ *s1 = '\0';
-+ return *s;
-+ }
-+ fprintf(stderr, "Unexpected EOF while reading header.");
-+ return NULL;
-+}
-+
-+
-+
-+static int dfscanf(fd)
-+ int fd;
-+{
-+ int i;
-+
-+ getline(fd,&ssave[0],&slmax[0]);
-+ sscanf(ssave[0],"%d",&i);
-+ return(i);
-+}
-+
-+
-+
-+/*******************************************/
-+int LoadHIPS(fname,pinfo)
-+ char *fname;
-+ PICINFO * pinfo;
-+/*******************************************/
-+{
-+ FILE *fp;
-+ struct header h;
-+ char * pic;
-+
-+ /* open the stream, if necesary */
-+ fp=fopen(fname,"r");
-+ if (!fp) return 0;
-+
-+ if (!fread_header(fileno(fp), &h)) {
-+ SetISTR(ISTR_WARNING,"Can't read HIPS header");
-+ return 0;
-+ }
-+
-+ pinfo->w = h.cols;
-+ pinfo->h = h.rows;
-+ pic = pinfo->pic = (byte *) malloc(h.rows * h.cols); // GRR POSSIBLE OVERFLOW / FIXME
-+ if (!pic) FatalError("couldn't malloc HIPS file");
-+
-+ if (!fread(pic, 1, h.cols*h.rows, fp)) {
-+ SetISTR(ISTR_WARNING,"Error reading HIPS data.\n");
-+ return 0;
-+ }
-+ fclose (fp);
-+
-+ pinfo->frmType = F_SUNRAS;
-+ pinfo->colType = F_FULLCOLOR;
-+ sprintf(pinfo->fullInfo, "HIPS file (%d bytes)", h.cols*h.rows);
-+ sprintf(pinfo->shrtInfo, "HIPS file.");
-+ pinfo->comment = (char *) NULL;
-+
-+ {
-+ char cmapname[256];
-+ /* Check header for colormap spec */
-+ char * s = h.seq_desc - 1;
-+ char * cmaptag = "+COLORMAP";
-+ int sl = strlen(cmaptag);
-+ cmapname[0] = 0;
-+ while (*++s)
-+ if (*s == '+')
-+ if (strncmp(s, cmaptag, sl) == 0) {
-+ char * p = s + sl;
-+ while (*p && (*p == ' ' || *p == '\n' || *p == '\t')) p++;
-+ sscanf(p, "%s", cmapname);
-+ SetISTR(ISTR_INFO, cmapname);
-+ fprintf(stderr, "Colormap = [%s]\n", cmapname);
-+ }
-+
-+ if (strcmp(cmapname, "gray") == 0 || strcmp(cmapname, "grey") == 0)
-+ make_grayscale(pinfo->r, pinfo->g, pinfo->b);
-+ else if (strcmp(cmapname, "heat") == 0)
-+ make_heatscale(pinfo->r, pinfo->g, pinfo->b);
-+ else if (strcmp(cmapname, "hues") == 0)
-+ make_huescale(pinfo->r, pinfo->g, pinfo->b);
-+ else if (!cmapname[0] || !load_colourmap(cmapname, 256, pinfo->r, pinfo->g, pinfo->b))
-+ make_grayscale(pinfo->r, pinfo->g, pinfo->b);
-+ sprintf(pinfo->fullInfo, "HIPS file (%d x %d), Colormap = [%s]", h.cols, h.rows, cmapname);
-+ }
-+
-+ return 1;
-+}
-+
-+
-+
-+static void make_grayscale(char * r, char * g, char * b)
-+{
-+ int i;
-+ /* default grayscale colors */
-+ r[0] = 40; g[0] = 150; b[0] = 100; /* "green4" background */
-+ for(i = 1; i < 256; i++)
-+ r[i] = g[i] = b[i] = i;
-+}
-+
-+
-+
-+static float hls_value (n1, n2, hue)
-+ float n1,n2,hue;
-+{
-+ if (hue>360.0)
-+ hue-=360.0 ;
-+ else if (hue<0.0)
-+ hue+=360.0 ;
-+
-+ if (hue<60.0)
-+ return( n1+(n2-n1)*hue/60.0 ) ;
-+ else if (hue<180.0)
-+ return ( n2 ) ;
-+ else if (hue<240.0)
-+ return ( n1+(n2-n1)*(240.0-hue)/60.0 ) ;
-+ else
-+ return (n1) ;
-+}
-+
-+
-+
-+static void hls_to_rgb(h,l,s, r,g,b)
-+ float h, l, s;
-+ float *r, *g, *b;
-+{
-+ static float m1, m2 ;
-+
-+ if (l<=0.5)
-+ m2=l*(1+s) ;
-+ else
-+ m2=l+s-l*s ;
-+ m1=2.0*l-m2 ;
-+ if (s==0.0) *r=*g=*b=l ;
-+ else {
-+ *r=hls_value(m1,m2,h+120.0) ;
-+ *g=hls_value(m1,m2,h) ;
-+ *b=hls_value(m1,m2,h-120.0) ;
-+ }
-+
-+}
-+
-+
-+
-+static void make_huescale(char * r, char * g, char * b)
-+{
-+ int j;
-+ r[0] = g[0] = b[0] = 0;
-+ for (j = 1; j<256; j++)
-+ {
-+ float fr, fg, fb;
-+ hls_to_rgb((double)(256.0-j)*360.0/256.0, 0.5, 1.0, &fr, &fg, &fb);
-+ r[j] = rint(255*fr);
-+ g[j] = rint(255*fg);
-+ b[j] = rint(255*fb);
-+ }
-+}
-+
-+
-+
-+static void make_heatscale(char * r, char * g, char * b)
-+{
-+ int j;
-+ r[0] = g[0] = b[0] = 0;
-+ for (j = 1; j<256; j++)
-+ {
-+ if(j<255/2)
-+ r[j] = j*255/(255/2-1);
-+ else
-+ r[j]=255;
-+ if (j>=255/2+255/3)
-+ g[j] = 255;
-+ else if (j>255/3)
-+ g[j] = (j-255/3)*255/(255/2-1);
-+ else
-+ g[j] = 0;
-+ if (j>255/2)
-+ b[j] = (j-255/2)*255/(255-255/2-1);
-+ else
-+ b[j] = 0;
-+ }
-+}
-+
-+
-+
-+static int load_colourmap(char *filestem, int max_colours,
-+ char *r, char *g, char *b)
-+{
-+ FILE * fp;
-+ int numread=0;
-+ char * filename;
-+ char str[200];
-+ int num_colors;
-+ /*
-+ * Look for palette file in local directory
-+ */
-+
-+ filename = (char*)alloca(strlen(filestem) + 5);
-+ strcpy(filename, filestem);
-+ strcat(filename, ".PAL"); /* Add the PAL suffix to the name specified */
-+ fp = fopen(filename,"r");
-+ if (!fp) {
-+ /*
-+ * If not found, try in $IM2HOME/etc/palettes
-+ */
-+ char * im2home = (char*)getenv("IM2HOME");
-+ char * palette_subdirectory = "etc/palettes";
-+ char * fullfilename;
-+ if (!im2home)
-+ {
-+ im2home = "/home/jewel/imagine2";
-+ fprintf(stderr,"IM2HOME environment variable not set -- using [%s]\n",im2home);
-+ }
-+ fullfilename = alloca(strlen(im2home)+strlen(palette_subdirectory)+strlen(filename)+5);
-+ sprintf(fullfilename, "%s/%s/%s",im2home,palette_subdirectory,filename);
-+ fp = fopen(fullfilename,"r");
-+ if (!fp)
-+ {
-+ fprintf(stderr,"Couldn't find any palette file -- looked for [%s] and [%s].\n",
-+ filename,fullfilename);
-+ perror("Last system error message was");
-+ return 0;
-+ }
-+ }
-+
-+ strcpy(str,"(null)");
-+ if (!fscanf(fp,"%s\n",str) || strncmp(str,"Palette",7) != 0) {
-+ fprintf(stderr,"error: First line of palette file should be `Palette', not [%s]\n", str);
-+ return 0;
-+ }
-+
-+ fscanf(fp,"%[^\n]",str) ; /* Scan to end of line */
-+ fscanf (fp,"%d",&num_colors);/* Read the number of colours in the file */
-+ fgets(str,120,fp) ; /* Skip the text description, and general info lines */
-+ fgets(str,120,fp) ;
-+
-+ while ((numread<max_colours)&&(numread<num_colors)) {
-+ int rc, gc, bc;
-+ fscanf (fp,"%d %d %d -", &rc, &gc, &bc) ; /* Get the (r,g,b) tuples */
-+ r[numread] = rc;
-+ g[numread] = gc;
-+ b[numread] = bc;
-+ numread++;
-+ fgets(str,120,fp) ; /* Skip the description, if present */
-+ }
-+
-+ SetISTR(ISTR_INFO,"Read %d colors from palette file [%s]", numread, filename);
-+ return (numread) ; /* Return the number of colours ACTUALLY READ */
-+}
-+
-+#endif /* HAVE_HIPS */
-diff -ruN xv-3.10a-bugfixes/xvhips.h xv-3.10a-enhancements/xvhips.h
---- xv-3.10a-bugfixes/xvhips.h 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvhips.h 2005-04-25 08:34:14.000000000 -0700
-@@ -0,0 +1,154 @@
-+/*
-+ * HIPL Picture Header Format Standard
-+ *
-+ * Michael Landy - 2/1/82
-+ */
-+
-+#define XHEADER
-+#ifdef XHEADER
-+struct extended {
-+ char *name;
-+ char *vals;
-+ };
-+#endif
-+
-+struct header {
-+ char *orig_name; /* The originator of this sequence */
-+ char *seq_name; /* The name of this sequence */
-+ int num_frame; /* The number of frames in this sequence */
-+ char *orig_date; /* The date the sequence was originated */
-+ int rows; /* The number of rows in each image */
-+ int cols; /* The number of columns in each image */
-+ int bits_per_pixel; /* The number of significant bits per pixel */
-+ int bit_packing; /* Nonzero if bits were packed contiguously */
-+ int pixel_format; /* The format of each pixel, see below */
-+ char *seq_history; /* The sequence's history of transformations */
-+ char *seq_desc; /* Descriptive information */
-+#ifdef XHEADER
-+ struct extended *xheader;
-+#endif
-+};
-+
-+/*
-+ * Pixel Format Codes
-+ */
-+
-+#define PFBYTE 0 /* Bytes interpreted as integers (8 bits) */
-+#define PFSHORT 1 /* Short integers (2 bytes) */
-+#define PFINT 2 /* Integers (4 bytes) */
-+#define PFFLOAT 3 /* Float's (4 bytes)*/
-+#define PFCOMPLEX 4 /* 2 Float's interpreted as (real,imaginary) */
-+#define PFASCII 5 /* ASCII rep, with linefeeds after each row */
-+#define PFDOUBLE 6 /* Double's (8 byte floats) */
-+#define PFDBLCOM 7 /* Double complex's (2 Double's) */
-+#define PFQUAD 10 /* quad-tree encoding (Mimaging) */
-+#define PFQUAD1 11 /* quad-tree encoding */
-+#define PFBHIST 12 /* histogram of byte image (using ints) */
-+#define PFSPAN 13 /* spanning tree format */
-+#define PLOT3D 24 /* plot-3d format */
-+#define PFINTPYR 50 /* integer pyramid */
-+#define PFFLOATPYR 51 /* float pyramid */
-+#define PFPOLYLINE 100 /* 2D points */
-+#define PFCOLVEC 101 /* Set of RGB triplets defining colours */
-+#define PFUKOOA 102 /* Data in standard UKOOA format */
-+#define PFTRAINING 104 /* Set of colour vector training examples */
-+#define PFTOSPACE 105 /* TOspace world model data structure */
-+#define PFSTEREO 106 /* Stereo sequence (l, r, l, r, ...) */
-+#define PFRGPLINE 107 /* 2D points with regions */
-+#define PFRGISPLINE 108 /* 2D points with regions and interfaces */
-+#define PFCHAIN 200 /* Chain code encoding (Mimaging) */
-+#define PFLUT 300 /* LUT format (uses Ints) (Mimaging) */
-+#define PFAHC 400 /* adaptive hierarchical encoding */
-+#define PFOCT 401 /* oct-tree encoding */
-+#define PFBT 402 /* binary tree encoding */
-+#define PFAHC3 403 /* 3-d adaptive hierarchical encoding */
-+#define PFBQ 404 /* binquad encoding */
-+#define PFRLED 500 /* run-length encoding */
-+#define PFRLEB 501 /* run-length encoding, line begins black */
-+#define PFRLEW 502 /* run-length encoding, line begins white */
-+#define PFPOLAR 600 /* rho-theta format (Mimaging) */
-+
-+/*
-+ * Bit packing formats
-+ */
-+
-+#define MSBFIRST 1 /* bit packing - most significant bit first */
-+#define LSBFIRST 2 /* bit packing - least significant bit first */
-+
-+#define FBUFLIMIT 30000 /* increase this if you use large PLOT3D
-+ files */
-+
-+/*
-+ * For general readability
-+ */
-+
-+#ifndef TRUE
-+# define TRUE 1
-+#endif
-+
-+#ifndef FALSE
-+# define FALSE 0
-+#endif
-+
-+typedef long Boolean;
-+extern char *strsave(), *memalloc();
-+
-+/*
-+ * image and pyramid type declarations for the pyramid routines.
-+ *
-+ * The pyramid utilities are derived from code originally written by
-+ * Raj Hingorani at SRI/David Sarnoff Research Institute. The original
-+ * Gaussian and Laplacian pyramid algorithms were designed by Peter Burt (also
-+ * currently at SRI/DSRC). See: Computer Graphics and Image Processing,
-+ * Volume 16, pp. 20-51, 1981, and IEEE Transactions on Communications,
-+ * Volume COM-31, pp. 532-540, 1983.
-+ */
-+
-+#define MAXLEV 12
-+
-+
-+typedef struct {
-+ float **ptr;
-+ int nr;
-+ int nc;
-+} FIMAGE;
-+
-+typedef struct {
-+ int **ptr;
-+ int nr;
-+ int nc;
-+} IIMAGE;
-+
-+typedef FIMAGE FPYR[MAXLEV];
-+typedef IIMAGE IPYR[MAXLEV];
-+
-+typedef struct {
-+ float *k;
-+ int taps2; /* the number of taps from the center rightward,
-+ total number is 2*taps2-1 */
-+} FILTER;
-+
-+/* function definitions */
-+
-+float **_read_fimgstr();
-+int **_read_iimgstr();
-+float **_alloc_fimage();
-+int **_alloc_iimage();
-+
-+/* image macros */
-+
-+#ifndef MAX
-+# define MAX(A,B) ((A) > (B) ? (A) : (B))
-+#endif /* MAX */
-+#ifndef MIN
-+# define MIN(A,B) ((A) < (B) ? (A) : (B))
-+#endif /* MIN */
-+#ifndef ABS
-+# define ABS(A) ((A) > 0 ? (A) : (-(A)))
-+#endif /* ABS */
-+#ifndef BETWEEN
-+# define BETWEEN(A,B,C) (((A) < (B)) ? (B) : (((A) > (C)) ? (C) : (A)))
-+#endif /* BETWEEN */
-+#ifndef SIGN
-+# define SIGN(A,B) (((B) > 0) ? (A) : (-(A)))
-+#endif /* SIGN */
-diff -ruN xv-3.10a-bugfixes/xvimage.c xv-3.10a-enhancements/xvimage.c
---- xv-3.10a-bugfixes/xvimage.c 2005-03-31 07:23:39.000000000 -0800
-+++ xv-3.10a-enhancements/xvimage.c 2005-04-17 23:00:10.000000000 -0700
-@@ -21,6 +21,16 @@
- * int LoadPad(pinfo, fname);
- */
-
-+/* The following switch should better be provided at runtime for
-+ * comparison purposes.
-+ * At the moment it's only compile time, unfortunately.
-+ * Who can make adaptions for use as a runtime switch by a menu option?
-+ * [GRR 19980607: now via do_fixpix_smooth global; macro renamed to ENABLE_]
-+ * [see http://sylvana.net/fixpix/ for home page, further info]
-+ */
-+/* #define ENABLE_FIXPIX_SMOOTH */ /* GRR 19980607: moved into xv.h */
-+
-+#define NEEDSDIR /* for S_IRUSR|S_IWUSR */
- #include "copyright.h"
-
- #include "xv.h"
-@@ -36,7 +46,9 @@
- static int doAutoCrop24 PARM((void));
- static void floydDitherize1 PARM((XImage *, byte *, int, int, int,
- byte *, byte *,byte *));
-+#if 0 /* NOTUSED */
- static int highbit PARM((unsigned long));
-+#endif
-
- static int doPadSolid PARM((char *, int, int, int, int));
- static int doPadBggen PARM((char *, int, int, int, int));
-@@ -46,6 +58,267 @@
- static int ReadImageFile1 PARM((char *, PICINFO *));
-
-
-+/* The following array represents the pixel values for each shade
-+ * of the primary color components.
-+ * If 'p' is a pointer to a source image rgb-byte-triplet, we can
-+ * construct the output pixel value simply by 'oring' together
-+ * the corresponding components:
-+ *
-+ * unsigned char *p;
-+ * unsigned long pixval;
-+ *
-+ * pixval = screen_rgb[0][*p++];
-+ * pixval |= screen_rgb[1][*p++];
-+ * pixval |= screen_rgb[2][*p++];
-+ *
-+ * This is both efficient and generic, since the only assumption
-+ * is that the primary color components have separate bits.
-+ * The order and distribution of bits does not matter, and we
-+ * don't need additional variables and shifting/masking code.
-+ * The array size is 3 KBytes total and thus very reasonable.
-+ */
-+
-+static unsigned long screen_rgb[3][256];
-+
-+/* The following array holds the exact color representations
-+ * reported by the system.
-+ * This is useful for less than 24 bit deep displays as a base
-+ * for additional dithering to get smoother output.
-+ */
-+
-+static byte screen_set[3][256];
-+
-+/* The following routine initializes the screen_rgb and screen_set
-+ * arrays.
-+ * Since it is executed only once per program run, it does not need
-+ * to be super-efficient.
-+ *
-+ * The method is to draw points in a pixmap with the specified shades
-+ * of primary colors and then get the corresponding XImage pixel
-+ * representation.
-+ * Thus we can get away with any Bit-order/Byte-order dependencies.
-+ *
-+ * The routine uses some global X variables: theDisp, theScreen,
-+ * and dispDEEP. Adapt these to your application as necessary.
-+ * I've not passed them in as parameters, since for other platforms
-+ * than X these may be different (see vfixpix.c), and so the
-+ * screen_init() interface is unique.
-+ *
-+ * BUG: I've read in the "Xlib Programming Manual" from O'Reilly &
-+ * Associates, that the DefaultColormap in TrueColor might not
-+ * provide the full shade representation in XAllocColor.
-+ * In this case one had to provide a 'best' colormap instead.
-+ * However, my tests with Xaccel on a Linux-Box with a Mach64
-+ * card were fully successful, so I leave that potential problem
-+ * to you at the moment and would appreciate any suggestions...
-+ */
-+
-+static void screen_init()
-+{
-+ static int init_flag; /* assume auto-init as 0 */
-+ Pixmap check_map;
-+ GC check_gc;
-+ XColor check_col;
-+ XImage *check_image;
-+ int ci, i;
-+
-+ if (init_flag) return;
-+ init_flag = 1;
-+
-+ check_map = XCreatePixmap(theDisp, RootWindow(theDisp,theScreen),
-+ 1, 1, dispDEEP);
-+ check_gc = XCreateGC(theDisp, check_map, 0, NULL);
-+ for (ci = 0; ci < 3; ci++) {
-+ for (i = 0; i < 256; i++) {
-+ check_col.red = 0;
-+ check_col.green = 0;
-+ check_col.blue = 0;
-+ /* Do proper upscaling from unsigned 8 bit (image data values)
-+ to unsigned 16 bit (X color representation). */
-+ ((unsigned short *)&check_col.red)[ci] = (unsigned short)((i << 8) | i);
-+ if (theVisual->class == TrueColor)
-+ XAllocColor(theDisp, theCmap, &check_col);
-+ else
-+ xvAllocColor(theDisp, theCmap, &check_col);
-+ screen_set[ci][i] =
-+ (((unsigned short *)&check_col.red)[ci] >> 8) & 0xff;
-+ XSetForeground(theDisp, check_gc, check_col.pixel);
-+ XDrawPoint(theDisp, check_map, check_gc, 0, 0);
-+ check_image = XGetImage(theDisp, check_map, 0, 0, 1, 1,
-+ AllPlanes, ZPixmap);
-+ if (check_image) {
-+ switch (check_image->bits_per_pixel) {
-+ case 8:
-+ screen_rgb[ci][i] = *(CARD8 *)check_image->data;
-+ break;
-+ case 16:
-+ screen_rgb[ci][i] = *(CARD16 *)check_image->data;
-+ break;
-+ case 24:
-+ screen_rgb[ci][i] =
-+ ((unsigned long)*(CARD8 *)check_image->data << 16) |
-+ ((unsigned long)*(CARD8 *)(check_image->data + 1) << 8) |
-+ (unsigned long)*(CARD8 *)(check_image->data + 2);
-+ break;
-+ case 32:
-+ screen_rgb[ci][i] = *(CARD32 *)check_image->data;
-+ break;
-+ }
-+ XDestroyImage(check_image);
-+ }
-+ }
-+ }
-+ XFreeGC(theDisp, check_gc);
-+ XFreePixmap(theDisp, check_map);
-+}
-+
-+
-+#ifdef ENABLE_FIXPIX_SMOOTH
-+
-+/* The following code is based in part on:
-+ *
-+ * jquant1.c
-+ *
-+ * Copyright (C) 1991-1996, Thomas G. Lane.
-+ * This file is part of the Independent JPEG Group's software.
-+ * For conditions of distribution and use, see the accompanying README file.
-+ *
-+ * This file contains 1-pass color quantization (color mapping) routines.
-+ * These routines provide mapping to a fixed color map using equally spaced
-+ * color values. Optional Floyd-Steinberg or ordered dithering is available.
-+ */
-+
-+/* Declarations for Floyd-Steinberg dithering.
-+ *
-+ * Errors are accumulated into the array fserrors[], at a resolution of
-+ * 1/16th of a pixel count. The error at a given pixel is propagated
-+ * to its not-yet-processed neighbors using the standard F-S fractions,
-+ * ... (here) 7/16
-+ * 3/16 5/16 1/16
-+ * We work left-to-right on even rows, right-to-left on odd rows.
-+ *
-+ * We can get away with a single array (holding one row's worth of errors)
-+ * by using it to store the current row's errors at pixel columns not yet
-+ * processed, but the next row's errors at columns already processed. We
-+ * need only a few extra variables to hold the errors immediately around the
-+ * current column. (If we are lucky, those variables are in registers, but
-+ * even if not, they're probably cheaper to access than array elements are.)
-+ *
-+ * We provide (#columns + 2) entries per component; the extra entry at each
-+ * end saves us from special-casing the first and last pixels.
-+ */
-+
-+typedef INT16 FSERROR; /* 16 bits should be enough */
-+typedef int LOCFSERROR; /* use 'int' for calculation temps */
-+
-+typedef struct { byte *colorset;
-+ FSERROR *fserrors;
-+ } FSBUF;
-+
-+/* Floyd-Steinberg initialization function.
-+ *
-+ * It is called 'fs2_init' since it's specialized for our purpose and
-+ * could be embedded in a more general FS-package.
-+ *
-+ * Returns a malloced FSBUF pointer which has to be passed as first
-+ * parameter to subsequent 'fs2_dither' calls.
-+ * The FSBUF structure does not need to be referenced by the calling
-+ * application, it can be treated from the app like a void pointer.
-+ *
-+ * The current implementation does only require to free() this returned
-+ * pointer after processing.
-+ *
-+ * Returns NULL if malloc fails.
-+ *
-+ * NOTE: The FSBUF structure is designed to allow the 'fs2_dither'
-+ * function to work with an *arbitrary* number of color components
-+ * at runtime! This is an enhancement over the IJG code base :-).
-+ * Only fs2_init() specifies the (maximum) number of components.
-+ */
-+
-+static FSBUF *fs2_init(width)
-+int width;
-+{
-+ FSBUF *fs;
-+ FSERROR *p;
-+
-+ fs = (FSBUF *)
-+ malloc(sizeof(FSBUF) * 3 + ((size_t)width + 2) * sizeof(FSERROR) * 3);
-+ if (fs == 0) return fs;
-+
-+ fs[0].colorset = screen_set[0];
-+ fs[1].colorset = screen_set[1];
-+ fs[2].colorset = screen_set[2];
-+
-+ p = (FSERROR *)(fs + 3);
-+ memset(p, 0, ((size_t)width + 2) * sizeof(FSERROR) * 3);
-+
-+ fs[0].fserrors = p;
-+ fs[1].fserrors = p + 1;
-+ fs[2].fserrors = p + 2;
-+
-+ return fs;
-+}
-+
-+/* Floyd-Steinberg dithering function.
-+ *
-+ * NOTE:
-+ * (1) The image data referenced by 'ptr' is *overwritten* (input *and*
-+ * output) to allow more efficient implementation.
-+ * (2) Alternate FS dithering is provided by the sign of 'nc'. Pass in
-+ * a negative value for right-to-left processing. The return value
-+ * provides the right-signed value for subsequent calls!
-+ * (3) This particular implementation assumes *no* padding between lines!
-+ * Adapt this if necessary.
-+ */
-+
-+static int fs2_dither(fs, ptr, nc, num_rows, num_cols)
-+FSBUF *fs;
-+byte *ptr;
-+int nc, num_rows, num_cols;
-+{
-+ int abs_nc, ci, row, col;
-+ LOCFSERROR delta, cur, belowerr, bpreverr;
-+ byte *dataptr, *colsetptr;
-+ FSERROR *errorptr;
-+
-+ if ((abs_nc = nc) < 0) abs_nc = -abs_nc;
-+ for (row = 0; row < num_rows; row++) {
-+ for (ci = 0; ci < abs_nc; ci++, ptr++) {
-+ dataptr = ptr;
-+ colsetptr = fs[ci].colorset;
-+ errorptr = fs[ci].fserrors;
-+ if (nc < 0) {
-+ dataptr += (num_cols - 1) * abs_nc;
-+ errorptr += (num_cols + 1) * abs_nc;
-+ }
-+ cur = belowerr = bpreverr = 0;
-+ for (col = 0; col < num_cols; col++) {
-+ cur += errorptr[nc];
-+ cur += 8; cur >>= 4;
-+ if ((cur += *dataptr) < 0) cur = 0;
-+ else if (cur > 255) cur = 255;
-+ *dataptr = cur & 0xff;
-+ cur -= colsetptr[cur];
-+ delta = cur << 1; cur += delta;
-+ bpreverr += cur; cur += delta;
-+ belowerr += cur; cur += delta;
-+ errorptr[0] = (FSERROR)bpreverr;
-+ bpreverr = belowerr;
-+ belowerr = delta >> 1;
-+ dataptr += nc;
-+ errorptr += nc;
-+ }
-+ errorptr[0] = (FSERROR)bpreverr;
-+ }
-+ ptr += (num_cols - 1) * abs_nc;
-+ nc = -nc;
-+ }
-+ return nc;
-+}
-+
-+#endif /* ENABLE_FIXPIX_SMOOTH */
-+
-
- #define DO_CROP 0
- #define DO_ZOOM 1
-@@ -1348,7 +1621,7 @@
- SetISTR(ISTR_WARNING, "Invalid image dimensions for dithering");
- return (byte *)NULL;
- }
--
-+
- outpic = (byte *) malloc((size_t) npixels);
- if (!outpic) return outpic;
-
-@@ -1838,7 +2111,7 @@
- unsigned int wide, high;
- {
- /*
-- * this has to do the none-to-simple bit of converting the data in 'pic24'
-+ * This has to do the none-too-simple bit of converting the data in 'pic24'
- * into something usable by X.
- *
- * There are two major approaches: if we're displaying on a TrueColor
-@@ -1852,7 +2125,7 @@
- * mode. (In that by this point, a 3/3/2 standard colormap has been
- * created for our use (though all 256 colors may not be unique...), and
- * we're just going to display the 24-bit picture by dithering with those
-- * colors
-+ * colors.)
- *
- */
-
-@@ -1890,33 +2163,17 @@
- /* Non-ColorMapped Visuals: TrueColor, DirectColor */
- /************************************************************************/
-
-- unsigned long r, g, b, rmask, gmask, bmask, xcol;
-- int rshift, gshift, bshift, bperpix, bperline, border, cshift;
-- int maplen;
-+ unsigned long xcol;
-+ int bperpix, bperline;
- byte *imagedata, *lip, *ip, *pp;
-
-
-- /* compute various shifting constants that we'll need... */
--
-- rmask = theVisual->red_mask;
-- gmask = theVisual->green_mask;
-- bmask = theVisual->blue_mask;
--
-- rshift = 7 - highbit(rmask);
-- gshift = 7 - highbit(gmask);
-- bshift = 7 - highbit(bmask);
--
-- maplen = theVisual->map_entries;
-- if (maplen>256) maplen=256;
-- cshift = 7 - highbit((u_long) (maplen-1));
--
- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
- wide, high, 32, 0);
- if (!xim) FatalError("couldn't create X image!");
-
- bperline = xim->bytes_per_line;
- bperpix = xim->bits_per_pixel;
-- border = xim->byte_order;
-
- imagedata = (byte *) malloc((size_t) (high * bperline));
- if (!imagedata) FatalError("couldn't malloc imagedata");
-@@ -1930,85 +2187,141 @@
- FatalError(buf);
- }
-
-+ screen_init();
-
-- lip = imagedata; pp = pic24;
-- for (i=0; i<high; i++, lip+=bperline) {
-- for (j=0, ip=lip; j<wide; j++) {
-- r = *pp++; g = *pp++; b = *pp++;
--
-- /* shift r,g,b so that high bit of 8-bit color specification is
-- * aligned with high bit of r,g,b-mask in visual,
-- * AND each component with its mask,
-- * and OR the three components together
-- */
--
-- if (theVisual->class == DirectColor) {
-- r = (u_long) directConv[(r>>cshift) & 0xff] << cshift;
-- g = (u_long) directConv[(g>>cshift) & 0xff] << cshift;
-- b = (u_long) directConv[(b>>cshift) & 0xff] << cshift;
-- }
--
--
-- /* shift the bits around */
-- if (rshift<0) r = r << (-rshift);
-- else r = r >> rshift;
--
-- if (gshift<0) g = g << (-gshift);
-- else g = g >> gshift;
--
-- if (bshift<0) b = b << (-bshift);
-- else b = b >> bshift;
--
-- r = r & rmask;
-- g = g & gmask;
-- b = b & bmask;
--
-- xcol = r | g | b;
--
-- if (bperpix == 32) {
-- if (border == MSBFirst) {
-- *ip++ = (xcol>>24) & 0xff;
-- *ip++ = (xcol>>16) & 0xff;
-- *ip++ = (xcol>>8) & 0xff;
-- *ip++ = xcol & 0xff;
-- }
-- else { /* LSBFirst */
-- *ip++ = xcol & 0xff;
-- *ip++ = (xcol>>8) & 0xff;
-- *ip++ = (xcol>>16) & 0xff;
-- *ip++ = (xcol>>24) & 0xff;
-- }
-- }
--
-- else if (bperpix == 24) {
-- if (border == MSBFirst) {
-- *ip++ = (xcol>>16) & 0xff;
-- *ip++ = (xcol>>8) & 0xff;
-- *ip++ = xcol & 0xff;
-- }
-- else { /* LSBFirst */
-- *ip++ = xcol & 0xff;
-- *ip++ = (xcol>>8) & 0xff;
-- *ip++ = (xcol>>16) & 0xff;
-- }
-- }
-+#ifdef ENABLE_FIXPIX_SMOOTH
-+ if (do_fixpix_smooth) {
-+#if 0
-+ /* If we wouldn't have to save the original pic24 image data,
-+ * the following code would do the dither job by overwriting
-+ * the image data, and the normal render code would then work
-+ * without any change on that data.
-+ * Unfortunately, this approach would hurt the xv assumptions...
-+ */
-+ if (bperpix < 24) {
-+ FSBUF *fs = fs2_init(wide);
-+ if (fs) {
-+ fs2_dither(fs, pic24, 3, high, wide);
-+ free(fs);
-+ }
-+ }
-+#else
-+ /* ...so we have to take a different approach with linewise
-+ * dithering/rendering in a loop using a temporary line buffer.
-+ */
-+ if (bperpix < 24) {
-+ FSBUF *fs = fs2_init(wide);
-+ if (fs) {
-+ byte *row_buf = malloc((size_t)wide * 3);
-+ if (row_buf) {
-+ int nc = 3;
-+ byte *picp = pic24; lip = imagedata;
-+
-+ switch (bperpix) {
-+ case 8:
-+ for (i=0; i<high; i++, lip+=bperline, picp+=(size_t)wide*3) {
-+ memcpy(row_buf, picp, (size_t)wide * 3);
-+ nc = fs2_dither(fs, row_buf, nc, 1, wide);
-+ for (j=0, ip=lip, pp=row_buf; j<wide; j++) {
-+ xcol = screen_rgb[0][*pp++];
-+ xcol |= screen_rgb[1][*pp++];
-+ xcol |= screen_rgb[2][*pp++];
-+ *ip++ = xcol & 0xff;
-+ }
-+ }
-+ break;
-+
-+ case 16:
-+ for (i=0; i<high; i++, lip+=bperline, picp+=(size_t)wide*3) {
-+ CARD16 *ip16 = (CARD16 *)lip;
-+ memcpy(row_buf, picp, (size_t)wide * 3);
-+ nc = fs2_dither(fs, row_buf, nc, 1, wide);
-+ for (j=0, pp=row_buf; j<wide; j++) {
-+ xcol = screen_rgb[0][*pp++];
-+ xcol |= screen_rgb[1][*pp++];
-+ xcol |= screen_rgb[2][*pp++];
-+ *ip16++ = (CARD16)xcol;
-+ }
-+ }
-+ break;
-+ } /* end switch */
-+
-+ free(row_buf);
-+ free(fs);
-
-- else if (bperpix == 16) {
-- if (border == MSBFirst) {
-- *ip++ = (xcol>>8) & 0xff;
-- *ip++ = xcol & 0xff;
-- }
-- else { /* LSBFirst */
-- *ip++ = xcol & 0xff;
-- *ip++ = (xcol>>8) & 0xff;
-+ return xim;
- }
-- }
--
-- else if (bperpix == 8) {
-- *ip++ = xcol & 0xff;
-- }
-+ free(fs);
-+ }
- }
-+#endif /* 0? */
- }
-+#endif /* ENABLE_FIXPIX_SMOOTH */
-+
-+ lip = imagedata; pp = pic24;
-+
-+ switch (bperpix) {
-+ case 8:
-+ for (i=0; i<high; i++, lip+=bperline) {
-+ for (j=0, ip=lip; j<wide; j++) {
-+ xcol = screen_rgb[0][*pp++];
-+ xcol |= screen_rgb[1][*pp++];
-+ xcol |= screen_rgb[2][*pp++];
-+ *ip++ = xcol & 0xff;
-+ }
-+ }
-+ break;
-+
-+ case 16:
-+ for (i=0; i<high; i++, lip+=bperline) {
-+ CARD16 *ip16 = (CARD16 *)lip;
-+ for (j=0; j<wide; j++) {
-+ xcol = screen_rgb[0][*pp++];
-+ xcol |= screen_rgb[1][*pp++];
-+ xcol |= screen_rgb[2][*pp++];
-+ *ip16++ = (CARD16)xcol;
-+ }
-+ }
-+ break;
-+
-+ case 24:
-+ for (i=0; i<high; i++, lip+=bperline) {
-+ for (j=0, ip=lip; j<wide; j++) {
-+ xcol = screen_rgb[0][*pp++];
-+ xcol |= screen_rgb[1][*pp++];
-+ xcol |= screen_rgb[2][*pp++];
-+#ifdef USE_24BIT_ENDIAN_FIX
-+ if (border == MSBFirst) {
-+ *ip++ = (xcol>>16) & 0xff;
-+ *ip++ = (xcol>>8) & 0xff;
-+ *ip++ = xcol & 0xff;
-+ }
-+ else { /* LSBFirst */
-+ *ip++ = xcol & 0xff;
-+ *ip++ = (xcol>>8) & 0xff;
-+ *ip++ = (xcol>>16) & 0xff;
-+ }
-+#else /* GRR: this came with the FixPix patch, but I don't think it's right */
-+ *ip++ = (xcol >> 16) & 0xff; /* (no way to test, however, so */
-+ *ip++ = (xcol >> 8) & 0xff; /* it's left enabled by default) */
-+ *ip++ = xcol & 0xff;
-+#endif
-+ }
-+ }
-+ break;
-+
-+ case 32:
-+ for (i=0; i<high; i++, lip+=bperline) {
-+ CARD32 *ip32 = (CARD32 *)lip;
-+ for (j=0; j<wide; j++) {
-+ xcol = screen_rgb[0][*pp++];
-+ xcol |= screen_rgb[1][*pp++];
-+ xcol |= screen_rgb[2][*pp++];
-+ *ip32++ = (CARD32)xcol;
-+ }
-+ }
-+ break;
-+ } /* end switch */
- }
-
- else {
-@@ -2458,6 +2771,7 @@
-
-
- /***********************/
-+#if 0 /* NOTUSED */
- static int highbit(ul)
- unsigned long ul;
- {
-@@ -2470,6 +2784,7 @@
- for (i=31; ((ul & hb) == 0) && i>=0; i--, ul<<=1);
- return i;
- }
-+#endif /* 0 - NOTUSED */
-
-
-
-@@ -2680,6 +2995,9 @@
- char *str;
- int wide, high, opaque,omode;
- {
-+#ifndef USE_MKSTEMP
-+ int tmpfd;
-+#endif
- int i;
- byte *bgpic24;
- char syscmd[512], fname[128], errstr[512];
-@@ -2705,6 +3023,13 @@
- close(mkstemp(fname));
- #else
- mktemp(fname);
-+ tmpfd = open(fname, O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
-+ if (tmpfd < 0) {
-+ sprintf(errstr, "Error: can't create temporary file %s", fname);
-+ ErrPopUp(errstr, "\nDoh!");
-+ return 0;
-+ }
-+ close(tmpfd);
- #endif
-
- /* run bggen to generate the background */
-@@ -2978,7 +3303,7 @@
-
- ftype = ReadFileType(name);
-
-- if (ftype == RFT_COMPRESS) { /* handle compressed/gzipped files */
-+ if ((ftype == RFT_COMPRESS) || (ftype == RFT_BZIP2)) { /* handle .Z,gz,bz2 */
- #ifdef VMS
- basefname[0] = '\0';
- strcpy(basefname, name); /* remove trailing .Z */
-@@ -2988,7 +3313,7 @@
- uncName = name;
- #endif
-
-- if (UncompressFile(uncName, uncompname)) {
-+ if (UncompressFile(uncName, uncompname, ftype)) {
- ftype = ReadFileType(uncompname);
- readname = uncompname;
- }
-@@ -3029,9 +3354,3 @@
-
- return 1;
- }
--
--
--
--
--
--
-diff -ruN xv-3.10a-bugfixes/xvinfo.c xv-3.10a-enhancements/xvinfo.c
---- xv-3.10a-bugfixes/xvinfo.c 2004-05-16 18:03:43.000000000 -0700
-+++ xv-3.10a-enhancements/xvinfo.c 2005-05-01 00:05:53.000000000 -0700
-@@ -265,7 +265,7 @@
- if (stnum == ISTR_WARNING && !ctrlUp && !infoUp && !anyBrowUp &&
- strlen(istrs[stnum])) {
- OpenAlert(istrs[stnum]);
-- sleep(3);
-+ sleep(1); /* was 3, but _really_ slow for TIFFs with unknown tags... */
- CloseAlert();
- }
- }
-diff -ruN xv-3.10a-bugfixes/xvjpeg.c xv-3.10a-enhancements/xvjpeg.c
---- xv-3.10a-bugfixes/xvjpeg.c 2005-03-27 16:23:06.000000000 -0800
-+++ xv-3.10a-enhancements/xvjpeg.c 2005-04-17 14:45:28.000000000 -0700
-@@ -51,11 +51,21 @@
- static void clickJD PARM((int, int));
- static void doCmd PARM((int));
- static void writeJPEG PARM((void));
-+#if JPEG_LIB_VERSION > 60
-+METHODDEF(void) xv_error_exit PARM((j_common_ptr));
-+METHODDEF(void) xv_error_output PARM((j_common_ptr));
-+METHODDEF(void) xv_prog_meter PARM((j_common_ptr));
-+#else
- METHODDEF void xv_error_exit PARM((j_common_ptr));
- METHODDEF void xv_error_output PARM((j_common_ptr));
- METHODDEF void xv_prog_meter PARM((j_common_ptr));
-+#endif
- static unsigned int j_getc PARM((j_decompress_ptr));
-+#if JPEG_LIB_VERSION > 60
-+METHODDEF(boolean) xv_process_comment PARM((j_decompress_ptr));
-+#else
- METHODDEF boolean xv_process_comment PARM((j_decompress_ptr));
-+#endif
- static int writeJFIF PARM((FILE *, byte *, int,int,int));
-
-
-@@ -85,10 +95,10 @@
-
- XSelectInput(theDisp, jpegW, ExposureMask | ButtonPressMask | KeyPressMask);
-
-- DCreate(&qDial, jpegW, 10, 10, 80, 100, 1, 100, 75, 5,
-+ DCreate(&qDial, jpegW, 10, 10, 80, 100, 1.0, 100.0, 75.0, 1.0, 5.0,
- infofg, infobg, hicol, locol, "Quality", "%");
-
-- DCreate(&smDial, jpegW, 120, 10, 80, 100, 0, 100, 0, 5,
-+ DCreate(&smDial, jpegW, 120, 10, 80, 100, 0.0, 100.0, 0.0, 1.0, 5.0,
- infofg, infobg, hicol, locol, "Smoothing", "%");
-
- BTCreate(&jbut[J_BOK], jpegW, JWIDE-180-1, JHIGH-10-BUTTH-1, 80, BUTTH,
-@@ -415,7 +425,11 @@
-
-
- /**************************************************/
--METHODDEF void xv_error_exit(cinfo)
-+#if JPEG_LIB_VERSION > 60
-+METHODDEF(void) xv_error_exit(cinfo)
-+#else
-+METHODDEF void xv_error_exit(cinfo)
-+#endif
- j_common_ptr cinfo;
- {
- my_error_ptr myerr;
-@@ -427,7 +441,11 @@
-
-
- /**************************************************/
--METHODDEF void xv_error_output(cinfo)
-+#if JPEG_LIB_VERSION > 60
-+METHODDEF(void) xv_error_output(cinfo)
-+#else
-+METHODDEF void xv_error_output(cinfo)
-+#endif
- j_common_ptr cinfo;
- {
- my_error_ptr myerr;
-@@ -441,7 +459,11 @@
-
-
- /**************************************************/
--METHODDEF void xv_prog_meter(cinfo)
-+#if JPEG_LIB_VERSION > 60
-+METHODDEF(void) xv_prog_meter(cinfo)
-+#else
-+METHODDEF void xv_prog_meter(cinfo)
-+#endif
- j_common_ptr cinfo;
- {
- struct jpeg_progress_mgr *prog;
-@@ -706,7 +728,11 @@
-
-
- /**************************************************/
--METHODDEF boolean xv_process_comment(cinfo)
-+#if JPEG_LIB_VERSION > 60
-+METHODDEF(boolean) xv_process_comment(cinfo)
-+#else
-+METHODDEF boolean xv_process_comment(cinfo)
-+#endif
- j_decompress_ptr cinfo;
- {
- int length, hasnull;
-@@ -794,8 +820,8 @@
-
-
- jpeg_set_defaults(&cinfo);
-- jpeg_set_quality(&cinfo, qDial.val, TRUE);
-- cinfo.smoothing_factor = smDial.val;
-+ jpeg_set_quality(&cinfo, (int)qDial.val, TRUE);
-+ cinfo.smoothing_factor = (int)smDial.val;
-
-
- jpeg_start_compress(&cinfo, TRUE);
-@@ -804,7 +830,7 @@
- /*** COMMENT HANDLING ***/
-
- sprintf(xvcmt, "%sXV %s Quality = %d, Smoothing = %d\n",
-- CREATOR_STR, REVDATE, qDial.val, smDial.val);
-+ CREATOR_STR, REVDATE, (int)qDial.val, (int)smDial.val);
-
- if (picComments) { /* append XV comment */
- char *sp, *sp1; int done;
-@@ -866,4 +892,27 @@
-
-
-
-+
-+/*******************************************/
-+void
-+VersionInfoJPEG() /* GRR 19980605, 19980607 */
-+{
-+ int major = JPEG_LIB_VERSION / 10;
-+ int minor = JPEG_LIB_VERSION % 10;
-+ char minoralpha[2];
-+
-+ if (minor) {
-+ minoralpha[0] = (char)(minor - 1 + 'a');
-+ minoralpha[1] = '\0';
-+ } else
-+ minoralpha[0] = '\0';
-+
-+/* fprintf(stderr, " Compiled with libjpeg %d.%d.\n", major, minor); */
-+ fprintf(stderr, " Compiled with libjpeg %d%s.\n", major, minoralpha);
-+}
-+
-+
-+
-+
-+
- #endif /* HAVE_JPEG */
-diff -ruN xv-3.10a-bugfixes/xvmag.c xv-3.10a-enhancements/xvmag.c
---- xv-3.10a-bugfixes/xvmag.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvmag.c 2005-04-17 22:56:58.000000000 -0700
-@@ -0,0 +1,866 @@
-+/*
-+ * xvmag.c - load routine for `MAG' format pictures.
-+ *
-+ * The `MAG' format is used by many Japanese personal computer users.
-+ * This program is based on MAGBIBLE.DOC which is the specification
-+ * for `MAG' format written by Woody RINN. It is written in Japanese,
-+ * and exists in some anon-ftp sites.
-+ */
-+
-+#include "xv.h"
-+#include <setjmp.h>
-+
-+#ifdef HAVE_MAG
-+
-+typedef unsigned short data16;
-+
-+struct mag {
-+ jmp_buf jmp;
-+ FILE *fp;
-+ long fsize;
-+ int m_256, m_dig, m_8, m_200;
-+ int x1, y1, x2, y2, left_pad, right_pad;
-+ int p_width, p_height, width, height;
-+ long h_off, a_off, a_size, b_off, b_size, p_off, p_size;
-+ byte *a, *b, *p;
-+};
-+
-+static void mag_open_file PARM((struct mag*, char*));
-+static void mag_read_check_data PARM((struct mag*));
-+static void mag_read_comment PARM((struct mag*, char**));
-+static void mag_read_header PARM((struct mag*));
-+static void mag_read_palette PARM((struct mag*, byte*, byte*, byte*));
-+static void mag_read_flags PARM((struct mag*));
-+static void mag_read_pixel_data PARM((struct mag*));
-+static void mag_expand_body PARM((struct mag*, byte**));
-+
-+static void mag_compress_data PARM((struct mag*, byte*));
-+static void mag_write_check_data PARM((struct mag*));
-+static void mag_write_comment PARM((struct mag*, char *));
-+static void mag_write_palette PARM((struct mag*, int,
-+ byte*, byte*, byte*, int));
-+static void mag_write_flags PARM((struct mag*));
-+static void mag_write_pixel_data PARM((struct mag*));
-+static void mag_write_header PARM((struct mag*));
-+static void mag_set_double_word PARM((long, byte *));
-+
-+static void mag_init_info PARM((struct mag*));
-+static void mag_cleanup_mag_info PARM((struct mag*, int));
-+static void mag_cleanup_pinfo PARM((PICINFO*));
-+static void mag_memory_error PARM((char*, char*));
-+static void mag_error PARM((struct mag*, int));
-+static void mag_file_error PARM((struct mag*, int));
-+static void mag_file_warning PARM((struct mag*, int));
-+static void mag_show_struct PARM((struct mag*));
-+static void *mag_malloc PARM((size_t, char*));
-+static void *mag_realloc PARM((void*, size_t, char*));
-+
-+
-+static char *mag_id = "MAKI02 ";
-+static struct{
-+ int dx, dy;
-+}points[16] = {
-+ { 0, 0}, { 1, 0}, { 2, 0}, { 4, 0},
-+ { 0, 1}, { 1, 1},
-+ { 0, 2}, { 1, 2}, { 2, 2},
-+ { 0, 4}, { 1, 4}, { 2, 4},
-+ { 0, 8}, { 1, 8}, { 2, 8},
-+ { 0, 16},
-+};
-+static int try[15] = {1, 4, 5, 6, 7, 9, 10, 2, 8, 11, 12, 13, 14, 3, 15};
-+
-+static char *mag_msgs[] = {
-+ NULL,
-+#define MAG_OPEN 1
-+ "can't open file",
-+#define MAG_CORRUPT 2
-+ "file currupted.",
-+#define MAG_FORMAT 3
-+ "not MAG format.",
-+#define MAG_WRITE 4
-+ "write failed.",
-+};
-+
-+
-+#define H4(x) (((int) (x) >> 4) & 0x0f) /* operates on a byte */
-+#define L4(x) ((x) & 0x0f)
-+#define H8(x) (((x) >> 8) & 0xff) /* operates on a data16 */
-+#define L8(x) ((x) & 0xff)
-+
-+#define error(msgnum) longjmp(mi->jmp, msgnum)
-+
-+
-+/* The main routine to load a MAG file. */
-+int LoadMAG(fname, pinfo)
-+ char *fname;
-+ PICINFO *pinfo;
-+{
-+ struct mag mag;
-+ int e;
-+
-+ if(DEBUG) fputs("LoadMAG:\n", stderr);
-+
-+ pinfo->comment = NULL;
-+ mag_init_info(&mag);
-+ if((e = setjmp(mag.jmp)) != 0){
-+ /* When an error occurs, comes here. */
-+ mag_cleanup_mag_info(&mag, 0);
-+ mag_cleanup_pinfo(pinfo);
-+ return 0;
-+ }
-+
-+ mag_open_file(&mag, fname);
-+ mag_read_check_data(&mag);
-+ mag_read_comment(&mag, &pinfo->comment);
-+ mag_read_header(&mag);
-+ mag_read_palette(&mag, pinfo->r, pinfo->g, pinfo->b);
-+ mag_read_flags(&mag);
-+ mag_read_pixel_data(&mag);
-+ mag_expand_body(&mag, &pinfo->pic);
-+
-+ pinfo->w = pinfo->normw = mag.width;
-+ pinfo->h = pinfo->normh = mag.height;
-+ pinfo->type = PIC8;
-+ pinfo->frmType = F_MAG;
-+ pinfo->colType = F_FULLCOLOR;
-+ sprintf(pinfo->fullInfo, "MAG, %d colors%s (%ld bytes)",
-+ mag.m_256 ? 256 : (mag.m_8 ? 8 : 16),
-+ mag.m_200 ? ", aspect 0.5" : "", mag.fsize);
-+ sprintf(pinfo->shrtInfo, "%dx%d MAG", mag.width, mag.height);
-+ if(mag.m_200)
-+ normaspect = 0.5;
-+
-+ mag_cleanup_mag_info(&mag, 0);
-+ return 1;
-+}
-+
-+static void mag_open_file(mi, fname)
-+ struct mag *mi;
-+ char *fname;
-+{
-+ if((mi->fp = fopen(fname, "rb")) == NULL)
-+ mag_file_error(mi, MAG_OPEN);
-+ fseek(mi->fp, (size_t) 0, SEEK_END);
-+ mi->fsize = ftell(mi->fp);
-+ fseek(mi->fp, (size_t) 0, SEEK_SET);
-+}
-+
-+static void mag_read_check_data(mi)
-+ struct mag *mi;
-+{
-+ char buffer[8];
-+
-+ if(fread(buffer, (size_t) 8, (size_t) 1, mi->fp) != 1)
-+ mag_file_error(mi, MAG_CORRUPT);
-+ if(strncmp(buffer, mag_id, (size_t) 8) != 0)
-+ mag_error(mi, MAG_FORMAT);
-+}
-+
-+static void mag_read_comment(mi, p)
-+ struct mag *mi;
-+ char **p;
-+{
-+ int max = -1, i = 0;
-+ int c;
-+
-+ while((c = fgetc(mi->fp)) != EOF){
-+ if(c == 0x1a)
-+ break;
-+ if(max < i){
-+ max += 16;
-+ *p = mag_realloc(*p, (size_t) max + 1, "mag_read_comment#1");
-+ }
-+ (*p)[i++] = c;
-+ }
-+
-+ if(c == EOF)
-+ mag_file_error(mi, MAG_CORRUPT);
-+
-+ if(max < i){
-+ *p = mag_realloc(*p, (size_t) max + 2, "mag_read_comment#2");
-+ }
-+ if(i > 24){
-+ (*p)[i] = '\0';
-+ strcpy(*p, &(*p)[24]);
-+ }else{
-+ (*p)[0] = '\0';
-+ }
-+}
-+
-+static void mag_read_header(mi)
-+ struct mag *mi;
-+{
-+ byte buf[32];
-+
-+ mi->h_off = ftell(mi->fp);
-+
-+ if(fread(buf, (size_t) 32, (size_t) 1, mi->fp) != 1)
-+ mag_file_error(mi, MAG_CORRUPT);
-+
-+ mi->m_256 = buf[3] & 0x80;
-+ mi->m_dig = buf[3] & 0x04;
-+ mi->m_8 = buf[3] & 0x02;
-+ mi->m_200 = buf[3] & 0x01;
-+
-+ mi->x1 = buf[ 4] + buf[ 5] * 256;
-+ mi->y1 = buf[ 6] + buf[ 7] * 256;
-+ mi->x2 = buf[ 8] + buf[ 9] * 256;
-+ mi->y2 = buf[10] + buf[11] * 256;
-+
-+#define get_dword(a, b, c, d) \
-+ ((long)(a) << 24 | (long)(b) << 16 | (long)(c) << 8 | (long)(d))
-+
-+ mi->a_off = get_dword(buf[15], buf[14], buf[13], buf[12]);
-+ mi->b_off = get_dword(buf[19], buf[18], buf[17], buf[16]);
-+ mi->b_size = get_dword(buf[23], buf[22], buf[21], buf[20]);
-+ mi->p_off = get_dword(buf[27], buf[26], buf[25], buf[24]);
-+ mi->p_size = get_dword(buf[31], buf[30], buf[29], buf[28]);
-+#undef get_dword
-+
-+ mi->a_size = mi->b_off - mi->a_off;
-+ mi->a_off += mi->h_off;
-+ mi->b_off += mi->h_off;
-+ mi->p_off += mi->h_off;
-+
-+ mi->width = mi->x2 - mi->x1 + 1;
-+ mi->height = mi->y2 - mi->y1 + 1;
-+ mi->left_pad = mi->x1 & 07;
-+ mi->right_pad = 07 - (mi->x2 & 07);
-+ mi->x1 -= mi->left_pad; /* x1 = 8m */
-+ mi->x2 += mi->right_pad; /* x2 = 8n+7 */
-+ mi->p_width = ((mi->x2 + 1) - mi->x1) / (mi->m_256 ? 2 : 4);
-+ mi->p_height = (mi->y2 + 1) - mi->y1;
-+
-+ if(DEBUG) mag_show_struct(mi);
-+}
-+
-+static void mag_read_palette(mi, r, g, b)
-+ struct mag *mi;
-+ byte *r, *g, *b;
-+{
-+ int num_palettes;
-+ byte *buf;
-+
-+ if(mi->m_256)
-+ num_palettes = 256;
-+ else
-+ num_palettes = 16;
-+
-+ buf = mag_malloc((size_t)num_palettes * 3, "mag_read_palette");
-+
-+ if(fread(buf, (size_t) 3, (size_t) num_palettes, mi->fp) != num_palettes){
-+ free(buf);
-+ mag_file_error(mi, MAG_CORRUPT);
-+ }
-+
-+ for(num_palettes--; num_palettes >= 0; num_palettes--){
-+ g[num_palettes] = buf[num_palettes * 3 ];
-+ r[num_palettes] = buf[num_palettes * 3 + 1];
-+ b[num_palettes] = buf[num_palettes * 3 + 2];
-+ }
-+
-+ free(buf);
-+}
-+
-+static void mag_read_flags(mi)
-+ struct mag *mi;
-+{
-+ mi->a = mag_malloc((size_t) mi->a_size, "mag_read_flags#1");
-+ mi->b = mag_malloc((size_t) mi->b_size, "mag_read_flags#2");
-+
-+ fseek(mi->fp, mi->a_off, SEEK_SET);
-+ if(fread(mi->a, (size_t) mi->a_size, (size_t) 1, mi->fp) != 1)
-+ mag_file_warning(mi, MAG_CORRUPT);
-+ if(fread(mi->b, (size_t) mi->b_size, (size_t) 1, mi->fp) != 1)
-+ mag_file_warning(mi, MAG_CORRUPT);
-+}
-+
-+static void mag_read_pixel_data(mi)
-+ struct mag *mi;
-+{
-+ mi->p = mag_malloc((size_t) mi->p_size, "mag_read_pixel_data");
-+
-+ fseek(mi->fp, mi->p_off, SEEK_SET);
-+ if(fread(mi->p, (size_t) mi->p_size, (size_t) 1, mi->fp) != 1)
-+ mag_file_warning(mi, MAG_CORRUPT);
-+}
-+
-+/* MAG expanding routine */
-+static void mag_expand_body(mi, pic0)
-+ struct mag *mi;
-+ byte **pic0;
-+{
-+ int ai, bi, fi, pi;
-+ int px, py, x, y;
-+ byte *flag;
-+ byte mask;
-+ data16 *pixel0;
-+
-+ flag = mag_malloc((size_t) mi->p_width / 2, "mag_expand_body#1");
-+ *pic0 = mag_malloc((size_t) mi->width * mi->height, "mag_expand_body#2"); // GRR POSSIBLE OVERFLOW / FIXME
-+ pixel0 = mag_malloc((size_t) 2 * mi->p_width * 17, "mag_expand_body#3"); // GRR POSSIBLE OVERFLOW / FIXME
-+
-+#define pixel(x, y) pixel0[(y) % 17 * mi->p_width + (x)]
-+
-+ ai = bi = pi = 0;
-+ mask = 0x80;
-+ for(y = py = 0; py < mi->p_height; py++){
-+ for(fi = 0; fi < mi->p_width / 2; fi++){
-+ if(py == 0){
-+ if(mi->a[ai] & mask)
-+ flag[fi] = mi->b[bi++];
-+ else
-+ flag[fi] = 0;
-+ }else{
-+ if(mi->a[ai] & mask)
-+ flag[fi] ^= mi->b[bi++];
-+ }
-+ if((mask >>= 1) == 0){
-+ mask = 0x80;
-+ ai++;
-+ }
-+ }
-+
-+ for(px = fi = 0; fi < mi->p_width / 2; fi++){
-+ int f = H4(flag[fi]);
-+ if(f == 0){
-+ pixel(px, py) = mi->p[pi] + mi->p[pi + 1] * 256;
-+ px++;
-+ pi+=2;
-+ }else{
-+ int dx = points[f].dx, dy = points[f].dy;
-+ pixel(px, py) = pixel(px - dx, py - dy);
-+ px++;
-+ }
-+
-+ f = L4(flag[fi]);
-+ if(f == 0){
-+ pixel(px, py) = mi->p[pi] + mi->p[pi + 1] * 256;
-+ px++;
-+ pi+=2;
-+ }else{
-+ int dx = points[f].dx, dy = points[f].dy;
-+ pixel(px, py) = pixel(px - dx, py - dy);
-+ px++;
-+ }
-+ }
-+
-+#define inside(x) ((unsigned int)(x) < mi->width)
-+#define pic(x, y) (*pic0)[(y) * mi->width + (x)]
-+ for(x = -mi->left_pad, px = 0; px < mi->p_width; px++){
-+ data16 p = pixel(px, py);
-+ if(mi->m_256){
-+ if(inside(x))
-+ pic(x, y) = L8(p);
-+ x++;
-+ if(inside(x))
-+ pic(x, y) = H8(p);
-+ x++;
-+ }else{
-+ if(inside(x))
-+ pic(x, y) = H4(L8(p));
-+ x++;
-+ if(inside(x))
-+ pic(x, y) = L4(L8(p));
-+ x++;
-+ if(inside(x))
-+ pic(x, y) = H4(H8(p));
-+ x++;
-+ if(inside(x))
-+ pic(x, y) = L4(H8(p));
-+ x++;
-+ }
-+ }
-+ y++;
-+ }
-+#undef pic
-+#undef inside
-+#undef pixel
-+
-+ free(flag);
-+ free(pixel0);
-+}
-+
-+
-+/* The main routine to write a MAG file. */
-+int WriteMAG(fp, pic, ptype, w, h, rmap, gmap, bmap, numcols, colorstyle,
-+ comment)
-+ FILE *fp;
-+ byte *pic;
-+ int ptype, w, h;
-+ byte *rmap, *gmap, *bmap;
-+ int numcols, colorstyle;
-+ char *comment;
-+{
-+ byte rtemp[256], gtemp[256], btemp[256];
-+ struct mag mag;
-+ int e;
-+
-+ if(DEBUG) fputs("WriteMag\n", stderr);
-+
-+ mag_init_info(&mag);
-+ mag.fp = fp;
-+
-+ if(ptype == PIC24){
-+ if(!(pic = Conv24to8(pic, w, h, 256, rtemp, gtemp, btemp)))
-+ mag_memory_error("Conv24to8", "WriteMAG");
-+ rmap = rtemp;
-+ gmap = gtemp;
-+ bmap = btemp;
-+ numcols = 256;
-+ mag.m_256 = 1;
-+ }else{
-+ if(numcols > 16)
-+ mag.m_256 = 1;
-+ }
-+
-+ if((e = setjmp(mag.jmp)) != 0){
-+ /* When an error occurs, comes here. */
-+ mag_cleanup_mag_info(&mag, 1);
-+ return -1;
-+ }
-+
-+ mag.x2 = w - 1;
-+ mag.y2 = h - 1;
-+ mag.right_pad = 07 - (mag.x2 & 07);
-+ mag.p_width = (w + mag.right_pad) / (mag.m_256 ? 2 : 4);
-+ mag.p_height = h;
-+ mag.width = w;
-+ mag.height = h;
-+ mag.a_size = (mag.p_width * mag.p_height + 15) / 16; /* x/2/8 */ // GRR POSSIBLE OVERFLOW / FIXME
-+ if(mag.a_size % 2)
-+ mag.a_size++;
-+
-+ mag_compress_data(&mag, pic);
-+ mag_write_check_data(&mag);
-+ mag_write_comment(&mag, comment);
-+
-+ mag.h_off = ftell(mag.fp);
-+
-+ mag_write_palette(&mag, numcols, rmap, gmap, bmap,
-+ colorstyle == F_GREYSCALE);
-+ mag_write_flags(&mag);
-+ mag_write_pixel_data(&mag);
-+ mag_write_header(&mag);
-+
-+ mag_cleanup_mag_info(&mag, 1);
-+ return 0;
-+}
-+
-+/* MAG compressing routine */
-+static void mag_compress_data(mi, pic0)
-+ struct mag *mi;
-+ byte *pic0;
-+{
-+ int ai, bi, pi, i;
-+ int bmax, pmax;
-+ byte mask;
-+ byte *flag0;
-+ data16 *pixel0;
-+ int px, py, x, y;
-+
-+ pixel0 = mag_malloc((size_t) 2 * mi->p_width * mi->p_height, // GRR POSSIBLE OVERFLOW / FIXME
-+ "mag_compress_data#1");
-+ flag0 = mag_malloc((size_t) mi->p_width * mi->p_height, // GRR POSSIBLE OVERFLOW / FIXME
-+ "mag_compress_data#2");
-+
-+#define pic(x, y) pic0[(y) * mi->width + (x)]
-+ /* convert dots to pixels */
-+ i = 0;
-+ for(y = py = 0; py < mi->p_height; py++){
-+ for(x = px = 0; px < mi->p_width; px++){
-+ data16 p = 0;
-+ if(mi->m_256){
-+ if(x < mi->width)
-+ p += pic(x, y);
-+ x++;
-+ if(x < mi->width)
-+ p += pic(x, y) * 256;
-+ x++;
-+ }else{
-+ if(x < mi->width)
-+ p += pic(x, y) * 16;
-+ x++;
-+ if(x < mi->width)
-+ p += pic(x, y);
-+ x++;
-+ if(x < mi->width)
-+ p += pic(x, y) * 4096;
-+ x++;
-+ if(x < mi->width)
-+ p += pic(x, y) * 256;
-+ x++;
-+ }
-+ pixel0[i++] = p;
-+ }
-+ y++;
-+ }
-+#undef pic
-+
-+#define pixel(x, y) pixel0[(y) * mi->p_width + (x)]
-+#define flag(x, y) flag0[(y) * mi->p_width + (x)]
-+ /* get flags */
-+ pmax = pi = 0;
-+ for(py = 0; py < mi->p_height; py++){
-+ for(px = 0; px < mi->p_width; px++){
-+ int t;
-+ for(t = 0; t < 15; t++){
-+ int dx = points[try[t]].dx, dy = points[try[t]].dy;
-+ if(dx <= px && dy <= py){
-+ if(pixel(px - dx, py - dy) == pixel(px, py))
-+ break;
-+ }
-+ }
-+ if(t < 15){
-+ flag(px, py) = try[t];
-+ }else{
-+ flag(px, py) = 0;
-+ if(pmax <= pi + 1){
-+ pmax += 128;
-+ mi->p = mag_realloc(mi->p, (size_t) pmax,
-+ "mag_compress_data#3");
-+ }
-+ mi->p[pi++] = L8(pixel(px, py));
-+ mi->p[pi++] = H8(pixel(px, py));
-+ }
-+ }
-+ }
-+#undef flag
-+#undef pixel
-+
-+ /* pack 2 flags into 1 byte */
-+ for(i = 0; i < mi->p_width / 2 * mi->p_height; i++)
-+ flag0[i] = flag0[i * 2] * 16 + flag0[i * 2 + 1];
-+
-+#define flag(x, y) flag0[(y) * mi->p_width / 2 + (x)]
-+ for(py = mi->p_height - 1; py >= 1; py--){
-+ for(px = 0; px < mi->p_width / 2; px++)
-+ flag(px, py) ^= flag(px, py - 1);
-+ }
-+#undef flag
-+
-+ mask = 0x80;
-+ ai = bi = bmax = 0;
-+ mi->a = mag_malloc((size_t) mi->a_size, "mag_compress_data#4"); // GRR POSSIBLE OVERFLOW / FIXME
-+ for(i = 0; i < mi->p_width / 2 * mi->p_height; i++){
-+ if(flag0[i] == 0){
-+ mi->a[ai] &= ~mask;
-+ }else{
-+ if(bmax == bi){
-+ bmax += 128;
-+ mi->b = mag_realloc(mi->b, (size_t) bmax,
-+ "mag_compress_data#4");
-+ }
-+ mi->b[bi++] = flag0[i];
-+ mi->a[ai] |= mask;
-+ }
-+
-+ if((mask >>= 1) == 0){
-+ mask = 0x80;
-+ ai++;
-+ }
-+ }
-+
-+ if(bi % 2)
-+ bi++;
-+ mi->b_size = bi;
-+
-+ mi->p_size = pi;
-+
-+ free(pixel0);
-+ free(flag0);
-+}
-+
-+static void mag_write_check_data(mi)
-+ struct mag *mi;
-+{
-+ if(fwrite(mag_id, (size_t) 8, (size_t) 1, mi->fp) != 1)
-+ mag_file_error(mi, MAG_WRITE);
-+}
-+
-+static void mag_write_comment(mi, comment)
-+ struct mag *mi;
-+ char *comment;
-+{
-+ char *p;
-+ int i;
-+
-+ if(fputs("XV ", mi->fp) == EOF)
-+ mag_file_error(mi, MAG_WRITE);
-+
-+ if((p = (char *) getenv("USER")) == NULL)
-+ p = "????????";
-+ for(i = 5; i < 24; i++){
-+ if(*p == '\0')
-+ break;
-+ if(fputc(*p++, mi->fp) == EOF)
-+ mag_file_error(mi, MAG_WRITE);
-+ }
-+ for( ; i < 24; i++){
-+ if(fputc(' ', mi->fp) == EOF)
-+ mag_file_error(mi, MAG_WRITE);
-+ }
-+
-+ if(comment){
-+ int l = strlen(comment);
-+ if(l > 0){
-+ int i;
-+ for(i = 0; i < l; i++){
-+ if(comment[i] == 0x1a)
-+ comment[i] = ' ';
-+ }
-+ if(fwrite(comment, (size_t) l, (size_t) 1, mi->fp) != 1)
-+ mag_file_error(mi, MAG_WRITE);
-+ }
-+ }
-+
-+ if(fputc(0x1a, mi->fp) == EOF)
-+ mag_file_error(mi, MAG_WRITE);
-+}
-+
-+static void mag_write_palette(mi, num, r, g, b, grey)
-+ struct mag *mi;
-+ int num;
-+ byte *r, *g, *b;
-+ int grey;
-+{
-+ int i, left;
-+ char buf[3];
-+
-+ fseek(mi->fp, 32L, SEEK_CUR); /* skip header area */
-+ for(i = 0; i < num; i++){
-+ buf[0] = *g++;
-+ buf[1] = *r++;
-+ buf[2] = *b++;
-+ if(grey)
-+ buf[0] = buf[1] = buf[2] = MONO(buf[1], buf[0], buf[2]);
-+ if(fwrite(buf, (size_t) 3, (size_t) 1, mi->fp) != 1)
-+ mag_file_error(mi, MAG_WRITE);
-+ }
-+ if(num < 16){
-+ left = 16 - num;
-+ }else if(num == 16){
-+ left = 0;
-+ }else if(num < 256){
-+ left = 256 - num;
-+ }else if(num == 256){
-+ left = 0;
-+ }else
-+ left = 0; /* shouldn't happen */
-+
-+ if(left > 0){
-+ for(i = 0; i < left; i++){
-+ if(fwrite(buf, (size_t) 3, (size_t) 1, mi->fp) != 1)
-+ mag_file_error(mi, MAG_WRITE);
-+ }
-+ }
-+}
-+
-+static void mag_write_flags(mi)
-+ struct mag *mi;
-+{
-+ int i;
-+
-+ mi->a_off = ftell(mi->fp);
-+ for(i = 0; i < mi->a_size; i++){
-+ if(fputc(mi->a[i], mi->fp) == EOF)
-+ mag_file_error(mi, MAG_WRITE);
-+ }
-+
-+ mi->b_off = ftell(mi->fp);
-+ for(i = 0; i < mi->b_size; i++){
-+ if(fputc(mi->b[i], mi->fp) == EOF)
-+ mag_file_error(mi, MAG_WRITE);
-+ }
-+}
-+
-+static void mag_write_pixel_data(mi)
-+ struct mag *mi;
-+{
-+ int i;
-+
-+ mi->p_off = ftell(mi->fp);
-+ for(i = 0; i < mi->p_size; i++){
-+ if(fputc(mi->p[i], mi->fp) == EOF)
-+ mag_file_error(mi, MAG_WRITE);
-+ }
-+}
-+
-+static void mag_write_header(mi)
-+ struct mag *mi;
-+{
-+ byte buf[32];
-+
-+ if(DEBUG) mag_show_struct(mi);
-+
-+ mi->a_off -= mi->h_off;
-+ mi->b_off -= mi->h_off;
-+ mi->p_off -= mi->h_off;
-+
-+ buf[ 0] = buf[1] = buf[2] = 0;
-+ buf[ 3] = (mi->m_256 ? 0x80 : 0);
-+ buf[ 4] = buf[5] = 0;
-+ buf[ 6] = buf[7] = 0;
-+ buf[ 8] = L8(mi->x2);
-+ buf[ 9] = H8(mi->x2);
-+ buf[10] = L8(mi->y2);
-+ buf[11] = H8(mi->y2);
-+ mag_set_double_word(mi->a_off, &buf[12]);
-+ mag_set_double_word(mi->b_off, &buf[16]);
-+ mag_set_double_word(mi->b_size, &buf[20]);
-+ mag_set_double_word(mi->p_off, &buf[24]);
-+ mag_set_double_word(mi->p_size, &buf[28]);
-+
-+ fseek(mi->fp, mi->h_off, SEEK_SET);
-+ if(fwrite(buf, (size_t) 32, (size_t) 1, mi->fp) != 1)
-+ mag_file_error(mi, MAG_WRITE);
-+}
-+
-+static void mag_set_double_word(n, p)
-+ long n;
-+ byte *p;
-+{
-+ p[0] = n % 256; /* ugly...anything wrong with shift/mask operations? */
-+ p[1] = n / 256 % 256; /* (n >> 8) & 0xff */
-+ p[2] = n / 256 / 256 % 256; /* (n >> 16) & 0xff */
-+ p[3] = n / 256 / 256 / 256 % 256; /* (n >> 24) & 0xff */
-+}
-+
-+/*
-+ * The routines to initialize or clean up.
-+ * mag_init_info:
-+ * initializes a mag structure.
-+ * mag_cleanup_mag_info:
-+ * cleans up a mag structure.
-+ * mag_cleanup_pinfo:
-+ * cleans up a PICINFO structure.
-+ */
-+static void mag_init_info(mi)
-+ struct mag *mi;
-+{
-+ mi->fp = NULL;
-+ mi->fsize = 0;
-+ mi->m_256 = mi->m_dig = mi->m_8 = mi->m_200 = 0;
-+ mi->x1 = mi->y1 = mi->x2 = mi->y2 = 0;
-+ mi->left_pad = mi->right_pad = 0;
-+ mi->p_width = mi->p_height = mi->width = mi->height = 0;
-+ mi->h_off = mi->p_off = mi->p_size = 0;
-+ mi->a_off = mi->a_size = mi->b_off = mi->b_size = 0;
-+ mi->a = NULL;
-+ mi->b = NULL;
-+ mi->p = NULL;
-+}
-+
-+static void mag_cleanup_mag_info(mi, writing)
-+ struct mag *mi;
-+ int writing;
-+{
-+ if(mi->fp && !writing)
-+ fclose(mi->fp);
-+ if(mi->a)
-+ free(mi->a);
-+ if(mi->b)
-+ free(mi->b);
-+ if(mi->p)
-+ free(mi->p);
-+}
-+
-+static void mag_cleanup_pinfo(pinfo)
-+ PICINFO *pinfo;
-+{
-+ if(pinfo->comment){
-+ free(pinfo->comment);
-+ pinfo->comment = NULL;
-+ }
-+ if(pinfo->pic){
-+ free(pinfo->pic);
-+ pinfo->pic = NULL;
-+ }
-+}
-+
-+/*
-+ * Error handler.
-+ * mag_memory_error:
-+ * shows an error message, and terminates.
-+ * mag_error:
-+ * shows an non-file error message, and jumps to the entry for errors.
-+ * mag_file_error:
-+ * shows an file error message, and jumps to the entry for errors.
-+ * mag_file_warning:
-+ * shows an file warning message.
-+ */
-+static void mag_memory_error(scm, fn)
-+ char *scm, *fn;
-+{
-+ char buf[128];
-+ sprintf(buf, "%s: can't allocate memory. (%s)", scm, fn);
-+ FatalError(buf);
-+}
-+
-+static void mag_error(mi, mn)
-+ struct mag *mi;
-+ int mn;
-+{
-+ SetISTR(ISTR_WARNING, "%s", mag_msgs[mn]);
-+ longjmp(mi->jmp, 1);
-+}
-+
-+static void mag_file_error(mi, mn)
-+ struct mag *mi;
-+ int mn;
-+{
-+ if(feof(mi->fp))
-+ SetISTR(ISTR_WARNING, "%s (end of file)", mag_msgs[mn]);
-+ else
-+ SetISTR(ISTR_WARNING, "%s (%s)", mag_msgs[mn], ERRSTR(errno));
-+ longjmp(mi->jmp, 1);
-+}
-+
-+static void mag_file_warning(mi, mn)
-+ struct mag *mi;
-+ int mn;
-+{
-+ if(feof(mi->fp))
-+ SetISTR(ISTR_WARNING, "%s (end of file)", mag_msgs[mn]);
-+ else
-+ SetISTR(ISTR_WARNING, "%s (%s)", mag_msgs[mn], ERRSTR(errno));
-+}
-+
-+static void mag_show_struct (mi)
-+ struct mag *mi;
-+{
-+ fprintf(stderr, " 256 colors: %s\n", mi->m_256 ? "true" : "false");
-+ fprintf(stderr, " 8 colors: %s\n", mi->m_8 ? "true" : "false");
-+ fprintf(stderr, " digital colors: %s\n", mi->m_dig ? "true" : "false");
-+ fprintf(stderr, " aspect ratio: %f\n", mi->m_200 ? 0.5 : 1.0);
-+ fprintf(stderr, " image size: %dx%d\n", mi->width, mi->height);
-+ fprintf(stderr, " left pad: %d\n", mi->left_pad);
-+ fprintf(stderr, " right pad: %d\n", mi->right_pad);
-+ fprintf(stderr, " h_off: %ld\n", mi->h_off);
-+ fprintf(stderr, " A: off:%ld, size:%ld\n", mi->a_off, mi->a_size);
-+ fprintf(stderr, " B: off:%ld, size:%ld\n", mi->b_off, mi->b_size);
-+ fprintf(stderr, " P: off:%ld, size:%ld\n", mi->p_off, mi->p_size);
-+}
-+
-+/* Memory related routines. */
-+static void *mag_malloc(n, fn)
-+ size_t n;
-+ char *fn;
-+{
-+ void *r = (void *) malloc(n);
-+ if(r == NULL)
-+ mag_memory_error("malloc", fn);
-+ return r;
-+}
-+
-+static void *mag_realloc(p, n, fn)
-+ void *p;
-+ size_t n;
-+ char *fn;
-+{
-+ void *r = (p == NULL) ? (void *) malloc(n) : (void *) realloc(p, n);
-+ if(r == NULL)
-+ mag_memory_error("realloc", fn);
-+ return r;
-+}
-+#endif /* HAVE_MAG */
-diff -ruN xv-3.10a-bugfixes/xvmaki.c xv-3.10a-enhancements/xvmaki.c
---- xv-3.10a-bugfixes/xvmaki.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvmaki.c 2005-04-17 22:57:01.000000000 -0700
-@@ -0,0 +1,794 @@
-+/*
-+ * xvmaki.c - load routine for `MAKI' format pictures.
-+ *
-+ * The `MAKI' format was used by some Japanese personal computer users.
-+ */
-+
-+#include "xv.h"
-+#include <setjmp.h>
-+
-+#ifdef HAVE_MAKI
-+
-+typedef unsigned short data16;
-+typedef unsigned int data32;
-+
-+struct maki_info {
-+ jmp_buf jmp;
-+ FILE *fp;
-+ long fsize;
-+ int x0, y0, x1, y1;
-+ int width, height;
-+ float aspect;
-+ long fb_size;
-+ long pa_size, pb_size;
-+ int m_maki01b, m_200, m_dig8;
-+ data16 ext_flag;
-+ byte *fa, *fb, *pa, *pb;
-+ byte *vs;
-+ int numcols;
-+ byte *forma, *formb;
-+};
-+
-+
-+static void maki_open_file PARM((struct maki_info*, char*));
-+static void maki_check_id PARM((struct maki_info*));
-+static void maki_skip_comment PARM((struct maki_info*));
-+static void maki_read_header PARM((struct maki_info*));
-+static void maki_read_palette PARM((struct maki_info*,
-+ byte*, byte*, byte*));
-+static void maki_read_flags PARM((struct maki_info*));
-+static void maki_read_pixel_data PARM((struct maki_info*));
-+static void maki_expand_virtual_screen PARM((struct maki_info*));
-+static void maki_expand_pixel_data PARM((struct maki_info*, byte**));
-+static void maki_init_info PARM((struct maki_info*));
-+
-+static void maki_make_pixel_data PARM((struct maki_info*, byte*));
-+static void maki_make_virtual_screen PARM((struct maki_info*));
-+static void maki_make_flags PARM((struct maki_info*));
-+static void maki_write_check_id PARM((struct maki_info*));
-+static void maki_write_comment PARM((struct maki_info*));
-+static void maki_write_header PARM((struct maki_info*));
-+static void maki_write_palette PARM((struct maki_info*,
-+ byte*, byte*, byte*, int));
-+static void maki_write_flags PARM((struct maki_info*));
-+static void maki_write_pixel_data PARM((struct maki_info*));
-+
-+static void maki_cleanup_maki_info PARM((struct maki_info*, int));
-+static void maki_cleanup_pinfo PARM((PICINFO*));
-+static void maki_memory_error PARM((char*, char*));
-+static void maki_error PARM((struct maki_info*, int));
-+static void maki_file_error PARM((struct maki_info*, int));
-+static void maki_file_warning PARM((struct maki_info*, int));
-+static void maki_show_maki_info PARM((struct maki_info*));
-+static void *maki_malloc PARM((size_t, char*));
-+static void *maki_realloc PARM((void *, size_t, char*));
-+
-+static char maki_id_a[] = "MAKI01A ";
-+static char maki_id_b[] = "MAKI01B ";
-+
-+static char *maki_msgs[] = {
-+ NULL,
-+#define MAKI_OPEN 1
-+ "can't open file.",
-+#define MAKI_CORRUPT 2
-+ "file corrupted.",
-+#define MAKI_FORMAT 3
-+ "not MAKI format.",
-+#define MAKI_BAD_DATA 4
-+ "bad data.",
-+#define MAKI_COMMENT 5
-+ "no '^Z' after comment.",
-+#define MAKI_SIZE 6
-+ "bad size.",
-+#define MAKI_WRITE 7
-+ "write failed.",
-+};
-+
-+#define H4(b) ((b) >> 4 & 0xf)
-+#define L4(b) ((b) & 0xf)
-+#define error(msg_num) longjmp(mi->jmp, msg_num)
-+
-+int LoadMAKI(fname, pinfo)
-+ char *fname;
-+ PICINFO *pinfo;
-+{
-+ struct maki_info maki;
-+ int e;
-+
-+ if(DEBUG) fputs("LoadMAKI:\n", stderr);
-+
-+ pinfo->comment = NULL;
-+ maki_init_info(&maki);
-+ if((e = setjmp(maki.jmp)) != 0){
-+ /* When an error occurs, comes here. */
-+ maki_cleanup_maki_info(&maki, 0);
-+ maki_cleanup_pinfo(pinfo);
-+ return 0;
-+ }
-+
-+ maki_open_file(&maki, fname);
-+ maki_check_id(&maki);
-+ maki_skip_comment(&maki);
-+ maki_read_header(&maki);
-+ maki_read_palette(&maki, pinfo->r, pinfo->g, pinfo->b);
-+ maki_read_flags(&maki);
-+ maki_read_pixel_data(&maki);
-+ maki_expand_virtual_screen(&maki);
-+ maki_expand_pixel_data(&maki, &pinfo->pic);
-+
-+ pinfo->w = pinfo->normw = maki.width;
-+ pinfo->h = pinfo->normh = maki.height;
-+ pinfo->type = PIC8;
-+ pinfo->frmType = F_MAKI;
-+ pinfo->colType = F_FULLCOLOR;
-+ sprintf(pinfo->fullInfo, "MAKI, 16 colors (%ld bytes)", maki.fsize);
-+ sprintf(pinfo->shrtInfo, "%dx%d MAKI", maki.width, maki.height);
-+ normaspect = maki.aspect;
-+
-+ maki_cleanup_maki_info(&maki, 0);
-+ return 1;
-+}
-+
-+static void maki_open_file(mi, fname)
-+ struct maki_info *mi;
-+ char *fname;
-+{
-+ if((mi->fp = fopen(fname, "rb")) == NULL)
-+ maki_file_error(mi, MAKI_OPEN);
-+ fseek(mi->fp, (size_t) 0, SEEK_END);
-+ mi->fsize = ftell(mi->fp);
-+ fseek(mi->fp, (size_t) 0, SEEK_SET);
-+}
-+
-+static void maki_check_id(mi)
-+ struct maki_info *mi;
-+{
-+ char buf[8];
-+ if(fread(buf, (size_t) 8, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_CORRUPT);
-+ if(strncmp(buf, maki_id_a, (size_t) 8) != 0 &&
-+ strncmp(buf, maki_id_b, (size_t) 8) != 0)
-+ maki_error(mi, MAKI_FORMAT);
-+ mi->m_maki01b = (buf[6] == 'B');
-+}
-+
-+static void maki_skip_comment(mi)
-+ struct maki_info *mi;
-+{
-+ int i;
-+ int c;
-+
-+ for(i = 0; i < 24; i++){
-+ if((c = fgetc(mi->fp)) == EOF)
-+ maki_file_error(mi, MAKI_CORRUPT);
-+ if(c == '\032') /* ^Z, 0x1a */
-+ break;
-+ }
-+ if(c != '\032')
-+ maki_file_error(mi, MAKI_COMMENT);
-+
-+ fseek(mi->fp, 32L, SEEK_SET);
-+}
-+
-+static void maki_read_header(mi)
-+ struct maki_info *mi;
-+{
-+ byte buf[16];
-+
-+ if(fread(buf, (size_t) 16, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_CORRUPT);
-+
-+ mi->fb_size = (long)buf[ 0] << 8 | (long)buf[ 1];
-+ mi->pa_size = (long)buf[ 2] << 8 | (long)buf[ 3];
-+ mi->pb_size = (long)buf[ 4] << 8 | (long)buf[ 5];
-+ mi->ext_flag = (long)buf[ 6] << 8 | (long)buf[ 7];
-+ mi->x0 = (long)buf[ 8] << 8 | (long)buf[ 9];
-+ mi->y0 = (long)buf[10] << 8 | (long)buf[11];
-+ mi->x1 = (long)buf[12] << 8 | (long)buf[13];
-+ mi->y1 = (long)buf[14] << 8 | (long)buf[15];
-+
-+ mi->width = mi->x1-- - mi->x0;
-+ mi->height = mi->y1-- - mi->y0;
-+ mi->m_200 = mi->ext_flag & 1;
-+ mi->m_dig8 = mi->ext_flag & 2;
-+ mi->aspect = mi->m_200 ? 0.5 : 1.0;
-+
-+ if(DEBUG) maki_show_maki_info(mi);
-+}
-+
-+static void maki_read_palette(mi, r, g, b)
-+ struct maki_info *mi;
-+ byte *r, *g, *b;
-+{
-+ byte buf[48], *p;
-+
-+ if(fread(buf, (size_t) 48, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_CORRUPT);
-+
-+ for(p = buf; p < &buf[48]; ){
-+ *g++ = *p++;
-+ *r++ = *p++;
-+ *b++ = *p++;
-+ }
-+}
-+
-+static void maki_read_flags(mi)
-+ struct maki_info *mi;
-+{
-+ mi->fa = maki_malloc((size_t) 1000 , "maki_read_flags#1");
-+ mi->fb = maki_malloc((size_t) mi->fb_size, "maki_read_flags#2");
-+
-+ if(fread(mi->fa, (size_t) 1000, (size_t) 1, mi->fp) != 1)
-+ maki_file_warning(mi, MAKI_CORRUPT);
-+ if(fread(mi->fb, (size_t) mi->fb_size, (size_t) 1, mi->fp) != 1)
-+ maki_file_warning(mi, MAKI_CORRUPT);
-+}
-+
-+static void maki_read_pixel_data(mi)
-+ struct maki_info *mi;
-+{
-+ mi->pa = maki_malloc((size_t) mi->pa_size, "maki_read_pixel_data#1");
-+ mi->pb = maki_malloc((size_t) mi->pb_size, "maki_read_pixel_data#2");
-+
-+ if(fread(mi->pa, (size_t) mi->pa_size, (size_t) 1, mi->fp) != 1)
-+ maki_file_warning(mi, MAKI_CORRUPT);
-+ if(fread(mi->pb, (size_t) mi->pb_size, (size_t) 1, mi->fp) != 1)
-+ maki_file_warning(mi, MAKI_CORRUPT);
-+}
-+
-+static void maki_expand_virtual_screen(mi)
-+ struct maki_info *mi;
-+{
-+ int x, y, fai, fbi;
-+ int bpl = mi->width / 2 / 8; /* bytes per line */
-+ byte mask;
-+ mi->vs = maki_malloc((size_t) bpl * mi->height, // GRR POSSIBLE OVERFLOW / FIXME
-+ "maki_expand_virtual_screen");
-+
-+ fai = fbi = 0;
-+ mask = 0x80;
-+ for(y = 0; y < mi->height; y += 4){
-+ for(x = 0; x < mi->width / 2; x += 4){
-+ if(mi->fa[fai] & mask){
-+ byte bh, bl;
-+ bh = mi->fb[fbi++];
-+ bl = mi->fb[fbi++];
-+ if(x % 8 == 0){
-+ mi->vs[ y * bpl + x / 8] = H4(bh) << 4;
-+ mi->vs[(y + 1) * bpl + x / 8] = L4(bh) << 4;
-+ mi->vs[(y + 2) * bpl + x / 8] = H4(bl) << 4;
-+ mi->vs[(y + 3) * bpl + x / 8] = L4(bl) << 4;
-+ }else{
-+ mi->vs[ y * bpl + x / 8] |= H4(bh);
-+ mi->vs[(y + 1) * bpl + x / 8] |= L4(bh);
-+ mi->vs[(y + 2) * bpl + x / 8] |= H4(bl);
-+ mi->vs[(y + 3) * bpl + x / 8] |= L4(bl);
-+ }
-+ }else{
-+ if(x % 8 == 0){
-+ mi->vs[ y * bpl + x / 8] = 0;
-+ mi->vs[(y + 1) * bpl + x / 8] = 0;
-+ mi->vs[(y + 2) * bpl + x / 8] = 0;
-+ mi->vs[(y + 3) * bpl + x / 8] = 0;
-+ }else{
-+/* mi->vs[ y * bpl + x / 8] |= 0;
-+ mi->vs[(y + 1) * bpl + x / 8] |= 0;
-+ mi->vs[(y + 2) * bpl + x / 8] |= 0;
-+ mi->vs[(y + 3) * bpl + x / 8] |= 0; */
-+ }
-+ }
-+
-+ if((mask >>= 1) == 0){
-+ mask = 0x80;
-+ fai++;
-+ }
-+ }
-+ }
-+}
-+
-+static void maki_expand_pixel_data(mi, pic)
-+ struct maki_info *mi;
-+ byte **pic;
-+{
-+ int x, y;
-+ int vsi, pi, max_pi;
-+ byte *p;
-+ byte mask;
-+ int gap;
-+ *pic = maki_malloc((size_t) mi->width * mi->height, // GRR POSSIBLE OVERFLOW / FIXME
-+ "maki_expand_pixel_data");
-+
-+ vsi = pi = 0;
-+ p = mi->pa;
-+ max_pi = mi->pa_size - 1;
-+ mask = 0x80;
-+ for(y = 0; y < mi->height; y++){
-+ for(x = 0; x < mi->width; x += 2){
-+ if(mi->vs[vsi] & mask){
-+ if(pi > max_pi){
-+ if(p == mi->pb)
-+ maki_error(mi, MAKI_BAD_DATA);
-+ pi = 0;
-+ p = mi->pb;
-+ max_pi = mi->pb_size - 1;
-+ }
-+ (*pic)[y * mi->width + x ] = H4(p[pi]);
-+ (*pic)[y * mi->width + x + 1] = L4(p[pi]);
-+ pi++;
-+ }else{
-+ (*pic)[y * mi->width + x ] = 0;
-+ (*pic)[y * mi->width + x + 1] = 0;
-+ }
-+
-+ if((mask >>= 1) == 0){
-+ mask = 0x80;
-+ vsi++;
-+ }
-+ }
-+ }
-+
-+ gap = mi->m_maki01b ? 4 : 2;
-+
-+ for(y = gap; y < mi->height; y++){
-+ for(x = 0; x < mi->width; x++)
-+ (*pic)[y * mi->width + x] ^= (*pic)[(y - gap) * mi->width + x];
-+ }
-+}
-+
-+
-+int WriteMAKI(fp, pic, ptype, w, h, rmap, gmap, bmap, numcols, colorstyle)
-+ FILE *fp;
-+ byte *pic;
-+ int ptype, w, h;
-+ byte *rmap, *gmap, *bmap;
-+ int numcols, colorstyle;
-+{
-+ byte rtemp[256], gtemp[256], btemp[256];
-+ struct maki_info maki, *mi = &maki;
-+ int e;
-+
-+ if(DEBUG) fputs("WriteMAKI:\n", stderr);
-+
-+ maki_init_info(&maki);
-+ if((e = setjmp(maki.jmp)) != 0){
-+ /* An error occurs */
-+ maki_cleanup_maki_info(&maki, 1);
-+ return -1;
-+ }
-+
-+ if(w != 640 || h != 400) {
-+ char str[512];
-+ sprintf(str,"MAKI: %s Should be 640x400", maki_msgs[MAKI_SIZE]);
-+ ErrPopUp(str, "\nBummer!");
-+ maki_error(mi, MAKI_SIZE);
-+ }
-+
-+ maki.fp = fp;
-+ maki.width = w;
-+ maki.height = h;
-+ maki.x1 = w - 1;
-+ maki.y1 = h - 1;
-+
-+ if(ptype == PIC24){
-+ if(!(pic = Conv24to8(pic, w, h, 16, rtemp, gtemp, btemp)))
-+ maki_memory_error("Conv24to8#1", "WriteMAKI");
-+ rmap = rtemp;
-+ gmap = gtemp;
-+ bmap = btemp;
-+ }else if(numcols > 16){
-+ if(!(pic = Conv8to24(pic, w, h, rmap, gmap, bmap)))
-+ maki_memory_error("Conv8to24", "WriteMAKI");
-+ if(!(pic = Conv24to8(pic, w, h, 16, rtemp, gtemp, btemp)))
-+ maki_memory_error("Conv24to8#2", "WriteMAKI");
-+ rmap = rtemp;
-+ gmap = gtemp;
-+ bmap = btemp;
-+ }else
-+ maki.numcols = numcols;
-+
-+ maki_make_pixel_data(&maki, pic);
-+ maki_make_virtual_screen(&maki);
-+ maki_make_flags(&maki);
-+ maki_write_check_id(&maki);
-+ maki_write_comment(&maki);
-+ maki_write_header(&maki);
-+ maki_write_palette(&maki, rmap, gmap, bmap, colorstyle == F_GREYSCALE);
-+ maki_write_flags(&maki);
-+ maki_write_pixel_data(&maki);
-+
-+ maki_cleanup_maki_info(&maki, 1);
-+ return 0;
-+}
-+
-+static void maki_make_pixel_data(mi, pic)
-+ struct maki_info *mi;
-+ byte *pic;
-+{
-+ int x, y, i;
-+ int nza, nzb;
-+
-+ mi->forma = maki_malloc((size_t) mi->width / 2 * mi->height, // GRR POSSIBLE OVERFLOW / FIXME
-+ "maki_make_pixel_data#1");
-+ mi->formb = maki_malloc((size_t) mi->width / 2 * mi->height, // GRR POSSIBLE OVERFLOW / FIXME
-+ "maki_make_pixel_data#2");
-+
-+ for(y = 0; y < mi->height; y++){
-+ for(x = 0; x < mi->width; x += 2){
-+ byte b;
-+ b = pic[y * mi->width + x] << 4 | pic[y * mi->width + x + 1];
-+ mi->forma[y * mi->width / 2 + x / 2] = b;
-+ mi->formb[y * mi->width / 2 + x / 2] = b;
-+ }
-+ }
-+
-+ for(y = mi->height - 1; y >= 2; y--){
-+ for(x = 0; x < mi->width / 2; x++){
-+ mi->forma[y * mi->width / 2 + x] ^=
-+ mi->forma[(y - 2) * mi->width / 2 + x];
-+ }
-+ }
-+
-+ for(y = mi->height - 1; y >= 4; y--){
-+ for(x = 0; x < mi->width / 2; x++){
-+ mi->formb[y * mi->width / 2 + x] ^=
-+ mi->formb[(y - 4) * mi->width / 2 + x];
-+ }
-+ }
-+
-+ nza = nzb = 0;
-+ for(i = 0; i < mi->width / 2 * mi->height; i++){
-+ if(mi->forma[i] != 0)
-+ nza++;
-+ if(mi->formb[i] != 0)
-+ nzb++;
-+ }
-+ if(nza > nzb){
-+ mi->m_maki01b = 1;
-+ free(mi->forma);
-+ mi->forma = NULL;
-+ }else{
-+ mi->m_maki01b = 0;
-+ free(mi->formb);
-+ mi->formb = NULL;
-+ }
-+}
-+
-+static void maki_make_virtual_screen(mi)
-+ struct maki_info *mi;
-+{
-+ int bpl = mi->width / 2 / 8;
-+ int vsi, pai, pbi, max_pai, max_pbi;
-+ byte mask;
-+ byte *pixels;
-+ int x, y;
-+
-+ mi->vs = maki_malloc((size_t) bpl * mi->height, // GRR POSSIBLE OVERFLOW / FIXME
-+ "maki_make_virtual_screen#1");
-+
-+ if(mi->m_maki01b)
-+ pixels = mi->formb;
-+ else
-+ pixels = mi->forma;
-+
-+ vsi = pai = pbi = 0;
-+ max_pai = max_pbi = -1;
-+ mask = 0x80;
-+ for(y = 0; y < mi->height; y++){
-+ for(x = 0; x < mi->width / 2; x++){
-+ if(pixels[y * mi->width / 2 + x] == 0){
-+ mi->vs[vsi] &= ~mask;
-+ }else{
-+ mi->vs[vsi] |= mask;
-+ if(y < 200){
-+ if(pai > max_pai){
-+ max_pai += 1024;
-+ mi->pa = maki_realloc(mi->pa, (size_t) max_pai + 1,
-+ "maki_make_virtual_screen#2");
-+ }
-+ mi->pa[pai++] = pixels[y * mi->width / 2 + x];
-+ }else{
-+ if(pbi > max_pbi){
-+ max_pbi += 1024;
-+ mi->pb = maki_realloc(mi->pb, (size_t) max_pbi + 2,
-+ "maki_make_virtual_screen#3");
-+ }
-+ mi->pb[pbi++] = pixels[y * mi->width / 2 + x];
-+ }
-+ }
-+
-+ if((mask >>= 1) == 0){
-+ mask = 0x80;
-+ vsi++;
-+ }
-+ }
-+ }
-+
-+ mi->pa_size = pai;
-+ mi->pb_size = pbi;
-+}
-+
-+static void maki_make_flags(mi)
-+ struct maki_info *mi;
-+{
-+ int bpl = mi->width / 2 / 8;
-+ int fbi, max_fbi;
-+ int fai;
-+ int x, y;
-+ byte mask;
-+
-+ mi->fa = maki_malloc((size_t) bpl * mi->height, "maki_make_flags#1"); // GRR POSSIBLE OVERFLOW / FIXME
-+
-+ fbi = fai = 0;
-+ max_fbi = -1;
-+ mask = 0x80;
-+ for(y = 0; y < mi->height; y += 4){
-+ for(x = 0; x < mi->width / 2; x += 4){
-+ if(x % 8 == 0){
-+ if(H4(mi->vs[ y * bpl + x / 8]) == 0 &&
-+ H4(mi->vs[(y + 1) * bpl + x / 8]) == 0 &&
-+ H4(mi->vs[(y + 2) * bpl + x / 8]) == 0 &&
-+ H4(mi->vs[(y + 3) * bpl + x / 8]) == 0){
-+ mi->fa[fai] &= ~mask;
-+ }else{
-+ mi->fa[fai] |= mask;
-+ if(fbi + 1 > max_fbi){
-+ max_fbi += 1024;
-+ mi->fb = maki_realloc(mi->fb, (size_t) max_fbi + 1,
-+ "maki_make_flags#2");
-+ }
-+ mi->fb[fbi++] = H4(mi->vs[ y * bpl + x / 8]) << 4
-+ | H4(mi->vs[(y + 1) * bpl + x / 8]);
-+ mi->fb[fbi++] = H4(mi->vs[(y + 2) * bpl + x / 8]) << 4
-+ | H4(mi->vs[(y + 3) * bpl + x / 8]);
-+ }
-+ }else{
-+ if(L4(mi->vs[ y * bpl + x / 8]) == 0 &&
-+ L4(mi->vs[(y + 1) * bpl + x / 8]) == 0 &&
-+ L4(mi->vs[(y + 2) * bpl + x / 8]) == 0 &&
-+ L4(mi->vs[(y + 3) * bpl + x / 8]) == 0){
-+ mi->fa[fai] &= ~mask;
-+ }else{
-+ mi->fa[fai] |= mask;
-+ if(fbi + 1 > max_fbi){
-+ max_fbi += 1024;
-+ mi->fb = maki_realloc(mi->fb, (size_t) max_fbi + 1,
-+ "maki_make_flags#3");
-+ }
-+ mi->fb[fbi++] = L4(mi->vs[ y * bpl + x / 8]) << 4
-+ | L4(mi->vs[(y + 1) * bpl + x / 8]);
-+ mi->fb[fbi++] = L4(mi->vs[(y + 2) * bpl + x / 8]) << 4
-+ | L4(mi->vs[(y + 3) * bpl + x / 8]);
-+ }
-+ }
-+
-+ if((mask >>= 1) == 0){
-+ mask = 0x80;
-+ fai++;
-+ }
-+ }
-+ }
-+
-+ mi->fb_size = fbi;
-+}
-+
-+static void maki_write_check_id(mi)
-+ struct maki_info *mi;
-+{
-+ char *id = mi->m_maki01b ? maki_id_b : maki_id_a;
-+ if(fwrite(id, (size_t) 8, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_WRITE);
-+}
-+
-+static void maki_write_comment(mi)
-+ struct maki_info *mi;
-+{
-+ char buf[24];
-+ char *p;
-+ int i = 0;
-+
-+ strcpy(buf, "XV ");
-+
-+ if((p = (char *) getenv("USER")) == NULL)
-+ p = "????????";
-+ for(i = 5; i < 23; i++){
-+ if(*p == '\0')
-+ break;
-+ buf[i] = *p++;
-+ }
-+ for( ; i < 23; i++)
-+ buf[i] = ' ';
-+
-+ buf[i] = '\032'; /* ^Z, 0x1a */
-+
-+ if(fwrite(buf, (size_t) 24, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_WRITE);
-+}
-+
-+static void maki_write_header(mi)
-+ struct maki_info *mi;
-+{
-+ byte buf[16];
-+
-+ if(DEBUG) maki_show_maki_info(mi);
-+
-+#define set_word(i, v) {buf[i]=(v)>>8&0xff;buf[i+1]=(v)&0xff;}
-+ set_word(0, mi->fb_size);
-+ set_word(2, mi->pa_size);
-+ set_word(4, mi->pb_size);
-+ set_word(6, mi->ext_flag);
-+ set_word(8, mi->x0);
-+ set_word(10, mi->y0);
-+ set_word(12, mi->x1 + 1);
-+ set_word(14, mi->y1 + 1);
-+#undef set_word
-+
-+ if(fwrite(buf, (size_t) 16, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_WRITE);
-+}
-+
-+static void maki_write_palette(mi, r, g, b, grey)
-+ struct maki_info *mi;
-+ byte *r, *g, *b;
-+ int grey;
-+{
-+ int i;
-+ char buf[3];
-+ for(i = 0; i < mi->numcols; i++){
-+ buf[0] = *g++;
-+ buf[1] = *r++;
-+ buf[2] = *b++;
-+ if(grey)
-+ buf[0] = buf[1] = buf[2] = MONO(buf[1], buf[0], buf[2]);
-+ if(fwrite(buf, (size_t) 3, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_WRITE);
-+ }
-+ for( ; i < 16; i++){
-+ if(fwrite(buf, (size_t) 3, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_WRITE);
-+ }
-+}
-+
-+static void maki_write_flags(mi)
-+ struct maki_info *mi;
-+{
-+ int bpl = mi->width / 2 / 8;
-+ if(fwrite(mi->fa, (size_t) bpl * mi->height / 16, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_WRITE);
-+
-+ if(fwrite(mi->fb, (size_t) mi->fb_size, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_WRITE);
-+}
-+
-+static void maki_write_pixel_data(mi)
-+ struct maki_info *mi;
-+{
-+ if(fwrite(mi->pa, (size_t) mi->pa_size, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_WRITE);
-+
-+ if(fwrite(mi->pb, (size_t) mi->pb_size, (size_t) 1, mi->fp) != 1)
-+ maki_file_error(mi, MAKI_WRITE);
-+}
-+
-+
-+
-+static void maki_init_info(mi)
-+ struct maki_info *mi;
-+{
-+ xvbzero((char *)mi, sizeof(struct maki_info));
-+ mi->fp = NULL;
-+ mi->fsize = 0;
-+ mi->x0 = mi->y0 = mi->x1 = mi->y1 = 0;
-+ mi->width = mi->height = 0;
-+ mi->aspect = 1.0;
-+ mi->fb_size = mi->pa_size = mi->pb_size = 0;
-+ mi->m_maki01b = mi->m_200 = mi->m_dig8 = 0;
-+ mi->ext_flag = 0;
-+ mi->fa = mi->fb = mi->pa = mi->pb = NULL;
-+ mi->vs = NULL;
-+ mi->numcols = 16;
-+ mi->forma = mi->formb = NULL;
-+}
-+
-+static void maki_cleanup_maki_info(mi, writing)
-+ struct maki_info *mi;
-+ int writing;
-+{
-+ if(mi->fp && !writing)
-+ fclose(mi->fp);
-+ if(mi->fa)
-+ free(mi->fa);
-+ if(mi->fb)
-+ free(mi->fb);
-+ if(mi->pa)
-+ free(mi->pa);
-+ if(mi->pb)
-+ free(mi->pb);
-+ if(mi->vs)
-+ free(mi->vs);
-+ if(mi->forma)
-+ free(mi->forma);
-+ if(mi->formb)
-+ free(mi->formb);
-+}
-+
-+static void maki_cleanup_pinfo(pi)
-+ PICINFO *pi;
-+{
-+ if(pi->pic){
-+ free(pi->pic);
-+ pi->pic = NULL;
-+ }
-+}
-+
-+static void maki_memory_error(scm, fn)
-+ char *scm, *fn;
-+{
-+ char buf[128];
-+ sprintf(buf, "%s: coulndn't allocate memory. (%s)", scm, fn);
-+ FatalError(buf);
-+}
-+
-+static void maki_error(mi, mn)
-+ struct maki_info *mi;
-+ int mn;
-+{
-+ SetISTR(ISTR_WARNING, "%s", maki_msgs[mn]);
-+ longjmp(mi->jmp, 1);
-+}
-+
-+static void maki_file_error(mi, mn)
-+ struct maki_info *mi;
-+ int mn;
-+{
-+ if(feof(mi->fp))
-+ SetISTR(ISTR_WARNING, "%s (end of file)", maki_msgs[mn]);
-+ else
-+ SetISTR(ISTR_WARNING, "%s (%s)", maki_msgs[mn], ERRSTR(errno));
-+ longjmp(mi->jmp, 1);
-+}
-+
-+static void maki_file_warning(mi, mn)
-+ struct maki_info *mi;
-+ int mn;
-+{
-+ if(feof(mi->fp))
-+ SetISTR(ISTR_WARNING, "%s (end of file)", maki_msgs[mn]);
-+ else
-+ SetISTR(ISTR_WARNING, "%s (%s)", maki_msgs[mn], ERRSTR(errno));
-+}
-+
-+static void maki_show_maki_info(mi)
-+ struct maki_info *mi;
-+{
-+ fprintf(stderr, " file size: %ld.\n", mi->fsize);
-+ fprintf(stderr, " image size: %dx%d.\n", mi->width, mi->height);
-+ fprintf(stderr, " aspect: %f.\n", mi->aspect);
-+ fprintf(stderr, " flag B size: %ld.\n", mi->fb_size);
-+ fprintf(stderr, " pixel data size: A:%ld, B:%ld.\n",
-+ mi->pa_size, mi->pb_size);
-+ fprintf(stderr, " MAKI01B: %s.\n", mi->m_maki01b ? "true" : "false");
-+ fprintf(stderr, " 200 line mode: %s.\n", mi->m_200 ? "true" : "false");
-+ fprintf(stderr, " digital 8 colors: %s.\n", mi->m_dig8 ? "true" : "false");
-+}
-+
-+static void *maki_malloc(n, fn)
-+ size_t n;
-+ char *fn;
-+{
-+ void *r = (void *) malloc(n);
-+ if(r == NULL)
-+ maki_memory_error("malloc", fn);
-+ return r;
-+}
-+
-+static void *maki_realloc(p, n, fn)
-+ void *p;
-+ size_t n;
-+ char *fn;
-+{
-+ void *r = (p == NULL) ? (void *) malloc(n) : (void *) realloc(p, n);
-+ if(r == NULL)
-+ maki_memory_error("realloc", fn);
-+ return r;
-+}
-+#endif /* HAVE_MAKI */
-diff -ruN xv-3.10a-bugfixes/xvmgcsfx.c xv-3.10a-enhancements/xvmgcsfx.c
---- xv-3.10a-bugfixes/xvmgcsfx.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvmgcsfx.c 2005-05-01 10:20:12.000000000 -0700
-@@ -0,0 +1,2276 @@
-+/*
-+ * $Id: xvmgcsfx.c,v 1.23 95/11/27 19:03:36 tin329 Exp Locker: tin329 $
-+ * xvmgcsfx.c - Use the filters as input and output method.
-+ *
-+ * Features
-+ * ========
-+ * Use the filters as input and output method for load and save unsupported
-+ * image format file. The filter command is recognized by definition of
-+ * magic number or suffix in "~/.xv_mgcsfx" .
-+ *
-+ * Bugs
-+ * ====
-+ * There are many bugs.
-+ * Let's go hunting for insects with an insect net. (it's all joke.)
-+ *
-+ * Author
-+ * ======
-+ * Tetsuya INOUE <tin329@chino.it.okayama-u.ac.jp>
-+ */
-+
-+/*
-+ * Known Bugs and Todo / $B$"$l$3$l5$$K$J$k$3$H(B
-+ *
-+ * ~/.xv_mgcsfx $BFb(B
-+ * $B!&Dj5A$,IT40A4$@$H%(%i!<(B (':'$B$N?t(B)$B!#(B
-+ * $B!&%G%j%_%?$H$7$F(B ':' $B$r;H$&$N$G!"%9%?!<%H%"%C%W%U%!%$%kFb$G(B
-+ * ':' $B$rMQ$$$FDj5A$O$G$-$J$$!#(B'\:'$B$G$b%@%a!#(B
-+ * $B!&(B magic $B%?%$%W$G!"#8?J?t$O#37eJ,#0!A#7$rD4$Y!"#1#6?J?t$O(B
-+ * isxdigit $B$,??$rJV$94VCf=hM}$5$l$k!#$7$+$7!"#1#b#y#t#e$H(B
-+ * $B$7$F$7$+I>2A$5$l$J$$!#(B
-+ * $B!&%W%j%W%m%;%C%5$r;H$&$H$-$O!"%3%a%s%H$N=q$-J}$KCm0U$7$J$1$l$P$J(B
-+ * $B$i$J$$!#%W%j%W%m%;%C%5$K$h$C$F$O%3%a%s%H$,%(%i!<$K$J$k!#(B
-+ * $B!&%Q%$%W$X$NF~=PNO$N%U%)!<%^%C%H$N<oN`$,(B PNM $B$N$_(B
-+ * $BF~NO(B
-+ * $B%U%!%$%k%]%$%s%?$r(B seek $B$7$F$O$$$1$J$$(B
-+ * $B%U%!%$%k%5%$%:$rMQ$$$F$O$$$1$J$$(B
-+ * $B=PNO(B
-+ * $B%U%!%$%k%]%$%s%?$r(B seek $B$7$F$O$$$1$J$$(B
-+ * exec $B$G$-$J$/$F=*N;$7$?%W%m%;%9$K=q$-9~$_IT2D(B
-+ * $B!&%5%U%#%C%/%9$H%^%8%C%/%J%s%P!<$N;H$$J,$1$r$I$&$9$k$+!#(B
-+ * $B%^%8%C%/%J%s%P!<$,F1$8$G!"%5%U%#%C%/%9$,0[$J$k>l9g$rG'$a$k$+!)(B
-+ * $B!&(Bcompress(gzip)$B$N%U%!%$%k$O%F%s%]%i%j$G$O(B xvtmp??? $B$H$$$&L>A0$J(B
-+ * $B$N$G(B suffix $B$G$O<1JL$G$-$J$$!#(B
-+ *
-+ * $BG'<1$9$k;~$K(B MACBINARY $B$K$OIi$1$k(B(in xv.c)$B!#(B
-+ *
-+ * $BB?=E$K(B pipe $B$rDL$9$3$H$,$G$-$J$$!#(B(pipe $B$,(B seek $B$G$-$J$$$+$i(B)
-+ * $B!&(Bsocketpair $B$G!"(Brecv $B$K(B MSG_PEEK $B%U%i%0$r$D$+$C$F6uFI$_$9$k!#(B
-+ * $B!&$3$l$r$d$k$H%U%!%$%k$NG'<1$,$a$A$c$a$A$cCY$/$J$k!#(B
-+ *
-+ * $B%j%=!<%9$G@_Dj(B
-+ * $B!&%j%=!<%9$G@_Dj$9$kJ}$,LLE]$/$5$$(B
-+ *
-+ * $B%^%8%C%/%J%s%P!<$N@_Dj$K@55,I=8=(B
-+ *
-+ * $B%;!<%VMQ%W%m%;%9$,<:GT$9$k>l9g$NBP:v$,:#0l$D(B
-+ *
-+ * DEC OSF/1 V3.0 $B$G$O!"%Q%$%W$K%G!<%?$,$^$@$J$$;~$KFI$_9~$b$&$H$9$k$H!"(B
-+ * read $B$,IT40A4$K$J$k!#(B(in xvpbm.c)
-+ * $BF1MM$K=q$-9~$_;~$K$bLdBj$,@8$8$k$+$b$7$l$J$$!#(B
-+ */
-+
-+#define NEEDSDIR /* for stat() */
-+#include "xv.h"
-+
-+
-+#ifdef HAVE_MGCSFX
-+
-+
-+#ifdef __osf__
-+# ifdef __alpha
-+# define ARCHITECTURE64 1
-+# endif /* __alpha */
-+#endif /* __osf__ */
-+
-+#ifdef ARCHITECTURE64
-+typedef short int16;
-+typedef int int32;
-+typedef long int64;
-+#else
-+typedef short int16;
-+typedef long int32;
-+#endif /* ARCHITECTURE64 */
-+
-+#ifdef sgi
-+# define vfork fork
-+#endif
-+
-+#define USE_SIGCHLD
-+#if 0
-+# undef USE_SIGCHLD
-+#endif
-+
-+#ifdef USE_SIGCHLD
-+# include <sys/wait.h>
-+#endif
-+
-+typedef struct _mgcsfxtab
-+{
-+ struct _mgcsfxtab *next;
-+ char *description;
-+ int mgcsfx_type;
-+ int offset;
-+ union{
-+ int16 int16_data;
-+ int32 int32_data;
-+ char *string_data;
-+ } dt;
-+ int string_len;
-+ char *suffix;
-+ int input_image_type;
-+ char *input_command;
-+ int output_image_type;
-+ char *output_command;
-+} mgcsfxtab;
-+
-+
-+#ifndef MGCSFXDIR
-+# define MGCSFXDIR "/usr/local/lib"
-+#endif
-+#ifndef SYSCONFDIR
-+# define SYSCONFDIR MGCSFXDIR
-+#endif
-+#ifndef MGCSFX_SITE_RC
-+# define MGCSFX_SITE_RC "xv_mgcsfx"
-+#endif
-+#ifndef MGCSFX_RC
-+# define MGCSFX_RC ".xv_mgcsfx"
-+#endif
-+
-+#ifdef USE_MGCSFX_PREPROCESSOR
-+# ifndef MGCSFX_PREPROCESSOR
-+# define MGCSFX_PREPROCESSOR "/usr/lib/cpp"
-+# endif
-+#endif
-+
-+
-+/* Check type for Magic number and Suffix */
-+enum {T_UNKNOWN,
-+ T_MAGIC, T_SUFFIX,
-+ T_BEINT16, T_BEINT32, T_BEINT64,
-+ T_LEINT16, T_LEINT32, T_LEINT64};
-+
-+/* Image Type for input and output format */
-+enum {IT_UNKNOWN,
-+#ifdef HAVE_MGCSFX_AUTO
-+ IT_AUTO,
-+#endif /* HAVE_MGCSFX_AUTO */
-+ IT_PNM, IT_PPM, IT_PGM, IT_PBM,
-+ IT_PNM_RAW, IT_PPM_RAW, IT_PGM_RAW, IT_PBM_RAW,
-+ IT_PNM_ASCII, IT_PPM_ASCII, IT_PGM_ASCII, IT_PBM_ASCII,
-+ IT_GIF, IT_JPEG, IT_TIFF, IT_JFIF, /* IT_PS, IT_COMPRESS,*/
-+ IT_XBM, IT_XPM, IT_BMP, IT_SUNRAS, IT_IRIS, IT_XWD,
-+ /* IT_TARGA, IT_FITS, IT_PM, IT_UTAHRLE, IT_PCX, IT_PDSVICAR, IT_IFF, */
-+ IT_MAG, IT_MAKI, IT_PI, IT_PIC, IT_PIC2 /* , IT_PCD */};
-+
-+
-+/*--------------------------------------------------------------------------*/
-+void mgcsfx_handler PARM((int));
-+void mgcsfx_handler_setup PARM((void));
-+
-+#ifdef USE_MGCSFX_PREPROCESSOR
-+static char *get_tmp_fname PARM((void));
-+static char *make_preprocessed_file PARM((char *));
-+#endif /* USE_MGCSFX_PREPROCESSOR */
-+
-+int is_mgcsfx PARM((char *, unsigned char *, int));
-+
-+char *mgcsfx_auto_input_com PARM((char *));
-+
-+
-+static mgcsfxtab *free_mgcsfx PARM((mgcsfxtab *));
-+static char *fgettoken PARM((FILE*, int));
-+static int string_fin PARM((char *));
-+static int type_mgcsfx PARM((char *));
-+static int type_image PARM((char *));
-+
-+static void read_mgcsfx PARM((mgcsfxtab **, char *));
-+static void init_mgcsfx PARM((void));
-+static mgcsfxtab *find_mgcsfx PARM((char *, unsigned char *, int));
-+
-+int LoadMGCSFX PARM((char *, PICINFO *));
-+
-+#ifdef SVR4
-+typedef void Sigfunc(int);
-+static Sigfunc *xv_signal PARM((int , Sigfunc *));
-+#endif
-+
-+/*--------------------------------------------------------------------------*/
-+mgcsfxtab *mgcsfx_table = NULL;
-+int mgcsfx_setup_flag = 0;
-+
-+int nitem_mgcsfx = 0;
-+int desc_width = 0;
-+
-+int max_offset_mgcsfx = 0;
-+int max_length_mgcsfx = 0;
-+int need_buf_size = 0;
-+
-+static char input_command_ex[1024];
-+static int input_command_ex_flag = 0;
-+
-+#ifdef USE_SIGCHLD
-+static int w_p_fail=0;
-+#endif
-+
-+/*--------------------------------------------------------------------------*/
-+
-+/***************************************************/
-+void mgcsfx_handler(sig)
-+ int sig;
-+{
-+#ifdef USE_SIGCHLD
-+ int pid, pst;
-+#endif
-+
-+#if defined(SYSV) || defined(SVR4)
-+ sighold(sig);
-+#else
-+ sigblock(sigmask(sig));
-+#endif
-+
-+#ifdef USE_SIGCHLD
-+ if(w_p_fail == 1){
-+ /*
-+ * At this point, process write to broken pipe.
-+ * Probably external command was can't exec.
-+ */
-+ w_p_fail = 2;
-+ pid = wait(&pst);
-+ }
-+#endif
-+
-+ return;
-+
-+ /* Quit(1); */ /*exit(1);*/
-+}
-+
-+void mgcsfx_handler_setup()
-+{
-+#ifdef SVR4
-+ xv_signal(SIGPIPE, (void (*)PARM((int))) mgcsfx_handler);
-+ xv_signal(SIGCHLD, (void (*)PARM((int))) mgcsfx_handler);
-+#else
-+# ifdef SYSV
-+ sigset(SIGPIPE, (void (*)PARM((int))) mgcsfx_handler);
-+ sigset(SIGCHLD, (void (*)PARM((int))) mgcsfx_handler);
-+# else
-+ signal(SIGPIPE, (void (*)PARM((int))) mgcsfx_handler);
-+ signal(SIGCHLD, (void (*)PARM((int))) mgcsfx_handler);
-+# endif
-+#endif
-+}
-+
-+/***************************************************/
-+#ifdef USE_MGCSFX_PREPROCESSOR
-+static char *get_tmp_fname()
-+{
-+ static char tmp[MAXPATHLEN+1];
-+
-+#ifndef VMS
-+ sprintf(tmp, "%s/xvmgcsfxXXXXXX",tmpdir);
-+#else
-+ /* sprintf(tmp, "Sys$Scratch:xvmgcsfxXXXXXX"); */
-+ strcpy(tmp, "[]xvmgcsfxXXXXXX");
-+#endif /* VMS */
-+
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(tmp));
-+#else
-+ mktemp(tmp);
-+#endif
-+
-+ return tmp;
-+}
-+
-+static char *make_preprocessed_file(fname)
-+ char *fname;
-+{
-+ char buf[512];
-+ char *tmp_name;
-+
-+ tmp_name = get_tmp_fname();
-+
-+#ifndef VMS
-+ sprintf(buf,"%s %s > %s", MGCSFX_PREPROCESSOR, fname, tmp_name);
-+#else
-+ sprintf(buf,"%s %s > %s", MGCSFX_PREPROCESSOR, fname, tmp_name); /* really OK? */
-+#endif
-+
-+ SetISTR(ISTR_INFO, "Preprocessing '%s'...", BaseName(fname));
-+#ifndef VMS
-+ if (system(buf))
-+#else
-+ if (!system(buf))
-+#endif
-+ {
-+ SetISTR(ISTR_INFO, "Unable to preprocess '%s'.", BaseName(fname));
-+ Warning();
-+ return NULL;
-+ }
-+
-+ return tmp_name;
-+}
-+#endif /* USE_MGCSFX_PREPROCESSOR */
-+
-+/***************************************************/
-+/* $BG'<1$G$-$k%U%!%$%k$+$I$&$+D4$Y$k(B */
-+int is_mgcsfx(fname,buffer,size)
-+ char *fname;
-+ unsigned char *buffer;
-+ int size;
-+{
-+ mgcsfxtab *magic;
-+ FILE *fp;
-+ unsigned char *buf;
-+ int s;
-+
-+ if(nomgcsfx){
-+ return 0;
-+ }else{
-+ if(size < need_buf_size){
-+ if((buf = (unsigned char *)calloc(need_buf_size, sizeof(char)))==NULL){
-+ fprintf(stderr,"Can't allocate memory\n");
-+ return 0;
-+ }
-+ if((fp = xv_fopen(fname, "r"))==NULL){
-+ fprintf(stderr,"Can't open file %s\n", fname);
-+ free(buf);
-+ return 0;
-+ }
-+ s = fread(buf, 1, need_buf_size, fp);
-+ if((magic = find_mgcsfx(fname, buf, s))!=NULL &&
-+ magic->input_command != NULL){
-+ free(buf);
-+ fclose(fp);
-+ return 1;
-+ }else{
-+ free(buf);
-+ fclose(fp);
-+ return 0;
-+ }
-+ }else{
-+ if((magic = find_mgcsfx(fname, buffer, size))!=NULL &&
-+ magic->input_command != NULL){
-+ return 1;
-+ }else{
-+ return 0;
-+ }
-+ }
-+ }
-+}
-+
-+#ifdef HAVE_MGCSFX_AUTO
-+char *mgcsfx_auto_input_com(fname)
-+char *fname;
-+{
-+ static char command[1024];
-+ mgcsfxtab *magic;
-+ char *ptr;
-+
-+ FILE *fp;
-+ unsigned char *buf;
-+ int s;
-+
-+ if((buf = (unsigned char *)calloc(need_buf_size, sizeof(char)))==NULL){
-+ fprintf(stderr,"Can't allocate memory\n");
-+ return NULL;
-+ }
-+ if((fp = xv_fopen(fname, "r"))==NULL){
-+ fprintf(stderr,"Can't open file %s\n", fname);
-+ free(buf);
-+ return NULL;
-+ }
-+ s = fread(buf, 1, need_buf_size, fp);
-+ if((magic = find_mgcsfx(fname, buf, s))!=NULL &&
-+ magic->input_command != NULL && magic->input_image_type == IT_AUTO){
-+ if ((ptr = strstr(magic->input_command, "%s"))){
-+ sprintf(command, magic->input_command, fname);
-+ }else{
-+ sprintf(command, "%s < %s", magic->input_command, fname);
-+ }
-+ free(buf);
-+ fclose(fp);
-+ return command;
-+ }else{
-+ free(buf);
-+ fclose(fp);
-+ return NULL;
-+ }
-+}
-+#endif /* HAVE_MGCSFX_AUTO */
-+
-+/***************************************************/
-+static mgcsfxtab *free_mgcsfx(m)
-+ mgcsfxtab *m;
-+{
-+ mgcsfxtab *next;
-+ if(m == NULL) return NULL;
-+ next = m->next;
-+ if(m->description != NULL) free(m->description);
-+ if(m->mgcsfx_type == T_MAGIC && m->dt.string_data != NULL)
-+ free(m->dt.string_data);
-+ if(m->suffix != NULL) free(m->suffix);
-+ if(m->input_command != NULL) free(m->input_command);
-+ if(m->output_command != NULL) free(m->output_command);
-+ free(m);
-+ return next;
-+}
-+
-+
-+
-+/***************************************************/
-+/* char c $B$^$?$O(B '\n' $B$G6h@Z$i$l$?J8;zNs$r<h$j=P$9(B
-+ * $B%U%!%$%k$N:G8e$^$GFI$s$@$i(B NULL $B$rJV$9(B
-+ * $B2~9T$J$i2~9T$rJV$9(B($B2~9T$G6h@Z$i$l$?>l9g$O(B '\n' $B$r%9%H%j!<%`$KLa$9(B)
-+ */
-+#define CBUF_SIZE 1024
-+static char *fgettoken(fp, c)
-+ FILE *fp;
-+ int c; /* Real mean is char */
-+{
-+ char *buf;
-+ char *buf2;
-+ int i;
-+ int n=0;
-+ int max=0;
-+ int count = 1;
-+
-+ char *ss;
-+ char *se;
-+
-+ if((buf = (char *)calloc(CBUF_SIZE, sizeof(char))) == NULL){
-+ fprintf(stderr,"Can't allocate memory\n");
-+ exit(1);
-+ }
-+ max = CBUF_SIZE;
-+ count = 2;
-+
-+ do{
-+ if((i = getc(fp))==EOF || i == '\n' || i == c) break;
-+
-+ buf[n] = (char)i;
-+
-+ if(i != c && n == max-1){
-+ buf[max] = '\0';
-+ if((buf2 = (char *)calloc(CBUF_SIZE * count, sizeof(char))) == NULL){
-+ fprintf(stderr,"Can't allocate memory\n");
-+ exit(1);
-+ }
-+ strcpy(buf2, buf);
-+ free(buf);
-+ buf = buf2;
-+ buf2 = NULL;
-+ max = CBUF_SIZE * count;
-+ count++;
-+ }
-+
-+ n++;
-+ }while(i != c);
-+
-+ buf[n] = '\0';
-+
-+ /* $B:G=i$H:G8e$N6uGrJ8;z$r@Z$j5M$a$k(B */
-+ ss = buf + strspn(buf, " \t\b\r\n"); /* find the first non-white space */
-+ se = buf + strlen(buf); /* find the end of the string */
-+
-+ /* strip from the end first */
-+ while ((--se >= ss) && strchr(" \t\b\r\n", *se));
-+ *(++se) = '\0';
-+
-+ if(i == EOF && strlen(ss)==0){ /* EOF $B$J$i(B NULL $B$rJV$9(B */
-+ free(buf);
-+ return NULL;
-+ }else if(i == '\n' && strlen(ss)==0){ /* $B2~9T$N$_$N>l9g(B */
-+ static char cr[2] = {'\n','\0'};
-+ buf2 = strdup(cr);
-+ free(buf);
-+ return buf2;
-+ }else{ /* $BDL>o(B */
-+ if(i == '\n' && strlen(ss)>0) ungetc(i,fp);
-+ buf2 = strdup(ss);
-+ free(buf);
-+ return buf2;
-+ }
-+}
-+
-+
-+
-+/***************************************************/
-+/* $BJ8;zNsCf$NFC<l5-9f(B(\)$B$r@5$7$$$b$N$K$9$k(B
-+ */
-+static int string_fin(string_data)
-+ char *string_data;
-+{
-+ char *cptr;
-+ char *ptr;
-+ int length;
-+
-+ /* Change all the \xx sequences into a single character */
-+ cptr = string_data;
-+
-+ for (ptr = cptr; *ptr; ++ptr){
-+ if (*ptr != '\\'){
-+ *cptr = *ptr;
-+ }else{
-+ switch (*(++ptr)){
-+#if defined(__STDC__)
-+ case 'a': /* Audible alert (terminal bell) */
-+ *cptr = '\007';
-+ break;
-+ case '?': /* Question mark */
-+ *cptr = '\?';
-+ break;
-+#endif
-+ case 'b': /* Backspace */
-+ *cptr = '\b';
-+ break;
-+ case 'f': /* Form feed */
-+ *cptr = '\f';
-+ break;
-+ case 'n': /* Line feed */
-+ *cptr = '\n';
-+ break;
-+ case 'r': /* Carriage return */
-+ *cptr = '\r';
-+ break;
-+ case 't': /* Horizontal tab */
-+ *cptr = '\t';
-+ break;
-+ case 'v': /* Vertical tab */
-+ *cptr = '\v';
-+ break;
-+ case '\\': /* Backslash */
-+ *cptr = '\\';
-+ break;
-+ case '\'': /* Single quote */
-+ *cptr = '\'';
-+ break;
-+ case '"': /* Double quote */
-+ *cptr = '\"';
-+ break;
-+ case '0': /* Octal constant \0 ... \377 */
-+ case '1':
-+ case '2':
-+ case '3':
-+ case '4':
-+ case '5':
-+ case '6':
-+ case '7':
-+ if ((ptr[1] >= '0') && (ptr[1] <= '7')){
-+ if ((ptr[2] >= '0') && (ptr[2] <= '7')){ /* \000 ...\377 */
-+ *cptr = ((*ptr - '0') * 64) +((ptr[1] - '0') * 8) +(ptr[1] - '0');
-+ ptr += 2;
-+ }else{ /* \00 ...\77 */
-+ *cptr = ((*ptr - '0') * 8) + (ptr[1] - '0');
-+ ++ptr;
-+ }
-+ }else{ /* \0 ...\7 */
-+ *cptr = *ptr - '0';
-+ }
-+ break;
-+ case 'x': /* Hexadecimal constant \x0 .. \xff */
-+ if (isxdigit (ptr[1])){
-+ *cptr = 0;
-+ while (isxdigit (*(++ptr)))
-+ *cptr = (*cptr * 16) +
-+ (*ptr > '9' ? tolower (*ptr) - ('a' - 10) : *ptr - '0');
-+ --ptr;
-+ break;
-+ }
-+ default:
-+ /* *(cptr++) = '\\'; No use for treat '\z' as 'z' */
-+ *cptr = *ptr;
-+ break;
-+ }
-+ }
-+ ++cptr;
-+ }
-+ *cptr = '\0';
-+ length = cptr - string_data;
-+ return length;
-+}
-+
-+/***************************************************/
-+static int type_mgcsfx(str)
-+ char *str;
-+{
-+ if(str == NULL){
-+ return T_UNKNOWN;
-+ }else if(!strcmp(str, "magic") || !strcmp(str, "MAGIC")){
-+ return T_MAGIC;
-+ }else if(!strcmp(str, "string") || !strcmp(str, "STRING")){
-+ return T_MAGIC;
-+ }else if(!strcmp(str, "suffix") || !strcmp(str, "SUFFIX")){
-+ return T_SUFFIX;
-+ }else if(!strcmp(str, "beint16") || !strcmp(str, "BEINT16")){
-+ return T_BEINT16;
-+ }else if(!strcmp(str, "leint16") || !strcmp(str, "LEINT16")){
-+ return T_LEINT16;
-+ }else if(!strcmp(str, "beint32") || !strcmp(str, "BEINT32")){
-+ return T_BEINT32;
-+ }else if(!strcmp(str, "leint32") || !strcmp(str, "LEINT32")){
-+ return T_LEINT32;
-+ }else{
-+ return T_UNKNOWN;
-+ }
-+}
-+
-+/***************************************************/
-+static int type_image(str)
-+ char *str;
-+{
-+ if(str == NULL){
-+ return IT_UNKNOWN;
-+#ifdef HAVE_MGCSFX_AUTO
-+ }else if(!strcmp(str, "auto") || !strcmp(str, "AUTO")){
-+ return IT_AUTO;
-+#endif /* HAVE_MGCSFX_AUTO */
-+ }else if(!strcmp(str, "pnm") || !strcmp(str, "PNM")){
-+ return IT_PNM;
-+ }else if(!strcmp(str, "ppm") || !strcmp(str, "PPM")){
-+ return IT_PPM;
-+ }else if(!strcmp(str, "pgm") || !strcmp(str, "PGM")){
-+ return IT_PGM;
-+ }else if(!strcmp(str, "pbm") || !strcmp(str, "PBM")){
-+ return IT_PBM;
-+ }else if(!strcmp(str, "pnm_raw") || !strcmp(str, "PNM_RAW")){
-+ return IT_PNM_RAW;
-+ }else if(!strcmp(str, "ppm_raw") || !strcmp(str, "PPM_RAW")){
-+ return IT_PPM_RAW;
-+ }else if(!strcmp(str, "pgm_raw") || !strcmp(str, "PGM_RAW")){
-+ return IT_PGM_RAW;
-+ }else if(!strcmp(str, "pbm_raw") || !strcmp(str, "PBM_RAW")){
-+ return IT_PBM_RAW;
-+ }else if(!strcmp(str, "pnm_ascii") || !strcmp(str, "PNM_ASCII")){
-+ return IT_PNM_ASCII;
-+ }else if(!strcmp(str, "ppm_ascii") || !strcmp(str, "PPM_ASCII")){
-+ return IT_PPM_ASCII;
-+ }else if(!strcmp(str, "pgm_ascii") || !strcmp(str, "PGM_ASCII")){
-+ return IT_PGM_ASCII;
-+ }else if(!strcmp(str, "pbm_ascii") || !strcmp(str, "PBM_ASCII")){
-+ return IT_PBM_ASCII;
-+
-+ }else if(!strcmp(str, "gif") || !strcmp(str, "GIF")){
-+ return IT_GIF;
-+ }else if(!strcmp(str, "jpeg") || !strcmp(str, "JPEG")){
-+ return IT_JPEG;
-+ }else if(!strcmp(str, "tiff") || !strcmp(str, "TIFF")){
-+ return IT_TIFF;
-+ }else if(!strcmp(str, "jfif") || !strcmp(str, "JFIF")){
-+ return IT_JFIF;
-+
-+ }else if(!strcmp(str, "xbm") || !strcmp(str, "XBM")){
-+ return IT_XBM;
-+ }else if(!strcmp(str, "xpm") || !strcmp(str, "XPM")){
-+ return IT_XPM;
-+ }else if(!strcmp(str, "bmp") || !strcmp(str, "BMP")){
-+ return IT_BMP;
-+ }else if(!strcmp(str, "sunras") || !strcmp(str, "SUNRAS")){
-+ return IT_SUNRAS;
-+ }else if(!strcmp(str, "iris") || !strcmp(str, "IRIS")){
-+ return IT_IRIS;
-+ }else if(!strcmp(str, "xwd") || !strcmp(str, "XWD")){
-+ return IT_XWD;
-+
-+ }else if(!strcmp(str, "mag") || !strcmp(str, "MAG")){
-+ return IT_MAG;
-+ }else if(!strcmp(str, "maki") || !strcmp(str, "MAKI")){
-+ return IT_MAKI;
-+ }else if(!strcmp(str, "pi") || !strcmp(str, "PI")){
-+ return IT_PI;
-+ }else if(!strcmp(str, "pic") || !strcmp(str, "PIC")){
-+ return IT_PIC;
-+ }else if(!strcmp(str, "pic2") || !strcmp(str, "PIC2")){
-+ return IT_PIC2;
-+
-+ }else{
-+ return IT_UNKNOWN;
-+ }
-+}
-+
-+/*--------------------------------------------------------------------------*/
-+#define mgcsfx_read_error(FILENAME, LINENUM, AFTERFIELD) \
-+fprintf (stderr,\
-+"%s: line %d: missing fields of %s field\n",\
-+FILENAME, LINENUM, AFTERFIELD);
-+
-+#define magic_type_error(FILENAME, LINENUM, MAGICNUMBER) \
-+fprintf (stderr,\
-+"%s: line %d: invalid <magic type> field '%s'\n",\
-+FILENAME, LINENUM, MAGICNUMBER);
-+/*--------------------------------------------------------------------------*/
-+
-+/***************************************************/
-+static void read_mgcsfx(mgcsfx_table, fname)
-+ mgcsfxtab **mgcsfx_table;
-+ char *fname;
-+{
-+ FILE *fp;
-+ char *s;
-+ int line_number = 0;
-+ int str_len;
-+ int reach_end;
-+ int def_err;
-+
-+ char *description;
-+ char *mgcsfx_type;
-+ char *offset;
-+ char *magic;
-+ char *suffix;
-+ char *i_img;
-+ char *i_com;
-+ char *o_img;
-+ char *o_com;
-+
-+ mgcsfxtab *ent;
-+ mgcsfxtab **entry;
-+
-+
-+ if((fp=fopen(fname, "r"))==NULL){
-+ /* fprintf(stderr, "Can't open %s\n",fname); */
-+ return;
-+ }
-+
-+ while(1){
-+retry:
-+ line_number++;
-+ def_err = 0;
-+
-+ s= NULL;
-+ description = mgcsfx_type = offset = magic = suffix
-+ = i_img = i_com = o_img = o_com = NULL;
-+ reach_end = 0;
-+
-+ if((s = fgettoken(fp, ':'))==NULL) break; /* EOF $B$J$i=*$j(B */
-+ if(*s == '#'){/* $B@hF,$,(B '#' $B$J$iFI$_$H$P$9(B */
-+ while((s = fgettoken(fp, '\n'))!=NULL){
-+ if(*s == '\n'){
-+ free(s);
-+ goto retry;
-+ }
-+ free(s);
-+ }
-+ if(s == NULL) break;
-+ }else if(*s == '\n'){/* $B6u9T$OL5;k(B */
-+ free(s);
-+ goto retry;
-+ }
-+ if(strlen(s) > 0) description = s;
-+ else free(s);
-+
-+ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
-+ if(s != NULL) free(s);
-+ mgcsfx_read_error(fname, line_number, "data type");
-+ goto next;
-+ }
-+ if(strlen(s) > 0) mgcsfx_type = s;
-+ else free(s);
-+
-+ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
-+ if(s != NULL) free(s);
-+ mgcsfx_read_error(fname, line_number, "byte offset");
-+ goto next;
-+ }
-+ if(strlen(s) > 0) offset = s;
-+ else free(s);
-+
-+ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
-+ if(s != NULL) free(s);
-+ mgcsfx_read_error(fname, line_number, "magic number");
-+ goto next;
-+ }
-+ if(strlen(s) > 0) magic = s;
-+ else free(s);
-+
-+ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
-+ if(s != NULL) free(s);
-+ mgcsfx_read_error(fname, line_number, "suffix");
-+ goto next;
-+ }
-+ if(strlen(s) > 0) suffix = s;
-+ else free(s);
-+
-+ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
-+ if(s != NULL) free(s);
-+ mgcsfx_read_error(fname, line_number, "input image type");
-+ goto next;
-+ }
-+ if(strlen(s) > 0) i_img = s;
-+ else free(s);
-+
-+ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
-+ if(s != NULL) free(s);
-+ mgcsfx_read_error(fname, line_number, "input command");
-+ goto next;
-+ }
-+ if(strlen(s) > 0) i_com = s;
-+ else free(s);
-+
-+ if((s = fgettoken(fp, ':'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
-+ if(s != NULL) free(s);
-+ mgcsfx_read_error(fname, line_number, "output image type");
-+ goto next;
-+ }
-+ if(strlen(s) > 0) o_img = s;
-+ else free(s);
-+
-+ if((s = fgettoken(fp, '#'))==NULL || *s == '\n'){/* $B2?$b$J$$$J$i@_Dj%_%9(B */
-+ /*
-+ free(s);
-+ mgcsfx_read_error(fname, line_number, "output command");
-+ goto next;
-+ */
-+ if(s != NULL){
-+ *s = '\0';
-+ reach_end = 1;
-+ }
-+ }
-+ if(s != NULL){
-+ if(strlen(s) > 0) o_com = s;
-+ else free(s);
-+ }
-+
-+ if(reach_end == 0){
-+ while((s = fgettoken(fp, '\n'))!=NULL){/* $B9TKv$N%4%_$r<N$F$k(B */
-+ if(*s == '\n'){
-+ free(s);
-+ break; /* goto next; */
-+ }
-+ free(s);
-+ }
-+ }else{
-+ reach_end = 0;
-+ }
-+
-+
-+
-+ /* --------------------------------------------------------------------- */
-+next:;
-+
-+ if(DEBUG){
-+ fprintf(stderr,"Read: file %s: line %d.\n", fname, line_number);
-+ fprintf(stderr,"Description : %s\n",
-+ description ? description : "-- error --");
-+ fprintf(stderr,"Type : %s\n",
-+ mgcsfx_type ? mgcsfx_type : "-- error --");
-+ fprintf(stderr,"Offset : %s\n", offset ? offset : "--+--");
-+ fprintf(stderr,"Magic : %s\n", magic ? magic : "--+--");
-+ fprintf(stderr,"Suffix : %s\n", suffix ? suffix : "--+--");
-+ fprintf(stderr,"i Image : %s\n", i_img ? i_img : "--+--");
-+ fprintf(stderr,"i Command : %s\n", i_com ? i_com : "--+--");
-+ fprintf(stderr,"o Image : %s\n", o_img ? o_img : "--+--");
-+ fprintf(stderr,"o Command : %s\n", o_com ? o_com : "--+--");
-+ fprintf(stderr,"\n");
-+ }
-+
-+ /* create mgcsfxtab */
-+ if((ent = (mgcsfxtab *) malloc (sizeof (mgcsfxtab)))==NULL){
-+ fprintf(stderr,"Can't allocate memory\n");
-+ exit(1);
-+ }
-+ ent->next = NULL;
-+ ent->description = NULL;
-+ ent->mgcsfx_type = T_UNKNOWN;
-+ ent->offset = 0;
-+ ent->string_len = 0;
-+ ent->suffix = NULL;
-+ ent->input_image_type = IT_UNKNOWN;
-+ ent->input_command = NULL;
-+ ent->output_image_type = IT_UNKNOWN;
-+ ent->output_command = NULL;
-+
-+ if(description != NULL){
-+ ent->description = description;
-+ description = NULL;
-+ }else{
-+ fprintf (stderr,"%s: line %d: undefined <description> field.\n",
-+ fname, line_number);
-+ def_err ++;
-+ goto next2;
-+ }
-+
-+ if(mgcsfx_type == NULL){
-+ fprintf (stderr,"%s: line %d: undefined <mgcsfx type> field.\n",
-+ fname, line_number);
-+ def_err ++;
-+ goto next2;
-+ }
-+ ent->mgcsfx_type = type_mgcsfx(mgcsfx_type);
-+ switch(ent->mgcsfx_type){
-+ case T_SUFFIX:
-+ if(suffix == NULL){
-+ fprintf (stderr,
-+ "%s: line %d: conflict definition : undefined <suffix> field.\n",
-+ fname, line_number);
-+ def_err ++;
-+ goto next2;
-+ }
-+ break;
-+ case T_BEINT16:
-+ if (sscanf(magic, "%hi", &(ent->dt.int16_data)) != 1){
-+ magic_type_error(fname, line_number, magic);
-+ def_err ++;
-+ goto next2;
-+ }
-+ break;
-+ case T_LEINT16:
-+ if (sscanf(magic, "%hi", &(ent->dt.int16_data)) != 1){
-+ magic_type_error(fname, line_number, magic);
-+ def_err ++;
-+ goto next2;
-+ }
-+ break;
-+#ifdef ARCHITECTURE64
-+ case T_BEINT32:
-+ if (sscanf(magic, "%i", &(ent->dt.int32_data)) != 1){
-+ magic_type_error(fname, line_number, magic);
-+ def_err ++;
-+ goto next2;
-+ }
-+ break;
-+ case T_LEINT32:
-+ if (sscanf(magic, "%i", &(ent->dt.int32_data)) != 1){
-+ magic_type_error(fname, line_number, magic);
-+ def_err ++;
-+ goto next2;
-+ }
-+ break;
-+#else
-+ case T_BEINT32:
-+ if (sscanf(magic, "%li", &(ent->dt.int32_data)) != 1){
-+ magic_type_error(fname, line_number, magic);
-+ def_err ++;
-+ goto next2;
-+ }
-+ break;
-+ case T_LEINT32:
-+ if (sscanf(magic, "%li", &(ent->dt.int32_data)) != 1){
-+ magic_type_error(fname, line_number, magic);
-+ def_err ++;
-+ goto next2;
-+ }
-+ break;
-+#endif /* ARCHITECTURE64 */
-+ case T_MAGIC:
-+ if(magic == NULL){
-+ fprintf (stderr,"%s: line %d: undefined <magic> field.\n",
-+ fname, line_number);
-+ def_err ++;
-+ goto next2;
-+ }
-+ if((str_len = string_fin(magic))<=0){
-+ fprintf (stderr,"%s: line %d: invalid <magic> field.\n",
-+ fname, line_number);
-+ def_err ++;
-+ goto next2;
-+ }
-+
-+ ent->string_len = str_len;
-+ if((ent->dt.string_data = (char *)malloc(str_len + 1))==NULL){
-+ fprintf(stderr,"Can't allocate memory\n");
-+ exit(1);
-+ }
-+ memcpy(ent->dt.string_data, magic, str_len + 1);
-+ break;
-+ case T_UNKNOWN:
-+ default:
-+ fprintf (stderr,"%s: line %d: invalid <mgcsfx type> field.\n",
-+ fname, line_number);
-+ def_err ++;
-+ goto next2;
-+ break;
-+ };
-+
-+
-+ if(offset == NULL){
-+ if(ent->mgcsfx_type == T_MAGIC ||
-+ ent->mgcsfx_type == T_BEINT16 ||
-+ ent->mgcsfx_type == T_LEINT16 ||
-+ ent->mgcsfx_type == T_BEINT32 ||
-+ ent->mgcsfx_type == T_LEINT32){
-+ fprintf (stderr,
-+ "%s: line %d: conflict definition : undefined <offset> field.\n",
-+ fname, line_number);
-+ def_err ++;
-+ goto next2;
-+ }
-+ }else{
-+ if(ent->mgcsfx_type != T_SUFFIX) sscanf(offset, "%i", &(ent->offset));
-+ }
-+
-+ if(suffix != NULL){
-+ ent->suffix = suffix;
-+ suffix = NULL;
-+ }
-+
-+ if((i_img == NULL && i_com == NULL) && (o_img == NULL || o_com == NULL)){
-+ fprintf (stderr,"%s: line %d: invalid definition.\n",
-+ fname, line_number);
-+ def_err ++;
-+ goto next2;
-+ }
-+ if((o_img == NULL && o_com == NULL) && (i_img == NULL || i_com == NULL)){
-+ fprintf (stderr,"%s: line %d: invalid definition.\n",
-+ fname, line_number);
-+ def_err ++;
-+ goto next2;
-+ }
-+
-+ if(i_img != NULL && i_com != NULL){
-+ ent->input_image_type = type_image(i_img);
-+ ent->input_command = i_com;
-+ i_com = NULL;
-+ }else{
-+ ent->input_image_type = IT_UNKNOWN;
-+ ent->input_command = NULL;
-+ }
-+
-+ if(o_img != NULL && o_com != NULL){
-+ ent->output_image_type = type_image(o_img);
-+ ent->output_command = o_com;
-+ o_com = NULL;
-+ }else{
-+ ent->output_image_type = IT_UNKNOWN;
-+ ent->output_command = NULL;
-+ }
-+ /* end of create mgcsfxtab */
-+
-+
-+next2:;
-+
-+ if(def_err != 0 || DEBUG){
-+ fprintf(stderr,"Description : %s \t -> %s\n",
-+ description ? description : "--+--",
-+ ent->description ? ent->description : "-- error --");
-+ fprintf(stderr,"Type : %s \t -> %d\n",
-+ mgcsfx_type ? mgcsfx_type : "--+--",
-+ ent->mgcsfx_type);
-+ fprintf(stderr,"Offset : %s \t -> %d\n",
-+ offset ? offset : "--+--",
-+ ent->offset);
-+
-+ fprintf(stderr,"Magic : %s", magic ? magic : "--+--");
-+ switch(ent->mgcsfx_type){
-+ case T_BEINT16:
-+ case T_LEINT16:
-+ fprintf(stderr," \t -> %d\n",ent->dt.int16_data);
-+ break;
-+ case T_BEINT32:
-+ case T_LEINT32:
-+ fprintf(stderr," \t -> %ld\n",ent->dt.int32_data);
-+ break;
-+ case T_MAGIC:
-+ fprintf(stderr," \t -> %s\n",ent->dt.string_data);
-+ break;
-+ default:
-+ fprintf(stderr,"\n");
-+ break;
-+ };
-+
-+ fprintf(stderr,"Suffix : %s \t -> %s\n",
-+ suffix ? suffix : "--+--",
-+ ent->suffix ? ent->suffix : "--+--");
-+ fprintf(stderr,"i Image : %s \t -> %d\n",
-+ i_img ? i_img : "--+--",
-+ ent->input_image_type);
-+ fprintf(stderr,"i Command : %s \t -> %s\n",
-+ i_com ? i_com : "--+--",
-+ ent->input_command ? ent->input_command : "--+--");
-+ fprintf(stderr,"o Image : %s \t -> %d\n",
-+ o_img ? o_img : "--+--",
-+ ent->output_image_type);
-+ fprintf(stderr,"o Command : %s \t -> %s\n",
-+ o_com ? o_com : "--+--",
-+ ent->output_command ? ent->output_command : "--+--");
-+ fprintf(stderr,"\n");
-+ }
-+
-+ if(description != NULL) free(description);
-+ if(mgcsfx_type != NULL) free(mgcsfx_type);
-+ if(offset != NULL) free(offset);
-+ if(magic != NULL) free(magic);
-+ if(suffix != NULL) free(suffix);
-+ if(i_img != NULL) free(i_img);
-+ if(i_com != NULL) free(i_com);
-+ if(o_img != NULL) free(o_img);
-+ if(o_com != NULL) free(o_com);
-+
-+
-+ if(def_err != 0) goto next3;
-+
-+ /* Override any existing entry for this magic number/file type */
-+ for(entry = mgcsfx_table; *entry; entry = &((*entry)->next)){
-+ if((ent->mgcsfx_type == (*entry)->mgcsfx_type) &&
-+ (
-+ ((ent->offset == (*entry)->offset) &&
-+ (((ent->mgcsfx_type == T_BEINT16) &&
-+ (ent->dt.int16_data == (*entry)->dt.int16_data)) ||
-+ ((ent->mgcsfx_type == T_BEINT32) &&
-+ (ent->dt.int32_data == (*entry)->dt.int32_data)) ||
-+ ((ent->mgcsfx_type == T_LEINT16) &&
-+ (ent->dt.int16_data == (*entry)->dt.int16_data)) ||
-+ ((ent->mgcsfx_type == T_LEINT32) &&
-+ (ent->dt.int32_data == (*entry)->dt.int32_data)) ||
-+
-+ ((ent->mgcsfx_type == T_MAGIC) &&
-+ !memcmp(ent->dt.string_data, (*entry)->dt.string_data,
-+ ent->string_len))
-+ )) ||
-+ ((ent->mgcsfx_type == T_SUFFIX) &&
-+ !strcmp(ent->suffix, (*entry)->suffix))
-+ )
-+ ){
-+
-+ free ((*entry)->description);
-+ (*entry)->description = ent->description;
-+ ent->description = NULL;
-+
-+ (*entry)->input_image_type = ent->input_image_type;
-+ if ((*entry)->input_command) free ((*entry)->input_command);
-+ (*entry)->input_command = ent->input_command;
-+ ent->input_command = NULL;
-+
-+ (*entry)->output_image_type = ent->output_image_type;
-+ if ((*entry)->output_command) free ((*entry)->output_command);
-+ (*entry)->output_command = ent->output_command;
-+ ent->output_command = NULL;
-+
-+ free_mgcsfx(ent);
-+ break;
-+ }
-+ }
-+ if (!*entry){
-+ ent->next = NULL;
-+ *entry = ent;
-+ }
-+
-+ /* if(s == NULL) break; */
-+next3:;
-+ if(def_err != 0) free_mgcsfx(ent);
-+ } /* end of while(1) */
-+}
-+
-+
-+/***************************************************/
-+/* $B%^%8%C%/%J%s%P!<Dj5A%U%!%$%kL>$rF@$F!"FI$_9~$^$;$k(B */
-+static void init_mgcsfx ()
-+{
-+ extern char *getenv ();
-+
-+ char *home_dir;
-+ char fname[1024];
-+ mgcsfxtab *entry;
-+ int len;
-+ struct stat st;
-+
-+#ifdef USE_MGCSFX_PREPROCESSOR
-+ char *pp_fname;
-+#endif /* USE_MGCSFX_PREPROCESSOR */
-+
-+ mgcsfx_table = NULL;
-+
-+ mgcsfx_handler_setup();
-+
-+ if(nomgcsfx){
-+ mgcsfx_setup_flag = 1;
-+ nitem_mgcsfx = 0;
-+ desc_width = 0;
-+ }else{
-+ sprintf (fname, "%s/%s", SYSCONFDIR, MGCSFX_SITE_RC);
-+ if(stat(fname, &st) == 0 && S_ISREG(st.st_mode)){
-+ /* Read the site MagicSuffix table into a linked list */
-+#ifdef USE_MGCSFX_PREPROCESSOR
-+ if((pp_fname = make_preprocessed_file(fname)) != NULL){
-+ read_mgcsfx (&mgcsfx_table, pp_fname);
-+ }
-+ unlink(pp_fname);
-+#else
-+ read_mgcsfx (&mgcsfx_table, fname);
-+#endif /* USE_MGCSFX_PREPROCESSOR */
-+ }
-+
-+ /* Read the personal MgcSfx table into the list overriding site entries */
-+ if ((home_dir = getenv ("HOME"))){
-+ sprintf (fname, "%s/%s", home_dir, MGCSFX_RC);
-+ if(stat(fname, &st) == 0 && S_ISREG(st.st_mode)){
-+#ifdef USE_MGCSFX_PREPROCESSOR
-+ if((pp_fname = make_preprocessed_file(fname)) != NULL){
-+ read_mgcsfx (&mgcsfx_table, pp_fname);
-+ }
-+ unlink(pp_fname);
-+#else
-+ read_mgcsfx (&mgcsfx_table, fname);
-+#endif /* USE_MGCSFX_PREPROCESSOR */
-+ }
-+ }
-+
-+ mgcsfx_setup_flag = 1;
-+
-+ nitem_mgcsfx = 0;
-+ desc_width = 0;
-+ for (entry = mgcsfx_table; entry; entry = entry->next){
-+ nitem_mgcsfx ++;
-+ len = strlen(entry->description);
-+ if(len > desc_width) desc_width = len;
-+ if(max_offset_mgcsfx < entry->offset) max_offset_mgcsfx = entry->offset;
-+ if(entry->mgcsfx_type == T_MAGIC &&
-+ max_length_mgcsfx < entry->string_len)
-+ max_length_mgcsfx = entry->string_len;
-+ }
-+ if(max_length_mgcsfx == 0) max_length_mgcsfx = sizeof(int32);
-+ need_buf_size = max_offset_mgcsfx + max_length_mgcsfx + 1;/* 1 is safety */
-+ }
-+}
-+
-+/***************************************************/
-+/* $B%^%8%C%/%J%s%P!<$rD4$Y$F!"Dj5A$7$F$$$k%F!<%V%k$r8!:w$9$k(B
-+ $B%^%8%C%/%J%s%P!<$N%F!<%V%k$rFI$_9~$s$G$$$J$$$J$iFI$_9~$`(B */
-+static mgcsfxtab *find_mgcsfx (fname, buffer, buffer_size)
-+ char *fname;
-+ unsigned char *buffer;
-+ int buffer_size;
-+{
-+ mgcsfxtab *entry;
-+ int16 buf16;
-+ int32 buf32;
-+ char *suf;
-+
-+ if (mgcsfx_setup_flag == 0) init_mgcsfx ();
-+
-+ for (entry = mgcsfx_table; entry; entry = entry->next){
-+ switch (entry->mgcsfx_type){
-+ case T_BEINT16:
-+ if ((buffer_size > 0) &&
-+ ((entry->offset + sizeof (int16)) <= buffer_size)){
-+ buf16 = ((char)*(buffer + entry->offset) << 8) |
-+ ((char)*(buffer + entry->offset +1));
-+ if(entry->dt.int16_data == buf16) return entry;
-+ }
-+ break;
-+ case T_LEINT16:
-+ if ((buffer_size > 0) &&
-+ ((entry->offset + sizeof (int16)) <= buffer_size)){
-+ buf16 = ((char)*(buffer + entry->offset +1) << 8) |
-+ ((char)*(buffer + entry->offset));
-+ if(entry->dt.int16_data == buf16) return entry;
-+ }
-+ break;
-+ case T_BEINT32:
-+ if ((buffer_size > 0) &&
-+ ((entry->offset + sizeof (int32)) <= buffer_size)){
-+ buf32 = ((char)*(buffer + entry->offset) << 24) |
-+ ((char)*(buffer + entry->offset +1) << 16) |
-+ ((char)*(buffer + entry->offset +2) << 8) |
-+ ((char)*(buffer + entry->offset +3));
-+ if(entry->dt.int32_data == buf32) return entry;
-+ }
-+ break;
-+ case T_LEINT32:
-+ if ((buffer_size > 0) &&
-+ ((entry->offset + sizeof (int32)) <= buffer_size)){
-+ buf32 = ((char)*(buffer + entry->offset +3) << 24) |
-+ ((char)*(buffer + entry->offset +2) << 16) |
-+ ((char)*(buffer + entry->offset +1) << 8) |
-+ ((char)*(buffer + entry->offset));
-+ if(entry->dt.int32_data == buf32) return entry;
-+ }
-+ break;
-+ case T_MAGIC:
-+ if ((buffer_size > 0) &&
-+ ((entry->offset + entry->string_len)
-+ <= buffer_size) &&
-+ !memcmp (entry->dt.string_data, buffer + entry->offset,
-+ entry->string_len ))
-+ return entry;
-+ break;
-+ case T_SUFFIX:
-+ if(fname != NULL && entry->suffix != NULL){
-+ if(strlen(fname) - strlen(entry->suffix) > 0){
-+ suf = fname + (strlen(fname) - strlen(entry->suffix));
-+ if(!strcmp(suf, entry->suffix)) return entry;
-+ }
-+ }
-+ break;
-+ case T_UNKNOWN:
-+ default:
-+ return NULL;
-+ break;
-+ }
-+ }
-+ return NULL;
-+}
-+
-+
-+
-+
-+
-+/***************************************************/
-+/* $B%^%8%C%/%J%s%P!<$NDj5A$rD4$Y$F!"$=$l$K$"$o$;$?%3%^%s%I$r<B9T$9$k(B */
-+/* if OK return 1, else if ERROR return 0 */
-+int
-+LoadMGCSFX(file_name, pinfo)
-+ char *file_name;
-+ PICINFO *pinfo;
-+{
-+ unsigned char *buffer;
-+ int size;
-+ mgcsfxtab *magic;
-+ mgcsfxtab *magic_cur;
-+ char *ptr;
-+ char command[1024];
-+ int fd[2];
-+ int pid = -2;
-+ int file;
-+ char *fname;
-+ int rv;
-+ int pst;
-+
-+ int i_it;
-+ char *i_com;
-+
-+ WaitCursor();
-+
-+ fname = file_name;
-+ if((file = open (fname, O_RDONLY))<0){
-+ SetISTR(ISTR_WARNING, "Can't open %s",fname);
-+ return 0;
-+ }
-+
-+ if((buffer = (unsigned char *)calloc(need_buf_size, sizeof(char))) == NULL){
-+ SetISTR(ISTR_WARNING, "Can't allocate memory");
-+ return 0;
-+ }
-+
-+ magic_cur = NULL;
-+
-+/* do{ */
-+ size = read (file, buffer, need_buf_size);
-+
-+ if (lseek (file, 0L, 0) < 0){ /* can't seek pipe !! */
-+ fprintf (stderr, "Can't lseek %s\n", file_name);
-+ close(file);
-+ return 0;
-+ }
-+
-+ magic = find_mgcsfx (fname, buffer, size);
-+
-+ if ((magic != NULL && magic->input_command) ||
-+ (magic == NULL && mgcsfx && input_command_ex_flag)){
-+
-+ if(magic == NULL){
-+ if (fname != NULL && (ptr = strstr(input_command_ex, "%s"))){
-+ sprintf (command, input_command_ex, fname);
-+ }else{
-+ strcpy (command, input_command_ex);
-+ fname=NULL;
-+ }
-+ }else{
-+ /* Use stdin or give file name */
-+ if (fname != NULL && (ptr = strstr(magic->input_command, "%s"))){
-+ sprintf (command, magic->input_command, fname);
-+ }else{
-+ strcpy (command, magic->input_command);
-+ fname=NULL;
-+ }
-+ }
-+
-+ /* Do the pipe/fork/exec here */
-+ if (pipe (fd) < 0){
-+ fprintf (stderr, "Can't pipe : %s\n", file_name);
-+ close(file);
-+ return 0;
-+ }
-+
-+ if ((pid = vfork ()) < 0){
-+ fprintf (stderr, "Can't vfork : %s\n", file_name);
-+ close (fd[0]);
-+ close (fd[1]);
-+ close(file);
-+ return 0;
-+ }
-+
-+ if (!pid){
-+ close(0);
-+ if (fname == NULL || (open ("/dev/null", O_RDONLY) < 0)){
-+ dup(file);
-+ }
-+ close(file);
-+ close(1);
-+ dup(fd[1]);
-+ close(2);
-+ open("/dev/null", O_WRONLY);
-+ close(fd[0]);
-+ execl("/bin/sh", "/bin/sh", "-c", command, 0);
-+ _exit(127);
-+ }
-+
-+ close (fd[1]);
-+ dup2(fd[0], file);
-+ close (fd[0]);
-+ fname = NULL;
-+ magic_cur = magic;
-+ }
-+/* } while(magic != NULL); */
-+
-+ free(buffer);
-+
-+ if(magic_cur == NULL && mgcsfx && input_command_ex_flag){
-+ i_it = IT_PNM;
-+ i_com = input_command_ex;
-+ }else{
-+ i_it = magic_cur->input_image_type;
-+ i_com = magic_cur->input_command;
-+ }
-+
-+ if((magic_cur != NULL && i_com) ||
-+ (magic_cur == NULL && mgcsfx && input_command_ex_flag)){
-+ switch(i_it){
-+ case IT_PNM:
-+ case IT_PPM:
-+ case IT_PGM:
-+ case IT_PBM:
-+ case IT_PNM_RAW:
-+ case IT_PPM_RAW:
-+ case IT_PGM_RAW:
-+ case IT_PBM_RAW:
-+ case IT_PNM_ASCII:
-+ case IT_PPM_ASCII:
-+ case IT_PGM_ASCII:
-+ case IT_PBM_ASCII:
-+ rv = LoadPBM(file_name, pinfo, file);
-+ break;
-+ case IT_GIF:
-+ case IT_JPEG:
-+ case IT_TIFF:
-+ case IT_JFIF:
-+ case IT_XBM:
-+ case IT_XPM:
-+ case IT_BMP:
-+ case IT_SUNRAS:
-+ case IT_IRIS:
-+ case IT_XWD:
-+ case IT_MAG:
-+ case IT_MAKI:
-+ case IT_PI:
-+ case IT_PIC:
-+ case IT_PIC2:
-+ SetISTR(ISTR_WARNING, "Yet supported input image type (from filter output)");
-+ rv = 0;
-+ break;
-+ case IT_UNKNOWN:
-+ SetISTR(ISTR_WARNING, "Unknown input image type (from filter output)");
-+ rv = 0;
-+ break;
-+#ifdef HAVE_MGCSFX_AUTO
-+ case IT_AUTO:
-+#endif
-+ default:
-+ SetISTR(ISTR_WARNING, "Error in input image type (from filter output)");
-+ rv = 0;
-+ break;
-+ }
-+ }else{
-+ rv = 0;
-+ }
-+
-+ /* fail if pid still == -2? */
-+ while(wait(&pst) != pid); /* FIXME? pid isn't necessarily initialized... */
-+ if( *((char *)&pst) != 0 ) rv = 0;
-+
-+ input_command_ex_flag = 0;
-+
-+ return rv;
-+
-+ /* fclose(fp); close in Load??? */
-+ /* return 0; error */
-+ /* return 1; ok */
-+}
-+
-+
-+
-+
-+
-+/*--------------------------------------------------------------------------*/
-+#ifndef MGCSFX_DEFAULT_INPUT_COMMAND
-+# define MGCSFX_DEFAULT_INPUT_COMMAND "tifftopnm"
-+#endif
-+#ifndef MGCSFX_DEFAULT_OUTPUT_COMMAND
-+# define MGCSFX_DEFAULT_OUTPUT_COMMAND "pnmtotiff"
-+#endif
-+
-+int MSWIDE = 0;
-+int MSHIGH = 0;
-+
-+#define MS_NBUTTS 2
-+#define MS_BOK 0
-+#define MS_BCANC 1
-+#define BUTTW 60 /* width of buttons (OK or Cancel) */
-+#define BUTTH 24 /* height of buttons (OK or Cancel) */
-+#define RBSIZE 15 /* width and height of RB button (select, ON or OFF)*/
-+#define CWIDE 8 /* width of character */
-+/* #define CHIGH height of character defined in xv.h */
-+#define MARGIN 3 /* margin of button and label SPACING */
-+
-+#define MSD_TITLE "Save file with external command..."
-+#define MSD_RBTITLE "Type of Magic and Suffix"
-+#define MSD_IC_TITLE "input command"
-+
-+static BUTT msbut[MS_NBUTTS];
-+static RBUTT *typeRB;
-+
-+static char output_command_ex[1024];
-+static int output_command_ex_flag = 0;
-+
-+static int colorType;
-+
-+static int w_pid;
-+static int w_pstatus;
-+
-+#define MSNAMWIDE 252 /* width of 'file name' entry window */
-+#define MAXFNLEN 256 /* max len of filename being entered */
-+static char DialogFileName[MAXFNLEN+100]; /* filename being entered */
-+static int curPos, stPos, enPos; /* filename textedit stuff */
-+
-+
-+static mgcsfxtab *get_mgcsfx PARM((int));
-+static void changeSuffix PARM((int));
-+
-+static int WriteMGCSFX PARM((FILE**,byte*,int,int,int,
-+ byte*,byte*,byte*,int,int,char*,
-+ int, int, char*));
-+void CreateMGCSFXW PARM((void));
-+void MGCSFXDialog PARM((int));
-+int MGCSFXCheckEvent PARM((XEvent *));
-+int MGCSFXSaveParams PARM((char *, int));
-+
-+static void drawMSD PARM((int,int,int,int));
-+static void clickMSD PARM((int,int));
-+static void doCmd PARM((int));
-+static int writeMGCSFX PARM((void));
-+
-+static void changeSuffix PARM((int));
-+static void redrawNamMSD PARM((void));
-+static void showFNamMSD PARM((void));
-+static int keyinMSD PARM((int));
-+
-+int getInputCom PARM((void));
-+int getOutputCom PARM((void));
-+/*--------------------------------------------------------------------------*/
-+
-+/***************************************************/
-+/* $B$I$l$rA*$s$@$+D4$Y$k!##0$O%3%^%s%I$rF~NO$9$k$b$N$H$9$k(B */
-+static mgcsfxtab *get_mgcsfx(ms_type)
-+ int ms_type;
-+{
-+ mgcsfxtab *magic;
-+ int i;
-+
-+ magic = NULL;
-+ if(ms_type != 0){
-+ i = 1;
-+ for(magic = mgcsfx_table; (magic && i<ms_type); magic = magic->next){i++;}
-+ }
-+ return magic;
-+}
-+
-+/***************************************************/
-+/* $B30It%3%^%s%I$r<B9T$7$F!"$=$l$K=PNO$9$k(B */
-+/* if OK return 0, else if ERROR return -1 */
-+static
-+int WriteMGCSFX(fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,file_name,
-+ ms_type, file, comment)
-+ FILE **fp;
-+ byte *pic;
-+ int ptype, w,h;
-+ byte *rmap, *gmap, *bmap;
-+ int numcols, colorstyle;
-+ char *file_name;
-+ int ms_type;
-+ int file; /* file descriptor */
-+ char *comment;
-+{
-+ mgcsfxtab *magic;
-+
-+ int fd[2];
-+ int pid;
-+ int rv;
-+
-+ WaitCursor();
-+
-+#ifdef USE_SIGCHLD
-+ w_p_fail = 1;
-+#endif
-+
-+ magic = get_mgcsfx(ms_type);
-+ if(ms_type != 0 && magic == NULL) return -1;
-+
-+ if ((ms_type == 0 && output_command_ex_flag) ||
-+ (ms_type !=0 && magic != NULL && magic->output_command)){
-+
-+ /* Do the pipe/fork/exec here */
-+ if (pipe (fd) < 0){
-+ fprintf (stderr, "Can't pipe : %s\n", file_name);
-+ return -1;
-+ }
-+
-+ if ((pid = vfork ()) < 0){
-+ fprintf (stderr, "Can't vfork : %s\n", file_name);
-+ close (fd[0]);
-+ close (fd[1]);
-+ return -1;
-+ }
-+
-+ if (!pid){
-+ close(1);
-+ dup(file);
-+ close(file);
-+ close(0);
-+ dup(fd[0]);
-+ close(2);
-+ open("/dev/null", O_WRONLY);
-+ close(fd[1]);
-+ if(ms_type == 0){
-+ execl("/bin/sh", "/bin/sh", "-c", output_command_ex, 0);
-+ }else{
-+ execl("/bin/sh", "/bin/sh", "-c", magic->output_command, 0);
-+ }
-+ _exit(127);
-+ }
-+
-+ close (fd[0]);
-+ dup2(fd[1], file);
-+ close (fd[1]);
-+
-+ }else{
-+ return -1;
-+ }
-+
-+
-+ *fp = fdopen(file, "w");
-+
-+ /* sleep(1); Best way is wait for checking SIGCHLD, but it's feel waist.*/
-+
-+#ifdef USE_SIGCHLD
-+ if(w_p_fail != 2){
-+#endif
-+ if(ms_type == 0){
-+ rv = WritePBM(*fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,
-+ 1, comment);
-+ }else{
-+ switch(magic -> output_image_type){
-+ case IT_PNM:
-+ case IT_PPM:
-+ case IT_PGM:
-+ case IT_PBM:
-+ case IT_PNM_RAW:
-+ case IT_PPM_RAW:
-+ case IT_PGM_RAW:
-+ case IT_PBM_RAW:
-+ rv = WritePBM(*fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,
-+ 1, comment);
-+ break;
-+ case IT_PNM_ASCII:
-+ case IT_PPM_ASCII:
-+ case IT_PGM_ASCII:
-+ case IT_PBM_ASCII:
-+ rv = WritePBM(*fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,
-+ 0, comment);
-+ break;
-+ case IT_GIF:
-+ case IT_JPEG:
-+ case IT_TIFF:
-+ case IT_JFIF:
-+ case IT_XBM:
-+ case IT_XPM:
-+ case IT_BMP:
-+ case IT_SUNRAS:
-+ case IT_IRIS:
-+ case IT_XWD:
-+ case IT_MAG:
-+ case IT_MAKI:
-+ case IT_PI:
-+ case IT_PIC:
-+ case IT_PIC2:
-+ SetISTR(ISTR_WARNING, "Yet supported output image type (to filter input)");
-+ rv = -1;
-+ break;
-+ case IT_UNKNOWN:
-+ SetISTR(ISTR_WARNING, "Unknown output image type (to filter input)");
-+ rv = -1;
-+ break;
-+#ifdef HAVE_MGCSFX_AUTO
-+ case IT_AUTO:
-+#endif
-+ default:
-+ SetISTR(ISTR_WARNING, "Error in output image type (to filter input)");
-+ rv = -1;
-+ break;
-+ }
-+ }
-+#ifdef USE_SIGCHLD
-+ }else{
-+ rv = -1;
-+ }
-+#endif
-+
-+#ifdef USE_SIGCHLD
-+ if(w_p_fail != 2){
-+#endif
-+ w_pid = pid;
-+#ifdef USE_SIGCHLD
-+ w_p_fail = 0;
-+ }else{
-+ rv = -1;
-+ }
-+#endif
-+
-+ output_command_ex_flag = 0;
-+
-+ return rv;
-+
-+ /* fclose(*fp); close in CloseOutFile in writeMGCSFX */
-+ /* return 0; ok */
-+ /* return -1; error */
-+}
-+
-+/***************************************************/
-+void CreateMGCSFXW()
-+{
-+ int y;
-+ int type_num;
-+ mgcsfxtab *entry;
-+
-+ if (mgcsfx_setup_flag == 0) init_mgcsfx ();
-+
-+ if(desc_width < strlen(MSD_IC_TITLE)) desc_width = strlen(MSD_IC_TITLE);
-+ nitem_mgcsfx ++;
-+
-+ MSWIDE = desc_width * CWIDE + RBSIZE + 36; /* 36 is start of RB button */
-+ MSHIGH = nitem_mgcsfx * (RBSIZE + MARGIN);
-+
-+ if(MSWIDE < strlen(MSD_TITLE) + 20) MSWIDE = strlen(MSD_TITLE) + 20;
-+ if(MSWIDE < strlen(MSD_RBTITLE) + 16) MSWIDE = strlen(MSD_RBTITLE) + 16;
-+ if(MSWIDE < MSNAMWIDE + 10) MSWIDE = MSNAMWIDE + 10;
-+ if(MSWIDE < BUTTW * 2 + 10) MSWIDE = BUTTW * 2 + 10;
-+
-+ MSHIGH += 55 + LINEHIGH + 10 + BUTTH + 10;
-+
-+ MSWIDE += 20; /* right side margin */
-+ MSHIGH += 10; /* RB buttun down side margin */
-+
-+
-+ mgcsfxW = CreateWindow("xv mgcsfx", "XVmgcsfx", NULL,
-+ MSWIDE, MSHIGH, infofg, infobg, 0);
-+ if (!mgcsfxW) FatalError("can't create mgcsfx window!");
-+
-+ XSelectInput(theDisp, mgcsfxW,
-+ ExposureMask | ButtonPressMask | KeyPressMask);
-+
-+ mgcsfxNameW = XCreateSimpleWindow(theDisp, mgcsfxW,
-+ 10, MSHIGH-LINEHIGH-10-BUTTH-10-1,
-+ (u_int) MSNAMWIDE+6, (u_int) LINEHIGH+5,
-+ 1, infofg, infobg);
-+ if (!mgcsfxNameW) FatalError("can't create mgcsfx name window");
-+ XSelectInput(theDisp, mgcsfxNameW, ExposureMask);
-+
-+ /* Ok $B%\%?%s(B */
-+ BTCreate(&msbut[MS_BOK], mgcsfxW,
-+ MSWIDE-BUTTW-10-BUTTW-10-1, MSHIGH-BUTTH-10-1,
-+ BUTTW, BUTTH,
-+ "Ok", infofg, infobg, hicol, locol);
-+ /* Cancel $B%\%?%s(B*/
-+ BTCreate(&msbut[MS_BCANC], mgcsfxW,
-+ MSWIDE-BUTTW-10-1, MSHIGH-BUTTH-10-1,
-+ BUTTW, BUTTH,
-+ "Cancel", infofg, infobg, hicol, locol);
-+
-+ y = 55;
-+ /* User should input command to exec external command */
-+ typeRB = RBCreate(NULL, mgcsfxW, 36, y, MSD_IC_TITLE,
-+ infofg, infobg,hicol,locol);
-+ y += (RBSIZE + MARGIN); /* 18 */
-+
-+ type_num = 1;
-+ for (entry = mgcsfx_table; entry; entry = entry->next){
-+ RBCreate(typeRB, mgcsfxW, 36, y, entry->description,
-+ infofg, infobg,hicol,locol);
-+ y += (RBSIZE + MARGIN); /* 18 */
-+ if(entry->output_command == NULL){
-+ RBSetActive(typeRB, type_num, 0); /* if no command, off */
-+ }
-+ type_num++;
-+ }
-+
-+ XMapSubwindows(theDisp, mgcsfxW);
-+}
-+
-+
-+/***************************************************/
-+void MGCSFXDialog(vis)
-+ int vis;
-+{
-+ if (vis) {
-+ CenterMapWindow(mgcsfxW, msbut[MS_BOK].x + msbut[MS_BOK].w/2,
-+ msbut[MS_BOK].y + msbut[MS_BOK].h/2, MSWIDE, MSHIGH);
-+ }
-+ else XUnmapWindow(theDisp, mgcsfxW);
-+ mgcsfxUp = vis;
-+}
-+
-+
-+/***************************************************/
-+int MGCSFXCheckEvent(xev)
-+ XEvent *xev;
-+{
-+ /* check event to see if it's for one of our subwindows. If it is,
-+ deal accordingly, and return '1'. Otherwise, return '0' */
-+
-+ int rv;
-+ rv = 1;
-+
-+ if (!mgcsfxUp) return (0);
-+
-+ if (xev->type == Expose) {
-+ int x,y,w,h;
-+ XExposeEvent *e = (XExposeEvent *) xev;
-+ x = e->x; y = e->y; w = e->width; h = e->height;
-+
-+ if (e->window == mgcsfxW) drawMSD(x, y, w, h);
-+ else rv = 0;
-+ }
-+
-+ else if (xev->type == ButtonPress) {
-+ XButtonEvent *e = (XButtonEvent *) xev;
-+ int x,y;
-+ x = e->x; y = e->y;
-+
-+ if (e->button == Button1) {
-+ if (e->window == mgcsfxW) clickMSD(x,y);
-+ else rv = 0;
-+ } /* button1 */
-+ else rv = 0;
-+ } /* button press */
-+
-+ else if (xev->type == KeyPress) {
-+ XKeyEvent *e = (XKeyEvent *) xev;
-+ char buf[128]; KeySym ks; XComposeStatus status;
-+ int stlen;
-+
-+ stlen = XLookupString(e,buf,128,&ks,&status);
-+ buf[stlen] = '\0';
-+
-+ if (e->window == mgcsfxW) {
-+ if (stlen) {
-+ keyinMSD(buf[0]);
-+ }
-+ }
-+ else rv = 0;
-+ }
-+ else rv = 0;
-+
-+ if (rv == 0 && (xev->type == ButtonPress || xev->type == KeyPress)) {
-+ XBell(theDisp, 50);
-+ rv = 1; /* eat it */
-+ }
-+
-+ return (rv);
-+}
-+
-+
-+/***************************************************/
-+int MGCSFXSaveParams(fname, col)
-+ char *fname;
-+ int col;
-+{
-+ colorType = col;
-+ strcpy(DialogFileName, GetDirFName());
-+ return (0);
-+}
-+
-+/***************************************************/
-+/* $B%@%$%"%m%0$rI=<($9$k$H$-$N=hM}(B */
-+static void drawMSD(x,y,w,h)
-+ int x,y,w,h;
-+{
-+ int i;
-+ XRectangle xr;
-+
-+ xr.x = x; xr.y = y; xr.width = w; xr.height = h;
-+ XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
-+
-+ XSetForeground(theDisp, theGC, infofg);
-+ XSetBackground(theDisp, theGC, infobg);
-+
-+ for (i = 0; i < MS_NBUTTS; i++) BTRedraw(&msbut[i]);
-+
-+ ULineString(mgcsfxW, typeRB->x-16, typeRB->y-3-DESCENT,
-+ MSD_RBTITLE);
-+ RBRedraw(typeRB, -1);
-+
-+ DrawString(mgcsfxW, 20, 29, MSD_TITLE);
-+
-+ XSetClipMask(theDisp, theGC, None);
-+
-+ showFNamMSD();
-+}
-+
-+/***************************************************/
-+/* $B%@%$%"%m%0$r%/%j%C%/$7$?$H$-$N=hM}(B */
-+static void clickMSD(x,y)
-+ int x,y;
-+{
-+ int i;
-+ BUTT *bp;
-+
-+ /* check BUTTs */
-+
-+ /* check the RBUTTS first, since they don't DO anything */
-+ if ((i = RBClick(typeRB, x,y)) >= 0) { /* $BA*Br(B(type)$B%\%?%s$N=hM}(B */
-+ (void) RBTrack(typeRB, i); /* $BA*Br(B(type)$B%\%?%s$r2!$7$?$H$-(B */
-+ changeSuffix(i);
-+ return;
-+ }
-+
-+ for (i = 0; i < MS_NBUTTS; i++) { /* Ok,Cancel $B%\%?%s$N=hM}(B */
-+ bp = &msbut[i];
-+ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h))
-+ break;
-+ }
-+ if (i < MS_NBUTTS) /* found one */ /* Ok,Cancel $B%\%?%s$r2!$7$?$H$-(B */
-+ if (BTTrack(bp)) doCmd(i);
-+}
-+
-+/***************************************************/
-+/* $B%\%?%s(B(Ok, Cancel) $B$N=hM}(B */
-+static void doCmd(cmd)
-+ int cmd;
-+{
-+ int rv;
-+
-+ switch (cmd) {
-+ case MS_BOK: /* Ok button */ {
-+ char *fullname;
-+
-+ rv = writeMGCSFX(); /* Save with filter(MGCSFX) */
-+ MGCSFXDialog(0);
-+
-+ fullname = GetDirFullName();
-+ if (!ISPIPE(fullname[0])) {
-+ XVCreatedFile(fullname);
-+ if(!rv) StickInCtrlList(0);
-+ }
-+ }
-+ break;
-+ case MS_BCANC: /* Cancel button */
-+ DialogFileName[0] = '\0';
-+ curPos = stPos = enPos = 0;
-+ MGCSFXDialog(0);
-+ break;
-+ default:
-+ break;
-+ }
-+}
-+
-+/*******************************************/
-+static int writeMGCSFX()
-+{
-+ int rv, type;
-+ int ptype, w, h, pfree, nc;
-+ byte *inpix, *rmap, *gmap, *bmap;
-+
-+ FILE *fp = NULL;
-+ int file;
-+ char *fullname;
-+
-+ rv = -1;
-+ type = RBWhich(typeRB);
-+
-+ SetDirFName(DialogFileName); /* change filename in dir dialog */
-+ fullname = GetDirFullName();
-+
-+ if(type == 0){
-+ if(getOutputCom() == 0) return rv;
-+ }
-+
-+ file = OpenOutFileDesc(fullname);
-+ if(file < 0) return rv;
-+
-+ WaitCursor();
-+ inpix = GenSavePic(&ptype, &w, &h, &pfree, &nc, &rmap, &gmap, &bmap);
-+
-+ rv = WriteMGCSFX(&fp, inpix, ptype, w, h,
-+ rmap, gmap, bmap, nc, colorType, fullname,
-+ type, file, picComments);
-+
-+ SetCursors(-1);
-+
-+ if (CloseOutFile(fp, fullname, rv) == 0) DirBox(0);
-+
-+ WaitCursor();
-+#ifdef USE_SIGCHLD
-+ if(w_p_fail == 0){
-+#endif
-+ while(wait(&w_pstatus) != w_pid); /* if( *((char *)&w_pstatus) != 0 ) ; */
-+#ifdef USE_SIGCHLD
-+ }else{
-+ w_p_fail = 0;
-+ }
-+#endif
-+ w_pid = 0;
-+ w_pstatus = 0;
-+
-+ if (pfree) free(inpix);
-+ return rv;
-+}
-+
-+
-+/***************************************/
-+static void changeSuffix(ms_type)
-+ int ms_type;
-+{
-+ /* see if there's a common suffix at the end of the DialogFileName.
-+ if there is, remember what case it was (all caps or all lower), lop
-+ it off, and replace it with a new appropriate suffix, in the
-+ same case */
-+
-+ int allcaps;
-+ char *suffix, *sp, *dp, lowsuf[512];
-+ mgcsfxtab *magic;
-+
-+ /* find the last '.' in the DialogFileName */
-+ suffix = (char *) rindex(DialogFileName, '.');
-+ if (!suffix) return;
-+ suffix++; /* point to first letter of the suffix */
-+
-+ /* check for all-caposity */
-+ for (sp = suffix, allcaps=1; *sp; sp++)
-+ if (islower(*sp)) allcaps = 0;
-+
-+ /* copy the suffix into an all-lower-case buffer */
-+ for (sp=suffix, dp=lowsuf; *sp; sp++, dp++) {
-+ *dp = (isupper(*sp)) ? tolower(*sp) : *sp;
-+ }
-+ *dp = '\0';
-+
-+
-+ magic = get_mgcsfx(ms_type);
-+ if(magic != NULL && magic->suffix != NULL){
-+ strcpy(lowsuf,(magic->suffix)+1);
-+
-+ if (allcaps) { /* upper-caseify lowsuf */
-+ for (sp=lowsuf; *sp; sp++)
-+ *sp = (islower(*sp)) ? toupper(*sp) : *sp;
-+ }
-+
-+ /* one other case: if the original suffix started with a single
-+ capital letter, make the new suffix start with a single cap */
-+ if (isupper(suffix[0])) lowsuf[0] = toupper(lowsuf[0]);
-+
-+ strcpy(suffix, lowsuf); /* tack onto DialogFileName */
-+ showFNamMSD();
-+ }
-+}
-+
-+/***************************************************/
-+/* $B%@%$%"%m%0Fb$K%U%!%$%k%M!<%`$rI=<($9$k$H$-$N=hM}(B ($B2<@A$1(B)*/
-+static void redrawNamMSD()
-+{
-+ int cpos;
-+
-+ /* draw substring DialogFileName[stPos:enPos] and cursor */
-+
-+ Draw3dRect(mgcsfxNameW, 0, 0, (u_int) MSNAMWIDE+5, (u_int) LINEHIGH+4, R3D_IN, 2,
-+ hicol, locol, infobg);
-+
-+ XSetForeground(theDisp, theGC, infofg);
-+
-+ if (stPos>0) { /* draw a "there's more over here" doowah */
-+ XDrawLine(theDisp, mgcsfxNameW, theGC, 0,0,0,LINEHIGH+5);
-+ XDrawLine(theDisp, mgcsfxNameW, theGC, 1,0,1,LINEHIGH+5);
-+ XDrawLine(theDisp, mgcsfxNameW, theGC, 2,0,2,LINEHIGH+5);
-+ }
-+
-+ if ((size_t) enPos < strlen(DialogFileName)) {
-+ /* draw a "there's more over here" doowah */
-+ XDrawLine(theDisp, mgcsfxNameW, theGC, MSNAMWIDE+5,0,MSNAMWIDE+5,LINEHIGH+5);
-+ XDrawLine(theDisp, mgcsfxNameW, theGC, MSNAMWIDE+4,0,MSNAMWIDE+4,LINEHIGH+5);
-+ XDrawLine(theDisp, mgcsfxNameW, theGC, MSNAMWIDE+3,0,MSNAMWIDE+3,LINEHIGH+5);
-+ }
-+
-+ XDrawString(theDisp, mgcsfxNameW, theGC,3,ASCENT+3,DialogFileName+stPos, enPos-stPos);
-+
-+ cpos = XTextWidth(mfinfo, &DialogFileName[stPos], curPos-stPos);
-+ XDrawLine(theDisp, mgcsfxNameW, theGC, 3+cpos, 2, 3+cpos, 2+CHIGH+1);
-+ XDrawLine(theDisp, mgcsfxNameW, theGC, 3+cpos, 2+CHIGH+1, 5+cpos, 2+CHIGH+3);
-+ XDrawLine(theDisp, mgcsfxNameW, theGC, 3+cpos, 2+CHIGH+1, 1+cpos, 2+CHIGH+3);
-+}
-+
-+/***************************************************/
-+/* $B%@%$%"%m%0Fb$K%U%!%$%k%M!<%`$rI=<($9$k(B */
-+static void showFNamMSD()
-+{
-+ int len;
-+
-+ len = strlen(DialogFileName);
-+
-+ if (curPos<stPos) stPos = curPos;
-+ if (curPos>enPos) enPos = curPos;
-+
-+ if (stPos>len) stPos = (len>0) ? len-1 : 0;
-+ if (enPos>len) enPos = (len>0) ? len-1 : 0;
-+
-+ /* while substring is shorter than window, inc enPos */
-+
-+ while (XTextWidth(mfinfo, &DialogFileName[stPos], enPos-stPos) < MSNAMWIDE
-+ && enPos<len) { enPos++; }
-+
-+ /* while substring is longer than window, dec enpos, unless enpos==curpos,
-+ in which case, inc stpos */
-+
-+ while (XTextWidth(mfinfo, &DialogFileName[stPos], enPos-stPos) > MSNAMWIDE) {
-+ if (enPos != curPos) enPos--;
-+ else stPos++;
-+ }
-+
-+
-+ if (ctrlColor) XClearArea(theDisp, mgcsfxNameW, 2,2, (u_int) MSNAMWIDE+5-3,
-+ (u_int) LINEHIGH+4-3, False);
-+ else XClearWindow(theDisp, mgcsfxNameW);
-+
-+ redrawNamMSD();
-+ BTSetActive(&msbut[MS_BOK], strlen(DialogFileName)!=0);
-+}
-+
-+/***************************************************/
-+/* $B%-!<F~NO$7$?$H$-$N=hM}(B */
-+static int keyinMSD(c)
-+ int c;
-+{
-+ /* got keypress in dirW. stick on end of DialogFileName */
-+ int len;
-+
-+ len = strlen(DialogFileName);
-+
-+ if (c>=' ' && c<'\177') { /* printable characters */
-+ /* note: only allow 'piped commands' in savemode... */
-+
-+ /* only allow spaces in 'piped commands', not filenames */
-+ if (c==' ' && (!ISPIPE(DialogFileName[0]) || curPos==0)) return (-1);
-+
-+ /* only allow vertbars in 'piped commands', not filenames */
-+ if (c=='|' && curPos!=0 && !ISPIPE(DialogFileName[0])) return(-1);
-+
-+ if (len >= MAXFNLEN-1) return(-1); /* max length of string */
-+ xvbcopy(&DialogFileName[curPos], &DialogFileName[curPos+1], (size_t) (len-curPos+1));
-+ DialogFileName[curPos]=c; curPos++;
-+ }
-+
-+ else if (c=='\010' || c=='\177') { /* BS or DEL */
-+ if (curPos==0) return(-1); /* at beginning of str */
-+ xvbcopy(&DialogFileName[curPos], &DialogFileName[curPos-1], (size_t) (len-curPos+1));
-+ curPos--;
-+ }
-+
-+ else if (c=='\025') { /* ^U: clear entire line */
-+ DialogFileName[0] = '\0';
-+ curPos = 0;
-+ }
-+
-+ else if (c=='\013') { /* ^K: clear to end of line */
-+ DialogFileName[curPos] = '\0';
-+ }
-+
-+ else if (c=='\001') { /* ^A: move to beginning */
-+ curPos = 0;
-+ }
-+
-+ else if (c=='\005') { /* ^E: move to end */
-+ curPos = len;
-+ }
-+
-+ else if (c=='\004') { /* ^D: delete character at curPos */
-+ if (curPos==len) return(-1);
-+ xvbcopy(&DialogFileName[curPos+1], &DialogFileName[curPos], (size_t) (len-curPos));
-+ }
-+
-+ else if (c=='\002') { /* ^B: move backwards char */
-+ if (curPos==0) return(-1);
-+ curPos--;
-+ }
-+
-+ else if (c=='\006') { /* ^F: move forwards char */
-+ if (curPos==len) return(-1);
-+ curPos++;
-+ }
-+
-+ else if (c=='\012' || c=='\015') { /* CR(\r) or LF(\n) */
-+ FakeButtonPress(&msbut[MS_BOK]);
-+ }
-+
-+ else if (c=='\033') { /* ESC = Cancel */
-+ FakeButtonPress(&msbut[MS_BCANC]);
-+ }
-+
-+ else if (c=='\011') { /* tab = filename expansion */
-+ if (1 /* !autoComplete() */) XBell(theDisp, 0);
-+ else {
-+ curPos = strlen(DialogFileName);
-+ }
-+ }
-+
-+ else return(-1); /* unhandled character */
-+
-+ showFNamMSD();
-+
-+ return(0);
-+}
-+
-+
-+/*******************************************/
-+int getInputCom()
-+{
-+ static char *labels[] = { "\nOk", "\033Cancel" };
-+ int i;
-+
-+ strcpy(input_command_ex, MGCSFX_DEFAULT_INPUT_COMMAND);
-+ i = GetStrPopUp("Input External Command (Input is PNM):", labels, 2,
-+ input_command_ex, 1024, "",0);
-+ if (i == 0 && strlen(input_command_ex) != 0){
-+ input_command_ex_flag = 1;
-+ return 1;
-+ }else{
-+ input_command_ex_flag = 0;
-+ return 0;
-+ }
-+}
-+
-+int getOutputCom()
-+{
-+ static char *labels[] = { "\nOk", "\033Cancel" };
-+ int i;
-+
-+ strcpy(output_command_ex, MGCSFX_DEFAULT_OUTPUT_COMMAND);
-+ i = GetStrPopUp("Input External Command (Output is PNM_RAW):", labels, 2,
-+ output_command_ex, 1024, "",0);
-+ if (i == 0 && strlen(output_command_ex) != 0){
-+ output_command_ex_flag = 1;
-+ return 1;
-+ }else{
-+ output_command_ex_flag = 0;
-+ return 0;
-+ }
-+}
-+
-+#ifdef SVR4
-+Sigfunc *
-+xv_signal(signo, func)
-+ int signo;
-+ Sigfunc *func;
-+{
-+ struct sigaction act, oact;
-+
-+ act.sa_handler = func;
-+ sigemptyset(&act.sa_mask);
-+ act.sa_flags = 0;
-+ act.sa_flags |= SA_RESTART;
-+
-+ if (sigaction(signo, &act, &oact) < 0)
-+ return SIG_ERR;
-+
-+ return oact.sa_handler;
-+}
-+#endif
-+
-+#endif /* HAVE_MGCSFX */
-diff -ruN xv-3.10a-bugfixes/xvmisc.c xv-3.10a-enhancements/xvmisc.c
---- xv-3.10a-bugfixes/xvmisc.c 2005-03-20 22:47:06.000000000 -0800
-+++ xv-3.10a-enhancements/xvmisc.c 2005-04-17 14:45:28.000000000 -0700
-@@ -103,10 +103,18 @@
- if (!usesize || !(i&WidthValue)) w = defw;
- if (!usesize || !(i&HeightValue)) h = defh;
-
-- hints.flags |= USSize;
-+ hints.flags |= USSize | PWinGravity;
-
-- if (i&XValue && i&XNegative) x = dispWIDE - w - abs(x);
-- if (i&YValue && i&YNegative) y = dispHIGH - h - abs(y);
-+ hints.win_gravity = NorthWestGravity;
-+ if (i&XValue && i&XNegative) {
-+ hints.win_gravity = NorthEastGravity;
-+ x = dispWIDE - (w + 2 * bwidth) - abs(x);
-+ }
-+ if (i&YValue && i&YNegative) {
-+ hints.win_gravity = (hints.win_gravity == NorthWestGravity) ?
-+ SouthWestGravity : SouthEastGravity;
-+ y = dispHIGH - (h + 2 * bwidth) - abs(y);
-+ }
-
-
- #define VROOT_TRANS
-@@ -142,20 +150,19 @@
- if (!win) return(win); /* leave immediately if couldn't create */
-
-
-- XSetStandardProperties(theDisp, win, name, name, None, NULL, 0, &hints);
--
- xwmh.input = True;
- xwmh.flags = InputHint;
- if (iconPix) { xwmh.icon_pixmap = iconPix; xwmh.flags |= IconPixmapHint; }
-- XSetWMHints(theDisp, win, &xwmh);
-
- if (clname && strlen(clname)) {
- classh.res_name = "xv";
- classh.res_class = clname;
-- XSetClassHint(theDisp, win, &classh);
- StoreDeleteWindowProp(win);
- }
-
-+ XmbSetWMProperties(theDisp, win, name, name, NULL, 0, &hints, &xwmh,
-+ clname ? &classh : NULL);
-+
- return(win);
- }
-
-@@ -232,28 +239,28 @@
- int i = CK_NONE;
-
- if (ks==XK_Up || ks==XK_KP_Up ||
-- ks==XK_KP_8 || ks==XK_F28) i=CK_UP;
-+ ks==XK_F28) i=CK_UP;
-
- else if (ks==XK_Down || ks==XK_KP_Down ||
-- ks==XK_KP_2 || ks==XK_F34) i=CK_DOWN;
-+ ks==XK_F34) i=CK_DOWN;
-
- else if (ks==XK_Left || ks==XK_KP_Left ||
-- ks==XK_KP_4 || ks==XK_F30) i=CK_LEFT;
-+ ks==XK_F30) i=CK_LEFT;
-
- else if (ks==XK_Right || ks==XK_KP_Right ||
-- ks==XK_KP_6 || ks==XK_F32) i=CK_RIGHT;
-+ ks==XK_F32) i=CK_RIGHT;
-
- else if (ks==XK_Prior || ks==XK_KP_Prior ||
-- ks==XK_KP_9 || ks==XK_F29) i=CK_PAGEUP;
-+ ks==XK_F29) i=CK_PAGEUP;
-
- else if (ks==XK_Next || ks==XK_KP_Next ||
-- ks==XK_KP_3 || ks==XK_F35) i=CK_PAGEDOWN;
-+ ks==XK_F35) i=CK_PAGEDOWN;
-
- else if (ks==XK_Home || ks==XK_KP_Home ||
-- ks==XK_KP_7 || ks==XK_F27) i=CK_HOME;
-+ ks==XK_F27) i=CK_HOME;
-
- else if (ks==XK_End || ks==XK_KP_End ||
-- ks==XK_KP_1 || ks==XK_F33) i=CK_END;
-+ ks==XK_F33) i=CK_END;
-
- else i = CK_NONE;
-
-@@ -503,6 +510,11 @@
- as we have to keep the alloc'd colors around, but we don't want anything
- else to stay */
-
-+#ifdef AUTO_EXPAND
-+ chdir(initdir);
-+ Vdsettle();
-+#endif
-+
- if (!theDisp) exit(i); /* called before connection opened */
-
- if (useroot && i==0) { /* save the root info */
-@@ -526,6 +538,26 @@
- if (tiffW) XDestroyWindow(theDisp, tiffW);
- #endif
-
-+#ifdef HAVE_PNG
-+ if (pngW) XDestroyWindow(theDisp, pngW);
-+#endif
-+
-+#ifdef HAVE_PCD
-+ if (pcdW) XDestroyWindow(theDisp, pcdW);
-+#endif
-+
-+#ifdef HAVE_PIC2
-+ if (pic2W) XDestroyWindow(theDisp, pic2W);
-+#endif
-+
-+#ifdef HAVE_MGCSFX
-+ if (mgcsfxW) XDestroyWindow(theDisp, mgcsfxW);
-+#endif
-+
-+#ifdef HAVE_PNG
-+ if (pngW) XDestroyWindow(theDisp, pngW);
-+#endif
-+
- /* if NOT using stdcmap for images, free stdcmap */
- if (colorMapMode != CM_STDCMAP) {
- int j;
-@@ -722,6 +754,26 @@
- #ifdef HAVE_TIFF
- if (tiffW) XDefineCursor(theDisp, tiffW, otherc);
- #endif
-+
-+#ifdef HAVE_PNG
-+ if (pngW) XDefineCursor(theDisp, pngW, otherc);
-+#endif
-+
-+#ifdef HAVE_PNG
-+ if (pngW) XDefineCursor(theDisp, pngW, otherc);
-+#endif
-+
-+#ifdef HAVE_PCD
-+ if (pcdW) XDefineCursor(theDisp, pcdW, otherc);
-+#endif
-+
-+#ifdef HAVE_PIC2
-+ if (pic2W) XDefineCursor(theDisp, pic2W, otherc);
-+#endif
-+
-+#ifdef HAVE_MGCSFX
-+ if (mgcsfxW) XDefineCursor(theDisp, mgcsfxW, otherc);
-+#endif
- }
-
-
-@@ -921,7 +973,7 @@
- void XVCreatedFile(fullname)
- char *fullname;
- {
-- /* called whenever a file has been deleted. Updates browser & dir windows,
-+ /* called whenever a file has been created. Updates browser & dir windows,
- if necessary */
-
- BRCreatedFile(fullname);
-@@ -1006,6 +1058,9 @@
- ((rv=(char *) getenv("cwd"))==NULL)) rv = "./";
- strcpy(buf, rv);
- }
-+#ifdef AUTO_EXPAND
-+ Vdtodir(buf);
-+#endif
- }
-
-
-diff -ruN xv-3.10a-bugfixes/xvml.c xv-3.10a-enhancements/xvml.c
---- xv-3.10a-bugfixes/xvml.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvml.c 2005-04-17 22:57:34.000000000 -0700
-@@ -0,0 +1,989 @@
-+/*
-+ * xvml.c - makes text item structure for multi-lingual textviewer.
-+ *
-+ * Entry Points:
-+ * struct ml_text *ml_draw_text()
-+ * struct context *ml_create_context()
-+ * int ml_set_charsets()
-+ * void get_monofont_size()
-+ */
-+
-+#include "xv.h"
-+#include <X11/Xresource.h>
-+
-+#ifdef TV_MULTILINGUAL /* whole this file. */
-+
-+#include "xvml.h"
-+#define HAVE_STRDUP 1
-+#define USE_MULE_EXTENSION
-+
-+#ifndef __STDC__
-+#define CHAR char
-+#else
-+#define CHAR int
-+#endif
-+
-+#define CODE_SI 0x0e /* LS0 */
-+#define CODE_SO 0x0f /* LS1 */
-+#define CODE_SS2 ((unsigned char) 0x8e)
-+#define CODE_SS3 ((unsigned char) 0x8f)
-+
-+int ml_tab_width = 64; /* dots */
-+
-+struct charset {
-+ int bpc; /* bytes per char */
-+ int noc; /* number of chars */
-+ char designator;
-+ char *registry;
-+ int bit7;
-+
-+ int loaded;
-+ char *fontname;
-+
-+ XFontStruct *fs;
-+} charset[] = {
-+ { 1, 94, 'B', "iso8859-1", 0, 0, NULL, NULL},
-+ { 1, 96, 'A', "iso8859-1", 1, 0, NULL, NULL},
-+ { 1, 94, '0', "omron_udc_zh-0", 0, 0, NULL, NULL},
-+ { 1, 94, '2', "mulearabic-0", 0, 0, NULL, NULL},
-+ { 1, 94, '3', "mulearabic-1", 0, 0, NULL, NULL},
-+ { 1, 94, '4', "mulearabic-2", 0, 0, NULL, NULL},
-+ { 1, 94, 'J', "jisx0201.1976-0", 0, 0, NULL, NULL},
-+ { 1, 96, '0', "muleipa-1", 1, 0, NULL, NULL},
-+ { 1, 96, '1', "viscii1.1-1", 1, 0, NULL, NULL},
-+ { 1, 96, '2', "viscii1.1-1", 1, 0, NULL, NULL},
-+ { 1, 96, 'B', "iso8859-2", 1, 0, NULL, NULL},
-+ { 1, 96, 'C', "iso8859-3", 1, 0, NULL, NULL},
-+ { 1, 96, 'D', "iso8859-4", 1, 0, NULL, NULL},
-+ { 1, 96, 'T', "tis620.1986-0", 1, 0, NULL, NULL},
-+ { 1, 96, 'F', "iso8859-7", 1, 0, NULL, NULL},
-+ { 1, 96, 'G', "iso8859-6", 1, 0, NULL, NULL},
-+ { 1, 96, 'H', "iso8859-8", 1, 0, NULL, NULL},
-+ { 1, 94, 'I', "jisx0201.1976-0", 1, 0, NULL, NULL},
-+ { 1, 96, 'L', "iso8859-5", 1, 0, NULL, NULL},
-+ { 1, 96, 'M', "iso8859-9", 1, 0, NULL, NULL},
-+ { 2, 94, '2', "ethio-0", 0, 0, NULL, NULL},
-+ { 2, 94, '@', "jisx0208.1978", 0, 0, NULL, NULL},
-+ { 2, 94, 'A', "gb2312.1980-0", 0, 0, NULL, NULL},
-+ { 2, 94, 'B', "jisx0208.1983-0", 0, 0, NULL, NULL},
-+ { 2, 94, 'C', "ksc5601.1987-0", 0, 0, NULL, NULL},
-+ { 2, 94, 'D', "jisx0212.1990-0", 0, 0, NULL, NULL},
-+ { 2, 94, '0', "big5.eten-0", 0, 0, NULL, NULL},
-+ { 2, 94, '1', "big5.hku-0", 0, 0, NULL, NULL},
-+ /* End Mark */
-+ { 0, 0, 0, NULL, 0, 0, NULL, NULL},
-+};
-+#define NR_CHARSETS ((int) (sizeof charset / sizeof charset[0]))
-+
-+static struct charset *ascii = NULL;
-+
-+struct context {
-+ struct charset *g[4];
-+ struct charset **gl, **gr;
-+ struct charset **ss;
-+ int eol; /* 0: \n, 1: \r\n, 2: \r, 3: any */
-+ int valid[4]; /* g[i] is valid? */
-+ int short_form; /* allow shortened designator sequence? */
-+ int lock_shift; /* allow locking shift? */
-+
-+ unsigned char *cbuf, *cbp;
-+ struct ml_text text;
-+ int line;
-+ int delta;
-+ int toolong;
-+
-+ Display *dpy;
-+ Screen *scr;
-+ Window root_win;
-+};
-+#define DPY (context->dpy)
-+#define SCR (context->scr)
-+#define ROOT_WIN (context->root_win)
-+
-+static unsigned char *escape_sequence PARM((unsigned char *));
-+static unsigned char *designator_sequence PARM((unsigned char *));
-+static void locking_shift PARM((unsigned CHAR));
-+static void single_shift PARM((unsigned CHAR));
-+static void put_unknown_char PARM((unsigned CHAR));
-+static struct charset *search_charset PARM((int, int, int));
-+static void pack_string PARM((struct charset *,
-+ unsigned char *, int));
-+static void init_xrm PARM((void));
-+static void init_xrm_fonts PARM((void));
-+static void init_xrm_tab PARM((void));
-+#ifndef HAVE_STRDUP
-+static char *strdup PARM((char *));
-+#endif
-+
-+static char *default_fonts[] = { /* default for xrm_fonts */
-+ "-sony-fixed-medium-r-normal--16-*-*-*-*-*-iso8859-1",
-+ "-jis-fixed-medium-r-normal--16-*-*-*-*-*-jisx0208.1983-0",
-+};
-+static int xrm_nfonts;
-+static char **xrm_fonts;
-+
-+static struct context *context; /* current context */
-+
-+struct ml_text *ml_draw_text(ctx, string, len)
-+ struct context *ctx;
-+ char *string;
-+ int len;
-+{
-+ unsigned char *str = (unsigned char *) string;
-+ unsigned char *estr = str + len;
-+
-+ context = ctx;
-+
-+ if(ascii == NULL){
-+ fputs("ml_draw_text: call ml_set_charsets, first.\n", stderr);
-+ return NULL;
-+ }
-+
-+ if(!str)
-+ return &context->text;
-+
-+ WaitCursor();
-+
-+ if (context->text.maxlines != 0) {
-+ struct ml_text *tp = &context->text;
-+ struct ml_line *lp;
-+ int i;
-+ for (i = tp->nlines, lp = tp->lines; i > 0; i--, lp++) {
-+ if (lp->maxitems != 0)
-+ free((char *) lp->items);
-+ }
-+ free((char *) tp->lines);
-+ tp->maxlines = tp->nlines = 0;
-+ }
-+ if (context->cbuf != NULL)
-+ free((char *) context->cbuf);
-+ context->cbp = (unsigned char *) malloc((size_t) len * 8);/* all \xxx */
-+ context->cbuf = context->cbp;
-+ context->line = 0;
-+ context->delta = 0;
-+ context->ss = NULL;
-+
-+ while(str < estr){
-+ if((*str & 0x80) == 0){ /* left half */
-+ struct charset *cs = context->ss ? *context->ss : *context->gl;
-+ unsigned char min_char, max_char;
-+ if (cs != NULL) {
-+ if(cs->noc == 94){
-+ min_char = 0x21;
-+ max_char = 0x7e;
-+ }else{
-+ min_char = 0x20;
-+ max_char = 0x7f;
-+ }
-+ }
-+
-+ if (cs == NULL)
-+ put_unknown_char(*str++);
-+ else if(*str < min_char || *str > max_char){ /* C1 */
-+ switch(*str){
-+ case ' ':
-+ {
-+ unsigned char *p = str + 1;
-+ while (*p == ' ' && p < estr)
-+ p++;
-+ pack_string(ascii, str, (int) (p - str));
-+ str = p;
-+ }
-+ break;
-+
-+ case '\t':
-+ pack_string(ascii, str++, 0);
-+ break;
-+
-+ case '\n':
-+ switch (context->eol) {
-+ case 0: /* unix type eol */
-+ pack_string(ascii, str, 0);
-+ WaitCursor();
-+ str++;
-+ break;
-+ case 1: /* dos type eol */
-+ case 2: /* mac type eol */
-+ put_unknown_char('\n');
-+ str++;
-+ break;
-+ case 3: /* any type eol */
-+ pack_string(ascii, str++, 0);
-+ while (*str == '\n' || *str == '\r')
-+ str++;
-+ WaitCursor();
-+ break;
-+ }
-+ break;
-+
-+ case '\r':
-+ switch (context->eol) {
-+ case 0:
-+ put_unknown_char('\r');
-+ str++;
-+ break;
-+ case 1:
-+ str++;
-+ if (*str == '\n')
-+ pack_string(ascii, str++, 0);
-+ else
-+ put_unknown_char('\r');
-+ break;
-+ case 2:
-+ pack_string(ascii, str, 0);
-+ WaitCursor();
-+ str++;
-+ break;
-+ case 3:
-+ pack_string(ascii, str++, 0);
-+ while (*str == '\n' || *str == '\r')
-+ str++;
-+ WaitCursor();
-+ break;
-+ }
-+ break;
-+
-+ case '\033':
-+ {
-+ unsigned char *p;
-+ str++;
-+ if((p = escape_sequence(str)) == str)
-+ put_unknown_char('\033');
-+ else
-+ str = p;
-+ }
-+ break;
-+
-+ case CODE_SI:
-+ case CODE_SO:
-+ if (!context->lock_shift)
-+ put_unknown_char((unsigned int) *str++);
-+ else
-+ locking_shift((unsigned int) *str++);
-+ break;
-+
-+ default:
-+ put_unknown_char((unsigned int) *str++);
-+ }
-+ }else{ /* GL */
-+ if (context->ss != NULL) {
-+ pack_string(cs, str, 1);
-+ str += cs->bpc;
-+ context->ss = NULL;
-+ } else {
-+ int n;
-+
-+ if (cs->bpc == 1) {
-+ unsigned char *p = str;
-+ for (n = 0; p < estr; n++) {
-+ if (*p < min_char || *p > max_char)
-+ break;
-+ p++;
-+ }
-+ pack_string(cs, str, n);
-+ str = p;
-+ } else {
-+ unsigned char *p = str;
-+ for (n = 0; p < estr - 1; n++) {
-+ if (*p < min_char || *p > max_char ||
-+ *(p + 1) < min_char || *(p + 1) > max_char)
-+ break;
-+ p += 2;
-+ }
-+ if (n > 0)
-+ pack_string(cs, str, n);
-+ else
-+ put_unknown_char(*p++);
-+ str = p;
-+ }
-+ }
-+ }
-+ }else{ /* right half */
-+ struct charset *cs = context->ss ? *context->ss : *context->gr;
-+ unsigned char min_char, max_char;
-+ if (cs != NULL) {
-+ if(cs->noc == 94){
-+ min_char = 0xa1;
-+ max_char = 0xfe;
-+ }else{
-+ min_char = 0xa0;
-+ max_char = 0xff;
-+ }
-+ }
-+
-+ if (cs == NULL)
-+ put_unknown_char(*str++);
-+ else if(*str < min_char || *str > max_char){ /* C2 */
-+ unsigned char c = *str++;
-+ switch(c){
-+ case CODE_SS2:
-+ case CODE_SS3:
-+ single_shift((unsigned CHAR) c);
-+ break;
-+ default:
-+ put_unknown_char(c);
-+ }
-+ }else{ /* GR */
-+ if (context->ss != NULL) {
-+ pack_string(cs, str, 1);
-+ str += cs->bpc;
-+ context->ss = NULL;
-+ } else {
-+ int n;
-+
-+ if (cs->bpc == 1) {
-+ unsigned char *p = str;
-+ for (n = 0; p < estr; n++) {
-+ if (*p < min_char || *p > max_char)
-+ break;
-+ p++;
-+ }
-+ pack_string(cs, str, n);
-+ str = p;
-+ } else {
-+ unsigned char *p = str;
-+ for (n = 0; p < estr - 1; n++) {
-+ if (*p < min_char || *p > max_char ||
-+ *(p + 1) < min_char || *(p + 1) > max_char)
-+ break;
-+ p += 2;
-+ }
-+ if (n > 0)
-+ pack_string(cs, str, n);
-+ else
-+ put_unknown_char(*p++);
-+ str = p;
-+ }
-+ }
-+ }
-+ }
-+ }
-+
-+ {
-+ struct ml_text *tp = &context->text;
-+ struct ml_line *lp;
-+ int i;
-+
-+ tp->width = 0;
-+ tp->height = 0;
-+ for (lp = tp->lines, i = tp->nlines; i > 0; lp++, i--) {
-+ if (lp->nitems == 0) {
-+ lp->ascent = ascii->fs->ascent;
-+ lp->descent = ascii->fs->descent;
-+ }
-+ if (tp->width < lp->width)
-+ tp->width = lp->width;
-+ tp->height += lp->ascent + lp->descent;
-+ }
-+ }
-+
-+ SetCursors(-1);
-+ return &context->text;
-+}
-+
-+static unsigned char *escape_sequence(str)
-+ unsigned char *str;
-+{
-+ unsigned char *p;
-+ switch(*str){
-+ case '$':
-+ case '(': case ')': case '*': case '+':
-+ case '-': case '.': case '/': case ',':
-+ if((p = designator_sequence(str)) == NULL)
-+ return str;
-+ return p;
-+ case 'n': case 'o': case '~': case '}': case '|':
-+ if (!context->lock_shift)
-+ return str;
-+ locking_shift(*str);
-+ return str + 1;
-+ case 'N': case 'O':
-+ single_shift(*str);
-+ return str + 1;
-+ }
-+ return str;
-+
-+}
-+
-+static unsigned char *designator_sequence(str)
-+ unsigned char *str;
-+{
-+ unsigned char *p = str;
-+ int noc, bpc, n_g, shortened;
-+ unsigned char des;
-+ struct charset *cs;
-+
-+ if(*p == '$'){
-+ bpc = 2;
-+ p++;
-+ }else
-+ bpc = 1;
-+
-+ switch(*p++){
-+ case '(': noc = 94; n_g = 0; des = *p++; shortened = 0; break;
-+ case ')': noc = 94; n_g = 1; des = *p++; shortened = 0; break;
-+ case '*': noc = 94; n_g = 2; des = *p++; shortened = 0; break;
-+ case '+': noc = 94; n_g = 3; des = *p++; shortened = 0; break;
-+#ifdef USE_MULE_EXTENSION
-+ case ',': noc = 96; n_g = 0; des = *p++; shortened = 0; break;
-+#endif
-+ case '-': noc = 96; n_g = 1; des = *p++; shortened = 0; break;
-+ case '.': noc = 96; n_g = 2; des = *p++; shortened = 0; break;
-+ case '/': noc = 96; n_g = 3; des = *p++; shortened = 0; break;
-+ case '@': noc = 94; n_g = 0; des = 'B'; shortened = 0; break;
-+ case 'A': noc = 94; n_g = 0; des = 'A'; shortened = 1; break;
-+ case 'B': noc = 94; n_g = 0; des = 'B'; shortened = 1; break;
-+ default: return NULL;
-+ }
-+ if (!context->short_form && shortened)
-+ return NULL;
-+
-+ if((cs = search_charset(bpc, noc, des)) == NULL){
-+ if(DEBUG){
-+ fprintf(stderr, "designator_sequence: (%d,%d,%c) not found.\n",
-+ bpc, noc, des);
-+ }
-+ return NULL;
-+ }
-+ if (!context->valid[n_g])
-+ return NULL;
-+ context->g[n_g] = cs;
-+ if(DEBUG){
-+ fprintf(stderr,
-+ "designator_sequence: G%d is `%s'.\n", n_g, cs->registry);
-+ }
-+ return p;
-+}
-+
-+static void locking_shift(c)
-+ unsigned CHAR c;
-+{
-+ switch((unsigned char) c){
-+ case CODE_SI: context->gl = &context->g[0]; break;
-+ case CODE_SO: context->gl = &context->g[1]; break;
-+ case 'n': context->gl = &context->g[2]; break;
-+ case 'o': context->gl = &context->g[3]; break;
-+ case '~': context->gr = &context->g[1]; break;
-+ case '}': context->gr = &context->g[2]; break;
-+ case '|': context->gr = &context->g[3]; break;
-+ }
-+ if(DEBUG){
-+ fprintf(stderr, "locking_shift: (%d,%d).\n",
-+ (int)(context->gl - context->g),
-+ (int)(context->gr - context->g));
-+ }
-+}
-+
-+static void single_shift(c)
-+ unsigned CHAR c;
-+{
-+ switch((unsigned char) c){
-+ case CODE_SS2: context->ss = &context->g[2]; break;
-+ case CODE_SS3: context->ss = &context->g[3]; break;
-+ }
-+}
-+
-+
-+static void put_unknown_char(chr)
-+ unsigned CHAR chr;
-+{
-+ unsigned char c = chr;
-+
-+ if(c < 0x20){
-+ unsigned char buf[2];
-+ buf[0] = '^';
-+ buf[1] = c + 0x40;
-+ pack_string(ascii, buf, 2);
-+ }else{
-+ unsigned char buf[4];
-+ buf[0] = '\\';
-+ buf[1] = ((c >> 6) & 07) + '0';
-+ buf[2] = ((c >> 3) & 07) + '0';
-+ buf[3] = ((c ) & 07) + '0';
-+ pack_string(ascii, buf, 4);
-+ }
-+}
-+
-+struct context *ml_create_context(s)
-+ Screen *s;
-+{
-+ context = (struct context *) malloc(sizeof *context);
-+
-+ context->g[0] = NULL;
-+ context->g[1] = NULL;
-+ context->g[2] = NULL;
-+ context->g[3] = NULL;
-+ context->gl = NULL;
-+ context->gr = NULL;
-+ context->ss = NULL;
-+
-+ context->cbuf = NULL;
-+ context->text.maxlines = context->text.nlines = 0;
-+ context->line = 0;
-+ context->delta = 0;
-+ context->toolong = 0;
-+
-+ DPY = DisplayOfScreen(s);
-+ SCR = s;
-+ ROOT_WIN = RootWindowOfScreen(s);
-+
-+ return context;
-+}
-+
-+
-+int ml_set_charsets(ctx, sys)
-+ struct context *ctx;
-+ struct coding_system *sys;
-+{
-+ int retval = 0;
-+ int i;
-+
-+ context = ctx;
-+
-+ if(ascii == NULL){
-+ init_xrm();
-+ if((ascii = search_charset(1, 94, 'B')) == NULL){
-+ fputs("ml_set_charsets: ascii charset not found.\n", stderr);
-+ Quit(1);
-+ }
-+ if (ascii->fs == NULL) {
-+ fputs("ml_set_charsets: iso8859-1 font not found.\n", stderr);
-+ Quit(1);
-+ }
-+ }
-+ for(i = 0; i < 4; i++){
-+ switch(sys->design[i].bpc){
-+ case -1: /* make G[i] invalid */
-+ context->valid[i] = 0;
-+ break;
-+
-+ case 0: /* don't change */
-+ break;
-+
-+ case 1: case 2: /* change it */
-+ if((context->g[i] = search_charset(sys->design[i].bpc,
-+ sys->design[i].noc,
-+ sys->design[i].des)) == NULL){
-+ fputs("ml_set_charsets: ", stderr);
-+ fprintf(stderr, "(%d,%d,%c) is specified as G%d, ",
-+ sys->design[i].bpc, sys->design[i].noc,
-+ sys->design[i].des, i);
-+ fputs("but not found. using `iso8859-1'.\n", stderr);
-+ context->g[i] = ascii;
-+ retval++;
-+ }
-+ context->valid[i] = 1;
-+ break;
-+
-+ default: /* error */
-+ fprintf(stderr,"ml_set_charsets: bad arguments of G%d. ", i);
-+ fputs("using `iso8859-1'.\n", stderr);
-+ context->g[i] = ascii;
-+ retval++;
-+ }
-+ }
-+ if((unsigned int) sys->gl < 4)
-+ context->gl = &context->g[sys->gl];
-+ else{
-+ fprintf(stderr, "ml_set_charsets: bad number as GL. using G0.\n");
-+ context->gl = &context->g[0];
-+ }
-+ if((unsigned int) sys->gr < 4)
-+ context->gr = &context->g[sys->gr];
-+ else{
-+ fprintf(stderr, "ml_set_charsets: bad number as GR. using G0.\n");
-+ context->gr = &context->g[0];
-+ }
-+ context->eol = sys->eol;
-+ context->short_form = sys->short_form;
-+ context->lock_shift = sys->lock_shift;
-+ return retval;
-+}
-+
-+static struct charset *search_charset(bpc, noc, des)
-+ int bpc, noc;
-+ int des;
-+{
-+ struct charset *cset;
-+ for(cset = charset; cset->bpc != 0; cset++){
-+ if(cset->bpc == bpc &&
-+ cset->noc == noc &&
-+ cset->designator == (char) des){
-+ if(!cset->loaded){
-+#if 0
-+ int i, l;
-+ l = strlen(cset->registry);
-+ for (i = 0; i < xrm_nfonts; i++) {
-+ int li = strlen(xrm_fonts[i]);
-+ if (li > l) {
-+ if (xrm_fonts[i][li - l - 1] == '-' &&
-+ strcmp(xrm_fonts[i] + li - l,
-+ cset->registry) == 0) {
-+ if ((cset->fs = XLoadQueryFont(DPY, xrm_fonts[i]))
-+ != NULL) {
-+ if (DEBUG) {
-+ fprintf(stderr, "%s for %s\n",
-+ xrm_fonts[i], cset->registry);
-+ }
-+ cset->fontname = xrm_fonts[i];
-+ break;
-+ } else
-+ SetISTR(ISTR_WARNING,
-+ "%s: font not found.", xrm_fonts[i]);
-+ }
-+ }
-+ }
-+#else
-+ int i, l;
-+ l = strlen(cset->registry);
-+ for (i = 0; i < xrm_nfonts && cset->fs == NULL; i++) {
-+ int j, nfnts = 0;
-+ char **fnts = XListFonts(DPY, xrm_fonts[i],
-+ 65535, &nfnts);
-+ for (j = 0 ; j < nfnts; j++) {
-+ int ll = strlen(fnts[j]);
-+ if (*(fnts[j] + ll - l - 1) == '-' &&
-+ strcmp(fnts[j] + ll - l, cset->registry)== 0) {
-+ if ((cset->fs = XLoadQueryFont(DPY, fnts[j]))
-+ != NULL) {
-+ if (DEBUG) {
-+ fprintf(stderr, "%s for %s\n",
-+ fnts[j], cset->registry);
-+ }
-+ cset->fontname = strdup(fnts[j]);
-+ break;
-+ } else
-+ SetISTR(ISTR_WARNING,
-+ "%s: font not found", fnts[j]);
-+ }
-+ }
-+ if (fnts != NULL)
-+ XFreeFontNames(fnts);
-+ }
-+#endif
-+ if(cset->fs == NULL){
-+ SetISTR(ISTR_WARNING,
-+ "font for %s not found.\nusing ascii font.",
-+ cset->registry);
-+ if (ascii != NULL)
-+ cset->fs = ascii->fs;
-+ }
-+
-+ cset->loaded = 1;
-+ }
-+ return cset;
-+ }
-+ }
-+ return NULL;
-+}
-+
-+static void pack_string(cs, str, len)
-+ struct charset *cs;
-+ unsigned char *str;
-+ int len; /* number of chars(not bytes) */
-+{
-+ struct ml_text *mt = &context->text;
-+ struct ml_line *lp;
-+ XTextItem16 *ip;
-+
-+ if (context->line == mt->maxlines) {
-+ int oldmax = mt->maxlines;
-+ if (mt->maxlines < 1)
-+ mt->maxlines = 1;
-+ else
-+ mt->maxlines = 2 * mt->maxlines;
-+ if (oldmax == 0)
-+ mt->lines = (struct ml_line *)
-+ malloc(sizeof(struct ml_line) * mt->maxlines);
-+ else {
-+ mt->lines = (struct ml_line *)
-+ realloc(mt->lines,
-+ sizeof(struct ml_line) * mt->maxlines);
-+ }
-+ }
-+ lp = &mt->lines[context->line];
-+ if (mt->nlines == context->line) {
-+ mt->nlines++;
-+ lp->maxitems = 0;
-+ lp->nitems = 0;
-+ lp->width = 0;
-+ lp->ascent = lp->descent = 0;
-+ }
-+
-+ if (len == 0) {
-+ switch (*str) {
-+ case '\n':
-+ context->line++;
-+ context->delta = 0;
-+ context->toolong = 0;
-+ break;
-+ case '\t':
-+ {
-+ int nx, x = lp->width + context->delta;
-+ nx = (x + ml_tab_width) / ml_tab_width * ml_tab_width;
-+ context->delta += nx - x;
-+ }
-+ break;
-+ }
-+ return;
-+ }
-+
-+ if (context->toolong)
-+ return;
-+ if (lp->width > 30000) {
-+ context->toolong = 1;
-+ cs = ascii;
-+ str = (unsigned char *) "...";
-+ len = 3;
-+ }
-+
-+ if (lp->nitems == lp->maxitems) {
-+ int oldmax = lp->maxitems;
-+ if (lp->maxitems < 1)
-+ lp->maxitems = 1;
-+ else
-+ lp->maxitems = 2 * lp->maxitems;
-+ if (oldmax == 0)
-+ lp->items = (XTextItem16 *)
-+ malloc(sizeof(XTextItem16) * lp->maxitems);
-+ else
-+ lp->items = (XTextItem16 *)
-+ realloc(lp->items,
-+ sizeof(XTextItem16) * lp->maxitems);
-+ }
-+ ip = &lp->items[lp->nitems++];
-+ ip->chars = (XChar2b *) context->cbp;
-+ ip->nchars = len;
-+ ip->delta = context->delta;
-+ ip->font = cs->fs->fid;
-+ context->cbp += 2 * len;
-+ context->delta = 0;
-+
-+ if (cs->bpc == 1) {
-+ XChar2b *p;
-+ unsigned char b7 = cs->bit7 ? 0x80 : 0;
-+ int i;
-+ for (i = len, p = ip->chars; i > 0; i--, p++) {
-+ p->byte1 = '\0';
-+ p->byte2 = (*str++ & 0x7f) | b7;
-+ }
-+ } else {
-+ XChar2b *p;
-+ unsigned char b7 = cs->bit7 ? 0x80 : 0;
-+ int i;
-+ for (i = len, p = ip->chars; i > 0; i--, p++) {
-+ p->byte1 = (*str++ & 0x7f) | b7;
-+ p->byte2 = (*str++ & 0x7f) | b7;
-+ }
-+ }
-+
-+ lp->width += XTextWidth16(cs->fs, ip->chars, ip->nchars);
-+ if (lp->ascent < cs->fs->ascent)
-+ lp->ascent = cs->fs->ascent;
-+ if (lp->descent < cs->fs->descent)
-+ lp->descent = cs->fs->descent;
-+}
-+
-+void get_monofont_size(wide, high)
-+ int *wide, *high;
-+{
-+ if (ascii == NULL) {
-+ fputs("ml_draw_text: call ml_set_charsets, first.\n", stderr);
-+ return;
-+ }
-+ *wide = ascii->fs->max_bounds.width;
-+ *high = ascii->fs->ascent + ascii->fs->descent;
-+}
-+
-+static void init_xrm()
-+{
-+ init_xrm_fonts();
-+ init_xrm_tab();
-+}
-+
-+static void init_xrm_fonts()
-+{
-+ char *p, *fns = XGetDefault(theDisp, "xv", "fontSet");
-+ int n;
-+ if (fns == NULL) {
-+ xrm_fonts = default_fonts;
-+ xrm_nfonts = sizeof default_fonts / sizeof *default_fonts;
-+ return;
-+ }
-+ while(*fns == ' ' || *fns == '\t')
-+ fns++;
-+ if (*fns == '\0') {
-+ xrm_fonts = default_fonts;
-+ xrm_nfonts = sizeof default_fonts / sizeof *default_fonts;
-+ return;
-+ }
-+ fns = strdup(fns);
-+
-+ n = 1;
-+ for (p = fns; *p != '\0'; p++) {
-+ if (*p == ',')
-+ n++;
-+ }
-+ xrm_nfonts = n;
-+ xrm_fonts = (char **) malloc(sizeof (char *) * xrm_nfonts);
-+ for (n = 0, p = fns; n < xrm_nfonts && *p != '\0'; ) {
-+ while (*p == ' ' || *p == '\t')
-+ p++;
-+ xrm_fonts[n++] = p;
-+ while (1) {
-+ char *q;
-+ while (*p != ' ' && *p != '\t' && *p != ',' && *p != '\0')
-+ p++;
-+ q = p;
-+ while (*q == ' ' || *q == '\t')
-+ q++;
-+ if (*q == ',' || *q == '\0') {
-+ *p = '\0';
-+ p = q + 1;
-+ break;
-+ } else
-+ p = q;
-+ }
-+ }
-+ for ( ; n < xrm_nfonts; n++)
-+ xrm_fonts[n] = "";
-+}
-+
-+static void init_xrm_tab()
-+{
-+ char *ts = XGetDefault(theDisp, "xv", "tabWidth");
-+ unsigned short tab;
-+ if (ts == NULL)
-+ tab = 64;
-+ else {
-+ char *ep;
-+ long t;
-+ int bad = 0;
-+ t = strtol(ts, &ep, 0);
-+ tab = (unsigned short) t;
-+ if (ep != NULL) {
-+ while (*ep == ' ' && *ep == '\t')
-+ ep++;
-+ if (*ep != '\0')
-+ bad = 1;
-+ }
-+ if (tab != (long) (unsigned long) t)
-+ bad = 1;
-+ if (bad) {
-+ SetISTR(ISTR_WARNING, "bad tab width.");
-+ tab = 64;
-+ }
-+ }
-+ ml_tab_width = tab;
-+}
-+
-+
-+#ifndef HAVE_STRDUP
-+static char *strdup(str)
-+ char *str;
-+{
-+ return strcpy(malloc(strlen(str) + 1), str);
-+}
-+#endif
-+
-+char *lookup_registry(d, b7)
-+ struct design d;
-+ int *b7;
-+{
-+ int i;
-+ for (i = 0; i < NR_CHARSETS; i++) {
-+ if (charset[i].bpc == d.bpc && charset[i].noc == d.noc &&
-+ charset[i].designator == d.des) {
-+ *b7 = charset[i].bit7;
-+ return charset[i].registry;
-+ }
-+ }
-+ return NULL;
-+}
-+
-+struct design lookup_design(registry, b7)
-+ char *registry;
-+ int b7;
-+{
-+ struct design d;
-+ int i;
-+ d.bpc = 0;
-+ d.noc = 0;
-+ d.des = '\0';
-+ for (i = 0; i < NR_CHARSETS; i++) {
-+ if (strcmp(charset[i].registry, registry) == 0 &&
-+ charset[i].bit7 == b7) {
-+ d.bpc = charset[i].bpc;
-+ d.noc = charset[i].noc;
-+ d.des = charset[i].designator;
-+ break;
-+ }
-+ }
-+ return d;
-+}
-+
-+char *sjis_to_jis(orig, len, newlen)
-+ char *orig;
-+ int len, *newlen;
-+{
-+ unsigned char *new;
-+ unsigned char *p, *q, *endp;
-+ if (len == 0) {
-+ *newlen = 0;
-+ return (char *) malloc((size_t) 1);
-+ }
-+ new = (unsigned char *) malloc((size_t) len * 4); /* big enough */
-+ for (p = (unsigned char *) orig, endp = p + len, q = new; p < endp; ) {
-+ if ((*p & 0x80) == 0) /* 1 byte char */
-+ *q++ = *p++;
-+ else if (*p >= 0x81 && *p <= 0x9f) { /* kanji 1st byte */
-+ unsigned char c1 = *p++;
-+ unsigned char c2 = *p++;
-+ if (c2 < 0x40 || c2 > 0xfc) { /* bad 2nd byte */
-+ *q++ = CODE_SS2;
-+ *q++ = c1;
-+ *q++ = CODE_SS2;
-+ *q++ = c2;
-+ } else { /* right 2nd byte */
-+ if (c2 <= 0x9e) {
-+ if (c2 > 0x7f)
-+ c2--;
-+ c1 = (c1 - 0x81) * 2 + 1 + 0xa0;
-+ c2 = (c2 - 0x40) + 1 + 0xa0;
-+ } else {
-+ c1 = (c1 - 0x81) * 2 + 2 + 0xa0;
-+ c2 = (c2 - 0x9f) + 1 + 0xa0;
-+ }
-+ *q++ = c1;
-+ *q++ = c2;
-+ }
-+ } else if (*p >= 0xe0 && *p <= 0xef) { /* kanji 1st byte */
-+ unsigned char c1 = *p++;
-+ unsigned char c2 = *p++;
-+ if (c2 < 0x40 || c2 > 0xfc) { /* bad 2nd byte */
-+ *q++ = CODE_SS2;
-+ *q++ = c1;
-+ *q++ = CODE_SS2;
-+ *q++ = c2;
-+ } else { /* right 2nd byte */
-+ if (c2 <= 0x9e) {
-+ c1 = (c1 - 0xe0) * 2 + 63 + 0xa0;
-+ c2 = (c2 - 0x40) + 1 + 0xa0;
-+ } else {
-+ c1 = (c1 - 0xe0) * 2 + 64 + 0xa0;
-+ c2 = (c2 - 0x9f) + 1 + 0xa0;
-+ }
-+ *q++ = c1;
-+ *q++ = c2;
-+ }
-+ } else { /* katakana or something */
-+ *q++ = CODE_SS2;
-+ *q++ = *p++;
-+ }
-+ }
-+ *newlen = q - new;
-+
-+ return (char *) realloc(new, (size_t) *newlen);
-+}
-+
-+#endif /* TV_MULTILINGUAL */
-diff -ruN xv-3.10a-bugfixes/xvml.h xv-3.10a-enhancements/xvml.h
---- xv-3.10a-bugfixes/xvml.h 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvml.h 2005-04-17 22:57:45.000000000 -0700
-@@ -0,0 +1,96 @@
-+#ifndef MLVIEW_H
-+#define MLVIEW_H
-+
-+/*
-+ * What is this?
-+ *
-+ * It is a package to show multi-lingual text.
-+ *
-+ * How to use?
-+ *
-+ * 1. Call ml_set_screen(Screen *scr);
-+ * Tell this package the screen you use.
-+ *
-+ * 2. Call ml_set_charsets(struct char_spec spec[4], int gl, int gr);
-+ * Tell this package the initial charsets.
-+ * Gn is set to the charset specified by spec[n], respectively.
-+ * GL and GR are set to G[gl] and G[gr], respectively.
-+ * If first call, iso8859-1 font is loaded.
-+ *
-+ * 3. Call ml_draw_text(char *string);
-+ * It Creates a bitmap, and returns it to you.
-+ * If something goes wrong, it returns None.
-+ * DON'T free the returned pixmaps!!
-+ *
-+ * BUGS:
-+ * - Amharic and Tigrigna characters are strange.
-+ * - Big5 is not supported.
-+ * - Reverse direction is not supported.
-+ * - Composing is not supported.
-+ * - Cantonese can't be shown.
-+ * - Texts which have many lines are buggy.
-+ *
-+ * NOTE:
-+ * - Shifted JIS and Shifted GB must be converted to iso2022 in advance.
-+ *
-+ * Example of parameters to ml_set_charsets:
-+ * - EUC-Japan
-+ * spec = { {1, 94, 'B'}, G0 is US-ASCII
-+ * {2, 94, 'B'}, G1 is JIS X0208
-+ * {1, 94, 'J'}, G2 is (right-half of)JIS X0201
-+ * {2, 94, 'D'} }; G3 is JIS X0212
-+ * gl = 0; GL is G0
-+ * gr = 1; GR is G1
-+ *
-+ * - Compound Text
-+ * spec = { {1, 94, 'B'}, G0 is US-ASCII
-+ * {1, 96, 'A'}, G1 is Latin-1
-+ * {1, 94, 'B'}, G2 is US-ASCII (maybe unused)
-+ * {1, 94, 'B'} }; G3 is US-ASCII (maybe unused)
-+ * gl = 0; GL is G0
-+ * gr = 1; GR is G1
-+ *
-+ * - Korean Mail
-+ * spec = { {1, 94, 'B'}, G0 is US-ASCII
-+ * {2, 94, 'C'}, G1 is KSC5601
-+ * {1, 94, 'B'}, G2 is US-ASCII (maybe unused)
-+ * {1, 94, 'B'} }; G3 is US-ASCII (maybe unused)
-+ * gl = 0; GL is G0
-+ * gl = 1; GR is G1
-+ */
-+
-+struct coding_system {
-+ struct design {
-+ int bpc; /* byte per char if 1 or 2,
-+ don't touch if 0, or
-+ don't use if -1.*/
-+ int noc; /* number of chars (94 or 96) */
-+ char des; /* designator ('A', 'B', ...) */
-+ } design[4];
-+ int gl, gr;
-+ int eol;
-+ int short_form;
-+ int lock_shift;
-+};
-+
-+struct ml_text {
-+ int maxlines, nlines;
-+ struct ml_line {
-+ int maxitems, nitems;
-+ int width, ascent, descent;
-+ XTextItem16 *items;
-+ } *lines;
-+ int width, height;
-+};
-+
-+struct context;
-+struct ml_text *ml_draw_text PARM((struct context *, char *, int));
-+struct context *ml_create_context PARM((Screen *));
-+int ml_set_charsets PARM((struct context *,
-+ struct coding_system *));
-+void get_monofont_size PARM((int *, int *));
-+char *sjis_to_jis PARM((char *, int, int *));
-+char *lookup_registry PARM((struct design, int *));
-+struct design lookup_design PARM((char *, int));
-+
-+#endif
-diff -ruN xv-3.10a-bugfixes/xvpbm.c xv-3.10a-enhancements/xvpbm.c
---- xv-3.10a-bugfixes/xvpbm.c 2005-04-03 14:25:28.000000000 -0700
-+++ xv-3.10a-enhancements/xvpbm.c 2005-04-17 14:04:22.000000000 -0700
-@@ -23,6 +23,15 @@
- */
-
-
-+typedef unsigned short ush;
-+typedef unsigned char uch;
-+
-+#define alpha_composite(composite, fg, alpha, bg) { \
-+ ush temp = ((ush)(fg)*(ush)(alpha) + \
-+ (ush)(bg)*(ush)(255 - (ush)(alpha)) + (ush)128); \
-+ (composite) = (uch)((temp + (temp >> 8)) >> 8); \
-+}
-+
- #define TRUNCSTR "File appears to be truncated."
-
- static int garbage;
-@@ -31,6 +40,7 @@
- static int loadpbm PARM((FILE *, PICINFO *, int));
- static int loadpgm PARM((FILE *, PICINFO *, int, int));
- static int loadppm PARM((FILE *, PICINFO *, int, int));
-+static int loadpam PARM((FILE *, PICINFO *, int, int));
- static int getint PARM((FILE *, PICINFO *));
- static int getbit PARM((FILE *, PICINFO *));
- static int getshort PARM((FILE *));
-@@ -38,10 +48,83 @@
-
- static char *bname;
-
-+
-+#ifdef HAVE_MGCSFX
-+/*
-+ * When file read or file write is fail, probably it's caused by
-+ * reading from pipe which has no data yet, or writing to pipe
-+ * which is not ready yet.
-+ * Then we can use system call select() on descriptor of pipe and wait.
-+ * If you want, change 'undef' to 'define' in the following line.
-+ * This feature is performance-killer.
-+ */
-+#undef FIX_PIPE_ERROR
-+
-+#ifdef __osf__
-+# ifdef __alpha
-+# define FIX_PIPE_ERROR
-+# endif
-+#endif
-+
-+#endif /* HAVE_MGCSFX */
-+
-+
-+#ifdef FIX_PIPE_ERROR
-+
-+int pipefdr;
-+
-+struct timeval timeout;
-+int width;
-+fd_set fds;
-+
-+static void ready_read()
-+{
-+ if(pipefdr < 0) return; /* if file descriptor is not pipe, OK */
-+ WaitCursor();
-+
-+reselect:
-+ /* setting of timeout */
-+ timeout.tv_sec = 1; /* 1 sec */
-+ timeout.tv_usec = 0; /* 0 usec */
-+
-+ FD_ZERO(&fds); /* clear bits */
-+ FD_SET(pipefdr, &fds); /* set bit of fd in fds */
-+
-+ /* number of file descriptor to want check (0 $B!A(B width-1) */
-+ width = pipefdr + 1;
-+
-+ /* select returns number of file descriptors */
-+ if (select(width, &fds, NULL, NULL, &timeout) < 0){
-+ if(DEBUG){
-+ fprintf(stderr, "No file descriptors can't selected, waiting...\n");
-+ }
-+ goto reselect;
-+ }
-+
-+ if (FD_ISSET(pipefdr, &fds)){
-+ /* Now, descriptor of pipe is ready to read */
-+ return;
-+ }else{
-+ if(DEBUG){
-+ fprintf(stderr, "Can't read from pipe yet, waiting...\n");
-+ }
-+ goto reselect;
-+ }
-+
-+}
-+#endif /* FIX_PIPE_ERROR */
-+
- /*******************************************/
-+#ifdef HAVE_MGCSFX
-+int LoadPBM(fname, pinfo, fd)
-+ char *fname;
-+ PICINFO *pinfo;
-+ int fd;
-+#else
- int LoadPBM(fname, pinfo)
- char *fname;
- PICINFO *pinfo;
-+#endif /* HAVE_MGCSFX */
- /*******************************************/
- {
- /* returns '1' on success */
-@@ -50,6 +133,10 @@
- int c, c1;
- int maxv, rv;
-
-+#ifdef FIX_PIPE_ERROR
-+ pipefdr = fd;
-+#endif
-+
- garbage = maxv = rv = 0;
- bname = BaseName(fname);
-
-@@ -57,6 +144,22 @@
- pinfo->comment = (char *) NULL;
-
-
-+#ifdef HAVE_MGCSFX
-+ if(fd < 0){
-+ /* open the file */
-+ fp = xv_fopen(fname,"r");
-+ if (!fp) return (pbmError(bname, "can't open file"));
-+
-+ /* compute file length */
-+ fseek(fp, 0L, 2);
-+ filesize = ftell(fp);
-+ fseek(fp, 0L, 0);
-+ }else{
-+ fp = fdopen(fd, "r");
-+ if (!fp) return (pbmError(bname, "can't open file"));
-+ filesize = 0; /* dummy */
-+ }
-+#else
- /* open the file */
- fp = xv_fopen(fname,"r");
- if (!fp) return (pbmError(bname, "can't open file"));
-@@ -65,6 +168,7 @@
- fseek(fp, 0L, 2);
- filesize = ftell(fp);
- fseek(fp, 0L, 0);
-+#endif /* HAVE_MGCSFX */
-
-
- /* read the first two bytes of the file to determine which format
-@@ -73,7 +177,8 @@
- "P6" = raw pixmap */
-
- c = getc(fp); c1 = getc(fp);
-- if (c!='P' || c1<'1' || c1>'6') return(pbmError(bname, "unknown format"));
-+ if (c!='P' || c1<'1' || (c1>'6' && c1!='8')) /* GRR alpha */
-+ return(pbmError(bname, "unknown format"));
-
- /* read in header information */
- pinfo->w = getint(fp, pinfo); pinfo->h = getint(fp, pinfo);
-@@ -104,6 +209,7 @@
- if (c1=='1' || c1=='4') rv = loadpbm(fp, pinfo, c1=='4' ? 1 : 0);
- else if (c1=='2' || c1=='5') rv = loadpgm(fp, pinfo, c1=='5' ? 1 : 0, maxv);
- else if (c1=='3' || c1=='6') rv = loadppm(fp, pinfo, c1=='6' ? 1 : 0, maxv);
-+ else if (c1=='8') rv = loadpam(fp, pinfo, 1 , maxv);
-
- fclose(fp);
-
-@@ -248,7 +354,20 @@
- }
- }
- else {
-+#ifdef FIX_PIPE_ERROR
-+ reread:
-+ numgot += fread(pic8 + numgot, (size_t) 1, (size_t) w*h - numgot, fp); /* read raw data */
-+ if(errno == EINTR){
-+ if(DEBUG){
-+ fprintf(stderr,
-+ "Can't read all data from pipe, call select and waiting...\n");
-+ }
-+ ready_read();
-+ goto reread;
-+ }
-+#else
- numgot = fread(pic8, (size_t)1, (size_t)npixels, fp); /* read raw data */
-+#endif
- }
- }
-
-@@ -315,7 +434,20 @@
- }
- }
- else {
-+#ifdef FIX_PIPE_ERROR
-+ reread:
-+ numgot += fread(pic24 + numgot, (size_t) 1, (size_t) w*h*3 - numgot, fp); /* read data */
-+ if(errno == EINTR){
-+ if(DEBUG){
-+ fprintf(stderr,
-+ "Can't read all data from pipe, call select and waiting...\n");
-+ }
-+ ready_read();
-+ goto reread;
-+ }
-+#else
- numgot = fread(pic24, (size_t) 1, (size_t) bufsize, fp); /* read data */
-+#endif
- }
- }
-
-@@ -341,6 +473,122 @@
- }
-
-
-+/*******************************************/
-+static int loadpam(fp, pinfo, raw, maxv) /* unofficial RGBA extension */
-+ FILE *fp;
-+ PICINFO *pinfo;
-+ int raw, maxv;
-+{
-+ byte *p, *pix, *pic24, *linebuf, scale[256], bgR, bgG, bgB, r, g, b, a;
-+ int i, j, bitshift, w, h, npixels, bufsize, linebufsize, holdmaxv;
-+
-+ w = pinfo->w;
-+ h = pinfo->h;
-+
-+ npixels = w * h;
-+ bufsize = 3*npixels;
-+ linebufsize = 4*w;
-+ if (w <= 0 || h <= 0 || npixels/w != h || bufsize/3 != npixels ||
-+ linebufsize/4 != w)
-+ return pbmError(bname, "image dimensions too large");
-+
-+ /* allocate 24-bit image */
-+ pic24 = (byte *) calloc((size_t) bufsize, (size_t) 1);
-+ if (!pic24) FatalError("couldn't malloc 'pic24' for PAM");
-+
-+ /* allocate line buffer for pre-composited RGBA data */
-+ linebuf = (byte *) malloc((size_t) linebufsize);
-+ if (!linebuf) {
-+ free(pic24);
-+ FatalError("couldn't malloc 'linebuf' for PAM");
-+ }
-+
-+ pinfo->pic = pic24;
-+ pinfo->type = PIC24;
-+ sprintf(pinfo->fullInfo, "PAM, %s format. (%ld bytes)",
-+ (raw) ? "raw" : "ascii", filesize);
-+ sprintf(pinfo->shrtInfo, "%dx%d PAM.", w, h);
-+ pinfo->colType = F_FULLCOLOR;
-+
-+
-+ /* if maxv>255, keep dropping bits until it's reasonable */
-+ holdmaxv = maxv;
-+ bitshift = 0;
-+ while (maxv>255) { maxv = maxv>>1; bitshift++; }
-+
-+
-+ numgot = 0;
-+
-+ if (!raw) { /* GRR: not alpha-ready */
-+ return pbmError(bname, "can't handle non-raw PAM image");
-+/*
-+ for (i=0, pix=pic24; i<h; i++) {
-+ if ((i&0x3f)==0) WaitCursor();
-+ for (j=0; j<w*3; j++, pix++)
-+ *pix = (byte) (getint(fp, pinfo) >> bitshift);
-+ }
-+ */
-+ }
-+ else { /* raw */
-+ if (holdmaxv>255) { /* GRR: not alpha-ready */
-+ return pbmError(bname, "can't handle PAM image with maxval > 255");
-+/*
-+ for (i=0, pix=pic24; i<h; i++) {
-+ if ((i&0x3f)==0) WaitCursor();
-+ for (j=0; j<w*3; j++,pix++)
-+ *pix = (byte) (getshort(fp) >> bitshift);
-+ }
-+ */
-+ }
-+ else {
-+ if (have_imagebg) { /* GRR: alpha-ready */
-+ bgR = (imagebgR >> 8);
-+ bgG = (imagebgG >> 8);
-+ bgB = (imagebgB >> 8);
-+ } else {
-+ bgR = bgG = bgB = 0;
-+ }
-+ for (i=0, pix=pic24; i<h; i++) {
-+ numgot += fread(linebuf, (size_t) 1, (size_t) linebufsize, fp); /* read data */
-+ if ((i&0x3f)==0) WaitCursor();
-+ for (j=0, p=linebuf; j<w; j++) {
-+ r = *p++;
-+ g = *p++;
-+ b = *p++;
-+ a = *p++;
-+ alpha_composite(*pix++, r, a, bgR)
-+ alpha_composite(*pix++, g, a, bgG)
-+ alpha_composite(*pix++, b, a, bgB)
-+ }
-+ }
-+ }
-+ }
-+
-+ free(linebuf);
-+
-+ /* in principle this could overflow, but not critical */
-+ if (numgot != w*h*4) pbmError(bname, TRUNCSTR);
-+
-+ if (garbage)
-+ return(pbmError(bname, "Garbage characters in image data."));
-+
-+
-+ /* have to scale up all RGB values (Conv24to8 expects RGB values to
-+ range from 0-255) */
-+
-+ if (maxv<255) {
-+ for (i=0; i<=maxv; i++) scale[i] = (i * 255) / maxv;
-+
-+ for (i=0, pix=pic24; i<h; i++) {
-+ if ((i&0x3f)==0) WaitCursor();
-+ for (j=0; j<w*3; j++, pix++) *pix = scale[*pix];
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-
- /*******************************************/
- static int getint(fp, pinfo)
-diff -ruN xv-3.10a-bugfixes/xvpcd.c xv-3.10a-enhancements/xvpcd.c
---- xv-3.10a-bugfixes/xvpcd.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvpcd.c 2005-04-26 00:25:13.000000000 -0700
-@@ -0,0 +1,1307 @@
-+/*
-+ * xvpcd.c - load routine for 'PhotoCD' format pictures
-+ *
-+ * LoadPCD(fname, pinfo, size) - loads a PhotoCD file
-+ *
-+ * This routine will popup a choice of which of the 5 available resolutions
-+ * the user wants to choose, then load it as a 24 bit image.
-+ *
-+ * Copyright 1993 David Clunie, Melbourne, Australia.
-+ *
-+ * The outline of this is shamelessly derived from xvpbm.c to read the
-+ * file, and xvtiffwr.c to handle the popup window and X stuff (X never
-+ * has been my forte !), and the PhotoCD format information (though not
-+ * the code) was found in Hadmut Danisch's (danisch@ira.uka.de) hpcdtoppm
-+ * program in which he has reverse engineered the format by studying
-+ * hex dumps of PhotoCDs ! After all who can afford the Kodak developer's
-+ * kit, which none of us have seen yet ? Am I even allowed to mention these
-+ * words (Kodak, PhotoCD) ? I presume they are registered trade marks.
-+ *
-+ * PS. I have no idea how Halmut worked out the YCC <-> RGB conversion
-+ * factors, but I have calculated them from his tables and the results
-+ * look good enough to me.
-+ *
-+ * Added size parameter to allow the schnautzer to create thumnails
-+ * without requesting the size every time.
-+ */
-+
-+#include "xv.h"
-+#include <memory.h>
-+
-+#ifdef HAVE_PCD
-+
-+#define TRACE 0
-+#if TRACE
-+# define trace(x) fprintf x
-+#else
-+# define trace(x)
-+#endif
-+
-+/* Comments on error-handling:
-+ A truncated file is not considered a Major Error. The file is loaded,
-+ and the rest of the pic is filled with 0's.
-+
-+ Not being able to malloc is a Fatal Error. The program is aborted. */
-+
-+
-+#ifdef __STDC__
-+static void magnify(int, int, int, int, int, byte *);
-+static int pcdError(char *, char *);
-+static int gethuffdata(byte *, byte *, byte *, int, int);
-+#else
-+static void magnify();
-+static int pcdError();
-+static int gethuffdata();
-+#endif
-+
-+#define wcurfactor 16 /* Call WaitCursor() every n rows */
-+
-+static int size; /* Set by window routines */
-+static int leaveitup;/* Cleared by docmd() when OK or CANCEL pressed */
-+static int goforit; /* Set to 1 if OK or 0 if CANCEL */
-+static FILE *fp;
-+static CBUTT lutCB;
-+
-+/*
-+ * This "beyond 100%" table is taken from ImageMagick (gamma 2.2).
-+ * Why there are 351 entries and not 346 as per Kodak documentation
-+ * is a mystery.
-+ */
-+static double rscale = 1.00,
-+ gscale = 1.00,
-+ bscale = 1.00;
-+
-+static byte Y[351] = {
-+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
-+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
-+ 30, 32, 33, 34, 35, 36, 37, 38, 39, 40,
-+ 41, 42, 43, 45, 46, 47, 48, 49, 50, 51,
-+ 52, 53, 54, 56, 57, 58, 59, 60, 61, 62,
-+ 63, 64, 66, 67, 68, 69, 70, 71, 72, 73,
-+ 74, 76, 77, 78, 79, 80, 81, 82, 83, 84,
-+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
-+ 107, 108, 110, 111, 112, 113, 114, 115, 116, 117,
-+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
-+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
-+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
-+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
-+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
-+ 169, 170, 171, 172, 173, 174, 175, 176, 176, 177,
-+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
-+ 188, 189, 190, 191, 192, 193, 193, 194, 195, 196,
-+ 197, 198, 199, 200, 201, 201, 202, 203, 204, 205,
-+ 206, 207, 207, 208, 209, 210, 211, 211, 212, 213,
-+ 214, 215, 215, 216, 217, 218, 218, 219, 220, 221,
-+ 221, 222, 223, 224, 224, 225, 226, 226, 227, 228,
-+ 228, 229, 230, 230, 231, 232, 232, 233, 234, 234,
-+ 235, 236, 236, 237, 237, 238, 238, 239, 240, 240,
-+ 241, 241, 242, 242, 243, 243, 244, 244, 245, 245,
-+ 245, 246, 246, 247, 247, 247, 248, 248, 248, 249,
-+ 249, 249, 249, 250, 250, 250, 250, 251, 251, 251,
-+ 251, 251, 252, 252, 252, 252, 252, 253, 253, 253,
-+ 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-+ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
-+ 254, 254, 254, 254, 254, 254, 254, 254, 254, 255,
-+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-+ 255
-+};
-+
-+/*******************************************/
-+/* The size should be -1 for the popup to ask otherwise fast is assumed */
-+/* returns '1' on success */
-+/*******************************************/
-+int
-+LoadPCD(char *fname, PICINFO *pinfo, int theSize)
-+{
-+ long offset;
-+ int mag;
-+ int rotate;
-+ byte header[3*0x800];
-+ byte *pic24, *luma, *chroma1, *chroma2, *ptr, *lptr, *c1ptr, *c2ptr;
-+ int w, h, npixels, bufsize;
-+ int row, col;
-+ int huffplanes;
-+ char *bname;
-+
-+ bname = BaseName(fname);
-+ pinfo->pic = NULL;
-+ pinfo->comment = NULL;
-+
-+
-+ /*
-+ * open the file
-+ */
-+ if((fp=fopen(fname,"r")) == NULL)
-+ return pcdError(bname, "can't open file");
-+
-+ /*
-+ * inspect the header
-+ */
-+ if(fread(&header[0], 1, sizeof(header), fp) != sizeof(header))
-+ return pcdError(bname, "could not load PCD header");
-+ if(strncmp(&header[0x800], "PCD_", 4) != 0)
-+ return pcdError(bname, "not a PCD file");
-+ rotate = header[0x0E02] & 0x03;
-+
-+/* base/16
-+ - plain data starts at sector 1+2+1=4
-+ (numbered from 0, ie. the 5th sector)
-+ - luma 192*128 = 24576 bytes (12 sectors)
-+ + chroma1 96*64 = 6144 bytes (3 sectors)
-+ + chroma2 96*64 = 6144 bytes (3 sectors)
-+ = total 18 sectors
-+
-+ - NB. "Plain" data is interleaved - 2 luma rows 192 wide,
-+ then 1 of each of the chroma rows 96 wide !
-+
-+ base/4
-+ - plain data starts at sector 1+2+1+18+1=23
-+ - luma 384*256 = 98304 bytes (48 sectors)
-+ + chroma1 192*128 = 24576 bytes (12 sectors)
-+ + chroma2 192*128 = 24576 bytes (12 sectors)
-+ = total 72 sectors
-+
-+ - NB. "Plain" data is interleaved - 2 luma rows 384 wide,
-+ then 1 of each of the chroma rows 192 wide !
-+
-+ base
-+ - plain data starts at sector 1+2+1+18+1+72+1=96
-+
-+ - luma 768*512 = 393216 bytes (192 sectors)
-+ + chroma1 384*256 = 98304 bytes (48 sectors)
-+ + chroma2 384*256 = 98304 bytes (48 sectors)
-+ = total 288 sectors
-+
-+ - NB. "Plain" data is interleaved - 2 luma rows 768 wide,
-+ then 1 of each of the chroma rows 384 wide !
-+
-+ 4base
-+ - plain data for base is read
-+ - luma data interpolated *2
-+ - chroma data interpolated *4
-+
-+ - cd_offset is 1+2+1+18+1+72+1+288=384
-+ - at cd_offset+4 (388) is huffman table
-+ - at cd_offset+5 (389) is 4base luma plane
-+
-+ (the sector at cd_offset+3 seems to contain 256 words each of
-+ which is an offset presumably to the sector containing certain
-+ rows ? rows/4 given 1024 possible rows. The rest of this sector
-+ is filled with zeroes)
-+
-+
-+ 16base
-+ - plain data for base is read
-+ - luma data interpolated *2
-+ - chroma data interpolated *4
-+
-+ - cd_offset is 1+2+1+18+1+72+1+288=384
-+ - at cd_offset+4 (388) is huffman table for 4 base
-+ - at cd_offset+5 (389) is 4base luma plane
-+ - luma plane interpolated *2
-+
-+ - cd_offset is set to current position (should be start of sector)
-+ - at cd_offset+12 is huffman table for 16 base
-+ - at cd_offset+14 is 16 base luma & 2 chroma planes which are read
-+ (note that the luma plane comes first, with a sync pattern
-+ announcing each row from 0 to 2047, then the two chroma planes
-+ are interleaved by row, the row # being even from 0 to 2046, with
-+ each row containing 1536 values, the chroma1 row coming first,
-+ finally followed by a sync pattern with a row of 2048 announcing
-+ the end (its plane seems to be set to 3, ie. chroma2)
-+ - chroma planes interpolated *2
-+
-+ (the sector at cd_offset+10 & 11 seem to contain 1024 pairs of words
-+ the first for luma and the second for chroma, each of
-+ which is an offset presumably to the sector containing certain
-+ rows ? rows/2 given 2048 possible rows)
-+
-+Not yet implemented:
-+
-+In order to do overskip for base and 4base, one has to reach the chroma
-+data for 16 base:
-+
-+ - for 4base, after reading the 4base luma plane (and presumably
-+ skipping the chroma planes) one sets cd_offset to the start of
-+ the "current" sector
-+
-+ - for base, one has to skip the 4base data first:
-+ - cd_offset is set to 384
-+ - at (cd_offset+3 sectors)[510] is a 16 bit word high byte 1st
-+ containing an offset to the beginning of the 16base stuff
-+ though there is then a loop until >30 0xff's start a sector !
-+
-+ - being now positioned after the end of the 4base stuff,
-+ - at (cd_offset+10 sectors)[2] is a 16 bit word high byte 1st
-+ containing an offset to the chroma planes.
-+ - at cd_offset+12 is the set of huffman tables
-+
-+ - for base, the 16base chroma planes are then halved
-+*/
-+
-+ PCDSetParamOptions(bname);
-+ if (theSize == -1)
-+ {
-+ PCDDialog(1); /* Open PCD Dialog box */
-+ SetCursors(-1); /* Somebody has already set it to wait :( */
-+ leaveitup=1;
-+ goforit=0;
-+ size = 1;
-+ /* block until the popup window gets closed */
-+ while (leaveitup) {
-+ int i;
-+ XEvent event;
-+ XNextEvent(theDisp, &event);
-+ HandleEvent(&event, &i);
-+ }
-+ /* At this point goforit and size will have been set */
-+ if (!goforit) {
-+ /* nothing allocated so nothing needs freeing */
-+ return 0;
-+ }
-+ WaitCursor();
-+ }
-+ else
-+ {
-+ size = theSize;
-+ goforit = 1;
-+ }
-+
-+ if(lutCB.val)
-+ rscale = gscale = bscale = 255.0/346.0;
-+ else
-+ rscale = gscale = bscale = 1.0;
-+
-+ switch (size) {
-+ case 0:
-+ pinfo->w = 192;
-+ pinfo->h = 128;
-+ offset=4*0x800;
-+ mag=1;
-+ huffplanes=0;
-+ sprintf(pinfo->fullInfo, "PhotoCD, base/16 resolution");
-+ break;
-+
-+ case 1:
-+ pinfo->w = 384;
-+ pinfo->h = 256;
-+ offset=23*0x800;
-+ mag=1;
-+ huffplanes=0;
-+ sprintf(pinfo->fullInfo, "PhotoCD, base/4 resolution");
-+ break;
-+
-+ case 2:
-+ default:
-+ pinfo->w = 768;
-+ pinfo->h = 512;
-+ offset=96*0x800;
-+ mag=1;
-+ huffplanes=0;
-+ sprintf(pinfo->fullInfo, "PhotoCD, base resolution");
-+ break;
-+
-+ case 3:
-+ pinfo->w = 1536;
-+ pinfo->h = 1024;
-+ offset=96*0x800;
-+ mag=2;
-+ huffplanes=1;
-+ sprintf(pinfo->fullInfo, "PhotoCD, 4base resolution");
-+ break;
-+
-+ case 4:
-+ pinfo->w=3072;
-+ pinfo->h=2048;
-+ offset=96*0x800;
-+ mag=4;
-+ huffplanes=2;
-+ sprintf(pinfo->fullInfo, "PhotoCD, 16base resolution");
-+ break;
-+ }
-+
-+ /*
-+ * rotate?
-+ */
-+ w = pinfo->w;
-+ h = pinfo->h;
-+ switch(rotate) {
-+ case 0:
-+ break;
-+
-+ case 1:
-+ case 3:
-+ pinfo->w = h;
-+ pinfo->h = w;
-+ break;
-+
-+ default:
-+ fprintf(stderr, "unknown image rotate %d; assuming none\n",
-+ rotate);
-+ rotate = 0;
-+ }
-+
-+ /*
-+ * allocate 24-bit image
-+ */
-+ npixels = pinfo->w * pinfo->h;
-+ bufsize = 3 * npixels;
-+ if (pinfo->w <= 0 || pinfo->h <= 0 || npixels/pinfo->w != pinfo->h ||
-+ bufsize/3 != npixels)
-+ FatalError("image dimensions out of range");
-+
-+ pinfo->pic = (byte *)malloc((size_t) bufsize);
-+ if(!pinfo->pic)
-+ FatalError("couldn't malloc '24-bit RGB plane'");
-+
-+ pinfo->type = PIC24;
-+ sprintf(pinfo->shrtInfo, "%dx%d PhotoCD.", pinfo->w, pinfo->h);
-+ pinfo->colType = F_FULLCOLOR;
-+ pinfo->frmType = -1;
-+
-+ if(fseek(fp, offset, SEEK_SET) == -1) {
-+ free(pinfo->pic);
-+ return pcdError(bname,"Can't find start of data.");
-+ }
-+
-+ pic24 = pinfo->pic;
-+
-+ luma=(byte *)calloc(npixels,1);
-+ if(!luma) {
-+ free(pinfo->pic);
-+ FatalError("couldn't malloc 'luma plane'");
-+ }
-+
-+ chroma1=(byte *)calloc(npixels/4,1);
-+ if(!chroma1) {
-+ free(pinfo->pic);
-+ free(luma);
-+ FatalError("couldn't malloc 'chroma1 plane'");
-+ }
-+
-+ chroma2=(byte *)calloc(npixels/4,1);
-+ if(!chroma2) {
-+ free(pinfo->pic);
-+ free(luma);
-+ free(chroma1);
-+ FatalError("couldn't malloc 'chroma2 plane'");
-+ }
-+
-+ /* Read 2 luma rows length w, then one of each chroma rows w/2 */
-+ /* If a mag factor is active, the small image is read into the */
-+ /* top right hand corner of the larger allocated image */
-+
-+ trace((stderr, "base image: start @ 0x%08lx (sector %ld.%ld)\n",
-+ ftell(fp), ftell(fp)/0x800, ftell(fp) % 0x800));
-+ for(row=0,lptr=luma,c1ptr=chroma1,c2ptr=chroma2; row <h/mag;
-+ row+=2,lptr+=w*2,c1ptr+=w/2,c2ptr+=w/2) {
-+ if(fread(lptr, 1, w/mag, fp) != w/mag) {
-+ pcdError(bname, "Luma plane too short.");
-+ break;
-+ }
-+ if(fread(lptr+w, 1, w/mag, fp) != w/mag) {
-+ pcdError(bname, "Luma plane too short.");
-+ break;
-+ }
-+ if(fread(c1ptr, 1, w/2/mag, fp) != w/2/mag) {
-+ pcdError(bname, "Chroma1 plane too short.");
-+ break;
-+ }
-+ if(fread(c2ptr, 1, w/2/mag, fp) != w/2/mag) {
-+ pcdError(bname, "Chroma2 plane too short.");
-+ break;
-+ }
-+ if(row%wcurfactor == 0)
-+ WaitCursor();
-+ }
-+ trace((stderr, "base image: done @ 0x%08lx (sector %ld.%ld)\n",
-+ ftell(fp), ftell(fp)/0x800, ftell(fp) % 0x800));
-+
-+ if(huffplanes) {
-+ if(fseek(fp, 388*0x800, SEEK_SET) == -1)
-+ return pcdError(bname,
-+ "Can't find start of huffman tables.");
-+
-+ magnify(2, h/mag, w/mag, h, w, luma);
-+ magnify(2, h/2/mag, w/2/mag, h/2, w/2, chroma1);
-+ magnify(2, h/2/mag, w/2/mag, h/2, w/2, chroma2);
-+
-+ /*
-+ * doesn't really touch the chroma planes which aren't
-+ * present in 4base
-+ */
-+ gethuffdata(luma, chroma1, chroma2, w, h/mag*2);
-+
-+ /*
-+ * if only doing 4base should probably fetch 16bases
-+ * chroma planes here
-+ */
-+ if(huffplanes == 2) {
-+ /*
-+ * This depends on gethuffdata() having grabbed
-+ * things in 0x800 sectors AND still being
-+ * positioned in the "last" sector of the data
-+ * (cf. Hadmut's code which is positioned at start
-+ * of the next sector)
-+ */
-+ long offset = ftell(fp)/0x800+12;
-+
-+ if(fseek(fp, offset*0x800, SEEK_SET) == 0) {
-+ magnify(2,h/2,w/2,h,w,luma);
-+ magnify(2,h/4,w/4,h/2,w/2,chroma1);
-+ magnify(2,h/4,w/4,h/2,w/2,chroma2);
-+ gethuffdata(luma,chroma1,chroma2,w,h);
-+ } else
-+ fprintf(stderr, "can't seek to 2nd huffman tables\n");
-+ }
-+ }
-+ fclose(fp);
-+
-+ /*
-+ * YCC -> R'G'B' and image rotate
-+ */
-+ ptr=pic24;
-+ lptr=luma; c1ptr=chroma1; c2ptr=chroma2;
-+ for(row = 0; row < h; ++row) {
-+ byte *rowc1ptr = c1ptr,
-+ *rowc2ptr = c2ptr;
-+ int k = 0;
-+
-+ switch(rotate) {
-+ case 1:
-+ ptr = &pic24[row*3 + (w - 1)*h*3];
-+ k = -3*(h + 1);
-+ break;
-+
-+ case 3:
-+ ptr = &pic24[(h - 1 - row)*3];
-+ k = 3*(h - 1);
-+ break;
-+
-+ default:
-+ ptr = &pic24[row*w*3];
-+ k = 0;
-+ break;
-+ }
-+ for(col = 0; col < w; ++col) {
-+ double L = 1.3584*(double) *lptr++,
-+ C1 = 2.2179*(double) (*c1ptr - 156),
-+ C2 = 1.8215*(double) (*c2ptr - 137);
-+ int r = rscale*(L + C2),
-+ g = gscale*(L - 0.194*C1 - 0.509*C2),
-+ b = bscale*(L + C1);
-+
-+ if(lutCB.val) {
-+ if(r < 0) r = 0; else if(r >= 255) r = 255;
-+ if(g < 0) g = 0; else if(g >= 255) g = 255;
-+ if(b < 0) b = 0; else if(b >= 255) b = 255;
-+ } else {
-+ if(r < 0) r = 0; else if(r >= 351) r = 350;
-+ if(g < 0) g = 0; else if(g >= 351) g = 350;
-+ if(b < 0) b = 0; else if(b >= 351) b = 350;
-+ r = Y[r]; g = Y[g]; b = Y[b];
-+ }
-+ *ptr++ = r;
-+ *ptr++ = g;
-+ *ptr++ = b;
-+ ptr += k;
-+ if(col & 1) {
-+ ++c1ptr;
-+ ++c2ptr;
-+ }
-+ }
-+ if((row & 1) == 0) {
-+ c1ptr = rowc1ptr;
-+ c2ptr = rowc2ptr;
-+ }
-+ if(row%wcurfactor == 0)
-+ WaitCursor();
-+ }
-+ free(luma); free(chroma1); free(chroma2);
-+ return 1;
-+}
-+
-+/*
-+ * derived from Hadmut Danisch's interpolate()
-+ */
-+static void
-+magnify(int mag, /* power of 2 by which to magnify in place */
-+ int h, int w, /* the "start" unmag'd dimensions of the array */
-+ int mh, int mw, /* the real (maximum) dimensions of the array */
-+ byte *p) /* pointer to the data */
-+{
-+ int x,y,yi;
-+ byte *optr,*nptr,*uptr; /* MUST be unsigned, else averaging fails */
-+
-+ while (mag > 1) {
-+
-+ /* create every 2nd new row from 0 */
-+ /* even pixels being equal to the old, odd ones averaged with successor */
-+ /* special case being the last column which is just set equal to the */
-+ /* second last) ... */
-+
-+ for(y=0;y<h;y++) {
-+ yi=h-1-y;
-+ optr=p+ yi*mw + (w-1); /* last pixel of an old row */
-+ nptr=p+2*yi*mw + (2*w - 2); /* last pixel of a new row */
-+
-+ nptr[0]=nptr[1]=optr[0]; /* special cases */
-+
-+ for(x=1;x<w;x++) {
-+ optr--; nptr-=2; /* next lower pixel(s) */
-+ nptr[0]=optr[0]; /* even pixels duped */
-+ nptr[1]=(((int)optr[0])+
-+ ((int)optr[1])+1)>>1; /* odd averaged */
-+ }
-+ }
-+
-+ /* Fill in odd rows, as average of prior & succeeding rows, with */
-+ /* even pixels average of one column, odd pixels average of two */
-+
-+ for(y=0;y<h-1;y++) { /* all but the last old row */
-+ optr=p + 2*y*mw; /* start of the new "even" rows */
-+ nptr=optr+mw; /* start of the next empty row */
-+ uptr=nptr+mw; /* start of the next again (even) */
-+
-+ for(x=0;x<w-1;x++) { /* for all cols except the last */
-+ nptr[0]=(((int)optr[0])+
-+ ((int)uptr[0])+1)>>1; /* even pixels */
-+ nptr[1]=(((int)optr[0])+
-+ ((int)optr[2])+
-+ ((int)uptr[0])+
-+ ((int)uptr[2])+2)>>2; /* odd pixels */
-+ nptr+=2; optr+=2; uptr+=2;
-+ }
-+ *(nptr++)=(((int)*(optr++))+
-+ ((int)*(uptr++))+1)>>1; /* 2nd last pixel */
-+ *(nptr++)=(((int)*(optr++))+
-+ ((int)*(uptr++))+1)>>1; /* last pixel */
-+ }
-+
-+ xvbcopy(p + (2*h-2)*mw, /* 2nd last row */
-+ p + (2*h-1)*mw, /* the last row */
-+ 2*w); /* length of a new row */
-+
-+ h*=2; w*=2;
-+ mag>>=1; /* Obviously mag must be a power of 2 ! */
-+ }
-+}
-+
-+/*******************************************/
-+static int
-+pcdError(char *fname, char *st)
-+{
-+ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
-+ return 0;
-+}
-+
-+
-+/**** Stuff for PCDDialog box ****/
-+
-+#define TWIDE 380
-+#define THIGH 160
-+#define T_NBUTTS 2
-+#define T_BOK 0
-+#define T_BCANC 1
-+#define BUTTH 24
-+
-+static void drawTD PARM((int, int, int, int));
-+static void clickTD PARM((int, int));
-+static void doCmd PARM((int));
-+static void PCDSetParams PARM((void));
-+
-+/* local variables */
-+static BUTT tbut[T_NBUTTS];
-+static RBUTT *resnRB;
-+
-+
-+
-+/***************************************************/
-+void CreatePCDW()
-+{
-+ int y;
-+
-+ pcdW = CreateWindow("xv pcd", "XVpcd", NULL,
-+ TWIDE, THIGH, infofg, infobg, 0);
-+ if (!pcdW) FatalError("can't create pcd window!");
-+
-+ XSelectInput(theDisp, pcdW, ExposureMask | ButtonPressMask | KeyPressMask);
-+
-+ BTCreate(&tbut[T_BOK], pcdW, TWIDE-140-1, THIGH-10-BUTTH-1, 60, BUTTH,
-+ "Ok", infofg, infobg, hicol, locol);
-+
-+ BTCreate(&tbut[T_BCANC], pcdW, TWIDE-70-1, THIGH-10-BUTTH-1, 60, BUTTH,
-+ "Cancel", infofg, infobg, hicol, locol);
-+
-+ y = 55;
-+ resnRB = RBCreate(NULL, pcdW, 36, y, "192*128 Base/16",
-+ infofg, infobg,hicol,locol);
-+ RBCreate(resnRB, pcdW, 36, y+18, "384*256 Base/4",
-+ infofg, infobg,hicol,locol);
-+ RBCreate(resnRB, pcdW, 36, y+36, "768*512 Base",
-+ infofg, infobg, hicol, locol);
-+ RBCreate(resnRB, pcdW, TWIDE/2, y, "1536*1024 4Base",
-+ infofg, infobg, hicol, locol);
-+ RBCreate(resnRB, pcdW, TWIDE/2, y+18, "3072*2048 16Base",
-+ infofg, infobg, hicol, locol);
-+
-+ CBCreate(&lutCB, pcdW, TWIDE/2, y+36, "Linear LUT",
-+ infofg, infobg, hicol, locol);
-+
-+ RBSelect(resnRB, 2);
-+
-+ XMapSubwindows(theDisp, pcdW);
-+}
-+
-+
-+/***************************************************/
-+void PCDDialog(vis)
-+int vis;
-+{
-+ if (vis) {
-+ CenterMapWindow(pcdW, tbut[T_BOK].x + tbut[T_BOK].w/2,
-+ tbut[T_BOK].y + tbut[T_BOK].h/2, TWIDE, THIGH);
-+ }
-+ else XUnmapWindow(theDisp, pcdW);
-+ pcdUp = vis;
-+}
-+
-+
-+/***************************************************/
-+int PCDCheckEvent(xev)
-+XEvent *xev;
-+{
-+ /* check event to see if it's for one of our subwindows. If it is,
-+ deal accordingly, and return '1'. Otherwise, return '0' */
-+
-+ int rv;
-+ rv = 1;
-+
-+ if (!pcdUp) return 0;
-+
-+ if (xev->type == Expose) {
-+ int x,y,w,h;
-+ XExposeEvent *e = (XExposeEvent *) xev;
-+ x = e->x; y = e->y; w = e->width; h = e->height;
-+
-+ if (e->window == pcdW) drawTD(x, y, w, h);
-+ else rv = 0;
-+ }
-+
-+ else if (xev->type == ButtonPress) {
-+ XButtonEvent *e = (XButtonEvent *) xev;
-+ int x,y;
-+ x = e->x; y = e->y;
-+
-+ if (e->button == Button1) {
-+ if (e->window == pcdW) clickTD(x,y);
-+ else rv = 0;
-+ } /* button1 */
-+ else rv = 0;
-+ } /* button press */
-+
-+
-+ else if (xev->type == KeyPress) {
-+ XKeyEvent *e = (XKeyEvent *) xev;
-+ char buf[128]; KeySym ks; XComposeStatus status;
-+ int stlen;
-+
-+ stlen = XLookupString(e,buf,128,&ks,&status);
-+ buf[stlen] = '\0';
-+
-+ RemapKeyCheck(ks, buf, &stlen);
-+
-+ if (e->window == pcdW) {
-+ if (stlen) {
-+ if (buf[0] == '\r' || buf[0] == '\n') { /* enter */
-+ FakeButtonPress(&tbut[T_BOK]);
-+ }
-+ else if (buf[0] == '\033') { /* ESC */
-+ FakeButtonPress(&tbut[T_BCANC]);
-+ }
-+ }
-+ }
-+ else rv = 0;
-+ }
-+ else rv = 0;
-+
-+ if (rv==0 && (xev->type == ButtonPress || xev->type == KeyPress)) {
-+ XBell(theDisp, 50);
-+ rv = 1; /* eat it */
-+ }
-+
-+ return rv;
-+}
-+
-+
-+/***************************************************/
-+void
-+PCDSetParamOptions(char *fname)
-+{
-+ int cur;
-+ cur = RBWhich(resnRB);
-+
-+ RBSetActive(resnRB,0,1);
-+ RBSetActive(resnRB,1,1);
-+ RBSetActive(resnRB,2,1);
-+ RBSetActive(resnRB,3,1);
-+ RBSetActive(resnRB,4,1);
-+ CBSetActive(&lutCB,1);
-+}
-+
-+
-+/***************************************************/
-+static void
-+drawTD(int x, int y, int w, int h)
-+{
-+ char *title = "Load PhotoCD file...";
-+ int i;
-+ XRectangle xr;
-+
-+ xr.x = x; xr.y = y; xr.width = w; xr.height = h;
-+ XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
-+
-+ XSetForeground(theDisp, theGC, infofg);
-+ XSetBackground(theDisp, theGC, infobg);
-+
-+ for (i=0; i<T_NBUTTS; i++) BTRedraw(&tbut[i]);
-+
-+ ULineString(pcdW, resnRB->x-16, resnRB->y-10-DESCENT, "Resolution");
-+ RBRedraw(resnRB, -1);
-+ CBRedraw(&lutCB);
-+
-+ XDrawString(theDisp, pcdW, theGC, 20, 19, title, strlen(title));
-+
-+ XSetClipMask(theDisp, theGC, None);
-+}
-+
-+
-+/***************************************************/
-+static void clickTD(x,y)
-+int x,y;
-+{
-+ int i;
-+ BUTT *bp;
-+
-+ /* check BUTTs */
-+
-+ /* check the RBUTTS first, since they don't DO anything */
-+ if ( (i=RBClick(resnRB, x,y)) >= 0) {
-+ (void) RBTrack(resnRB, i);
-+ return;
-+ }
-+
-+ if(CBClick(&lutCB, x, y)) {
-+ (void) CBTrack(&lutCB);
-+ return;
-+ }
-+
-+ for (i=0; i<T_NBUTTS; i++) {
-+ bp = &tbut[i];
-+ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) break;
-+ }
-+
-+ if (i<T_NBUTTS) { /* found one */
-+ if (BTTrack(bp)) doCmd(i);
-+ }
-+}
-+
-+
-+
-+/***************************************************/
-+static void doCmd(cmd)
-+int cmd;
-+{
-+ leaveitup=0;
-+ goforit=0;
-+ switch (cmd) {
-+ case T_BOK: PCDSetParams();
-+ goforit=1;
-+ case T_BCANC: PCDDialog(0);
-+ break;
-+
-+ default: break;
-+ }
-+}
-+
-+
-+/*******************************************/
-+static void PCDSetParams()
-+{
-+ switch (RBWhich(resnRB)) {
-+ case 0: size = 0; break;
-+ case 1: size = 1; break;
-+ case 2: size = 2; break;
-+ case 3: size = 3; break;
-+ case 4: size = 4; break;
-+ case 5: size = 0; break;
-+ default: size = 0; break;
-+ }
-+}
-+
-+/*
-+ * Read the Huffman tables which consist of an unsigned byte # of entries
-+ * (less 1) followed by up to 256 entries, each of which is a series of 4
-+ * unsigned bytes - length, highseq, lowseq, and key.
-+ *
-+ * Store the huffman table into tree type structure:
-+ *
-+ * int int[n of entries*2]
-+ *
-+ * Each entry consists of two words (the 1st for zero and the 2nd for one).
-+ *
-+ * If the word is negative, then subtract it from the current pointer to
-+ * get the next entry (ie. it is the negative offset from the current
-+ * position*2 in order to skip entries not words) with which to
-+ * make a decision.
-+ *
-+ * If the word is not negative, then the low 8 bits contain the value (which
-+ * is supposed to be a signed char) and the rest of the word is zero.
-+ */
-+static void
-+dumphufftab(int n, const byte *h, int m, const int *t)
-+{
-+ int j;
-+
-+ for(j = 0; j < n || j < m; ++j) {
-+ if(j < m)
-+ fprintf(stderr, "%04x %04x ::", 0xffff & t[2*j + 0],
-+ 0xffff & t[2*j + 1]);
-+ else
-+ fprintf(stderr, "%s %s ::", " ", " ");
-+ if(j < n) {
-+ int k;
-+ unsigned l = (h[4*j + 1] << 8) | h[4*j + 2];
-+
-+ fprintf(stderr, " %02x %2d ", h[4*j + 3], h[4*j + 0]);
-+ for(k = 0; k <= h[4*j + 0]; ++k, l *= 2)
-+ fprintf(stderr, "%c", '0'+((l & 0x8000) != 0));
-+ }
-+ fprintf(stderr, "\n");
-+ }
-+}
-+
-+static int *
-+gethufftable(void)
-+{
-+ int *hufftab, *h, i, j, N, num, bufsize, huffptr, hufftop;
-+ byte *huf;
-+
-+ /*
-+ * absorb the entirety of the table in one chunk (for better
-+ * dumps in case of error)
-+ */
-+ trace((stderr, "hufftab 0x%08lx ", ftell(fp)));
-+ num = 1 + fgetc(fp); /* 256 max */
-+ huf = (byte *)alloca(4*num*sizeof(byte));
-+ if((i = fread(huf, 1, 4*num, fp)) != 4*num) {
-+ fprintf(stderr, "unexpected EOF: got %d bytes, wanted %d\n",
-+ i, 4*num);
-+ return NULL;
-+ }
-+
-+ /*
-+ * guess an initial size and prepare the initial entry
-+ */
-+ trace((stderr, "length %u\n", num));
-+ N = 2*num; /* 512 max */
-+ bufsize = N * sizeof(int);
-+/* this case can't happen, but added for symmetry with loop below
-+ if (N/2 != num || bufsize/N != sizeof(int)) {
-+ SetISTR(ISTR_WARNING, "Huffman table size out of range");
-+ return NULL;
-+ }
-+ */
-+ if((hufftab = (int *)malloc(bufsize)) == NULL)
-+ FatalError("couldn't malloc initial Huffman table");
-+ hufftab[0] = hufftab[1] = 0;
-+
-+ /*
-+ * we check the table for reasonableness; there is a lack of detailed
-+ * documentation on this format. in particular, for the base16,
-+ * the position of the huffman tables is uncertain to within one
-+ * "sector", and we have to detect his before trying to read
-+ * bogusness.
-+ */
-+ hufftop = 0;
-+ for(i = 0; i < num; ++i) {
-+ unsigned length = huf[4*i + 0],
-+ codeword = (huf[4*i + 1] << 8) | huf[4*i + 2];
-+
-+ /*
-+ * some sanity checks
-+ */
-+ if(length >= 16) {
-+ fprintf(stderr,
-+ "gethufftable: improbable length @ %d/%d\n",
-+ i, num);
-+ dumphufftab(num, huf, hufftop/2, hufftab);
-+ free(hufftab);
-+ return NULL;
-+ }
-+
-+ /*
-+ * walk the whole set of codes
-+ */
-+ huffptr = 0;
-+ for(j = 0; j < 16; ++j, codeword *= 2) {
-+ /*
-+ * choose the child node
-+ */
-+ if(codeword & 0x8000)
-+ ++huffptr;
-+
-+ /*
-+ * store value at end-of-code
-+ */
-+ if(j == length) {
-+ /*
-+ * more sanity
-+ */
-+ if((codeword *= 2) & 0xffff) {
-+ fprintf(stderr,
-+ "gethufftable: "
-+ ":probable invalid code @ %d\n",
-+ i);
-+ dumphufftab(num, huf,
-+ hufftop/2, hufftab);
-+ free(hufftab);
-+ return NULL;
-+ }
-+ hufftab[huffptr] = 1 + (int) huf[4*i + 3];
-+ break;
-+ }
-+
-+ /*
-+ * otherwise, follow the tree to date
-+ */
-+ if(hufftab[huffptr] < 0) {
-+ huffptr -= hufftab[huffptr];
-+ continue;
-+ } else if(hufftab[huffptr] > 0) {
-+ fprintf(stderr, "duplicate code %d %d/%d\n",
-+ huffptr, i, num);
-+ dumphufftab(num, huf, hufftop/2, hufftab);
-+ free(hufftab);
-+ return NULL;
-+ }
-+
-+ /*
-+ * and if necessary, make the tree bigger
-+ */
-+ if((hufftop += 2) >= N) {
-+ int oldN = N;
-+#if TRACE
-+ dumphufftab(num, huf, hufftop/2, hufftab);
-+#endif
-+ N *= 2;
-+ bufsize = N*sizeof(int);
-+ if (N/2 != oldN || bufsize/N != sizeof(int)) {
-+ SetISTR(ISTR_WARNING,
-+ "new Huffman table is too large");
-+ free(hufftab);
-+ return NULL;
-+ }
-+ h = (int *)realloc(hufftab, bufsize);
-+ if(h == NULL) {
-+ fprintf(stderr,
-+ "Table overflow %d/%d\n",
-+ i, num);
-+ dumphufftab(num, huf,
-+ hufftop/2, hufftab);
-+ free(hufftab);
-+ FatalError(
-+ "couldn't realloc Huffman table");
-+ }
-+ hufftab = h;
-+ }
-+
-+ /*
-+ * then add new ptr
-+ */
-+ hufftab[huffptr] = huffptr - hufftop;
-+ huffptr = hufftop;
-+ hufftab[huffptr + 0] =
-+ hufftab[huffptr + 1] = 0;
-+ }
-+ }
-+ return hufftab;
-+}
-+
-+/* WORDTYPE & char buffer must be unsigned else */
-+/* fills with sign bit not 0 on right shifts */
-+typedef unsigned int WORDTYPE;
-+typedef int SWORDTYPE;
-+#define WORDSIZE sizeof(WORDTYPE)
-+#define NBYTESINBUF 0x800
-+
-+static byte buffer[NBYTESINBUF];
-+static int bitsleft=0;
-+static int bytesleft=0;
-+static byte *bufptr;
-+static WORDTYPE word;
-+
-+#if 0
-+static void
-+dumpbuffer(void)
-+{
-+ int i,left;
-+ byte *ptr=buffer;
-+
-+ fprintf(stderr,"dumpbuffer: bytesleft=%d bitsleft= %d word=0x%08lx\n",
-+ bytesleft,bitsleft,(unsigned long)word);
-+ for (left=NBYTESINBUF; left>0; left-=16) {
-+ fprintf(stderr,"%05d ",left);
-+ for (i=0; i<8; i++) {
-+ fprintf(stderr,"%02x",*ptr++);
-+ fprintf(stderr,"%02x ",*ptr++);
-+ }
-+ fprintf(stderr,"\n");
-+ }
-+}
-+#endif /* 0 */
-+
-+static void
-+loadbuffer(void)
-+{
-+ if ((bytesleft=fread(buffer,1,NBYTESINBUF,fp)) == 0) {
-+ fprintf(stderr,"Truncation error\n");
-+ exit(1);
-+ }
-+ bufptr=buffer;
-+ /* dumpbuffer(); */
-+}
-+
-+static void
-+loadbyte(void)
-+{
-+ if (bytesleft <= 0) loadbuffer();
-+ --bytesleft;
-+ word|=(WORDTYPE)(*bufptr++)<<(sizeof(WORDTYPE)*8-8-bitsleft);
-+ bitsleft+=8;
-+}
-+
-+static int
-+getbit(void)
-+{
-+ int bit;
-+
-+ while (bitsleft <= 0) loadbyte();
-+ --bitsleft;
-+ bit=(SWORDTYPE)(word)<0; /* assumes word is signed */
-+ /* bit=word>>(sizeof(WORDTYPE)*8-1); */
-+ word<<=1;
-+ return bit;
-+}
-+
-+static WORDTYPE
-+getnn(int nn)
-+{
-+ WORDTYPE value;
-+
-+ while (bitsleft <= nn) loadbyte();
-+ bitsleft-=nn;
-+ value=word>>(sizeof(WORDTYPE)*8-nn);
-+ word<<=nn;
-+ return value;
-+}
-+
-+static WORDTYPE
-+isnn(int nn)
-+{
-+ WORDTYPE value;
-+
-+ while (bitsleft <= nn) loadbyte();
-+ value=word>>(sizeof(WORDTYPE)*8-nn);
-+ return value;
-+}
-+
-+static void
-+skipnn(int nn)
-+{
-+ while (bitsleft <= nn) loadbyte();
-+ bitsleft-=nn;
-+ word<<=nn;
-+}
-+
-+#define get1() (getbit())
-+#define get2() (getnn(2))
-+#define get8() (getnn(8))
-+#define get13() (getnn(13))
-+#define get16() (getnn(16))
-+#define get24() (getnn(24))
-+
-+#define is24() (isnn(24))
-+
-+#define skip1() (skipnn(1))
-+#define skip24() (skipnn(24))
-+
-+static int
-+gethuffdata( byte *luma,
-+ byte *chroma1,
-+ byte *chroma2,
-+ int realrowwidth,
-+ int maxrownumber)
-+{
-+static byte clip[3*256];
-+ int *hufftable[3], *huffstart = NULL, *huffptr = NULL;
-+ int row, col, plane, i, result = 1;
-+#if TRACE
-+ int uflow = 0, oflow = 0;
-+#endif
-+ byte *pixelptr = NULL;
-+
-+ trace((stderr,"gethuffdata: start @ 0x%08lx (sector %ld.%ld)\n",
-+ ftell(fp), ftell(fp)/0x800, ftell(fp) % 0x800));
-+
-+ /*
-+ * correction clipping
-+ */
-+ if(clip[256+255] == 0) {
-+ for(i = 0; i < 256; ++i)
-+ clip[i + 0] = 0x00,
-+ clip[i + 256] = (byte) i,
-+ clip[i + 512] = 0xff;
-+ }
-+
-+ /*
-+ * should really only look for luma plane for 4base, but the
-+ * there are zeroes in the rest of the sector that give both
-+ * chroma tables 0 length
-+ */
-+ for(i = 0; i < 3; ++i)
-+ hufftable[i] = NULL;
-+ for(i = 0; i < 3; ++i) {
-+ if((hufftable[i] = gethufftable()) == NULL) {
-+ result = 0;
-+ break;
-+ }
-+ }
-+ if(result == 0)
-+ goto oops;
-+
-+ /*
-+ * skip remainder of current sector
-+ */
-+ i = (ftell(fp) | 0x7ff) + 1;
-+ if(fseek(fp, i, SEEK_SET) < 0) {
-+ fprintf(stderr, "gethuffdata: sector skip failed\n");
-+ return 0;
-+ }
-+
-+ /*
-+ * skip remainder of "sector"
-+ */
-+ i = 0;
-+ while (is24() != 0xfffffe) {
-+ (void)get24();
-+ if(++i == 1)
-+ trace((stderr,"gethuffdata: skipping for sync ..."));
-+ }
-+ if(i != 0)
-+ trace((stderr, " %d times\n", i));
-+
-+ while(result) {
-+ if(is24() == 0xfffffe) {
-+ skip24();
-+ plane = get2();
-+ row = get13(); col = 0;
-+ skip1();
-+ if(row >= maxrownumber) {
-+ trace((stderr,
-+ "gethuffdata: stopping at row %d\n",
-+ row));
-+ break;
-+ }
-+ switch (plane) {
-+ case 0:
-+ huffstart = hufftable[0];
-+ pixelptr = luma + row*realrowwidth;
-+ break;
-+
-+ case 2:
-+ huffstart = hufftable[1];
-+ pixelptr = chroma1 + row/2*realrowwidth/2;
-+ break;
-+
-+ case 3:
-+ huffstart = hufftable[2];
-+ pixelptr = chroma2 + row/2*realrowwidth/2;
-+ break;
-+
-+ default:
-+ fprintf(stderr, "gethuffdata: bad plane %d\n",
-+ plane);
-+ result = 0;
-+ break;
-+ }
-+ WaitCursor();
-+ continue;
-+ }
-+
-+ /*
-+ * locate correction in huffman tree
-+ */
-+ for(huffptr = huffstart;;) {
-+ huffptr += get1();
-+ if(*huffptr < 0) {
-+ huffptr -= *huffptr;
-+ } else if(*huffptr == 0) {
-+ fprintf(stderr,
-+ "gethuffdata: invalid code: "
-+ "image quality reduced\n");
-+ result = 0;
-+ break;
-+ } else
-+ break;
-+ }
-+ if(!result)
-+ break;
-+
-+ /*
-+ * apply correction to the pixel
-+ *
-+ * eeeek!! the corrections can sometimes over or underflow!
-+ * this strongly suggested that the 'magnify' method was in
-+ * some way wrong. however, experiments showed that the
-+ * over/under flows even occured for the pixels that are
-+ * copied through magnify without change (ie, the even
-+ * row/even column case). curiously, though, the odd
-+ * column and odd row cases were about 3x more likely to have
-+ * the over/underflow, and the odd row/odd column case was
-+ * about 5x higher, so maybe the use of a bi-linear
-+ * interpolation is not correct -- just *close*?
-+ *
-+ * the other clue in this area is that the overflows are
-+ * by far most frequenct along edges of very bright
-+ * areas -- rarely in the interior of such regions.
-+ */
-+ i = (int) *pixelptr + (signed char) (*huffptr - 1);
-+#if TRACE
-+ if(i > 255)
-+ ++oflow;
-+/* trace((stderr,
-+ "gethuffdata: oflow %d %d %d\n", row, col, i));*/
-+ else if(i < 0)
-+ ++uflow;
-+/* trace((stderr,
-+ "gethuffdata: uflow %d %d %d\n", row, col, i));*/
-+ ++col;
-+#endif
-+ *pixelptr++ = clip[i + 256];
-+ }
-+
-+oops:
-+ for(i = 0; i < 3; ++i)
-+ free(hufftable[i]);
-+ trace((stderr, "gethuffdata: uflow=%d oflow=%d\n", uflow, oflow));
-+ trace((stderr, "gethuffdata: done @ 0x%08lx (sector %ld.%d)\n",
-+ ftell(fp), ftell(fp)/0x800, 0x800 - bytesleft));
-+ return result;
-+}
-+
-+#endif /* HAVE_PCD */
-diff -ruN xv-3.10a-bugfixes/xvpds.c xv-3.10a-enhancements/xvpds.c
---- xv-3.10a-bugfixes/xvpds.c 2005-04-03 11:31:30.000000000 -0700
-+++ xv-3.10a-enhancements/xvpds.c 2005-04-17 21:40:40.000000000 -0700
-@@ -77,8 +77,7 @@
- * Huffman-encoded, and the encoding histogram follows the ASCII headers.
- * To decode these, we use a slightly modified version of "vdcomp.c" from the
- * NASA Viking CD-ROMS. For xv to work, you need to have vdcomp compiled
-- * and in your search path. vdcomp.c should be included with this
--distribution.
-+ * and in your search path. vdcomp.c should be included with this distribution.
- *
- * I've heard that newer discs have FITS images on them. If they do, support
- * for them will be added when I get one. Until then, you can use fitstopgm.
-@@ -102,7 +101,7 @@
- * This software is provided "as is" without any express or implied warranty.
- */
-
--
-+#define NEEDSDIR /* for S_IRUSR|S_IWUSR */
- #include "xv.h"
-
- #ifdef HAVE_PDS
-@@ -129,27 +128,32 @@
-
- /* This is arbitrary. Everything I've seen so far fits in 50 chars */
- #define COMMENTSIZE 50
-+#define INOTESIZE 1000
-
-
- static int lastwasinote = FALSE;
--static char scanbuff [MAX_SIZE],
-- rtbuff [RTBUFFSIZE],
-- inote [20*COMMENTSIZE],
-- infobuff [COMMENTSIZE],
-- spacecraft [COMMENTSIZE],
-- target [COMMENTSIZE],
-- filtname [COMMENTSIZE],
-- gainmode [COMMENTSIZE],
-- editmode [COMMENTSIZE],
-- scanmode [COMMENTSIZE],
-- exposure [COMMENTSIZE],
-- shuttermode [COMMENTSIZE],
-- mphase [COMMENTSIZE],
-- iname [COMMENTSIZE],
-- itime [COMMENTSIZE],
-- garbage [1020],
-+static char scanbuff [MAX_SIZE+1],
-+ rtbuff [RTBUFFSIZE+1],
-+ inote [INOTESIZE+1],
-+ infobuff [COMMENTSIZE+1],
-+ spacecraft [COMMENTSIZE+1],
-+ target [COMMENTSIZE+1],
-+ filtname [COMMENTSIZE+1],
-+ gainmode [COMMENTSIZE+1],
-+ editmode [COMMENTSIZE+1],
-+ scanmode [COMMENTSIZE+1],
-+ exposure [COMMENTSIZE+1],
-+ shuttermode [COMMENTSIZE+1],
-+ mphase [COMMENTSIZE+1],
-+ iname [COMMENTSIZE+1],
-+ itime [COMMENTSIZE+1],
-+ garbage [1024],
- *tmptmp,
- pdsuncompfname[FNAMESIZE];
-+
-+#define SSTR(l) "%" #l "s"
-+#define S(l) SSTR(l)
-+
- byte *image;
- static int elaphe;
-
-@@ -251,6 +255,9 @@
- /* returns '1' on success, '0' on failure */
-
- int tempnum, bytewidth, bufsize;
-+#ifndef USE_MKSTEMP
-+ int tmpfd;
-+#endif
- FILE *zf;
- static int isfixed,teco,i,j,itype,vaxbyte,
- recsize,hrecsize,irecsize,isimage,labelrecs,labelsofar,
-@@ -397,7 +404,7 @@
-
- if (strcmp(scanbuff,"END") == 0) {
- break;
-- } else if (sscanf(scanbuff," RECORD_TYPE = %s",rtbuff) == 1) {
-+ } else if (sscanf(scanbuff, " RECORD_TYPE = " S(RTBUFFSIZE), rtbuff) == 1) {
- if (strncmp(rtbuff,"VARIABLE_LENGTH", (size_t) 15) == 0) {
- /* itype=PDSVARIABLE; */
- } else if (strncmp(rtbuff,"FIXED_LENGTH", (size_t) 12) == 0) {
-@@ -416,7 +423,7 @@
- if (irecsize == 0) irecsize=recsize;
- lastwasinote=FALSE;
- continue;
-- } else if (sscanf(scanbuff," FILE_TYPE = %s", rtbuff) != 0) {
-+ } else if (sscanf(scanbuff, " FILE_TYPE = " S(RTBUFFSIZE), rtbuff) != 0) {
- lastwasinote=FALSE;
- if (strncmp(rtbuff,"IMAGE", (size_t) 5) == 0) {
- isimage=TRUE;
-@@ -445,74 +452,74 @@
- lastwasinote=FALSE; continue;
- } else if (sscanf(scanbuff," SAMPLE_BITS = %d", &samplesize) == 1) {
- lastwasinote=FALSE; continue;
-- } else if (sscanf(scanbuff," SAMPLE_TYPE = %s", sampletype) == 1) {
-+ } else if (sscanf(scanbuff, " SAMPLE_TYPE = " S(64), sampletype) == 1) {
- lastwasinote=FALSE; continue;
-- } else if (sscanf(scanbuff," SPACECRAFT_NAME = %s %s",
-+ } else if (sscanf(scanbuff," SPACECRAFT_NAME = " S(COMMENTSIZE) " " S(1023),
- spacecraft,garbage) == 2 ) {
-- strcat(spacecraft,xv_strstr(scanbuff, spacecraft)+strlen(spacecraft));
-+ const char *tmp = xv_strstr(scanbuff, spacecraft) + strlen(spacecraft);
-+ strncat(spacecraft, tmp, COMMENTSIZE - strlen(spacecraft));
- lastwasinote=FALSE; continue;
-- } else if (sscanf(scanbuff," SPACECRAFT_NAME = %s", spacecraft) == 1) {
-+ } else if (sscanf(scanbuff, " SPACECRAFT_NAME = " S(COMMENTSIZE), spacecraft) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," TARGET_NAME = %s", target) == 1) {
-+ } else if (sscanf(scanbuff, " TARGET_NAME = " S(COMMENTSIZE), target) == 1) {
- lastwasinote=FALSE; continue;
-- } else if (sscanf(scanbuff," TARGET_BODY = %s", target) == 1) {
-+ } else if (sscanf(scanbuff, " TARGET_BODY = " S(COMMENTSIZE), target) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," MISSION_PHASE_NAME = %s", mphase) == 1) {
-+ } else if (sscanf(scanbuff, " MISSION_PHASE_NAME = " S(COMMENTSIZE), mphase) == 1) {
- lastwasinote=FALSE; continue;
-- } else if (sscanf(scanbuff," MISSION_PHASE = %s", mphase) == 1) {
-+ } else if (sscanf(scanbuff, " MISSION_PHASE = " S(COMMENTSIZE), mphase) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," INSTRUMENT_NAME = %s", iname) == 1) {
-+ } else if (sscanf(scanbuff, " INSTRUMENT_NAME = " S(COMMENTSIZE), iname) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," GAIN_MODE_ID = %s", gainmode) == 1) {
-+ } else if (sscanf(scanbuff, " GAIN_MODE_ID = " S(COMMENTSIZE), gainmode) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," INSTRUMENT_GAIN_STATE = %s",gainmode)==1) {
-+ } else if (sscanf(scanbuff, " INSTRUMENT_GAIN_STATE = " S(COMMENTSIZE), gainmode) ==1 ) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," EDIT_MODE_ID = %s", editmode) == 1) {
-+ } else if (sscanf(scanbuff, " EDIT_MODE_ID = " S(COMMENTSIZE), editmode) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," INSTRUMENT_EDIT_MODE = %s", editmode)==1) {
-+ } else if (sscanf(scanbuff, " INSTRUMENT_EDIT_MODE = " S(COMMENTSIZE), editmode) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," SCAN_MODE_ID = %s", scanmode) == 1) {
-+ } else if (sscanf(scanbuff, " SCAN_MODE_ID = " S(COMMENTSIZE), scanmode) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," INSTRUMENT_SCAN_RATE = %s", scanmode)==1) {
-+ } else if (sscanf(scanbuff, " INSTRUMENT_SCAN_RATE = " S(COMMENTSIZE), scanmode) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," SHUTTER_MODE_ID = %s", shuttermode) == 1) {
-+ } else if (sscanf(scanbuff, " SHUTTER_MODE_ID = " S(COMMENTSIZE), shuttermode) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," INSTRUMENT_SHUTTER_MODE = %s",
-- shuttermode) == 1) {
-+ } else if (sscanf(scanbuff, " INSTRUMENT_SHUTTER_MODE = " S(COMMENTSIZE), shuttermode) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," SCAN_MODE_ID = %s", scanmode) == 1) {
-+ } else if (sscanf(scanbuff, " SCAN_MODE_ID = " S(COMMENTSIZE), scanmode) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," INSTRUMENT_SCAN_RATE = %s", scanmode)==1) {
-+ } else if (sscanf(scanbuff, " INSTRUMENT_SCAN_RATE = " S(COMMENTSIZE), scanmode) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," SPACECRAFT_EVENT_TIME = %s", itime) == 1) {
-+ } else if (sscanf(scanbuff, " SPACECRAFT_EVENT_TIME = " S(COMMENTSIZE), itime) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," IMAGE_TIME = %s", itime) == 1) {
-+ } else if (sscanf(scanbuff, " IMAGE_TIME = " S(COMMENTSIZE), itime) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," FILTER_NAME = %s", filtname) == 1) {
-+ } else if (sscanf(scanbuff, " FILTER_NAME = " S(COMMENTSIZE), filtname) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff," INSTRUMENT_FILTER_NAME = %s",filtname)==1) {
-+ } else if (sscanf(scanbuff, " INSTRUMENT_FILTER_NAME = " S(COMMENTSIZE), filtname) == 1) {
- lastwasinote=FALSE; continue;
-
-- } else if ((sscanf(scanbuff," EXPOSURE_DURATION = %s", exposure) == 1)
-- || (sscanf(scanbuff," INSTRUMENT_EXPOSURE_DURATION = %s",
-- exposure) == 1)) {
-+ } else if ((sscanf(scanbuff, " EXPOSURE_DURATION = " S(COMMENTSIZE), exposure) == 1)
-+ || (sscanf(scanbuff, " INSTRUMENT_EXPOSURE_DURATION = " S(COMMENTSIZE),
-+ exposure)) == 1) {
- tmptmp = (char *) index(scanbuff,'=');
- tmptmp++;
- while((*tmptmp) == ' ')
-@@ -520,10 +527,10 @@
- strcpy(exposure,tmptmp);
- lastwasinote=FALSE; continue;
-
-- } else if (sscanf(scanbuff, "NOTE = %s", inote) == 1) {
-+ } else if (sscanf(scanbuff, "NOTE = " S(INOTESIZE), inote) == 1) {
- tmptmp = (char *) index(scanbuff,'='); tmptmp++;
- while (((*tmptmp) == ' ') || ((*tmptmp) == '"')) tmptmp++;
-- strcpy(inote,tmptmp);
-+ strncpy(inote, tmptmp, INOTESIZE - 1);
- strcat(inote," ");
-
- /* evil and somewhat risky: A "note" (really, any textual
-@@ -548,7 +555,7 @@
- } else if (lastwasinote) {
- tmptmp=scanbuff;
- while (((*tmptmp) == ' ') || ((*tmptmp) == '"')) tmptmp++;
-- strcat(inote,tmptmp);
-+ strncat(inote, tmptmp, INOTESIZE - strlen(inote) - 1);
- strcat(inote," ");
- if (index(tmptmp,'"') != NULL)
- lastwasinote=FALSE;
-@@ -647,27 +654,27 @@
-
- *infobuff='\0';
- if (*spacecraft) {
-- strcat(infobuff,spacecraft);
-+ strncat(infobuff, spacecraft, sizeof(infobuff) - 1);
- }
-
- if (*target) {
-- strcat(infobuff,", ");
-- strcat(infobuff,target);
-+ strncat(infobuff, ", ", sizeof(infobuff) - strlen(infobuff) - 1);
-+ strncat(infobuff, target, sizeof(infobuff) - strlen(infobuff) - 1);
- }
-
- if (*filtname) {
-- strcat(infobuff,", ");
-- strcat(infobuff,filtname);
-+ strncat(infobuff, ", ", sizeof(infobuff) - strlen(infobuff) - 1);
-+ strncat(infobuff, filtname, sizeof(infobuff) - strlen(infobuff) - 1);
- }
-
- if (*itime) {
-- strcat(infobuff,", ");
-- strcat(infobuff,itime);
-+ strncat(infobuff, ", ", sizeof(infobuff) - strlen(infobuff) - 1);
-+ strncat(infobuff, itime, sizeof(infobuff) - strlen(infobuff) - 1);
- }
-
-- SetISTR(ISTR_WARNING,infobuff);
-+ SetISTR(ISTR_WARNING, "%s", infobuff);
-
-- strcpy(pdsuncompfname,fname);
-+ strncpy(pdsuncompfname,fname,sizeof(pdsuncompfname) - 1);
- ftypstr = "";
-
- switch (itype) {
-@@ -695,7 +702,7 @@
- fclose(zf);
-
- #ifndef VMS
-- sprintf(pdsuncompfname,"%s/xvhuffXXXXXX", tmpdir);
-+ snprintf(pdsuncompfname, sizeof(pdsuncompfname) - 1, "%s/xvhuffXXXXXX", tmpdir);
- #else
- strcpy(pdsuncompfname,"sys$disk:[]xvhuffXXXXXX");
- #endif
-@@ -704,10 +711,16 @@
- close(mkstemp(pdsuncompfname));
- #else
- mktemp(pdsuncompfname);
-+ tmpfd = open(pdsuncompfname,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
-+ if (tmpfd < 0) {
-+ SetISTR(ISTR_WARNING,"Unable to create temporary file.");
-+ return 0;
-+ }
-+ close(tmpfd);
- #endif
-
- #ifndef VMS
-- sprintf(scanbuff,"%s %s - 4 >%s",PDSUNCOMP,fname,pdsuncompfname);
-+ sprintf(scanbuff,"%s '%s' - 4 > %s", PDSUNCOMP, fname, pdsuncompfname);
- #else
- sprintf(scanbuff,"%s %s %s 4",PDSUNCOMP,fname,pdsuncompfname);
- #endif
-@@ -823,26 +836,26 @@
- char tmp[256];
- *(pinfo->comment) = '\0';
-
-- sprintf(tmp, "Spacecraft: %-28sTarget: %-32s\n", spacecraft, target);
-- strcat(pinfo->comment, tmp);
-+ sprintf(tmp, "Spacecraft: %-28.28sTarget: %-32.32s\n", spacecraft, target);
-+ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
-
-- sprintf(tmp, "Filter: %-32sMission phase: %-24s\n", filtname, mphase);
-- strcat(pinfo->comment, tmp);
-+ sprintf(tmp, "Filter: %-32.32sMission phase: %-24.24s\n", filtname, mphase);
-+ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
-
-- sprintf(tmp, "Image time: %-28sGain mode: %-29s\n", itime, gainmode);
-- strcat(pinfo->comment, tmp);
-+ sprintf(tmp, "Image time: %-28.28sGain mode: %-29.29s\n", itime, gainmode);
-+ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
-
-- sprintf(tmp, "Edit mode: %-29sScan mode: %-29s\n", editmode, scanmode);
-- strcat(pinfo->comment, tmp);
-+ sprintf(tmp, "Edit mode: %-29.29sScan mode: %-29.29s\n", editmode, scanmode);
-+ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
-
-- sprintf(tmp, "Exposure: %-30sShutter mode: %-25s\n", exposure,shuttermode);
-- strcat(pinfo->comment, tmp);
-+ sprintf(tmp, "Exposure: %-30.30sShutter mode: %-25.25s\n", exposure,shuttermode);
-+ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
-
-- sprintf(tmp, "Instrument: %-28sImage time: %-28s\n", iname, itime);
-- strcat(pinfo->comment, tmp);
-+ sprintf(tmp, "Instrument: %-28.28sImage time: %-28.28s\n", iname, itime);
-+ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
-
-- sprintf(tmp, "Image Note: %-28s", inote);
-- strcat(pinfo->comment, tmp);
-+ sprintf(tmp, "Image Note: %-28.28s", inote);
-+ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
- }
-
- if (LoadPDSPalette(fname, pinfo)) return 1;
-diff -ruN xv-3.10a-bugfixes/xvpi.c xv-3.10a-enhancements/xvpi.c
---- xv-3.10a-bugfixes/xvpi.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvpi.c 2005-04-17 22:57:04.000000000 -0700
-@@ -0,0 +1,1060 @@
-+/*
-+ * xvpi.c - load routine for `Pi' format pictures.
-+ *
-+ * The `Pi' format is made by Yanagisawa.
-+ * It is common among many Japanese personal computer users.
-+ *
-+ */
-+
-+#include "xv.h"
-+#include <setjmp.h>
-+
-+#ifdef HAVE_PI
-+
-+typedef unsigned short data16;
-+typedef unsigned int data32;
-+
-+struct pi_info {
-+ jmp_buf jmp;
-+ FILE *fp;
-+ struct {
-+ int rest;
-+ byte cur;
-+ }bs;
-+ long fsize;
-+ byte mode;
-+ int width, height;
-+ float aspect;
-+ int cbits;
-+ int numcols;
-+ byte *cmap;
-+ struct ct_t{
-+ struct elt_t *top;
-+ struct elt_t{
-+ struct elt_t *old, *recent;
-+ byte val;
-+ } *elt;
-+ }*ct;
-+ int defcmap;
-+ int writing_grey;
-+};
-+
-+static void pi_open_file PARM((struct pi_info*, char*));
-+static void pi_read_header PARM((struct pi_info*, char**));
-+static void pi_check_id PARM((struct pi_info*));
-+static void pi_read_comment PARM((struct pi_info*, char**));
-+static void pi_read_palette PARM((struct pi_info*));
-+static void pi_expand PARM((struct pi_info*, byte**));
-+static byte pi_read_color PARM((struct pi_info*, int));
-+static int pi_read_position PARM((struct pi_info*));
-+static data32 pi_read_length PARM((struct pi_info*));
-+static int pi_copy_pixels PARM((struct pi_info*,
-+ byte*, int, int, data32));
-+
-+static void pi_write_header PARM((struct pi_info*,
-+ char*, byte*, byte*, byte*));
-+static void pi_write_id PARM((struct pi_info*));
-+static void pi_write_comment PARM((struct pi_info*, char*));
-+static void pi_write_palette PARM((struct pi_info*, byte*, byte*, byte*));
-+static void pi_compress PARM((struct pi_info*, byte*));
-+static void pi_write_gabage PARM((struct pi_info*));
-+static void pi_write_color PARM((struct pi_info*, int, int));
-+static int pi_test_matching PARM((struct pi_info*,
-+ byte*, int, int, data32*));
-+static void pi_write_position PARM((struct pi_info*, int));
-+static void pi_write_length PARM((struct pi_info*, data32));
-+
-+static void pi_table_create PARM((struct pi_info*));
-+static byte pi_table_get_value PARM((struct pi_info*, int, int));
-+static int pi_table_lookup_value PARM((struct pi_info*, int, int));
-+static data32 pi_read_bits PARM((struct pi_info*, int));
-+static void pi_write_bits PARM((struct pi_info*, data32, int));
-+static void pi_init_pi_info PARM((struct pi_info*));
-+static void pi_cleanup_pi_info PARM((struct pi_info*, int));
-+static void pi_cleanup_pinfo PARM((PICINFO*));
-+static void pi_memory_error PARM((char*, char*));
-+static void pi_error PARM((struct pi_info*, int));
-+static void pi_file_error PARM((struct pi_info*, int));
-+static void pi_file_warning PARM((struct pi_info*, int));
-+static void pi_show_pi_info PARM((struct pi_info*));
-+static void *pi_malloc PARM((size_t, char*));
-+static void *pi_realloc PARM((void*, size_t, char*));
-+
-+
-+static char *pi_id = "Pi";
-+static char *pi_msgs[] = {
-+ NULL,
-+#define PI_OPEN 1
-+ "couldn't open.",
-+#define PI_CORRUPT 2
-+ "file corrupted.",
-+#define PI_FORMAT 3
-+ "not PI format.",
-+#define PI_PLANES 4
-+ "bad number of planes.",
-+#define PI_WRITE 5
-+ "write failed.",
-+};
-+
-+
-+/* The main routine of `Pi' loader. */
-+int LoadPi(fname, pinfo)
-+ char *fname;
-+ PICINFO *pinfo;
-+{
-+ struct pi_info pi;
-+ int e;
-+ int i;
-+ if(DEBUG) fputs("LoadPi:\n", stderr);
-+
-+ pinfo->comment = NULL;
-+ pi_init_pi_info(&pi);
-+ if((e = setjmp(pi.jmp)) != 0){
-+ /* When an error occurs, comes here. */
-+ pi_cleanup_pi_info(&pi, 0);
-+ pi_cleanup_pinfo(pinfo);
-+ if(DEBUG) fputs("\n", stderr);
-+ return 0;
-+ }
-+
-+ pi_open_file(&pi, fname);
-+ pi_read_header(&pi, &pinfo->comment);
-+ pi_expand(&pi, &pinfo->pic);
-+
-+ pinfo->normw = pinfo->w = pi.width;
-+ pinfo->normh = pinfo->h = pi.height;
-+ pinfo->type = PIC8;
-+ if(pi.numcols > 256) /* shouldn't happen. */
-+ pi.numcols = 256;
-+ for(i = 0; i < pi.numcols; i++){
-+ pinfo->r[i] = pi.cmap[i * 3 ];
-+ pinfo->g[i] = pi.cmap[i * 3 + 1];
-+ pinfo->b[i] = pi.cmap[i * 3 + 2];
-+ }
-+ pinfo->frmType = F_PI;
-+ pinfo->colType = F_FULLCOLOR;
-+ sprintf(pinfo->fullInfo, "Pi, %d colors (%ld bytes)",
-+ pi.numcols, pi.fsize);
-+ sprintf(pinfo->shrtInfo, "%dx%d Pi.", pi.width, pi.height);
-+ normaspect = pi.aspect;
-+
-+ pi_cleanup_pi_info(&pi, 0);
-+ if(DEBUG) fputs("\n", stderr);
-+ return 1;
-+}
-+
-+static void pi_open_file(pi, fname)
-+ struct pi_info *pi;
-+ char *fname;
-+{
-+ if((pi->fp = fopen(fname, "rb")) == NULL)
-+ pi_file_error(pi, PI_OPEN);
-+ fseek(pi->fp, (size_t) 0, SEEK_END);
-+ pi->fsize = ftell(pi->fp);
-+ fseek(pi->fp, (size_t) 0, SEEK_SET);
-+}
-+
-+static void pi_read_header(pi, comm)
-+ struct pi_info *pi;
-+ char **comm;
-+{
-+ byte buf[10];
-+ int mda;
-+ int i;
-+
-+ pi_check_id(pi);
-+ pi_read_comment(pi, comm);
-+
-+ if(fread(buf, (size_t) 10, (size_t) 1, pi->fp) != 1)
-+ pi_file_error(pi, PI_CORRUPT);
-+
-+ pi->mode = buf[0];
-+ pi->defcmap = pi->mode & 0x80;
-+ if(buf[1] != 0 && buf[2] != 0)
-+ pi->aspect = (float) buf[2] / (int) buf[1];
-+ pi->cbits = buf[3];
-+ pi->numcols = 1 << pi->cbits;
-+
-+ if(pi->cbits != 4 && pi->cbits != 8)
-+ pi_error(pi, PI_PLANES);
-+
-+ mda = (int) buf[8] << 8 | (int) buf[9];
-+ for(i = 0; i < mda; i++){
-+ if(fgetc(pi->fp) == EOF)
-+ pi_file_error(pi, PI_CORRUPT);
-+ }
-+
-+ if(fread(buf, (size_t) 4, (size_t) 1, pi->fp) != 1)
-+ pi_file_error(pi, PI_CORRUPT);
-+ pi->width = (int) buf[0] << 8 | (int) buf[1];
-+ pi->height = (int) buf[2] << 8 | (int) buf[3];
-+
-+ pi_read_palette(pi);
-+
-+ if(DEBUG) pi_show_pi_info(pi);
-+}
-+
-+static void pi_check_id(pi)
-+ struct pi_info *pi;
-+{
-+ char buf[2];
-+
-+ if(fread(buf, (size_t) 2, (size_t) 1, pi->fp) != 1)
-+ pi_file_error(pi, PI_CORRUPT);
-+ if(strncmp(buf, pi_id, (size_t) 2) != 0)
-+ pi_error(pi, PI_FORMAT);
-+}
-+
-+static void pi_read_comment(pi, comm)
-+ struct pi_info *pi;
-+ char **comm;
-+{
-+/*
-+ * The comment format is like:
-+ * comment string `^Z' dummy string `\0'
-+ */
-+ int max = -1, i = 0;
-+ int c;
-+
-+ while(1){
-+ if((c = fgetc(pi->fp)) == EOF)
-+ pi_file_error(pi, PI_CORRUPT);
-+ if(c == '\032') /* 0x1a, '^Z' */
-+ break;
-+ if(max < i){
-+ max += 32;
-+ *comm = pi_realloc(*comm, (size_t) max + 1, "pi_read_comment(1)");
-+ }
-+ (*comm)[i++] = c;
-+ }
-+ if(max < i){
-+ max++;
-+ *comm = pi_realloc(*comm, (size_t) max + 1, "pi_read_comment(2)");
-+ }
-+ (*comm)[i] = '\0';
-+
-+ while((c = fgetc(pi->fp)) != '\0'){ /* skip the dummy area */
-+ if(c == EOF)
-+ pi_file_error(pi, PI_CORRUPT);
-+ }
-+}
-+
-+static void pi_read_palette(pi)
-+ struct pi_info *pi;
-+{
-+ pi->cmap = pi_malloc((size_t) pi->numcols * 3, "pi_read_palette");
-+ if(pi->mode & 0x80){
-+ if(pi->numcols == 16){
-+ int i;
-+ byte on;
-+
-+ on = 0x77;
-+ for(i = 0; i < 8; i++){
-+ pi->cmap[i * 3 ] = i & 2 ? on : 0;
-+ pi->cmap[i * 3 + 1] = i & 4 ? on : 0;
-+ pi->cmap[i * 3 + 2] = i & 1 ? on : 0;
-+ }
-+ on = 0xff;
-+ for(; i < 16; i++){
-+ pi->cmap[i * 3 ] = i & 2 ? on : 0;
-+ pi->cmap[i * 3 + 1] = i & 4 ? on : 0;
-+ pi->cmap[i * 3 + 2] = i & 1 ? on : 0;
-+ }
-+ }else{ /* pi->numcols == 256 */
-+ int i;
-+ byte r, g, b;
-+ r = g = b = 0;
-+ for(i = 0; i < 256; i++){
-+ pi->cmap[i * 3 ] = r;
-+ pi->cmap[i * 3 + 1] = g;
-+ pi->cmap[i * 3 + 2] = b;
-+ if((b += 0x40) == 0){
-+ if((r += 0x20) == 0)
-+ g += 0x20;
-+ }
-+ }
-+ }
-+ }else{
-+ if(fread(pi->cmap, (size_t) pi->numcols * 3, (size_t) 1, pi->fp) != 1)
-+ pi_file_error(pi, PI_CORRUPT);
-+ }
-+}
-+
-+/* The main routine to expand `Pi' file. */
-+static void pi_expand(pi, pic)
-+ struct pi_info *pi;
-+ byte **pic;
-+{
-+ byte prev_col = 0;
-+ int prev_pos = -1;
-+ int cnt = 0, max_cnt = pi->width * pi->height;
-+
-+ *pic = pi_malloc((size_t) max_cnt, "pi_expand"); // GRR POSSIBLE OVERFLOW / FIXME
-+
-+ pi_table_create(pi);
-+
-+ if(pi->width > 2){
-+ (*pic)[0] = pi_read_color(pi, 0);
-+ (*pic)[1] = pi_read_color(pi, (*pic)[0]);
-+
-+ while(cnt < max_cnt){
-+ int pos = pi_read_position(pi);
-+ if(pos != prev_pos){
-+ data32 len = pi_read_length(pi);
-+ cnt = pi_copy_pixels(pi, *pic, cnt, pos, len);
-+ prev_col = (*pic)[cnt - 1];
-+ prev_pos = pos;
-+ }else{
-+ do{
-+ prev_col = pi_read_color(pi, (int) prev_col);
-+ (*pic)[cnt++] = prev_col;
-+ prev_col = pi_read_color(pi, (int) prev_col);
-+ (*pic)[cnt++] = prev_col;
-+ }while(pi_read_bits(pi, 1) == 1);
-+
-+ prev_pos = -1;
-+ }
-+ }
-+ }else{
-+ while(cnt < max_cnt){
-+ prev_col = pi_read_color(pi, (int) prev_col);
-+ (*pic)[cnt++] = prev_col;
-+ }
-+ }
-+}
-+
-+static byte pi_read_color(pi, prev)
-+ struct pi_info *pi;
-+ int prev;
-+{
-+ byte n;
-+ if(pi->cbits == 4){
-+ if(pi_read_bits(pi, 1) == 1)
-+ n = pi_read_bits(pi, 1); /* 1x */
-+ else{
-+ if(pi_read_bits(pi, 1) == 0)
-+ n = pi_read_bits(pi, 1) + 2; /* 00x */
-+ else{
-+ if(pi_read_bits(pi, 1) == 0)
-+ n = pi_read_bits(pi, 2) + 4; /* 010xx */
-+ else
-+ n = pi_read_bits(pi, 3) + 8; /* 011xxx */
-+ }
-+ }
-+ }else{ /* cbits == 8 */
-+ if(pi_read_bits(pi, 1) == 1)
-+ n = pi_read_bits(pi, 1);
-+ else{
-+ int bits = 0;
-+ byte base = 2;
-+ while(bits < 6){
-+ if(pi_read_bits(pi, 1) == 0)
-+ break;
-+ bits++;
-+ base <<= 1;
-+ }
-+ n = pi_read_bits(pi, bits + 1) + base;
-+ }
-+ }
-+
-+ return pi_table_get_value(pi, prev, (int) n);
-+}
-+
-+static int pi_read_position(pi)
-+ struct pi_info *pi;
-+{
-+ byte r;
-+ if((r = pi_read_bits(pi, 2)) != 3)
-+ return (int) r;
-+ else
-+ return (int) pi_read_bits(pi, 1) + 3;
-+}
-+
-+static data32 pi_read_length(pi)
-+ struct pi_info *pi;
-+{
-+ data32 r = 1;
-+ int bits = 0;
-+ while(pi_read_bits(pi, 1) == 1){
-+ r <<= 1;
-+ bits++;
-+ }
-+ if(bits > 0)
-+ return r + pi_read_bits(pi, bits);
-+ return 1;
-+}
-+
-+static int pi_copy_pixels(pi, pic, cnt, pos, len)
-+ struct pi_info *pi;
-+ byte *pic;
-+ int cnt, pos;
-+ data32 len;
-+{
-+ int s = 0, d = cnt;
-+ int max = pi->width * pi->height;
-+ switch(pos){
-+ case 0:
-+ if(cnt < 2){
-+ if(pic[0] == pic[1])
-+ s = cnt - 2;
-+ else
-+ s = cnt - 4;
-+ }else{
-+ if(pic[cnt - 2] == pic[cnt - 1])
-+ s = cnt - 2;
-+ else
-+ s = cnt - 4;
-+ }
-+ break;
-+ case 1:
-+ s = cnt - pi->width;
-+ break;
-+ case 2:
-+ s = cnt - pi->width * 2;
-+ break;
-+ case 3:
-+ s = cnt - pi->width + 1;
-+ break;
-+ case 4:
-+ s = cnt - pi->width - 1;
-+ }
-+
-+ len *= 2;
-+ while(s < 0 && len != 0 && d < max){
-+ pic[d++] = pic[-(s++) % 2];
-+ len--;
-+ }
-+ while(len != 0 && d < max){
-+ pic[d++] = pic[s++];
-+ len--;
-+ }
-+ return d;
-+}
-+
-+/* The main routine of `Pi' saver. */
-+int WritePi(fp, pic, ptype, w, h, rmap, gmap, bmap, numcols, colorstyle,
-+ comment)
-+ FILE *fp;
-+ byte *pic;
-+ int ptype, w, h;
-+ byte *rmap, *gmap, *bmap;
-+ int numcols, colorstyle;
-+ char *comment;
-+{
-+ byte rtemp[256], gtemp[256], btemp[256];
-+ struct pi_info pi;
-+ int e;
-+
-+ if(DEBUG) fputs("WritePi\n", stderr);
-+ pi_init_pi_info(&pi);
-+ pi.fp = fp;
-+ pi.width = w;
-+ pi.height = h;
-+ pi.writing_grey = (colorstyle == F_GREYSCALE);
-+ if(ptype == PIC24){
-+ if(!(pic = Conv24to8(pic, w, h, 256, rtemp, gtemp, btemp)))
-+ pi_memory_error("Conv24to8", "WritePi");
-+ rmap = rtemp;
-+ gmap = gtemp;
-+ bmap = btemp;
-+ numcols = 256;
-+ }
-+
-+ if((e = setjmp(pi.jmp)) != 0){
-+ /* When an error occurs, comes here. */
-+ pi_cleanup_pi_info(&pi, 1);
-+ if(DEBUG) fputs("\n", stderr);
-+ return -1;
-+ }
-+
-+ pi.numcols = numcols;
-+ pi_write_header(&pi, comment, rmap, gmap, bmap);
-+ pi_compress(&pi, pic);
-+ pi_write_gabage(&pi);
-+
-+ pi_cleanup_pi_info(&pi, 1);
-+ if(DEBUG) fputs("\n", stderr);
-+ return 0;
-+}
-+
-+static void pi_write_header(pi, comm, r, g, b)
-+ struct pi_info *pi;
-+ char *comm;
-+ byte *r, *g, *b;
-+{
-+ byte buf[14];
-+
-+ if(DEBUG) pi_show_pi_info(pi);
-+
-+ pi_write_id(pi);
-+ pi_write_comment(pi, comm);
-+
-+ buf[0] = buf[1] = buf[2] = 0;
-+ buf[3] = pi->cbits = pi->numcols > 16 ? 8 : 4;
-+ buf[4] = 'X';
-+ buf[5] = 'V';
-+ buf[6] = ' ';
-+ buf[7] = ' ';
-+ buf[8] = buf[9] = 0;
-+ buf[10] = pi->width >> 8;
-+ buf[11] = pi->width;
-+ buf[12] = pi->height >> 8;
-+ buf[13] = pi->height;
-+ if(fwrite(buf, (size_t) 14, (size_t) 1, pi->fp) != 1)
-+ pi_file_error(pi, PI_WRITE);
-+
-+ pi_write_palette(pi, r, g, b);
-+}
-+
-+static void pi_write_id(pi)
-+ struct pi_info *pi;
-+{
-+ if(fwrite(pi_id, (size_t) 2, (size_t) 1, pi->fp) != 1)
-+ pi_file_error(pi, PI_WRITE);
-+}
-+
-+static void pi_write_comment(pi, comm)
-+ struct pi_info *pi;
-+ char *comm;
-+{
-+ if(comm){
-+ int i;
-+ for(i = 0; comm[i]; i++){
-+ if(comm[i] == '\032') /* 0x1a, '^Z' */
-+ comm[i] = ' ';
-+ }
-+ if(i > 0){
-+ if(fwrite(comm, (size_t) i, (size_t) 1, pi->fp) != 1)
-+ pi_file_error(pi, PI_WRITE);
-+ }
-+ }
-+
-+ if(fwrite("\032\0", (size_t) 2, (size_t) 1, pi->fp) != 1)
-+ pi_file_error(pi, PI_WRITE);
-+}
-+
-+static void pi_write_palette(pi, r, g, b)
-+ struct pi_info *pi;
-+ byte *r, *g, *b;
-+{
-+ int i;
-+ int pinum = 1 << pi->cbits;
-+ char buf[3];
-+
-+ for(i = 0; i < pi->numcols; i++){
-+ buf[0] = *r++;
-+ buf[1] = *g++;
-+ buf[2] = *b++;
-+ if(pi->writing_grey)
-+ buf[0] = buf[1] = buf[2] = MONO(buf[0], buf[1], buf[2]);
-+ if(fwrite(buf, (size_t) 3, (size_t) 1, pi->fp) != 1)
-+ pi_file_error(pi, PI_WRITE);
-+ }
-+ for( ; i < pinum; i++){
-+ if(fwrite(buf, (size_t) 3, (size_t) 1, pi->fp) != 1)
-+ pi_file_error(pi, PI_WRITE);
-+ }
-+ pi->numcols = pinum;
-+}
-+
-+/* The main routine to compress `Pi' format. */
-+static void pi_compress(pi, pic)
-+ struct pi_info *pi;
-+ byte *pic;
-+{
-+ byte prev_col = 0;
-+ int prev_pos = -1;
-+ int cnt = 0, max_cnt = pi->width * pi->height;
-+ pi_table_create(pi);
-+
-+ if(pi->width > 2){
-+ int pos;
-+ data32 len;
-+
-+ pi_write_color(pi, 0, pic[0]);
-+ pi_write_color(pi, pic[0], pic[1]);
-+ pos = pi_test_matching(pi, pic, prev_pos, cnt, &len);
-+ while(cnt < max_cnt){
-+ if(pos >= 0){
-+ pi_write_position(pi, pos);
-+ pi_write_length(pi, len);
-+ if((cnt += len * 2) >= max_cnt)
-+ break;
-+ prev_col = pic[cnt - 1];
-+ prev_pos = pos;
-+ pos = pi_test_matching(pi, pic, prev_pos, cnt, &len);
-+ }else{
-+ pi_write_position(pi, prev_pos);
-+ prev_pos = -1;
-+ while(pos < 0){
-+ pi_write_color(pi, (int) prev_col, pic[cnt]);
-+ prev_col = pic[cnt];
-+ if(++cnt >= max_cnt)
-+ break;
-+ pi_write_color(pi, (int) prev_col, pic[cnt]);
-+ prev_col = pic[cnt];
-+ if(++cnt >= max_cnt)
-+ break;
-+ pos = pi_test_matching(pi, pic, -1, cnt, &len);
-+ if(pos < 0)
-+ pi_write_bits(pi, 1, 1);
-+ else
-+ pi_write_bits(pi, 0, 1);
-+ }
-+ }
-+ }
-+ }else{
-+ while(cnt < max_cnt){
-+ pi_write_color(pi, (int) prev_col, pic[cnt]);
-+ prev_col = pic[cnt++];
-+ }
-+ }
-+}
-+
-+static void pi_write_gabage(pi)
-+ struct pi_info *pi;
-+{
-+ pi_write_bits(pi, 0, 32);
-+}
-+
-+static void pi_write_color(pi, prev, col)
-+ struct pi_info *pi;
-+ int prev, col;
-+{
-+ int n = pi_table_lookup_value(pi, prev, col);
-+
-+ if(pi->cbits == 4){
-+ if(n < 2)
-+ pi_write_bits(pi, (data32) n | 2, 2);
-+ else if(n < 4)
-+ pi_write_bits(pi, (data32) n - 2, 3);
-+ else if(n < 8)
-+ pi_write_bits(pi, (data32) (n - 4) | 8, 5);
-+ else
-+ pi_write_bits(pi, (data32) (n - 8) | 24, 6);
-+ }else{ /* cbits == 8 */
-+ if(n < 2){
-+ pi_write_bits(pi, (data32) n | 2, 2);
-+ }else{
-+ int bits = 0;
-+ byte base = 2;
-+ while(bits < 6){
-+ if(n < (int) base * 2)
-+ break;
-+ bits++;
-+ base <<= 1;
-+ }
-+ pi_write_bits(pi, 0, 1);
-+ if(bits > 0)
-+ pi_write_bits(pi, 0xffffffff, bits);
-+ if(bits < 6)
-+ pi_write_bits(pi, 0, 1);
-+ pi_write_bits(pi, (data32) n - base, bits + 1);
-+ }
-+ }
-+}
-+
-+static int pi_test_matching(pi, pic, prev, cnt, len)
-+ struct pi_info *pi;
-+ byte *pic;
-+ int prev, cnt;
-+ data32 *len;
-+{
-+ data32 lens[5];
-+ int pos, p;
-+ int s, d = 0;
-+ int max = pi->width * pi->height;
-+
-+ for(pos = 0; pos < 5; pos++){
-+ switch(pos){
-+ case 0:
-+ if(cnt < 2){
-+ if(pic[0] == pic[1])
-+ d = cnt - 2;
-+ else
-+ d = cnt - 4;
-+ }else{
-+ if(pic[cnt - 2] == pic[cnt - 1])
-+ d = cnt - 2;
-+ else
-+ d = cnt - 4;
-+ }
-+ break;
-+ case 1:
-+ d = cnt - pi->width;
-+ break;
-+ case 2:
-+ d = cnt - pi->width * 2;
-+ break;
-+ case 3:
-+ d = cnt - pi->width + 1;
-+ break;
-+ case 4:
-+ d = cnt - pi->width - 1;
-+ }
-+ s = cnt;
-+ lens[pos] = 0;
-+
-+ if(prev == 0 && pos == 0)
-+ continue;
-+
-+ while(d < max){
-+ if(pic[(d < 0) ? (-d) % 2 : d] != pic[s])
-+ break;
-+ lens[pos]++;
-+ d++;
-+ s++;
-+ }
-+
-+ }
-+
-+ for(pos = 0, p = 1; p < 5; p++){
-+ if(lens[p] >= lens[pos])
-+ pos = p;
-+ }
-+
-+ if(lens[pos] / 2 == 0)
-+ return -1;
-+ *len = lens[pos] / 2;
-+ return pos;
-+}
-+
-+static void pi_write_position(pi, pos)
-+ struct pi_info *pi;
-+ int pos;
-+{
-+ switch(pos){
-+ case 0:
-+ pi_write_bits(pi, 0, 2);
-+ break;
-+ case 1:
-+ pi_write_bits(pi, 1, 2);
-+ break;
-+ case 2:
-+ pi_write_bits(pi, 2, 2);
-+ break;
-+ case 3:
-+ pi_write_bits(pi, 6, 3);
-+ break;
-+ case 4:
-+ pi_write_bits(pi, 7, 3);
-+ break;
-+ }
-+}
-+
-+static void pi_write_length(pi, len)
-+ struct pi_info *pi;
-+ data32 len;
-+{
-+ int bits = 0;
-+ data32 base = 1;
-+
-+ while(len >= base * 2){
-+ bits++;
-+ base <<= 1;
-+ }
-+ if(bits > 0){
-+ pi_write_bits(pi, 0xffffffff, bits);
-+ pi_write_bits(pi, 0, 1);
-+ pi_write_bits(pi, len - base, bits);
-+ }else
-+ pi_write_bits(pi, 0, 1);
-+}
-+
-+/*
-+ * These pi_table_* functions manipulate the color table.
-+ * pi_table_create:
-+ * allocates and initializes a color table.
-+ * pi_table_get_value:
-+ * get the specified value, and move it to the top of the list.
-+ * pi_table_lookup_value:
-+ * look up the specified value, and move it to the top of the list.
-+ */
-+static void pi_table_create(pi)
-+ struct pi_info *pi;
-+{
-+ struct ct_t *t;
-+ int i;
-+ byte mask = pi->numcols - 1;
-+ pi->ct = pi_malloc(sizeof *pi->ct * pi->numcols, "pi_table_create(1)");
-+ for(i = 0, t = pi->ct; i < pi->numcols; i++, t++){
-+ int j;
-+ byte v = i;
-+ t->elt = pi_malloc(sizeof *t->elt * pi->numcols, "pi_table_create(2)");
-+ t->top = &t->elt[pi->numcols - 1];
-+ for(j = 0; j < pi->numcols; j++){
-+ v = (v + 1) & mask;
-+ if(j > 0)
-+ t->elt[j].old = &t->elt[j - 1];
-+ else
-+ t->elt[0].old = t->top;
-+ if(j < pi->numcols - 1)
-+ t->elt[j].recent = &t->elt[j + 1];
-+ else
-+ t->elt[j].recent = &t->elt[0];
-+ t->elt[j].val = v;
-+ }
-+ t->elt[0].old = t->top;
-+ t->top->recent = &t->elt[0];
-+ }
-+}
-+
-+static byte pi_table_get_value(pi, left, num)
-+ struct pi_info *pi;
-+ int left, num;
-+{
-+ struct ct_t *t = &pi->ct[left];
-+ struct elt_t *e = t->top;
-+ if(left >= pi->numcols || num >= pi->numcols)
-+ abort();
-+ if(num != 0){
-+ do {
-+ e = e->old;
-+ }while(--num != 0);
-+
-+ e->old->recent = e->recent;
-+ e->recent->old = e->old;
-+
-+ e->recent = t->top->recent;
-+ e->recent->old = e;
-+ e->old = t->top;
-+ t->top->recent = e;
-+
-+ t->top = e;
-+ }
-+ return e->val;
-+}
-+
-+static int pi_table_lookup_value(pi, left, v)
-+ struct pi_info *pi;
-+ int left, v;
-+{
-+ struct ct_t *t = &pi->ct[left];
-+ struct elt_t *e = t->top;
-+ int num = 0;
-+
-+ if(left >= pi->numcols || v >= pi->numcols)
-+ abort();
-+
-+ while(e->val != v){
-+ e = e->old;
-+ num++;
-+ }
-+
-+ if(num != 0){
-+ e->old->recent = e->recent;
-+ e->recent->old = e->old;
-+
-+ e->recent = t->top->recent;
-+ e->recent->old = e;
-+ e->old = t->top;
-+ t->top->recent = e;
-+
-+ t->top = e;
-+ }
-+
-+ return num;
-+}
-+
-+/*
-+ * These 2 functions read or write to a bit stream.
-+ * pi_read_bits:
-+ * reads a specified-bit data from the bit stream.
-+ * pi_write_bits:
-+ * writes a specified-bit data to the bit stream.
-+ */
-+static data32 pi_read_bits(pi, numbits)
-+ struct pi_info *pi;
-+ int numbits;
-+{
-+ data32 r = 0;
-+
-+ while(numbits > 0){
-+ while(pi->bs.rest > 0 && numbits > 0){
-+ r = (r << 1) | (pi->bs.cur & 0x80 ? 1 : 0);
-+ pi->bs.cur <<= 1;
-+ pi->bs.rest--;
-+ numbits--;
-+ }
-+ if(numbits > 0){
-+ int c;
-+ if((c = fgetc(pi->fp)) == EOF)
-+ pi_file_warning(pi, PI_CORRUPT);
-+ pi->bs.cur = c;
-+ pi->bs.rest = 8;
-+ }
-+ }
-+
-+ return r;
-+}
-+
-+static void pi_write_bits(pi, dat, bits)
-+ struct pi_info *pi;
-+ data32 dat;
-+ int bits;
-+{
-+ data32 dat_mask = 1 << (bits - 1);
-+ while(bits > 0){
-+ while(pi->bs.rest < 8 && bits > 0){
-+ pi->bs.cur <<= 1;
-+ if(dat & dat_mask)
-+ pi->bs.cur |= 1;
-+ pi->bs.rest++;
-+ bits--;
-+ dat_mask >>= 1;
-+ }
-+ if(pi->bs.rest >= 8){
-+ if(fputc((int)pi->bs.cur, pi->fp) == EOF)
-+ pi_file_error(pi, PI_WRITE);
-+ pi->bs.cur = 0;
-+ pi->bs.rest = 0;
-+ }
-+ }
-+}
-+
-+/*
-+ * The routines to initialize or clean up.
-+ * pi_inif_pi_info:
-+ * initializes a pi_info structure.
-+ * pi_cleanup_pi_info:
-+ * cleanup pi_info structure. It frees allocated memories.
-+ * pi_cleanup_pinfo:
-+ * cleanup PICINFO structure when an error occurs.
-+ */
-+static void pi_init_pi_info(pi)
-+ struct pi_info *pi;
-+{
-+ pi->fp = NULL;
-+ pi->bs.rest = 0;
-+ pi->bs.cur = 0;
-+ pi->fsize = 0;
-+ pi->mode = 0;
-+ pi->width = pi->mode = 0;
-+ pi->aspect = 1.0;
-+ pi->cbits = 0;
-+ pi->numcols = 0;
-+ pi->cmap = NULL;
-+ pi->ct = NULL;
-+ pi->defcmap = 0;
-+ pi->writing_grey = 0;
-+}
-+
-+static void pi_cleanup_pi_info(pi, writing)
-+ struct pi_info *pi;
-+ int writing;
-+{
-+ if(pi->fp && !writing){
-+ fclose(pi->fp);
-+ pi->fp = NULL;
-+ }
-+ if(pi->cmap){
-+ free(pi->cmap);
-+ pi->cmap = NULL;
-+ }
-+ if(pi->ct){
-+ int i;
-+ for(i = 0; i < pi->numcols; i++)
-+ free(pi->ct[i].elt);
-+ free(pi->ct);
-+ pi->ct = NULL;
-+ }
-+}
-+
-+static void pi_cleanup_pinfo(pinfo)
-+ PICINFO *pinfo;
-+{
-+ if(pinfo->pic){
-+ free(pinfo->pic);
-+ pinfo->pic = NULL;
-+ }
-+ if(pinfo->comment){
-+ free(pinfo->comment);
-+ pinfo->comment = NULL;
-+ }
-+}
-+
-+/*
-+ * Error handling routins.
-+ * pi_memory_error:
-+ * shows a error message, and terminates.
-+ * pi_error:
-+ * shows a non-file error message.
-+ * pi_file_error:
-+ * shows a file error message.
-+ */
-+static void pi_memory_error(scm, fn)
-+ char *scm, *fn;
-+{
-+ char buf[128];
-+ sprintf(buf, "%s: couldn't allocate memory. (%s)", scm ,fn);
-+ FatalError(buf);
-+}
-+
-+static void pi_error(pi, mn)
-+ struct pi_info *pi;
-+ int mn;
-+{
-+ SetISTR(ISTR_WARNING, "%s", pi_msgs[mn]);
-+ longjmp(pi->jmp, 1);
-+}
-+
-+static void pi_file_error(pi, mn)
-+ struct pi_info *pi;
-+ int mn;
-+{
-+ if(feof(pi->fp))
-+ SetISTR(ISTR_WARNING, "%s (end of file)", pi_msgs[mn]);
-+ else
-+ SetISTR(ISTR_WARNING, "%s (%s)", pi_msgs[mn], ERRSTR(errno));
-+ longjmp(pi->jmp, 1);
-+}
-+
-+static void pi_file_warning(pi, mn)
-+ struct pi_info *pi;
-+ int mn;
-+{
-+ if(feof(pi->fp))
-+ SetISTR(ISTR_WARNING, "%s (end of file)", pi_msgs[mn]);
-+ else
-+ SetISTR(ISTR_WARNING, "%s (%s)", pi_msgs[mn], ERRSTR(errno));
-+}
-+
-+static void pi_show_pi_info(pi)
-+ struct pi_info *pi;
-+{
-+ fprintf(stderr, " file size: %ld.\n", pi->fsize);
-+ fprintf(stderr, " mode: 0x%02x.\n", pi->mode);
-+ fprintf(stderr, " image size: %dx%d.\n", pi->width, pi->height);
-+ fprintf(stderr, " aspect: %f.\n", pi->aspect);
-+ fprintf(stderr, " number of color bits: %d.\n", pi->cbits);
-+ fprintf(stderr, " number of colors: %d.\n", pi->numcols);
-+ fprintf(stderr, " using default colormap: %s.\n",
-+ pi->defcmap ? "true" : "false");
-+ fprintf(stderr, " writing greyscale image: %s.\n",
-+ pi->writing_grey ? "true" : "false");
-+}
-+
-+/*
-+ * Memory related routines. If failed, they calls pi_memory_error.
-+ */
-+static void *pi_malloc(n, fn)
-+ size_t n;
-+ char *fn;
-+{
-+ void *r = (void *) malloc(n);
-+ if(r == NULL)
-+ pi_memory_error("malloc", fn);
-+ return r;
-+}
-+
-+static void *pi_realloc(p, n, fn)
-+ void *p;
-+ size_t n;
-+ char *fn;
-+{
-+ void *r = (p == NULL) ? (void *) malloc(n) : (void *) realloc(p, n);
-+ if(r == NULL)
-+ pi_memory_error("realloc", fn);
-+ return r;
-+}
-+#endif /* HAVE_PI */
-diff -ruN xv-3.10a-bugfixes/xvpic.c xv-3.10a-enhancements/xvpic.c
---- xv-3.10a-bugfixes/xvpic.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvpic.c 2005-04-17 22:57:08.000000000 -0700
-@@ -0,0 +1,1285 @@
-+/*
-+ * xvpic.c - load routine for `PIC' format pictures.
-+ *
-+ * The `PIC' format is used by many Japanese personal computer users.
-+ */
-+
-+#include "xv.h"
-+#include <setjmp.h>
-+
-+#ifdef HAVE_PIC
-+
-+typedef unsigned short data16;
-+typedef unsigned int data32;
-+
-+struct pic_info {
-+ jmp_buf jmp;
-+ FILE *fp;
-+ struct {
-+ int rest;
-+ byte cur;
-+ }bs;
-+ long fsize;
-+ int type, mode;
-+ int width, height;
-+ float aspect;
-+ int cbits;
-+ int cmapped;
-+ byte *cmap;
-+ int cached;
-+ struct cache_t {
-+ int newest;
-+ struct cachenode_t {
-+ data32 dat;
-+ int newer, older;
-+ } *node;
-+ } cache;
-+ int g_bits, r_bits, b_bits, i_bits;
-+ int inv_gr;
-+ int tiled256;
-+ int numcols;
-+ int writing_grey;
-+ data32 *data;
-+};
-+
-+static void pic_open_file PARM((struct pic_info*,char*));
-+static void pic_check_id PARM((struct pic_info*));
-+static void pic_read_comment PARM((struct pic_info*, char**));
-+static void pic_read_header PARM((struct pic_info*));
-+static void pic_expand_data PARM((struct pic_info*));
-+static int pic_expanding_read_len PARM((struct pic_info*));
-+static data32 pic_expanding_read_color PARM((struct pic_info*));
-+static void pic_expanding_read_chain
-+ PARM((struct pic_info*, int, int, data32));
-+static void pic_make_xvpic
-+ PARM((struct pic_info*, byte**, byte*, byte*, byte*));
-+
-+static void pic_write_id PARM((struct pic_info*));
-+static void pic_write_comment PARM((struct pic_info*, char*));
-+static void pic_write_header PARM((struct pic_info*));
-+static void pic_write_palette
-+ PARM((struct pic_info*, byte*, byte*, byte*));
-+static void pic_make_sparse_data PARM((struct pic_info*, byte*));
-+static void pic_write_data PARM((struct pic_info*));
-+static void pic_write_length PARM((struct pic_info*, data32));
-+static void pic_write_color PARM((struct pic_info*, data32));
-+static void pic_write_chain
-+ PARM((struct pic_info*, int, int, data32));
-+
-+static data32 pic_read_rgb PARM((struct pic_info*));
-+static data32 pic_read_color_code PARM((struct pic_info*));
-+static void pic_write_rgb PARM((struct pic_info*, data32));
-+static void pic_write_color_code PARM((struct pic_info*, data32));
-+
-+static void pic_cache_init PARM((struct pic_info*));
-+static data32 pic_cache_get_value PARM((struct pic_info*, int));
-+static void pic_cache_add_value PARM((struct pic_info*, data32));
-+static int pic_cache_lookup PARM((struct pic_info*, data32));
-+
-+static data32 pic_read_bits PARM((struct pic_info*, int));
-+static void pic_write_bits PARM((struct pic_info*, data32, int));
-+static byte pic_pad_bit PARM((int, data32));
-+
-+static void pic_init_info PARM((struct pic_info*));
-+static void pic_cleanup_pic_info PARM((struct pic_info*, int));
-+static void pic_cleanup_pinfo PARM((PICINFO*));
-+static void pic_memory_error PARM((char*, char*));
-+static void pic_error PARM((struct pic_info*, int));
-+static void pic_file_error PARM((struct pic_info*, int));
-+static void pic_file_warning PARM((struct pic_info*, int));
-+static void pic_show_pic_info PARM((struct pic_info*));
-+static void *pic_malloc PARM((size_t, char*));
-+static void *pic_realloc PARM((void*, size_t, char*));
-+
-+
-+static char *pic_id = "PIC";
-+
-+/* Error Messages */
-+static char *pic_msgs[] = {
-+ NULL,
-+#define PIC_OPEN 1
-+ "can't open file.",
-+#define PIC_CORRUPT 2
-+ "file corrupted.",
-+#define PIC_FORMAT 3
-+ "not PIC format.",
-+#define PIC_SUPPORT 4
-+ "unsupported type.",
-+#define PIC_COMMENT 5
-+ "can't read comment.",
-+#define PIC_TYPE 6
-+ "bad machine type.",
-+#define PIC_MODE 7
-+ "bad machine-dependent mode.",
-+#define PIC_NUM_COLORS 8
-+ "bad number of colors.",
-+#define PIC_SIZE 9
-+ "bad size.",
-+#define PIC_ASPECT 10
-+ "bad aspect.",
-+#define PIC_WRITE 11
-+ "write failed.",
-+};
-+
-+#define H4(b) (((b) >> 4) & 0x0f)
-+#define L4(b) ( (b) & 0x0f)
-+
-+
-+/* The main routine to load a PIC file. */
-+int LoadPIC(fname, pinfo)
-+ char *fname;
-+ PICINFO *pinfo;
-+{
-+ int e;
-+ struct pic_info pic;
-+ char buf[128];
-+
-+ if(DEBUG) fputs("LoadPIC:\n", stderr);
-+
-+ pic_init_info(&pic);
-+
-+ pinfo->comment = NULL;
-+ if((e = setjmp(pic.jmp)) != 0){
-+ /* When an error occurs, comes here. */
-+ pic_cleanup_pic_info(&pic, 0);
-+ pic_cleanup_pinfo(pinfo);
-+ if(DEBUG) fputs("\n", stderr);
-+ return 0;
-+ }
-+
-+ pic_open_file(&pic, fname);
-+ pic_check_id(&pic);
-+ pic_read_comment(&pic, &pinfo->comment);
-+ pic_read_header(&pic);
-+ pic_expand_data(&pic);
-+ pic_make_xvpic(&pic, &pinfo->pic, pinfo->r, pinfo->g, pinfo->b);
-+
-+ pinfo->w = pic.width;
-+ if(pic.tiled256)
-+ pinfo->h = pic.height * 2;
-+ else
-+ pinfo->h = pic.height;
-+ pinfo->normw = pinfo->w;
-+ pinfo->normh = pinfo->h;
-+ pinfo->type = pic.cmapped ? PIC8 : PIC24;
-+ pinfo->frmType = F_PIC;
-+ pinfo->colType = F_FULLCOLOR;
-+ strcpy(pinfo->fullInfo, "PIC");
-+ switch(pic.type){
-+ case 0x0:
-+ strcat(pinfo->fullInfo, ", X68k");
-+ break;
-+ case 0x1:
-+ strcat(pinfo->fullInfo, ", PC-88VA");
-+ if(pic.mode & 1)
-+ strcat(pinfo->fullInfo, ", HR");
-+ if(pic.mode & 2)
-+ strcat(pinfo->fullInfo, ", tiled 256");
-+ break;
-+ case 0x2:
-+ strcat(pinfo->fullInfo, ", FM-TOWNS");
-+ if(pic.mode == 0x5){
-+ strcat(pinfo->fullInfo, ", low-resolution");
-+ }else{
-+ strcat(pinfo->fullInfo, ", high-resolution");
-+ }
-+ break;
-+ case 0x3:
-+ strcat(pinfo->fullInfo, ", Macintosh");
-+ break;
-+ case 0xf:
-+ ;
-+ }
-+ sprintf(buf, " (%ld bytes)", pic.fsize);
-+ strcat(pinfo->fullInfo, buf);
-+ sprintf(pinfo->shrtInfo, "%dx%d(aspect %4.2f) PIC.",
-+ pinfo->w, pinfo->h, pic.aspect);
-+ if (!nopicadjust)
-+ normaspect = pic.aspect;
-+
-+ pic_cleanup_pic_info(&pic, 0);
-+ if(DEBUG) fputs("\n", stderr);
-+ return 1;
-+}
-+
-+static void pic_open_file(pi, fname)
-+ struct pic_info *pi;
-+ char *fname;
-+{
-+ if((pi->fp = fopen(fname, "rb")) == NULL)
-+ pic_file_error(pi, PIC_OPEN);
-+ fseek(pi->fp, (size_t) 0, SEEK_END);
-+ pi->fsize = ftell(pi->fp);
-+ fseek(pi->fp, (size_t) 0, SEEK_SET);
-+}
-+
-+static void pic_check_id(pi)
-+ struct pic_info *pi;
-+{
-+ char buf[3];
-+ if(fread(buf, (size_t) 3, (size_t) 1, pi->fp) != 1)
-+ pic_file_error(pi, PIC_CORRUPT);
-+ if(strncmp(buf, pic_id, (size_t) 3) != 0)
-+ pic_error(pi, PIC_FORMAT);
-+}
-+
-+static void pic_read_comment(pi, comm)
-+ struct pic_info *pi;
-+ char **comm;
-+{
-+ /* The comment field is like:
-+ * comment-string ^Z dummy \0 \0
-+ */
-+ int max = -1, i = 0;
-+ int c;
-+
-+ while(1){
-+ if((c = fgetc(pi->fp)) == EOF)
-+ pic_file_error(pi, PIC_CORRUPT);
-+ if(c == '\032') /* 0x1a, '^Z' */
-+ break;
-+ if(max < i){
-+ max += 32;
-+ *comm = pic_realloc(*comm, (size_t) max + 1, "pic_read_comment#1");
-+ }
-+ (*comm)[i++] = c;
-+ }
-+
-+ if(max < i){
-+ max++;
-+ *comm = pic_realloc(*comm, (size_t) max + 1, "pic_read_comment#2");
-+ }
-+ (*comm)[i] = '\0';
-+
-+ while((c = fgetc(pi->fp)) != '\0'){ /* skip the dummy area */
-+ if(c == EOF)
-+ pic_file_error(pi, PIC_CORRUPT);
-+ }
-+
-+ if(fgetc(pi->fp) != '\0') /* check the reserved byte */
-+ pic_error(pi, PIC_SUPPORT);
-+}
-+
-+static void pic_read_header(pi)
-+ struct pic_info *pi;
-+{
-+ pi->mode = pic_read_bits(pi, 4);
-+ pi->type = pic_read_bits(pi, 4);
-+ pi->cbits = pic_read_bits(pi, 16);
-+ pi->width = pic_read_bits(pi, 16);
-+ pi->height = pic_read_bits(pi, 16);
-+
-+ /* machine-dependent setup. */
-+ switch(pi->type){
-+ case 0x0: /* X68K */
-+ if(pi->mode != 0)
-+ pic_error(pi, PIC_MODE);
-+ switch(pi->cbits){
-+ case 4:
-+ pi->aspect = 1.0;
-+ pi->g_bits = pi->r_bits = pi->b_bits = 5;
-+ pi->i_bits = 1;
-+ pi->cmapped = 1;
-+ break;
-+
-+ case 8:
-+ pi->aspect = 4.0 / 3.0;
-+ pi->g_bits = pi->r_bits = pi->b_bits = 5;
-+ pi->i_bits = 1;
-+ pi->cmapped = 1;
-+ break;
-+
-+ case 15:
-+ pi->aspect = 4.0 / 3.0;
-+ pi->g_bits = pi->r_bits = pi->b_bits = 5;
-+ pi->cached = 1;
-+ break;
-+
-+ case 16:
-+ pi->aspect = 4.0 / 3.0;
-+ pi->g_bits = pi->r_bits = pi->b_bits = 5;
-+ pi->i_bits = 1;
-+ pi->cached = 1;
-+ break;
-+
-+ default:
-+ pic_error(pi, PIC_NUM_COLORS);
-+ }
-+ break;
-+
-+ case 0x1: /* PC-88VA */
-+ if(pi->height > 1000)
-+ pic_error(pi, PIC_SIZE);
-+ switch(pi->width * 1000 + pi->height){
-+ case 640400:
-+ case 640204:
-+ case 640200:
-+ case 320408:
-+ case 320400:
-+ case 320200:
-+ break;
-+ default:
-+ pic_error(pi, PIC_SIZE);
-+ }
-+ pi->aspect = 400.0 / pi->height;
-+ pi->aspect *= pi->width / 640.0;
-+ if(pi->mode & 0x1) /* HR mode */
-+ pi->aspect *= 2.0;
-+ if(pi->mode & 0x2){ /* tiled 256 format */
-+ if(pi->cbits != 16)
-+ pic_error(pi, PIC_NUM_COLORS);
-+ pi->tiled256 = 1;
-+ }
-+ switch(pi->cbits){
-+ case 8:
-+ pi->g_bits = pi->r_bits = 3;
-+ pi->b_bits = 2;
-+ break;
-+
-+ case 12:
-+ pi->g_bits = pi->r_bits = pi->b_bits = 4;
-+ pi->cached = 1;
-+ break;
-+
-+ case 16:
-+ pi->g_bits = 6;
-+ pi->r_bits = pi->b_bits = 5;
-+ pi->cached = 1;
-+ break;
-+
-+ default:
-+ pic_error(pi, PIC_NUM_COLORS);
-+ }
-+ break;
-+
-+ case 0x2: /* FM-TOWNS */
-+ if(pi->cbits != 15)
-+ pic_error(pi, PIC_NUM_COLORS);
-+ switch(pi->mode){
-+ case 0x5:
-+ case 0xc:
-+ break;
-+ default:
-+ pic_error(pi, PIC_MODE);
-+ }
-+ pi->g_bits = pi->r_bits = pi->b_bits = 5;
-+ pi->cached = 1;
-+ break;
-+
-+ case 0x3: /* MAC */
-+ if(pi->cbits != 15)
-+ pic_error(pi, PIC_NUM_COLORS);
-+ pi->r_bits = pi->g_bits = pi->b_bits = 5;
-+ pi->inv_gr = 1;
-+ break;
-+
-+ case 0xf: /* misc */
-+ {
-+ byte ah, al;
-+
-+ switch(pi->mode){
-+ case 0x0:
-+ break;
-+ case 0x1:
-+ pi->aspect = 4.0 / 3.0;
-+ break;
-+ case 0xf:
-+ break;
-+ default:
-+ pic_error(pi, PIC_MODE);
-+ }
-+ pic_read_bits(pi, 16); /* x */
-+ pic_read_bits(pi, 16); /* y */
-+ ah = pic_read_bits(pi, 8);
-+ al = pic_read_bits(pi, 8);
-+ if(ah > 0 && al > 0)
-+ pi->aspect = (float) al / (int) ah;
-+ else if(pi->mode == 0xf)
-+ pic_error(pi, PIC_ASPECT);
-+ switch(pi->cbits){
-+ case 4:
-+ case 8:
-+ pi->g_bits = pi->r_bits = pi->b_bits = pic_read_bits(pi, 8);
-+ pi->cmapped = 1;
-+ break;
-+
-+ case 12:
-+ pi->g_bits = pi->r_bits = pi->b_bits = 4;
-+ pi->cached = 1;
-+ break;
-+
-+ case 15:
-+ pi->g_bits = pi->r_bits = pi->b_bits = 5;
-+ pi->cached = 1;
-+ break;
-+
-+ case 16:
-+ pi->g_bits = pi->r_bits = pi->b_bits = 5;
-+ pi->i_bits = 1;
-+ pi->cached = 1;
-+ break;
-+
-+ case 24:
-+ pi->g_bits = pi->r_bits = pi->b_bits = 8;
-+ pi->cached = 1;
-+ break;
-+
-+ case 32:
-+ pic_error(pi, PIC_SUPPORT);
-+ break;
-+
-+ default:
-+ pic_error(pi, PIC_NUM_COLORS);
-+ }
-+ }
-+ break;
-+
-+ default:
-+ pic_error(pi, PIC_TYPE);
-+ }
-+
-+ pi->numcols = 1 << pi->cbits;
-+
-+ /* read palette data */
-+ if(pi->cmapped){
-+ int i;
-+ pi->cmap = pic_malloc((size_t) 3 * pi->numcols, "pic_read_header#1");
-+ for(i = 0; i < pi->numcols; i++){
-+ data32 c = pic_read_rgb(pi);
-+ pi->cmap[i * 3 ] = c >> 16 & 0xff;
-+ pi->cmap[i * 3 + 1] = c >> 8 & 0xff;
-+ pi->cmap[i * 3 + 2] = c & 0xff;
-+ }
-+ }
-+
-+ /* setup color code cache */
-+ if(pi->cached)
-+ pic_cache_init(pi);
-+
-+
-+ pi->data = pic_malloc(sizeof(data32) * pi->width * pi->height, // GRR POSSIBLE OVERFLOW / FIXME
-+ "pic_read_header#2");
-+ {
-+ int i;
-+ for(i = 0; i < pi->width * pi->height; i++)
-+ pi->data[i] = 0xffffffff;
-+ }
-+
-+ if(DEBUG)
-+ pic_show_pic_info(pi);
-+}
-+
-+/* The main routine to expand a PIC file. */
-+static void pic_expand_data(pi)
-+ struct pic_info *pi;
-+{
-+ int cnt;
-+ data32 c;
-+ pi->data[0] = c = 0;
-+ for(cnt = -1; cnt < pi->width * pi->height; ){
-+ int len = pic_expanding_read_len(pi);
-+ cnt += len;
-+ if(cnt < pi->width * pi->height){
-+ int x = cnt % pi->width;
-+ int y = cnt / pi->width;
-+ data32 c = pic_expanding_read_color(pi);
-+ pic_expanding_read_chain(pi, x, y, c);
-+ }
-+ }
-+}
-+
-+static int pic_expanding_read_len(pi)
-+ struct pic_info *pi;
-+{
-+ int len;
-+ byte bits;
-+ for(len = 2, bits = 1; pic_read_bits(pi, 1) == 1; bits++)
-+ len <<= 1;
-+ return len - 1 + pic_read_bits(pi, bits);
-+}
-+
-+static data32 pic_expanding_read_color(pi)
-+ struct pic_info *pi;
-+{
-+ if(pi->cached){
-+ byte b = pic_read_bits(pi, 1);
-+ if(b){
-+ return pic_cache_get_value(pi, (int) pic_read_bits(pi, 7));
-+ }else{
-+ data32 c = pic_read_color_code(pi);
-+ pic_cache_add_value(pi, c);
-+ return c;
-+ }
-+ }
-+ return pic_read_color_code(pi);
-+}
-+
-+static void pic_expanding_read_chain(pi, x, y, c)
-+ struct pic_info *pi;
-+ int x, y;
-+ data32 c;
-+{
-+ pi->data[y * pi->width + x] = c;
-+ if(pic_read_bits(pi, 1) == 1){
-+ int fin = 0;
-+ while(!fin){
-+ switch(pic_read_bits(pi, 2)){
-+ case 1: /* left */
-+ pi->data[(++y) * pi->width + (--x)] = c;
-+ break;
-+ case 2: /* middle */
-+ pi->data[(++y) * pi->width + x ] = c;
-+ break;
-+ case 3: /* right */
-+ pi->data[(++y) * pi->width + (++x)] = c;
-+ break;
-+ case 0: /* far or nothing */
-+ if(pic_read_bits(pi, 1) == 0)
-+ fin = 1;
-+ else{
-+ if(pic_read_bits(pi, 1) == 0)
-+ pi->data[(++y) * pi->width + (x -= 2)] = c;
-+ else
-+ pi->data[(++y) * pi->width + (x += 2)] = c;
-+ }
-+ }
-+ }
-+ }
-+}
-+
-+/*
-+ * Make a picture from the expanded data.
-+ */
-+static void pic_make_xvpic(pi, xp, rp, gp, bp)
-+ struct pic_info *pi;
-+ byte **xp, *rp, *gp, *bp;
-+{
-+ if(pi->cmapped){
-+ if(pi->tiled256)
-+ *xp = pic_malloc((size_t) pi->width * pi->height * 2, // GRR POSSIBLE OVERFLOW / FIXME
-+ "pic_make_xvpic#1");
-+ else
-+ *xp = pic_malloc((size_t) pi->width * pi->height, // GRR POSSIBLE OVERFLOW / FIXME
-+ "pic_make_xvpic#2");
-+ }else
-+ *xp = pic_malloc((size_t) pi->width * pi->height * 3, // GRR POSSIBLE OVERFLOW / FIXME
-+ "pic_make_xvpic#3");
-+
-+ if(pi->cmapped){
-+ int i;
-+
-+ for(i = 0; i < pi->numcols; i++){
-+ rp[i] = pi->cmap[i * 3 ];
-+ gp[i] = pi->cmap[i * 3 + 1];
-+ bp[i] = pi->cmap[i * 3 + 2];
-+ }
-+
-+ if(pi->tiled256){
-+ int pic_idx = 0, dat_idx;
-+ data16 col = 0;
-+ for(dat_idx = 0; dat_idx < pi->width * pi->height; dat_idx++){
-+ if(pi->data[dat_idx] != 0xffffffff)
-+ col = pi->data[dat_idx];
-+ (*xp)[pic_idx++] = col & 0xff;
-+ (*xp)[pic_idx++] = col >> 8 & 0xff;
-+ dat_idx++;
-+ }
-+ }else{
-+ int pic_idx = 0, dat_idx;
-+ byte col = 0;
-+ for(dat_idx = 0; dat_idx < pi->width * pi->height; dat_idx++){
-+ if(pi->data[dat_idx] != 0xffffffff)
-+ col = pi->data[dat_idx];
-+ (*xp)[pic_idx++] = col;
-+ }
-+ }
-+ }else{
-+ int pic_idx = 0, dat_idx;
-+ byte r = 0, g = 0, b = 0;
-+ for(dat_idx = 0; dat_idx < pi->width * pi->height; dat_idx++){
-+ if(pi->data[dat_idx] != 0xffffffff){
-+ data32 col = pi->data[dat_idx];
-+ r = col >> 16 & 0xff;
-+ g = col >> 8 & 0xff;
-+ b = col & 0xff;
-+ }
-+ (*xp)[pic_idx++] = r;
-+ (*xp)[pic_idx++] = g;
-+ (*xp)[pic_idx++] = b;
-+ }
-+ }
-+}
-+
-+
-+/* The main routine to write PIC file. */
-+int WritePIC(fp, pic0, ptype, w, h, rmap, gmap, bmap, numcols, colorstyle,
-+ comment)
-+ FILE *fp;
-+ byte *pic0;
-+ int ptype, w, h;
-+ byte *rmap, *gmap, *bmap;
-+ int numcols, colorstyle;
-+ char *comment;
-+{
-+ struct pic_info pic;
-+ int e;
-+
-+ if(DEBUG) fputs("WritePIC:\n", stderr);
-+
-+ pic_init_info(&pic);
-+ pic.fp = fp;
-+ pic.width = w;
-+ pic.height = h;
-+ pic.writing_grey = (colorstyle == F_GREYSCALE);
-+ if(ptype != PIC24){ /* PIC8 */
-+ pic.cmapped = 1;
-+ pic.cached = 0;
-+ pic.cbits = 8;
-+ pic.g_bits =
-+ pic.r_bits =
-+ pic.b_bits = 8;
-+ pic.i_bits = 0;
-+ pic.numcols = numcols;
-+ }else{ /* PIC24 */
-+ pic.cmapped = 0;
-+ pic.cached = 1;
-+ pic.cbits = 24;
-+ pic.g_bits =
-+ pic.r_bits =
-+ pic.b_bits = 8;
-+ pic.i_bits = 0;
-+ pic.numcols = 1 << 24;
-+ pic_cache_init(&pic);
-+ }
-+
-+ if((e = setjmp(pic.jmp)) != 0){
-+ /* When an error occurs while writing, comes here. */
-+ pic_cleanup_pic_info(&pic, 1);
-+ if(DEBUG) fputs("\n", stderr);
-+ return -1;
-+ }
-+
-+ pic_write_id(&pic);
-+ pic_write_comment(&pic, comment);
-+ pic_write_header(&pic);
-+ if(pic.cmapped)
-+ pic_write_palette(&pic, rmap, gmap, bmap);
-+ pic_make_sparse_data(&pic, pic0);
-+ pic_write_data(&pic);
-+ pic_write_bits(&pic, 0, 8);
-+
-+ pic_cleanup_pic_info(&pic, 1);
-+ if(DEBUG) fputs("\n", stderr);
-+ return 0;
-+}
-+
-+static void pic_write_id(pi)
-+ struct pic_info *pi;
-+{
-+ if(fwrite("PIC", (size_t) 3, (size_t) 1, pi->fp) != 1)
-+ pic_file_error(pi, PIC_WRITE);
-+}
-+
-+static void pic_write_comment(pi, comm)
-+ struct pic_info *pi;
-+ char *comm;
-+{
-+ if(comm){
-+ while(*comm){
-+ int c = *comm;
-+ if(c == '\032')
-+ c = ' ';
-+ if(fputc(*comm, pi->fp) == EOF)
-+ pic_file_error(pi, PIC_WRITE);
-+ comm++;
-+ }
-+ }
-+ /* write ^Z, 0, and reserved. */
-+ if(fwrite("\032\0\0", (size_t)3, (size_t) 1, pi->fp) != 1)
-+ pic_file_error(pi, PIC_WRITE);
-+}
-+
-+static void pic_write_header(pi)
-+ struct pic_info *pi;
-+{
-+ if(DEBUG) pic_show_pic_info(pi);
-+ pic_write_bits(pi, (data32) 0, 4); /* mode: 1:1 */
-+ pic_write_bits(pi, (data32) 0xf, 4); /* type: misc */
-+ pic_write_bits(pi, (data32) pi->cbits, 16); /* bits */
-+ pic_write_bits(pi, (data32) pi->width, 16); /* width */
-+ pic_write_bits(pi, (data32) pi->height, 16); /* height */
-+ pic_write_bits(pi, (data32) 0xffff, 16); /* x: unused */
-+ pic_write_bits(pi, (data32) 0xffff, 16); /* y: unused */
-+ pic_write_bits(pi, (data32) 0x0101, 16); /* real aspect */
-+}
-+
-+static void pic_write_palette(pi, r, g, b)
-+ struct pic_info *pi;
-+ byte *r, *g, *b;
-+{
-+ int i;
-+ data32 rgb = 0;
-+ pic_write_bits(pi, (data32) pi->g_bits, 8);
-+ for(i = 0; i < pi->numcols; i++){
-+ rgb = (data32) *r++ << 16 | (data32) *g++ << 8 | (data32) *b++;
-+ pic_write_rgb(pi, rgb);
-+ }
-+ for( ; i < 256; i++)
-+ pic_write_rgb(pi, rgb);
-+}
-+
-+static void pic_make_sparse_data(pi, dat)
-+ struct pic_info *pi;
-+ byte *dat;
-+{
-+ int i;
-+ data32 c;
-+
-+ pi->data = pic_malloc(sizeof(data32) * pi->width * pi->height, // GRR POSSIBLE OVERFLOW / FIXME
-+ "pic_make_sparse_data");
-+
-+ if(pi->cmapped){
-+ c = 0;
-+ for(i = 0; i < pi->width * pi->height; i++){
-+ if(c != dat[i])
-+ c = pi->data[i] = dat[i];
-+ else
-+ pi->data[i] = 0xffffffff;
-+ }
-+ }else{
-+ int j = 0;
-+ c = 0;
-+ for(i = 0; i < pi->width * pi->height; i++){
-+ data32 r, g, b, t;
-+ r = dat[j++];
-+ g = dat[j++];
-+ b = dat[j++];
-+ t = r << 16 | g << 8 | b;
-+ if(c != t)
-+ c = pi->data[i] = t;
-+ else
-+ pi->data[i] = 0xffffffff;
-+ }
-+ }
-+}
-+
-+static void pic_write_data(pi)
-+ struct pic_info *pi;
-+{
-+ int i;
-+ int max = pi->width * pi->height;
-+ data32 c = 0;
-+
-+ i = -1;
-+ while(i < max){
-+ int j;
-+ for(j = i + 1; j < max; j++){
-+ if(pi->data[j] != 0xffffffff)
-+ break;
-+ }
-+ pic_write_length(pi, (data32) j - i);
-+ i = j;
-+ if(i < max){
-+ pic_write_color(pi, c = pi->data[i]);
-+ pic_write_chain(pi, i % pi->width, i / pi->width, c);
-+ }
-+ }
-+}
-+
-+static void pic_write_length(pi, len)
-+ struct pic_info *pi;
-+ data32 len;
-+{
-+ int bits = 0; /* leading 1's */
-+ int max = 2;
-+
-+ while(len > max){
-+ max = (max + 1) * 2;
-+ bits++;
-+ }
-+ pic_write_bits(pi, 0xffffffff, bits);
-+ pic_write_bits(pi, 0, 1);
-+ pic_write_bits(pi, len - max / 2, bits + 1);
-+}
-+
-+static void pic_write_color(pi, c)
-+ struct pic_info *pi;
-+ data32 c;
-+{
-+ if(pi->cached){
-+ int idx = pic_cache_lookup(pi, c);
-+ if(idx < 0){ /* not found */
-+ pic_write_bits(pi, 0, 1);
-+ pic_write_color_code(pi, c);
-+ pic_cache_add_value(pi, c);
-+ }else{ /* found */
-+ pic_write_bits(pi, (data32) 0xffffffff, 1);
-+ pic_write_bits(pi, (data32) idx, 7);
-+ }
-+ }else
-+ pic_write_color_code(pi, c);
-+}
-+
-+static void pic_write_chain(pi, x, y, c)
-+ struct pic_info *pi;
-+ int x, y;
-+ data32 c;
-+{
-+ int ctr = (y + 1) * pi->width + x;
-+
-+ if(y < pi->height - 1 &&
-+ ( pi->data[ctr ] == c ||
-+ (x > 0 && pi->data[ctr - 1] == c) ||
-+ (x < pi->width - 1 && pi->data[ctr + 1] == c) ||
-+ (x > 1 && pi->data[ctr - 2] == c) ||
-+ (x < pi->width - 2 && pi->data[ctr + 2] == c))){
-+ pic_write_bits(pi, 1, 1);
-+ while(++y < pi->height){
-+ if(pi->data[ctr] == c){ /* center */
-+ pic_write_bits(pi, 2, 2);
-+ pi->data[ctr] = 0xffffffff;
-+ ctr += pi->width;
-+ }else if(x > 0 && pi->data[ctr - 1] == c){ /* left */
-+ pic_write_bits(pi, 1, 2);
-+ pi->data[ctr - 1] = 0xffffffff;
-+ ctr += pi->width - 1;
-+ }else if(x < pi->width - 1 && pi->data[ctr + 1] == c){/* right */
-+ pic_write_bits(pi, 3, 2);
-+ pi->data[ctr + 1] = 0xffffffff;
-+ ctr += pi->width + 1;
-+ }else if(x > 1 && pi->data[ctr - 2] == c){ /* 2-left */
-+ pic_write_bits(pi, 2, 4);
-+ pi->data[ctr - 2] = 0xffffffff;
-+ ctr += pi->width - 2;
-+ }else if(x < pi->width - 2 && pi->data[ctr + 2] == c){/* 2-right */
-+ pic_write_bits(pi, 3, 4);
-+ pi->data[ctr + 2] = 0xffffffff;
-+ ctr += pi->width + 2;
-+ }else /* nothing */
-+ break;
-+ }
-+ pic_write_bits(pi, 0, 3);
-+ }else
-+ pic_write_bits(pi, 0, 1);
-+}
-+
-+
-+/*
-+ * These 4 functions read or write a color.
-+ *
-+ * pic_read_rgb:
-+ * reads an RGB. Each bit length is [rgb]_bits, but
-+ * it is expanded to 8bits when returned.
-+ *
-+ * pic_read_color_code:
-+ * reads a color code, whose length is cbits.
-+ * It is the index to the colormap or RGB itself.
-+ *
-+ * pic_write_rgb:
-+ * writes an RGB value.
-+ *
-+ * pic_write_color_code:
-+ * writes a color code.
-+ */
-+static data32 pic_read_rgb(pi)
-+ struct pic_info *pi;
-+{
-+ int rb = pi->r_bits, gb = pi->g_bits, bb = pi->b_bits;
-+ byte r, g, b;
-+ if(pi->inv_gr){
-+ r = pic_read_bits(pi, rb);
-+ g = pic_read_bits(pi, gb);
-+ }else{
-+ g = pic_read_bits(pi, gb);
-+ r = pic_read_bits(pi, rb);
-+ }
-+ b = pic_read_bits(pi, bb);
-+ if(pi->i_bits){
-+ byte i;
-+ i = pic_read_bits(pi, pi->i_bits);
-+ r = r << pi->i_bits | i;
-+ g = g << pi->i_bits | i;
-+ b = b << pi->i_bits | i;
-+ rb += pi->i_bits;
-+ gb += pi->i_bits;
-+ bb += pi->i_bits;
-+ }
-+ r = pic_pad_bit(rb, r);
-+ g = pic_pad_bit(gb, g);
-+ b = pic_pad_bit(bb, b);
-+
-+ return (data32) r << 16 | (data32) g << 8 | (data32) b;
-+}
-+
-+static data32 pic_read_color_code(pi)
-+ struct pic_info *pi;
-+{
-+ if(pi->cmapped)
-+ return pic_read_bits(pi, pi->cbits);
-+ return pic_read_rgb(pi);
-+}
-+
-+static void pic_write_rgb(pi, rgb)
-+ struct pic_info *pi;
-+ data32 rgb;
-+{
-+ byte r = rgb >> 16;
-+ byte g = rgb >> 8;
-+ byte b = rgb;
-+ if(pi->writing_grey)
-+ r = g = b = MONO(r, g, b);
-+ pic_write_bits(pi, g, pi->g_bits);
-+ pic_write_bits(pi, r, pi->r_bits);
-+ pic_write_bits(pi, b, pi->b_bits);
-+}
-+
-+static void pic_write_color_code(pi, code)
-+ struct pic_info *pi;
-+ data32 code;
-+{
-+ if(pi->cmapped){
-+ pic_write_bits(pi, code, pi->cbits);
-+ }else{
-+ pic_write_rgb(pi, code);
-+ }
-+}
-+
-+
-+/*
-+ * These pic_cache_* functions are an implementation of the color cache.
-+ *
-+ * pic_cache_init:
-+ * initializes the cache.
-+ *
-+ * pic_cache_get_value:
-+ * gets a color indexed by the argument `idx'.
-+ * It updates the `most recently used' time.
-+ *
-+ * pic_cache_add_value:
-+ * adds a color to the top of the cache list.
-+ */
-+static void pic_cache_init(pi)
-+ struct pic_info *pi;
-+{
-+ int i;
-+ pi->cache.node = pic_malloc(sizeof(struct cachenode_t) * 128,
-+ "pic_cache_init");
-+ for(i = 0; i < 128; i++){
-+ pi->cache.node[i].newer = i + 1;
-+ pi->cache.node[i].older = i - 1;
-+ pi->cache.node[i].dat = 0;
-+ }
-+ pi->cache.node[ 0].older = 127;
-+ pi->cache.node[127].newer = 0;
-+ pi->cache.newest = 0;
-+}
-+
-+static data32 pic_cache_get_value(pi, idx)
-+ struct pic_info *pi;
-+ int idx;
-+{
-+ struct cachenode_t *p = pi->cache.node;
-+ int n = pi->cache.newest;
-+ if(n != idx){
-+ p[p[idx].newer].older = p[idx].older;
-+ p[p[idx].older].newer = p[idx].newer;
-+
-+ p[p[n].newer].older = idx;
-+ p[idx].newer = p[n].newer;
-+ p[n].newer = idx;
-+ p[idx].older = n;
-+
-+ pi->cache.newest = idx;
-+ }
-+ return pi->cache.node[idx].dat;
-+}
-+
-+static void pic_cache_add_value(pi, dat)
-+ struct pic_info *pi;
-+ data32 dat;
-+{
-+ pi->cache.newest = pi->cache.node[pi->cache.newest].newer;
-+ pi->cache.node[pi->cache.newest].dat = dat;
-+}
-+
-+static int pic_cache_lookup(pi, dat)
-+ struct pic_info *pi;
-+ data32 dat;
-+{
-+ int i;
-+ for(i = 0; i < 128; i++){
-+ if(pi->cache.node[i].dat == dat){
-+ pic_cache_get_value(pi, i);
-+ return i;
-+ }
-+ }
-+ return -1;
-+}
-+
-+
-+/*
-+ * These pic_{read,write}_bits functions access the bit stream.
-+ * pic_read_bits:
-+ * reads the specified bits from the file.
-+ *
-+ * pic_write_bits:
-+ * writes the specified bits to the file.
-+ */
-+static data32 pic_read_bits(pi, bits)
-+ struct pic_info *pi;
-+ int bits;
-+{
-+ data32 r = 0;
-+
-+ while(bits > 0){
-+ while(pi->bs.rest > 0 && bits > 0){
-+ r = (r << 1) | (pi->bs.cur & 0x80 ? 1 : 0);
-+ pi->bs.cur <<= 1;
-+ pi->bs.rest--;
-+ bits--;
-+ }
-+ if(bits > 0){
-+ int c;
-+ if((c = fgetc(pi->fp)) == EOF){
-+ pic_file_warning(pi, PIC_CORRUPT);
-+ c = 0;
-+ }
-+ pi->bs.cur = c;
-+ pi->bs.rest = 8;
-+ }
-+ }
-+
-+ return r;
-+}
-+
-+static void pic_write_bits(pi, dat, bits)
-+ struct pic_info *pi;
-+ data32 dat;
-+ int bits;
-+{
-+ data32 dat_mask = 1 << (bits - 1);
-+ while(bits > 0){
-+ while(pi->bs.rest < 8 && bits > 0){
-+ pi->bs.cur <<= 1;
-+ if(dat & dat_mask)
-+ pi->bs.cur |= 1;
-+ pi->bs.rest++;
-+ bits--;
-+ dat_mask >>= 1;
-+ }
-+ if(pi->bs.rest >= 8){
-+ if(fputc((int)pi->bs.cur, pi->fp) == EOF)
-+ pic_error(pi, PIC_WRITE);
-+ pi->bs.cur = 0;
-+ pi->bs.rest = 0;
-+ }
-+ }
-+}
-+
-+
-+/*
-+ * This function extends sub-8-bit data to 8-bit data using bit-replication.
-+ */
-+static byte pic_pad_bit(bits, dat)
-+ int bits;
-+ data32 dat;
-+{
-+ switch(bits){
-+ case 1:
-+ if(dat & 1)
-+ dat = 0xff;
-+ else
-+ dat = 0;
-+ break;
-+ case 2:
-+ dat = dat << 6 | dat << 4 | dat << 2 | dat;
-+ break;
-+ case 3:
-+ dat = dat << 5 | dat << 2 | dat >> 1;
-+ break;
-+ case 4:
-+ dat = dat << 4 | dat;
-+ break;
-+ case 5:
-+ dat = dat << 3 | dat >> 2;
-+ break;
-+ case 6:
-+ dat = dat << 2 | dat >> 4;
-+ break;
-+ case 7:
-+ dat = dat << 1 | dat >> 6;
-+ }
-+
-+ return dat;
-+}
-+
-+/*
-+ * These functions initialize or clean up structures.
-+ * pic_init_info:
-+ * initializes a pic_info structure.
-+ * pic_cleanup_pic_info:
-+ * cleans up a pic_info structure.
-+ * pic_cleanup_pinfo:
-+ * cleans up a PICINFO structure.
-+ */
-+static void pic_init_info(pi)
-+ struct pic_info *pi;
-+{
-+ pi->fp = NULL;
-+ pi->bs.rest = 0;
-+ pi->bs.cur = '\0';
-+ pi->type = pi->mode = 0;
-+ pi->width = pi->height = 0;
-+ pi->aspect = 1.0;
-+ pi->cbits = 0;
-+ pi->cmapped = pi->cached = 0;
-+ pi->cache.node = NULL;
-+ pi->cmap = NULL;
-+ pi->g_bits = pi->r_bits = pi->b_bits = pi->i_bits = 0;
-+ pi->inv_gr = 0;
-+ pi->tiled256 = 0;
-+ pi->numcols = 0;
-+ pi->writing_grey = 0;
-+}
-+
-+static void pic_cleanup_pic_info(pi, writing)
-+ struct pic_info *pi;
-+ int writing;
-+{
-+ if(!writing && pi->fp)
-+ fclose(pi->fp);
-+ if(pi->cmap)
-+ free(pi->cmap);
-+ if(pi->cache.node)
-+ free(pi->cache.node);
-+ if(pi->data)
-+ free(pi->data);
-+ pi->fp = NULL;
-+ pi->cmap = NULL;
-+ pi->cache.node = NULL;
-+ pi->data = NULL;
-+}
-+
-+static void pic_cleanup_pinfo(pinfo)
-+ PICINFO *pinfo;
-+{
-+ if(pinfo->pic){
-+ free(pinfo->pic);
-+ pinfo->pic = NULL;
-+ }
-+ if(pinfo->comment){
-+ free(pinfo->comment);
-+ pinfo->comment = NULL;
-+ }
-+}
-+
-+/*
-+ * Error Handlers.
-+ * pic_memory_error:
-+ * shows an error message and terminates.
-+ * pic_error:
-+ * shows a non-file error message and jumps to the entry for errors.
-+ * pic_file_error:
-+ * shows a file error message and jumps to the entry for errors.
-+ * pic_file_warning:
-+ * shows a file warning message.
-+ */
-+static void pic_memory_error(scm, fn)
-+ char *scm, *fn;
-+{
-+ char buf[128];
-+ sprintf(buf, "%s: can't allocate memory. (%s)", scm, fn);
-+ FatalError(buf);
-+}
-+
-+static void pic_error(pi, mn)
-+ struct pic_info *pi;
-+ int mn;
-+{
-+ SetISTR(ISTR_WARNING, "%s", pic_msgs[mn]);
-+ longjmp(pi->jmp, 1);
-+}
-+
-+static void pic_file_error(pi, mn)
-+ struct pic_info *pi;
-+ int mn;
-+{
-+ if(feof(pi->fp))
-+ SetISTR(ISTR_WARNING, "%s (end of file)", pic_msgs[mn]);
-+ else
-+ SetISTR(ISTR_WARNING, "%s (%s)", pic_msgs[mn], ERRSTR(errno));
-+ longjmp(pi->jmp, 1);
-+}
-+
-+static void pic_file_warning(pi, mn)
-+ struct pic_info *pi;
-+ int mn;
-+{
-+ if(feof(pi->fp))
-+ SetISTR(ISTR_WARNING, "%s (end of file)", pic_msgs[mn]);
-+ else
-+ SetISTR(ISTR_WARNING, "%s (%s)", pic_msgs[mn], ERRSTR(errno));
-+}
-+
-+static void pic_show_pic_info(pi)
-+ struct pic_info *pi;
-+{
-+ fprintf(stderr, " file size: %ld.\n", pi->fsize);
-+
-+ fputs(" machine: ", stderr);
-+ switch(pi->type){
-+ case 0x0:
-+ fputs("X68k", stderr);
-+ break;
-+ case 0x1:
-+ fputs("PC-88VA", stderr);
-+ if(pi->mode & 1)
-+ fputs(",HR", stderr);
-+ if(pi->mode & 2)
-+ fputs(",tiled256", stderr);
-+ break;
-+ case 0x2:
-+ fprintf(stderr,
-+ "FM-TOWNS,%s-resolution", pi->mode == 5 ? "low" : "high");
-+ break;
-+ case 0x3:
-+ fputs("Macintosh", stderr);
-+ break;
-+ case 0xf:
-+ fputs("misc", stderr);
-+ }
-+ fputs("\n", stderr);
-+
-+ fprintf(stderr, " image size: %dx%d\n", pi->width, pi->height);
-+ fprintf(stderr, " aspect: %f\n", pi->aspect);
-+ fprintf(stderr, " cache: %s\n", pi->cached ? "on" : "off");
-+ fprintf(stderr, " colormap: %s\n", pi->cmapped ? "on" : "off");
-+ fprintf(stderr, " number of color bits: %d\n", pi->cbits);
-+ fprintf(stderr, " number of RGB bits: R%d,G%d,B%d,I%d\n",
-+ pi->r_bits, pi->g_bits, pi->b_bits, pi->i_bits);
-+ fprintf(stderr, " inverted G&R: %s\n", pi->inv_gr ? "true" : "false");
-+ fprintf(stderr, " number of colors: %d\n", pi->numcols);
-+}
-+
-+/* Memory related routines. */
-+static void *pic_malloc(n, fn)
-+ size_t n;
-+ char *fn;
-+{
-+ void *r = (void *) malloc(n);
-+ if(r == NULL)
-+ pic_memory_error("malloc", fn);
-+ return r;
-+}
-+
-+static void *pic_realloc(p, n, fn)
-+ void *p;
-+ size_t n;
-+ char *fn;
-+{
-+ void *r = (p == NULL) ? (void *) malloc(n) : (void *) realloc(p, n);
-+ if(r == NULL)
-+ pic_memory_error("realloc", fn);
-+ return r;
-+}
-+#endif /* HAVE_PIC */
-diff -ruN xv-3.10a-bugfixes/xvpic2.c xv-3.10a-enhancements/xvpic2.c
---- xv-3.10a-bugfixes/xvpic2.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvpic2.c 2005-04-17 22:56:07.000000000 -0700
-@@ -0,0 +1,3608 @@
-+/*
-+ * $Id: xvpic2.c,v 2.9.1.14 1995/04/24 15:34:15 ikeyan Exp $
-+ * xvpic2.c - load and save routines for `PIC2' format pictures.
-+ *
-+ *
-+ * Outline
-+ * =======
-+ * xvpic2.c supports the PIC2 format image file. It is used some
-+ * Japanese personal computer users.
-+ *
-+ * The PIC2 format is designed by A.Yanagisawa. It is an excellent
-+ * format except for its encode/decode speed. ;-)
-+ *
-+ * The features of the PIC2 format:
-+ * - Powerful header information (included author, filename, title,
-+ * saver, product number, created date and comment).
-+ * - Reversible compression, and very high compression ratio (in many
-+ * cases, a higher compression ratio than the JPEG compression;
-+ * because of its compression method, PIC2 is especially good at
-+ * pictures like cell animation).
-+ * - Can handle full-color (24 bits) image.
-+ * - Can include multi image blocks into one PIC2 file.
-+ * - Have four different block format (P2SS, P2SF, P2BM and
-+ * P2BI). P2SS format uses arithmetic compression for storing
-+ * data. P2SF uses normal run-length compression. P2BM and P2BI is
-+ * raw image format. Select any one according to the situation.
-+ *
-+ * Explanation of the PIC2 compression:
-+
-+ * - In the first place, try to record pixel color, uses color caches
-+ * which keep some recent colors, and formed according to color's
-+ * frequency. PIC2 has some color cache spaces that are switched by
-+ * upper pixel value of current pixel. If cache is hit, record
-+ * that.
-+ * - Unfortunately, in the case of color cache didn't hit, record the
-+ * difference from the value estimated with the value of upper and
-+ * left pixel of current pixel (similar to PNG's AVG predictor).
-+ * - And extract image's color chain if exist, and record that (it
-+ * results in image's outline).
-+ * - In all cases, arithmetic compression is used in the final stage
-+ * before writing the file, which in theory produces the ideal
-+ * compression ratio (P2SS).
-+ *
-+ * Features
-+ * ========
-+ * - Support 3,6,9,12,15,18,21,24bit PIC2 format (Load/Save).
-+ * - Support all image block formats of PIC2 (Load/Save).
-+ * - Support multi block PIC2 file (Load/Save).
-+ *
-+ *
-+ * Bugs
-+ * ====
-+ * - Unsupport 8bit PIC2 image file.
-+ *
-+ * If you find other bugs (surely exist :-)), send me bug-report.
-+ *
-+ *
-+ * Author
-+ * ======
-+ * IKEMOTO Masahiro <ikeyan@airlab.cs.ritsumei.ac.jp>
-+ */
-+
-+#define PIC2_IGNORE_UNUSED_FUNCTIONS
-+#define NEEDSDIR
-+
-+#include "xv.h"
-+#include <setjmp.h>
-+
-+#ifdef HAVE_PIC2
-+
-+typedef unsigned long pixel;
-+
-+#define pic2_cextoshort(addr) ( \
-+ (((short) (((byte *) addr)[0])) << 8) | \
-+ ( (short) (((byte *) addr)[1])) \
-+)
-+#define pic2_cextolong(addr) ( \
-+ (((long) (((byte *) addr)[0])) << 24) | \
-+ (((long) (((byte *) addr)[1])) << 16) | \
-+ (((long) (((byte *) addr)[2])) << 8) | \
-+ ( (long) (((byte *) addr)[3])) \
-+)
-+#define pic2_shorttocex(addr, n) { \
-+ ((byte *) addr)[0] = (((unsigned short) (n) >> 8) & 0xff); \
-+ ((byte *) addr)[1] = ( (unsigned short) (n) & 0xff); \
-+}
-+#define pic2_longtocex(addr, n) { \
-+ ((byte *) addr)[0] = (((unsigned long) (n) >> 24) & 0xff); \
-+ ((byte *) addr)[1] = (((unsigned long) (n) >> 16) & 0xff); \
-+ ((byte *) addr)[2] = (((unsigned long) (n) >> 8) & 0xff); \
-+ ((byte *) addr)[3] = ( (unsigned long) (n) & 0xff); \
-+}
-+#define pic2_shift_bits(b, n) (((n) > 0) ? ((b) << (n)) : ((b) >> -(n)))
-+
-+#define PIC2_READ_MODE 0
-+#define PIC2_WRITE_MODE 1
-+
-+#define PIC2_ARITH_CACHE 32
-+#define PIC2_ARITH_CONTEXT 128
-+#define PIC2_FAST_CACHE 64
-+
-+#define PIC2_HEADER_SIZE 124
-+#define PIC2_BLOCK_HEADER_SIZE 26
-+
-+struct pic2_header {
-+ char magic[4];
-+ char name[18];
-+ char subtitle[8];
-+ char crlf0[2];
-+ char title[30];
-+ char crlf1[2];
-+ char saver[30];
-+ char crlf2[2];
-+ char eof[1];
-+ char reserve0[1];
-+ short flag;
-+ short no;
-+ long time;
-+ long size;
-+ short depth;
-+ short x_aspect;
-+ short y_aspect;
-+ short x_max;
-+ short y_max;
-+ long reserve1;
-+};
-+
-+struct pic2_block {
-+ char id[4];
-+ long size;
-+ short flag;
-+ short x_wid;
-+ short y_wid;
-+ short x_offset;
-+ short y_offset;
-+ long opaque;
-+ long reserve;
-+};
-+
-+struct pic2_info {
-+ jmp_buf jmp;
-+ FILE *fp;
-+ struct {
-+ int rest;
-+ byte cur;
-+ int bits;
-+ char zero;
-+ }bs;
-+ long fsize;
-+ struct pic2_header *header;
-+ struct pic2_block *block;
-+ int n_pal;
-+ int pal_bits;
-+ byte pal[256][3];
-+ char *comment;
-+ char mode;
-+ long next_pos;
-+ long block_pos;
-+ short x_max;
-+ short y_max;
-+ int ynow;
-+ byte *buf;
-+ pixel *vram_prev;
-+ pixel *vram_now;
-+ pixel *vram_next;
-+ short *flag_now;
-+ short *flag_next;
-+ short *flag2_now;
-+ short *flag2_next;
-+ short *flag2_next2;
-+ pixel (*cache)[PIC2_ARITH_CACHE];
-+ unsigned short *cache_pos;
-+ unsigned short *mulu_tab;
-+ long aa;
-+ long cc;
-+ long dd;
-+ char cache_hit_c;
-+ int (*next_line) PARM((struct pic2_info *, pixel **));
-+ char writing_grey;
-+ char pagebname[64];
-+ int pnum;
-+};
-+
-+static void pic2_open_file PARM((struct pic2_info*,char*));
-+static void pic2_read_header PARM((struct pic2_info*));
-+static void pic2_read_block_header1 PARM((struct pic2_info*));
-+static void pic2_read_block_header2 PARM((struct pic2_info*));
-+static short pic2_arith_decode_bit PARM((struct pic2_info*,int));
-+static short pic2_arith_decode_nn PARM((struct pic2_info*,int));
-+static void pic2_arith_expand_chain PARM((struct pic2_info*,int,int,pixel));
-+static short pic2_arith_get_number PARM((struct pic2_info*,int,int));
-+static pixel pic2_arith_read_color PARM((struct pic2_info*,int));
-+static int pic2_arith_expand_line PARM((struct pic2_info*,pixel**));
-+static int pic2_arith_loader_init PARM((struct pic2_info*));
-+static int pic2_fast_read_length PARM((struct pic2_info*));
-+static void pic2_fast_expand_chain PARM((struct pic2_info*,int,pixel));
-+static pixel pic2_fast_read_color PARM((struct pic2_info*,pixel));
-+static int pic2_fast_expand_line PARM((struct pic2_info*,pixel**));
-+static int pic2_fast_loader_init PARM((struct pic2_info*));
-+static int pic2_beta_expand_line PARM((struct pic2_info*,pixel**));
-+static int pic2_beta_loader_init PARM((struct pic2_info*));
-+static void pic2_make_xvpic PARM((struct pic2_info*,byte**,
-+ byte*,byte*,byte*));
-+static void pic2_make_pagefile PARM((struct pic2_info*,char*,int));
-+static void pic2_setup_pic2_info PARM((struct pic2_info*,
-+ char*,char*,char*,char*,
-+ int,int,int,int,int,int,char *));
-+static void pic2_append PARM((struct pic2_info*));
-+static void pic2_write_header1 PARM((struct pic2_info*));
-+static void pic2_write_header2 PARM((struct pic2_info*));
-+static void pic2_write_block_header PARM((struct pic2_info*));
-+static void pic2_arith_write_zero_bit PARM((struct pic2_info*));
-+static void pic2_arith_flush_bit_buf PARM((struct pic2_info*));
-+static void pic2_arith_carry_bit PARM((struct pic2_info*));
-+static void pic2_arith_encode_bit PARM((struct pic2_info*,int,int));
-+static void pic2_arith_encode_nbyte PARM((struct pic2_info*,int,int,int));
-+static void pic2_arith_encode_nn PARM((struct pic2_info*,int,int));
-+static void pic2_arith_press_chain PARM((struct pic2_info*,int));
-+static void pic2_arith_put_number PARM((struct pic2_info*,int,int,int));
-+static void pic2_arith_write_color PARM((struct pic2_info*,int));
-+static void pic2_arith_press_line2 PARM((struct pic2_info*));
-+static int pic2_arith_press_line PARM((struct pic2_info*,pixel**));
-+static int pic2_arith_saver_init PARM((struct pic2_info*,pixel**));
-+static void pic2_fast_write_length PARM((struct pic2_info*,int));
-+static void pic2_fast_press_chain PARM((struct pic2_info*,int));
-+static void pic2_fast_press_chain2 PARM((struct pic2_info*,int));
-+static void pic2_fast_flush_chain PARM((struct pic2_info*));
-+static void pic2_fast_write_color PARM((struct pic2_info*,int));
-+static void pic2_fast_press_line2 PARM((struct pic2_info*));
-+static int pic2_fast_press_line PARM((struct pic2_info*,pixel**));
-+static int pic2_fast_saver_init PARM((struct pic2_info*,pixel**));
-+static int pic2_beta_press_line PARM((struct pic2_info*,pixel**));
-+static int pic2_beta_saver_init PARM((struct pic2_info*,pixel**));
-+static void pic2_write_data PARM((struct pic2_info*,byte*,
-+ int,int,int,int,int,
-+ byte*,byte*,byte*,int,int));
-+static int pic2_next_line PARM((struct pic2_info*,pixel**));
-+static int pic2_next_block PARM((struct pic2_info*));
-+static int pic2_find_block PARM((struct pic2_info*));
-+static int pic2_load_block PARM((struct pic2_info*));
-+static int pic2_save_block PARM((struct pic2_info*,pixel**,
-+ int,int,int,int,char*,pixel));
-+#ifndef PIC2_IGNORE_UNUSED_FUNCTIONS
-+static void pic2_read_palette PARM((struct pic2_info*,
-+ byte*,byte*,byte*));
-+static void pic2_write_palette PARM((struct pic2_info*,int,int,
-+ byte*,byte*,byte*));
-+#endif /* !PIC2_IGNORE_UNUSED_FUNCTIONS */
-+static byte pic2_convert_color_bits PARM((int,int,int));
-+static byte pic2_pad_color_bits PARM((int,int,int));
-+static byte pic2_reduce_color_bits PARM((int,int,int));
-+static pixel pic2_exchange_rg PARM((pixel,int));
-+static void pic2_handle_para PARM((struct pic2_info*,int));
-+static int pic2_alloc_buffer PARM((struct pic2_info*));
-+static void pic2_free_buffer PARM((struct pic2_info*));
-+static long pic2_seek_file PARM((struct pic2_info*,long,int));
-+static long pic2_tell_file PARM((struct pic2_info*));
-+static int pic2_read_file PARM((struct pic2_info*,void*,size_t));
-+static long pic2_read_long PARM((struct pic2_info*));
-+static short pic2_read_short PARM((struct pic2_info*));
-+static char pic2_read_char PARM((struct pic2_info*));
-+static int pic2_write_file PARM((struct pic2_info*,void*,size_t));
-+static int pic2_write_long PARM((struct pic2_info*,long));
-+static int pic2_write_short PARM((struct pic2_info*,int));
-+static int pic2_write_char PARM((struct pic2_info*,int));
-+static unsigned long pic2_read_bits PARM((struct pic2_info*,int));
-+static void pic2_write_bits PARM((struct pic2_info*,
-+ unsigned long,int));
-+static void pic2_flush_bits PARM((struct pic2_info*));
-+static void pic2_memory_error PARM((char*,char*));
-+static void pic2_error PARM((struct pic2_info*,int));
-+static void pic2_file_error PARM((struct pic2_info*,int));
-+static void pic2_init_info PARM((struct pic2_info*));
-+static void pic2_cleanup_pic2_info PARM((struct pic2_info*,int));
-+static void pic2_cleanup_pinfo PARM((PICINFO*));
-+static void pic2_show_pic2_info PARM((struct pic2_info*));
-+static char *pic2_strncpy PARM((char*,char*,size_t));
-+static void *pic2_malloc PARM((size_t,char*));
-+static void *pic2_new PARM((size_t,char*));
-+
-+static int WritePIC2 PARM((FILE*,byte*,int,int,int,
-+ byte*,byte*,byte*,int,int,char*,
-+ int,int,int,int,int,char*));
-+
-+static char *pic2_id = "P2DT";
-+
-+/* Error Messages */
-+static char *pic2_msgs[] = {
-+ NULL,
-+#define PIC2_OPEN 1
-+ "can't open file.",
-+#define PIC2_CORRUPT 2
-+ "file corrupted.",
-+#define PIC2_FORMAT 3
-+ "not PIC2 format.",
-+#define PIC2_DEPTH 4
-+ "bit depths not divisible by 3 are unsupported.",
-+#define PIC2_TMPFILE 5
-+ "unable to create temporary filename???",
-+#define PIC2_PAGE 6
-+ "couldn't load the page.",
-+#define PIC2_APPEND 7
-+ "cannot append.",
-+#define PIC2_WRITE 8
-+ "write failed.",
-+};
-+
-+struct _form_tab {
-+ char *id;
-+ int (*loader_init) PARM((struct pic2_info *));
-+ int (*saver_init) PARM((struct pic2_info *, pixel **));
-+} form_tab[] = {
-+ { "P2SS", pic2_arith_loader_init, pic2_arith_saver_init},
-+ { "P2SF", pic2_fast_loader_init, pic2_fast_saver_init},
-+ { "P2BM", pic2_beta_loader_init, pic2_beta_saver_init},
-+ { "P2BI", pic2_beta_loader_init, pic2_beta_saver_init},
-+};
-+#define n_form_tab (sizeof(form_tab) / sizeof(struct _form_tab))
-+#define P2SS 0
-+#define P2SF 1
-+#define P2BM 2
-+#define P2BI 3
-+
-+/* The main routine to load a PIC2 file. */
-+int LoadPIC2(fname, pinfo, quick)
-+char *fname;
-+PICINFO *pinfo;
-+int quick;
-+{
-+ int e, i, block;
-+ struct pic2_info pic2;
-+
-+ if (DEBUG)
-+ fputs("LoadPIC2:\n", stderr);
-+
-+ pic2_init_info(&pic2);
-+
-+ if ((e = setjmp(pic2.jmp)) != 0){
-+ /* When an error occurs, comes here. */
-+ pic2_free_buffer(&pic2);
-+ pic2_cleanup_pic2_info(&pic2, 0);
-+ pic2_cleanup_pinfo(pinfo);
-+ if (pic2split)
-+ KillPageFiles(pic2.pagebname, pic2.pnum);
-+ SetCursors(-1);
-+ if (DEBUG)
-+ fputs("\n", stderr);
-+ return (0);
-+ }
-+ pic2_open_file(&pic2, fname);
-+ pic2_read_header(&pic2);
-+
-+ if ((i = pic2_find_block(&pic2)) == 0)
-+ pic2_file_error(&pic2, PIC2_CORRUPT);
-+
-+ block = 1;
-+ while(i == 2) {
-+ SetISTR(ISTR_WARNING, "unknown or invalid block #%d.", block);
-+ i = pic2_next_block(&pic2);
-+ block++;
-+ }
-+
-+ if (pic2split && !quick) {
-+ char firstpage[512];
-+ struct stat st;
-+#ifndef USE_MKSTEMP
-+ int tmpfd;
-+#endif
-+
-+#ifndef VMS
-+ sprintf(pic2.pagebname, "%s/xvpic2XXXXXX", tmpdir);
-+#else
-+ sprintf(pic2.pagebname, "Sys$Scratch:xvpic2XXXXXX");
-+#endif
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(pic2.pagebname));
-+#else
-+ mktemp(pic2.pagebname);
-+ tmpfd = open(pic2.pagebname, O_WRONLY|O_CREAT|O_EXCL, S_IRWUSR);
-+ if (tmpfd < 0) FatalError("LoadPIC2(): can't create temporary file");
-+ close(tmpfd);
-+#endif
-+ if (pic2.pagebname[0] == '\0')
-+ pic2_error(&pic2, PIC2_TMPFILE);
-+ strcat(pic2.pagebname, ".");
-+
-+ sprintf(firstpage, "%s%d", pic2.pagebname, 1);
-+ if (stat(firstpage, &st)) {
-+ for (pic2.pnum = 1; i >= 1; pic2.pnum++) {
-+ pic2_load_block(&pic2);
-+ pic2_make_pagefile(&pic2, pic2.pagebname, pic2.pnum);
-+ while(block++, (i = pic2_next_block(&pic2)) == 2)
-+ SetISTR(ISTR_WARNING,
-+ "unknown or invalid block #%d.", block);
-+ }
-+ pinfo->numpages = --pic2.pnum;
-+ if (!LoadPIC2(firstpage, pinfo, 1))
-+ pic2_error(&pic2, PIC2_PAGE);
-+ if (pic2.pnum == 1)
-+ unlink(firstpage);
-+ else
-+ strcpy(pinfo->pagebname, pic2.pagebname);
-+ } else
-+ if (!LoadPIC2(fname, pinfo, 1))
-+ pic2_error(&pic2, PIC2_PAGE);
-+ } else {
-+ char buf[128], format[64];
-+ int j;
-+
-+ pinfo->w = pic2.x_max;
-+ pinfo->h = pic2.y_max;
-+ pinfo->normw = pinfo->w;
-+ pinfo->normh = pinfo->h;
-+ pinfo->type = PIC24;
-+ for (j = 0; j < n_form_tab; j++) {
-+ if (xvbcmp(pic2.block->id, form_tab[j].id, (size_t) 4) == 0)
-+ break;
-+ }
-+ pinfo->frmType = F_PIC2;
-+ pinfo->colType = F_FULLCOLOR;
-+ pinfo->comment = pic2.comment;
-+
-+ if (pic2split) {
-+ pic2_make_xvpic(&pic2, &pinfo->pic, pinfo->r, pinfo->g, pinfo->b);
-+ strcpy(format, form_tab[j].id);
-+ } else {
-+ for (pic2.pnum = 1; i >= 1; pic2.pnum++) {
-+ SetISTR(ISTR_INFO, "composing block #%d", block);
-+ pic2_make_xvpic(&pic2, &pinfo->pic,
-+ pinfo->r, pinfo->g, pinfo->b);
-+ while(block++, (i = pic2_next_block(&pic2)) == 2)
-+ SetISTR(ISTR_WARNING,
-+ "unknown or invalid block #%d.", block);
-+ }
-+ if (--block > 1)
-+ if (block != --pic2.pnum)
-+ sprintf(format, "MultiBlock[%d/%d]", block, pic2.pnum);
-+ else
-+ sprintf(format, "MultiBlock[%d]", block);
-+ else
-+ strcpy(format, form_tab[j].id);
-+ }
-+ sprintf(buf, "PIC2(%s). %d colors (%ld bytes)", format,
-+ (int) 1 << pic2.header->depth, pic2.fsize);
-+ strcat(pinfo->fullInfo, buf);
-+ sprintf(pinfo->shrtInfo, "%dx%d(aspect %4.2f) PIC2(%s).",
-+ pinfo->w, pinfo->h,
-+ (float) pic2.header->x_aspect / (float) pic2.header->y_aspect,
-+ format);
-+ if (!nopicadjust)
-+ normaspect = (float) pic2.header->x_aspect
-+ / (float) pic2.header->y_aspect;
-+ }
-+ pic2_cleanup_pic2_info(&pic2, 0);
-+ SetCursors(-1);
-+ if (DEBUG)
-+ fputs("\n", stderr);
-+ return (1);
-+}
-+
-+/*
-+ * This function opens the file, and set its size.
-+ */
-+static void pic2_open_file(pi, fname)
-+ struct pic2_info *pi;
-+ char *fname;
-+{
-+ if ((pi->fp = fopen(fname, "rb")) == NULL)
-+ pic2_file_error(pi, PIC2_OPEN);
-+ fseek(pi->fp, (size_t) 0, SEEK_END);
-+ pi->fsize = ftell(pi->fp);
-+ fseek(pi->fp, (size_t) 0, SEEK_SET);
-+}
-+
-+/*
-+ * These functions read the PIC2 header informations.
-+ * pic2_read_header:
-+ * reads the PIC2 header.
-+ * pic2_read_block_header1:
-+ * reads the id number of block header and the size of block.
-+ * pic2_read_block_header2:
-+ * reads the rest of block header.
-+ */
-+static void pic2_read_header(pi)
-+struct pic2_info *pi;
-+{
-+ long s_comment;
-+
-+ pi->mode = PIC2_READ_MODE;
-+
-+ /* read header image */
-+ pic2_read_file(pi, pi->header->magic, 4);
-+ pic2_read_file(pi, pi->header->name, 18);
-+ pic2_read_file(pi, pi->header->subtitle, 8);
-+ pic2_read_file(pi, pi->header->crlf0, 2);
-+ pic2_read_file(pi, pi->header->title, 30);
-+ pic2_read_file(pi, pi->header->crlf1, 2);
-+ pic2_read_file(pi, pi->header->saver, 30);
-+ pic2_read_file(pi, pi->header->crlf2, 2);
-+ pic2_read_file(pi, pi->header->eof, 1);
-+ pic2_read_file(pi, pi->header->reserve0, 1);
-+ pi->header->flag = pic2_read_short(pi);
-+ pi->header->no = pic2_read_short(pi);
-+ pi->header->time = pic2_read_long(pi);
-+ pi->header->size = pic2_read_long(pi);
-+ pi->header->depth = pic2_read_short(pi);
-+ pi->header->x_aspect = pic2_read_short(pi);
-+ pi->header->y_aspect = pic2_read_short(pi);
-+ pi->header->x_max = pic2_read_short(pi);
-+ pi->header->y_max = pic2_read_short(pi);
-+ pi->header->reserve1 = pic2_read_long(pi);
-+
-+ /* check magic number */
-+ if (strncmp(pi->header->magic, pic2_id, (size_t) 4) != 0)
-+ pic2_error(pi, PIC2_FORMAT);
-+
-+ /* read palette data, if exists */
-+ if (pi->header->flag & 1) {
-+ pi->pal_bits = pic2_read_char(pi);
-+ pi->n_pal = pic2_read_short(pi);
-+ pic2_read_file(pi, pi->pal, (size_t) (pi->n_pal * 3));
-+ }
-+
-+ /* read comments */
-+ s_comment = pi->header->size - pic2_tell_file(pi);
-+ pi->comment = pic2_new(s_comment + 1, "pic2_read_header");
-+ pic2_read_file(pi, pi->comment, (size_t) s_comment);
-+ pi->comment[s_comment] = '\0';
-+
-+ pi->x_max = pi->header->x_max;
-+ pi->y_max = pi->header->y_max;
-+
-+ /* set initial block point */
-+ pi->next_pos = pic2_tell_file(pi);
-+}
-+
-+static void pic2_read_block_header1(pi)
-+struct pic2_info *pi;
-+{
-+ pic2_read_file(pi, pi->block->id, 4);
-+ pi->block->size = pic2_read_long(pi);
-+}
-+
-+static void pic2_read_block_header2(pi)
-+struct pic2_info *pi;
-+{
-+ pi->block->flag = pic2_read_short(pi);
-+ pi->block->x_wid = pic2_read_short(pi);
-+ pi->block->y_wid = pic2_read_short(pi);
-+ pi->block->x_offset = pic2_read_short(pi);
-+ pi->block->y_offset = pic2_read_short(pi);
-+ pi->block->opaque = pic2_read_long(pi);
-+ pi->block->reserve = pic2_read_long(pi);
-+}
-+
-+/*
-+ * These functions are arithmetic pic2 format extractor.
-+ */
-+static short pic2_arith_decode_bit(pi, c)
-+struct pic2_info *pi;
-+int c;
-+{
-+ unsigned short pp;
-+
-+ pp = pi->mulu_tab[(pi->aa & 0x7f00) / 2 + c];
-+ if (pi->dd >= (int) pp) {
-+ pi->dd -= pp;
-+ pi->aa -= pp;
-+
-+ while ((short) pi->aa >= 0) {
-+ pi->dd *= 2;
-+ if (pic2_read_bits(pi, 1))
-+ pi->dd++;
-+ pi->aa *= 2;
-+ }
-+ return (1);
-+ } else {
-+ pi->aa = pp;
-+
-+ while ((short) pi->aa >= 0) {
-+ pi->dd *= 2;
-+ if (pic2_read_bits(pi, 1))
-+ pi->dd++;
-+ pi->aa *= 2;
-+ }
-+ return (0);
-+ }
-+}
-+
-+static short pic2_arith_decode_nn(pi, c)
-+struct pic2_info *pi;
-+int c;
-+{
-+ int n;
-+
-+ if (pic2_arith_decode_bit(pi, c)) {
-+ /* n < 1 */
-+ n = 0;
-+ } else if (pic2_arith_decode_bit(pi, c + 1)) {
-+ /* n < 1 + 2 */
-+ n = 1;
-+ if (pic2_arith_decode_bit(pi, c + 8))
-+ n += 1;
-+ } else if (pic2_arith_decode_bit(pi, c + 2)) {
-+ /* n < 1 + 2 + 4 */
-+ n = 1 + 2;
-+ if (pic2_arith_decode_bit(pi, c + 8))
-+ n += 1;
-+ if (pic2_arith_decode_bit(pi, c + 9))
-+ n += 2;
-+ } else if (pic2_arith_decode_bit(pi, c + 3)) {
-+ /* n < 1 + 2 + 4 + 8 */
-+ n = 1 + 2 + 4;
-+ if (pic2_arith_decode_bit(pi, c + 8))
-+ n += 1;
-+ if (pic2_arith_decode_bit(pi, c + 9))
-+ n += 2;
-+ if (pic2_arith_decode_bit(pi, c + 10))
-+ n += 4;
-+ } else if (pic2_arith_decode_bit(pi, c + 4)) {
-+ /* n < 1 + 2 + 4 + 8 + 16 */
-+ n = 1 + 2 + 4 + 8;
-+ if (pic2_arith_decode_bit(pi, c + 8))
-+ n += 1;
-+ if (pic2_arith_decode_bit(pi, c + 9))
-+ n += 2;
-+ if (pic2_arith_decode_bit(pi, c + 10))
-+ n += 4;
-+ if (pic2_arith_decode_bit(pi, c + 11))
-+ n += 8;
-+ } else if (pic2_arith_decode_bit(pi, c + 5)) {
-+ /* n < 1 + 2 + 4 + 8 + 16 + 32 */
-+ n = 1 + 2 + 4 + 8 + 16;
-+ if (pic2_arith_decode_bit(pi, c + 8))
-+ n += 1;
-+ if (pic2_arith_decode_bit(pi, c + 9))
-+ n += 2;
-+ if (pic2_arith_decode_bit(pi, c + 10))
-+ n += 4;
-+ if (pic2_arith_decode_bit(pi, c + 11))
-+ n += 8;
-+ if (pic2_arith_decode_bit(pi, c + 12))
-+ n += 16;
-+
-+ } else if (pic2_arith_decode_bit(pi, c + 6)) {
-+ /* n < 1 + 2 + 4 + 8 + 16 + 32 + 64 */
-+ n = 1 + 2 + 4 + 8 + 16 + 32;
-+ if (pic2_arith_decode_bit(pi, c + 8))
-+ n += 1;
-+ if (pic2_arith_decode_bit(pi, c + 9))
-+ n += 2;
-+ if (pic2_arith_decode_bit(pi, c + 10))
-+ n += 4;
-+ if (pic2_arith_decode_bit(pi, c + 11))
-+ n += 8;
-+ if (pic2_arith_decode_bit(pi, c + 12))
-+ n += 16;
-+ if (pic2_arith_decode_bit(pi, c + 13))
-+ n += 32;
-+
-+ } else if (pic2_arith_decode_bit(pi, c + 7)) {
-+ /* n < 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 */
-+ n = 1 + 2 + 4 + 8 + 16 + 32 + 64;
-+ if (pic2_arith_decode_bit(pi, c + 8))
-+ n += 1;
-+ if (pic2_arith_decode_bit(pi, c + 9))
-+ n += 2;
-+ if (pic2_arith_decode_bit(pi, c + 10))
-+ n += 4;
-+ if (pic2_arith_decode_bit(pi, c + 11))
-+ n += 8;
-+ if (pic2_arith_decode_bit(pi, c + 12))
-+ n += 16;
-+ if (pic2_arith_decode_bit(pi, c + 13))
-+ n += 32;
-+ if (pic2_arith_decode_bit(pi, c + 14))
-+ n += 64;
-+
-+ } else {
-+ n = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128;
-+ }
-+ return (n);
-+}
-+
-+static void pic2_arith_expand_chain(pi, x, y, cc)
-+struct pic2_info *pi;
-+int x, y;
-+pixel cc;
-+{
-+ static const unsigned short c_tab[] = {
-+ 80 + 6 * 5, /* -5 */
-+ 80 + 6 * 4,
-+ 80 + 6 * 3,
-+ 80 + 6 * 2,
-+ 80 + 6 * 1,
-+ 80 + 6 * 0, /* 0 */
-+ 80 + 6 * 0, /* 1 */
-+ };
-+ unsigned short b;
-+
-+ b = c_tab[pi->flag_now[x] + 5];
-+ if (!pic2_arith_decode_bit(pi, b++)) {
-+ if (pic2_arith_decode_bit(pi, b++)) { /* down */
-+ pi->vram_next[x ] = cc;
-+ pi->flag_next[x ] = -1;
-+ } else if (pic2_arith_decode_bit(pi, b++)) { /* left */
-+ pi->vram_next[x - 1] = cc;
-+ pi->flag_next[x - 1] = -2;
-+ } else if (pic2_arith_decode_bit(pi, b++)) { /* right */
-+ pi->vram_next[x + 1] = cc;
-+ pi->flag_next[x + 1] = -3;
-+ } else if (pic2_arith_decode_bit(pi, b++)) { /* left2 */
-+ pi->vram_next[x - 2] = cc;
-+ pi->flag_next[x - 2] = -4;
-+ } else { /* right2 */
-+ pi->vram_next[x + 2] = cc;
-+ pi->flag_next[x + 2] = -5;
-+ }
-+ }
-+}
-+
-+static short pic2_arith_get_number(pi, c, bef)
-+struct pic2_info *pi;
-+int c, bef;
-+{
-+ unsigned short n;
-+ byte maxcol;
-+
-+ maxcol = 0xff >> (8 - pi->header->depth / 3);
-+
-+ n = pic2_arith_decode_nn(pi, c);
-+ if (bef > ((int) maxcol >> 1)) {
-+ if (n > ((int) maxcol - bef) * 2)
-+ n = maxcol - n;
-+ else if (n & 1)
-+ n = n / 2 + bef + 1;
-+ else
-+ n = bef - n / 2;
-+ } else {
-+ if ((int) n > (bef * 2))
-+ n = n;
-+ else if (n & 1)
-+ n = n / 2 + bef + 1;
-+ else
-+ n = bef - n / 2;
-+ }
-+ return (n);
-+}
-+
-+static pixel pic2_arith_read_color(pi, x)
-+struct pic2_info *pi;
-+int x;
-+{
-+ pixel c1, c2, cc;
-+ unsigned short i, j, k, m;
-+ short r, g, b, r0, g0, b0;
-+ short colbits;
-+ pixel rmask, gmask, bmask;
-+ byte maxcol;
-+
-+ colbits = pi->header->depth / 3;
-+ rmask = (0xff >> (8 - colbits)) << (colbits * 2);
-+ gmask = (0xff >> (8 - colbits)) << colbits;
-+ bmask = (0xff >> (8 - colbits));
-+ maxcol = (byte) bmask;
-+
-+ c1 = pi->vram_prev[x];
-+ k = ((c1 >> ((colbits - 3) * 3)) & 0x1c0)
-+ | ((c1 >> ((colbits - 3) * 2)) & 0x038)
-+ | ((c1 >> (colbits - 3) ) & 0x007);
-+ if (colbits == 5)
-+ k = pic2_exchange_rg(k, 3);
-+
-+ if (pic2_arith_decode_bit(pi, pi->cache_hit_c)) { /* ouch */
-+ pi->cache_hit_c = 16;
-+
-+ c2 = pi->vram_now[x - 1];
-+ r = ((c1 & rmask) + (c2 & rmask)) >> (colbits * 2 + 1);
-+ g = ((c1 & gmask) + (c2 & gmask)) >> (colbits + 1);
-+ b = ((c1 & bmask) + (c2 & bmask)) >> ( 1);
-+
-+ g0 = pic2_arith_get_number(pi, 32, g);
-+ r = r + g0 - g;
-+ if (r > (short) maxcol)
-+ r = maxcol;
-+ else if (r < 0)
-+ r = 0;
-+
-+ b = b + g0 - g;
-+ if (b > (short) maxcol)
-+ b = maxcol;
-+ else if (b < 0)
-+ b = 0;
-+
-+ r0 = pic2_arith_get_number(pi, 48, r);
-+ b0 = pic2_arith_get_number(pi, 64, b);
-+
-+ pi->cache_pos[k] = j = (pi->cache_pos[k] - 1) & (PIC2_ARITH_CACHE - 1);
-+ pi->cache[k][j] = cc = (r0 << (colbits * 2)) | (g0 << colbits) | b0;
-+ } else {
-+ pi->cache_hit_c = 15;
-+
-+ j = pic2_arith_decode_nn(pi, 17);
-+ m = pi->cache_pos[k];
-+ i = (m + j / 2) & (PIC2_ARITH_CACHE - 1);
-+ j = (m + j) & (PIC2_ARITH_CACHE - 1);
-+
-+ cc = pi->cache[k][j];
-+ pi->cache[k][j] = pi->cache[k][i];
-+ pi->cache[k][i] = pi->cache[k][m];
-+ pi->cache[k][m] = cc;
-+ }
-+ return (cc);
-+}
-+
-+static int pic2_arith_expand_line(pi, line)
-+struct pic2_info *pi;
-+pixel **line;
-+{
-+ int ymax;
-+ int x, xw;
-+ pixel cc;
-+
-+ pic2_handle_para(pi, 0);
-+
-+ xw = pi->block->x_wid;
-+ ymax = pi->block->y_wid - 1;
-+
-+ if (pi->ynow > ymax)
-+ return (-2); /* end */
-+
-+ /* set right end of previous line before left end of current line. */
-+ if (pi->ynow == 0) {
-+ cc = 0;
-+ } else
-+ cc = pi->vram_prev[xw - 1];
-+ pi->vram_now[-1] = cc;
-+
-+ /* clear flag for change point */
-+ xvbzero((char *) pi->flag_next, xw * sizeof(pi->flag_next[0]));
-+
-+ /* clear flag for position probability space */
-+ xvbzero((char *) pi->flag2_next2, xw * sizeof(pi->flag2_next2[0]));
-+
-+ for (x = 0; x < xw; x++) {
-+ if (pi->flag_now[x] < 0) {
-+ cc = pi->vram_now[x];
-+ if (pi->ynow < ymax)
-+ pic2_arith_expand_chain(pi, x, pi->ynow, cc);
-+ } else if (pic2_arith_decode_bit(pi, pi->flag2_now[x])) {
-+ /* ajust probability space around of change point */
-+ pi->flag2_now [x + 1]++;
-+ pi->flag2_now [x + 2]++;
-+ pi->flag2_next [x - 1]++;
-+ pi->flag2_next [x ]++;
-+ pi->flag2_next [x + 1]++;
-+ pi->flag2_next2[x - 1]++;
-+ pi->flag2_next2[x ]++;
-+ pi->flag2_next2[x + 1]++;
-+
-+ pi->vram_now[x] = cc = pic2_arith_read_color(pi, x);
-+ if (pi->ynow < ymax)
-+ pic2_arith_expand_chain(pi, x, pi->ynow, cc);
-+ } else
-+ pi->vram_now[x] = cc;
-+ }
-+ if (line != NULL)
-+ *line = pi->vram_now;
-+ pi->ynow++;
-+
-+ pic2_handle_para(pi, 1);
-+
-+ return (pi->ynow - 1);
-+}
-+
-+static int pic2_arith_loader_init(pi)
-+struct pic2_info *pi;
-+{
-+ unsigned short p2b[256];
-+ int i, xw;
-+
-+ pi->ynow = 0;
-+
-+ /* check the color depth */
-+ if (pi->header->depth % 3)
-+ pic2_error(pi, PIC2_DEPTH);
-+
-+ /* set function for extract next line */
-+ pi->next_line = pic2_arith_expand_line;
-+
-+ /* clear cache and flags */
-+ xw = pi->block->x_wid;
-+ xvbzero((char *) pi->cache, 8 * 8 * 8 * sizeof(pi->cache[0]));
-+ xvbzero((char *) pi->cache_pos, 8 * 8 * 8 * sizeof(pi->cache_pos[0]));
-+
-+ xvbzero((char *) pi->flag_now, xw * sizeof(pi->flag_now[0]));
-+ xvbzero((char *) pi->flag2_now, 8 + xw * sizeof(pi->flag2_now[0]));
-+ xvbzero((char *) pi->flag2_next, 8 + xw * sizeof(pi->flag2_next[0]));
-+
-+ /* go to picture data field */
-+ pic2_seek_file(pi, pi->block_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
-+
-+ /* clear bit field marker */
-+ pi->bs.rest = 0;
-+ pi->bs.cur = 0;
-+
-+ /* read probability table */
-+ for (i = 0; i < PIC2_ARITH_CONTEXT; i++)
-+ p2b[i] = pic2_read_short(pi);
-+
-+ /* make multiplication table */
-+ for (i = 0; i < 16384; i++) {
-+ pi->mulu_tab[i] = (long) (i / 128 + 128) * (int) p2b[i & 127] / 256;
-+ if (pi->mulu_tab[i] == 0) pi->mulu_tab[i] = 1;
-+ }
-+ /* initialize some valuables */
-+ pi->aa = 0xffff;
-+ pi->dd = 0;
-+ for (i = 0; i < 16; i++) {
-+ pi->dd *= 2;
-+ if (pic2_read_bits(pi, 1))
-+ pi->dd |= 1;
-+ }
-+ pi->cache_hit_c = 16;
-+
-+ return (0);
-+}
-+
-+/*
-+ * These functions are fast pic2 compression extractor.
-+ */
-+static int pic2_fast_read_length(pi)
-+struct pic2_info *pi;
-+{
-+ int a;
-+
-+ a = 0;
-+ while (pic2_read_bits(pi, 1)) {
-+ a++;
-+ }
-+ if (a == 0)
-+ return (0);
-+ return (pic2_read_bits(pi, a) + (1 << a) - 1);
-+}
-+
-+static void pic2_fast_expand_chain(pi, x, cc)
-+struct pic2_info *pi;
-+int x;
-+pixel cc;
-+{
-+ if (pic2_read_bits(pi, 1) != 0) {
-+ if (pic2_read_bits(pi, 1) != 0) { /* down */
-+ pi->vram_next[x] = cc;
-+ pi->flag_next[x] = -1;
-+ } else if (pic2_read_bits(pi, 1) != 0) {
-+ if (pic2_read_bits(pi, 1) == 0) { /* left2down */
-+ pi->vram_next[x - 2] = cc;
-+ pi->flag_next[x - 2] = -1;
-+ } else { /* left1down */
-+ pi->vram_next[x - 1] = cc;
-+ pi->flag_next[x - 1] = -1;
-+ }
-+ } else {
-+ if (pic2_read_bits(pi, 1) == 0) { /* right2down */
-+ pi->vram_next[x + 2] = cc;
-+ pi->flag_next[x + 2] = -1;
-+ } else { /* left1down */
-+ pi->vram_next[x + 1] = cc;
-+ pi->flag_next[x + 1] = -1;
-+ }
-+ }
-+ }
-+}
-+
-+static pixel pic2_fast_read_color(pi, bc)
-+struct pic2_info *pi;
-+pixel bc;
-+{
-+ pixel cc;
-+ unsigned short j, k, m;
-+ short depth, colbits;
-+ pixel (*cache)[PIC2_FAST_CACHE];
-+
-+ depth = pi->header->depth;
-+ colbits = depth / 3;
-+ cache = (pixel (*)[PIC2_FAST_CACHE]) pi->cache;
-+
-+ bc = pic2_exchange_rg(bc, colbits);
-+ k = pic2_shift_bits(bc, 8 - depth);
-+ if (pic2_read_bits(pi, 1) == 0) {
-+ pi->cache_pos[k] = m = (pi->cache_pos[k] - 1) & (PIC2_FAST_CACHE - 1);
-+ cc = pic2_read_bits(pi, depth);
-+ cc = pic2_exchange_rg(cc, colbits);
-+ cache[k][m] = cc;
-+ } else {
-+ j = pic2_read_bits(pi, 6); /* 6= log2(PIC2_FAST_CACHE) */
-+ m = pi->cache_pos[k];
-+ cc = cache[k][(m + j) & (PIC2_FAST_CACHE - 1)];
-+ }
-+ return (cc);
-+}
-+
-+static int pic2_fast_expand_line(pi, line)
-+struct pic2_info *pi;
-+pixel **line;
-+{
-+ int ymax;
-+ int x, xw;
-+ pixel cc;
-+
-+ pic2_handle_para(pi, 0);
-+
-+ xw = pi->block->x_wid;
-+ ymax = pi->block->y_wid - 1;
-+
-+ if (pi->ynow > ymax)
-+ return (-2);
-+
-+ if (pi->ynow == 0) {
-+ pi->dd = 0;
-+ pi->aa = pic2_fast_read_length(pi);
-+ if (pi->aa == 1023)
-+ pi->dd = 1023;
-+ else if (pi->aa > 1023)
-+ pi->aa--;
-+ cc = 0;
-+ } else
-+ cc = pi->vram_prev[xw - 1];
-+
-+ xvbzero((char *) pi->flag_next, xw * sizeof(pi->flag_next[0]));
-+
-+ for (x = 0; x < xw; x++) {
-+ if (pi->dd > 0) {
-+ if (pi->flag_now[x] < 0) { /* on chain ? */
-+ cc = pi->vram_now[x];
-+ pic2_fast_expand_chain(pi, x, cc);
-+ if (--pi->dd == 0) {
-+ pi->aa = pic2_fast_read_length(pi);
-+ if (pi->aa == 1023)
-+ pi->dd = 1023;
-+ else if (pi->aa > 1023)
-+ pi->aa--;
-+ }
-+ } else
-+ pi->vram_now[x] = cc;
-+ } else {
-+ if (pi->flag_now[x] < 0) { /* on chain ? */
-+ cc = pi->vram_now[x];
-+ pic2_fast_expand_chain(pi, x, cc);
-+ } else if (--pi->aa < 0) {
-+ cc = pi->vram_now[x] = pic2_fast_read_color(pi, cc);
-+ pic2_fast_expand_chain(pi, x, cc);
-+ pi->aa = pic2_fast_read_length(pi);
-+ if (pi->aa == 1023)
-+ pi->dd = 1023;
-+ else if (pi->aa > 1023)
-+ pi->aa--;
-+ } else
-+ pi->vram_now[x] = cc;
-+ }
-+ }
-+ if (line != NULL)
-+ *line = pi->vram_now;
-+ pi->ynow++;
-+
-+ pic2_handle_para(pi, 1);
-+
-+ return (pi->ynow - 1);
-+}
-+
-+static int pic2_fast_loader_init(pi)
-+struct pic2_info *pi;
-+{
-+ int xw;
-+
-+ pi->ynow = 0;
-+
-+ /* check the color depth */
-+ if (pi->header->depth % 3)
-+ pic2_error(pi, PIC2_DEPTH);
-+
-+ /* set function for extract next line */
-+ pi->next_line = pic2_fast_expand_line;
-+
-+ /* clear cache and flags */
-+ xw = pi->block->x_wid;
-+ xvbzero((char *) pi->cache, sizeof(pi->cache[0]) * 256);
-+ xvbzero((char *) pi->cache_pos, sizeof(pi->cache_pos[0]) * 8 * 8 * 8);
-+ xvbzero((char *) pi->flag_now, (xw + 8) * sizeof(pi->flag_now[0]));
-+ xvbzero((char *) pi->flag_next, (xw + 8) * sizeof(pi->flag_next[0]));
-+
-+ /* go to picture data field */
-+ pic2_seek_file(pi, pi->block_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
-+
-+ /* clear bit field marker */
-+ pi->bs.rest = 0;
-+ pi->bs.cur = 0;
-+
-+ return (0);
-+}
-+
-+/*
-+ * These functions are beta pic2 format extractor.
-+ */
-+static int pic2_beta_expand_line(pi, line)
-+struct pic2_info *pi;
-+pixel **line;
-+{
-+ int i, xw, ymax;
-+ byte a, b, c, *p;
-+ pixel *pc;
-+ short depth, pixbyte, colbits;
-+
-+ depth = pi->header->depth;
-+ pixbyte = depth / 8 + ((depth % 8) > 0);
-+ colbits = depth / 3;
-+
-+ xw = pi->block->x_wid;
-+ ymax = pi->block->y_wid - 1;
-+
-+ if (pi->ynow > ymax)
-+ return (-2); /* end */
-+
-+ pc = pi->vram_now;
-+ p = (byte *) pi->vram_prev;
-+ if (pixbyte == 3) {
-+ pic2_read_file(pi, pi->vram_prev, (size_t) (xw * pixbyte));
-+ for (i = 0; i < xw; i++, pc++) {
-+ a = *p++;
-+ b = *p++;
-+ c = *p++;
-+ *pc = ((pixel) a << 16) | ((pixel) b << 8) | (pixel) c;
-+ }
-+ } else if (pixbyte == 2) {
-+ pic2_read_file(pi, pi->vram_prev, (size_t) (xw * 2));
-+ if (strncmp(pi->block->id, "P2BM", 4) == 0) {
-+ for (i = 0; i < xw; i++, pc++) {
-+ a = *p++;
-+ b = *p++;
-+ *pc = ((pixel) a << 8) | (pixel) b;
-+ if (colbits == 5) {
-+ *pc >>= 1;
-+ *pc = pic2_exchange_rg(*pc, colbits);
-+ }
-+ }
-+ } else {
-+ for (i = 0; i < xw; i++, pc++) {
-+ a = *p++;
-+ b = *p++;
-+ *pc = ((pixel) b << 8) | (pixel) a;
-+ if (colbits == 5) {
-+ *pc >>= 1;
-+ *pc = pic2_exchange_rg(*pc, colbits);
-+ }
-+ }
-+ }
-+ } else {
-+ pic2_read_file(pi, pi->vram_prev, (size_t) xw);
-+ for (i = 0; i < xw; i++)
-+ *pc++ = *p++;
-+ }
-+ if (line != NULL)
-+ *line = pi->vram_now;
-+
-+ pc = pi->vram_prev;
-+ pi->vram_prev = pi->vram_now;
-+ pi->vram_now = pi->vram_next;
-+ pi->vram_next = pc;
-+
-+ pi->ynow++;
-+ return (pi->ynow - 1);
-+}
-+
-+static int pic2_beta_loader_init(pi)
-+struct pic2_info *pi;
-+{
-+ pi->ynow = 0;
-+ pi->next_line = pic2_beta_expand_line;
-+ pic2_seek_file(pi, pi->block_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
-+ return (0);
-+}
-+
-+/*
-+ * Make a picture from the expanded data.
-+ */
-+static void pic2_make_xvpic(pi, xp, rp, gp, bp)
-+struct pic2_info *pi;
-+byte **xp, *rp, *gp, *bp;
-+{
-+ int line, i;
-+ pixel *linep, opaque;
-+ short colbits;
-+ byte colmask;
-+
-+ if (*xp == NULL)
-+ *xp = pic2_new((size_t) pi->x_max * pi->y_max * 3, "pic2_make_xvpic"); // GRR POSSIBLE OVERFLOW / FIXME
-+
-+ if (pi->block->flag & 1)
-+ opaque = pi->block->opaque;
-+ else
-+ opaque = 0xffffffff;
-+
-+ colbits = pi->header->depth / 3;
-+ colmask = 0xff >> (8 - colbits);
-+
-+ line = pic2_load_block(pi);
-+ for (;;) {
-+ int pic_idx;
-+
-+ line = pic2_next_line(pi, &linep);
-+ if (line < 0)
-+ break;
-+ pic_idx = ((line + pi->block->y_offset) * pi->x_max
-+ + pi->block->x_offset) * 3;
-+
-+ for (i = 0; i < pi->block->x_wid; i++, linep++) {
-+ byte r, g, b;
-+
-+ if (*linep != opaque) {
-+ r = ((*linep >> (colbits * 2)) & colmask);
-+ r = pic2_convert_color_bits(r, colbits, 8);
-+ g = ((*linep >> colbits ) & colmask);
-+ g = pic2_convert_color_bits(g, colbits, 8);
-+ b = ( *linep & colmask);
-+ b = pic2_convert_color_bits(b, colbits, 8);
-+ (*xp)[pic_idx++] = r;
-+ (*xp)[pic_idx++] = g;
-+ (*xp)[pic_idx++] = b;
-+ } else
-+ pic_idx += 3;
-+
-+ WaitCursor();
-+ }
-+ }
-+}
-+
-+/*
-+ * This function splits a multiblock PIC2 file into several pages.
-+ */
-+static void pic2_make_pagefile(pi, pagebname, pnum)
-+struct pic2_info *pi;
-+char *pagebname;
-+int pnum;
-+{
-+ struct pic2_info pic2;
-+ FILE *fp;
-+ char pagefile[64], *buf;
-+ size_t imagesize;
-+
-+ sprintf(pagefile, "%s%d", pagebname, pnum);
-+ if ((fp = fopen(pagefile, "wb")) == NULL)
-+ pic2_error(pi, PIC2_WRITE);
-+
-+ xvbcopy((char *) pi, (char *) &pic2, sizeof(struct pic2_info));
-+ pic2.fp = fp;
-+
-+ pic2_write_header1(&pic2);
-+
-+ pic2_write_block_header(&pic2);
-+
-+ imagesize = pi->block->size - PIC2_BLOCK_HEADER_SIZE;
-+ buf = (char *) pic2_malloc(imagesize, "pic2_make_pagefile");
-+
-+ pic2_seek_file(pi, pi->block_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
-+ if (fread(buf, (size_t) 1, imagesize, pi->fp) < imagesize) {
-+ free(buf);
-+ pic2_file_error(pi, PIC2_CORRUPT);
-+ }
-+ if (fwrite(buf, (size_t) 1, imagesize, fp) < imagesize) {
-+ free(buf);
-+ pic2_error(pi, PIC2_WRITE);
-+ }
-+ free(buf);
-+
-+ pic2.next_pos = pic2_tell_file(&pic2);
-+ pic2_write_header2(&pic2);
-+
-+ fclose(fp);
-+}
-+
-+/* The main routine to save a PIC2 file. */
-+static int WritePIC2(fp, pic0, ptype, w, h, rmap, gmap, bmap, numcols,
-+ colorstyle, fname, type, depth, x_offset, y_offset,
-+ append, comment)
-+FILE *fp;
-+byte *pic0;
-+int ptype, w, h;
-+byte *rmap, *gmap, *bmap;
-+int numcols, colorstyle;
-+char *fname;
-+int type, depth;
-+int x_offset, y_offset;
-+int append;
-+char *comment;
-+{
-+ struct pic2_info pic2;
-+ char creator[256], title[256], saver[256];
-+ int e;
-+
-+ if (DEBUG)
-+ fputs("WritePIC2:\n", stderr);
-+
-+ pic2_init_info(&pic2);
-+ pic2.fp = fp;
-+ pic2.writing_grey = (colorstyle == F_GREYSCALE);
-+
-+ if ((e = setjmp(pic2.jmp)) != 0){
-+ /* When an error occurs while writing, comes here. */
-+ pic2_free_buffer(&pic2);
-+ pic2_cleanup_pic2_info(&pic2, 1);
-+ SetCursors(-1);
-+ if (DEBUG)
-+ fputs("\n", stderr);
-+ return (-1);
-+ }
-+ sprintf(creator, "XV Version %s", VERSTR);
-+ pic2_strncpy(title, comment, 30);
-+ sprintf(saver, "XV %s/UNIX/Bradley", VERSTR);
-+
-+ if (!append) {
-+ pic2_setup_pic2_info(&pic2, creator, fname, title, saver,
-+ 0, depth, 1, 1, w, h, comment);
-+ pic2_write_header1(&pic2);
-+ } else {
-+ pic2_read_header(&pic2);
-+ pic2_append(&pic2);
-+ free(pic2.comment);
-+ pic2_setup_pic2_info(&pic2, creator, fname, title, saver,
-+ 0, depth, 1, 1, w, h, comment);
-+ }
-+
-+ pic2_write_data(&pic2, pic0, ptype, x_offset, y_offset, w, h,
-+ rmap, gmap, bmap, type, depth);
-+ pic2_write_header2(&pic2);
-+
-+ pic2_cleanup_pic2_info(&pic2, 1);
-+ SetCursors(-1);
-+ if (DEBUG)
-+ fputs("\n", stderr);
-+ return (0);
-+}
-+
-+/*
-+ * This function initializes pic2_info.
-+ */
-+static void pic2_setup_pic2_info(pi, name, fname, title, saver, no, depth,
-+ x_aspect, y_aspect, x_max, y_max, comment)
-+struct pic2_info *pi;
-+char *name, *fname, *title, *saver;
-+int no, depth;
-+int x_aspect, y_aspect;
-+int x_max, y_max;
-+char *comment;
-+{
-+ char basename[256], *suffix;
-+
-+ pi->mode = PIC2_WRITE_MODE;
-+
-+ /* set magic number */
-+ strncpy(pi->header->magic, pic2_id, 4);
-+
-+ /* set creator's name */
-+ pic2_strncpy(pi->header->name, (char *) name, 18);
-+
-+ /* set title and subtitle */
-+ pic2_strncpy(pi->header->title, (char *) title, 30);
-+ strcpy(basename, BaseName(fname));
-+ suffix = (char *) rindex(basename, '.');
-+ if (suffix) {
-+ suffix++;
-+ if (!strcmp(suffix, "p2") || !strcmp(suffix, "P2"))
-+ *(suffix - 1) = '\0';
-+ }
-+ pic2_strncpy(pi->header->subtitle, basename, 8);
-+
-+ /* set saver */
-+ pic2_strncpy(pi->header->saver, saver, 30);
-+
-+ /* set picture number */
-+ pi->header->no = no;
-+
-+ /* import comment */
-+ pi->comment = comment;
-+
-+ /* set some picture's info */
-+ pi->header->depth = depth;
-+ pi->header->x_aspect = x_aspect;
-+ pi->header->y_aspect = y_aspect;
-+ pi->header->x_max = x_max;
-+ pi->header->y_max = y_max;
-+
-+ /* set some gaps */
-+ pi->header->crlf0[0] = pi->header->crlf1[0] = pi->header->crlf2[0] = 0x0d;
-+ pi->header->crlf0[1] = pi->header->crlf1[1] = pi->header->crlf2[1] = 0x0a;
-+
-+ pi->header->eof[0] = 0x1a;
-+ pi->header->reserve0[0] = 0;
-+ pi->header->reserve1 = 0;
-+
-+ /* set palettes */
-+ if (pi->n_pal > 0)
-+ pi->header->flag = 1;
-+ else
-+ pi->header->flag = 0;
-+}
-+
-+/*
-+ * This function appends to existing pic2 file.
-+ */
-+static void pic2_append(pi)
-+struct pic2_info *pi;
-+{
-+ int block;
-+
-+ block = pic2_find_block(pi);
-+ while (block > 0)
-+ block = pic2_next_block(pi);
-+
-+ if (block != 0)
-+ pic2_error(pi, PIC2_APPEND);
-+}
-+
-+/*
-+ * These functions write the PIC2 header.
-+ * pic2_write_header1:
-+ * write palette data and comment.
-+ * pic2_write_header2:
-+ * write the terminate block and rest header.
-+ * pic2_write_block_header:
-+ * write the block header.
-+ */
-+static void pic2_write_header1(pi)
-+struct pic2_info *pi;
-+{
-+ char *comment;
-+
-+ /* seek to block start position */
-+ pic2_seek_file(pi, PIC2_HEADER_SIZE, SEEK_SET);
-+
-+ /* write palette */
-+ if (pi->n_pal > 0) {
-+ pic2_write_char(pi, pi->pal_bits);
-+ pic2_write_short(pi, pi->n_pal);
-+ pic2_write_file(pi, pi->pal, (size_t) (pi->n_pal * 3));
-+ }
-+ /* save comment */
-+ comment = pi->comment;
-+ if (pi->comment != NULL) {
-+ for (comment = pi->comment; *comment; comment++) {
-+ if (*comment == '\n') {
-+ pic2_write_char(pi, '\r');
-+ pic2_write_char(pi, '\n');
-+ } else if (*comment != '\r')
-+ pic2_write_char(pi, *comment);
-+ }
-+ pic2_write_char(pi, 0);
-+ }
-+ /* set the next block position */
-+ pi->next_pos = pic2_tell_file(pi);
-+ pi->header->size = pi->next_pos;
-+}
-+
-+static void pic2_write_header2(pi)
-+struct pic2_info *pi;
-+{
-+ pic2_seek_file(pi, pi->next_pos, SEEK_SET);
-+
-+ /* write terminate block */
-+ pic2_write_long(pi, 0);
-+ pic2_write_long(pi, 0);
-+
-+ /* set some header information */
-+ if (pi->header->x_max < pi->x_max)
-+ pi->header->x_max = pi->x_max;
-+ if (pi->header->y_max < pi->x_max)
-+ pi->header->y_max = pi->y_max;
-+
-+ pi->header->time = time(NULL);
-+ pic2_seek_file(pi, 0, SEEK_SET);
-+
-+ /* write header image */
-+ pic2_write_file(pi, pi->header->magic, 4);
-+ pic2_write_file(pi, pi->header->name, 18);
-+ pic2_write_file(pi, pi->header->subtitle, 8);
-+ pic2_write_file(pi, pi->header->crlf0, 2);
-+ pic2_write_file(pi, pi->header->title, 30);
-+ pic2_write_file(pi, pi->header->crlf1, 2);
-+ pic2_write_file(pi, pi->header->saver, 30);
-+ pic2_write_file(pi, pi->header->crlf2, 2);
-+ pic2_write_file(pi, pi->header->eof, 1);
-+ pic2_write_file(pi, pi->header->reserve0, 1);
-+ pic2_write_short(pi, pi->header->flag);
-+ pic2_write_short(pi, pi->header->no);
-+ pic2_write_long(pi, pi->header->time);
-+ pic2_write_long(pi, pi->header->size);
-+ pic2_write_short(pi, pi->header->depth);
-+ pic2_write_short(pi, pi->header->x_aspect);
-+ pic2_write_short(pi, pi->header->y_aspect);
-+ pic2_write_short(pi, pi->header->x_max);
-+ pic2_write_short(pi, pi->header->y_max);
-+ pic2_write_long(pi, pi->header->reserve1);
-+}
-+
-+static void pic2_write_block_header(pi)
-+struct pic2_info *pi;
-+{
-+ pic2_write_file(pi, pi->block->id, 4);
-+ pic2_write_long(pi, pi->block->size);
-+ pic2_write_short(pi, pi->block->flag);
-+ pic2_write_short(pi, pi->block->x_wid);
-+ pic2_write_short(pi, pi->block->y_wid);
-+ pic2_write_short(pi, pi->block->x_offset);
-+ pic2_write_short(pi, pi->block->y_offset);
-+ pic2_write_long(pi, pi->block->opaque);
-+ pic2_write_long(pi, pi->block->reserve);
-+}
-+
-+/*
-+ * These functions implement the arithmetic-format compressor.
-+ */
-+#define pic2_arith_write_one_bit(pi) (pi->bs.bits++)
-+
-+static void pic2_arith_write_zero_bit(pi)
-+struct pic2_info *pi;
-+{
-+ if (pi->bs.zero)
-+ pic2_write_bits(pi, 0, 1);
-+
-+ while (pi->bs.bits--)
-+ pic2_write_bits(pi, 1, 1);
-+
-+ pi->bs.bits = 0;
-+ pi->bs.zero = 1;
-+}
-+
-+static void pic2_arith_flush_bit_buf(pi)
-+struct pic2_info *pi;
-+{
-+ int i;
-+
-+ for (i = 0; i < 16; i++) {
-+ if (pi->cc & 0x8000)
-+ pic2_arith_write_one_bit(pi);
-+ else
-+ pic2_arith_write_zero_bit(pi);
-+ pi->cc <<= 1;
-+ }
-+ pic2_arith_write_zero_bit(pi);
-+ pic2_flush_bits(pi);
-+}
-+
-+static void pic2_arith_carry_bit(pi)
-+struct pic2_info *pi;
-+{
-+ pic2_write_bits(pi, 1, 1);
-+
-+ if (pi->bs.bits == 0) {
-+ pi->bs.zero = 0;
-+ } else {
-+ while (--pi->bs.bits)
-+ pic2_write_bits(pi, 0, 1);
-+ pi->bs.zero = 1;
-+ }
-+}
-+
-+static void pic2_arith_encode_bit(pi, n, c)
-+struct pic2_info *pi;
-+int n, c;
-+{
-+ int pp;
-+ long *c_sum, *c_0_sum;
-+
-+ c_sum = (long *) pi->mulu_tab;
-+ c_0_sum = c_sum + PIC2_ARITH_CONTEXT + 1;
-+
-+ if (pi->dd == 0) {
-+ c_sum[c]++;
-+ if (n == 0)
-+ c_0_sum[c]++;
-+ return;
-+ }
-+ pp = pi->mulu_tab[(pi->aa & 0x7f00) / 2 + c];
-+ if (n != 0) {
-+ pi->cc = pi->cc + pp;
-+ if (pi->cc > 0xffff) {
-+ pic2_arith_carry_bit(pi);
-+ pi->cc = pi->cc & 0xffff;
-+ }
-+ pi->aa = pi->aa - pp;
-+ while (pi->aa < 0x8000) {
-+ if (pi->cc & 0x8000)
-+ pic2_arith_write_one_bit(pi);
-+ else
-+ pic2_arith_write_zero_bit(pi);
-+ pi->cc = (pi->cc * 2) & 0xffff;
-+ pi->aa = pi->aa * 2;
-+ }
-+ } else {
-+ pi->aa = pp;
-+
-+ while (pi->aa < 0x8000) {
-+ if (pi->cc & 0x8000)
-+ pic2_arith_write_one_bit(pi);
-+ else
-+ pic2_arith_write_zero_bit(pi);
-+ pi->cc = (pi->cc * 2) & 0xffff;
-+ pi->aa = pi->aa * 2;
-+ }
-+ }
-+}
-+
-+static void pic2_arith_encode_nbyte(pi, n, c, max)
-+struct pic2_info *pi;
-+int n, c, max;
-+{
-+ short i;
-+
-+ for (i = 0; i < n; i++) {
-+ pic2_arith_encode_bit(pi, 0, c + i);
-+ }
-+ if (n < max)
-+ pic2_arith_encode_bit(pi, 1, c + n);
-+}
-+
-+static void pic2_arith_encode_nn(pi, n, c)
-+struct pic2_info *pi;
-+int n, c;
-+{
-+ if (n < 1) {
-+ pic2_arith_encode_bit(pi, 1, c);
-+ } else if (n < 1 + 2) {
-+ pic2_arith_encode_bit(pi, 0, c);
-+ pic2_arith_encode_bit(pi, 1, c + 1);
-+ n -= 1;
-+ pic2_arith_encode_bit(pi, n & 1, c + 8);
-+ } else if (n < 1 + 2 + 4) {
-+ pic2_arith_encode_bit(pi, 0, c);
-+ pic2_arith_encode_bit(pi, 0, c + 1);
-+ pic2_arith_encode_bit(pi, 1, c + 2);
-+ n -= 1 + 2;
-+ pic2_arith_encode_bit(pi, n & 1, c + 8);
-+ pic2_arith_encode_bit(pi, n & 2, c + 9);
-+ } else if (n < 1 + 2 + 4 + 8) {
-+ pic2_arith_encode_bit(pi, 0, c);
-+ pic2_arith_encode_bit(pi, 0, c + 1);
-+ pic2_arith_encode_bit(pi, 0, c + 2);
-+ pic2_arith_encode_bit(pi, 1, c + 3);
-+ n -= 1 + 2 + 4;
-+ pic2_arith_encode_bit(pi, n & 1, c + 8);
-+ pic2_arith_encode_bit(pi, n & 2, c + 9);
-+ pic2_arith_encode_bit(pi, n & 4, c + 10);
-+ } else if (n < 1 + 2 + 4 + 8 + 16) {
-+ pic2_arith_encode_bit(pi, 0, c);
-+ pic2_arith_encode_bit(pi, 0, c + 1);
-+ pic2_arith_encode_bit(pi, 0, c + 2);
-+ pic2_arith_encode_bit(pi, 0, c + 3);
-+ pic2_arith_encode_bit(pi, 1, c + 4);
-+ n -= 1 + 2 + 4 + 8;
-+ pic2_arith_encode_bit(pi, n & 1, c + 8);
-+ pic2_arith_encode_bit(pi, n & 2, c + 9);
-+ pic2_arith_encode_bit(pi, n & 4, c + 10);
-+ pic2_arith_encode_bit(pi, n & 8, c + 11);
-+ } else if (n < 1 + 2 + 4 + 8 + 16 + 32) {
-+ pic2_arith_encode_bit(pi, 0, c);
-+ pic2_arith_encode_bit(pi, 0, c + 1);
-+ pic2_arith_encode_bit(pi, 0, c + 2);
-+ pic2_arith_encode_bit(pi, 0, c + 3);
-+ pic2_arith_encode_bit(pi, 0, c + 4);
-+ pic2_arith_encode_bit(pi, 1, c + 5);
-+ n -= 1 + 2 + 4 + 8 + 16;
-+ pic2_arith_encode_bit(pi, n & 1, c + 8);
-+ pic2_arith_encode_bit(pi, n & 2, c + 9);
-+ pic2_arith_encode_bit(pi, n & 4, c + 10);
-+ pic2_arith_encode_bit(pi, n & 8, c + 11);
-+ pic2_arith_encode_bit(pi, n & 16, c + 12);
-+ } else if (n < 1 + 2 + 4 + 8 + 16 + 32 + 64) {
-+ pic2_arith_encode_bit(pi, 0, c);
-+ pic2_arith_encode_bit(pi, 0, c + 1);
-+ pic2_arith_encode_bit(pi, 0, c + 2);
-+ pic2_arith_encode_bit(pi, 0, c + 3);
-+ pic2_arith_encode_bit(pi, 0, c + 4);
-+ pic2_arith_encode_bit(pi, 0, c + 5);
-+ pic2_arith_encode_bit(pi, 1, c + 6);
-+ n -= 1 + 2 + 4 + 8 + 16 + 32;
-+ pic2_arith_encode_bit(pi, n & 1, c + 8);
-+ pic2_arith_encode_bit(pi, n & 2, c + 9);
-+ pic2_arith_encode_bit(pi, n & 4, c + 10);
-+ pic2_arith_encode_bit(pi, n & 8, c + 11);
-+ pic2_arith_encode_bit(pi, n & 16, c + 12);
-+ pic2_arith_encode_bit(pi, n & 32, c + 13);
-+ } else if (n < 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128) {
-+ pic2_arith_encode_bit(pi, 0, c);
-+ pic2_arith_encode_bit(pi, 0, c + 1);
-+ pic2_arith_encode_bit(pi, 0, c + 2);
-+ pic2_arith_encode_bit(pi, 0, c + 3);
-+ pic2_arith_encode_bit(pi, 0, c + 4);
-+ pic2_arith_encode_bit(pi, 0, c + 5);
-+ pic2_arith_encode_bit(pi, 0, c + 6);
-+ pic2_arith_encode_bit(pi, 1, c + 7);
-+ n -= 1 + 2 + 4 + 8 + 16 + 32 + 64;
-+ pic2_arith_encode_bit(pi, n & 1, c + 8);
-+ pic2_arith_encode_bit(pi, n & 2, c + 9);
-+ pic2_arith_encode_bit(pi, n & 4, c + 10);
-+ pic2_arith_encode_bit(pi, n & 8, c + 11);
-+ pic2_arith_encode_bit(pi, n & 16, c + 12);
-+ pic2_arith_encode_bit(pi, n & 32, c + 13);
-+ pic2_arith_encode_bit(pi, n & 64, c + 14);
-+ } else {
-+ pic2_arith_encode_bit(pi, 0, c);
-+ pic2_arith_encode_bit(pi, 0, c + 1);
-+ pic2_arith_encode_bit(pi, 0, c + 2);
-+ pic2_arith_encode_bit(pi, 0, c + 3);
-+ pic2_arith_encode_bit(pi, 0, c + 4);
-+ pic2_arith_encode_bit(pi, 0, c + 5);
-+ pic2_arith_encode_bit(pi, 0, c + 6);
-+ pic2_arith_encode_bit(pi, 0, c + 7);
-+ }
-+}
-+
-+static void pic2_arith_press_chain(pi, x)
-+struct pic2_info *pi;
-+int x;
-+{
-+ int b, d;
-+ pixel c;
-+
-+ b = -(pi->flag_now[x]);
-+ c = pi->vram_now[x];
-+ d = 0;
-+
-+ if (b < 0)
-+ b = 0;
-+
-+ if (pi->flag_next[x] == 1 && pi->vram_next[x] == c) {
-+ d = 1;
-+ pi->flag_next[x] = -1;
-+ } else if (pi->flag_next[x - 1] == 1 && pi->vram_next[x - 1] == c) {
-+ d = 2;
-+ pi->flag_next[x - 1] = -2;
-+ } else if (pi->flag_next[x + 1] == 1 && pi->vram_next[x + 1] == c) {
-+ d = 3;
-+ pi->flag_next[x + 1] = -3;
-+ } else if (pi->flag_next[x - 2] == 1 && pi->vram_next[x - 2] == c) {
-+ d = 4;
-+ pi->flag_next[x - 2] = -4;
-+ } else if (pi->flag_next[x + 2] == 1 && pi->vram_next[x + 2] == c) {
-+ if ((pi->flag_now[x + 2] != 0 && pi->vram_now[x + 2] == c)
-+ || (pi->flag_now[x + 1] != 0 && pi->vram_now[x + 1] == c)
-+ || (pi->flag_now[x + 3] != 0 && pi->vram_now[x + 3] == c)) {
-+ pic2_arith_encode_nbyte(pi, 0, 80 + 6 * b, 5);
-+ return;
-+ }
-+ d = 5;
-+ pi->flag_next[x + 2] = -5;
-+ }
-+ pic2_arith_encode_nbyte(pi, d, 80 + 6 * b, 5);
-+}
-+
-+static void pic2_arith_put_number(pi, xn, xa, xb)
-+struct pic2_info *pi;
-+int xn, xa, xb;
-+{
-+ short n;
-+ byte maxcol;
-+
-+ maxcol = 0xff >> (8 - pi->header->depth / 3);
-+
-+ if (xa > ((int) maxcol >> 1)) {
-+ if (xb > xa)
-+ n = (xb - xa) * 2 - 1;
-+ else if (xa - ((int) maxcol - xa) > xb)
-+ n = maxcol - xb;
-+ else
-+ n = (xa - xb) * 2;
-+ } else {
-+ if (xb <= xa)
-+ n = (xa - xb) * 2;
-+ else if (2 * xa < xb)
-+ n = xb;
-+ else
-+ n = (xb - xa) * 2 - 1;
-+ }
-+ pic2_arith_encode_nn(pi, n, xn);
-+}
-+
-+static void pic2_arith_write_color(pi, x)
-+struct pic2_info *pi;
-+int x;
-+{
-+ pixel c1, c2, cc;
-+ short g0, r0, b0, r, g, b;
-+ int i, j;
-+ unsigned short k;
-+ pixel *p, *pp;
-+ short colbits;
-+ pixel rmask, gmask, bmask;
-+ byte maxcol;
-+
-+ colbits = pi->header->depth / 3;
-+ rmask = (0xff >> (8 - colbits)) << (colbits * 2);
-+ gmask = (0xff >> (8 - colbits)) << colbits;
-+ bmask = (0xff >> (8 - colbits));
-+ maxcol = (byte) bmask;
-+
-+ cc = pi->vram_now[x];
-+ c1 = pi->vram_prev[x];
-+ k = ((c1 >> ((colbits - 3) * 3)) & 0x1c0)
-+ | ((c1 >> ((colbits - 3) * 2)) & 0x038)
-+ | ((c1 >> (colbits - 3) ) & 0x007);
-+ if (colbits == 5)
-+ k = pic2_exchange_rg(k, 3);
-+
-+ p = pi->cache[k];
-+ for (i = 0; i < (PIC2_ARITH_CACHE - 1); i++) {
-+ if (cc == *p++)
-+ break;
-+ }
-+ if (i == (PIC2_ARITH_CACHE - 1)) {
-+ pp = p - 1;
-+ for (j = i; j > 0; j--) {
-+ *--p = *--pp;
-+ }
-+ pi->cache[k][0] = cc;
-+ pic2_arith_encode_bit(pi, 1, pi->cache_hit_c);
-+ pi->cache_hit_c = 16;
-+
-+ c2 = pi->vram_now[x - 1];
-+ r = ((c1 & rmask) + (c2 & rmask)) >> (colbits * 2 + 1);
-+ g = ((c1 & gmask) + (c2 & gmask)) >> (colbits + 1);
-+ b = ((c1 & bmask) + (c2 & bmask)) >> ( 1);
-+
-+ r0 = (cc >> (colbits * 2)) & maxcol;
-+ g0 = (cc >> colbits ) & maxcol;
-+ b0 = cc & maxcol;
-+
-+ r = r + g0 - g;
-+ if (r < 0)
-+ r = 0;
-+ else if (r > (short) maxcol)
-+ r = maxcol;
-+
-+ b = b + g0 - g;
-+ if (b < 0)
-+ b = 0;
-+ else if (b > (short) maxcol)
-+ b = maxcol;
-+
-+ pic2_arith_put_number(pi, 32, g, g0);
-+ pic2_arith_put_number(pi, 48, r, r0);
-+ pic2_arith_put_number(pi, 64, b, b0);
-+ } else {
-+ *--p = pi->cache[k][i / 2];
-+ pi->cache[k][i / 2] = pi->cache[k][0];
-+ pi->cache[k][0] = cc;
-+
-+ pic2_arith_encode_bit(pi, 0, pi->cache_hit_c);
-+ pi->cache_hit_c = 15;
-+ pic2_arith_encode_nn(pi, i, 17);
-+ }
-+}
-+
-+static void pic2_arith_press_line2(pi)
-+struct pic2_info *pi;
-+{
-+ int x, xw, ymax;
-+ pixel cc;
-+
-+ xw = pi->block->x_wid;
-+ ymax = pi->block->y_wid -1;
-+ cc = pi->vram_now[xw - 1]; /* last color */
-+ pi->vram_next[-1] = cc;
-+
-+ /* mark change point */
-+ for (x = 0; x < xw; x++)
-+ if (cc != pi->vram_next[x]) {
-+ pi->flag_next[x] = 1;
-+ cc = pi->vram_next[x];
-+ } else
-+ pi->flag_next[x] = 0;
-+
-+ for (x = 0; x < xw; x++) {
-+ if (pi->flag_now[x] == 1) { /* change point */
-+ pi->flag2_now [x + 1]++;
-+ pi->flag2_now [x + 2]++;
-+ pi->flag2_next [x - 1]++;
-+ pi->flag2_next [x ]++;
-+ pi->flag2_next [x + 1]++;
-+ pi->flag2_next2[x - 1]++;
-+ pi->flag2_next2[x ]++;
-+ pi->flag2_next2[x + 1]++;
-+
-+ /* write change point */
-+ pic2_arith_encode_bit(pi, 1, pi->flag2_now[x]);
-+
-+ /* write color */
-+ pic2_arith_write_color(pi, x);
-+
-+ /* if not last line, write chain */
-+ if (pi->ynow - 1 < ymax)
-+ pic2_arith_press_chain(pi, x);
-+ } else if (pi->flag_now[x] == 0) /* not on chain */
-+ /* write change point */
-+ pic2_arith_encode_bit(pi, 0, pi->flag2_now[x]);
-+ else /* on chain */
-+ /* if not on last line, write next chain */
-+ if (pi->ynow - 1 < ymax)
-+ pic2_arith_press_chain(pi, x);
-+ }
-+}
-+
-+static int pic2_arith_press_line(pi, line)
-+struct pic2_info *pi;
-+pixel **line;
-+{
-+ int i, xw, ymax;
-+ long *c_sum, *c_0_sum;
-+
-+ xw = pi->block->x_wid;
-+ ymax = pi->block->y_wid -1;
-+ c_sum = (long *) pi->mulu_tab;
-+ c_0_sum = c_sum + PIC2_ARITH_CONTEXT +1;
-+
-+ pic2_handle_para(pi, 0);
-+
-+ xvbzero((char *) pi->flag2_next2 - 4,
-+ (8 + xw) * sizeof(pi->flag2_next2[0]));
-+
-+ if (pi->ynow == 0) { /* first line */
-+ int x;
-+ pixel cc = 0;
-+
-+ if (pi->dd != 0) { /* compress pass */
-+ unsigned short c_tab[PIC2_ARITH_CONTEXT];
-+
-+ for (i = 0; i < PIC2_ARITH_CONTEXT; i++) {
-+ unsigned long a, b;
-+ a = c_0_sum[i];
-+ b = c_sum[i];
-+ while (a > 32767) {
-+ a /= 2;
-+ b /= 2;
-+ }
-+ if (a == b)
-+ c_tab[i] = 0xffff; /* b==0 here, too */
-+ else
-+ c_tab[i] = (65536 * a) / b; /* a < b, so less 65536 */
-+ }
-+ for (i = 0; i < 16384; i++) {
-+ pi->mulu_tab[i] = (long) (i / 128 + 128) * (int) c_tab[i & 127] / 256;
-+ if (pi->mulu_tab[i] == 0)
-+ pi->mulu_tab[i] = 1; /* 0 is wrong */
-+ }
-+ for (i = 0; i < PIC2_ARITH_CONTEXT; i++)
-+ pic2_write_short(pi, c_tab[i]);
-+
-+ xvbzero((char *) pi->vram_now, xw * sizeof(pi->vram_now[0]));
-+ } else { /* statistical pass */
-+ xvbzero((char *) c_0_sum, PIC2_ARITH_CONTEXT * sizeof(c_0_sum[0]));
-+ xvbzero((char *) c_sum, PIC2_ARITH_CONTEXT * sizeof(c_sum[0]));
-+ }
-+
-+ /* initialize flags */
-+ xvbzero((char *) pi->cache, 8 * 8 * 8 * sizeof(pi->cache[0]));
-+ xvbzero((char *) pi->cache_pos, 8 * 8 * 8 * sizeof(pi->cache_pos[0]));
-+
-+ xvbzero((char *) pi->flag2_next - 4,
-+ (8 + xw) * sizeof(pi->flag2_next[0]));
-+ xvbzero((char *) pi->flag2_next2 - 4,
-+ (8 + xw) * sizeof(pi->flag2_next2[0]));
-+
-+ pi->vram_next[-1] = cc;
-+ for (x = 0; x < xw; x++)
-+ if (cc != pi->vram_next[x]) {
-+ pi->flag_next[x] = 1;
-+ cc = pi->vram_next[x];
-+ } else
-+ pi->flag_next[x] = 0;
-+
-+ pi->aa = 0xffff;
-+ cc = 0;
-+ pi->cache_hit_c = 16;
-+ } else /* after second line */
-+ pic2_arith_press_line2(pi);
-+
-+ if (pi->ynow == ymax) {
-+ pi->ynow++;
-+ pic2_handle_para(pi, 1);
-+ pic2_handle_para(pi, 0);
-+ pic2_arith_press_line2(pi);
-+ }
-+ /* line buffer for next data */
-+ if (line != NULL)
-+ *line = pi->vram_prev;
-+
-+ pi->ynow++;
-+
-+ if (pi->ynow - 1 < ymax) {
-+ pic2_handle_para(pi, 1);
-+ return (pi->ynow);
-+ } else { /* end */
-+ if (pi->dd == 0) { /* statistical pass */
-+ pi->dd = 1;
-+ pi->ynow = 0;
-+ pic2_handle_para(pi, 1);
-+ return (0);
-+ } else {
-+ pic2_handle_para(pi, 1);
-+ pic2_arith_flush_bit_buf(pi);
-+ return (-2); /* end */
-+ }
-+ }
-+}
-+
-+static int pic2_arith_saver_init(pi, line)
-+struct pic2_info *pi;
-+pixel **line;
-+{
-+ pi->ynow = 0;
-+
-+ /* check the color depth */
-+ if (pi->header->depth % 3)
-+ pic2_error(pi, PIC2_DEPTH);
-+
-+ /* set next line function */
-+ pi->next_line = pic2_arith_press_line;
-+
-+ if (line != NULL)
-+ *line = pi->vram_next + 4;
-+
-+ pic2_seek_file(pi, pi->next_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
-+
-+ /* clear bit field marker */
-+ pi->bs.rest = 0;
-+ pi->bs.cur = 0;
-+ pi->bs.zero = 0;
-+ pi->bs.bits = 0;
-+
-+ return (0);
-+}
-+
-+/*
-+ * These functions are fast pic2 format compressor.
-+ */
-+static void pic2_fast_write_length(pi, n)
-+struct pic2_info *pi;
-+int n;
-+{
-+ int a, b;
-+ static const unsigned short len_data[8][2] = {
-+ {1, 0},
-+ {1, 0},
-+ {3, 4},
-+ {3, 5},
-+ {5, 24},
-+ {5, 25},
-+ {5, 26},
-+ {5, 27},
-+ };
-+
-+ n++;
-+ if (n < 8)
-+ pic2_write_bits(pi, len_data[n][1], len_data[n][0]);
-+ else {
-+ a = 0;
-+ b = 2;
-+ while (n > b - 1) {
-+ a = a + 1;
-+ b = b * 2;
-+ }
-+ pic2_write_bits(pi, 0xfffffffe, a + 1);
-+ if (a > 0)
-+ pic2_write_bits(pi, n - b / 2, a);
-+ }
-+}
-+
-+static void pic2_fast_press_chain(pi, x)
-+struct pic2_info *pi;
-+int x;
-+{
-+ int ymax;
-+ pixel cc;
-+
-+ ymax = pi->block->y_wid -1;
-+ cc = pi->vram_now[x];
-+
-+ if (pi->ynow - 1 == ymax) {
-+ pic2_write_bits(pi, 0, 1);
-+ return;
-+ }
-+ if (pi->flag_next[x] == 1 && pi->vram_next[x] == cc) {
-+ pi->flag_next[x] = -1;
-+ pic2_write_bits(pi, 3, 2);
-+ } else if (pi->flag_next[x - 1] == 1 && pi->vram_next[x - 1] == cc) {
-+ pi->flag_next[x - 1] = -1;
-+ pic2_write_bits(pi, 11, 4);
-+ } else if (pi->flag_next[x + 1] == 1 && pi->vram_next[x + 1] == cc) {
-+ pi->flag_next[x + 1] = -1;
-+ pic2_write_bits(pi, 9, 4);
-+ } else if (pi->flag_next[x - 2] == 1 && pi->vram_next[x - 2] == cc) {
-+ pi->flag_next[x - 2] = -1;
-+ pic2_write_bits(pi, 10, 4);
-+ } else if ((pi->flag_next[x + 2] == 1 && pi->vram_next[x + 2] == cc)
-+ && !(pi->flag_now[x + 2] != 0 && pi->vram_now[x + 2] == cc)) {
-+ pi->flag_next[x + 2] = -1;
-+ pic2_write_bits(pi, 8, 4);
-+ } else
-+ pic2_write_bits(pi, 0, 1);
-+}
-+
-+static void pic2_fast_press_chain2(pi, x)
-+struct pic2_info *pi;
-+int x;
-+{
-+ int ymax;
-+ pixel cc;
-+ char *chain_buff;
-+
-+ ymax = pi->block->y_wid -1;
-+ chain_buff = (char *) pi->mulu_tab;
-+ cc = pi->vram_now[x];
-+
-+ if (pi->ynow - 1 == ymax) {
-+ chain_buff[pi->cc++] = 0;
-+ return;
-+ }
-+ if (pi->flag_next[x] == 1 && pi->vram_next[x] == cc) {
-+ pi->flag_next[x] = -1;
-+ chain_buff[pi->cc++] = 1;
-+ } else if (pi->flag_next[x - 1] == 1 && pi->vram_next[x - 1] == cc) {
-+ pi->flag_next[x - 1] = -1;
-+ chain_buff[pi->cc++] = 2;
-+ } else if (pi->flag_next[x + 1] == 1 && pi->vram_next[x + 1] == cc) {
-+ pi->flag_next[x + 1] = -1;
-+ chain_buff[pi->cc++] = 3;
-+ } else if (pi->flag_next[x - 2] == 1 && pi->vram_next[x - 2] == cc) {
-+ pi->flag_next[x - 2] = -1;
-+ chain_buff[pi->cc++] = 4;
-+ } else if ((pi->flag_next[x + 2] == 1 && pi->vram_next[x + 2] == cc)
-+ && !(pi->flag_now[x + 2] != 0 && pi->vram_now[x + 2] == cc)) {
-+ pi->flag_next[x + 2] = -1;
-+ chain_buff[pi->cc++] = 5;
-+ } else
-+ chain_buff[pi->cc++] = 0;
-+}
-+
-+static void pic2_fast_flush_chain(pi)
-+struct pic2_info *pi;
-+{
-+ int i;
-+ char *chain_buf;
-+
-+ chain_buf = (char *) pi->mulu_tab;
-+ for (i = 0; i < pi->cc; i++){
-+ switch (chain_buf[i]) {
-+ case 0:
-+ pic2_write_bits(pi, 0, 1);
-+ break;
-+ case 1:
-+ pic2_write_bits(pi, 3, 2);
-+ break;
-+ case 2:
-+ pic2_write_bits(pi, 11, 4);
-+ break;
-+ case 3:
-+ pic2_write_bits(pi, 9, 4);
-+ break;
-+ case 4:
-+ pic2_write_bits(pi, 10, 4);
-+ break;
-+ case 5:
-+ pic2_write_bits(pi, 8, 4);
-+ break;
-+ }
-+ }
-+ pi->cc = 0;
-+}
-+
-+static void pic2_fast_write_color(pi, x)
-+struct pic2_info *pi;
-+int x;
-+{
-+ pixel cc, bc;
-+ unsigned short j, k, m;
-+ short depth, colbits;
-+ pixel (*cache)[PIC2_FAST_CACHE];
-+
-+ depth = pi->header->depth;
-+ colbits = depth / 3;
-+ cache = (pixel (*)[PIC2_FAST_CACHE]) pi->cache;
-+
-+ bc = pi->vram_now[x - 1];
-+ bc = pic2_exchange_rg(bc, colbits);
-+ k = pic2_shift_bits(bc, 8 - depth);
-+ cc = pi->vram_now[x];
-+ m = pi->cache_pos[k];
-+
-+ for (j = 0; j < PIC2_FAST_CACHE; j++)
-+ if (cache[k][(m + j) & (PIC2_FAST_CACHE - 1)] == cc)
-+ break;
-+
-+ if (j == PIC2_FAST_CACHE) {
-+ m = (m - 1) & (PIC2_FAST_CACHE - 1);
-+ pi->cache_pos[k] = m;
-+ cache[k][m] = cc;
-+
-+ cc = pic2_exchange_rg(cc, colbits);
-+ pic2_write_bits(pi, 0, 1);
-+ pic2_write_bits(pi, cc, depth);
-+ } else {
-+ pic2_write_bits(pi, 1, 1);
-+ pic2_write_bits(pi, j, 6);
-+ }
-+}
-+
-+static void pic2_fast_press_line2(pi)
-+struct pic2_info *pi;
-+{
-+ int x, xw;
-+ pixel cc;
-+
-+ xw = pi->block->x_wid;
-+ cc = pi->vram_now[xw - 1]; /* last color */
-+ pi->vram_next[-1] = cc;
-+
-+ /* mark change point */
-+ for (x = 0; x < xw; x++)
-+ if (cc != pi->vram_next[x]) {
-+ pi->flag_next[x] = 1;
-+ cc = pi->vram_next[x];
-+ } else
-+ pi->flag_next[x] = 0;
-+
-+ for (x = 0; x < xw; x++)
-+ if (pi->flag_now[x] == 1) { /* change point */
-+ if (pi->aa >= 1023)
-+ pi->aa++;
-+ pic2_fast_write_length(pi, pi->aa);
-+ pic2_fast_flush_chain(pi);
-+ pi->aa = 0;
-+ pic2_fast_write_color(pi, x);
-+ pic2_fast_press_chain(pi, x);
-+ } else if (pi->flag_now[x] == 0) {
-+ pi->aa++;
-+ } else {
-+ pic2_fast_press_chain2(pi, x);
-+ if (pi->cc == 1023) {
-+ pic2_fast_write_length(pi, 1023);
-+ pic2_fast_flush_chain(pi);
-+ pi->aa = 0;
-+ }
-+ }
-+}
-+
-+static int pic2_fast_press_line(pi, line)
-+struct pic2_info *pi;
-+pixel **line;
-+{
-+ int xw, ymax;
-+
-+ xw = pi->block->x_wid;
-+ ymax = pi->block->y_wid -1;
-+
-+ pic2_handle_para(pi, 0);
-+
-+ if (pi->ynow == 0) { /* first line */
-+ int x;
-+ pixel cc = 0;
-+
-+ /* initialize flags */
-+ xvbzero((char *) pi->cache, 256 * sizeof(pi->cache[0]));
-+ xvbzero((char *) pi->cache_pos,
-+ PIC2_FAST_CACHE * sizeof(pi->cache_pos[0]));
-+
-+ /* mark change point */
-+ pi->vram_next[-1] = cc;
-+ for (x = 0; x < xw; x++)
-+ if (cc != pi->vram_next[x]) {
-+ pi->flag_next[x] = 1;
-+ cc = pi->vram_next[x];
-+ } else
-+ pi->flag_next[x] = 0;
-+
-+ pi->cc = 0;
-+ pi->aa = 0;
-+ } else /* after second line */
-+ pic2_fast_press_line2(pi);
-+
-+ if (pi->ynow == ymax) {
-+ pi->ynow++;
-+ pic2_handle_para(pi, 1);
-+ pic2_handle_para(pi, 0);
-+ pic2_fast_press_line2(pi);
-+ }
-+ /* line buffer for next data */
-+ if (line != NULL)
-+ *line = pi->vram_prev;
-+
-+ pi->ynow++;
-+
-+ if (pi->ynow - 1 < ymax) {
-+ pic2_handle_para(pi, 1);
-+ return (pi->ynow);
-+ } else { /* end */
-+ pic2_handle_para(pi, 1);
-+ if (pi->aa >= 1023)
-+ pi->aa++;
-+ pic2_fast_write_length(pi, pi->aa);
-+ pic2_fast_flush_chain(pi);
-+ return (-2); /* end */
-+ }
-+}
-+
-+static int pic2_fast_saver_init(pi, line)
-+struct pic2_info *pi;
-+pixel **line;
-+{
-+ pi->ynow = 0;
-+
-+ /* check the color depth */
-+ if (pi->header->depth % 3)
-+ pic2_error(pi, PIC2_DEPTH);
-+
-+ /* set next line function */
-+ pi->next_line = pic2_fast_press_line;
-+ if (line != NULL)
-+ *line = pi->vram_next + 4;
-+
-+ pic2_seek_file(pi, pi->next_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
-+
-+ /* clear bit field marker */
-+ pi->bs.rest = 0;
-+ pi->bs.cur = 0;
-+
-+ return (0);
-+}
-+
-+/*
-+ * These functions are beta pic2 format compressor.
-+ */
-+static int pic2_beta_press_line(pi, line)
-+struct pic2_info *pi;
-+pixel **line;
-+{
-+ int i, xw, ymax;
-+ byte *p;
-+ pixel *pc;
-+ short depth, pixbyte, colbits;
-+
-+ depth = pi->header->depth;
-+ pixbyte = depth / 8 + ((depth % 8) > 0);
-+ colbits = depth / 3;
-+
-+ xw = pi->block->x_wid;
-+ ymax = pi->block->y_wid - 1;
-+
-+ pc = pi->vram_now;
-+ p = (byte *) pi->vram_prev;
-+ if (pixbyte == 3) {
-+ for (i = 0; i < xw; i++, pc++) {
-+ *p++ = *pc >> 16;
-+ *p++ = *pc >> 8;
-+ *p++ = *pc;
-+ }
-+ pic2_write_file(pi, pi->vram_prev, (size_t) (xw * 3));
-+ } else if (pixbyte == 2) {
-+ if (strncmp(pi->block->id, "P2BM", 4) == 0)
-+ for (i = 0; i < xw; i++, pc++) {
-+ if (colbits == 5) {
-+ *pc = pic2_exchange_rg(*pc, colbits);
-+ *pc <<= 1;
-+ }
-+ *p++ = *pc >> 8;
-+ *p++ = *pc;
-+ }
-+ else
-+ for (i = 0; i < xw; i++, pc++) {
-+ if (colbits == 5) {
-+ *pc = pic2_exchange_rg(*pc, colbits);
-+ *pc <<= 1;
-+ }
-+ *p++ = *pc;
-+ *p++ = *pc >> 8;
-+ }
-+ pic2_write_file(pi, pi->vram_prev, (size_t) (xw * 2));
-+ } else {
-+ for (i = 0; i < xw; i++, pc++)
-+ *p++ = *pc;
-+ pic2_write_file(pi, pi->vram_prev, (size_t) xw);
-+ }
-+ if (line != NULL)
-+ *line = pi->vram_now;
-+
-+ pi->ynow++;
-+ if (pi->ynow > ymax)
-+ return (-2);
-+ return (pi->ynow);
-+}
-+
-+static int pic2_beta_saver_init(pi, line)
-+struct pic2_info *pi;
-+pixel **line;
-+{
-+ pi->ynow = 0;
-+
-+ *line = pi->vram_now;
-+ pi->next_line = pic2_beta_press_line;
-+ pic2_seek_file(pi, pi->next_pos + PIC2_BLOCK_HEADER_SIZE, SEEK_SET);
-+ return (0);
-+}
-+
-+/*
-+ * This function saves compressed data.
-+ */
-+static void pic2_write_data(pi, data, ptype, x_offset, y_offset, w, h,
-+ rmap, gmap, bmap, type, depth)
-+struct pic2_info *pi;
-+byte *data;
-+int ptype;
-+int x_offset, y_offset;
-+int w, h;
-+byte *rmap, *gmap, *bmap;
-+int type, depth;
-+{
-+ int i, line;
-+ pixel *linep;
-+ short colbits;
-+
-+ colbits = pi->header->depth / 3;
-+
-+ line = pic2_save_block(pi, &linep, x_offset, y_offset, w, h,
-+ form_tab[type].id, 0xffffffff);
-+ while (line >= 0) {
-+ byte r, g, b;
-+ int pic_idx;
-+
-+ pic_idx = line * w * ((ptype == PIC24) ? 3 : 1);
-+
-+ for (i = 0; i < w; i++) {
-+ if (ptype != PIC24) {
-+ r = rmap[data[pic_idx]];
-+ g = gmap[data[pic_idx]];
-+ b = bmap[data[pic_idx]];
-+ pic_idx++;
-+ } else {
-+ r = data[pic_idx++];
-+ g = data[pic_idx++];
-+ b = data[pic_idx++];
-+ }
-+ if (pi->writing_grey)
-+ r = g = b = MONO(r, g, b);
-+
-+ r = pic2_convert_color_bits(r, 8, colbits);
-+ g = pic2_convert_color_bits(g, 8, colbits);
-+ b = pic2_convert_color_bits(b, 8, colbits);
-+
-+ linep[i] = ((pixel) r << (colbits * 2))
-+ | ((pixel) g << colbits )
-+ | ((pixel) b );
-+ }
-+ line = pic2_next_line(pi, &linep);
-+ WaitCursor();
-+ }
-+}
-+
-+/*
-+ * This function compresses/extracts one line buffer.
-+ */
-+static int pic2_next_line(pi, line)
-+struct pic2_info *pi;
-+pixel **line;
-+{
-+ int res;
-+
-+ res = pi->next_line(pi, line);
-+ if (res == -2) {
-+ if (pi->mode == PIC2_WRITE_MODE) {
-+ long new_pos;
-+
-+ new_pos = pic2_tell_file(pi);
-+ pi->block->size = new_pos - pi->next_pos;
-+ pic2_seek_file(pi, pi->next_pos, SEEK_SET);
-+ pic2_write_block_header(pi);
-+ pi->next_pos = new_pos;
-+ if (DEBUG)
-+ pic2_show_pic2_info(pi);
-+ }
-+ pic2_free_buffer(pi);
-+ }
-+ return (res);
-+}
-+
-+/*
-+ * These functions find the pic2 image block.
-+ * pic2_next_block:
-+ * moves the file pointer to the next image block.
-+ * pic2_find_block:
-+ * finds the first image block and moves the file pointer there.
-+ */
-+static int pic2_next_block(pi)
-+struct pic2_info *pi;
-+{
-+ int i;
-+
-+ if (pi->mode != PIC2_READ_MODE)
-+ return (-1);
-+
-+ /* go to block for read */
-+ pic2_seek_file(pi, pi->next_pos, SEEK_SET);
-+
-+ /* read the head of block header */
-+ pic2_read_block_header1(pi);
-+
-+ /* end block ? */
-+ if (pi->block->id[0] == 0)
-+ return (0);
-+
-+ /* set current block */
-+ pi->block_pos = pi->next_pos;
-+
-+ /* set next block */
-+ pi->next_pos += pi->block->size;
-+
-+ /* check block id */
-+ for (i = 0; i < n_form_tab; i++) {
-+ if (xvbcmp(pi->block->id, form_tab[i].id, (size_t) 4) == 0)
-+ break;
-+ }
-+ if (i == n_form_tab)
-+ return (2);
-+
-+ /* read the rest of block header */
-+ pic2_read_block_header2(pi);
-+
-+ if (pi->block->x_offset + pi->block->x_wid > pi->x_max)
-+ pi->x_max = pi->block->x_offset + pi->block->x_wid;
-+
-+ if (pi->block->y_offset + pi->block->y_wid > pi->y_max)
-+ pi->y_max = pi->block->y_offset + pi->block->y_wid;
-+
-+ if (DEBUG)
-+ pic2_show_pic2_info(pi);
-+ return (1);
-+}
-+
-+static int pic2_find_block(pi)
-+struct pic2_info *pi;
-+{
-+ if (pi->mode != PIC2_READ_MODE)
-+ return (-1);
-+
-+ pi->next_pos = pi->header->size;
-+ return (pic2_next_block(pi));
-+}
-+
-+/*
-+ * These functions load/save the pic2 image block.
-+ * pic2_load_block:
-+ * initializes loader information with current block information.
-+ * pic2_save_block:
-+ * initializes saver information.
-+ */
-+static int pic2_load_block(pi)
-+struct pic2_info *pi;
-+{
-+ int i;
-+
-+ for (i = 0; i < n_form_tab; i++) {
-+ if (xvbcmp(pi->block->id, form_tab[i].id, (size_t) 4) == 0)
-+ break;
-+ }
-+ if (i == n_form_tab)
-+ return (2);
-+
-+ pic2_alloc_buffer(pi);
-+ return (form_tab[i].loader_init(pi));
-+}
-+
-+static int pic2_save_block(pi, line, x, y, xw, yw, id, opaque)
-+struct pic2_info *pi;
-+pixel **line;
-+int x, y, xw, yw;
-+char *id;
-+pixel opaque;
-+{
-+ int i;
-+
-+ for (i = 0; i < n_form_tab; i++) {
-+ if (xvbcmp(id, form_tab[i].id, (size_t) 4) == 0)
-+ break;
-+ }
-+ if (i == n_form_tab)
-+ return (2);
-+
-+ strncpy(pi->block->id, id, 4);
-+ pi->block->x_wid = xw;
-+ pi->block->y_wid = yw;
-+ pi->block->x_offset = x;
-+ pi->block->y_offset = y;
-+ pi->block->reserve = 0;
-+
-+ if (x < 0)
-+ x = 0;
-+ if (y < 0)
-+ y = 0;
-+ if (x + xw > pi->x_max)
-+ pi->x_max = x + xw;
-+ if (y + yw > pi->y_max)
-+ pi->y_max = y + yw;
-+
-+ if (opaque != 0xffffffff) {
-+ pi->block->flag = 1;
-+ pi->block->opaque = opaque;
-+ } else {
-+ pi->block->flag = 0;
-+ pi->block->opaque = 0;
-+ }
-+ pic2_alloc_buffer(pi);
-+
-+ return (form_tab[i].saver_init(pi, line));
-+}
-+
-+/*
-+ * These functions set/get palettes.
-+ * pic2_read_palette:
-+ * copy the palettes from pic2_info to PICINFO.
-+ * pic2_write_palette:
-+ * copy the palettes from PICINFO to pic2_info.
-+ */
-+#ifndef PIC2_IGNORE_UNUSED_FUNCTIONS
-+static void pic2_read_palette(pi, r, g, b)
-+struct pic2_info *pi;
-+byte *r, *g, *b;
-+{
-+ int i;
-+
-+ if (pi->n_pal > 256)
-+ pi->n_pal = 256;
-+
-+ if (pi->pal_bits > 8)
-+ pi->pal_bits = 8;
-+
-+ for (i = 0; i < pi->n_pal; i++) {
-+ *r++ =pic2_convert_color_bits(pi->pal[i][0] >> (8 - pi->pal_bits),
-+ pi->pal_bits, 8);
-+ *g++ =pic2_convert_color_bits(pi->pal[i][1] >> (8 - pi->pal_bits),
-+ pi->pal_bits, 8);
-+ *b++ =pic2_convert_color_bits(pi->pal[i][2] >> (8 - pi->pal_bits),
-+ pi->pal_bits, 8);
-+ }
-+}
-+
-+static void pic2_write_palette(pi, n_pal, pal_bits, r, g, b)
-+struct pic2_info *pi;
-+int n_pal, pal_bits;
-+byte *r, *g, *b;
-+{
-+ int i;
-+
-+ if (n_pal > 256)
-+ pi->n_pal = 256;
-+ else
-+ pi->n_pal = n_pal;
-+
-+ if (pal_bits > 8)
-+ pi->pal_bits = 8;
-+ else
-+ pi->pal_bits = pal_bits;
-+
-+ for (i = 0; i < n_pal; i++) {
-+ pi->pal[i][0] = pic2_convert_color_bits(*r++, 8, pal_bits)
-+ << (8 - pal_bits);
-+ pi->pal[i][1] = pic2_convert_color_bits(*g++, 8, pal_bits)
-+ << (8 - pal_bits);
-+ pi->pal[i][2] = pic2_convert_color_bits(*b++, 8, pal_bits)
-+ << (8 - pal_bits);
-+ }
-+}
-+#endif /* PIC2_IGNORE_UNUSED_FUNCTIONS */
-+
-+/*
-+ * These functions handle color bits.
-+ * pic2_convert_color_bits:
-+ * converts color bits.
-+ * pic2_pad_color_bits:
-+ * pads color bits.
-+ * pic2_reduce_color_bits:
-+ * reduces color bits.
-+ * pic2_exchange_rg:
-+ * exchanges red and green values.
-+ */
-+static byte pic2_convert_color_bits(c, from, to)
-+int c, from, to;
-+{
-+ if (from == to)
-+ return ((byte) c);
-+ else if (from < to)
-+ return (pic2_pad_color_bits(c, from, to));
-+ else
-+ return (pic2_reduce_color_bits(c, from, to));
-+}
-+
-+static byte pic2_pad_color_bits(c, from, to)
-+int c, from, to;
-+{
-+ byte p = 0;
-+
-+ do {
-+ to -= from;
-+ p |= pic2_shift_bits(c, to);
-+ } while (to >= 0);
-+ return (p);
-+}
-+
-+static byte pic2_reduce_color_bits(c, from, to)
-+int c, from, to;
-+{
-+ return ((byte) (c >> (from - to)));
-+}
-+
-+static pixel pic2_exchange_rg(p, colbits)
-+pixel p;
-+int colbits;
-+{
-+ pixel rmask, gmask, bmask;
-+
-+ rmask = (0xff >> (8 - colbits)) << (colbits * 2);
-+ gmask = (0xff >> (8 - colbits)) << colbits;
-+ bmask = (0xff >> (8 - colbits));
-+
-+ p = ((p << colbits) & rmask)
-+ | ((p >> colbits) & gmask)
-+ | ( p & bmask);
-+ return (p);
-+}
-+
-+/*
-+ * This function handles work memory buffer.
-+ */
-+static void pic2_handle_para(pi, mode)
-+struct pic2_info *pi;
-+int mode;
-+{
-+ static pixel *vram_prev, *vram_now, *vram_next;
-+ static short *flag_now, *flag_next;
-+ static short *flag2_now, *flag2_next, *flag2_next2;
-+
-+ switch (mode) {
-+ case 0:
-+ vram_prev = pi->vram_prev;
-+ vram_now = pi->vram_now;
-+ vram_next = pi->vram_next;
-+ flag_now = pi->flag_now;
-+ flag_next = pi->flag_next;
-+ flag2_now = pi->flag2_now;
-+ flag2_next = pi->flag2_next;
-+ flag2_next2 = pi->flag2_next2;
-+ pi->vram_prev += 4;
-+ pi->vram_now += 4;
-+ pi->vram_next += 4;
-+ pi->flag_now += 4;
-+ pi->flag_next += 4;
-+ pi->flag2_now += 4;
-+ pi->flag2_next += 4;
-+ pi->flag2_next2 += 4;
-+ break;
-+ case 1:
-+ pi->vram_prev = vram_now;
-+ pi->vram_now = vram_next;
-+ pi->vram_next = vram_prev;
-+ pi->flag_now = flag_next;
-+ pi->flag_next = flag_now;
-+ pi->flag2_now = flag2_next;
-+ pi->flag2_next = flag2_next2;
-+ pi->flag2_next2 = flag2_now;
-+ break;
-+ }
-+}
-+
-+/*
-+ * These functions alloc/free work memory.
-+ * pic2_alloc_buffer:
-+ * alloc work memory buffer.
-+ * pic2_free_buffer:
-+ * free work memory buffer.
-+ */
-+static int pic2_alloc_buffer(pi)
-+struct pic2_info *pi;
-+{
-+ int wid;
-+ byte *p;
-+
-+ if (pi->buf != NULL)
-+ return (-1);
-+
-+ wid = pi->block->x_wid;
-+
-+ p = pi->buf = (byte *) pic2_new((wid + 8) * sizeof(pixel) * 3 // GRR POSSIBLE OVERFLOW / FIXME
-+ + sizeof(pi->cache[0]) * 8 * 8 * 8
-+ + sizeof(pi->cache_pos[0]) * 8 * 8 * 8
-+ + sizeof(pi->mulu_tab[0]) * 16384
-+ + sizeof(pi->flag_now[0]) * ((wid+8) * 5),
-+ "pic2_alloc_buffer");
-+
-+ pi->vram_prev = (pixel *) p;
-+ p += (wid + 8) * sizeof(pixel);
-+ pi->vram_now = (pixel *) p;
-+ p += (wid + 8) * sizeof(pixel);
-+ pi->vram_next = (pixel *) p;
-+ p += (wid + 8) * sizeof(pixel);
-+ pi->cache = (pixel (*)[PIC2_ARITH_CACHE]) p;
-+ p += sizeof(pi->cache[0]) * 8 * 8 * 8;
-+ pi->cache_pos = (unsigned short *) p;
-+ p += sizeof(pi->cache_pos[0]) * 8 * 8 * 8;
-+ pi->mulu_tab = (unsigned short *) p;
-+ p += sizeof(pi->mulu_tab[0]) * 16384;
-+ pi->flag_now = (short *) p;
-+ p += sizeof(pi->flag_now[0]) * (wid + 8);
-+ pi->flag_next = (short *) p;
-+ p += sizeof(pi->flag_next[0]) * (wid + 8);
-+ pi->flag2_now = (short *) p;
-+ p += sizeof(pi->flag2_now[0]) * (wid + 8);
-+ pi->flag2_next = (short *) p;
-+ p += sizeof(pi->flag2_next[0]) * (wid + 8);
-+ pi->flag2_next2 = (short *) p;
-+ p += sizeof(pi->flag2_next2[0]) * (wid + 8);
-+ return (0);
-+}
-+
-+static void pic2_free_buffer(pi)
-+struct pic2_info *pi;
-+{
-+ free(pi->buf);
-+ pi->buf = NULL;
-+}
-+
-+/*
-+ * These functions handle the file pointer.
-+ * pic2_seek_file:
-+ * moves the file pointer.
-+ * pic2_tell_file:
-+ * tells the location of the file pointer.
-+ */
-+static long pic2_seek_file(pi, offset, whence)
-+struct pic2_info *pi;
-+long offset;
-+int whence;
-+{
-+ long n;
-+
-+ n = fseek(pi->fp, offset, whence);
-+ if (n < 0)
-+ pic2_file_error(pi, PIC2_CORRUPT);
-+
-+ return (n);
-+}
-+
-+static long pic2_tell_file(pi)
-+struct pic2_info *pi;
-+{
-+ return (ftell(pi->fp));
-+}
-+
-+/*
-+ * These functions handle file.
-+ * pic2_read_file:
-+ * reads data from the file.
-+ * pic2_read_long:
-+ * reads long word data from the file and converts to internal expression.
-+ * pic2_read_short:
-+ * reads word data from the file and converts to internal expression.
-+ * pic2_read_char:
-+ * reads byte data from the file.
-+ * pic2_write_file:
-+ * writes data to the file.
-+ * pic2_write_long:
-+ * converts long word data to common expression and writes to the file.
-+ * pic2_write_short:
-+ * converts word data to common expression and writes to the file.
-+ * pic2_write_char:
-+ * writes byte data to the file.
-+ */
-+static int pic2_read_file(pi, buf, size)
-+struct pic2_info *pi;
-+void *buf;
-+size_t size;
-+{
-+ if (fread(buf, (size_t) 1, size, pi->fp) < size)
-+ pic2_file_error(pi, PIC2_CORRUPT);
-+ return (0);
-+}
-+
-+static long pic2_read_long(pi)
-+struct pic2_info *pi;
-+{
-+ byte buf[4];
-+
-+ if (fread(buf, (size_t) 4, (size_t) 1, pi->fp) < 1)
-+ pic2_file_error(pi, PIC2_CORRUPT);
-+ return (pic2_cextolong(buf));
-+}
-+
-+static short pic2_read_short(pi)
-+struct pic2_info *pi;
-+{
-+ byte buf[2];
-+
-+ if (fread(buf, (size_t) 2, (size_t) 1, pi->fp) < 1)
-+ pic2_file_error(pi, PIC2_CORRUPT);
-+ return (pic2_cextoshort(buf));
-+}
-+
-+static char pic2_read_char(pi)
-+struct pic2_info *pi;
-+{
-+ int c;
-+
-+ if ((c = fgetc(pi->fp)) == EOF)
-+ pic2_file_error(pi, PIC2_CORRUPT);
-+ return ((char) c);
-+}
-+
-+static int pic2_write_file(pi, buf, size)
-+struct pic2_info *pi;
-+void *buf;
-+size_t size;
-+{
-+ if (fwrite(buf, (size_t) 1, size, pi->fp) < size)
-+ pic2_error(pi, PIC2_WRITE);
-+ return (0);
-+}
-+
-+static int pic2_write_long(pi, n)
-+struct pic2_info *pi;
-+long n;
-+{
-+ byte buf[4];
-+
-+ pic2_longtocex(buf, n);
-+ if (fwrite(buf, (size_t) 4, (size_t) 1, pi->fp) < 1)
-+ pic2_error(pi, PIC2_WRITE);
-+ return (0);
-+}
-+
-+static int pic2_write_short(pi, n)
-+struct pic2_info *pi;
-+int n;
-+{
-+ byte buf[2];
-+
-+ pic2_shorttocex(buf, n);
-+ if (fwrite(buf, (size_t) 2, (size_t) 1, pi->fp) < 1)
-+ pic2_error(pi, PIC2_WRITE);
-+ return (0);
-+}
-+
-+static int pic2_write_char(pi, c)
-+struct pic2_info *pi;
-+int c;
-+{
-+ if (fputc(c, pi->fp) == EOF)
-+ pic2_error(pi, PIC2_WRITE);
-+ return (0);
-+}
-+
-+/*
-+ * These functions access the bit stream.
-+ * pic2_read_bits:
-+ * reads the specified bits from the file.
-+ * pic2_write_bits:
-+ * writes the specified bits to the file.
-+ * pic2_flush_bits:
-+ * flushes bit buffer to the file.
-+ */
-+static unsigned long pic2_read_bits(pi, bits)
-+struct pic2_info *pi;
-+int bits;
-+{
-+ unsigned long r = 0;
-+
-+ while (bits > 0) {
-+ while (pi->bs.rest > 0 && bits > 0) {
-+ r = (r << 1) | (pi->bs.cur & 0x80 ? 1 : 0);
-+ pi->bs.cur <<= 1;
-+ pi->bs.rest--;
-+ bits--;
-+ }
-+ if (bits > 0) {
-+ int c;
-+ if ((c = fgetc(pi->fp)) == EOF)
-+ pic2_file_error(pi, PIC2_CORRUPT);
-+ pi->bs.cur = (byte) c;
-+ pi->bs.rest = 8;
-+ }
-+ }
-+ return r;
-+}
-+
-+static void pic2_write_bits(pi, dat, bits)
-+struct pic2_info *pi;
-+unsigned long dat;
-+int bits;
-+{
-+ unsigned long dat_mask = 1 << (bits - 1);
-+
-+ while (bits > 0) {
-+ while (pi->bs.rest < 8 && bits > 0) {
-+ pi->bs.cur <<= 1;
-+ if (dat & dat_mask)
-+ pi->bs.cur |= 1;
-+ pi->bs.rest++;
-+ bits--;
-+ dat_mask >>= 1;
-+ }
-+ if (pi->bs.rest >= 8) {
-+ if ((fputc((int) pi->bs.cur, pi->fp)) == EOF)
-+ pic2_error(pi, PIC2_WRITE);
-+ pi->bs.cur = 0;
-+ pi->bs.rest = 0;
-+ }
-+ }
-+}
-+
-+static void pic2_flush_bits(pi)
-+struct pic2_info *pi;
-+{
-+ if (pi->bs.rest < 8) {
-+ pi->bs.cur <<= 8 - pi->bs.rest;
-+ if (fputc((int) pi->bs.cur, pi->fp) == EOF)
-+ pic2_error(pi, PIC2_WRITE);
-+ pi->bs.cur = 0;
-+ pi->bs.rest = 0;
-+ }
-+}
-+
-+/*
-+ * These functions initialize or clean up structures.
-+ * pic2_init_info:
-+ * initializes a pic2_info structure.
-+ * pic2_cleanup_pic2_info:
-+ * cleans up a pic_info structure.
-+ * pic2_cleanup_pinfo:
-+ * cleans up a PICINFO structure.
-+ */
-+static void pic2_init_info(pi)
-+struct pic2_info *pi;
-+{
-+ xvbzero((char *) pi, sizeof(struct pic2_info));
-+ pi->header = pic2_new(sizeof(struct pic2_header), "pic2_init_info#1");
-+ pi->block = pic2_new(sizeof(struct pic2_block), "pic2_init_info#2");
-+}
-+
-+static void pic2_cleanup_pic2_info(pi, writing)
-+struct pic2_info *pi;
-+int writing;
-+{
-+ if (!writing && pi->fp)
-+ fclose(pi->fp);
-+ if (pi->header)
-+ free(pi->header);
-+ if (pi->block)
-+ free(pi->block);
-+ pi->fp = NULL;
-+ pi->header = NULL;
-+ pi->block = NULL;
-+ pi->comment = NULL;
-+}
-+
-+static void pic2_cleanup_pinfo(pinfo)
-+PICINFO *pinfo;
-+{
-+ if (pinfo->pic){
-+ free(pinfo->pic);
-+ pinfo->pic = NULL;
-+ }
-+ if (pinfo->comment){
-+ free(pinfo->comment);
-+ pinfo->comment = NULL;
-+ }
-+}
-+
-+/*
-+ * Error Handlers.
-+ * pic2_memory_error:
-+ * shows an error message and terminates.
-+ * pic2_error:
-+ * shows a non-file error message and jumps to the entry for errors.
-+ * pic2_file_error:
-+ * shows a file error message and jumps to the entry for errors.
-+ */
-+static void pic2_memory_error(scm, fn)
-+char *scm, *fn;
-+{
-+ char buf[128];
-+ sprintf(buf, "%s: can't allocate memory. (%s)", scm, fn);
-+ FatalError(buf);
-+}
-+
-+static void pic2_error(pi, mn)
-+struct pic2_info *pi;
-+int mn;
-+{
-+ SetISTR(ISTR_WARNING, "%s", pic2_msgs[mn]);
-+ longjmp(pi->jmp, 1);
-+}
-+
-+static void pic2_file_error(pi, mn)
-+ struct pic2_info *pi;
-+ int mn;
-+{
-+ if (feof(pi->fp))
-+ SetISTR(ISTR_WARNING, "%s (end of file)", pic2_msgs[mn]);
-+ else
-+ SetISTR(ISTR_WARNING, "%s (%s)", pic2_msgs[mn], ERRSTR(errno));
-+ longjmp(pi->jmp, 1);
-+}
-+
-+static void pic2_show_pic2_info(pi)
-+ struct pic2_info *pi;
-+{
-+ fprintf(stderr, "file size: %ld.\n", pi->fsize);
-+ fprintf(stderr, "full image size: %dx%d\n", pi->x_max, pi->y_max);
-+ fprintf(stderr, "number of palettes: %d\n", pi->n_pal);
-+ fprintf(stderr, "depth of palettes: %d\n", pi->pal_bits);
-+ fprintf(stderr, "current block position: %ld\n", pi->block_pos);
-+ fprintf(stderr, "next block position: %ld\n\n", pi->next_pos);
-+
-+ fprintf(stderr, "header flag: %x\n", pi->header->flag);
-+ fprintf(stderr, "header size: %ld\n", pi->header->size);
-+ fprintf(stderr, "x_aspect: %d, y_aspect: %d\n",
-+ pi->header->x_aspect, pi->header->y_aspect);
-+ fprintf(stderr, "number of color bits: %d\n\n", pi->header->depth);
-+
-+ fprintf(stderr, "image block id: %s\n", pi->block->id);
-+ fprintf(stderr, "image block size: %ld\n", pi->block->size);
-+ fprintf(stderr, "block flag: %x\n", pi->block->flag);
-+
-+ fprintf(stderr, "block image size: %dx%d\n",
-+ pi->block->x_wid, pi->block->y_wid);
-+ fprintf(stderr, "x_offset: %d\n", pi->block->x_offset);
-+ fprintf(stderr, "y_offset: %d\n", pi->block->y_offset);
-+ fprintf(stderr, "opaque color: %lx\n\n", pi->block->opaque);
-+}
-+
-+/*
-+ * This function is similar to strncpy.
-+ * But this pads with whitespace after the null character.
-+ */
-+static char *pic2_strncpy(dest, src, n)
-+char *dest, *src;
-+size_t n;
-+{
-+ char *r;
-+
-+ r = dest;
-+ while (n--)
-+ if ((src != NULL) && (*src != '\r') && (*src != '\n') && *src)
-+ *dest++ = *src++;
-+ else
-+ *dest++ = ' ';
-+ return (r);
-+}
-+
-+/*
-+ * These functions create a memory block.
-+ */
-+static void *pic2_malloc(size, fn)
-+size_t size;
-+char *fn;
-+{
-+ void *p;
-+
-+ p = (void *) malloc(size);
-+ if (p == NULL)
-+ pic2_memory_error("malloc", fn);
-+ return (p);
-+}
-+
-+static void *pic2_new(size, fn)
-+size_t size;
-+char *fn;
-+{
-+ void *p;
-+
-+ p = (void *) pic2_malloc(size, fn);
-+ xvbzero((char *) p, size);
-+ return (p);
-+}
-+
-+
-+
-+
-+/**** Stuff for PIC2Dialog box ****/
-+
-+#define TWIDE 320
-+#define THIGH 178
-+#define T_NBUTTS 2
-+#define T_BOK 0
-+#define T_BCANC 1
-+#define BUTTH 24
-+
-+static void drawTD PARM((int,int,int,int));
-+static void clickTD PARM((int,int));
-+static void doCmd PARM((int));
-+static void writePIC2 PARM((void));
-+
-+/* local variables */
-+static FILE *fp;
-+static char *filename;
-+static int colorType;
-+static int append;
-+static int x_offset;
-+static int y_offset;
-+static BUTT tbut[T_NBUTTS];
-+static RBUTT *typeRB;
-+static RBUTT *depthRB;
-+
-+
-+
-+/***************************************************/
-+void CreatePIC2W()
-+{
-+ int y;
-+
-+ pic2W = CreateWindow("xv pic2", "XVpic2", NULL,
-+ TWIDE, THIGH, infofg, infobg, 0);
-+ if (!pic2W)
-+ FatalError("can't create pic2 window!");
-+
-+ XSelectInput(theDisp, pic2W,
-+ ExposureMask | ButtonPressMask | KeyPressMask);
-+
-+ BTCreate(&tbut[T_BOK], pic2W, TWIDE-140-1, THIGH-10-BUTTH-1, 60, BUTTH,
-+ "Ok", infofg, infobg, hicol, locol);
-+
-+ BTCreate(&tbut[T_BCANC], pic2W, TWIDE-70-1, THIGH-10-BUTTH-1, 60, BUTTH,
-+ "Cancel", infofg, infobg, hicol, locol);
-+
-+ y = 55;
-+ typeRB = RBCreate(NULL, pic2W, 36, y, "P2SS",
-+ infofg, infobg,hicol,locol);
-+ RBCreate(typeRB, pic2W, 36, y+18, "P2SF",
-+ infofg, infobg,hicol,locol);
-+ RBCreate(typeRB, pic2W, 36, y+36, "P2BM",
-+ infofg, infobg, hicol, locol);
-+ RBCreate(typeRB, pic2W, 36, y+54, "P2BI",
-+ infofg, infobg, hicol, locol);
-+
-+ depthRB = RBCreate(NULL, pic2W, TWIDE/2-16, y, " 3bit",
-+ infofg, infobg,hicol,locol);
-+ RBCreate(depthRB, pic2W, TWIDE/2-16, y+18, " 6bit",
-+ infofg, infobg,hicol,locol);
-+ RBCreate(depthRB, pic2W, TWIDE/2-16, y+36, " 9bit",
-+ infofg, infobg, hicol, locol);
-+ RBCreate(depthRB, pic2W, TWIDE/2-16, y+54, "12bit",
-+ infofg, infobg, hicol, locol);
-+ RBCreate(depthRB, pic2W, TWIDE/4*3-16, y, "15bit",
-+ infofg, infobg, hicol, locol);
-+ RBCreate(depthRB, pic2W, TWIDE/4*3-16, y+18, "18bit",
-+ infofg, infobg, hicol, locol);
-+ RBCreate(depthRB, pic2W, TWIDE/4*3-16, y+36, "21bit",
-+ infofg, infobg, hicol, locol);
-+ RBCreate(depthRB, pic2W, TWIDE/4*3-16, y+54, "24bit",
-+ infofg, infobg, hicol, locol);
-+
-+ XMapSubwindows(theDisp, pic2W);
-+}
-+
-+
-+/***************************************************/
-+void PIC2Dialog(vis)
-+int vis;
-+{
-+ if (vis) {
-+ CenterMapWindow(pic2W, tbut[T_BOK].x + tbut[T_BOK].w/2,
-+ tbut[T_BOK].y + tbut[T_BOK].h/2, TWIDE, THIGH);
-+ }
-+ else XUnmapWindow(theDisp, pic2W);
-+ pic2Up = vis;
-+}
-+
-+
-+/***************************************************/
-+int PIC2CheckEvent(xev)
-+XEvent *xev;
-+{
-+ /* check event to see if it's for one of our subwindows. If it is,
-+ deal accordingly and return '1'. Otherwise, return '0'. */
-+
-+ int rv;
-+ rv = 1;
-+
-+ if (!pic2Up)
-+ return (0);
-+
-+ if (xev->type == Expose) {
-+ int x,y,w,h;
-+ XExposeEvent *e = (XExposeEvent *) xev;
-+ x = e->x; y = e->y; w = e->width; h = e->height;
-+
-+ if (e->window == pic2W) drawTD(x, y, w, h);
-+ else rv = 0;
-+ }
-+
-+ else if (xev->type == ButtonPress) {
-+ XButtonEvent *e = (XButtonEvent *) xev;
-+ int x,y;
-+ x = e->x; y = e->y;
-+
-+ if (e->button == Button1) {
-+ if (e->window == pic2W) clickTD(x,y);
-+ else rv = 0;
-+ } /* button1 */
-+ else rv = 0;
-+ } /* button press */
-+
-+
-+ else if (xev->type == KeyPress) {
-+ XKeyEvent *e = (XKeyEvent *) xev;
-+ char buf[128]; KeySym ks; XComposeStatus status;
-+ int stlen;
-+
-+ stlen = XLookupString(e,buf,128,&ks,&status);
-+ buf[stlen] = '\0';
-+
-+ if (e->window == pic2W) {
-+ if (stlen) {
-+ if (buf[0] == '\r' || buf[0] == '\n') { /* enter */
-+ FakeButtonPress(&tbut[T_BOK]);
-+ }
-+ else if (buf[0] == '\033') { /* ESC */
-+ FakeButtonPress(&tbut[T_BCANC]);
-+ }
-+ }
-+ }
-+ else rv = 0;
-+ }
-+ else rv = 0;
-+
-+ if (rv == 0 && (xev->type == ButtonPress || xev->type == KeyPress)) {
-+ XBell(theDisp, 50);
-+ rv = 1; /* eat it */
-+ }
-+
-+ return (rv);
-+}
-+
-+
-+/***************************************************/
-+int PIC2SaveParams(fname, col)
-+char *fname;
-+int col;
-+{
-+ filename = fname;
-+ colorType = col;
-+
-+ /* see if we can open the output file before proceeding */
-+ fp = pic2_OpenOutFile(filename, &append);
-+ if (!fp)
-+ return (-1);
-+
-+ RBSetActive(typeRB,0,1);
-+ RBSetActive(typeRB,1,1);
-+ RBSetActive(typeRB,2,1);
-+ RBSetActive(typeRB,3,1);
-+ RBSelect(typeRB,0);
-+
-+
-+ if (append) {
-+ struct pic2_info pic2;
-+
-+ pic2_init_info(&pic2);
-+ pic2.fp = fp;
-+ pic2_read_header(&pic2);
-+
-+ RBSetActive(depthRB,0,0);
-+ RBSetActive(depthRB,1,0);
-+ RBSetActive(depthRB,2,0);
-+ RBSetActive(depthRB,3,0);
-+ RBSetActive(depthRB,4,0);
-+ RBSetActive(depthRB,5,0);
-+ RBSetActive(depthRB,6,0);
-+ RBSetActive(depthRB,7,0);
-+
-+ switch (pic2.header->depth) {
-+ case 3:
-+ RBSetActive(depthRB,0,1);
-+ RBSelect(depthRB,0);
-+ RBSetActive(typeRB,3,0);
-+ break;
-+ case 6:
-+ RBSetActive(depthRB,1,1);
-+ RBSelect(depthRB,1);
-+ RBSetActive(typeRB,3,0);
-+ break;
-+ case 9:
-+ RBSetActive(depthRB,2,1);
-+ RBSelect(depthRB,2);
-+ break;
-+ case 12:
-+ RBSetActive(depthRB,3,1);
-+ RBSelect(depthRB,3);
-+ break;
-+ case 15:
-+ RBSetActive(depthRB,4,1);
-+ RBSelect(depthRB,4);
-+ break;
-+ case 18:
-+ RBSetActive(depthRB,5,1);
-+ RBSelect(depthRB,5);
-+ RBSetActive(typeRB,3,0);
-+ break;
-+ case 21:
-+ RBSetActive(depthRB,6,1);
-+ RBSelect(depthRB,6);
-+ RBSetActive(typeRB,3,0);
-+ break;
-+ case 24:
-+ RBSetActive(depthRB,7,1);
-+ RBSelect(depthRB,7);
-+ RBSetActive(typeRB,3,0);
-+ break;
-+ default: {
-+ char str[512];
-+ sprintf(str, "unsupported PIC2 file '%s'.", filename);
-+ ErrPopUp(str, "\nBummer");
-+ CloseOutFile(fp, filename, 0);
-+ fp = OpenOutFile(fname);
-+ if (!fp)
-+ return (-1);
-+ break;
-+ }
-+ }
-+ pic2_seek_file(&pic2, 0, SEEK_SET);
-+ pic2_cleanup_pic2_info(&pic2, 1);
-+ } else {
-+ RBSetActive(depthRB,0,1);
-+ RBSetActive(depthRB,1,1);
-+ RBSetActive(depthRB,2,1);
-+ RBSetActive(depthRB,3,1);
-+ RBSetActive(depthRB,4,1);
-+ RBSetActive(depthRB,5,1);
-+ RBSetActive(depthRB,6,1);
-+ RBSetActive(depthRB,7,1);
-+ RBSelect(depthRB,7);
-+ RBSetActive(typeRB,3,0);
-+ }
-+ return (0);
-+}
-+
-+
-+/***************************************************/
-+static void drawTD(x,y,w,h)
-+int x,y,w,h;
-+{
-+ char *title = "Save PIC2 file...";
-+ int i;
-+ XRectangle xr;
-+
-+ xr.x = x; xr.y = y; xr.width = w; xr.height = h;
-+ XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
-+
-+ XSetForeground(theDisp, theGC, infofg);
-+ XSetBackground(theDisp, theGC, infobg);
-+
-+ for (i = 0; i < T_NBUTTS; i++)
-+ BTRedraw(&tbut[i]);
-+
-+ ULineString(pic2W, typeRB->x-16, typeRB->y-3-DESCENT, "FormatType");
-+ ULineString(pic2W, depthRB->x-16, depthRB->y-3-DESCENT, "ColorDepth");
-+ RBRedraw(typeRB, -1);
-+ RBRedraw(depthRB, -1);
-+
-+ DrawString(pic2W, 20, 29, title);
-+
-+ XSetClipMask(theDisp, theGC, None);
-+}
-+
-+static void clickTD(x,y)
-+int x,y;
-+{
-+ int i;
-+ BUTT *bp;
-+
-+ /* check BUTTs */
-+
-+ /* check the RBUTTS first, since they don't DO anything */
-+ if ((i = RBClick(typeRB, x,y)) >= 0) {
-+ (void) RBTrack(typeRB, i);
-+ return;
-+ } else if ((i = RBClick(depthRB, x,y)) >= 0) {
-+ (void) RBTrack(depthRB, i);
-+ if ((2 <= i) && (i <= 4))
-+ RBSetActive(typeRB,3,1);
-+ else {
-+ RBSetActive(typeRB,3,0);
-+ if (RBWhich(typeRB) == 3)
-+ RBSelect(typeRB,0);
-+ return;
-+ }
-+ }
-+ for (i = 0; i < T_NBUTTS; i++) {
-+ bp = &tbut[i];
-+ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h))
-+ break;
-+ }
-+ if (i < T_NBUTTS) /* found one */
-+ if (BTTrack(bp))
-+ doCmd(i);
-+}
-+
-+
-+
-+/***************************************************/
-+static void doCmd(cmd)
-+int cmd;
-+{
-+ switch (cmd) {
-+ case T_BOK: {
-+ char *fullname;
-+ char buf[64], *x_offsetp, *y_offsetp;
-+ static char *labels[] = { "\nOk", "\033Cancel" };
-+ XEvent event;
-+ int i;
-+
-+ strcpy(buf, "0,0");
-+ i = GetStrPopUp("Enter offset (x,y):", labels, 2, buf, 64,
-+ "01234567890,", 1);
-+
-+ if (i)
-+ return;
-+ if (strlen(buf)==0)
-+ return;
-+
-+ x_offsetp = buf;
-+ y_offsetp = index(buf, ',');
-+ if (!y_offsetp)
-+ return;
-+ *(y_offsetp++) = '\0';
-+ if ((*x_offsetp == '\0') || (*y_offsetp == '\0'))
-+ return;
-+ x_offset = atoi(x_offsetp);
-+ y_offset = atoi(y_offsetp);
-+
-+ XNextEvent(theDisp, &event);
-+ HandleEvent(&event, &i);
-+
-+ writePIC2();
-+ PIC2Dialog(0);
-+
-+ fullname = GetDirFullName();
-+ if (!ISPIPE(fullname[0])) {
-+ XVCreatedFile(fullname);
-+ StickInCtrlList(0);
-+ }
-+ }
-+ break;
-+ case T_BCANC:
-+ pic2_KillNullFile(fp);
-+ PIC2Dialog(0);
-+ break;
-+ default:
-+ break;
-+ }
-+}
-+
-+
-+/*******************************************/
-+static void writePIC2()
-+{
-+ int w, h, nc, rv, type, depth, ptype, pfree;
-+ byte *inpix, *rmap, *gmap, *bmap;
-+
-+
-+ WaitCursor();
-+ inpix = GenSavePic(&ptype, &w, &h, &pfree, &nc, &rmap, &gmap, &bmap);
-+
-+ if (colorType == F_REDUCED)
-+ colorType = F_FULLCOLOR;
-+
-+ switch (RBWhich(typeRB)) {
-+ case 0: type = P2SS; break;
-+ case 1: type = P2SF; break;
-+ case 2: type = P2BM; break;
-+ case 3: type = P2BI; break;
-+ default: type = P2SS; break;
-+ }
-+ switch (RBWhich(depthRB)) {
-+ case 0: depth = 3; break;
-+ case 1: depth = 6; break;
-+ case 2: depth = 9; break;
-+ case 3: depth = 12; break;
-+ case 4: depth = 15; break;
-+ case 5: depth = 18; break;
-+ case 6: depth = 21; break;
-+ case 7: depth = 24; break;
-+ default: depth = 24; break;
-+ }
-+ rv = WritePIC2(fp, inpix, ptype, w, h,
-+ rmap, gmap, bmap, nc, colorType, filename,
-+ type, depth, x_offset, y_offset, append, picComments);
-+
-+ if (CloseOutFile(fp, filename, rv) == 0)
-+ DirBox(0);
-+
-+ if (pfree)
-+ free(inpix);
-+}
-+#endif /* HAVE_PIC2 */
-diff -ruN xv-3.10a-bugfixes/xvpng.c xv-3.10a-enhancements/xvpng.c
---- xv-3.10a-bugfixes/xvpng.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvpng.c 2005-04-17 15:00:08.000000000 -0700
-@@ -0,0 +1,1081 @@
-+/*
-+ * xvpng.c - load and write routines for 'PNG' format pictures
-+ *
-+ * callable functions
-+ *
-+ * CreatePNGW()
-+ * PNGDialog(vis)
-+ * PNGCheckEvent(xev)
-+ * PNGSaveParams(fname, col)
-+ * LoadPNG(fname, pinfo)
-+ * VersionInfoPNG()
-+ */
-+
-+/*#include "copyright.h"*/
-+/* (c) 1995 by Alexander Lehmann <lehmann@mathematik.th-darmstadt.de>
-+ * This file is a suplement to xv and is supplied under the same copying
-+ * conditions (except the shareware part).
-+ * Modified by Andreas Dilger <adilger@enel.ucalgary.ca> to fix
-+ * error handling for bad PNGs, add dialogs for interlacing and
-+ * compression selection, and upgrade to libpng-0.89.
-+ * Modified by Greg Roelofs, TenThumbs and others to fix bugs and add
-+ * features.
-+ * The copyright will be passed on to JB at some future point if he
-+ * so desires.
-+ */
-+
-+#include "xv.h"
-+
-+#ifdef HAVE_PNG
-+
-+#include "png.h"
-+
-+/*** Stuff for PNG Dialog box ***/
-+#define PWIDE 318
-+#define PHIGH 215
-+
-+#define DISPLAY_GAMMA 2.20 /* default display gamma */
-+#define COMPRESSION 6 /* default zlib compression level, not max
-+ (Z_BEST_COMPRESSION) */
-+
-+#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS)
-+
-+#define DWIDE 86
-+#define DHIGH 104
-+#define PFX PWIDE-93
-+#define PFY 44
-+#define PFH 20
-+
-+#define P_BOK 0
-+#define P_BCANC 1
-+#define P_NBUTTS 2
-+
-+#define BUTTH 24
-+
-+#define LF 10 /* a.k.a. '\n' on ASCII machines */
-+#define CR 13 /* a.k.a. '\r' on ASCII machines */
-+
-+/*** local functions ***/
-+static void drawPD PARM((int, int, int, int));
-+static void clickPD PARM((int, int));
-+static void doCmd PARM((int));
-+static void writePNG PARM((void));
-+static int WritePNG PARM((FILE *, byte *, int, int, int,
-+ byte *, byte *, byte *, int));
-+
-+static void png_xv_error PARM((png_structp png_ptr,
-+ png_const_charp message));
-+static void png_xv_warning PARM((png_structp png_ptr,
-+ png_const_charp message));
-+
-+/*** local variables ***/
-+static char *filename;
-+static char *fbasename;
-+static int colorType;
-+static int read_anything;
-+static double Display_Gamma = DISPLAY_GAMMA;
-+
-+static DIAL cDial, gDial;
-+static BUTT pbut[P_NBUTTS];
-+static CBUTT interCB;
-+static CBUTT FdefCB, FnoneCB, FsubCB, FupCB, FavgCB, FPaethCB;
-+
-+/**************************************************************************/
-+/* PNG SAVE DIALOG ROUTINES ***********************************************/
-+/**************************************************************************/
-+
-+
-+/*******************************************/
-+void CreatePNGW()
-+{
-+ pngW = CreateWindow("xv png", "XVPNG", NULL,
-+ PWIDE, PHIGH, infofg, infobg, 0);
-+ if (!pngW) FatalError("can't create PNG window!");
-+
-+ XSelectInput(theDisp, pngW, ExposureMask | ButtonPressMask | KeyPressMask);
-+
-+ DCreate(&cDial, pngW, 12, 25, DWIDE, DHIGH, (double)Z_NO_COMPRESSION,
-+ (double)Z_BEST_COMPRESSION, COMPRESSION, 1.0, 3.0,
-+ infofg, infobg, hicol, locol, "Compression", NULL);
-+
-+ DCreate(&gDial, pngW, DWIDE+27, 25, DWIDE, DHIGH, 1.0, 3.5,DISPLAY_GAMMA,0.01,0.2,
-+ infofg, infobg, hicol, locol, "Disp. Gamma", NULL);
-+
-+ CBCreate(&interCB, pngW, DWIDE+30, DHIGH+3*LINEHIGH+2, "interlace",
-+ infofg, infobg, hicol, locol);
-+
-+ CBCreate(&FdefCB, pngW, PFX, PFY, "Default",
-+ infofg, infobg, hicol, locol);
-+ FdefCB.val = 1;
-+
-+ CBCreate(&FnoneCB, pngW, PFX, FdefCB.y + PFH + 4, "none",
-+ infofg, infobg, hicol, locol);
-+ CBCreate(&FsubCB, pngW, PFX, FnoneCB.y + PFH, "sub",
-+ infofg, infobg, hicol, locol);
-+ CBCreate(&FupCB, pngW, PFX, FsubCB.y + PFH, "up",
-+ infofg, infobg, hicol, locol);
-+ CBCreate(&FavgCB, pngW, PFX, FupCB.y + PFH, "average",
-+ infofg, infobg, hicol, locol);
-+ CBCreate(&FPaethCB, pngW, PFX, FavgCB.y + PFH, "Paeth",
-+ infofg, infobg, hicol, locol);
-+
-+ FnoneCB.val = FsubCB.val = FupCB.val = FavgCB.val = FPaethCB.val = 1;
-+ CBSetActive(&FnoneCB, !FdefCB.val);
-+ CBSetActive(&FsubCB, !FdefCB.val);
-+ CBSetActive(&FupCB, !FdefCB.val);
-+ CBSetActive(&FavgCB, !FdefCB.val);
-+ CBSetActive(&FPaethCB, !FdefCB.val);
-+
-+ BTCreate(&pbut[P_BOK], pngW, PWIDE-180-1, PHIGH-10-BUTTH-1, 80, BUTTH,
-+ "Ok", infofg, infobg, hicol, locol);
-+ BTCreate(&pbut[P_BCANC], pngW, PWIDE-90-1, PHIGH-10-BUTTH-1, 80, BUTTH,
-+ "Cancel", infofg, infobg, hicol, locol);
-+
-+ XMapSubwindows(theDisp, pngW);
-+}
-+
-+
-+/*******************************************/
-+void PNGDialog(vis)
-+ int vis;
-+{
-+ if (vis) {
-+ CenterMapWindow(pngW, pbut[P_BOK].x + (int) pbut[P_BOK].w/2,
-+ pbut[P_BOK].y + (int) pbut[P_BOK].h/2,
-+ PWIDE, PHIGH);
-+ }
-+ else XUnmapWindow(theDisp, pngW);
-+ pngUp = vis;
-+}
-+
-+
-+/*******************************************/
-+int PNGCheckEvent(xev)
-+ XEvent *xev;
-+{
-+ /* check event to see if it's for one of our subwindows. If it is,
-+ deal accordingly, and return '1'. Otherwise, return '0' */
-+
-+ int rv;
-+ rv = 1;
-+
-+ if (!pngUp) return 0;
-+
-+ if (xev->type == Expose) {
-+ int x,y,w,h;
-+ XExposeEvent *e = (XExposeEvent *) xev;
-+ x = e->x; y = e->y; w = e->width; h = e->height;
-+
-+ /* throw away excess expose events for 'dumb' windows */
-+ if (e->count > 0 && (e->window == cDial.win)) {}
-+
-+ else if (e->window == pngW) drawPD(x, y, w, h);
-+ else if (e->window == cDial.win) DRedraw(&cDial);
-+ else if (e->window == gDial.win) DRedraw(&gDial);
-+ else rv = 0;
-+ }
-+
-+ else if (xev->type == ButtonPress) {
-+ XButtonEvent *e = (XButtonEvent *) xev;
-+ int x,y;
-+ x = e->x; y = e->y;
-+
-+ if (e->button == Button1) {
-+ if (e->window == pngW) clickPD(x,y);
-+ else if (e->window == cDial.win) DTrack(&cDial,x,y);
-+ else if (e->window == gDial.win) DTrack(&gDial,x,y);
-+ else rv = 0;
-+ } /* button1 */
-+ else rv = 0;
-+ } /* button press */
-+
-+ else if (xev->type == KeyPress) {
-+ XKeyEvent *e = (XKeyEvent *) xev;
-+ char buf[128]; KeySym ks;
-+ int stlen;
-+
-+ stlen = XLookupString(e,buf,128,&ks,(XComposeStatus *) NULL);
-+ buf[stlen] = '\0';
-+
-+ RemapKeyCheck(ks, buf, &stlen);
-+
-+ if (e->window == pngW) {
-+ if (stlen) {
-+ if (buf[0] == '\r' || buf[0] == '\n') { /* enter */
-+ FakeButtonPress(&pbut[P_BOK]);
-+ }
-+ else if (buf[0] == '\033') { /* ESC */
-+ FakeButtonPress(&pbut[P_BCANC]);
-+ }
-+ }
-+ }
-+ else rv = 0;
-+ }
-+ else rv = 0;
-+
-+ if (rv==0 && (xev->type == ButtonPress || xev->type == KeyPress)) {
-+ XBell(theDisp, 50);
-+ rv = 1; /* eat it */
-+ }
-+
-+ return rv;
-+}
-+
-+
-+/*******************************************/
-+void PNGSaveParams(fname, col)
-+ char *fname;
-+ int col;
-+{
-+ filename = fname;
-+ colorType = col;
-+}
-+
-+
-+/*******************************************/
-+static void drawPD(x, y, w, h)
-+ int x, y, w, h;
-+{
-+ char *title = "Save PNG file...";
-+
-+ char ctitle1[20];
-+ char *ctitle2 = "Useful range";
-+ char *ctitle3 = "is 2 - 7.";
-+ char *ctitle4 = "Uncompressed = 0";
-+
-+ char *ftitle = "Row Filters:";
-+
-+ char gtitle[20];
-+
-+ int i;
-+ XRectangle xr;
-+
-+ xr.x = x; xr.y = y; xr.width = w; xr.height = h;
-+ XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
-+
-+ XSetForeground(theDisp, theGC, infofg);
-+ XSetBackground(theDisp, theGC, infobg);
-+
-+ for (i=0; i<P_NBUTTS; i++) BTRedraw(&pbut[i]);
-+
-+ DrawString(pngW, 15, 6+ASCENT, title);
-+
-+ sprintf(ctitle1, "Default = %d", COMPRESSION);
-+ DrawString(pngW, 18, 6+DHIGH+cDial.y+ASCENT, ctitle1);
-+ DrawString(pngW, 17, 6+DHIGH+cDial.y+ASCENT+LINEHIGH, ctitle2);
-+ DrawString(pngW, 17, 6+DHIGH+cDial.y+ASCENT+2*LINEHIGH, ctitle3);
-+ DrawString(pngW, 17, 6+DHIGH+cDial.y+ASCENT+3*LINEHIGH, ctitle4);
-+
-+ sprintf(gtitle, "Default = %g", DISPLAY_GAMMA);
-+ DrawString(pngW, DWIDE+30, 6+DHIGH+gDial.y+ASCENT, gtitle);
-+
-+ ULineString(pngW, FdefCB.x, FdefCB.y-3-DESCENT, ftitle);
-+ XDrawRectangle(theDisp, pngW, theGC, FdefCB.x-11, FdefCB.y-LINEHIGH-3,
-+ 93, 8*LINEHIGH+15);
-+ CBRedraw(&FdefCB);
-+ XDrawLine(theDisp, pngW, theGC, FdefCB.x-11, FdefCB.y+LINEHIGH+4,
-+ FdefCB.x+82, FdefCB.y+LINEHIGH+4);
-+
-+ CBRedraw(&FnoneCB);
-+ CBRedraw(&FupCB);
-+ CBRedraw(&FsubCB);
-+ CBRedraw(&FavgCB);
-+ CBRedraw(&FPaethCB);
-+
-+ CBRedraw(&interCB);
-+
-+ XSetClipMask(theDisp, theGC, None);
-+}
-+
-+
-+/*******************************************/
-+static void clickPD(x,y)
-+ int x,y;
-+{
-+ int i;
-+ BUTT *bp;
-+
-+ /* check BUTTs */
-+
-+ for (i=0; i<P_NBUTTS; i++) {
-+ bp = &pbut[i];
-+ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) break;
-+ }
-+
-+ if (i<P_NBUTTS) { /* found one */
-+ if (BTTrack(bp)) doCmd(i);
-+ }
-+
-+ /* check CBUTTs */
-+
-+ else if (CBClick(&FdefCB,x,y)) {
-+ int oldval = FdefCB.val;
-+
-+ CBTrack(&FdefCB);
-+
-+ if (oldval != FdefCB.val)
-+ {
-+ CBSetActive(&FnoneCB, !FdefCB.val);
-+ CBSetActive(&FsubCB, !FdefCB.val);
-+ CBSetActive(&FupCB, !FdefCB.val);
-+ CBSetActive(&FavgCB, !FdefCB.val);
-+ CBSetActive(&FPaethCB, !FdefCB.val);
-+
-+ CBRedraw(&FnoneCB);
-+ CBRedraw(&FupCB);
-+ CBRedraw(&FsubCB);
-+ CBRedraw(&FavgCB);
-+ CBRedraw(&FPaethCB);
-+ }
-+ }
-+ else if (CBClick(&FnoneCB,x,y)) CBTrack(&FnoneCB);
-+ else if (CBClick(&FsubCB,x,y)) CBTrack(&FsubCB);
-+ else if (CBClick(&FupCB,x,y)) CBTrack(&FupCB);
-+ else if (CBClick(&FavgCB,x,y)) CBTrack(&FavgCB);
-+ else if (CBClick(&FPaethCB,x,y)) CBTrack(&FPaethCB);
-+ else if (CBClick(&interCB,x,y)) CBTrack(&interCB);
-+}
-+
-+
-+/*******************************************/
-+static void doCmd(cmd)
-+ int cmd;
-+{
-+ switch (cmd) {
-+ case P_BOK:
-+ {
-+ char *fullname;
-+
-+ writePNG();
-+ PNGDialog(0);
-+
-+ fullname = GetDirFullName();
-+ if (!ISPIPE(fullname[0])) {
-+ XVCreatedFile(fullname);
-+ StickInCtrlList(0);
-+ }
-+ }
-+ break;
-+
-+ case P_BCANC:
-+ PNGDialog(0);
-+ break;
-+
-+ default:
-+ break;
-+ }
-+}
-+
-+
-+/*******************************************/
-+static void writePNG()
-+{
-+ FILE *fp;
-+ int w, h, nc, rv, ptype, pfree;
-+ byte *inpix, *rmap, *gmap, *bmap;
-+
-+ fp = OpenOutFile(filename);
-+ if (!fp) return;
-+
-+ fbasename = BaseName(filename);
-+
-+ WaitCursor();
-+ inpix = GenSavePic(&ptype, &w, &h, &pfree, &nc, &rmap, &gmap, &bmap);
-+
-+ rv = WritePNG(fp, inpix, ptype, w, h, rmap, gmap, bmap, nc);
-+
-+ SetCursors(-1);
-+
-+ if (CloseOutFile(fp, filename, rv) == 0) DirBox(0);
-+
-+ if (pfree) free(inpix);
-+}
-+
-+
-+/*******************************************/
-+int WritePNG(fp, pic, ptype, w, h, rmap, gmap, bmap, numcols)
-+ FILE *fp;
-+ byte *pic;
-+ int ptype, w, h;
-+ byte *rmap, *gmap, *bmap;
-+ int numcols;
-+{
-+ png_struct *png_ptr;
-+ png_info *info_ptr;
-+ png_color palette[256];
-+ png_textp text;
-+ byte remap[256];
-+ int i, filter, linesize, pass;
-+ byte *p, *png_line;
-+ char software[256];
-+ char *savecmnt;
-+
-+ if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL,
-+ png_xv_error, png_xv_warning)) == NULL) {
-+ sprintf(software, "png_create_write_struct() failure in WritePNG (ver. %s)",
-+ PNG_LIBPNG_VER_STRING);
-+ FatalError(software);
-+ }
-+
-+ if ((info_ptr = png_create_info_struct(png_ptr)) == NULL)
-+ {
-+ png_destroy_write_struct(&png_ptr, &info_ptr);
-+ sprintf(software, "png_create_info_struct() failure in WritePNG");
-+ FatalError(software);
-+ }
-+
-+ if (setjmp(png_ptr->jmpbuf)) {
-+ png_destroy_write_struct(&png_ptr, &info_ptr);
-+ return -1;
-+ }
-+
-+ png_init_io(png_ptr, fp);
-+
-+ png_set_compression_level(png_ptr, (int)cDial.val);
-+
-+ /* Don't bother filtering if we aren't compressing the image */
-+ if (FdefCB.val)
-+ {
-+ if ((int)cDial.val == 0)
-+ png_set_filter(png_ptr, 0, PNG_FILTER_NONE);
-+ }
-+ else
-+ {
-+ filter = FnoneCB.val ? PNG_FILTER_NONE : 0;
-+ filter |= FsubCB.val ? PNG_FILTER_SUB : 0;
-+ filter |= FupCB.val ? PNG_FILTER_UP : 0;
-+ filter |= FavgCB.val ? PNG_FILTER_AVG : 0;
-+ filter |= FPaethCB.val ? PNG_FILTER_PAETH : 0;
-+
-+ png_set_filter(png_ptr, 0, filter);
-+ }
-+
-+ info_ptr->width = w;
-+ info_ptr->height = h;
-+ if (w <= 0 || h <= 0) {
-+ SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)",
-+ fbasename, w, h);
-+ png_destroy_write_struct(&png_ptr, &info_ptr);
-+ return -1;
-+ }
-+
-+ info_ptr->interlace_type = interCB.val ? 1 : 0;
-+
-+ linesize = 0; /* quiet a compiler warning */
-+
-+ if (colorType == F_FULLCOLOR || colorType == F_REDUCED) {
-+ if(ptype == PIC24) {
-+ linesize = 3*w;
-+ if (linesize/3 < w) {
-+ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
-+ fbasename, w, h);
-+ png_destroy_write_struct(&png_ptr, &info_ptr);
-+ return -1;
-+ }
-+ info_ptr->color_type = PNG_COLOR_TYPE_RGB;
-+ info_ptr->bit_depth = 8;
-+ } else {
-+ linesize = w;
-+ info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
-+ if(numcols <= 2)
-+ info_ptr->bit_depth = 1;
-+ else
-+ if(numcols <= 4)
-+ info_ptr->bit_depth = 2;
-+ else
-+ if(numcols <= 16)
-+ info_ptr->bit_depth = 4;
-+ else
-+ info_ptr->bit_depth = 8;
-+
-+ for(i = 0; i < numcols; i++) {
-+ palette[i].red = rmap[i];
-+ palette[i].green = gmap[i];
-+ palette[i].blue = bmap[i];
-+ }
-+ info_ptr->num_palette = numcols;
-+ info_ptr->palette = palette;
-+ info_ptr->valid |= PNG_INFO_PLTE;
-+ }
-+ }
-+
-+ else if(colorType == F_GREYSCALE || colorType == F_BWDITHER) {
-+ info_ptr->color_type = PNG_COLOR_TYPE_GRAY;
-+ if(colorType == F_BWDITHER) {
-+ /* shouldn't happen */
-+ if (ptype == PIC24) FatalError("PIC24 and B/W Stipple in WritePNG()");
-+
-+ info_ptr->bit_depth = 1;
-+ if(MONO(rmap[0], gmap[0], bmap[0]) > MONO(rmap[1], gmap[1], bmap[1])) {
-+ remap[0] = 1;
-+ remap[1] = 0;
-+ }
-+ else {
-+ remap[0] = 0;
-+ remap[1] = 1;
-+ }
-+ linesize = w;
-+ }
-+ else {
-+ if(ptype == PIC24) {
-+ linesize = 3*w;
-+ if (linesize/3 < w) {
-+ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
-+ fbasename, w, h);
-+ png_destroy_write_struct(&png_ptr, &info_ptr);
-+ return -1;
-+ }
-+ info_ptr->bit_depth = 8;
-+ }
-+ else {
-+ int low_precision;
-+
-+ linesize = w;
-+
-+ for(i = 0; i < numcols; i++)
-+ remap[i] = MONO(rmap[i], gmap[i], bmap[i]);
-+
-+ for(; i < 256; i++)
-+ remap[i]=0;
-+
-+ info_ptr->bit_depth = 8;
-+
-+ /* Note that this fails most of the time because of gamma */
-+ /* try to adjust to 4-bit precision grayscale */
-+
-+ low_precision=1;
-+
-+ for(i = 0; i < numcols; i++) {
-+ if((remap[i] & 0x0f) * 0x11 != remap[i]) {
-+ low_precision = 0;
-+ break;
-+ }
-+ }
-+
-+ if(low_precision) {
-+ for(i = 0; i < numcols; i++) {
-+ remap[i] &= 0xf;
-+ }
-+ info_ptr->bit_depth = 4;
-+
-+ /* try to adjust to 2-bit precision grayscale */
-+
-+ for(i = 0; i < numcols; i++) {
-+ if((remap[i] & 0x03) * 0x05 != remap[i]) {
-+ low_precision = 0;
-+ break;
-+ }
-+ }
-+ }
-+
-+ if(low_precision) {
-+ for(i = 0; i < numcols; i++) {
-+ remap[i] &= 3;
-+ }
-+ info_ptr->bit_depth = 2;
-+
-+ /* try to adjust to 1-bit precision grayscale */
-+
-+ for(i = 0; i < numcols; i++) {
-+ if((remap[i] & 0x01) * 0x03 != remap[i]) {
-+ low_precision = 0;
-+ break;
-+ }
-+ }
-+ }
-+
-+ if(low_precision) {
-+ for(i = 0; i < numcols; i++) {
-+ remap[i] &= 1;
-+ }
-+ info_ptr->bit_depth = 1;
-+ }
-+ }
-+ }
-+ }
-+
-+ else
-+ png_error(png_ptr, "Unknown colorstyle in WritePNG");
-+
-+ if ((text = (png_textp)malloc(sizeof(png_text)))) {
-+ sprintf(software, "XV %s", REVDATE);
-+
-+ text->compression = -1;
-+ text->key = "Software";
-+ text->text = software;
-+ text->text_length = strlen(text->text);
-+
-+ info_ptr->max_text = 1;
-+ info_ptr->num_text = 1;
-+ info_ptr->text = text;
-+ }
-+
-+ Display_Gamma = gDial.val; /* Save the current gamma for loading */
-+
-+ info_ptr->gamma = 1.0/gDial.val;
-+ info_ptr->valid |= PNG_INFO_gAMA;
-+
-+ png_write_info(png_ptr, info_ptr);
-+
-+ if(info_ptr->bit_depth < 8)
-+ png_set_packing(png_ptr);
-+
-+ pass=png_set_interlace_handling(png_ptr);
-+
-+ if((png_line = malloc(linesize)) == NULL)
-+ png_error(png_ptr, "cannot allocate temp image line");
-+
-+ for(i = 0; i < pass; i++) {
-+ int j;
-+ p = pic;
-+ for(j = 0; j < h; j++) {
-+ if(info_ptr->color_type == PNG_COLOR_TYPE_GRAY) {
-+ int k;
-+ for(k = 0; k < w; k++)
-+ png_line[k] = ptype==PIC24 ? MONO(p[k*3], p[k*3+1], p[k*3+2]) :
-+ remap[p[k]];
-+ png_write_row(png_ptr, png_line);
-+ } else /* RGB or palette */
-+ png_write_row(png_ptr, p);
-+ if((j & 0x1f) == 0) WaitCursor();
-+ p += linesize;
-+ }
-+ }
-+
-+ free(png_line);
-+
-+ savecmnt = NULL; /* quiet a compiler warning */
-+
-+ if (text)
-+ {
-+ if (picComments && strlen(picComments) &&
-+ (savecmnt = (char *)malloc((strlen(picComments) + 1)*sizeof(char)))) {
-+ png_textp tp;
-+ char *comment, *key;
-+
-+ strcpy(savecmnt, picComments);
-+ key = savecmnt;
-+ tp = text;
-+ info_ptr->num_text = 0;
-+
-+ comment = strchr(key, ':');
-+
-+ do {
-+ /* Allocate a larger structure for comments if necessary */
-+ if (info_ptr->num_text >= info_ptr->max_text)
-+ {
-+ if ((tp =
-+ realloc(text, (info_ptr->num_text + 2)*sizeof(png_text))) == NULL)
-+ {
-+ break;
-+ }
-+ else
-+ {
-+ text = tp;
-+ tp = &text[info_ptr->num_text];
-+ info_ptr->max_text += 2;
-+ }
-+ }
-+
-+ /* See if it looks like a PNG keyword from LoadPNG */
-+ /* GRR: should test for strictly < 80, right? (key = 1-79 chars only) */
-+ if(comment && comment[1] == ':' && comment - key <= 80) {
-+ *(comment++) = '\0';
-+ *(comment++) = '\0';
-+
-+ /* If the comment is the 'Software' chunk XV writes, we remove it,
-+ since we have already stored one */
-+ if (strcmp(key, "Software") == 0 && strncmp(comment, "XV", 2) == 0) {
-+ key = strchr(comment, '\n');
-+ if(key)
-+ key++; /* skip \n */
-+ comment = strchr(key, ':');
-+ }
-+ /* We have another keyword and/or comment to write out */
-+ else {
-+ tp->key = key;
-+ tp->text = comment;
-+
-+ /* We have to find the end of this comment, and the next keyword
-+ if there is one */
-+ for (; NULL != (key = comment = strchr(comment, ':')); comment++)
-+ if (key[1] == ':')
-+ break;
-+
-+ /* It looks like another keyword, go backward to the beginning */
-+ if (key) {
-+ while(key > tp->text && *key != '\n')
-+ key--;
-+
-+ if (key > tp->text && comment - key <= 80) {
-+ *key = '\0';
-+ key++;
-+ }
-+ }
-+
-+ tp->text_length = strlen(tp->text);
-+
-+ /* We don't have another keyword, so remove the last newline */
-+ if (!key && tp->text[tp->text_length - 1] == '\n')
-+ {
-+ tp->text[tp->text_length] = '\0';
-+ tp->text_length--;
-+ }
-+
-+ tp->compression = tp->text_length > 640 ? 0 : -1;
-+ info_ptr->num_text++;
-+ tp++;
-+ }
-+ }
-+ /* Just a generic comment: make sure line-endings are valid for PNG */
-+ else {
-+ char *p=key, *q=key; /* only deleting chars, not adding any */
-+
-+ while (*p) {
-+ if (*p == CR) { /* lone CR or CR/LF: EOL either way */
-+ *q++ = LF; /* LF is the only allowed PNG line-ending */
-+ if (p[1] == LF) /* get rid of any original LF */
-+ ++p;
-+ } else if (*p == LF) /* lone LF */
-+ *q++ = LF;
-+ else
-+ *q++ = *p;
-+ ++p;
-+ }
-+ *q = '\0'; /* unnecessary...but what the heck */
-+ tp->key = "Comment";
-+ tp->text = key;
-+ tp->text_length = q - key;
-+ tp->compression = tp->text_length > 750 ? 0 : -1;
-+ info_ptr->num_text++;
-+ key = NULL;
-+ }
-+ } while (key && *key);
-+ }
-+ else
-+ {
-+ info_ptr->num_text = 0;
-+ }
-+ }
-+ info_ptr->text = text;
-+
-+ png_convert_from_time_t(&(info_ptr->mod_time), time(NULL));
-+ info_ptr->valid |= PNG_INFO_tIME;
-+
-+ png_write_end(png_ptr, info_ptr);
-+ fflush(fp); /* just in case we core-dump before finishing... */
-+
-+ if (text)
-+ {
-+ free(text);
-+ /* must do this or png_destroy_write_struct() 0.97+ will free text again: */
-+ info_ptr->text = (png_textp)NULL;
-+ if (savecmnt)
-+ {
-+ free(savecmnt);
-+ savecmnt = (char *)NULL;
-+ }
-+ }
-+
-+ png_destroy_write_struct(&png_ptr, &info_ptr);
-+
-+ return 0;
-+}
-+
-+
-+/*******************************************/
-+int LoadPNG(fname, pinfo)
-+ char *fname;
-+ PICINFO *pinfo;
-+/*******************************************/
-+{
-+ /* returns '1' on success */
-+
-+ FILE *fp;
-+ png_struct *png_ptr;
-+ png_info *info_ptr;
-+ png_color_16 my_background;
-+ int i,j;
-+ int linesize, bufsize;
-+ int filesize;
-+ int pass;
-+ int gray_to_rgb;
-+ size_t commentsize;
-+
-+ fbasename = BaseName(fname);
-+
-+ pinfo->pic = (byte *) NULL;
-+ pinfo->comment = (char *) NULL;
-+
-+ read_anything=0;
-+
-+ /* open the file */
-+ fp = xv_fopen(fname,"r");
-+ if (!fp) {
-+ SetISTR(ISTR_WARNING,"%s: can't open file", fname);
-+ return 0;
-+ }
-+
-+ /* find the size of the file */
-+ fseek(fp, 0L, 2);
-+ filesize = ftell(fp);
-+ fseek(fp, 0L, 0);
-+
-+ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL,
-+ png_xv_error, png_xv_warning);
-+ if(!png_ptr) {
-+ fclose(fp);
-+ FatalError("malloc failure in LoadPNG");
-+ }
-+
-+ info_ptr = png_create_info_struct(png_ptr);
-+
-+ if(!info_ptr) {
-+ fclose(fp);
-+ png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL);
-+ FatalError("malloc failure in LoadPNG");
-+ }
-+
-+ if(setjmp(png_ptr->jmpbuf)) {
-+ fclose(fp);
-+ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
-+ if(!read_anything) {
-+ if(pinfo->pic) {
-+ free(pinfo->pic);
-+ pinfo->pic = NULL;
-+ }
-+ if(pinfo->comment) {
-+ free(pinfo->comment);
-+ pinfo->comment = NULL;
-+ }
-+ }
-+ return read_anything;
-+ }
-+
-+ png_init_io(png_ptr, fp);
-+ png_read_info(png_ptr, info_ptr);
-+
-+ pinfo->w = pinfo->normw = info_ptr->width;
-+ pinfo->h = pinfo->normh = info_ptr->height;
-+ if (pinfo->w <= 0 || pinfo->h <= 0) {
-+ SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)",
-+ fbasename, pinfo->w, pinfo->h);
-+ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
-+ return read_anything;
-+ }
-+
-+ pinfo->frmType = F_PNG;
-+
-+ sprintf(pinfo->fullInfo, "PNG, %d bit ",
-+ info_ptr->bit_depth * info_ptr->channels);
-+
-+ switch(info_ptr->color_type) {
-+ case PNG_COLOR_TYPE_PALETTE:
-+ strcat(pinfo->fullInfo, "palette color");
-+ break;
-+
-+ case PNG_COLOR_TYPE_GRAY:
-+ strcat(pinfo->fullInfo, "grayscale");
-+ break;
-+
-+ case PNG_COLOR_TYPE_GRAY_ALPHA:
-+ strcat(pinfo->fullInfo, "grayscale+alpha");
-+ break;
-+
-+ case PNG_COLOR_TYPE_RGB:
-+ strcat(pinfo->fullInfo, "truecolor");
-+ break;
-+
-+ case PNG_COLOR_TYPE_RGB_ALPHA:
-+ strcat(pinfo->fullInfo, "truecolor+alpha");
-+ break;
-+ }
-+
-+ sprintf(pinfo->fullInfo + strlen(pinfo->fullInfo),
-+ ", %sinterlaced. (%d bytes)",
-+ info_ptr->interlace_type ? "" : "non-", filesize);
-+
-+ sprintf(pinfo->shrtInfo, "%lux%lu PNG", info_ptr->width, info_ptr->height);
-+
-+ if (info_ptr->bit_depth < 8)
-+ png_set_packing(png_ptr);
-+
-+ if (info_ptr->valid & PNG_INFO_gAMA)
-+ png_set_gamma(png_ptr, Display_Gamma, info_ptr->gamma);
-+ else
-+ png_set_gamma(png_ptr, Display_Gamma, 0.45);
-+
-+ gray_to_rgb = 0; /* quiet a compiler warning */
-+
-+ if (have_imagebg) {
-+ if (info_ptr->bit_depth == 16) {
-+ my_background.red = imagebgR;
-+ my_background.green = imagebgG;
-+ my_background.blue = imagebgB;
-+ my_background.gray = imagebgG; /* only used if all three equal... */
-+ } else {
-+ my_background.red = (imagebgR >> 8);
-+ my_background.green = (imagebgG >> 8);
-+ my_background.blue = (imagebgB >> 8);
-+ my_background.gray = my_background.green;
-+ }
-+ png_set_background(png_ptr, &my_background, PNG_BACKGROUND_GAMMA_SCREEN,
-+ 0, Display_Gamma);
-+ if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA ||
-+ (info_ptr->color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) &&
-+ (imagebgR != imagebgG || imagebgR != imagebgB)) /* i.e., colored bg */
-+ {
-+ png_set_gray_to_rgb(png_ptr);
-+ png_set_expand(png_ptr);
-+ gray_to_rgb = 1;
-+ }
-+ } else {
-+ if (info_ptr->valid & PNG_INFO_bKGD) {
-+ png_set_background(png_ptr, &info_ptr->background,
-+ PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
-+ } else {
-+ my_background.red = my_background.green = my_background.blue =
-+ my_background.gray = 0;
-+ png_set_background(png_ptr, &my_background, PNG_BACKGROUND_GAMMA_SCREEN,
-+ 0, Display_Gamma);
-+ }
-+ }
-+
-+ if (info_ptr->bit_depth == 16)
-+ png_set_strip_16(png_ptr);
-+
-+ if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||
-+ info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
-+ {
-+ if (info_ptr->bit_depth == 1)
-+ pinfo->colType = F_BWDITHER;
-+ else
-+ pinfo->colType = F_GREYSCALE;
-+ png_set_expand(png_ptr);
-+ }
-+
-+ pass=png_set_interlace_handling(png_ptr);
-+
-+ png_read_update_info(png_ptr, info_ptr);
-+
-+ if(info_ptr->color_type == PNG_COLOR_TYPE_RGB ||
-+ info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb)
-+ {
-+ linesize = 3 * pinfo->w;
-+ if (linesize/3 < pinfo->w) { /* know pinfo->w > 0 (see above) */
-+ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
-+ fbasename, pinfo->w, pinfo->h);
-+ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
-+ return read_anything;
-+ }
-+ pinfo->colType = F_FULLCOLOR;
-+ pinfo->type = PIC24;
-+ } else {
-+ linesize = pinfo->w;
-+ pinfo->type = PIC8;
-+ if(info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||
-+ info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
-+ for(i = 0; i < 256; i++)
-+ pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
-+ } else {
-+ pinfo->colType = F_FULLCOLOR;
-+ for(i = 0; i < info_ptr->num_palette; i++) {
-+ pinfo->r[i] = info_ptr->palette[i].red;
-+ pinfo->g[i] = info_ptr->palette[i].green;
-+ pinfo->b[i] = info_ptr->palette[i].blue;
-+ }
-+ }
-+ }
-+
-+ bufsize = linesize * pinfo->h;
-+ if (bufsize/linesize < pinfo->h) { /* know linesize, pinfo->h > 0 (above) */
-+ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
-+ fbasename, pinfo->w, pinfo->h);
-+ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
-+ return read_anything;
-+ }
-+ pinfo->pic = calloc((size_t)bufsize, (size_t)1);
-+
-+ if(!pinfo->pic) {
-+ png_error(png_ptr, "can't allocate space for PNG image");
-+ }
-+
-+ png_start_read_image(png_ptr);
-+
-+ for(i = 0; i < pass; i++) {
-+ byte *p = pinfo->pic;
-+ for(j = 0; j < pinfo->h; j++) {
-+ png_read_row(png_ptr, p, NULL);
-+ read_anything = 1;
-+ if((j & 0x1f) == 0) WaitCursor();
-+ p += linesize;
-+ }
-+ }
-+
-+ png_read_end(png_ptr, info_ptr);
-+
-+ if(info_ptr->num_text > 0) {
-+ commentsize = 1;
-+
-+ for(i = 0; i < info_ptr->num_text; i++)
-+ commentsize += strlen(info_ptr->text[i].key) + 1 +
-+ info_ptr->text[i].text_length + 2;
-+
-+ if((pinfo->comment = malloc(commentsize)) == NULL) {
-+ png_warning(png_ptr,"can't allocate comment string");
-+ }
-+ else {
-+ pinfo->comment[0] = '\0';
-+ for(i = 0; i < info_ptr->num_text; i++) {
-+ strcat(pinfo->comment, info_ptr->text[i].key);
-+ strcat(pinfo->comment, "::");
-+ strcat(pinfo->comment, info_ptr->text[i].text);
-+ strcat(pinfo->comment, "\n");
-+ }
-+ }
-+ }
-+
-+ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
-+
-+ fclose(fp);
-+
-+ return 1;
-+}
-+
-+
-+/*******************************************/
-+static void
-+png_xv_error(png_ptr, message)
-+ png_structp png_ptr;
-+ png_const_charp message;
-+{
-+ SetISTR(ISTR_WARNING,"%s: libpng error: %s", fbasename, message);
-+
-+ longjmp(png_ptr->jmpbuf, 1);
-+}
-+
-+
-+/*******************************************/
-+static void
-+png_xv_warning(png_ptr, message)
-+ png_structp png_ptr;
-+ png_const_charp message;
-+{
-+ if (!png_ptr)
-+ return;
-+
-+ SetISTR(ISTR_WARNING,"%s: libpng warning: %s", fbasename, message);
-+}
-+
-+
-+/*******************************************/
-+void
-+VersionInfoPNG() /* GRR 19980605 */
-+{
-+ fprintf(stderr, " Compiled with libpng %s; using libpng %s.\n",
-+ PNG_LIBPNG_VER_STRING, png_libpng_ver);
-+ fprintf(stderr, " Compiled with zlib %s; using zlib %s.\n",
-+ ZLIB_VERSION, zlib_version);
-+}
-+
-+#endif /* HAVE_PNG */
-diff -ruN xv-3.10a-bugfixes/xvpopup.c xv-3.10a-enhancements/xvpopup.c
---- xv-3.10a-bugfixes/xvpopup.c 2004-05-16 18:04:13.000000000 -0700
-+++ xv-3.10a-enhancements/xvpopup.c 2005-04-25 08:21:34.000000000 -0700
-@@ -23,7 +23,7 @@
- #define OMIT_ICON_BITS
- #include "bits/icon" /* icon_bits[] not used, but icon_width/height are */
-
--#define PUWIDE 400
-+#define PUWIDE 480
- #define PUHIGH 170
-
- #define PAD_PUWIDE 480
-@@ -201,14 +201,14 @@
-
- if (!padHaveDooDads) {
- DCreate(&padWDial, popW, 16, puhigh-16-100-1,75,100,
-- 1, 2048, pWIDE, 10,
-+ 1.0, 2048.0, (double)pWIDE, 1.0, 10.0,
- infofg, infobg, hicol, locol, "Width", NULL);
- DCreate(&padHDial, popW, 16+1+75, puhigh-16-100-1,75,100,
-- 1, 2048, pHIGH, 10,
-+ 1.0, 2048.0, (double)pHIGH, 1.0, 10.0,
- infofg, infobg, hicol, locol, "Height", NULL);
-
- DCreate(&padODial, popW, 16+1+75+75+9, puhigh-16-100-1,75,100,
-- 0, 100, 100, 10,
-+ 0.0, 100.0, 100.0, 1.0, 10.0,
- infofg, infobg, hicol, locol, "Opaque", NULL);
-
- MBCreate(&padMthdMB, popW, 100-2+44, 10, 140, 19, NULL,
-@@ -259,9 +259,9 @@
- else if (poptyp == ISPAD) {
- BTSetActive(&bts[0], (int) strlen(gsBuf));
- i = pWIDE * 3; RANGE(i,2048,9999);
-- DSetRange(&padWDial, 1, i, padWDial.val, 10);
-+ DSetRange(&padWDial, 1.0, (double)i, padWDial.val, 1.0, 10.0);
- i = pHIGH * 3; RANGE(i,2048,9999);
-- DSetRange(&padHDial, 1, i, padHDial.val, 10);
-+ DSetRange(&padHDial, 1.0, (double)i, padHDial.val, 1.0, 10.0);
-
- DSetActive(&padWDial, (padMode!=PAD_LOAD)); /* DSetRange activates dial */
- DSetActive(&padHDial, (padMode!=PAD_LOAD));
-@@ -287,15 +287,19 @@
- /* center first button in window around mouse position, with constraint that
- window be fully on the screen */
-
-- CenterMapWindow(popW, 40 + bts[0].x, BUTTH/2 + bts[0].y, puwide, puhigh);
- popUp = poptyp;
-+ if (startGrab == 2)
-+ startGrab = 4;
-+ else {
-+ CenterMapWindow(popW, 40 + bts[0].x, BUTTH/2 + bts[0].y, puwide, puhigh);
-
-- /* MUST wait for VisibilityNotify event to come in, else we run the risk
-- of UnMapping the window *before* the Map request completed. This
-- appears to be bad, (It leaves an empty window frame up.) though it
-- generally only happens on slow servers. Better safe than screwed... */
-+ /* MUST wait for VisibilityNotify event to come in, else we run the risk
-+ of UnMapping the window *before* the Map request completed. This
-+ appears to be bad, (It leaves an empty window frame up.) though it
-+ generally only happens on slow servers. Better safe than screwed... */
-
-- XWindowEvent(theDisp, popW, VisibilityChangeMask, &event);
-+ XWindowEvent(theDisp, popW, VisibilityChangeMask, &event);
-+ }
-
- /* block until this window gets closed */
- while (popUp) {
-@@ -466,9 +470,9 @@
- changedGSBuf(); /* careful! popW doesn't exist yet! */
-
- if (padHaveDooDads) {
-- oldW = padWDial.val;
-- oldH = padHDial.val;
-- oldO = padODial.val;
-+ oldW = (int)padWDial.val;
-+ oldH = (int)padHDial.val;
-+ oldO = (int)padODial.val;
- }
- else { oldW = pWIDE; oldH = pHIGH; oldO = 100; }
-
-@@ -487,9 +491,9 @@
- }
-
- if (rv == 1) { /* cancelled: restore normal values */
-- DSetVal(&padWDial, oldW);
-- DSetVal(&padHDial, oldH);
-- DSetVal(&padODial, oldO);
-+ DSetVal(&padWDial, (double)oldW);
-+ DSetVal(&padHDial, (double)oldH);
-+ DSetVal(&padODial, (double)oldO);
- }
-
- XUnmapWindow(theDisp, padWDial.win);
-@@ -499,9 +503,9 @@
- /* load up return values */
- *pMode = padMode;
- *pStr = padBuf;
-- *pWide = padWDial.val;
-- *pHigh = padHDial.val;
-- *pOpaque = padODial.val;
-+ *pWide = (int)padWDial.val;
-+ *pHigh = (int)padHDial.val;
-+ *pOpaque = (int)padODial.val;
- *pOmode = padOMode;
-
- return rv;
-@@ -956,14 +960,14 @@
- int x,y;
- {
- int i;
-- BUTT *bp;
-+ BUTT *bp = NULL;
-
- for (i=0; i<nbts; i++) {
- bp = &bts[i];
- if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) break;
- }
-
-- if (i<nbts && BTTrack(bp)) {
-+ if (i<nbts && bp && BTTrack(bp)) {
- popUp = 0; selected = i; return;
- }
-
-@@ -972,8 +976,8 @@
- else if (popUp == ISPAD) {
- if (PTINRECT(x, y, padDButt.x, padDButt.y, padDButt.w, padDButt.h)) {
- if (BTTrack(&padDButt)) {
-- DSetVal(&padWDial, pWIDE);
-- DSetVal(&padHDial, pHIGH);
-+ DSetVal(&padWDial, (double)pWIDE);
-+ DSetVal(&padHDial, (double)pHIGH);
- }
- }
-
-@@ -1105,7 +1109,7 @@
- }
-
-
-- else if (c=='\010' || c=='\177') { /* BS or DEL */
-+ else if (c=='\010') { /* BS */
- if (gsCurPos==0) return 1; /* at beginning of str */
- xvbcopy(&gsBuf[gsCurPos], &gsBuf[gsCurPos-1], (size_t) len-gsCurPos+1);
- gsCurPos--;
-@@ -1128,7 +1132,7 @@
- gsCurPos = len;
- }
-
-- else if (c=='\004') { /* ^D: delete character at gsCurPos */
-+ else if (c=='\004' || c=='\177') { /* ^D or DEL: delete character at gsCurPos */
- if (gsCurPos==len) return 1;
- xvbcopy(&gsBuf[gsCurPos+1], &gsBuf[gsCurPos], (size_t) len-gsCurPos);
- }
-diff -ruN xv-3.10a-bugfixes/xvps.c xv-3.10a-enhancements/xvps.c
---- xv-3.10a-bugfixes/xvps.c 2005-03-30 08:18:17.000000000 -0800
-+++ xv-3.10a-enhancements/xvps.c 2005-04-17 14:45:28.000000000 -0700
-@@ -142,9 +142,9 @@
- CBCreate(&encapsCB, psW, 240, 7, "preview", infofg, infobg, hicol, locol);
- CBCreate(&pscompCB, psW, 331, 7, "compress", infofg, infobg, hicol, locol);
-
-- DCreate(&xsDial, psW, 240, 30, 80, 100, 10, 800, 100, 5,
-+ DCreate(&xsDial, psW, 240, 30, 80, 100, 10.0, 800.0, 100.0, 0.5, 5.0,
- infofg, infobg, hicol, locol, "Width", "%");
-- DCreate(&ysDial, psW, 331, 30, 80, 100, 10, 800, 100, 5,
-+ DCreate(&ysDial, psW, 331, 30, 80, 100, 10.0, 800.0, 100.0, 0.5, 5.0,
- infofg, infobg, hicol, locol, "Height", "%");
- xsDial.drawobj = changedScale;
- ysDial.drawobj = changedScale;
-@@ -239,10 +239,10 @@
-
- if (rd_int("psres")) { /* xv.psres: default paper resolution */
- if (def_int >= 10 && def_int <= 720) {
-- int i = (int) ((PIX2INCH * 100) / def_int);
-+ double v = (PIX2INCH * 100) / def_int;
-
-- DSetVal(&xsDial, i);
-- DSetVal(&ysDial, i);
-+ DSetVal(&xsDial, v);
-+ DSetVal(&ysDial, v);
- }
- }
-
-@@ -839,7 +839,7 @@
- if (scx < scy) { sz_iny = h * scx; }
- else { sz_inx = w * scy; }
-
-- DSetVal(&xsDial, (int) ((100 * (sz_inx * PIX2INCH) / w) + .5));
-+ DSetVal(&xsDial, 100 * (sz_inx * PIX2INCH) / w);
- DSetVal(&ysDial, xsDial.val);
-
- sz_inx = (double) w / PIX2INCH * (xsDial.val / 100.0);
-@@ -1561,9 +1561,9 @@
- the first one is loaded (but not deleted) */
-
- #ifdef GS_PATH
-- char tmp[512], gscmd[512], cmdstr[512], tmpname[64];
-+ #define CMDSIZE 1024
-+ char tmp[512], gscmd[512], cmdstr[CMDSIZE], tmpname[64];
- int gsresult, nump, i, filetype, doalert, epsf;
-- char *rld;
- #endif
-
- pinfo->pic = (byte *) NULL;
-@@ -1596,7 +1596,7 @@
- /* build 'gscmd' string */
-
- #ifndef VMS /* VMS needs quotes around mixed case command lines */
-- sprintf(gscmd, "%s -sDEVICE=%s -r%d -q -dNOPAUSE -sOutputFile=%s%%d ",
-+ sprintf(gscmd, "%s -sDEVICE=%s -r%d -q -dSAFER -dNOPAUSE -sOutputFile=%s%%d ",
- GS_PATH, gsDev, gsRes, tmpname);
- #else
- sprintf(gscmd,
-@@ -1734,32 +1734,48 @@
-
- /******************************************************************/
- #ifdef GS_PATH
--void buildCmdStr(str, gscmd, fname, quick, epsf)
-- char *str, *gscmd, *fname;
-+void buildCmdStr(str, gscmd, xname, quick, epsf)
-+ char *str, *gscmd, *xname;
- int quick, epsf;
- {
- /* note 'epsf' set only on files that don't have a showpage cmd */
-+ char *x, *y, *fname;
-+
-+ x = (char *) malloc((5 * strlen(xname))+3);
-+ if (!x)
-+ FatalError("malloc failure in xvps.c buildCmdStr");
-+ fname = x;
-+ *x++ = 0x27;
-+
-+ for (y = xname; *y; ++y) {
-+ if (0x27 == *y) {
-+ strcpy(x, "'\"'\"'");
-+ x += strlen(x);
-+ } else *x++ = *y;
-+ }
-+ strcpy (x, "'");
-
- #ifndef VMS
-
-- if (epsf) sprintf(str, "echo '\n showpage ' | cat '%s' - | %s -",
-+ if (epsf) snprintf(str, CMDSIZE, "echo '\n showpage ' | cat %s - | %s -",
- fname, gscmd);
-
-- else if (quick) sprintf(str, "echo '%s' | cat - '%s' | %s -",
-+ else if (quick) snprintf(str, CMDSIZE, "echo %s | cat - %s | %s -",
- "/showpage { showpage quit } bind def",
- fname, gscmd);
-
-- else sprintf(str, "%s -- %s", gscmd, fname);
-+ else snprintf(str, CMDSIZE, "%s -- %s", gscmd, fname);
-
- #else /* VMS */
- /* VMS doesn't have pipes or an 'echo' command and GS doesn't like
-- Unix-style file names as input files in the VMS version */
-+ Unix-style filenames as input files in the VMS version */
- strcat(tmp, " -- ");
- rld = strrchr(fname, '/'); /* Pointer to last '/' */
- if (rld) rld++; /* Pointer to filename */
- else rld = fname; /* No path - use original string */
- strcat(tmp, rld);
- #endif /* VMS */
-+ free(fname);
- }
- #endif /* GS_PATH */
-
-diff -ruN xv-3.10a-bugfixes/xvrle.c xv-3.10a-enhancements/xvrle.c
---- xv-3.10a-bugfixes/xvrle.c 2005-03-29 23:29:14.000000000 -0800
-+++ xv-3.10a-enhancements/xvrle.c 2004-05-16 18:07:46.000000000 -0700
-@@ -43,7 +43,7 @@
- byte bgcol[256];
- byte maps[3][256];
- int xpos, ypos, w, h, flags, ncolors, pixelbits, ncmap, cmaplen;
-- int cmtlen, npixels, bufsize=0;
-+ int cmtlen;
- byte *img;
- long filesize;
- char *bname, *errstr;
-@@ -176,44 +176,32 @@
-
- errstr = NULL;
- if (ncolors == 0 || ncolors == 2)
-- errstr = "Unsupported number of channels in RLE file";
-+ errstr = "Unsupt. # of channels in RLE file.\n";
-
- if (pixelbits != 8)
-- errstr = "Only 8-bit pixels supported in RLE files";
-+ errstr = "Only 8-bit pixels supported in RLE files.\n";
-
- if (ncmap==0 || ncmap==1 || ncmap == 3 || ncmap == ncolors) { /* ok */ }
-- else errstr = "Invalid number of colormap channels in RLE file";
-+ else errstr = "Invalid # of colormap channels in RLE file.\n";
-
-- npixels = w * h;
-- if (w <= 0 || h <= 0 || npixels/w != h)
-- errstr = "RLE image dimensions out of range";
-+ if (w<1 || h<1)
-+ errstr = "Bogus size in RLE header.\n";
-
-
- if (errstr) {
- fclose(fp);
-- if (pinfo->comment)
-- free(pinfo->comment);
-- pinfo->comment = (char *) NULL;
-+ if (pinfo->comment) free(pinfo->comment); pinfo->comment = (char *) NULL;
- return rleError(bname, errstr);
- }
-
-
- /* allocate image memory */
-- if (ncolors == 1)
-- img = (byte *) calloc((size_t) npixels, (size_t) 1);
-- else {
-- bufsize = 3*npixels;
-- if (bufsize/3 != npixels)
-- return rleError(bname, "RLE image dimensions out of range");
-- img = (byte *) calloc((size_t) bufsize, (size_t) 1);
-- }
--
-+ if (ncolors == 1) img = (byte *) calloc((size_t) w * h, (size_t) 1);
-+ else img = (byte *) calloc((size_t) w * h * 3, (size_t) 1);
- if (!img) {
- fclose(fp);
-- if (pinfo->comment)
-- free(pinfo->comment);
-- pinfo->comment = (char *) NULL;
-- return rleError(bname, "Unable to allocate RLE image data");
-+ if (pinfo->comment) free(pinfo->comment); pinfo->comment = (char *) NULL;
-+ return rleError(bname, "unable to allocate image data.\n");
- }
-
-
-@@ -221,10 +209,10 @@
- if ((flags & H_CLEARFIRST) && !(flags & H_NO_BACKGROUND)) {
- byte *ip;
- if (ncolors == 1) {
-- for (i=0, ip=img; i<npixels; i++, ip++) *ip = bgcol[0];
-+ for (i=0, ip=img; i<w*h; i++, ip++) *ip = bgcol[0];
- }
- else {
-- for (i=0, ip=img; i<npixels; i++)
-+ for (i=0, ip=img; i<w*h; i++)
- for (j=0; j<3; j++, ip++) *ip = bgcol[j];
- }
- }
-@@ -242,7 +230,7 @@
- if (ncmap) {
- byte *ip;
- int imagelen, cmask;
-- imagelen = (ncolors==1) ? npixels : bufsize;
-+ imagelen = (ncolors==1) ? w*h : w*h*3;
- cmask = (cmaplen-1);
-
- if (ncmap == 1) { /* single gamma curve */
-@@ -250,7 +238,7 @@
- }
-
- else if (ncmap >= 3 && ncolors >=3) { /* one curve per band */
-- for (i=0, ip=img; i<npixels; i++) {
-+ for (i=0, ip=img; i<w*h; i++) {
- *ip = maps[0][*ip & cmask]; ip++;
- *ip = maps[1][*ip & cmask]; ip++;
- *ip = maps[2][*ip & cmask]; ip++;
-diff -ruN xv-3.10a-bugfixes/xvroot.c xv-3.10a-enhancements/xvroot.c
---- xv-3.10a-bugfixes/xvroot.c 2004-05-16 18:04:21.000000000 -0700
-+++ xv-3.10a-enhancements/xvroot.c 2004-05-16 18:07:52.000000000 -0700
-@@ -44,6 +44,7 @@
- case RM_MIRROR:
- case RM_IMIRROR: rpixw = 2*eWIDE; rpixh = 2*eHIGH; break;
- case RM_CSOLID:
-+ case RM_UPLEFT:
- case RM_CWARP:
- case RM_CBRICK: rpixw = dispWIDE; rpixh = dispHIGH; break;
-
-@@ -101,7 +102,7 @@
-
-
- else if (rmode == RM_CENTER || rmode == RM_CENTILE || rmode == RM_CSOLID ||
-- rmode == RM_CWARP || rmode == RM_CBRICK) {
-+ rmode == RM_CWARP || rmode == RM_CBRICK || rmode == RM_UPLEFT) {
- /* do some stuff to set up the border around the picture */
-
- if (rmode != RM_CENTILE) {
-@@ -138,6 +139,12 @@
-
- else if (rmode == RM_CSOLID) { }
-
-+ else if (rmode == RM_UPLEFT) {
-+
-+ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,0,
-+ (u_int) eWIDE, (u_int) eHIGH);
-+ }
-+
- else if (rmode == RM_CWARP) { /* warp effect */
- XSetForeground(theDisp, theGC, rootfg);
- for (i=0; i<=dispWIDE; i+=8)
-@@ -157,7 +164,7 @@
-
-
- /* draw the image centered on top of the background */
-- if (rmode != RM_CENTILE)
-+ if ((rmode != RM_CENTILE) && (rmode != RM_UPLEFT))
- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0,
- ((int) dispWIDE-eWIDE)/2, ((int) dispHIGH-eHIGH)/2,
- (u_int) eWIDE, (u_int) eHIGH);
-diff -ruN xv-3.10a-bugfixes/xvsmooth.c xv-3.10a-enhancements/xvsmooth.c
---- xv-3.10a-bugfixes/xvsmooth.c 2004-05-16 18:04:28.000000000 -0700
-+++ xv-3.10a-enhancements/xvsmooth.c 2004-05-16 18:07:59.000000000 -0700
-@@ -105,7 +105,7 @@
- /* we can save a lot of time by precomputing cxtab[] and pxtab[], both
- dwide arrays of ints that contain values for the equations:
- cx = (ex * swide) / dwide;
-- px = ((ex * swide * 100) / dwide) - (cx * 100) - 50; */
-+ px = ((ex * swide * 128) / dwide) - (cx * 128) - 64; */
-
- cxtab = (int *) malloc(dwide * sizeof(int));
- if (!cxtab) { free(pic24); return NULL; }
-@@ -115,8 +115,8 @@
-
- for (ex=0; ex<dwide; ex++) {
- cxtab[ex] = (ex * swide) / dwide;
-- pxtab[ex] = (((ex * swide)* 100) / dwide)
-- - (cxtab[ex] * 100) - 50;
-+ pxtab[ex] = (((ex * swide)* 128) / dwide)
-+ - (cxtab[ex] * 128) - 64;
- }
-
- for (ey=0; ey<dhigh; ey++) {
-@@ -125,7 +125,7 @@
- ProgressMeter(0, (dhigh)-1, ey, "Smooth");
-
- cy = (ey * shigh) / dhigh;
-- py = (((ey * shigh) * 100) / dhigh) - (cy * 100) - 50;
-+ py = (((ey * shigh) * 128) / dhigh) - (cy * 128) - 64;
- if (py<0) { y1 = cy-1; if (y1<0) y1=0; }
- else { y1 = cy+1; if (y1>shigh-1) y1=shigh-1; }
-
-@@ -172,30 +172,30 @@
- else {
- /* compute weighting factors */
- apx = abs(px); apy = abs(py);
-- pA = (apx * apy) / 100;
-- pB = (apy * (100 - apx)) / 100;
-- pC = (apx * (100 - apy)) / 100;
-- pD = 100 - (pA + pB + pC);
-+ pA = (apx * apy) >> 7; /* div 128 */
-+ pB = (apy * (128 - apx)) >> 7; /* div 128 */
-+ pC = (apx * (128 - apy)) >> 7; /* div 128 */
-+ pD = 128 - (pA + pB + pC);
-
- if (is24) {
-- *pp++ = ((int) (pA * rA))/100 + ((int) (pB * rB))/100 +
-- ((int) (pC * rC))/100 + ((int) (pD * rD))/100;
-+ *pp++ = (((int) (pA * rA))>>7) + (((int) (pB * rB))>>7) +
-+ (((int) (pC * rC))>>7) + (((int) (pD * rD))>>7);
-
-- *pp++ = ((int) (pA * gA))/100 + ((int) (pB * gB))/100 +
-- ((int) (pC * gC))/100 + ((int) (pD * gD))/100;
-+ *pp++ = (((int) (pA * gA))>>7) + (((int) (pB * gB))>>7) +
-+ (((int) (pC * gC))>>7) + (((int) (pD * gD))>>7);
-
-- *pp++ = ((int) (pA * bA))/100 + ((int) (pB * bB))/100 +
-- ((int) (pC * bC))/100 + ((int) (pD * bD))/100;
-+ *pp++ = (((int) (pA * bA))>>7) + (((int) (pB * bB))>>7) +
-+ (((int) (pC * bC))>>7) + (((int) (pD * bD))>>7);
- }
- else { /* 8-bit pic */
-- *pp++ = ((int) (pA * rmap[cA]))/100 + ((int)(pB * rmap[cB]))/100 +
-- ((int) (pC * rmap[cC]))/100 + ((int)(pD * rmap[cD]))/100;
-+ *pp++ = (((int)(pA * rmap[cA]))>>7) + (((int)(pB * rmap[cB]))>>7) +
-+ (((int)(pC * rmap[cC]))>>7) + (((int)(pD * rmap[cD]))>>7);
-
-- *pp++ = ((int) (pA * gmap[cA]))/100 + ((int)(pB * gmap[cB]))/100 +
-- ((int) (pC * gmap[cC]))/100 + ((int)(pD * gmap[cD]))/100;
-+ *pp++ = (((int)(pA * gmap[cA]))>>7) + (((int)(pB * gmap[cB]))>>7) +
-+ (((int)(pC * gmap[cC]))>>7) + (((int)(pD * gmap[cD]))>>7);
-
-- *pp++ = ((int)(pA * bmap[cA]))/100 + ((int)(pB * bmap[cB]))/100 +
-- ((int)(pC * bmap[cC]))/100 + ((int)(pD * bmap[cD]))/100;
-+ *pp++ = (((int)(pA * bmap[cA]))>>7) + (((int)(pB * bmap[cB]))>>7) +
-+ (((int)(pC * bmap[cC]))>>7) + (((int)(pD * bmap[cD]))>>7);
- }
- }
- }
-diff -ruN xv-3.10a-bugfixes/xvtext.c xv-3.10a-enhancements/xvtext.c
---- xv-3.10a-bugfixes/xvtext.c 2004-05-16 18:04:38.000000000 -0700
-+++ xv-3.10a-enhancements/xvtext.c 2005-05-01 13:04:23.000000000 -0700
-@@ -19,9 +19,13 @@
- #include "copyright.h"
-
- #include "xv.h"
-+#ifdef TV_MULTILINGUAL
-+#include "xvml.h"
-+#endif
-
--
--#define BUTTW 80
-+#define BUTTW1 80
-+#define BUTTW2 60
-+#define BUTTW3 110
- #define BUTTH 24
-
- #define TOPMARGIN 30 /* from top of window to top of text window */
-@@ -36,11 +40,28 @@
- #define TV_ASCII 0
- #define TV_HEX 1
- #define TV_CLOSE 2
--#define TV_NBUTTS 3
-
-+#define TV_E_NBUTTS 3
-+
-+#ifdef TV_L10N
-+# define TV_RESCAN 3
-+# define TV_USASCII 4
-+# define TV_JIS 5
-+# define TV_EUCJ 6
-+# define TV_MSCODE 7
-+
-+# define TV_J_NBUTTS 8
-+#endif
-
- #define TITLELEN 128
-
-+#ifdef TV_MULTILINGUAL
-+struct coding_spec {
-+ struct coding_system coding_system;
-+ char *(*converter)PARM((char *, int, int *));
-+};
-+#endif
-+
- /* data needed per text window */
- typedef struct { Window win, textW;
- int vis, wasvis;
-@@ -57,16 +78,89 @@
- int chwide, chhigh; /* size of textW, in chars */
- int hexmode; /* true if disp Hex, else Ascii */
- SCRL vscrl, hscrl;
-- BUTT but[TV_NBUTTS], nopBut;
-+#ifdef TV_L10N
-+ int code; /* current character code */
-+ BUTT but[TV_J_NBUTTS], nopBut;
-+#else
-+ BUTT but[TV_E_NBUTTS], nopBut;
-+#endif
-+#ifdef TV_MULTILINGUAL
-+/* int codeset; */
-+ struct coding_spec ccs; /* current coding_spec */
-+ BUTT csbut;
-+ char *cv_text;
-+ int cv_len;
-+ struct context *ctx;
-+ struct ml_text *txt;
-+ struct csinfo_t *cs;
-+#endif
- } TVINFO;
-
-
- static TVINFO tinfo[MAXTVWIN];
- static int hasBeenSized = 0;
- static int haveWindows = 0;
-+static int nbutts; /* # of buttons */
- static int mfwide, mfhigh, mfascent; /* size of chars in mono font */
- static int *event_retP, *event_doneP; /* used in tvChkEvent() */
--
-+#ifdef TV_MULTILINGUAL
-+# define TV_PLAIN 0
-+# define TV_ISO_8859_1 1
-+# define TV_ISO_2022_JP 2
-+# define TV_EUC_JAPAN 3
-+# define TV_ISO_2022_INT_1 4
-+# define TV_ISO_2022_KR 5
-+# define TV_EUC_KOREA 6
-+# define TV_ISO_2022_SS2_8 7
-+# define TV_ISO_2022_SS2_7 8
-+# define TV_SHIFT_JIS 9
-+# define TV_NCSS 10
-+static char *codeSetNames[TV_NCSS] = {
-+ "plain",
-+ "iso-8859-1",
-+ "iso-2022-jp",
-+ "euc-japan",
-+ "iso-2022-int-1",
-+ "iso-2022-kr",
-+ "euc-korea",
-+ "iso-2022-ss2-8",
-+ "iso-2022-ss2-7",
-+ "Shift JIS",
-+};
-+static struct coding_spec coding_spec[TV_NCSS] = {
-+ /* --- G0 --- --- G1 --- --- G2 --- --- G3 --- GL GR EOL SF LS */
-+ /* plain */
-+ {{{{ 1,94,'B'}, { 1,94,'B'}, { 1,94,'B'}, { 1,94,'B'}}, 0, 0, 0, 1, 1},
-+ NULL},
-+ /* iso-8859-1 */
-+ {{{{ 1,94,'B'}, { 1,96,'A'}, {-1,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 0, 0},
-+ NULL},
-+ /* iso-2022-jp */
-+ {{{{ 1,94,'B'}, {-1,94,'B'}, {-1,94,'B'}, {-1,94,'B'}}, 0, 0, 0, 1, 0},
-+ NULL},
-+ /* euc-japan */
-+ {{{{ 1,94,'B'}, { 2,94,'B'}, { 1,94,'J'}, { 2,94,'D'}}, 0, 1, 0, 1, 0},
-+ NULL},
-+ /* iso-2022-int-1 */
-+ {{{{ 1,94,'B'}, { 2,94,'C'}, {-1,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 1, 1},
-+ NULL},
-+ /* iso-2022-kr */
-+ {{{{ 1,94,'B'}, { 2,94,'C'}, {-1,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 0, 1},
-+ NULL},
-+ /* euc-korea */
-+ {{{{ 1,94,'B'}, { 2,94,'C'}, {-1,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 0, 0},
-+ NULL},
-+ /* iso-2022-ss2-8 */
-+ {{{{ 1,94,'B'}, {-1,94,'C'}, { 0,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 0, 0},
-+ NULL},
-+ /* iso-2022-ss2-7 */
-+ {{{{ 1,94,'B'}, {-1,94,'C'}, { 0,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 1, 0},
-+ NULL},
-+ /* shift jis */
-+ {{{{ 1,94,'B'}, { 2,94,'B'}, { 1,94,'J'}, { 2,94,'D'}}, 0, 1, 1, 1, 0},
-+ sjis_to_jis},
-+};
-+#endif
-
- static void closeText PARM((TVINFO *));
- static int tvChkEvent PARM((TVINFO *, XEvent *));
-@@ -82,7 +176,15 @@
- static void textKey PARM((TVINFO *, int));
- static void doHexAsciiCmd PARM((TVINFO *, int));
- static void computeText PARM((TVINFO *));
--
-+#ifdef TV_L10N
-+static int selectCodeset PARM((TVINFO *));
-+#endif
-+#ifdef TV_MULTILINGUAL
-+static void setCodingSpec PARM((TVINFO *, struct coding_spec *));
-+static void createCsWins PARM((char *));
-+static void openCsWin PARM((TVINFO *));
-+static void closeCsWin PARM((TVINFO *));
-+#endif
-
- /* HEXMODE output looks like this:
- 0x00000000: 00 11 22 33 44 55 66 77 - 88 99 aa bb cc dd ee ff 0123456789abcdef
-@@ -98,12 +200,51 @@
- XSizeHints hints;
- XSetWindowAttributes xswa;
- TVINFO *tv;
-+#ifdef TV_MULTILINGUAL
-+ int default_codeset;
-+#endif
-
-+#ifdef TV_L10N
-+ if (!xlocale) {
-+#endif
-+ mfwide = monofinfo->max_bounds.width;
-+ mfhigh = monofinfo->ascent + monofinfo->descent;
-+ mfascent = monofinfo->ascent;
-
-- mfwide = monofinfo->max_bounds.width;
-- mfhigh = monofinfo->ascent + monofinfo->descent;
-- mfascent = monofinfo->ascent;
-+ nbutts = TV_E_NBUTTS; /* # of buttons */
-+#ifdef TV_L10N
-+ }
-+ else {
-+ mfwide = monofsetinfo->max_logical_extent.width / 2; /* shit! */
-+ mfhigh = monofsetinfo->max_logical_extent.height + 1;
-+ mfascent = mfhigh;
-+
-+ nbutts = TV_J_NBUTTS; /* # of buttons */
-+ }
-+#endif
-
-+#ifdef TV_MULTILINGUAL
-+ {
-+ char *dc = XGetDefault(theDisp, "xv", "codeSet");
-+ if (dc == NULL)
-+ default_codeset = TV_DEFAULT_CODESET;
-+ else {
-+ for (i = 0; i < TV_NCSS; i++) {
-+ if (strcmp(dc, codeSetNames[i]) == 0)
-+ break;
-+ }
-+ if (i >= TV_NCSS) {
-+ if (strcmp(dc, "iso-2022") == 0)
-+ default_codeset = TV_PLAIN;
-+ else {
-+ SetISTR(ISTR_WARNING, "%s: unknown codeset.", dc);
-+ default_codeset = TV_PLAIN;
-+ }
-+ } else
-+ default_codeset = i;
-+ }
-+ }
-+#endif
- /* compute default size of textview windows. should be big enough to
- hold an 80x24 text window */
-
-@@ -118,6 +259,14 @@
- for (i=0; i<MAXTVWIN; i++) {
- tv = &tinfo[i];
-
-+#ifdef TV_MULTILINGUAL
-+ tv->ctx = ml_create_context(ScreenOfDisplay(theDisp, theScreen));
-+ tv->txt = NULL;
-+ tv->cv_text = NULL;
-+ tv->cv_len = 0;
-+ ml_set_charsets(tv->ctx, &coding_spec[TV_PLAIN].coding_system);
-+#endif
-+
- tv->win = CreateWindow((i<CMTWIN) ? "xv text viewer" : "xv image comments",
- "XVtextview",
- (i<CMTWIN) ? geom : cmtgeom,
-@@ -162,24 +311,56 @@
- XSelectInput(theDisp, tv->textW, ExposureMask | ButtonPressMask);
-
-
-- BTCreate(&(tv->but[TV_ASCII]), tv->win, 0,0,BUTTW,BUTTH,
-+ BTCreate(&(tv->but[TV_ASCII]), tv->win, 0,0,BUTTW1,BUTTH,
- "Ascii",infofg,infobg,hicol,locol);
-- BTCreate(&(tv->but[TV_HEX]), tv->win, 0,0,BUTTW,BUTTH,
-+ BTCreate(&(tv->but[TV_HEX]), tv->win, 0,0,BUTTW1,BUTTH,
- "Hex",infofg,infobg,hicol,locol);
-- BTCreate(&(tv->but[TV_CLOSE]), tv->win, 0,0,BUTTW,BUTTH,
-+ BTCreate(&(tv->but[TV_CLOSE]), tv->win, 0,0,BUTTW1,BUTTH,
- "Close",infofg,infobg,hicol,locol);
-
-+#ifdef TV_L10N
-+ if (xlocale) {
-+ BTCreate(&(tv->but[TV_RESCAN]), tv->win, 0,0,BUTTW2,BUTTH,
-+ "RESCAN",infofg,infobg,hicol,locol);
-+ BTCreate(&(tv->but[TV_USASCII]), tv->win, 0,0,BUTTW2,BUTTH,
-+ "ASCII",infofg,infobg,hicol,locol);
-+ BTCreate(&(tv->but[TV_JIS]), tv->win, 0,0,BUTTW2,BUTTH,
-+ "JIS",infofg,infobg,hicol,locol);
-+ BTCreate(&(tv->but[TV_EUCJ]), tv->win, 0,0,BUTTW2,BUTTH,
-+ "EUC-j",infofg,infobg,hicol,locol);
-+ BTCreate(&(tv->but[TV_MSCODE]), tv->win, 0,0,BUTTW2,BUTTH,
-+ "MS Kanji",infofg,infobg,hicol,locol);
-+ }
-+#endif
-+
- BTCreate(&(tv->nopBut), tv->win, 0,0, (u_int) tv->vscrl.tsize+1,
- (u_int) tv->vscrl.tsize+1, "", infofg, infobg, hicol, locol);
- tv->nopBut.active = 0;
-
- XMapSubwindows(theDisp, tv->win);
-
-+#ifdef TV_MULTILINGUAL
-+ BTCreate(&tv->csbut, tv->win, 0, 0, BUTTW1, BUTTH, "Code Sets",
-+ infofg, infobg, hicol, locol);
-+#endif
-+
- tv->text = (char *) NULL;
- tv->textlen = 0;
- tv->title[0] = '\0';
-+#ifdef TV_L10N
-+ tv->code = (xlocale ? LOCALE_DEFAULT : 0);
-+#endif
-+#ifdef TV_MULTILINGUAL
-+ tv->ccs = coding_spec[default_codeset];
-+#endif
- }
--
-+#ifdef TV_MULTILINGUAL
-+ get_monofont_size(&mfwide, &mfhigh);
-+ /* recalculate sizes. */
-+ defwide = 80 * mfwide + 2*LRMARGINS + 8 + 20; /* -ish */
-+ defhigh = 24 * mfhigh + TOPMARGIN + BOTMARGIN + 8 + 20; /* ish */
-+ cmthigh = 6 * mfhigh + TOPMARGIN + BOTMARGIN + 8 + 20; /* ish */
-+#endif
-
- for (i=0; i<MAXTVWIN; i++) {
- resizeText(&tinfo[i], defwide, (i<CMTWIN) ? defhigh : cmthigh);
-@@ -190,44 +371,54 @@
-
- hasBeenSized = 1; /* we can now start looking at textview events */
-
-+#ifdef TV_MULTILINGUAL
-+ createCsWins("+100+100");
-+#endif
- }
-
-
- /***************************************************************/
--void TextView(fname)
-+int TextView(fname)
- char *fname;
- {
- /* given a filename, attempts to read in the file and open a textview win */
-
-+ int filetype;
- long textlen;
- char *text, buf[512], title[128], rfname[MAXPATHLEN+1];
- char *basefname[128]; /* just current fname, no path */
- FILE *fp;
-+ char filename[MAXPATHLEN+1];
-+
-+ strncpy(filename, fname, sizeof(filename) - 1);
-+#ifdef AUTO_EXPAND
-+ Mkvdir(filename);
-+ Dirtovd(filename);
-+#endif
-
- basefname[0] = '\0';
-- strcpy(rfname, fname);
-+ strncpy(rfname, filename, sizeof(rfname) - 1);
-
- /* see if this file is compressed. if it is, uncompress it, and view
- the uncompressed version */
-
-- if (ReadFileType(fname) == RFT_COMPRESS) {
-+ filetype = ReadFileType(filename);
-+ if ((filetype == RFT_COMPRESS) || (filetype == RFT_BZIP2)) {
- #ifndef VMS
-- if (!UncompressFile(fname, rfname)) return; /* failed to uncompress */
-+ if (!UncompressFile(filename, rfname, filetype)) return FALSE;
- #else
- /* chop off trailing '.Z' from friendly displayed basefname, if any */
-- strcpy (basefname, fname);
-+ strncpy (basefname, filename, 128 - 1);
- *rindex (basefname, '.') = '\0';
-- if (!UncompressFile(basefname, rfname)) return;/* failed to uncompress */
-+ if (!UncompressFile(basefname, rfname, filetype)) return FALSE;
- #endif
- }
-
--
--
- fp = fopen(rfname, "r");
- if (!fp) {
- sprintf(buf,"Couldn't open '%s': %s", rfname, ERRSTR(errno));
- ErrPopUp(buf,"\nOh well");
-- return;
-+ return FALSE;
- }
-
-
-@@ -239,16 +430,16 @@
- sprintf(buf, "File '%s' contains no data. (Zero length file.)", rfname);
- ErrPopUp(buf, "\nOk");
- fclose(fp);
-- return;
-+ return FALSE;
- }
-
-- text = (char *) malloc((size_t) textlen);
-+ text = (char *) malloc((size_t) textlen + 1);
- if (!text) {
- sprintf(buf, "Couldn't malloc %ld bytes to read file '%s'",
- textlen, rfname);
- ErrPopUp(buf, "\nSo what!");
- fclose(fp);
-- return;
-+ return FALSE;
- }
-
- if (fread(text, (size_t) 1, (size_t) textlen, fp) != textlen) {
-@@ -256,6 +447,9 @@
- rfname);
- ErrPopUp(buf, "\nHmm...");
- }
-+#ifdef TV_MULTILINGUAL
-+ text[textlen] = '\0';
-+#endif
-
- fclose(fp);
-
-@@ -263,6 +457,7 @@
- OpenTextView(text, (int) textlen, title, 1);
-
- /* note: text gets freed when window gets closed */
-+ return TRUE;
- }
-
-
-@@ -504,6 +699,10 @@
- tv->text = (char *) NULL;
- tv->lines = (char **) NULL;
- tv->numlines = tv->textlen = tv->hexmode = 0;
-+
-+#ifdef TV_MULTILINGUAL
-+ closeCsWin(tv);
-+#endif
- }
-
-
-@@ -591,6 +790,40 @@
- else if (e->window == tv->textW) { }
- else rv = 0;
- }
-+ else if (e->button == Button4) { /* note min vs. max, + vs. - */
-+ /* scroll regardless of where we are in the text window */
-+ if (e->window == tv->win ||
-+ e->window == tv->vscrl.win ||
-+ e->window == tv->hscrl.win ||
-+ e->window == tv->textW)
-+ {
-+ SCRL *sp=&(tv->vscrl);
-+ int halfpage=sp->page/2;
-+
-+ if (sp->val > sp->min+halfpage)
-+ SCSetVal(sp,sp->val-halfpage);
-+ else
-+ SCSetVal(sp,sp->min);
-+ }
-+ else rv = 0;
-+ }
-+ else if (e->button == Button5) { /* note max vs. min, - vs. + */
-+ /* scroll regardless of where we are in the text window */
-+ if (e->window == tv->win ||
-+ e->window == tv->vscrl.win ||
-+ e->window == tv->hscrl.win ||
-+ e->window == tv->textW)
-+ {
-+ SCRL *sp=&(tv->vscrl);
-+ int halfpage=sp->page/2;
-+
-+ if (sp->val < sp->max-halfpage)
-+ SCSetVal(sp,sp->val+halfpage);
-+ else
-+ SCSetVal(sp,sp->max);
-+ }
-+ else rv = 0;
-+ }
- else rv = 0;
- }
-
-@@ -633,7 +866,9 @@
- int i, maxw, maxh;
- XSizeHints hints;
-
-+#ifndef TV_MULTILINGUAL
- if (tv->wide == w && tv->high == h) return; /* no change in size */
-+#endif
-
- if (XGetNormalHints(theDisp, tv->win, &hints)) {
- hints.width = w;
-@@ -657,10 +892,23 @@
- XMoveResizeWindow(theDisp, tv->textW, LRMARGINS, TOPMARGIN,
- (u_int) tv->twWide, (u_int) tv->twHigh);
-
-- for (i=0; i<TV_NBUTTS; i++) {
-- tv->but[i].x = tv->wide - (TV_NBUTTS-i) * (BUTTW+5);
-+ for (i=0; i<TV_E_NBUTTS; i++) {
-+ tv->but[i].x = tv->wide - (TV_E_NBUTTS-i) * (BUTTW1+5);
- tv->but[i].y = tv->high - BUTTH - 5;
- }
-+#ifdef TV_MULTILINGUAL
-+ tv->csbut.x = 5;
-+ tv->csbut.y = tv->high - BUTTH - 5;
-+#endif
-+
-+#ifdef TV_L10N
-+ if (xlocale) {
-+ for (; i<TV_J_NBUTTS; i++) {
-+ tv->but[i].x = 5 + (i-TV_E_NBUTTS) * (BUTTW2+5);
-+ tv->but[i].y = tv->high - BUTTH - 5;
-+ }
-+ }
-+#endif
-
- computeScrlVals(tv);
-
-@@ -711,6 +959,29 @@
- case TV_CLOSE: if (tv == &tinfo[CMTWIN]) CloseCommentText();
- else closeText(tv);
- break;
-+
-+#ifdef TV_L10N
-+ case TV_RESCAN:
-+ tv->code = selectCodeset(tv);
-+ drawTextW(0, &tv->vscrl);
-+ break;
-+ case TV_USASCII:
-+ tv->code = LOCALE_USASCII;
-+ drawTextW(0, &tv->vscrl);
-+ break;
-+ case TV_JIS:
-+ tv->code = LOCALE_JIS;
-+ drawTextW(0, &tv->vscrl);
-+ break;
-+ case TV_EUCJ:
-+ tv->code = LOCALE_EUCJ;
-+ drawTextW(0, &tv->vscrl);
-+ break;
-+ case TV_MSCODE:
-+ tv->code = LOCALE_MSCODE;
-+ drawTextW(0, &tv->vscrl);
-+ break;
-+#endif /* TV_L10N */
- }
- }
-
-@@ -745,8 +1016,10 @@
- drawNumLines(tv);
-
- /* draw the buttons */
-- for (i=0; i<TV_NBUTTS; i++) BTRedraw(&(tv->but[i]));
--
-+ for (i=0; i<nbutts; i++) BTRedraw(&(tv->but[i]));
-+#ifdef TV_MULTILINGUAL
-+ BTRedraw(&tv->csbut);
-+#endif
- BTRedraw(&tv->nopBut);
- }
-
-@@ -816,7 +1089,14 @@
- int delta;
- SCRL *sptr;
- {
-- int i, j, lnum, hpos, cpos, extrach, lwide;
-+ int i, j, lnum, hpos, vpos, cpos, lwide;
-+#ifndef TV_MULTILINGUAL
-+ int extrach;
-+#endif
-+#ifdef TV_L10N
-+ int desig_stat; /* for ISO 2022-JP */
-+ /* 0: ASCII, 1: JIS X 0208, 2: GL is JIS X 0201 kana */
-+#endif
- TVINFO *tv;
- char linestr[512];
- u_char *sp, *ep, *lp;
-@@ -839,12 +1119,38 @@
- XSetFont(theDisp, theGC, monofont);
-
- hpos = tv->hscrl.val;
-+ vpos = tv->vscrl.val;
- lwide = (tv->chwide < 500) ? tv->chwide : 500;
-
- /* draw text */
- if (!tv->hexmode) { /* ASCII mode */
-+#ifdef TV_MULTILINGUAL
-+ XClearArea(theDisp, tv->textW, 0, 0,
-+ (u_int) tv->twWide, (u_int) tv->twHigh, False);
-+ if(tv->txt == NULL)
-+ return;
-+ else {
-+ int i;
-+ int y;
-+ struct ml_text *tp = tv->txt;
-+ struct ml_line *lp;
-+
-+ XSetFunction(theDisp, theGC, GXcopy);
-+ XSetClipMask(theDisp, theGC, None);
-+ y = 3;
-+ for (lp = &tp->lines[vpos], i = tp->nlines - vpos;
-+ i > 0; lp++, i--) {
-+ XDrawText16(theDisp, tv->textW, theGC,
-+ -mfwide * hpos + 3, y + lp->ascent,
-+ lp->items, lp->nitems);
-+ y += lp->ascent + lp->descent;
-+ if (y > tv->twHigh)
-+ break;
-+ }
-+ }
-+#else
- for (i=0; i<tv->chhigh; i++) { /* draw each line */
-- lnum = i + tv->vscrl.val;
-+ lnum = i + vpos;
- if (lnum < tv->numlines-1) {
-
- /* find start of displayed portion of line. This is *wildly*
-@@ -865,7 +1171,13 @@
- cpos--; sp++;
- }
- else if (*sp < 32) extrach = 1;
-+
-+#ifdef TV_L10N
-+ else if (!tv->code && *sp > 127) extrach = 3;
-+#else
- else if (*sp > 127) extrach = 3;
-+#endif
-+
- else sp++;
- }
- else {
-@@ -881,6 +1193,10 @@
-
- /* build up the linestr buffer, which is the current line, padded
- with blanks to a width of exactly tv->chwide chars */
-+#ifdef TV_L10N
-+ desig_stat = 0; /* for ISO 2022-JP */
-+ /* 0: ASCII, 1: JIS X 0208, 2: GL is JIS X 0201 kana */
-+#endif
- for (cpos=0, lp=(byte *) linestr; cpos<lwide; cpos++, lp++) {
- if (sp>=ep) *lp = ' ';
- else {
-@@ -894,13 +1210,117 @@
- cpos--; lp--; sp++;
- }
-
-+#ifdef TV_L10N
-+ else if (*sp < 32 && !(tv->code == LOCALE_JIS && *sp == 0x1b)) {
-+#else
- else if (*sp < 32) {
-+#endif
- if (!extrach) extrach = 2;
- if (extrach == 2) *lp = '^';
- else if (extrach == 1) *lp = *sp + 64;
- }
-
-+#ifdef TV_L10N
-+ /* convert to EUC-Japan */
-+ else if (tv->code == LOCALE_JIS) {
-+ if (*sp == 0x1b) { /* ESC */
-+ if (*(sp+1) == '$') {
-+ if (*(sp+2) == 'B' || *(sp+2) == 'A' || *(sp+2) == '@') {
-+ /* ESC $ B, ESC $ A, ESC $ @ */
-+ desig_stat = 1;
-+ sp += 3; cpos--; lp--;
-+ }
-+ else if (*(sp+2) == '(' && *(sp+3) == 'B') {
-+ /* ESC $ ( B */
-+ desig_stat = 1;
-+ sp += 4; cpos--; lp--;
-+ }
-+ }
-+ else if (*(sp+1) == '(') {
-+ if (*(sp+2) == 'B' || *(sp+2) == 'J' || *(sp+2) == 'H') {
-+ /* ESC ( B, ESC ( J, ESC ( H */
-+ desig_stat = 0;
-+ sp += 3; cpos--; lp--;
-+ }
-+ else if (*(sp+2) == 'I') {
-+ /* ESC ( I */
-+ desig_stat = 2;
-+ sp += 3; cpos--; lp--;
-+ }
-+ }
-+ else if (*(sp+1) == ')' && *(sp+2) == 'I') {
-+ /* ESC ) I */
-+ desig_stat = 2;
-+ sp += 3; cpos--; lp--;
-+ }
-+ else { /* error */
-+ *lp = ' '; sp++;
-+ }
-+ }
-+
-+ else {
-+ switch (desig_stat) {
-+ case 0: /* ASCII */
-+ *lp = *sp++;
-+ break;
-+ case 1: /* JIS X 0208 */
-+ *lp++ = *sp++ | 0x80;
-+ *lp = *sp++ | 0x80;
-+ cpos++;
-+ break;
-+ case 2: /* JIS X 0201 kana */
-+#if defined(__osf__) && !defined(X_LOCALE)
-+ *lp = '='; sp++;
-+#else
-+ *lp++ = 0x8e; /* ^N | 0x80 */
-+ *lp = *sp++ | 0x80;
-+#endif
-+ break;
-+ default: /* error */
-+ *lp = *sp++;
-+ break;
-+ }
-+ }
-+ }
-+
-+ else if (tv->code == LOCALE_MSCODE) {
-+ if ((*sp >= 0x81 && *sp <= 0x9f)
-+ || (*sp >= 0xe0 && *sp <= 0xef)) {
-+ static u_char c1, c2;
-+
-+/*fprintf(stderr, "(%x,%x)->", *sp, *(sp+1));*/
-+ c1 = ((*sp - ((*sp>=0xe0) ? 0xb0 : 0x70)) << 1)
-+ - ((*(sp+1)<=0x9e) ? 1 : 0);
-+ c2 = *(sp+1);
-+ if (c2 >= 0x9f) c2 -= 0x7e; /* 0x9F - 0xFC */
-+ else if (c2 >= 0x80) c2 -= 0x20; /* 0x80 - 0x9E */
-+ else c2 -= 0x1f; /* 0x40 - 0x7E */
-+
-+ *lp++ = c1 | 0x80;
-+ *lp = c2 | 0x80;
-+ sp += 2;
-+/*fprintf(stderr, "(%x %x) ", c1 | 0x80, c2 | 0x80);*/
-+ cpos++;
-+ }
-+
-+ else if (*sp >= 0xa1 && *sp <= 0xdf) { /* JIS X 0201 kana */
-+#if defined(__osf__) && !defined(X_LOCALE)
-+ *lp = '='; sp++;
-+#else
-+ *lp++ = 0x8e; /* ^N | 0x80 */
-+ *lp = *sp++;
-+#endif
-+ }
-+
-+ else *lp = *sp++;
-+ }
-+#endif /* TV_L10N */
-+
-+#ifdef TV_L10N
-+ else if (!tv->code && *sp > 127) {
-+#else
- else if (*sp > 127) {
-+#endif
- if (!extrach) extrach = 4;
- if (extrach == 4) *lp = '\\';
- else if (extrach == 3) *lp = ((u_char)(*sp & 0700) >> 6) + '0';
-@@ -916,6 +1336,9 @@
- }
- }
- }
-+#ifdef TV_L10N
-+ *lp = '\0'; /* terminate linestr */
-+#endif
- }
-
- else { /* below bottom of file. Just build a blank str */
-@@ -923,15 +1346,22 @@
- }
-
- /* draw the line */
-- XDrawImageString(theDisp, tv->textW, theGC,
-- 3, i*mfhigh + 3 + mfascent, linestr, lwide);
-+#ifdef TV_L10N
-+ if (xlocale)
-+ XmbDrawImageString(theDisp, tv->textW, monofset, theGC,
-+ 3, i*mfhigh + 1 + mfascent, linestr, strlen(linestr));
-+ else
-+#endif
-+ XDrawImageString(theDisp, tv->textW, theGC,
-+ 3, i*mfhigh + 3 + mfascent, linestr, lwide);
- } /* for i ... */
-+#endif /* TV_MULTILINGUAL */
- } /* if hexmode */
-
-
- else { /* HEX MODE */
- for (i=0; i<tv->chhigh; i++) { /* draw each line */
-- lnum = i + tv->vscrl.val;
-+ lnum = i + vpos;
- if (lnum < tv->hexlines) {
-
- char hexstr[80], tmpstr[16];
-@@ -957,7 +1387,11 @@
-
- for (j=0; j<16; j++) {
- if (sp+j < ep) {
-+#ifdef TV_L10N
-+ if (sp[j] >= 32 && (sp[j] <= 127 || tv->code)) *lp++ = sp[j];
-+#else
- if (sp[j] >= 32 && sp[j] <= 127) *lp++ = sp[j];
-+#endif
- else *lp++ = '.';
- }
- else *lp++ = ' ';
-@@ -1005,14 +1439,21 @@
- int i;
- BUTT *bp;
-
-- for (i=0, bp=tv->but; i<TV_NBUTTS; i++, bp++) {
-+ for (i=0, bp=tv->but; i<nbutts; i++, bp++) {
- if (PTINRECT(x,y,bp->x,bp->y,bp->w,bp->h)) break;
- }
-
-- if (i<TV_NBUTTS) {
-+ if (i<nbutts) {
- if (BTTrack(bp)) doCmd(tv, i);
- return;
- }
-+
-+#ifdef TV_MULTILINGUAL
-+ if (PTINRECT(x, y, tv->csbut.x, tv->csbut.y, tv->csbut.w, tv->csbut.h)) {
-+ if (BTTrack(&tv->csbut))
-+ openCsWin(tv);
-+ }
-+#endif
- }
-
-
-@@ -1042,13 +1483,38 @@
-
- /* keyboard equivalents */
- switch (buf[0]) {
-- case '\001': doCmd(tv, TV_ASCII); break; /* ^A = Ascii */
-- case '\010': doCmd(tv, TV_HEX); break; /* ^H = Hex */
--
-- case '\033': doCmd(tv, TV_CLOSE); break; /* ESC = Close window */
-+ case '\001': case 'a': case 'A':
-+ doCmd(tv, TV_ASCII); break; /* ^A = Ascii */
-+ case '\010': case 'h': case 'H':
-+ doCmd(tv, TV_HEX); break; /* ^H = Hex */
-+
-+ case '\021': case 'q': case 'Q':
-+ case '\003': case 'c': case 'C':
-+ case '\033':
-+ doCmd(tv, TV_CLOSE); break; /* ESC = Close window */
-
- default: break;
- }
-+
-+#ifdef TV_L10N
-+ if (xlocale) {
-+ switch (buf[0]) {
-+ case '\022': case 'r': case 'R':
-+ doCmd(tv, TV_RESCAN); break;
-+ case '\012': case 'j': case 'J':
-+ doCmd(tv, TV_JIS); break;
-+ case '\005': case 'e': case 'E':
-+ case '\025': case 'u': case 'U':
-+ doCmd(tv, TV_EUCJ); break;
-+ case '\015': case 'm': case 'M':
-+ case '\023': case 's': case 'S':
-+ doCmd(tv, TV_MSCODE); break;
-+
-+ default: break;
-+ }
-+ }
-+#endif /* TV_L10N */
-+
- }
-
-
-@@ -1109,7 +1575,20 @@
- if (i<tv->numlines-1) SCSetVal(&tv->vscrl, i);
- }
-
-+#ifdef TV_L10N
-+ /* redraw text */
-+ if (xlocale) {
-+ XClearArea(theDisp, tv->textW, 0, 0,
-+ (u_int) tv->twWide, (u_int) tv->twHigh, False);
-+
-+ drawTextW(0, &tv->vscrl);
-+ }
-+#endif
-+#ifdef TV_MULTILINGUAL
-+ XClearArea(theDisp, tv->textW, 0, 0,
-+ (u_int) tv->twWide, (u_int) tv->twHigh, False);
- drawTextW(0, &tv->vscrl);
-+#endif
- }
-
-
-@@ -1122,9 +1601,22 @@
- int i,j,wide,maxwide,space;
- byte *sp;
-
-+#ifdef TV_L10N
-+ /* select code-set */
-+ if (xlocale)
-+ tv->code = selectCodeset(tv);
-+#endif /* TV_L10N */
-+
- if (!tv->text) {
- tv->numlines = tv->hexlines = 0;
- tv->lines = (char **) NULL;
-+#ifdef TV_MULTILINGUAL
-+ if (tv->cv_text != NULL) {
-+ free(tv->cv_text);
-+ tv->cv_text = NULL;
-+ }
-+ tv->txt = NULL;
-+#endif
- return;
- }
-
-@@ -1172,17 +1664,129 @@
- wide += space;
- }
- else if (*sp < 32) wide += 2;
-+#ifdef TV_L10N
-+ else if (*sp > 127 && !tv->code) wide += 4;
-+#else
- else if (*sp > 127) wide += 4;
-+#endif
- else wide++;
- }
- if (wide > maxwide) maxwide = wide;
- }
- tv->maxwide = maxwide;
-
-+#ifdef TV_MULTILINGUAL
-+ ml_set_charsets(tv->ctx, &tv->ccs.coding_system);
-+ if (tv->cv_text != NULL) {
-+ free(tv->cv_text);
-+ tv->cv_text = NULL;
-+ }
-+ if (tv->ccs.converter == NULL) {
-+ tv->txt = ml_draw_text(tv->ctx, tv->text, tv->textlen);
-+ } else {
-+ tv->cv_text = (*tv->ccs.converter)(tv->text, tv->textlen, &tv->cv_len);
-+ tv->txt = ml_draw_text(tv->ctx, tv->cv_text, tv->cv_len);
-+ }
-+ tv->maxwide = tv->txt->width / mfwide;
-+ tv->numlines = tv->txt->height / mfhigh + 1;
-+#endif
-+
- tv->hexlines = (tv->textlen + 15) / 16;
- }
-
-
-+/***************************************************/
-+#ifdef TV_L10N
-+static int selectCodeset(tv)
-+ TVINFO *tv;
-+{
-+ u_char *sp;
-+ int i, len;
-+ int code = LOCALE_USASCII; /* == 0 */
-+
-+
-+ len = tv->textlen;
-+
-+ /* select code-set */
-+ if (xlocale) {
-+ sp = (u_char *) tv->text; i = 0;
-+ while (i < len - 1) {
-+ if (*sp == 0x1b &&
-+ (*(sp+1) == '$' || *(sp+1) == '(' || *(sp+1) == ')')) {
-+ code = LOCALE_JIS;
-+ break;
-+ }
-+
-+ else if (*sp >= 0xa1 && *sp <= 0xdf) {
-+ if (*(sp+1) >= 0xf0 && *(sp+1) <= 0xfe) {
-+ code = LOCALE_EUCJ;
-+ break;
-+ }
-+# if (LOCALE_DEFAULT == LOCALE_EUCJ)
-+ else {
-+ sp++; i++;
-+ }
-+# endif
-+ }
-+
-+ else if ((*sp >= 0x81 && *sp <= 0x9f) || (*sp >= 0xe0 && *sp <= 0xef)) {
-+ if ((*(sp+1) >= 0x40 && *(sp+1) <= 0x7e) || *(sp+1) == 0x80) {
-+ code = LOCALE_MSCODE;
-+ break;
-+ }
-+ else if (*(sp+1) == 0xfd || *(sp+1) == 0xfe) {
-+ code = LOCALE_EUCJ;
-+ break;
-+ }
-+ else {
-+ sp++; i++;
-+ }
-+ }
-+
-+ else if (*sp >= 0xf0 && *sp <= 0xfe) {
-+ code = LOCALE_EUCJ;
-+ break;
-+ }
-+
-+ sp++; i++;
-+ }
-+ if (!code) code = LOCALE_DEFAULT;
-+ }
-+
-+ return code;
-+}
-+#endif /* TV_L10N */
-+
-+#ifdef TV_MULTILINGUAL
-+static void setCodingSpec(tv, cs)
-+ TVINFO *tv;
-+ struct coding_spec *cs;
-+{
-+ if (xvbcmp((char *) &tv->ccs, (char *) cs, sizeof *cs) == 0)
-+ return;
-+
-+ tv->ccs = *cs;
-+#if 0
-+ ml_set_charsets(tv->ctx, &tv->ccs.coding_system);
-+ if (tv->cv_text != NULL) {
-+ free(tv->cv_text);
-+ tv->cv_text = NULL;
-+ }
-+ if (tv->ccs.converter == NULL) {
-+ tv->txt = ml_draw_text(tv->ctx, tv->text, tv->textlen);
-+ } else {
-+ tv->cv_text = (*tv->ccs.converter)(tv->text, tv->textlen, &tv->cv_len);
-+ tv->txt = ml_draw_text(tv->ctx, tv->cv_text, tv->cv_len);
-+ }
-+#else
-+ computeText(tv);
-+ computeScrlVals(tv);
-+#endif
-+ /* drawTextW(0, &tv->vscrl); */
-+}
-+#endif
-+
-+
- /**********************************************************************/
- /* BUILT-IN TEXT FILES ************************************************/
- /**********************************************************************/
-@@ -1555,8 +2159,509 @@
- OpenTextView(keyhelp, (int) strlen(keyhelp), "XV Help", 0);
- }
-
-+#ifdef TV_MULTILINGUAL
-+
-+#define TV_ML_ACCEPT TV_NCSS
-+#define TV_ML_CLOSE (TV_ML_ACCEPT + 1)
-+#define TV_ML_NBUTTS (TV_ML_CLOSE + 1)
-+
-+#define TV_ML_RETCODE 0
-+# define TV_ML_RET_LF 0
-+# define TV_ML_RET_CRLF 1
-+# define TV_ML_RET_CR 2
-+# define TV_ML_RET_ANY 3
-+#define TV_ML_GL 1
-+#define TV_ML_GR 2
-+#define TV_ML_CVTR 3
-+#define TV_ML_NRBUTTS 4
-+
-+#define TV_ML_SHORT 0
-+#define TV_ML_LOCK 1
-+#define TV_ML_NCBUTTS 2
-+
-+#define TV_ML_NLISTS 4
-+
-+#define CSWIDE (BUTTW3 * 5 + 5 * 6)
-+#define CSHIGH 450
-+
-+typedef struct csinfo_t {
-+ TVINFO *tv;
-+ RBUTT *rbt[TV_ML_NRBUTTS];
-+ CBUTT cbt[TV_ML_NCBUTTS];
-+ LIST ls[TV_ML_NLISTS];
-+ BUTT bt[TV_ML_NBUTTS];
-+ int up;
-+ Window win;
-+ struct coding_spec tcs; /* temporary coding_spec */
-+} CSINFO;
-+CSINFO csinfo[MAXTVWIN];
-+static char **regs;
-+static int nregs;
-+
-+static int csCheckEvent PARM((CSINFO *, XEvent *));
-+static void csReflect PARM((CSINFO *));
-+static void csRedraw PARM((CSINFO *));
-+static void csListRedraw PARM((LIST *));
-+static void csLsRedraw PARM((int, SCRL *));
-+static void create_registry_list PARM((void));
-+
-+static char *(*cvtrtab[])PARM((char *, int, int *)) = {
-+ NULL,
-+ sjis_to_jis,
-+};
-+
-+static void createCsWins(geom)
-+ char *geom;
-+{
-+ XSetWindowAttributes xswa;
-+ int i, j;
-+
-+ create_registry_list();
-+
-+ xswa.backing_store = WhenMapped;
-+ for (i = 0; i < MAXTVWIN; i++) {
-+ char nam[8];
-+ TVINFO *tv = &tinfo[i];
-+ CSINFO *cs = &csinfo[i];
-+ tv->cs = cs;
-+ cs->tv = tv;
-+ sprintf(nam, "XVcs%d", i);
-+ cs->win = CreateWindow("xv codeset", nam, geom,
-+ CSWIDE, CSHIGH, infofg, infobg, 0);
-+ if (!cs->win) FatalError("couldn't create 'charset' window!");
-+#ifdef BACKING_STORE
-+ XChangeWindowAttributes(theDisp, cs->win, CWBackingStore, &xswa);
-+#endif
-+ XSelectInput(theDisp, cs->win, ExposureMask | ButtonPressMask);
-+
-+ DrawString(cs->win, 5, 5 + ASCENT, "Initial States");
-+ for (i = 0; i < TV_ML_NLISTS; i++) {
-+ int x, y;
-+ char buf[80];
-+
-+ if (i / 2 == 0)
-+ x = 15;
-+ else
-+ x = 280;
-+ if (i % 2 == 0)
-+ y = 5 + LINEHIGH * 1;
-+ else
-+ y = 5 + LINEHIGH * 7 + SPACING * 3;
-+
-+ sprintf(buf, "Designation for G%d:", i + 1);
-+ DrawString(cs->win, x, y + ASCENT, buf);
-+
-+ LSCreate(&cs->ls[i], cs->win, x + 15, y + LINEHIGH,
-+ 200, LINEHIGH * 5, 5,
-+ regs, nregs + 2,
-+ infofg, infobg, hicol, locol, csLsRedraw, 0, 0);
-+ cs->ls[i].selected = 0;
-+ }
-+
-+ for (i = 0; i < 2; i++) {
-+ char *p;
-+ int n;
-+ int x, y;
-+
-+ if ((p = (char *) malloc(3 * 4)) == NULL)
-+ FatalError("out of memory in createCsWins().");
-+ strcpy(p, "G1 G2 G3 G4");
-+ p[2] = p[5] = p[8] = '\0';
-+ n = (i == 0 ? TV_ML_GL : TV_ML_GR);
-+ x = (i == 0 ? 15 : 280);
-+ y = 235;
-+ DrawString(cs->win, x, y + ASCENT, "Assignment for GL:");
-+ x += 15;
-+ y += LINEHIGH;
-+ cs->rbt[n] = RBCreate(NULL, cs->win,
-+ x, y, p, infofg, infobg, hicol, locol);
-+ for (j = 1; j < 4; j++) {
-+ p += 3;
-+ x += 50;
-+ RBCreate(cs->rbt[n], cs->win,
-+ x, y, p, infofg, infobg, hicol, locol);
-+ }
-+ }
-+
-+ DrawString(cs->win, 5, 280 + ASCENT, "Ret Code:");
-+ cs->rbt[TV_ML_RETCODE] =
-+ RBCreate(NULL, cs->win, 20, 300, "LF", infofg,infobg, hicol,locol);
-+ RBCreate(cs->rbt[TV_ML_RETCODE], cs->win, 20, 300 + 20, "CR+LF",
-+ infofg, infobg, hicol, locol);
-+ RBCreate(cs->rbt[TV_ML_RETCODE], cs->win, 90, 300, "CR",
-+ infofg, infobg, hicol, locol);
-+ RBCreate(cs->rbt[TV_ML_RETCODE], cs->win, 90, 300 + 20, "Any",
-+ infofg, infobg, hicol, locol);
-+
-+ DrawString(cs->win, 350, 280 + ASCENT, "Converter:");
-+ cs->rbt[TV_ML_CVTR] =
-+ RBCreate(NULL, cs->win, 365, 300, "Nothing",
-+ infofg, infobg, hicol, locol);
-+ RBCreate(cs->rbt[TV_ML_CVTR], cs->win, 365, 300 + 20, "Shift JIS",
-+ infofg, infobg, hicol, locol);
-+
-+ CBCreate(&cs->cbt[TV_ML_SHORT], cs->win, 200, 300, "Short Form",
-+ infofg, infobg, hicol, locol);
-+ CBCreate(&cs->cbt[TV_ML_LOCK], cs->win, 200, 320, "Locking Shift",
-+ infofg, infobg, hicol, locol);
-+
-+ for (j = 0; j < TV_NCSS; j++) {
-+ BTCreate(&cs->bt[j], cs->win,
-+ 5 + (BUTTW3 + 5) * (j % 5),
-+ 350 + 5 + (BUTTH + 5) * (j / 5),
-+ BUTTW3, BUTTH, codeSetNames[j],
-+ infofg, infobg, hicol, locol);
-+ }
-+ BTCreate(&cs->bt[TV_ML_ACCEPT], cs->win,
-+ CSWIDE - 10 - BUTTW3 * 2, CSHIGH - 5 - BUTTH, BUTTW3, BUTTH,
-+ "Accept", infofg, infobg, hicol, locol);
-+ BTCreate(&cs->bt[TV_ML_CLOSE], cs->win,
-+ CSWIDE - 5 - BUTTW3, CSHIGH - 5 - BUTTH, BUTTW3, BUTTH,
-+ "Close", infofg, infobg, hicol, locol);
-
-+ XMapSubwindows(theDisp, cs->win);
-+ cs->up = 0;
-+ }
-+}
-
-+static void openCsWin(tv)
-+ TVINFO *tv;
-+{
-+ CSINFO *cs = tv->cs;
-+ if (cs->up)
-+ return;
-
-+ XMapRaised(theDisp, cs->win);
-+ cs->up = 1;
-+ cs->tcs = cs->tv->ccs;
-+ csReflect(cs);
-+}
-
-+static void closeCsWin(tv)
-+ TVINFO *tv;
-+{
-+ CSINFO *cs = tv->cs;
-+ if (!cs->up)
-+ return;
-+ cs->up = 0;
-+ XUnmapWindow(theDisp, cs->win);
-+}
-+
-+int CharsetCheckEvent(xev)
-+ XEvent *xev;
-+{
-+ int i;
-+ CSINFO *cs;
-+
-+ for (cs = csinfo, i = 0; i < MAXTVWIN; cs++, i++) {
-+ if (!cs->up)
-+ continue;
-+ if (csCheckEvent(cs, xev))
-+ break;
-+ }
-+ if (i < MAXTVWIN)
-+ return 1;
-+ return 0;
-+}
-+
-+static int csCheckEvent(cs, xev)
-+ CSINFO *cs;
-+ XEvent *xev;
-+{
-+ RBUTT **rbp;
-+ CBUTT *cbp;
-+ LIST *ls;
-+ BUTT *bp;
-+ int i, n;
-+
-+ if (xev->type == Expose) {
-+ int x, y, w, h;
-+ XExposeEvent *e = (XExposeEvent *) xev;
-+ x = e->x; y = e->y; w = e->width; h = e->height;
-+
-+ if (cs->win == e->window){
-+ csRedraw(cs);
-+ return 1;
-+ } else {
-+ for (i = 0; i < TV_ML_NLISTS; i++) {
-+ if (cs->ls[i].win == e->window) {
-+ LSRedraw(&cs->ls[i], 0);
-+ return 1;
-+ }
-+ }
-+ for (i = 0; i < TV_ML_NLISTS; i++) {
-+ if (cs->ls[i].scrl.win == e->window) {
-+ SCRedraw(&cs->ls[i].scrl);
-+ return 1;
-+ }
-+ }
-+ }
-+ } else if (xev->type == ButtonPress) {
-+ int x, y;
-+ XButtonEvent *e = (XButtonEvent *) xev;
-+ x = e->x; y = e->y;
-+ if (cs->win == e->window) {
-+ for (bp = cs->bt, i = 0; i < TV_ML_NBUTTS; bp++, i++) {
-+ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h))
-+ break;
-+ }
-+ if (i < TV_ML_NBUTTS) {
-+ if (BTTrack(bp)) {
-+ if (i < TV_NCSS) {
-+ cs->tcs = coding_spec[i];
-+ csReflect(cs);
-+ } else {
-+ switch (i) {
-+ case TV_ML_ACCEPT:
-+ setCodingSpec(cs->tv, &cs->tcs);
-+ break;
-+ case TV_ML_CLOSE:
-+ closeCsWin(cs->tv);
-+ break;
-+ }
-+ }
-+ }
-+ return 1;
-+ }
-+ for (cbp = cs->cbt, i = 0; i < TV_ML_NCBUTTS; cbp++, i++) {
-+ if (CBClick(cbp, x, y) && CBTrack(cbp))
-+ break;
-+ }
-+ if (i < TV_ML_NCBUTTS) {
-+ switch (i) {
-+ case TV_ML_SHORT:
-+ cs->tcs.coding_system.short_form = cbp->val;
-+ break;
-+ case TV_ML_LOCK:
-+ cs->tcs.coding_system.lock_shift = cbp->val;
-+ break;
-+ }
-+ return 1;
-+ }
-+ for (rbp = cs->rbt, i = 0; i < TV_ML_NRBUTTS; rbp++, i++) {
-+ if ((n = RBClick(*rbp, x, y)) >= 0 && RBTrack(*rbp, n)) {
-+ break;
-+ }
-+ }
-+ if (i < TV_ML_NRBUTTS) {
-+ switch (i) {
-+ case TV_ML_RETCODE:
-+ cs->tcs.coding_system.eol = n;
-+ break;
-+ case TV_ML_GL:
-+ cs->tcs.coding_system.gl = n;
-+ break;
-+ case TV_ML_GR:
-+ cs->tcs.coding_system.gr = n;
-+ break;
-+ case TV_ML_CVTR:
-+ cs->tcs.converter = cvtrtab[n];
-+ break;
-+ }
-+ return 1;
-+ }
-+ } else {
-+ for (ls = cs->ls, i = 0; i < TV_ML_NLISTS; ls++, i++) {
-+ if (ls->win == e->window) {
-+ LSClick(ls, e);
-+ n = ls->selected;
-+ if (n < nregs) {
-+ char r[32], *p = r;
-+ int b7;
-+ strcpy(r, regs[n]);
-+ if ((p = strrchr(r, '/')) != NULL) {
-+ *p = '\0';
-+ b7 = (*(p + 1) == 'R' ? 1 : 0);
-+ } else
-+ b7 = 0; /* shouldn't occur */
-+ cs->tcs.coding_system.design[i] = lookup_design(r, b7);
-+ } else if (n == nregs) /* initially none is designed. */
-+ cs->tcs.coding_system.design[i].bpc = 0;
-+ else
-+ cs->tcs.coding_system.design[i].bpc = -1;
-+ return 1;
-+ }
-+ }
-+ for (ls = cs->ls, i = 0; i < TV_ML_NLISTS; ls++, i++) {
-+ if (ls->scrl.win == e->window) {
-+ SCTrack(&ls->scrl, x, y);
-+ return 1;
-+ }
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+static void csReflect(cs)
-+ CSINFO *cs;
-+{
-+ int i;
-+
-+ RBSelect(cs->rbt[TV_ML_RETCODE], cs->tcs.coding_system.eol);
-+ RBSelect(cs->rbt[TV_ML_GL], cs->tcs.coding_system.gl);
-+ RBSelect(cs->rbt[TV_ML_GR], cs->tcs.coding_system.gr);
-+ for (i = 0; i < sizeof cvtrtab / sizeof cvtrtab[0]; i++) {
-+ if (cs->tcs.converter == cvtrtab[i])
-+ break;
-+ }
-+ if (i >= sizeof cvtrtab / sizeof cvtrtab[0])
-+ FatalError("program error in csReflect().");
-+ RBSelect(cs->rbt[TV_ML_CVTR], i);
-+
-+ cs->cbt[TV_ML_SHORT].val = cs->tcs.coding_system.short_form;
-+ cs->cbt[TV_ML_LOCK].val = cs->tcs.coding_system.lock_shift;
-+ for (i = 0; i < TV_ML_NLISTS; i++) {
-+ struct design design = cs->tcs.coding_system.design[i];
-+ char *reg, r[32];
-+ int b7;
-+ int n = 0;
-+ switch (design.bpc) {
-+ case -1:
-+ n = nregs + 1;
-+ break;
-+ case 0:
-+ n = nregs;
-+ break;
-+ case 1:
-+ case 2:
-+ if ((reg = lookup_registry(design, &b7)) == NULL)
-+ FatalError("internal error in csReflect.");
-+ sprintf(r, "%s/%s", reg, b7 ? "Right" : "Left");
-+ for (n = 0; n < nregs; n++) {
-+ if (strcmp(regs[n], r) == 0)
-+ break;
-+ }
-+ }
-+ cs->ls[i].selected = n;
-+ ScrollToCurrent(&cs->ls[i]);
-+ }
-+ csRedraw(cs);
-+ for (i = 0; i < TV_ML_NLISTS; i++)
-+ csListRedraw(&cs->ls[i]);
-+}
-+
-+static void csRedraw(cs)
-+ CSINFO *cs;
-+{
-+ int i;
-+
-+ XSetForeground(theDisp, theGC, infofg);
-+ DrawString(cs->win, 5,5 + ASCENT, "Initial States");
-+ for (i = 0; i < TV_ML_NLISTS; i++) {
-+ int x, y;
-+ char buf[80];
-+
-+ if (i / 2 == 0)
-+ x = 15;
-+ else
-+ x = 280;
-+ if (i % 2 == 0)
-+ y = 5 + LINEHIGH * 1;
-+ else
-+ y = 5 + LINEHIGH * 7 + SPACING * 3;
-+
-+ sprintf(buf, "Designation for G%d:", i);
-+ DrawString(cs->win, x, y + ASCENT, buf);
-+ }
-+
-+ DrawString(cs->win, 15, 235 + ASCENT, "Invocation for GL:");
-+ DrawString(cs->win, 280, 235 + ASCENT, "Invocation for GR:");
-+ DrawString(cs->win, 5, 280 + ASCENT, "Ret Code:");
-+ DrawString(cs->win, 350, 280 + ASCENT, "Converter:");
-+
-+ for (i = 0; i < TV_ML_NBUTTS; i++)
-+ BTRedraw(&cs->bt[i]);
-+ for (i = 0; i < TV_ML_NCBUTTS; i++)
-+ CBRedraw(&cs->cbt[i]);
-+ for (i = 0; i < TV_ML_NRBUTTS; i++)
-+ RBRedraw(cs->rbt[i], -1);
-+}
-+
-+static void csListRedraw(ls)
-+ LIST *ls;
-+{
-+ int i;
-+ for (i = 0; i < TV_ML_NLISTS; i++) {
-+ LSRedraw(ls, 0);
-+ SCRedraw(&ls->scrl);
-+ }
-+}
-+
-+static void csLsRedraw(delta, sptr)
-+ int delta;
-+ SCRL *sptr;
-+{
-+ int i, j;
-+ for (i = 0; i < MAXTVWIN; i++) {
-+ for (j = 0; j < TV_ML_NLISTS; j++) {
-+ if (sptr == &csinfo[i].ls[j].scrl) {
-+ LSRedraw(&csinfo[i].ls[j], delta);
-+ return;
-+ }
-+ }
-+ }
-+}
-+
-+int CharsetDelWin(win)
-+ Window win;
-+{
-+ CSINFO *cs;
-+ int i;
-+
-+ for (cs = csinfo, i = 0; i < TV_NCSS; cs++, i++) {
-+ if (cs->win == win) {
-+ if (cs->up) {
-+ XUnmapWindow(theDisp, cs->win);
-+ cs->up = 0;
-+ }
-+ return 1;
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int reg_comp PARM((const void *, const void *));
-+static void create_registry_list()
-+{
-+ struct design d;
-+ char *names, *p;
-+ int i;
-+
-+ if ((p = names = (char *) malloc(32 * 0x80 * 2 * 2)) == NULL)
-+ FatalError("out of memory in create_name_list#1.");
-+ nregs = 0;
-+ for (d.bpc = 1; d.bpc <=2; d.bpc++) {
-+ for (d.noc = 94; d.noc <= 96; d.noc += 2) {
-+ for (d.des = ' '; (unsigned char) d.des < 0x80; d.des++) {
-+ int b7;
-+ char *r;
-+ if ((r = lookup_registry(d, &b7)) != NULL) {
-+ sprintf(p, "%s/%s", r, b7 ? "Right" : "Left");
-+ p += strlen(p) + 1;
-+ nregs++;
-+ }
-+ }
-+ }
-+ }
-+ if ((names = (char *) realloc(names, (size_t) (p - names))) == NULL)
-+ FatalError("out of memory in create_name_list#2.");
-+ if ((regs = (char **) malloc(sizeof(char *) * (nregs + 3))) == NULL)
-+ FatalError("out of memory in create_name_list#3.");
-+ p = names;
-+ for (i = 0; i < nregs; i++) {
-+ regs[i] = p;
-+ p += strlen(p) + 1;
-+ }
-+ qsort(regs, (size_t) nregs, sizeof(char *), reg_comp);
-+ regs[i++] = "nothing";
-+ regs[i++] = "unused";
-+ regs[i++] = NULL;
-+}
-+static int reg_comp(dst, src)
-+ const void *dst, *src;
-+{
-+ return strcmp(*(char **) dst, *(char **) src);
-+}
-
-+#endif /* TV_MULTILINGUAL */
-diff -ruN xv-3.10a-bugfixes/xvtiff.c xv-3.10a-enhancements/xvtiff.c
---- xv-3.10a-bugfixes/xvtiff.c 2005-03-27 17:25:31.000000000 -0800
-+++ xv-3.10a-enhancements/xvtiff.c 2005-04-17 14:11:55.000000000 -0700
-@@ -512,7 +512,7 @@
- vsprintf(cp, fmt, ap);
- strcat(cp, ".");
-
-- SetISTR(ISTR_WARNING,buf);
-+ SetISTR(ISTR_WARNING, "%s", buf);
-
- error_occurred = 1;
- }
-@@ -536,7 +536,7 @@
- vsprintf(cp, fmt, ap);
- strcat(cp, ".");
-
-- SetISTR(ISTR_WARNING,buf);
-+ SetISTR(ISTR_WARNING, "%s", buf);
- }
-
-
-@@ -564,6 +564,10 @@
- static byte **BWmap;
- static byte **PALmap;
-
-+/* XXXX Work around some collisions with the new library. */
-+#define tileContigRoutine _tileContigRoutine
-+#define tileSeparateRoutine _tileSeparateRoutine
-+
- typedef void (*tileContigRoutine) PARM((byte*, u_char*, RGBvalue*,
- uint32, uint32, int, int));
-
-@@ -603,7 +607,7 @@
- uint32, uint32, int, int));
- static void put4bitbwtile PARM((byte *, u_char *, RGBvalue *,
- uint32, uint32, int, int));
--static void put16bitbwtile PARM((byte *, u_char *, RGBvalue *,
-+static void put16bitbwtile PARM((byte *, u_short *, RGBvalue *,
- uint32, uint32, int, int));
-
- static void putRGBcontig8bittile PARM((byte *, u_char *, RGBvalue *,
-@@ -653,7 +657,7 @@
-
- default:
- TIFFError(TIFFFileName(tif),
-- "Sorry, can not handle %d-bit pictures", bitspersample);
-+ "Sorry, cannot handle %d-bit pictures", bitspersample);
- return (0);
- }
-
-@@ -666,7 +670,7 @@
-
- default:
- TIFFError(TIFFFileName(tif),
-- "Sorry, can not handle %d-channel images", samplesperpixel);
-+ "Sorry, cannot handle %d-channel images", samplesperpixel);
- return (0);
- }
-
-@@ -1157,7 +1161,7 @@
- b = g + stripsize;
- put = pickTileSeparateCase(Map);
- if (put == 0) {
-- TIFFError(filename, "Can not handle format");
-+ TIFFError(filename, "Cannot handle format");
- return (0);
- }
- y = setorientation(tif, h);
-@@ -1197,7 +1201,7 @@
- /*
- * Greyscale images with less than 8 bits/sample are handled
- * with a table to avoid lots of shifts and masks. The table
-- * is setup so that put*bwtile (below) can retrieve 8/bitspersample
-+ * is set up so that put*bwtile (below) can retrieve 8/bitspersample
- * pixel values simply by indexing into the table with one
- * number.
- */
-@@ -1249,11 +1253,11 @@
-
-
- /*
-- * Palette images with <= 8 bits/sample are handled
-- * with a table to avoid lots of shifts and masks. The table
-- * is setup so that put*cmaptile (below) can retrieve 8/bitspersample
-- * pixel values simply by indexing into the table with one
-- * number.
-+ * Palette images with <= 8 bits/sample are handled with
-+ * a table to avoid lots of shifts and masks. The table
-+ * is set up so that put*cmaptile (below) can retrieve
-+ * (8/bitspersample) pixel-values simply by indexing into
-+ * the table with one number.
- */
- static int makecmap()
- {
-@@ -1305,7 +1309,7 @@
- /*
- * The following routines move decoded data returned
- * from the TIFF library into rasters filled with packed
-- * ABGR pixels (i.e. suitable for passing to lrecwrite.)
-+ * ABGR pixels (i.e., suitable for passing to lrecwrite.)
- *
- * The routines have been created according to the most
- * important cases and optimized. pickTileContigCase and
-@@ -1376,7 +1380,7 @@
- int fromskew, toskew;
- {
- while (h-- > 0) {
-- UNROLL8(w, , *cp++ = PALmap[*pp++][0])
-+ UNROLL8(w, , *cp++ = PALmap[*pp++][0]);
- cp += toskew;
- pp += fromskew;
- }
-@@ -1529,7 +1533,7 @@
- */
- static void put16bitbwtile(cp, pp, Map, w, h, fromskew, toskew)
- byte *cp;
-- u_char *pp;
-+ u_short *pp;
- RGBvalue *Map;
- uint32 w, h;
- int fromskew, toskew;
-@@ -1538,8 +1542,7 @@
-
- while (h-- > 0) {
- for (x=w; x>0; x--) {
-- *cp++ = Map[(pp[0] << 8) + pp[1]];
-- pp += 2;
-+ *cp++ = Map[*pp++];
- }
- cp += toskew;
- pp += fromskew;
-@@ -1577,7 +1580,7 @@
- *cp++ = pp[0];
- *cp++ = pp[1];
- *cp++ = pp[2];
-- pp += samplesperpixel)
-+ pp += samplesperpixel);
- cp += toskew;
- pp += fromskew;
- }
-@@ -1650,7 +1653,7 @@
- *cp++ = *r++;
- *cp++ = *g++;
- *cp++ = *b++;
-- )
-+ );
- SKEW(r, g, b, fromskew);
- cp += toskew;
- }
-@@ -1857,7 +1860,7 @@
- case PHOTOMETRIC_MINISWHITE:
- case PHOTOMETRIC_MINISBLACK:
- switch (bitspersample) {
-- case 16: put = put16bitbwtile; break;
-+ case 16: put = (tileContigRoutine) put16bitbwtile; break;
- case 8: put = putgreytile; break;
- case 4: put = put4bitbwtile; break;
- case 2: put = put2bitbwtile; break;
-@@ -1872,7 +1875,7 @@
- break;
- }
-
-- if (put==0) TIFFError(filename, "Can not handle format");
-+ if (put==0) TIFFError(filename, "Cannot handle format");
- return (put);
- }
-
-@@ -1880,8 +1883,8 @@
- /*
- * Select the appropriate conversion routine for unpacked data.
- *
-- * NB: we assume that unpacked single channel data is directed
-- * to the "packed routines.
-+ * NB: we assume that unpacked single-channel data is directed
-+ * to the "packed" routines.
- */
- static tileSeparateRoutine pickTileSeparateCase(Map)
- RGBvalue* Map;
-@@ -1897,10 +1900,32 @@
- break;
- }
-
-- if (put==0) TIFFError(filename, "Can not handle format");
-+ if (put==0) TIFFError(filename, "Cannot handle format");
- return (put);
- }
-
-
-
-+/*******************************************/
-+void
-+VersionInfoTIFF() /* GRR 19980605 */
-+{
-+ char temp[1024], *p, *q;
-+
-+ strcpy(temp, TIFFGetVersion());
-+ p = temp;
-+ while (!isdigit(*p))
-+ ++p;
-+ if ((q = strchr(p, '\n')) != NULL)
-+ *q = '\0';
-+
-+ fprintf(stderr, " Compiled with libtiff %s", p);
-+#ifdef TIFFLIB_VERSION
-+ fprintf(stderr, " of %d", TIFFLIB_VERSION); /* e.g., 19960307 */
-+#endif
-+ fprintf(stderr, ".\n");
-+}
-+
-+
-+
- #endif /* HAVE_TIFF */
-diff -ruN xv-3.10a-bugfixes/xvtiffwr.c xv-3.10a-enhancements/xvtiffwr.c
---- xv-3.10a-bugfixes/xvtiffwr.c 2005-03-28 08:39:52.000000000 -0800
-+++ xv-3.10a-enhancements/xvtiffwr.c 2005-04-17 14:45:28.000000000 -0700
-@@ -86,6 +86,9 @@
- TIFFSetField(tif, TIFFTAG_GROUP3OPTIONS,
- GROUP3OPT_2DENCODING+GROUP3OPT_FILLBITS);
-
-+ if (comp == COMPRESSION_LZW)
-+ TIFFSetField(tif, TIFFTAG_PREDICTOR, 2);
-+
- TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
- TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1);
- TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
-diff -ruN xv-3.10a-bugfixes/xvvd.c xv-3.10a-enhancements/xvvd.c
---- xv-3.10a-bugfixes/xvvd.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvvd.c 2005-04-17 22:56:02.000000000 -0700
-@@ -0,0 +1,1101 @@
-+
-+/*
-+ * xvvd.c - extract archived file automatically and regard it as a
-+ * (virtual) directory.
-+ */
-+
-+#define NEEDSDIR
-+
-+#include "xv.h"
-+
-+#ifdef AUTO_EXPAND
-+
-+static void vd_Dirtovd PARM((char *));
-+static void vd_Vdtodir PARM((char *));
-+static int vd_Mkvdir PARM((char *));
-+static int vd_Rmvdir PARM((char *));
-+static int vd_Movevdir PARM((char *, char *));
-+static void vd_addvdtable PARM((char *));
-+static void vd_packvdtable PARM((void));
-+static int vd_recursive_mkdir PARM((char *));
-+static int vd_recursive_rmdir PARM((char *));
-+static void vd_optimize_path PARM((char *));
-+static int vd_ftype PARM((char *));
-+static int vd_compp PARM((char *, char *));
-+static int vd_UncompressFile PARM((char *, char *));
-+static int vd_tarc PARM((char *));
-+static u_int vd_tar_sumchk PARM((char *));
-+
-+#define VD_VDTABLESIZE 100
-+
-+#define VD_ERR -2
-+#define VD_UKN -1
-+
-+static char *ext_command[] = {
-+/* KEEP 0 */
-+ NULL,
-+#define VD_ARC 1
-+ "arc xo %s",
-+#define VD_ARJ 2
-+ "unarj x %s",
-+#define VD_LZH 3
-+ "lha -xf %s",
-+#define VD_TAR 4
-+ "tar xvf %s",
-+#define VD_ZIP 5
-+ "unzip -xo %s",
-+#define VD_ZOO 6
-+ "zoo xOS %s",
-+};
-+
-+int vdcount = 0;
-+
-+static char vdroot[MAXPATHLEN+1];
-+static char *vdtable[VD_VDTABLESIZE];
-+
-+/*
-+ * These functions initialize and settle virtual directory system.
-+ * Vdinit:
-+ * creates root of virtual directory.
-+ * Vdsettle:
-+ * sweeps virtual directories.
-+ */
-+void Vdinit()
-+{
-+#ifndef VMS
-+ char tmp[MAXPATHLEN+1];
-+
-+ xv_getwd(tmp, MAXPATHLEN+1);
-+ if (chdir(tmpdir)) {
-+ fprintf(stderr, "Warning: cannot chdir to tmpdir = '%s'.\n", tmpdir);
-+ fprintf(stderr,
-+ " I will use current directory '%s' instead of tmpdir.\n",
-+ tmp);
-+ }
-+ xv_getwd(vdroot, MAXPATHLEN+1);
-+ strcat(vdroot, "/.xvvdXXXXXX");
-+ chdir(tmp);
-+#else
-+ sprintf(vdroot, "Sys$Scratch:xvvdXXXXXX");
-+#endif /* VMS */
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(vdroot));
-+#else
-+ mktemp(vdroot);
-+#endif
-+
-+ if (!vd_recursive_mkdir(vdroot))
-+ tmpdir = vdroot;
-+}
-+
-+void Vdsettle()
-+{
-+ int i;
-+
-+ for (i = 0; i < vdcount; i++)
-+ free(vdtable[i]);
-+
-+ vdcount = 0;
-+
-+ vd_recursive_rmdir(vdroot);
-+}
-+
-+/*
-+ * This function chdir to virtual directory, if specified path is in
-+ * virtual directlry.
-+ */
-+int Chvdir(dir)
-+char *dir;
-+{
-+ char buf[MAXPATHLEN+1];
-+
-+ if (Mkvdir(dir) == VD_ERR)
-+ return -1;
-+
-+ strcpy(buf, dir);
-+ Dirtovd(buf);
-+
-+ return (chdir(buf));
-+}
-+
-+/*
-+ * These functions convert directory <-> virtual directory.
-+ * Dirtovd:
-+ * front interface of vd_Dirtovd.
-+ * vd_Dirtovd:
-+ * converts directory to virtual directory.
-+ * Vdtodir:
-+ * front interface of vd_Vdtodir.
-+ * vd_Vdtodir:
-+ * converts virtual directory to normal directory.
-+ * Dirtosubst:
-+ * converts directory to substance of archive.
-+ */
-+void Dirtovd(dir)
-+char *dir;
-+{
-+ vd_optimize_path(dir);
-+
-+ vd_Dirtovd(dir);
-+}
-+
-+static void vd_Dirtovd(dir)
-+char *dir;
-+{
-+ int i;
-+
-+ for (i = 0; i < vdcount; i++)
-+ if (!strncmp(dir, vdtable[i], strlen(vdtable[i]))) {
-+ char tmp[MAXPATHLEN+1];
-+
-+ sprintf(tmp, "%s%s", vdroot, dir);
-+ strcpy(dir, tmp);
-+ Dirtovd(dir);
-+ }
-+}
-+
-+void Vdtodir(dir)
-+char *dir;
-+{
-+ vd_optimize_path(dir);
-+
-+ vd_Vdtodir(dir);
-+}
-+
-+static void vd_Vdtodir(vd)
-+char *vd;
-+{
-+ int i;
-+ char tmp[MAXPATHLEN+1];
-+
-+ for (i = vdcount-1; i >= 0; i--) {
-+ sprintf(tmp, "%s%s", vdroot, vdtable[i]);
-+ if(!strncmp(vd, tmp, strlen(tmp))) {
-+ strcpy(tmp, vd+strlen(vdroot));
-+ strcpy(vd, tmp);
-+ Vdtodir(vd);
-+ }
-+ }
-+}
-+
-+void Dirtosubst(dir)
-+char *dir;
-+{
-+ char tmp[MAXPATHLEN+1];
-+
-+ Dirtovd(dir);
-+
-+ strcpy(tmp, dir+strlen(vdroot));
-+
-+ if (Isarchive(tmp))
-+ strcpy(dir, tmp);
-+}
-+
-+/*
-+ * These functions make virtual directory and extracts archive, if
-+ * specified path is archive.
-+ * Mkvdir:
-+ * front interface of vd_Mkvdir.
-+ * vd_Mkvdir:
-+ * does real work.
-+ * Mkvdir_force: (used by makeThumbDir(in xvbrowse.c) only)
-+ * make virtual directory by force.
-+ */
-+int Mkvdir(dir)
-+char *dir;
-+{
-+ char dir1[MAXPATHLEN+1], dir2[MAXPATHLEN+1];
-+ char *d1, *d2;
-+ int rv;
-+
-+#if defined(SYSV) || defined(SVR4) || defined(__USE_XOPEN_EXTENDED)
-+ sighold(SIGHUP);
-+ sighold(SIGCHLD);
-+#else
-+ int mask;
-+ mask = sigblock(sigmask(SIGHUP)|sigmask(SIGCHLD));
-+#endif
-+
-+ strcpy(dir1, dir);
-+ vd_optimize_path(dir1);
-+
-+ if ((rv = vd_Mkvdir(dir1)) != VD_ERR)
-+ goto MKVDIR_END;
-+
-+ strcpy(dir2, dir1);
-+ d2 = dir2 + strlen(dir2);
-+ while (rv == VD_ERR) {
-+ d2--;
-+ while (*d2 != '/')
-+ d2--;
-+ *d2 = '\0';
-+ rv = vd_Mkvdir(dir2);
-+ }
-+ d1 = dir1 + strlen(dir2);
-+ while ((rv != VD_ERR) && (*d1 != '\0')) {
-+ *d2++ = *d1++;
-+ while ((*d1 != '/') && (*d1 != '\0'))
-+ *d2++ = *d1++;
-+ *d2 = '\0';
-+ rv = vd_Mkvdir(dir2);
-+ }
-+
-+MKVDIR_END:
-+#if defined(SYSV) || defined(SVR4) || defined(__USE_XOPEN_EXTENDED)
-+ sigrelse(SIGHUP);
-+ sigrelse(SIGCHLD);
-+#else
-+ sigsetmask(mask);
-+#endif
-+
-+ return rv;
-+}
-+
-+static int vd_Mkvdir(dir)
-+char *dir;
-+{
-+ char dir1[MAXPATHLEN+1], dir2[MAXPATHLEN+1], tmp[MAXPATHLEN+1];
-+ int ftype, i;
-+ struct stat st;
-+ FILE *pfp;
-+
-+ strcpy(dir1, dir);
-+ Dirtovd(dir1);
-+ strcpy(dir2, dir1);
-+
-+ WaitCursor();
-+
-+ if ((ftype = vd_ftype(dir1)) < 0) {
-+ SetCursors(-1);
-+ return ftype;
-+ }
-+ if (ftype == RFT_COMPRESS) {
-+ if (!(ftype = vd_compp(dir1, tmp))) {
-+ SetCursors(-1);
-+ return ftype;
-+ }
-+ strcpy(dir1, tmp);
-+ }
-+
-+ if (!stat(dir1, &st)) {
-+ for(i = 0; i < vdcount; i++)
-+ if (!strcmp(vdtable[i], dir2)) {
-+ SetCursors(-1);
-+ return 0;
-+ }
-+
-+ if (!S_ISDIR(st.st_mode)) {
-+ char origdir[MAXPATHLEN+1], buf[MAXPATHLEN+10], buf1[100];
-+
-+ if (vdcount >= VD_VDTABLESIZE) {
-+ ErrPopUp("Sorry, you can't make virtual directory any more.",
-+ "\nBummer!");
-+ goto VD_MKVDIR_ERR;
-+ }
-+
-+ WaitCursor();
-+
-+ xv_getwd(origdir, MAXPATHLEN+1);
-+
-+ sprintf(tmp, "%s%s", vdroot, dir2);
-+ if (vd_recursive_mkdir(tmp) || chdir(tmp)) {
-+ SetISTR(ISTR_INFO, "fail to make virtual directory.");
-+ Warning();
-+ goto VD_MKVDIR_ERR;
-+ }
-+ sprintf(buf, ext_command[ftype], dir1);
-+
-+ WaitCursor();
-+
-+ if((pfp = popen(buf, "r")) == NULL) {
-+ SetISTR(ISTR_INFO, "fail to extract archive '%s'.",
-+ BaseName(dir2));
-+ Warning();
-+ goto VD_MKVDIR_ERR;
-+ }
-+ while (1) {
-+ if (fread(buf1, 1, sizeof(buf1), pfp) < sizeof(buf1))
-+ break;
-+ WaitCursor();
-+ }
-+ if (!feof(pfp)) {
-+ SetISTR(ISTR_INFO, "Pipe was broken.");
-+ Warning();
-+ pclose(pfp);
-+ goto VD_MKVDIR_ERR;
-+ }
-+ pclose(pfp);
-+
-+ if (strcmp(dir1, dir2))
-+ unlink(dir1);
-+
-+ vd_addvdtable(dir2);
-+ Dirtovd(origdir);
-+ chdir(origdir);
-+ SetCursors(-1);
-+ return 0;
-+
-+VD_MKVDIR_ERR:
-+ if (strcmp(dir1, dir2))
-+ unlink(dir1);
-+ SetCursors(-1);
-+ return VD_ERR;
-+ }
-+ }
-+ SetCursors(-1);
-+ return VD_ERR;
-+}
-+
-+#ifdef VIRTUAL_TD
-+void Mkvdir_force(dir)
-+char *dir;
-+{
-+ char tmp[MAXPATHLEN+1];
-+
-+ if (vdcount >= VD_VDTABLESIZE) {
-+ ErrPopUp("Sorry, you can't make virtual directory any more.",
-+ "\nBummer!");
-+ return;
-+ }
-+
-+ sprintf(tmp, "%s%s", vdroot, dir);
-+ if (vd_recursive_mkdir(tmp)) {
-+ SetISTR(ISTR_INFO, "Failed to make virtual directory.");
-+ Warning();
-+ return;
-+ }
-+
-+ vd_addvdtable(dir);
-+}
-+#endif /* VIRTUAL_TD */
-+
-+/*
-+ * These functions remove virtual directory, if exists.
-+ * Rmvdir:
-+ * front interface of vd_Rmvdir.
-+ * vd_Rmvdir:
-+ * remove virtual directory function.
-+ */
-+int Rmvdir(dir)
-+char *dir;
-+{
-+ int rv;
-+ char buf[MAXPATHLEN+1];
-+
-+ strcpy(buf, dir);
-+ vd_optimize_path(buf);
-+
-+ rv = vd_Rmvdir(buf);
-+ vd_packvdtable();
-+ return rv;
-+}
-+
-+static int vd_Rmvdir(dir)
-+char *dir;
-+{
-+ int i;
-+ char tmp[MAXPATHLEN+1];
-+
-+ for(i = 0; i < vdcount; i++)
-+ if (!strncmp(dir, vdtable[i], strlen(dir))) {
-+ sprintf(tmp, "%s%s", vdroot, vdtable[i]);
-+ if (vd_Rmvdir(tmp))
-+ return 1;
-+ if (vd_recursive_rmdir(tmp))
-+ return 1;
-+ vdtable[i][0] = '\0';
-+ }
-+ return 0;
-+}
-+
-+/*
-+ * These functions move virtual directory, if exists.
-+ * Movevdir:
-+ * front interface of move virtual directory function.
-+ * vd_Movevdir:
-+ * does real work.
-+ */
-+int Movevdir(src, dst)
-+char *src, *dst;
-+{
-+/*
-+ char sbuf[MAXPATHLEN+1], dbuf[MAXPATHLEN+1];
-+
-+ strcpy(sbuf, src);
-+ vd_optimize_path(sbuf);
-+
-+ strcpy(dbuf, dst);
-+ vd_optimize_path(dbuf);
-+
-+ return (vd_Movevdir(sbuf, dbuf));
-+*/
-+ return (vd_Movevdir(src, dst));
-+}
-+
-+static int vd_Movevdir(src, dst)
-+char *src, *dst;
-+{
-+ int i;
-+ char *p, *pp;
-+ char tmp[MAXPATHLEN+1], tmps[MAXPATHLEN+1], tmpd[MAXPATHLEN+1];
-+
-+ for (i = 0; i < vdcount; i++)
-+ if (!strncmp(src, vdtable[i], strlen(src))) {
-+ sprintf(tmps, "%s%s", vdroot, vdtable[i]);
-+ sprintf(tmp, "%s%s", dst, vdtable[i]+strlen(src));
-+ sprintf(tmpd, "%s%s", vdroot, tmp);
-+
-+ if (vd_Movevdir(tmps, tmpd))
-+ return 1;
-+
-+ pp = vdtable[i];
-+ p = (char *) malloc(strlen(tmp)+1);
-+ strcpy(p, tmp);
-+ vdtable[i] = p;
-+
-+ strcpy(tmp, tmpd);
-+ for (p = tmp+strlen(tmp); *p != '/'; p--)
-+ ;
-+ *p = '\0';
-+
-+ if (vd_recursive_mkdir(tmp))
-+ goto VD_MOVEVDIR_ERR;
-+
-+ if (rename(tmps, tmpd) < 0)
-+ goto VD_MOVEVDIR_ERR;
-+
-+ free(pp);
-+ }
-+ return 0;
-+
-+VD_MOVEVDIR_ERR:
-+ free(vdtable[i]);
-+ vdtable[i] = pp;
-+ return 1;
-+}
-+
-+/*
-+ * These functions handle table of virtual directories.
-+ * vd_addvdtable:
-+ * adds virtual directory to table.
-+ * vd_packvdtable:
-+ * removes disused virtual directories from table.
-+ */
-+static void vd_addvdtable(vd)
-+char *vd;
-+{
-+ char *p;
-+ p = (char *) malloc(strlen(vd)+1);
-+ strcpy(p, vd);
-+ vdtable[vdcount] = p;
-+ vdcount++;
-+}
-+
-+static void vd_packvdtable()
-+{
-+ int i, j;
-+
-+ for (i = j = 0; i < vdcount; i++)
-+ if (vdtable[i][0] != '\0')
-+ vdtable[j++] = vdtable[i];
-+ else
-+ free(vdtable[i]);
-+
-+ vdcount = j;
-+}
-+
-+/*
-+ * These are utility functions.
-+ * vd_recursive_mkdir:
-+ * makes directories recursively.
-+ * vd_recursive_rmdir
-+ * removes directories recursively.
-+ */
-+static int vd_recursive_mkdir(dir)
-+char *dir;
-+{
-+ char buf[MAXPATHLEN+1], *p;
-+ struct stat st;
-+
-+ strcpy(buf, dir);
-+
-+ if (buf[strlen(buf) - 1] == '/')
-+ buf[strlen(buf) - 1] = '\0';
-+
-+ p = rindex(buf, '/');
-+ *p = '\0';
-+
-+ if (stat(buf, &st) < 0)
-+ if (vd_recursive_mkdir(buf) < 0)
-+ return (-1);
-+
-+ *p = '/';
-+ if (mkdir(buf, 0700) < 0)
-+ return (-1);
-+
-+ return (0);
-+}
-+
-+static int vd_recursive_rmdir(dir)
-+char *dir;
-+{
-+ char buf[MAXPATHLEN+1], buf2[MAXPATHLEN+1];
-+ DIR *dp;
-+ struct dirent *di;
-+
-+ strcpy(buf, dir);
-+
-+ if (buf[strlen(buf) - 1] == '/')
-+ buf[strlen(buf) - 1] = '\0';
-+
-+ if ((dp = opendir(buf)) == NULL)
-+ return (-1);
-+
-+ while ((di = readdir(dp)) != NULL) {
-+ struct stat st;
-+
-+ if (!strcmp(di->d_name, ".") || !strcmp(di->d_name, ".."))
-+ continue;
-+
-+ sprintf(buf2, "%s/%s", dir, di->d_name);
-+
-+ stat(buf2, &st);
-+ if (S_ISDIR(st.st_mode)) {
-+ if (vd_recursive_rmdir(buf2) < 0)
-+ goto VD_RECURSIVE_RMDIR_ERR;
-+ } else
-+ unlink(buf2);
-+ }
-+ if (rmdir(buf) < 0)
-+ goto VD_RECURSIVE_RMDIR_ERR;
-+
-+ closedir(dp);
-+ return (0);
-+
-+VD_RECURSIVE_RMDIR_ERR:
-+ closedir(dp);
-+ return (-1);
-+}
-+
-+/*
-+ * These functions test specified path.
-+ * Isarchive:
-+ * tests whether it's an archive?
-+ * Isvdir:
-+ * tests whether it's in the virtual directory?
-+ */
-+int Isarchive(path)
-+char *path;
-+{
-+ int ftype;
-+
-+ if ((ftype = vd_ftype(path)) < 0)
-+ return 0;
-+
-+ if (ftype == RFT_COMPRESS)
-+ if (!(ftype = vd_compp(path, NULL)))
-+ return 0;
-+
-+ return ftype;
-+}
-+
-+int Isvdir(path)
-+char *path;
-+{
-+ int rv = 0;
-+ char tmp1[MAXPATHLEN+1], tmp2[MAXPATHLEN+1];
-+ int archive1, archive2;
-+
-+ strcpy(tmp1, path);
-+ strcpy(tmp2, path);
-+
-+ vd_optimize_path(tmp1);
-+ Dirtovd(tmp2);
-+
-+ archive1 = Isarchive(tmp1);
-+ archive2 = Isarchive(tmp2);
-+
-+ if (strcmp(tmp1, tmp2)) {
-+ char tmp3[MAXPATHLEN+1], tmp4[MAXPATHLEN+1];
-+ int archive3, archive4;
-+
-+ sprintf(tmp3, "%s%s", vdroot, tmp1);
-+ strcpy(tmp4, tmp2+strlen(vdroot));
-+
-+ archive3 = Isarchive(tmp3);
-+ archive4 = Isarchive(tmp4);
-+
-+ if (archive4 && !strcmp(tmp1, tmp4)) {
-+ rv |= 06;
-+ return rv;
-+ }
-+ rv |= 01;
-+ if (archive2)
-+ rv |= 02;
-+ else if (archive4)
-+ rv |= 06;
-+ return rv;
-+ }
-+ if (archive1)
-+ rv |= 02;
-+
-+ return rv;
-+}
-+
-+/*
-+ * This function optimizes given path.
-+ * Expand '~' to home directory and removes '.', and treat '..'.
-+ */
-+static void vd_optimize_path(path)
-+char *path;
-+{
-+ char *tmp, *reserve;
-+
-+ if (!strcmp(path, STDINSTR))
-+ return;
-+
-+ if (*path == '\0') {
-+ xv_getwd(path, MAXPATHLEN+1);
-+ return;
-+ }
-+ if (*path == '~')
-+ Globify(path);
-+ if (*path != '/') {
-+ char tmp[MAXPATHLEN+1];
-+
-+ strcpy(tmp, path);
-+ xv_getwd(path, MAXPATHLEN+1);
-+ strcat(path, "/");
-+ strcat(path, tmp);
-+ }
-+
-+ reserve = tmp = path;
-+ while(*path != '\0') {
-+ if (*path == '/') {
-+ *tmp++ = *path;
-+ while (*++path == '/')
-+ ;
-+ continue;
-+ }
-+ if ((*path == '.') && (*(path-1) == '/')) {
-+ if (*(path+1) == '/') {
-+ tmp--;
-+ path++;
-+ continue;
-+ } else if (*(path+1) == '\0') {
-+ tmp--;
-+ break;
-+ } else if (*(path+1) == '.') {
-+ if (*(path+2) == '/') {
-+ if ((tmp - reserve) > 1)
-+ for (tmp-=2; (*tmp != '/'); tmp--)
-+ ;
-+ else
-+ tmp = reserve;
-+ path+=2;
-+ continue;
-+ } else if (*(path+2) == '\0') {
-+ if ((tmp - reserve) > 1)
-+ for (tmp-=2; (*tmp != '/'); tmp--)
-+ ;
-+ else
-+ tmp = reserve+1;
-+ break;
-+ }
-+ }
-+ }
-+ *tmp++ = *path++;
-+ }
-+ if (((tmp - reserve) > 1) && *(tmp-1) == '/')
-+ tmp--;
-+ if (tmp == reserve)
-+ *tmp++ = '/';
-+
-+ *tmp = '\0';
-+}
-+
-+/*
-+ * These functions detect file type.
-+ */
-+static int vd_ftype(fname)
-+char *fname;
-+{
-+ /* check archive type */
-+
-+ FILE *fp;
-+ byte magicno[30]; /* first 30 bytes of file */
-+ int rv, n;
-+ struct stat st;
-+
-+ if (!fname) return VD_ERR; /* shouldn't happen */
-+
-+ if ((!stat(fname, &st)) && (st.st_mode & S_IFMT) == S_IFDIR)
-+ return VD_UKN;
-+ fp = xv_fopen(fname, "r");
-+ if (!fp) return VD_ERR;
-+
-+ n = fread(magicno, (size_t) 1, (size_t) 30, fp);
-+ fclose(fp);
-+
-+ if (n<30) return VD_UKN; /* files less than 30 bytes long... */
-+
-+ rv = VD_UKN;
-+
-+ if (magicno[0] == 0x60 && magicno[1]==0xea) rv = VD_ARJ;
-+
-+ else if (magicno[2] == '-' && magicno[3] == 'l' &&
-+ magicno[4] == 'h') rv = VD_LZH;
-+
-+ else if (strncmp((char *) magicno,"PK", (size_t) 2)==0) rv = VD_ZIP;
-+
-+ else if (magicno[20]==0xdc && magicno[21]==0xa7 &&
-+ magicno[22]==0xc4 && magicno[23]==0xfd) rv = VD_ZOO;
-+
-+ else if (vd_tarc(fname)) rv = VD_TAR;
-+
-+ else if (magicno[0]==0x1f && magicno[1]==0x9d) rv = RFT_COMPRESS;
-+
-+ else if (!strncmp((char *) &magicno[11], "MAJYO", (size_t) 5))
-+ rv = VD_UKN; /* XXX */
-+
-+ else if (magicno[0] == 26) rv = VD_ARC;
-+
-+#ifdef GUNZIP
-+ else if (magicno[0]==0x1f && magicno[1]==0x8b) rv = RFT_COMPRESS;/* gzip */
-+ else if (magicno[0]==0x1f && magicno[1]==0x9e) rv = RFT_COMPRESS;/* old */
-+ else if (magicno[0]==0x1f && magicno[1]==0x1e) rv = RFT_COMPRESS;/* pack */
-+#endif
-+
-+ return rv;
-+}
-+
-+static int vd_compp(path, newpath)
-+char *path, *newpath;
-+{
-+ /*
-+ * uncompress and check archive type.
-+ *
-+ * If newpath is NULL, uncompress only 512 byte of 'path' and
-+ * check archive type, so it is for SPEED-UP strategy.
-+ * In this case, caller this function does not have to unlink
-+ * tempoary file.
-+ * Unfortunately it does not work in VMS system.
-+ */
-+
-+ int file_type, r;
-+ char uncompname[128], basename[128];
-+ int comptype;
-+
-+ if (newpath) *newpath = '\0';
-+ strncpy(basename, path, 127);
-+ comptype = ReadFileType(path);
-+#if (defined(VMS) && !defined(GUNZIP))
-+ /* VMS decompress doesn't like the file to have a trailing .Z in fname
-+ however, GUnZip is OK with it, which we are calling UnCompress */
-+ *rindex (basename, '.') = '\0';
-+#endif
-+#ifdef VMS
-+ if (UncompressFile(basename, uncompname)) {
-+#else
-+ if (newpath == NULL)
-+ r = vd_UncompressFile(basename, uncompname);
-+ else
-+ r = UncompressFile(basename, uncompname, comptype);
-+ if (r) {
-+#endif
-+ if ((file_type = vd_ftype(uncompname)) < 0) {
-+ unlink(uncompname);
-+ return 0;
-+ }
-+ if (newpath) strcpy(newpath, uncompname);
-+ else unlink(uncompname);
-+ } else {
-+ return 0;
-+ }
-+ return file_type;
-+}
-+
-+#define HEADERSIZE 512
-+
-+static void vd_Dirtovd PARM((char *));
-+static int stderr_on PARM((void));
-+static int stderr_off PARM((void));
-+static FILE *popen_nul PARM((char *, char *));
-+
-+static int vd_UncompressFile(name, uncompname)
-+char *name, *uncompname;
-+{
-+ /* Yap, I`m nearly same as original `UncompnameFile' function, but,
-+ 1) I extract `name' file ONLY first 512 byte.
-+ 2) I'm called only from UNIX and UNIX like OS, *NOT* VMS */
-+ /* returns '1' on success, with name of uncompressed file in uncompname
-+ returns '0' on failure */
-+
-+ char namez[128], *fname, buf[512], tmp[HEADERSIZE];
-+ int n, tmpfd;
-+ FILE *pfp, *tfp;
-+
-+ fname = name;
-+ namez[0] = '\0';
-+
-+
-+#ifndef GUNZIP
-+ /* see if compressed file name ends with '.Z'. If it *doesn't*, we need
-+ to temporarily rename it so it *does*, uncompress it, and rename it
-+ *back* to what it was. necessary because uncompress doesn't handle
-+ files that don't end with '.Z' */
-+
-+ if (strlen(name) >= (size_t) 2 &&
-+ strcmp(name + strlen(name)-2,".Z")!=0 &&
-+ strcmp(name + strlen(name)-2,".z")!=0) {
-+ strcpy(namez, name);
-+ strcat(namez,".Z");
-+
-+ if (rename(name, namez) < 0) {
-+ sprintf(buf, "Error renaming '%s' to '%s': %s",
-+ name, namez, ERRSTR(errno));
-+ ErrPopUp(buf, "\nBummer!");
-+ return 0;
-+ }
-+
-+ fname = namez;
-+ }
-+#endif /* not GUNZIP */
-+
-+ sprintf(uncompname, "%s/xvuXXXXXX", tmpdir);
-+#ifdef USE_MKSTEMP
-+ tmpfd = mkstemp(uncompname);
-+#else
-+ mktemp(uncompname);
-+#endif
-+
-+ sprintf(buf,"%s -c %s", UNCOMPRESS, fname);
-+ SetISTR(ISTR_INFO, "Uncompressing Header '%s'...", BaseName(fname));
-+ if ((pfp = popen_nul(buf, "r")) == NULL) {
-+ SetISTR(ISTR_INFO, "Cannot extract for archive '%s'.",
-+ BaseName(fname));
-+ Warning();
-+#ifdef USE_MKSTEMP
-+ if (tmpfd >= 0)
-+ close(tmpfd);
-+#endif
-+ return 0;
-+ }
-+#ifdef USE_MKSTEMP
-+ if (tmpfd < 0)
-+#else
-+ if ((tmpfd = open(uncompname,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR)) < 0)
-+#endif
-+ {
-+ SetISTR(ISTR_INFO, "Unable to create temporary file.",
-+ BaseName(uncompname));
-+ Warning();
-+ pclose(pfp);
-+ }
-+ if ((tfp = fdopen(tmpfd, "w")) == NULL) {
-+ SetISTR(ISTR_INFO, "Unable to create temporary file.",
-+ BaseName(uncompname));
-+ Warning();
-+ close(tmpfd);
-+ pclose(pfp);
-+ return 0;
-+ }
-+ if ((n = fread(tmp, 1, sizeof(tmp), pfp)) != HEADERSIZE) {
-+ SetISTR(ISTR_INFO, "Unable to read '%s'.",
-+ BaseName(fname));
-+ Warning();
-+ pclose(pfp);
-+ fflush(tfp);
-+ fclose(tfp);
-+ close(tmpfd);
-+ return 0;
-+ }
-+ fwrite(tmp, 1, n, tfp);
-+ fflush(tfp);
-+ fclose(tfp);
-+ close(tmpfd);
-+ pclose(pfp);
-+
-+ /* if we renamed the file to end with a .Z for the sake of 'uncompress',
-+ rename it back to what it once was... */
-+
-+ if (strlen(namez)) {
-+ if (rename(namez, name) < 0) {
-+ sprintf(buf, "Error renaming '%s' to '%s': %s",
-+ namez, name, ERRSTR(errno));
-+ ErrPopUp(buf, "\nBummer!");
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+#define TARBLOCK 512
-+#define CKSTART 148 /* XXX */
-+#define CKSIZE 8
-+
-+/*
-+ * Tar file: 1, other: 0
-+ */
-+static int vd_tarc(fname)
-+char *fname;
-+{
-+ FILE *fp;
-+ unsigned int sum;
-+ char *ckp, buf[TARBLOCK];
-+
-+ if ((fp = fopen(fname, "r")) == NULL)
-+ return 0;
-+
-+ fread(buf, TARBLOCK, 1, fp);
-+ fclose(fp);
-+
-+ for (sum = 0, ckp = buf + CKSTART;
-+ (ckp < buf + CKSTART + CKSIZE) && *ckp != '\0';
-+ ckp++) {
-+ sum *= 8;
-+ if (*ckp == ' ')
-+ continue;
-+ if (*ckp < '0' || '7' < *ckp)
-+ return 0;
-+ sum += *ckp - '0';
-+ }
-+ if (sum != vd_tar_sumchk(buf))
-+ return 0;
-+
-+ return 1;
-+}
-+
-+static unsigned int vd_tar_sumchk(buf)
-+char *buf;
-+{
-+ int i;
-+ unsigned int sum = 0;
-+
-+ for (i = 0; i < CKSTART; i++) {
-+ sum += *(buf + i);
-+ }
-+ sum += ' ' * 8;
-+ for (i += 8; i < TARBLOCK; i++) {
-+ sum += *(buf + i);
-+ }
-+ return sum;
-+}
-+
-+
-+static int stde = -1; /* fd of stderr */
-+static int nul = -1; /* fd of /dev/null */
-+
-+/*
-+ * switch off the output to stderr(bypass to /dev/null).
-+ */
-+static int stderr_off()
-+{
-+ if (nul < 0)
-+ nul = open("/dev/null", O_RDONLY);
-+ if (nul < 0) {
-+ fprintf(stderr, "/dev/null open failure\n");
-+ return -1;
-+ }
-+ if (stde < 0)
-+ stde = dup(2);
-+ if (stde < 0) {
-+ fprintf(stderr, "duplicate stderr failure\n");
-+ return -1;
-+ }
-+ close(2);
-+ dup(nul);
-+ return 0;
-+}
-+
-+/*
-+ * turn on stderr output.
-+ */
-+static int stderr_on()
-+{
-+ if ((stde < 0) || (nul < 0)) {
-+ fprintf(stderr, "stderr_on should call after stderr_off\n");
-+ return -1;
-+ }
-+ close(2);
-+ dup(stde);
-+ return 0;
-+}
-+
-+/*
-+ * popen with no output to stderr.
-+ */
-+static FILE *popen_nul(prog, mode)
-+char *prog, *mode;
-+{
-+ FILE *fp;
-+
-+ stderr_off();
-+ fp = popen(prog, mode);
-+ stderr_on();
-+ return fp;
-+}
-+
-+/*
-+ * These functions are for SIGNAL.
-+ * If XV end by C-c, there are dust of directory which name is .xvvd???,
-+ * made by xvvd. Then, I handle SIGINT, and add good finish.
-+ */
-+void vd_HUPhandler()
-+{
-+#if defined(SYSV) || defined(SVR4) || defined(__USE_XOPEN_EXTENDED)
-+ sighold(SIGHUP);
-+#else
-+ int mask;
-+ mask = sigblock(sigmask(SIGHUP));
-+#endif
-+
-+ Vdsettle();
-+
-+#if defined(SYSV) || defined(SVR4) || defined(__USE_XOPEN_EXTENDED)
-+ sigrelse(SIGHUP);
-+ signal(SIGHUP, (void (*)PARM((int))) vd_HUPhandler);
-+#else
-+ sigsetmask(mask);
-+#endif
-+}
-+
-+void vd_handler(sig)
-+int sig;
-+{
-+#if defined(SYSV) || defined(SVR4) || defined(__USE_XOPEN_EXTENDED)
-+ sighold(sig);
-+#else
-+ sigblock(sigmask(sig));
-+#endif
-+
-+ Quit(1); /*exit(1);*/
-+}
-+
-+int vd_Xhandler(disp,event)
-+Display *disp;
-+XErrorEvent *event;
-+{
-+ Quit(1); /*exit(1);*/
-+ return (1); /* Not reached */
-+}
-+
-+int vd_XIOhandler(disp)
-+Display *disp;
-+{
-+ fprintf(stderr, "XIO fatal IO error ? (?) on X server\n");
-+ fprintf(stderr, "You must exit normally in xv usage.\n");
-+ Quit(1); /*exit(1);*/
-+ return (1); /* Not reached */
-+}
-+
-+void vd_handler_setup()
-+{
-+ signal(SIGHUP, (void (*)PARM((int))) vd_HUPhandler);
-+ signal(SIGINT, (void (*)PARM((int))) vd_handler);
-+ signal(SIGTERM,(void (*)PARM((int))) vd_handler);
-+
-+ (void)XSetErrorHandler(vd_Xhandler);
-+ (void)XSetIOErrorHandler(vd_XIOhandler);
-+}
-+#endif /* AUTO_EXPAND */
-diff -ruN xv-3.10a-bugfixes/xvwbmp.c xv-3.10a-enhancements/xvwbmp.c
---- xv-3.10a-bugfixes/xvwbmp.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvwbmp.c 2005-04-03 14:02:18.000000000 -0700
-@@ -0,0 +1,323 @@
-+/*
-+ * xvwbmp.c - i/o routings for WBMP files
-+ * defined by OMA (http://www.openmobilealliance.com)
-+ * as a standard for images for micro devices.
-+ *
-+ * exports :
-+ *
-+ * LoadWBMP(fname, numcols);
-+ * WriteWBMP(fp, pic, ptype, w, h, r, g, b, numcols, style);
-+ *
-+ * author: Pawel S. Veselov <vps@manticore.2y.net>
-+ * http://manticore.2y.net/
-+ *
-+ */
-+
-+#include "xv.h"
-+
-+typedef short int16;
-+typedef unsigned char uint8;
-+typedef unsigned short uint16; /* sizeof (uint16) must == 2 */
-+#if defined(__alpha) || _MIPS_SZLONG == 64
-+typedef int int32;
-+typedef unsigned int uint32; /* sizeof (uint32) must == 4 */
-+#else
-+typedef long int32;
-+typedef unsigned long uint32; /* sizeof (uint32) must == 4 */
-+#endif
-+
-+#define MUST(a) if (!(a)) {\
-+ return fail(st_fname, st_err);\
-+ close(fd); \
-+ }
-+#define READU8(fd,u) if ((read(fd, &u, 1)<1)) {\
-+ myfree(); \
-+ close(fd); \
-+ return fail(st_fname, err_ueof); }
-+#define SREADU8(fd, u) if ((read(fd, &u, 1,)<1)) {\
-+ { st_err = err_ueof; return 0; }
-+
-+#define SREADC(fd, str, l) { \
-+ str = (char*)mymalloc(l); \
-+ if (!str) { \
-+ myfree(); \
-+ FatalError("LoadWBMP: can't malloc extension buffer"); \
-+ } \
-+ if (read(fd, str, l)<l) { \
-+ st_err = err_ueof; \
-+ return 0; \
-+ }
-+
-+static char * err_ueof = "Unexpected EOF";
-+static char * err_unst = "Unsupported image type";
-+static char * err_extf = "Extensions are forbidden";
-+static char * err_inmb = "Invalid multibyte integer";
-+
-+static char * st_fname;
-+static char * st_err;
-+
-+static int fail PARM((char *, char *));
-+static int read_mb PARM((int *, int));
-+static void write_mb PARM((uint32, FILE *));
-+static int read_ext PARM((int, uint8));
-+static void * mymalloc PARM((int));
-+static void myfree PARM((void));
-+static uint8 * render1 PARM((uint8 *, int, int));
-+
-+void ** mymem = NULL;
-+int mymems = 0;
-+
-+int LoadWBMP(char * fname, PICINFO * pinfo)
-+{
-+ int fd;
-+ int im_type; /* image type (only type 0 supported) */
-+ uint8 fix_header; /* fixed header field */
-+ int width, height;
-+ int npixels, raw_size, aux;
-+ uint8 * raw;
-+
-+ st_fname = fname;
-+
-+ fd = open(fname, O_RDONLY);
-+ if (fd < 0) {
-+ return fail(fname, "Couldn't open the file");
-+ }
-+
-+ MUST(read_mb(&im_type, fd));
-+ if (im_type) {
-+ return fail(fname, err_unst);
-+ }
-+
-+ READU8(fd, fix_header);
-+
-+ MUST(read_ext(fd, fix_header));
-+
-+ MUST(read_mb(&width, fd));
-+ MUST(read_mb(&height, fd));
-+
-+ npixels = width * height;
-+ raw_size = (npixels+7) / 8;
-+ if (width <= 0 || height <= 0 || npixels/width != height ||
-+ npixels+7 < npixels)
-+ {
-+ return fail(fname, "image dimensions out of range");
-+ }
-+
-+ raw = mymalloc(raw_size);
-+ if (!raw) {
-+ myfree();
-+ FatalError("LoadWBMP: can't malloc image buffer");
-+ }
-+
-+ aux = read(fd, raw, raw_size);
-+ if (aux < raw_size) {
-+ fail(fname, "Image size shrank");
-+ raw_size = aux;
-+ }
-+
-+ pinfo->r[0] = 0;
-+ pinfo->g[0] = 0;
-+ pinfo->b[0] = 0;
-+ pinfo->r[1] = 255;
-+ pinfo->g[1] = 255;
-+ pinfo->b[1] = 255;
-+
-+ pinfo->pic = render1(raw, raw_size, npixels);
-+ pinfo->type = PIC8;
-+
-+ pinfo->w = pinfo->normw = width;
-+ pinfo->h = pinfo->normh = height;
-+ pinfo->frmType = F_BWDITHER;
-+
-+ sprintf(pinfo->fullInfo, "WBMP, 1 bit per pixel, %d bytes", raw_size);
-+ sprintf(pinfo->shrtInfo, "%dx%d WBMP (WAP/OMA).", width, height);
-+ pinfo->comment = (char*)NULL;
-+
-+ close(fd);
-+
-+ myfree();
-+ return 1;
-+}
-+
-+int WriteWBMP(FILE * fp, byte * pic, int ptype, int w, int h,
-+ byte * rmap, byte *gmap, byte *bmap,
-+ int numcols, int colorstyle)
-+{
-+ int count = 0;
-+ uint8 bit = 0;
-+ int i;
-+
-+ write_mb(0, fp); /* type : always 0 */
-+ putc(0, fp); /* fixed header : always 0 for type 0 */
-+ write_mb((uint32)w, fp);
-+ write_mb((uint32)h, fp);
-+
-+ /* ready to write data */
-+
-+ for (i=0; i<w*h; i++) {
-+ bit |= (((pic[i]&1)<<(7-(count++))));
-+ if (count == 8) {
-+ putc(bit, fp);
-+ count = 0;
-+ }
-+ }
-+
-+ if (!count) {
-+ putc(bit, fp);
-+ }
-+
-+ return 0;
-+}
-+
-+int fail(char * name, char * msg)
-+{
-+ SetISTR(ISTR_WARNING, "%s : %s", name, msg);
-+ return 0;
-+}
-+
-+void write_mb(uint32 data, FILE * f)
-+{
-+ int i = 32;
-+ uint32 aux = data;
-+ int no;
-+
-+ if (!aux) {
-+ i = 1;
-+ } else {
-+ while (!(aux & 0x80000000)) {
-+ aux <<= 1;
-+ i--;
-+ }
-+ }
-+
-+ /* i tells us how many bits are left to encode */
-+
-+ no = (i / 7 + ((i % 7)?1:0))-1;
-+
-+ /*
-+ fprintf(stderr, "writing %x, bits to write=%d, passes=%d\n",
-+ data, i, no);
-+ */
-+
-+ do {
-+ uint8 value = no?0x80:0x0;
-+ value |= ((data >> (no*7)) & 0x7f);
-+ putc(value, f);
-+ } while ((no--)>0);
-+
-+}
-+
-+int read_mb(int * dst, int fd)
-+{
-+ int ac = 0;
-+ int ct = 0;
-+
-+ while (1) {
-+ uint8 bt;
-+ if ((ct++)==6) {
-+ st_err = err_inmb;
-+ return 0;
-+ }
-+
-+ if ((read(fd, &bt, 1)) < 1) {
-+ st_err = err_ueof;
-+ return 0;
-+ }
-+ ac = (ac << 7) | (bt & 0x7f); /* accumulates up to 42 bits?? FIXME */
-+ if (!(bt & 0x80))
-+ break;
-+ }
-+ *dst = ac;
-+ return 1;
-+}
-+
-+int read_ext(int fd, uint8 fixed)
-+{
-+ if (!(fixed&0x7f)) { /* no extensions */
-+ return 1;
-+ }
-+
-+ /*
-+ * The only described type is WBMP 0, that must not
-+ * have extensions.
-+ */
-+
-+ st_err = err_extf;
-+ return 0;
-+
-+ /*
-+
-+ fixed = (fixed >> 5)&0x3;
-+
-+ switch (fixed) {
-+ case 0:
-+ while (true) {
-+ SREADU8(fd, fixed);
-+ if (!(fixed & 0x7f)) { break; }
-+ }
-+ break;
-+ case 0x3:
-+ {
-+ char * par;
-+ char * val;
-+ SREADU8(fd, fixed);
-+ SREADC(fd, par, (fixed>>4)&0x6);
-+ SREADC(fd, val, fixed&0xf);
-+ }
-+ break;
-+ }
-+ */
-+}
-+
-+void * mymalloc(int l)
-+{
-+ mymem = (void**)realloc(mymem, mymems+1);
-+ if (!mymem)
-+ FatalError("LoadWBMP: can't realloc buffer");
-+ return (mymem[mymems++] = malloc(l));
-+}
-+
-+void myfree()
-+{
-+ int i;
-+
-+ if (mymem) {
-+ for (i=0; i<mymems; i++) {
-+ if (mymem[i])
-+ free(mymem[i]);
-+ }
-+ free(mymem);
-+ }
-+ mymem = (void**)NULL;
-+ mymems = 0;
-+}
-+
-+uint8 * render1(uint8 * data, int size, int npixels)
-+{
-+ byte * pic;
-+ int i;
-+ int cnt = 0;
-+ uint8 cb = *data;
-+
-+ pic = calloc(npixels,1); /* checked for overflow by caller */
-+ if (!pic) {
-+ myfree();
-+ FatalError("LoadWBMP: can't allocate 'pic' buffer");
-+ }
-+
-+ /* expand bits into bytes */
-+ /* memset(pic, 0, npixels); */
-+
-+ for (i=0; i<npixels; i++) {
-+
-+ pic[i] = (cb>>7)&1;
-+
-+ if ((++cnt)==8) {
-+ cb = *(++data);
-+ cnt = 0;
-+ } else {
-+ cb <<=1;
-+ }
-+ }
-+ return pic;
-+}
-diff -ruN xv-3.10a-bugfixes/xvxpm.c xv-3.10a-enhancements/xvxpm.c
---- xv-3.10a-bugfixes/xvxpm.c 2005-03-28 22:22:50.000000000 -0800
-+++ xv-3.10a-enhancements/xvxpm.c 2005-04-17 14:45:28.000000000 -0700
-@@ -175,7 +175,15 @@
-
- do {
- char key[3];
-- char color[40]; /* Need to figure a good size for this... */
-+ char color[80]; /* Need to figure a good size for this... */
-+
-+/*
-+ * Problem with spaces in color names
-+ *
-+ * X s Color Name m Other Name c Last Name
-+ *
-+ * ... this parser doesn't find `Any Name'
-+ */
-
- for (j=0; j<2 && (c != ' ') && (c != '\t') && (c != EOF); j++) {
- key[j] = c;
-@@ -187,7 +195,7 @@
- if (c == EOF) /* The failure condition of getc() */
- return (XpmLoadError(bname, "Error parsing colormap line"));
-
-- for (j=0; j<39 && (c!=' ') && (c!='\t') && (c!='"') && c!=EOF; j++) {
-+ for (j=0; j<79 && (c!=' ') && (c!='\t') && (c!='"') && c!=EOF; j++) {
- color[j] = c;
- c = XpmGetc(fp);
- }
-@@ -248,7 +256,7 @@
- else { /* 'None' or unrecognized color spec */
- int rgb;
-
-- if (strcmp(color, "None") == 0) rgb = 0xb2c0dc; /* infobg */
-+ if (strcasecmp(color, "None") == 0) rgb = 0xb2c0dc; /* infobg */
- else {
- SetISTR(ISTR_INFO, "%s: unknown color spec '%s'", bname, color);
- Timer(1000);
-@@ -321,7 +329,8 @@
- *i_sptr++ = mapentry->cv_rgb[2];
- }
- } /* for ( j < w ) */
-- (void)XpmGetc(fp); /* Throw away the close " */
-+ while (((c = XpmGetc(fp))!=EOF) && /* Throw away the close " and */
-+ (c != '"')); /* erase all remaining pixels */
-
- if (!(i%7)) WaitCursor();
- } /* for ( i < h ) */
-diff -ruN xv-3.10a-bugfixes/xvzx.c xv-3.10a-enhancements/xvzx.c
---- xv-3.10a-bugfixes/xvzx.c 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-enhancements/xvzx.c 2004-05-16 18:08:33.000000000 -0700
-@@ -0,0 +1,349 @@
-+/*
-+ * xvzx.c - load routine for Spectrum screen$
-+ *
-+ * John Elliott, 7 August 1998
-+ *
-+ * LoadZX(fname, pinfo) - load file
-+ * WriteZX(fp,pic,ptype,w,h,r,g,b,numcols,style,cmt,comment) - convert to
-+ * 256x192 SCREEN$ and save.
-+ */
-+
-+#include "copyright.h"
-+
-+#include "xv.h"
-+
-+
-+
-+/*
-+ * comments on error handling:
-+ * a file with a bad header checksum is a warning error.
-+ *
-+ * not being able to malloc is a Fatal Error. The program is aborted.
-+ */
-+
-+
-+#define TRUNCSTR "File appears to be truncated."
-+
-+static int zxError PARM((char *, char *));
-+
-+static char *bname;
-+
-+/*******************************************/
-+int LoadZX(fname, pinfo)
-+ char *fname;
-+ PICINFO *pinfo;
-+/*******************************************/
-+{
-+ /* returns '1' on success */
-+
-+ FILE *fp;
-+ unsigned int c, c1;
-+ int x,y, trunc;
-+ byte *zxfile;
-+
-+ bname = BaseName(fname);
-+
-+ pinfo->pic = (byte *) NULL;
-+ pinfo->comment = (char *) NULL;
-+
-+ /* Allocate memory for a 256x192x8bit image */
-+
-+ pinfo->pic = (byte *)malloc(256*192);
-+ if (!pinfo->pic) FatalError("malloc failure in xvzx.c LoadZX");
-+
-+ /* Allocate 1B80h bytes and slurp the whole file into memory */
-+
-+ zxfile = (byte *)malloc(7040);
-+ if (!zxfile) FatalError("malloc failure in xvzx.c LoadZX");
-+
-+ /* open the file */
-+ fp = xv_fopen(fname,"r");
-+ if (!fp) return (zxError(bname, "can't open file"));
-+
-+ /* Load it in en bloc */
-+ memset(zxfile, 0, 7040);
-+ if (fread(zxfile, 1, 7040, fp) < 7040) trunc = 1;
-+
-+ /* Transform to 8-bit */
-+
-+ for (y = 0; y < 192; y++) for (x = 0; x < 256; x++)
-+ {
-+ /* Spectrum screen layout: three 2k segments at y=0, y=64, y=128 */
-+ /* In each segment: Scan lines 0,8,16,...,56,1,9,...,57 etc. Each
-+ scanline is 32 bytes, so line 1 is 256 bytes after line 0
-+
-+ So address of line start is ((y>>6) * 2048) + ((y & 7) * 256)
-+ + ((y & 0x38) * 4)
-+
-+ The colour byte for a cell is at screen + 6k + (y >> 3)*32 + (x>>3)
-+
-+ */
-+
-+ int offset;
-+ byte *dst = pinfo->pic + 256*y + x;
-+ byte attr, pt, mask;
-+
-+ offset = (y >> 6) * 2048;
-+ offset += (y & 7) * 256;
-+ offset += (y & 0x38) * 4;
-+ offset += (x >> 3);
-+
-+ pt = zxfile[offset + 128]; /* Ink/paper map */
-+
-+ offset = 0x1880;
-+ offset += (y >> 3) * 32;
-+ offset += (x >> 3);
-+
-+ attr = zxfile[offset]; /* Colours for cell */
-+
-+ mask = 0x80;
-+
-+ if (x & 7) mask >>= (x & 7);
-+
-+ if (pt & mask) *dst = attr & 7; /* Ink */
-+ else *dst = (attr >> 3) & 7; /* Paper */
-+
-+ if (attr & 0x40) *dst |= 8; /* High intensity */
-+ }
-+
-+ /* Picture bytes converted; now build the colour maps */
-+
-+ pinfo->normw = pinfo->w = 256;
-+ pinfo->normh = pinfo->h = 192;
-+ pinfo->type = PIC8;
-+
-+ for (c = 0; c < 16; c++)
-+ {
-+ if (c < 8) c1 = 192; else c1 = 255; /* low-intensity colours use 192 */
-+ /* high-intensity colours use 255 */
-+ pinfo->b[c] = (c & 1 ? c1 : 0);
-+ pinfo->r[c] = (c & 2 ? c1 : 0);
-+ pinfo->g[c] = (c & 4 ? c1 : 0);
-+ }
-+
-+ pinfo->colType = F_FULLCOLOR;
-+ pinfo->frmType = F_ZX; /* Save as SCREEN$ */
-+ sprintf(pinfo->fullInfo, "Spectrum SCREEN$, load address %04x",
-+ zxfile[16]+256*zxfile[17]);
-+ strcpy(pinfo->shrtInfo, "Spectrum SCREEN$.");
-+
-+ /* Almost as an afterthought, check that the +3DOS header is valid.
-+
-+ If it isn't, then odds are that the file isn't a graphic. But it
-+ had the right magic number, so it might be. Let them see it anyway.
-+
-+ The check is: Byte 127 of the header should be the 8-bit sum of bytes
-+ 0-126 of the header. The header should also have the
-+ +3DOS magic number, but we know it does or we wouldn't
-+ have got this far.
-+ */
-+
-+ c1 = 0;
-+ for (c1 = c = 0; c < 127; c++) c1 = ((c1 + zxfile[c]) & 0xFF);
-+ if (c1 != zxfile[127]) zxError(bname, "Bad header checksum.");
-+
-+ fclose(fp);
-+ free(zxfile);
-+ return 1;
-+}
-+
-+
-+
-+
-+
-+/*******************************************/
-+static int zxError(fname, st)
-+ char *fname, *st;
-+{
-+ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
-+ return 0;
-+}
-+
-+
-+/* Spectrum screen file header. The first 18 bytes are used in the magic
-+ number test */
-+
-+byte ZXheader[128] =
-+{
-+ 'P', 'L', 'U', 'S', '3', 'D', 'O', 'S', 26, /* Spectrum +3DOS file */
-+ 1, 0, /* Header type 1.0 */
-+ 128, 27, 0, 0, /* 7040 bytes */
-+ 3, /* Binary format */
-+ 0, 27, /* 6912 data bytes */
-+ 0, 64 /* load address 0x4000 */
-+};
-+
-+
-+
-+/* Get the Spectrum colour/bright byte (0-15) from a pixel */
-+
-+static int PointZX(pic, w, h, rmap, gmap, bmap, x, y)
-+ byte *pic;
-+ int w,h;
-+ byte *rmap, *gmap, *bmap;
-+ int x,y;
-+{
-+ int index, r, g, b, zxc;
-+
-+ /* If the picture is smaller than the screen, pad out the edges
-+ with "bright black" - a colour not otherwise returned */
-+
-+ if (x >= w || y >= h) return 8;
-+
-+ /* Get colour index */
-+
-+ index = pic[y*w + x];
-+
-+ /* Convert to rgb */
-+
-+ r = rmap[index];
-+ g = gmap[index];
-+ b = bmap[index];
-+ zxc = 0;
-+
-+ /* Work out Spectrum colour by a simplistic "nearest colour" method */
-+
-+ if (b >= 160) zxc |= 1; /* Blue */
-+ if (r >= 160) zxc |= 2; /* Red */
-+ if (g >= 160) zxc |= 4; /* Green */
-+ if (r > 208 || g >= 208 || b >= 208) zxc |= 8; /* High intensity */
-+
-+ return zxc;
-+}
-+
-+
-+/* Work out what colours should be used in a cell */
-+
-+static void CellZX(pic, w, h, rmap, gmap, bmap, cx, cy, zxfile)
-+ byte *pic;
-+ int w,h;
-+ byte *rmap, *gmap, *bmap;
-+ int cx,cy;
-+ byte *zxfile;
-+{
-+ byte counts[16]; /* Count of no. of colours */
-+ int offset, ink, paper, n, m, x, y, x0, y0, di, dp;
-+
-+ x0 = cx * 8; /* Convert from cell to pixel coords */
-+ y0 = cy * 8;
-+
-+ for (n = 0; n < 16; n++) counts[n] = 0; /* Reset all counts */
-+
-+ /* Count no. of pixels of various colours */
-+
-+ for (y = y0; y < y0+8; y++) for (x = x0; x < x0+8; x++)
-+ {
-+ m = PointZX(pic, w, h, rmap, gmap, bmap, x, y);
-+
-+ counts[m]++;
-+ }
-+ counts[8] = 0; /* Discard Bright Black (pixels not in the picture area)
-+ */
-+
-+ /* Assign the most popular colour as ink */
-+ for (n = m = ink = 0; n < 16; n++) if (counts[n] > m)
-+ {
-+ ink = n;
-+ m = counts[n];
-+ }
-+ counts[ink] = 0;
-+
-+ /* Assign the next most popular colour as paper */
-+ for (n = m = paper = 0; n < 16; n++) if (counts[n] > m)
-+ {
-+ paper = n;
-+ m = counts[n];
-+ }
-+ /* We have ink and paper. Set cell's attributes */
-+
-+ offset = cy*32 + cx + 0x1880;
-+
-+ /* Set the high-intensity bit if ink is high-intensity */
-+ if (ink & 8) zxfile[offset] = 0x40; else zxfile[offset] = 0;
-+ zxfile[offset] |= ((paper & 7) << 3);
-+ zxfile[offset] |= (ink & 7);
-+
-+ /* Plot the points */
-+ for (y = y0; y < y0+8; y++)
-+ {
-+ byte mask = 0x80;
-+
-+ offset = (y >> 6) * 2048;
-+ offset += (y & 7) * 256;
-+ offset += (y & 0x38) * 4;
-+ offset += (x0 >> 3);
-+
-+ for (x = x0; x < x0+8; x++)
-+ {
-+ /* Work out whether the point should be plotted as ink or
-+ paper */
-+ m = PointZX(pic, w, h, rmap, gmap, bmap, x, y);
-+
-+ di = (ink & 7) - (m & 7); /* "Difference" from ink */
-+ dp = (paper & 7) - (m & 7); /* "Difference" from paper */
-+
-+ if (di < 0) di = -di;
-+ if (dp < 0) dp = -dp;
-+
-+ if (di < dp) /* Point is more like ink */
-+ zxfile[offset+128] |= mask;
-+
-+ mask = (mask >> 1);
-+ }
-+ }
-+
-+}
-+
-+
-+
-+/*******************************************/
-+int WriteZX(fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,comment)
-+ FILE *fp;
-+ byte *pic;
-+ int ptype, w,h;
-+ byte *rmap, *gmap, *bmap;
-+ int numcols, colorstyle;
-+ char *comment;
-+{
-+ int rv, x, y;
-+ byte *zxfile;
-+ byte *pic8;
-+ byte rtemp[256],gtemp[256],btemp[256];
-+
-+ /* To simplify matters, reduce 24-bit to 8-bit. Since the Spectrum
-+ screen is 3.5-bit anyway, it doesn't make much difference */
-+
-+ if (ptype == PIC24)
-+ {
-+ pic8 = Conv24to8(pic, w, h, 256, rtemp,gtemp,btemp);
-+ if (!pic8) FatalError("Unable to malloc in WriteZX()");
-+ rmap = rtemp; gmap = gtemp; bmap = btemp; numcols=256;
-+ }
-+ else pic8 = pic;
-+
-+ ZXheader[127] = 0x71; /* The correct checksum. */
-+
-+ /* Create a memory image of the SCREEN$ */
-+
-+ zxfile = (byte *)malloc(7040);
-+ if (!zxfile) FatalError("malloc failure in xvzx.c WriteZX");
-+
-+ memset(zxfile, 0, 7040); /* Reset all points to black */
-+ memcpy(zxfile, ZXheader, 128); /* Create +3DOS header */
-+
-+ /* Convert the image, character cell by character cell */
-+ for (y = 0; y < 24; y++) for (x = 0; x < 32; x++)
-+ {
-+ CellZX(pic8, w, h, rmap, gmap, bmap, x, y, zxfile);
-+ }
-+ rv = 0;
-+ if (fwrite(zxfile, 1, 7040, fp) < 7040) rv = -1;
-+
-+ if (ptype == PIC24) free(pic8);
-+ free(zxfile);
-+
-+ if (ferror(fp)) rv = -1;
-+
-+ return rv;
-+}
-+
diff --git a/source/xap/xv/xv-3.10a-jumbo-fix-enh-patch-20070520.txt b/source/xap/xv/xv-3.10a-jumbo-fix-enh-patch-20070520.txt
new file mode 100644
index 000000000..51ff30a98
--- /dev/null
+++ b/source/xap/xv/xv-3.10a-jumbo-fix-enh-patch-20070520.txt
@@ -0,0 +1,42401 @@
+diff : xv-3.10a-jumbo-fix-enh-patch-20070520.txt
+
+This is a unified diff. It should be applied (using Larry Wall's "patch"
+program) to the stock XV 3.10a sources. See the "How to build" section of
+README.jumbo, which, along with roughly 40 other new files and 3 new sub-
+directories, should have been unpacked along with this jumbo patch:
+
+ README.jumbo
+ README.pcd
+ bits/br_bzip2
+ bits/br_jp2
+ bits/br_jpc
+ bits/br_mag
+ bits/br_maki
+ bits/br_mgcsfx
+ bits/br_pcd
+ bits/br_pi
+ bits/br_pic
+ bits/br_pic2
+ bits/br_png
+ bits/br_zx
+ contrib/
+ contrib/fnkey-scripts/
+ contrib/fnkey-scripts/README
+ contrib/fnkey-scripts/jpegcrop.sh
+ contrib/fnkey-scripts/jpegeditcom.sh
+ contrib/fnkey-scripts/jpeglogrot.sh
+ contrib/fnkey-scripts/jpegrot.sh
+ contrib/fnkey-scripts/jpegundocrop.sh
+ contrib/fedora/
+ contrib/fedora/README
+ contrib/fedora/Build-FC5
+ docs/xvdocs.pdf
+ tiff/RANLIB.sh
+ xv_mgcsfx.sample
+ xvhips.c
+ xvhips.h
+ xvjp2k.c
+ xvmag.c
+ xvmaki.c
+ xvmgcsfx.c
+ xvml.c
+ xvml.h
+ xvpcd.c
+ xvpi.c
+ xvpic.c
+ xvpic2.c
+ xvpng.c
+ xvvd.c
+ xvwbmp.c
+ xvzx.c
+
+
+diffs below:
+
+ Imakefile
+ Makefile
+ Makefile.std
+ bggen.c
+ bits/br_targa
+ bits/icon
+ cleandir
+ config.h
+ copyright.h
+ docs/bggen.man
+ docs/xcmap.man
+ docs/xv.man
+ docs/xvp2p.man
+ tiff/Makefile
+ tiff/Makefile.std
+ vdcomp.c
+ xcmap.c
+ xv.c
+ xv.h
+ xv24to8.c
+ xvalg.c
+ xvbmp.c
+ xvbrowse.c
+ xvbutt.c
+ xvcolor.c
+ xvctrl.c
+ xvcut.c
+ xvdflt.c
+ xvdflt.h
+ xvdial.c
+ xvdir.c
+ xvevent.c
+ xvfits.c
+ xvgam.c
+ xvgif.c
+ xvgifwr.c
+ xvgrab.c
+ xvgraf.c
+ xviff.c
+ xvimage.c
+ xvinfo.c
+ xviris.c
+ xvjpeg.c
+ xvmisc.c
+ xvpbm.c
+ xvpcx.c
+ xvpds.c
+ xvpictoppm.c
+ xvpm.c
+ xvpopup.c
+ xvps.c
+ xvrle.c
+ xvroot.c
+ xvscrl.c
+ xvsmooth.c
+ xvsunras.c
+ xvtarga.c
+ xvtext.c
+ xvtiff.c
+ xvtiffwr.c
+ xvxbm.c
+ xvxpm.c
+ xvxwd.c
+
+
+diff -ru xv-3.10a/Imakefile xv-3.10a-enhancements/Imakefile
+--- xv-3.10a/Imakefile 1995-01-13 12:24:01.000000000 -0800
++++ xv-3.10a-enhancements/Imakefile 2005-04-17 14:04:22.000000000 -0700
+@@ -104,6 +104,11 @@
+ SGI = -Dsgi
+ #endif
+
++/* install directory of xv_mgcsfx.sample. */
++MGCSFXDIR = $(LIBDIR)
++/* Directory of default configuration file. */
++MGCSFX = -DMGCSFXDIR=\"$(MGCSFXDIR)\"
++
+
+
+
+@@ -137,6 +142,8 @@
+ #if defined(SCOArchitecture)
+ SCO= -Dsco -DPOSIX -DNO_RANDOM
+ SYS_LIBRARIES= -lm -lc -lx
++#elif defined(HPArchitecture)
++SYS_LIBRARIES= -lm -lV3
+ #else
+ SYS_LIBRARIES= -lm
+ #endif
+@@ -147,7 +154,7 @@
+
+ DEFINES= $(SCO) $(UNIX) $(NODIRENT) $(VPRINTF) $(TIMERS) \
+ $(HPUX7) $(JPEG) $(TIFF) $(PDS) $(DXWM) $(RAND) \
+- $(BACKING_STORE) $(BSDTYPES) $(SGI)
++ $(BACKING_STORE) $(BSDTYPES) $(SGI) $(MGCSFX)
+
+ INCLUDES = $(JPEGINCLUDE) $(TIFFINCLUDE)
+
+@@ -157,7 +164,9 @@
+ xvdial.c xvgraf.c xvsunras.c xvjpeg.c xvps.c xvpopup.c xvdflt.c \
+ xvtiff.c xvtiffwr.c xvpds.c xvrle.c xviris.c xvgrab.c vprintf.c \
+ xvbrowse.c xvtext.c xvpcx.c xviff.c xvtarga.c xvxpm.c xvcut.c \
+- xvxwd.c xvfits.c
++ xvxwd.c xvfits.c xvpng.c xvzx.c xvwbmp.c xvpcd.c \
++ xvmag.c xvpic.c xvmaki.c xvpi.c xvpic2.c xvvd.c xvmgcsfx.c \
++ xvml.c
+
+ OBJS1 = xv.o xvevent.o xvroot.o xvmisc.o xvimage.o xvcolor.o xvsmooth.o \
+ xv24to8.o xvgif.o xvpm.o xvinfo.o xvctrl.o xvscrl.o xvalg.o \
+@@ -165,7 +174,9 @@
+ xvdial.o xvgraf.o xvsunras.o xvjpeg.o xvps.o xvpopup.o xvdflt.o \
+ xvtiff.o xvtiffwr.o xvpds.o xvrle.o xviris.o xvgrab.o vprintf.o \
+ xvbrowse.o xvtext.o xvpcx.o xviff.o xvtarga.o xvxpm.o xvcut.o \
+- xvxwd.o xvfits.o
++ xvxwd.o xvfits.o xvpng.o xvzx.o xvwbmp.o xvpcd.o \
++ xvmag.o xvpic.o xvmaki.o xvpi.o xvpic2.o xvvd.o xvmgcsfx.o \
++ xvml.o
+
+ SRCS2= bggen.c
+ OBJS2= bggen.o
+@@ -266,6 +277,8 @@
+ InstallManPageLong(docs/xvp2p,$(MANDIR),xvpictoppm)
+ InstallManPageLong(docs/vdcomp,$(MANDIR),vdcomp)
+
++InstallNonExecFile(xv_mgcsfx.sample,$(MGCSFXDIR))
++
+ tar:
+ tar cf xv.tar Makefile* Imakefile *.c *.h bits docs \
+ docs unsupt vms $(JPEGDIR) $(TIFFDIR) $(MISC)
+diff -ru xv-3.10a/Makefile xv-3.10a-enhancements/Makefile
+--- xv-3.10a/Makefile 1995-01-23 12:20:54.000000000 -0800
++++ xv-3.10a-enhancements/Makefile 2007-05-20 21:17:35.000000000 -0700
+@@ -2,7 +2,11 @@
+
+ # your C compiler (and options) of choice
+ CC = cc
+-# CC = gcc -ansi
++#CC = gcc -ansi
++# note that -ansi kills __USE_MISC (gcc 2.95.3), which, at least on Linux,
++# determines whether stdlib.h includes prototypes for mktemp(), random(), etc.
++# (i.e., if you use it, you will get unnecessary compiler warnings)
++#CC = gcc
+
+ # use this if you're using 'cc' on a DEC Alpha (OSF/1) or MIPS (Ultrix) system:
+ # CC = cc -std1 -Olimit 750
+@@ -14,8 +18,20 @@
+ # -Wuninitialized -Wparentheses
+
+
+-CCOPTS = -O
+-
++CCOPTS = -O
++#
++# these are the usual optimization and warning options for gcc; all such
++# warnings but one (mktemp() use) have been eliminated (at least on Linux):
++#CCOPTS = -O3 -Wall
++#
++# slightly more warnings... older code often made non-const pointers to
++# static strings (nothing should blow up unless something tries to write
++# to them):
++#CCOPTS = -O3 -Wall -Wpointer-arith -Wcast-align -Wwrite-strings -Wnested-externs
++#
++# for the next step up in gcc noise, try adding -W (but note that it adds a
++# huge number of unused-parameter and signed/unsigned comparison warnings):
++#CCOPTS = -O3 -Wall -W
+
+ ### NOTE: Sun running OpenWindows:
+ ### if you're using a SUN running OPENWINDOWS, you need to add these two
+@@ -27,50 +43,155 @@
+ ### '-I' options on the CCOPTS line to tell the compiler where said files are.
+
+
++# older Unixen don't support the -p option, but its lack may mean installation
++# will fail (if more than one directory level is missing)
++MKDIR = mkdir -p
++
++
++# BeOS _may_ need to use a different version (below), but probably not
++CLEANDIR = cleandir
++
++
+ ### Installation locations
+-BINDIR = /usr/local/bin
+-MANDIR = /usr/local/man/man1
++### NOTE: Users of old K&R compilers (i.e., any version not supporting C89
++### string concatenation, such as "fub" "ar" => "fubar") should update
++### xvtext.c:1831 (or thereabouts) if either PREFIX or DOCDIR changes:
++PREFIX = /usr/local
++BINDIR = $(PREFIX)/bin
++MANDIR = $(PREFIX)/share/man/man1
+ MANSUF = 1
+-LIBDIR = /usr/local/lib
++DOCDIR = $(PREFIX)/share/doc/xv
++LIBDIR = $(PREFIX)/lib/xv
++SYSCONFDIR = /etc
++DESTDIR =
+
+
+ buildit: all
+
+
+ ########################### CONFIGURATION OPTIONS ############################
+-### NOTE: be sure to check 'config.h', for a few other configuration options
++### NOTE: be sure to check 'config.h', for a few other configuration options
+ ##############################################################################
+
+ ###
++### if, for whatever reason, you're unable to get the TIFF library to compile
++### on your machine, *COMMENT OUT* the following lines
++###
++### GRR 20050319: USE_TILED_TIFF_BOTLEFT_FIX enables an experimental fix for
++### tiled TIFFs with ORIENTATION_BOTLEFT. It may break other tiled TIFFs,
++### or it may be required for certain other TIFF types (e.g., strips with
++### ORIENTATION_BOTLEFT). I don't have a sufficient variety of TIFF test
++### images at hand.
++###
++#TIFF = -DDOTIFF
++TIFF = -DDOTIFF -DUSE_TILED_TIFF_BOTLEFT_FIX
++###
++#TIFFDIR = tiff
++TIFFDIR = /usr
++#TIFFDIR = /usr/local
++#TIFFDIR = ../../libtiff
++###
++TIFFINC = -I$(TIFFDIR)/include
++#TIFFINC = -I$(TIFFDIR)
++###
++### libtiff 3.5 and up may be compiled with zlib and libjpeg, but the
++### dependency is properly handled in LIBS line ~247 lines below
++###
++TIFFLIB = -L$(TIFFDIR)/lib -ltiff
++#TIFFLIB = $(TIFFDIR)/lib/libtiff.a
++#TIFFLIB = -L$(TIFFDIR) -ltiff
++#TIFFLIB = $(TIFFDIR)/libtiff.a
++###
++### this is intended to build the ancient version (3.3.016 beta) that's
++### included in the "tiff" subdir of XV, not an arbitrary copy of libtiff:
++###
++#$(TIFFLIB):
++# ( cd $(TIFFDIR) ; make CC='$(CC)' COPTS='$(CCOPTS) $(MCHN)' )
++
++
++###
+ ### if, for whatever reason, you're unable to get the JPEG library to compile
+ ### on your machine, *COMMENT OUT* the following lines
+ ###
++### NOTE: /usr/sfw can be used on Solaris with "Sun freeware" installed
++###
+ JPEG = -DDOJPEG
+-JPEGDIR = jpeg
+-JPEGINC = -I$(JPEGDIR)
+-JPEGLIB = $(JPEGDIR)/libjpeg.a
+-$(JPEGDIR)/jconfig.h:
+- cd $(JPEGDIR) ; ./configure CC='$(CC)'
+-$(JPEGLIB): $(JPEGDIR)/jconfig.h
+- cd $(JPEGDIR) ; make
++#JPEGDIR = jpeg
++JPEGDIR = /usr
++#JPEGDIR = /usr/local
++#JPEGDIR = ../../libjpeg
++#JPEGDIR = /usr/sfw
++###
++JPEGINC = -I$(JPEGDIR)/include
++#JPEGINC = -I$(JPEGDIR)
++###
++JPEGLIB = -L$(JPEGDIR)/lib -ljpeg
++#JPEGLIB = -L$(JPEGDIR) -ljpeg
++#JPEGLIB = $(JPEGDIR)/libjpeg.a
++###
++### this is intended to build the ancient version (5a) that's included in the
++### "jpeg" subdir of XV, not an arbitrary copy of libjpeg:
++###
++#$(JPEGDIR)/jconfig.h:
++# cd $(JPEGDIR) ; ./configure CC='$(CC)'
++#$(JPEGLIB): $(JPEGDIR)/jconfig.h
++# cd $(JPEGDIR) ; make
+
+
+ ###
+-### if, for whatever reason, you're unable to get the TIFF library to compile
++### if, for whatever reason, you're unable to get the PNG library to compile
+ ### on your machine, *COMMENT OUT* the following lines
+ ###
+-TIFF = -DDOTIFF
+-TIFFDIR = tiff
+-TIFFINC = -I$(TIFFDIR)
+-TIFFLIB = $(TIFFDIR)/libtiff.a
+-$(TIFFLIB):
+- ( cd $(TIFFDIR) ; make CC='$(CC)' )
++PNG = -DDOPNG
++PNGDIR = /usr
++#PNGDIR = /usr/local
++#PNGDIR = ../../libpng
++###
++PNGINC = -I$(PNGDIR)/include
++#PNGINC = -I$(PNGDIR)
++###
++PNGLIB = -L$(PNGDIR)/lib -lpng
++#PNGLIB = -L$(PNGDIR) -lpng
++#PNGLIB = $(PNGDIR)/libpng.a
++
++
++###
++### if, for whatever reason, you're unable to get both the PNG library and
++### (newer versions of) the TIFF library to compile on your machine, *COMMENT
++### OUT* the following lines
++###
++ZLIBDIR = /usr
++#ZLIBDIR = /usr/local
++#ZLIBDIR = ../../zlib
++###
++ZLIBINC = -I$(ZLIBDIR)/include
++#ZLIBINC = -I$(ZLIBDIR)
++###
++ZLIBLIB = -L$(ZLIBDIR)/lib -lz
++#ZLIBLIB = -L$(ZLIBDIR) -lz
++#ZLIBLIB = $(ZLIBDIR)/libz.a
++
++
++###
++### if, for whatever reason, you're unable to get the JasPer JPEG-2000 library
++### to compile on your machine, *COMMENT OUT* the following lines
++###
++JP2K = -DDOJP2K
++###
++#JP2KDIR = ../../jasper
++JP2KDIR = /usr/local/lib
++###
++#JP2KINC = -I$(JP2KDIR)
++JP2KINC = -I/usr/local/include
++###
++#JP2KLIB = -L$(JP2KDIR) -ljasper
++JP2KLIB = $(JP2KDIR)/libjasper.a
+
+
+ ###
+ ### if, for whatever reason, you're unable to get the PDS/VICAR support
+ ### to compile (xvpds.c, and vdcomp.c), *COMMENT OUT* the following line,
+-### and also remove 'vdcomp' from the 'all:' dependancy
++### and also remove 'vdcomp' from the 'all:' dependency
+ ###
+ PDS = -DDOPDS
+
+@@ -78,46 +199,60 @@
+ #----------System V----------
+
+ # if you are running on a SysV-based machine, such as HP, Silicon Graphics,
+-# Solaris, etc., uncomment the following line to get mostly there.
+-#UNIX = -DSVR4
++# Solaris, etc.; uncomment one of the following lines to get you *most* of
++# the way there. SYSV means System V R3.
++# UNIX = -DSVR4
++# UNIX = -DSYSV
++
+
++#----------Machine-Specific Configurations----------
++
++### If you are using a BeOS system, uncomment the following line
++#MCHN = -DUSE_GETCWD -I/usr/X11/include -L/usr/X11/lib
++###
++### The stock version of cleandir now should work for BeOS, too, so try
++### leaving this commented out:
++#CLEANDIR = cleandir.BeOS
+
+-#----------Machine Specific Configurations----------
+
+ ### If you are using an SGI system, uncomment the following line
+ #MCHN = -Dsgi
+
+
+-### For HP-UX, uncomment the following line:
++### For HP-UX, uncomment the following line
+ #MCHN= -Dhpux -D_HPUX_SOURCE
+ # To use old HP compilers (HPUX 7.0 or so), you may need
+ #MCHN= -Dhpux -D_HPUX_SOURCE +Ns4000
+ #
+-# also, if you're using HP's compiler, add '-Aa' to whichever of those
++# Also, if you're using HP's compiler, add '-Aa' to whichever of those
+ # two lines you're using, to turn on ANSI C mode. Or so I'm told.
+ #
+-# note: You may need to add '-I/usr/include/X11R5' (or R6, or whatever)
++# Note: You may need to add '-I/usr/include/X11R5' (or R6, or whatever)
+ # to whichever of those lines you used, as HP tends to store their X11
+ # include files in a non-standard place...
++#
++# And you probably have to add '-lV3' to the end of the LIBS def when
++# using XV's AUTO_EXPAND option.
+
+
+-### for LINUX, uncomment the following line
+-#MCHN = -DLINUX
++### for Linux, uncomment one of the following lines:
++#MCHN = -DLINUX -L/usr/X11R6/lib
++#MCHN = -DLINUX -L/usr/X11R6/lib64
+
+
+ # For SCO 1.1 (UNIX 3.2v2) machines, uncomment the following:
+ #MCHN = -Dsco -DPOSIX
+ #
+ # For ODT 2.0 (UNIX 3.2v4) machines, uncomment the following:
+-#MCHN= -Dsco -DPOSIX -DNO_RANDOM
++#MCHN= -Dsco -DPOSIX -DNO_RANDOM
+ #
+ # Also, you should add '-lc -lx' to the end of the LIBS def below
+ # -lx must be after -lc so you get the right directory routines.
+
+
+ # for UMAX V by Encore Computers uncomment the following line for
+-# the portable c compiler, system specific definitions and
+-# location of local X11 library(if site specific, modify -L option)
++# the portable C compiler, system-specific definitions and
++# location of local X11 library (if site-specific, modify -L option)
+ # No other switches should be necessary, or so I'm told...
+ #
+ #MCHN = -q extensions=pcc_c -D__UMAXV__ -L/usr2/usr/lib/X11 -DSVR4
+@@ -147,8 +282,8 @@
+ #TIMERS = -DUSLEEP
+
+
+-# if XV locks up whenever you click on *any* of the buttons, the Timer()
+-# function in xvmisc.c is going out to lunch. A simple workaround is to
++# if XV locks up whenever you click on *any* of the buttons, the Timer()
++# function in xvmisc.c is going out to lunch. A simple workaround is to
+ # uncomment the following line:
+ #TIMERS = -DNOTIMER
+
+@@ -160,7 +295,7 @@
+ #DXWM = -DDXWM
+
+
+-# if, during compilation, your system complains about the types
++# if, during compilation, your system complains about the types
+ # 'u_long', 'u_short', 'u_int', etc. as being undefined, uncomment the
+ # following line:
+ #BSDTYPES = -DBSDTYPES
+@@ -177,18 +312,38 @@
+ #VPRINTF = -DNEED_VPRINTF -DLONGINT -DNOSTDHDRS
+
+
++# if your machine puts the prototype for 'malloc()' in malloc.h rather than
++# stdlib.h, uncomment the following line:
++#
++#MALLOC = -DNEED_MALLOC_H
+
+
+-################ END OF CONFIGURATION OPTIONS #################
++# if your X Window System compiled with -DX_LOCALE,
++# uncomment the following line:
++# TVL10N = -DX_LOCALE
++
++# Install directory of xv_mgcsfx.sample.
++MGCSFXDIR = $(LIBDIR)
++# Directory of default configuration file.
++MGCSFX = -DMGCSFXDIR=\"$(MGCSFXDIR)\"
++
+
+
+
++################ END OF CONFIGURATION OPTIONS #################
++
+
+-CFLAGS = $(CCOPTS) $(JPEG) $(JPEGINC) $(TIFF) $(TIFFINC) $(PDS) \
+- $(NODIRENT) $(VPRINTF) $(TIMERS) $(UNIX) $(BSDTYPES) $(RAND) \
+- $(DXWM) $(MCHN)
+
+-LIBS = -lX11 $(JPEGLIB) $(TIFFLIB) -lm
++
++CFLAGS = $(CCOPTS) $(PNG) $(PNGINC) $(ZLIBINC) $(JPEG) $(JPEGINC) \
++ $(TIFF) $(TIFFINC) $(PDS) $(JP2K) $(JP2KINC) $(TVL10N) $(MGCSFX) \
++ $(UNIX) $(BSDTYPES) $(RAND) $(MALLOC) $(DXWM) $(MCHN) $(NODIRENT) \
++ $(VPRINTF) $(TIMERS) -DDOCDIR=\"$(DOCDIR)\" \
++ -DSYSCONFDIR=\"$(SYSCONFDIR)\" -DXVEXECPATH=\"$(LIBDIR)\"
++
++### remove -lm for BeOS:
++LIBS = $(TIFFLIB) $(JPEGLIB) $(PNGLIB) $(ZLIBLIB) $(JP2KLIB) -L/usr/X11R6/lib -lX11 -lm
++#LIBS = $(TIFFLIB) $(JPEGLIB) $(PNGLIB) $(ZLIBLIB) $(JP2KLIB) -lX11
+
+ OBJS = xv.o xvevent.o xvroot.o xvmisc.o xvimage.o xvcolor.o xvsmooth.o \
+ xv24to8.o xvgif.o xvpm.o xvinfo.o xvctrl.o xvscrl.o xvalg.o \
+@@ -196,7 +351,9 @@
+ xvdial.o xvgraf.o xvsunras.o xvjpeg.o xvps.o xvpopup.o xvdflt.o \
+ xvtiff.o xvtiffwr.o xvpds.o xvrle.o xviris.o xvgrab.o vprintf.o \
+ xvbrowse.o xvtext.o xvpcx.o xviff.o xvtarga.o xvxpm.o xvcut.o \
+- xvxwd.o xvfits.o
++ xvxwd.o xvfits.o xvpng.o xvzx.o xvwbmp.o xvpcd.o xvhips.o \
++ xvmag.o xvpic.o xvmaki.o xvpi.o xvpic2.o xvvd.o xvmgcsfx.o \
++ xvml.o xvjp2k.o
+
+ MISC = README INSTALL CHANGELOG IDEAS
+
+@@ -206,10 +363,12 @@
+
+
+
+-all: $(JPEGLIB) $(TIFFLIB) xv bggen vdcomp xcmap xvpictoppm
++#all: $(JPEGLIB) $(TIFFLIB) xv bggen vdcomp xcmap xvpictoppm
++all: xv bggen vdcomp xcmap xvpictoppm
+
+
+-xv: $(OBJS) $(JPEGLIB) $(TIFFLIB)
++#xv: $(OBJS) $(JPEGLIB) $(TIFFLIB)
++xv: $(OBJS)
+ $(CC) -o xv $(CFLAGS) $(OBJS) $(LIBS)
+
+ bggen: bggen.c
+@@ -231,23 +390,47 @@
+
+ clean: xvclean
+ rm -f bggen vdcomp xcmap xvpictoppm
+- ./cleandir $(JPEGDIR)
+- rm -f $(JPEGDIR)/jconfig.h $(JPEGDIR)/Makefile
+- ./cleandir $(TIFFDIR)
++# clean only local jpeg and tiff dirs, not user's or system's copies:
++ ./$(CLEANDIR) jpeg
++ rm -f jpeg/jconfig.h jpeg/Makefile
++ ./$(CLEANDIR) tiff
+
+
++# could also do some shell trickery here to attempt mkdir only if dir is
++# missing (e.g., "test -d <dir> || $(MKDIR) <dir>")
+ install: all
+- cp xv bggen vdcomp xcmap xvpictoppm $(BINDIR)
+- cp docs/xv.man $(MANDIR)/xv.$(MANSUF)
+- cp docs/bggen.man $(MANDIR)/bggen.$(MANSUF)
+- cp docs/xcmap.man $(MANDIR)/xcmap.$(MANSUF)
+- cp docs/xvp2p.man $(MANDIR)/xvpictoppm.$(MANSUF)
+- cp docs/vdcomp.man $(MANDIR)/vdcomp.$(MANSUF)
+- cp docs/xvdocs.ps* $(LIBDIR)
++ $(MKDIR) $(DESTDIR)$(BINDIR)
++ cp xv bggen vdcomp xcmap xvpictoppm $(DESTDIR)$(BINDIR)/.
++ chmod 755 $(DESTDIR)$(BINDIR)/xv $(DESTDIR)$(BINDIR)/bggen \
++ $(DESTDIR)$(BINDIR)/vdcomp $(DESTDIR)$(BINDIR)/xcmap \
++ $(DESTDIR)$(BINDIR)/xvpictoppm
++#
++ $(MKDIR) $(DESTDIR)$(MANDIR)
++ cp docs/xv.man $(DESTDIR)$(MANDIR)/xv.$(MANSUF)
++ cp docs/bggen.man $(DESTDIR)$(MANDIR)/bggen.$(MANSUF)
++ cp docs/xcmap.man $(DESTDIR)$(MANDIR)/xcmap.$(MANSUF)
++ cp docs/xvp2p.man $(DESTDIR)$(MANDIR)/xvpictoppm.$(MANSUF)
++ cp docs/vdcomp.man $(DESTDIR)$(MANDIR)/vdcomp.$(MANSUF)
++ chmod 644 $(DESTDIR)$(MANDIR)/xv.$(MANSUF) \
++ $(DESTDIR)$(MANDIR)/bggen.$(MANSUF) \
++ $(DESTDIR)$(MANDIR)/xcmap.$(MANSUF) \
++ $(DESTDIR)$(MANDIR)/xvpictoppm.$(MANSUF) \
++ $(DESTDIR)$(MANDIR)/vdcomp.$(MANSUF)
++#
++ $(MKDIR) $(DESTDIR)$(DOCDIR) # or $(DESTDIR)$(LIBDIR)
++ cp README.jumbo docs/xvdocs.pdf docs/xvdocs.ps $(DESTDIR)$(DOCDIR)/.
++ chmod 644 $(DESTDIR)$(DOCDIR)/README.jumbo \
++ $(DESTDIR)$(DOCDIR)/xvdocs.pdf $(DESTDIR)$(DOCDIR)/xvdocs.ps
++#
++ #$(MKDIR) $(DESTDIR)$(SYSCONFDIR)
++ #cp xv_mgcsfx.sample $(DESTDIR)$(SYSCONFDIR)/xv_mgcsfx
++ #chmod 644 $(DESTDIR)$(SYSCONFDIR)/xv_mgcsfx
++
+
+ tar:
++# tar only local jpeg and tiff dirs, not user's or system's copies:
+ tar cvf xv.tar Makefile* Imakefile *.c *.h bits \
+- docs unsupt vms $(JPEGDIR) $(TIFFDIR) $(MISC)
++ docs unsupt vms jpeg tiff $(MISC)
+
+ xvtar:
+ tar cvf xv.tar Makefile* Imakefile *.c *.h bits
+@@ -257,26 +440,28 @@
+
+ ################# bitmap dependencies ####################
+
+-xv.o: bits/icon bits/iconmask bits/runicon bits/runiconm
+-xv.o: bits/cboard50 bits/gray25
++xv.o: bits/icon bits/iconmask bits/runicon bits/runiconm
++xv.o: bits/cboard50 bits/gray25
+
+ xvbrowse.o: bits/br_file bits/br_dir bits/br_exe bits/br_chr bits/br_blk
+-xvbrowse.o: bits/br_sock bits/br_fifo bits/br_error bits/br_unknown
+-xvbrowse.o: bits/br_cmpres bits/br_gif bits/br_pm bits/br_pbm
++xvbrowse.o: bits/br_sock bits/br_fifo bits/br_error # bits/br_unknown
++xvbrowse.o: bits/br_cmpres bits/br_bzip2 bits/br_gif bits/br_pm bits/br_pbm
+ xvbrowse.o: bits/br_sunras bits/br_bmp bits/br_utah bits/br_iris
+-xvbrowse.o: bits/br_pcx bits/br_jfif bits/br_tiff bits/br_pds
+-xvbrowse.o: bits/br_ps bits/br_iff bits/br_targa bits/br_xpm
++xvbrowse.o: bits/br_pcx bits/br_jfif bits/br_tiff bits/br_pds bits/br_pcd
++xvbrowse.o: bits/br_ps bits/br_iff bits/br_targa bits/br_xpm bits/br_xwd
++xvbrowse.o: bits/br_fits bits/br_png bits/br_zx bits/br_mag bits/br_maki
++xvbrowse.o: bits/br_pic bits/br_pi bits/br_pic2 bits/br_mgcsfx
++xvbrowse.o: bits/br_jp2 bits/br_jpc
+ xvbrowse.o: bits/br_trash bits/fcurs bits/fccurs bits/fdcurs bits/fcursm
+-xvbrowse.o: bits/br_xwd
+
+ xvbutt.o: bits/cboard50 bits/rb_frame bits/rb_frame1 bits/rb_top
+ xvbutt.o: bits/rb_bot bits/rb_dtop bits/rb_dbot bits/rb_body
+ xvbutt.o: bits/rb_dot bits/cb_check bits/mb_chk
+
+ xvctrl.o: bits/gray25 bits/gray50 bits/i_fifo bits/i_chr bits/i_dir
+-xvctrl.o: bits/i_blk bits/i_lnk bits/i_sock bits/i_exe bits/i_reg
++xvctrl.o: bits/i_blk bits/i_lnk bits/i_sock bits/i_exe bits/i_reg
+ xvctrl.o: bits/h_rotl bits/h_rotr bits/fliph bits/flipv bits/p10
+-xvctrl.o: bits/m10 bits/cut bits/copy bits/paste bits/clear
++xvctrl.o: bits/m10 bits/cut bits/copy bits/paste bits/clear
+ xvctrl.o: bits/uicon bits/oicon1 bits/oicon2 bits/icon
+ xvctrl.o: bits/padimg bits/annot
+
+@@ -285,13 +470,13 @@
+ xvdflt.o: bits/logo_top bits/logo_bot bits/logo_out bits/xv_jhb
+ xvdflt.o: bits/xv_cpyrt bits/xv_rev bits/xv_ver
+ xvdflt.o: bits/xf_left bits/xf_right bits/font5x9.h
+-xvdflt.o: xvdflt.h
++xvdflt.o: xvdflt.h
+
+ xvdial.o: bits/dial_cw1 bits/dial_ccw1 bits/dial_cw2 bits/dial_ccw2
+
+ xvdir.o: bits/d_load bits/d_save
+
+-xvevent.o: bits/dropper bits/dropperm bits/pen bits/penm
++xvevent.o: bits/dropper bits/dropperm bits/pen bits/penm
+ xvevent.o: bits/blur bits/blurm
+
+ xvgam.o: bits/h_rotl bits/h_rotr bits/h_flip bits/h_sinc bits/h_sdec
+diff -ru xv-3.10a/Makefile.std xv-3.10a-enhancements/Makefile.std
+--- xv-3.10a/Makefile.std 1995-01-23 17:06:26.000000000 -0800
++++ xv-3.10a-enhancements/Makefile.std 2007-05-20 21:17:35.000000000 -0700
+@@ -2,7 +2,11 @@
+
+ # your C compiler (and options) of choice
+ CC = cc
+-# CC = gcc -ansi
++#CC = gcc -ansi
++# note that -ansi kills __USE_MISC (gcc 2.95.3), which, at least on Linux,
++# determines whether stdlib.h includes prototypes for mktemp(), random(), etc.
++# (i.e., if you use it, you will get unnecessary compiler warnings)
++#CC = gcc
+
+ # use this if you're using 'cc' on a DEC Alpha (OSF/1) or MIPS (Ultrix) system:
+ # CC = cc -std1 -Olimit 750
+@@ -14,8 +18,20 @@
+ # -Wuninitialized -Wparentheses
+
+
+-CCOPTS = -O
+-
++CCOPTS = -O
++#
++# these are the usual optimization and warning options for gcc; all such
++# warnings but one (mktemp() use) have been eliminated (at least on Linux):
++#CCOPTS = -O3 -Wall
++#
++# slightly more warnings... older code often made non-const pointers to
++# static strings (nothing should blow up unless something tries to write
++# to them):
++#CCOPTS = -O3 -Wall -Wpointer-arith -Wcast-align -Wwrite-strings -Wnested-externs
++#
++# for the next step up in gcc noise, try adding -W (but note that it adds a
++# huge number of unused-parameter and signed/unsigned comparison warnings):
++#CCOPTS = -O3 -Wall -W
+
+ ### NOTE: Sun running OpenWindows:
+ ### if you're using a SUN running OPENWINDOWS, you need to add these two
+@@ -27,50 +43,155 @@
+ ### '-I' options on the CCOPTS line to tell the compiler where said files are.
+
+
++# older Unixen don't support the -p option, but its lack may mean installation
++# will fail (if more than one directory level is missing)
++MKDIR = mkdir -p
++
++
++# BeOS _may_ need to use a different version (below), but probably not
++CLEANDIR = cleandir
++
++
+ ### Installation locations
+-BINDIR = /usr/local/bin
+-MANDIR = /usr/local/man/man1
++### NOTE: Users of old K&R compilers (i.e., any version not supporting C89
++### string concatenation, such as "fub" "ar" => "fubar") should update
++### xvtext.c:1831 (or thereabouts) if either PREFIX or DOCDIR changes:
++PREFIX = /usr/local
++BINDIR = $(PREFIX)/bin
++MANDIR = $(PREFIX)/share/man/man1
+ MANSUF = 1
+-LIBDIR = /usr/local/lib
++DOCDIR = $(PREFIX)/share/doc/xv
++LIBDIR = $(PREFIX)/lib/xv
++SYSCONFDIR = /etc
++DESTDIR =
+
+
+ buildit: all
+
+
+ ########################### CONFIGURATION OPTIONS ############################
+-### NOTE: be sure to check 'config.h', for a few other configuration options
++### NOTE: be sure to check 'config.h', for a few other configuration options
+ ##############################################################################
+
+ ###
++### if, for whatever reason, you're unable to get the TIFF library to compile
++### on your machine, *COMMENT OUT* the following lines
++###
++### GRR 20050319: USE_TILED_TIFF_BOTLEFT_FIX enables an experimental fix for
++### tiled TIFFs with ORIENTATION_BOTLEFT. It may break other tiled TIFFs,
++### or it may be required for certain other TIFF types (e.g., strips with
++### ORIENTATION_BOTLEFT). I don't have a sufficient variety of TIFF test
++### images at hand.
++###
++#TIFF = -DDOTIFF
++TIFF = -DDOTIFF -DUSE_TILED_TIFF_BOTLEFT_FIX
++###
++#TIFFDIR = tiff
++TIFFDIR = /usr
++#TIFFDIR = /usr/local
++#TIFFDIR = ../../libtiff
++###
++TIFFINC = -I$(TIFFDIR)/include
++#TIFFINC = -I$(TIFFDIR)
++###
++### libtiff 3.5 and up may be compiled with zlib and libjpeg, but the
++### dependency is properly handled in LIBS line ~247 lines below
++###
++TIFFLIB = -L$(TIFFDIR)/lib -ltiff
++#TIFFLIB = $(TIFFDIR)/lib/libtiff.a
++#TIFFLIB = -L$(TIFFDIR) -ltiff
++#TIFFLIB = $(TIFFDIR)/libtiff.a
++###
++### this is intended to build the ancient version (3.3.016 beta) that's
++### included in the "tiff" subdir of XV, not an arbitrary copy of libtiff:
++###
++#$(TIFFLIB):
++# ( cd $(TIFFDIR) ; make CC='$(CC)' COPTS='$(CCOPTS) $(MCHN)' )
++
++
++###
+ ### if, for whatever reason, you're unable to get the JPEG library to compile
+ ### on your machine, *COMMENT OUT* the following lines
+ ###
++### NOTE: /usr/sfw can be used on Solaris with "Sun freeware" installed
++###
+ JPEG = -DDOJPEG
+-JPEGDIR = jpeg
+-JPEGINC = -I$(JPEGDIR)
+-JPEGLIB = $(JPEGDIR)/libjpeg.a
+-$(JPEGDIR)/jconfig.h:
+- cd $(JPEGDIR) ; ./configure CC='$(CC)'
+-$(JPEGLIB): $(JPEGDIR)/jconfig.h
+- cd $(JPEGDIR) ; make
++#JPEGDIR = jpeg
++JPEGDIR = /usr
++#JPEGDIR = /usr/local
++#JPEGDIR = ../../libjpeg
++#JPEGDIR = /usr/sfw
++###
++JPEGINC = -I$(JPEGDIR)/include
++#JPEGINC = -I$(JPEGDIR)
++###
++JPEGLIB = -L$(JPEGDIR)/lib -ljpeg
++#JPEGLIB = -L$(JPEGDIR) -ljpeg
++#JPEGLIB = $(JPEGDIR)/libjpeg.a
++###
++### this is intended to build the ancient version (5a) that's included in the
++### "jpeg" subdir of XV, not an arbitrary copy of libjpeg:
++###
++#$(JPEGDIR)/jconfig.h:
++# cd $(JPEGDIR) ; ./configure CC='$(CC)'
++#$(JPEGLIB): $(JPEGDIR)/jconfig.h
++# cd $(JPEGDIR) ; make
+
+
+ ###
+-### if, for whatever reason, you're unable to get the TIFF library to compile
++### if, for whatever reason, you're unable to get the PNG library to compile
+ ### on your machine, *COMMENT OUT* the following lines
+ ###
+-TIFF = -DDOTIFF
+-TIFFDIR = tiff
+-TIFFINC = -I$(TIFFDIR)
+-TIFFLIB = $(TIFFDIR)/libtiff.a
+-$(TIFFLIB):
+- ( cd $(TIFFDIR) ; make CC='$(CC)' )
++PNG = -DDOPNG
++PNGDIR = /usr
++#PNGDIR = /usr/local
++#PNGDIR = ../../libpng
++###
++PNGINC = -I$(PNGDIR)/include
++#PNGINC = -I$(PNGDIR)
++###
++PNGLIB = -L$(PNGDIR)/lib -lpng
++#PNGLIB = -L$(PNGDIR) -lpng
++#PNGLIB = $(PNGDIR)/libpng.a
++
++
++###
++### if, for whatever reason, you're unable to get both the PNG library and
++### (newer versions of) the TIFF library to compile on your machine, *COMMENT
++### OUT* the following lines
++###
++ZLIBDIR = /usr
++#ZLIBDIR = /usr/local
++#ZLIBDIR = ../../zlib
++###
++ZLIBINC = -I$(ZLIBDIR)/include
++#ZLIBINC = -I$(ZLIBDIR)
++###
++ZLIBLIB = -L$(ZLIBDIR)/lib -lz
++#ZLIBLIB = -L$(ZLIBDIR) -lz
++#ZLIBLIB = $(ZLIBDIR)/libz.a
++
++
++###
++### if, for whatever reason, you're unable to get the JasPer JPEG-2000 library
++### to compile on your machine, *COMMENT OUT* the following lines
++###
++JP2K = -DDOJP2K
++###
++#JP2KDIR = ../../jasper
++JP2KDIR = /usr/local/lib
++###
++#JP2KINC = -I$(JP2KDIR)
++JP2KINC = -I/usr/local/include
++###
++#JP2KLIB = -L$(JP2KDIR) -ljasper
++JP2KLIB = $(JP2KDIR)/libjasper.a
+
+
+ ###
+ ### if, for whatever reason, you're unable to get the PDS/VICAR support
+ ### to compile (xvpds.c, and vdcomp.c), *COMMENT OUT* the following line,
+-### and also remove 'vdcomp' from the 'all:' dependancy
++### and also remove 'vdcomp' from the 'all:' dependency
+ ###
+ PDS = -DDOPDS
+
+@@ -78,46 +199,60 @@
+ #----------System V----------
+
+ # if you are running on a SysV-based machine, such as HP, Silicon Graphics,
+-# Solaris, etc., uncomment the following line to get mostly there.
+-#UNIX = -DSVR4
++# Solaris, etc.; uncomment one of the following lines to get you *most* of
++# the way there. SYSV means System V R3.
++# UNIX = -DSVR4
++# UNIX = -DSYSV
++
+
++#----------Machine-Specific Configurations----------
++
++### If you are using a BeOS system, uncomment the following line
++#MCHN = -DUSE_GETCWD -I/usr/X11/include -L/usr/X11/lib
++###
++### The stock version of cleandir now should work for BeOS, too, so try
++### leaving this commented out:
++#CLEANDIR = cleandir.BeOS
+
+-#----------Machine Specific Configurations----------
+
+ ### If you are using an SGI system, uncomment the following line
+ #MCHN = -Dsgi
+
+
+-### For HP-UX, uncomment the following line:
++### For HP-UX, uncomment the following line
+ #MCHN= -Dhpux -D_HPUX_SOURCE
+ # To use old HP compilers (HPUX 7.0 or so), you may need
+ #MCHN= -Dhpux -D_HPUX_SOURCE +Ns4000
+ #
+-# also, if you're using HP's compiler, add '-Aa' to whichever of those
++# Also, if you're using HP's compiler, add '-Aa' to whichever of those
+ # two lines you're using, to turn on ANSI C mode. Or so I'm told.
+ #
+-# note: You may need to add '-I/usr/include/X11R5' (or R6, or whatever)
++# Note: You may need to add '-I/usr/include/X11R5' (or R6, or whatever)
+ # to whichever of those lines you used, as HP tends to store their X11
+ # include files in a non-standard place...
++#
++# And you probably have to add '-lV3' to the end of the LIBS def when
++# using XV's AUTO_EXPAND option.
+
+
+-### for LINUX, uncomment the following line
+-#MCHN = -DLINUX
++### for Linux, uncomment one of the following lines:
++#MCHN = -DLINUX -L/usr/X11R6/lib
++#MCHN = -DLINUX -L/usr/X11R6/lib64
+
+
+ # For SCO 1.1 (UNIX 3.2v2) machines, uncomment the following:
+ #MCHN = -Dsco -DPOSIX
+ #
+ # For ODT 2.0 (UNIX 3.2v4) machines, uncomment the following:
+-#MCHN= -Dsco -DPOSIX -DNO_RANDOM
++#MCHN= -Dsco -DPOSIX -DNO_RANDOM
+ #
+ # Also, you should add '-lc -lx' to the end of the LIBS def below
+ # -lx must be after -lc so you get the right directory routines.
+
+
+ # for UMAX V by Encore Computers uncomment the following line for
+-# the portable c compiler, system specific definitions and
+-# location of local X11 library(if site specific, modify -L option)
++# the portable C compiler, system-specific definitions and
++# location of local X11 library (if site-specific, modify -L option)
+ # No other switches should be necessary, or so I'm told...
+ #
+ #MCHN = -q extensions=pcc_c -D__UMAXV__ -L/usr2/usr/lib/X11 -DSVR4
+@@ -147,8 +282,8 @@
+ #TIMERS = -DUSLEEP
+
+
+-# if XV locks up whenever you click on *any* of the buttons, the Timer()
+-# function in xvmisc.c is going out to lunch. A simple workaround is to
++# if XV locks up whenever you click on *any* of the buttons, the Timer()
++# function in xvmisc.c is going out to lunch. A simple workaround is to
+ # uncomment the following line:
+ #TIMERS = -DNOTIMER
+
+@@ -160,7 +295,7 @@
+ #DXWM = -DDXWM
+
+
+-# if, during compilation, your system complains about the types
++# if, during compilation, your system complains about the types
+ # 'u_long', 'u_short', 'u_int', etc. as being undefined, uncomment the
+ # following line:
+ #BSDTYPES = -DBSDTYPES
+@@ -177,18 +312,38 @@
+ #VPRINTF = -DNEED_VPRINTF -DLONGINT -DNOSTDHDRS
+
+
++# if your machine puts the prototype for 'malloc()' in malloc.h rather than
++# stdlib.h, uncomment the following line:
++#
++#MALLOC = -DNEED_MALLOC_H
+
+
+-################ END OF CONFIGURATION OPTIONS #################
++# if your X Window System compiled with -DX_LOCALE,
++# uncomment the following line:
++# TVL10N = -DX_LOCALE
++
++# Install directory of xv_mgcsfx.sample.
++MGCSFXDIR = $(LIBDIR)
++# Directory of default configuration file.
++MGCSFX = -DMGCSFXDIR=\"$(MGCSFXDIR)\"
++
+
+
+
++################ END OF CONFIGURATION OPTIONS #################
++
+
+-CFLAGS = $(CCOPTS) $(JPEG) $(JPEGINC) $(TIFF) $(TIFFINC) $(PDS) \
+- $(NODIRENT) $(VPRINTF) $(TIMERS) $(UNIX) $(BSDTYPES) $(RAND) \
+- $(DXWM) $(MCHN)
+
+-LIBS = -lX11 $(JPEGLIB) $(TIFFLIB) -lm
++
++CFLAGS = $(CCOPTS) $(PNG) $(PNGINC) $(ZLIBINC) $(JPEG) $(JPEGINC) \
++ $(TIFF) $(TIFFINC) $(PDS) $(JP2K) $(JP2KINC) $(TVL10N) $(MGCSFX) \
++ $(UNIX) $(BSDTYPES) $(RAND) $(MALLOC) $(DXWM) $(MCHN) $(NODIRENT) \
++ $(VPRINTF) $(TIMERS) -DDOCDIR=\"$(DOCDIR)\" \
++ -DSYSCONFDIR=\"$(SYSCONFDIR)\" -DXVEXECPATH=\"$(LIBDIR)\"
++
++### remove -lm for BeOS:
++LIBS = $(TIFFLIB) $(JPEGLIB) $(PNGLIB) $(ZLIBLIB) $(JP2KLIB) -L/usr/X11R6/lib -lX11 -lm
++#LIBS = $(TIFFLIB) $(JPEGLIB) $(PNGLIB) $(ZLIBLIB) $(JP2KLIB) -lX11
+
+ OBJS = xv.o xvevent.o xvroot.o xvmisc.o xvimage.o xvcolor.o xvsmooth.o \
+ xv24to8.o xvgif.o xvpm.o xvinfo.o xvctrl.o xvscrl.o xvalg.o \
+@@ -196,7 +351,9 @@
+ xvdial.o xvgraf.o xvsunras.o xvjpeg.o xvps.o xvpopup.o xvdflt.o \
+ xvtiff.o xvtiffwr.o xvpds.o xvrle.o xviris.o xvgrab.o vprintf.o \
+ xvbrowse.o xvtext.o xvpcx.o xviff.o xvtarga.o xvxpm.o xvcut.o \
+- xvxwd.o xvfits.o
++ xvxwd.o xvfits.o xvpng.o xvzx.o xvwbmp.o xvpcd.o xvhips.o \
++ xvmag.o xvpic.o xvmaki.o xvpi.o xvpic2.o xvvd.o xvmgcsfx.o \
++ xvml.o xvjp2k.o
+
+ MISC = README INSTALL CHANGELOG IDEAS
+
+@@ -206,10 +363,12 @@
+
+
+
+-all: $(JPEGLIB) $(TIFFLIB) xv bggen vdcomp xcmap xvpictoppm
++#all: $(JPEGLIB) $(TIFFLIB) xv bggen vdcomp xcmap xvpictoppm
++all: xv bggen vdcomp xcmap xvpictoppm
+
+
+-xv: $(OBJS) $(JPEGLIB) $(TIFFLIB)
++#xv: $(OBJS) $(JPEGLIB) $(TIFFLIB)
++xv: $(OBJS)
+ $(CC) -o xv $(CFLAGS) $(OBJS) $(LIBS)
+
+ bggen: bggen.c
+@@ -231,23 +390,47 @@
+
+ clean: xvclean
+ rm -f bggen vdcomp xcmap xvpictoppm
+- ./cleandir $(JPEGDIR)
+- rm -f $(JPEGDIR)/jconfig.h $(JPEGDIR)/Makefile
+- ./cleandir $(TIFFDIR)
++# clean only local jpeg and tiff dirs, not user's or system's copies:
++ ./$(CLEANDIR) jpeg
++ rm -f jpeg/jconfig.h jpeg/Makefile
++ ./$(CLEANDIR) tiff
+
+
++# could also do some shell trickery here to attempt mkdir only if dir is
++# missing (e.g., "test -d <dir> || $(MKDIR) <dir>")
+ install: all
+- cp xv bggen vdcomp xcmap xvpictoppm $(BINDIR)
+- cp docs/xv.man $(MANDIR)/xv.$(MANSUF)
+- cp docs/bggen.man $(MANDIR)/bggen.$(MANSUF)
+- cp docs/xcmap.man $(MANDIR)/xcmap.$(MANSUF)
+- cp docs/xvp2p.man $(MANDIR)/xvpictoppm.$(MANSUF)
+- cp docs/vdcomp.man $(MANDIR)/vdcomp.$(MANSUF)
+- cp docs/xvdocs.ps* $(LIBDIR)
++ $(MKDIR) $(DESTDIR)$(BINDIR)
++ cp xv bggen vdcomp xcmap xvpictoppm $(DESTDIR)$(BINDIR)/.
++ chmod 755 $(DESTDIR)$(BINDIR)/xv $(DESTDIR)$(BINDIR)/bggen \
++ $(DESTDIR)$(BINDIR)/vdcomp $(DESTDIR)$(BINDIR)/xcmap \
++ $(DESTDIR)$(BINDIR)/xvpictoppm
++#
++ $(MKDIR) $(DESTDIR)$(MANDIR)
++ cp docs/xv.man $(DESTDIR)$(MANDIR)/xv.$(MANSUF)
++ cp docs/bggen.man $(DESTDIR)$(MANDIR)/bggen.$(MANSUF)
++ cp docs/xcmap.man $(DESTDIR)$(MANDIR)/xcmap.$(MANSUF)
++ cp docs/xvp2p.man $(DESTDIR)$(MANDIR)/xvpictoppm.$(MANSUF)
++ cp docs/vdcomp.man $(DESTDIR)$(MANDIR)/vdcomp.$(MANSUF)
++ chmod 644 $(DESTDIR)$(MANDIR)/xv.$(MANSUF) \
++ $(DESTDIR)$(MANDIR)/bggen.$(MANSUF) \
++ $(DESTDIR)$(MANDIR)/xcmap.$(MANSUF) \
++ $(DESTDIR)$(MANDIR)/xvpictoppm.$(MANSUF) \
++ $(DESTDIR)$(MANDIR)/vdcomp.$(MANSUF)
++#
++ $(MKDIR) $(DESTDIR)$(DOCDIR) # or $(DESTDIR)$(LIBDIR)
++ cp README.jumbo docs/xvdocs.pdf docs/xvdocs.ps $(DESTDIR)$(DOCDIR)/.
++ chmod 644 $(DESTDIR)$(DOCDIR)/README.jumbo \
++ $(DESTDIR)$(DOCDIR)/xvdocs.pdf $(DESTDIR)$(DOCDIR)/xvdocs.ps
++#
++ #$(MKDIR) $(DESTDIR)$(SYSCONFDIR)
++ #cp xv_mgcsfx.sample $(DESTDIR)$(SYSCONFDIR)/xv_mgcsfx
++ #chmod 644 $(DESTDIR)$(SYSCONFDIR)/xv_mgcsfx
++
+
+ tar:
++# tar only local jpeg and tiff dirs, not user's or system's copies:
+ tar cvf xv.tar Makefile* Imakefile *.c *.h bits \
+- docs unsupt vms $(JPEGDIR) $(TIFFDIR) $(MISC)
++ docs unsupt vms jpeg tiff $(MISC)
+
+ xvtar:
+ tar cvf xv.tar Makefile* Imakefile *.c *.h bits
+@@ -257,26 +440,28 @@
+
+ ################# bitmap dependencies ####################
+
+-xv.o: bits/icon bits/iconmask bits/runicon bits/runiconm
+-xv.o: bits/cboard50 bits/gray25
++xv.o: bits/icon bits/iconmask bits/runicon bits/runiconm
++xv.o: bits/cboard50 bits/gray25
+
+ xvbrowse.o: bits/br_file bits/br_dir bits/br_exe bits/br_chr bits/br_blk
+-xvbrowse.o: bits/br_sock bits/br_fifo bits/br_error bits/br_unknown
+-xvbrowse.o: bits/br_cmpres bits/br_gif bits/br_pm bits/br_pbm
++xvbrowse.o: bits/br_sock bits/br_fifo bits/br_error # bits/br_unknown
++xvbrowse.o: bits/br_cmpres bits/br_bzip2 bits/br_gif bits/br_pm bits/br_pbm
+ xvbrowse.o: bits/br_sunras bits/br_bmp bits/br_utah bits/br_iris
+-xvbrowse.o: bits/br_pcx bits/br_jfif bits/br_tiff bits/br_pds
+-xvbrowse.o: bits/br_ps bits/br_iff bits/br_targa bits/br_xpm
++xvbrowse.o: bits/br_pcx bits/br_jfif bits/br_tiff bits/br_pds bits/br_pcd
++xvbrowse.o: bits/br_ps bits/br_iff bits/br_targa bits/br_xpm bits/br_xwd
++xvbrowse.o: bits/br_fits bits/br_png bits/br_zx bits/br_mag bits/br_maki
++xvbrowse.o: bits/br_pic bits/br_pi bits/br_pic2 bits/br_mgcsfx
++xvbrowse.o: bits/br_jp2 bits/br_jpc
+ xvbrowse.o: bits/br_trash bits/fcurs bits/fccurs bits/fdcurs bits/fcursm
+-xvbrowse.o: bits/br_xwd
+
+ xvbutt.o: bits/cboard50 bits/rb_frame bits/rb_frame1 bits/rb_top
+ xvbutt.o: bits/rb_bot bits/rb_dtop bits/rb_dbot bits/rb_body
+ xvbutt.o: bits/rb_dot bits/cb_check bits/mb_chk
+
+ xvctrl.o: bits/gray25 bits/gray50 bits/i_fifo bits/i_chr bits/i_dir
+-xvctrl.o: bits/i_blk bits/i_lnk bits/i_sock bits/i_exe bits/i_reg
++xvctrl.o: bits/i_blk bits/i_lnk bits/i_sock bits/i_exe bits/i_reg
+ xvctrl.o: bits/h_rotl bits/h_rotr bits/fliph bits/flipv bits/p10
+-xvctrl.o: bits/m10 bits/cut bits/copy bits/paste bits/clear
++xvctrl.o: bits/m10 bits/cut bits/copy bits/paste bits/clear
+ xvctrl.o: bits/uicon bits/oicon1 bits/oicon2 bits/icon
+ xvctrl.o: bits/padimg bits/annot
+
+@@ -285,13 +470,13 @@
+ xvdflt.o: bits/logo_top bits/logo_bot bits/logo_out bits/xv_jhb
+ xvdflt.o: bits/xv_cpyrt bits/xv_rev bits/xv_ver
+ xvdflt.o: bits/xf_left bits/xf_right bits/font5x9.h
+-xvdflt.o: xvdflt.h
++xvdflt.o: xvdflt.h
+
+ xvdial.o: bits/dial_cw1 bits/dial_ccw1 bits/dial_cw2 bits/dial_ccw2
+
+ xvdir.o: bits/d_load bits/d_save
+
+-xvevent.o: bits/dropper bits/dropperm bits/pen bits/penm
++xvevent.o: bits/dropper bits/dropperm bits/pen bits/penm
+ xvevent.o: bits/blur bits/blurm
+
+ xvgam.o: bits/h_rotl bits/h_rotr bits/h_flip bits/h_sinc bits/h_sdec
+diff -ru xv-3.10a/bggen.c xv-3.10a-enhancements/bggen.c
+--- xv-3.10a/bggen.c 1994-12-22 14:34:41.000000000 -0800
++++ xv-3.10a-enhancements/bggen.c 2005-04-17 14:04:22.000000000 -0700
+@@ -18,6 +18,11 @@
+ #include <stdio.h>
+ #include <math.h>
+
++#ifdef __STDC__
++# include <stdlib.h> /* atoi() */
++# include <ctype.h> /* isdigit() */
++#endif
++
+ #ifndef M_PI
+ # define M_PI 3.1415926535897932385
+ #endif
+@@ -29,7 +34,7 @@
+ #define MAXCOLS 128
+
+ /* some VMS thing... */
+-#ifdef vax11c
++#if defined(vax11c) || (defined(__sony_news) && (defined(bsd43) || defined(__bsd43) || defined(SYSTYPE_BSD) || defined(__SYSTYPE_BSD)))
+ #include <ctype.h>
+ #endif
+
+@@ -46,8 +51,8 @@
+
+ typedef unsigned char byte;
+
+-struct color { int r,g,b;
+- int y;
++struct color { int r,g,b;
++ int y;
+ } colors[MAXCOLS], *cur, *nex;
+
+ int numcols;
+@@ -62,7 +67,7 @@
+ double computeDist PARM((int, int, int, int, int));
+ void writePPM PARM((byte *, int, int, int));
+
+-
++
+ /*************************************/
+ int main(argc,argv)
+ int argc;
+@@ -80,18 +85,18 @@
+ char *geom = NULL;
+ char *rptgeom = NULL;
+
+-
++
+ #ifdef VMS
+ getredirection(&argc, &argv);
+ #endif
+-
++
+
+ for (i=1; i<argc; i++) {
+ if (!strncmp(argv[i],"-d",(size_t) 2)) { /* -d disp */
+ i++; if (i<argc) dname = argv[i];
+ }
+ }
+-
++
+ if ((theDisp = XOpenDisplay(dname)) == NULL) {
+ fprintf(stderr,"bggen: Warning - can't open display, screen %s",
+ "size unknown, color names not accepted.\n");
+@@ -99,41 +104,41 @@
+
+
+ cnt = 0; numcols = 0;
+-
++
+ /* parse cmd-line args */
+ for (i=1; i<argc; i++) {
+ if (!strcmp(argv[i],"-h")) { /* -h high */
+ i++; if (i<argc) high = atoi(argv[i]);
+ hset++;
+ }
+-
++
+ else if (!strcmp(argv[i],"-w")) { /* -w wide */
+ i++; if (i<argc) wide = atoi(argv[i]);
+ wset++;
+ }
+-
++
+ else if (!strcmp(argv[i],"-b")) { /* -b bits */
+ i++; if (i<argc) bits = atoi(argv[i]);
+ }
+-
++
+ else if (!strncmp(argv[i],"-g",(size_t) 2)) { /* -g geom */
+ i++; if (i<argc) geom = argv[i];
+ }
+-
++
+ else if (!strncmp(argv[i],"-d",(size_t) 2)) { /* -d disp */
+ i++; if (i<argc) dname = argv[i];
+ }
+-
++
+ else if (!strcmp(argv[i],"-G")) { /* -G rptgeom */
+ i++; if (i<argc) rptgeom = argv[i];
+ }
+-
++
+ else if (!strncmp(argv[i],"-a",(size_t) 2)) doascii++; /* -a */
+-
++
+ else if (!strcmp(argv[i],"-r")) { /* -r rot */
+ i++; if (i<argc) rot = atoi(argv[i]);
+ }
+-
++
+ else if (argv[i][0]=='-') usage(); /* any other '-' option is unknown */
+
+ else if (isdigit(argv[i][0])) {
+@@ -143,7 +148,7 @@
+ case 2: colors[numcols].b = atoi(argv[i]); break;
+ }
+ cnt++;
+-
++
+ if (cnt==3) {
+ if (numcols<MAXCOLS) numcols++;
+ cnt = 0;
+@@ -176,50 +181,50 @@
+ }
+ }
+ }
+-
+-
+-
++
++
++
+ /* print error/usage message, if appropriate */
+ if (cnt || numcols==0 || high<1 || wide<1 || bits<1 || bits>8) usage();
+-
+-
++
++
+ if (geom) {
+ int x,y; unsigned int w,h;
+ i = XParseGeometry(geom, &x, &y, &w, &h);
+ if (i&WidthValue) { wset++; wide = (int) w; }
+ if (i&HeightValue) { hset++; high = (int) h; }
+ }
+-
+-
++
++
+ /* attempt to connect to X server and get screen dimensions */
+ if (theDisp) {
+ i = DefaultScreen(theDisp);
+ if (!wset) wide = DisplayWidth(theDisp, i);
+ if (!hset) high = DisplayHeight(theDisp, i);
+ }
+-
+-
++
++
+ /* normalize 'rot' */
+ while (rot< 0) rot += 360;
+ while (rot>=360) rot -= 360;
+-
+-
++
++
+ rptwide = wide; rpthigh = high;
+ if (rptgeom) {
+ int x,y; unsigned int w,h;
+ i = XParseGeometry(rptgeom, &x, &y, &w, &h);
+ if (i&WidthValue) rptwide = (int) w;
+ if (i&HeightValue) rpthigh = (int) h;
+-
++
+ RANGE(rptwide, 1, wide);
+ RANGE(rpthigh, 1, high);
+ }
+-
+-
+
+-
++
++
++
+ rpic24 = (byte *) malloc(rptwide * rpthigh * 3 * sizeof(byte));
+- if (rptwide != wide || rpthigh != high)
++ if (rptwide != wide || rpthigh != high)
+ pic24 = (byte *) malloc(wide * high * 3 * sizeof(byte));
+ else pic24 = rpic24;
+
+@@ -229,7 +234,7 @@
+ exit(1);
+ }
+ for (i=0, pp=pic24; i<wide*high*3; i++) *pp++ = 0;
+-
++
+
+
+ /*** generate image ***/
+@@ -244,34 +249,34 @@
+ }
+ }
+ }
+-
+-
++
++
+ else if (rot==0) { /* un-rotated linear (vertical) gradient */
+ for (i=0; i<numcols; i++)
+ colors[i].y = ((rpthigh-1) * i) / (numcols-1);
+-
++
+ cur = &colors[0]; nex = cur+1;
+-
++
+ for (i=0; i<rpthigh; i++) {
+ pp = rpic24 + (i * rptwide * 3);
+
+ /* advance to next pair of colors if we're outside region */
+ while (nex->y < i) { cur++; nex++; }
+-
++
+ r = cur->r + ((nex->r - cur->r) * (i - cur->y)) / (nex->y - cur->y);
+ g = cur->g + ((nex->g - cur->g) * (i - cur->y)) / (nex->y - cur->y);
+ b = cur->b + ((nex->b - cur->b) * (i - cur->y)) / (nex->y - cur->y);
+-
++
+ r = r & bmask[bits-1];
+ g = g & bmask[bits-1];
+ b = b & bmask[bits-1];
+-
++
+ for (j=0; j<rptwide; j++) {
+ *pp++ = (byte) r; *pp++ = (byte) g; *pp++ = (byte) b;
+ }
+ }
+ }
+-
++
+ else dorot(rpic24, rptwide, rpthigh, rot);
+
+
+@@ -293,7 +298,7 @@
+ y = ((i-ay) % rpthigh);
+
+ sp = rpic24 + (y * rptwide + x) * 3;
+-
++
+ pp[0] = *sp++; pp[1] = *sp++; pp[2] = *sp++;
+ }
+ }
+@@ -355,12 +360,12 @@
+ mind = computeDist(w-1, 0, cx, cy, rot);
+ maxd = computeDist(0, h-1, cx, cy, rot);
+ }
+-
++
+ del = maxd - mind; /* maximum distance */
+-
++
+ distdebug = 0;
+-
+-
++
++
+ for (y=0; y<h; y++) {
+ pp = pic + (y * w * 3);
+ for (x=0; x<w; x++) {
+@@ -368,11 +373,11 @@
+ rat = (d - mind) / del;
+ if (rat<0.0) rat = 0.0;
+ if (rat>1.0) rat = 1.0;
+-
++
+ cval = rat * nc1;
+ bc = floor(cval);
+ crat = cval - bc;
+-
++
+ if (bc < nc1) {
+ r = colors[bc].r + crat * (colors[bc+1].r - colors[bc].r);
+ g = colors[bc].g + crat * (colors[bc+1].g - colors[bc].g);
+@@ -383,7 +388,7 @@
+ g = colors[nc1].g;
+ b = colors[nc1].b;
+ }
+-
++
+ *pp++ = (byte) r; *pp++ = (byte) g; *pp++ = (byte) b;
+ }
+ }
+@@ -395,9 +400,9 @@
+ int x,y,cx,cy,rot;
+ {
+ /* rot has to be in range 0-359 */
+-
+- double x1, y1, x2, y2, x3, y3, d, d1, b, theta;
+-
++
++ double x1, y1, x2, y2, x3, y3, d, d1, b;
++
+ if (rot == 0) return (double) (y - cy);
+ if (rot == 180) return (double) (cy - y);
+
+@@ -407,7 +412,7 @@
+ /* x2,y2 = vertical projection onto a || line that runs through cx,cy */
+ x2 = x1;
+ y2 = cy - (cx-x2)*tant1;
+-
++
+ d1 = y2 - y1; /* vertical distance between lines */
+ b = d1 * cost1;
+
+@@ -435,11 +440,11 @@
+ int w,h,doascii;
+ {
+ /* dumps a pic24 in PPM format to stdout */
+-
++
+ int x,y;
+-
++
+ printf("P%s %d %d 255\n", (doascii) ? "3" : "6", w, h);
+-
++
+ for (y=0; y<h; y++) {
+ if (doascii) {
+ for (x=0; x<w; x++, pic+=3)
+diff -ru xv-3.10a/bits/br_targa xv-3.10a-enhancements/bits/br_targa
+--- xv-3.10a/bits/br_targa 1994-12-22 14:35:30.000000000 -0800
++++ xv-3.10a-enhancements/bits/br_targa 2007-04-15 10:40:46.000000000 -0700
+@@ -1,6 +1,6 @@
+-#define br_targa_width 48
+-#define br_targa_height 48
+-static unsigned char br_targa_bits[] = {
++#define br_tga_width 48
++#define br_tga_height 48
++static unsigned char br_tga_bits[] = {
+ 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00,
+diff -ru xv-3.10a/bits/icon xv-3.10a-enhancements/bits/icon
+--- xv-3.10a/bits/icon 1994-12-22 14:35:28.000000000 -0800
++++ xv-3.10a-enhancements/bits/icon 2004-04-28 08:00:16.000000000 -0700
+@@ -1,5 +1,6 @@
+ #define icon_width 40
+ #define icon_height 32
++#ifndef OMIT_ICON_BITS
+ static unsigned char icon_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
+@@ -15,3 +16,4 @@
+ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00};
++#endif
+diff -ru xv-3.10a/cleandir xv-3.10a-enhancements/cleandir
+--- xv-3.10a/cleandir 1994-12-22 14:34:50.000000000 -0800
++++ xv-3.10a-enhancements/cleandir 2004-05-10 23:19:16.000000000 -0700
+@@ -1,9 +1,13 @@
+-#!/bin/csh -f
++#!/bin/sh -f
+ # cleandir: if called with an argument, cd's there and does a 'make clean'
+ #
+
+-if ( x$1 != x ) then
+- echo "cleaning $1 subdirectory"
+- cd $1
+- make clean
+-endif
++if [ x"$1" != x ]; then
++ if [ -f "$1"/makefile -o -f "$1"/Makefile ]; then
++ echo "cleaning '$1' subdirectory"
++ cd "$1"
++ make clean
++# else
++# echo "no makefile found; NOT cleaning '$1' subdirectory"
++ fi
++fi
+diff -ru xv-3.10a/config.h xv-3.10a-enhancements/config.h
+--- xv-3.10a/config.h 1995-01-05 10:49:21.000000000 -0800
++++ xv-3.10a-enhancements/config.h 2007-05-14 08:51:10.000000000 -0700
+@@ -6,25 +6,42 @@
+ /***************************************************************************
+ * GZIP'd file support
+ *
+- * if you have the gnu uncompression utility 'gunzip', XV can use it to
+- * automatically 'unzip' any gzip'd files. To enable this feature,
+- * change 'undef' to 'define' in the following line. Needless to say, if
+- * your gunzip is installed elsewhere on your machine, change the 'GUNZIP'
+- * definition appropriately. (use 'which gunzip' to find if you have gunzip,
+- * and where it lives)
++ * if you have the GNU uncompression utility 'gunzip' (or 'gzip' itself,
++ * which is just a link to gunzip), XV can use it to automatically 'unzip'
++ * any gzip'd files. To enable this feature, change 'undef' to 'define' in
++ * the following line. Needless to say, if your gunzip is installed elsewhere
++ * on your machine, change the 'GUNZIP' definition appropriately. (use
++ * 'which gunzip' to find if you have gunzip, and where it lives; ditto for
++ * gzip)
+ */
+-#undef USE_GUNZIP
++#define USE_GUNZIP
+
+ #ifdef USE_GUNZIP
+ # ifdef VMS
+ # define GUNZIP "UNCOMPRESS"
+ # else
+-# define GUNZIP "/usr/local/bin/gunzip -q"
++# define GUNZIP "gzip -dq"
+ # endif
+ #endif
+
+
+ /***************************************************************************
++ * BZIP2'd file support
++ *
++ * if you have the uncompression utility 'bunzip2' (or 'bzip2' itself, which
++ * is just a link to bunzip2), XV can use it to automatically 'unzip' any
++ * bzip2'd files. To enable this feature, change 'undef' to 'define' in the
++ * following line (if not already done). Use 'which bunzip2' or 'which bzip2'
++ * to find if you have bzip2/bunzip2, and where it lives.
++ */
++#define USE_BUNZIP2
++
++#ifdef USE_BUNZIP2
++# define BUNZIP2 "bzip2 -d" /* should this include the full path? */
++#endif
++
++
++/***************************************************************************
+ * compress'd file support
+ *
+ * if you have GUNZIP defined above, just ignore this, as 'gunzip' can
+@@ -37,9 +54,16 @@
+ */
+ #define UNCOMPRESS "/usr/ucb/uncompress"
+
+-#if defined(hpux) || defined(SVR4) || defined(__386BSD__)
++#if defined(hpux) || defined(SVR4) || \
++ defined(__386BSD__) || defined(__FreeBSD__) || defined(__NetBSD__) || \
++ defined(__linux__)
++ /*
++ I want to use BSD macro for checking if this OS is *BSD or not,
++ but the macro is defined in <sys/parm.h>, which I don't know all
++ machine has or not.
++ */
+ # undef UNCOMPRESS
+-# define UNCOMPRESS "/usr/bin/uncompress"
++# define UNCOMPRESS "uncompress"
+ #endif
+
+ #if defined(sgi)
+@@ -70,18 +94,18 @@
+ * PostScript file input support:
+ *
+ * if you have the 'ghostscript' package installed (version 2.6 or later),
+- * XV can use it to read and display PostScript files. To do so,
++ * XV can use it to read and display PostScript files. To do so,
+ * uncomment the '#define GS_PATH' line, below. You probably will not
+ * need to modify the GS_LIB or GS_DEV lines, but if you do modify them,
+ * be sure to uncomment them, as well.
+ *
+- * the ghostscript package can be acquired via anonymous ftp on
++ * the ghostscript package can be acquired via anonymous ftp on
+ * prep.ai.mit.edu, in the 'pub/gnu' directory
+ *
+- * GS_PATH specifies the complete path to your gs executable.
++ * GS_PATH specifies the complete path to your gs executable.
+ *
+- * GS_LIB should be set if there's some other gs libs that should be
+- * searched, but aren't by default. (In which case you should probably
++ * GS_LIB should be set if there's some other gs libs that should be
++ * searched, but aren't by default. (In which case you should probably
+ * just fix your 'gs' so it looks in the right places without being told...)
+ *
+ * GS_DEV is the file format that ghostscript will convert PS into. It
+@@ -89,6 +113,7 @@
+ */
+
+ /* #define GS_PATH "/usr/local/bin/gs" */
++#define GS_PATH "gs"
+ /* #define GS_LIB "." */
+ /* #define GS_DEV "ppmraw" */
+
+@@ -97,10 +122,10 @@
+ * 'old-style' XV logo image:
+ *
+ * XV now has a nifty, new logo image. The downside is that it increases
+- * the size of the 'xv' executable by 250K or so, and it's possible that
+- * your compiler may choke while compiling 'xvdflt.c'. If you're compiler
++ * the size of the 'xv' executable by 250K or so, and it's possible that
++ * your compiler may choke while compiling 'xvdflt.c'. If your compiler
+ * can't handle it, or you're running Linux on a system with minimal memory,
+- * change 'undef' to 'define' in the following line
++ * change 'undef' to 'define' in the following line:
+ */
+
+ #undef USEOLDPIC
+@@ -108,8 +133,8 @@
+
+ /***************************************************************************
+ * Backing Store:
+- *
+- * XV can request that 'Backing Store' may be turned on ('WhenMapped') for
++ *
++ * XV can request that 'Backing Store' may be turned on ('WhenMapped') for
+ * several of its windows, which may help performance over a slow network
+ * connection. However, it has been known to behave strangely (or crash)
+ * on some X servers, so it's left here as an option. If you run into trouble
+@@ -119,3 +144,218 @@
+
+ #define BACKING_STORE
+
++
++/***************************************************************************
++ * TIFF YCbCr-to-RGB conversion:
++ *
++ * Newer versions of libtiff can be compiled with libjpeg for JPEG-in-TIFF
++ * support, and according to Scott Marovich, "the IJG JPEG Library...sometimes
++ * seems to produce slightly more accurate results" (one known example: the
++ * 'quad-jpeg.tif' test image). In addition, libtiff can be compiled with
++ * "old JPEG" support, although its configure script will not enable that by
++ * default. Change 'define' and 'undef' in the following lines as you wish,
++ * but note that defining LIBTIFF_HAS_OLDJPEG_SUPPORT when such is _not_ the
++ * case will result in crashes when encountering old-JPEG TIFFs:
++ */
++
++#define USE_LIBJPEG_FOR_TIFF_YCbCr_RGB_CONVERSION
++#undef LIBTIFF_HAS_OLDJPEG_SUPPORT
++
++
++/***************************************************************************
++ * PhotoCD/MAG/PIC/MAKI/Pi/PIC2/HIPS format Support:
++ *
++ * if, for whatever reason--say, security concerns--you don't want to
++ * include support for one or more of the PhotoCD, MAG/MAKI/Pi/PIC/PIC2
++ * (Japanese), or HIPS (astronomical) image formats, change the relevant
++ * 'define' to 'undef' in the following lines. Conversely, if you *do*
++ * want them, change 'undef' to 'define' as appropriate.
++ */
++
++#define HAVE_PCD /* believed to be reasonably safe */
++
++#undef HAVE_MAG /* probable security issues */
++#undef HAVE_MAKI /* probable security issues */
++#undef HAVE_PI /* probable security issues */
++#undef HAVE_PIC /* probable security issues */
++#undef HAVE_PIC2 /* probable security issues */
++
++#undef HAVE_HIPS /* probable security issues */
++
++
++/***************************************************************************
++ * MacBinary file support:
++ *
++ * if you want XV to be able to handle ``MacBinary'' files (which have
++ * 128 byte info file header at the head), change 'undef' to 'define'
++ * in the following line.
++ */
++
++#undef MACBINARY
++
++
++/***************************************************************************
++ * Auto Expand support:
++ *
++ * if you want to extract archived file automatically and regard it as
++ * a directory, change 'undef' to 'define' in the AUTO_EXPAND line.
++ *
++ * Virtual Thumbdir support:
++ *
++ * if you want Virtual directory based Thumbdir(It means that XV
++ * doesn't forget builded Icons still be quited even if the directory
++ * is read-only), change 'undef' to 'define' the VIRTUAL_TD line.
++ */
++
++#undef AUTO_EXPAND
++#undef VIRTUAL_TD
++
++#if defined(VIRTUAL_TD) && !defined(AUTO_EXPAND)
++# undef VIRTUAL_TD
++#endif
++
++
++/***************************************************************************
++ * Adjust the aspect ratio of Icons:
++ *
++ * if you want to adjust the aspect ratio of the icons in Visual
++ * Schnauzer, change 'undef' to 'define' in the following line.
++ */
++
++#undef VS_ADJUST
++
++
++/***************************************************************************
++ * Restore original colormap:
++ *
++ * if you want to restore original colormap when icons in Visual
++ * Shunauzer is double-clicked, change 'undef' to 'define' in the
++ * following line.
++ */
++
++#undef VS_RESCMAP
++
++
++/***************************************************************************
++ * TextViewer l10n support:
++ *
++ * if you want XV to show the text in Japanese on TextViewer, change
++ * 'undef' to 'define' in the following line.
++ */
++
++#undef TV_L10N
++
++#ifdef TV_L10N
++/*
++ * if you want to change the default code-set used in case that XV
++ * fails to select correct code-set, uncomment the '#define
++ * LOCALE_DEFAULT' line and change the 'LOCALE_DEFAULT' definition
++ * appropriately.
++ * (0:ASCII, 1:EUC-j, 2:JIS, 3:MS Kanji) */
++
++/* # define LOCALE_DEFAULT 0 */
++
++/*
++ * Uncomment and edit the following lines, if your X Window System was
++ * not compiled with -DX_LOCALE and you failed to display the Japanese
++ * text in TextViewer. You don't have to write locale name of JIS code-set
++ * and Microsoft code-set, if your system doesn't support those code-sets.
++ */
++
++/*
++# define LOCALE_NAME_EUC "ja_JP.EUC"
++# define LOCALE_NAME_JIS "ja_JP.JIS"
++# define LOCALE_NAME_MSCODE "ja_JP.SJIS"
++*/
++
++/*
++ * if your system doesn't have the Japanese fonts in the sizes,
++ * Uncomment and edit the following font size entries.
++ */
++
++/* # define TV_FONTSIZE 14,16,24 */
++
++/*
++ * If you need, uncomment and modify the following font name.
++ */
++
++/* # define TV_FONTSET "-*-fixed-medium-r-normal--%d-*" */
++#endif /* TV_L10N */
++
++
++/***************************************************************************
++ * User definable filter support:
++ *
++ * Use the filters as input and output method for load and save unsupported
++ * image format file. The filter command is recognized by definition of
++ * magic number or suffix in "~/.xv_mgcsfx" .
++ * To enable this feature, change 'undef' to 'define' in the following line.
++ */
++#undef HAVE_MGCSFX
++
++#ifdef HAVE_MGCSFX
++/*
++ * Support symbol 'auto' as <input image type> in startup file. This type
++ * cannot use pipe as input; it writes to a temporary file and recognizes
++ * the actual filetype by XV processing.
++ */
++# define HAVE_MGCSFX_AUTO
++
++/*
++ * The startup file of definition for MgcSfx. 'MGCSFX_SITE_RC' is read
++ * first and '~/MGCSFX_RC' is second. So same definitions in both files
++ * are overridden by '~/MGCSFX_RC'
++ * To define startup file, see the sample of startup file 'xv_mgcsfx.sample'.
++ */
++# define MGCSFX_SITE_RC "xv_mgcsfx"
++# define MGCSFX_RC ".xv_mgcsfx"
++
++/*
++ * If you want startup file to pass preprocessor in reading time, then
++ * change 'undef' to 'define' in the following line.
++ *
++ * WARNING : If you decide to use preprocessor, you must not write
++ * '# <comment>' style comment in startup file. Because,
++ * preprocessor can't recognize. */
++# undef USE_MGCSFX_PREPROCESSOR
++
++# ifdef USE_MGCSFX_PREPROCESSOR
++/*
++ * This is used like "system("MGCSFX_PREPROCESSOR MGCSFX_RC > tmp_name");",
++ * and read tmp_name instead of MGCSFX_RC.
++ */
++# define MGCSFX_PREPROCESSOR "/usr/lib/cpp"
++/* # define MGCSFX_PREPROCESSOR "cc -E" */
++
++# endif /* USE_MGCSFX_PREPROCESSOR */
++
++/*
++ * Default string of command. If input command is required for undefined file,
++ * dialog is popuped with 'MGCSFX_DEFAULT_INPUT_COMMAND'. And, if output
++ * command is required in save dialog of MgcSfx, dialog is popuped with
++ * 'MGCSFX_DEFAULT_OUTPUT_COMMAND'.
++ *
++ * WARNING : Now, supported only 'PNM' image format, when command input is
++ * required. You should define filter which use 'PNM' image format
++ * as input or output.
++ */
++# define MGCSFX_DEFAULT_INPUT_COMMAND "tifftopnm"
++# define MGCSFX_DEFAULT_OUTPUT_COMMAND "pnmtotiff"
++
++#endif /* HAVE_MGCSFX */
++
++
++/***************************************************************************
++ * Multi-Lingual TextViewer
++ *
++ * if you want XV to show the text in multi-lingual on TextViewer, change
++ * 'undef' to 'define' in the following line.
++ */
++
++#undef TV_MULTILINGUAL
++
++#define TV_DEFAULT_CODESET TV_EUC_JAPAN
++
++#ifdef TV_MULTILINGUAL
++# undef TV_L10N
++#endif
+diff -ru xv-3.10a/copyright.h xv-3.10a-enhancements/copyright.h
+--- xv-3.10a/copyright.h 1994-12-22 14:34:56.000000000 -0800
++++ xv-3.10a-enhancements/copyright.h 2007-05-20 21:35:34.000000000 -0700
+@@ -1,11 +1,11 @@
+ /* Copyright Notice
+ * ================
+ * Copyright 1989, 1994 by John Bradley
+- *
+- * Permission to copy and distribute XV in its entirety, for non-commercial
+- * purposes, is hereby granted without fee, provided that this license
++ *
++ * Permission to copy and distribute XV in its entirety, for non-commercial
++ * purposes, is hereby granted without fee, provided that this license
+ * information and copyright notice appear unmodified in all copies.
+- *
++ *
+ * Note that distributing XV 'bundled' in with any product is considered
+ * to be a 'commercial purpose'.
+ *
+@@ -13,16 +13,16 @@
+ * and/or configured to be in their 'unregistered copy' mode, so that it
+ * is made obvious to the user that XV is shareware, and that they should
+ * consider donating, or at least reading this License Info.
+- *
++ *
+ * The software may be modified for your own purposes, but modified
+ * versions may not be distributed without prior consent of the author.
+- *
++ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the author be held liable for any damages
+ * arising from the use of this software.
+- *
++ *
+ * If you would like to do something with XV that this copyright
+- * prohibits (such as distributing it with a commercial product,
++ * prohibits (such as distributing it with a commercial product,
+ * using portions of the source in some other program, etc.), please
+ * contact the author (preferably via email). Arrangements can
+ * probably be worked out.
+@@ -34,13 +34,13 @@
+ * larger donations are quite welcome. Folks who donate $25 or more
+ * can receive a Real Nice bound copy of the XV manual for no extra
+ * charge.
+- *
++ *
+ * Commercial, government, and institutional users must register their
+ * copies of XV, for the price of $25 per workstation/X terminal or per
+ * XV user, whichever is less. Note that it does NOT say 'simultaneous user',
+- * but rather, the total number of people who use XV on any sort of
+- * recurring basis. Site licenses are available (and recommended) for those
+- * who wish to run XV on a large (>10) number of machines.
++ * but rather, the total number of people who use XV on any sort of
++ * recurring basis. Site licenses are available (and recommended) for those
++ * who wish to run XV on a large (>10) number of machines.
+ * Contact the author for more details.
+ *
+ * The author may be contacted via:
+@@ -56,3 +56,51 @@
+ * The author may not be contacted by (voice) phone. Please don't try.
+ *
+ */
++
++/*
++ * Portions copyright 2000-2007 by Greg Roelofs and contributors:
++ *
++ * Andrey A. Chernov [ache]
++ * (http://cvsweb.freebsd.org/ports/graphics/xv/files/patch-ab)
++ * Andreas Dilger (adilger clusterfs.com)
++ * Alexander Lehmann (lehmann usa.net)
++ * Alexey Spiridonov (http://www-math.mit.edu/~lesha/)
++ * Anthony Thyssen (http://www.cit.gu.edu.au/~anthony/)
++ * Bruno Rohee (http://bruno.rohee.com/)
++ * David A. Clunie (http://www.dclunie.com/xv-pcd.html)
++ * Erling A. Jacobsen (linuxcub email.dk)
++ * Egmont Koblinger (egmont users.sourceforge.net)
++ * Fabian Greffrath (fabian debian-unofficial.org)
++ * Greg Roelofs (http://pobox.com/~newt/greg_contact.html)
++ * Guido Vollbeding (http://sylvana.net/guido/)
++ * IKEMOTO Masahiro (ikeyan airlab.cs.ritsumei.ac.jp)
++ * John Cooper (john.cooper third-harmonic.com)
++ * John C. Elliott (http://www.seasip.demon.co.uk/ZX/zxdload.html)
++ * John D. Baker (http://mylinuxisp.com/~jdbaker/)
++ * Jörgen Grahn (jgrahn algonet.se)
++ * John H. Bradley, of course (http://www.trilon.com/xv/)
++ * Jean-Pierre Demailly (http://www-fourier.ujf-grenoble.fr/~demailly/)
++ * John Rochester (http://www.freebsd.org/cgi/query-pr.cgi?pr=2920)
++ * (also http://cvsweb.freebsd.org/ports/graphics/xv/files/patch-af, -ag)
++ * James Roberts Kirkpatrick (uwyo.edu)
++ * Joe Zbiciak (http://spatula-city.org/~im14u2c/)
++ * Kyoichiro Suda (http://www.coara.or.jp/~sudakyo/XV_jp.html)
++ * Landon Curt "chongo" Noll (http://www.isthe.com/chongo/)
++ * Larry Jones (lawrence.jones ugs.com)
++ * Peter Jordan (http://www.ibiblio.org/pub/Linux/apps/graphics/viewers/X/)
++ * Pawel S. Veselov (http://manticore.2y.net/wbmp.html)
++ * Ross Combs (rocombs cs.nmsu.edu)
++ * Robin Humble (http://www.cita.utoronto.ca/~rjh/)
++ * Sean Borman (http://www.nd.edu/~sborman/software/xvwheelmouse.html)
++ * TenThumbs (tenthumbs cybernex.net)
++ * Scott B. Marovich (formerly marovich hpl.hp.com)
++ * Tim Adye (http://hepwww.rl.ac.uk/Adye/xv-psnewstyle.html)
++ * Tim Ramsey (tar pobox.com)
++ * Tetsuya INOUE (tin329 chino.it.okayama-u.ac.jp)
++ * Tavis Ormandy (taviso gentoo.org)
++ * Werner Fink (http://www.suse.de/~werner/)
++ *
++ * Other credits are as listed on the XV Downloads page or in the respective
++ * patches (e.g., the jp-extension patches or within the PNG patch).
++ *
++ */
+diff -ru xv-3.10a/docs/bggen.man xv-3.10a-enhancements/docs/bggen.man
+--- xv-3.10a/docs/bggen.man 1994-12-22 14:35:22.000000000 -0800
++++ xv-3.10a-enhancements/docs/bggen.man 2007-04-22 17:32:11.000000000 -0700
+@@ -1,4 +1,4 @@
+-.TH bggen l
++.TH bggen 1
+ .SH NAME
+ bggen \- generates colored backgrounds on X11 displays
+ .SH SYNTAX
+diff -ru xv-3.10a/docs/xcmap.man xv-3.10a-enhancements/docs/xcmap.man
+--- xv-3.10a/docs/xcmap.man 1994-12-22 14:35:23.000000000 -0800
++++ xv-3.10a-enhancements/docs/xcmap.man 2007-04-22 17:32:31.000000000 -0700
+@@ -1,4 +1,4 @@
+-.TH xcmap 1X
++.TH xcmap 1
+ .SH NAME
+ xcmap \- displays the default colormap on X11 displays
+ .SH SYNTAX
+diff -ru xv-3.10a/docs/xv.man xv-3.10a-enhancements/docs/xv.man
+--- xv-3.10a/docs/xv.man 1994-12-22 14:35:22.000000000 -0800
++++ xv-3.10a-enhancements/docs/xv.man 2007-04-22 17:32:53.000000000 -0700
+@@ -1,4 +1,4 @@
+-.TH XV l "2 December 1994" "Rev. 3.10"
++.TH XV 1 "22 April 2007" "Rev. 3.10a-jumboFix+Enh"
+ .SH NAME
+ \fBxv\fP \- interactive image display for the X Window System
+ .SH SYNTAX
+@@ -8,14 +8,17 @@
+ .SH DESCRIPTION
+ The
+ .I xv
+-program displays images in the GIF, JPEG, TIFF,
+-PBM, PGM, PPM, X11 bitmap, Utah Raster Toolkit RLE, PDS/VICAR, Sun Rasterfile,
+-BMP, PCX, IRIS RGB, XPM, Targa, XWD, possibly PostScript, and PM formats on
+-workstations and terminals running the X Window System, Version 11.
++program displays images on workstations and terminals running the X Window
++System, Version 11. Supported image formats include
++PBM, PGM, PPM, X11 bitmap, XWD, XPM, Utah Raster Toolkit RLE, PDS/VICAR,
++FITS, Sun Rasterfile, GIF, PCX, Targa/TGA, BMP, WBMP, IRIS RGB, Spectrum
++SCREEN$, PM, and optionally PNG, JPEG, JPEG 2000, JP2, TIFF, PostScript,
++PDF, G3 fax, MAG, PIC, MAKI (640x400), PI, and PIC2.
+ .LP
+-The documentation for XV is now distributed
++Aside from the usage screen (available by typing 'xv -help' at the command
++line), documentation for XV is now distributed
+ .I only
+-as a PostScript file, as it has gotten enormous,
++as a PostScript (or PDF) file, as it has gotten enormous
+ and is no longer very well suited to the 'man' page format.
+ Print a copy of the (100-ish page) manual found in
+ .IR docs/xvdocs.ps .
+@@ -26,9 +29,14 @@
+ If you don't
+ .I have
+ the PostScript file, it is part of the standard XV distribution, the
+-latest version of which can be obtained via anonymous ftp from
++latest version of which can be obtained from
++.IR http://www.trilon.com/xv/
++or via anonymous ftp from
+ .IR ftp.cis.upenn.edu
+-in the directory pub/xv
++in the directory pub/xv .
++.PP
++This version has been patched with the XV Jumbo Patches, available from
++.IR http://pobox.com/~newt/greg_xv.html .
+ .PP
+ .SH AUTHOR
+-John Bradley
++John Bradley (and many contributors)
+diff -ru xv-3.10a/docs/xvp2p.man xv-3.10a-enhancements/docs/xvp2p.man
+--- xv-3.10a/docs/xvp2p.man 1994-12-22 14:35:25.000000000 -0800
++++ xv-3.10a-enhancements/docs/xvp2p.man 2007-04-22 17:33:23.000000000 -0700
+@@ -1,4 +1,4 @@
+-.TH xvpictoppm 1X
++.TH xvpictoppm 1
+ .SH NAME
+ xvpictoppm \- converts XV 'thumbnail' files to standard PPM format
+ .SH SYNTAX
+diff -ru xv-3.10a/tiff/Makefile xv-3.10a-enhancements/tiff/Makefile
+--- xv-3.10a/tiff/Makefile 1994-12-22 14:35:12.000000000 -0800
++++ xv-3.10a-enhancements/tiff/Makefile 2005-04-17 14:45:28.000000000 -0700
+@@ -30,13 +30,15 @@
+ # OF THIS SOFTWARE.
+ #
+
+-AR= ar
+-RANLIB= ./RANLIB.csh
++AR= ar
++CHMOD= chmod
++#RANLIB= ./RANLIB.csh
++RANLIB= ./RANLIB.sh
+
+ IPATH= -I.
+
+ COPTS= -O
+-CFLAGS= ${COPTS} ${IPATH}
++CFLAGS= ${COPTS} ${IPATH} -D_BSD_SOURCE
+
+ INCS= tiff.h tiffio.h
+
+@@ -60,6 +62,7 @@
+
+ ${ALL}: ${OBJS}
+ ${AR} rc libtiff.a $?
++ ${CHMOD} +x ${RANLIB}
+ ${RANLIB} libtiff.a
+
+ ${OBJS}: tiffio.h tiff.h tiffcomp.h tiffiop.h tiffconf.h
+diff -ru xv-3.10a/tiff/Makefile.std xv-3.10a-enhancements/tiff/Makefile.std
+--- xv-3.10a/tiff/Makefile.std 1994-12-22 14:35:16.000000000 -0800
++++ xv-3.10a-enhancements/tiff/Makefile.std 2004-05-16 18:50:39.000000000 -0700
+@@ -30,8 +30,10 @@
+ # OF THIS SOFTWARE.
+ #
+
+-AR= /bin/ar
+-RANLIB= ./RANLIB.csh
++AR= /bin/ar
++CHMOD= chmod
++#RANLIB= ./RANLIB.csh
++RANLIB= ./RANLIB.sh
+
+ IPATH= -I.
+
+@@ -60,6 +62,7 @@
+
+ ${ALL}: ${OBJS}
+ ${AR} rc libtiff.a $?
++ ${CHMOD} +x ${RANLIB}
+ ${RANLIB} libtiff.a
+
+ ${OBJS}: tiffio.h tiff.h tiffcomp.h tiffiop.h tiffconf.h
+diff -ru xv-3.10a/vdcomp.c xv-3.10a-enhancements/vdcomp.c
+--- xv-3.10a/vdcomp.c 1994-12-22 14:34:47.000000000 -0800
++++ xv-3.10a-enhancements/vdcomp.c 2007-04-15 21:09:55.000000000 -0700
+@@ -5,8 +5,8 @@
+ /* Decompresses images using Kris Becker's subroutine DECOMP.C */
+ /* which is included in this program in a shortened version. */
+ /* */
+-/* Reads a variable length compressed PDS image and outputs a */
+-/* fixed length uncompressed image file in PDS format with */
++/* Reads a variable-length compressed PDS image and outputs a */
++/* fixed-length uncompressed image file in PDS format with */
+ /* labels, image histogram, engineering table, line header table */
+ /* and an image with PDS, FITS, VICAR or no labels. If used on */
+ /* a non-byte-swapped machine the image histogram is un-swapped. */
+@@ -96,40 +96,54 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+
+-/* include a malloc.h, of some sort... */
+-#ifndef VMS /* VMS hates multi-line '#if's */
+-# if !defined(ibm032) && \
+- !defined(__convex__) && \
+- !(defined(vax) && !defined(ultrix)) && \
+- !defined(mips) && \
+- !defined(apollo) && \
+- !defined(pyr) && \
+- !defined(__UMAXV__) && \
+- !defined(bsd43) && \
+- !defined(aux) && \
+- !defined(__bsdi__) && \
+- !defined(sequent)
+-
+-# if defined(hp300) || defined(hp800) || defined(NeXT)
+-# include <sys/malloc.h> /* it's in 'sys' on HPs and NeXT */
+-# else
+-# include <malloc.h>
+-# endif
+-# endif
++/* include a malloc.h of some sort (if needed...most systems use stdlib.h) */
++#ifndef VMS /* VMS hates multi-line "#if"s */
++ /*
++ * I want to use BSD macro for checking if this OS is *BSD or not,
++ * but the macro is defined in <sys/parm.h>, which I don't know all
++ * machine has or not.
++ */
++# if !defined(ibm032) && \
++ !defined(__convex__) && \
++ !(defined(vax) && !defined(ultrix)) && \
++ !defined(mips) && \
++ !defined(apollo) && \
++ !defined(pyr) && \
++ !defined(sequent) && \
++ !defined(__UMAXV__) && \
++ !defined(aux) && \
++ !defined(bsd43) && \
++ !defined(__bsd43) && \
++ !defined(__bsdi__) && \
++ !defined(__386BSD__) && \
++ !defined(__FreeBSD__) && \
++ !defined(__OpenBSD__) && \
++ !defined(__NetBSD__) && \
++ !defined(__DARWIN__)
++
++# if defined(hp300) || defined(hp800) || defined(NeXT)
++# include <sys/malloc.h> /* it's in "sys" on HPs and NeXT */
++# else
++# include <malloc.h> /* FIXME: should explicitly list systems that NEED this, not everyone that doesn't */
++# endif
++
++# endif /* !most modern systems */
+ #endif /* !VMS */
+
+
+ #include <X11/Xos.h>
+
+-#define TRUE 1
+-#define FALSE 0
++#define TRUE 1
++#define FALSE 0
++
++#define NAMELEN 1024 /* inname and outname sizes */
+
+- /* pc i/o defines */
+-#define O_BINARY 0x8000 /* file mode is binary */
++ /* PC I/O defines */
++#define O_BINARY 0x8000 /* file mode is binary */
+
+- /* vax i/o defines */
+-#define RECORD_TYPE "rfm=fix" /* VAX fixed length output */
+-#define CTX "ctx=bin" /* no translation of \n */
++ /* VAX/VMS I/O defines */
++#define RECORD_TYPE "rfm=fix" /* VAX/VMS fixed-length output */
++#define CTX "ctx=bin" /* no translation of \n */
+ #define FOP "fop=cif,sup" /* file processing ops */
+
+ typedef struct leaf { struct leaf *right;
+@@ -142,9 +156,9 @@
+ once the tree is created by the accompanying routine huff_tree.
+ **************************************************************************/
+
+- NODE *tree;
++static NODE *tree;
+
+-/* subroutine definitions */
++/* subroutine definitions */
+
+ #undef PARM
+ #ifdef __STDC__
+@@ -172,11 +186,11 @@
+ void free_tree PARM((int *));
+ int free_node PARM((NODE *, int));
+
+-/* global variables */
++/* global variables */
+
+ int infile;
+ FILE *outfile;
+-char inname[1024],outname[1024];
++char inname[NAMELEN], outname[NAMELEN];
+ int output_format;
+ int record_bytes, max_lines;
+ int line_samples, fits_pad;
+@@ -185,8 +199,8 @@
+
+ /*************************************************/
+ int main(argc,argv)
+- int argc;
+- char **argv;
++ int argc;
++ char **argv;
+ {
+ unsigned char ibuf[2048],obuf[2048];
+ unsigned char blank=32;
+@@ -200,12 +214,12 @@
+ /* */
+ /*********************************************************************/
+
+- strcpy(inname," ");
++ strcpy(inname," ");
+ strcpy(outname," ");
+ output_format = 0;
+
+ if (argc == 1); /* prompt user for parameters */
+- else if (argc == 2 && (strncmp(argv[1],"help",(size_t) 4) == 0 ||
++ else if (argc == 2 && (strncmp(argv[1],"help",(size_t) 4) == 0 ||
+ strncmp(argv[1],"HELP",(size_t) 4) == 0 ||
+ strncmp(argv[1],"?", (size_t) 1) == 0)) {
+ fprintf(stderr,
+@@ -214,18 +228,22 @@
+ fprintf(stderr," infile - name of compressed image file. \n");
+ fprintf(stderr," outfile - name of uncompressed output file.\n");
+ fprintf(stderr," output format - selected from the following list:\n");
+- fprintf(stderr,"\n");
+- fprintf(stderr," 1 SFDU/PDS format [DEFAULT].\n");
+- fprintf(stderr," 2 FITS format. \n");
+- fprintf(stderr," 3 VICAR format. \n");
+- fprintf(stderr," 4 Unlabelled binary array. \n\n");
++ fprintf(stderr,"\n");
++ fprintf(stderr," 1 SFDU/PDS format [DEFAULT].\n");
++ fprintf(stderr," 2 FITS format. \n");
++ fprintf(stderr," 3 VICAR format. \n");
++ fprintf(stderr," 4 Unlabelled binary array. \n\n");
+ exit(1);
+- }
++ }
+ else {
+- strcpy(inname,argv[1]);
+- if (argc >= 3) strcpy(outname,argv[2]);
++ strncpy(inname, argv[1], sizeof(inname)-1);
++ inname[sizeof(inname)-1] = '\0';
++ if (argc >= 3) {
++ strncpy(outname, argv[2], sizeof(outname)-1);
++ outname[sizeof(outname)-1] = '\0';
++ }
+ if (argc == 3) output_format = 1;
+- if (argc == 4) sscanf(argv[3],"%d",&output_format);
++ if (argc == 4) sscanf(argv[3],"%d",&output_format);
+ }
+
+ host = check_host();
+@@ -244,13 +262,13 @@
+ case 4: no_labels(host); break;
+ }
+
+- if (record_bytes == 836) { /* set up values for image sizes */
++ if (record_bytes == 836) { /* set up values for image sizes */
+ max_lines = 800;
+ fits_pad = 2240;
+ line_samples = 800;
+ }
+ else {
+- max_lines = 1056;
++ max_lines = 1056;
+ fits_pad = 1536;
+ line_samples = 1204;
+ }
+@@ -394,12 +412,12 @@
+ if (record_bytes == 1204) /* do checksum for viking */
+ for (i=0; i<record_bytes; i++) checksum += (int)obuf[i];
+
+- if ((line % 100 == 0) && (outfile != stdout))
++ if ((line % 100 == 0) && (outfile != stdout))
+ fprintf(stderr,"\nline %d",line);
+
+ } while (length > 0 && line < max_lines);
+
+- if (record_bytes == 1204 && (outfile != stdout))
++ if (record_bytes == 1204 && (outfile != stdout))
+ /* print checksum for viking */
+ fprintf(stderr,"\n Image label checksum = %d computed checksum = %d\n",
+ label_checksum,checksum);
+@@ -425,33 +443,36 @@
+ /*********************************************************************/
+
+ int get_files(host)
+-int host;
++ int host;
+ {
+- short shortint;
+ typedef long off_t;
++ short shortint;
++ char *s;
+
+ if (inname[0] == ' ') {
+ printf("\nEnter name of file to be decompressed: ");
+- gets (inname);
++ fgets(inname, sizeof(inname), stdin);
++ if ((s = strchr(inname, '\n')) != NULL)
++ *s = '\0';
+ }
+
+- if (host == 1 | host == 2) {
+- if ((infile = open(inname,O_RDONLY | O_BINARY)) <= 0) {
+- fprintf(stderr,"\ncan't open input file: %s\n",inname);
++ if (host == 1 || host == 2) {
++ if ((infile = open(inname, O_RDONLY | O_BINARY)) <= 0) {
++ fprintf(stderr,"\ncan't open input file: %s\n", inname);
+ exit(1);
+ }
+ }
+- else if (host == 3 | host == 5) {
+- if ((infile = open(inname,O_RDONLY)) <= 0) {
+- fprintf(stderr,"\ncan't open input file: %s\n",inname);
++ else if (host == 3 || host == 5) {
++ if ((infile = open(inname, O_RDONLY)) <= 0) {
++ fprintf(stderr,"\ncan't open input file: %s\n", inname);
+ exit(1);
+ }
+
+ /****************************************************************/
+- /* If we are on a vax see if the file is in var length format. */
+- /* This logic is in here in case the vax file has been stored */
++ /* If we are on a VAX see if the file is in var length format. */
++ /* This logic is in here in case the VAX file has been stored */
+ /* in fixed or undefined format. This might be necessary since */
+- /* vax variable length files can't be moved to other computer */
++ /* VAX variable-length files can't be moved to other computer */
+ /* systems with standard comm programs (kermit, for example). */
+ /****************************************************************/
+
+@@ -459,9 +480,9 @@
+ read(infile,&shortint, (size_t) 2);
+ if (shortint > 0 && shortint < 80) {
+ host = 4; /* change host to 4 */
+- printf("This is not a VAX variable length file.");
++ printf("This is not a VAX variable-length file.");
+ }
+- else printf("This is a VAX variable length file.");
++ else printf("This is a VAX variable-length file.");
+ lseek(infile,(off_t) 0,0); /* reposition to beginning of file */
+ }
+ }
+@@ -474,13 +495,17 @@
+ printf("\n 3. VICAR format.");
+ printf("\n 4. Unlabelled binary array.\n");
+ printf("\n Enter format number:");
+- gets(inname);
++ fgets(inname, sizeof(inname), stdin);
++ if ((s = strchr(inname, '\n')) != NULL)
++ *s = '\0';
+ output_format = atoi(inname);
+ } while (output_format < 1 || output_format > 4);
+
+ if (outname[0] == ' ') {
+ printf("\nEnter name of uncompressed output file: ");
+- gets (outname);
++ fgets(outname, sizeof(outname), stdin);
++ if ((s = strchr(outname, '\n')) != NULL)
++ *s = '\0';
+ }
+
+ return(host);
+@@ -495,68 +520,68 @@
+ /*********************************************************************/
+
+ void open_files(host)
+-int *host;
++ int *host;
+ {
+ if (*host == 1 || *host == 2 || *host == 5) {
+ if (outname[0] == '-') outfile=stdout;
+- else if ((outfile = fopen(outname,"wb"))==NULL) {
+- fprintf(stderr,"\ncan't open output file: %s\n",outname);
++ else if ((outfile = fopen(outname, "wb"))==NULL) {
++ fprintf(stderr,"\ncan't open output file: %s\n", outname);
+ exit(1);
+ }
+ }
+
+ else if (*host == 3 || *host == 4) {
+ if (output_format == 1) { /* write PDS format blocks */
+- if (record_bytes == 836) {
+- if ((outfile=fopen(outname,"w"
++ if (record_bytes == 836) {
++ if ((outfile=fopen(outname, "w"
+ #ifdef VMS
+ ,"mrs=836",FOP,CTX,RECORD_TYPE
+ #endif
+ ))==NULL) {
+- fprintf(stderr,"\ncan't open output file: %s\n",outname);
++ fprintf(stderr,"\ncan't open output file: %s\n", outname);
+ exit(1);
+ }
+ }
+ else {
+- if ((outfile=fopen(outname,"w"
++ if ((outfile=fopen(outname, "w"
+ #ifdef VMS
+ ,"mrs=1204",FOP,CTX,RECORD_TYPE
+ #endif
+ ))==NULL) {
+- fprintf(stderr,"\ncan't open output file: %s\n",outname);
++ fprintf(stderr,"\ncan't open output file: %s\n", outname);
+ exit(1);
+ }
+ }
+ }
+ else if (output_format == 2) { /* write FITS format blocks */
+- if ((outfile=fopen(outname,"w"
++ if ((outfile=fopen(outname, "w"
+ #ifdef VMS
+ ,"mrs=2880",FOP,CTX,RECORD_TYPE
+ #endif
+ ))==NULL) {
+- fprintf(stderr,"\ncan't open output file: %s\n",outname);
++ fprintf(stderr,"\ncan't open output file: %s\n", outname);
+ exit(1);
+ }
+ }
+
+- else { /* write fixed length records */
+- if (record_bytes == 836) {
+- if ((outfile=fopen(outname,"w"
++ else { /* write fixed-length records */
++ if (record_bytes == 836) {
++ if ((outfile=fopen(outname, "w"
+ #ifdef VMS
+ ,"mrs=800",FOP,CTX,RECORD_TYPE
+ #endif
+ ))==NULL) {
+- fprintf(stderr,"\ncan't open output file: %s\n",outname);
++ fprintf(stderr,"\ncan't open output file: %s\n", outname);
+ exit(1);
+ }
+ }
+ else {
+- if ((outfile=fopen(outname,"w"
++ if ((outfile=fopen(outname, "w"
+ #ifdef VMS
+ ,"mrs=1204",FOP,CTX,RECORD_TYPE
+ #endif
+ ))==NULL) {
+- fprintf(stderr,"\ncan't open output file: %s\n",outname);
++ fprintf(stderr,"\ncan't open output file: %s\n", outname);
+ exit(1);
+ }
+ }
+@@ -572,11 +597,11 @@
+ /*********************************************************************/
+
+ void pds_labels(host)
+- int host;
++ int host;
+ {
+- char outstring[80],ibuf[2048];
++ char ibuf[2048];
+ unsigned char cr=13,lf=10,blank=32;
+- short length,nlen,total_bytes,line,i;
++ short length,total_bytes,i;
+
+
+ total_bytes = 0;
+@@ -613,11 +638,11 @@
+ (size_t) 53,(size_t) 1,outfile);
+ else
+ fwrite("CCSD3ZF0000100000001NJPL3IF0PDS200000001 = SFDU_LABEL",
+- (size_t) 53,(size_t) 1,outfile);
++ (size_t) 53,(size_t) 1,outfile);
+
+ fprintf(outfile,"%c%c",cr,lf);
+ fwrite("/* FILE FORMAT AND LENGTH */",(size_t) 37,(size_t) 1,
+- outfile);
++ outfile);
+ fprintf(outfile,"%c%c",cr,lf);
+ fwrite("RECORD_TYPE = FIXED_LENGTH",(size_t) 47,
+ (size_t) 1,outfile);
+@@ -710,7 +735,7 @@
+ }
+ else {
+ strcpy(ibuf+35,"60");
+- length = length - 2;
++ length = length - 2;
+ }
+
+ fwrite(ibuf,(size_t) length,(size_t) 1,outfile);
+@@ -730,7 +755,7 @@
+ }
+
+ else if ((i = strncmp(ibuf," ENCODING",(size_t) 9)) == 0);
+-
++
+ /*****************************************************************/
+ /* delete the encoding type label in the image object */
+ /*****************************************************************/
+@@ -787,10 +812,10 @@
+ /*********************************************************************/
+
+ void fits_labels(host)
+-int host;
++ int host;
+ {
+ char ibuf[2048],outstring[80];
+- short length,nlen,total_bytes,line,i;
++ short length,total_bytes,i;
+ unsigned char cr=13,lf=10,blank=32;
+
+ do {
+@@ -799,7 +824,7 @@
+ /*****************************************************************/
+ /* find the checksum and store in label_checksum */
+ /*****************************************************************/
+- if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
++ if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
+ ibuf[length] = '\0';
+ label_checksum = atol(ibuf+35);
+ }
+@@ -842,7 +867,7 @@
+
+ if (record_bytes == 836)
+ strcpy(outstring,"NAXIS1 = 800");
+- else
++ else
+ strcpy(outstring,"NAXIS1 = 1204");
+
+ strcat(outstring," ");
+@@ -862,7 +887,7 @@
+
+ strcpy(outstring,"END ");
+ strcat(outstring," ");
+-
++
+ fwrite(outstring,(size_t) 78,(size_t) 1,outfile);
+ fprintf(outfile,"%c%c",cr,lf);
+ total_bytes = total_bytes + 80;
+@@ -871,6 +896,7 @@
+ for (i=total_bytes; i<2880; i++) fputc(blank,outfile);
+ }
+
++
+ /*********************************************************************/
+ /* */
+ /* subroutine vicar_labels - write vicar labels to output file */
+@@ -878,11 +904,10 @@
+ /*********************************************************************/
+
+ void vicar_labels(host)
+-int host;
+-
++ int host;
+ {
+ char ibuf[2048],outstring[80];
+- short length,nlen,total_bytes,line,i;
++ short length,total_bytes,i;
+ unsigned char cr=13,lf=10,blank=32;
+
+ do {
+@@ -890,7 +915,7 @@
+ /*****************************************************************/
+ /* find the checksum and store in label_checksum */
+ /*****************************************************************/
+- if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
++ if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
+ ibuf[length] = '\0';
+ label_checksum = atol(ibuf+35);
+ }
+@@ -950,10 +975,10 @@
+ /*********************************************************************/
+
+ void no_labels(host)
+-int host;
++ int host;
+ {
+- char ibuf[2048],outstring[80];
+- short length,nlen,total_bytes,line,i;
++ char ibuf[2048];
++ short length,i;
+
+ do {
+ length = read_var(ibuf,host);
+@@ -961,7 +986,7 @@
+ /*****************************************************************/
+ /* find the checksum and store in label_checksum */
+ /*****************************************************************/
+- if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
++ if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
+ ibuf[length] = '\0';
+ label_checksum = atol(ibuf+35);
+ }
+@@ -984,15 +1009,16 @@
+ open_files(&host);
+ }
+
++
+ /*********************************************************************/
+ /* */
+-/* subroutine read_var - read variable length records from input file*/
++/* subroutine read_var - read variable-length records from input file*/
+ /* */
+ /*********************************************************************/
+
+ int read_var(ibuf,host)
+-char *ibuf;
+-int host;
++ char *ibuf;
++ int host;
+ {
+ int length,result,nlen;
+ char temp;
+@@ -1027,19 +1053,19 @@
+ return (length);
+
+ case 3: /*******************************************************/
+- /* VAX host with variable length support */
++ /* VAX host with variable-length support */
+ /*******************************************************/
+ length = read(infile,ibuf,(size_t) 2048/* upper bound */);
+ return (length);
+
+ case 4: /*******************************************************/
+- /* VAX host, but not a variable length file */
++ /* VAX host, but not a variable-length file */
+ /*******************************************************/
+ length = 0;
+ result = read(infile,&length,(size_t) 2);
+ nlen = read(infile,ibuf,(size_t) length+(length%2));
+
+- /* check to see if we crossed a vax record boundary */
++ /* check to see if we crossed a VAX record boundary */
+ while (nlen < length)
+ nlen += read(infile,ibuf+nlen,(size_t) length+(length%2)-nlen);
+ return (length);
+@@ -1061,6 +1087,7 @@
+ return 0;
+ }
+
++
+ /*********************************************************************/
+ /* */
+ /* subroutine check_host - find out what kind of machine we are on */
+@@ -1115,23 +1142,23 @@
+ "Host 5 - 32 bit integers without swapping, no var len support.");
+ }
+
+- if ((*outname)!='-') fprintf(stderr,"%s\n",hostname);
++ if ((*outname) != '-') fprintf(stderr, "%s\n", hostname);
+ return(host);
+ }
+
+
+-int swap_int(inval) /* swap 4 byte integer */
+- int inval;
++int swap_int(inval) /* swap 4 byte integer */
++ int inval;
+ {
+- union /* this union is used to swap 16 and 32 bit integers */
++ union /* this union is used to swap 16 and 32 bit integers */
+ {
+ char ichar[4];
+ short slen;
+ int llen;
+ } onion;
+ char temp;
+-
+- /* byte swap the input field */
++
++ /* byte swap the input field */
+ onion.llen = inval;
+ temp = onion.ichar[0];
+ onion.ichar[0]=onion.ichar[3];
+@@ -1146,17 +1173,13 @@
+ /****************************************************************************
+ *_TITLE decompress - decompresses image lines stored in compressed format *
+ *_ARGS TYPE NAME I/O DESCRIPTION */
+- char *ibuf; /* I Compressed data buffer */
+- char *obuf; /* O Decompressed image line */
+- int *nin; /* I Number of bytes on input buffer */
+- int *nout; /* I Number of bytes in output buffer */
+-
++ char *ibuf; /* I Compressed data buffer */
++ char *obuf; /* O Decompressed image line */
++ int *nin; /* I Number of bytes on input buffer */
++ int *nout; /* I Number of bytes in output buffer */
+ {
+- /* The external root pointer to tree */
+- extern NODE *tree;
+-
+ dcmprs(ibuf,obuf,nin,nout,tree);
+-
++
+ return;
+ }
+
+@@ -1165,10 +1188,8 @@
+ /***************************************************************************
+ *_TITLE decmpinit - initializes the Huffman tree *
+ *_ARGS TYPE NAME I/O DESCRIPTION */
+- int *hist; /* I First-difference histogram. */
+-
++ int *hist; /* I First-difference histogram. */
+ {
+- extern NODE *tree; /* Huffman tree root pointer */
+ tree = huff_tree(hist);
+ return;
+ }
+@@ -1178,8 +1199,7 @@
+ /****************************************************************************
+ *_TITLE huff_tree - constructs the Huffman tree; returns pointer to root *
+ *_ARGS TYPE NAME I/O DESCRIPTION */
+- int *hist; /* I First difference histogram */
+-
++ int *hist; /* I First difference histogram */
+ {
+ /* Local variables used */
+ int freq_list[512]; /* Histogram frequency list */
+@@ -1189,7 +1209,6 @@
+ NODE **np; /* Node list pointer */
+
+ int num_freq; /* Number non-zero frequencies in histogram */
+- int sum; /* Sum of all frequencies */
+
+ short int num_nodes; /* Counter for DN initialization */
+ short int cnt; /* Miscellaneous counter */
+@@ -1228,7 +1247,7 @@
+
+ j = 0;
+ for (i=4 ; --i >= 0 ; j = (j << 8) | *(cp+i));
+-
++
+ /* Now make the assignment */
+ *fp++ = j;
+ temp = new_node(num_nodes);
+@@ -1341,7 +1360,7 @@
+ l--;
+ if ( j <= freq_list) break;
+ }
+-
++
+ }
+ return;
+ }
+@@ -1362,9 +1381,9 @@
+ NODE *ptr = root; /* pointer to position in tree */
+ unsigned char test; /* test byte for bit set */
+ unsigned char idn; /* input compressed byte */
+-
++
+ char odn; /* last dn value decompressed */
+-
++
+ char *ilim = ibuf + *nin; /* end of compressed bytes */
+ char *olim = obuf + *nout; /* end of output buffer */
+
+@@ -1406,10 +1425,9 @@
+ /****************************************************************************
+ *_TITLE free_tree - free memory of all allocated nodes *
+ *_ARGS TYPE NAME I/O DESCRIPTION */
+- int *nfreed; /* O Return of total count of nodes *
++ int *nfreed; /* O Return of total count of nodes *
+ * freed. */
+-
+-/*
++/* *
+ *_DESCR This routine is supplied to the programmer to free up all the *
+ * allocated memory required to build the huffman tree. The count *
+ * of the nodes freed is returned in the parameter 'nfreed'. The *
+@@ -1417,16 +1435,13 @@
+ * than one file per run, the program will not keep allocating new *
+ * memory without first deallocating all previous nodes associated *
+ * with the previous file decompression. *
+-
++* *
+ *_HIST 16-AUG-89 Kris Becker USGS, Flagstaff Original Version *
+ *_END *
+ ****************************************************************************/
+-
+ {
+ int total_free = 0;
+
+- extern NODE *tree; /* Huffman tree root pointer */
+-
+ *nfreed = free_node(tree,total_free);
+
+ return;
+@@ -1435,36 +1450,33 @@
+
+ int free_node(pnode,total_free)
+ /***************************************************************************
+-*_TITLE free_node - deallocates an allocated NODE pointer
++*_TITLE free_node - deallocates an allocated NODE pointer *
+ *_ARGS TYPE NAME I/O DESCRIPTION */
+ NODE *pnode; /* I Pointer to node to free */
+- int total_free; /* I Total number of freed nodes */
+-
+-/*
++ int total_free; /* I Total number of freed nodes */
++/* *
+ *_DESCR free_node will check both right and left pointers of a node *
+ * and then free the current node using the free() C utility. *
+ * Note that all nodes attached to the node via right or left *
+ * pointers area also freed, so be sure that this is the desired *
+ * result when calling this routine. *
+-
++* *
+ * This routine is supplied to allow successive calls to the *
+ * decmpinit routine. It will free up the memory allocated *
+ * by previous calls to the decmpinit routine. The call to free *
+-* a previous huffman tree is: total = free_node(tree,(int) 0); *
++* a previous huffman tree is: total = free_node(tree,(int) 0); *
+ * This call must be done by the programmer application routine *
+ * and is not done by any of these routines. *
+ *_HIST 16-AUG-89 Kris Becker U.S.G.S Flagstaff Original Version */
+ {
+ if (pnode == (NODE *) NULL) return(total_free);
+-
++
+ if (pnode->right != (NODE *) NULL)
+ total_free = free_node(pnode->right,total_free);
+ if (pnode->left != (NODE *) NULL)
+ total_free = free_node(pnode->left,total_free);
+-
++
+ free((char *) pnode);
+ return(total_free + 1);
+ }
+
+-
+-
+diff -ru xv-3.10a/xcmap.c xv-3.10a-enhancements/xcmap.c
+--- xv-3.10a/xcmap.c 1995-01-03 13:14:52.000000000 -0800
++++ xv-3.10a-enhancements/xcmap.c 2007-04-15 13:12:41.000000000 -0700
+@@ -9,6 +9,9 @@
+
+ /* include files */
+ #include <stdio.h>
++#ifdef __STDC__
++# include <stdlib.h> /* exit(), abs() */
++#endif
+ #include <sys/types.h>
+ #include <ctype.h>
+
+@@ -18,7 +21,7 @@
+ #include <X11/cursorfont.h>
+
+ #ifdef VMS
+-#define index strchr
++# define index strchr
+ #endif
+
+ typedef unsigned char byte;
+@@ -58,7 +61,7 @@
+ int main PARM((int, char **));
+ static void HandleEvent PARM((XEvent *));
+ static void Syntax PARM((void));
+-static void FatalError PARM((char *));
++static void FatalError PARM((const char *));
+ static void Quit PARM((void));
+ static void CreateMainWindow PARM((char *, char *, int, char **));
+ static void DrawWindow PARM((int,int,int,int));
+@@ -75,50 +78,50 @@
+ int i;
+ char *display, *geom;
+ XEvent event;
+-
++
+ cmd = argv[0];
+ display = geom = NULL;
+-
+-
++
++
+ /*********************Options*********************/
+-
++
+ for (i = 1; i < argc; i++) {
+ char *strind;
+-
++
+ if (!strncmp(argv[i],"-g", (size_t)2)) { /* geometry */
+ i++;
+ geom = argv[i];
+ continue;
+ }
+-
++
+ if (argv[i][0] == '=') { /* old-style geometry */
+ geom = argv[i];
+ continue;
+ }
+-
++
+ if (!strncmp(argv[i],"-d",(size_t) 2)) { /* display */
+ i++;
+ display = argv[i];
+ continue;
+ }
+-
++
+ strind = (char *) index(argv[i], ':'); /* old-style display */
+ if(strind != NULL) {
+ display = argv[i];
+ continue;
+ }
+-
++
+ Syntax();
+ }
+-
+-
++
++
+ /*****************************************************/
+-
++
+ /* Open up the display. */
+-
++
+ if ( (theDisp=XOpenDisplay(display)) == NULL)
+ FatalError("can't open display");
+-
++
+ theScreen = DefaultScreen(theDisp);
+ theCmap = DefaultColormap(theDisp, theScreen);
+ rootW = RootWindow(theDisp,theScreen);
+@@ -126,9 +129,9 @@
+ fcol = WhitePixel(theDisp,theScreen);
+ bcol = BlackPixel(theDisp,theScreen);
+ theVisual = DefaultVisual(theDisp,theScreen);
+-
++
+ dispcells = DisplayCells(theDisp, theScreen);
+-
++
+ if (dispcells>256) {
+ sprintf(tmpstr,"dispcells = %d. %s",
+ dispcells, "This program can only deal with <= 8-bit displays.");
+@@ -140,27 +143,32 @@
+ nxcells = nycells = 8;
+ else if (dispcells>4)
+ nxcells = nycells = 4;
+- else
++ else if (dispcells>2)
+ nxcells = nycells = 2;
+-
++ else
++ {
++ nxcells = 2;
++ nycells = 1;
++ }
++
+ /**************** Create/Open X Resources ***************/
+ if ((mfinfo = XLoadQueryFont(theDisp,FONT))==NULL) {
+ sprintf(tmpstr,"couldn't open '%s' font",FONT);
+ FatalError(tmpstr);
+ }
+-
++
+ mfont=mfinfo->fid;
+ XSetFont(theDisp,theGC,mfont);
+ XSetForeground(theDisp,theGC,fcol);
+ XSetBackground(theDisp,theGC,bcol);
+-
++
+ CreateMainWindow(cmd,geom,argc,argv);
+- Resize(WIDE,HIGH);
+-
+- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
++ Resize((int)WIDE,(int)HIGH);
++
++ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
+ | StructureNotifyMask | ButtonPressMask);
+ XMapWindow(theDisp,mainW);
+-
++
+ /**************** Main loop *****************/
+ while (1) {
+ XNextEvent(theDisp, &event);
+@@ -177,41 +185,41 @@
+ switch (event->type) {
+ case Expose: {
+ XExposeEvent *exp_event = (XExposeEvent *) event;
+-
+- if (exp_event->window==mainW)
++
++ if (exp_event->window==mainW)
+ DrawWindow(exp_event->x,exp_event->y,
+ exp_event->width, exp_event->height);
+ }
+ break;
+-
++
+ case ButtonPress: {
+ XButtonEvent *but_event = (XButtonEvent *) event;
+-
+- if (but_event->window == mainW && but_event->button == Button1)
++
++ if (but_event->window == mainW && but_event->button == Button1)
+ TrackMouse(but_event->x, but_event->y);
+ }
+ break;
+-
++
+ case KeyPress: {
+ XKeyEvent *key_event = (XKeyEvent *) event;
+ KeySym ks;
+ XComposeStatus status;
+-
++
+ XLookupString(key_event,tmpstr,128,&ks,&status);
+ if (tmpstr[0]=='q' || tmpstr[0]=='Q') Quit();
+ }
+ break;
+-
++
+ case ConfigureNotify: {
+ XConfigureEvent *conf_event = (XConfigureEvent *) event;
+-
+- if (conf_event->window == mainW &&
+- (conf_event->width != WIDE || conf_event->height != HIGH))
+- Resize(conf_event->width, conf_event->height);
++ int w = conf_event->width, h = conf_event->height;
++
++ if (conf_event->window == mainW && (w != WIDE || h != HIGH))
++ Resize((int)(w ? w : WIDE), (int)(h ? h : HIGH));
+ }
+ break;
+-
+-
++
++
+ case CirculateNotify:
+ case MapNotify:
+ case DestroyNotify:
+@@ -220,7 +228,7 @@
+ case UnmapNotify:
+ case MappingNotify:
+ case ClientMessage: break;
+-
++
+ default: /* ignore unexpected events */
+ break;
+ } /* end of switch */
+@@ -237,10 +245,10 @@
+
+
+ /***********************************/
+-static void FatalError (identifier)
+- char *identifier;
++static void FatalError(identifier)
++ const char *identifier;
+ {
+- fprintf(stderr, "%s: %s\n",cmd, identifier);
++ fprintf(stderr, "%s: %s\n", cmd, identifier);
+ exit(-1);
+ }
+
+@@ -262,24 +270,33 @@
+ XSizeHints hints;
+ int i,x,y;
+ unsigned int w,h;
+-
++
+ WIDE = HIGH = 256; /* default window size */
+-
++
+ x=y=w=h=1;
++ hints.flags = 0;
++
+ i=XParseGeometry(geom,&x,&y,&w,&h);
+- if (i&WidthValue) WIDE = (int) w;
+- if (i&HeightValue) HIGH = (int) h;
+-
+- if (i&XValue || i&YValue) hints.flags = USPosition;
+- else hints.flags = PPosition;
+-
+- hints.flags |= USSize;
+-
+- if (i&XValue && i&XNegative)
+- x = XDisplayWidth(theDisp,theScreen)-WIDE-abs(x);
+- if (i&YValue && i&YNegative)
+- y = XDisplayHeight(theDisp,theScreen)-HIGH-abs(y);
+-
++ if (i&WidthValue)
++ {
++ WIDE = (int) w;
++ hints.flags |= USSize;
++ }
++ if (i&HeightValue)
++ {
++ HIGH = (int) h;
++ hints.flags |= USSize;
++ }
++
++ if (i&XValue || i&YValue)
++ {
++ if (i&XNegative)
++ x = XDisplayWidth(theDisp,theScreen)-WIDE-abs(x);
++ if (i&YNegative)
++ y = XDisplayHeight(theDisp,theScreen)-HIGH-abs(y);
++ hints.flags |= USPosition;
++ }
++
+ hints.x=x; hints.y=y;
+ hints.width = WIDE; hints.height = HIGH;
+ hints.max_width = DisplayWidth(theDisp,theScreen);
+@@ -288,22 +305,22 @@
+ hints.min_height = 16;
+ hints.width_inc = hints.height_inc = 16;
+ hints.flags |= PMaxSize | PMinSize | PResizeInc;
+-
++
+ xswa.background_pixel = bcol;
+ xswa.border_pixel = fcol;
+ xswa.cursor = XCreateFontCursor (theDisp, XC_top_left_arrow);
+ xswamask = CWBackPixel | CWBorderPixel | CWCursor;
+-
++
+ mainW = XCreateWindow(theDisp,rootW,x,y,(unsigned int) WIDE,
+- (unsigned int) HIGH, 2, 0,
++ (unsigned int) HIGH, 2, 0,
+ (unsigned int) CopyFromParent,
+ CopyFromParent, xswamask, &xswa);
+-
++
+ XSetStandardProperties(theDisp,mainW,"xcmap","xcmap",None,
+ argv,argc,&hints);
+-
++
+ if (!mainW) FatalError("Can't open main window");
+-
++
+ }
+
+
+@@ -312,11 +329,11 @@
+ int x,y,w,h;
+ {
+ int i,j,x1,y1,x2,y2;
+-
++
+ x1 = x / cWIDE; y1 = y / cHIGH; /* (x1,y1) (x2,y2): bounding */
+ x2 = ((x+w) + cWIDE - 1) / cWIDE; /* rect in cell coords */
+ y2 = ((y+h) + cHIGH - 1) / cHIGH;
+-
++
+ for (i=y1; i<y2; i++) {
+ for (j=x1; j<x2; j++) {
+ XSetForeground(theDisp,theGC,(unsigned long) (i*nycells+j) );
+@@ -343,18 +360,18 @@
+ {
+ /* called when there's a button press in the window. draws the pixel
+ value, and loops until button is released */
+-
++
+ Window rootW,childW;
+ int rx,ry,x,y;
+ unsigned int mask;
+-
++
+ pvalup = 0;
+ DrawPixValue(mx,my);
+-
++
+ while (1) {
+ if (XQueryPointer(theDisp,mainW,&rootW,&childW,&rx,&ry,&x,&y,&mask)) {
+ if (!(mask & Button1Mask)) break; /* button released */
+-
++
+ DrawPixValue(x,y);
+ }
+ }
+@@ -367,10 +384,10 @@
+ {
+ static unsigned long pix, lastpix;
+ static int pvaly;
+-
++
+ if (x<0) x=0; if (x>=WIDE) x=WIDE-1;
+ if (y<0) y=0; if (y>=HIGH) y=HIGH-1;
+-
++
+ if (!pvalup) { /* it's not up. make it so */
+ if (y >= HIGH/2) pvaly = 0; else pvaly = HIGH - 12;
+ pvalup = 1;
+@@ -378,30 +395,30 @@
+ XClearArea(theDisp,mainW,0,pvaly,
+ (unsigned int) WIDE, (unsigned int) 13,True);
+ }
+-
++
+ x /= cWIDE; y /= cHIGH;
+-
++
+ pix = y * nxcells + x;
+-
++
+ if (pix != lastpix) {
+ XColor def;
+ char *sp;
+-
++
+ XSetForeground(theDisp,theGC,fcol);
+ lastpix = def.pixel = pix;
+ if (pix<dispcells) {
+ XQueryColor(theDisp, theCmap, &def);
+ sprintf(tmpstr, "Pix %3ld = ($%04x, $%04x, $%04x)",
+ pix, def.red, def.green, def.blue);
+-
+- /* make the hex uppercase */
+- for (sp=tmpstr+4; *sp; sp++)
++
++ /* make the hex uppercase */
++ for (sp=tmpstr+4; *sp; sp++)
+ if (islower(*sp)) *sp = toupper(*sp);
+ }
+ else {
+ sprintf(tmpstr, "Pix %3ld is out of legal range. ", pix);
+ }
+-
++
+ XDrawImageString(theDisp,mainW,theGC,5,pvaly+10,tmpstr,
+ (int) strlen(tmpstr));
+ }
+diff -ru xv-3.10a/xv.c xv-3.10a-enhancements/xv.c
+--- xv-3.10a/xv.c 1995-01-19 10:08:43.000000000 -0800
++++ xv-3.10a-enhancements/xv.c 2007-05-13 18:44:55.000000000 -0700
+@@ -33,9 +33,9 @@
+
+ /* a mono-spaced font needed for the 'pixel value tracking' feature */
+ #define MFONT1 "-misc-fixed-medium-r-normal-*-13-*"
+-#define MFONT2 "6x13"
++#define MFONT2 "6x13"
+ #define MFONT3 "-*-courier-medium-r-*-*-12-*"
+-#define MFONT4 "fixed"
++#define MFONT4 "fixed"
+
+
+ /* default positions for various windows */
+@@ -54,14 +54,35 @@
+ static int randomShow = 0; /* do a 'random' slideshow */
+ static int startIconic = 0; /* '-iconic' option */
+ static int defaultVis = 0; /* true if using DefaultVisual */
++#ifdef HAVE_G3
++static int fax = 0; /* temporary(?) kludge */
++int highresfax = 0;
++#endif
+ static double hexpand = 1.0; /* '-expand' argument */
+ static double vexpand = 1.0; /* '-expand' argument */
+-static char *maingeom = NULL;
+-static char *icongeom = NULL;
++static const char *maingeom = NULL;
++static const char *icongeom = NULL;
+ static Atom __SWM_VROOT = None;
+
+ static char basefname[128]; /* just the current fname, no path */
+
++#ifdef TV_L10N
++# ifndef TV_FONTSET
++# define TV_FONTSET "-*-fixed-medium-r-normal--%d-*"
++# endif
++# ifndef TV_FONTSIZE
++# define TV_FONTSIZE 14,16
++# endif
++static int mfontsize[] = { TV_FONTSIZE, 0 };
++static char mfontset[256];
++#endif
++
++#ifdef HAVE_JP2K
++static byte jp2k_magic[12] =
++ { 0, 0, 0, 0x0c, 'j', 'P', ' ', ' ', 0x0d, 0x0a, 0x87, 0x0a };
++#endif
++
++
+ /* things to do upon successfully loading an image */
+ static int autoraw = 0; /* force raw if using stdcmap */
+ static int autodither = 0; /* dither */
+@@ -78,6 +99,12 @@
+
+ static int force8 = 0; /* force 8-bit mode */
+ static int force24 = 0; /* force 24-bit mode */
++#ifdef HAVE_PCD
++static int PcdSize = -1; /* force dialog to ask */
++#endif
++
++static float waitsec_nonfinal = -1; /* "normal" waitsec value */
++static float waitsec_final = -1; /* final-image waitsec value */
+
+ /* used in DeleteCmd() and Quit() */
+ static char **mainargv;
+@@ -92,7 +119,7 @@
+ static void parseResources PARM((int, char **));
+ static void parseCmdLine PARM((int, char **));
+ static void verifyArgs PARM((void));
+-static void printoption PARM((char *));
++static void printoption PARM((const char *));
+ static void cmdSyntax PARM((void));
+ static void rmodeSyntax PARM((void));
+ static int openPic PARM((int));
+@@ -103,32 +130,34 @@
+ static void openNextLoop PARM((void));
+ static void openPrevPic PARM((void));
+ static void openNamedPic PARM((void));
+-static int findRandomPic PARM((void));
+ static void mainLoop PARM((void));
+-static void createMainWindow PARM((char *, char *));
+-static void setWinIconNames PARM((char *));
++static void createMainWindow PARM((const char *, const char *));
++static void setWinIconNames PARM((const char *));
+ static void makeDispNames PARM((void));
+ static void fixDispNames PARM((void));
+ static void deleteFromList PARM((int));
+-static int argcmp PARM((char *, char *, int, int, int *));
++static int argcmp PARM((const char *, const char *,
++ int, int, int *));
+ static void add_filelist_to_namelist PARM((char *, char **, int *, int));
+
+
+ /* formerly local vars in main, made local to this module when
+ parseResources() and parseCmdLine() were split out of main() */
+-
+-int imap, ctrlmap, gmap, browmap, cmtmap, clrroot, nopos, limit2x;
+-char *display, *whitestr, *blackstr, *histr, *lostr,
+- *infogeom, *fgstr, *bgstr, *ctrlgeom, *gamgeom, *browgeom, *tmpstr;
+-char *rootfgstr, *rootbgstr, *visualstr, *textgeom, *cmtgeom;
+-char *monofontname, *flistName;
+-int curstype, stdinflag, browseMode, savenorm, preview, pscomp, preset,
+- rmodeset, gamset, cgamset, perfect, owncmap, rwcolor, stdcmap;
+-int nodecor;
+-double gamval, rgamval, ggamval, bgamval;
+-
+-
+
++static int imap, ctrlmap, gmap, browmap, cmtmap, clrroot, nopos, limit2x;
++static const char *histr, *lostr, *fgstr, *bgstr, *tmpstr;
++static const char *infogeom, *ctrlgeom, *gamgeom, *browgeom, *textgeom, *cmtgeom;
++static char *display, *whitestr, *blackstr;
++static char *rootfgstr, *rootbgstr, *imagebgstr, *visualstr;
++static char *monofontname, *flistName;
++#ifdef TV_L10N
++static char **misscharset, *defstr;
++static int nmisscharset;
++#endif
++static int curstype, stdinflag, browseMode, savenorm, preview, pscomp, preset,
++ rmodeset, gamset, cgamset, perfect, owncmap, rwcolor, stdcmap;
++static int nodecor;
++static double gamval, rgamval, ggamval, bgamval;
+
+ /*******************************************/
+ int main(argc, argv)
+@@ -137,6 +166,9 @@
+ /*******************************************/
+ {
+ int i;
++#ifdef TV_L10N
++ int j;
++#endif
+ XColor ecdef;
+ Window rootReturn, parentReturn, *children;
+ unsigned int numChildren, rootDEEP;
+@@ -153,6 +185,13 @@
+ /*** variable Initialization ***/
+ /*****************************************************/
+
++#ifdef TV_L10N
++ /* setlocale(LC_ALL, localeList[LOCALE_EUCJ]); */
++ setlocale(LC_ALL, "");
++ xlocale = (int)XSupportsLocale(); /* assume that (Bool) is (int) */
++ /* if X doesn't support ja_JP.ujis text viewer l10n doesn't work. */
++#endif
++
+ xv_getwd(initdir, sizeof(initdir));
+ searchdir[0] = '\0';
+ fullfname[0] = '\0';
+@@ -162,7 +201,7 @@
+
+ /* init internal variables */
+ display = NULL;
+- fgstr = bgstr = rootfgstr = rootbgstr = NULL;
++ fgstr = bgstr = rootfgstr = rootbgstr = imagebgstr = NULL;
+ histr = lostr = whitestr = blackstr = NULL;
+ visualstr = monofontname = flistName = NULL;
+ winTitle = NULL;
+@@ -172,21 +211,26 @@
+
+ picComments = (char *) NULL;
+
++ if (picExifInfo) free(picExifInfo);
++ picExifInfo = (byte *) NULL;
++ picExifInfoSize = 0;
++
+ numPages = 1; curPage = 0;
+ pageBaseName[0] = '\0';
+
+ LocalCmap = browCmap = 0;
+ stdinflag = 0;
+- autoclose = autoDelete = 0;
++ autoclose = autoDelete = 0;
+ cmapInGam = 0;
+ grabDelay = 0;
++ startGrab = 0;
+ showzoomcursor = 0;
+ perfect = owncmap = stdcmap = rwcolor = 0;
+
+ ignoreConfigs = 0;
+- browPerfect = 1;
++ browPerfect = 1;
+ gamval = rgamval = ggamval = bgamval = 1.0;
+-
++
+ picType = -1; /* gets set once file is loaded */
+ colorMapMode = CM_NORMAL;
+ haveStdCmap = STD_NONE;
+@@ -221,24 +265,27 @@
+ cmd = (char *) rindex(argv[0],'/');
+ if (!cmd) cmd = argv[0]; else cmd++;
+
+- tmpstr = (char *) getenv("TMPDIR");
+- if (!tmpstr) tmpdir = "/tmp";
+- else {
+- tmpdir = (char *) malloc(strlen(tmpstr) + 1);
+- if (!tmpdir) FatalError("can't malloc 'tmpdir'\n");
+- strcpy(tmpdir, tmpstr);
+- }
++ tmpstr = (const char *) getenv("TMPDIR");
++ if (!tmpstr) tmpstr = "/tmp";
++ tmpdir = (char *) malloc(strlen(tmpstr) + 1);
++ if (!tmpdir) FatalError("can't malloc 'tmpdir'\n");
++ strcpy(tmpdir, tmpstr);
++
++#ifdef AUTO_EXPAND
++ Vdinit();
++ vd_handler_setup();
++#endif
+
+ /* init command-line options flags */
+- infogeom = DEFINFOGEOM; ctrlgeom = DEFCTRLGEOM;
++ infogeom = DEFINFOGEOM; ctrlgeom = DEFCTRLGEOM;
+ gamgeom = DEFGAMGEOM; browgeom = DEFBROWGEOM;
+ textgeom = DEFTEXTGEOM; cmtgeom = DEFCMTGEOM;
+
+- ncols = -1; mono = 0;
++ ncols = -1; mono = 0;
+ ninstall = 0; fixedaspect = 0; noFreeCols = nodecor = 0;
+ DEBUG = 0; bwidth = 2;
+ nolimits = useroot = clrroot = noqcheck = 0;
+- waitsec = -1; waitloop = 0; automax = 0;
++ waitsec = waitsec_final = -1.0; waitloop = 0; automax = 0;
+ rootMode = 0; hsvmode = 0;
+ rmodeset = gamset = cgamset = 0;
+ nopos = limit2x = 0;
+@@ -251,6 +298,10 @@
+ preset = 0;
+ viewonly = 0;
+
++#ifdef ENABLE_FIXPIX_SMOOTH
++ do_fixpix_smooth = 0;
++#endif
++
+ /* init 'xormasks' array */
+ xorMasks[0] = 0x01010101;
+ xorMasks[1] = 0x02020203;
+@@ -268,15 +319,38 @@
+ defaspect = normaspect = 1.0;
+ mainW = dirW = infoW = ctrlW = gamW = psW = (Window) NULL;
+ anyBrowUp = 0;
++ incrementalSearchTimeout = 30;
+
+ #ifdef HAVE_JPEG
+ jpegW = (Window) NULL; jpegUp = 0;
+ #endif
+
++#ifdef HAVE_JP2K
++ jp2kW = (Window) NULL; jp2kUp = 0;
++#endif
++
+ #ifdef HAVE_TIFF
+ tiffW = (Window) NULL; tiffUp = 0;
+ #endif
+
++#ifdef HAVE_PNG
++ pngW = (Window) NULL; pngUp = 0;
++#endif
++
++ pcdW = (Window) NULL; pcdUp = 0;
++
++#ifdef HAVE_PIC2
++ pic2W = (Window) NULL; pic2Up = 0;
++#endif
++
++#ifdef HAVE_PCD
++ pcdW = (Window) NULL; pcdUp = 0;
++#endif
++
++#ifdef HAVE_MGCSFX
++ mgcsfxW = (Window) NULL; mgcsfxUp = 0;
++#endif
++
+ imap = ctrlmap = gmap = browmap = cmtmap = 0;
+
+ ch_offx = ch_offy = p_offx = p_offy = 0;
+@@ -303,13 +377,35 @@
+ verifyArgs();
+
+
++#if 0
++#ifdef XVEXECPATH
++ /* set up path to search for external executables */
++ {
++ char *systempath = getenv("PATH");
++ char *xvexecpath = getenv("XVPATH");
++ if (xvexecpath == NULL) xvexecpath = XVEXECPATH;
++ /* FIXME: can systempath == NULL? */
++ strcat(systempath, ":"); /* FIXME: writing to mem we don't own */
++ strcat(systempath, xvexecpath); /* FIXME: writing to mem we don't own */
++ /* FIXME: was there supposed to be a setenv() call in here? */
++ if (DEBUG)
++ fprintf(stderr, "DEBUG: executable search path: %s\n", systempath);
++ }
++#endif
++#endif
++
++
+ /*****************************************************/
+ /*** X Setup ***/
+ /*****************************************************/
+-
++
+ theScreen = DefaultScreen(theDisp);
+ theCmap = DefaultColormap(theDisp, theScreen);
+- rootW = RootWindow(theDisp,theScreen);
++ if (spec_window) {
++ rootW = spec_window;
++ } else {
++ rootW = RootWindow(theDisp,theScreen);
++ }
+ theGC = DefaultGC(theDisp,theScreen);
+ theVisual = DefaultVisual(theDisp,theScreen);
+ ncells = DisplayCells(theDisp, theScreen);
+@@ -320,53 +416,67 @@
+
+ rootDEEP = dispDEEP;
+
+- /* things dependant on theVisual:
+- * dispDEEP, theScreen, rootW, ncells, theCmap, theGC,
++ /* things dependent on theVisual:
++ * dispDEEP, theScreen, rootW, ncells, theCmap, theGC,
+ * vrWIDE, dispWIDE, vrHIGH, dispHIGH, maxWIDE, maxHIGH
+ */
+
+
+-
+ /* if we *haven't* had a non-default visual specified,
+- see if we have a TrueColor or DirectColor visual of 24 or 32 bits,
++ see if we have a TrueColor or DirectColor visual of 24 or 32 bits,
+ and if so, use that as the default visual (prefer TrueColor) */
+
+ if (!visualstr && !useroot) {
++ VisualID defvid;
+ XVisualInfo *vinfo, rvinfo;
+ int best, numvis;
+ long flags;
+
+- best = -1;
++ best = -1;
+ rvinfo.class = TrueColor;
+ rvinfo.screen = theScreen;
+- flags = VisualClassMask | VisualScreenMask;
+-
++ flags = VisualClassMask | VisualScreenMask;
++ defvid = XVisualIDFromVisual(DefaultVisual(theDisp,
++ DefaultScreen(theDisp)));
++
+ vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
+- if (vinfo) { /* look for a TrueColor, 24-bit or more (pref 24) */
+- for (i=0, best = -1; i<numvis; i++) {
++ if (vinfo) {
++ /* Check list, use 'default', first 24-bit, or first >24-bit */
++ for (i=0; i<numvis && best==-1; i++) { /* default? */
++ if ((vinfo[i].visualid == defvid) && (vinfo[i].depth >= 24)) best=i;
++ }
++ for (i=0; i<numvis && best==-1; i++) { /* 24-bit ? */
+ if (vinfo[i].depth == 24) best = i;
+- else if (vinfo[i].depth>24 && best<0) best = i;
++ }
++ for (i=0; i<numvis && best==-1; i++) { /* >24-bit ? */
++ if (vinfo[i].depth >= 24) best = i;
+ }
+ }
+
+ if (best == -1) { /* look for a DirectColor, 24-bit or more (pref 24) */
+ rvinfo.class = DirectColor;
+ if (vinfo) XFree((char *) vinfo);
++
+ vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
+ if (vinfo) {
+- for (i=0, best = -1; i<numvis; i++) {
++ for (i=0; i<numvis && best==-1; i++) { /* default? */
++ if ((vinfo[i].visualid == defvid) && (vinfo[i].depth >= 24)) best=i;
++ }
++ for (i=0; i<numvis && best==-1; i++) { /* 24-bit ? */
+ if (vinfo[i].depth == 24) best = i;
+- else if (vinfo[i].depth>24 && best<0) best = i;
++ }
++ for (i=0; i<numvis && best==-1; i++) { /* >24-bit ? */
++ if (vinfo[i].depth >= 24) best = i;
+ }
+ }
+ }
+-
++
+ if (best>=0 && best<numvis) useOtherVisual(vinfo, best);
+ if (vinfo) XFree((char *) vinfo);
+ }
+
+
+-
++
+ if (visualstr && useroot) {
+ fprintf(stderr, "%s: %sUsing default visual.\n",
+ cmd, "Warning: Can't use specified visual on root. ");
+@@ -401,11 +511,11 @@
+ long vinfomask;
+ int numvis, best;
+
+- if (vclass >= 0) {
++ if (vclass >= 0) {
+ rvinfo.class = vclass; vinfomask = VisualClassMask;
+ }
+ else { rvinfo.visualid = vid; vinfomask = VisualIDMask; }
+-
++
+ rvinfo.screen = theScreen;
+ vinfomask |= VisualScreenMask;
+
+@@ -429,9 +539,9 @@
+ /* make linear colormap for DirectColor visual */
+ if (theVisual->class == DirectColor) makeDirectCmap();
+
+- defaultVis = (XVisualIDFromVisual(theVisual) ==
++ defaultVis = (XVisualIDFromVisual(theVisual) ==
+ XVisualIDFromVisual(DefaultVisual(theDisp, DefaultScreen(theDisp))));
+-
++
+
+ /* turn GraphicsExposures OFF in the default GC */
+ {
+@@ -441,9 +551,6 @@
+ }
+
+
+- if (!useroot && limit2x) { maxWIDE *= 2; maxHIGH *= 2; }
+- if (nolimits) { maxWIDE = 65000; maxHIGH = 65000; }
+-
+ XSetErrorHandler(xvErrorHandler);
+
+ /* always search for virtual root window */
+@@ -456,14 +563,14 @@
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems, bytesafter;
+- Window *newRoot = NULL;
++ byte *newRoot = NULL; /* byte instead of Window avoids type-pun warning */
+ XWindowAttributes xwa;
+ if (XGetWindowProperty (theDisp, children[i], __SWM_VROOT, 0L, 1L,
+ False, XA_WINDOW, &actual_type, &actual_format, &nitems,
+ &bytesafter, (unsigned char **) &newRoot) == Success && newRoot) {
+- vrootW = *newRoot;
++ vrootW = *(Window *)newRoot;
+ XGetWindowAttributes(theDisp, vrootW, &xwa);
+- vrWIDE = xwa.width; vrHIGH = xwa.height;
++ maxWIDE = vrWIDE = xwa.width; maxHIGH = vrHIGH = xwa.height;
+ dispDEEP = xwa.depth;
+ break;
+ }
+@@ -472,7 +579,8 @@
+ vrootW = pseudo_root(theDisp, theScreen);
+ #endif
+
+-
++ if (!useroot && limit2x) { maxWIDE *= 2; maxHIGH *= 2; }
++ if (nolimits) { maxWIDE = 65000; maxHIGH = 65000; }
+
+
+ if (clrroot || useroot) {
+@@ -486,13 +594,14 @@
+ arrow = XCreateFontCursor(theDisp,(u_int) curstype);
+ cross = XCreateFontCursor(theDisp,XC_crosshair);
+ tcross = XCreateFontCursor(theDisp,XC_tcross);
++ tlcorner = XCreateFontCursor(theDisp,XC_top_left_corner);
+ zoom = XCreateFontCursor(theDisp,XC_sizing);
+
+ {
+ XColor fc, bc;
+ fc.red = fc.green = fc.blue = 0xffff;
+ bc.red = bc.green = bc.blue = 0x0000;
+-
++
+ XRecolorCursor(theDisp, zoom, &fc, &bc);
+ }
+
+@@ -541,7 +650,7 @@
+
+
+ /* set up fg,bg colors */
+- fg = black; bg = white;
++ fg = black; bg = white;
+ if (fgstr && XParseColor(theDisp, theCmap, fgstr, &ecdef) &&
+ xvAllocColor(theDisp, theCmap, &ecdef)) {
+ fg = ecdef.pixel;
+@@ -561,6 +670,18 @@
+ xvAllocColor(theDisp, theCmap, &ecdef)) rootbg = ecdef.pixel;
+
+
++ /* GRR 19980308: set up image bg color (for transparent images) */
++ have_imagebg = 0;
++ if (imagebgstr && XParseColor(theDisp, theCmap, imagebgstr, &ecdef) &&
++ xvAllocColor(theDisp, theCmap, &ecdef)) {
++ /* imagebg = ecdef.pixel; */
++ have_imagebg = 1;
++ imagebgR = ecdef.red;
++ imagebgG = ecdef.green;
++ imagebgB = ecdef.blue;
++ }
++
++
+ /* set up hi/lo colors */
+ i=0;
+ if (dispDEEP > 1) { /* only if we're on a reasonable display */
+@@ -590,7 +711,7 @@
+ if (theVisual->class == StaticGray || theVisual->class == GrayScale)
+ mono = 1;
+ }
+-
++
+
+
+ iconPix = MakePix1(rootW, icon_bits, icon_width, icon_height);
+@@ -598,32 +719,32 @@
+ riconPix = MakePix1(rootW, runicon_bits, runicon_width, runicon_height);
+ riconmask= MakePix1(rootW, runiconm_bits, runiconm_width,runiconm_height);
+
+- if (!iconPix || !iconmask || !riconPix || !riconmask)
++ if (!iconPix || !iconmask || !riconPix || !riconmask)
+ FatalError("Unable to create icon pixmaps\n");
+
+- gray50Tile = XCreatePixmapFromBitmapData(theDisp, rootW,
++ gray50Tile = XCreatePixmapFromBitmapData(theDisp, rootW,
+ (char *) cboard50_bits,
+- cboard50_width, cboard50_height,
++ cboard50_width, cboard50_height,
+ infofg, infobg, dispDEEP);
+ if (!gray50Tile) FatalError("Unable to create gray50Tile bitmap\n");
+
+- gray25Tile = XCreatePixmapFromBitmapData(theDisp, rootW,
++ gray25Tile = XCreatePixmapFromBitmapData(theDisp, rootW,
+ (char *) gray25_bits,
+- gray25_width, gray25_height,
++ gray25_width, gray25_height,
+ infofg, infobg, dispDEEP);
+ if (!gray25Tile) FatalError("Unable to create gray25Tile bitmap\n");
+
+
+ /* try to load fonts */
+- if ( (mfinfo = XLoadQueryFont(theDisp,FONT1))==NULL &&
+- (mfinfo = XLoadQueryFont(theDisp,FONT2))==NULL &&
+- (mfinfo = XLoadQueryFont(theDisp,FONT3))==NULL &&
+- (mfinfo = XLoadQueryFont(theDisp,FONT4))==NULL &&
++ if ( (mfinfo = XLoadQueryFont(theDisp,FONT1))==NULL &&
++ (mfinfo = XLoadQueryFont(theDisp,FONT2))==NULL &&
++ (mfinfo = XLoadQueryFont(theDisp,FONT3))==NULL &&
++ (mfinfo = XLoadQueryFont(theDisp,FONT4))==NULL &&
+ (mfinfo = XLoadQueryFont(theDisp,FONT5))==NULL) {
+- sprintf(str,
++ sprintf(dummystr,
+ "couldn't open the following fonts:\n\t%s\n\t%s\n\t%s\n\t%s\n\t%s",
+ FONT1, FONT2, FONT3, FONT4, FONT5);
+- FatalError(str);
++ FatalError(dummystr);
+ }
+ mfont=mfinfo->fid;
+ XSetFont(theDisp,theGC,mfont);
+@@ -632,45 +753,100 @@
+
+ if (monofontname) {
+ monofinfo = XLoadQueryFont(theDisp, monofontname);
+- if (!monofinfo) fprintf(stderr,"xv: unable to load font '%s'\n",
++ if (!monofinfo) fprintf(stderr,"xv: unable to load font '%s'\n",
+ monofontname);
+- }
++ }
+
+ if (!monofinfo) {
+- if ((monofinfo = XLoadQueryFont(theDisp,MFONT1))==NULL &&
+- (monofinfo = XLoadQueryFont(theDisp,MFONT2))==NULL &&
+- (monofinfo = XLoadQueryFont(theDisp,MFONT3))==NULL &&
++ if ((monofinfo = XLoadQueryFont(theDisp,MFONT1))==NULL &&
++ (monofinfo = XLoadQueryFont(theDisp,MFONT2))==NULL &&
++ (monofinfo = XLoadQueryFont(theDisp,MFONT3))==NULL &&
+ (monofinfo = XLoadQueryFont(theDisp,MFONT4))==NULL) {
+- sprintf(str,"couldn't open %s fonts:\n\t%s\n\t%s\n\t%s\n\t%s",
++ sprintf(dummystr,"couldn't open %s fonts:\n\t%s\n\t%s\n\t%s\n\t%s",
+ "any of the following",
+ MFONT1, MFONT2, MFONT3, MFONT4);
+- FatalError(str);
++ FatalError(dummystr);
+ }
+ }
+
+ monofont=monofinfo->fid;
+-
+
+-
+-
++#ifdef TV_L10N
++ if (xlocale) {
++ i = 0;
++ while (mfontsize[i]) {
++ xlocale = 1; /* True */
++
++ sprintf(mfontset, TV_FONTSET, mfontsize[i]);
++/*fprintf(stderr, "FontSet: %s\n", mfontset);*/
++
++ monofset = XCreateFontSet(theDisp, mfontset,
++ &misscharset, &nmisscharset, &defstr);
++# if 0 /* not useful */
++ if (!monofset) {
++ /* the current locale is not supported */
++/*fprintf(stderr, "Current locale `%s' is not supported.\n", localeList[i]);*/
++ xlocale = 0;
++ break;
++ }
++# endif
++/*fprintf(stderr, "# of misscharset in mfontsize[%d]: %d\n", i,nmisscharset);*/
++
++ for (j = 0; j < nmisscharset; j++) {
++ if (!strncmp(misscharset[j], "jisx0208", 8)) {
++ /* font for JIS X 0208 is not found */
++ xlocale = 0;
++ break;
++ }
++ }
++
++ if (xlocale) {
++ monofsetinfo = XExtentsOfFontSet(monofset);
++ monofsetinfo->max_logical_extent.width = mfontsize[i];
++ /* correct size of TextViewer
++ in case that JIS X 0208 is not found */
++ break;
++ }
++
++ i++;
++ } /* while (mfontsize[i]) */
++
++# if 0
++ if (nmisscharset > 0) {
++ sprintf(dummystr,"missing %d charset:\n", nmisscharset);
++ for (i = 0; i < nmisscharset; i++) {
++ sprintf(dummystr, "%s\t%s\n", dummystr, misscharset[i]);
++ }
++# if 0
++ FatalError(dummystr);
++# else
++ fprintf(stderr, "%s", dummystr);
++# endif
++ }
++# endif
++ }
++#endif /* TV_L10N */
++
++
++
+ /* if ncols wasn't set, set it to 2^dispDEEP, unless dispDEEP=1, in which
+ case ncols = 0; (ncols = max number of colors allocated. on 1-bit
+ displays, no colors are allocated */
+-
++
+ if (ncols == -1) {
+ if (dispDEEP>1) ncols = 1 << ((dispDEEP>8) ? 8 : dispDEEP);
+ else ncols = 0;
+ }
+ else if (ncols>256) ncols = 256; /* so program doesn't blow up */
+-
+-
++
++
+ GenerateFSGamma(); /* has to be done before 'OpenBrowse()' is called */
+-
+-
+-
++
++
++
+ /* no filenames. build one-name (stdio) list (if stdinflag) */
+ if (numnames==0) {
+- if (stdinflag) {
++ if (stdinflag) {
+ /* have to malloc namelist[0] so we can free it in deleteFromList() */
+ namelist[0] = (char *) malloc(strlen(STDINSTR) + 1);
+ if (!namelist[0]) FatalError("unable to to build namelist[0]");
+@@ -679,16 +855,28 @@
+ }
+ else namelist[0] = NULL;
+ }
+-
++ else if (randomShow) {
++ int i, j;
++ char *tmp;
++
++ srandom((int)time((time_t *)0));
++ for (i = numnames; i > 1; i--) {
++ j = random() % i;
++ tmp = namelist[i-1];
++ namelist[i-1] = namelist[j];
++ namelist[j] = tmp;
++ }
++ }
++
+ if (numnames) makeDispNames();
+-
+-
+- if (viewonly || autoquit) {
+- imap = ctrlmap = gmap = browmap = cmtmap = 0;
++
++
++ if (viewonly || autoquit) {
++ imap = ctrlmap = gmap = browmap = cmtmap = 0;
+ novbrowse = 1;
+ }
+-
+-
++
++
+ /* create the info box window */
+ CreateInfo(infogeom);
+ XSelectInput(theDisp, infoW, ExposureMask | ButtonPressMask | KeyPressMask
+@@ -698,12 +886,12 @@
+ RedrawInfo(0,0,1000,1000); /* explicit draw if mapped */
+ XFlush(theDisp);
+ }
+-
+-
++
++
+ /* create the control box window */
+ CreateCtrl(ctrlgeom);
+ epicMode = EM_RAW; SetEpicMode();
+-
++
+ XSelectInput(theDisp, ctrlW, ExposureMask | ButtonPressMask | KeyPressMask
+ | StructureNotifyMask);
+ if (ctrlmap < 0) { /* map iconified */
+@@ -719,22 +907,22 @@
+ RedrawCtrl(0,0,1000,1000); /* explicit draw if mapped */
+ XFlush(theDisp);
+ }
+-
++
+ fixDispNames();
+ ChangedCtrlList();
+-
++
+ /* disable root modes if using non-default visual */
+ if (!defaultVis) {
+ for (i=RMB_ROOT; i<RMB_MAX; i++) rootMB.dim[i] = 1;
+ }
+-
+-
++
++
+ /* create the directory window */
+ CreateDirW(NULL);
+ XSelectInput(theDisp, dirW, ExposureMask | ButtonPressMask | KeyPressMask);
+ browseCB.val = browseMode;
+ savenormCB.val = savenorm;
+-
++
+ /* create the gamma window */
+ CreateGam(gamgeom, (gamset) ? gamval : -1.0,
+ (cgamset) ? rgamval : -1.0,
+@@ -744,60 +932,84 @@
+ XSelectInput(theDisp, gamW, ExposureMask | ButtonPressMask | KeyPressMask
+ | StructureNotifyMask
+ | (cmapInGam ? ColormapChangeMask : 0));
+-
++
+ GamBox(gmap); /* map it (or not) */
+-
+-
+-
++
++
++
+ stdnfcols = 0; /* so we don't try to free any if we don't create any */
+-
++
+ if (!novbrowse) {
+ MakeBrowCmap();
+ /* create the visual browser window */
+ CreateBrowse(browgeom, fgstr, bgstr, histr, lostr);
+-
++
+ if (browmap) OpenBrowse();
+ }
+ else windowMB.dim[WMB_BROWSE] = 1; /* disable visual schnauzer */
+-
+-
++
++
+ CreateTextWins(textgeom, cmtgeom);
+ if (cmtmap) OpenCommentText();
+-
+-
++
++
+ /* create the ps window */
+ CreatePSD(NULL);
+ XSetTransientForHint(theDisp, psW, dirW);
+ encapsCB.val = preview;
+ pscompCB.val = pscomp;
+-
+-
++
++
+ #ifdef HAVE_JPEG
+ CreateJPEGW();
+ XSetTransientForHint(theDisp, jpegW, dirW);
+ #endif
+-
++
++#ifdef HAVE_JP2K
++ CreateJP2KW();
++ XSetTransientForHint(theDisp, jp2kW, dirW);
++#endif
++
+ #ifdef HAVE_TIFF
+ CreateTIFFW();
+ XSetTransientForHint(theDisp, tiffW, dirW);
+ #endif
+-
+-
++
++#ifdef HAVE_PNG
++ CreatePNGW();
++ XSetTransientForHint(theDisp, pngW, dirW);
++#endif
++
++#ifdef HAVE_PCD
++ CreatePCDW();
++ XSetTransientForHint(theDisp, pcdW, dirW);
++#endif
++
++#ifdef HAVE_PIC2
++ CreatePIC2W();
++ XSetTransientForHint(theDisp, pic2W, dirW);
++#endif
++
++#ifdef HAVE_MGCSFX
++ CreateMGCSFXW();
++ XSetTransientForHint(theDisp, mgcsfxW, dirW);
++#endif
++
+ LoadFishCursors();
+ SetCursors(-1);
+-
+-
++
++
+ /* if we're not on a colormapped display, turn off rwcolor */
+ if (!CMAPVIS(theVisual)) {
+ if (rwcolor) fprintf(stderr, "xv: not a colormapped display. %s\n",
+ "'rwcolor' turned off.");
+-
++
+ allocMode = AM_READONLY;
+ dispMB.flags[DMB_COLRW] = 0; /* de-'check' */
+ dispMB.dim[DMB_COLRW] = 1; /* and dim it */
+ }
+-
+-
++
++
+ if (force24) {
+ Set824Menus(PIC24);
+ conv24MB.flags[CONV24_LOCK] = 1;
+@@ -812,15 +1024,15 @@
+ Set824Menus(PIC8); /* default mode */
+ picType = PIC8;
+ }
+-
+-
+-
++
++
++
+ /* make std colormap, maybe */
+ ChangeCmapMode(colorMapMode, 0, 0);
+
+
+-
+-
++
++
+ /* Do The Thing... */
+ mainLoop();
+ Quit(0);
+@@ -832,12 +1044,12 @@
+ /*****************************************************/
+ static void makeDirectCmap()
+ {
+- int i, j, cmaplen, numgot;
++ int i, cmaplen, numgot;
+ byte origgot[256];
+ XColor c;
+ u_long rmask, gmask, bmask;
+ int rshift, gshift, bshift;
+-
++
+
+ rmask = theVisual->red_mask;
+ gmask = theVisual->green_mask;
+@@ -849,22 +1061,22 @@
+
+ if (rshift<0) rmask = rmask << (-rshift);
+ else rmask = rmask >> rshift;
+-
++
+ if (gshift<0) gmask = gmask << (-gshift);
+ else gmask = gmask >> gshift;
+-
++
+ if (bshift<0) bmask = bmask << (-bshift);
+ else bmask = bmask >> bshift;
+
+
+ cmaplen = theVisual->map_entries;
+ if (cmaplen>256) cmaplen=256;
+-
++
+
+ /* try to alloc a 'cmaplen' long grayscale colormap. May not get all
+ entries for whatever reason. Build table 'directConv[]' that
+ maps range [0..(cmaplen-1)] into set of colors we did get */
+-
++
+ for (i=0; i<256; i++) { origgot[i] = 0; directConv[i] = 0; }
+
+ for (i=numgot=0; i<cmaplen; i++) {
+@@ -882,9 +1094,9 @@
+ }
+ }
+
+-
++
+ if (numgot == 0) FatalError("Got no entries in DirectColor cmap!\n");
+-
++
+ /* directConv may or may not have holes in it. */
+ for (i=0; i<cmaplen; i++) {
+ if (!origgot[i]) {
+@@ -892,10 +1104,10 @@
+ numbak = numfwd = 0;
+ while ((i - numbak) >= 0 && !origgot[i-numbak]) numbak++;
+ while ((i + numfwd) < cmaplen && !origgot[i+numfwd]) numfwd++;
+-
++
+ if (i-numbak<0 || !origgot[i-numbak]) numbak = 999;
+ if (i+numfwd>=cmaplen || !origgot[i+numfwd]) numfwd = 999;
+-
++
+ if (numbak<numfwd) directConv[i] = directConv[i-numbak];
+ else if (numfwd<999) directConv[i] = directConv[i+numfwd];
+ else FatalError("DirectColor cmap: can't happen!");
+@@ -926,14 +1138,14 @@
+ {
+ if (!vinfo || best<0) return;
+
+- if (vinfo[best].visualid ==
++ if (vinfo[best].visualid ==
+ XVisualIDFromVisual(DefaultVisual(theDisp, theScreen))) return;
+
+ theVisual = vinfo[best].visual;
+
+ if (DEBUG) {
+ fprintf(stderr,"%s: using %s visual (0x%0x), depth = %d, screen = %d\n",
+- cmd,
++ cmd,
+ (vinfo[best].class==StaticGray) ? "StaticGray" :
+ (vinfo[best].class==StaticColor) ? "StaticColor" :
+ (vinfo[best].class==TrueColor) ? "TrueColor" :
+@@ -947,41 +1159,45 @@
+ (int) vinfo[best].red_mask, (int) vinfo[best].green_mask,
+ (int) vinfo[best].blue_mask, vinfo[best].bits_per_rgb);
+ }
+-
++
+ dispDEEP = vinfo[best].depth;
+ theScreen = vinfo[best].screen;
+- rootW = RootWindow(theDisp, theScreen);
++ if (spec_window) {
++ rootW = spec_window;
++ } else {
++ rootW = RootWindow(theDisp,theScreen);
++ }
+ ncells = vinfo[best].colormap_size;
+ theCmap = XCreateColormap(theDisp, rootW, theVisual, AllocNone);
+-
++
+ {
+ /* create a temporary window using this visual so we can
+ create a GC for this visual */
+-
+- Window win;
++
++ Window win;
+ XSetWindowAttributes xswa;
+ XGCValues xgcv;
+ unsigned long xswamask;
+-
++
+ XFlush(theDisp);
+ XSync(theDisp, False);
+-
++
+ xswa.background_pixel = 0;
+ xswa.border_pixel = 1;
+ xswa.colormap = theCmap;
+ xswamask = CWBackPixel | CWBorderPixel | CWColormap;
+-
++
+ win = XCreateWindow(theDisp, rootW, 0, 0, 100, 100, 2, (int) dispDEEP,
+ InputOutput, theVisual, xswamask, &xswa);
+-
++
+ XFlush(theDisp);
+ XSync(theDisp, False);
+-
++
+ theGC = XCreateGC(theDisp, win, 0L, &xgcv);
+-
++
+ XDestroyWindow(theDisp, win);
+ }
+-
++
+ vrWIDE = dispWIDE = DisplayWidth(theDisp,theScreen);
+ vrHIGH = dispHIGH = DisplayHeight(theDisp,theScreen);
+ maxWIDE = dispWIDE; maxHIGH = dispHIGH;
+@@ -1000,25 +1216,25 @@
+ /* once through the argument list to find the display name
+ and DEBUG level, if any */
+
+- for (i=1; i<argc; i++) {
++ for (i=1; i<argc; ++i) {
+ if (!strncmp(argv[i],"-help", (size_t) 5)) { /* help */
+ cmdSyntax();
+ exit(0);
+ }
+
+ else if (!argcmp(argv[i],"-display",4,0,&pm)) {
+- i++;
++ ++i;
+ if (i<argc) display = argv[i];
+ break;
+ }
+
+-#ifdef VMS /* in VMS, cmd-line-opts are in lower case */
++#ifdef VMS /* in VMS, cmd-line opts are in lower case */
+ else if (!argcmp(argv[i],"-debug",3,0,&pm)) {
+- { if (++i<argc) DEBUG = atoi(argv[i]); }
++ if (++i<argc) DEBUG = atoi(argv[i]);
+ }
+ #else
+ else if (!argcmp(argv[i],"-DEBUG",2,0,&pm)) {
+- { if (++i<argc) DEBUG = atoi(argv[i]); }
++ if (++i<argc) DEBUG = atoi(argv[i]);
+ }
+ #endif
+ }
+@@ -1037,8 +1253,8 @@
+ fprintf(stderr,"%s: unable to parse 'aspect' resource\n",cmd);
+ else defaspect = (float) n / (float) d;
+ }
+-
+- if (rd_flag("2xlimit")) limit2x = def_int;
++
++ if (rd_flag("2xlimit")) limit2x = def_int;
+ if (rd_flag("auto4x3")) auto4x3 = def_int;
+ if (rd_flag("autoClose")) autoclose = def_int;
+ if (rd_flag("autoCrop")) autocrop = def_int;
+@@ -1064,6 +1280,7 @@
+ if (rd_flag("ctrlMap")) ctrlmap = def_int;
+ if (rd_int ("cursor")) curstype = def_int;
+ if (rd_int ("defaultPreset")) preset = def_int;
++ if (rd_int ("incrementalSearchTimeout")) incrementalSearchTimeout = def_int;
+
+ if (rd_str ("driftKludge")) {
+ if (sscanf(def_str,"%d %d", &kludge_offx, &kludge_offy) != 2) {
+@@ -1073,7 +1290,7 @@
+
+ if (rd_str ("expand")) {
+ if (index(def_str, ':')) {
+- if (sscanf(def_str, "%lf:%lf", &hexpand, &vexpand)!=2)
++ if (sscanf(def_str, "%lf:%lf", &hexpand, &vexpand)!=2)
+ { hexpand = vexpand = 1.0; }
+ }
+ else hexpand = vexpand = atof(def_str);
+@@ -1081,6 +1298,9 @@
+
+ if (rd_str ("fileList")) flistName = def_str;
+ if (rd_flag("fixed")) fixedaspect = def_int;
++#ifdef ENABLE_FIXPIX_SMOOTH
++ if (rd_flag("fixpix")) do_fixpix_smooth = def_int;
++#endif
+ if (rd_flag("force8")) force8 = def_int;
+ if (rd_flag("force24")) force24 = def_int;
+ if (rd_str ("foreground")) fgstr = def_str;
+@@ -1092,23 +1312,39 @@
+ if (rd_str ("highlight")) histr = def_str;
+ if (rd_str ("iconGeometry")) icongeom = def_str;
+ if (rd_flag("iconic")) startIconic = def_int;
++ if (rd_str ("imageBackground")) imagebgstr = def_str;
+ if (rd_str ("infoGeometry")) infogeom = def_str;
+ if (rd_flag("infoMap")) imap = def_int;
+ if (rd_flag("loadBrowse")) browseMode = def_int;
+ if (rd_str ("lowlight")) lostr = def_str;
++#ifdef MACBINARY
++ if (rd_flag("macbinary")) handlemacb = def_int;
++#endif
++#ifdef HAVE_MGCSFX
++ if (rd_flag("mgcsfx")) mgcsfx = def_int;
++#endif
+ if (rd_flag("mono")) mono = def_int;
+ if (rd_str ("monofont")) monofontname = def_str;
+ if (rd_int ("ncols")) ncols = def_int;
+ if (rd_flag("ninstall")) ninstall = def_int;
+ if (rd_flag("nodecor")) nodecor = def_int;
+ if (rd_flag("nolimits")) nolimits = def_int;
++#ifdef HAVE_MGCSFX
++ if (rd_flag("nomgcsfx")) nomgcsfx = def_int;
++#endif
++#if defined(HAVE_PIC) || defined(HAVE_PIC2)
++ if (rd_flag("nopicadjust")) nopicadjust = def_int;
++#endif
+ if (rd_flag("nopos")) nopos = def_int;
+ if (rd_flag("noqcheck")) noqcheck = def_int;
+ if (rd_flag("nostat")) nostat = def_int;
+ if (rd_flag("ownCmap")) owncmap = def_int;
+ if (rd_flag("perfect")) perfect = def_int;
++#ifdef HAVE_PIC2
++ if (rd_flag("pic2split")) pic2split = def_int;
++#endif
+ if (rd_flag("popupKludge")) winCtrPosKludge = def_int;
+- if (rd_str ("print")) strncpy(printCmd, def_str,
++ if (rd_str ("print")) strncpy(printCmd, def_str,
+ (size_t) PRINTCMDLEN);
+ if (rd_flag("pscompress")) pscomp = def_int;
+ if (rd_flag("pspreview")) preview = def_int;
+@@ -1117,18 +1353,34 @@
+ if (rd_flag("reverse")) revvideo = def_int;
+ if (rd_str ("rootBackground")) rootbgstr = def_str;
+ if (rd_str ("rootForeground")) rootfgstr = def_str;
+- if (rd_int ("rootMode")) { rootMode = def_int; rmodeset++; }
++ if (rd_int ("rootMode")) { rootMode = def_int; ++rmodeset; }
+ if (rd_flag("rwColor")) rwcolor = def_int;
+ if (rd_flag("saveNormal")) savenorm = def_int;
+ if (rd_str ("searchDirectory")) strcpy(searchdir, def_str);
+ if (rd_str ("textviewGeometry")) textgeom = def_str;
+ if (rd_flag("useStdCmap")) stdcmap = def_int;
+ if (rd_str ("visual")) visualstr = def_str;
++#ifdef VS_ADJUST
++ if (rd_flag("vsadjust")) vsadjust = def_int;
++#endif
+ if (rd_flag("vsDisable")) novbrowse = def_int;
+ if (rd_str ("vsGeometry")) browgeom = def_str;
+ if (rd_flag("vsMap")) browmap = def_int;
+ if (rd_flag("vsPerfect")) browPerfect = def_int;
+ if (rd_str ("white")) whitestr = def_str;
++
++ /* Check for any command-bindings to the supported function keys */
++#define TMPLEN 80
++ for (i=0; i<FSTRMAX; ++i) {
++ char tmp[TMPLEN];
++
++ snprintf(tmp, TMPLEN, "F%dcommand", i+1);
++ if (rd_str(tmp))
++ fkeycmds[i] = def_str;
++ else
++ fkeycmds[i] = NULL;
++ }
++#undef TMPLEN
+ }
+
+
+@@ -1146,7 +1398,7 @@
+
+ not_in_first_half = 0;
+
+- if (argv[i][0] != '-' && argv[i][0] != '+') {
++ if (argv[i][0] != '-' && argv[i][0] != '+') {
+ /* a file name. put it in list */
+
+ if (!nostat) {
+@@ -1158,24 +1410,30 @@
+ }
+
+ if (numnames<MAXNAMES) {
++#ifdef AUTO_EXPAND
++ if(Isarchive(argv[i]) == 0){ /* Not archive file */
++ namelist[numnames++] = argv[i];
++ }
++#else
+ namelist[numnames++] = argv[i];
++#endif
+ if (numnames==MAXNAMES) {
+- fprintf(stderr,"%s: too many filenames. Only using first %d.\n",
++ fprintf(stderr,"%s: too many filenames. Using only first %d.\n",
+ cmd, MAXNAMES);
+ }
+ }
+ }
+
+- else if (!strcmp(argv[i], "-")) /* stdin flag */
++ else if (!strcmp(argv[i], "-")) /* stdin flag */
+ stdinflag++;
+
+- else if (!argcmp(argv[i],"-24", 3,1,&force24 )); /* force24 */
+- else if (!argcmp(argv[i],"-2xlimit",3,1,&limit2x )); /* 2xlimit */
+- else if (!argcmp(argv[i],"-4x3", 2,1,&auto4x3 )); /* 4x3 */
+- else if (!argcmp(argv[i],"-8", 2,1,&force8 )); /* force8 */
+- else if (!argcmp(argv[i],"-acrop", 3,1,&autocrop)); /* autocrop */
+-
+- else if (!argcmp(argv[i],"-aspect",3,0,&pm)) { /* def. aspect */
++ else if (!argcmp(argv[i],"-24", 3,1,&force24 )); /* force24 */
++ else if (!argcmp(argv[i],"-2xlimit",3,1,&limit2x )); /* 2xlimit */
++ else if (!argcmp(argv[i],"-4x3", 2,1,&auto4x3 )); /* 4x3 */
++ else if (!argcmp(argv[i],"-8", 2,1,&force8 )); /* force8 */
++ else if (!argcmp(argv[i],"-acrop", 3,1,&autocrop)); /* autocrop */
++
++ else if (!argcmp(argv[i],"-aspect",3,0,&pm)) { /* def. aspect */
+ int n,d;
+ if (++i<argc) {
+ if (sscanf(argv[i],"%d:%d",&n,&d)!=2 || n<1 || d<1)
+@@ -1184,57 +1442,65 @@
+ }
+ }
+
+- else if (!argcmp(argv[i],"-best24",3,0,&pm)) /* -best */
++ else if (!argcmp(argv[i],"-windowid",3,0,&pm)) {
++ if (++i<argc) {
++ if (sscanf(argv[i], "%ld", &spec_window) != 1) {
++ fprintf(stderr,"%s: bad argument to -windowid '%s'\n",cmd,argv[i]);
++ }
++ }
++ }
++
++ else if (!argcmp(argv[i],"-best24",3,0,&pm)) /* -best */
+ conv24 = CONV24_BEST;
+-
+- else if (!argcmp(argv[i],"-bg",3,0,&pm)) /* bg color */
++
++ else if (!argcmp(argv[i],"-bg",3,0,&pm)) /* bg color */
+ { if (++i<argc) bgstr = argv[i]; }
+-
+- else if (!argcmp(argv[i],"-black",3,0,&pm)) /* black color */
++
++ else if (!argcmp(argv[i],"-black",3,0,&pm)) /* black color */
+ { if (++i<argc) blackstr = argv[i]; }
+-
+- else if (!argcmp(argv[i],"-bw",3,0,&pm)) /* border width */
++
++ else if (!argcmp(argv[i],"-bw",3,0,&pm)) /* border width */
+ { if (++i<argc) bwidth=atoi(argv[i]); }
+-
+- else if (!argcmp(argv[i],"-cecmap",4,1,&cmapInGam)); /* cmapInGam */
+-
+- else if (!argcmp(argv[i],"-cegeometry",4,0,&pm)) /* gammageom */
++
++ else if (!argcmp(argv[i],"-cecmap",4,1,&cmapInGam)); /* cmapInGam */
++
++ else if (!argcmp(argv[i],"-cegeometry",4,0,&pm)) /* gammageom */
+ { if (++i<argc) gamgeom = argv[i]; }
+-
+- else if (!argcmp(argv[i],"-cemap",4,1,&gmap)); /* gmap */
+-
+- else if (!argcmp(argv[i],"-cgamma",4,0,&pm)) { /* color gamma */
++
++ else if (!argcmp(argv[i],"-cemap",4,1,&gmap)); /* gmap */
++
++ else if (!argcmp(argv[i],"-cgamma",4,0,&pm)) { /* color gamma */
+ if (i+3<argc) {
+- rgamval = atof(argv[++i]);
+- ggamval = atof(argv[++i]);
+- bgamval = atof(argv[++i]);
++ rgamval = atof(argv[++i]);
++ ggamval = atof(argv[++i]);
++ bgamval = atof(argv[++i]);
+ }
+ cgamset++;
+ }
+-
+- else if (!argcmp(argv[i],"-cgeometry",4,0,&pm)) /* ctrlgeom */
++
++ else if (!argcmp(argv[i],"-cgeometry",4,0,&pm)) /* ctrlgeom */
+ { if (++i<argc) ctrlgeom = argv[i]; }
+-
+- else if (!argcmp(argv[i],"-clear",4,1,&clrroot)); /* clear */
+- else if (!argcmp(argv[i],"-close",4,1,&autoclose)); /* close */
+- else if (!argcmp(argv[i],"-cmap", 3,1,&ctrlmap)); /* ctrlmap */
+
+- else if (!argcmp(argv[i],"-cmtgeometry",5,0,&pm)) /* comment geom */
++ else if (!argcmp(argv[i],"-clear",4,1,&clrroot)); /* clear */
++ else if (!argcmp(argv[i],"-close",4,1,&autoclose)); /* close */
++ else if (!argcmp(argv[i],"-cmap", 3,1,&ctrlmap)); /* ctrlmap */
++
++ else if (!argcmp(argv[i],"-cmtgeometry",5,0,&pm)) /* comment geom */
+ { if (++i<argc) cmtgeom = argv[i]; }
+-
+- else if (!argcmp(argv[i],"-cmtmap",5,1,&cmtmap)); /* map cmt window */
+-
+- else if (!argcmp(argv[i],"-crop",3,0,&pm)) { /* crop */
++
++ else if (!argcmp(argv[i],"-cmtmap",5,1,&cmtmap)); /* map cmt window */
++
++ else if (!argcmp(argv[i],"-crop",3,0,&pm)) { /* crop */
+ if (i+4<argc) {
+- acropX = atoi(argv[++i]);
+- acropY = atoi(argv[++i]);
+- acropW = atoi(argv[++i]);
+- acropH = atoi(argv[++i]);
++ acropX = atoi(argv[++i]);
++ acropY = atoi(argv[++i]);
++ acropW = atoi(argv[++i]);
++ acropH = atoi(argv[++i]);
+ }
+ acrop++;
+ }
+-
+- else if (!argcmp(argv[i],"-cursor",3,0,&pm)) /* cursor */
++
++ else if (!argcmp(argv[i],"-cursor",3,0,&pm)) /* cursor */
+ { if (++i<argc) curstype = atoi(argv[i]); }
+
+ #ifdef VMS /* in VMS, cmd-line-opts are in lower case */
+@@ -1247,84 +1513,100 @@
+ }
+ #endif
+
+- else if (!argcmp(argv[i],"-dir",4,0,&pm)) /* search dir */
++ else if (!argcmp(argv[i],"-dir",4,0,&pm)) /* search dir */
+ { if (++i<argc) strcpy(searchdir, argv[i]); }
+
+- else if (!argcmp(argv[i],"-display",4,0,&pm)) /* display */
++ else if (!argcmp(argv[i],"-display",4,0,&pm)) /* display */
+ { if (++i<argc) display = argv[i]; }
+
+- else if (!argcmp(argv[i],"-dither",4,1,&autodither)); /* autodither */
++ else if (!argcmp(argv[i],"-dither",4,1,&autodither)); /* autodither */
+
+- else if (!argcmp(argv[i],"-drift",3,0,&pm)) { /* drift kludge */
++ else if (!argcmp(argv[i],"-drift",3,0,&pm)) { /* drift kludge */
+ if (i<argc-2) {
+ kludge_offx = atoi(argv[++i]);
+ kludge_offy = atoi(argv[++i]);
+ }
+ }
+
+- else if (!argcmp(argv[i],"-expand",2,0,&pm)) { /* expand factor */
++ else if (!argcmp(argv[i],"-expand",2,0,&pm)) { /* expand factor */
+ if (++i<argc) {
+ if (index(argv[i], ':')) {
+- if (sscanf(argv[i], "%lf:%lf", &hexpand, &vexpand)!=2)
++ if (sscanf(argv[i], "%lf:%lf", &hexpand, &vexpand)!=2)
+ { hexpand = vexpand = 1.0; }
+ }
+ else hexpand = vexpand = atof(argv[i]);
+ }
+ }
+
+- else if (!argcmp(argv[i],"-fg",3,0,&pm)) /* fg color */
++#ifdef HAVE_G3
++ else if (!argcmp(argv[i],"-fax",3,0,&highresfax)); /* fax */
++#endif
++
++ else if (!argcmp(argv[i],"-fg",3,0,&pm)) /* fg color */
+ { if (++i<argc) fgstr = argv[i]; }
+-
+- else if (!argcmp(argv[i],"-fixed",3,1,&fixedaspect)); /* fix asp. ratio */
+-
+- else if (!argcmp(argv[i],"-flist",3,0,&pm)) /* file list */
++
++ else if (!argcmp(argv[i],"-fixed",5,1,&fixedaspect)); /* fix asp. ratio */
++
++#ifdef ENABLE_FIXPIX_SMOOTH
++ else if (!argcmp(argv[i],"-fixpix",5,1,&do_fixpix_smooth)); /* dithering */
++#endif
++
++ else if (!argcmp(argv[i],"-flist",3,0,&pm)) /* file list */
+ { if (++i<argc) flistName = argv[i]; }
+
+- else if (!argcmp(argv[i],"-gamma",3,0,&pm)) /* gamma */
++ else if (!argcmp(argv[i],"-gamma",3,0,&pm)) /* gamma */
+ { if (++i<argc) gamval = atof(argv[i]); gamset++; }
+-
+- else if (!argcmp(argv[i],"-geometry",3,0,&pm)) /* geometry */
++
++ else if (!argcmp(argv[i],"-geometry",3,0,&pm)) /* geometry */
+ { if (++i<argc) maingeom = argv[i]; }
+-
+- else if (!argcmp(argv[i],"-grabdelay",3,0,&pm)) /* grabDelay */
++
++ else if (!argcmp(argv[i],"-grabdelay",3,0,&pm)) /* grabDelay */
+ { if (++i<argc) grabDelay = atoi(argv[i]); }
+-
+- else if (!argcmp(argv[i],"-gsdev",4,0,&pm)) /* gsDevice */
++
++ else if (!argcmp(argv[i],"-gsdev",4,0,&pm)) /* gsDevice */
+ { if (++i<argc) gsDev = argv[i]; }
+-
+- else if (!argcmp(argv[i],"-gsgeom",4,0,&pm)) /* gsGeometry */
++
++ else if (!argcmp(argv[i],"-gsgeom",4,0,&pm)) /* gsGeometry */
+ { if (++i<argc) gsGeomStr = argv[i]; }
+-
+- else if (!argcmp(argv[i],"-gsres",4,0,&pm)) /* gsResolution */
++
++ else if (!argcmp(argv[i],"-gsres",4,0,&pm)) /* gsResolution */
+ { if (++i<argc) gsRes=abs(atoi(argv[i])); }
+-
+- else if (!argcmp(argv[i],"-hflip",3,1,&autohflip)); /* hflip */
+
+- else if (!argcmp(argv[i],"-hi",3,0,&pm)) /* highlight */
++ else if (!argcmp(argv[i],"-hflip",3,1,&autohflip)); /* hflip */
++
++ else if (!argcmp(argv[i],"-hi",3,0,&pm)) /* highlight */
+ { if (++i<argc) histr = argv[i]; }
+-
+- else if (!argcmp(argv[i],"-hist", 4,1,&autohisteq)); /* hist eq */
++
++#ifdef HAVE_G3
++ else if (!argcmp(argv[i],"-highresfax",4,0,&highresfax));/* high res. fax */
++#endif
++
++ else if (!argcmp(argv[i],"-hist", 4,1,&autohisteq)); /* hist eq */
+
+ else if (!argcmp(argv[i],"-hsv", 3,1,&hsvmode)); /* hsvmode */
+
+ else if (!argcmp(argv[i],"-icgeometry",4,0,&pm)) /* icon geometry */
+ { if (++i<argc) icongeom = argv[i]; }
+-
++
+ else if (!argcmp(argv[i],"-iconic",4,1,&startIconic)); /* iconic */
+-
++
+ else if (!argcmp(argv[i],"-igeometry",3,0,&pm)) /* infogeom */
+ { if (++i<argc) infogeom = argv[i]; }
+-
+- else if (!argcmp(argv[i],"-imap", 3,1,&imap)); /* imap */
+- else if (!argcmp(argv[i],"-lbrowse", 3,1,&browseMode)); /* browse mode */
+
+- else if (!argcmp(argv[i],"-lo",3,0,&pm)) /* lowlight */
++ else if (!argcmp(argv[i],"-imap",3,1,&imap)); /* imap */
++
++ else if (!argcmp(argv[i],"-ibg",3,0,&pm)) /* image bkgd color */
++ { if (++i<argc) imagebgstr = argv[i]; }
++
++ else if (!argcmp(argv[i],"-lbrowse",3,1,&browseMode)); /* browse mode */
++
++ else if (!argcmp(argv[i],"-lo",3,0,&pm)) /* lowlight */
+ { if (++i<argc) lostr = argv[i]; }
+
+ else if (!argcmp(argv[i],"-loadclear",4,1,&clearonload)); /* clearonload */
+
+-
+- else not_in_first_half = 1;
++
++ else not_in_first_half = 1;
+
+
+
+@@ -1339,103 +1621,130 @@
+ if (!argcmp(argv[i],"-max",4,1,&automax)); /* auto maximize */
+ else if (!argcmp(argv[i],"-maxpect",5,1,&pm)) /* auto maximize */
+ { automax=pm; fixedaspect=pm; }
+-
++
++#ifdef MACBINARY
++ else if (!argcmp(argv[i],"-macbinary",3,1,&handlemacb)); /* macbinary */
++#endif
++
+ else if (!argcmp(argv[i],"-mfn",3,0,&pm)) /* mono font name */
+ { if (++i<argc) monofontname = argv[i]; }
+
++#ifdef HAVE_MGCSFX
++ else if (!argcmp(argv[i],"-mgcsfx", 4,1,&mgcsfx)); /* mgcsfx */
++#endif
++
+ else if (!argcmp(argv[i],"-mono",3,1,&mono)); /* mono */
+-
++
+ else if (!argcmp(argv[i],"-name",3,0,&pm)) /* name */
+ { if (++i<argc) winTitle = argv[i]; }
+-
++
+ else if (!argcmp(argv[i],"-ncols",3,0,&pm)) /* ncols */
+ { if (++i<argc) ncols=abs(atoi(argv[i])); }
+-
+- else if (!argcmp(argv[i],"-ninstall", 3,1,&ninstall)); /* inst cmaps?*/
++
++ else if (!argcmp(argv[i],"-ninstall", 3,1,&ninstall)); /* inst cmaps? */
+ else if (!argcmp(argv[i],"-nodecor", 4,1,&nodecor));
+ else if (!argcmp(argv[i],"-nofreecols",4,1,&noFreeCols));
+ else if (!argcmp(argv[i],"-nolimits", 4,1,&nolimits)); /* nolimits */
++#ifdef HAVE_MGCSFX
++ else if (!argcmp(argv[i],"-nomgcsfx", 4,1,&nomgcsfx)); /* nomgcsfx */
++#endif
++#if defined(HAVE_PIC) || defined(HAVE_PIC2)
++ else if (!argcmp(argv[i],"-nopicadjust", 4,1,&nopicadjust));/*nopicadjust*/
++#endif
+ else if (!argcmp(argv[i],"-nopos", 4,1,&nopos)); /* nopos */
+ else if (!argcmp(argv[i],"-noqcheck", 4,1,&noqcheck)); /* noqcheck */
+- else if (!argcmp(argv[i],"-noresetroot",5,1,&resetroot)); /* reset root*/
++ else if (!argcmp(argv[i],"-noresetroot",5,1,&resetroot)); /* reset root */
+ else if (!argcmp(argv[i],"-norm", 5,1,&autonorm)); /* norm */
+ else if (!argcmp(argv[i],"-nostat", 4,1,&nostat)); /* nostat */
+ else if (!argcmp(argv[i],"-owncmap", 2,1,&owncmap)); /* own cmap */
++#ifdef HAVE_PCD
++ else if (!argcmp(argv[i],"-pcd", 4,0,&pm)) /* pcd with size */
++ { if (i+1<argc) PcdSize = atoi(argv[++i]); }
++#endif
+ else if (!argcmp(argv[i],"-perfect", 3,1,&perfect)); /* -perfect */
++#ifdef HAVE_PIC2
++ else if (!argcmp(argv[i],"-pic2split", 3,1,&pic2split)); /* pic2split */
++#endif
+ else if (!argcmp(argv[i],"-pkludge", 3,1,&winCtrPosKludge));
+ else if (!argcmp(argv[i],"-poll", 3,1,&polling)); /* chk mod? */
+
+ else if (!argcmp(argv[i],"-preset",3,0,&pm)) /* preset */
+ { if (++i<argc) preset=abs(atoi(argv[i])); }
+-
++
+ else if (!argcmp(argv[i],"-quick24",5,0,&pm)) /* quick 24-to-8 conv */
+ conv24 = CONV24_FAST;
+-
++
+ else if (!argcmp(argv[i],"-quit", 2,1,&autoquit)); /* auto-quit */
+ else if (!argcmp(argv[i],"-random", 4,1,&randomShow)); /* random */
+ else if (!argcmp(argv[i],"-raw", 4,1,&autoraw)); /* force raw */
+
+ else if (!argcmp(argv[i],"-rbg",3,0,&pm)) /* root background color */
+ { if (++i<argc) rootbgstr = argv[i]; }
+-
++
+ else if (!argcmp(argv[i],"-rfg",3,0,&pm)) /* root foreground color */
+ { if (++i<argc) rootfgstr = argv[i]; }
+-
++
+ else if (!argcmp(argv[i],"-rgb",4,1,&pm)) /* rgb mode */
+ hsvmode = !pm;
+-
++
+ else if (!argcmp(argv[i],"-RM",3,0,&pm)) /* auto-delete */
+ autoDelete = 1;
+-
++
+ else if (!argcmp(argv[i],"-rmode",3,0,&pm)) /* root pattern */
+- { if (++i<argc) rootMode = atoi(argv[i]);
++ { if (++i<argc) rootMode = atoi(argv[i]);
+ useroot++; rmodeset++;
+ }
+-
++
+ else if (!argcmp(argv[i],"-root",4,1,&useroot)); /* use root window */
+-
++
+ else if (!argcmp(argv[i],"-rotate",4,0,&pm)) /* rotate */
+ { if (++i<argc) autorotate = atoi(argv[i]); }
+-
++
+ else if (!argcmp(argv[i],"-rv",3,1,&revvideo)); /* reverse video */
+ else if (!argcmp(argv[i],"-rw",3,1,&rwcolor)); /* use r/w color */
+
+ else if (!argcmp(argv[i],"-slow24",3,0,&pm)) /* slow 24->-8 conv.*/
+ conv24 = CONV24_SLOW;
+-
++
+ else if (!argcmp(argv[i],"-smooth",3,1,&autosmooth)); /* autosmooth */
++ else if (!argcmp(argv[i],"-startgrab",3,1,&startGrab)); /* startGrab */
+ else if (!argcmp(argv[i],"-stdcmap",3,1,&stdcmap)); /* use stdcmap */
+
+ else if (!argcmp(argv[i],"-tgeometry",2,0,&pm)) /* textview geom */
+ { if (++i<argc) textgeom = argv[i]; }
+-
++
+ else if (!argcmp(argv[i],"-vflip",3,1,&autovflip)); /* vflip */
+ else if (!argcmp(argv[i],"-viewonly",4,1,&viewonly)); /* viewonly */
+
+ else if (!argcmp(argv[i],"-visual",4,0,&pm)) /* visual */
+ { if (++i<argc) visualstr = argv[i]; }
+-
++
++#ifdef VS_ADJUST
++ else if (!argcmp(argv[i],"-vsadjust", 3,1,&vsadjust)); /* vsadjust */
++#endif
++
+ else if (!argcmp(argv[i],"-vsdisable",4,1,&novbrowse)); /* disable sch? */
+-
++
+ else if (!argcmp(argv[i],"-vsgeometry",4,0,&pm)) /* visSchnauzer geom */
+ { if (++i<argc) browgeom = argv[i]; }
+-
++
+ else if (!argcmp(argv[i],"-vsmap",4,1,&browmap)); /* visSchnauzer map */
+-
++
+ else if (!argcmp(argv[i],"-vsperfect",3,1,&browPerfect)); /* vs perf. */
+
+ else if (!argcmp(argv[i],"-wait",3,0,&pm)) { /* secs betwn pics */
+ if (++i<argc) {
+- waitsec = abs(atoi(argv[i]));
+- if (waitsec<0) waitsec = 0;
++ char *comma = strchr(argv[i], ',');
++ waitsec_nonfinal = fabs(atof(argv[i]));
++ waitsec_final = comma? fabs(atof(comma+1)) : waitsec_nonfinal;
+ }
+ }
+-
++
+ else if (!argcmp(argv[i],"-white",3,0,&pm)) /* white color */
+ { if (++i<argc) whitestr = argv[i]; }
+-
++
+ else if (!argcmp(argv[i],"-wloop",3,1,&waitloop)); /* waitloop */
+-
++
+ else if (not_in_first_half) cmdSyntax();
+ }
+
+@@ -1453,7 +1762,11 @@
+ /* check options for validity */
+
+ if (strlen(searchdir)) { /* got a search directory */
++#ifdef AUTO_EXPAND
++ if (Chvdir(searchdir)) {
++#else
+ if (chdir(searchdir)) {
++#endif
+ fprintf(stderr,"xv: unable to cd to directory '%s'.\n",searchdir);
+ fprintf(stderr,
+ " Ignoring '-dir' option and/or 'xv.searchDirectory' resource\n");
+@@ -1462,7 +1775,7 @@
+ }
+
+
+- if (flistName)
++ if (flistName)
+ add_filelist_to_namelist(flistName, namelist, &numnames, MAXNAMES);
+
+ RANGE(curstype,0,254);
+@@ -1475,16 +1788,16 @@
+
+ /* if using root, generally gotta map ctrl window, 'cause there won't be
+ any way to ask for it. (no kbd or mouse events from rootW) */
+- if (useroot && !autoquit) ctrlmap = -1;
++ if (useroot && !autoquit) ctrlmap = -1;
++
+
+-
+ if (abs(autorotate) != 0 && abs(autorotate) != 90 &&
+ abs(autorotate) != 180 && abs(autorotate) != 270) {
+ fprintf(stderr,"Invalid auto rotation value (%d) ignored.\n", autorotate);
+ fprintf(stderr," (Valid values: 0, +-90, +-180, +-270)\n");
+
+ autorotate = 0;
+- }
++ }
+
+
+ if (grabDelay < 0 || grabDelay > 15) {
+@@ -1498,9 +1811,9 @@
+ fprintf(stderr," (Valid values: 1, 2, 3, 4)\n");
+
+ preset = 0;
+- }
++ }
+
+- if (waitsec < 0) noFreeCols = 0; /* disallow nfc if not doing slideshow */
++ if (waitsec < 0.0) noFreeCols = 0; /* disallow nfc if not doing slideshow */
+ if (noFreeCols && perfect) { perfect = 0; owncmap = 1; }
+
+ /* decide what default color allocation stuff we've settled on */
+@@ -1512,24 +1825,24 @@
+
+ defaultCmapMode = colorMapMode; /* default mode for 8-bit images */
+
+- if (nopos) {
+- maingeom = infogeom = ctrlgeom = gamgeom = browgeom = textgeom = NULL;
+- cmtgeom = NULL;
++ if (nopos) {
++ maingeom = infogeom = ctrlgeom = gamgeom = browgeom = textgeom = cmtgeom =
++ (const char *) NULL;
+ }
+
+ /* if -root and -maxp, disallow 'integer' tiling modes */
+- if (useroot && fixedaspect && automax && !rmodeset &&
++ if (useroot && fixedaspect && automax && !rmodeset &&
+ (rootMode == RM_TILE || rootMode == RM_IMIRROR))
+ rootMode = RM_CSOLID;
+ }
+
+
+
++static int cpos = 0;
+
+ /***********************************/
+-static int cpos = 0;
+ static void printoption(st)
+- char *st;
++ const char *st;
+ {
+ if (strlen(st) + cpos > 78) {
+ fprintf(stderr,"\n ");
+@@ -1540,8 +1853,26 @@
+ cpos = cpos + strlen(st) + 1;
+ }
+
++
+ static void cmdSyntax()
+ {
++ /* GRR 19980605: added version info for most common libraries */
++ fprintf(stderr, "XV - %s.\n", REVDATE);
++#ifdef HAVE_JPEG
++ VersionInfoJPEG();
++#endif
++#ifdef HAVE_JP2K
++ VersionInfoJP2K();
++#endif
++#ifdef HAVE_TIFF
++ VersionInfoTIFF();
++#endif
++#ifdef HAVE_PNG
++ VersionInfoPNG();
++#endif
++ /* pbm/pgm/ppm support is native, not via pbmplus/netpbm libraries */
++ fprintf(stderr, "\n");
++
+ fprintf(stderr, "Usage:\n");
+ printoption(cmd);
+ printoption("[-]");
+@@ -1579,8 +1910,14 @@
+ printoption("[-/+dither]");
+ printoption("[-drift dx dy]");
+ printoption("[-expand exp | hexp:vexp]");
++#ifdef HAVE_G3
++ printoption("[-fax]");
++#endif
+ printoption("[-fg color]");
+ printoption("[-/+fixed]");
++#ifdef ENABLE_FIXPIX_SMOOTH
++ printoption("[-/+fixpix]");
++#endif
+ printoption("[-flist fname]");
+ printoption("[-gamma val]");
+ printoption("[-geometry geom]");
+@@ -1591,8 +1928,12 @@
+ printoption("[-help]");
+ printoption("[-/+hflip]");
+ printoption("[-hi color]");
++#ifdef HAVE_G3
++ printoption("[-highresfax]");
++#endif
+ printoption("[-/+hist]");
+ printoption("[-/+hsv]");
++ printoption("[-ibg color]"); /* GRR 19980314 */
+ printoption("[-icgeometry geom]");
+ printoption("[-/+iconic]");
+ printoption("[-igeometry geom]");
+@@ -1600,9 +1941,15 @@
+ printoption("[-/+lbrowse]");
+ printoption("[-lo color]");
+ printoption("[-/+loadclear]");
++#ifdef MACBINARY
++ printoption("[-/+macbinary]");
++#endif
+ printoption("[-/+max]");
+ printoption("[-/+maxpect]");
+ printoption("[-mfn font]");
++#ifdef HAVE_MGCSFX
++ printoption("[-/+mgcsfx]");
++#endif
+ printoption("[-/+mono]");
+ printoption("[-name str]");
+ printoption("[-ncols #]");
+@@ -1610,13 +1957,25 @@
+ printoption("[-/+nodecor]");
+ printoption("[-/+nofreecols]");
+ printoption("[-/+nolimits]");
++#ifdef HAVE_MGCSFX
++ printoption("[-/+nomgcsfx]");
++#endif
++#if defined(HAVE_PIC) || defined(HAVE_PIC2)
++ printoption("[-/+nopicadjust]");
++#endif
+ printoption("[-/+nopos]");
+ printoption("[-/+noqcheck]");
+ printoption("[-/+noresetroot]");
+ printoption("[-/+norm]");
+ printoption("[-/+nostat]");
+ printoption("[-/+owncmap]");
++#ifdef HAVE_PCD
++ printoption("[-pcd size(0=192*128,1,2,3,4=3072*2048)]");
++#endif
+ printoption("[-/+perfect]");
++#ifdef HAVE_PIC2
++ printoption("[-/+pic2split]");
++#endif
+ printoption("[-/+pkludge]");
+ printoption("[-/+poll]");
+ printoption("[-preset #]");
+@@ -1635,17 +1994,22 @@
+ printoption("[-/+rw]");
+ printoption("[-slow24]");
+ printoption("[-/+smooth]");
++ printoption("[-/+startgrab]");
+ printoption("[-/+stdcmap]");
+ printoption("[-tgeometry geom]");
+ printoption("[-/+vflip]");
+ printoption("[-/+viewonly]");
+ printoption("[-visual type]");
++#ifdef VS_ADJUST
++ printoption("[-/+vsadjust]");
++#endif
+ printoption("[-/+vsdisable]");
+ printoption("[-vsgeometry geom]");
+ printoption("[-/+vsmap]");
+ printoption("[-/+vsperfect]");
+- printoption("[-wait seconds]");
++ printoption("[-wait secs[,final_secs]]");
+ printoption("[-white color]");
++ printoption("[-windowid windowid]");
+ printoption("[-/+wloop]");
+ printoption("[filename ...]");
+ fprintf(stderr,"\n\n");
+@@ -1656,7 +2020,7 @@
+ /***********************************/
+ static void rmodeSyntax()
+ {
+- fprintf(stderr,"%s: unknown root mode '%d'. Valid modes are:\n",
++ fprintf(stderr,"%s: unknown root mode '%d'. Valid modes are:\n",
+ cmd, rootMode);
+ fprintf(stderr,"\t0: tiling\n");
+ fprintf(stderr,"\t1: integer tiling\n");
+@@ -1668,6 +2032,7 @@
+ fprintf(stderr,"\t7: centered on a 'brick' background\n");
+ fprintf(stderr,"\t8: symmetrical tiling\n");
+ fprintf(stderr,"\t9: symmetrical mirrored tiling\n");
++ fprintf(stderr,"\t10: upper left corner\n");
+ fprintf(stderr,"\n");
+ Quit(1);
+ }
+@@ -1675,17 +2040,15 @@
+
+ /***********************************/
+ static int argcmp(a1, a2, minlen, plusallowed, plusminus)
+- char *a1, *a2;
++ const char *a1, *a2;
+ int minlen, plusallowed;
+ int *plusminus;
+ {
+- /* does a string compare between a1 and a2. To return '0', a1 and a2
+- must match to the length of a2, and that length has to
++ /* does a string compare between a1 and a2. To return '0', a1 and a2
++ must match to the length of a1, and that length has to
+ be at least 'minlen'. Otherwise, return non-zero. plusminus set to '1'
+ if '-option', '0' if '+option' */
+
+- int i;
+-
+ if ((strlen(a1) < (size_t) minlen) || (strlen(a2) < (size_t) minlen))
+ return 1;
+ if (strlen(a1) > strlen(a2)) return 1;
+@@ -1694,7 +2057,7 @@
+
+ if (a1[0]=='-' || (plusallowed && a1[0]=='+')) {
+ /* only set if we match */
+- *plusminus = (a1[0] == '-');
++ *plusminus = (a1[0] == '-');
+ return 0;
+ }
+
+@@ -1721,8 +2084,11 @@
+ int oldCXOFF, oldCYOFF, oldCWIDE, oldCHIGH, wascropped;
+ char *tmp;
+ char *fullname, /* full name of the original file */
+- filename[512], /* full name of file to load (could be /tmp/xxx)*/
+- globnm[512]; /* globbed version of fullname of orig file */
++ filename[512]; /* full name of file to load (could be /tmp/xxx)*/
++#ifdef MACBINARY
++ char origname[512]; /* file name of original file (NO processing) */
++ origname[0] = '\0';
++#endif
+
+ xvbzero((char *) &pinfo, sizeof(PICINFO));
+
+@@ -1748,7 +2114,7 @@
+
+ /* if we're not loading next or prev page in a multi-page doc, kill off
+ page files */
+- if (strlen(pageBaseName) && filenum!=OP_PAGEDN && filenum!=OP_PAGEUP)
++ if (strlen(pageBaseName) && filenum!=OP_PAGEDN && filenum!=OP_PAGEUP)
+ killpage = 1;
+
+
+@@ -1799,14 +2165,13 @@
+ }
+
+ else if (filenum == PADDED) {
+- /* need fullfname (used for window/icon name),
++ /* need fullfname (used for window/icon name),
+ basefname(compute from fullfname) */
+
+ i = LoadPad(&pinfo, fullfname);
+ fullname = fullfname;
+ strcpy(filename, fullfname);
+- tmp = BaseName(fullfname);
+- strcpy(basefname, tmp);
++ strcpy(basefname, BaseName(fullfname));
+
+ if (!i) goto FAILED; /* shouldn't happen */
+
+@@ -1855,33 +2220,48 @@
+ frompipe = 1;
+ }
+ }
++#ifdef AUTO_EXPAND
++ else {
++ fullname = (char *) malloc(MAXPATHLEN+2);
++ strcpy(fullname, namelist[filenum]); // 1 of 2 places fullname != const
++ freename = 1;
++ }
++ tmp = (char *) rindex(fullname, '/');
++ if (tmp) {
++ *tmp = '\0'; // 2 of 2 places fullname != const
++ Mkvdir(fullname);
++ *tmp = '/';
++ }
++ Dirtovd(fullname);
++#else
+ else fullname = namelist[filenum];
+-
++#endif
+
+ strcpy(fullfname, fullname);
+- tmp = BaseName(fullname);
+- strcpy(basefname, tmp);
++ strcpy(basefname, BaseName(fullname));
+
+
+ /* chop off trailing ".Z", ".z", or ".gz" from displayed basefname, if any */
+- if (strlen(basefname) > (size_t) 2 &&
+- strcmp(basefname+strlen(basefname)-2,".Z")==0)
++ if (strlen(basefname)>2 && strcmp(basefname+strlen(basefname)-2,".Z")==0)
+ basefname[strlen(basefname)-2]='\0';
+ else {
+ #ifdef GUNZIP
+- if (strlen(basefname)>2 && strcmp(basefname+strlen(basefname)-2,".Z")==0)
++ if (strlen(basefname)>2 && strcmp(basefname+strlen(basefname)-2,".z")==0)
+ basefname[strlen(basefname)-2]='\0';
+-
+- else if (strlen(basefname)>3 &&
+- strcmp(basefname+strlen(basefname)-3,".gz")==0)
++ else
++ if (strlen(basefname)>3 && strcmp(basefname+strlen(basefname)-3,".gz")==0)
+ basefname[strlen(basefname)-3]='\0';
+-#endif /* GUNZIP */
++#endif
++#ifdef BUNZIP2
++ if (strlen(basefname)>4 && strcmp(basefname+strlen(basefname)-4,".bz2")==0)
++ basefname[strlen(basefname)-4]='\0';
++#endif
+ }
+
+
+ if (filenum == LOADPIC && ISPIPE(fullname[0])) {
+ /* if we're reading from a pipe, 'filename' will have the /tmp/xvXXXXXX
+- filename, and we can skip a lot of stuff: (such as prepending
++ filename, and we can skip a lot of stuff: (such as prepending
+ 'initdir' to relative paths, dealing with reading from stdin, etc. */
+
+ /* at this point, fullname = "! do some commands",
+@@ -1891,11 +2271,11 @@
+
+ else { /* NOT reading from a PIPE */
+
+- /* if fullname doesn't start with a '/' (ie, it's a relative path),
+- (and it's not LOADPIC and it's not the special case '<stdin>')
++ /* if fullname doesn't start with a '/' (ie, it's a relative path),
++ (and it's not LOADPIC and it's not the special case '<stdin>')
+ then we need to prepend a directory name to it:
+-
+- prepend 'initdir',
++
++ prepend 'initdir',
+ if we have a searchdir (ie, we have multiple places to look),
+ see if such a file exists (via fopen()),
+ if it does, we're done.
+@@ -1904,7 +2284,7 @@
+ if it does, we're done.
+ if it doesn't, remove all prepended directories, and fall through
+ to error code below. */
+-
++
+ if (filenum!=LOADPIC && fullname[0]!='/' && strcmp(fullname,STDINSTR)!=0) {
+ char *tmp1;
+
+@@ -1954,28 +2334,40 @@
+ }
+ }
+ }
+-
++
+ strcpy(filename, fullname);
+-
+-
++
++
+ /* if the file is STDIN, write it out to a temp file */
+
+ if (strcmp(filename,STDINSTR)==0) {
+- FILE *fp;
++ FILE *fp = NULL;
++#ifndef USE_MKSTEMP
++ int tmpfd;
++#endif
+
+-#ifndef VMS
++#ifndef VMS
+ sprintf(filename,"%s/xvXXXXXX",tmpdir);
+ #else /* it is VMS */
+ sprintf(filename, "[]xvXXXXXX");
+ #endif
++
++#ifdef USE_MKSTEMP
++ fp = fdopen(mkstemp(filename), "w");
++#else
+ mktemp(filename);
++ tmpfd = open(filename,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
++ if (tmpfd < 0) FatalError("openPic(): can't create temporary file");
++ fp = fdopen(tmpfd,"w");
++#endif
++ if (!fp) FatalError("openPic(): can't write temporary file");
+
+ clearerr(stdin);
+- fp = fopen(filename,"w");
+- if (!fp) FatalError("openPic(): can't write temporary file");
+-
+ while ( (i=getchar()) != EOF) putc(i,fp);
+ fclose(fp);
++#ifndef USE_MKSTEMP
++ close(tmpfd);
++#endif
+
+ /* and remove it from list, since we can never reload from stdin */
+ if (strcmp(namelist[0], STDINSTR)==0) deleteFromList(0);
+@@ -1990,20 +2382,26 @@
+ (no pipes or stdin, though it could be compressed) to be loaded */
+ filetype = ReadFileType(filename);
+
++#ifdef HAVE_MGCSFX
++ if (mgcsfx && filetype == RFT_UNKNOWN){ /* force use MgcSfx */
++ if(getInputCom() != 0) filetype = RFT_MGCSFX;
++ }
++#endif
+
+- if (filetype == RFT_COMPRESS) { /* a compressed file. uncompress it */
++ /* if it's a compressed file, uncompress it: */
++ if ((filetype == RFT_COMPRESS) || (filetype == RFT_BZIP2)) {
+ char tmpname[128];
+
+ if (
+ #ifndef VMS
+- UncompressFile(filename, tmpname)
++ UncompressFile(filename, tmpname, filetype)
+ #else
+- UncompressFile(basefname, tmpname)
++ UncompressFile(basefname, tmpname, filetype)
+ #endif
+ ) {
+
+ filetype = ReadFileType(tmpname); /* and try again */
+-
++
+ /* if we made a /tmp file (from stdin, etc.) won't need it any more */
+ if (strcmp(fullname,filename)!=0) unlink(filename);
+
+@@ -2013,7 +2411,58 @@
+
+ WaitCursor();
+ }
+-
++
++#ifdef MACBINARY
++ if (handlemacb && macb_file == True) {
++ char tmpname[128];
++
++ if (RemoveMacbinary(filename, tmpname)) {
++ if (strcmp(fullname,filename)!=0) unlink(filename);
++ strcpy(origname, filename);
++ strcpy(filename, tmpname);
++ }
++ else filetype = RFT_ERROR;
++
++ WaitCursor();
++ }
++#endif
++
++#ifdef HAVE_MGCSFX_AUTO
++ if (filetype == RFT_MGCSFX) {
++ char tmpname[128], tmp[256];
++ char *icom;
++
++ if ((icom = mgcsfx_auto_input_com(filename)) != NULL) {
++ sprintf(tmpname, "%s/xvmsautoXXXXXX", tmpdir);
++#ifdef USE_MKSTEMP
++ close(mkstemp(tmpname));
++#else
++ mktemp(tmpname);
++#endif
++ SetISTR(ISTR_INFO, "Converting to known format by MgcSfx auto...");
++ sprintf(tmp,"%s >%s", icom, tmpname);
++ }
++ else goto ms_auto_no;
++
++#ifndef VMS
++ if (system(tmp))
++#else
++ if (!system(tmp))
++#endif
++ {
++ SetISTR(ISTR_INFO, "Unable to convert '%s' by MgcSfx auto.",
++ BaseName(filename));
++ Warning();
++ filetype = RFT_ERROR;
++ goto ms_auto_no;
++ }
++
++ filetype = ReadFileType(tmpname);
++ if (strcmp(fullname,filename)!=0) unlink(filename);
++ strcpy(filename, tmpname);
++ }
++ms_auto_no:
++#endif /* HAVE_MGCSFX_AUTO */
+
+ if (filetype == RFT_ERROR) {
+ char foostr[512];
+@@ -2027,10 +2476,16 @@
+
+ if (filetype == RFT_UNKNOWN) {
+ /* view as a text/hex file */
+- TextView(filename);
++#ifdef MACBINARY
++ if (origname[0])
++ i = TextView(origname);
++ else
++#endif
++ i = TextView(filename);
+ SetISTR(ISTR_INFO,"'%s' not in a recognized format.", basefname);
+ /* Warning(); */
+- goto SHOWN_AS_TEXT;
++ if (i) goto SHOWN_AS_TEXT;
++ else goto FAILED;
+ }
+
+ if (filetype < RFT_ERROR) {
+@@ -2058,8 +2513,9 @@
+ if (filetype == RFT_XBM && (!i || pinfo.w==0 || pinfo.h==0)) {
+ /* probably just a '.h' file or something... */
+ SetISTR(ISTR_INFO," ");
+- TextView(filename);
+- goto SHOWN_AS_TEXT;
++ i = TextView(filename);
++ if (i) goto SHOWN_AS_TEXT;
++ else goto FAILED;
+ }
+
+ if (!i) {
+@@ -2084,7 +2540,7 @@
+ /**************/
+ /* SUCCESS!!! */
+ /**************/
+-
++
+
+ GOTIMAGE:
+ /* successfully read this picture. No failures from here on out
+@@ -2097,7 +2553,7 @@
+ if (conv24MB.flags[CONV24_LOCK]) { /* locked */
+ if (pinfo.type==PIC24 && picType==PIC8) { /* 24 -> 8 bit */
+ byte *pic8;
+- pic8 = Conv24to8(pinfo.pic, pinfo.w, pinfo.h, ncols,
++ pic8 = Conv24to8(pinfo.pic, pinfo.w, pinfo.h, ncols,
+ pinfo.r, pinfo.g, pinfo.b);
+ free(pinfo.pic);
+ pinfo.pic = pic8;
+@@ -2108,7 +2564,7 @@
+
+ else if (pinfo.type!=PIC24 && picType==PIC24) { /* 8 -> 24 bit */
+ byte *pic24;
+- pic24 = Conv8to24(pinfo.pic, pinfo.w, pinfo.h,
++ pic24 = Conv8to24(pinfo.pic, pinfo.w, pinfo.h,
+ pinfo.r, pinfo.g, pinfo.b);
+ free(pinfo.pic);
+ pinfo.pic = pic24;
+@@ -2144,7 +2600,7 @@
+
+ if (mainW && !useroot) {
+ /* avoid generating excess configure events while we resize the window */
+- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
++ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
+ | StructureNotifyMask
+ | ButtonPressMask | KeyReleaseMask
+ | EnterWindowMask | LeaveWindowMask);
+@@ -2162,11 +2618,13 @@
+ pHIGH = pinfo.h;
+ if (pinfo.frmType >=0) SetDirSaveMode(F_FORMAT, pinfo.frmType);
+ if (pinfo.colType >=0) SetDirSaveMode(F_COLORS, pinfo.colType);
+-
++
+ SetISTR(ISTR_FORMAT, pinfo.fullInfo);
+ strcpy(formatStr, pinfo.shrtInfo);
+ picComments = pinfo.comment;
+ ChangeCommentText();
++ picExifInfo = pinfo.exifInfo;
++ picExifInfoSize = pinfo.exifInfoSize;
+
+ for (i=0; i<256; i++) {
+ rMap[i] = pinfo.r[i];
+@@ -2194,12 +2652,15 @@
+ if (fullname && strcmp(fullname,filename)!=0) unlink(filename);
+
+
+- SetISTR(ISTR_INFO,formatStr);
+-
++ SetISTR(ISTR_INFO, "%s", formatStr);
++
+ SetInfoMode(INF_PART);
+- SetISTR(ISTR_FILENAME,
+- (filenum==DFLTPIC || filenum==GRABBED || frompipe)
+- ? "<none>" : basefname);
++ if (filenum==DFLTPIC || filenum==GRABBED || frompipe)
++ SetISTR(ISTR_FILENAME, "<none>");
++ else if (numPages > 1)
++ SetISTR(ISTR_FILENAME, "%s Page %d of %d", basefname, curPage+1, numPages);
++ else
++ SetISTR(ISTR_FILENAME, "%s", basefname);
+
+ SetISTR(ISTR_RES,"%d x %d",pWIDE,pHIGH);
+ SetISTR(ISTR_COLOR, "");
+@@ -2219,7 +2680,7 @@
+
+
+ /* handle various 'auto-whatever' command line options
+- Note that if 'frompoll' is set, things that have to do with
++ Note that if 'frompoll' is set, things that have to do with
+ setting the expansion factor are skipped, as we'll want it to
+ display in the (already-existing) window at the same size */
+
+@@ -2254,7 +2715,7 @@
+ w = eWIDE; h = (w*3) / 4;
+ eWIDE = w; eHIGH = h;
+ }
+-
++
+
+ if (eWIDE != cWIDE || eHIGH != cHIGH) epic = (byte *) NULL;
+
+@@ -2306,14 +2767,14 @@
+ aspWIDE = eWIDE; aspHIGH = eHIGH; /* aspect-corrected eWIDE,eHIGH */
+
+ if (hexpand < 0.0) eWIDE=(int)(aspWIDE / -hexpand); /* neg: reciprocal */
+- else eWIDE=(int)(aspWIDE * hexpand);
++ else eWIDE=(int)(aspWIDE * hexpand);
+ if (vexpand < 0.0) eHIGH=(int)(aspHIGH / -vexpand); /* neg: reciprocal */
+- else eHIGH=(int)(aspHIGH * vexpand);
++ else eHIGH=(int)(aspHIGH * vexpand);
+
+ if (maingeom) {
+ /* deal with geometry spec. Note, they shouldn't have given us
+ *both* an expansion factor and a geomsize. The geomsize wins out */
+-
++
+ int i,x,y,gewide,gehigh; u_int w,h;
+
+ gewide = eWIDE; gehigh = eHIGH;
+@@ -2321,11 +2782,11 @@
+
+ if (i&WidthValue) gewide = (int) w;
+ if (i&HeightValue) gehigh = (int) h;
+-
++
+ /* handle case where the pinheads only specified width *or * height */
+ if (( i&WidthValue && ~i&HeightValue) ||
+ (~i&WidthValue && i&HeightValue)) {
+-
++
+ if (i&WidthValue) { gehigh = (aspHIGH * gewide) / pWIDE; }
+ else { gewide = (aspWIDE * gehigh) / pHIGH; }
+ }
+@@ -2391,7 +2852,7 @@
+
+ /* if we're using an integer tiled root mode, truncate eWIDE/eHIGH to
+ be an integer divisor of the display size */
+-
++
+ if (useroot && (rootMode == RM_TILE || rootMode == RM_IMIRROR)) {
+ /* make picture size a divisor of the rootW size. round down */
+ i = (dispWIDE + eWIDE-1) / eWIDE; eWIDE = (dispWIDE + i-1) / i;
+@@ -2409,7 +2870,7 @@
+ if (autodither && ncols>0) epicMode = EM_DITH;
+
+ /* if in CM_STDCMAP mode, and *not* in '-wait 0', then autodither */
+- if (colorMapMode == CM_STDCMAP && waitsec != 0) epicMode = EM_DITH;
++ if (colorMapMode == CM_STDCMAP && waitsec != 0.0) epicMode = EM_DITH;
+
+ /* if -smooth or image has been shrunk to fit screen */
+ if (autosmooth || (pWIDE >maxWIDE || pHIGH>maxHIGH)
+@@ -2419,7 +2880,7 @@
+
+ /* 'dithering' makes no sense in 24-bit mode */
+ if (picType == PIC24 && epicMode == EM_DITH) epicMode = EM_RAW;
+-
++
+ SetEpicMode();
+ } /* end of !frompoll */
+
+@@ -2450,7 +2911,7 @@
+ if (useroot) mainW = vrootW;
+ if (eWIDE != cWIDE || eHIGH != cHIGH) epic = (byte *) NULL;
+
+- NewPicGetColors(autonorm, autohisteq);
++ NewPicGetColors(autonorm, autohisteq);
+
+ GenerateEpic(eWIDE, eHIGH); /* want to dither *after* color allocs */
+ CreateXImage();
+@@ -2474,7 +2935,7 @@
+ SetISTR(ISTR_INFO,"%s %s %s", formatStr,
+ (picType==PIC8) ? "8-bit mode." : "24-bit mode.",
+ tmp);
+-
++
+ SetInfoMode(INF_FULL);
+ if (freename) free(fullname);
+
+@@ -2495,20 +2956,24 @@
+ to generate the correct exposes (particularly with 'BitGravity' turned
+ on */
+
+- if (mainW && !useroot) GenExpose(mainW, 0, 0, (u_int) eWIDE, (u_int) eHIGH);
++ /*Brian T. Schellenberger: fix for X 4.2 refresh problem*/
++ if (mainW && !useroot) {
++ XSync(theDisp, False);
++ GenExpose(mainW, 0, 0, (u_int) eWIDE, (u_int) eHIGH);
++ }
+
+ return 1;
+
+-
++
+ FAILED:
+ SetCursors(-1);
+ KillPageFiles(pinfo.pagebname, pinfo.numpages);
+
+- if (fullname && strcmp(fullname,filename)!=0)
++ if (fullname && strcmp(fullname,filename)!=0)
+ unlink(filename); /* kill /tmp file */
+ if (freename) free(fullname);
+
+- if (!fromint && !polling && filenum>=0 && filenum<nList.nstr)
++ if (!fromint && !polling && filenum>=0 && filenum<nList.nstr)
+ deleteFromList(filenum);
+
+ if (polling) sleep(1);
+@@ -2527,6 +2992,9 @@
+ }
+
+
++extern byte ZXheader[128]; /* [JCE] Spectrum screen magic number is
++ defined in xvzx.c */
++
+
+ /********************************/
+ int ReadFileType(fname)
+@@ -2539,76 +3007,118 @@
+
+ FILE *fp;
+ byte magicno[30]; /* first 30 bytes of file */
+- int rv, n;
++ int rv=RFT_UNKNOWN, n;
++#ifdef MACBINARY
++ int macbin_alrchk = False;
++#endif
+
+ if (!fname) return RFT_ERROR; /* shouldn't happen */
+
+ fp = xv_fopen(fname, "r");
+ if (!fp) return RFT_ERROR;
+
+- n = fread(magicno, (size_t) 1, (size_t) 30, fp);
++ if (strlen(fname) > 4 &&
++ strcasecmp(fname+strlen(fname)-5, ".wbmp")==0) rv = RFT_WBMP;
++
++ n = fread(magicno, (size_t) 1, sizeof(magicno), fp);
+ fclose(fp);
+
+- if (n<30) return RFT_UNKNOWN; /* files less than 30 bytes long... */
++ if (n<=0) return RFT_UNKNOWN;
++
++ /* it is just barely possible that a few files could legitimately be as small
++ as 30 bytes (e.g., binary P{B,G,P}M format), so zero out rest of "magic
++ number" buffer and don't quit immediately if we read something small but
++ not empty */
++ if (n<30) memset(magicno+n, 0, sizeof(magicno)-n);
+
+- rv = RFT_UNKNOWN;
++#ifdef MACBINARY
++ macb_file = False;
++ while (1) {
++#endif
+
+- if (strncmp((char *) magicno,"GIF87a", (size_t) 6)==0 ||
+- strncmp((char *) magicno,"GIF89a", (size_t) 6)==0) rv = RFT_GIF;
++#ifdef HAVE_MGCSFX
++ if (is_mgcsfx(fname, magicno, 30) != 0) rv = RFT_MGCSFX;
++ else
++#endif
++ if (strncmp((char *) magicno,"GIF87a", (size_t) 6)==0 ||
++ strncmp((char *) magicno,"GIF89a", (size_t) 6)==0) rv = RFT_GIF;
+
+ else if (strncmp((char *) magicno,"VIEW", (size_t) 4)==0 ||
+- strncmp((char *) magicno,"WEIV", (size_t) 4)==0) rv = RFT_PM;
++ strncmp((char *) magicno,"WEIV", (size_t) 4)==0) rv = RFT_PM;
++
++#ifdef HAVE_PIC2
++ else if (magicno[0]=='P' && magicno[1]=='2' &&
++ magicno[2]=='D' && magicno[3]=='T') rv = RFT_PIC2;
++#endif
+
+- else if (magicno[0] == 'P' && magicno[1]>='1' &&
+- magicno[1]<='6') rv = RFT_PBM;
++ else if (magicno[0] == 'P' && magicno[1]>='1' &&
++ (magicno[1]<='6' || magicno[1]=='8')) rv = RFT_PBM;
+
+ /* note: have to check XPM before XBM, as first 2 chars are the same */
+ else if (strncmp((char *) magicno, "/* XPM */", (size_t) 9)==0) rv = RFT_XPM;
+
+ else if (strncmp((char *) magicno,"#define", (size_t) 7)==0 ||
+- (magicno[0] == '/' && magicno[1] == '*')) rv = RFT_XBM;
++ (magicno[0] == '/' && magicno[1] == '*')) rv = RFT_XBM;
+
+ else if (magicno[0]==0x59 && (magicno[1]&0x7f)==0x26 &&
+- magicno[2]==0x6a && (magicno[3]&0x7f)==0x15) rv = RFT_SUNRAS;
++ magicno[2]==0x6a && (magicno[3]&0x7f)==0x15) rv = RFT_SUNRAS;
+
+- else if (magicno[0] == 'B' && magicno[1] == 'M') rv = RFT_BMP;
++ else if (magicno[0] == 'B' && magicno[1] == 'M') rv = RFT_BMP;
+
+- else if (magicno[0]==0x52 && magicno[1]==0xcc) rv = RFT_UTAHRLE;
++ else if (magicno[0]==0x52 && magicno[1]==0xcc) rv = RFT_UTAHRLE;
+
+ else if ((magicno[0]==0x01 && magicno[1]==0xda) ||
+- (magicno[0]==0xda && magicno[1]==0x01)) rv = RFT_IRIS;
++ (magicno[0]==0xda && magicno[1]==0x01)) rv = RFT_IRIS;
+
+- else if (magicno[0]==0x1f && magicno[1]==0x9d) rv = RFT_COMPRESS;
++ else if (magicno[0]==0x1f && magicno[1]==0x9d) rv = RFT_COMPRESS;
+
+ #ifdef GUNZIP
+- else if (magicno[0]==0x1f && magicno[1]==0x8b) rv = RFT_COMPRESS;
++ else if (magicno[0]==0x1f && magicno[1]==0x8b) rv = RFT_COMPRESS;
++#endif
++
++#ifdef BUNZIP2
++ else if (magicno[0]==0x42 && magicno[1]==0x5a) rv = RFT_BZIP2;
+ #endif
+
+- else if (magicno[0]==0x0a && magicno[1] <= 5) rv = RFT_PCX;
++ else if (magicno[0]==0x0a && magicno[1] <= 5) rv = RFT_PCX;
+
+- else if (strncmp((char *) magicno, "FORM", (size_t) 4)==0 &&
+- strncmp((char *) magicno+8, "ILBM", (size_t) 4)==0) rv = RFT_IFF;
++ else if (strncmp((char *) magicno, "FORM", (size_t) 4)==0 &&
++ strncmp((char *) magicno+8, "ILBM", (size_t) 4)==0) rv = RFT_IFF;
+
+ else if (magicno[0]==0 && magicno[1]==0 &&
+ magicno[2]==2 && magicno[3]==0 &&
+ magicno[4]==0 && magicno[5]==0 &&
+- magicno[6]==0 && magicno[7]==0) rv = RFT_TARGA;
++ magicno[6]==0 && magicno[7]==0) rv = RFT_TARGA;
+
+ else if (magicno[4]==0x00 && magicno[5]==0x00 &&
+- magicno[6]==0x00 && magicno[7]==0x07) rv = RFT_XWD;
++ magicno[6]==0x00 && magicno[7]==0x07) rv = RFT_XWD;
+
+- else if (strncmp((char *) magicno,"SIMPLE ", (size_t) 8)==0 &&
+- magicno[29] == 'T') rv = RFT_FITS;
+-
++ else if (strncmp((char *) magicno,"SIMPLE ", (size_t) 8)==0 &&
++ magicno[29] == 'T') rv = RFT_FITS;
++
++ /* [JCE] Spectrum screen */
++ else if (memcmp(magicno, ZXheader, (size_t) 18)==0) rv = RFT_ZX;
+
+ #ifdef HAVE_JPEG
+- else if (magicno[0]==0xff && magicno[1]==0xd8 &&
+- magicno[2]==0xff) rv = RFT_JFIF;
++ else if (magicno[0]==0xff && magicno[1]==0xd8 &&
++ magicno[2]==0xff) rv = RFT_JFIF;
++#endif
++
++#ifdef HAVE_JP2K
++ else if (magicno[0]==0xff && magicno[1]==0x4f &&
++ magicno[2]==0xff && magicno[3]==0x51) rv = RFT_JPC;
++
++ else if (memcmp(magicno, jp2k_magic, sizeof(jp2k_magic))==0) rv = RFT_JP2;
+ #endif
+
+ #ifdef HAVE_TIFF
+ else if ((magicno[0]=='M' && magicno[1]=='M') ||
+- (magicno[0]=='I' && magicno[1]=='I')) rv = RFT_TIFF;
++ (magicno[0]=='I' && magicno[1]=='I')) rv = RFT_TIFF;
++#endif
++
++#ifdef HAVE_PNG
++ else if (magicno[0]==0x89 && magicno[1]=='P' &&
++ magicno[2]=='N' && magicno[3]=='G') rv = RFT_PNG;
+ #endif
+
+ #ifdef HAVE_PDS
+@@ -2620,11 +3130,67 @@
+ rv = RFT_PDSVICAR;
+ #endif
+
+-#ifdef GS_PATH
++#ifdef GS_PATH /* Ghostscript handles both PostScript and PDF */
+ else if (strncmp((char *) magicno, "%!", (size_t) 2)==0 ||
+- strncmp((char *) magicno, "\004%!", (size_t) 3)==0) rv = RFT_PS;
++ strncmp((char *) magicno, "\004%!", (size_t) 3)==0 ||
++ strncmp((char *) magicno, "%PDF", (size_t) 4)==0) rv = RFT_PS;
++#endif
++
++#ifdef HAVE_G3
++ else if ((magicno[0]== 1 && magicno[1]== 1 &&
++ magicno[2]== 77 && magicno[3]==154 &&
++ magicno[4]==128 && magicno[5]== 0 &&
++ magicno[6]== 1 && magicno[7]== 77)
++ || highresfax || fax) /* kludge! */ rv = RFT_G3;
++#endif
++
++#ifdef HAVE_MAG
++ else if (strncmp((char *) magicno,"MAKI02 ", (size_t) 8)==0) rv = RFT_MAG;
++#endif
++
++#ifdef HAVE_MAKI
++ else if (strncmp((char *) magicno,"MAKI01A ", (size_t) 8)==0 ||
++ strncmp((char *) magicno,"MAKI01B ", (size_t) 8)==0) rv = RFT_MAKI;
++#endif
++
++#ifdef HAVE_PIC
++ else if (magicno[0]=='P' && magicno[1]=='I'&&magicno[2]=='C') rv = RFT_PIC;
++#endif
++
++#ifdef HAVE_PI
++ else if (magicno[0]=='P' && magicno[1]=='i') rv = RFT_PI;
++#endif
++
++#ifdef HAVE_HIPS
++ else if (strstr((char *) magicno, "./digest")) rv = RFT_HIPS;
++#endif
++
++#ifdef HAVE_PCD
++ else if (magicno[0]==0xff && magicno[1]==0xff &&
++ magicno[2]==0xff && magicno[3]==0xff) rv = RFT_PCD;
+ #endif
+
++#ifdef MACBINARY
++ /* Now we try to handle MacBinary files, but the method is VERY dirty... */
++ if (macbin_alrchk == True) {
++ macb_file = True;
++ break;
++ }
++
++ if (rv != RFT_UNKNOWN)
++ break;
++
++ /* Skip MACBSIZE and recheck */
++ macbin_alrchk = True;
++ fp = xv_fopen(fname, "r");
++ if (!fp) return RFT_ERROR;
++ fseek(fp, MACBSIZE, SEEK_SET);
++ n = fread(magicno, (size_t) 1, (size_t) 30, fp);
++ fclose(fp);
++
++ if (n<30) return RFT_UNKNOWN; /* files less than 30 bytes long... */
++ }
++#endif
+ return rv;
+ }
+
+@@ -2637,9 +3203,10 @@
+ PICINFO *pinfo;
+ {
+ /* if quick is set, we're being called to generate icons, or something
+- like that. We should load the image as quickly as possible. Currently,
+- this only affects the LoadPS routine, which, if quick is set, only
+- generates the page file for the first page of the document */
++ like that. We should load the image as quickly as possible. Previously,
++ this affected only the LoadPS routine, which, if quick is set, only
++ generates the page file for the first page of the document. Now it
++ also affects PCD, which loads only a thumbnail. */
+
+ int rv = 0;
+
+@@ -2650,7 +3217,11 @@
+ switch (ftype) {
+ case RFT_GIF: rv = LoadGIF (fname, pinfo); break;
+ case RFT_PM: rv = LoadPM (fname, pinfo); break;
++#ifdef HAVE_MGCSFX
++ case RFT_PBM: rv = LoadPBM (fname, pinfo, -1); break;
++#else
+ case RFT_PBM: rv = LoadPBM (fname, pinfo); break;
++#endif
+ case RFT_XBM: rv = LoadXBM (fname, pinfo); break;
+ case RFT_SUNRAS: rv = LoadSunRas(fname, pinfo); break;
+ case RFT_BMP: rv = LoadBMP (fname, pinfo); break;
+@@ -2662,21 +3233,69 @@
+ case RFT_XPM: rv = LoadXPM (fname, pinfo); break;
+ case RFT_XWD: rv = LoadXWD (fname, pinfo); break;
+ case RFT_FITS: rv = LoadFITS (fname, pinfo, quick); break;
++ case RFT_ZX: rv = LoadZX (fname, pinfo); break; /* [JCE] */
++ case RFT_WBMP: rv = LoadWBMP (fname, pinfo); break;
++
++#ifdef HAVE_PCD
++ /* if quick is switched on, use the smallest image size; don't ask the user */
++ case RFT_PCD: rv = LoadPCD (fname, pinfo, quick ? 0 : PcdSize); break;
++#endif
+
+ #ifdef HAVE_JPEG
+- case RFT_JFIF: rv = LoadJFIF (fname, pinfo, quick); break;
++ case RFT_JFIF: rv = LoadJFIF (fname, pinfo, quick); break;
++#endif
++
++#ifdef HAVE_JP2K
++ case RFT_JPC: rv = LoadJPC (fname, pinfo, quick); break;
++ case RFT_JP2: rv = LoadJP2 (fname, pinfo, quick); break;
+ #endif
+
+ #ifdef HAVE_TIFF
+- case RFT_TIFF: rv = LoadTIFF (fname, pinfo); break;
++ case RFT_TIFF: rv = LoadTIFF (fname, pinfo, quick); break;
++#endif
++
++#ifdef HAVE_PNG
++ case RFT_PNG: rv = LoadPNG (fname, pinfo); break;
+ #endif
+
+ #ifdef HAVE_PDS
+- case RFT_PDSVICAR: rv = LoadPDS (fname, pinfo); break;
++ case RFT_PDSVICAR: rv = LoadPDS (fname, pinfo); break;
++#endif
++
++#ifdef HAVE_G3
++ case RFT_G3: rv = LoadG3 (fname, pinfo); break;
+ #endif
+
+ #ifdef GS_PATH
+- case RFT_PS: rv = LoadPS (fname, pinfo, quick); break;
++ case RFT_PS: rv = LoadPS (fname, pinfo, quick); break;
++#endif
++
++#ifdef HAVE_MAG
++ case RFT_MAG: rv = LoadMAG (fname, pinfo); break;
++#endif
++
++#ifdef HAVE_MAKI
++ case RFT_MAKI: rv = LoadMAKI (fname, pinfo); break;
++#endif
++
++#ifdef HAVE_PIC
++ case RFT_PIC: rv = LoadPIC (fname, pinfo); break;
++#endif
++
++#ifdef HAVE_PI
++ case RFT_PI: rv = LoadPi (fname, pinfo); break;
++#endif
++
++#ifdef HAVE_PIC2
++ case RFT_PIC2: rv = LoadPIC2 (fname, pinfo, quick); break;
++#endif
++
++#ifdef HAVE_HIPS
++ case RFT_HIPS: rv = LoadHIPS (fname, pinfo); break;
++#endif
++
++#ifdef HAVE_MGCSFX
++ case RFT_MGCSFX: rv = LoadMGCSFX (fname, pinfo); break;
+ #endif
+
+ }
+@@ -2685,13 +3304,17 @@
+
+
+ /********************************/
+-int UncompressFile(name, uncompname)
++int UncompressFile(name, uncompname, filetype)
+ char *name, *uncompname;
++ int filetype;
+ {
+ /* returns '1' on success, with name of uncompressed file in uncompname
+ returns '0' on failure */
+
+ char namez[128], *fname, buf[512];
++#ifndef USE_MKSTEMP
++ int tmpfd;
++#endif
+
+ fname = name;
+ namez[0] = '\0';
+@@ -2703,7 +3326,7 @@
+ to what it was. necessary because uncompress doesn't handle files
+ that don't end with '.Z' */
+
+- if (strlen(name) >= (size_t) 2 &&
++ if (strlen(name) >= (size_t) 2 &&
+ strcmp(name + strlen(name)-2,".Z")!=0 &&
+ strcmp(name + strlen(name)-2,".z")!=0) {
+ strcpy(namez, name);
+@@ -2721,34 +3344,50 @@
+ #endif /* not VMS and not GUNZIP */
+
+
+-
+ #ifndef VMS
+ sprintf(uncompname, "%s/xvuXXXXXX", tmpdir);
+- mktemp(uncompname);
+- sprintf(buf,"%s -c %s >%s", UNCOMPRESS, fname, uncompname);
+-#else /* it IS VMS */
++#else
+ strcpy(uncompname, "[]xvuXXXXXX");
++#endif
++
++#ifdef USE_MKSTEMP
++ close(mkstemp(uncompname));
++#else
+ mktemp(uncompname);
+-# ifdef GUNZIP
+- sprintf(buf,"%s %s %s", UNCOMPRESS, fname, uncompname);
+-# else
+- sprintf(buf,"%s %s", UNCOMPRESS, fname);
+-# endif
++ tmpfd = open(uncompname,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
++ if (tmpfd < 0) FatalError("UncompressFile(): can't create temporary file");
++ close(tmpfd);
++#endif
++
++#ifndef VMS
++ if (filetype == RFT_COMPRESS)
++ sprintf(buf,"%s -c '%s' > '%s'", UNCOMPRESS, fname, uncompname);
++# ifdef BUNZIP2
++ else if (filetype == RFT_BZIP2)
++ sprintf(buf,"%s -c '%s' > '%s'", BUNZIP2, fname, uncompname);
++# endif
++#else /* it IS VMS */
++# ifdef GUNZIP
++ sprintf(buf,"%s '%s' '%s'", UNCOMPRESS, fname, uncompname);
++# else
++ sprintf(buf,"%s '%s'", UNCOMPRESS, fname);
++# endif
+ #endif
+
+ SetISTR(ISTR_INFO, "Uncompressing '%s'...", BaseName(fname));
+ #ifndef VMS
+- if (system(buf)) {
++ if (system(buf))
+ #else
+- if (!system(buf)) {
++ if (!system(buf))
+ #endif
++ {
+ SetISTR(ISTR_INFO, "Unable to uncompress '%s'.", BaseName(fname));
+ Warning();
+ return 0;
+ }
+
+-#ifndef VMS
+- /* if we renamed the file to end with a .Z for the sake of 'uncompress',
++#ifndef VMS
++ /* if we renamed the file to end with a .Z for the sake of 'uncompress',
+ rename it back to what it once was... */
+
+ if (strlen(namez)) {
+@@ -2769,9 +3408,65 @@
+ }
+ */
+ #endif /* not VMS */
+-
++
++ return 1;
++}
++
++
++#ifdef MACBINARY
++/********************************/
++int RemoveMacbinary(src, dst)
++ char *src, *dst;
++{
++ char buffer[8192]; /* XXX */
++ int n, eof;
++#ifndef USE_MKSTEMP
++ int tmpfd;
++#endif
++ FILE *sfp, *dfp;
++
++ sprintf(dst, "%s/xvmXXXXXX", tmpdir);
++#ifdef USE_MKSTEMP
++ close(mkstemp(dst));
++#else
++ mktemp(dst);
++ tmpfd = open(dst,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
++ if (tmpfd < 0) FatalError("RemoveMacbinary(): can't create temporary file");
++#endif
++
++ SetISTR(ISTR_INFO, "Removing MacBinary...");
++
++ sfp = xv_fopen(src, "r");
++#ifdef USE_MKSTEMP
++ dfp = xv_fopen(dst, "w");
++#else
++ dfp = fdopen(tmpfd, "w");
++#endif
++ if (!sfp || !dfp) {
++ SetISTR(ISTR_INFO, "Unable to remove a InfoFile header form '%s'.", src);
++ Warning();
++ return 0;
++ }
++ fseek(sfp, MACBSIZE, SEEK_SET);
++ while ((n = fread(buffer, 1, sizeof(buffer), sfp)) == 8192) /* XXX */
++ fwrite(buffer, 1, n, dfp);
++ if ((eof = feof(sfp)))
++ fwrite(buffer, 1, n, dfp);
++ fclose(sfp);
++ fflush(dfp);
++ fclose(dfp);
++#ifndef USE_MKSTEMP
++ close(tmpfd);
++#endif
++ if (!eof) {
++ SetISTR(ISTR_INFO, "Unable to remove a InfoFile header form '%s'.", src);
++ Warning();
++ return 0;
++ }
++
+ return 1;
+ }
++#endif
+
+
+ /********************************/
+@@ -2789,6 +3484,10 @@
+ sprintf(tmp, "%s%d", bname, i);
+ unlink(tmp);
+ }
++
++ /* GRR 20070506: basename file doesn't go away, at least on Linux and for
++ * GIF and TIFF images, so explicitly unlink() it, too */
++ unlink(bname);
+ }
+
+
+@@ -2798,11 +3497,11 @@
+ {
+ int i;
+
+- /* some stuff that necessary whenever running an algorithm or
++ /* some stuff that necessary whenever running an algorithm or
+ installing a new 'pic' (or switching 824 modes) */
+
+ numcols = 0; /* gets set by SortColormap: set to 0 for PIC24 images */
+- for (i=0; i<256; i++) cols[i]=infobg;
++ for (i=0; i<256; i++) cols[i]=infobg;
+
+ if (picType == PIC8) {
+ byte trans[256];
+@@ -2811,18 +3510,18 @@
+ }
+
+ if (picType == PIC8) {
+- /* see if image is a b/w bitmap.
++ /* see if image is a b/w bitmap.
+ If so, use '-black' and '-white' colors */
+ if (numcols == 2) {
+ if ((rMap[0] == gMap[0] && rMap[0] == bMap[0] && rMap[0] == 255) &&
+ (rMap[1] == gMap[1] && rMap[1] == bMap[1] && rMap[1] == 0)) {
+ /* 0=wht, 1=blk */
+- rMap[0] = (whtRGB>>16)&0xff;
+- gMap[0] = (whtRGB>>8)&0xff;
++ rMap[0] = (whtRGB>>16)&0xff;
++ gMap[0] = (whtRGB>>8)&0xff;
+ bMap[0] = whtRGB&0xff;
+
+ rMap[1] = (blkRGB>>16)&0xff;
+- gMap[1] = (blkRGB>>8)&0xff;
++ gMap[1] = (blkRGB>>8)&0xff;
+ bMap[1] = blkRGB&0xff;
+ }
+
+@@ -2852,10 +3551,10 @@
+ }
+
+ /* save the desired RGB colormap (before dicking with it) */
+- for (i=0; i<numcols; i++) {
+- rorg[i] = rcmap[i] = rMap[i];
+- gorg[i] = gcmap[i] = gMap[i];
+- borg[i] = bcmap[i] = bMap[i];
++ for (i=0; i<numcols; i++) {
++ rorg[i] = rcmap[i] = rMap[i];
++ gorg[i] = gcmap[i] = gMap[i];
++ borg[i] = bcmap[i] = bMap[i];
+ }
+ }
+
+@@ -2888,19 +3587,29 @@
+ {
+ /* cmd is something like: "! bggen 100 0 0"
+ *
+- * runs command (with "> /tmp/xv******" appended).
++ * runs command (with "> /tmp/xv******" appended).
+ * returns "/tmp/xv******" in fname
+ * returns '0' if everything's cool, '1' on error
+ */
+
+ char fullcmd[512], tmpname[64], str[512];
+ int i;
++#ifndef USE_MKSTEMP
++ int tmpfd;
++#endif
+
+ if (!cmd || (strlen(cmd) < (size_t) 2)) return 1;
+
+ sprintf(tmpname,"%s/xvXXXXXX", tmpdir);
++#ifdef USE_MKSTEMP
++ close(mkstemp(tmpname));
++#else
+ mktemp(tmpname);
+- if (tmpname[0] == '\0') { /* mktemp() blew up */
++ tmpfd = open(tmpname,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
++ if (tmpfd < 0) FatalError("openPic(): can't create temporary file");
++ close(tmpfd);
++#endif
++ if (tmpname[0] == '\0') { /* mktemp() or mkstemp() blew up */
+ sprintf(str,"Unable to create temporary filename.");
+ ErrPopUp(str, "\nHow unlikely!");
+ return 1;
+@@ -2939,26 +3648,21 @@
+ {
+ int i;
+
++ waitsec = (numnames <= 1)? waitsec_final : waitsec_nonfinal;
++
+ if (!numnames) { openPic(DFLTPIC); return; }
+
+ i = 0;
+- if (!randomShow) {
+- while (numnames>0) {
+- if (openPic(0)) return; /* success */
+- else {
+- if (polling && !i)
+- fprintf(stderr,"%s: POLLING: Waiting for file '%s' \n\tto %s\n",
+- cmd, namelist[0], "be created, or whatever...");
+- i = 1;
+- }
++ while (numnames>0) {
++ if (openPic(0)) return; /* success */
++ else {
++ if (polling && !i)
++ fprintf(stderr,"%s: POLLING: Waiting for file '%s' \n\tto %s\n",
++ cmd, namelist[0], "be created, or whatever...");
++ i = 1;
+ }
+ }
+
+- else { /* pick random first picture */
+- for (i=findRandomPic(); i>=0; i=findRandomPic())
+- if (openPic(i)) return; /* success */
+- }
+-
+ if (numnames>1) FatalError("couldn't open any pictures");
+ else Quit(-1);
+ }
+@@ -2970,11 +3674,11 @@
+ int i;
+
+ if (curname>=0) i = curname+1;
+- else if (nList.selected >= 0 && nList.selected < numnames)
++ else if (nList.selected >= 0 && nList.selected < numnames)
+ i = nList.selected;
+ else i = 0;
+
+-
++
+ while (i<numnames && !openPic(i));
+ if (i<numnames) return; /* success */
+
+@@ -2987,19 +3691,15 @@
+ {
+ int i;
+
+- if (!randomShow) {
+- if (curname>=0) i = curname+1;
+- else if (nList.selected >= 0 && nList.selected < numnames)
+- i = nList.selected;
+- else i = 0;
++ if (curname>=0) i = curname+1;
++ else if (nList.selected >= 0 && nList.selected < numnames)
++ i = nList.selected;
++ else i = 0;
+
+- while (i<numnames && !openPic(i));
+- if (i<numnames) return; /* success */
+- }
+- else {
+- for (i=findRandomPic(); i>=0; i=findRandomPic())
+- if (openPic(i)) return;
+- }
++ waitsec = (i == numnames-1)? waitsec_final : waitsec_nonfinal;
++
++ while (i<numnames && !openPic(i));
++ if (i<numnames) return; /* success */
+
+ Quit(0);
+ }
+@@ -3012,25 +3712,21 @@
+
+ j = loop = 0;
+ while (1) {
+- if (!randomShow) {
+
+- if (curname>=0) i = curname+1;
+- else if (nList.selected >= 0 && nList.selected < numnames)
+- i = nList.selected;
+- else i = 0;
++ if (curname>=0) i = curname+1;
++ else if (nList.selected >= 0 && nList.selected < numnames)
++ i = nList.selected;
++ else i = 0;
++
++ if (loop) { i = 0; loop = 0; }
+
+- if (loop) { i = 0; loop = 0; }
++ waitsec = (i == numnames-1)? waitsec_final : waitsec_nonfinal;
+
+- while (i<numnames && !openPic(i));
+- if (i<numnames) return;
+- }
+- else {
+- for (i=findRandomPic(); i>=0; i=findRandomPic())
+- if (openPic(i)) return;
+- }
++ while (i<numnames && !openPic(i));
++ if (i<numnames) return;
+
+ loop = 1; /* back to top of list */
+- if (j) break; /* we're in a 'failure loop' */
++ if (j) break; /* we're in a 'failure loop' */
+ j++;
+ }
+
+@@ -3044,7 +3740,7 @@
+ int i;
+
+ if (curname>0) i = curname-1;
+- else if (nList.selected>0 && nList.selected < numnames)
++ else if (nList.selected>0 && nList.selected < numnames)
+ i = nList.selected - 1;
+ else i = numnames-1;
+
+@@ -3063,64 +3759,24 @@
+ openPic(LOADPIC);
+ }
+
+-
+-
+-
+-/****************/
+-static int findRandomPic()
+-/****************/
+-{
+- static byte *loadList;
+- static int left_to_load, listLen = -1;
+- int k;
+- time_t t;
+-
+- /* picks a random name out of the list, and returns it's index. If there
+- are no more names to pick, it returns '-1' and resets itself */
+-
+- if (!loadList || numnames!=listLen) {
+- if (loadList) free(loadList);
+- else {
+- time(&t);
+- srandom((unsigned int) t); /* seed the random */
+- }
+-
+- left_to_load = listLen = numnames;
+- loadList = (byte *) malloc((size_t) listLen);
+- for (k=0; k<listLen; k++) loadList[k] = 0;
+- }
+-
+- if (left_to_load <= 0) { /* we've loaded all the pics */
+- for (k=0; k<listLen; k++) loadList[k] = 0; /* clear flags */
+- left_to_load = listLen;
+- return -1; /* 'done' return */
+- }
+-
+- for (k=abs(random()) % listLen; loadList[k]; k = (k+1) % listLen);
+-
+- left_to_load--;
+- loadList[k] = TRUE;
+-
+- return k;
+-}
+-
+ /****************/
+ static void mainLoop()
+ {
+- /* search forward until we manage to display a picture,
+- then call EventLoop. EventLoop will eventually return
++ /* search forward until we manage to display a picture,
++ then call EventLoop. EventLoop will eventually return
+ NEXTPIC, PREVPIC, NEXTQUIT, QUIT, or, if >= 0, a filenum to GOTO */
+
+ int i;
+
+- /* if curname<0 (there is no 'current' file), 'Next' means view the
++ /* if curname<0 (there is no 'current' file), 'Next' means view the
+ selected file (or the 0th file, if no selection either), and 'Prev' means
+ view the one right before the selected file */
+
+- openFirstPic(); /* find first displayable picture, exit if none */
++ /* find first displayable picture, exit if none */
++ if (!startGrab) openFirstPic();
+
+ if (!pic) { /* must've opened a text file... display dflt pic */
+- openPic(DFLTPIC);
++ if (!startGrab) openPic(DFLTPIC);
+ if (mainW && !useroot) RaiseTextWindows();
+ }
+
+@@ -3133,7 +3789,7 @@
+ }
+
+ else if (i==PREVPIC) {
+- if (curname>0 || (curname<0 && nList.selected>0))
++ if (curname>0 || (curname<0 && nList.selected>0))
+ openPrevPic();
+ }
+
+@@ -3151,7 +3807,7 @@
+
+ else if (i==THISNEXT) { /* open current sel, 'next' until success */
+ int j;
+- j = nList.selected;
++ j = nList.selected;
+ if (j<0) j = 0;
+ while (j<numnames && !openPic(j));
+ if (!pic) openPic(DFLTPIC);
+@@ -3169,7 +3825,7 @@
+
+ /***********************************/
+ static void createMainWindow(geom, name)
+- char *geom, *name;
++ const char *geom, *name;
+ {
+ XSetWindowAttributes xswa;
+ unsigned long xswamask;
+@@ -3195,22 +3851,35 @@
+ i = XParseGeometry(geom,&x,&y,&w,&h);
+
+ hints.flags = 0;
+- if ((i&XValue || i&YValue)) hints.flags = USPosition;
++ if (i&XValue || i&YValue)
++ hints.flags |= USPosition;
+
+- if (i&XValue && i&XNegative) x = vrWIDE - eWIDE - abs(x);
+- if (i&YValue && i&YNegative) y = vrHIGH - eHIGH - abs(y);
++ hints.win_gravity = NorthWestGravity;
++ if (i&XValue && i&XNegative) {
++ hints.win_gravity = NorthEastGravity;
++ x = vrWIDE - (eWIDE + 2 * bwidth) - x;
++ }
++ if (i&YValue && i&YNegative) {
++ hints.win_gravity = (hints.win_gravity == NorthWestGravity) ?
++ SouthWestGravity : SouthEastGravity;
++ y = vrHIGH - (eHIGH + 2 * bwidth) - y;
++ }
++ hints.flags |= PWinGravity;
+
+- if (x+eWIDE > vrWIDE) x = vrWIDE - eWIDE; /* keep on screen */
++ /* keep on screen */
++ if (x+eWIDE > vrWIDE) x = vrWIDE - eWIDE;
+ if (y+eHIGH > vrHIGH) y = vrHIGH - eHIGH;
+-
++ if (x < 0) x = 0;
++ if (y < 0) y = 0;
+
+ #define VROOT_TRANS
+ #ifdef VROOT_TRANS
+- if (vrootW != rootW) { /* virtual window manager running */
++ if (vrootW != rootW && !(hints.flags & USPosition)) { /* virtual window manager running */
+ int x1,y1;
+ Window child;
++
+ XTranslateCoordinates(theDisp, rootW, vrootW, x, y, &x1, &y1, &child);
+- if (DEBUG) fprintf(stderr,"translate: %d,%d -> %d,%d\n",x,y,x1,y1);
++ if (DEBUG) fprintf(stderr,"translate: %d,%d -> %d,%d\n", x, y, x1, y1);
+ x = x1; y = y1;
+ }
+ #endif
+@@ -3218,13 +3887,13 @@
+ hints.x = x; hints.y = y;
+ hints.width = eWIDE; hints.height = eHIGH;
+ hints.max_width = maxWIDE; hints.max_height = maxHIGH;
+- hints.flags |= USSize | PMaxSize;
+-
+- xswa.bit_gravity = StaticGravity;
++ hints.flags |= PSize | PMaxSize;
++
++ xswa.bit_gravity = StaticGravity;
+ xswa.background_pixel = bg;
+ xswa.border_pixel = fg;
+ xswa.colormap = theCmap;
+-
++
+ xswa.backing_store = WhenMapped;
+
+ /* NOTE: I've turned 'backing-store' off on the image window, as some
+@@ -3233,9 +3902,9 @@
+ improvement anyway (for the image window), unless you're on a slow
+ network. In any event, I'm not *turning off* backing store, I'm
+ just not explicitly turning it *on*. If your X server is set up
+- that windows, by default, have backing-store turned on, then the
++ that windows, by default, have backing-store turned on, then the
+ image window will, too */
+-
++
+ xswamask = CWBackPixel | CWBorderPixel | CWColormap /* | CWBackingStore */;
+ if (!clearonload) xswamask |= CWBitGravity;
+
+@@ -3244,18 +3913,18 @@
+ xwa.width = eWIDE; xwa.height = eHIGH;
+
+ /* try to keep the damned thing on-screen, if possible */
+- if (xwa.x + xwa.width > dispWIDE) xwa.x = dispWIDE - xwa.width;
+- if (xwa.y + xwa.height > dispHIGH) xwa.y = dispHIGH - xwa.height;
++ if (xwa.x + xwa.width > vrWIDE) xwa.x = vrWIDE - xwa.width;
++ if (xwa.y + xwa.height > vrHIGH) xwa.y = vrHIGH - xwa.height;
+ if (xwa.x < 0) xwa.x = 0;
+ if (xwa.y < 0) xwa.y = 0;
+
+ SetWindowPos(&xwa);
+ hints.flags = PSize | PMaxSize;
+- }
++ }
+
+ else {
+ mainW = XCreateWindow(theDisp,rootW,x,y, (u_int) eWIDE, (u_int) eHIGH,
+- (u_int) bwidth, (int) dispDEEP, InputOutput,
++ (u_int) bwidth, (int) dispDEEP, InputOutput,
+ theVisual, xswamask, &xswa);
+ if (!mainW) FatalError("can't create window!");
+
+@@ -3267,15 +3936,11 @@
+ }
+ }
+
+-
+- XSetStandardProperties(theDisp,mainW,"","",None,NULL,0,&hints);
+- setWinIconNames(name);
+-
+ xwmh.input = True;
+ xwmh.flags = InputHint;
+
+- xwmh.icon_pixmap = iconPix;
+- xwmh.icon_mask = iconmask;
++ xwmh.icon_pixmap = iconPix;
++ xwmh.icon_mask = iconmask;
+ xwmh.flags |= (IconPixmapHint | IconMaskHint);
+
+
+@@ -3295,14 +3960,15 @@
+ }
+ }
+ }
+- XSetWMHints(theDisp, mainW, &xwmh);
+
+ classh.res_name = "xv";
+ classh.res_class = "XVroot";
+- XSetClassHint(theDisp, mainW, &classh);
+
++ XmbSetWMProperties(theDisp, mainW, NULL, NULL, NULL, 0, &hints, &xwmh,
++ &classh);
++ setWinIconNames(name);
+
+- if (nodecor) { /* turn of image window decorations (in MWM) */
++ if (nodecor) { /* turn of image window decorations (in MWM) */
+ Atom mwm_wm_hints;
+ struct s_mwmhints {
+ long flags;
+@@ -3311,7 +3977,7 @@
+ u_long input_mode;
+ long status;
+ } mwmhints;
+-
++
+ mwm_wm_hints = XInternAtom(theDisp, "_MOTIF_WM_HINTS", False);
+ if (mwm_wm_hints != None) {
+ xvbzero((char *) &mwmhints, sizeof(mwmhints));
+@@ -3319,20 +3985,20 @@
+ mwmhints.decorations = 4;
+
+ XChangeProperty(theDisp, mainW, mwm_wm_hints, mwm_wm_hints, 32,
+- PropModeReplace, (byte *) &mwmhints,
+- (int) (sizeof(mwmhints))/4);
++ PropModeReplace, (byte *) &mwmhints,
++ (int) (sizeof(mwmhints))/4);
+ XSync(theDisp, False);
+ }
+ }
+
+-
++
+ firstTime = 0;
+ }
+
+
+ /***********************************/
+ static void setWinIconNames(name)
+- char *name;
++ const char *name;
+ {
+ char winname[256], iconname[256];
+
+@@ -3362,12 +4028,12 @@
+
+ /***********************************/
+ void FixAspect(grow,w,h)
+-int grow;
+-int *w, *h;
++ int grow;
++ int *w, *h;
+ {
+ /* computes new values of eWIDE and eHIGH which will have aspect ratio
+- 'normaspect'. If 'grow' it will preserve aspect by enlarging,
+- otherwise, it will shrink to preserve aspect ratio.
++ 'normaspect'. If 'grow' it will preserve aspect by enlarging,
++ otherwise, it will shrink to preserve aspect ratio.
+ Returns these values in 'w' and 'h' */
+
+ float xr,yr,curaspect,a,exp;
+@@ -3380,14 +4046,14 @@
+ curaspect = xr / yr;
+
+ /* if too narrow & shrink, shrink height. too wide and grow, grow height */
+- if ((curaspect < normaspect && !grow) ||
++ if ((curaspect < normaspect && !grow) ||
+ (curaspect > normaspect && grow)) { /* modify height */
+ exp = curaspect / normaspect;
+ *h = (int) (eHIGH * exp + .5);
+ }
+
+ /* if too narrow & grow, grow width. too wide and shrink, shrink width */
+- if ((curaspect < normaspect && grow) ||
++ if ((curaspect < normaspect && grow) ||
+ (curaspect > normaspect && !grow)) { /* modify width */
+ exp = normaspect / curaspect;
+ *w = (int) (eWIDE * exp + .5);
+@@ -3423,22 +4089,22 @@
+ suffix = namelist[0];
+ prelen = 0; /* length of prefix to be removed */
+ n = i = 0; /* shut up pesky compiler warnings */
+-
++
+ done = 0;
+ while (!done) {
+ suffix = (char *) index(suffix,'/'); /* find next '/' in file name */
+ if (!suffix) break;
+-
++
+ suffix++; /* go past it */
+ n = suffix - namelist[0];
+ for (i=1; i<numnames; i++) {
+ if (strncmp(namelist[0], namelist[i], (size_t) n)!=0) { done=1; break; }
+ }
+-
++
+ if (!done) prelen = n;
+ }
+-
+- for (i=0; i<numnames; i++)
++
++ for (i=0; i<numnames; i++)
+ dispnames[i] = namelist[i] + prelen;
+ }
+
+@@ -3447,20 +4113,20 @@
+ static void fixDispNames()
+ {
+ /* fix dispnames array so that names don't go off right edge */
+-
++
+ int i,j;
+ char *tmp;
+-
++
+ for (i=j=0; i<numnames; i++) {
+ char *dname;
+-
++
+ dname = dispnames[i];
+ if (StringWidth(dname) > (nList.w-10-16)) { /* have to trunc. */
+ tmp = dname;
+ while (1) {
+ tmp = (char *) index(tmp,'/'); /* find next '/' in filename */
+ if (!tmp) { tmp = dname; break; }
+-
++
+ tmp++; /* move to char following the '/' */
+ if (StringWidth(tmp) <= (nList.w-10-16)) { /* is cool now */
+ j++; break;
+@@ -3484,9 +4150,9 @@
+
+ name = GetDirFName();
+ GetDirPath(cwd);
+-
++
+ AddFNameToCtrlList(cwd, name);
+-
++
+ if (select) {
+ nList.selected = numnames-1;
+ curname = numnames - 1;
+@@ -3498,35 +4164,35 @@
+
+ /***********************************/
+ void AddFNameToCtrlList(fpath,fname)
+- char *fpath, *fname;
++ const char *fpath, *fname;
+ {
+ /* stick given path/name into 'namelist'. Doesn't redraw list */
+-
+- char *fullname, *dname;
++
++ char *fullname;
+ char cwd[MAXPATHLEN], globnm[MAXPATHLEN+100];
+ int i;
+-
++
+ if (!fpath) fpath = ""; /* bulletproofing... */
+- if (!fname) fname = "";
+-
++ if (!fname) fname = "";
++
+ if (numnames == MAXNAMES) return; /* full up */
+-
++
+ /* handle globbing */
+ if (fname[0] == '~') {
+ strcpy(globnm, fname);
+ Globify(globnm);
+ fname = globnm;
+ }
+-
++
+ if (fname[0] != '/') { /* prepend path */
+ strcpy(cwd, fpath); /* copy it to a modifiable place */
+-
++
+ /* make sure fpath has a trailing '/' char */
+ if (strlen(cwd)==0 || cwd[strlen(cwd)-1]!='/') strcat(cwd, "/");
+-
++
+ fullname = (char *) malloc(strlen(cwd) + strlen(fname) + 2);
+ if (!fullname) FatalError("couldn't alloc name in AddFNameToCtrlList()\n");
+-
++
+ sprintf(fullname, "%s%s", cwd, fname);
+ }
+ else { /* copy name to fullname */
+@@ -3534,15 +4200,15 @@
+ if (!fullname) FatalError("couldn't alloc name in AddFNameToCtrlList()\n");
+ strcpy(fullname, fname);
+ }
+-
+-
++
++
+ /* see if this name is a duplicate. Don't add it if it is. */
+ for (i=0; i<numnames; i++)
+ if (strcmp(fullname, namelist[i]) == 0) {
+ free(fullname);
+ return;
+ }
+-
++
+ namelist[numnames] = fullname;
+ numnames++;
+ makeDispNames();
+@@ -3578,7 +4244,7 @@
+ /* called to enable/disable the Prev/Next buttons whenever curname and/or
+ numnames and/or nList.selected change */
+
+- /* if curname<0 (there is no 'current' file), 'Next' means view the
++ /* if curname<0 (there is no 'current' file), 'Next' means view the
+ selected file (or the 0th file, if no selection either), and 'Prev' means
+ view the one right before the selected file */
+
+@@ -3591,18 +4257,19 @@
+ BTSetActive(&but[BPREV], (curname>0));
+ }
+ }
+-
++
+
+ /***********************************/
+ int DeleteCmd()
+ {
+ /* 'delete' button was pressed. Pop up a dialog box to determine
+ what should be deleted, then do it.
+- returns '1' if THE CURRENTLY VIEWED entry was deleted from the list,
+- in which case the 'selected' filename on the ctrl list is now
++ returns '1' if THE CURRENTLY VIEWED entry was deleted from the list,
++ in which case the 'selected' filename on the ctrl list is now
+ different, and should be auto-loaded, or something */
+
+- static char *bnames[] = { "\004Disk File", "\nList Entry", "\033Cancel" };
++ static const char *bnames[] =
++ { "\004Disk File", "\nList Entry", "\033Cancel" };
+ char str[512];
+ int del, i, delnum, rv;
+
+@@ -3610,15 +4277,14 @@
+ delnum = nList.selected;
+ if (delnum < 0 || delnum >= numnames) return 0;
+
+- sprintf(str,"Delete '%s'?\n\n%s%s",
+- namelist[delnum],
++ sprintf(str, "Delete '%s'?\n\n%s%s", namelist[delnum],
+ "'List Entry' deletes selection from list.\n",
+ "'Disk File' deletes file associated with selection.");
+
+ del = PopUp(str, bnames, 3);
+-
++
+ if (del == 2) return 0; /* cancel */
+-
++
+ if (del == 0) { /* 'Disk File' */
+ char *name;
+ if (namelist[delnum][0] != '/') { /* prepend 'initdir' */
+@@ -3669,13 +4335,13 @@
+
+ if (delnum != numnames-1) {
+ /* snip out of namelist and dispnames lists */
+- xvbcopy((char *) &namelist[delnum+1], (char *) &namelist[delnum],
++ xvbcopy((char *) &namelist[delnum+1], (char *) &namelist[delnum],
+ (numnames - delnum - 1) * sizeof(namelist[0]));
+
+- xvbcopy((char *) &dispnames[delnum+1], (char *) &dispnames[delnum],
++ xvbcopy((char *) &dispnames[delnum+1], (char *) &dispnames[delnum],
+ (numnames - delnum - 1) * sizeof(dispnames[0]));
+ }
+-
++
+ numnames--;
+ if (numnames==0) BTSetActive(&but[BDELETE],0);
+ windowMB.dim[WMB_TEXTVIEW] = (numnames==0);
+@@ -3686,7 +4352,7 @@
+ if (nList.selected >= numnames) nList.selected = numnames-1;
+ if (nList.selected < 0) nList.selected = 0;
+
+- SCSetRange(&nList.scrl, 0, numnames - nList.nlines,
++ SCSetRange(&nList.scrl, 0, numnames - nList.nlines,
+ nList.scrl.val, nList.nlines-1);
+ ScrollToCurrent(&nList);
+ DrawCtrlNumFiles();
+@@ -3753,7 +4419,7 @@
+ if (useroot && resetroot) ClearRoot();
+
+ if (mainW == (Window) NULL || useroot) { /* window not visible */
+- useroot = 0;
++ useroot = 0;
+
+ if (haveoldinfo) { /* just remap mainW and resize it */
+ XWMHints xwmh;
+@@ -3771,8 +4437,8 @@
+ xwmh.input = True;
+ xwmh.flags = InputHint;
+
+- xwmh.icon_pixmap = iconPix;
+- xwmh.icon_mask = iconmask;
++ xwmh.icon_pixmap = iconPix;
++ xwmh.icon_mask = iconmask;
+ xwmh.flags |= ( IconPixmapHint | IconMaskHint) ;
+
+ xwmh.flags |= StateHint;
+@@ -3787,7 +4453,7 @@
+ else { /* first time. need to create mainW */
+ mainW = (Window) NULL;
+ createMainWindow(maingeom, fnam);
+- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
++ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
+ | StructureNotifyMask | ButtonPressMask
+ | KeyReleaseMask | ColormapChangeMask
+ | EnterWindowMask | LeaveWindowMask );
+@@ -3802,7 +4468,7 @@
+
+ else { /* mainW already visible */
+ createMainWindow(maingeom, fnam);
+- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
++ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
+ | StructureNotifyMask | ButtonPressMask
+ | KeyReleaseMask | ColormapChangeMask
+ | EnterWindowMask | LeaveWindowMask );
+@@ -3845,13 +4511,13 @@
+ if (LocalCmap) regen=1;
+
+ /* this reallocs the colors */
+- if (colorMapMode==CM_PERFECT || colorMapMode==CM_OWNCMAP)
++ if (colorMapMode==CM_PERFECT || colorMapMode==CM_OWNCMAP)
+ ChangeCmapMode(CM_NORMAL, 0, 0);
+-
+-
++
++
+ XUnmapWindow(theDisp, mainW);
+ mainW = vrootW;
+-
++
+ if (!ctrlUp) { /* make sure ctrl is up when going to 'root' mode */
+ XWMHints xwmh;
+ xwmh.input = True;
+@@ -3861,7 +4527,7 @@
+ CtrlBox(1);
+ }
+ }
+-
++
+ useroot = 1;
+ rootMode = dispMode - RMB_ROOT;
+ ew = eWIDE; eh = eHIGH;
+@@ -3877,7 +4543,7 @@
+ GenerateEpic(ew, eh);
+ CreateXImage();
+ }
+- else if (regen) CreateXImage();
++ else if (regen) CreateXImage();
+
+ KillOldRootInfo();
+ MakeRootPic();
+@@ -3923,7 +4589,7 @@
+
+
+ if (*numn == maxn) {
+- fprintf(stderr, "%s: too many filenames. Only using first %d.\n",
++ fprintf(stderr, "%s: too many filenames. Using only first %d.\n",
+ flist, maxn);
+ }
+
+@@ -3947,14 +4613,14 @@
+
+ /***********************************/
+ int rd_int(name)
+- char *name;
++ const char *name;
+ {
+ /* returns '1' if successful. result in def_int */
+
+ if (rd_str_cl(name, "", 0)) { /* sets def_str */
+ if (sscanf(def_str, "%d", &def_int) == 1) return 1;
+ else {
+- fprintf(stderr, "%s: couldn't read integer value for %s resource\n",
++ fprintf(stderr, "%s: couldn't read integer value for %s resource\n",
+ cmd, name);
+ return 0;
+ }
+@@ -3965,7 +4631,7 @@
+
+ /***********************************/
+ int rd_str(name)
+- char *name;
++ const char *name;
+ {
+ return rd_str_cl(name, "", 0);
+ }
+@@ -3973,17 +4639,17 @@
+
+ /***********************************/
+ int rd_flag(name)
+-char *name;
++ const char *name;
+ {
+ /* returns '1' if successful. result in def_int */
+-
++
+ char buf[256];
+
+ if (rd_str_cl(name, "", 0)) { /* sets def_str */
+ strcpy(buf, def_str);
+ lower_str(buf);
+
+- def_int = (strcmp(buf, "on")==0) ||
++ def_int = (strcmp(buf, "on")==0) ||
+ (strcmp(buf, "1")==0) ||
+ (strcmp(buf, "true")==0) ||
+ (strcmp(buf, "yes")==0);
+@@ -3992,16 +4658,16 @@
+
+ else return 0;
+ }
+-
++
+
+
+
+ static int xrm_initted = 0;
+-
++
+ /***********************************/
+ int rd_str_cl (name_str, class_str, reinit)
+- char *name_str;
+- char *class_str;
++ const char *name_str;
++ const char *class_str;
+ int reinit;
+ {
+ /* note: *all* X resource reading goes through this routine... */
+@@ -4043,16 +4709,30 @@
+ unsigned long nitems, nleft;
+ byte *data;
+
+- i = XGetWindowProperty(theDisp, RootWindow(theDisp, 0),
+- resAtom, 0L, 1L, False,
+- XA_STRING, &actType, &actFormat, &nitems, &nleft,
+- (unsigned char **) &data);
++ if (spec_window) {
++ i = XGetWindowProperty(theDisp, spec_window,
++ resAtom, 0L, 1L, False,
++ XA_STRING, &actType, &actFormat, &nitems, &nleft,
++ (unsigned char **) &data);
++ } else {
++ i = XGetWindowProperty(theDisp, RootWindow(theDisp, 0),
++ resAtom, 0L, 1L, False,
++ XA_STRING, &actType, &actFormat, &nitems, &nleft,
++ (unsigned char **) &data);
++ }
+ if (i==Success && actType==XA_STRING && actFormat==8) {
+ if (nitems>0 && data) XFree(data);
+- i = XGetWindowProperty(theDisp, RootWindow(theDisp, 0), resAtom, 0L,
+- (long) ((nleft+4+3)/4),
+- False, XA_STRING, &actType, &actFormat,
+- &nitems, &nleft, (unsigned char **) &data);
++ if (spec_window) {
++ i = XGetWindowProperty(theDisp, spec_window, resAtom, 0L,
++ (long) ((nleft+4+3)/4),
++ False, XA_STRING, &actType, &actFormat,
++ &nitems, &nleft, (unsigned char **) &data);
++ } else {
++ i = XGetWindowProperty(theDisp, RootWindow(theDisp, 0), resAtom, 0L,
++ (long) ((nleft+4+3)/4),
++ False, XA_STRING, &actType, &actFormat,
++ &nitems, &nleft, (unsigned char **) &data);
++ }
+ if (i==Success && actType==XA_STRING && actFormat==8 && data) {
+ def_resource = XrmGetStringDatabase((char *) data);
+ XFree(data);
+@@ -4064,50 +4744,51 @@
+
+
+ if (!gotit) {
+- xrm_str = XResourceManagerString(theDisp);
+-
++ xrm_str = XResourceManagerString(theDisp);
++
+ if (xrm_str) {
+ def_resource = XrmGetStringDatabase(xrm_str);
+ if (DEBUG) fprintf(stderr,"rd_str_cl: Using RESOURCE_MANAGER prop.\n");
+ }
+ else { /* no RESOURCE_MANAGER prop. read from 'likely' file */
+- char foo[256], *homedir, *xenviron;
++ char foo[256], *xenviron;
++ const char *homedir;
+ XrmDatabase res1;
+-
++
+ #ifdef VMS
+ strcpy(foo, "SYS$LOGIN:DECW$XDEFAULTS.DAT");
+ #else
+- homedir = (char *) getenv("HOME");
++ homedir = (const char *) getenv("HOME");
+ if (!homedir) homedir = ".";
+ sprintf(foo,"%s/.Xdefaults", homedir);
+ #endif
+-
++
+ def_resource = XrmGetFileDatabase(foo);
+-
++
+ if (DEBUG) {
+ fprintf(stderr,"rd_str_cl: No RESOURCE_MANAGER prop.\n");
+ fprintf(stderr,"rd_str_cl: Using file '%s' (%s) ",
+ foo, (def_resource) ? "success" : "failure");
+ }
+-
+-
++
++
+ /* merge file pointed to by XENVIRONMENT */
+ xenviron = (char *) getenv("XENVIRONMENT");
+ if (xenviron) {
+ res1 = XrmGetFileDatabase(xenviron);
+-
++
+ if (DEBUG) {
+ fprintf(stderr,"merging XENVIRONMENT='%s' (%s) ",
+ xenviron, (res1) ? "success" : "failure");
+ }
+-
++
+ if (res1) { /* merge databases */
+ if (!def_resource) def_resource = res1;
+ else XrmMergeDatabases(res1, &def_resource);
+ }
+ }
+-
+-
++
++
+ if (DEBUG) fprintf(stderr,"\n\n");
+ }
+ }
+@@ -4120,16 +4801,15 @@
+ strcpy (q_name, PROGNAME);
+ strcat (q_name, ".");
+ strcat (q_name, name_str);
+-
++
+ strcpy (q_class, "Program");
+ strcat (q_class, ".");
+ strcat (q_class, class_str);
+
+ (void) XrmGetResource(def_resource, q_name, q_class, &type, &result);
+-
++
+ def_str = result.addr;
+- if (def_str) return (1);
+- else return (0);
++ if (def_str) return 1;
++ else return 0;
+ }
+
+-
+diff -ru xv-3.10a/xv.h xv-3.10a-enhancements/xv.h
+--- xv-3.10a/xv.h 1995-01-23 12:22:23.000000000 -0800
++++ xv-3.10a-enhancements/xv.h 2007-05-20 21:26:40.000000000 -0700
+@@ -1,6 +1,6 @@
+ /*
+ * xv.h - header file for xv, but you probably guessed as much
+- *
++ *
+ * Author: John Bradley (bradley@cis.upenn.edu)
+ */
+
+@@ -8,8 +8,16 @@
+ #include "config.h"
+
+
+-#define REVDATE "Version 3.10a Rev: 12/29/94"
+-#define VERSTR "3.10a"
++/* xv 3.10a: 19941229 */
++/* PNG patch 1.2d: 19960731 */
++/* GRR orig jumbo fixes patch: 20000213 */
++/* GRR orig jumbo enhancements patch: 20000220 */
++/* GRR 1st public jumbo F+E patches: 20040531 */
++/* GRR 2nd public jumbo F+E patches: 20050410 */
++/* GRR 3rd public jumbo F+E patches: 20050501 */
++/* GRR 4th public jumbo F+E patch: 20070520 */
++#define REVDATE "version 3.10a-jumboFix+Enh of 20070520"
++#define VERSTR "3.10a-20070520"
+
+ /*
+ * uncomment the following, and modify for your site, but only if you've
+@@ -43,6 +51,10 @@
+ /* START OF MACHINE-DEPENDENT CONFIGURATION INFO */
+ /*************************************************/
+
++
++#define ENABLE_FIXPIX_SMOOTH /* GRR 19980607 */
++
++
+ /* Things to make xv more likely to just build, without the user tweaking
+ the makefile */
+
+@@ -61,16 +73,38 @@
+ # define SVR4
+ #endif
+
++#if defined(__sony_news) && defined(bsd43) && !defined(__bsd43)
++# define __bsd43
++#elif defined(__sony_news) && (defined(SYSTYPE_BSD) || defined(__SYSTYPE_BSD)) && !defined(bsd43) && !defined(__bsd43)
++# define bsd43
++# define __bsd43
++#endif
++
++#include <signal.h> /* for interrupt handling */
++
++/* at least on Linux, the following file (1) includes sys/types.h and
++ * (2) defines __USE_BSD (which was not defined before here), so __linux__
++ * block is now moved after this #include */
++#include <X11/Xos.h> /* need type declarations immediately */
++
+
+-#ifdef LINUX
++#ifdef __linux__
+ # ifndef _LINUX_LIMITS_H
+ # include <linux/limits.h>
+ # endif
++# ifndef USLEEP
++# define USLEEP
++# endif
++ /* want only one or the other defined, not both: */
++# if !defined(BSDTYPES) && !defined(__USE_BSD)
++# define BSDTYPES
++# endif
++# if defined(BSDTYPES) && defined(__USE_BSD)
++# undef BSDTYPES
++# endif
+ #endif
+
+
+-#include <X11/Xos.h> /* need type declarations immediately */
+-
+ /*********************************************************/
+
+
+@@ -99,6 +133,16 @@
+ #endif
+
+
++#if defined(__sony_news) && defined(__bsd43)
++# include <unistd.h>
++#endif
++
++
++#if defined(__FreeBSD__)
++# include <sys/param.h>
++#endif
++
++
+ /* include files */
+ #include <stdio.h>
+ #include <math.h>
+@@ -114,18 +158,24 @@
+
+ #ifndef VMS
+ # include <errno.h>
+- extern int errno; /* SHOULD be in errno.h, but often isn't */
+ # ifndef __NetBSD__
+- extern char *sys_errlist[]; /* this too... */
++# if !(defined __GLIBC__ && __GLIBC__ >= 2)
++ extern int errno; /* SHOULD be in errno.h, but often isn't */
++ extern char *sys_errlist[]; /* this too... */
++# endif
+ # endif
+ #endif
+
+
+ /* not everyone has the strerror() function, or so I'm told */
+-#ifndef VMS
+-# define ERRSTR(x) sys_errlist[x]
+-#else
++#ifdef VMS
+ # define ERRSTR(x) strerror(x, vaxc$errno)
++#else
++# if defined(__BEOS__) || defined(__linux__) /* or all modern/glibc systems? */
++# define ERRSTR(x) strerror(x)
++# else
++# define ERRSTR(x) sys_errlist[x]
++# endif
+ #endif
+
+
+@@ -146,28 +196,20 @@
+ #endif
+
+
+-/* lots of things don't have <malloc.h> */
+-/* A/UX systems include it from stdlib, from Xos.h */
+-#ifndef VMS /* VMS hates multi-line '#if's */
+-# if !defined(ibm032) && \
+- !defined(__convex__) && \
+- !(defined(vax) && !defined(ultrix)) && \
+- !defined(mips) && \
+- !defined(apollo) && \
+- !defined(pyr) && \
+- !defined(__UMAXV__) && \
+- !defined(bsd43) && \
+- !defined(aux) && \
+- !defined(__bsdi__) && \
+- !defined(sequent)
+-
++/* GRR 20070512: Very few modern systems even have a malloc.h anymore;
++ * stdlib.h is, well, the standard. (Former explicitly listed
++ * "don't include" systems: ibm032, __convex__, non-ultrix vax,
++ * mips, apollo, pyr, sequent, __UMAXV__, aux, bsd43, __bsd43,
++ * __bsdi__, __386BSD__, __FreeBSD__, __OpenBSD__, __NetBSD__,
++ * __DARWIN__, VMS.) Anyone who _does_ need it can explicitly
++ * define NEED_MALLOC_H in the makefile. */
++#ifdef NEED_MALLOC_H
+ # if defined(hp300) || defined(hp800) || defined(NeXT)
+-# include <sys/malloc.h> /* it's in 'sys' on HPs and NeXT */
++# include <sys/malloc.h> /* it's in "sys" on HPs and NeXT */
+ # else
+-# include <malloc.h>
++# include <malloc.h>
+ # endif
+-# endif
+-#endif /* !VMS */
++#endif
+
+
+
+@@ -179,9 +221,10 @@
+ #include <X11/Xatom.h>
+ #include <X11/Xmd.h>
+
++#ifdef TV_L10N
++# include <X11/Xlocale.h>
++#endif
+
+-#undef SIGCHLD /* defined in both Xos.h and signal.h */
+-#include <signal.h> /* for interrupt handling */
+
+ #include <sys/types.h>
+
+@@ -205,6 +248,10 @@
+ # include <limits.h>
+ # endif
+
++# ifdef __BEOS__
++# include <socket.h>
++# endif
++
+ /*** for select() call ***/
+ # ifdef __hpux
+ # define XV_FDTYPE (int *)
+@@ -259,7 +306,7 @@
+ * make them if missing, along with a few fictitious ones
+ * Cameron Simpson (cameron@cse.unsw.edu.au)
+ */
+-
++
+ #ifndef S_ISDIR /* missing POSIX-type macros */
+ # define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR)
+ # define S_ISBLK(mode) (((mode)&S_IFMT) == S_IFBLK)
+@@ -288,7 +335,9 @@
+ # endif
+ #endif
+
+-
++#ifndef S_IRWUSR
++# define S_IRWUSR (S_IRUSR|S_IWUSR) /* or (S_IREAD|S_IWRITE) */
++#endif
+
+ #ifndef MAXPATHLEN
+ # define MAXPATHLEN 256
+@@ -308,36 +357,90 @@
+
+ #ifndef VMS /* VMS hates multi-line definitions */
+ # if defined(SVR4) || defined(SYSV) || defined(sco) || \
+- defined(XENIX) || defined(__osf__)
++ defined(XENIX) || defined(__osf__) || defined(__linux__)
+ # undef USE_GETCWD
+ # define USE_GETCWD /* use 'getcwd()' instead of 'getwd()' */
++# endif /* >> SECURITY ISSUE << */
++#endif
++
++
++/* GRR 20040430: This is new and still not fully deployed. No doubt there
++ * are other systems that have mkstemp() (SUSv3); we can add
++ * them later. */
++#ifndef VMS /* VMS hates multi-line definitions */
++# if defined(__linux__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
++ defined(__bsdi__)
++# ifndef USE_MKSTEMP
++# define USE_MKSTEMP /* use 'mkstemp()' instead of 'mktemp()' */
++# endif /* >> SECURITY ISSUE << */
+ # endif
+ #endif
+
+
++/* GRR 20040503: This is new and so far tested only under Linux. But it
++ * allows -wait to work with subsecond values as long as
++ * times() exists and clock_t is a long int (latter matters
++ * only if/when clocks wrap, which for Linux is multiples of
++ * 497.11 days since the last reboot). */
++#if defined(__linux__)
++# define USE_TICKS /* use times()/Timer(), not time()/sleep() */
++# include <limits.h> /* LONG_MAX (really want CLOCK_T_MAX) */
++# include <sys/times.h> /* times() */
++# ifndef CLK_TCK /* can be undefined in strict-ANSI mode */
++# define CLK_TCK CLOCKS_PER_SEC /* claimed to be same thing in time.h */
++# endif
++#endif
++
++#if (defined(SYSV) || defined(SVR4) || defined(linux)) && !defined(USE_GETCWD)
++# define USE_GETCWD
++#endif
++
++#ifndef SEEK_SET
++# define SEEK_SET 0
++# define SEEK_CUR 1
++# define SEEK_END 2
++#endif
++
++#if defined(__mips) && defined(__SYSTYPE_BSD43)
++# define strstr(A,B) pds_strstr((A),(B))
++# undef S_IFIFO
++#endif /* !mips_bsd */
++
+ /*****************************/
+ /* END OF CONFIGURATION INFO */
+ /*****************************/
+
++
+ #ifdef DOJPEG
+-#define HAVE_JPEG
++# define HAVE_JPEG
++#endif
++
++#ifdef DOJP2K
++# define HAVE_JP2K
+ #endif
+
+ #ifdef DOTIFF
+-#define HAVE_TIFF
++# define HAVE_TIFF
++#endif
++
++#ifdef DOPNG
++# define HAVE_PNG
+ #endif
+
+ #ifdef DOPDS
+-#define HAVE_PDS
++# define HAVE_PDS
+ #endif
+
++#ifdef DOG3
++# define HAVE_G3
++#endif
+
+
+-#define PROGNAME "xv" /* used in resource database */
++#define PROGNAME "xv" /* used in resource database */
+
+-#define MAXNAMES 4096 /* max # of files in ctrlW list */
++#define MAXNAMES 65536 /* max # of files in ctrlW list */
+
+-#define MAXBRWIN 4 /* max # of vis browser windows */
++#define MAXBRWIN 16 /* max # of vis browser windows */
+
+ /* strings in the INFOBOX (used in SetISTR and GetISTR) */
+ #define NISTR 10 /* number of ISTRs */
+@@ -432,7 +535,7 @@
+ #define F_COLORS 0
+ #define F_FORMAT 1
+
+-/* the following list give indicies into saveColors[] array in xvdir.c */
++/* the following list give indices into saveColors[] array in xvdir.c */
+ #define F_FULLCOLOR 0
+ #define F_GREYSCALE 1
+ #define F_BWDITHER 2
+@@ -440,49 +543,115 @@
+ #define F_MAXCOLORS 4 /* length of saveColors[] array */
+
+
+-/* following list gives indicies into 'saveFormats[]' array in xvdir.c
+- note that JPEG and TIFF entries may or may not exist, and following
+- constants have to be adjusted accordingly. Also, don't worry about
+- duplicate cases if JPGINC or TIFINC = 0. All code that references
+- F_JPEG or F_TIFF is #ifdef'd, so it won't be a problem */
++/* The following list gives indices into 'saveFormats[]' array in xvdir.c.
++ Note that JPEG, TIFF, and other entries may or may not exist, so the
++ following constants have to be adjusted accordingly. Also, don't worry
++ about duplicate cases if, e.g., JPGINC or TIFINC = 0. All code that
++ references F_JPEG, F_TIFF, etc., is #ifdef'd, so it won't be a problem. */
+
+ #ifdef HAVE_JPEG
+-#define F_JPGINC 1
++# define F_JPGINC 1
+ #else
+-#define F_JPGINC 0
++# define F_JPGINC 0
++#endif
++
++#ifdef HAVE_JP2K
++# define F_JP2INC 1 /* provides both JPC and JP2 */
++#else
++# define F_JP2INC 0
+ #endif
+
+ #ifdef HAVE_TIFF
+-#define F_TIFINC 1
++# define F_TIFINC 1
++#else
++# define F_TIFINC 0
++#endif
++
++#ifdef HAVE_PNG
++# define F_PNGINC 1
++#else
++# define F_PNGINC 0
++#endif
++
++#ifdef HAVE_MAG
++# define F_MAGINC 1
++#else
++# define F_MAGINC 0
++#endif
++
++#ifdef HAVE_PIC
++# define F_PICINC 1
++#else
++# define F_PICINC 0
++#endif
++
++#ifdef HAVE_MAKI
++# define F_MAKINC 1
++#else
++# define F_MAKINC 0
++#endif
++
++#ifdef HAVE_PI
++# define F_PAIINC 1
++#else
++# define F_PAIINC 0
++#endif
++
++#ifdef HAVE_PIC2
++# define F_PC2INC 1
+ #else
+-#define F_TIFINC 0
++# define F_PC2INC 0
+ #endif
+
++#ifdef HAVE_MGCSFX
++# define F_MGCSFXINC 1
++#else
++# define F_MGCSFXINC 0
++#endif
+
+-#define F_GIF 0
+-#define F_JPEG ( 0 + F_JPGINC)
+-#define F_TIFF ( 0 + F_JPGINC + F_TIFINC)
+-#define F_PS ( 1 + F_JPGINC + F_TIFINC)
+-#define F_PBMRAW ( 2 + F_JPGINC + F_TIFINC)
+-#define F_PBMASCII ( 3 + F_JPGINC + F_TIFINC)
+-#define F_XBM ( 4 + F_JPGINC + F_TIFINC)
+-#define F_XPM ( 5 + F_JPGINC + F_TIFINC)
+-#define F_BMP ( 6 + F_JPGINC + F_TIFINC)
+-#define F_SUNRAS ( 7 + F_JPGINC + F_TIFINC)
+-#define F_IRIS ( 8 + F_JPGINC + F_TIFINC)
+-#define F_TARGA ( 9 + F_JPGINC + F_TIFINC)
+-#define F_FITS (10 + F_JPGINC + F_TIFINC)
+-#define F_PM (11 + F_JPGINC + F_TIFINC)
+-#define F_DELIM1 (12 + F_JPGINC + F_TIFINC) /* ----- */
+-#define F_FILELIST (13 + F_JPGINC + F_TIFINC)
+-#define F_MAXFMTS (14 + F_JPGINC + F_TIFINC) /* 15, normally */
++#ifdef MACBINARY
++# define MACBSIZE 128
++#endif
++
++/* NOTE: order must match saveFormats[] in xvdir.c */
++/* [this works best when first one is always present, but...we like PNG :-) ] */
++#define F_PNG 0
++#define F_JPEG ( 0 + F_PNGINC)
++#define F_JPC ( 0 + F_PNGINC + F_JPGINC)
++#define F_JP2 ( 0 + F_PNGINC + F_JPGINC + F_JP2INC)
++#define F_GIF ( 0 + F_PNGINC + F_JPGINC + F_JP2INC + F_JP2INC) /* always avail; index varies */
++#define F_TIFF ( 0 + F_PNGINC + F_JPGINC + F_JP2INC + F_JP2INC + F_TIFINC)
++#define F_PS ( 1 + F_TIFF)
++#define F_PBMRAW ( 2 + F_TIFF)
++#define F_PBMASCII ( 3 + F_TIFF)
++#define F_XBM ( 4 + F_TIFF)
++#define F_XPM ( 5 + F_TIFF)
++#define F_BMP ( 6 + F_TIFF)
++#define F_SUNRAS ( 7 + F_TIFF)
++#define F_IRIS ( 8 + F_TIFF)
++#define F_TARGA ( 9 + F_TIFF)
++#define F_FITS (10 + F_TIFF)
++#define F_PM (11 + F_TIFF)
++#define F_ZX (12 + F_TIFF) /* [JCE] */
++#define F_WBMP (13 + F_TIFF)
++#define JP_EXT_F (F_WBMP)
++#define F_MAG (JP_EXT_F + F_MAGINC)
++#define F_PIC (JP_EXT_F + F_MAGINC + F_PICINC)
++#define F_MAKI (JP_EXT_F + F_MAGINC + F_PICINC + F_MAKINC)
++#define F_PI (JP_EXT_F + F_MAGINC + F_PICINC + F_MAKINC + F_PAIINC)
++#define F_PIC2 (JP_EXT_F + F_MAGINC + F_PICINC + F_MAKINC + F_PAIINC + F_PC2INC)
++#define F_MGCSFX (JP_EXT_F + F_MAGINC + F_PICINC + F_MAKINC + F_PAIINC + F_PC2INC + F_MGCSFXINC)
++#define JP_EXT_F_END (F_MGCSFX)
++#define F_DELIM1 (JP_EXT_F_END + 1) /* ----- */
++#define F_FILELIST (JP_EXT_F_END + 2)
++#define F_MAXFMTS (JP_EXT_F_END + 3) /* 27, normally (with all formats) */
+
+
+
+ /* return values from ReadFileType()
+ * positive values are *definitely* readable formats (HAVE_*** is defined)
+ * negative values are random files that XV can't read, but display as
+- * different icons in the visual browser
++ * different icons in the visual browser
+ */
+ #define RFT_ERROR -1 /* couldn't open file, or whatever... */
+ #define RFT_UNKNOWN 0
+@@ -505,6 +674,22 @@
+ #define RFT_XPM 17
+ #define RFT_XWD 18
+ #define RFT_FITS 19
++#define RFT_PNG 20
++#define RFT_ZX 21 /* [JCE] */
++#define RFT_WBMP 22
++#define RFT_PCD 23
++#define RFT_HIPS 24
++#define RFT_BZIP2 25
++#define RFT_JPC 26
++#define RFT_JP2 27
++#define RFT_G3 28
++#define JP_EXT_RFT (RFT_G3)
++#define RFT_MAG (JP_EXT_RFT + 1)
++#define RFT_MAKI (JP_EXT_RFT + 2)
++#define RFT_PIC (JP_EXT_RFT + 3)
++#define RFT_PI (JP_EXT_RFT + 4)
++#define RFT_PIC2 (JP_EXT_RFT + 5)
++#define RFT_MGCSFX (JP_EXT_RFT + 6)
+
+ /* definitions for page up/down, arrow up/down list control */
+ #define LS_PAGEUP 0
+@@ -563,7 +748,8 @@
+ #define RM_CBRICK 7 /* centered on a 'brick' bg */
+ #define RM_ECENTER 8 /* symmetrical tiled */
+ #define RM_ECMIRR 9 /* symmetrical mirror tiled */
+-#define RM_MAX RM_ECMIRR
++#define RM_UPLEFT 10 /* just in upper left corner */
++#define RM_MAX RM_UPLEFT
+
+
+ /* values of colorMapMode */
+@@ -613,10 +799,11 @@
+ #define RMB_CBRICK 8
+ #define RMB_ECENTER 9
+ #define RMB_ECMIRR 10
+-#define RMB_MAX 11
++#define RMB_UPLEFT 11
++#define RMB_MAX 12
+
+
+-/* indicies into conv24MB */
++/* indices into conv24MB */
+ #define CONV24_8BIT 0
+ #define CONV24_24BIT 1
+ #define CONV24_SEP1 2
+@@ -631,7 +818,7 @@
+ #define PIC8 CONV24_8BIT
+ #define PIC24 CONV24_24BIT
+
+-/* indicies into algMB */
++/* indices into algMB */
+ #define ALG_NONE 0
+ #define ALG_SEP1 1 /* separator */
+ #define ALG_BLUR 2
+@@ -648,7 +835,7 @@
+ #define ALG_MAX 13
+
+
+-/* indicies into sizeMB */
++/* indices into sizeMB */
+ #define SZMB_NORM 0
+ #define SZMB_MAXPIC 1
+ #define SZMB_MAXPECT 2
+@@ -663,7 +850,7 @@
+ #define SZMB_INTEXP 11
+ #define SZMB_MAX 12
+
+-/* indicies into windowMB */
++/* indices into windowMB */
+ #define WMB_BROWSE 0
+ #define WMB_COLEDIT 1
+ #define WMB_INFO 2
+@@ -742,15 +929,15 @@
+
+ typedef unsigned char byte;
+
+-typedef struct scrl {
++typedef struct scrl {
+ Window win; /* window ID */
+ int x,y,w,h; /* window coords in parent */
+ int len; /* length of major axis */
+ int vert; /* true if vertical, else horizontal */
+ int active; /* true if scroll bar can do anything*/
+- int min,max; /* min/max values 'pos' can take */
+- int val; /* 'value' of scrollbar */
+- int page; /* amt val change on pageup/pagedown */
++ double min,max; /* min/max values 'pos' can take */
++ double val; /* 'value' of scrollbar */
++ double page; /* amt val change on pageup/pagedown */
+ int tpos; /* thumb pos. (pixels from tmin) */
+ int tmin,tmax; /* min/max thumb offsets (from 0,0) */
+ int tsize; /* size of thumb (in pixels) */
+@@ -765,11 +952,12 @@
+ typedef struct { Window win; /* window ID */
+ int x,y,w,h; /* window coords in parent */
+ int active; /* true if can do anything*/
+- int min,max; /* min/max values 'pos' can take */
+- int val; /* 'value' of dial */
+- int page; /* amt val change on pageup/pagedown */
+- char *title; /* title for this guage */
+- char *units; /* string appended to value */
++ double min,max; /* min/max values 'pos' can take */
++ double val; /* 'value' of dial */
++ double inc; /* amt val change on up/down */
++ double page; /* amt val change on pageup/pagedown */
++ const char *title; /* title for this gauge */
++ const char *units; /* string appended to value */
+ u_long fg,bg,hi,lo; /* colors */
+ int rad, cx, cy; /* internals */
+ int bx[4], by[4]; /* more internals */
+@@ -785,7 +973,7 @@
+ int active; /* if false, stipple gray */
+ int toggle; /* if true, clicking toggles state */
+ u_long fg,bg,hi,lo; /* colors */
+- char *str; /* string in button */
++ const char *str; /* string in button */
+ Pixmap pix; /* use pixmap instead of string */
+ u_int pw,ph; /* size of pixmap */
+ int colorpix; /* multi-color pixmap */
+@@ -797,21 +985,23 @@
+ typedef struct rbutt {
+ Window win; /* parent window */
+ int x,y; /* position in parent */
+- char *str; /* the message string */
++ const char *str; /* the message string */
+ int selected; /* selected or not */
+ int active; /* selectable? */
+ struct rbutt *next; /* pointer to next in group */
+- u_long fg,bg,hi,lo; /* colors */
++ u_long fg,bg; /* colors */
++ u_long hi,lo; /* colors */
+ } RBUTT;
+
+
+
+ typedef struct { Window win; /* parent window */
+ int x,y; /* position in parent */
+- char *str; /* the message string */
++ const char *str; /* the message string */
+ int val; /* 1=selected, 0=not */
+ int active; /* selectable? */
+- u_long fg,bg,hi,lo; /* colors */
++ u_long fg,bg; /* colors */
++ u_long hi,lo; /* colors */
+ } CBUTT;
+
+
+@@ -819,11 +1009,11 @@
+ typedef struct { Window win; /* parent window */
+ int x,y; /* position in parent */
+ unsigned int w,h;
+- char *title; /* title string in norm state */
++ const char *title; /* title string in norm state */
+ int active; /* selectable? */
+- char **list; /* list of strings in menu */
++ const char **list; /* list of strings in menu */
+ int nlist; /* # of strings in menu */
+- byte flags[MAXMBLEN]; /* checkmarks on items */
++ byte flags[MAXMBLEN]; /* checkmarks on items */
+ int hascheck; /* leave room for checkmark? */
+ byte dim[MAXMBLEN]; /* dim individual choices */
+ Pixmap pix; /* use pixmap instd of string */
+@@ -833,17 +1023,18 @@
+ } MBUTT;
+
+
+-typedef struct { Window win; /* window */
+- int x,y; /* size of window */
++typedef struct { Window win; /* window */
++ int x,y; /* size of window */
+ unsigned int w,h;
+- u_long fg,bg,hi,lo; /* colors */
+- char **str; /* ptr to list of strings */
+- int nstr; /* number of strings */
+- int selected; /* number of 'selected' string */
+- int nlines; /* number of lines shown at once */
+- SCRL scrl; /* scrollbar that controls list */
+- int filetypes; /* true if filetype icons to be drawn*/
+- int dirsonly; /* if true, only dirs selectable */
++ u_long fg,bg; /* colors */
++ u_long hi,lo; /* colors */
++ /* const? */ char **str; /* ptr to list of strings */
++ int nstr; /* number of strings */
++ int selected; /* number of 'selected' string */
++ int nlines; /* number of lines shown at once */
++ SCRL scrl; /* scrollbar that controls list */
++ int filetypes; /* true if filetype icons to be drawn*/
++ int dirsonly; /* if true, only dirs selectable */
+ } LIST;
+
+
+@@ -865,6 +1056,9 @@
+ char shrtInfo[128]; /* short format info */
+ char *comment; /* comment text */
+
++ byte *exifInfo; /* image info from digicam */
++ int exifInfoSize; /* size of image info */
++
+ int numpages; /* # of page files, if >1 */
+ char pagebname[64]; /* basename of page files */
+ } PICINFO;
+@@ -881,18 +1075,18 @@
+
+ #define GVMAX 8
+
+-typedef struct { Window win; /* window ID */
+- Window gwin; /* graph subwindow */
+- int spline; /* spline curve or lines? */
+- int entergamma; /* currently entering gamma value */
+- int gammamode; /* currently using gamma function */
+- double gamma; /* gamma value (if gammamode) */
+- int nhands; /* current # of handles */
+- XPoint hands[MAX_GHANDS]; /* positions of handles */
+- byte func[256]; /* output function of GRAF */
+- BUTT butts[N_GFB]; /* control buttons */
+- u_long fg,bg; /* colors */
+- char *str; /* title string */
++typedef struct { Window win; /* window ID */
++ Window gwin; /* graph subwindow */
++ int spline; /* spline curve or lines? */
++ int entergamma; /* currently entering gamma value */
++ int gammamode; /* currently using gamma function */
++ double gamma; /* gamma value (if gammamode) */
++ int nhands; /* current # of handles */
++ XPoint hands[MAX_GHANDS]; /* positions of handles */
++ byte func[256]; /* output function of GRAF */
++ BUTT butts[N_GFB]; /* control buttons */
++ u_long fg,bg; /* colors */
++ const char *str; /* title string */
+ char gvstr[GVMAX+1]; /* gamma value input string */
+ void (*drawobj)PARM((void));
+ } GRAF;
+@@ -932,18 +1126,23 @@
+ /* X stuff */
+ WHERE Display *theDisp;
+ WHERE int theScreen;
+-WHERE unsigned int ncells, dispWIDE, dispHIGH, dispDEEP;
+-WHERE unsigned int vrWIDE, vrHIGH, maxWIDE, maxHIGH;
++WHERE unsigned int ncells, dispDEEP; /* root color sizes */
++WHERE unsigned int dispWIDE, dispHIGH; /* screen sizes */
++WHERE unsigned int vrWIDE, vrHIGH, maxWIDE, maxHIGH; /* virtual root and max image sizes */
+ WHERE Colormap theCmap, LocalCmap;
+-WHERE Window rootW, mainW, vrootW;
++WHERE Window spec_window, rootW, mainW, vrootW;
+ WHERE GC theGC;
+ WHERE u_long black, white, fg, bg, infofg, infobg;
+ WHERE u_long hicol, locol;
+ WHERE u_long blkRGB, whtRGB;
+ WHERE Font mfont, monofont;
+ WHERE XFontStruct *mfinfo, *monofinfo;
++#ifdef TV_L10N
++WHERE XFontSet monofset;
++WHERE XFontSetExtents *monofsetinfo;
++#endif
+ WHERE Visual *theVisual;
+-WHERE Cursor arrow, cross, tcross, zoom, inviso;
++WHERE Cursor arrow, cross, tcross, zoom, inviso, tlcorner;
+ WHERE Pixmap iconPix, iconmask;
+ WHERE Pixmap riconPix, riconmask;
+ WHERE int showzoomcursor;
+@@ -959,6 +1158,12 @@
+ WHERE char formatStr[80]; /* short-form 'file format' */
+ WHERE int picType; /* CONV24_8BIT,CONV24_24BIT,etc.*/
+ WHERE char *picComments; /* text comments on current pic */
++WHERE byte *picExifInfo; /* image info from digicam */
++WHERE int picExifInfoSize; /* size of image info */
++
++#ifdef TV_L10N
++WHERE int xlocale; /* true if Xlib supports locale */
++#endif
+
+ WHERE int numPages, curPage; /* for multi-page files */
+ WHERE char pageBaseName[64]; /* basename for multi-page files */
+@@ -972,12 +1177,12 @@
+ /* this is converted to 'theImage' */
+ WHERE int eWIDE, eHIGH; /* size of epic */
+
+-WHERE byte *egampic; /* expanded, gammified cpic
++WHERE byte *egampic; /* expanded, gammified cpic
+ (only used in 24-bit mode) */
+
+ WHERE int p_offx, p_offy; /* offset of reparented windows */
+ WHERE int ch_offx,ch_offy; /* ChngAttr ofst for reparented windows */
+-WHERE int kludge_offx, /* WM kludges for SetWindowPos routine */
++WHERE int kludge_offx, /* WM kludges for SetWindowPos routine */
+ kludge_offy;
+ WHERE int winCtrPosKludge; /* kludge for popup positioning... */
+
+@@ -993,6 +1198,26 @@
+ WHERE unsigned long cols[256]; /* maps pic pixel values to X pixel vals */
+ WHERE int fc2pcol[256]; /* maps freecols into pic pixel values */
+ WHERE int numcols; /* # of desired colors in picture */
++#ifdef MACBINARY
++WHERE char macb_file; /* True if this file type is MacBinary */
++WHERE int handlemacb; /* True if we want to handle MacBinary */
++#endif
++#if defined(HAVE_PIC) || defined(HAVE_PIC2)
++WHERE int nopicadjust; /* True if we don't want to adjust aspect */
++#endif
++#ifdef HAVE_PIC2
++WHERE int pic2split; /* True if we want to split multiblocks */
++#endif
++#ifdef VS_ADJUST
++WHERE int vsadjust; /* True if we want to adjust aspect of icons */
++#endif
++#ifdef HAVE_MGCSFX
++WHERE int mgcsfx; /* True if we want to force use MgcSfx */
++WHERE int nomgcsfx; /* True if we don't want to use MgcSfx */
++#endif
++
++#define FSTRMAX 12 /* Number of function keys to support. */
++WHERE char *fkeycmds[FSTRMAX]; /* command to run when F# is pressed */
+
+ /* Std Cmap stuff */
+ WHERE byte stdr[256], stdg[256], stdb[256]; /* std 3/3/2 cmap */
+@@ -1025,7 +1250,7 @@
+
+ WHERE int ncols; /* max # of (different) colors to alloc */
+
+-WHERE char str[128]; /* dummy string used for error messages */
++WHERE char dummystr[128]; /* dummy string used for error messages */
+ WHERE char initdir[MAXPATHLEN]; /* cwd when xv was started */
+ WHERE char searchdir[MAXPATHLEN]; /* '-dir' option */
+ WHERE char fullfname[MAXPATHLEN]; /* full name of current file */
+@@ -1047,42 +1272,47 @@
+ noFreeCols, /* don't free colors when loading new pic */
+ autoquit, /* quit in '-root' or when click on win */
+ xerrcode, /* errorcode of last X error */
+- grabDelay; /* # of seconds to sleep at start of Grab */
++ grabDelay, /* # of seconds to sleep at start of Grab */
++ startGrab; /* start immediate grab ? */
+
+ WHERE int state824; /* displays warning when going 8->24 */
+
+ WHERE float defaspect, /* default aspect ratio to use */
+ normaspect; /* normal aspect ratio of this picture */
+
+-WHERE unsigned long rootbg, rootfg; /* fg/bg for root border */
+-WHERE int waitsec; /* secs btwn pics. -1=wait for event */
+-WHERE int waitloop; /* loop at end of slide show? */
+-WHERE int automax; /* maximize pic on open */
+-WHERE int rootMode; /* mode used for -root images */
++WHERE u_long rootbg, rootfg; /* fg/bg for root border */
++WHERE u_short imagebgR;
++WHERE u_short imagebgG; /* GRR 19980308: bg for transpar. images */
++WHERE u_short imagebgB;
++WHERE int have_imagebg;
++WHERE double waitsec; /* secs btwn pics. -1.0=wait for event */
++WHERE int waitloop; /* loop at end of slide show? */
++WHERE int automax; /* maximize pic on open */
++WHERE int rootMode; /* mode used for -root images */
+
+-WHERE int nostat; /* if true, don't stat() in LdCurDir */
++WHERE int nostat; /* if true, don't stat() in LdCurDir */
+
+-WHERE int ctrlColor; /* whether or not to use colored butts */
++WHERE int ctrlColor; /* whether or not to use colored butts */
+
+-WHERE char *def_str; /* used by rd_*() routines */
++WHERE char *def_str; /* used by rd_*() routines */
+ WHERE int def_int;
+-WHERE char *tmpdir; /* equal to "/tmp" or $TMPDIR env var */
+-WHERE Pixmap gray25Tile, /* used for 3d effect on 1-bit disp's */
++WHERE char *tmpdir; /* equal to "/tmp" or $TMPDIR env var */
++WHERE Pixmap gray25Tile, /* used for 3d effect on 1-bit disp's */
+ gray50Tile;
+-WHERE int autoDelete; /* delete cmd-line files on exit? */
++WHERE int autoDelete; /* delete cmd-line files on exit? */
+
+ #define PRINTCMDLEN 256
+-WHERE char printCmd[PRINTCMDLEN];
++WHERE char printCmd[PRINTCMDLEN];
+
+ /* stuff used for 'info' box */
+ WHERE Window infoW;
+-WHERE int infoUp; /* boolean: whether infobox is visible */
++WHERE int infoUp; /* boolean: whether infobox is visible */
+ WHERE int infoMode;
+
+
+ /* stuff used for 'ctrl' box */
+ WHERE Window ctrlW;
+-WHERE int ctrlUp; /* boolean: whether ctrlbox is visible */
++WHERE int ctrlUp; /* boolean: whether ctrlbox is visible */
+ WHERE char *namelist[MAXNAMES]; /* list of file names from argv */
+ WHERE char *origlist[MAXNAMES]; /* only names from argv (autoDelete)*/
+ WHERE int orignumnames;
+@@ -1121,25 +1351,31 @@
+
+
+ /* stuff used for 'browse' box */
+-WHERE int anyBrowUp; /* whether *any* browser visible */
++WHERE int anyBrowUp; /* whether *any* browser visible */
++WHERE int incrementalSearchTimeout;
+
+ /* stuff used for textview windows */
+-WHERE int anyTextUp; /* are any text windows visible? */
+-WHERE int commentUp; /* comment window up? */
++WHERE int anyTextUp; /* are any text windows visible? */
++WHERE int commentUp; /* comment window up? */
+
+ /* stuff used for xvcut.c */
+-WHERE int forceClipFile; /* don't use property clipboard */
+-WHERE int clearR, clearG, clearB; /* clear color in 24-bit mode */
++WHERE int forceClipFile; /* don't use property clipboard */
++WHERE int clearR, clearG, clearB; /* clear color in 24-bit mode */
+
+
+ /* stuff used for 'ps' box */
+ WHERE Window psW;
+-WHERE int psUp; /* is psW mapped, or what? */
+-WHERE CBUTT encapsCB, pscompCB;
+-WHERE char *gsDev, *gsGeomStr;
++WHERE int psUp; /* is psW mapped, or what? */
++WHERE CBUTT encapsCB, pscompCB;
++WHERE const char *gsDev, *gsGeomStr;
+ WHERE int gsRes;
+
+
++/* stuff used for 'pcd' box */
++WHERE Window pcdW;
++WHERE int pcdUp; /* is pcdW mapped, or what? */
++
++
+ #ifdef HAVE_JPEG
+ /* stuff used for 'jpeg' box */
+ WHERE Window jpegW;
+@@ -1147,6 +1383,13 @@
+ #endif
+
+
++#ifdef HAVE_JP2K
++/* stuff used for 'jp2k' box */
++WHERE Window jp2kW;
++WHERE int jp2kUp; /* is jp2kW mapped, or what? */
++#endif
++
++
+ #ifdef HAVE_TIFF
+ /* stuff used for 'tiff' box */
+ WHERE Window tiffW;
+@@ -1154,6 +1397,91 @@
+ #endif
+
+
++#ifdef HAVE_PNG
++/* stuff used for 'png' box */
++WHERE Window pngW;
++WHERE int pngUp; /* is pngW mapped, or what? */
++#endif
++
++
++#ifdef ENABLE_FIXPIX_SMOOTH
++WHERE int do_fixpix_smooth; /* GRR 19980607: runtime FS dithering */
++#endif
++
++#ifdef HAVE_PIC2
++/* stuff used for 'pic2' box */
++WHERE Window pic2W;
++WHERE int pic2Up; /* is pic2W mapped, or what? */
++#endif /* HAVE_PIC2 */
++
++#ifdef HAVE_PCD
++/* stuff used for 'pcd' box */
++WHERE Window pcdW;
++WHERE int pcdUp; /* is pcdW mapped, or what? */
++#endif /* HAVE_PCD */
++
++#ifdef HAVE_MGCSFX
++/* stuff used for 'mgcsfx' box */
++WHERE Window mgcsfxW;
++WHERE Window mgcsfxNameW;
++WHERE int mgcsfxUp; /* is mgcsfxW mapped, or what? */
++#endif /* HAVE_MGCSFX */
++
++#ifdef TV_L10N
++/* stuff used for TextViewer Japanization */
++# define LOCALE_USASCII 0
++# define LOCALE_EUCJ 1
++# define LOCALE_JIS 2
++# define LOCALE_MSCODE 3
++
++# ifndef LOCALE_DEFAULT
++# define LOCALE_DEFAULT 0
++# endif /* !LOCALE_DEFAULT */
++
++# ifndef MAIN
++ extern char *localeList[];
++# else
++# ifndef LOCALE_NAME_EUC
++# ifndef X_LOCALE
++# if defined(__FreeBSD__)
++ char *localeList[] = {"", "ja_JP.EUC", "none", "none"};
++# elif defined(__linux__)
++ char *localeList[] = {"", "ja_JP.eucJP", "none", "ja_JP.SJIS"};
++# elif defined(__sun) || defined(sun)
++ char *localeList[] = {"", "ja", "none", "none"};
++# elif defined(__sgi) /* sgi, __sgi, __sgi__ (gcc) */
++ char *localeList[] = {"", "ja_JP.EUC", "none", "none"};
++# elif defined(sony_news)
++ char *localeList[] = {"", "ja_JP.EUC", "none", "ja_JP.SJIS"};
++# elif defined(nec)
++ char *localeList[] = {"", "japan", "none", "none"};
++# elif defined(__hpux)
++ char *localeList[] = {"", "japanese.euc", "none", "japanese"};
++# elif defined(__osf__)
++ char *localeList[] = {"", "ja_JP.deckanji", "none", "ja_JP.SJIS"};
++# elif defined(_AIX)
++ char *localeList[] = {"", "ja_JP", "none", "Ja_JP" };
++# elif defined(__bsdi)
++ char *localeList[] = {"", "Japanese-EUC", "none", "none" };
++# else
++ char *localeList[] = {"", "ja_JP.EUC", "ja_JP.JIS", "ja_JP.SJIS"};
++# endif
++# else
++# if (XlibSpecificationRelease > 5)
++ char *localeList[] = {"", "ja_JP.eucJP", "ja_JP.JIS7",
++ "ja_JP.SJIS"};
++# else
++ char *localeList[] = {"", "ja_JP.ujis", "ja_JP.jis7",
++ "ja_JP.mscode"};
++# endif
++# endif /* X_LOCALE */
++# else
++ char *localeList[] = {"", LOCALE_NAME_EUC,
++ LOCALE_NAME_JIS, LOCALE_NAME_MSCODE};
++# endif /* LOCALE_NAME_EUC */
++# endif /* MAIN */
++#endif /* TV_L10N */
++
+ #undef WHERE
+
+
+@@ -1161,172 +1489,115 @@
+ /* function declarations for externally-callable functions */
+
+ /****************************** XV.C ****************************/
+-int ReadFileType PARM((char *));
+-int ReadPicFile PARM((char *, int, PICINFO *, int));
+-int UncompressFile PARM((char *, char *));
+-void KillPageFiles PARM((char *, int));
+-
+-void NewPicGetColors PARM((int, int));
+-void FixAspect PARM((int, int *, int *));
+-void ActivePrevNext PARM((void));
+-int DeleteCmd PARM((void));
+-void StickInCtrlList PARM((int));
+-void AddFNameToCtrlList PARM((char *, char *));
+-void ChangedCtrlList PARM((void));
+-void HandleDispMode PARM((void));
+-char *lower_str PARM((char *));
+-int rd_int PARM((char *));
+-int rd_str PARM((char *));
+-int rd_flag PARM((char *));
+-int rd_str_cl PARM((char *, char *, int));
++int ReadFileType PARM((char *));
++int ReadPicFile PARM((char *, int, PICINFO *, int));
++int UncompressFile PARM((char *, char *, int));
++void KillPageFiles PARM((char *, int));
++#ifdef MACBINARY
++int RemoveMacbinary PARM((char *, char *));
++#endif
++
++void NewPicGetColors PARM((int, int));
++void FixAspect PARM((int, int *, int *));
++void ActivePrevNext PARM((void));
++int DeleteCmd PARM((void));
++void StickInCtrlList PARM((int));
++void AddFNameToCtrlList PARM((const char *, const char *));
++void ChangedCtrlList PARM((void));
++void HandleDispMode PARM((void));
++char *lower_str PARM((char *));
++int rd_int PARM((const char *));
++int rd_str PARM((const char *));
++int rd_flag PARM((const char *));
+
+-/****************************** XVEVENT.C ****************************/
+-int EventLoop PARM((void));
+-int HandleEvent PARM((XEvent *, int *));
+
+-void SelectDispMB PARM((int));
+-void Select24to8MB PARM((int));
+-void SelectRootMB PARM((int));
+-void SelectWindowMB PARM((int));
+-void SelectSizeMB PARM((int));
+-
+-void DoPrint PARM((void));
+-void NewCutBuffer PARM((char *));
+-void DrawWindow PARM((int,int,int,int));
+-void WResize PARM((int, int));
+-void WRotate PARM((void));
+-void WCrop PARM((int, int, int, int));
+-void WUnCrop PARM((void));
+-void GetWindowPos PARM((XWindowAttributes *));
+-void SetWindowPos PARM((XWindowAttributes *));
+-void SetEpicMode PARM((void));
+-int xvErrorHandler PARM((Display *, XErrorEvent *));
+-
+-/****************************** XVROOT.C ****************************/
+-void MakeRootPic PARM((void));
+-void ClearRoot PARM((void));
+-void SaveRootInfo PARM((void));
+-void KillOldRootInfo PARM((void));
++/*************************** XV24TO8.C **************************/
++void Init24to8 PARM((void));
++byte *Conv24to8 PARM((byte *, int, int, int,
++ byte *, byte *, byte *));
+
+-/*************************** XVMISC.C ***************************/
+-void StoreDeleteWindowProp PARM((Window));
+-Window CreateWindow PARM((char *, char *, char *, int, int,
+- u_long, u_long, int));
+-void DrawString PARM((Window, int, int, char *));
+-void CenterString PARM((Window, int, int, char *));
+-void ULineString PARM((Window, int, int, char *));
+-int StringWidth PARM((char *));
+-int CursorKey PARM((KeySym, int, int));
+-void FakeButtonPress PARM((BUTT *));
+-void FakeKeyPress PARM((Window, KeySym));
+-void GenExpose PARM((Window, int, int, u_int, u_int));
+-void DimRect PARM((Window, int, int, u_int, u_int, u_long));
+-
+-void Draw3dRect PARM((Window, int, int, u_int, u_int, int, int,
+- u_long, u_long, u_long));
+-
+-void RemapKeyCheck PARM((KeySym, char *, int *));
+-void xvDestroyImage PARM((XImage *));
+-void SetCropString PARM((void));
+-void SetSelectionString PARM((void));
+-void Warning PARM((void));
+-void FatalError PARM((char *));
+-void Quit PARM((int));
+-void LoadFishCursors PARM((void));
+-void WaitCursor PARM((void));
+-void SetCursors PARM((int));
+-char *BaseName PARM((char *));
+-
+-void DrawTempGauge PARM((Window, int, int, int, int, double,
+- u_long, u_long, u_long, u_long, char *));
+-void ProgressMeter PARM((int, int, int, char *));
+-void XVDeletedFile PARM((char *));
+-void XVCreatedFile PARM((char *));
+-void xvbcopy PARM((char *, char *, size_t));
+-int xvbcmp PARM((char *, char *, size_t));
+-void xvbzero PARM((char *, size_t));
+-void xv_getwd PARM((char *, size_t));
+-char *xv_strstr PARM((char *, char *));
+-FILE *xv_fopen PARM((char *, char *));
+-void Timer PARM((int));
++byte *Conv8to24 PARM((byte *, int, int, byte *, byte *, byte *));
+
+-/*************************** XVCOLOR.C ***************************/
+-void SortColormap PARM((byte *, int, int, int *, byte*,byte*,byte*,
+- byte *, byte *));
+-void ColorCompress8 PARM((byte *));
+-void AllocColors PARM((void));
+-Status xvAllocColor PARM((Display *, Colormap, XColor *));
+-void xvFreeColors PARM((Display *, Colormap, u_long *, int, u_long));
+-void FreeColors PARM((void));
+-void ApplyEditColor PARM((int));
+-int MakeStdCmaps PARM((void));
+-void MakeBrowCmap PARM((void));
+-void ChangeCmapMode PARM((int, int, int));
+
+-/*************************** XVIMAGE.C ***************************/
+-void Resize PARM((int, int));
+-void GenerateCpic PARM((void));
+-void GenerateEpic PARM((int, int));
+-void DoZoom PARM((int, int, u_int));
+-void Crop PARM((void));
+-void UnCrop PARM((void));
+-void AutoCrop PARM((void));
+-int DoAutoCrop PARM((void));
+-void DoCrop PARM((int, int, int, int));
+-void Rotate PARM((int));
+-void DoRotate PARM((int));
+-void RotatePic PARM((byte *, int, int *, int *, int));
+-void Flip PARM((int));
+-void FlipPic PARM((byte *, int, int, int));
+-void InstallNewPic PARM((void));
+-void DrawEpic PARM((void));
+-void KillOldPics PARM((void));
+-
+-byte *FSDither PARM((byte *, int, int, int,
+- byte *, byte *, byte *, int, int));
+-
+-void CreateXImage PARM((void));
+-XImage *Pic8ToXImage PARM((byte *, u_int, u_int, u_long *,
+- byte *, byte *, byte *));
+-
+-XImage *Pic24ToXImage PARM((byte *, u_int, u_int));
+-
+-void Set824Menus PARM((int));
+-void Change824Mode PARM((int));
+-void FreeEpic PARM((void));
+-void InvertPic24 PARM((byte *, int, int));
++/*************************** XVALG.C ***************************/
++void AlgInit PARM((void));
++void DoAlg PARM((int));
+
+-byte *XVGetSubImage PARM((byte *, int, int,int, int,int,int,int));
+
+-int DoPad PARM((int, char *, int, int, int, int));
+-int LoadPad PARM((PICINFO *, char *));
++/*************************** XVBROWSE.C ************************/
++void CreateBrowse PARM((const char *, const char *, const char *,
++ const char *, const char *));
++void OpenBrowse PARM((void));
++void HideBrowseWindows PARM((void));
++void UnHideBrowseWindows PARM((void));
++void SetBrowseCursor PARM((Cursor));
++void KillBrowseWindows PARM((void));
++int BrowseCheckEvent PARM((XEvent *, int *, int *));
++int BrowseDelWin PARM((Window));
++void SetBrowStr PARM((const char *));
++void RegenBrowseIcons PARM((void));
++void BRDeletedFile PARM((char *));
++void BRCreatedFile PARM((char *));
+
+-/*************************** XVALG.C ***************************/
+-void AlgInit PARM((void));
+-void DoAlg PARM((int));
+
+-/*************************** XVSMOOTH.C ***************************/
+-byte *SmoothResize PARM((byte *, int, int, int, int, byte *, byte *,
+- byte *, byte *, byte *, byte *, int));
++/**************************** XVBUTT.C ***************************/
++void BTCreate PARM((BUTT *, Window, int, int, u_int, u_int,
++ const char *, u_long, u_long, u_long, u_long));
+
+-byte *Smooth24 PARM((byte *, int, int, int, int, int,
+- byte *, byte *, byte *));
++void BTSetActive PARM((BUTT *, int));
++void BTRedraw PARM((BUTT *));
++int BTTrack PARM((BUTT *));
+
+-byte *DoColorDither PARM((byte *, byte *, int, int, byte *, byte *,
+- byte *, byte *, byte *, byte *, int));
+
+-byte *Do332ColorDither PARM((byte *, byte *, int, int, byte *, byte *,
+- byte *, byte *, byte *, byte *, int));
++RBUTT *RBCreate PARM((RBUTT *, Window, int, int, const char *,
++ u_long, u_long, u_long, u_long));
+
+-/*************************** XV24TO8.C **************************/
+-void Init24to8 PARM((void));
+-byte *Conv24to8 PARM((byte *, int, int, int,
+- byte *, byte *, byte *));
++void RBRedraw PARM((RBUTT *, int));
++void RBSelect PARM((RBUTT *, int));
++int RBWhich PARM((RBUTT *));
++int RBCount PARM((RBUTT *));
++void RBSetActive PARM((RBUTT *, int, int));
++int RBClick PARM((RBUTT *, int, int));
++int RBTrack PARM((RBUTT *, int));
++
++
++void CBCreate PARM((CBUTT *, Window, int, int, const char *,
++ u_long, u_long, u_long, u_long));
++
++void CBRedraw PARM((CBUTT *));
++void CBSetActive PARM((CBUTT *, int));
++int CBClick PARM((CBUTT *,int,int));
++int CBTrack PARM((CBUTT *));
++
++
++void MBCreate PARM((MBUTT *, Window, int, int, u_int, u_int,
++ const char *, const char * const *, int,
++ u_long, u_long, u_long, u_long));
++
++void MBRedraw PARM((MBUTT *));
++void MBSetActive PARM((MBUTT *, int));
++int MBWhich PARM((MBUTT *));
++void MBSelect PARM((MBUTT *, int));
++int MBClick PARM((MBUTT *, int, int));
++int MBTrack PARM((MBUTT *));
++
++
++/*************************** XVCOLOR.C ***************************/
++void SortColormap PARM((byte *, int, int, int *, byte*,byte*,byte*,
++ byte *, byte *));
++void ColorCompress8 PARM((byte *));
++void AllocColors PARM((void));
++Status xvAllocColor PARM((Display *, Colormap, XColor *));
++void xvFreeColors PARM((Display *, Colormap, u_long *, int, u_long));
++void FreeColors PARM((void));
++void ApplyEditColor PARM((int));
++int MakeStdCmaps PARM((void));
++void MakeBrowCmap PARM((void));
++void ChangeCmapMode PARM((int, int, int));
+
+-byte *Conv8to24 PARM((byte *, int, int, byte *, byte *, byte *));
+
+ /**************************** XVCTRL.C **************************/
+-void CreateCtrl PARM((char *));
++void CreateCtrl PARM((const char *));
+ void SetButtPix PARM((BUTT *, Pixmap, int, int));
+ Pixmap MakePix1 PARM((Window, byte *, int, int));
+
+@@ -1337,7 +1608,7 @@
+ void DrawCtrlStr PARM((void));
+ void ScrollToCurrent PARM((LIST *));
+
+-void LSCreate PARM((LIST *, Window, int, int, int, int, int,
++void LSCreate PARM((LIST *, Window, int, int, int, int, int,
+ char **, int, u_long, u_long, u_long, u_long,
+ void (*)(int, SCRL *), int, int));
+
+@@ -1346,20 +1617,56 @@
+ void LSChangeData PARM((LIST *, char **, int));
+ void LSNewData PARM((LIST *, char **, int));
+ void LSKey PARM((LIST *, int));
++int rd_str_cl PARM((const char *, const char *, int));
+
+
+-/*************************** XVINFO.C ***************************/
+-void CreateInfo PARM((char *));
+-void InfoBox PARM((int));
+-void RedrawInfo PARM((int, int, int, int));
+-void SetInfoMode PARM((int));
+-char *GetISTR PARM((int));
++/**************************** XVCUT.C ***************************/
++int CutAllowed PARM((void));
++int PasteAllowed PARM((void));
++void DoImgCopy PARM((void));
++void DoImgCut PARM((void));
++void DoImgClear PARM((void));
++void DoImgPaste PARM((void));
+
+-#if defined(__STDC__) && !defined(NOSTDHDRS)
+-void SetISTR(int, ...);
+-#else
+-void SetISTR();
+-#endif
++void SaveToClip PARM((byte *));
++void InitSelection PARM((void));
++int HaveSelection PARM((void));
++int GetSelType PARM((void));
++void GetSelRCoords PARM((int *, int *, int *, int *));
++void EnableSelection PARM((int));
++void DrawSelection PARM((int));
++int DoSelection PARM((XButtonEvent *));
++void MoveGrowSelection PARM((int, int, int, int));
++void BlinkSelection PARM((int));
++void FlashSelection PARM((int));
++
++void CropRect2Rect PARM((int*,int*,int*,int*, int,int,int,int));
++void CoordE2C PARM((int, int, int *, int *));
++void CoordC2E PARM((int, int, int *, int *));
++void CoordP2C PARM((int, int, int *, int *));
++void CoordC2P PARM((int, int, int *, int *));
++void CoordP2E PARM((int, int, int *, int *));
++void CoordE2P PARM((int, int, int *, int *));
++
++
++/*************************** XVDFLT.C ***************************/
++void LoadDfltPic PARM((PICINFO *));
++void xbm2pic PARM((byte *, int, int, byte *, int, int, int, int,
++ int));
++void DrawStr2Pic PARM((char *, int, int, byte *, int, int, int));
++
++
++/*************************** XVDIAL.C ***************************/
++void DCreate PARM((DIAL *, Window, int, int, int, int,
++ double, double, double, double, double,
++ u_long, u_long, u_long, u_long,
++ const char *, const char *));
++
++void DSetRange PARM((DIAL *, double,double,double,double,double));
++void DSetVal PARM((DIAL *, double));
++void DSetActive PARM((DIAL *, int));
++void DRedraw PARM((DIAL *));
++int DTrack PARM((DIAL *, int, int));
+
+
+ /**************************** XVDIR.C ***************************/
+@@ -1376,15 +1683,15 @@
+ void TrackDDirW PARM((int,int));
+ int DirKey PARM((int));
+ int DoSave PARM((void));
+-void SetDirFName PARM((char *));
++void SetDirFName PARM((const char *));
+ char *GetDirFName PARM((void));
+ char *GetDirFullName PARM((void));
+ void SetDirSaveMode PARM((int, int));
+ int Globify PARM((char *));
+-FILE *OpenOutFile PARM((char *));
+-int CloseOutFile PARM((FILE *, char *, int));
++FILE *OpenOutFile PARM((const char *));
++int CloseOutFile PARM((FILE *, const char *, int));
+
+-byte *GenSavePic PARM((int*, int*,int*, int*, int*,
++byte *GenSavePic PARM((int*, int*,int*, int*, int*,
+ byte**, byte**, byte**));
+ void GetSaveSize PARM((int *, int *));
+
+@@ -1392,47 +1699,30 @@
+ int CheckPoll PARM((int));
+ void DIRDeletedFile PARM((char *));
+ void DIRCreatedFile PARM((char *));
++FILE *pic2_OpenOutFile PARM((char *, int *));
++void pic2_KillNullFile PARM((FILE *));
++int OpenOutFileDesc PARM((char *));
+
+
+-/*************************** XVBROWSE.C ************************/
+-void CreateBrowse PARM((char *, char *, char *, char *, char *));
+-void OpenBrowse PARM((void));
+-void HideBrowseWindows PARM((void));
+-void UnHideBrowseWindows PARM((void));
+-void SetBrowseCursor PARM((Cursor));
+-void KillBrowseWindows PARM((void));
+-int BrowseCheckEvent PARM((XEvent *, int *, int *));
+-int BrowseDelWin PARM((Window));
+-void SetBrowStr PARM((char *));
+-void RegenBrowseIcons PARM((void));
+-void BRDeletedFile PARM((char *));
+-void BRCreatedFile PARM((char *));
+-
+-
+-/*************************** XVTEXT.C ************************/
+-void CreateTextWins PARM((char *, char *));
+-void TextView PARM((char *));
+-void OpenTextView PARM((char *, int, char *, int));
+-
+-void OpenCommentText PARM((void));
+-void CloseCommentText PARM((void));
+-void ChangeCommentText PARM((void));
+-
+-void ShowLicense PARM((void));
+-void ShowKeyHelp PARM((void));
+-
+-void HideTextWindows PARM((void));
+-void UnHideTextWindows PARM((void));
+-void RaiseTextWindows PARM((void));
+-void SetTextCursor PARM((Cursor));
+-void KillTextWindows PARM((void));
+-int TextCheckEvent PARM((XEvent *, int *, int *));
+-int TextDelWin PARM((Window));
++/****************************** XVEVENT.C ****************************/
++int EventLoop PARM((void));
++int HandleEvent PARM((XEvent *, int *));
+
++void NewCutBuffer PARM((char *));
++void DrawWindow PARM((int,int,int,int));
++void WResize PARM((int, int));
++void WRotate PARM((void));
++void WCrop PARM((int, int, int, int));
++void WUnCrop PARM((void));
++void GetWindowPos PARM((XWindowAttributes *));
++void SetWindowPos PARM((XWindowAttributes *));
++void SetEpicMode PARM((void));
++int xvErrorHandler PARM((Display *, XErrorEvent *));
+
+
+ /**************************** XVGAM.C **************************/
+-void CreateGam PARM((char *, double, double, double, double, int));
++void CreateGam PARM((const char *, double, double, double, double,
++ int));
+ int GamCheckEvent PARM((XEvent *));
+ void GamBox PARM((int));
+ void NewCMap PARM((void));
+@@ -1450,173 +1740,344 @@
+ byte *GammifyPic24 PARM((byte *, int, int));
+ void GamSetAutoApply PARM((int));
+
+-/*************************** XVSCRL.C ***************************/
+-void SCCreate PARM((SCRL *, Window, int, int, int, int,
+- int, int, int, int, u_long, u_long,
+- u_long, u_long, void (*)(int, SCRL *)));
+
+-void SCChange PARM((SCRL *, int, int, int, int, int,
+- int, int, int));
++/**************************** XVGRAB.C ***************************/
++int Grab PARM((void));
++int LoadGrab PARM((PICINFO *));
+
+-void SCSetRange PARM((SCRL *, int, int, int, int));
+-int SCSetVal PARM((SCRL *, int));
+-void SCRedraw PARM((SCRL *));
+-void SCTrack PARM((SCRL *, int, int));
+
++/**************************** XVGRAF.C ***************************/
++void CreateGraf PARM((GRAF *, Window, int, int,
++ u_long, u_long, const char *));
+
+-/*************************** XVDIAL.C ***************************/
+-void DCreate PARM((DIAL *, Window, int, int, int, int, int,
+- int, int, int, u_long, u_long, u_long,
+- u_long, char *, char *));
++void InitGraf PARM((GRAF *));
++void RedrawGraf PARM((GRAF *, int));
++int ClickGraf PARM((GRAF *, Window, int, int));
++int GrafKey PARM((GRAF *, char *));
++void GenerateGrafFunc PARM((GRAF *, int));
++void Graf2Str PARM((GRAF_STATE *, char *));
++int Str2Graf PARM((GRAF_STATE *, const char *));
++void GetGrafState PARM((GRAF *, GRAF_STATE *));
++int SetGrafState PARM((GRAF *, GRAF_STATE *));
++void InitSpline PARM((int *, int *, int, double *));
++double EvalSpline PARM((int *, int *, double *, int, double));
+
+-void DSetRange PARM((DIAL *, int, int, int, int));
+-void DSetVal PARM((DIAL *, int));
+-void DSetActive PARM((DIAL *, int));
+-void DRedraw PARM((DIAL *));
+-int DTrack PARM((DIAL *, int, int));
+
++/*************************** XVIMAGE.C ***************************/
++void Resize PARM((int, int));
++void GenerateCpic PARM((void));
++void GenerateEpic PARM((int, int));
++void DoZoom PARM((int, int, u_int));
++void Crop PARM((void));
++void UnCrop PARM((void));
++void AutoCrop PARM((void));
++int DoAutoCrop PARM((void));
++void DoCrop PARM((int, int, int, int));
++void Rotate PARM((int));
++void DoRotate PARM((int));
++void RotatePic PARM((byte *, int, int *, int *, int));
++void Flip PARM((int));
++void FlipPic PARM((byte *, int, int, int));
++void InstallNewPic PARM((void));
++void DrawEpic PARM((void));
++void KillOldPics PARM((void));
+
+-/**************************** XVBUTT.C ***************************/
+-void BTCreate PARM((BUTT *, Window, int, int, u_int, u_int,
+- char *, u_long, u_long, u_long, u_long));
++byte *FSDither PARM((byte *, int, int, int,
++ byte *, byte *, byte *, int, int));
+
+-void BTSetActive PARM((BUTT *, int));
+-void BTRedraw PARM((BUTT *));
+-int BTTrack PARM((BUTT *));
++void CreateXImage PARM((void));
++XImage *Pic8ToXImage PARM((byte *, u_int, u_int, u_long *,
++ byte *, byte *, byte *));
+
++XImage *Pic24ToXImage PARM((byte *, u_int, u_int));
+
+-RBUTT *RBCreate PARM((RBUTT *, Window, int, int, char *,
+- u_long, u_long, u_long, u_long));
++void Set824Menus PARM((int));
++void Change824Mode PARM((int));
++void FreeEpic PARM((void));
++void InvertPic24 PARM((byte *, int, int));
+
+-void RBRedraw PARM((RBUTT *, int));
+-void RBSelect PARM((RBUTT *, int));
+-int RBWhich PARM((RBUTT *));
+-int RBCount PARM((RBUTT *));
+-void RBSetActive PARM((RBUTT *, int, int));
+-int RBClick PARM((RBUTT *, int, int));
+-int RBTrack PARM((RBUTT *, int));
++byte *XVGetSubImage PARM((byte *, int, int,int, int,int,int,int));
+
++int DoPad PARM((int, char *, int, int, int, int));
++int LoadPad PARM((PICINFO *, char *));
+
+-void CBCreate PARM((CBUTT *, Window, int, int, char *,
+- u_long, u_long, u_long, u_long));
+
+-void CBRedraw PARM((CBUTT *));
+-void CBSetActive PARM((CBUTT *, int));
+-int CBClick PARM((CBUTT *,int,int));
+-int CBTrack PARM((CBUTT *));
++/*************************** XVINFO.C ***************************/
++void CreateInfo PARM((const char *));
++void InfoBox PARM((int));
++void RedrawInfo PARM((int, int, int, int));
++void SetInfoMode PARM((int));
++char *GetISTR PARM((int));
+
++#if defined(__STDC__) && !defined(NOSTDHDRS)
++void SetISTR(int, ...);
++#else
++void SetISTR();
++#endif
+
+-void MBCreate PARM((MBUTT *, Window, int, int, u_int, u_int,
+- char *,
+- char **, int,u_long,u_long, u_long, u_long));
+
+-void MBRedraw PARM((MBUTT *));
+-void MBSetActive PARM((MBUTT *, int));
+-int MBWhich PARM((MBUTT *));
+-void MBSelect PARM((MBUTT *, int));
+-int MBClick PARM((MBUTT *, int, int));
+-int MBTrack PARM((MBUTT *));
++/*************************** XVMISC.C ***************************/
++void StoreDeleteWindowProp PARM((Window));
++Window CreateWindow PARM((const char *, const char *, const char *,
++ int, int, u_long, u_long, int));
++void DrawString PARM((Window, int, int, const char *));
++void CenterString PARM((Window, int, int, const char *));
++void ULineString PARM((Window, int, int, const char *));
++int StringWidth PARM((const char *));
++int CursorKey PARM((KeySym, int, int));
++void FakeButtonPress PARM((BUTT *));
++void FakeKeyPress PARM((Window, KeySym));
++void GenExpose PARM((Window, int, int, u_int, u_int));
++void DimRect PARM((Window, int, int, u_int, u_int, u_long));
++
++void Draw3dRect PARM((Window, int, int, u_int, u_int, int, int,
++ u_long, u_long, u_long));
++
++void RemapKeyCheck PARM((KeySym, char *, int *));
++void xvDestroyImage PARM((XImage *));
++void SetCropString PARM((void));
++void SetSelectionString PARM((void));
++void Warning PARM((void));
++void FatalError PARM((const char *));
++void Quit PARM((int));
++void LoadFishCursors PARM((void));
++void WaitCursor PARM((void));
++void SetCursors PARM((int));
++const char *BaseName PARM((const char *));
++
++void DrawTempGauge PARM((Window, int, int, int, int, double, u_long,
++ u_long, u_long, u_long, const char *));
++void ProgressMeter PARM((int, int, int, const char *));
++void XVDeletedFile PARM((char *));
++void XVCreatedFile PARM((char *));
++void xvbcopy PARM((const char *, char *, size_t));
++int xvbcmp PARM((const char *, const char *, size_t));
++void xvbzero PARM((char *, size_t));
++void xv_getwd PARM((char *, size_t));
++char *xv_strstr PARM((const char *, const char *));
++FILE *xv_fopen PARM((const char *, const char *));
++void xv_mktemp PARM((char *, const char *));
++void Timer PARM((int));
+
+
+-/**************************** XVGRAF.C ***************************/
+-void CreateGraf PARM((GRAF *, Window, int, int,
+- u_long, u_long, char *));
++/*************************** XVPOPUP.C ***************************/
++void CenterMapWindow PARM((Window, int, int, int, int));
++int PopUp PARM((const char *, const char **, int));
++void ErrPopUp PARM((const char *, const char *));
++int GetStrPopUp PARM((const char *, const char **, int, char *, int,
++ const char *, int));
++int GrabPopUp PARM((int *, int *));
++int PadPopUp PARM((int *, char **, int *, int *, int *, int *));
++void ClosePopUp PARM((void));
++void OpenAlert PARM((const char *));
++void CloseAlert PARM((void));
++int PUCheckEvent PARM((XEvent *));
+
+-void InitGraf PARM((GRAF *));
+-void RedrawGraf PARM((GRAF *, int));
+-int ClickGraf PARM((GRAF *, Window, int, int));
+-int GrafKey PARM((GRAF *, char *));
+-void GenerateGrafFunc PARM((GRAF *, int));
+-void Graf2Str PARM((GRAF_STATE *, char *));
+-int Str2Graf PARM((GRAF_STATE *, char *));
+-void GetGrafState PARM((GRAF *, GRAF_STATE *));
+-int SetGrafState PARM((GRAF *, GRAF_STATE *));
+-void InitSpline PARM((int *, int *, int, double *));
+-double EvalSpline PARM((int *, int *, double *, int, double));
+
++/**************************** XVROOT.C ****************************/
++void MakeRootPic PARM((void));
++void ClearRoot PARM((void));
++void SaveRootInfo PARM((void));
++void KillOldRootInfo PARM((void));
+
+-/**************************** XVGIF.C ***************************/
+-int LoadGIF PARM((char *, PICINFO *));
+
+-/*************************** XVGIFWR.C **************************/
+-int WriteGIF PARM((FILE *, byte *, int, int, int,
+- byte *, byte *, byte *, int, int, char *));
++/*************************** XVSCRL.C ***************************/
++void SCCreate PARM((SCRL *, Window, int, int, int, int,
++ int, int, int, int, u_long, u_long,
++ u_long, u_long, void (*)(int, SCRL *)));
+
+-/**************************** XVPM.C ****************************/
+-int LoadPM PARM((char *, PICINFO *));
+-int WritePM PARM((FILE *, byte *, int, int, int, byte *,
+- byte *, byte *, int, int, char *));
++void SCChange PARM((SCRL *, int, int, int, int, int,
++ int, int, int));
+
+-/**************************** XVPBM.C ***************************/
+-int LoadPBM PARM((char *, PICINFO *));
+-int WritePBM PARM((FILE *, byte *, int, int, int, byte *,
+- byte *, byte *, int, int, int, char *));
++void SCSetRange PARM((SCRL *, int, int, int, int));
++int SCSetVal PARM((SCRL *, int));
++void SCRedraw PARM((SCRL *));
++void SCTrack PARM((SCRL *, int, int));
+
+-/**************************** XVXBM.C ***************************/
+-int LoadXBM PARM((char *, PICINFO *));
+-int WriteXBM PARM((FILE *, byte *, int, int, byte *, byte *,
+- byte *, char *));
+
+-/**************************** XVSUNRAS.C ***************************/
+-int LoadSunRas PARM((char *, PICINFO *));
+-int WriteSunRas PARM((FILE *, byte *, int, int, int, byte *,
+- byte *, byte*, int, int, int));
++/*************************** XVSMOOTH.C ***************************/
++byte *SmoothResize PARM((byte *, int, int, int, int, byte *, byte *,
++ byte *, byte *, byte *, byte *, int));
+
+-/**************************** XVBMP.C ***************************/
+-int LoadBMP PARM((char *, PICINFO *));
+-int WriteBMP PARM((FILE *, byte *, int, int, int, byte *,
+- byte *, byte *, int, int));
++byte *Smooth24 PARM((byte *, int, int, int, int, int,
++ byte *, byte *, byte *));
+
+-/**************************** XVRLE.C ***************************/
+-int LoadRLE PARM((char *, PICINFO *));
++byte *DoColorDither PARM((byte *, byte *, int, int, byte *, byte *,
++ byte *, byte *, byte *, byte *, int));
+
+-/**************************** XVIRIS.C ***************************/
+-int LoadIRIS PARM((char *, PICINFO *));
+-int WriteIRIS PARM((FILE *, byte *, int, int, int, byte *,
+- byte *, byte *, int, int));
++byte *Do332ColorDither PARM((byte *, byte *, int, int, byte *, byte *,
++ byte *, byte *, byte *, byte *, int));
+
+-/**************************** XVPCX.C ***************************/
+-int LoadPCX PARM((char *, PICINFO *));
+
+-/**************************** XVIFF.C ***************************/
+-int LoadIFF PARM((char *, PICINFO *));
++/*************************** XVTEXT.C ************************/
++void CreateTextWins PARM((const char *, const char *));
++int TextView PARM((const char *));
++void OpenTextView PARM((const char *, int, const char *, int));
+
+-/**************************** XVTARGA.C ***************************/
+-int LoadTarga PARM((char *, PICINFO *));
+-int WriteTarga PARM((FILE *, byte *, int, int, int, byte *,
+- byte *, byte *, int, int));
++void OpenCommentText PARM((void));
++void CloseCommentText PARM((void));
++void ChangeCommentText PARM((void));
+
+-/**************************** XVXPM.C ***************************/
+-int LoadXPM PARM((char *, PICINFO *));
+-int WriteXPM PARM((FILE *, byte *, int, int, int, byte *,
+- byte *, byte *, int, int, char *, char *));
++void ShowLicense PARM((void));
++void ShowKeyHelp PARM((void));
+
+-/**************************** XVXWD.C ***************************/
+-int LoadXWD PARM((char *, PICINFO *));
++void HideTextWindows PARM((void));
++void UnHideTextWindows PARM((void));
++void RaiseTextWindows PARM((void));
++void SetTextCursor PARM((Cursor));
++void KillTextWindows PARM((void));
++int TextCheckEvent PARM((XEvent *, int *, int *));
++int TextDelWin PARM((Window));
++
++int CharsetCheckEvent PARM((XEvent *));
++int CharsetDelWin PARM((Window));
++
++
++/**************************** XVVD.C ****************************/
++void Vdinit PARM((void));
++void Vdsettle PARM((void));
++int Chvdir PARM((char *));
++void Dirtovd PARM((char *));
++void Vdtodir PARM((char *));
++void Dirtosubst PARM((char *));
++int Mkvdir PARM((char *));
++void Mkvdir_force PARM((char *));
++int Rmvdir PARM((char *));
++int Movevdir PARM((char *, char *));
++int Isarchive PARM((char *));
++int Isvdir PARM((char *));
++void vd_HUPhandler PARM((void));
++void vd_handler PARM((int));
++int vd_Xhandler PARM((Display *, XErrorEvent *));
++int vd_XIOhandler PARM((Display *));
++void vd_handler_setup PARM((void));
++
++
++
++/*=======================================================================*/
++/* IMAGE FORMATS */
++/*=======================================================================*/
++
++/**************************** XVBMP.C ***************************/
++int LoadBMP PARM((char *, PICINFO *));
++int WriteBMP PARM((FILE *, byte *, int, int, int, byte *,
++ byte *, byte *, int, int));
+
+ /**************************** XVFITS.C ***************************/
+ int LoadFITS PARM((char *, PICINFO *, int));
+ int WriteFITS PARM((FILE *, byte *, int, int, int, byte *,
+ byte *, byte *, int, int, char *));
+
++/**************************** XVGIF.C ***************************/
++int LoadGIF PARM((char *, PICINFO *));
++
++/**************************** XVGIFWR.C **************************/
++int WriteGIF PARM((FILE *, byte *, int, int, int,
++ byte *, byte *, byte *, int, int, char *));
++
++/**************************** XVHIPS.C ***************************/
++int LoadHIPS PARM((char *, PICINFO *));
++
++/**************************** XVIFF.C ***************************/
++int LoadIFF PARM((char *, PICINFO *));
++
++/**************************** XVIRIS.C ***************************/
++int LoadIRIS PARM((char *, PICINFO *));
++int WriteIRIS PARM((FILE *, byte *, int, int, int, byte *,
++ byte *, byte *, int, int));
++
++/**************************** XVJP2K.C ***************************/
++int LoadJPC PARM((char *, register PICINFO *, int));
++int LoadJP2 PARM((char *, register PICINFO *, int));
++void CreateJP2KW PARM((void));
++void JP2KSaveParams PARM((int, char *, int));
++void JP2KDialog PARM((int vis));
++int JP2KCheckEvent PARM((register XEvent *));
++void VersionInfoJP2K PARM((void)); /* GRR 20070304 */
++
+ /**************************** XVJPEG.C ***************************/
+ int LoadJFIF PARM((char *, PICINFO *, int));
+ void CreateJPEGW PARM((void));
+ void JPEGDialog PARM((int));
+ int JPEGCheckEvent PARM((XEvent *));
+ void JPEGSaveParams PARM((char *, int));
++void VersionInfoJPEG PARM((void)); /* GRR 19980605 */
+
+-/**************************** XVTIFF.C ***************************/
+-int LoadTIFF PARM((char *, PICINFO *));
+-void CreateTIFFW PARM((void));
+-void TIFFDialog PARM((int));
+-int TIFFCheckEvent PARM((XEvent *));
+-void TIFFSaveParams PARM((char *, int));
++/**************************** XVMAG.C ***************************/
++int LoadMAG PARM((char *, PICINFO *));
++int WriteMAG PARM((FILE *, byte *, int, int, int,
++ byte *, byte *, byte *, int, int, char *));
++
++/**************************** XVMAKI.C ***************************/
++int LoadMAKI PARM((char *, PICINFO *));
++int WriteMAKI PARM((FILE *, byte *, int, int, int,
++ byte *, byte *, byte *, int, int));
++
++/**************************** XVMGCSFX.C ***************************/
++int is_mgcsfx PARM((char *, unsigned char *, int));
++char *mgcsfx_auto_input_com PARM((char *));
++int LoadMGCSFX PARM((char *, PICINFO *));
++void CreateMGCSFXW PARM((void));
++void MGCSFXDialog PARM((int));
++int MGCSFXCheckEvent PARM((XEvent *));
++int MGCSFXSaveParams PARM((char *, int));
++
++int getInputCom PARM((void));
++int getOutputCom PARM((void));
++
++/**************************** XVPBM.C ***************************/
++#ifdef HAVE_MGCSFX
++int LoadPBM PARM((char *, PICINFO *, int));
++#else
++int LoadPBM PARM((char *, PICINFO *));
++#endif
++int WritePBM PARM((FILE *, byte *, int, int, int, byte *,
++ byte *, byte *, int, int, int, char *));
++
++/**************************** XVPCD.C ***************************/
++int LoadPCD PARM((char *, PICINFO *, int));
++void CreatePCDW PARM((void));
++void PCDDialog PARM((int));
++int PCDCheckEvent PARM((XEvent *));
++void PCDSetParamOptions PARM((const char *));
++
++/**************************** XVPCX.C ***************************/
++int LoadPCX PARM((char *, PICINFO *));
+
+ /**************************** XVPDS.C ***************************/
+ int LoadPDS PARM((char *, PICINFO *));
+
+-/*************************** XVPS.C ***************************/
++/**************************** XVPI.C ***************************/
++int LoadPi PARM((char *, PICINFO *));
++int WritePi PARM((FILE *, byte *, int, int, int,
++ byte *, byte *, byte *, int, int, char *));
++
++/**************************** XVPIC.C ***************************/
++int LoadPIC PARM((char *, PICINFO *));
++int WritePIC PARM((FILE *, byte *, int, int, int,
++ byte *, byte *, byte *, int, int, char *));
++
++/**************************** XVPIC2.C ***************************/
++int LoadPIC2 PARM((char *, PICINFO *, int));
++void CreatePIC2W PARM((void));
++void PIC2Dialog PARM((int));
++int PIC2CheckEvent PARM((XEvent *));
++int PIC2SetParamOptions PARM((char *));
++
++/**************************** XVPM.C ****************************/
++int LoadPM PARM((char *, PICINFO *));
++int WritePM PARM((FILE *, byte *, int, int, int, byte *,
++ byte *, byte *, int, int, char *));
++
++/**************************** XVPNG.C ***************************/
++int LoadPNG PARM((char *, PICINFO *));
++void CreatePNGW PARM((void));
++void PNGDialog PARM((int));
++int PNGCheckEvent PARM((XEvent *));
++void PNGSaveParams PARM((char *, int));
++void VersionInfoPNG PARM((void)); /* GRR 19980605 */
++
++/**************************** XVPS.C ****************************/
+ void CreatePSD PARM((char *));
+ void PSDialog PARM((int));
+ int PSCheckEvent PARM((XEvent *));
+@@ -1624,56 +2085,46 @@
+ void PSResize PARM((void));
+ int LoadPS PARM((char *, PICINFO *, int));
+
+-/*************************** XVPOPUP.C ***************************/
+-void CenterMapWindow PARM((Window, int, int, int, int));
+-int PopUp PARM((char *, char **, int));
+-void ErrPopUp PARM((char *, char *));
+-int GetStrPopUp PARM((char *, char **, int, char *, int,
+- char *, int));
+-int GrabPopUp PARM((int *, int *));
+-int PadPopUp PARM((int *, char **, int *, int *, int *, int *));
+-void ClosePopUp PARM((void));
+-void OpenAlert PARM((char *));
+-void CloseAlert PARM((void));
+-int PUCheckEvent PARM((XEvent *));
+-void TextRect PARM((Window, char *, int, int, int, int, u_long));
++/**************************** XVRLE.C ***************************/
++int LoadRLE PARM((char *, PICINFO *));
+
+-/*************************** XVDFLT.C ***************************/
+-void LoadDfltPic PARM((PICINFO *));
+-void xbm2pic PARM((byte *, int, int, byte *, int, int, int, int,
+- int));
+-void DrawStr2Pic PARM((char *, int, int, byte *, int, int, int));
++/**************************** XVSUNRAS.C ***************************/
++int LoadSunRas PARM((char *, PICINFO *));
++int WriteSunRas PARM((FILE *, byte *, int, int, int, byte *,
++ byte *, byte*, int, int, int));
+
+-/**************************** XVGRAB.C ***************************/
+-int Grab PARM((void));
+-int LoadGrab PARM((PICINFO *));
++/**************************** XVTARGA.C ***************************/
++int LoadTarga PARM((char *, PICINFO *));
++int WriteTarga PARM((FILE *, byte *, int, int, int, byte *,
++ byte *, byte *, int, int));
+
++/**************************** XVTIFF.C ***************************/
++int LoadTIFF PARM((char *, PICINFO *, int));
++void CreateTIFFW PARM((void));
++void TIFFDialog PARM((int));
++int TIFFCheckEvent PARM((XEvent *));
++void TIFFSaveParams PARM((char *, int));
++void VersionInfoTIFF PARM((void)); /* GRR 19980605 */
+
+-/**************************** XVCUT.C ***************************/
+-int CutAllowed PARM((void));
+-int PasteAllowed PARM((void));
+-void DoImgCopy PARM((void));
+-void DoImgCut PARM((void));
+-void DoImgClear PARM((void));
+-void DoImgPaste PARM((void));
++/**************************** XVWBMP.C ***************************/
++int LoadWBMP PARM((char *, PICINFO *));
++int WriteWBMP PARM((FILE *, byte *, int, int, int, byte *,
++ byte *, byte *, int, int));
+
+-void SaveToClip PARM((byte *));
+-void InitSelection PARM((void));
+-int HaveSelection PARM((void));
+-int GetSelType PARM((void));
+-void GetSelRCoords PARM((int *, int *, int *, int *));
+-void EnableSelection PARM((int));
+-void DrawSelection PARM((int));
+-int DoSelection PARM((XButtonEvent *));
+-void MoveGrowSelection PARM((int, int, int, int));
+-void BlinkSelection PARM((int));
+-void FlashSelection PARM((int));
++/**************************** XVXBM.C ***************************/
++int LoadXBM PARM((char *, PICINFO *));
++int WriteXBM PARM((FILE *, byte *, int, int, byte *, byte *,
++ byte *, char *));
+
+-void CropRect2Rect PARM((int*,int*,int*,int*, int,int,int,int));
+-void CoordE2C PARM((int, int, int *, int *));
+-void CoordC2E PARM((int, int, int *, int *));
+-void CoordP2C PARM((int, int, int *, int *));
+-void CoordC2P PARM((int, int, int *, int *));
+-void CoordP2E PARM((int, int, int *, int *));
+-void CoordE2P PARM((int, int, int *, int *));
++/**************************** XVXPM.C ***************************/
++int LoadXPM PARM((char *, PICINFO *));
++int WriteXPM PARM((FILE *, byte *, int, int, int, byte *,
++ byte *, byte *, int, int, char *, char *));
+
++/**************************** XVXWD.C ***************************/
++int LoadXWD PARM((char *, PICINFO *));
++
++/**************************** XVZX.C [JCE] **********************/
++int LoadZX PARM((char *, PICINFO *));
++int WriteZX PARM((FILE *, byte *, int, int, int, byte *,
++ byte *, byte *, int, int, char *));
+diff -ru xv-3.10a/xv24to8.c xv-3.10a-enhancements/xv24to8.c
+--- xv-3.10a/xv24to8.c 1995-01-13 11:49:21.000000000 -0800
++++ xv-3.10a-enhancements/xv24to8.c 2007-05-12 13:56:44.000000000 -0700
+@@ -14,15 +14,15 @@
+ *
+ * The Conv24to8 procedure will set up the following: it will allocate, make
+ * & return 'pic8', a 'w' by 'h' (passed in values) 8-bit picture.
+- * it will load up the rmap, gmap and bmap colormap arrays. it will NOT
++ * it will load up the rmap, gmap and bmap colormap arrays. it will NOT
+ * calculate numcols, since the cmap sort procedure has to be called anyway
+ *
+- * Conv24to8 returns 'pic8' if successful, 'NULL' on failure (presumably on a
++ * Conv24to8 returns 'pic8' if successful, 'NULL' on failure (presumably on a
+ * malloc())
+ *
+- * The 'slow' code, while still based on Heckbert's Median Cut algorithm,
++ * The 'slow' code, while still based on Heckbert's Median Cut algorithm,
+ * has been shamelessly lifted from the Independent JPEG Group's software
+- * (jquant2.c), as (for a variety of reasons) theirs was far better than
++ * (jquant2.c), as (for a variety of reasons) theirs was far better than
+ * the version I was previously using. Thanks guys!
+ *
+ * Also, as is my way, I've stripped out most of the IJG's well-written
+@@ -65,10 +65,10 @@
+ {
+ /* returns pointer to new 8-bit-per-pixel image (w*h) if successful, or
+ NULL if unsuccessful */
+-
++
+ int i;
+ byte *pic8;
+-
++
+ if (!pic24) return NULL;
+
+ pic8 = (byte *) malloc((size_t) (w * h));
+@@ -79,9 +79,9 @@
+
+ if (nc<=0) nc = 255; /* 'nc == 0' breaks code */
+
+- if (!noqcheck && quick_check(pic24, w,h, pic8, rm,gm,bm, nc)) {
++ if (!noqcheck && quick_check(pic24, w,h, pic8, rm,gm,bm, nc)) {
+ SetISTR(ISTR_INFO,"No color compression was necessary.\n");
+- return pic8;
++ return pic8;
+ }
+
+ switch (conv24) {
+@@ -89,19 +89,19 @@
+ SetISTR(ISTR_INFO,"Doing 'quick' 24-bit to 8-bit conversion.");
+ i = quick_quant(pic24, w, h, pic8, rm, gm, bm, nc);
+ break;
+-
++
+ case CONV24_BEST:
+ SetISTR(ISTR_INFO,"Doing 'best' 24-bit to 8-bit conversion.");
+ i = ppm_quant(pic24, w, h, pic8, rm, gm, bm, nc);
+ break;
+-
++
+ case CONV24_SLOW:
+ default:
+ SetISTR(ISTR_INFO,"Doing 'slow' 24-bit to 8-bit conversion.");
+ i = slow_quant(pic24, w, h, pic8, rm, gm, bm, nc);
+ break;
+ }
+-
++
+ if (i) { free(pic8); pic8 = NULL; }
+ return pic8;
+ }
+@@ -134,7 +134,7 @@
+
+ return pic24;
+ }
+-
++
+
+ /****************************/
+ static int quick_check(pic24, w,h, pic8, rmap,gmap,bmap, maxcol)
+@@ -154,10 +154,10 @@
+ if (maxcol>256) maxcol = 256;
+
+ /* put the first color in the table by hand */
+- nc = 0; mid = 0;
++ nc = 0; mid = 0;
+
+ for (i=w*h,p=pic24; i; i--) {
+- col = (((u_long) *p++) << 16);
++ col = (((u_long) *p++) << 16);
+ col += (((u_long) *p++) << 8);
+ col += *p++;
+
+@@ -184,7 +184,7 @@
+ pic24 into colormap offsets into 'colors' */
+
+ for (i=w*h,p=pic24, pix=pic8; i; i--,pix++) {
+- col = (((u_long) *p++) << 16);
++ col = (((u_long) *p++) << 16);
+ col += (((u_long) *p++) << 8);
+ col += *p++;
+
+@@ -206,7 +206,7 @@
+
+ /* and load up the 'desired colormap' */
+ for (i=0; i<nc; i++) {
+- rmap[i] = colors[i]>>16;
++ rmap[i] = colors[i]>>16;
+ gmap[i] = (colors[i]>>8) & 0xff;
+ bmap[i] = colors[i] & 0xff;
+ }
+@@ -224,7 +224,7 @@
+ {
+ /* called after 'pic8' has been alloced, pWIDE,pHIGH set up, mono/1-bit
+ checked already */
+-
++
+ /* up to 256 colors: 3 bits R, 3 bits G, 2 bits B (RRRGGGBB) */
+ #define RMASK 0xe0
+ #define RSHIFT 0
+@@ -252,7 +252,7 @@
+ gmap[i] = (((i<<GSHIFT) & GMASK) * 255 + GMASK/2) / GMASK;
+ bmap[i] = (((i<<BSHIFT) & BMASK) * 255 + BMASK/2) / BMASK;
+ }
+-
++
+
+ thisline = (int *) malloc(pwide3 * sizeof(int));
+ nextline = (int *) malloc(pwide3 * sizeof(int));
+@@ -262,40 +262,40 @@
+ fprintf(stderr,"%s: unable to allocate memory in quick_quant()\n", cmd);
+ return(1);
+ }
+-
++
+ /* get first line of picture */
+ for (j=pwide3, tmpptr=nextline; j; j--) *tmpptr++ = (int) *p24++;
+-
++
+ for (i=0; i<h; i++) {
+ tmpptr = thisline; thisline = nextline; nextline = tmpptr; /* swap */
+-
++
+ if ((i&0x3f) == 0) WaitCursor();
+
+ if (i!=imax) /* get next line */
+ for (j=pwide3, tmpptr=nextline; j; j--)
+ *tmpptr++ = (int) *p24++;
+-
++
+ for (j=0, thisptr=thisline, nextptr=nextline; j<w; j++,pp++) {
+ r1 = *thisptr++; g1 = *thisptr++; b1 = *thisptr++;
+- RANGE(r1,0,255); RANGE(g1,0,255); RANGE(b1,0,255);
+-
++ RANGE(r1,0,255); RANGE(g1,0,255); RANGE(b1,0,255);
++
+ /* choose actual pixel value */
+- val = (((r1&RMASK)>>RSHIFT) | ((g1&GMASK)>>GSHIFT) |
++ val = (((r1&RMASK)>>RSHIFT) | ((g1&GMASK)>>GSHIFT) |
+ ((b1&BMASK)>>BSHIFT));
+ *pp = val;
+-
++
+ /* compute color errors */
+ r1 -= rmap[val];
+ g1 -= gmap[val];
+ b1 -= bmap[val];
+-
++
+ /* Add fractions of errors to adjacent pixels */
+ if (j!=jmax) { /* adjust RIGHT pixel */
+ thisptr[0] += (r1*7) / 16;
+ thisptr[1] += (g1*7) / 16;
+ thisptr[2] += (b1*7) / 16;
+ }
+-
++
+ if (i!=imax) { /* do BOTTOM pixel */
+ nextptr[0] += (r1*5) / 16;
+ nextptr[1] += (g1*5) / 16;
+@@ -316,7 +316,7 @@
+ }
+ }
+ }
+-
++
+ free(thisline);
+ free(nextline);
+ return 0;
+@@ -329,7 +329,7 @@
+ #undef BMASK
+ #undef BSHIFT
+ }
+-
++
+
+
+
+@@ -381,7 +381,7 @@
+
+ /* Luminance macro. */
+
+-/*
++/*
+ * #define PPM_LUMIN(p) \
+ * ( 0.299 * PPM_GETR(p) + 0.587 * PPM_GETG(p) + 0.114 * PPM_GETB(p) )
+ */
+@@ -449,18 +449,18 @@
+ byte *pic24, *pic8, *rmap, *gmap, *bmap;
+ int cols, rows, newcolors;
+ {
+- pixel** pixels;
+- register pixel* pP;
+- int row;
+- register int col, limitcol;
+- pixval maxval, newmaxval;
+- int colors;
+- register int index;
+- chist_vec chv, colormap;
+- chash_table cht;
+- int i;
+- unsigned char *picptr;
+- static char *fn = "ppmquant()";
++ pixel** pixels;
++ register pixel* pP;
++ int row;
++ register int col, limitcol;
++ pixval maxval, newmaxval;
++ int colors;
++ register int index;
++ chist_vec chv, colormap;
++ chash_table cht;
++ int i;
++ unsigned char *picptr;
++ static const char *fn = "ppmquant()";
+
+ index = 0;
+ maxval = 255;
+@@ -472,7 +472,7 @@
+
+ if (DEBUG) fprintf(stderr,"%s: remapping to ppm-style internal fmt\n", fn);
+ WaitCursor();
+-
++
+ pixels = (pixel **) malloc(rows * sizeof(pixel *));
+ if (!pixels) FatalError("couldn't allocate 'pixels' array");
+ for (row=0; row<rows; row++) {
+@@ -488,7 +488,7 @@
+ if (DEBUG) fprintf(stderr,"%s: done format remapping\n", fn);
+
+
+-
++
+
+ /*
+ * attempt to make a histogram of the colors, unclustered.
+@@ -503,7 +503,7 @@
+
+ chv = ppm_computechist(pixels, cols, rows, MAXCOLORS, &colors);
+ if (chv != (chist_vec) 0) break;
+-
++
+ if (DEBUG) fprintf(stderr, "%s: too many colors!\n", fn);
+ newmaxval = maxval / 2;
+ if (DEBUG) fprintf(stderr, "%s: rescaling colors (maxval=%d) %s\n",
+@@ -635,7 +635,7 @@
+ int boxes;
+
+ bv = (box_vector) malloc(sizeof(struct box) * newcolors);
+- colormap = (chist_vec)
++ colormap = (chist_vec)
+ malloc(sizeof(struct chist_item) * newcolors );
+
+ if (!bv || !colormap) FatalError("unable to malloc in mediancut()");
+@@ -723,7 +723,7 @@
+ else if (gl >= bl)
+ qsort((char*) &(chv[indx]), (size_t) clrs, sizeof(struct chist_item),
+ greencompare );
+- else
++ else
+ qsort((char*) &(chv[indx]), (size_t) clrs, sizeof(struct chist_item),
+ bluecompare );
+ }
+@@ -750,7 +750,7 @@
+ ++boxes;
+ qsort((char*) bv, (size_t) boxes, sizeof(struct box), sumcompare);
+ } /* while (boxes ... */
+-
++
+ /*
+ ** Ok, we've got enough boxes. Now choose a representative color for
+ ** each box. There are a number of possible ways to make this choice.
+@@ -761,7 +761,7 @@
+ ** method is used by switching the commenting on the REP_ defines at
+ ** the beginning of this source file.
+ */
+-
++
+ for (bi=0; bi<boxes; bi++) {
+ /* REP_AVERAGE_PIXELS version */
+ register int indx = bv[bi].index;
+@@ -791,7 +791,7 @@
+ static int redcompare(p1, p2)
+ const void *p1, *p2;
+ {
+- return (int) PPM_GETR( ((chist_vec)p1)->color ) -
++ return (int) PPM_GETR( ((chist_vec)p1)->color ) -
+ (int) PPM_GETR( ((chist_vec)p2)->color );
+ }
+
+@@ -799,7 +799,7 @@
+ static int greencompare(p1, p2)
+ const void *p1, *p2;
+ {
+- return (int) PPM_GETG( ((chist_vec)p1)->color ) -
++ return (int) PPM_GETG( ((chist_vec)p1)->color ) -
+ (int) PPM_GETG( ((chist_vec)p2)->color );
+ }
+
+@@ -807,7 +807,7 @@
+ static int bluecompare(p1, p2)
+ const void *p1, *p2;
+ {
+- return (int) PPM_GETB( ((chist_vec)p1)->color ) -
++ return (int) PPM_GETB( ((chist_vec)p1)->color ) -
+ (int) PPM_GETB( ((chist_vec)p2)->color );
+ }
+
+@@ -821,7 +821,7 @@
+
+
+ /****************************************************************************/
+-static chist_vec
++static chist_vec
+ ppm_computechist(pixels, cols, rows, maxcolors, colorsP)
+ pixel** pixels;
+ int cols, rows, maxcolors;
+@@ -840,7 +840,7 @@
+
+
+ /****************************************************************************/
+-static chash_table ppm_computechash(pixels, cols, rows,
++static chash_table ppm_computechash(pixels, cols, rows,
+ maxcolors, colorsP )
+ pixel** pixels;
+ int cols, rows, maxcolors;
+@@ -861,14 +861,14 @@
+
+ for (chl = cht[hash]; chl != (chist_list) 0; chl = chl->next)
+ if (PPM_EQUAL(chl->ch.color, *pP)) break;
+-
++
+ if (chl != (chist_list) 0) ++(chl->ch.value);
+ else {
+ if ((*colorsP)++ > maxcolors) {
+ ppm_freechash(cht);
+ return (chash_table) 0;
+ }
+-
++
+ chl = (chist_list) malloc(sizeof(struct chist_list_item));
+ if (!chl) FatalError("ran out of memory computing hash table");
+
+@@ -878,7 +878,7 @@
+ cht[hash] = chl;
+ }
+ }
+-
++
+ return cht;
+ }
+
+@@ -1114,7 +1114,7 @@
+ register int i;
+ register long maxc = 0;
+ boxptr which = NULL;
+-
++
+ for (i = 0, boxp = boxlist; i < numboxes; i++, boxp++) {
+ if (boxp->colorcount > maxc && boxp->volume > 0) {
+ which = boxp;
+@@ -1133,7 +1133,7 @@
+ register int i;
+ register INT32 maxv = 0;
+ boxptr which = NULL;
+-
++
+ for (i = 0, boxp = boxlist; i < numboxes; i++, boxp++) {
+ if (boxp->volume > maxv) {
+ which = boxp;
+@@ -1153,11 +1153,11 @@
+ int c0min,c0max,c1min,c1max,c2min,c2max;
+ INT32 dist0,dist1,dist2;
+ long ccount;
+-
++
+ c0min = boxp->c0min; c0max = boxp->c0max;
+ c1min = boxp->c1min; c1max = boxp->c1max;
+ c2min = boxp->c2min; c2max = boxp->c2max;
+-
++
+ if (c0max > c0min)
+ for (c0 = c0min; c0 <= c0max; c0++)
+ for (c1 = c1min; c1 <= c1max; c1++) {
+@@ -1229,7 +1229,7 @@
+ dist1 = ((c1max - c1min) << C1_SHIFT) * C1_SCALE;
+ dist2 = ((c2max - c2min) << C2_SHIFT) * C2_SCALE;
+ boxp->volume = dist0*dist0 + dist1*dist1 + dist2*dist2;
+-
++
+ ccount = 0;
+ for (c0 = c0min; c0 <= c0max; c0++)
+ for (c1 = c1min; c1 <= c1max; c1++) {
+@@ -1315,11 +1315,11 @@
+ long c0total = 0;
+ long c1total = 0;
+ long c2total = 0;
+-
++
+ c0min = boxp->c0min; c0max = boxp->c0max;
+ c1min = boxp->c1min; c1max = boxp->c1max;
+ c2min = boxp->c2min; c2max = boxp->c2max;
+-
++
+ for (c0 = c0min; c0 <= c0max; c0++)
+ for (c1 = c1min; c1 <= c1max; c1++) {
+ histp = & histogram[c0][c1][c2min];
+@@ -1332,7 +1332,7 @@
+ }
+ }
+ }
+-
++
+ sl_colormap[0][icolor] = (JSAMPLE) ((c0total + (total>>1)) / total);
+ sl_colormap[1][icolor] = (JSAMPLE) ((c1total + (total>>1)) / total);
+ sl_colormap[2][icolor] = (JSAMPLE) ((c2total + (total>>1)) / total);
+@@ -1505,12 +1505,12 @@
+ bptr = bestdist;
+ for (i = BOX_C0_ELEMS*BOX_C1_ELEMS*BOX_C2_ELEMS-1; i >= 0; i--)
+ *bptr++ = 0x7FFFFFFFL;
+-
++
+ /* Nominal steps between cell centers ("x" in Thomas article) */
+ #define STEP_C0 ((1 << C0_SHIFT) * C0_SCALE)
+ #define STEP_C1 ((1 << C1_SHIFT) * C1_SCALE)
+ #define STEP_C2 ((1 << C2_SHIFT) * C2_SCALE)
+-
++
+ for (i = 0; i < numcolors; i++) {
+ icolor = colorlist[i];
+ /* Compute (square of) distance from minc0/c1/c2 to this color */
+@@ -1576,7 +1576,7 @@
+ minc0 = (c0 << BOX_C0_SHIFT) + ((1 << C0_SHIFT) >> 1);
+ minc1 = (c1 << BOX_C1_SHIFT) + ((1 << C1_SHIFT) >> 1);
+ minc2 = (c2 << BOX_C2_SHIFT) + ((1 << C2_SHIFT) >> 1);
+-
++
+ numcolors = find_nearby_colors(minc0, minc1, minc2, colorlist);
+
+ /* Determine the actually nearest colors. */
+diff -ru xv-3.10a/xvalg.c xv-3.10a-enhancements/xvalg.c
+--- xv-3.10a/xvalg.c 1994-12-22 14:34:47.000000000 -0800
++++ xv-3.10a-enhancements/xvalg.c 2007-05-12 16:07:37.000000000 -0700
+@@ -38,7 +38,7 @@
+ double, int));
+ static void doPixel PARM((byte *,int,int,byte *, int,int,int,int,
+ int, int));
+-static void doSpread PARM((byte *,int,int,byte *, int,int,int,int,
++static void doSpread PARM((byte *,int,int,byte *, int,int,int,int,
+ int, int));
+ static void doMedianFilter PARM((byte *,int,int,byte *, int,int,int,int, int));
+
+@@ -53,7 +53,7 @@
+ static int start24bitAlg PARM((byte **, byte **));
+ static void end24bitAlg PARM((byte *, byte *));
+
+-static void printUTime PARM((char *));
++static void printUTime PARM((const char *));
+
+ static byte *origPic = (byte *) NULL;
+ static int origPicType;
+@@ -70,10 +70,11 @@
+
+ /***************************/
+ static void printUTime(str)
+- char *str;
++ const char *str;
+ {
+ #ifdef TIMING_TEST
+- int i; struct rusage ru;
++ int i;
++ struct rusage ru;
+
+ i = getrusage(RUSAGE_SELF, &ru);
+ fprintf(stderr,"%s: utime = %d.%d seconds\n",
+@@ -89,7 +90,7 @@
+ /************************************************************/
+ void AlgInit()
+ {
+- /* called whenver an image file is loaded. disposes of origPic
++ /* called whenver an image file is loaded. disposes of origPic
+ if neccessary, and points it to null */
+
+ if (origPic) free(origPic);
+@@ -160,16 +161,16 @@
+ {
+ /* runs a n*n convolution mask (all 1's) over 'pic',
+ producing a 24-bit version. Then calls 24to8 to generate a new 8-bit
+- image, and installs it.
++ image, and installs it.
+
+ Note that 'n' must be odd for things to work properly */
+
+- byte *pic24, *tmpPic;
+- int i, sx,sy,sw,sh, n;
+- static char *labels[] = { "\nOk", "\033Cancel" };
+- char txt[256];
+- static char buf[64] = { '3', '\0' };
+-
++ byte *pic24, *tmpPic;
++ int i, sx,sy,sw,sh, n;
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char txt[256];
++ static char buf[64] = { '3', '\0' };
++
+ sprintf(txt, "Blur: \n\n%s",
+ "Enter mask size (ex. 3, 5, 7, ...)");
+
+@@ -178,7 +179,7 @@
+ n = atoi(buf);
+
+ if (n < 1 || (n&1)!=1) {
+- ErrPopUp("Error: The value entered must be odd and greater than zero.",
++ ErrPopUp("Error: The value entered must be odd and greater than zero.",
+ "\nOh!");
+ return;
+ }
+@@ -194,7 +195,7 @@
+
+ if (start24bitAlg(&pic24, &tmpPic)) return;
+ xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
+-
++
+ doBlurConvolv(pic24, pWIDE,pHIGH, tmpPic, sx,sy,sw,sh, n);
+
+ end24bitAlg(pic24, tmpPic);
+@@ -207,12 +208,12 @@
+ {
+ /* runs an edge-enhancment algorithm */
+
+- byte *pic24, *tmpPic;
+- int i, sx,sy,sw,sh, n;
+- static char *labels[] = { "\nOk", "\033Cancel" };
+- char txt[256];
+- static char buf[64] = { '7', '5', '\0' };
+-
++ byte *pic24, *tmpPic;
++ int i, sx,sy,sw,sh, n;
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char txt[256];
++ static char buf[64] = { '7', '5', '\0' };
++
+ sprintf(txt, "Sharpen: \n\n%s",
+ "Enter enhancement factor (0-99%)");
+
+@@ -236,7 +237,7 @@
+
+ if (start24bitAlg(&pic24, &tmpPic)) return;
+ xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
+-
++
+ doSharpConvolv(pic24, pWIDE,pHIGH, tmpPic, sx,sy,sw,sh, n);
+
+ end24bitAlg(pic24, tmpPic);
+@@ -248,7 +249,7 @@
+ static void EdgeDetect()
+ {
+ byte *pic24, *p24, *tmpPic, *tlp;
+- char *str;
++ const char *str;
+ int i, j, v, maxv, sx,sy,sw,sh;
+
+ WaitCursor();
+@@ -264,7 +265,7 @@
+ xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
+
+ doEdgeConvolv(pic24, pWIDE, pHIGH, tmpPic, sx,sy,sw,sh);
+-
++
+ SetISTR(ISTR_INFO, "%snormalizing...", str);
+
+ /* Normalize results */
+@@ -292,19 +293,19 @@
+ /************************/
+ static void TinFoil()
+ {
+- byte *pic24, *p24, *tmpPic, *tp, *tlp;
+- char *str;
+- int i, j, v, maxv,sx,sy,sw,sh;
+-
++ byte *pic24, *tmpPic, *tp, *tlp;
++ const char *str;
++ int i, j, v, sx,sy,sw,sh;
++
+ WaitCursor();
+-
++
+ str = "Doing cheesy embossing effect...";
+ SetISTR(ISTR_INFO, str);
+-
++
+ if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
+ else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
+ CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
+-
++
+ if (start24bitAlg(&pic24, &tmpPic)) return;
+ xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
+
+@@ -315,9 +316,9 @@
+ *tp++ = 128; *tp++ = 128; *tp++ = 128;
+ }
+ }
+-
++
+ doAngleConvolv(pic24, pWIDE, pHIGH, tmpPic, sx,sy,sw,sh);
+-
++
+ /* mono-ify selected area of tmpPic */
+ for (i=sy; i<sy+sh; i++) {
+ tp = tlp = tmpPic + (i*pWIDE + sx) * 3;
+@@ -327,9 +328,9 @@
+ tp[0] = tp[1] = tp[2] = (byte) v;
+ }
+ }
+-
++
+ end24bitAlg(pic24, tmpPic);
+-}
++}
+
+
+ /************************/
+@@ -345,7 +346,7 @@
+ if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
+ else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
+ CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
+-
++
+ if (start24bitAlg(&pic24, &tmpPic)) return;
+ xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
+
+@@ -365,7 +366,7 @@
+ if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
+ else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
+ CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
+-
++
+ WaitCursor();
+
+ if (start24bitAlg(&pic24, &tmpPic)) return;
+@@ -381,12 +382,12 @@
+ static void FineRotate(clr)
+ int clr;
+ {
+- byte *pic24, *tmpPic;
+- int i,sx,sy,sw,sh;
+- double rotval;
+- static char *labels[] = { "\nOk", "\033Cancel" };
+- char txt[256];
+- static char buf[64] = { '\0' };
++ byte *pic24, *tmpPic;
++ int i,sx,sy,sw,sh;
++ double rotval;
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char txt[256];
++ static char buf[64] = { '\0' };
+
+ sprintf(txt, "Rotate (%s):\n\nEnter rotation angle, in degrees: (>0 = CCW)",
+ (clr ? "Clear" : "Copy"));
+@@ -396,12 +397,12 @@
+ rotval = atof(buf);
+
+ if (rotval == 0.0) return;
+-
++
+
+ if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
+ else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
+ CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
+-
++
+ WaitCursor();
+
+ if (start24bitAlg(&pic24, &tmpPic)) return;
+@@ -416,11 +417,11 @@
+ /************************/
+ static void Pixelize()
+ {
+- byte *pic24, *tmpPic;
+- int i,sx,sy,sw,sh, pixX,pixY,err;
+- static char *labels[] = { "\nOk", "\033Cancel" };
+- char txt[256];
+- static char buf[64] = { '4', '\0' };
++ byte *pic24, *tmpPic;
++ int i,sx,sy,sw,sh, pixX,pixY,err;
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char txt[256];
++ static char buf[64] = { '4', '\0' };
+
+ sprintf(txt, "Pixelize:\n\nEnter new pixel size, in image pixels: %s",
+ "(ex. '3', '5x8')");
+@@ -443,11 +444,11 @@
+ return;
+ }
+
+-
++
+ if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
+ else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
+ CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
+-
++
+ WaitCursor();
+
+ if (start24bitAlg(&pic24, &tmpPic)) return;
+@@ -463,11 +464,11 @@
+ /************************/
+ static void Spread()
+ {
+- byte *pic24, *tmpPic;
+- int i,sx,sy,sw,sh, pixX,pixY,err;
+- static char *labels[] = { "\nOk", "\033Cancel" };
+- char txt[256];
+- static char buf[64] = { '5', '\0' };
++ byte *pic24, *tmpPic;
++ int i,sx,sy,sw,sh, pixX,pixY,err;
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char txt[256];
++ static char buf[64] = { '5', '\0' };
+
+ sprintf(txt, "Spread:\n\nEnter spread factor (or x,y factors): %s",
+ "(ex. '10', '1x5')");
+@@ -493,11 +494,11 @@
+ return;
+ }
+
+-
++
+ if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
+ else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
+ CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
+-
++
+ WaitCursor();
+
+ if (start24bitAlg(&pic24, &tmpPic)) return;
+@@ -516,12 +517,12 @@
+ /* runs median filter algorithm (for n*n rect centered around each pixel,
+ replace with median value */
+
+- byte *pic24, *tmpPic;
+- int i, sx,sy,sw,sh, n;
+- static char *labels[] = { "\nOk", "\033Cancel" };
+- char txt[256];
+- static char buf[64] = { '3', '\0' };
+-
++ byte *pic24, *tmpPic;
++ int i, sx,sy,sw,sh, n;
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char txt[256];
++ static char buf[64] = { '3', '\0' };
++
+ sprintf(txt, "DeSpeckle (median filter): \n\n%s",
+ "Enter mask size (ex. 3, 5, 7, ...)");
+
+@@ -530,7 +531,7 @@
+ n = atoi(buf);
+
+ if (n < 1 || (n&1)!=1) {
+- ErrPopUp("Error: The value entered must be odd and greater than zero.",
++ ErrPopUp("Error: The value entered must be odd and greater than zero.",
+ "\nOh!");
+ return;
+ }
+@@ -546,7 +547,7 @@
+
+ if (start24bitAlg(&pic24, &tmpPic)) return;
+ xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
+-
++
+ doMedianFilter(pic24, pWIDE,pHIGH, tmpPic, sx,sy,sw,sh, n);
+
+ end24bitAlg(pic24, tmpPic);
+@@ -560,7 +561,7 @@
+ int w,h, selx,sely,selw,selh, n;
+ {
+
+- /* convolves with an n*n array, consisting of only 1's.
++ /* convolves with an n*n array, consisting of only 1's.
+ Operates on rectangular region 'selx,sely,selw,selh' (in pic coords)
+ Region is guaranteed to be completely within pic boundaries
+ 'n' must be odd */
+@@ -568,7 +569,7 @@
+ register byte *p24;
+ register int rsum,gsum,bsum;
+ byte *rp;
+- int i,j,k,x,y,x1,y1,count,n2;
++ int x,y,x1,y1,count,n2;
+
+
+ printUTime("start of blurConvolv");
+@@ -589,7 +590,7 @@
+ for (y1=y-n2; y1<=y+n2; y1++) {
+
+ if (y1>=sely && y1<sely+selh) {
+- p24 = pic24 + y1*w*3 +(x-n2)*3;
++ p24 = pic24 + y1*w*3 +(x-n2)*3;
+
+ for (x1=x-n2; x1<=x+n2; x1++) {
+ if (x1>=selx && x1<selx+selw) {
+@@ -631,7 +632,7 @@
+ byte *p24;
+ int rv, gv, bv;
+ byte *rp;
+- int i,j,k,x,y,x1,y1;
++ int i,x,y;
+ double fact, ifact, hue,sat,val, vsum;
+ double *linem1, *line0, *linep1, *tmpptr;
+
+@@ -673,7 +674,7 @@
+ for (y=sely+1; y<(sely+selh)-1; y++) {
+ ProgressMeter(sely+1, (sely+selh)-2, y, "Sharpen");
+ if ((y & 15) == 0) WaitCursor();
+-
++
+ tmpptr = linem1; linem1 = line0; line0 = linep1; linep1 = tmpptr;
+
+ /* get next line */
+@@ -691,7 +692,7 @@
+ vsum = linem1[i-1] + linem1[i] + linem1[i+1] +
+ line0 [i-1] + line0 [i] + line0 [i+1] +
+ linep1[i-1] + linep1[i] + linep1[i+1];
+-
++
+ rgb2hsv((int) p24[0], (int) p24[1], (int) p24[2], &hue, &sat, &val);
+
+ val = ((val - (fact * vsum) / 9) / ifact);
+@@ -723,22 +724,22 @@
+ {
+
+ /* convolves with two edge detection masks (vertical and horizontal)
+- simultaneously, taking Max(abs(results))
+-
++ simultaneously, taking Max(abs(results))
++
+ The two masks are (hard coded):
+
+ -1 0 1 -1 -1 -1
+ H = -1 0 1 and V = 0 0 0
+ -1 0 1 1 1 1
+
+- divided into
++ divided into
+ -1 0 0 0 0 0 0 0 1 0 1 0
+ a = 0 0 0 , b = -1 0 1 , c = 0 0 0 , d = 0 0 0 .
+ 0 0 1 0 0 0 -1 0 0 0 -1 0
+
+ So H = a + b + c, V = a - c - d.
+ gradient = max(abs(H),abs(V)).
+-
++
+ Also, only does pixels in which the masks fit fully onto the picture
+ (no pesky boundary conditionals) */
+
+@@ -746,7 +747,7 @@
+ register byte *p24;
+ register int bperlin, a, b, c, d, rsum, gsum, bsum;
+ byte *rp;
+- int i, x, y;
++ int x, y;
+
+
+ printUTime("start of edgeConvolv");
+@@ -818,13 +819,13 @@
+ {
+
+ /* convolves with edge detection mask, at 45 degrees to horizontal.
+-
++
+ The mask is (hard coded):
+
+ -2 -1 0
+ -1 0 1
+ 0 1 2
+-
++
+ Also, only does pixels in which the masks fit fully onto the picture
+ (no pesky boundary conditionals)
+
+@@ -833,7 +834,7 @@
+ register byte *p24;
+ register int bperlin,rsum,gsum,bsum;
+ byte *rp;
+- int i, x,y;
++ int x,y;
+
+
+ printUTime("start of doAngleConvolv");
+@@ -912,14 +913,14 @@
+ for each pixel in the image (assume, for a second, a grayscale image),
+ compute a histogram of the n*n rectangle centered on the pixel.
+ replace the pixel with the color that had the greatest # of hits in
+- the histogram. Note that 'n' should be odd.
++ the histogram. Note that 'n' should be odd.
+
+ I've modified the algorithm to do the *right* thing for RGB images.
+ (jhb, 6/94) */
+
+
+ register byte *pp;
+- register int bperlin, rsum,gsum,bsum;
++ register int bperlin;
+ byte *rp, *p24, *plin;
+ int i,j,k,x,y,n2,col,cnt,maxcnt;
+ int *nnrect;
+@@ -933,7 +934,7 @@
+
+ /* nnrect[] is an n*n array of ints, with '-1' meaning 'outside the region'
+ otherwise they'll have 24-bit RGB values */
+-
++
+ nnrect = (int *) malloc(n * n * sizeof(int));
+ if (!nnrect) FatalError("can't malloc nnrect[] in doOilPaint()\n");
+
+@@ -943,13 +944,13 @@
+
+ p24 = pic24 + ((y-n2)*w + selx-n2)*3; /* pts to top-left of mask */
+ rp = results + (y*w + selx)*3;
+-
++
+ for (x=selx; x<selx+selw; x++) {
+ /* fill 'nnrect' with valid pixels from n*n region centered round x,y */
+ pp = plin = p24;
+ for (i=y-n2, k=0; i<y+n2; i++) {
+ for (j=x-n2; j<x+n2; j++, k++, pp+=3) {
+- if (i>=sely && i<sely+selh && j>=selx && j<selx+selw) {
++ if (i>=sely && i<sely+selh && j>=selx && j<selx+selw) {
+ nnrect[k] = (((int) pp[0])<<16) | (((int) pp[1])<<8) | pp[2];
+ }
+ else nnrect[k] = -1;
+@@ -957,7 +958,7 @@
+ plin += bperlin; pp = plin;
+ }
+
+-
++
+ /* find 'most popular color' in nnrect, not counting '-1' */
+ maxcnt = cnt = col = 0;
+ for (i=0; i<n*n; i++) {
+@@ -1021,7 +1022,7 @@
+ p24 = pic24 + (y*w + selx) * 3;
+ rf += (double) p24[0]; gf += (double) p24[1]; bf += (double) p24[2];
+ i++;
+-
++
+ p24 = pic24 + (y*w + (selx+selw-1)) * 3;
+ rf += (double) p24[0]; gf += (double) p24[1]; bf += (double) p24[2];
+ i++;
+@@ -1047,7 +1048,7 @@
+ if (dx==0 && dy==0) { ex = selx; ey = sely; } /* don't care */
+ else if (dx==0) { ex = cx; ey = (dy<0) ? sely : sely+selh-1; }
+ else if (dy==0) { ey = cy; ex = (dx<0) ? selx : selx+selw-1; }
+- else {
++ else {
+ slope = ((double) dy) / dx;
+ if (fabs(slope) > fabs(dslope)) { /* y axis is major */
+ ey = (dy<0) ? sely : sely+selh-1;
+@@ -1092,7 +1093,7 @@
+ printUTime("end of blend");
+ }
+
+-
++
+
+ /************************/
+ static void doRotate(pic24, w, h, results, selx,sely,selw,selh, rotval, clear)
+@@ -1104,7 +1105,7 @@
+ by the amount specified in degrees (rotval), and stores the result in
+ 'results', which is also a w*h 24-bit image. The rotated bits are
+ clipped to fit in 'results'. If 'clear', the (unrotated) rectangular
+- region is cleared (in results) first.
++ region is cleared (in results) first.
+ sel[x,y,w,h] is guaranteed to be within image bounds */
+
+ byte *pp, *dp;
+@@ -1118,7 +1119,7 @@
+ printUTime("start of rotate");
+
+ /*
+- * cfx,cfy - center point of sel rectangle (double)
++ * cfx,cfy - center point of sel rectangle (double)
+ * rx1,ry1 - top-left of sel, rotated
+ * rx2,ry2 - bot-left of sel, rotated
+ * rx3,ry3 - top-right of sel, rotated
+@@ -1174,7 +1175,7 @@
+ /* now, for each pixel in rb[x,y,w,h], do the inverse rotation to see if
+ it would be in the original unrotated selection rectangle. if it *is*,
+ compute and store an appropriate color, otherwise skip it */
+-
++
+ for (y=rby; y<rby+rbh; y++) {
+ dp = results + (y * w + rbx) * 3;
+
+@@ -1194,7 +1195,7 @@
+ int p0r,p0g,p0b, p1r,p1g,p1b, p2r,p2g,p2b, p3r,p3g,p3b;
+ int rv,gv,bv;
+ double rd,gd,bd, p0wgt, p1wgt, p2wgt, p3wgt;
+-
++
+ /* compute the color, same idea as in Smooth**(). The color
+ will be a linear combination of the colors of the center pixel,
+ its left-or-right neighbor, its top-or-bottom neighbor, and
+@@ -1265,9 +1266,9 @@
+ }
+ #endif /* ROTATE_FOO */
+
+- dp[0] = (byte) (rv&0xff);
+- dp[1] = (byte) (gv&0xff);
+- dp[2] = (byte) (bv&0xff);
++ dp[0] = (byte) (rv&0xff);
++ dp[1] = (byte) (gv&0xff);
++ dp[2] = (byte) (bv&0xff);
+ }
+ }
+ }
+@@ -1311,11 +1312,11 @@
+ #ifdef FOO
+ fprintf(stderr,"rotXfer: rotating (%4d,%4d) %7.2f degrees around",
+ x,y, rad*180.0 / M_PI);
+- fprintf(stderr,"(%4d,%4d) -> %7.2f %7.2f (d=%f ang=%f)\n",
++ fprintf(stderr,"(%4d,%4d) -> %7.2f %7.2f (d=%f ang=%f)\n",
+ cx,cy, *rx,*ry, d, ang);
+ #endif
+ }
+-
++
+
+
+ /************************/
+@@ -1323,29 +1324,29 @@
+ byte *pic24, *results;
+ int w, h, selx,sely,selw,selh, pixX,pixY;
+ {
+- /* runs 'pixelization' algorithm. replaces each pixX-by-pixY region
++ /* runs 'pixelization' algorithm. replaces each pixX-by-pixY region
+ (smaller on edges) with the average color within that region */
+-
++
+ byte *pp;
+ int nwide, nhigh, i,j, x,y, x1,y1, stx,sty;
+ int nsum, rsum, gsum, bsum;
+-
++
+ printUTime("start of pixelize");
+-
++
+ /* center grid on selection */
+ nwide = (selw + pixX-1) / pixX;
+ nhigh = (selh + pixY-1) / pixY;
+-
++
+ stx = selx - (nwide*pixX - selw)/2;
+ sty = sely - (nhigh*pixY - selh)/2;
+-
++
+ y = sty;
+ for (i=0; i<nhigh; i++, y+=pixY) {
+ ProgressMeter(0, nhigh-1, i, "Pixelize");
+-
++
+ x = stx;
+ for (j=0; j<nwide; j++, x+=pixX) {
+-
++
+ /* COMPUTE AVERAGE COLOR FOR RECT:[x,y,pixX,pixY] */
+ nsum = rsum = gsum = bsum = 0;
+ for (y1=y; y1<y+pixY; y1++) {
+@@ -1357,17 +1358,17 @@
+ }
+ }
+ }
+-
++
+ if (nsum>0) { /* just to be safe... */
+ rsum /= nsum; gsum /= nsum; bsum /= nsum;
+ RANGE(rsum,0,255); RANGE(gsum,0,255); RANGE(bsum,0,255);
+ }
+-
+-
++
++
+ /* STORE color in rect:[x,y,pixX,pixY] */
+ for (y1=y; y1<y+pixY; y1++) {
+ if (!j && (y1 & 255)==0) WaitCursor();
+-
++
+ pp = results + (y1 * w + x) * 3;
+ for (x1=x; x1<x+pixX; x1++, pp+=3) {
+ if (PTINRECT(x1,y1, selx,sely,selw,selh)) {
+@@ -1381,7 +1382,7 @@
+ printUTime("end of pixelize");
+ }
+
+-
++
+
+ /************************/
+ static void doSpread(pic24, w, h, results, selx,sely,selw,selh, pixX, pixY)
+@@ -1393,17 +1394,17 @@
+ by pixX,pixY. If pixX<0, it is treated as a single 'distance' value
+ (after being abs()'d). */
+
+- /* assumes that initially 'results' is a copy of pic24. Doesn't
++ /* assumes that initially 'results' is a copy of pic24. Doesn't
+ even look at pic24 */
+-
++
+ byte *pp, *dp, r,g,b;
+- int x,y, dx,dy, x1,y1, d, xrng, xoff, yrng, yoff, i,j;
++ int x,y, x1,y1, d;
+ int minx, maxx, miny, maxy, rdist;
+ time_t nowT;
+
+ time(&nowT);
+ srandom((unsigned int) nowT);
+-
++
+ printUTime("start of spread");
+
+ for (y=sely; y<sely+selh; y++) {
+@@ -1453,7 +1454,7 @@
+ printUTime("end of spread");
+ }
+
+-
++
+
+ /************************/
+ static void doMedianFilter(pic24, w, h, results, selx,sely,selw,selh, n)
+@@ -1468,7 +1469,7 @@
+ register byte *p24;
+ register int rsum,gsum,bsum;
+ byte *rp;
+- int i,j,k,x,y,x1,y1,count,n2,nsq,c2;
++ int x,y,x1,y1,count,n2,nsq,c2;
+ int *rtab, *gtab, *btab;
+
+ printUTime("start of doMedianFilter");
+@@ -1494,7 +1495,7 @@
+ for (y1=y-n2; y1<=y+n2; y1++) {
+
+ if (y1>=sely && y1<sely+selh) {
+- p24 = pic24 + y1*w*3 +(x-n2)*3;
++ p24 = pic24 + y1*w*3 +(x-n2)*3;
+
+ for (x1=x-n2; x1<=x+n2; x1++) {
+ if (x1>=selx && x1<selx+selw) {
+@@ -1509,12 +1510,12 @@
+ }
+
+
+- /* now sort the rtab,gtab,btab arrays, (using shell sort)
+- and pick the middle value. doing it in-line, rather than
++ /* now sort the rtab,gtab,btab arrays, (using shell sort)
++ and pick the middle value. doing it in-line, rather than
+ as a function call (ie, 'qsort()') , for speed */
+- {
++ {
+ int i,j,t,d;
+-
++
+ for (d=count/2; d>0; d=d/2) {
+ for (i=d; i<count; i++) {
+ for (j=i-d; j>=0 && rtab[j]>rtab[j+d]; j-=d) {
+@@ -1531,14 +1532,14 @@
+ }
+ }
+ }
+-
++
+ c2 = count/2;
+ *rp++ = (byte) ( (count&1) ? rtab[c2] : (rtab[c2] + rtab[c2-1])/2);
+ *rp++ = (byte) ( (count&1) ? gtab[c2] : (gtab[c2] + gtab[c2-1])/2);
+ *rp++ = (byte) ( (count&1) ? btab[c2] : (btab[c2] + btab[c2-1])/2);
+ }
+ }
+-
++
+ free(rtab); free(gtab); free(btab);
+ printUTime("end of doMedianFilter");
+ }
+@@ -1549,7 +1550,7 @@
+ static void intsort(a, n)
+ int *a, n;
+ {
+- /* uses the shell-sort algorithm. for the relatively small data sets
++ /* uses the shell-sort algorithm. for the relatively small data sets
+ we'll be using, should be quicker than qsort() because of all the
+ function calling overhead associated with qsort(). */
+
+@@ -1571,7 +1572,7 @@
+ byte **pic24, **tmpPic;
+ {
+ /* generates a 24-bit version of 'pic', if neccessary, and also mallocs
+- * a pWIDE*pHIGH*3 24-bit output pic.
++ * a pWIDE*pHIGH*3 24-bit output pic.
+ *
+ * Returns '1' if there's some sort of screwup, '0' if cool
+ */
+@@ -1588,7 +1589,7 @@
+ *tmpPic = (byte *) calloc((size_t) (pWIDE * pHIGH * 3), (size_t) 1);
+ if (!(*tmpPic)) {
+ SetCursors(-1);
+- ErrPopUp("Unable to malloc() tmp 24-bit image in start24bitAlg()",
++ ErrPopUp("Unable to malloc() tmp 24-bit image in start24bitAlg()",
+ "\nTough!");
+ if (picType == PIC8) free(*pic24);
+ return 1;
+@@ -1609,16 +1610,16 @@
+ saveOrigPic(); /* also kills pic/cpic/epic/egampic/theImage, NOT pic24 */
+
+ /* copy results to pic24 */
+- xvbcopy((char *) outPic, (char *) pic24, (size_t) (pWIDE*pHIGH*3));
++ xvbcopy((char *) outPic, (char *) pic24, (size_t) (pWIDE*pHIGH*3));
+ free(outPic);
+
+ if (picType == PIC8) {
+ pic = Conv24to8(pic24, pWIDE, pHIGH, ncols, rMap,gMap,bMap);
+ free(pic24);
+- if (!pic) {
++ if (!pic) {
+ SetCursors(-1);
+ ErrPopUp("Some sort of failure occured in 24to8 conversion\n","\nDamn!");
+- NoAlg();
++ NoAlg();
+ return;
+ }
+ }
+@@ -1632,7 +1633,7 @@
+ static void saveOrigPic()
+ {
+ /* saves original picture into origPic, if it hasn't already been done.
+- This allows us to undo algorithms...
++ This allows us to undo algorithms...
+
+ Also, frees all pics, (except 'pic', if we're in PIC24 mode) */
+
+@@ -1649,7 +1650,7 @@
+ /* make a backup copy of 'pic' */
+ origPic = (byte *) malloc((size_t)(pWIDE*pHIGH*((picType==PIC8) ? 1 : 3)));
+ if (!origPic) FatalError("out of memory in 'saveOrigPic()'");
+- xvbcopy((char *) pic, (char *) origPic,
++ xvbcopy((char *) pic, (char *) origPic,
+ (size_t) (pWIDE * pHIGH * ((picType==PIC8) ? 1 : 3)));
+
+ origPicType = picType;
+diff -ru xv-3.10a/xvbmp.c xv-3.10a-enhancements/xvbmp.c
+--- xv-3.10a/xvbmp.c 1994-12-22 14:34:42.000000000 -0800
++++ xv-3.10a-enhancements/xvbmp.c 2007-05-13 17:46:16.000000000 -0700
+@@ -1,5 +1,5 @@
+ /*
+- * xvbmp.c - i/o routines for .BMP files (MS Windows 3.x)
++ * xvbmp.c - I/O routines for .BMP files (MS Windows 3.x and later; OS/2)
+ *
+ * LoadBMP(fname, numcols)
+ * WriteBMP(fp, pic, ptype, w, h, r, g, b, numcols, style);
+@@ -9,30 +9,39 @@
+
+ #include "xv.h"
+
+-/* comments on error handling:
+- a truncated file is not considered a Major Error. The file is loaded, the
+- rest of the pic is filled with 0's.
+-
+- a file with garbage characters in it is an unloadable file. All allocated
+- stuff is tossed, and LoadPBM returns non-zero
+-
+- not being able to malloc is a Fatal Error. The program is aborted. */
+-
+-
+-#define BI_RGB 0
+-#define BI_RLE8 1
+-#define BI_RLE4 2
++/* Comments on error-handling:
++ A truncated file is not considered a Major Error. The file is loaded,
++ and the rest of the pic is filled with 0's.
++
++ A file with garbage characters in it is an unloadable file. All allocated
++ stuff is tossed, and LoadBMP returns non-zero.
++
++ Not being able to malloc is a Fatal Error. The program is aborted. */
++
++
++#define BI_RGB 0 /* a.k.a. uncompressed */
++#define BI_RLE8 1
++#define BI_RLE4 2
++#define BI_BITFIELDS 3 /* BMP version 4 */
++#define BI_JPEG 4 /* BMP version 5 (not yet supported) */
++#define BI_PNG 5 /* BMP version 5 (not yet supported) */
+
+ #define WIN_OS2_OLD 12
+ #define WIN_NEW 40
+ #define OS2_NEW 64
+
++#if (defined(UINT_MAX) && UINT_MAX != 0xffffffffU)
++# error XV's BMP code requires 32-bit unsigned integer type, but u_int isn't
++#endif
++
+ static long filesize;
+
+ static int loadBMP1 PARM((FILE *, byte *, u_int, u_int));
+ static int loadBMP4 PARM((FILE *, byte *, u_int, u_int, u_int));
+ static int loadBMP8 PARM((FILE *, byte *, u_int, u_int, u_int));
+-static int loadBMP24 PARM((FILE *, byte *, u_int, u_int));
++static int loadBMP16 PARM((FILE *, byte *, u_int, u_int, u_int *));
++static int loadBMP24 PARM((FILE *, byte *, u_int, u_int, u_int));
++static int loadBMP32 PARM((FILE *, byte *, u_int, u_int, u_int *));
+ static u_int getshort PARM((FILE *));
+ static u_int getint PARM((FILE *));
+ static void putshort PARM((FILE *, int));
+@@ -41,7 +50,7 @@
+ static void writeBMP4 PARM((FILE *, byte *, int, int));
+ static void writeBMP8 PARM((FILE *, byte *, int, int));
+ static void writeBMP24 PARM((FILE *, byte *, int, int));
+-static int bmpError PARM((char *, char *));
++static int bmpError PARM((const char *, const char *));
+
+
+ #define FERROR(fp) (ferror(fp) || feof(fp))
+@@ -52,15 +61,15 @@
+ PICINFO *pinfo;
+ /*******************************************/
+ {
+- FILE *fp;
+- int i, c, c1, rv;
+- unsigned int bfSize, bfOffBits, biSize, biWidth, biHeight, biPlanes;
+- unsigned int biBitCount, biCompression, biSizeImage, biXPelsPerMeter;
+- unsigned int biYPelsPerMeter, biClrUsed, biClrImportant;
+- int bPad;
+- char *cmpstr;
+- byte *pic24, *pic8;
+- char buf[512], *bname;
++ FILE *fp;
++ int i, c, c1, rv, bPad;
++ u_int bfSize, bfOffBits, biSize, biWidth, biHeight, biPlanes;
++ u_int biBitCount, biCompression, biSizeImage, biXPelsPerMeter;
++ u_int biYPelsPerMeter, biClrUsed, biClrImportant;
++ u_int colormask[3];
++ char buf[512], rgb_bits[16];
++ const char *cmpstr, *bname;
++ byte *pic24, *pic8;
+
+ /* returns '1' on success */
+
+@@ -69,7 +78,7 @@
+
+ fp = xv_fopen(fname,"r");
+ if (!fp) return (bmpError(bname, "couldn't open file"));
+-
++
+ fseek(fp, 0L, 2); /* figure out the file size */
+ filesize = ftell(fp);
+ fseek(fp, 0L, 0);
+@@ -98,17 +107,16 @@
+ biClrUsed = getint(fp);
+ biClrImportant = getint(fp);
+ }
+-
+ else { /* old bitmap format */
+ biWidth = getshort(fp); /* Types have changed ! */
+ biHeight = getshort(fp);
+ biPlanes = getshort(fp);
+ biBitCount = getshort(fp);
+-
+- /* Not in old versions so have to compute them*/
++
++ /* not in old versions, so have to compute them */
+ biSizeImage = (((biPlanes * biBitCount*biWidth)+31)/32)*4*biHeight;
+-
+- biCompression = BI_RGB;
++
++ biCompression = BI_RGB;
+ biXPelsPerMeter = biYPelsPerMeter = 0;
+ biClrUsed = biClrImportant = 0;
+ }
+@@ -126,22 +134,39 @@
+ if (FERROR(fp)) { bmpError(bname,"EOF reached in file header"); goto ERROR; }
+
+
+- /* error checking */
+- if ((biBitCount!=1 && biBitCount!=4 && biBitCount!=8 && biBitCount!=24) ||
+- biPlanes!=1 || biCompression>BI_RLE4) {
++ /* error-checking */
++ if ((biBitCount!=1 && biBitCount!=4 && biBitCount!=8 &&
++ biBitCount!=16 && biBitCount!=24 && biBitCount!=32) ||
++ biPlanes!=1 || biCompression>BI_PNG ||
++ biWidth<=0 || biHeight<=0 ||
++ (biClrUsed && biClrUsed > (1 << biBitCount))) {
++
++ sprintf(buf,
++ "Unsupported BMP type (%dx%d, Bits=%d, Colors=%d, Planes=%d, "
++ "Compr=%d)",
++ biWidth, biHeight, biBitCount, biClrUsed, biPlanes, biCompression);
+
+- sprintf(buf,"Bogus BMP File! (bitCount=%d, Planes=%d, Compression=%d)",
+- biBitCount, biPlanes, biCompression);
++ bmpError(bname, buf);
++ goto ERROR;
++ }
++
++ if (biCompression>BI_BITFIELDS) {
++ sprintf(buf, "Unsupported BMP compression method (%s)",
++ biCompression == BI_JPEG? "JPEG" :
++ biCompression == BI_PNG? "PNG" :
++ "unknown/newer than v5");
+
+ bmpError(bname, buf);
+ goto ERROR;
+ }
+
+ if (((biBitCount==1 || biBitCount==24) && biCompression != BI_RGB) ||
+- (biBitCount==4 && biCompression==BI_RLE8) ||
+- (biBitCount==8 && biCompression==BI_RLE4)) {
++ (biBitCount==4 && biCompression!=BI_RGB && biCompression!=BI_RLE4) ||
++ (biBitCount==8 && biCompression!=BI_RGB && biCompression!=BI_RLE8) ||
++ ((biBitCount==16 || biBitCount==32) &&
++ biCompression!=BI_RGB && biCompression!=BI_BITFIELDS)) {
+
+- sprintf(buf,"Bogus BMP File! (bitCount=%d, Compression=%d)",
++ sprintf(buf,"Unsupported BMP type (bitCount=%d, Compression=%d)",
+ biBitCount, biCompression);
+
+ bmpError(bname, buf);
+@@ -153,13 +178,21 @@
+ if (biSize != WIN_OS2_OLD) {
+ /* skip ahead to colormap, using biSize */
+ c = biSize - 40; /* 40 bytes read from biSize to biClrImportant */
+- for (i=0; i<c; i++) getc(fp);
+-
++ for (i=0; i<c; i++)
++ getc(fp);
+ bPad = bfOffBits - (biSize + 14);
+ }
+
++ /* 16-bit or 32-bit color mask */
++ if (biCompression==BI_BITFIELDS) {
++ colormask[0] = getint(fp);
++ colormask[1] = getint(fp);
++ colormask[2] = getint(fp);
++ bPad -= 12;
++ }
++
+ /* load up colormap, if any */
+- if (biBitCount!=24) {
++ if (biBitCount == 1 || biBitCount == 4 || biBitCount == 8) {
+ int i, cmaplen;
+
+ cmaplen = (biClrUsed) ? biClrUsed : 1 << biBitCount;
+@@ -173,7 +206,7 @@
+ }
+ }
+
+- if (FERROR(fp))
++ if (FERROR(fp))
+ { bmpError(bname,"EOF reached in BMP colormap"); goto ERROR; }
+
+ if (DEBUG>1) {
+@@ -188,7 +221,7 @@
+ if (biSize != WIN_OS2_OLD) {
+ /* Waste any unused bytes between the colour map (if present)
+ and the start of the actual bitmap data. */
+-
++
+ while (bPad > 0) {
+ (void) getc(fp);
+ bPad--;
+@@ -197,31 +230,57 @@
+
+ /* create pic8 or pic24 */
+
+- if (biBitCount==24) {
+- pic24 = (byte *) calloc((size_t) biWidth * biHeight * 3, (size_t) 1);
++ if (biBitCount==16 || biBitCount==24 || biBitCount==32) {
++ u_int npixels = biWidth * biHeight;
++ u_int count = 3 * npixels;
++
++ if (biWidth == 0 || biHeight == 0 || npixels/biWidth != biHeight ||
++ count/3 != npixels)
++ return (bmpError(bname, "image dimensions too large"));
++ pic24 = (byte *) calloc((size_t) count, (size_t) 1);
+ if (!pic24) return (bmpError(bname, "couldn't malloc 'pic24'"));
+ }
+ else {
+- pic8 = (byte *) calloc((size_t) biWidth * biHeight, (size_t) 1);
++ u_int npixels = biWidth * biHeight;
++
++ if (biWidth == 0 || biHeight == 0 || npixels/biWidth != biHeight)
++ return (bmpError(bname, "image dimensions too large"));
++ pic8 = (byte *) calloc((size_t) npixels, (size_t) 1);
+ if (!pic8) return(bmpError(bname, "couldn't malloc 'pic8'"));
+ }
+
+ WaitCursor();
+
+ /* load up the image */
+- if (biBitCount == 1) rv = loadBMP1(fp,pic8,biWidth,biHeight);
+- else if (biBitCount == 4) rv = loadBMP4(fp,pic8,biWidth,biHeight,
+- biCompression);
+- else if (biBitCount == 8) rv = loadBMP8(fp,pic8,biWidth,biHeight,
+- biCompression);
+- else rv = loadBMP24(fp,pic24,biWidth,biHeight);
++ switch (biBitCount) {
++ case 1:
++ rv = loadBMP1(fp, pic8, biWidth, biHeight);
++ break;
++ case 4:
++ rv = loadBMP4(fp, pic8, biWidth, biHeight, biCompression);
++ break;
++ case 8:
++ rv = loadBMP8(fp, pic8, biWidth, biHeight, biCompression);
++ break;
++ case 16:
++ rv = loadBMP16(fp, pic24, biWidth, biHeight, /* v-- BI_RGB */
++ biCompression == BI_BITFIELDS? colormask : NULL);
++ break;
++ default:
++ if (biBitCount == 32 && biCompression == BI_BITFIELDS)
++ rv = loadBMP32(fp, pic24, biWidth, biHeight, colormask);
++ else /* 24 or (32 and BI_RGB) */
++ rv = loadBMP24(fp, pic24, biWidth, biHeight, biBitCount);
++ break;
++ }
++
++ if (rv) bmpError(bname, "File appears truncated. Winging it.");
+
+- if (rv) bmpError(bname, "File appears truncated. Winging it.\n");
+
+ fclose(fp);
+
+
+- if (biBitCount == 24) {
++ if (biBitCount > 8) {
+ pinfo->pic = pic24;
+ pinfo->type = PIC24;
+ }
+@@ -233,6 +292,22 @@
+ cmpstr = "";
+ if (biCompression == BI_RLE4) cmpstr = ", RLE4 compressed";
+ else if (biCompression == BI_RLE8) cmpstr = ", RLE8 compressed";
++ else if (biCompression == BI_BITFIELDS) {
++ int bit, c[3], i;
++ u_int mask;
++
++ for (i = 0; i < 3; ++i) {
++ mask = colormask[i];
++ c[i] = 0;
++ for (bit = 0; bit < 32; ++bit) {
++ if (mask & 1)
++ ++c[i];
++ mask >>= 1;
++ }
++ }
++ sprintf(rgb_bits, ", RGB%d%d%d", c[0], c[1], c[2]);
++ cmpstr = rgb_bits;
++ }
+
+ pinfo->w = biWidth; pinfo->h = biHeight;
+ pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
+@@ -254,7 +329,7 @@
+ ERROR:
+ fclose(fp);
+ return 0;
+-}
++}
+
+
+ /*******************************************/
+@@ -264,12 +339,13 @@
+ u_int w,h;
+ {
+ int i,j,c,bitnum,padw;
+- byte *pp;
++ byte *pp = pic8 + ((h - 1) * w);
++ size_t l = w*h;
+
+ c = 0;
+ padw = ((w + 31)/32) * 32; /* 'w', padded to be a multiple of 32 */
+
+- for (i=h-1; i>=0; i--) {
++ for (i=h-1; i>=0 && (pp - pic8 <= l); i--) {
+ pp = pic8 + (i * w);
+ if ((i&0x3f)==0) WaitCursor();
+ for (j=bitnum=0; j<padw; j++,bitnum++) {
+@@ -277,7 +353,7 @@
+ c = getc(fp);
+ bitnum = 0;
+ }
+-
++
+ if (j<w) {
+ *pp++ = (c & 0x80) ? 1 : 0;
+ c <<= 1;
+@@ -287,7 +363,7 @@
+ }
+
+ return (FERROR(fp));
+-}
++}
+
+
+
+@@ -298,25 +374,25 @@
+ u_int w,h,comp;
+ {
+ int i,j,c,c1,x,y,nybnum,padw,rv;
+- byte *pp;
+-
+-
++ byte *pp = pic8 + ((h - 1) * w);
++ size_t l = w*h;
++
+ rv = 0;
+ c = c1 = 0;
+-
++
+ if (comp == BI_RGB) { /* read uncompressed data */
+ padw = ((w + 7)/8) * 8; /* 'w' padded to a multiple of 8pix (32 bits) */
+-
+- for (i=h-1; i>=0; i--) {
++
++ for (i=h-1; i>=0 && (pp - pic8 <= l); i--) {
+ pp = pic8 + (i * w);
+ if ((i&0x3f)==0) WaitCursor();
+-
++
+ for (j=nybnum=0; j<padw; j++,nybnum++) {
+ if ((nybnum & 1) == 0) { /* read next byte */
+ c = getc(fp);
+ nybnum = 0;
+ }
+-
++
+ if (j<w) {
+ *pp++ = (c & 0xf0) >> 4;
+ c <<= 4;
+@@ -325,55 +401,55 @@
+ if (FERROR(fp)) break;
+ }
+ }
+-
++
+ else if (comp == BI_RLE4) { /* read RLE4 compressed data */
+- x = y = 0;
++ x = y = 0;
+ pp = pic8 + x + (h-y-1)*w;
+-
++
+ while (y<h) {
+ c = getc(fp); if (c == EOF) { rv = 1; break; }
+-
++
+ if (c) { /* encoded mode */
+ c1 = getc(fp);
+- for (i=0; i<c; i++,x++,pp++)
++ for (i=0; i<c && (pp - pic8 <= l); i++,x++,pp++)
+ *pp = (i&1) ? (c1 & 0x0f) : ((c1>>4)&0x0f);
+ }
+-
++
+ else { /* c==0x00 : escape codes */
+ c = getc(fp); if (c == EOF) { rv = 1; break; }
+-
++
+ if (c == 0x00) { /* end of line */
+ x=0; y++; pp = pic8 + x + (h-y-1)*w;
+- }
+-
++ }
++
+ else if (c == 0x01) break; /* end of pic8 */
+-
++
+ else if (c == 0x02) { /* delta */
+ c = getc(fp); x += c;
+ c = getc(fp); y += c;
+ pp = pic8 + x + (h-y-1)*w;
+ }
+-
++
+ else { /* absolute mode */
+- for (i=0; i<c; i++, x++, pp++) {
++ for (i=0; i<c && (pp - pic8 <= l); i++, x++, pp++) {
+ if ((i&1) == 0) c1 = getc(fp);
+ *pp = (i&1) ? (c1 & 0x0f) : ((c1>>4)&0x0f);
+ }
+-
++
+ if (((c&3)==1) || ((c&3)==2)) getc(fp); /* read pad byte */
+ }
+ } /* escape processing */
+ if (FERROR(fp)) break;
+ } /* while */
+ }
+-
++
+ else {
+ fprintf(stderr,"unknown BMP compression type 0x%0x\n", comp);
+ }
+-
++
+ if (FERROR(fp)) rv = 1;
+ return rv;
+-}
++}
+
+
+
+@@ -384,14 +460,18 @@
+ u_int w,h,comp;
+ {
+ int i,j,c,c1,padw,x,y,rv;
+- byte *pp;
+-
++ byte *pp = pic8 + ((h - 1) * w);
++ size_t l = w*h;
++ byte *pend;
++
+ rv = 0;
+
++ pend = pic8 + w * h;
++
+ if (comp == BI_RGB) { /* read uncompressed data */
+ padw = ((w + 3)/4) * 4; /* 'w' padded to a multiple of 4pix (32 bits) */
+
+- for (i=h-1; i>=0; i--) {
++ for (i=h-1; i>=0 && (pp - pic8 <= l); i--) {
+ pp = pic8 + (i * w);
+ if ((i&0x3f)==0) WaitCursor();
+
+@@ -404,15 +484,15 @@
+ }
+
+ else if (comp == BI_RLE8) { /* read RLE8 compressed data */
+- x = y = 0;
++ x = y = 0;
+ pp = pic8 + x + (h-y-1)*w;
+
+- while (y<h) {
++ while (y<h && pp<=pend) {
+ c = getc(fp); if (c == EOF) { rv = 1; break; }
+
+ if (c) { /* encoded mode */
+ c1 = getc(fp);
+- for (i=0; i<c; i++,x++,pp++) *pp = c1;
++ for (i=0; i<c && pp<=pend; i++,x++,pp++) *pp = c1;
+ }
+
+ else { /* c==0x00 : escape codes */
+@@ -420,7 +500,7 @@
+
+ if (c == 0x00) { /* end of line */
+ x=0; y++; pp = pic8 + x + (h-y-1)*w;
+- }
++ }
+
+ else if (c == 0x01) break; /* end of pic8 */
+
+@@ -431,49 +511,156 @@
+ }
+
+ else { /* absolute mode */
+- for (i=0; i<c; i++, x++, pp++) {
++ for (i=0; i<c && pp<=pend; i++, x++, pp++) {
+ c1 = getc(fp);
+ *pp = c1;
+ }
+-
++
+ if (c & 1) getc(fp); /* odd length run: read an extra pad byte */
+ }
+ } /* escape processing */
+ if (FERROR(fp)) break;
+ } /* while */
+ }
+-
++
+ else {
+ fprintf(stderr,"unknown BMP compression type 0x%0x\n", comp);
+ }
+
+ if (FERROR(fp)) rv = 1;
+ return rv;
+-}
++}
+
+
+
+ /*******************************************/
+-static int loadBMP24(fp, pic24, w, h)
++static int loadBMP16(fp, pic24, w, h, mask)
++ FILE *fp;
++ byte *pic24;
++ u_int w, h, *mask;
++{
++ int x, y;
++ byte *pp = pic24 + ((h - 1) * w * 3);
++ size_t l = w*h*3;
++ u_int buf, colormask[6];
++ int i, bit, bitshift[6], colorbits[6], bitshift2[6];
++
++ if (mask == NULL) { /* RGB555 */
++ colormask[0] = 0x00007c00;
++ colormask[1] = 0x000003e0;
++ colormask[2] = 0x0000001f;
++ colormask[3] = 0x7c000000;
++ colormask[4] = 0x03e00000;
++ colormask[5] = 0x001f0000;
++ bitshift[0] = 7; bitshift2[0] = 0;
++ bitshift[1] = 2; bitshift2[1] = 0;
++ bitshift[2] = 0; bitshift2[2] = 3;
++ bitshift[3] = 23; bitshift2[3] = 0;
++ bitshift[4] = 18; bitshift2[4] = 0;
++ bitshift[5] = 13; bitshift2[5] = 0;
++ } else {
++ colormask[0] = mask[0];
++ colormask[1] = mask[1];
++ colormask[2] = mask[2];
++ colormask[3] = (mask[0] & 0xffff) << 16;
++ colormask[4] = (mask[1] & 0xffff) << 16;
++ colormask[5] = (mask[2] & 0xffff) << 16;
++
++ for (i = 0; i < 3; ++i) {
++ buf = colormask[i];
++
++ bitshift[i] = 0;
++ for (bit = 0; bit < 32; ++bit) {
++ if (buf & 1)
++ break;
++ else
++ ++bitshift[i];
++ buf >>= 1;
++ }
++ bitshift[i+3] = bitshift[i] + 16;
++
++ colorbits[i] = 0;
++ for (; bit < 32; ++bit) {
++ if (buf & 1)
++ ++colorbits[i];
++ else
++ break;
++ buf >>= 1;
++ }
++ if (colorbits[i] > 8) { /* over 8-bit depth */
++ bitshift[i] += (colorbits[i] - 8);
++ bitshift[i+3] = bitshift[i] + 16;
++ bitshift2[i] = bitshift2[i+3] = 0;
++ } else
++ bitshift2[i] = bitshift2[i+3] = 8 - colorbits[i];
++ }
++ }
++
++ if (DEBUG > 1)
++ fprintf(stderr, "loadBMP16: bitfields\n"
++ "\tR: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n"
++ "\t (mask = %08x, shift >>%2d, <<%2d)\n"
++ "\tG: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n"
++ "\t (mask = %08x, shift >>%2d, <<%2d)\n"
++ "\tB: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n"
++ "\t (mask = %08x, shift >>%2d, <<%2d)\n",
++ colorbits[0], colormask[0], bitshift[0], bitshift2[0],
++ colormask[3], bitshift[3], bitshift2[3],
++ colorbits[1], colormask[1], bitshift[1], bitshift2[1],
++ colormask[4], bitshift[4], bitshift2[4],
++ colorbits[2], colormask[2], bitshift[2], bitshift2[2],
++ colormask[5], bitshift[5], bitshift2[5]);
++
++ for (y = h-1; y >= 0 && (pp - pic24 <= l); y--) {
++ pp = pic24 + (3 * w * y);
++ if ((y&0x3f)==0) WaitCursor();
++
++ for (x = w; x > 1; x -= 2) {
++ buf = getint(fp);
++ *(pp++) = (buf & colormask[0]) >> bitshift[0] << bitshift2[0];
++ *(pp++) = (buf & colormask[1]) >> bitshift[1] << bitshift2[1];
++ *(pp++) = (buf & colormask[2]) >> bitshift[2] << bitshift2[2];
++ *(pp++) = (buf & colormask[3]) >> bitshift[3] << bitshift2[3];
++ *(pp++) = (buf & colormask[4]) >> bitshift[4] << bitshift2[4];
++ *(pp++) = (buf & colormask[5]) >> bitshift[5] << bitshift2[5];
++ }
++ if (w & 1) { /* padded to 2 pix */
++ buf = getint(fp);
++ *(pp++) = (buf & colormask[0]) >> bitshift[0];
++ *(pp++) = (buf & colormask[1]) >> bitshift[1];
++ *(pp++) = (buf & colormask[2]) >> bitshift[2];
++ }
++ }
++
++ return FERROR(fp)? 1 : 0;
++}
++
++
++
++/*******************************************/
++static int loadBMP24(fp, pic24, w, h, bits) /* also handles 32-bit BI_RGB */
+ FILE *fp;
+ byte *pic24;
+- u_int w,h;
++ u_int w,h, bits;
+ {
+ int i,j,padb,rv;
+- byte *pp;
++ byte *pp = pic24 + ((h - 1) * w * 3);
++ size_t l = w*h*3;
+
+ rv = 0;
+
+ padb = (4 - ((w*3) % 4)) & 0x03; /* # of pad bytes to read at EOscanline */
++ if (bits==32) padb = 0;
+
+ for (i=h-1; i>=0; i--) {
+ pp = pic24 + (i * w * 3);
+ if ((i&0x3f)==0) WaitCursor();
+-
+- for (j=0; j<w; j++) {
++
++ for (j=0; j<w && (pp - pic24 <= l); j++) {
+ pp[2] = getc(fp); /* blue */
+ pp[1] = getc(fp); /* green */
+ pp[0] = getc(fp); /* red */
++ if (bits==32) getc(fp);
+ pp += 3;
+ }
+
+@@ -484,30 +671,94 @@
+ }
+
+ return rv;
+-}
++}
++
++
++
++/*******************************************/
++static int loadBMP32(fp, pic24, w, h, colormask) /* 32-bit BI_BITFIELDS only */
++ FILE *fp;
++ byte *pic24;
++ u_int w, h, *colormask;
++{
++ int x, y;
++ byte *pp;
++ u_int buf;
++ int i, bit, bitshift[3], colorbits[3], bitshift2[3];
++
++ for (i = 0; i < 3; ++i) {
++ buf = colormask[i];
++
++ bitshift[i] = 0;
++ for (bit = 0; bit < 32; ++bit) {
++ if (buf & 1)
++ break;
++ else
++ ++bitshift[i];
++ buf >>= 1;
++ }
++
++ colorbits[i] = 0;
++ for (; bit < 32; ++bit) {
++ if (buf & 1)
++ ++colorbits[i];
++ else
++ break;
++ buf >>= 1;
++ }
++ if (colorbits[i] > 8) { /* over 8-bit depth */
++ bitshift[i] += (colorbits[i] - 8);
++ bitshift2[i] = 0;
++ } else
++ bitshift2[i] = 8 - colorbits[i];
++ }
++
++ if (DEBUG > 1)
++ fprintf(stderr, "loadBMP32: bitfields\n"
++ "\tR: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n"
++ "\tG: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n"
++ "\tB: bits = %2d, mask = %08x, shift >>%2d, <<%2d\n",
++ colorbits[0], colormask[0], bitshift[0], bitshift2[0],
++ colorbits[1], colormask[1], bitshift[1], bitshift2[1],
++ colorbits[2], colormask[2], bitshift[2], bitshift2[2]);
++
++ for (y = h-1; y >= 0; y--) {
++ pp = pic24 + (3 * w * y);
++ if ((y&0x3f)==0) WaitCursor();
++
++ for(x = w; x > 0; x --) {
++ buf = getint(fp);
++ *(pp++) = (buf & colormask[0]) >> bitshift[0] << bitshift2[0];
++ *(pp++) = (buf & colormask[1]) >> bitshift[1] << bitshift2[1];
++ *(pp++) = (buf & colormask[2]) >> bitshift[2] << bitshift2[2];
++ }
++ }
++
++ return FERROR(fp)? 1 : 0;
++}
+
+
+
+ /*******************************************/
+-static unsigned int getshort(fp)
++static u_int getshort(fp)
+ FILE *fp;
+ {
+ int c, c1;
+ c = getc(fp); c1 = getc(fp);
+- return ((unsigned int) c) + (((unsigned int) c1) << 8);
++ return ((u_int) c) + (((u_int) c1) << 8);
+ }
+
+
+ /*******************************************/
+-static unsigned int getint(fp)
++static u_int getint(fp)
+ FILE *fp;
+ {
+ int c, c1, c2, c3;
+ c = getc(fp); c1 = getc(fp); c2 = getc(fp); c3 = getc(fp);
+- return ((unsigned int) c) +
+- (((unsigned int) c1) << 8) +
+- (((unsigned int) c2) << 16) +
+- (((unsigned int) c3) << 24);
++ return ((u_int) c) +
++ (((u_int) c1) << 8) +
++ (((u_int) c2) << 16) +
++ (((u_int) c3) << 24);
+ }
+
+
+@@ -518,7 +769,7 @@
+ {
+ int c, c1;
+
+- c = ((unsigned int ) i) & 0xff; c1 = (((unsigned int) i)>>8) & 0xff;
++ c = ((u_int) i) & 0xff; c1 = (((u_int) i)>>8) & 0xff;
+ putc(c, fp); putc(c1,fp);
+ }
+
+@@ -529,10 +780,10 @@
+ int i;
+ {
+ int c, c1, c2, c3;
+- c = ((unsigned int ) i) & 0xff;
+- c1 = (((unsigned int) i)>>8) & 0xff;
+- c2 = (((unsigned int) i)>>16) & 0xff;
+- c3 = (((unsigned int) i)>>24) & 0xff;
++ c = ((u_int) i) & 0xff;
++ c1 = (((u_int) i)>>8) & 0xff;
++ c2 = (((u_int) i)>>16) & 0xff;
++ c3 = (((u_int) i)>>24) & 0xff;
+
+ putc(c, fp); putc(c1,fp); putc(c2,fp); putc(c3,fp);
+ }
+@@ -562,11 +813,11 @@
+ * 8-bit image
+ * note that PIC24 and F_BWDITHER/F_REDUCED won't happen
+ *
+- * if colorstyle == F_BWDITHER, it writes a 1-bit image
++ * if colorstyle == F_BWDITHER, it writes a 1-bit image
+ *
+ */
+
+- int i,j, nc, nbits, bperlin, cmaplen;
++ int i,j, nc, nbits, bperlin, cmaplen, npixels;
+ byte *graypic, *sp, *dp, graymap[256];
+
+ nc = nbits = cmaplen = 0;
+@@ -576,10 +827,16 @@
+ /* generate a faked 8-bit per pixel image with a grayscale cmap,
+ so that it can just fall through existing 8-bit code */
+
+- graypic = (byte *) malloc((size_t) w*h);
++ npixels = w * h;
++ if (w <= 0 || h <= 0 || npixels/w != h) {
++ SetISTR(ISTR_WARNING, "image dimensions too large");
++ return -1;
++ }
++
++ graypic = (byte *) malloc((size_t) npixels);
+ if (!graypic) FatalError("unable to malloc in WriteBMP()");
+
+- for (i=0,sp=pic824,dp=graypic; i<w*h; i++,sp+=3, dp++) {
++ for (i=0,sp=pic824,dp=graypic; i<npixels; i++,sp+=3, dp++) {
+ *dp = MONO(sp[0],sp[1],sp[2]);
+ }
+
+@@ -611,7 +868,7 @@
+ for (i=0; i<numcols; i++) {
+ /* see if color #i is a duplicate */
+ for (j=0; j<i; j++) {
+- if (rmap[i] == rmap[j] && gmap[i] == gmap[j] &&
++ if (rmap[i] == rmap[j] && gmap[i] == gmap[j] &&
+ bmap[i] == bmap[j]) break;
+ }
+
+@@ -689,13 +946,13 @@
+ #else
+ if (!FERROR(fp)) return -1;
+ #endif
+-
++
+ return 0;
+ }
+
+
+-
+-
++
++
+ /*******************************************/
+ static void writeBMP1(fp, pic8, w, h)
+ FILE *fp;
+@@ -708,7 +965,7 @@
+ padw = ((w + 31)/32) * 32; /* 'w', padded to be a multiple of 32 */
+
+ for (i=h-1; i>=0; i--) {
+- pp = pic8 + (i * w);
++ pp = pic8 + (i * w);
+ if ((i&0x3f)==0) WaitCursor();
+
+ for (j=bitnum=c=0; j<=padw; j++,bitnum++) {
+@@ -716,7 +973,7 @@
+ putc(c,fp);
+ bitnum = c = 0;
+ }
+-
++
+ c <<= 1;
+
+ if (j<w) {
+@@ -724,7 +981,7 @@
+ }
+ }
+ }
+-}
++}
+
+
+
+@@ -758,7 +1015,7 @@
+ }
+ }
+ }
+-}
++}
+
+
+
+@@ -768,7 +1025,7 @@
+ byte *pic8;
+ int w,h;
+ {
+- int i,j,c,padw;
++ int i,j,padw;
+ byte *pp;
+
+ padw = ((w + 3)/4) * 4; /* 'w' padded to a multiple of 4pix (32 bits) */
+@@ -780,7 +1037,7 @@
+ for (j=0; j<w; j++) putc(pc2nc[*pp++], fp);
+ for ( ; j<padw; j++) putc(0, fp);
+ }
+-}
++}
+
+
+ /*******************************************/
+@@ -789,7 +1046,7 @@
+ byte *pic24;
+ int w,h;
+ {
+- int i,j,c,padb;
++ int i,j,padb;
+ byte *pp;
+
+ padb = (4 - ((w*3) % 4)) & 0x03; /* # of pad bytes to write at EOscanline */
+@@ -807,7 +1064,7 @@
+
+ for (j=0; j<padb; j++) putc(0, fp);
+ }
+-}
++}
+
+
+
+@@ -816,7 +1073,7 @@
+
+ /*******************************************/
+ static int bmpError(fname, st)
+- char *fname, *st;
++ const char *fname, *st;
+ {
+ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
+ return 0;
+diff -ru xv-3.10a/xvbrowse.c xv-3.10a-enhancements/xvbrowse.c
+--- xv-3.10a/xvbrowse.c 1995-01-19 09:49:17.000000000 -0800
++++ xv-3.10a-enhancements/xvbrowse.c 2007-05-13 17:50:18.000000000 -0700
+@@ -1,6 +1,6 @@
+ /*
+ * xvbrowse.c - visual schnauzer routines
+- *
++ *
+ * includes:
+ * void CreateBrowse(char *, char *, char *, char *, char *);
+ * void OpenBrowse();
+@@ -19,11 +19,16 @@
+
+ #define NEEDSDIR
+ #include "xv.h"
++#include <unistd.h> /* access() */
+
+ #if defined(VMS) || defined(isc)
+ typedef unsigned int mode_t; /* file mode bits */
+ #endif
+
++#ifndef MAX
++# define MAX(a,b) (((a)>(b))?(a):(b)) /* used only for wheelmouse support */
++#endif
++
+
+ /* load up built-in icons */
+ #include "bits/br_file"
+@@ -34,27 +39,40 @@
+ #include "bits/br_sock"
+ #include "bits/br_fifo"
+ #include "bits/br_error"
+-#include "bits/br_unknown"
++/* #include "bits/br_unknown" commented out (near line 492) */
++
+ #include "bits/br_cmpres"
++#include "bits/br_bzip2"
+
+-#include "bits/br_gif"
+-#include "bits/br_pm"
+-#include "bits/br_pbm"
+-#include "bits/br_xbm"
+-#include "bits/br_sunras"
+ #include "bits/br_bmp"
+-#include "bits/br_utah"
++#include "bits/br_fits"
++#include "bits/br_gif"
++#include "bits/br_iff"
+ #include "bits/br_iris"
+-#include "bits/br_pcx"
+ #include "bits/br_jfif"
+-#include "bits/br_tiff"
++#include "bits/br_jp2"
++#include "bits/br_jpc"
++#include "bits/br_mag"
++#include "bits/br_maki"
++#include "bits/br_mgcsfx"
++#include "bits/br_pbm"
++#include "bits/br_pcd"
++#include "bits/br_pcx"
+ #include "bits/br_pds"
++#include "bits/br_pi"
++#include "bits/br_pic"
++#include "bits/br_pic2"
++#include "bits/br_pm"
++#include "bits/br_png"
+ #include "bits/br_ps"
+-#include "bits/br_iff"
++#include "bits/br_sunras"
+ #include "bits/br_targa"
++#include "bits/br_tiff"
++#include "bits/br_utah"
++#include "bits/br_xbm"
+ #include "bits/br_xpm"
+ #include "bits/br_xwd"
+-#include "bits/br_fits"
++#include "bits/br_zx" /* [JCE] The Spectrum+3 icon */
+
+ #include "bits/br_trash"
+ #include "bits/fcurs"
+@@ -90,17 +108,28 @@
+ #define BF_COMPRESS 21
+ #define BF_PS 22
+ #define BF_IFF 23
+-#define BF_TARGA 24
++#define BF_TGA 24
+ #define BF_XPM 25
+ #define BF_XWD 26
+ #define BF_FITS 27
+-#define BF_MAX 28 /* # of built-in icons */
++#define BF_PNG 28
++#define BF_ZX 29 /* [JCE] Spectrum SCREEN$ */
++#define BF_PCD 30
++#define BF_BZIP2 31
++#define BF_JP2 32
++#define BF_JPC 33
++#define JP_EXT_BF (BF_JPC)
++#define BF_MAG (JP_EXT_BF + 1)
++#define BF_MAKI (JP_EXT_BF + 2)
++#define BF_PIC (JP_EXT_BF + 3)
++#define BF_PI (JP_EXT_BF + 4)
++#define BF_PIC2 (JP_EXT_BF + 5)
++#define BF_MGCSFX (JP_EXT_BF + 6)
++#define JP_EXT_BF_END (BF_MGCSFX)
++#define BF_MAX (JP_EXT_BF_END + 1) /* # of built-in icons */
+
+ #define ISLOADABLE(ftyp) (ftyp!=BF_DIR && ftyp!=BF_CHR && ftyp!=BF_BLK && \
+- ftyp!=BF_SOCK && ftyp!=BF_FIFO)
+-
+-#define DEF_BROWWIDE 615 /* default size of window */
+-#define DEF_BROWHIGH 356
++ ftyp!=BF_SOCK && ftyp!=BF_FIFO)
+
+ #define SCROLLVERT 8 /* height of scroll region at top/bottom of iconw */
+ #define PAGEVERT 40 /* during rect drag, if further than this, page */
+@@ -113,59 +142,93 @@
+ #define BOTMARGIN 58 /* room for a row of buttons and a line of text */
+ #define LRMARGINS 5 /* left and right margins */
+
+-#define ISIZE_WIDE 80 /* maximum size of an icon */
+-#define ISIZE_HIGH 60
++/* some people like bigger icons; 4:3 aspect ratio is recommended
++ * (NOTE: standard XV binaries will not be able to read larger icons!) */
++#ifndef ISIZE_WIDE
++# define ISIZE_WIDE 80 /* maximum size of an icon */
++#endif
++#ifndef ISIZE_HIGH
++# define ISIZE_HIGH 60
++#endif
++
++#ifndef ISIZE_WPAD
++# define ISIZE_WPAD 16 /* extra horizontal padding between icons */
++#endif
++
++#ifndef INUM_WIDE
++# define INUM_WIDE 6 /* size initial window to hold this many icons */
++#endif
++#ifndef INUM_HIGH
++# define INUM_HIGH 3
++#endif
+
+-#define ISPACE_WIDE (ISIZE_WIDE+16) /* icon spacing */
++#define ISPACE_WIDE (ISIZE_WIDE+ISIZE_WPAD) /* icon spacing */
+ #define ISPACE_TOP 4 /* dist btwn top of ISPACE and ISIZE */
+ #define ISPACE_TTOP 4 /* dist btwn bot of icon and title */
+ #define ISPACE_HIGH (ISIZE_HIGH+ISPACE_TOP+ISPACE_TTOP+16+4)
+
+ #define DBLCLICKTIME 300 /* milliseconds */
+
+-/* button/menu indicies */
+-#define BR_CHDIR 0
+-#define BR_DELETE 1
+-#define BR_MKDIR 2
+-#define BR_RENAME 3
+-#define BR_RESCAN 4
+-#define BR_UPDATE 5
+-#define BR_NEWWIN 6
+-#define BR_GENICON 7
+-#define BR_SELALL 8
+-#define BR_TEXTVIEW 9
+-#define BR_RECURSUP 10
+-#define BR_QUIT 11
+-#define BR_CLOSE 12
+-#define BR_NBUTTS 13 /* # of command buttons */
+-#define BR_SEP1 13 /* separator */
+-#define BR_HIDDEN 14
+-#define BR_SELFILES 15
+-#define BR_NCMDS 16 /* # of menu commands */
++#define COUNT(x) (sizeof (x) / sizeof (x)[0])
++
++/* button/menu indices */
++#define BR_CHDIR 0
++#define BR_DELETE 1
++#define BR_MKDIR 2
++#define BR_RENAME 3
++#define BR_RESCAN 4
++#define BR_UPDATE 5
++#define BR_NEWWIN 6
++#define BR_GENICON 7
++#define BR_SELALL 8
++#define BR_TEXTVIEW 9
++#define BR_RECURSUP 10
++#define BR_QUIT 11
++#define BR_CLOSE 12
++#define BR_NBUTTS 13 /* # of command buttons */
++#define BR_SEP1 13 /* separator */
++#define BR_HIDDEN 14
++#define BR_SELFILES 15
++#define BR_CLIPBRD 16
++#ifdef AUTO_EXPAND
++# define BR_CLEARVD 17
++# define BR_NCMDS 18 /* # of menu commands */
++#else
++# define BR_NCMDS 17 /* # of menu commands */
++#endif
+
+ #define BUTTW 80
+ #define BUTTH 24
+
+-static char *showHstr = "Show hidden files";
+-static char *hideHstr = "Hide 'hidden' files";
+-
+-static char *cmdMList[] = { "Change directory...\t^c",
+- "Delete file(s)\t^d",
+- "New directory...\t^n",
+- "Rename file...\t^r",
+- "Rescan directory\t^s",
+- "Update icons\t^u",
+- "Open new window\t^w",
+- "Generate icon(s)\t^g",
+- "Select all files\t^a",
+- "Text view\t^t",
+- "Recursive Update\t^e",
+- "Quit xv\t^q",
+- "Close window\t^c",
+- MBSEP,
+- "Show hidden files", /* no equiv */
+- "Select files...\t^f"
+- };
++/* original size of window was 615 x 356 (for 80x60 thumbnails in 6x3 array) */
++#define DEF_BROWWIDE (ISPACE_WIDE * INUM_WIDE + LRMARGINS * 2 + 29)
++#define DEF_BROWHIGH (ISPACE_HIGH * INUM_HIGH + BUTTH * 2 + 16 + 28)
++/* last number is a fudge--e.g., extra spaces, borders, etc. -----^ */
++
++static const char *showHstr = "Show hidden files";
++static const char *hideHstr = "Hide 'hidden' files";
++
++static const char *cmdMList[] = { "Change directory...\t^c",
++ "Delete file(s)\t^d",
++ "New directory...\t^n",
++ "Rename file...\t^r",
++ "Rescan directory\t^s",
++ "Update icons\t^u",
++ "Open new window\t^w",
++ "Generate icon(s)\t^g",
++ "Select all files\t^a",
++ "Text view\t^t",
++ "Recursive Update\t^e",
++ "Quit xv\t^q",
++ "Close window\t^c",
++ MBSEP,
++ "Show hidden files", /* no equiv */
++ "Select files...\t^f",
++ "Clipboard\t^x"
++#ifdef AUTO_EXPAND
++ , "Clear virtual directory"
++#endif
++ };
+
+
+ #define MAXDEEP 30 /* maximum directory depth */
+@@ -183,32 +246,43 @@
+ } BFIL;
+
+ /* data needed per schnauzer window */
+-typedef struct { Window win, iconW;
+- int vis, wasvis;
++typedef struct { Window win, iconW;
++ int vis, wasvis;
+
+- int wide, high;
+- int iwWide, iwHigh;
+- int numWide, numHigh, visHigh;
+-
+- SCRL scrl;
+- BUTT but[BR_NBUTTS];
+- MBUTT dirMB, cmdMB;
+- char dispstr[256];
+- int numbutshown;
+- int showhidden;
+-
+- int numlit;
+- BFIL *bfList;
+- int bfLen;
+- int lastIconClicked;
++ int wide, high;
++ int iwWide, iwHigh;
++ int numWide, numHigh, visHigh;
++
++ SCRL scrl;
++ BUTT but[BR_NBUTTS];
++ MBUTT dirMB, cmdMB;
++ char dispstr[256];
++ int numbutshown;
++ int showhidden;
++
++ int numlit;
++ BFIL *bfList;
++ int bfLen;
++ int lastIconClicked;
+ unsigned long lastClickTime;
+
+- int ndirs;
+- char *mblist[MAXDEEP];
+- char path[MAXPATHLEN+2]; /* '/' terminated */
++ int ndirs;
++ const char *mblist[MAXDEEP];
++ char path[MAXPATHLEN+2]; /* '/' terminated */
++
++ char *str;
++ int siz, len;
++ time_t lst;
+ } BROWINFO;
+
+
++/* keep track of last icon visible in each path */
++typedef struct IVIS IVIS;
++ struct IVIS { IVIS *next;
++ char *name;
++ int icon;
++ };
++
+ static Cursor movecurs, copycurs, delcurs;
+ static BROWINFO binfo[MAXBRWIN];
+ static Pixmap bfIcons[BF_MAX], trashPix;
+@@ -220,7 +294,7 @@
+ static void closeBrowse PARM((BROWINFO *));
+ static int brChkEvent PARM((BROWINFO *, XEvent *));
+ static void resizeBrowse PARM((BROWINFO *, int, int));
+-static void setBrowStr PARM((BROWINFO *, char *));
++static void setBrowStr PARM((BROWINFO *, const char *));
+ static void doCmd PARM((BROWINFO *, int));
+ static void drawBrow PARM((BROWINFO *));
+ static void drawNumfiles PARM((BROWINFO *));
+@@ -255,12 +329,12 @@
+ static void rescanDir PARM((BROWINFO *));
+ static int namcmp PARM((const void *, const void *));
+ static void freeBfList PARM((BROWINFO *br));
+-static char **getDirEntries PARM((char *, int *, int));
++static char **getDirEntries PARM((const char *, int *, int));
+ static void computeScrlVals PARM((BROWINFO *, int *, int *));
+ static void genSelectedIcons PARM((BROWINFO *));
+ static void genIcon PARM((BROWINFO *, BFIL *));
+ static void loadThumbFile PARM((BROWINFO *, BFIL *));
+-static void writeThumbFile PARM((BROWINFO *, BFIL *, byte *, int,
++static void writeThumbFile PARM((BROWINFO *, BFIL *, byte *, int,
+ int, char *));
+
+ static void makeThumbDir PARM((BROWINFO *));
+@@ -278,14 +352,14 @@
+ static void doSelFilesCmd PARM((BROWINFO *));
+
+ static void doRecurseCmd PARM((BROWINFO *));
+-static void recurseUpdate PARM((BROWINFO *, char *));
++static void recurseUpdate PARM((BROWINFO *, const char *));
+
+ static void rm_file PARM((BROWINFO *, char *));
+ static void rm_dir PARM((BROWINFO *, char *));
+ static void rm_dir1 PARM((BROWINFO *));
+
+-static void dragFiles PARM((BROWINFO *, BROWINFO *, char *, char *,
+- char *, char **, int, int));
++static void dragFiles PARM((BROWINFO *, BROWINFO *, char *, char *,
++ const char *, char **, int, int));
+ static int moveFile PARM((char *, char *));
+ static int copyFile PARM((char *, char *));
+ static void cp PARM((void));
+@@ -294,16 +368,25 @@
+ static void cp_special PARM((struct stat *, int));
+ static void cp_fifo PARM((struct stat *, int));
+
++#ifdef AUTO_EXPAND
++static int stat2bf PARM((u_int, char *));
++#else
+ static int stat2bf PARM((u_int));
++#endif
+
+ static int selmatch PARM((char *, char *));
+ static int selmatch1 PARM((char *, char *));
++static void recIconVisible PARM((char *, int));
++static void restIconVisible PARM((BROWINFO *));
++
++static void clipChanges PARM((BROWINFO *));
+
+
+
+ /***************************************************************/
+ void CreateBrowse(geom, fgstr, bgstr, histr, lostr)
+- char *geom, *fgstr, *bgstr, *histr, *lostr;
++ const char *geom;
++ const char *fgstr, *bgstr, *histr, *lostr;
+ {
+ int i;
+ XSizeHints hints;
+@@ -369,8 +452,8 @@
+ if (gset & YNegative) gy1 = gy - i * 20;
+ else gy1 = gy + i * 20;
+
+- if ((gset & WidthValue) && (gset & HeightValue))
+- sprintf(wgeom, "%dx%d%s%d%s%d", gw, gh,
++ if ((gset & WidthValue) && (gset & HeightValue))
++ sprintf(wgeom, "%dx%d%s%d%s%d", gw, gh,
+ (gset & XNegative) ? "-" : "+", abs(gx1),
+ (gset & YNegative) ? "-" : "+", abs(gy1));
+ else
+@@ -402,11 +485,11 @@
+
+ /* note: everything is sized and positioned in ResizeBrowse() */
+
+- br->iconW = XCreateSimpleWindow(theDisp, br->win, 1,1, 100,100,
++ br->iconW = XCreateSimpleWindow(theDisp, br->win, 1,1, 100,100,
+ 1,browfg,browbg);
+ if (!br->iconW) FatalError("can't create schnauzer icon window!");
+
+- SCCreate(&(br->scrl), br->win, 0,0, 1,100, 0,0,0,0,
++ SCCreate(&(br->scrl), br->win, 0,0, 1,100, 0,0,0,0,
+ browfg, browbg, browhi, browlo, drawIconWin);
+
+
+@@ -448,10 +531,12 @@
+ "Text view",browfg,browbg,browhi,browlo);
+ BTCreate(&(br->but[BR_RECURSUP]), br->win, 0,0,BUTTW,BUTTH,
+ "RecursUpd",browfg,browbg,browhi,browlo);
+- BTCreate(&(br->but[BR_QUIT]), br->win, 0,0,BUTTW,BUTTH,
++ BTCreate(&(br->but[BR_QUIT]), br->win, 0,0,BUTTW,BUTTH,
+ "Quit xv",browfg,browbg,browhi,browlo);
+- BTCreate(&(br->but[BR_CLOSE]), br->win, 0,0,BUTTW,BUTTH,
++ BTCreate(&(br->but[BR_CLOSE]), br->win, 0,0,BUTTW,BUTTH,
+ "Close",browfg,browbg,browhi,browlo);
++ BTCreate(&(br->but[BR_CLIPBRD]), br->win, 0,0,BUTTW,BUTTH,
++ "Clipboard",browfg,browbg,browhi,browlo);
+
+ XMapSubwindows(theDisp, br->win);
+
+@@ -486,55 +571,62 @@
+ bfIcons[BF_SOCK]=MakePix1(br->win,br_sock_bits,br_sock_width,br_sock_height);
+ bfIcons[BF_FIFO]=MakePix1(br->win,br_fifo_bits,br_fifo_width,br_fifo_height);
+
+- bfIcons[BF_ERROR] = MakePix1(br->win, br_error_bits,
++ bfIcons[BF_ERROR] = MakePix1(br->win, br_error_bits,
+ br_error_width, br_error_height);
+
+ /* bfIcons[BF_UNKNOWN] = MakePix1(br->win, br_unknown_bits,
+ br_unknown_width, br_unknown_height); */
+-
+ bfIcons[BF_UNKNOWN] = bfIcons[BF_FILE];
+
+- bfIcons[BF_GIF] =MakePix1(br->win,br_gif_bits, br_gif_width, br_gif_height);
+- bfIcons[BF_PM] =MakePix1(br->win,br_pm_bits, br_pm_width, br_pm_height);
+- bfIcons[BF_PBM] =MakePix1(br->win,br_pbm_bits, br_pbm_width, br_pbm_height);
+- bfIcons[BF_XBM] =MakePix1(br->win,br_xbm_bits, br_xbm_width, br_xbm_height);
+-
+- bfIcons[BF_SUNRAS] = MakePix1(br->win, br_sunras_bits,
+- br_sunras_width, br_sunras_height);
+- bfIcons[BF_BMP] = MakePix1(br->win,br_bmp_bits,
+- br_bmp_width, br_bmp_height);
+- bfIcons[BF_UTAHRLE] = MakePix1(br->win, br_utahrle_bits,
+- br_utahrle_width, br_utahrle_height);
++ bfIcons[BF_COMPRESS] = MakePix1(br->win, br_cmpres_bits,
++ br_cmpres_width, br_cmpres_height);
++ bfIcons[BF_BZIP2] = MakePix1(br->win, br_bzip2_bits,
++ br_bzip2_width, br_bzip2_height);
+
++ bfIcons[BF_BMP] =MakePix1(br->win,br_bmp_bits, br_bmp_width, br_bmp_height);
++ bfIcons[BF_FITS]=MakePix1(br->win,br_fits_bits,br_fits_width,br_fits_height);
++ bfIcons[BF_GIF] =MakePix1(br->win,br_gif_bits, br_gif_width, br_gif_height);
++ bfIcons[BF_IFF] =MakePix1(br->win,br_iff_bits, br_iff_width, br_iff_height);
+ bfIcons[BF_IRIS]=MakePix1(br->win,br_iris_bits,br_iris_width,br_iris_height);
+- bfIcons[BF_PCX] =MakePix1(br->win,br_pcx_bits, br_pcx_width, br_pcx_height);
+ bfIcons[BF_JFIF]=MakePix1(br->win,br_jfif_bits,br_jfif_width,br_jfif_height);
+- bfIcons[BF_TIFF]=MakePix1(br->win,br_tiff_bits,br_tiff_width,br_tiff_height);
++ bfIcons[BF_JP2] =MakePix1(br->win,br_jp2_bits, br_jp2_width, br_jp2_height);
++ bfIcons[BF_JPC] =MakePix1(br->win,br_jpc_bits, br_jpc_width, br_jpc_height);
++ bfIcons[BF_MAG] =MakePix1(br->win,br_mag_bits, br_mag_width, br_mag_height);
++ bfIcons[BF_MAKI]=MakePix1(br->win,br_maki_bits,br_maki_width,br_maki_height);
++ bfIcons[BF_PBM] =MakePix1(br->win,br_pbm_bits, br_pbm_width, br_pbm_height);
++ bfIcons[BF_PCD] =MakePix1(br->win,br_pcd_bits, br_pcd_width, br_pcd_height);
++ bfIcons[BF_PCX] =MakePix1(br->win,br_pcx_bits, br_pcx_width, br_pcx_height);
+ bfIcons[BF_PDS] =MakePix1(br->win,br_pds_bits, br_pds_width, br_pds_height);
+-
+- bfIcons[BF_COMPRESS]= MakePix1(br->win, br_cmpres_bits,
+- br_cmpres_width, br_cmpres_height);
+-
++ bfIcons[BF_PIC2]=MakePix1(br->win,br_pic2_bits,br_pic2_width,br_pic2_height);
++ bfIcons[BF_PIC] =MakePix1(br->win,br_pic_bits, br_pic_width, br_pic_height);
++ bfIcons[BF_PI] =MakePix1(br->win,br_pi_bits, br_pi_width, br_pi_height);
++ bfIcons[BF_PM] =MakePix1(br->win,br_pm_bits, br_pm_width, br_pm_height);
++ bfIcons[BF_PNG] =MakePix1(br->win,br_png_bits, br_png_width, br_png_height);
+ bfIcons[BF_PS] =MakePix1(br->win,br_ps_bits, br_ps_width, br_ps_height);
+- bfIcons[BF_IFF] =MakePix1(br->win,br_iff_bits, br_iff_width, br_iff_height);
+-
+- bfIcons[BF_TARGA] = MakePix1(br->win, br_targa_bits,
+- br_targa_width, br_targa_height);
+-
++ bfIcons[BF_TGA] =MakePix1(br->win,br_tga_bits, br_tga_width, br_tga_height);
++ bfIcons[BF_TIFF]=MakePix1(br->win,br_tiff_bits,br_tiff_width,br_tiff_height);
++ bfIcons[BF_XBM] =MakePix1(br->win,br_xbm_bits, br_xbm_width, br_xbm_height);
+ bfIcons[BF_XPM] =MakePix1(br->win,br_xpm_bits, br_xpm_width, br_xpm_height);
+ bfIcons[BF_XWD] =MakePix1(br->win,br_xwd_bits, br_xwd_width, br_xwd_height);
+- bfIcons[BF_FITS]=MakePix1(br->win,br_fits_bits,br_fits_width,br_fits_height);
++ bfIcons[BF_ZX] =MakePix1(br->win,br_zx_bits, br_zx_width, br_zx_height);
++
++ bfIcons[BF_SUNRAS] = MakePix1(br->win, br_sunras_bits,
++ br_sunras_width, br_sunras_height);
++ bfIcons[BF_UTAHRLE] = MakePix1(br->win, br_utahrle_bits,
++ br_utahrle_width, br_utahrle_height);
++ bfIcons[BF_MGCSFX] = MakePix1(br->win, br_mgcsfx_bits,
++ br_mgcsfx_width, br_mgcsfx_height);
+
+
+ /* check that they all got built */
+ for (i=0; i<BF_MAX && bfIcons[i]; i++);
+- if (i<BF_MAX)
++ if (i<BF_MAX)
+ FatalError("unable to create all built-in icons for schnauzer");
+
+ for (i=0; i<MAXBRWIN; i++) {
+ resizeBrowse(&binfo[i], DEF_BROWWIDE, DEF_BROWHIGH);
+
+- XSelectInput(theDisp, binfo[i].win, ExposureMask | ButtonPressMask |
++ XSelectInput(theDisp, binfo[i].win, ExposureMask | ButtonPressMask |
+ KeyPressMask | StructureNotifyMask);
+ }
+
+@@ -557,7 +649,7 @@
+ movecurs = XCreatePixmapCursor(theDisp,mcpix,fcmpix,&cursfg,&cursbg,13,13);
+ copycurs = XCreatePixmapCursor(theDisp,ccpix,fcmpix,&cursfg,&cursbg,13,13);
+ delcurs = XCreatePixmapCursor(theDisp,dcpix,fcmpix,&cursbg,&cursfg,13,13);
+- if (!movecurs || !copycurs || !delcurs)
++ if (!movecurs || !copycurs || !delcurs)
+ FatalError("unable to create schnauzer cursors...");
+ }
+ else FatalError("unable to create schnauzer cursors...");
+@@ -566,7 +658,7 @@
+ XFreePixmap(theDisp, ccpix);
+ XFreePixmap(theDisp, dcpix);
+ XFreePixmap(theDisp, fcmpix);
+-
++
+
+ hasBeenSized = 1; /* we can now start looking at browse events */
+ }
+@@ -576,9 +668,10 @@
+ void OpenBrowse()
+ {
+ /* opens up a single browser window */
+- int i;
++
++ int i;
+ BROWINFO *br;
+- char path[MAXPATHLEN+1];
++ char path[MAXPATHLEN+1];
+
+ /* find next browser to be opened */
+ for (i=0; i<MAXBRWIN; i++) {
+@@ -586,11 +679,11 @@
+ if (!br->vis) break;
+ }
+ if (i==MAXBRWIN) return; /* full up: shouldn't happen */
+-
++
+ anyBrowUp = 1;
+ XMapRaised(theDisp, br->win);
+ br->vis = 1;
+-
++
+ freeBfList(br);
+
+ /* see if some browser is pointing to the same path as CWD. If so,
+@@ -645,7 +738,7 @@
+ /* free all info for this browse window */
+ freeBfList(br);
+ sprintf(br->path, BOGUSPATH);
+-
++
+ /* turn on 'open new window' command doodads */
+ windowMB.dim[WMB_BROWSE] = 0;
+ for (i=0; i<MAXBRWIN; i++) {
+@@ -698,6 +791,9 @@
+ }
+ }
+
++#ifdef VS_RESCMAP
++static int _IfTempOut=0;
++#endif
+
+ /***************************************************************/
+ void KillBrowseWindows()
+@@ -730,7 +826,6 @@
+ return 0;
+ }
+
+-
+ /***************************************************************/
+ static int brChkEvent(br, xev)
+ BROWINFO *br;
+@@ -739,22 +834,36 @@
+ /* checks event to see if it's a browse-window related thing. If it
+ is, it eats the event and returns '1', otherwise '0'. */
+
+- int i, rv;
+- char buf[1024];
+-
+- rv = 1;
++ int rv = 1;
+
+ if (!hasBeenSized) return 0; /* ignore evrythng until we get 1st Resize */
+
++
++#ifdef VS_RESCMAP
++ /* force change color map if have LocalCmap */
++ if (browPerfect && browCmap && (_IfTempOut==2)) {
++ int i;
++ XSetWindowAttributes xswa;
++
++ xswa.colormap = LocalCmap? LocalCmap : theCmap;
++ for (i=0; i<MAXBRWIN; ++i)
++ XChangeWindowAttributes(theDisp, binfo[i].win, CWColormap, &xswa);
++ XFlush(theDisp);
++ _IfTempOut=1;
++ }
++#endif
++
+ if (xev->type == Expose) {
+ int x,y,w,h;
+ XExposeEvent *e = (XExposeEvent *) xev;
+ x = e->x; y = e->y; w = e->width; h = e->height;
+
+ /* throw away excess redraws for 'dumb' windows */
+- if (e->count > 0 && (e->window == br->scrl.win)) {}
++ if (e->count > 0 && (e->window == br->scrl.win))
++ ;
+
+- else if (e->window == br->scrl.win) SCRedraw(&(br->scrl));
++ else if (e->window == br->scrl.win)
++ SCRedraw(&(br->scrl));
+
+ else if (e->window == br->win || e->window == br->iconW) { /* smart wins */
+ /* group individual expose rects into a single expose region */
+@@ -788,7 +897,7 @@
+ fprintf(stderr,"grouped %d expose events into %d,%d %dx%d rect\n",
+ count, rect.x, rect.y, rect.width, rect.height);
+ }
+-
++
+ if (e->window == br->win) drawBrow(br);
+
+ else if (e->window == br->iconW)
+@@ -807,13 +916,55 @@
+ int i,x,y;
+ x = e->x; y = e->y;
+
++#ifdef VS_RESCMAP
++ if (browCmap && browPerfect && (_IfTempOut!=0)) {
++ XSetWindowAttributes xswa;
++ _IfTempOut--;
++ xswa.colormap = browCmap;
++ for(i=0;i<MAXBRWIN;i++)
++ XChangeWindowAttributes(theDisp, binfo[i].win, CWColormap, &xswa);
++ XFlush(theDisp);
++ }
++#endif
++
+ if (e->button == Button1) {
+ if (e->window == br->win) clickBrow(br,x,y);
+ else if (e->window == br->scrl.win) SCTrack(&(br->scrl),x,y);
+ else if (e->window == br->iconW) {
+- i = clickIconWin(br, x,y,(unsigned long) e->time,
++ i = clickIconWin(br, x,y,(unsigned long) e->time,
+ (e->state&ControlMask) || (e->state&ShiftMask));
+-
++ }
++ else rv = 0;
++ }
++ else if (e->button == Button4) { /* note min vs. max, + vs. - */
++ /* scroll regardless of where we are in the browser window */
++ if (e->window == br->win ||
++ e->window == br->scrl.win ||
++ e->window == br->iconW)
++ {
++ SCRL *sp=&(br->scrl);
++ int halfpage=MAX(1,sp->page/2); /* user resize to 1 line? */
++
++ if (sp->val > sp->min+halfpage)
++ SCSetVal(sp,sp->val-halfpage);
++ else
++ SCSetVal(sp,sp->min);
++ }
++ else rv = 0;
++ }
++ else if (e->button == Button5) { /* note max vs. min, - vs. + */
++ /* scroll regardless of where we are in the browser window */
++ if (e->window == br->win ||
++ e->window == br->scrl.win ||
++ e->window == br->iconW)
++ {
++ SCRL *sp=&(br->scrl);
++ int halfpage=MAX(1,sp->page/2); /* user resize to 1 line? */
++
++ if (sp->val < sp->max-halfpage)
++ SCSetVal(sp,sp->val+halfpage);
++ else
++ SCSetVal(sp,sp->max);
+ }
+ else rv = 0;
+ }
+@@ -837,7 +988,7 @@
+
+ if (br->wide != e->width || br->high != e->height) {
+ if (DEBUG) fprintf(stderr,"Forcing a redraw! (from configure)\n");
+- XClearArea(theDisp, br->win, 0, 0,
++ XClearArea(theDisp, br->win, 0, 0,
+ (u_int) e->width, (u_int) e->height, True);
+ resizeBrowse(br, e->width, e->height);
+ }
+@@ -877,7 +1028,7 @@
+ int w,h;
+ {
+ XSizeHints hints;
+- int i, minv, maxv, curv, page, maxh;
++ int i, maxv, page, maxh;
+
+ if (br->wide == w && br->high == h) return; /* no change in size */
+
+@@ -895,7 +1046,7 @@
+ br->iwHigh = (maxh / ISPACE_HIGH) * ISPACE_HIGH;
+ if (br->iwHigh < ISPACE_HIGH) br->iwHigh = ISPACE_HIGH;
+
+- XMoveResizeWindow(theDisp, br->iconW, LRMARGINS, TOPMARGIN,
++ XMoveResizeWindow(theDisp, br->iconW, LRMARGINS, TOPMARGIN,
+ (u_int) br->iwWide, (u_int) br->iwHigh);
+
+
+@@ -907,11 +1058,11 @@
+ for (i=0; i<BR_NBUTTS; i++) {
+ /* 'close' always goes on right-most edge */
+
+- if (i<br->numbutshown)
++ if (i<br->numbutshown)
+ br->but[i].x = br->wide - (1+br->numbutshown-i) * (BUTTW+5);
+ else if (i==BR_CLOSE)
+ br->but[i].x = br->wide - (BUTTW+5);
+- else
++ else
+ br->but[i].x = br->wide + 10; /* offscreen */
+
+ br->but[i].y = br->high - BUTTH - 5;
+@@ -928,11 +1079,11 @@
+ br->numWide = br->iwWide / ISPACE_WIDE;
+ br->visHigh = br->iwHigh / ISPACE_HIGH;
+
+- /* compute minv,maxv,curv,page values based on new current size */
++ /* compute maxv,page values based on new current size */
+ computeScrlVals(br, &maxv, &page);
+ if (br->scrl.val>maxv) br->scrl.val = maxv;
+-
+- SCChange(&br->scrl, LRMARGINS+br->iwWide+1, TOPMARGIN,
++
++ SCChange(&br->scrl, LRMARGINS+br->iwWide+1, TOPMARGIN,
+ 1, br->iwHigh, 0, maxv, br->scrl.val, page);
+ }
+
+@@ -940,12 +1091,12 @@
+
+ /***************************************************************/
+ void SetBrowStr(str)
+- char *str;
++ const char *str;
+ {
+ /* put string in *all* browse windows */
+ int i;
+
+- for (i=0; i<MAXBRWIN; i++)
++ for (i=0; i<MAXBRWIN; i++)
+ setBrowStr(&binfo[i], str);
+ }
+
+@@ -953,9 +1104,10 @@
+ /***************************************************************/
+ static void setBrowStr(br, str)
+ BROWINFO *br;
+- char *str;
++ const char *str;
+ {
+ strncpy(br->dispstr, str, (size_t) 256);
++ br->dispstr[255] = '\0';
+ drawBrowStr(br);
+ XFlush(theDisp);
+ }
+@@ -992,7 +1144,7 @@
+
+ char tmp[64];
+
+- sprintf(tmp, "Re-coloring icons: processed %d out of %d...",
++ sprintf(tmp, "Re-coloring icons: processed %d out of %d...",
+ i+1, br->bfLen);
+ setBrowStr(br, tmp);
+ }
+@@ -1011,14 +1163,14 @@
+ {
+ /* called when file 'name' has been deleted. If any of the browsers
+ were showing the directory that the file was in, does a rescan() */
+-
++
+ int i;
+ char buf[MAXPATHLEN + 2], *tmp;
+
+ strcpy(buf, name);
+- tmp = BaseName(buf);
++ tmp = (char *) BaseName(buf); /* intentionally losing constness */
+ *tmp = '\0'; /* truncate after last '/' */
+-
++
+ for (i=0; i<MAXBRWIN; i++) {
+ if (strcmp(binfo[i].path, buf)==0) rescanDir(&binfo[i]);
+ }
+@@ -1043,6 +1195,8 @@
+ BROWINFO *br;
+ int cmd;
+ {
++ br->lst = 0;
++
+ switch (cmd) {
+ case BR_CHDIR: doChdirCmd(br);
+ break;
+@@ -1070,9 +1224,9 @@
+ case BR_GENICON: genSelectedIcons(br); break;
+
+ case BR_SELALL: {
+- int i; char buf[128];
++ int i;
+
+- for (i=0; i<br->bfLen; i++)
++ for (i=0; i<br->bfLen; i++)
+ br->bfList[i].lit = 1;
+ br->numlit = br->bfLen;
+
+@@ -1087,20 +1241,25 @@
+ break;
+
+ case BR_TEXTVIEW: doTextCmd(br); break;
+-
++
+ case BR_QUIT: Quit(0); break;
+
+ case BR_CLOSE: closeBrowse(br); break;
+
+ case BR_HIDDEN: br->showhidden = !br->showhidden;
+- br->cmdMB.list[cmd] = (br->showhidden)
+- ? hideHstr : showHstr;
++ br->cmdMB.list[cmd] = br->showhidden ? hideHstr : showHstr;
+ rescanDir(br);
+ break;
+
+ case BR_SELFILES: doSelFilesCmd(br); break;
+
+ case BR_RECURSUP: doRecurseCmd(br); break;
++
++ case BR_CLIPBRD: clipChanges(br); break;
++
++#ifdef AUTO_EXPAND
++ case BR_CLEARVD: Vdsettle(); break;
++#endif
+ }
+ }
+
+@@ -1137,16 +1296,16 @@
+
+ if (br->bfLen != 1) sprintf(foo, "%d files", br->bfLen);
+ else strcpy(foo, "1 file");
+-
++
+ XSetForeground(theDisp, theGC, browbg);
+- XFillRectangle(theDisp,br->win, theGC, x+1,y+1,
++ XFillRectangle(theDisp,br->win, theGC, x+1,y+1,
+ (u_int) StringWidth(foo)+6, (u_int) br->dirMB.h-1);
+
+ XSetForeground(theDisp,theGC,browfg);
+ XDrawRectangle(theDisp,br->win, theGC, x,y,
+ (u_int) StringWidth(foo)+7, (u_int) br->dirMB.h);
+
+- Draw3dRect(br->win, x+1, y+1, (u_int) StringWidth(foo)+5,
++ Draw3dRect(br->win, x+1, y+1, (u_int) StringWidth(foo)+5,
+ (u_int) br->dirMB.h-2, R3D_IN, 2, browhi, browlo, browbg);
+
+ XSetForeground(theDisp,theGC,browfg);
+@@ -1163,7 +1322,7 @@
+
+ if (nf != 1) sprintf(foo,"%d files",nf);
+ else strcpy(foo,"1 file");
+-
++
+ XClearArea(theDisp,br->win, 30, br->dirMB.y,
+ (u_int) StringWidth(foo)+8, (u_int) br->dirMB.h+1, False);
+ }
+@@ -1185,13 +1344,13 @@
+
+ XSetForeground(theDisp,theGC,browfg);
+ XDrawRectangle(theDisp,br->win, theGC, x,y, (u_int) w, (u_int) h);
+- Draw3dRect(br->win, x+1, y+1, (u_int) w-2, (u_int) h-2,
++ Draw3dRect(br->win, x+1, y+1, (u_int) w-2, (u_int) h-2,
+ R3D_IN, 2, browhi, browlo, browbg);
+
+ XSetForeground(theDisp,theGC,browfg);
+ XSetBackground(theDisp,theGC,browbg);
+- XCopyPlane(theDisp, trashPix, br->win, theGC,
+- 0,0,(u_int) br_trash_width, (u_int) br_trash_height,
++ XCopyPlane(theDisp, trashPix, br->win, theGC,
++ 0,0,(u_int) br_trash_width, (u_int) br_trash_height,
+ x+(w-br_trash_width)/2, y+(h-br_trash_height)/2,
+ 1L);
+ }
+@@ -1222,7 +1381,7 @@
+ y = br->high - (BUTTH+10) - (CHIGH + 6);
+
+ XSetForeground(theDisp, theGC, browbg);
+- XFillRectangle(theDisp, br->win, theGC, 0, y+3,
++ XFillRectangle(theDisp, br->win, theGC, 0, y+3,
+ (u_int) br->wide, (u_int) CHIGH+1);
+
+ XSetForeground(theDisp, theGC, browfg);
+@@ -1250,6 +1409,19 @@
+ int i, allowtext;
+
+ if (!nostr) setSelInfoStr(br, sel);
++#ifdef AUTO_EXPAND
++ if (Isvdir(br->path)) {
++ BTSetActive(&br->but[BR_DELETE], 0);
++ br->cmdMB.dim[BR_DELETE] = 1;
++
++ BTSetActive(&br->but[BR_RENAME], 0);
++ br->cmdMB.dim[BR_RENAME] = 1;
++
++ BTSetActive(&br->but[BR_MKDIR], 0);
++ br->cmdMB.dim[BR_MKDIR] = 1;
++ }
++ else {
++#endif
+ BTSetActive(&br->but[BR_DELETE], br->numlit>0);
+ br->cmdMB.dim[BR_DELETE] = !(br->numlit>0);
+
+@@ -1258,6 +1430,11 @@
+
+ BTSetActive(&br->but[BR_GENICON], br->numlit>0);
+ br->cmdMB.dim[BR_GENICON] = !(br->numlit>0);
++#ifdef AUTO_EXPAND
++ BTSetActive(&br->but[BR_MKDIR], 1);
++ br->cmdMB.dim[BR_MKDIR] = 0;
++ }
++#endif
+
+ /* turn on 'text view' cmd if exactly one non-dir is lit */
+ allowtext = 0;
+@@ -1277,7 +1454,7 @@
+ {
+ /* sets the '# files selected' string in the brow window appropriately */
+
+- /* criteria:
++ /* criteria:
+ * if no files are lit, display ''
+ * if 1 file is lit, pretend it was selected, fall through...
+ * if 1 or more files are lit
+@@ -1316,10 +1493,13 @@
+
+ else if (bf->ftype != BF_DIR) { /* no info. display file size */
+ struct stat st;
+-
++
+ sprintf(buf, "%s%s", br->path, bf->name); /* build filename */
++#ifdef AUTO_EXPAND
++ Dirtovd(buf);
++#endif
+ if (stat(buf, &st) == 0) {
+- sprintf(buf, "%s: %ld bytes", bf->name, st.st_size);
++ sprintf(buf, "%s: %ld bytes", bf->name, (long)st.st_size);
+ strcat(buf, buf1);
+ }
+ }
+@@ -1360,8 +1540,8 @@
+ if (j>=0 && j < br->bfLen) drawIcon(br,j);
+ }
+ }
+-
+- Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
++
++ Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
+ R3D_IN, 2, browhi, browlo, browbg);
+ }
+
+@@ -1371,10 +1551,8 @@
+ int delta;
+ SCRL *sptr;
+ {
+- int i,indx, x,y, ix,iy, num;
+- BFIL *bf;
++ int i,indx, num;
+ BROWINFO *br;
+- char tmpstr[64], *nstr;
+
+ /* figure out BROWINFO pointer from SCRL pointer */
+ for (i=0; i<MAXBRWIN; i++) {
+@@ -1385,7 +1563,7 @@
+ br = &binfo[i];
+
+ /* make sure we've been sized. Necessary, as creating/modifying the
+- scrollbar calls this routine directly, rather than through
++ scrollbar calls this routine directly, rather than through
+ BrowseCheckEvent() */
+
+ if (!hasBeenSized) return;
+@@ -1413,12 +1591,12 @@
+ if (y+h > br->iwHigh-4) h = (br->iwHigh-4)-y + 2;
+ }
+ XFillRectangle(theDisp, br->iconW, theGC, x, y, ISPACE_WIDE, (u_int) h);
+-
++
+ if (indx>=0 && indx < br->bfLen) drawIcon(br, indx);
+ }
+ }
+
+- Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
++ Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
+ R3D_IN, 2, browhi, browlo, browbg);
+ }
+
+@@ -1431,7 +1609,11 @@
+ {
+ int i,x,y,ix,iy,sw,sh,sx,sy;
+ BFIL *bf;
+- char tmpstr[64], fixedname[64], *nstr, *str;
++ const char *nstr, *cstr;
++ char tmpstr[64];
++#ifdef VMS
++ char fixedname[64];
++#endif
+
+
+ if (num<0 || num >= br->bfLen) return;
+@@ -1463,49 +1645,51 @@
+ }
+
+ else if (bf->ftype == BF_HAVEIMG && bf->ximage) {
+- XPutImage(theDisp, br->iconW, theGC, bf->ximage, 0,0, ix,iy,
++ XPutImage(theDisp, br->iconW, theGC, bf->ximage, 0,0, ix,iy,
+ (u_int) bf->w, (u_int) bf->h);
+ }
+
+ else { /* shouldn't happen */
+- XDrawRectangle(theDisp, br->iconW, theGC, ix, iy,
++ XDrawRectangle(theDisp, br->iconW, theGC, ix, iy,
+ (u_int) bf->w, (u_int) bf->h);
+ }
+
+
+- str = bf->name;
++ cstr = bf->name;
+ #ifdef VMS
+ if (bf->ftype == BF_DIR) {
++ char *vstr;
+ strcpy(fixedname, bf->name);
+- str = rindex(fixedname, '.'); /* lop off '.DIR' suffix, if any */
+- if (str) *str = '\0';
+- str = fixedname;
++ vstr = rindex(fixedname, '.'); /* lop off '.DIR' suffix, if any */
++ if (vstr) *vstr = '\0';
++ cstr = fixedname;
+ }
+ #endif /* VMS */
+
+- if (!strcmp(bf->name,"..")) str = "<parent>";
++ if (!strcmp(bf->name,"..")) cstr = "<parent>";
+
+
+ /* decide if the title is too big, and shorten if neccesary */
+- if (StringWidth(str) > ISPACE_WIDE-6) {
+- int dotpos;
+- strncpy(tmpstr, str, (size_t) 56);
++ if (StringWidth(cstr) > ISPACE_WIDE-6) {
++ int dotpos;
++ strncpy(tmpstr, cstr, (size_t) 56);
++ tmpstr[56] = '\0'; /* MR: otherwise it dies on long file names */
+ dotpos = strlen(tmpstr);
+ strcat(tmpstr,"...");
+
+ while(StringWidth(tmpstr) > ISPACE_WIDE-6 && dotpos>0) {
+ /* change last non-dot char in tmpstr to a dot, and lop off
+ last dot */
+-
++
+ dotpos--;
+ tmpstr[dotpos] = '.';
+ tmpstr[dotpos+3] = '\0';
+ }
+-
++
+ nstr = tmpstr;
+ }
+- else nstr = str;
+-
++ else nstr = cstr;
++
+
+ /* draw the title */
+ sw = StringWidth(nstr);
+@@ -1516,12 +1700,12 @@
+
+ XSetForeground(theDisp, theGC,
+ (bf->lit && bf->lit!=ICON_ONLY) ? browfg : browbg);
+- XFillRectangle(theDisp, br->iconW, theGC, sx, sy,
++ XFillRectangle(theDisp, br->iconW, theGC, sx, sy,
+ (u_int) sw + 4, (u_int) sh + 2);
+
+ XSetForeground(theDisp, theGC,
+ (bf->lit && bf->lit!=ICON_ONLY) ? browbg : browfg);
+- CenterString(br->iconW, x + ISPACE_WIDE/2,
++ CenterString(br->iconW, x + ISPACE_WIDE/2,
+ y + ISPACE_TOP + ISIZE_HIGH + ISPACE_TTOP + CHIGH/2, nstr);
+ }
+
+@@ -1535,7 +1719,6 @@
+
+ int i,x,y,ix,iy,w,h;
+ BFIL *bf;
+- char tmpstr[64], *nstr;
+
+ if (num<0 || num >= br->bfLen) return;
+ bf = &(br->bfList[num]);
+@@ -1579,12 +1762,12 @@
+ y = (i / br->numWide) * ISPACE_HIGH;
+
+ XSetForeground(theDisp, theGC, browbg);
+- XFillRectangle(theDisp, br->iconW, theGC,
++ XFillRectangle(theDisp, br->iconW, theGC,
+ x, y + ISPACE_TOP + ISIZE_HIGH + ISPACE_TTOP - 1,
+ (u_int) ISPACE_WIDE, (u_int) LINEHIGH);
+
+- if (ctrlColor)
+- Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
++ if (ctrlColor)
++ Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
+ R3D_IN, 2, browhi, browlo, browbg);
+ }
+
+@@ -1597,6 +1780,10 @@
+ {
+ int sval, first, numvis;
+
++ /* if we know what path we have, remember last visible icon for this path */
++ if (br->path)
++ recIconVisible(br->path, num);
++
+ /* if icon #i isn't visible, adjust scrollbar so it *is* */
+
+ sval = br->scrl.val;
+@@ -1648,29 +1835,14 @@
+ return;
+ }
+
+-
+ /***************************************************************/
+-static int clickIconWin(br, mx, my, mtime, multi)
+- BROWINFO *br;
+- int mx,my,multi;
+- unsigned long mtime;
++static int updateSel(br, sel, multi, mtime)
++ BROWINFO *br;
++ int sel, multi;
++ unsigned long mtime;
+ {
+- /* returns '-1' normally, returns an index into bfList[] if the user
+- double-clicks an icon */
+-
+- int i,j, base, num, x,y,ix,iy, rv, sel, cpymode, dodel;
+- BROWINFO *destBr;
+- BFIL *bf;
+- char buf[256], *destFolderName;
+-
+- rv = -1; /* default return value */
+- if (!br->bfList || !br->bfLen) return rv;
+-
+- destBr = br; destFolderName = ".";
+-
+- sel = mouseInWhichIcon(br, mx, my);
+-
+- dodel = 0;
++ int i;
++ BFIL *bf;
+
+ if (sel == -1) { /* clicked on nothing */
+ if (!multi) { /* deselect all */
+@@ -1681,7 +1853,7 @@
+ }
+
+ changedNumLit(br, sel, 0);
+- br->lastIconClicked = -1;
++ br->lastIconClicked = -1;
+ }
+
+
+@@ -1725,14 +1897,14 @@
+
+ changedNumLit(br, sel, 0);
+
+-
++
+ /* see if we've double-clicked something */
+- if (sel==br->lastIconClicked && mtime-br->lastClickTime < DBLCLICKTIME) {
+- int k;
++ if (mtime &&
++ sel==br->lastIconClicked && mtime-br->lastClickTime < DBLCLICKTIME) {
+ br->lastIconClicked = -1; /* YES */
+
+ doubleClick(br, sel);
+- return rv;
++ return -1;
+ }
+
+ else {
+@@ -1741,9 +1913,37 @@
+ }
+ }
+
+-
+ changedNumLit(br, -1, 0);
++ return 0;
++}
++
++
++/***************************************************************/
++static int clickIconWin(br, mx, my, mtime, multi)
++ BROWINFO *br;
++ int mx,my,multi;
++ unsigned long mtime;
++{
++ /* returns '-1' normally, returns an index into bfList[] if the user
++ double-clicks an icon */
++
++ int i,j, sel, cpymode, dodel;
++ BROWINFO *destBr;
++ BFIL *bf;
++ char buf[256];
++ const char *destFolderName;
++
++ if (!br->bfList || !br->bfLen) return -1;
++
++ destBr = br; destFolderName = ".";
+
++ sel = mouseInWhichIcon(br, mx, my);
++ dodel = 0;
++
++ recIconVisible(br->path, sel);
++
++ if (updateSel(br, sel, multi, mtime))
++ return -1;
+
+
+ { /* track mouse until button1 is released */
+@@ -1759,10 +1959,10 @@
+ first = 1; hasrect = 0; cpymode = 0;
+ origsval = br->scrl.val;
+
+- if ( (sel>=0 && !multi) || sel==-1) {
++ if ( (sel>=0 && !multi) || sel==-1) {
+ /* clicked on an icon, or clicked on nothing... */
+
+- while (!XQueryPointer(theDisp, rootW, &rW, &cW, &rootx, &rooty,
++ while (!XQueryPointer(theDisp, rootW, &rW, &cW, &rootx, &rooty,
+ &x,&y,&mask));
+ if (mask & Button1Mask) { /* still held down */
+
+@@ -1773,7 +1973,7 @@
+ else curs = movecurs;
+
+ /* change cursors */
+- for (i=0; i<MAXBRWIN; i++)
++ for (i=0; i<MAXBRWIN; i++)
+ XDefineCursor(theDisp,binfo[i].iconW, curs);
+
+ samepos = oldx = oldy = oldbrnum = 0;
+@@ -1785,43 +1985,43 @@
+
+ if (sel>=0) { /* see if changed copy/move status (and cursor) */
+ int cmod;
+-
++
+ cmod = (mask&ControlMask || mask&ShiftMask) ? 1 : 0;
+
+ if (cmod != cpymode && !dodel) {
+ curs = (cmod) ? copycurs : movecurs;
+- for (i=0; i<MAXBRWIN; i++)
++ for (i=0; i<MAXBRWIN; i++)
+ XDefineCursor(theDisp,binfo[i].iconW, curs);
+ }
+ cpymode = cmod;
+-
+-
++
++
+ /* see if cursor is in any of the trash can areas */
+ for (i=0; i<MAXBRWIN; i++) {
+ if (binfo[i].vis) {
+- XTranslateCoordinates(theDisp, rW, binfo[i].win, rootx,rooty,
++ XTranslateCoordinates(theDisp, rW, binfo[i].win, rootx,rooty,
+ &bwx,&bwy, &cW);
+ if (inTrash(&binfo[i], bwx, bwy)) break;
+ }
+ }
+-
++
+ if (dodel && i==MAXBRWIN) { /* moved out */
+ dodel = 0;
+ curs = (cpymode) ? copycurs : movecurs;
+- for (i=0; i<MAXBRWIN; i++)
++ for (i=0; i<MAXBRWIN; i++)
+ XDefineCursor(theDisp,binfo[i].iconW, curs);
+ }
+-
++
+ else if (!dodel && i<MAXBRWIN) { /* moved in */
+ dodel = 1;
+- for (i=0; i<MAXBRWIN; i++)
++ for (i=0; i<MAXBRWIN; i++)
+ XDefineCursor(theDisp,binfo[i].iconW, delcurs);
+ }
+ }
+
+
+
+- XTranslateCoordinates(theDisp, rW, br->iconW, rootx,rooty,
++ XTranslateCoordinates(theDisp, rW, br->iconW, rootx,rooty,
+ &iwx,&iwy, &cW);
+
+ /* find deepest child that the mouse is in */
+@@ -1837,12 +2037,12 @@
+ /* if it's in any icon window, and we're doing icon-dragging
+ OR we're doing a rectangle-drag */
+
+- if (i<MAXBRWIN || sel == -1) {
++ if (i<MAXBRWIN || sel == -1) {
+ if (i<MAXBRWIN) destBr = &binfo[i];
+ if (sel == -1) destBr = br;
+
+- /* AUTO-SCROLLING: scroll any icon window if we're doing an
+- icon-drag. Only scroll the original window if we're doing
++ /* AUTO-SCROLLING: scroll any icon window if we're doing an
++ icon-drag. Only scroll the original window if we're doing
+ a rect drag */
+
+ if (sel>=0 && (oldx!=x || oldy!=y || oldbrnum!=i)) { /* moved */
+@@ -1873,7 +2073,7 @@
+ }
+ }
+
+-
++
+ /* if we clicked on an icon (originally), and therefore are
+ showing the 'move files' cursor, see if the cursor is within
+ the icon region of any folders. If so, light up *the icon
+@@ -1904,9 +2104,9 @@
+
+ /* Dragging a selection rectangle. */
+
+- else {
++ else {
+ static int prevx, prevy, prevcnt;
+- int origy, top, left, wide, high, cnt;
++ int origy, cnt;
+
+ if (first) { prevx = mx; prevy = my; first=0; prevcnt = -1; }
+
+@@ -1922,18 +2122,18 @@
+
+ rx = (mx < x) ? mx : x;
+ ry = (origy < y) ? origy : y;
+- rw = abs(mx - x);
++ rw = abs(mx - x);
+ rh = abs(origy - y);
+
+ /* figure out which icons need to be lit/unlit. Only
+ redraw those that have changed state */
+-
++
+ for (i=0,cnt=0, bf=br->bfList; i<br->bfLen; i++,bf++) {
+- int ix, iy, isin, light;
++ int ix, iy, isin;
+
+- ix = ((i%br->numWide) * ISPACE_WIDE)
++ ix = ((i%br->numWide) * ISPACE_WIDE)
+ + ISPACE_WIDE/2 - bf->w/2;
+- iy = ((i/br->numWide) * ISPACE_HIGH)
++ iy = ((i/br->numWide) * ISPACE_HIGH)
+ + ISPACE_TOP + ISIZE_HIGH - bf->h;
+
+ iy = iy - br->scrl.val * ISPACE_HIGH;
+@@ -1994,7 +2194,7 @@
+ }
+
+ /* RELEASED BUTTON: back to normal arrow cursor */
+- for (i=0; i<MAXBRWIN; i++)
++ for (i=0; i<MAXBRWIN; i++)
+ XDefineCursor(theDisp, binfo[i].iconW, None);
+
+ if (sel == -1) { /* was dragging rectangle */
+@@ -2007,7 +2207,7 @@
+ if (bf->lit == TEMP_LIT || bf->lit == TEMP_LIT1) {
+ bf->lit = 1; drawIcon(br, i);
+ }
+-
++
+ if (bf->lit) br->numlit++;
+ }
+
+@@ -2020,7 +2220,6 @@
+
+ /* if doing a copy or a move, do the thing to the files */
+ if (sel >= 0) {
+- char *destFolder;
+
+ if (DEBUG) {
+ fprintf(stderr,"---------------\n");
+@@ -2029,7 +2228,7 @@
+ fprintf(stderr,"Dest Folder: '%s'\n", destFolderName);
+ }
+
+-
++
+ if (!br->numlit) {
+ if (DEBUG) fprintf(stderr, "no selected files. Nothing to do!\n");
+ }
+@@ -2042,7 +2241,7 @@
+ if (DEBUG) fprintf(stderr, "no destination. Nothing to do!\n");
+ }
+
+- else if (strcmp(destFolderName,".") == 0 &&
++ else if (strcmp(destFolderName,".") == 0 &&
+ strcmp(br->path, destBr->path) == 0) {
+ if (DEBUG) fprintf(stderr,"source == destination. Nothing to do!\n");
+ }
+@@ -2067,20 +2266,20 @@
+ }
+ }
+ if (DEBUG) fprintf(stderr,"\n\n");
+-
++
+ #ifdef VMS
+ /*
+- * For VMS, our directory file names are identifed by the
+- * special filename extension, ".DIR". Unfortunately, this
+- * needs to be stripped before we ever actually use the name
++ * For VMS, our directory file names are identifed by the
++ * special filename extension, ".DIR". Unfortunately, this
++ * needs to be stripped before we ever actually use the name
+ * in a copy command... :( RLD 26-FEB-1993
+ */
+
+- *rindex ( destFolderName, '.' ) = '\0';
++ *rindex ( destFolderName, '.' ) = '\0'; /* FIXME: potentially writing into static strings! */
+ #endif
+
+
+- dragFiles(br, destBr, br->path, destBr->path, destFolderName, nlist,
++ dragFiles(br, destBr, br->path, destBr->path, destFolderName, nlist,
+ ncnt, cpymode);
+
+ /* free namelist */
+@@ -2099,7 +2298,7 @@
+ }
+ } /* end of 'tracking' sub-function */
+
+- return rv;
++ return -1;
+ }
+
+ /*******************************************/
+@@ -2113,6 +2312,8 @@
+
+ /* called to 'open' icon #sel, which could be a file or a dir */
+
++ br->lst = 0;
++
+ /* if sel == -1, then called via RETURN key. just use first lit item
+ as thing that was double clicked on */
+
+@@ -2155,7 +2356,7 @@
+ }
+
+
+-
++
+ /* double-clicked something. We should do something about it */
+ if (br->bfList[sel].ftype == BF_DIR) { /* try to cd */
+ #ifndef VMS
+@@ -2165,15 +2366,36 @@
+ else sprintf(buf, "%s%s", br->path, br->bfList[sel].name);
+ #endif
+
++#ifdef AUTO_EXPAND
++ if (Chvdir(buf)) {
++#else
+ if (chdir(buf)) {
++#endif
+ char str[512];
+ sprintf(str,"Unable to cd to '%s'\n", br->bfList[sel].name);
+ setBrowStr(br, str);
+ XBell(theDisp, 50);
+ }
+ else {
++#ifdef AUTO_EXPAND
++ if (Isvdir(buf)) {
++ BTSetActive(&br->but[BR_DELETE], 0);
++ br->cmdMB.dim[BR_DELETE] = 1;
++
++ BTSetActive(&br->but[BR_RENAME], 0);
++ br->cmdMB.dim[BR_RENAME] = 1;
++
++ BTSetActive(&br->but[BR_MKDIR], 0);
++ br->cmdMB.dim[BR_MKDIR] = 1;
++ }
++ else {
++ BTSetActive(&br->but[BR_MKDIR], 1);
++ br->cmdMB.dim[BR_MKDIR] = 0;
++ }
++#endif
+ scanDir(br);
+ SCSetVal(&(br->scrl), 0); /* reset to top on a chdir */
++ restIconVisible(br);
+ }
+ }
+
+@@ -2193,7 +2415,26 @@
+ *event_retP = THISNEXT;
+ }
+ else { *event_retP = LOADPIC; SetDirFName(buf); }
+-
++
++#ifdef VS_RESCMAP
++ /* Change Colormap for browser */
++ if (browPerfect && browCmap) {
++ int i;
++ XSetWindowAttributes xswa;
++ if(LocalCmap) {
++ xswa.colormap = LocalCmap;
++ _IfTempOut=2;
++ }
++ else {
++ xswa.colormap = theCmap;
++ _IfTempOut=2;
++ }
++ for(i=0;i<MAXBRWIN;i++)
++ XChangeWindowAttributes(theDisp, binfo[i].win, CWColormap, &xswa);
++ XFlush(theDisp);
++ }
++#endif
++
+ *event_doneP = 1; /* make MainLoop load image */
+ }
+ }
+@@ -2259,7 +2500,7 @@
+ stlen = XLookupString(kevt, buf, 128, &ks, (XComposeStatus *) NULL);
+ shift = kevt->state & ShiftMask;
+ ck = CursorKey(ks, shift, 1);
+- dealt = 1;
++ dealt = 1;
+
+ RemapKeyCheck(ks, buf, &stlen);
+
+@@ -2289,6 +2530,7 @@
+ case '\021': doCmd(br, BR_QUIT); break; /* ^Q = Quit xv */
+
+ case '\006': doCmd(br, BR_SELFILES); break; /* ^F = Select Files */
++ case '\030': doCmd(br, BR_CLIPBRD); break; /* ^X = Copy to clipboard */
+
+
+ /* case '\003': FakeButtonPress(&but[BCMTVIEW]); break; */ /* ^C */
+@@ -2299,6 +2541,9 @@
+ case '\n': doubleClick(br, -1); break; /* RETURN = load selected */
+
+ case ' ':
++ if (br->lst && (time(NULL) <= br->lst + incrementalSearchTimeout))
++ goto do_default;
++ /* else fall through... */
+ case '\010':
+ case '\177': /* SPACE = load next, BS/DEL = load prev */
+ if (br->bfLen && br->numlit >= 1) {
+@@ -2306,7 +2551,7 @@
+ char fname[MAXPATHLEN];
+
+ /* if 'shift-space' find last lit icon, select the next one after it,
+- and load it. If 'space' do the same, but lose prior lit. These
++ and load it. If 'space' do the same, but lose prior lit. These
+ are the only cases where br->numlit >1 allowed */
+
+ if (br->numlit>1 && buf[0] != ' ') return;
+@@ -2314,7 +2559,7 @@
+ if (buf[0]==' ' && (br->numlit>1 || (br->numlit==1 && shift))) {
+ for (i=br->bfLen-1; i>=0 && !br->bfList[i].lit; i--); /* i=last lit */
+ if (i==br->bfLen-1) return;
+-
++
+ i++;
+ if (!shift) {
+ for (j=0; j<br->bfLen; j++) {
+@@ -2348,6 +2593,9 @@
+
+ /* try to open this file */
+ sprintf(foo, "%s%s", br->path, br->bfList[i].name);
++#ifdef AUTO_EXPAND
++ Dirtovd(foo);
++#endif
+ for (j=0; j<numnames && strcmp(namelist[j],foo); j++);
+ if (j<numnames) {
+ curname = nList.selected = j;
+@@ -2363,8 +2611,11 @@
+ else { /* not SPACE, or SPACE and lit=1 and not shift */
+ for (i=0; i<br->bfLen && !br->bfList[i].lit; i++); /* find lit one */
+ sprintf(fname, "%s%s", br->path, br->bfList[i].name);
++#ifdef AUTO_EXPAND
++ Dirtovd(fname);
++#endif
+ viewsel = !(strcmp(fname, fullfname));
+-
++
+ if (viewsel) {
+ if (buf[0]==' ') browKey(br, CK_RIGHT);
+ else browKey(br, CK_LEFT);
+@@ -2372,7 +2623,7 @@
+
+ if (!br->bfList[i].lit || !viewsel) { /* changed selection */
+ for (i=0; i<br->bfLen && !br->bfList[i].lit; i++); /* find it */
+- if (br->bfList[i].ftype != BF_DIR)
++ if (br->bfList[i].ftype != BF_DIR)
+ doubleClick(br, -1);
+ }
+ }
+@@ -2381,7 +2632,8 @@
+
+
+ default: /* unknown character. Take it as an alpha accelerator */
+- if (buf[0] > 32) browAlpha(br, buf[0]);
++ do_default: /* (goto-label, not switch-label) */
++ if (buf[0] >= 32) browAlpha(br, buf[0]);
+ else XBell(theDisp, 0);
+ break;
+ }
+@@ -2401,6 +2653,8 @@
+ /* an arrow key (or something like that) was pressed in icon window.
+ change selection/scrollbar accordingly */
+
++ br->lst = 0;
++
+ /* handle easy keys */
+ if (key == CK_PAGEUP) SCSetVal(&br->scrl, br->scrl.val - br->scrl.page);
+ if (key == CK_PAGEDOWN) SCSetVal(&br->scrl, br->scrl.val + br->scrl.page);
+@@ -2410,10 +2664,10 @@
+ /* handle up/down/left/right keys
+ *
+ * if precisely *one* item is lit, than the up/down/left/right keys move
+- * the selection.
++ * the selection.
+ *
+ * if NO items are lit, then left/right select the first/last fully-displayed
+- * icon, and up/down simply scroll window up or down, without selecting
++ * icon, and up/down simply scroll window up or down, without selecting
+ * anything
+ *
+ * if more than one item is lit, up/down/left/right keys BEEP
+@@ -2443,8 +2697,8 @@
+ if (key == CK_DOWN) j = i + br->numWide;
+ if (key == CK_LEFT) j = i - 1;
+ if (key == CK_RIGHT) j = i + 1;
+-
+- if (j >= 0 && j < br->bfLen) {
++
++ if (j >= 0 && j < br->bfLen) {
+ br->bfList[i].lit = 0;
+ br->bfList[j].lit = 1;
+ makeIconVisible(br,j);
+@@ -2455,7 +2709,7 @@
+ }
+ }
+
+-
++
+ if (br->numlit == 0) { /* no current selection */
+ if (key == CK_UP) SCSetVal(&br->scrl, br->scrl.val - 1);
+ if (key == CK_DOWN) SCSetVal(&br->scrl, br->scrl.val + 1);
+@@ -2482,15 +2736,28 @@
+ /* find first 'plain' file that is lexically >= than the given ch */
+
+ int i,j;
++ time_t now = time(NULL);
+
+ if (!br->bfLen) return;
+- if (ch <= ' ' || ch > '\177') return; /* ignore 'funny' keys */
++ if (ch < ' ' || ch > '\177') return; /* ignore 'funny' keys */
+
+ for (i=0; i<br->bfLen && br->bfList[i].ftype==BF_DIR; i++);
+ if (i==br->bfLen) return; /* only directories in this dir */
+
++ if (!br->lst || (br->lst + incrementalSearchTimeout < now)) br->len = 0;
++ br->lst = now;
++
++ if (br->len + 2 > br->siz)
++ if ((br->str = (char *)realloc(br->str, (br->siz = br->len + 32))) == NULL)
++ br->siz = br->len = 0;
++
++ if (br->len + 2 <= br->siz) {
++ br->str[br->len++] = ch;
++ br->str[br->len] = '\0';
++ }
++
+ for ( ; i<br->bfLen; i++) {
+- if (br->bfList[i].name[0] >= ch) break;
++ if (strncmp(br->bfList[i].name, br->str, br->len) >= 0) break;
+ }
+
+ if (i==br->bfLen) i--;
+@@ -2541,20 +2808,24 @@
+ * The VMS chdir always needs 2 components (device and directory),
+ * so convert "/device" to "/device/000000" and convert
+ * "/" to "/XV_Root_Device/000000" (XV_RootDevice will need to be
+- * a special concealed device setup to provide list of available
++ * a special concealed device setup to provide list of available
+ * disks).
+ *
+ * End 'tmppath' by changing trailing '/' (of dir name) to a '\0'
+ */
+ *rindex ( tmppath, '/') = '\0';
+- if ( ((br->ndirs-sel) == 2) && (strlen(tmppath) > 1) )
++ if ( ((br->ndirs-sel) == 2) && (strlen(tmppath) > 1) )
+ strcat ( tmppath, "/000000" ); /* add root dir for device */
+ else if ((br->ndirs-sel) == 1 )
+ strcpy ( tmppath, "/XV_Root_Device/000000" ); /* fake top level */
+ }
+ #endif
+
++#ifdef AUTO_EXPAND
++ if (Chvdir(tmppath)) {
++#else
+ if (chdir(tmppath)) {
++#endif
+ char str[512];
+ sprintf(str,"Unable to cd to '%s'\n", tmppath);
+ MBRedraw(&(br->dirMB));
+@@ -2562,8 +2833,25 @@
+ XBell(theDisp, 50);
+ }
+ else {
++#ifdef AUTO_EXPAND
++ if (Isvdir(tmppath)) {
++ BTSetActive(&br->but[BR_DELETE], 0);
++ br->cmdMB.dim[BR_DELETE] = 1;
++
++ BTSetActive(&br->but[BR_RENAME], 0);
++ br->cmdMB.dim[BR_RENAME] = 1;
++
++ BTSetActive(&br->but[BR_MKDIR], 0);
++ br->cmdMB.dim[BR_MKDIR] = 1;
++ }
++ else {
++ BTSetActive(&br->but[BR_MKDIR], 1);
++ br->cmdMB.dim[BR_MKDIR] = 0;
++ }
++#endif
+ scanDir(br);
+ SCSetVal(&br->scrl, 0); /* reset to top of window on a chdir */
++ restIconVisible(br);
+ }
+ }
+ }
+@@ -2582,7 +2870,11 @@
+ if ((strlen(br->path) > (size_t) 2) && br->path[strlen(br->path)-1] == '/')
+ br->path[strlen(br->path)-1] = '\0';
+
++#ifdef AUTO_EXPAND
++ rv = Chvdir(br->path);
++#else
+ rv = chdir(br->path);
++#endif
+ if (rv) {
+ char str[512];
+ sprintf(str, "Unable to cd to '%s'\n", br->path);
+@@ -2590,6 +2882,24 @@
+ XBell(theDisp, 50);
+ }
+
++#ifdef AUTO_EXPAND
++ if (Isvdir(br->path)) {
++ BTSetActive(&br->but[BR_DELETE], 0);
++ br->cmdMB.dim[BR_DELETE] = 1;
++
++ BTSetActive(&br->but[BR_RENAME], 0);
++ br->cmdMB.dim[BR_RENAME] = 1;
++
++ BTSetActive(&br->but[BR_MKDIR], 0);
++ br->cmdMB.dim[BR_MKDIR] = 1;
++ }
++ else {
++ BTSetActive(&br->but[BR_MKDIR], 1);
++ br->cmdMB.dim[BR_MKDIR] = 0;
++ }
++#endif
++
++ restIconVisible(br);
+ strcat(br->path, "/"); /* put trailing '/' back on */
+ return rv;
+ }
+@@ -2599,7 +2909,7 @@
+ static void copyDirInfo(srcbr, dstbr)
+ BROWINFO *srcbr, *dstbr;
+ {
+- /* copies br info from an already existing browser window
++ /* copies br info from an already existing browser window
+ (ie, one that is already showing the same directory) */
+
+ int i, oldnum, maxv, page;
+@@ -2611,15 +2921,19 @@
+ /* copy mblist */
+ dstbr->ndirs = srcbr->ndirs;
+ for (i=0; i<dstbr->ndirs; i++) {
+- dstbr->mblist[i] = (char *) malloc(strlen(srcbr->mblist[i]) + 1);
++ dstbr->mblist[i] = strdup(srcbr->mblist[i]);
+ if (!dstbr->mblist[i]) FatalError("unable to malloc brMBlist[]");
+- strcpy(dstbr->mblist[i], srcbr->mblist[i]);
+ }
+
+- dstbr->dirMB.list = srcbr->mblist;
++#if 0
++ dstbr->dirMB.list = srcbr->mblist; /* original bug..? */
+ dstbr->dirMB.nlist = srcbr->ndirs;
++#else
++ dstbr->dirMB.list = dstbr->mblist; /* fixed by */
++ dstbr->dirMB.nlist = dstbr->ndirs; /* jp-extension. */
++#endif
+
+- XClearArea(theDisp, dstbr->dirMB.win, dstbr->dirMB.x, dstbr->dirMB.y,
++ XClearArea(theDisp, dstbr->dirMB.win, dstbr->dirMB.x, dstbr->dirMB.y,
+ dstbr->dirMB.w+3, dstbr->dirMB.h+3, False);
+
+ i = StringWidth(dstbr->mblist[0]) + 10;
+@@ -2644,7 +2958,7 @@
+
+ if ((i&0x03) == 0) drawTemp(dstbr, i, dstbr->bfLen);
+ if ((i & 0x3f) == 0) WaitCursor();
+-
++
+ sbf = &(srcbr->bfList[i]);
+ dbf = &(dstbr->bfList[i]);
+
+@@ -2670,7 +2984,7 @@
+ if (sbf->pimage) {
+ dbf->pimage = (byte *) malloc((size_t) dbf->w * dbf->h);
+ if (!dbf->pimage) FatalError("ran out of memory for dbf->pimage");
+- xvbcopy((char *) sbf->pimage, (char *) dbf->pimage,
++ xvbcopy((char *) sbf->pimage, (char *) dbf->pimage,
+ (size_t) (dbf->w * dbf->h));
+ }
+ else dbf->pimage = (byte *) NULL;
+@@ -2681,10 +2995,10 @@
+ xvbcopy((char *) sbf->ximage, (char *) dbf->ximage, sizeof(XImage));
+
+ if (sbf->ximage->data) {
+- dbf->ximage->data = (char *) malloc((size_t) dbf->ximage->height *
++ dbf->ximage->data = (char *) malloc((size_t) dbf->ximage->height *
+ dbf->ximage->bytes_per_line);
+ if (!dbf->ximage->data) FatalError("ran out of memory for ximg data");
+- xvbcopy((char *) sbf->ximage->data, (char *) dbf->ximage->data,
++ xvbcopy((char *) sbf->ximage->data, (char *) dbf->ximage->data,
+ (size_t) dbf->ximage->height * dbf->ximage->bytes_per_line);
+ }
+ }
+@@ -2701,15 +3015,15 @@
+ computeScrlVals(dstbr, &maxv, &page);
+ if (dstbr->scrl.val > maxv) dstbr->scrl.val = maxv;
+
+- XClearArea(theDisp, dstbr->iconW, 0, 0, (u_int) dstbr->iwWide,
++ XClearArea(theDisp, dstbr->iconW, 0, 0, (u_int) dstbr->iwWide,
+ (u_int) dstbr->iwHigh, True);
+ SCSetRange(&dstbr->scrl, 0, maxv, dstbr->scrl.val, page);
+
+ SetCursors(-1);
+ }
+
+-
+-
++
++
+
+ /***************************************************************/
+ static void scanDir(br)
+@@ -2726,7 +3040,7 @@
+ * and it's reasonable to expect folks to want to add their own bitmaps
+ */
+
+- int i,j,k,oldbflen,vmsparent;
++ int i,j,oldbflen,vmsparent;
+ BFIL *bf;
+
+ DIR *dirp;
+@@ -2753,7 +3067,7 @@
+ xv_getwd(path, sizeof(path));
+ if (path[strlen(path)-1] != '/') strcat(path,"/"); /* add trailing '/' */
+
+- for (i=0; i<br->ndirs; i++) free(br->mblist[i]); /* clear old dir names */
++ for (i=0; i<br->ndirs; i++) free((char *) br->mblist[i]); /* clear old dir names */
+
+ /* path will be something like: "/u3/bradley/src/weiner/whatever/" */
+
+@@ -2775,22 +3089,24 @@
+
+ /* build brMBlist */
+ for (i = br->ndirs-1,j=0; i>=0; i--,j++) {
+- size_t stlen = (i<(br->ndirs-1)) ? dirnames[i+1] - dirnames[i]
++ size_t stlen = (i<(br->ndirs-1)) ? dirnames[i+1] - dirnames[i]
+ : strlen(dirnames[i]);
++ char *copy;
+
+- br->mblist[j] = (char *) malloc(stlen+1);
+- if (!br->mblist[j]) FatalError("unable to malloc brMBlist[]");
++ copy = malloc(stlen+1);
++ if (!copy) FatalError("unable to malloc brMBlist[]");
+
+- strncpy(br->mblist[j], dirnames[i], stlen);
+- br->mblist[j][stlen] = '\0';
++ strncpy(copy, dirnames[i], stlen);
++ copy[stlen] = '\0';
++ br->mblist[j] = copy;
+ }
+-
++
+
+ /* refresh the brdirMB button */
+ br->dirMB.list = br->mblist;
+ br->dirMB.nlist = br->ndirs;
+
+- XClearArea(theDisp, br->dirMB.win, br->dirMB.x, br->dirMB.y,
++ XClearArea(theDisp, br->dirMB.win, br->dirMB.x, br->dirMB.y,
+ br->dirMB.w+3, br->dirMB.h+3, False);
+
+ i = StringWidth(br->mblist[0]) + 10;
+@@ -2815,7 +3131,7 @@
+ /* count how many files are in the list */
+
+ dirp = opendir(".");
+- if (!dirp) {
++ if (!dirp) {
+ endScan(br, oldbflen);
+ setBrowStr(br, "Couldn't read current directory.");
+ SetCursors(-1);
+@@ -2827,11 +3143,11 @@
+ #endif
+
+ while ( (dp = readdir(dirp)) != NULL) {
+- if (strcmp(dp->d_name, ".") &&
++ if (strcmp(dp->d_name, ".") &&
+ strcmp(dp->d_name, THUMBDIR)) {
+- if (!br->showhidden && dp->d_name[0] == '.' &&
++ if (!br->showhidden && dp->d_name[0] == '.' &&
+ strcmp(dp->d_name,"..")!=0) continue;
+- else
++ else
+ br->bfLen++;
+ }
+ if ((br->bfLen & 0x3f) == 0) WaitCursor();
+@@ -2877,13 +3193,13 @@
+ }
+ else {
+ do { dp = readdir(dirp); }
+- while (dp && (strcmp(dp->d_name, ".")==0 ||
++ while (dp && (strcmp(dp->d_name, ".")==0 ||
+ strcmp(dp->d_name, THUMBDIR)==0 ||
+ strcmp(dp->d_name, THUMBDIRNAME)==0 ||
+ (br->ndirs==1 && strcmp(dp->d_name,"..")==0) ||
+- (!br->showhidden && dp->d_name[0] == '.' &&
++ (!br->showhidden && dp->d_name[0] == '.' &&
+ strcmp(dp->d_name,"..")!=0)));
+-
++
+ if (!dp) { br->bfLen = i; break; } /* dir got shorter... */
+ }
+
+@@ -2940,11 +3256,11 @@
+ if (w<1) w = 1;
+ if (h<1) h = 1;
+
+- XClearArea(theDisp, br->iconW, (ctrlColor) ? 2 : 0, (ctrlColor) ? 2 : 0,
++ XClearArea(theDisp, br->iconW, (ctrlColor) ? 2 : 0, (ctrlColor) ? 2 : 0,
+ (u_int) w, (u_int) h, False);
+
+ SCSetRange(&br->scrl, 0, maxv, br->scrl.val, page);
+-
++
+ SetCursors(-1);
+ }
+
+@@ -2972,10 +3288,14 @@
+ bf->pimage = (byte *) NULL;
+ bf->ximage = (XImage *) NULL;
+ bf->lit = 0;
+-
++
+
+ if (stat(bf->name, &st)==0) {
++#ifdef AUTO_EXPAND
++ bf->ftype = stat2bf((u_int) st.st_mode , bf->name);
++#else
+ bf->ftype = stat2bf((u_int) st.st_mode);
++#endif
+ if (bf->ftype == BF_FILE && (st.st_mode & 0111)) bf->ftype = BF_EXE;
+
+ switch (bf->ftype) {
+@@ -3007,6 +3327,7 @@
+ case RFT_XBM: bf->ftype = BF_XBM; break;
+ case RFT_SUNRAS: bf->ftype = BF_SUNRAS; break;
+ case RFT_BMP: bf->ftype = BF_BMP; break;
++ case RFT_WBMP: bf->ftype = BF_BMP; break;
+ case RFT_UTAHRLE: bf->ftype = BF_UTAHRLE; break;
+ case RFT_IRIS: bf->ftype = BF_IRIS; break;
+ case RFT_PCX: bf->ftype = BF_PCX; break;
+@@ -3014,12 +3335,22 @@
+ case RFT_TIFF: bf->ftype = BF_TIFF; break;
+ case RFT_PDSVICAR: bf->ftype = BF_PDS; break;
+ case RFT_COMPRESS: bf->ftype = BF_COMPRESS; break;
++ case RFT_BZIP2: bf->ftype = BF_BZIP2; break;
+ case RFT_PS: bf->ftype = BF_PS; break;
+ case RFT_IFF: bf->ftype = BF_IFF; break;
+- case RFT_TARGA: bf->ftype = BF_TARGA; break;
++ case RFT_TARGA: bf->ftype = BF_TGA; break;
+ case RFT_XPM: bf->ftype = BF_XPM; break;
+ case RFT_XWD: bf->ftype = BF_XWD; break;
+ case RFT_FITS: bf->ftype = BF_FITS; break;
++ case RFT_PNG: bf->ftype = BF_PNG; break;
++ case RFT_ZX: bf->ftype = BF_ZX; break; /* [JCE] */
++ case RFT_PCD: bf->ftype = BF_PCD; break;
++ case RFT_MAG: bf->ftype = BF_MAG; break;
++ case RFT_MAKI: bf->ftype = BF_MAKI; break;
++ case RFT_PIC: bf->ftype = BF_PIC; break;
++ case RFT_PI: bf->ftype = BF_PI; break;
++ case RFT_PIC2: bf->ftype = BF_PIC2; break;
++ case RFT_MGCSFX: bf->ftype = BF_MGCSFX; break;
+ }
+ }
+ }
+@@ -3048,11 +3379,11 @@
+ bfcompares++;
+ if ((bfcompares & 0x7f)==0) WaitCursor();
+
+- /* sort critera: directories first, in alphabetical order,
++ /* sort critera: directories first, in alphabetical order,
+ followed by everything else, in alphabetical order */
+-
++
+ if ((b1->ftype == BF_DIR && b2->ftype == BF_DIR) ||
+- (b1->ftype != BF_DIR && b2->ftype != BF_DIR))
++ (b1->ftype != BF_DIR && b2->ftype != BF_DIR))
+ return strcmp(b1->name, b2->name);
+
+ else if (b1->ftype == BF_DIR && b2->ftype != BF_DIR) return -1;
+@@ -3108,7 +3439,7 @@
+ for (i=0; i<bflen; i++) {
+ bfnames[i] = (char *) malloc(strlen(br->bfList[i].name) + 1);
+ if (!bfnames[i]) FatalError("couldn't alloc bfnames in rescanDir()");
+-
++
+ strcpy(bfnames[i], br->bfList[i].name);
+ }
+ }
+@@ -3121,7 +3452,7 @@
+
+ /* note, either (or both) dirnames/bfnames can be NULL, in which case
+ their respective 'len's will be zero */
+-
++
+ /* sort the two name lists */
+ if (bflen) qsort((char *) bfnames, (size_t) bflen, sizeof(char *),namcmp);
+ if (dirlen) qsort((char *) dirnames, (size_t) dirlen,sizeof(char *),namcmp);
+@@ -3153,7 +3484,7 @@
+ }
+ }
+ bflen = j;
+-
++
+
+ for (i=j=0; i<dirlen; i++) {
+ if (dirnames[i] && strcmp(dirnames[i],".") && strcmp(dirnames[i],"..") &&
+@@ -3162,21 +3493,21 @@
+ }
+ }
+ dirlen = j;
+-
++
+
+ if (DEBUG) {
+ fprintf(stderr,"%d files seem to have gone away: ", bflen);
+- for (i=0; i<bflen; i++)
++ for (i=0; i<bflen; i++)
+ fprintf(stderr,"%s ", bfnames[i]);
+ fprintf(stderr,"\n\n");
+
+ fprintf(stderr,"%d files seem to have appeared: ", dirlen);
+- for (i=0; i<dirlen; i++)
++ for (i=0; i<dirlen; i++)
+ fprintf(stderr,"%s ", dirnames[i]);
+ fprintf(stderr,"\n\n");
+ }
+-
+-
++
++
+ /* create a new bfList */
+ newlen = br->bfLen - bflen + dirlen; /* oldlen - #del'd + #created */
+ if (newlen>0) {
+@@ -3241,7 +3572,7 @@
+ if (bf->pimage) free(bf->pimage);
+ if (bf->ximage) xvDestroyImage(bf->ximage);
+ }
+-
++
+ free(br->bfList);
+ }
+
+@@ -3263,17 +3594,17 @@
+
+ /***************************************************************/
+ static char **getDirEntries(dir, lenP, dohidden)
+- char *dir;
++ const char *dir;
+ int *lenP;
+ int dohidden;
+ {
+- /* loads up all directory entries into an array. This *isn't* a great
+- way to do it, but I can't count on 'scandir()' existing on
++ /* loads up all directory entries into an array. This *isn't* a great
++ way to do it, but I can't count on 'scandir()' existing on
+ every system. Returns 'NULL' on failure, or pointer to array of
+ 'lenP' strings on success. '.' and '..' ARE included in list
+ if !dohidden, all '.*' files are skipped (except . and ..) */
+
+- int i, j, dirlen;
++ int i, dirlen;
+ DIR *dirp;
+ char **names;
+ #ifdef NODIRENT
+@@ -3294,9 +3625,9 @@
+ /* count # of entries in dir (worst case) */
+ for (dirlen=0; (dp = readdir(dirp)) != NULL; dirlen++);
+ if (!dirlen) {
+- closedir(dirp);
++ closedir(dirp);
+ *lenP = dirlen;
+- return (char **) NULL;
++ return (char **) NULL;
+ }
+
+
+@@ -3312,7 +3643,7 @@
+
+ if (!dohidden) {
+ #ifndef VMS
+- if (dp->d_name[0] == '.' &&
++ if (dp->d_name[0] == '.' &&
+ strcmp(dp->d_name,"." )!=0 &&
+ strcmp(dp->d_name,"..")!=0) continue;
+ #endif
+@@ -3324,7 +3655,7 @@
+ strcpy(names[i], dp->d_name);
+ i++;
+ }
+-
++
+ if (i<dirlen) dirlen = i; /* dir got shorter... */
+
+ closedir(dirp);
+@@ -3359,7 +3690,7 @@
+ static void genSelectedIcons(br)
+ BROWINFO *br;
+ {
+- int i, sval, first, numvis, cnt;
++ int i, cnt;
+
+ setBrowStr(br, "");
+
+@@ -3395,7 +3726,7 @@
+ BFIL *bf;
+ {
+ /* given a BFIL entry, load up the file.
+- * if we succeeded in loading up the file,
++ * if we succeeded in loading up the file,
+ * generate an aspect-correct 8-bit image using brow Cmap
+ * otherwise
+ * replace this icon with the BF_UNKNOWN, or BF_ERR icons
+@@ -3406,22 +3737,22 @@
+ double wexpand,hexpand;
+ int iwide, ihigh;
+ byte *icon24, *icon8;
+- char str[256], str1[256], *readname, uncompname[128];
++ char str[256], str1[256], readname[128], uncompname[128];
+ char basefname[128], *uncName;
+-
+-
++
++
+ if (!bf || !bf->name || bf->name[0] == '\0') return; /* shouldn't happen */
+ str[0] = '\0';
+ basefname[0] = '\0';
+ pinfo.pic = (byte *) NULL;
+ pinfo.comment = (char *) NULL;
+- readname = bf->name;
+-
++ strncpy(readname, bf->name, sizeof(readname) - 1);
++
+ /* free any old info in 'bf' */
+ if (bf->imginfo) free (bf->imginfo);
+ if (bf->pimage) free (bf->pimage);
+ if (bf->ximage) xvDestroyImage(bf->ximage);
+-
++
+ bf->imginfo = (char *) NULL;
+ bf->pimage = (byte *) NULL;
+ bf->ximage = (XImage *) NULL;
+@@ -3429,10 +3760,10 @@
+
+ /* skip all 'special' files */
+ if (!ISLOADABLE(bf->ftype)) return;
+-
++
+ filetype = ReadFileType(bf->name);
+-
+- if (filetype == RFT_COMPRESS) {
++
++ if ((filetype == RFT_COMPRESS) || (filetype == RFT_BZIP2)) {
+ #if (defined(VMS) && !defined(GUNZIP))
+ /* VMS decompress doesn't like the file to have a trailing .Z in fname
+ however, GUnZip is OK with it, which we are calling UnCompress */
+@@ -3442,10 +3773,10 @@
+ #else
+ uncName = bf->name;
+ #endif
+-
+- if (UncompressFile(uncName, uncompname)) {
++
++ if (UncompressFile(uncName, uncompname, filetype)) {
+ filetype = ReadFileType(uncompname);
+- readname = uncompname;
++ strncpy(readname, uncompname, sizeof(readname) - 1);
+ }
+ else {
+ sprintf(str, "Couldn't uncompress file '%s'", bf->name);
+@@ -3453,71 +3784,139 @@
+ bf->ftype = BF_ERROR;
+ }
+ }
+-
++
++#ifdef MACBINARY
++ if (handlemacb && macb_file == True && bf->ftype != BF_ERROR) {
++ if (RemoveMacbinary(readname, uncompname)) {
++ if (strcmp(readname, bf->name)!=0) unlink(readname);
++ strncpy(readname, uncompname, sizeof(readname) - 1);
++ }
++ else {
++ sprintf(str, "Unable to remove a InfoFile header form '%s'.", bf->name);
++ setBrowStr(br, str);
++ bf->ftype = BF_ERROR;
++ }
++ }
++#endif
++
++#ifdef HAVE_MGCSFX_AUTO
++ if (bf->ftype != BF_ERROR) {
++ if(filetype == RFT_MGCSFX){
++ char tmpname[128];
++ char *icom;
++
++ if((icom = mgcsfx_auto_input_com(bf->name)) != NULL){
++ sprintf(tmpname, "%s/xvmsautoXXXXXX", tmpdir);
++#ifdef USE_MKSTEMP
++ close(mkstemp(tmpname));
++#else
++ mktemp(tmpname);
++#endif
++ SetISTR(ISTR_INFO, "Converting to known format by MgcSfx auto...");
++ sprintf(str,"%s >%s", icom, tmpname);
++ }else goto ms_auto_no;
++
++#ifndef VMS
++ if (system(str))
++#else
++ if (!system(str))
++#endif
++ {
++ sprintf(str, "Unable to convert '%s' by MgcSfx auto.", bf->name);
++ setBrowStr(br, str);
++ bf->ftype = BF_ERROR;
++ }
++ else {
++ filetype = ReadFileType(tmpname);
++ if (strcmp(readname, bf->name)!=0) unlink(readname);
++ strncpy(readname, tmpname, sizeof(readname) - 1);
++ }
++ }
++ }
++ms_auto_no:
++#endif /* HAVE_MGCSFX_AUTO */
++
+ /* get rid of comments. don't need 'em */
+ if (pinfo.comment) free(pinfo.comment); pinfo.comment = (char *) NULL;
+-
+- if (filetype == RFT_ERROR) {
++
++ if (filetype == RFT_ERROR) {
+ sprintf(str,"Couldn't open file '%s'", bf->name);
+ setBrowStr(br, str);
+ bf->ftype = BF_ERROR;
+ }
+-
++
+ else if (filetype == RFT_UNKNOWN) {
+ /* if it *was* an 'exe', leave it that way */
+ if (bf->ftype != BF_EXE) bf->ftype = BF_UNKNOWN;
+ }
+-
++
+ else {
+ /* otherwise it's a known filetype... do the *hard* part now... */
+-
++
++#ifdef VS_ADJUST
++ normaspect = defaspect;
++#endif
+ i = ReadPicFile(readname, filetype, &pinfo, 1);
+ KillPageFiles(pinfo.pagebname, pinfo.numpages);
+-
++
+ if (!i) bf->ftype = BF_ERROR;
+-
++
+ if (i && (pinfo.w<=0 || pinfo.h<=0)) { /* bogus size */
+ bf->ftype = BF_ERROR;
+ free(pinfo.pic); pinfo.pic = (byte *) NULL;
+ }
+-
++
+ if (bf->ftype==BF_ERROR && filetype==RFT_XBM) bf->ftype = BF_UNKNOWN;
+ }
+-
++
+ /* get rid of comment, as we don't need it */
+- if (pinfo.comment) {
++ if (pinfo.comment) {
+ free(pinfo.comment); pinfo.comment = (char *) NULL;
+ }
+-
++
+ /* if we made an uncompressed file, we can rm it now */
+- if (readname != bf->name) unlink(readname);
+-
+-
++ if (strcmp(readname, bf->name)!=0) unlink(readname);
++
++
+ /* at this point either BF_ERROR, BF_UNKNOWN, BF_EXE or pic */
+-
++
+ if (!pinfo.pic) {
+ if (bf->ftype == BF_EXE) return; /* don't write thumbfiles for exe's */
+-
++
+ bf->w = br_file_width; bf->h = br_file_height;
+ writeThumbFile(br, bf, NULL, 0, 0, NULL); /* BF_ERROR, BF_UNKNOWN */
+ return;
+ }
+-
++
+ /* at this point, we have a pic, so it must be an image file */
+-
+-
++
++
+ /* compute size of icon (iwide,ihigh) */
+-
++
++#ifdef VS_ADJUST
++ if (!vsadjust) normaspect = 1;
++
++ wexpand = (double) (pinfo.w * normaspect) / (double) ISIZE_WIDE;
++#else
+ wexpand = (double) pinfo.w / (double) ISIZE_WIDE;
++#endif /* VS_ADJUST */
+ hexpand = (double) pinfo.h / (double) ISIZE_HIGH;
+
+ if (wexpand >= 1.0 || hexpand >= 1.0) { /* don't expand small icons */
+ if (wexpand>hexpand) {
++#ifdef VS_ADJUST
++ iwide = (int) ((pinfo.w * normaspect) / wexpand + 0.5);
++#else
+ iwide = (int) (pinfo.w / wexpand + 0.5);
++#endif
+ ihigh = (int) (pinfo.h / wexpand + 0.5);
+ }
+ else {
++#ifdef VS_ADJUST
++ iwide = (int) ((pinfo.w * normaspect) / hexpand + 0.5);
++#else
+ iwide = (int) (pinfo.w / hexpand + 0.5);
++#endif
+ ihigh = (int) (pinfo.h / hexpand + 0.5);
+ }
+ }
+@@ -3527,13 +3926,13 @@
+
+
+ /* generate icon */
+- icon24 = Smooth24(pinfo.pic, pinfo.type==PIC24, pinfo.w, pinfo.h,
++ icon24 = Smooth24(pinfo.pic, pinfo.type==PIC24, pinfo.w, pinfo.h,
+ iwide, ihigh, pinfo.r,pinfo.g,pinfo.b);
+ if (!icon24) { bf->ftype = BF_FILE; free(pinfo.pic); return; }
+
+ sprintf(str, "%dx%d ", pinfo.normw, pinfo.normh);
+ switch (filetype) {
+- case RFT_GIF: if (xv_strstr(pinfo.shrtInfo, "GIF89"))
++ case RFT_GIF: if (xv_strstr(pinfo.shrtInfo, "GIF89"))
+ strcat(str,"GIF89 file");
+ else
+ strcat(str,"GIF87 file");
+@@ -3543,12 +3942,12 @@
+
+ case RFT_PBM: if (xv_strstr(pinfo.fullInfo, "raw")) strcat(str,"Raw ");
+ else strcat(str,"Ascii ");
+-
++
+ for (i=0; i<3 && (strlen(pinfo.fullInfo)>(size_t)3); i++){
+ str1[0] = pinfo.fullInfo[i]; str1[1] = '\0';
+ strcat(str, str1);
+ }
+-
++
+ strcat(str," file");
+ break;
+
+@@ -3567,21 +3966,30 @@
+ case RFT_XPM: strcat(str,"XPM file"); break;
+ case RFT_XWD: strcat(str,"XWD file"); break;
+ case RFT_FITS: strcat(str,"FITS file"); break;
++ case RFT_PNG: strcat(str,"PNG file"); break;
++ case RFT_ZX: strcat(str,"Spectrum SCREEN$"); break; /* [JCE] */
++ case RFT_PCD: strcat(str,"PhotoCD file"); break;
++ case RFT_MAG: strcat(str,"MAG file"); break;
++ case RFT_MAKI: strcat(str,"MAKI file"); break;
++ case RFT_PIC: strcat(str,"PIC file"); break;
++ case RFT_PI: strcat(str,"PI file"); break;
++ case RFT_PIC2: strcat(str,"PIC2 file"); break;
++ case RFT_MGCSFX: strcat(str,"Magic Suffix file"); break;
+ default: strcat(str,"file of unknown type"); break;
+ }
+-
+-
++
++
+ /* find out length of original file */
+ { FILE *fp;
+ long filesize;
+ char buf[64];
+-
++
+ fp = fopen(bf->name, "r");
+ if (fp) {
+ fseek(fp, 0L, 2);
+ filesize = ftell(fp);
+ fclose(fp);
+-
++
+ sprintf(buf," (%ld bytes)", filesize);
+ strcat(str, buf);
+ }
+@@ -3609,17 +4017,17 @@
+ bf->w = iwide;
+ bf->h = ihigh;
+ bf->ftype = BF_HAVEIMG;
+-
++
+ bf->ximage = Pic8ToXImage(icon8, (u_int) iwide, (u_int) ihigh, browcols,
+ browR, browG, browB);
+-
++
+ free(icon24);
+ free(pinfo.pic);
+ }
+
+
+
+-
++
+
+
+ /*
+@@ -3670,6 +4078,10 @@
+
+ sprintf(thFname, "%s%s/%s", br->path, THUMBDIR, bf->name);
+
++#ifdef AUTO_EXPAND
++ Dirtovd(thFname);
++#endif
++
+ fp = fopen(thFname, "r");
+ if (!fp) return; /* nope, it doesn't have one */
+
+@@ -3682,7 +4094,7 @@
+ /* read comments until we see '#END_OF_COMMENTS', or hit EOF */
+ while (1) {
+ if (!fgets(buf, 256, fp)) goto errexit;
+-
++
+ if (!strncmp(buf, "#END_OF_COMMENTS", strlen("#END_OF_COMMENTS")))
+ break;
+
+@@ -3714,7 +4126,7 @@
+
+
+ /* read width, height, maxval */
+- if (!fgets(buf, 256, fp) || sscanf(buf, "%d %d %d", &w, &h, &mv) != 3)
++ if (!fgets(buf, 256, fp) || sscanf(buf, "%d %d %d", &w, &h, &mv) != 3)
+ goto errexit;
+
+
+@@ -3738,14 +4150,14 @@
+ bf->h = h;
+ bf->ftype = BF_HAVEIMG;
+ bf->imginfo = info;
+-
+- bf->ximage = Pic8ToXImage(icon8, (u_int) w, (u_int) h, browcols,
++
++ bf->ximage = Pic8ToXImage(icon8, (u_int) w, (u_int) h, browcols,
+ browR, browG, browB);
+ }
+ else {
+ if (info) free(info);
+ }
+-
++
+ fclose(fp);
+ return;
+
+@@ -3757,7 +4169,7 @@
+ }
+
+
+-
++
+ /***************************************************************/
+ static void writeThumbFile(br, bf, icon8, w, h, info)
+ BROWINFO *br;
+@@ -3785,9 +4197,14 @@
+
+ sprintf(thFname, "%s%s/%s", br->path, THUMBDIR, bf->name);
+
++#ifdef AUTO_EXPAND
++ Dirtovd(thFname);
++#endif
++
++ unlink(thFname); /* just in case there's already an unwritable one */
+ fp = fopen(thFname, "w");
+ if (!fp) {
+- sprintf(buf, "Can't create thumbnail file '%s': %s", thFname,
++ sprintf(buf, "Can't create thumbnail file '%s': %s", thFname,
+ ERRSTR(errno));
+ setBrowStr(br, buf);
+ return; /* can't write... */
+@@ -3829,9 +4246,9 @@
+ setBrowStr(br, buf);
+ return; /* can't write... */
+ }
+-
++
+ fclose(fp);
+-
++
+ chmod(thFname, (mode_t) perm);
+ }
+
+@@ -3849,15 +4266,29 @@
+
+ sprintf(thFname, "%s%s", br->path, THUMBDIRNAME);
+
++#ifdef AUTO_EXPAND
++ Dirtovd(thFname);
++#endif
++
+ i = stat(thFname, &st);
+ if (i) { /* failed, let's create it */
+ sprintf(thFname, "%s.", br->path);
++#ifdef AUTO_EXPAND
++ Dirtovd(thFname);
++#endif
+ i = stat(thFname, &st); /* get permissions of parent dir */
+ if (!i) perm = st.st_mode & 07777;
+ else perm = 0755;
+
+ sprintf(thFname, "%s%s", br->path, THUMBDIRNAME);
+- mkdir(thFname, (mode_t) perm);
++#ifdef AUTO_EXPAND
++ Dirtovd(thFname);
++#endif
++ i = mkdir(thFname, (mode_t) perm);
++#ifdef VIRTUAL_TD
++ if (i < 0)
++ Mkvdir_force(thFname);
++#endif
+ }
+ }
+
+@@ -3899,7 +4330,7 @@
+ for (i=0, bf=br->bfList; i<br->bfLen; i++, bf++) {
+ if (bf->ftype <= BF_FILE || bf->ftype >= BF_ERROR || bf->ftype==BF_EXE) {
+
+- /* ie, not a 'special' file */
++ /* i.e., not a 'special' file */
+
+ int s1, s2;
+ char thfname[256];
+@@ -3913,10 +4344,9 @@
+ sprintf(thfname, "%s/%s", THUMBDIR, bf->name);
+ s2 = stat(thfname, &thumbst);
+
+- if (s1 || s2 || filest.st_mtime > thumbst.st_mtime ||
+- filest.st_ctime > thumbst.st_ctime) {
+- /* either stat'ing the file or the thumbfile failed, or
+- both stat's succeeded and the file has a newer mod or creation
++ if (s1 || s2 || filest.st_mtime > thumbst.st_mtime) {
++ /* either stat'ing the file or the thumbfile failed, or
++ both stat's succeeded and the file has a newer mod
+ time than the thumbnail file */
+
+ makeIconVisible(br, i);
+@@ -3926,11 +4356,16 @@
+
+ if (bf->ftype != BF_EXE) {
+ iconsBuilt++;
+- if (DEBUG)
+- fprintf(stderr,"icon made:fname='%s' thfname='%s' %d,%d,%d,%d\n",
+- bf->name, thfname, s1,s2,filest.st_mtime,thumbst.st_mtime);
++ if (DEBUG)
++ fprintf(stderr,"icon made:fname='%s' thfname='%s' %d,%d,%ld,%ld\n",
++ bf->name, thfname, s1, s2,
++ (long)filest.st_mtime, (long)thumbst.st_mtime);
+ }
+ }
++ else if (filest.st_ctime > thumbst.st_ctime) {
++ /* update protections */
++ chmod(thfname, (mode_t) (filest.st_mode & 07777));
++ }
+ }
+ statcount++;
+
+@@ -3964,7 +4399,11 @@
+ sprintf(thfname, "%s/%s", THUMBDIR, dp->d_name);
+ if (stat(thfname, &thumbst)==0) { /* success */
+ int tmp;
++#ifdef AUTO_EXPAND
++ tmp = stat2bf((u_int) thumbst.st_mode , thfname);
++#else
+ tmp = stat2bf((u_int) thumbst.st_mode);
++#endif
+
+ if (tmp == BF_FILE) { /* a plain file */
+ /* see if this thumbfile has an associated pic file */
+@@ -3974,7 +4413,7 @@
+ }
+ }
+ statcount++;
+-
++
+ if ((statcount % 30)==0) WaitCursor();
+ }
+ closedir(dirp);
+@@ -3998,16 +4437,16 @@
+ {
+ if (maxcnt<1) return; /* none of that naughty ol' divide by zero stuff */
+
+- DrawTempGauge(br->win, 5, br->dirMB.y,
++ DrawTempGauge(br->win, 5, br->dirMB.y,
+ (int) br->dirMB.x-10, (int) br->dirMB.h,
+ (double) cnt / (double) maxcnt,
+ browfg, browbg, browhi, browlo, "");
+ }
+-
++
+ static void clearTemp(br)
+ BROWINFO *br;
+ {
+- XClearArea(theDisp, br->win, 5, br->dirMB.y,
++ XClearArea(theDisp, br->win, 5, br->dirMB.y,
+ (u_int) br->dirMB.x-10+1, (u_int) br->dirMB.h + 1, True);
+ }
+
+@@ -4038,17 +4477,26 @@
+ pops up a 'what do you want to rename it to' box, and attempts to
+ do the trick... */
+
+- int i, num;
+- char buf[128], txt[256], *origname, txt1[256];
+- static char *labels[] = { "\nOk", "\033Cancel" };
+- struct stat st;
++ int i, num;
++ char buf[128], txt[256], *origname, txt1[256];
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ struct stat st;
++
++#ifdef AUTO_EXPAND
++ if (Isvdir(br->path)) {
++ sprintf(buf,"Sorry, you can't rename file in the virtual directory, '%s'",
++ br->path);
++ ErrPopUp(buf, "\nBummer!");
++ return;
++ }
++#endif
+
+ if (cdBrow(br)) return;
+
+ /* find the selected file */
+ for (i=0; i<br->bfLen && !br->bfList[i].lit; i++);
+ if (i==br->bfLen) return; /* shouldn't happen */
+-
++
+ origname = br->bfList[i].name; num = i;
+
+ if (strcmp(origname, "..")==0) {
+@@ -4058,7 +4506,7 @@
+ return;
+ }
+
+- sprintf(txt, "Enter a new name for the %s '%s':",
++ sprintf(txt, "Enter a new name for the %s '%s':",
+ (br->bfList[i].ftype==BF_DIR) ? "directory" : "file",
+ origname);
+
+@@ -4107,7 +4555,7 @@
+ drawIcon(br, num);
+
+ for (i=0; i<MAXBRWIN; i++) {
+- if (&binfo[i] != br && strcmp(binfo[i].path, br->path)==0)
++ if (&binfo[i] != br && strcmp(binfo[i].path, br->path)==0)
+ rescanDir(&binfo[i]);
+ }
+
+@@ -4125,15 +4573,24 @@
+ pops up a 'what do you want to call it' box, and attempts to
+ do the trick... */
+
+- int i;
+- char buf[128], txt[256];
+- static char *labels[] = { "\nOk", "\033Cancel" };
+- struct stat st;
++ int i;
++ char buf[128], txt[256];
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ struct stat st;
++
++#ifdef AUTO_EXPAND
++ if (Isvdir(br->path)) {
++ sprintf(buf,"Sorry, you can't mkdir in the virtual directory, '%s'",
++ br->path);
++ ErrPopUp(buf, "\nBummer!");
++ return;
++ }
++#endif
+
+ if (cdBrow(br)) return;
+
+ buf[0] = '\0';
+- i = GetStrPopUp("Enter name for new directory:", labels, 2,
++ i = GetStrPopUp("Enter name for new directory:", labels, 2,
+ buf, 128, "/ |\'\"<>,", 0);
+ if (i) return; /* cancelled */
+
+@@ -4161,7 +4618,7 @@
+
+ /* rescan current br, and all other br's pointing to same directory */
+ for (i=0; i<MAXBRWIN; i++) {
+- if (strcmp(binfo[i].path, br->path)==0)
++ if (strcmp(binfo[i].path, br->path)==0)
+ rescanDir(&binfo[i]);
+ }
+
+@@ -4176,10 +4633,10 @@
+ static void doChdirCmd(br)
+ BROWINFO *br;
+ {
+- int i;
+- static char buf[MAXPATHLEN+100];
+- static char *labels[] = { "\nOk", "\033Cancel" };
+- char str[512];
++ int i;
++ static char buf[MAXPATHLEN+100];
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char str[512];
+
+ buf[0] = '\0';
+ i = GetStrPopUp("Change to directory:", labels, 2, buf, MAXPATHLEN, " ", 0);
+@@ -4198,14 +4655,35 @@
+ if (cdBrow(br)) return; /* prints its own error message */
+ }
+
++#ifdef AUTO_EXPAND
++ if (Chvdir(buf)) {
++#else
+ if (chdir(buf)) {
++#endif
+ sprintf(str,"Unable to cd to '%s'\n", buf);
+ setBrowStr(br, str);
+ XBell(theDisp, 50);
+ }
+ else {
++#ifdef AUTO_EXPAND
++ if (Isvdir(buf)) {
++ BTSetActive(&br->but[BR_DELETE], 0);
++ br->cmdMB.dim[BR_DELETE] = 1;
++
++ BTSetActive(&br->but[BR_RENAME], 0);
++ br->cmdMB.dim[BR_RENAME] = 1;
++
++ BTSetActive(&br->but[BR_MKDIR], 0);
++ br->cmdMB.dim[BR_MKDIR] = 1;
++ }
++ else {
++ BTSetActive(&br->but[BR_MKDIR], 1);
++ br->cmdMB.dim[BR_MKDIR] = 0;
++ }
++#endif
+ scanDir(br);
+ SCSetVal(&(br->scrl), 0); /* reset to top on a chdir */
++ restIconVisible(br);
+ }
+ }
+
+@@ -4225,10 +4703,19 @@
+ * call 'rm_dir()' for each of the directories
+ */
+
+- BFIL *bf;
+- int i, j, numdirs, numfiles, slen, firstdel;
+- char buf[512];
+- static char *yesno[] = { "\004Delete", "\033Cancel" };
++ BFIL *bf;
++ int i, numdirs, numfiles, slen, firstdel;
++ char buf[512];
++ static const char *yesno[] = { "\004Delete", "\033Cancel" };
++
++#ifdef AUTO_EXPAND
++ if (Isvdir(br->path)) {
++ sprintf(buf,"Sorry, you can't delete file at the virtual directory, '%s'",
++ br->path);
++ ErrPopUp(buf, "\nBummer!");
++ return;
++ }
++#endif
+
+ if (!br->bfLen || !br->bfList || !br->numlit) return;
+
+@@ -4252,13 +4739,17 @@
+ for (i=0, bf=br->bfList; i<br->bfLen; i++,bf++) {
+ if (bf->lit) {
+ if (firstdel == -1) firstdel = i;
+- if (bf->ftype == BF_DIR) numdirs++;
++ if (bf->ftype == BF_DIR
++#ifdef AUTO_EXPAND
++ && (!Isarchive(bf->name))
++#endif
++ ) numdirs++;
+ else numfiles++;
+ }
+ }
+
+
+- /* if any plain files are being toasted, bring up the low-key
++ /* if any plain files are being toasted, bring up the low-key
+ confirmation box */
+
+ if (numfiles) {
+@@ -4266,7 +4757,12 @@
+ slen = strlen(buf);
+
+ for (i=0, bf=br->bfList; i<br->bfLen; i++,bf++) {
++#ifdef AUTO_EXPAND
++ if (bf->lit && (bf->ftype != BF_DIR || Isarchive(bf->name))) {
++#else
+ if (bf->lit && bf->ftype != BF_DIR) {
++#endif
++
+ if ( (slen + strlen(bf->name) + 1) > 256) {
+ strcat(buf,"...");
+ break;
+@@ -4278,10 +4774,10 @@
+ }
+ }
+
+- i = PopUp(buf, yesno, 2);
++ i = PopUp(buf, yesno, COUNT(yesno));
+ if (i) return; /* cancelled */
+ }
+-
++
+
+ /* if any directories are being toasted, bring up the are you REALLY sure
+ confirmation box */
+@@ -4291,7 +4787,11 @@
+ slen = strlen(buf);
+
+ for (i=0, bf=br->bfList; i<br->bfLen; i++,bf++) {
++#ifdef AUTO_EXPAND
++ if (bf->lit && (bf->ftype == BF_DIR || !Isarchive(bf->name))) {
++#else
+ if (bf->lit && bf->ftype == BF_DIR) {
++#endif
+ if ( (slen + strlen(bf->name) + 1) > 256) {
+ strcat(buf,"...");
+ break;
+@@ -4303,16 +4803,20 @@
+ }
+ }
+
+- i = PopUp(buf, yesno, 2);
++ i = PopUp(buf, yesno, COUNT(yesno));
+ if (i) return; /* cancelled */
+ }
+
+
+ /* okay, at this point they've been warned. do the deletion */
+-
++
+ for (i=0, bf=br->bfList; i<br->bfLen; i++,bf++) {
+ if (bf->lit) {
+- if (bf->ftype == BF_DIR) rm_dir (br, bf->name);
++ if (bf->ftype == BF_DIR
++#ifdef AUTO_EXPAND
++ && !Isarchive(bf->name)
++#endif
++ ) rm_dir (br, bf->name);
+ else rm_file(br, bf->name);
+ }
+ }
+@@ -4340,7 +4844,7 @@
+
+ /* rescan other br's that are looking at this directory */
+ for (i=0; i<MAXBRWIN; i++) {
+- if (&binfo[i] != br && strcmp(binfo[i].path, br->path)==0)
++ if (&binfo[i] != br && strcmp(binfo[i].path, br->path)==0)
+ rescanDir(&binfo[i]);
+ }
+
+@@ -4353,10 +4857,10 @@
+ static void doSelFilesCmd(br)
+ BROWINFO *br;
+ {
+- int i;
+- static char buf[MAXPATHLEN+100];
+- static char *labels[] = { "\nOk", "\033Cancel" };
+- char str[512];
++ int i;
++ static char buf[MAXPATHLEN+100];
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char str[512];
+
+ buf[0] = '\0';
+ strcpy(str,"Select file name(s). Wildcard '*' is allowed. ");
+@@ -4394,9 +4898,9 @@
+ static void doRecurseCmd(br)
+ BROWINFO *br;
+ {
+- int i;
+- static char *labels[] = { "\nOk", "\033Cancel" };
+- char str[512];
++ int i;
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char str[512];
+
+ strcpy(str,"Recursive Update: This could take *quite* a while.\n");
+ strcat(str,"Are you sure?");
+@@ -4415,9 +4919,9 @@
+
+
+ /*******************************************/
+-static void recurseUpdate(br, subdir)
+- BROWINFO *br;
+- char *subdir;
++static void recurseUpdate(br, subdir)
++ BROWINFO *br;
++ const char *subdir;
+ {
+ /* note: 'br->path + subdir' is the full path to recurse down from */
+
+@@ -4430,7 +4934,7 @@
+ * and for each subdir in this dir, recurse
+ *
+ * if cur dir != orig dir, cd back to orig dir and reload 'br'
+- */
++ */
+
+ int i;
+ char orgDir[MAXPATHLEN + 2];
+@@ -4441,7 +4945,11 @@
+ xv_getwd(orgDir, sizeof(orgDir));
+
+ sprintf(curDir, "%s%s", br->path, subdir);
++#ifdef AUTO_EXPAND
++ if (Chvdir(curDir)) {
++#else
+ if (chdir(curDir)) {
++#endif
+ char str[512];
+ sprintf(str, "Unable to cd to '%s'\n", curDir);
+ setBrowStr(br, str);
+@@ -4449,18 +4957,28 @@
+ }
+
+ xv_getwd(curDir, sizeof(curDir));
+-
++
+ /* have we looped? */
+ for (i=0; i<dirStackLen && strcmp(curDir, dirStack[i]); i++);
+ if (i<dirStackLen) { /* YES */
++#ifdef AUTO_EXPAND
++ Chvdir(orgDir);
++#else
+ chdir(orgDir);
++#endif
++ restIconVisible(br);
+ return;
+ }
+
+ sp = (char *) malloc((size_t) strlen(curDir) + 1);
+ if (!sp) {
+ setBrowStr(br, "malloc() error in recurseUpdate()\n");
++#ifdef AUTO_EXPAND
++ Chvdir(orgDir);
++#else
+ chdir(orgDir);
++#endif
++ restIconVisible(br);
+ return;
+ }
+
+@@ -4481,8 +4999,8 @@
+ /* do subdirectories of this directory, not counting . .. and .xvpics */
+ for (i=0; i<br->bfLen; i++) {
+ bf = &(br->bfList[i]);
+- if (bf &&
+- bf->ftype == BF_DIR &&
++ if (bf &&
++ bf->ftype == BF_DIR &&
+ strcmp(bf->name, ".") &&
+ strcmp(bf->name, "..") &&
+ strcmp(bf->name, THUMBDIRNAME) ) {
+@@ -4495,7 +5013,12 @@
+
+ xv_getwd(curDir, sizeof(curDir));
+ if (strcmp(orgDir, curDir)) { /* change back to orgdir */
++#ifdef AUTO_EXPAND
++ Chvdir(orgDir);
++#else
+ chdir(orgDir);
++#endif
++ restIconVisible(br);
+ scanDir(br);
+ }
+ }
+@@ -4519,12 +5042,19 @@
+ setBrowStr(br, buf);
+ }
+
++#ifdef AUTO_EXPAND
++ if (Rmvdir(name)) {
++ sprintf(buf, "fail to remove virturl directory: %s", name);
++ setBrowStr(br, buf);
++ }
++#endif
++
+ /* try to delete a thumbnail file, as well. ignore errors */
+ strcpy(buf1, name); /* tmp1 = leading path of name */
+ tmp = (char *) rindex(buf1, '/');
+ if (!tmp) strcpy(buf1,".");
+ else *tmp = '\0';
+-
++
+ sprintf(buf, "%s/%s/%s", buf1, THUMBDIR, BaseName(name));
+ if (DEBUG) fprintf(stderr," (%s)\n", buf);
+
+@@ -4548,7 +5078,7 @@
+ BROWINFO *br;
+ {
+ /* recursively delete this directory, and all things under it */
+-
++
+ int i, dirlen, longpath, oldpathlen;
+ char **names, *name, buf[512];
+ struct stat st;
+@@ -4569,7 +5099,7 @@
+ name = names[i];
+
+ /* skip . and .. (not that we should ever see them... */
+- if (name[0] == '.' && (name[1]=='\0' ||
++ if (name[0] == '.' && (name[1]=='\0' ||
+ (name[1]=='.' && name[2]=='\0'))) goto done;
+
+ if (strlen(name) + oldpathlen >= (MAXPATHLEN-3)) {
+@@ -4586,15 +5116,22 @@
+ rmdirPath[oldpathlen] = '\0';
+ goto done;
+ }
+-
+- if (stat2bf((u_int) st.st_mode) == BF_DIR) { /* skip, for now */
++
++#ifdef AUTO_EXPAND
++ if ((stat2bf((u_int) st.st_mode , rmdirPath) == BF_DIR)
++ && !Isarchive(rmdirPath)) /* skip, for now */
++#else
++
++ if (stat2bf((u_int) st.st_mode) == BF_DIR) /* skip, for now */
++#endif
++ {
+ rmdirPath[oldpathlen] = '\0';
+ continue; /* don't remove from list */
+ }
+
+ rm_file(br, rmdirPath);
+ rmdirPath[oldpathlen] = '\0';
+-
++
+ done: /* remove name from list */
+ free(name);
+ names[i] = (char *) NULL;
+@@ -4640,30 +5177,35 @@
+
+ static int overwrite;
+ #define OWRT_ASK 0
+-#define OWRT_NOASK 1
+-#define OWRT_CANCEL 2
+-
++#define OWRT_ALWAYS 1
++#define OWRT_NEVER 2
++#define OWRT_CANCEL 3
+
+ /*******************************************/
+-static void dragFiles(srcBr, dstBr, srcpath, dstpath, dstdir,
++static void dragFiles(srcBr, dstBr, srcpath, dstpath, dstdir,
+ names, nlen, cpymode)
+- BROWINFO *srcBr, *dstBr;
+- char *srcpath, *dstpath, *dstdir, **names;
+- int nlen, cpymode;
++ BROWINFO *srcBr, *dstBr;
++ char *srcpath, *dstpath, **names;
++ const char *dstdir;
++ int nlen, cpymode;
+ {
+- /* move or copy file(s) and their associated thumbnail files.
++ /* move or copy file(s) and their associated thumbnail files.
+ srcpath and dstpath will have trailing '/'s. dstdir is name of
+ folder in dstpath (or "." or "..") to write to. names is an nlen
+ long array of strings (the simple filenames of the files to move)
+ if 'cpymode' copy files, otherwise move them */
+
+- int i, j, k, dothumbs, fail;
++ int i, j, dothumbs, fail;
+ char dstp[MAXPATHLEN + 1];
+ char src[MAXPATHLEN+1], dst[MAXPATHLEN+1];
+ char buf[128];
+ struct stat st;
+
+
++ /* if the source directory is read-only, don't move files; copy them */
++ if (!cpymode && (access(srcpath, W_OK) != 0))
++ cpymode = 1;
++
+ /* build real destination dir */
+ strcpy(dstp, dstpath);
+
+@@ -4677,11 +5219,26 @@
+ }
+ else if (strcmp(dstdir,".")!=0) sprintf(dstp, "%s%s/", dstpath, dstdir);
+
++#ifdef AUTO_EXPAND
++ if (Isvdir(dstp)) {
++ sprintf(buf,"Sorry, you can't %s to the virtual directory, '%s'",
++ cpymode ? "copy" : "move", dstp);
++ ErrPopUp(buf, "\nBummer!");
++ SetCursors(-1);
++ return;
++ }
++ if (Isvdir(srcpath))
++ cpymode = 1;
++#endif
++
+
+
+ /* if there is a thumbnail directory in 'srcpath', make one for dstpath */
+ sprintf(src,"%s%s", srcpath, THUMBDIR);
+ dothumbs = 0;
++#ifdef AUTO_EXPAND
++ Dirtovd(src);
++#endif
+ if (stat(src, &st)==0) {
+ sprintf(dst,"%s%s", dstp, THUMBDIR);
+ mkdir(dst, st.st_mode & 07777);
+@@ -4712,6 +5269,14 @@
+ if (overwrite == OWRT_CANCEL) break; /* abort move */
+ if (j==1) fail++;
+
++#ifdef AUTO_EXPAND
++ if (!cpymode && j==0)
++ if (Movevdir(src,dst)) {
++ sprintf(buf, "fail to move virturl directory: %s", names[i]);
++ setBrowStr(srcBr, buf);
++ }
++#endif
++
+ if (dothumbs && j==0) {
+ sprintf(src,"%s%s/%s", srcpath, THUMBDIR, names[i]);
+ sprintf(dst,"%s%s/%s", dstp, THUMBDIR, names[i]);
+@@ -4749,8 +5314,17 @@
+ }
+
+
++ if (!cpymode) {
++ /* clear all lit files in the source folder (as they've been moved)
++ note: this won't be the optimal behavior if any files failed to
++ move, but screw it, that's not going to happen too often... */
++ for (i=0; i<srcBr->bfLen; i++) srcBr->bfList[i].lit = 0;
++ srcBr->numlit = 0;
++ }
++
++
+ /* clear all files in the destination folder */
+- for (i=0; i<dstBr->bfLen; i++) {
++ for (i=0; i<dstBr->bfLen; i++) {
+ dstBr->bfList[i].lit = 0;
+ }
+ dstBr->numlit = 0;
+@@ -4760,10 +5334,10 @@
+ for (i=0; i<nlen; i++) {
+ char *name; BFIL *bf;
+ name = names[i];
+- for (j=0, bf=dstBr->bfList;
++ for (j=0, bf=dstBr->bfList;
+ j<dstBr->bfLen && strcmp(name, bf->name)!=0; j++, bf++);
+- if (j<dstBr->bfLen) {
+- bf->lit = 1; dstBr->numlit++;
++ if (j<dstBr->bfLen) {
++ bf->lit = 1; dstBr->numlit++;
+ }
+ }
+
+@@ -4783,10 +5357,10 @@
+ changedNumLit(srcBr, -1, 0);
+
+
+- if (fail) sprintf(buf, "Some files were not %s because of errors.",
++ if (fail) sprintf(buf, "Some files were not %s because of errors.",
+ cpymode ? "copied" : "moved");
+
+- else if (nlen>1) sprintf(buf, "%d files %s", nlen,
++ else if (nlen>1) sprintf(buf, "%d files %s", nlen,
+ (cpymode) ? "copied" : "moved");
+ else buf[0] = '\0';
+ setBrowStr(srcBr, buf);
+@@ -4794,7 +5368,51 @@
+ SetCursors(-1);
+ }
+
++static int recursive_remove(dir)
++ char *dir;
++{
++ DIR *dp = NULL;
++ struct dirent *di;
++ char name[MAXPATHLEN+1];
++
++ strncpy(name, dir, MAXPATHLEN);
++ name[MAXPATHLEN] = 0;
++
++ if (name[strlen(name) - 1] == '/')
++ name[strlen(name) - 1] = 0;
++
++ if ((dp = opendir(name)) == NULL)
++ goto err;
++
++ while ((di = readdir(dp)) != NULL) {
++ char buf[MAXPATHLEN+1];
++ struct stat st;
++
++ if (!strcmp(di->d_name, ".") || !strcmp(di->d_name, ".."))
++ continue;
++
++ snprintf(buf, MAXPATHLEN, "%s/%s", name, di->d_name);
++
++ if (stat(buf, &st) < 0)
++ continue;
++
++ if (S_ISDIR(st.st_mode)) {
++ if (recursive_remove(buf) < 0)
++ goto err;
++ } else
++ unlink(buf);
++ }
+
++ if (rmdir(name) < 0)
++ goto err;
++
++ closedir(dp);
++ return 0;
++
++err:
++ if (dp) closedir(dp);
++ return -1;
++}
+
+ /*************************************************/
+ static int moveFile(src,dst)
+@@ -4809,34 +5427,48 @@
+ One bit of noise: if destination file exists, pop up a Overwrite?
+ warning box. */
+
+- int i, srcdir, dstdir;
+- struct stat st;
+- char buf[512];
+- static char *owbuts[4] = { "\nOk", "dDon't ask", "nNo", "\033Cancel" };
++ int i, srcdir, dstdir;
++ struct stat st;
++ char buf[512];
++ static const char *owbuts[] = { "\nOk", "aAlways", "nNo", "NNever", "\033Cancel" };
+
+ if (DEBUG) fprintf(stderr,"moveFile %s %s\n", src, dst);
+
++#ifdef AUTO_EXPAND
++ Dirtosubst(src);
++#endif
++
+ if (stat(src, &st)) return 0; /* src doesn't exist, it would seem */
++#ifdef AUTO_EXPAND
++ srcdir = (stat2bf((u_int) st.st_mode , src) == BF_DIR);
++#else
+ srcdir = (stat2bf((u_int) st.st_mode) == BF_DIR);
++#endif
+
+ /* see if destination exists */
++
+ if (stat(dst, &st)==0) {
++ if (overwrite==OWRT_NEVER) return -1;
++#ifdef AUTO_EXPAND
++ dstdir = (stat2bf((u_int) st.st_mode , dst) == BF_DIR);
++#else
+ dstdir = (stat2bf((u_int) st.st_mode) == BF_DIR);
++#endif
+
+ if (overwrite==OWRT_ASK) {
+- sprintf(buf, "%s '%s' exists.\n\nOverwrite?",
++ snprintf(buf, sizeof(buf), "%s '%s' exists.\n\nOverwrite?",
+ dstdir ? "Directory" : "File", dst);
+- i = PopUp(buf, owbuts, 4);
+-
+- if (i==1) overwrite = OWRT_NOASK;
+- else if (i==2) return -1;
+- else if (i==3) { overwrite = OWRT_CANCEL; return 1; }
++ switch (PopUp(buf, owbuts, COUNT(owbuts))) {
++ case 1: overwrite = OWRT_ALWAYS; break;
++ case 2: return -1;
++ case 3: overwrite = OWRT_NEVER; return -1;
++ case 4: overwrite = OWRT_CANCEL; return 1;
++ }
+ }
+
+ if (dstdir) {
+ #ifndef VMS /* we don't delete directories in VMS */
+- sprintf(buf, "rm -rf %s", dst);
+- if (system(buf)) { /* okay, so it's cheating... */
++ if (recursive_remove(dst)) { /* okay, so it's cheating... */
+ SetISTR(ISTR_WARNING, "Unable to remove directory %s", dst);
+ return 1;
+ }
+@@ -4848,7 +5480,7 @@
+ }
+ }
+
+-
++
+ if (!rename(src, dst)) return 0; /* Ok */
+ if (errno != EXDEV) return 1; /* failure, of some sort */
+
+@@ -4859,9 +5491,8 @@
+ if (i == 0) { /* copied okay, kill the original */
+ if (srcdir) {
+ #ifndef VMS /* we don't delete directories in VMS */
+- sprintf(buf, "rm -rf %s", src);
+- if (system(buf)) { /* okay, so it's cheating... */
+- SetISTR(ISTR_WARNING, "Unable to remove directory %s", dst);
++ if (recursive_remove(src)) { /* okay, so it's cheating... */
++ SetISTR(ISTR_WARNING, "Unable to remove directory %s", src);
+ return 1;
+ }
+ #endif /* VMS */
+@@ -4896,7 +5527,7 @@
+ /* possible cases: source is either a file or a directory, or doesn't exist,
+ destination is either a file, a directory, or doesn't exist.
+
+- if source doesn't exist, nothing to do.
++ if source doesn't exist, nothing to do.
+ if source is a file:
+ if dest is a file, popup 'overwriting' question, delete file if ok
+ if dest is a dir, popup 'overwriting dir' question, delete dir if ok
+@@ -4907,38 +5538,51 @@
+ fall through: if dest doesn't exist, copy the directory, recurs */
+
+
+- int i, dstExists, srcdir, dstdir;
+- struct stat srcSt, dstSt;
+- char buf[1024];
+- static char *owdiff[3] = { "\nOk", "nNo", "\033Cancel" };
+- static char *owsame[4] = { "\nOk", "dDon't Ask", "nNo", "\033Cancel" };
++ int dstExists, srcdir, dstdir;
++ struct stat srcSt, dstSt;
++ char buf[1024];
++ static const char *owdiff[] = { "\nOk", "nNo", "\033Cancel" };
++ static const char *owsame[] = { "\nOk", "aAlways", "nNo", "NNever", "\033Cancel" };
+
+ if (DEBUG) fprintf(stderr,"copyFile %s %s\n", src, dst);
+
++#ifdef AUTO_EXPAND
++ Dirtosubst(src);
++#endif
++
+ if (stat(src,&srcSt)) return 0; /* source doesn't exist, it would seem */
+
+ dstExists = (stat(dst, &dstSt)==0);
+
+ if (dstExists) { /* ask about overwriting... */
+- srcdir = (stat2bf((u_int) srcSt.st_mode) == BF_DIR);
+- dstdir = (stat2bf((u_int) dstSt.st_mode) == BF_DIR);
++#ifdef AUTO_EXPAND
++ srcdir = (stat2bf((u_int) srcSt.st_mode , src) == BF_DIR);
++ dstdir = (stat2bf((u_int) dstSt.st_mode , dst) == BF_DIR);
++#else
++ srcdir = (stat2bf((u_int) srcSt.st_mode) == BF_DIR);
++ dstdir = (stat2bf((u_int) dstSt.st_mode) == BF_DIR);
++#endif
+
+ sprintf(buf, "%s '%s' already exists. Replace it with %s '%s'?",
+ (dstdir) ? "Directory" : "File", dst,
+ (srcdir) ? "contents of directory" : "file", src);
+
+ if (srcdir == dstdir) {
++ if (overwrite==OWRT_NEVER) return -1;
+ if (overwrite==OWRT_ASK) {
+- i = PopUp(buf, owsame, 4);
+- if (i==1) overwrite = OWRT_NOASK;
+- if (i==2) return -1;
+- else if (i==3) { overwrite = OWRT_CANCEL; return 1; }
++ switch (PopUp(buf, owsame, COUNT(owsame))) {
++ case 1: overwrite = OWRT_ALWAYS; break;
++ case 2: return -1;
++ case 3: overwrite = OWRT_NEVER; return -1;
++ case 4: overwrite = OWRT_CANCEL; return 1;
++ }
+ }
+ }
+ else { /* one's a dir, the other's a file. *ALWAYS* ask! */
+- i = PopUp(buf, owdiff, 3);
+- if (i==1) return -1;
+- else if (i==2) { overwrite = OWRT_CANCEL; return 1; }
++ switch (PopUp(buf, owdiff, COUNT(owdiff))) {
++ case 1: return -1;
++ case 2: overwrite = OWRT_CANCEL; return 1;
++ }
+ }
+
+
+@@ -4957,7 +5601,7 @@
+ /* destination doesn't exist no more, if it ever did... */
+ userMask = umask(0); /* grab the umask */
+ umask((mode_t) userMask); /* put it back... */
+-
++
+
+ strcpy(cpSrcPath, src);
+ strcpy(cpDstPath, dst);
+@@ -5017,7 +5661,7 @@
+ called recursively by cp_dir, there are *no* guarantees that either file
+ exists or not */
+
+- int i, havedst;
++ int havedst;
+ struct stat srcSt, dstSt;
+
+ if (stat(cpSrcPath, &srcSt)) { /* src doesn't exist, usefully... */
+@@ -5036,8 +5680,11 @@
+ havedst = 1;
+ }
+
+-
+- switch(stat2bf((u_int) srcSt.st_mode)) {
++#ifdef AUTO_EXPAND
++ switch(stat2bf((u_int) srcSt.st_mode , cpDstPath)) {
++#else
++ switch(stat2bf((u_int) srcSt.st_mode)) {
++#endif
+ /* determine how to copy, by filetype */
+
+ /* NOTE: There is no S_IFLNK case here, since we're using 'stat()' and
+@@ -5053,18 +5700,22 @@
+ }
+ }
+ else {
++#ifdef AUTO_EXPAND
++ if (stat2bf((u_int) dstSt.st_mode , cpDstPath) != BF_DIR) {
++#else
+ if (stat2bf((u_int) dstSt.st_mode) != BF_DIR) {
++#endif
+ SetISTR(ISTR_WARNING,"%s: not a directory", cpDstPath);
+ copyerr++;
+ return;
+ }
+ }
+-
++
+ cp_dir();
+ if (!havedst) chmod(cpDstPath, srcSt.st_mode);
+-
++
+ break;
+-
++
+
+ case BF_CHR:
+ case BF_BLK: cp_special(&srcSt, havedst); break;
+@@ -5089,12 +5740,12 @@
+ {
+ int i, dirlen, oldsrclen, olddstlen, longpath;
+ char **names, *name;
+- struct stat srcSt, dstSt;
++ struct stat srcSt;
+
+
+ /* src and dst directories both exists now. copy entries */
+
+- if (DEBUG) fprintf(stderr,"cp_dir: src='%s', dst='%s'\n",
++ if (DEBUG) fprintf(stderr,"cp_dir: src='%s', dst='%s'\n",
+ cpSrcPath, cpDstPath);
+
+ longpath = 0;
+@@ -5110,9 +5761,9 @@
+
+ for (i=0; i<dirlen && overwrite!=OWRT_CANCEL; i++) {
+ name = names[i];
+- if (name[0] == '.' && (name[1]=='\0' ||
++ if (name[0] == '.' && (name[1]=='\0' ||
+ (name[1]=='.' && name[2]=='\0'))) goto done;
+-
++
+ /* add name to src and dst paths */
+ if ((strlen(name) + oldsrclen >= (MAXPATHLEN-3)) ||
+ (strlen(name) + olddstlen >= (MAXPATHLEN-3))) {
+@@ -5130,12 +5781,17 @@
+ cpSrcPath[oldsrclen] = '\0';
+ goto done;
+ }
+-
+- if (stat2bf((u_int) srcSt.st_mode) == BF_DIR) {
++
++#ifdef AUTO_EXPAND
++ if (stat2bf((u_int) srcSt.st_mode , cpSrcPath) == BF_DIR)
++#else
++ if (stat2bf((u_int) srcSt.st_mode) == BF_DIR)
++#endif
++ {
+ cpSrcPath[oldsrclen] = '\0';
+ continue; /* don't remove from list, just skip */
+ }
+-
++
+ strcat(cpDstPath, "/");
+ strcat(cpDstPath, name);
+ cp(); /* RECURSE */
+@@ -5169,7 +5825,7 @@
+ strcat(cpDstPath, name);
+
+ cp(); /* RECURSE */
+-
++
+ cpSrcPath[oldsrclen] = '\0';
+ cpDstPath[olddstlen] = '\0';
+ }
+@@ -5190,11 +5846,11 @@
+ int exists;
+ /*****************************/
+ {
+- register int srcFd, dstFd, rcount, wcount, i;
+- char str[512], buf[8192];
+- static char *owbuts[4] = { "\nOk", "dDon't Ask", "nNo", "\033Cancel" };
++ register int srcFd, dstFd, rcount, wcount;
++ char buf[8192];
++ static const char *owbuts[] = { "\nOk", "aAlways", "nNo", "NNever", "\033Cancel" };
+
+- if (DEBUG) fprintf(stderr,"cp_file: src='%s', dst='%s'\n",
++ if (DEBUG) fprintf(stderr,"cp_file: src='%s', dst='%s'\n",
+ cpSrcPath, cpDstPath);
+
+ if ((srcFd = open(cpSrcPath, O_RDONLY, 0)) == -1) {
+@@ -5204,13 +5860,15 @@
+ }
+
+ if (exists) {
++ if (overwrite==OWRT_NEVER) return;
+ if (overwrite==OWRT_ASK) {
+ sprintf(buf, "File '%s' exists.\n\nOverwrite?", cpDstPath);
+- i = PopUp(buf, owbuts, 4);
+-
+- if (i==1) overwrite = OWRT_NOASK;
+- else if (i==2) return;
+- else if (i==3) { overwrite = OWRT_CANCEL; return; }
++ switch (PopUp(buf, owbuts, 4)) {
++ case 1: overwrite = OWRT_ALWAYS; break;
++ case 2: return;
++ case 3: overwrite = OWRT_NEVER; return;
++ case 4: overwrite = OWRT_CANCEL; return;
++ }
+ }
+ dstFd = open(cpDstPath, O_WRONLY|O_TRUNC, 0);
+ }
+@@ -5255,7 +5913,7 @@
+ int exists;
+ /*********************************/
+ {
+- if (DEBUG) fprintf(stderr,"cp_spec: src='%s', dst='%s'\n",
++ if (DEBUG) fprintf(stderr,"cp_spec: src='%s', dst='%s'\n",
+ cpSrcPath, cpDstPath);
+
+ if (exists && unlink(cpDstPath)) {
+@@ -5281,7 +5939,7 @@
+ int exists;
+ /*********************************/
+ {
+- if (DEBUG) fprintf(stderr,"cp_fifo: src='%s', dst='%s'\n",
++ if (DEBUG) fprintf(stderr,"cp_fifo: src='%s', dst='%s'\n",
+ cpSrcPath, cpDstPath);
+
+ #ifdef S_IFIFO
+@@ -5302,12 +5960,18 @@
+
+
+
+-
++
+ /*********************************/
++#ifdef AUTO_EXPAND
++static int stat2bf(uistmode, path)
++ u_int uistmode;
++ char *path;
++#else
+ static int stat2bf(uistmode)
+ u_int uistmode;
++#endif
+ {
+- /* given the 'st.st_mode' field from a successful stat(), returns
++ /* given the 'st.st_mode' field from a successful stat(), returns
+ BF_FILE, BF_DIR, BF_BLK, BF_CHR, BF_FIFO, or BF_SOCK. Does *NOT*
+ return BF_EXE */
+
+@@ -5319,6 +5983,9 @@
+ else if (S_ISBLK(stmode)) rv = BF_BLK;
+ else if (S_ISFIFO(stmode)) rv = BF_FIFO;
+ else if (S_ISSOCK(stmode)) rv = BF_SOCK;
++#ifdef AUTO_EXPAND
++ else if (Isarchive(path)) rv = BF_DIR;
++#endif
+ else rv = BF_FILE;
+
+ return rv;
+@@ -5357,8 +6024,8 @@
+ static int selmatch1(name, arg)
+ char *name, *arg;
+ {
+- /* returns non-zero if 'name' matches 'arg'. Any '*' chars found in arg
+- are considered wildcards that match any number of characters,
++ /* returns non-zero if 'name' matches 'arg'. Any '*' chars found in arg
++ are considered wildcards that match any number of characters,
+ including zero. */
+
+ char *sp, *oldnp;
+@@ -5379,7 +6046,7 @@
+ while (*name) name++;
+ while (*arg ) arg++;
+ name--; arg--;
+-
++
+ while (*arg != '*') {
+ if (*arg != *name || name<oldnp) return 0;
+ arg--; name--;
+@@ -5388,7 +6055,7 @@
+ }
+
+ else { /* there are more '*'s in arg... */
+- /* find the first occurrence of the string between the two '*'s.
++ /* find the first occurrence of the string between the two '*'s.
+ if the '*'s are next to each other, just throw away the first one */
+
+ arg++; /* points to char after first '*' */
+@@ -5410,7 +6077,7 @@
+ arg = sp+1;
+ }
+ }
+- }
++ }
+ }
+
+ if (!*arg && !*name) return 1;
+@@ -5419,4 +6086,98 @@
+ }
+
+
++static IVIS *icon_vis_list = NULL;
++
++/***************************************************************/
++static void recIconVisible(name, icon)
++ char *name;
++ int icon;
++{
++ IVIS *ptr, *prev = NULL;
++
++ for (ptr = icon_vis_list; ptr; prev = ptr, ptr = ptr->next) {
++ if (!strcmp(ptr->name, name)) {
++ ptr->icon = icon;
++ return;
++ }
++ }
++
++ ptr = calloc(sizeof(IVIS), 1);
++ if (!ptr)
++ return;
+
++ ptr->name = strdup(name);
++
++ if (!ptr->name) {
++ free(ptr);
++ return;
++ }
++
++ if (!prev) {
++ icon_vis_list = ptr;
++ } else {
++ prev->next = ptr;
++ }
++
++ ptr->next = NULL;
++ ptr->icon = icon;
++}
++
++/***************************************************************/
++static void restIconVisible(br)
++ BROWINFO *br;
++{
++ IVIS *ptr;
++
++ for (ptr = icon_vis_list; ptr; ptr = ptr->next) {
++ if (!strcmp(ptr->name, br->path)) {
++ if (ptr->icon >= 0) {
++ makeIconVisible(br, ptr->icon);
++ updateSel(br, ptr->icon, 0, 0);
++ }
++ return;
++ }
++ }
++}
++
++
++/*********************************/
++static void clipChanges(br)
++ BROWINFO *br;
++{
++ /* called whenever schnauzer activity should place file names in
++ the X11 clipboard, or change what it put there.
++
++ Implementation is simple because the UI is non-standard
++ (i.e., not like xterm(1)). The clipboard command causes the
++ current browser to dump all its currently selected files'
++ (if any) names to the clipboard, space-separated.
++ No effort is made to shell-escape blanks and other 'odd'
++ characters in the names. */
++
++ char buf[4000]; /* too much or too little, whatever... */
++ int n;
++ int i;
++
++ n = 0;
++ strcpy(buf, "");
++
++ for (i=0; i<br->bfLen; i++) {
++ if(br->bfList[i].lit == 1) {
++ int m;
++
++ m = strlen(br->bfList[i].name) + 1;
++
++ if(n+m+1 >= sizeof(buf)) return; /* names probably won't fit in buf, abort */
++ strcat(buf, br->bfList[i].name);
++ strcat(buf, " ");
++ n += m;
++ }
++ }
++
++ if(n) {
++ buf[n-1] = 0; /* trim last space */
++
++ NewCutBuffer(buf);
++ }
++}
+diff -ru xv-3.10a/xvbutt.c xv-3.10a-enhancements/xvbutt.c
+--- xv-3.10a/xvbutt.c 1995-01-03 13:19:51.000000000 -0800
++++ xv-3.10a-enhancements/xvbutt.c 2007-04-15 20:59:15.000000000 -0700
+@@ -1,4 +1,4 @@
+-/*
++/*
+ * xvbutt.c - regular, 'radio', 'checkbox', and 'menu' pushbuttons
+ *
+ * callable functions:
+@@ -16,7 +16,7 @@
+ * RBSetActive() - sets active status of an RBUTT
+ * RBClick() - finds clicked-on rb in a list
+ * RBTrack() - tracks rb after click, until release
+- *
++ *
+ * CBCreate() - create a CBUTT (checkbox button)
+ * CBRedraw() - redraw a CBUTT
+ * CBSetActive() - change active status of a CBUTT
+@@ -26,7 +26,7 @@
+ * MBCreate() - create a MBUTT (menu button)
+ * MBRedraw() - redraw a MBUTT
+ * MBSetActive() - change active status of a MBUTT
+- * MBWhich() - returns # of first checked selection
++ * MBWhich() - returns # of first checked selection
+ * MBSelect() - similar to RBSelect() ...
+ * MBClick() - returns true if given MB was clicked on
+ * MBTrack() - tracks MBUTT after click, until release
+@@ -76,7 +76,7 @@
+ Window win;
+ int x,y;
+ unsigned int w,h;
+- char *str;
++ const char *str;
+ unsigned long fg,bg,hi,lo;
+ {
+ bp->win = win;
+@@ -116,7 +116,7 @@
+ void BTRedraw(bp)
+ BUTT *bp;
+ {
+- int i,x,y,r,x1,y1;
++ int x,y,r,x1,y1;
+ unsigned int w,h;
+ XPoint tpts[10], bpts[10], ipts[5];
+
+@@ -170,13 +170,13 @@
+ XSetForeground(theDisp, theGC, bp->fg);
+ XDrawLines(theDisp, bp->win, theGC, ipts, 5, CoordModeOrigin); /* inset */
+
+- XDrawLine(theDisp, bp->win, theGC, x+1, y + 1,
++ XDrawLine(theDisp, bp->win, theGC, x+1, y + 1,
+ ipts[0].x, ipts[0].y);
+ XDrawLine(theDisp, bp->win, theGC, x+1, y + (int) h - 1,
+ ipts[1].x, ipts[1].y);
+ XDrawLine(theDisp, bp->win, theGC, x + (int) w - 1, y + (int) h - 1,
+ ipts[2].x, ipts[2].y);
+- XDrawLine(theDisp, bp->win, theGC, x + (int) w - 1, y+1,
++ XDrawLine(theDisp, bp->win, theGC, x + (int) w - 1, y+1,
+ ipts[3].x, ipts[3].y);
+
+ if (bp->lit) {
+@@ -184,12 +184,12 @@
+ XDrawRectangle(theDisp, bp->win, theGC, x+1, y+1, w-2, h-2);
+ }
+ }
+-
++
+ else { /* ctrlColor */
+ XSetForeground(theDisp, theGC, bp->bg);
+ XFillRectangle(theDisp, bp->win, theGC, x+1, y+1, w-1, h-1);
+
+- Draw3dRect(bp->win, x+1, y+1, w-2, h-2, R3D_OUT, bp->fwidth,
++ Draw3dRect(bp->win, x+1, y+1, w-2, h-2, R3D_OUT, bp->fwidth,
+ bp->hi, bp->lo, bp->bg);
+
+ XSetForeground(theDisp, theGC, bp->fg);
+@@ -198,7 +198,7 @@
+ if (bp->lit)
+ XDrawRectangle(theDisp, bp->win, theGC, x+1, y+1, w-2, h-2);
+ }
+-
++
+
+
+
+@@ -210,7 +210,7 @@
+
+ XSetBackground(theDisp, theGC, bp->bg);
+
+- if (bp->colorpix)
++ if (bp->colorpix)
+ XCopyArea (theDisp,bp->pix, bp->win, theGC, 0,0,bp->pw,bp->ph, x1,y1);
+ else
+ XCopyPlane(theDisp,bp->pix, bp->win, theGC, 0,0,bp->pw,bp->ph, x1,y1,1L);
+@@ -262,15 +262,15 @@
+ if (bp->lit==inval && PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) {
+ bp->lit = !inval; BTRedraw(bp); XFlush(theDisp);
+ }
+-
++
+ if (bp->lit!=inval && !PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) {
+ bp->lit = inval; BTRedraw(bp); XFlush(theDisp);
+ }
+ }
+
+ rval = (bp->lit != inval);
+-
+- if (bp->lit && !bp->toggle)
++
++ if (bp->lit && !bp->toggle)
+ { bp->lit = 0; BTRedraw(bp); XFlush(theDisp); }
+
+ return(rval);
+@@ -290,18 +290,18 @@
+ RBUTT *rblist;
+ Window win;
+ int x,y;
+- char *str;
++ const char *str;
+ unsigned long fg,bg,hi,lo;
+ {
+ /* mallocs an RBUTT, fills in the fields, and appends it to rblist
+ if rblist is NULL, this is the first rb in the list. It will
+- be made the 'selected' one
++ be made the 'selected' one
+
+- Note: no need to check return status. It'll fatal error if it
++ Note: no need to check return status. It'll fatal error if it
+ can't malloc */
+
+ RBUTT *rb, *rbptr;
+- Pixmap rb_frame, rb_frame1, rb_top, rb_bot, rb_dtop, rb_dbot, rb_body,
++ Pixmap rb_frame, rb_frame1, rb_top, rb_bot, rb_dtop, rb_dbot, rb_body,
+ rb_dot;
+
+ rb = (RBUTT *) malloc(sizeof(RBUTT));
+@@ -348,7 +348,7 @@
+ rb_off = XCreatePixmap(theDisp, rootW, RBSIZE, RBSIZE, dispDEEP);
+ rb_off1 = XCreatePixmap(theDisp, rootW, RBSIZE, RBSIZE, dispDEEP);
+
+- if (!rb_frame || !rb_frame1 || !rb_top || !rb_bot || !rb_dtop ||
++ if (!rb_frame || !rb_frame1 || !rb_top || !rb_bot || !rb_dtop ||
+ !rb_dbot || !rb_body || !rb_dot || !rb_on || !rb_on1 ||
+ !rb_off || !rb_off1)
+ FatalError("unable to create radio-button pixmaps");
+@@ -410,7 +410,7 @@
+ XFillRectangle(theDisp, rb_on, theGC, 0,0,RBSIZE,RBSIZE);
+ XFillRectangle(theDisp, rb_on1, theGC, 0,0,RBSIZE,RBSIZE);
+ }
+-
++
+ XSetStipple(theDisp, theGC, rb_frame);
+ XSetForeground(theDisp, theGC, fg);
+ XFillRectangle(theDisp, rb_on, theGC, 0,0,RBSIZE,RBSIZE);
+@@ -437,7 +437,7 @@
+
+ return(rb);
+ }
+-
++
+
+
+
+@@ -475,23 +475,23 @@
+ int lit;
+ {
+ /* draws the rb being pointed at */
+-
++
+ Pixmap pix;
+-
++
+ if (!rb) return; /* rb = NULL */
+-
++
+ XSetForeground(theDisp, theGC, rb->fg);
+-
++
+ if (rb->selected) { pix = (lit) ? rb_on1 : rb_on; }
+ else { pix = (lit) ? rb_off1 : rb_off; }
+-
++
+ XCopyArea(theDisp, pix, rb->win, theGC, 0,0,RBSIZE,RBSIZE, rb->x, rb->y);
+- DrawString(rb->win, rb->x + RBSIZE + 4,
++ DrawString(rb->win, rb->x + RBSIZE + 4,
+ rb->y + RBSIZE/2 - CHIGH/2 + ASCENT, rb->str);
+
+ if (!rb->active) { /* if non-active, dim button and string */
+ DimRect(rb->win, rb->x, rb->y, RBSIZE, RBSIZE, rb->bg);
+- DimRect(rb->win, rb->x + RBSIZE + 4, rb->y + RBSIZE/2 - CHIGH/2,
++ DimRect(rb->win, rb->x + RBSIZE + 4, rb->y + RBSIZE/2 - CHIGH/2,
+ (u_int) StringWidth(rb->str), (u_int) CHIGH, rb->bg);
+ }
+ }
+@@ -527,19 +527,19 @@
+ }
+
+
+-
++
+ /***********************************************/
+ int RBWhich(rblist)
+ RBUTT *rblist;
+ {
+ int i;
+-
++
+ /* returns index of currently selected rb. if none, returns -1 */
+-
++
+ i = 0;
+- while (rblist && !rblist->selected)
++ while (rblist && !rblist->selected)
+ { rblist = (RBUTT *) rblist->next; i++; }
+-
++
+ if (!rblist) return -1; /* didn't find one */
+ return i;
+ }
+@@ -550,9 +550,9 @@
+ RBUTT *rblist;
+ {
+ int i;
+-
++
+ /* returns # of rb's in the list */
+-
++
+ i = 0;
+ while (rblist) { rblist = (RBUTT *) rblist->next; i++; }
+ return i;
+@@ -566,13 +566,13 @@
+ {
+ RBUTT *rb;
+ int i;
+-
++
+ /* sets 'active' status of rb #n. does redrawing */
+-
++
+ rb=rblist; i=0;
+ while (rb && i!=n) { rb = (RBUTT *) rb->next; i++; }
+ if (!rb) return; /* n out of range. do nothing */
+-
++
+ if (rb->active != act) {
+ rb->active = act;
+ drawRB(rb, 0);
+@@ -588,13 +588,13 @@
+ int i;
+
+ /* searches through rblist to see if mouse click at mx,my is in the
+- clickable region of any of the rb's. If it finds one, it returns
++ clickable region of any of the rb's. If it finds one, it returns
+ it's index in the list. If not, returns -1 */
+
+ i = 0;
+ while (rblist) {
+ if (PTINRECT(mx, my, rblist->x, rblist->y, RBSIZE, RBSIZE)) break;
+-
++
+ rblist = (RBUTT *) rblist->next;
+ i++;
+ }
+@@ -613,9 +613,9 @@
+ Window rW, cW;
+ int i, x, y, rx, ry, lit, rv;
+ unsigned int mask;
+-
++
+ /* returns '1' if selection changed */
+-
++
+ rb=rblist; i=0;
+ while (rb && i!=n) { rb = (RBUTT *) rb->next; i++; }
+ if (!rb) return 0; /* n out of range */
+@@ -637,7 +637,7 @@
+ drawRB(rb, lit);
+ XFlush(theDisp);
+ }
+-
++
+ if (lit && !PTINRECT(x, y, rb->x, rb->y, RBSIZE, RBSIZE)) {
+ lit=0;
+ drawRB(rb, lit);
+@@ -671,7 +671,7 @@
+ CBUTT *cb;
+ Window win;
+ int x,y;
+- char *str;
++ const char *str;
+ unsigned long fg,bg,hi,lo;
+ {
+ /* fill in the fields of the structure */
+@@ -690,14 +690,14 @@
+ do so. We'll be needing them, y'see... */
+
+ if (!cbpixmade) {
+- cbcheck = XCreatePixmapFromBitmapData(theDisp, rootW,
++ cbcheck = XCreatePixmapFromBitmapData(theDisp, rootW,
+ (char *) cb_check_bits,
+ cb_check_width, cb_check_height, fg, bg, dispDEEP);
+
+ cbpixmade = 1;
+ }
+ }
+-
++
+
+
+
+@@ -708,25 +708,25 @@
+ /* draws the cb being pointed at */
+
+ XSetForeground(theDisp, theGC, cb->bg);
+- XFillRectangle(theDisp, cb->win, theGC, cb->x+2, cb->y+2,
++ XFillRectangle(theDisp, cb->win, theGC, cb->x+2, cb->y+2,
+ XVCBSIZE-3,XVCBSIZE-3);
+
+ XSetForeground(theDisp, theGC, cb->fg);
+ XDrawRectangle(theDisp, cb->win, theGC, cb->x, cb->y, XVCBSIZE, XVCBSIZE);
+ Draw3dRect(cb->win, cb->x+1, cb->y+1, XVCBSIZE-2, XVCBSIZE-2, R3D_OUT, 2,
+- cb->hi, cb->lo, cb->bg);
++ cb->hi, cb->lo, cb->bg);
+
+- if (cb->val) XCopyArea(theDisp, cbcheck, cb->win, theGC,
+- 0, 0, cb_check_width, cb_check_height,
++ if (cb->val) XCopyArea(theDisp, cbcheck, cb->win, theGC,
++ 0, 0, cb_check_width, cb_check_height,
+ cb->x+3, cb->y+3);
+-
++
+ XSetForeground(theDisp, theGC, cb->fg);
+- DrawString(cb->win, cb->x + XVCBSIZE+4,
++ DrawString(cb->win, cb->x + XVCBSIZE+4,
+ cb->y+XVCBSIZE/2 - CHIGH/2 + ASCENT, cb->str);
+
+ if (!cb->active) { /* if non-active, dim button and string */
+ DimRect(cb->win, cb->x, cb->y, XVCBSIZE, XVCBSIZE, cb->bg);
+- DimRect(cb->win, cb->x + XVCBSIZE+4, cb->y+XVCBSIZE/2 - CHIGH/2,
++ DimRect(cb->win, cb->x + XVCBSIZE+4, cb->y+XVCBSIZE/2 - CHIGH/2,
+ (u_int) StringWidth(cb->str), (u_int) CHIGH, cb->bg);
+ }
+ }
+@@ -761,7 +761,6 @@
+ Window rW, cW;
+ int x, y, rx, ry, lit;
+ unsigned int mask;
+- Pixmap litpix, darkpix;
+
+ /* called once we've figured out that the mouse clicked in 'cb' */
+
+@@ -782,7 +781,7 @@
+ drawCB(cb,lit);
+ XFlush(theDisp);
+ }
+-
++
+ if (lit && !PTINRECT(x, y, cb->x, cb->y, XVCBSIZE, XVCBSIZE)) {
+ lit=0;
+ drawCB(cb,lit);
+@@ -809,28 +808,28 @@
+ {
+ /* draws highlighting */
+ if (lit) {
+- if (ctrlColor)
++ if (ctrlColor)
+ Draw3dRect(cb->win, cb->x+1, cb->y+1, XVCBSIZE-2, XVCBSIZE-2, R3D_IN, 2,
+ cb->hi, cb->lo, cb->bg);
+ else {
+ XSetForeground(theDisp, theGC, cb->fg);
+- XDrawRectangle(theDisp, cb->win, theGC, cb->x+1, cb->y+1,
++ XDrawRectangle(theDisp, cb->win, theGC, cb->x+1, cb->y+1,
+ XVCBSIZE-2, XVCBSIZE-2);
+ }
+ }
+
+ else {
+- if (ctrlColor)
++ if (ctrlColor)
+ Draw3dRect(cb->win, cb->x+1, cb->y+1, XVCBSIZE-2, XVCBSIZE-2, R3D_OUT, 2,
+ cb->hi, cb->lo, cb->bg);
+ else {
+ XSetForeground(theDisp, theGC, cb->bg);
+- XDrawRectangle(theDisp, cb->win, theGC, cb->x+1, cb->y+1,
++ XDrawRectangle(theDisp, cb->win, theGC, cb->x+1, cb->y+1,
+ XVCBSIZE-2, XVCBSIZE-2);
+ }
+ }
+ }
+-
++
+
+
+ /******************* MBUTT ROUTINES ************************/
+@@ -838,20 +837,20 @@
+
+
+ /***********************************************/
+-void MBCreate(mb, win, x,y,w,h, str, list, nlist, fg, bg, hi, lo)
++void MBCreate(mb, win, x, y, w, h, title, list, nlist, fg, bg, hi, lo)
+ MBUTT *mb;
+ Window win;
+ int x,y;
+ unsigned int w,h;
+- char *str;
+- char **list;
++ const char *title;
++ const char * const *list;
+ int nlist;
+ unsigned long fg,bg,hi,lo;
+ {
+ XSetWindowAttributes xswa;
+ unsigned long xswamask;
+ int i;
+-
++
+ if (!mbpixmade) {
+ mbchk = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) mb_chk_bits,
+ mb_chk_width, mb_chk_height, fg, bg, dispDEEP);
+@@ -865,7 +864,7 @@
+ mb->y = y;
+ mb->w = w;
+ mb->h = h;
+- mb->title = str;
++ mb->title = title;
+ mb->active = 1;
+ mb->list = list;
+ mb->nlist = nlist;
+@@ -889,7 +888,7 @@
+ xswa.save_under = True;
+ xswamask = CWBackPixel | CWBorderPixel | CWSaveUnder;
+
+- mb->mwin = XCreateWindow(theDisp, mb->win, x, y, w, h,
++ mb->mwin = XCreateWindow(theDisp, mb->win, x, y, w, h,
+ (u_int) 2, (int) dispDEEP, InputOutput,
+ theVisual, xswamask, &xswa);
+
+@@ -898,7 +897,7 @@
+ XSelectInput(theDisp, mb->mwin, ExposureMask | VisibilityChangeMask);
+ XSetTransientForHint(theDisp, mb->mwin, mb->win);
+ }
+-
++
+
+
+
+@@ -908,15 +907,15 @@
+ {
+ /* draws a menu button in it's normal state. (When it's actively being
+ used (to select an item), all drawing is handled in MBTrack) */
+-
++
+ int x,y,i,r,x1,y1;
+ unsigned int w,h;
+-
++
+ r = 2; /* amt of shadow */
+ x = mb->x; y = mb->y; w = mb->w; h = mb->h;
+- x1 = x + (int) w;
++ x1 = x + (int) w;
+ y1 = y + (int) h;
+-
++
+ XSetForeground(theDisp, theGC, mb->bg);
+ XFillRectangle(theDisp, mb->win, theGC, x+1, y+1, w-1, h-1);
+
+@@ -940,12 +939,14 @@
+ XSetBackground(theDisp, theGC, mb->bg);
+ XCopyPlane(theDisp, mb->pix, mb->win, theGC, 0,0,
+ (u_int) mb->pw, (u_int) mb->ph, x1,y1, 1L);
+- if (!mb->active)
++ if (!mb->active)
+ DimRect(mb->win, x1,y1, (u_int) mb->pw, (u_int) mb->ph, mb->bg);
+ }
+
+ else { /* draw string centered in butt */
+- char *str, stbuf[256];
++ const char *str;
++ char *tmp;
++ char stbuf[256];
+
+ if (mb->title) str = mb->title;
+ else { /* find first checked item, and show that as the title */
+@@ -961,7 +962,7 @@
+
+ /* truncate at TAB, if any */
+ strcpy(stbuf, str);
+- if ((str = (char *) index(stbuf, '\t')) != NULL) *str = '\0';
++ if ((tmp = (char *) index(stbuf, '\t')) != NULL) *tmp = '\0';
+ str = stbuf;
+
+ x1 = CENTERX(mfinfo, x + w/2, str);
+@@ -997,14 +998,14 @@
+ MBUTT *mb;
+ {
+ /* returns index of first checked selection, or '-1' if nothing selected */
+-
++
+ int i;
+
+ if (!mb->hascheck) return -1;
+
+ for (i=0; i<mb->nlist; i++)
+ if (mb->flags[i]) return i;
+-
++
+ return -1;
+ }
+
+@@ -1017,13 +1018,13 @@
+ /* makes entry #n the selected entry (ie, the only one with a check mark)
+ Does all redrawing. Does nothing if entry #n already selected.
+ Don't let it select 'dim' entries */
+-
++
+ int i;
+-
++
+ if (n<0 || n>mb->nlist) return; /* # out of range */
+ if (!mb->hascheck) return; /* shouldn't happen */
+ if (mb->flags[n]) return; /* already selected */
+-
++
+ for (i=0; i<MAXMBLEN; i++) mb->flags[i] = 0;
+
+ mb->flags[n] = 1;
+@@ -1083,7 +1084,7 @@
+ }
+ }
+ mwide += 8; /* extra room at edges */
+-
++
+ /* make wider if any checked menu items */
+ for (i=0; i<mb->nlist && !mb->flags[i]; i++);
+ hascheck = (i<mb->nlist || mb->hascheck);
+@@ -1091,7 +1092,7 @@
+ if (hascheck && mb->title) mwide += 8;
+
+ if (mwide < (mb->w+1)) mwide = mb->w+1; /* at least as wide as button */
+-
++
+ mhigh = mb->nlist * LINEHIGH + 2 + extratop;
+
+ mx = mb->x-1; my = mb->y - 1;
+@@ -1138,16 +1139,17 @@
+ y = ASCENT + SPACING + extratop;
+ for (i=0; i<mb->nlist; i++) {
+ char txtstr[256], *tabstr;
++
+ strcpy(txtstr, mb->list[i]);
+ if ((tabstr = (char *) index(txtstr, '\t'))) {
+ *tabstr = '\0'; tabstr++;
+ }
+
+ if (mb->flags[i]) {
+- XCopyArea(theDisp, mbchk, win, theGC, 0, 0, mb_chk_width, mb_chk_height,
++ XCopyArea(theDisp, mbchk, win, theGC, 0, 0, mb_chk_width, mb_chk_height,
+ x - 10, y - 8);
+ }
+-
++
+ if (!strcmp(mb->list[i], MBSEP)) {
+ mb->dim[i] = 1; /* don't select this one */
+ if (ctrlColor) {
+@@ -1161,15 +1163,15 @@
+ XDrawLine(theDisp,win,theGC,4,y-(ASCENT/2)+1, mwide-5, y-(ASCENT/2)+1);
+ XSetForeground(theDisp, theGC, mb->fg);
+ }
+- else
++ else
+ XDrawLine(theDisp, win, theGC, 4, y-(ASCENT/2), mwide-5, y-(ASCENT/2));
+ }
+ else {
+ DrawString(win, x, y, txtstr);
+- if (tabstr)
++ if (tabstr)
+ DrawString(win, mwide - mtabwide - 4, y, tabstr);
+
+- if (mb->dim[i])
++ if (mb->dim[i])
+ DimRect(win, x, y-ASCENT, (u_int) mwide, (u_int) CHIGH, mb->bg);
+ XSetForeground(theDisp, theGC, mb->fg);
+ }
+diff -ru xv-3.10a/xvcolor.c xv-3.10a-enhancements/xvcolor.c
+--- xv-3.10a/xvcolor.c 1995-01-06 11:29:23.000000000 -0800
++++ xv-3.10a-enhancements/xvcolor.c 2007-05-12 13:55:36.000000000 -0700
+@@ -52,7 +52,7 @@
+ int pwide, phigh, *pnumcols;
+ {
+ /* operates on 8-bit images. sorts the colormap into 'best' order
+- * 'order' is the 'best' order to allocate the colors. 'trans' is a
++ * 'order' is the 'best' order to allocate the colors. 'trans' is a
+ * transformation to be done to pic, cpic, and epic (in PIC8 mode) to
+ * compress the colormap
+ */
+@@ -67,22 +67,22 @@
+ /* initialize histogram and compute it */
+ for (i=0; i<256; i++) hist[i]=0;
+ for (i=pwide*phigh, p=pic; i; i--, p++) hist[*p]++;
+-
++
+ if (DEBUG>1) {
+ fprintf(stderr,"%s: Desired colormap\n",cmd);
+- for (i=0; i<256; i++)
++ for (i=0; i<256; i++)
+ if (hist[i]) fprintf(stderr,"(%3d %02x,%02x,%02x %d)\n",
+ i,rmap[i],gmap[i],bmap[i], hist[i]);
+ fprintf(stderr,"\n\n");
+ }
+-
+-
++
++
+ /* put the actually-used colors into the 'c' array in the order they occur
+ also, while we're at it, calculate ncols, and close up gaps in
+ colortable */
+-
++
+ for (i=ncols=0; i<256; i++) {
+- if (hist[i]) {
++ if (hist[i]) {
+ rmap[ncols] = rmap[i];
+ gmap[ncols] = gmap[i];
+ bmap[ncols] = bmap[i];
+@@ -104,8 +104,8 @@
+ }
+ xvbcopy((char *) &c[entry], (char *) &c1[0], sizeof(CMAPENT));
+ c[entry].use = 0; /* dealt with */
+-
+-
++
++
+ /* sort rest of colormap. Half of the entries are allocated on the
+ basis of distance from already allocated colors, and half on the
+ basis of usage. (NB: 'taxicab' distance is used throughout this file.)
+@@ -116,7 +116,7 @@
+ To obtain O(n^2) performance, we keep each unselected color
+ (in c[], with use>0) marked with the minimum distance to any of
+ the selected colors (in c1[]). Each time we select a color, we
+- can update the minimum distances in O(n) time.
++ can update the minimum distances in O(n) time.
+
+ mod by Tom Lane Tom.Lane@g.gp.cs.cmu.edu */
+
+@@ -134,8 +134,8 @@
+ for (j=0, cj=c; j<ncols; j++,cj++) {
+ if (cj->use) { /* this color has not been marked already */
+ /* update mindist */
+- d = (cj->r - ckR)*(cj->r - ckR) +
+- (cj->g - ckG)*(cj->g - ckG) +
++ d = (cj->r - ckR)*(cj->r - ckR) +
++ (cj->g - ckG)*(cj->g - ckG) +
+ (cj->b - ckB)*(cj->b - ckB);
+ if (cj->mindist > d) cj->mindist = d;
+ if (cj->mindist > mdist) { mdist = cj->mindist; entry = j; }
+@@ -148,8 +148,8 @@
+ for (j=0, cj=c; j<ncols; j++,cj++) {
+ if (cj->use) { /* this color has not been marked already */
+ /* update mindist */
+- d = (cj->r - ckR)*(cj->r - ckR) +
+- (cj->g - ckG)*(cj->g - ckG) +
++ d = (cj->r - ckR)*(cj->r - ckR) +
++ (cj->g - ckG)*(cj->g - ckG) +
+ (cj->b - ckB)*(cj->b - ckB);
+ if (cj->mindist > d) cj->mindist = d;
+ if (cj->use > mdist) { mdist = cj->use; entry = j; }
+@@ -162,18 +162,18 @@
+ xvbcopy((char *) &c[entry], (char *) &c1[i], sizeof(CMAPENT));
+ c[entry].use = 0;
+ }
+-
++
+
+ for (i=0; i<ncols; i++) order[i] = (byte) c1[i].oldindex;
+
+ if (DEBUG>1) {
+ fprintf(stderr,"%s: result of sorting colormap\n",cmd);
+- for (i=0; i<ncols; i++)
++ for (i=0; i<ncols; i++)
+ fprintf(stderr,"(%3d %02x,%02x,%02x) ",i,rmap[i],gmap[i],bmap[i]);
+ fprintf(stderr,"\n\n");
+-
++
+ fprintf(stderr,"%s: allocation order table\n",cmd);
+- for (i=0; i<ncols; i++)
++ for (i=0; i<ncols; i++)
+ fprintf(stderr,"order[%d] = -> %d\n", i, order[i]);
+ fprintf(stderr,"\n");
+ }
+@@ -240,7 +240,7 @@
+ SetISTR(ISTR_COLOR,"Using %s colormap.",
+ (haveStdCmap == STD_111 ? "2x2x2" :
+ haveStdCmap == STD_222 ? "4x4x4" :
+- haveStdCmap == STD_232 ? "4x8x4" :
++ haveStdCmap == STD_232 ? "4x8x4" :
+ haveStdCmap == STD_666 ? "6x6x6" : "8x8x4"));
+
+ if (ncols>0) SetISTR(ISTR_COLOR2,stdCmapSuccess);
+@@ -251,7 +251,7 @@
+
+ for (i=0; i<numcols; i++) {
+ int i332;
+- i332 = ((int)rMap[i]&0xe0) | (((int)gMap[i]&0xe0)>>3) |
++ i332 = ((int)rMap[i]&0xe0) | (((int)gMap[i]&0xe0)>>3) |
+ (((int)bMap[i]&0xc0)>>6);
+
+ cols[i] = stdcols[i332];
+@@ -291,7 +291,7 @@
+ }
+
+ else {
+- for (i=0; i<nfcols; i++)
++ for (i=0; i<nfcols; i++)
+ xvFreeColors(theDisp, theCmap, &freecols[i], 1, 0L);
+
+ nfcols = 0;
+@@ -314,19 +314,19 @@
+ unique = p2alloc = 0;
+ rwthistime = 0;
+
+- /* FIRST PASS COLOR ALLOCATION:
++ /* FIRST PASS COLOR ALLOCATION:
+ for each color in the 'desired colormap', try to get it via
+ xvAllocColor(). If for any reason it fails, mark that pixel
+ 'unallocated' and worry about it later. Repeat. */
+
+- /* attempt to allocate first ncols entries in colormap
++ /* attempt to allocate first ncols entries in colormap
+ note: On displays with less than 8 bits per RGB gun, it's quite
+ possible that different colors in the original picture will be
+ mapped to the same color on the screen. X does this for you
+- silently. However, this is not-desirable for this application,
++ silently. However, this is not-desirable for this application,
+ because when I say 'allocate me 32 colors' I want it to allocate
+ 32 different colors, not 32 instances of the same 4 shades... */
+-
++
+
+ for (i=0; i<256; i++) failed[i] = 1;
+
+@@ -334,7 +334,7 @@
+
+ for (i=0; i<numcols && unique<ncols; i++) {
+ c = colAllocOrder[i];
+- if (mono) {
++ if (mono) {
+ int intens = MONO(rMap[c], gMap[c], bMap[c]);
+ defs[c].red = defs[c].green = defs[c].blue = intens<<8;
+ }
+@@ -346,8 +346,8 @@
+
+ defs[c].flags = DoRed | DoGreen | DoBlue;
+
+- if (!(colorMapMode==CM_OWNCMAP && cmap==theCmap && CMAPVIS(theVisual))
+- && xvAllocColor(theDisp,cmap,&defs[c])) {
++ if (!(colorMapMode==CM_OWNCMAP && cmap==theCmap && CMAPVIS(theVisual))
++ && xvAllocColor(theDisp,cmap,&defs[c])) {
+ unsigned long pixel, *fcptr;
+
+ pixel = cols[c] = defs[c].pixel;
+@@ -355,7 +355,7 @@
+ gdisp[c] = defs[c].green >> 8;
+ bdisp[c] = defs[c].blue >> 8;
+ failed[c]= 0;
+-
++
+ /* see if the newly allocated color is new and different */
+ for (j=0, fcptr=freecols; j<nfcols && *fcptr!=pixel; j++,fcptr++);
+ if (j==nfcols) unique++;
+@@ -365,24 +365,24 @@
+ }
+
+ else {
+- /* the allocation failed. If we want 'perfect' color, and we haven't
++ /* the allocation failed. If we want 'perfect' color, and we haven't
+ already created our own colormap, we'll want to do so */
+ if ((colorMapMode == CM_PERFECT || colorMapMode == CM_OWNCMAP)
+ && !LocalCmap && CMAPVIS(theVisual)) {
+ LocalCmap = XCreateColormap(theDisp, vrootW, theVisual, AllocNone);
+-
++
+ if (LocalCmap) { /* succeeded, presumably */
+ /* free all colors that were allocated, and try again with the
+ new colormap. This is necessary because 'XCopyColormapAndFree()'
+ has the unpleasant side effect of freeing up the various
+ colors I need for the control panel, etc. */
+
+- for (i=0; i<nfcols; i++)
++ for (i=0; i<nfcols; i++)
+ xvFreeColors(theDisp, theCmap, &freecols[i], 1, 0L);
+-
++
+ if (mainW && !useroot) XSetWindowColormap(theDisp,mainW, LocalCmap);
+
+- if (mainW && !useroot && cmapInGam)
++ if (mainW && !useroot && cmapInGam)
+ XSetWindowColormap(theDisp,gamW, LocalCmap);
+ cmap = LocalCmap;
+
+@@ -402,9 +402,9 @@
+ }
+ }
+ } /* FIRST PASS */
+-
+-
+-
++
++
++
+ if (nfcols==numcols) {
+ if (numcols != unique)
+ SetISTR(ISTR_COLOR,"Got all %d colors. (%d unique)", numcols,
+@@ -415,7 +415,7 @@
+ SetISTR(ISTR_COLOR2,"");
+ return;
+ }
+-
++
+
+
+ /* SECOND PASS COLOR ALLOCATION:
+@@ -427,7 +427,7 @@
+ is in the X colormap. Try to allocate that color (read only).
+ If that fails, the THIRD PASS will deal with it */
+
+- SetISTR(ISTR_COLOR,"Got %d of %d colors. (%d unique)",
++ SetISTR(ISTR_COLOR,"Got %d of %d colors. (%d unique)",
+ nfcols,numcols,unique);
+
+ /* read entire colormap (or first 256 entries) into 'ctab' */
+@@ -436,28 +436,28 @@
+ if (dc>0) { /* only do SECOND PASS if there IS a colormap to read */
+ for (i=0; i<dc; i++) ctab[i].pixel = (unsigned long) i;
+ XQueryColors(theDisp, cmap, ctab, dc);
+-
++
+ for (i=0; i<numcols && unique<ncols; i++) {
+ c = colAllocOrder[i];
+-
++
+ if (failed[c]) { /* an unallocated pixel */
+ int d, mdist, close;
+ int rd, gd, bd, ri, gi, bi;
+-
++
+ mdist = 1000000; close = -1;
+ ri = rMap[c]; gi = gMap[c]; bi = bMap[c];
+-
++
+ for (j=0; j<dc; j++) {
+ rd = ri - (ctab[j].red >>8);
+ gd = gi - (ctab[j].green>>8);
+ bd = bi - (ctab[j].blue >>8);
+-
++
+ d = rd*rd + gd*gd + bd*bd;
+ if (d<mdist) { mdist=d; close=j; }
+ }
+-
++
+ if (close<0) FatalError("This Can't Happen! (How reassuring.)");
+- if (xvAllocColor(theDisp, cmap, &ctab[close])) {
++ if (xvAllocColor(theDisp, cmap, &ctab[close])) {
+ xvbcopy((char *) &ctab[close], (char *) &defs[c], sizeof(XColor));
+ failed[c]= 0;
+ cols[c] = ctab[close].pixel;
+@@ -487,7 +487,7 @@
+
+ mdist = 1000000; close = -1;
+ ri = rMap[c]; gi = gMap[c]; bi = bMap[c];
+-
++
+ /* search the alloc'd colors */
+ for (j=0; j<nfcols; j++) {
+ k = fc2pcol[j];
+@@ -535,7 +535,7 @@
+ unsigned long pmr[1], pix[1];
+ c = colAllocOrder[i];
+
+- if (cellgroup[c]) {
++ if (cellgroup[c]) {
+ int n;
+ /* this color is part of a group. see if its group's
+ been seen already, and if so, skip this */
+@@ -548,11 +548,11 @@
+ }
+ }
+
+- if (!(colorMapMode==CM_OWNCMAP && cmap==theCmap && CMAPVIS(theVisual)) &&
++ if (!(colorMapMode==CM_OWNCMAP && cmap==theCmap && CMAPVIS(theVisual)) &&
+ XAllocColorCells(theDisp, cmap, False, pmr, 0, pix, 1)) {
+ defs[c].pixel = cols[c] = pix[0];
+ failed[c] = 0;
+- if (mono) {
++ if (mono) {
+ int intens = MONO(rMap[c], gMap[c], bMap[c]);
+ defs[c].red = defs[c].green = defs[c].blue = intens<<8;
+ }
+@@ -573,20 +573,20 @@
+ }
+
+ else {
+- if ((colorMapMode == CM_PERFECT || colorMapMode == CM_OWNCMAP)
++ if ((colorMapMode == CM_PERFECT || colorMapMode == CM_OWNCMAP)
+ && !LocalCmap && CMAPVIS(theVisual)) {
+ LocalCmap = XCreateColormap(theDisp, vrootW, theVisual, AllocNone);
+-
++
+ /* free all colors that were allocated, and try again with the
+ new colormap. This is necessary because 'XCopyColormapAndFree()'
+ has the unpleasant side effect of freeing up the various
+ colors I need for the control panel, etc. */
+
+- for (i=0; i<nfcols; i++)
++ for (i=0; i<nfcols; i++)
+ xvFreeColors(theDisp, theCmap, &freecols[i], 1, 0L);
+-
++
+ if (mainW && !useroot) XSetWindowColormap(theDisp,mainW, LocalCmap);
+- if (mainW && !useroot && cmapInGam)
++ if (mainW && !useroot && cmapInGam)
+ XSetWindowColormap(theDisp,gamW, LocalCmap);
+ cmap = LocalCmap;
+
+@@ -608,12 +608,12 @@
+ }
+
+ else {
+- /* Failed to allocate all colors in picture. Map remaining desired
++ /* Failed to allocate all colors in picture. Map remaining desired
+ colors into closest allocated desired colors */
+
+ if (nfcols==0 && !LocalCmap) {
+- char tstr[128], *tmp,
+- *foo = "No r/w cells available. Using r/o color.";
++ char tstr[128], *tmp;
++ const char *foo = "No r/w cells available. Using r/o color.";
+
+ tmp = GetISTR(ISTR_WARNING);
+ if (strlen(tmp) > (size_t) 0) sprintf(tstr, "%s %s", tmp, foo);
+@@ -623,7 +623,7 @@
+ allocROColors();
+ return;
+ }
+-
++
+ SetISTR(ISTR_COLOR,"Got %d of %d colors.", nfcols,numcols);
+
+ for (i=0; i<numcols; i++) {
+@@ -662,7 +662,7 @@
+ j = fc2pcol[i];
+ defs[j].pixel = freecols[i];
+
+- if (mono) {
++ if (mono) {
+ int intens = MONO(rMap[j], gMap[j], bMap[j]);
+ defs[j].red = defs[j].green = defs[j].blue = intens<<8;
+ }
+@@ -706,9 +706,9 @@
+ if (theVisual->class == TrueColor || theVisual->class == DirectColor) {
+ unsigned long r, g, b, rmask, gmask, bmask, origr, origg, origb;
+ int rshift, gshift, bshift;
+-
+- /* shift r,g,b so that high bit of 16-bit color specification is
+- * aligned with high bit of r,g,b-mask in visual,
++
++ /* shift r,g,b so that high bit of 16-bit color specification is
++ * aligned with high bit of r,g,b-mask in visual,
+ * AND each component with its mask,
+ * and OR the three components together
+ */
+@@ -781,7 +781,7 @@
+ " mask=%04lx,%04lx,%04lx pix=%08lx\n",
+ rmask, gmask, bmask, cdef->pixel);
+ }
+-
++
+ return 1;
+ }
+ else {
+@@ -811,7 +811,7 @@
+ {
+ int i, j;
+
+- /* if regroup is set, we *must* do a full realloc, as the cols[] array
++ /* if regroup is set, we *must* do a full realloc, as the cols[] array
+ isn't correct anymore. (cell groupings changed) */
+
+ ApplyECctrls(); /* set {r,g,b}cmap[editColor] based on dial settings */
+@@ -830,16 +830,16 @@
+ }
+ }
+
+-
++
+ /* do something clever if we're using R/W color and this colorcell isn't
+ shared */
+
+ if (!regroup && allocMode==AM_READWRITE && rwthistime) {
+ /* let's try to be clever */
+- /* determine if the editColor cell is unique, or shared (among
++ /* determine if the editColor cell is unique, or shared (among
+ non-group members, that is) */
+
+- for (i=j=0; i<numcols; i++)
++ for (i=j=0; i<numcols; i++)
+ if (rwpc2pc[i] == rwpc2pc[editColor]) j++;
+
+ /* if this is a group, subtract off the non-this-one pixels from group */
+@@ -901,7 +901,7 @@
+ }
+
+ /* shift 0..i-1 down one position */
+- xvbcopy((char *) colAllocOrder, (char *) colAllocOrder+1,
++ xvbcopy((char *) colAllocOrder, (char *) colAllocOrder+1,
+ i * sizeof(colAllocOrder[0]));
+ colAllocOrder[0] = editColor;
+ }
+@@ -930,9 +930,9 @@
+ * stdfreecols[256] - list of colors to free on exit
+ * stdnfcols - # of colors to free
+ *
+- * possibly modifies browR, browG, browB, and browcols arrays
++ * possibly modifies browR, browG, browB, and browcols arrays
+ * (if !browPerfect)
+- */
++ */
+
+ /* returns '1' if the colors were reallocated, '0' otherwise */
+
+@@ -946,18 +946,18 @@
+
+ /* note:
+ * if (ncols==0) (ie, we're either on, or emulating a b/w display),
+- * build std*[], std*disp[], colormaps, but don't actually
++ * build std*[], std*disp[], colormaps, but don't actually
+ * allocate any colors.
+ */
+
+- int i,j,r,g,b, desMode, screwed;
++ int i, r,g,b, desMode, screwed;
+ XColor def;
+ byte rmap[256],gmap[256],bmap[256],order[256];
+ unsigned long descols[256];
+ int des2got[256], failed[256];
+ int maplen, exactCnt, nearCnt;
+-
+-
++
++
+ /* generate stdr,stdg,stdb cmap. Same in all cases */
+ for (r=0, i=0; r<8; r++)
+ for (g=0; g<8; g++)
+@@ -966,10 +966,10 @@
+ stdg[i] = (g*255)/7;
+ stdb[i] = (b*255)/3;
+ }
+-
+-
++
++
+ /* determine what size cmap we should build */
+- if (theVisual->class == TrueColor ||
++ if (theVisual->class == TrueColor ||
+ theVisual->class == DirectColor) desMode = STD_332;
+ else if (colorMapMode == CM_STDCMAP) desMode = STD_232;
+ else desMode = STD_222;
+@@ -983,9 +983,9 @@
+ }
+
+
+- if (DEBUG) fprintf(stderr,"MakeStdCmaps: have=%d, des=%d, ncols=%d\n",
++ if (DEBUG) fprintf(stderr,"MakeStdCmaps: have=%d, des=%d, ncols=%d\n",
+ haveStdCmap, desMode, ncols);
+-
++
+ if (haveStdCmap != STD_NONE && haveStdCmap == desMode) return 0;
+ freeStdCmaps();
+
+@@ -997,7 +997,7 @@
+ for (i=0; i<256; i++) des2got[i] = i;
+ exactCnt = nearCnt = 0;
+
+-
++
+ if (desMode == STD_111) { /* try to alloc 8 colors */
+ /* generate a 1/1/1 desired colormap */
+ maplen = 8;
+@@ -1009,7 +1009,7 @@
+ bmap[i] = (b*255);
+ }
+ }
+-
++
+ else if (desMode == STD_222) { /* try to alloc 64 colors */
+ /* generate a 2/2/2 desired colormap */
+ maplen = 64;
+@@ -1021,7 +1021,7 @@
+ bmap[i] = (b*255)/3;
+ }
+ }
+-
++
+ else if (desMode == STD_232) { /* try to alloc 128 colors */
+ /* generate a 2/3/2 desired colormap */
+ maplen = 128;
+@@ -1033,7 +1033,7 @@
+ bmap[i] = (b*255)/3;
+ }
+ }
+-
++
+ else if (desMode == STD_666) { /* try to alloc 216 colors */
+ /* generate a 6*6*6 desired colormap */
+ maplen = 216;
+@@ -1045,14 +1045,14 @@
+ bmap[i] = (b*255)/5;
+ }
+ }
+-
++
+ else { /* desMode == STD_332 */
+ maplen = 256;
+ for (i=0; i<maplen; i++) {
+ rmap[i] = stdr[i]; gmap[i] = stdg[i]; bmap[i] = stdb[i];
+ }
+ }
+-
++
+
+ /* sort the colors according to the diversity algorithm... */
+ diverseOrder(rmap,gmap,bmap,maplen,order);
+@@ -1072,7 +1072,7 @@
+ def.red = rmap[order[i]] << 8;
+ def.green = gmap[order[i]] << 8;
+ def.blue = bmap[order[i]] << 8;
+-
++
+ def.flags = DoRed | DoGreen | DoBlue;
+
+ if (xvAllocColor(theDisp, theCmap, &def)) { /* success */
+@@ -1090,34 +1090,34 @@
+
+ if (numgot != maplen) {
+ /* PHASE 2: find 'close' colors in colormap, try to alloc those */
+-
++
+ /* read entire colormap (or first 256 entries) into 'ctab' */
+ dc = (ncells<256) ? ncells : 256;
+ if (dc>0) {
+ for (i=0; i<dc; i++) ctab[i].pixel = (unsigned long) i;
+ XQueryColors(theDisp, theCmap, ctab, dc);
+-
++
+ for (i=0; i<maplen; i++) {
+ if (failed[i]) {
+-
++
+ /* find closest color in colormap, and try to alloc it */
+ mind = 1000000; /* greater than 3 * (256^2) */
+ for (j=0,num = -1; j<dc; j++) {
+ rd = rmap[i] - (ctab[j].red >>8);
+ gd = gmap[i] - (ctab[j].green>>8);
+ bd = bmap[i] - (ctab[j].blue >>8);
+-
++
+ d = CDIST(rd, gd, bd);
+ if (d<mind) { mind = d; num = j; }
+ }
+-
++
+ if (num < 0) screwed = 1;
+ else if (xvAllocColor(theDisp, theCmap, &ctab[num])) { /*success*/
+ des2got[i] = i;
+ descols[i] = ctab[num].pixel;
+ failed[i] = 0;
+- nearCnt++;
+- /* for (j=0; j<stdnfcols && stdfreecols[j]!=ctab[num].pixel;
++ nearCnt++;
++ /* for (j=0; j<stdnfcols && stdfreecols[j]!=ctab[num].pixel;
+ j++); */
+ stdfreecols[stdnfcols++] = ctab[num].pixel;
+ }
+@@ -1125,12 +1125,12 @@
+ }
+ }
+ }
+-
+- /* PHASE 3: map remaining unallocated colors into closest we got */
+-
++
++ /* PHASE 3: map remaining unallocated colors into closest we got */
++
+ for (i=0; i<maplen; i++) {
+ if (failed[i]) {
+-
++
+ /* find closest alloc'd color */
+ mind = 1000000; /* greater than 3 * (256^2) */
+ for (j=0,num=0; j<maplen; j++) {
+@@ -1139,7 +1139,7 @@
+ if (d<mind) { mind = d; num = j; }
+ }
+ }
+-
++
+ if (failed[num]) screwed = 1;
+ else {
+ descols[i] = descols[num];
+@@ -1151,8 +1151,8 @@
+ }
+
+
+- /* at this point, we have 'descols', a maplen long array of
+- X pixel values that maps 1/1/1, 2/2/2, 6*6*6, or 3/3/2 values
++ /* at this point, we have 'descols', a maplen long array of
++ X pixel values that maps 1/1/1, 2/2/2, 6*6*6, or 3/3/2 values
+ into an X pixel value */
+
+ /* build stdcols and stdrdisp,stdgdisp,stdbdisp colormap */
+@@ -1170,7 +1170,7 @@
+
+ stdcols[i332] = descols[des2got[i111]];
+ }
+- }
++ }
+
+ else if (desMode == STD_222) {
+ for (r=0; r<8; r++)
+@@ -1186,7 +1186,7 @@
+
+ stdcols[i332] = descols[des2got[i222]];
+ }
+- }
++ }
+
+ else if (desMode == STD_232) {
+ for (r=0; r<8; r++)
+@@ -1201,7 +1201,7 @@
+ stdbdisp[i332] = bmap[des2got[i232]];
+ stdcols[i332] = descols[des2got[i232]];
+ }
+- }
++ }
+
+ else if (desMode == STD_666) {
+ for (r=0,i=0; r<8; r++)
+@@ -1221,7 +1221,7 @@
+
+ stdcols[i] = descols[des2got[i666]];
+ }
+- }
++ }
+
+ else { /* desMode == STD_332 */
+ for (i=0; i<256; i++) {
+@@ -1249,22 +1249,22 @@
+ if (DEBUG > 1) {
+ fprintf(stderr,"MakeStdCmaps: ncols=%d maplen=%d\n", ncols, maplen);
+ fprintf(stderr," std*[]= ");
+- for (i=0; i<256; i++)
++ for (i=0; i<256; i++)
+ fprintf(stderr,"%02x,%02x,%02x ",stdr[i],stdg[i],stdb[i]);
+ fprintf(stderr,"\n\n");
+
+ fprintf(stderr," disp[]= ");
+- for (i=0; i<256; i++)
++ for (i=0; i<256; i++)
+ fprintf(stderr,"%02x,%02x,%02x ",stdrdisp[i],stdgdisp[i],stdbdisp[i]);
+ fprintf(stderr,"\n\n");
+
+ fprintf(stderr," stdcols[]= ");
+- for (i=0; i<256; i++)
++ for (i=0; i<256; i++)
+ fprintf(stderr,"%02lx ",stdcols[i]);
+ fprintf(stderr,"\n\n");
+
+ fprintf(stderr," stdfreecols[%d] = ", stdnfcols);
+- for (i=0; i<stdnfcols; i++)
++ for (i=0; i<stdnfcols; i++)
+ fprintf(stderr,"%02lx ",stdfreecols[i]);
+ fprintf(stderr,"\n\n");
+ }
+@@ -1272,8 +1272,8 @@
+ if (exactCnt == maplen)
+ sprintf(stdCmapSuccess, "Got all %d colors.", exactCnt);
+ else {
+- if (nearCnt>0)
+- sprintf(stdCmapSuccess, "Got %d out of %d colors. (%d close color%s)",
++ if (nearCnt>0)
++ sprintf(stdCmapSuccess, "Got %d out of %d colors. (%d close color%s)",
+ exactCnt, maplen, nearCnt, (nearCnt>1) ? "s" : "");
+ else
+ sprintf(stdCmapSuccess, "Got %d out of %d colors.", exactCnt, maplen);
+@@ -1292,11 +1292,11 @@
+ /* This function should only be called once, at the start of the program.
+ *
+ * produces many things:
+- * browR,browG,browB[256]
++ * browR,browG,browB[256]
+ * - a 3/3/2 colormap used by genIcon
+ * browcols[256] - maps 3/3/2 values into X colors
+ * browCmap - local cmap used in browse window, if browPerfect
+- */
++ */
+
+ int i,j,r,g,b, screwed, num, exactCnt, nearCnt;
+ XColor def;
+@@ -1306,8 +1306,8 @@
+ long d, mind;
+
+
+- if (DEBUG)
+- fprintf(stderr,"MakeBrowCmap: perfect = %d, ncols = %d\n",
++ if (DEBUG)
++ fprintf(stderr,"MakeBrowCmap: perfect = %d, ncols = %d\n",
+ browPerfect, ncols);
+
+ if (ncols == 0 || !CMAPVIS(theVisual)) browPerfect = 0;
+@@ -1350,7 +1350,7 @@
+ def.red = rmap[order[i]] << 8;
+ def.green = gmap[order[i]] << 8;
+ def.blue = bmap[order[i]] << 8;
+-
++
+ def.flags = DoRed | DoGreen | DoBlue;
+
+ if (xvAllocColor(theDisp, browCmap, &def)) { /* success */
+@@ -1358,14 +1358,14 @@
+ descols[order[i]] = def.pixel;
+
+ if (DEBUG>1)
+- fprintf(stderr,"makebrowcmap: Phase 1: Alloc %x,%x,%x succeeded!\n",
++ fprintf(stderr,"makebrowcmap: Phase 1: Alloc %x,%x,%x succeeded!\n",
+ rmap[order[i]], gmap[order[i]], bmap[order[i]]);
+ }
+ else failed[order[i]] = 1;
+ }
+
+-
+- /* PHASE 2: map remaining unallocated colors into closest we got */
++
++ /* PHASE 2: map remaining unallocated colors into closest we got */
+
+ for (i=0; i<256; i++) {
+ if (failed[i]) {
+@@ -1377,9 +1377,9 @@
+ if (d<mind) { mind = d; num = j; }
+ }
+ }
+-
++
+ if (DEBUG>1)
+- fprintf(stderr,"makebrowcmap: closest to %x,%x,%x = %x,%x,%x\n",
++ fprintf(stderr,"makebrowcmap: closest to %x,%x,%x = %x,%x,%x\n",
+ rmap[i],gmap[i],bmap[i], rmap[num], gmap[num], bmap[num]);
+
+ if (failed[num]) screwed = 1;
+@@ -1406,7 +1406,7 @@
+ byte *rmap, *gmap, *bmap, *order;
+ int maplen;
+ {
+- /* takes a colormap (maxlen 256) and produces an order array that
++ /* takes a colormap (maxlen 256) and produces an order array that
+ contains the most-diverse order for allocating these colors */
+
+ int dist[256], i, pick, maxv, ocnt, d;
+@@ -1422,7 +1422,7 @@
+
+ ocnt = 0;
+ order[ocnt++] = pick;
+-
++
+ /* init dist[] array */
+ for (i=0; i<maplen; i++) dist[i] = 1000000;
+
+@@ -1509,14 +1509,14 @@
+ else if (cmode == CM_NORMAL) {
+ if (novbrowse || browPerfect || haveStdCmap != iconCmapSize)
+ freeStdCmaps();
+-
++
+ /* if using browser, and killed stdcmap, make icon stdcmap */
+ if (!novbrowse && !browPerfect && haveStdCmap == STD_NONE) {
+ if (MakeStdCmaps() && anyBrowUp && CMAPVIS(theVisual))
+ RegenBrowseIcons();
+ }
+ }
+-
++
+ else if (cmode == CM_PERFECT) { }
+ else if (cmode == CM_OWNCMAP) { }
+
+@@ -1540,7 +1540,7 @@
+ SetEpicMode();
+ if (genepic) GenerateEpic(eWIDE, eHIGH);
+ }
+- else {
++ else {
+ if (oldmode == CM_STDCMAP && cmode != CM_STDCMAP && epicMode != EM_RAW) {
+ /* just left STDCMAP mode. Switch to using 'RAW' */
+ epicMode = EM_RAW;
+diff -ru xv-3.10a/xvctrl.c xv-3.10a-enhancements/xvctrl.c
+--- xv-3.10a/xvctrl.c 1994-12-22 14:34:41.000000000 -0800
++++ xv-3.10a-enhancements/xvctrl.c 2007-05-13 14:11:33.000000000 -0700
+@@ -1,4 +1,4 @@
+-/*
++/*
+ * xvctrl.c - Control box handling functions
+ *
+ * callable functions:
+@@ -9,7 +9,7 @@
+ * RedrawCtrl(x,y,w,h) - called by 'expose' events
+ * ClickCtrl(x,y)
+ * DrawCtrlStr() - called to redraw 'ISTR_INFO' string in ctrlW
+- * ScrollToCurrent() - called when list selection is changed
++ * ScrollToCurrent() - called when list selection is changed
+ *
+ * LSCreate() - creates a listbox
+ * LSRedraw() - redraws 'namelist' box
+@@ -49,7 +49,10 @@
+ #include "bits/uicon"
+ #include "bits/oicon1"
+ #include "bits/oicon2"
+-#include "bits/icon"
++#ifdef REGSTR
++# define OMIT_ICON_BITS
++# include "bits/icon"
++#endif
+
+ #define CTRLWIDE 440 /* (fixed) size of control window */
+ #define CTRLHIGH 348 /* 379 */
+@@ -80,73 +83,74 @@
+ in xv.h */
+
+
+-static char *dispMList[] = { "Raw\tr",
+- "Dithered\td",
+- "Smooth\ts",
+- MBSEP,
+- "Read/Write Colors",
+- MBSEP,
+- "Normal Colors",
+- "Perfect Colors",
+- "Use Own Colormap",
+- "Use Std. Colormap" };
+-
+-static char *rootMList[] = { "Window",
+- "Root: tiled",
+- "Root: integer tiled",
+- "Root: mirrored",
+- "Root: integer mirrored",
+- "Root: center tiled",
+- "Root: centered",
+- "Root: centered, warp",
+- "Root: centered, brick",
+- "Root: symmetrical tiled",
+- "Root: symmetrical mirrored" };
+-
+-static char *conv24MList[] = { "8-bit mode\t\2448",
+- "24-bit mode\t\2448",
+- MBSEP,
+- "Lock current mode",
+- MBSEP,
+- "Quick 24->8",
+- "Slow 24->8",
+- "Best 24->8" };
+-
+-static char *algMList[] = { "Undo All\t\244u",
+- MBSEP,
+- "Blur...\t\244b",
+- "Sharpen...\t\244s",
+- "Edge Detect\t\244e",
+- "Emboss\t\244m",
+- "Oil Painting\t\244o",
+- "Blend\t\244B",
+- "Copy Rotate...\t\244t",
+- "Clear Rotate...\t\244T",
+- "Pixelize...\t\244p",
+- "Spread...\t\244S",
+- "DeSpeckle...\t\244k"};
+-
+-static char *sizeMList[] = { "Normal\tn",
+- "Max Size\tm",
+- "Maxpect\tM",
+- "Double Size\t>",
+- "Half Size\t<",
+- "10% Larger\t.",
+- "10% Smaller\t,",
+- MBSEP,
+- "Set Size\tS",
+- "Re-Aspect\ta",
+- "4x3\t4",
+- "Int. Expand\tI" };
+-
+-static char *windowMList[] = { "Visual Schnauzer\t^v",
+- "Color Editor\te",
+- "Image Info\ti",
+- "Image Comments\t^c",
+- "Text View\t^t",
+- MBSEP,
+- "About XV\t^a",
+- "XV Keyboard Help"};
++static const char *dispMList[] = { "Raw\tr",
++ "Dithered\td",
++ "Smooth\ts",
++ MBSEP,
++ "Read/Write Colors",
++ MBSEP,
++ "Normal Colors",
++ "Perfect Colors",
++ "Use Own Colormap",
++ "Use Std. Colormap" };
++
++static const char *rootMList[] = { "Window",
++ "Root: tiled",
++ "Root: integer tiled",
++ "Root: mirrored",
++ "Root: integer mirrored",
++ "Root: center tiled",
++ "Root: centered",
++ "Root: centered, warp",
++ "Root: centered, brick",
++ "Root: symmetrical tiled",
++ "Root: symmetrical mirrored",
++ "Root: upper left corner" };
++
++static const char *conv24MList[] = { "8-bit mode\t\2448",
++ "24-bit mode\t\2448",
++ MBSEP,
++ "Lock current mode",
++ MBSEP,
++ "Quick 24->8",
++ "Slow 24->8",
++ "Best 24->8" };
++
++static const char *algMList[] = { "Undo All\t\244u",
++ MBSEP,
++ "Blur...\t\244b",
++ "Sharpen...\t\244s",
++ "Edge Detect\t\244e",
++ "Emboss\t\244m",
++ "Oil Painting\t\244o",
++ "Blend\t\244B",
++ "Copy Rotate...\t\244t",
++ "Clear Rotate...\t\244T",
++ "Pixelize...\t\244p",
++ "Spread...\t\244S",
++ "DeSpeckle...\t\244k"};
++
++static const char *sizeMList[] = { "Normal\tn",
++ "Max Size\tm",
++ "Maxpect\tM",
++ "Double Size\t>",
++ "Half Size\t<",
++ "10% Larger\t.",
++ "10% Smaller\t,",
++ MBSEP,
++ "Set Size\tS",
++ "Re-Aspect\ta",
++ "4x3\t4",
++ "Int. Expand\tI" };
++
++static const char *windowMList[] = { "Visual Schnauzer\t^v",
++ "Color Editor\te",
++ "Image Info\ti",
++ "Image Comments\t^c",
++ "Text View\t^t",
++ MBSEP,
++ "About XV\t^a",
++ "XV Keyboard Help"};
+
+
+
+@@ -157,14 +161,14 @@
+
+ /***************************************************/
+ void CreateCtrl(geom)
+- char *geom;
++ const char *geom;
+ {
+- int i, listh, topskip;
++ int listh, topskip;
+ double skip;
+ XSetWindowAttributes xswa;
+ Pixmap oicon1Pix, oicon2Pix;
+
+- ctrlW = CreateWindow("xv controls", "XVcontrols", geom,
++ ctrlW = CreateWindow("xv controls", "XVcontrols", geom,
+ CTRLWIDE, CTRLHIGH, infofg, infobg, 0);
+ if (!ctrlW) FatalError("can't create controls window!");
+
+@@ -205,10 +209,10 @@
+ oicon2Pix = MakePix1(ctrlW, oicon2_bits, oicon2_width, oicon2_height);
+
+ if (!grayTile || !dimStip || !fifoPix || !chrPix || !dirPix ||
+- !blkPix || !lnkPix || !regPix || !rotlPix || !fliphPix ||
++ !blkPix || !lnkPix || !regPix || !rotlPix || !fliphPix ||
+ !flipvPix || !p10Pix || !m10Pix || !cutPix || !copyPix ||
+ !pastePix || !clearPix || !uiconPix || !oiconPix || !oicon1Pix ||
+- !oicon2Pix || !padPix || !annotPix)
++ !oicon2Pix || !padPix || !annotPix)
+ FatalError("unable to create all pixmaps in CreateCtrl()\n");
+
+
+@@ -226,7 +230,7 @@
+ XFreePixmap(theDisp, oicon1Pix);
+ XFreePixmap(theDisp, oicon2Pix);
+
+-
++
+
+ if (ctrlColor) XSetWindowBackground(theDisp, ctrlW, locol);
+ else XSetWindowBackgroundPixmap(theDisp, ctrlW, grayTile);
+@@ -234,7 +238,7 @@
+ listh = LINEHIGH * NLINES;
+
+ LSCreate(&nList, ctrlW, 5, 52, (CTRLWIDE-BUTTW-18),
+- LINEHIGH*NLINES, NLINES, dispnames, numnames,
++ LINEHIGH*NLINES, NLINES, dispnames, numnames,
+ infofg, infobg, hicol, locol, RedrawNList, 0, 0);
+ nList.selected = 0; /* default to first name selected */
+
+@@ -245,8 +249,8 @@
+
+ topskip = nList.y;
+ skip = ((double) (nList.h - (CHIGH+5))) / 6.0;
+- if (skip > SBUTTH+8) {
+- skip = SBUTTH + 7;
++ if (skip > SBUTTH+8) {
++ skip = SBUTTH + 7;
+ topskip = nList.y + (nList.h - (6*skip + (CHIGH+5))) / 2;
+ }
+
+@@ -258,7 +262,7 @@
+ #define R_BY3 (topskip + (int)(3*skip))
+ #define R_BY4 (topskip + (int)(4*skip))
+ #define R_BY5 (topskip + (int)(5*skip))
+-
++
+ BTCreate(&but[BNEXT], ctrlW, R_BX0, R_BY0, R_BW1, SBUTTH, "Next", BCLS);
+ BTCreate(&but[BPREV], ctrlW, R_BX0, R_BY1, R_BW1, SBUTTH, "Prev", BCLS);
+ BTCreate(&but[BLOAD], ctrlW, R_BX0, R_BY2, R_BW1, SBUTTH, "Load", BCLS);
+@@ -309,7 +313,7 @@
+ BTCreate(&but[BABOUT], ctrlW,BX4, BY1,BUTTW,BUTTH,"About XV",BCLS);
+ BTCreate(&but[BQUIT], ctrlW,BX5, BY1,BUTTW,BUTTH,"Quit", BCLS);
+
+- BTCreate(&but[BXV], ctrlW,5,5, 100, (u_int) nList.y - 5 - 2 - 5,
++ BTCreate(&but[BXV], ctrlW,5,5, 100, (u_int) nList.y - 5 - 2 - 5,
+ "", BCLS);
+
+ SetButtPix(&but[BCOPY], copyPix, copy_width, copy_height);
+@@ -329,7 +333,7 @@
+ if (ctrlColor) {
+ SetButtPix(&but[BXV], oiconPix, oicon1_width, oicon1_height);
+ but[BXV].colorpix = 1;
+- }
++ }
+ else SetButtPix(&but[BXV], iconPix, icon_width, icon_height);
+ #else
+ SetButtPix(&but[BXV], uiconPix, uicon_width, uicon_height);
+@@ -338,21 +342,21 @@
+ XMapSubwindows(theDisp, ctrlW);
+
+
+- /* have to create menu buttons after XMapSubWindows, as we *don't* want
++ /* have to create menu buttons after XMapSubWindows, as we *don't* want
+ the popup menus mapped */
+
+- MBCreate(&dispMB, ctrlW, CTRLWIDE - 8 - 112 - 2*(112+2), 5,112,19,
++ MBCreate(&dispMB, ctrlW, CTRLWIDE - 8 - 112 - 2*(112+2), 5,112,19,
+ "Display", dispMList, DMB_MAX, BCLS);
+- MBCreate(&conv24MB, ctrlW, CTRLWIDE - 8 - 112 - (112+2), 5,112,19,
++ MBCreate(&conv24MB, ctrlW, CTRLWIDE - 8 - 112 - (112+2), 5,112,19,
+ "24/8 Bit", conv24MList, CONV24_MAX, BCLS);
+- MBCreate(&algMB, ctrlW, CTRLWIDE - 8 - 112, 5,112,19,
++ MBCreate(&algMB, ctrlW, CTRLWIDE - 8 - 112, 5,112,19,
+ "Algorithms", algMList, ALG_MAX, BCLS);
+
+- MBCreate(&rootMB, ctrlW, CTRLWIDE - 8 - 112 - 2*(112+2), 5+21,112,19,
++ MBCreate(&rootMB, ctrlW, CTRLWIDE - 8 - 112 - 2*(112+2), 5+21,112,19,
+ "Root", rootMList, RMB_MAX, BCLS);
+- MBCreate(&windowMB, ctrlW, CTRLWIDE - 8 - 112 - (112+2), 5+21,112,19,
++ MBCreate(&windowMB, ctrlW, CTRLWIDE - 8 - 112 - (112+2), 5+21,112,19,
+ "Windows", windowMList, WMB_MAX, BCLS);
+- MBCreate(&sizeMB, ctrlW, CTRLWIDE - 8 - 112, 5+21,112,19,
++ MBCreate(&sizeMB, ctrlW, CTRLWIDE - 8 - 112, 5+21,112,19,
+ "Image Size", sizeMList, SZMB_MAX, BCLS);
+
+
+@@ -395,7 +399,7 @@
+ byte *bits;
+ int w,h;
+ {
+- return XCreatePixmapFromBitmapData(theDisp, win, (char *) bits,
++ return XCreatePixmapFromBitmapData(theDisp, win, (char *) bits,
+ (u_int) w, (u_int) h, 1L,0L,1);
+ }
+
+@@ -404,7 +408,7 @@
+ void CtrlBox(vis)
+ int vis;
+ {
+- if (vis) XMapRaised(theDisp, ctrlW);
++ if (vis) XMapRaised(theDisp, ctrlW);
+ else XUnmapWindow(theDisp, ctrlW);
+
+ ctrlUp = vis;
+@@ -416,7 +420,6 @@
+ int x,y,w,h;
+ {
+ int i;
+- XRectangle xr;
+
+ RANGE(w, 0, CTRLWIDE);
+ RANGE(h, 0, CTRLHIGH);
+@@ -452,7 +455,7 @@
+ /***************************************************/
+ void DrawCtrlNumFiles()
+ {
+- int x,y,w,h;
++ int x,y,w;
+ char foo[40];
+
+ x = but[BNEXT].x;
+@@ -463,14 +466,14 @@
+ XSetBackground(theDisp, theGC, infobg);
+
+ sprintf(foo, "%d file%s", numnames, (numnames==1) ? "" : "s");
+-
++
+ XSetForeground(theDisp, theGC, infobg);
+ XFillRectangle(theDisp,ctrlW, theGC, x+1,y+1, (u_int) w-1, (u_int) CHIGH+5);
+
+ XSetForeground(theDisp,theGC,infofg);
+ XDrawRectangle(theDisp,ctrlW, theGC, x,y, (u_int) w, (u_int) CHIGH+6);
+
+- Draw3dRect(ctrlW, x+1,y+1, (u_int) w-2, (u_int) CHIGH+4,
++ Draw3dRect(ctrlW, x+1,y+1, (u_int) w-2, (u_int) CHIGH+4,
+ R3D_IN, 2, hicol, locol, infobg);
+
+ XSetForeground(theDisp,theGC,infofg);
+@@ -489,7 +492,7 @@
+ st1 = GetISTR(ISTR_WARNING);
+
+ XSetForeground(theDisp, theGC, infobg);
+- XFillRectangle(theDisp, ctrlW, theGC, 0, y+1,
++ XFillRectangle(theDisp, ctrlW, theGC, 0, y+1,
+ CTRLWIDE, (u_int)((CHIGH+4)*2+1));
+
+ XSetForeground(theDisp, theGC, infofg);
+@@ -501,7 +504,7 @@
+ XSetForeground(theDisp, theGC, locol);
+ XDrawLine(theDisp, ctrlW, theGC, 0, y+1, CTRLWIDE, y+1);
+ XDrawLine(theDisp, ctrlW, theGC, 0, y+CHIGH+5, CTRLWIDE, y+CHIGH+5);
+- XDrawLine(theDisp, ctrlW, theGC, 0, y+(CHIGH+4)*2+1,
++ XDrawLine(theDisp, ctrlW, theGC, 0, y+(CHIGH+4)*2+1,
+ CTRLWIDE, y+(CHIGH+4)*2+1);
+ }
+
+@@ -542,16 +545,16 @@
+ void ScrollToCurrent(lst)
+ LIST *lst;
+ {
+- /* called when selected item on list is changed. Makes the selected
++ /* called when selected item on list is changed. Makes the selected
+ item visible. If it already is, nothing happens. Otherwise, it
+- attempts to scroll so that the selection appears in the middle of
++ attempts to scroll so that the selection appears in the middle of
+ the list window */
+
+ int halfway;
+
+ if (lst->selected < 0) return; /* no selection, do nothing */
+
+- if (lst->selected > lst->scrl.val &&
++ if (lst->selected > lst->scrl.val &&
+ lst->selected < lst->scrl.val + lst->nlines-1) LSRedraw(lst, 0);
+ else {
+ halfway = (lst->nlines)/2; /* offset to the halfway pt. of the list */
+@@ -590,7 +593,7 @@
+ lp->win = XCreateSimpleWindow(theDisp,win,x,y,(u_int) w, (u_int) h,1,fg,bg);
+ if (!lp->win) FatalError("can't create list window!");
+
+- lp->x = x; lp->y = y;
++ lp->x = x; lp->y = y;
+ lp->w = w; lp->h = h;
+ lp->fg = fg; lp->bg = bg;
+ lp->hi = hi; lp->lo = lo;
+@@ -603,7 +606,7 @@
+
+ XSelectInput(theDisp, lp->win, ExposureMask | ButtonPressMask);
+
+- SCCreate(&lp->scrl, lp->win, w-20, -1, 1, h, 0,
++ SCCreate(&lp->scrl, lp->win, w-20, -1, 1, h, 0,
+ nstr-nlines, 0, nlines-1, fg, bg, hi, lo, fptr);
+
+ XMapSubwindows(theDisp, lp->win);
+@@ -646,7 +649,7 @@
+ LIST *lp;
+ {
+ /* redraws lists 3d-effect, which can be trounced by drawSel() */
+- Draw3dRect(lp->win, 0, 0, lp->w-1, lp->h-1, R3D_IN, 2,
++ Draw3dRect(lp->win, 0, 0, lp->w-1, lp->h-1, R3D_IN, 2,
+ lp->hi, lp->lo, lp->bg);
+ }
+
+@@ -675,43 +678,43 @@
+ else { fg = lp->fg; bg = lp->bg; }
+
+ XSetForeground(theDisp, theGC, bg);
+- XFillRectangle(theDisp, lp->win, theGC, x0, y0+i*LINEHIGH,
++ XFillRectangle(theDisp, lp->win, theGC, x0, y0+i*LINEHIGH,
+ (u_int) wide+1, (u_int) LINEHIGH);
+
+ if (j>=0 && j<lp->nstr) { /* only draw string if valid */
+ XSetForeground(theDisp, theGC, fg);
+ XSetBackground(theDisp, theGC, bg);
+
+- if (!lp->filetypes)
++ if (!lp->filetypes)
+ DrawString(lp->win, x0+3, y0+i*LINEHIGH + ASCENT + 1, lp->str[j]);
+ else {
+ int ypos = y0 + i*LINEHIGH + (LINEHIGH - i_fifo_height)/2;
+
+- if (lp->str[j][0] == C_FIFO)
++ if (lp->str[j][0] == C_FIFO)
+ XCopyPlane(theDisp, fifoPix, lp->win, theGC, 0, 0,
+ i_fifo_width, i_fifo_height, x0+3, ypos, 1L);
+
+- else if (lp->str[j][0] == C_CHR)
++ else if (lp->str[j][0] == C_CHR)
+ XCopyPlane(theDisp, chrPix, lp->win, theGC, 0, 0,
+ i_chr_width, i_chr_height, x0+3, ypos, 1L);
+
+- else if (lp->str[j][0] == C_DIR)
++ else if (lp->str[j][0] == C_DIR)
+ XCopyPlane(theDisp, dirPix, lp->win, theGC, 0, 0,
+ i_dir_width, i_dir_height, x0+3, ypos, 1L);
+
+- else if (lp->str[j][0] == C_BLK)
++ else if (lp->str[j][0] == C_BLK)
+ XCopyPlane(theDisp, blkPix, lp->win, theGC, 0, 0,
+ i_blk_width, i_blk_height, x0+3, ypos, 1L);
+
+- else if (lp->str[j][0] == C_LNK)
++ else if (lp->str[j][0] == C_LNK)
+ XCopyPlane(theDisp, lnkPix, lp->win, theGC, 0, 0,
+ i_lnk_width, i_lnk_height, x0+3, ypos, 1L);
+
+- else if (lp->str[j][0] == C_SOCK)
++ else if (lp->str[j][0] == C_SOCK)
+ XCopyPlane(theDisp, sockPix, lp->win, theGC, 0, 0,
+ i_sock_width, i_sock_height, x0+3, ypos, 1L);
+
+- else if (lp->str[j][0] == C_EXE)
++ else if (lp->str[j][0] == C_EXE)
+ XCopyPlane(theDisp, exePix, lp->win, theGC, 0, 0,
+ i_exe_width, i_exe_height, x0+3, ypos, 1L);
+
+@@ -720,8 +723,8 @@
+ i_reg_width, i_reg_height, x0+3, ypos, 1L);
+
+
+- DrawString(lp->win, x0+3 + i_fifo_width + 3,
+- y0+i*LINEHIGH + ASCENT + 1,
++ DrawString(lp->win, x0+3 + i_fifo_width + 3,
++ y0+i*LINEHIGH + ASCENT + 1,
+ lp->str[j]+1);
+ }
+ }
+@@ -735,7 +738,7 @@
+ {
+ int i;
+
+- for (i = lp->scrl.val; i < lp->scrl.val + lp->nlines; i++)
++ for (i = lp->scrl.val; i < lp->scrl.val + lp->nlines; i++)
+ drawSel(lp,i);
+ ls3d(lp);
+ }
+@@ -762,7 +765,7 @@
+ if (sel >= lp->nstr) sel = lp->selected;
+
+ /* see if it's a double click */
+- if (ev->time - lasttime < DBLCLKTIME && sel==lastsel
++ if (ev->time - lasttime < DBLCLKTIME && sel==lastsel
+ && (lp->scrl.val + (y-y0)/LINEHIGH) < lp->nstr
+ && !INACTIVE(lp,sel)) {
+ return (sel);
+@@ -782,7 +785,7 @@
+ while (XQueryPointer(theDisp,lp->win,&rW,&cW,&rx,&ry,&x,&y,&mask)) {
+ if (!(mask & Button1Mask)) break; /* button released */
+
+- if (y<y0) { /* scroll up in list */
++ if (y<y0) { /* scroll up in list */
+ if (lp->scrl.val > lp->scrl.min) {
+ lp->selected = lp->scrl.val - 1;
+ SCSetVal(&lp->scrl, lp->scrl.val - 1);
+@@ -804,7 +807,7 @@
+ if (sel >= lp->nstr) sel = lp->nstr - 1;
+
+ if (sel != lp->selected && sel >= lp->scrl.val &&
+- sel < lp->scrl.val + lp->nlines) {
++ sel < lp->scrl.val + lp->nlines) {
+ /* dragged to another on current page */
+ oldsel = lp->selected;
+ lp->selected = sel;
+@@ -829,17 +832,17 @@
+ else if (key==LS_PAGEDOWN) SCSetVal(&lp->scrl,lp->scrl.val + (lp->nlines-1));
+ else if (key==LS_HOME) SCSetVal(&lp->scrl,lp->scrl.min);
+ else if (key==LS_END) SCSetVal(&lp->scrl,lp->scrl.max);
+-
++
+ else if (key==LS_LINEUP) {
+ /* if the selected item visible, but not the top line */
+- if (lp->selected > lp->scrl.val &&
++ if (lp->selected > lp->scrl.val &&
+ lp->selected <= lp->scrl.val + lp->nlines - 1) {
+ /* then just move it */
+ lp->selected--;
+ drawSel(lp, lp->selected); drawSel(lp, lp->selected+1);
+ ls3d(lp);
+ }
+-
++
+ /* if it's the top line... */
+ else if (lp->selected == lp->scrl.val) {
+ if (lp->selected > 0) {
+@@ -847,7 +850,7 @@
+ SCSetVal(&lp->scrl, lp->selected);
+ }
+ }
+-
++
+ /* if it's not visible, put it on the bottom line */
+ else {
+ lp->selected = lp->scrl.val + lp->nlines - 1;
+@@ -856,10 +859,10 @@
+ ls3d(lp);
+ }
+ }
+-
++
+ else if (key==LS_LINEDOWN) {
+ /* if the selected item visible, but not the bottom line */
+- if (lp->selected >= lp->scrl.val &&
++ if (lp->selected >= lp->scrl.val &&
+ lp->selected < lp->scrl.val + lp->nlines - 1) {
+ if (lp->selected < lp->nstr-1) {
+ /* then just move it */
+@@ -868,7 +871,7 @@
+ ls3d(lp);
+ }
+ }
+-
++
+ /* if it's the bottom line... */
+ else if (lp->selected == lp->scrl.val + lp->nlines - 1) {
+ if (lp->selected < lp->nstr-1) {
+@@ -876,7 +879,7 @@
+ SCSetVal(&lp->scrl, lp->scrl.val+1);
+ }
+ }
+-
++
+ /* if it's not visible, put it on the top line */
+ else {
+ lp->selected = lp->scrl.val;
+diff -ru xv-3.10a/xvcut.c xv-3.10a-enhancements/xvcut.c
+--- xv-3.10a/xvcut.c 1995-01-13 11:55:48.000000000 -0800
++++ xv-3.10a-enhancements/xvcut.c 2007-04-15 15:02:32.000000000 -0700
+@@ -15,7 +15,7 @@
+ * static void clearSelectedArea();
+ * static void makeClipFName ();
+ * static int countcols24 (byte *, int,int, int,int,int,int));
+- * static int countNewCols (byte*, int, int, byte*, int,
++ * static int countNewCols (byte*, int, int, byte*, int,
+ * int, int, int, int);
+ *
+ * void InitSelection ();
+@@ -72,7 +72,7 @@
+ static void clearSelectedArea PARM((void));
+ static void makeClipFName PARM((void));
+ static int countcols24 PARM((byte *, int, int, int, int, int, int));
+-static int countNewCols PARM((byte *, int, int, byte *, int,
++static int countNewCols PARM((byte *, int, int, byte *, int,
+ int, int, int, int));
+ static int dragHandle PARM((XButtonEvent *));
+ static void dragSelection PARM((XButtonEvent *, u_int, int));
+@@ -210,7 +210,7 @@
+ if (!PasteAllowed()) { XBell(theDisp, 0); return; }
+
+ cimg = getFromClip();
+- if (!cimg) return;
++ if (!cimg) return;
+
+ /* if there's no selection, make one! */
+ if (!HaveSelection()) makePasteSel(cimg);
+@@ -231,7 +231,7 @@
+
+ byte *dp, *dpic, *clippic, *clipcmap;
+ int clipw, cliph, clipis24, len, istran, trval;
+- int i, j, sx,sy,sw,sh, cx,cy,cw,ch, dx,dy,dw,dh,dx2,dy2;
++ int i, j, sx,sy,sw,sh, cx,cy,cw,ch, dx,dy,dw,dh;
+
+
+ /*
+@@ -245,7 +245,7 @@
+ ((int) (cimg[CIMG_LEN + 2]<<16)) |
+ ((int) (cimg[CIMG_LEN + 3]<<24));
+
+- if (len < CIMG_PIC24) return;
++ if (len < CIMG_PIC24) return;
+
+ istran = cimg[CIMG_TRANS];
+ trval = cimg[CIMG_TRVAL];
+@@ -268,7 +268,7 @@
+ * already, because if we *are*, we'd prefer to do any clipboard rescaling
+ * in 24-bit space for the obvious reasons.
+ *
+- * possibilities:
++ * possibilities:
+ * PIC24 - easy, do clipboard rescale in 24-bit space
+ * PIC8, and clipboard is 8 bits, (or 24-bits, but with <=256 colors)
+ * and total unique colors < 256:
+@@ -283,7 +283,7 @@
+
+ /* dx,dy,dw,dh is the rectangle (in PIC coords) where the paste will occur
+ (cropped to be entirely within PIC */
+-
++
+ dx = sx; dy = sy; dw = sw; dh = sh;
+ CropRect2Rect(&dx, &dy, &dw, &dh, 0, 0, pWIDE, pHIGH);
+
+@@ -291,7 +291,7 @@
+ /* cx,cy,cw,ch is the rectangle of the clipboard data (in clipboard coords)
+ that will actually be used in the paste operation */
+
+- cx = (sx>=0) ? 0 : ((-sx) * clipw) / sw;
++ cx = (sx>=0) ? 0 : ((-sx) * clipw) / sw;
+ cy = (sy>=0) ? 0 : ((-sy) * cliph) / sh;
+ cw = (dw * clipw) / sw;
+ ch = (dh * cliph) / sh;
+@@ -302,27 +302,29 @@
+ if (picType == PIC8) {
+ int ncc, keep8;
+ char buf[512];
+-
++
+ if (clipis24) { /* pasting in a 24-bit image that *requires* promotion */
+- static char *bnames[] = { "\nOkay", "\033Cancel" };
++ static const char *labels[] = { "\nOkay", "\033Cancel" };
++
+ strcpy(buf, "Warning: Pasting this 24-bit image will require ");
+ strcat(buf, "promoting the current image to 24 bits.");
+-
+- if (PopUp(buf, bnames, 2)) goto exit; /* Cancelled */
++
++ if (PopUp(buf, labels, 2)) goto exit; /* Cancelled */
+ else Change824Mode(PIC24); /* promote pic to 24 bits */
+ }
+
+ else { /* clip is 8 bits */
+ ncc = countNewCols(clippic,clipw,cliph,clipcmap,clipis24,cx,cy,cw,ch);
+-
++
+ if (ncc + numcols > 256) {
+- static char *bnames[] = { "\nPromote", "8Keep 8-bit", "\033Cancel" };
++ static const char *labels[] = { "\nPromote", "8Keep 8-bit", "\033Cancel" };
++
+ strcpy(buf,"Warning: The image and the clipboard combine to have ");
+ strcat(buf,"more than 256 unique colors. Promoting the ");
+ strcat(buf,"image to 24 bits is recommended, otherwise the contents ");
+ strcat(buf,"of the clipboard will probably lose some colors.");
+-
+- keep8 = PopUp(buf, bnames, 3);
++
++ keep8 = PopUp(buf, labels, 3);
+ if (keep8==2) goto exit; /* Cancel */
+ else if (keep8==0) Change824Mode(PIC24); /* promote pic to 24 bits */
+ }
+@@ -331,8 +333,8 @@
+
+
+
+-
+-
++
++
+ /* legal possibilities at this point:
+ * pic is PIC24: clip is 8 or 24
+ * pic is PIC8: clip is 8, or clip is 24 but has 256 or fewer colors
+@@ -342,18 +344,18 @@
+
+ if (picType == PIC8) {
+ int clx, cly, r,g,b,k,mind,close,newcols;
+- byte *cp, *clp, *pp, *ccp, newr[256], newg[256], newb[256], remap[256];
++ byte *cp, *clp, *pp, newr[256], newg[256], newb[256], remap[256];
+ byte order[256], trans[256];
+ int bperpix, dpncols;
+-
++
+ dpic = (byte *) malloc((size_t) dw * dh);
+ if (!dpic) FatalError("Out of memory in DoImgPaste()\n");
+-
++
+ bperpix = (clipis24) ? 3 : 1;
+ newcols = 0;
+-
++
+ /* dpic = a scaled, 8-bit representation of clippic[cx,cy,cw,ch] */
+-
++
+ if (!clipis24) { /* copy colormap from clip data into newr,g,b[] */
+ for (i=0; i<256; i++) {
+ newr[i] = clipcmap[i*3];
+@@ -366,22 +368,22 @@
+ dp = dpic + i*dw;
+ cly = cy + (i * ch) / dh;
+ clp = clippic + (cly*clipw * bperpix);
+-
++
+ for (j=0; j<dw; j++, dp++) {
+ /* get appropriate pixel from clippic */
+ clx = cx + (j * cw) / dw;
+ cp = clp + (clx * bperpix);
+-
++
+ if (!clipis24) *dp = *cp;
+ else { /* build colormap as we go... */
+ r = *cp++; g = *cp++; b = *cp++;
+-
++
+ /* look it up in new colormap, add if not there */
+ for (k=0; k<newcols && (r!=newr[k] || g!=newg[k] ||b!=newb[k]); k++);
+ if (k==newcols && k<256) {
+ newr[k]=r; newg[k]=g; newb[k]=b; newcols++;
+ }
+-
++
+ *dp = (byte) (k & 0xff);
+ }
+ }
+@@ -401,23 +403,23 @@
+ }
+ }
+ }
+-
+-
+-
++
++
++
+ /* COLORMAP MERGING */
+-
++
+ newcols = 0;
+-
++
+ for (i=0; i<dpncols; i++) {
+ if (istran && i==trval) continue;
+-
++
+ for (j=0; j<numcols; j++) { /* look for an exact match */
+ if (rMap[j]==newr[i] && gMap[j]==newg[i] && bMap[j]==newb[i]) break;
+ }
+ if (j<numcols) remap[i] = j;
+ else { /* no exact match */
+ newcols++;
+-
++
+ if (numcols < 256) {
+ rMap[numcols] = newr[i];
+ gMap[numcols] = newg[i];
+@@ -429,7 +431,7 @@
+ r = newr[i]; g=newg[i]; b=newb[i];
+ mind = 256*256 + 256*256 + 256*256;
+ for (j=close=0; j<numcols; j++) {
+- k = ((rMap[j]-r) * (rMap[j]-r)) +
++ k = ((rMap[j]-r) * (rMap[j]-r)) +
+ ((gMap[j]-g) * (gMap[j]-g)) +
+ ((bMap[j]-b) * (bMap[j]-b));
+ if (k<mind) { mind = k; close = j; }
+@@ -438,10 +440,10 @@
+ }
+ }
+ }
+-
+-
++
++
+ /* copy the data into PIC */
+-
++
+ dp = dpic;
+ for (i=dy; i<dy+dh; i++) {
+ pp = pic + (i*pWIDE) + dx;
+@@ -451,7 +453,7 @@
+ }
+ }
+ free(dpic);
+-
++
+ if (newcols) InstallNewPic(); /* does color reallocation, etc. */
+ else {
+ GenerateCpic();
+@@ -459,16 +461,16 @@
+ DrawEpic();
+ }
+ }
+-
++
+
+ /******************** PIC24 handling **********************/
+-
+-
++
++
+ else {
+ byte *tmppic, *cp, *pp, *clp;
+ int bperpix;
+ int trr, trg, trb, clx, cly;
+-
++
+ trr = trg = trb = 0;
+ if (istran) {
+ if (clipis24) {
+@@ -482,24 +484,24 @@
+ trb = clipcmap[trval*3+2];
+ }
+ }
+-
++
+ bperpix = (clipis24) ? 3 : 1;
+
+ if (!istran && (cw != dw || ch != dh)) { /* need to resize, can smooth */
+ byte rmap[256], gmap[256], bmap[256];
+-
++
+ tmppic = (byte *) malloc((size_t) cw * ch * bperpix);
+ if (!tmppic) FatalError("Out of memory in DoImgPaste()\n");
+-
+- /* copy relevant hunk of clippic into tmppic (Smooth24 only works on
++
++ /* copy relevant hunk of clippic into tmppic (Smooth24 only works on
+ complete images */
+-
++
+ for (i=0; i<ch; i++) {
+ dp = tmppic + i*cw*bperpix;
+ cp = clippic + ((i+cy)*clipw + cx) * bperpix;
+ for (j=0; j<cw*bperpix; j++) *dp++ = *cp++;
+ }
+-
++
+ if (!clipis24) {
+ for (i=0; i<256; i++) {
+ rmap[i] = clipcmap[i*3];
+@@ -507,15 +509,15 @@
+ bmap[i] = clipcmap[i*3+2];
+ }
+ }
+-
++
+ dpic = Smooth24(tmppic, clipis24, cw,ch, dw,dh, rmap,gmap,bmap);
+ if (!dpic) FatalError("Out of memory (2) in DoImgPaste()\n");
+ free(tmppic);
+-
++
+ /* copy the resized, smoothed, 24-bit data into 'pic' */
+-
++
+ /* XXX: (deal with smooth-resized transparent imgs) */
+-
++
+ dp = dpic;
+ for (i=dy; i<dy+dh; i++) {
+ pp = pic + (i*pWIDE + dx) * 3;
+@@ -536,11 +538,11 @@
+ pp = pic + ((i+dy)*pWIDE + dx) * 3;
+ cly = cy + (i * ch) / dh;
+ clp = clippic + (cly*clipw * bperpix);
+-
++
+ for (j=0; j<dw; j++, pp+=3) {
+ clx = cx + (j * cw) / dw;
+ cp = clp + (clx * bperpix);
+-
++
+ if (clipis24) {
+ if (!istran || cp[0]!=trr || cp[1]!=trg || cp[2]==trb) {
+ pp[0] = *cp++; pp[1] = *cp++; pp[2] = *cp++;
+@@ -557,14 +559,14 @@
+ }
+ }
+
+-
++
+ GenerateCpic();
+ GenerateEpic(eWIDE, eHIGH);
+ DrawEpic();
+ }
+-
+-
+- exit:
++
++
++ exit:
+ SetCursors(-1);
+ }
+
+@@ -577,20 +579,20 @@
+ XColor cfg, cbg;
+
+ dragcurs = XCreateFontCursor(theDisp, XC_fleur);
+- p1 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) cut_bits,
++ p1 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) cut_bits,
+ cut_width, cut_height, 1L, 0L, 1);
+- p2 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) cutm_bits,
++ p2 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) cutm_bits,
+ cutm_width, cutm_height, 1L, 0L, 1);
+- p3 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) copy_bits,
++ p3 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) copy_bits,
+ copy_width, copy_height, 1L, 0L, 1);
+- p4 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) copym_bits,
++ p4 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) copym_bits,
+ copym_width, copym_height, 1L, 0L, 1);
+ if (p1 && p2 && p3 && p4) {
+ cfg.red = cfg.green = cfg.blue = 0;
+ cbg.red = cbg.green = cbg.blue = 0xffff;
+- cutcurs = XCreatePixmapCursor(theDisp, p1,p2, &cfg, &cbg,
++ cutcurs = XCreatePixmapCursor(theDisp, p1,p2, &cfg, &cbg,
+ cut_x_hot, cut_y_hot);
+- copycurs = XCreatePixmapCursor(theDisp, p3,p4, &cfg, &cbg,
++ copycurs = XCreatePixmapCursor(theDisp, p3,p4, &cfg, &cbg,
+ copy_x_hot, copy_y_hot);
+ if (!cutcurs || !copycurs) FatalError("can't create cut/copy cursors...");
+ }
+@@ -619,7 +621,7 @@
+
+ if (!CutAllowed()) { XBell(theDisp, 0); return (byte *) NULL; }
+ if (!HaveSelection()) return (byte *) NULL;
+-
++
+ GetSelRCoords(&x,&y,&w,&h);
+ CropRect2Rect(&x,&y,&w,&h, 0,0,pWIDE,pHIGH);
+
+@@ -663,15 +665,15 @@
+ if (picType == PIC24 && !do24) { /* 24-bit data as 8-bit */
+ int nc,pr,pg,pb;
+ byte *cm;
+-
++
+ nc = 0;
+ dp = cimg + CIMG_PIC8;
+-
++
+ for (i=y; i<y+h; i++) {
+ pp = pic + i*pWIDE*3 + x*3;
+ for (j=x; j<x+w; j++, pp+=3) {
+ pr = pp[0]; pg = pp[1]; pb = pp[2];
+-
++
+ cm = cimg + CIMG_CMAP;
+ for (k=0; k<nc; k++,cm+=3) {
+ if (pr==cm[0] && pg==cm[1] && pb==cm[2]) break;
+@@ -682,12 +684,12 @@
+ cimg[CIMG_CMAP + nc*3 + 1] = pg;
+ cimg[CIMG_CMAP + nc*3 + 2] = pb;
+ }
+-
++
+ *dp++ = (byte) k;
+ }
+ }
+ }
+-
++
+
+ else if (picType == PIC24) { /* 24-bit data as 24-bit */
+ dp = cimg + CIMG_PIC24;
+@@ -705,26 +707,26 @@
+ else if (picType == PIC8) { /* 8-bit selection */
+ byte *cm = cimg + CIMG_CMAP;
+ for (i=0; i<256; i++) { /* copy colormap */
+- if (i<numcols) {
++ if (i<numcols) {
+ *cm++ = rMap[i];
+ *cm++ = gMap[i];
+ *cm++ = bMap[i];
+ }
+ }
+-
++
+ dp = cimg + CIMG_PIC8;
+ for (i=y; i<y+h; i++) { /* copy image */
+ pp = pic + i*pWIDE + x;
+ for (j=x; j<x+w; j++) *dp++ = *pp++;
+ }
+ }
+-
++
+ return cimg;
+ }
+
+
+
+-
++
+ /********************************************/
+ static byte *getFromClip()
+ {
+@@ -743,14 +745,14 @@
+ clipAtom = XInternAtom(theDisp, CLIPPROP, True);
+ if (clipAtom != None) XDeleteProperty(theDisp, rootW, clipAtom);
+ }
+-
+-
++
++
+ clipAtom = XInternAtom(theDisp, CLIPPROP, True); /* find prop */
+ if (clipAtom != None) {
+
+ /* try to retrieve the length of the data in the property */
+- i = XGetWindowProperty(theDisp, rootW, clipAtom, 0L, 1L, False, XA_STRING,
+- &actType, &actFormat, &nitems, &nleft,
++ i = XGetWindowProperty(theDisp, rootW, clipAtom, 0L, 1L, False, XA_STRING,
++ &actType, &actFormat, &nitems, &nleft,
+ (unsigned char **) &data);
+
+ if (i==Success && actType==XA_STRING && actFormat==8 && nleft>0) {
+@@ -763,9 +765,9 @@
+ XFree((void *) data);
+
+ /* read the rest of the data (len bytes) */
+- i = XGetWindowProperty(theDisp, rootW, clipAtom, 1L,
+- (long) ((len-4)+3)/4,
+- False, XA_STRING, &actType, &actFormat, &nitems,
++ i = XGetWindowProperty(theDisp, rootW, clipAtom, 1L,
++ (long) ((len-4)+3)/4,
++ False, XA_STRING, &actType, &actFormat, &nitems,
+ &nleft, (unsigned char **) &data);
+
+ if (i==Success) {
+@@ -791,8 +793,8 @@
+ }
+ }
+
+-
+- /* if we're still here, then the prop method was less than successful.
++
++ /* if we're still here, then the prop method was less than successful.
+ use the file method, instead */
+
+ if (!clipfname) makeClipFName();
+@@ -800,7 +802,7 @@
+ fp = fopen(clipfname, "r");
+ if (!fp) {
+ unlink(clipfname);
+- sprintf(str, "Can't read clipboard file '%s'\n\n %s.",
++ sprintf(str, "Can't read clipboard file '%s'\n\n %s.",
+ clipfname, ERRSTR(errno));
+ ErrPopUp(str,"\nBletch!");
+ return (byte *) NULL;
+@@ -877,19 +879,19 @@
+ clipAtom = XInternAtom(theDisp, CLIPPROP, True);
+ if (clipAtom != None) XDeleteProperty(theDisp, rootW, clipAtom);
+ }
+-
+-
++
++
+ if (!forceClipFile) {
+ clipAtom = XInternAtom(theDisp, CLIPPROP, False); /* find or make prop */
+ if (clipAtom != None) {
+ /* try to store the data in the property */
+-
++
+ xerrcode = 0;
+ XChangeProperty(theDisp, rootW, clipAtom, XA_STRING, 8, PropModeReplace,
+ cimg, len);
+ XSync(theDisp, False); /* make it happen *now* */
+ if (!xerrcode) return; /* success! */
+-
++
+ /* failed, use file method */
+ XDeleteProperty(theDisp, rootW, clipAtom);
+ }
+@@ -903,7 +905,7 @@
+ fp = fopen(clipfname, "w");
+ if (!fp) {
+ unlink(clipfname);
+- sprintf(str, "Can't write clipboard file '%s'\n\n %s.",
++ sprintf(str, "Can't write clipboard file '%s'\n\n %s.",
+ clipfname, ERRSTR(errno));
+ ErrPopUp(str,"\nBletch!");
+ return;
+@@ -964,7 +966,7 @@
+ /********************************************/
+ static void makeClipFName()
+ {
+- char *homedir;
++ const char *homedir;
+
+ if (clipfname) return;
+
+@@ -996,7 +998,7 @@
+ byte *pp;
+
+ nc = 0;
+-
++
+ for (i=y; nc<257 && i<y+h; i++) {
+ pp = pic + i*pwide*3 + x*3;
+ for (j=x; nc<257 && j<x+w; j++, pp+=3) {
+@@ -1022,7 +1024,7 @@
+ */
+
+ int i, j, k, nc, r,g,b;
+- byte *pp, *cp;
++ byte *pp;
+ byte newr[257], newg[257], newb[257];
+
+ if (picType != PIC8) return 0; /* shouldn't happen */
+@@ -1034,7 +1036,7 @@
+ pp = newpic + i*w*3 + cx*3;
+ for (j=cx; j<cx+cw; j++) {
+ r = *pp++; g = *pp++; b = *pp++;
+-
++
+ /* lookup r,g,b in 'pic's colormap and the newcolors colormap */
+ for (k=0; k<nc && (r!=newr[k] || g!=newg[k] || b!=newb[k]); k++);
+ if (k==nc) {
+@@ -1062,11 +1064,11 @@
+ /* now see which of the used colors are new */
+ for (i=0, nc=0; i<256; i++) {
+ if (!coluse[i]) continue;
+-
+- r = newcmap[i*3];
+- g = newcmap[i*3+1];
++
++ r = newcmap[i*3];
++ g = newcmap[i*3+1];
+ b = newcmap[i*3+2];
+-
++
+ /* lookup r,g,b in pic's colormap */
+ for (k=0; k<numcols && (r!=rMap[k] || g!=gMap[k] || b!=bMap[k]);k++);
+ if (k==numcols) { /* it's a new color, alright */
+@@ -1075,7 +1077,7 @@
+ }
+ }
+ }
+-
++
+ return nc;
+ }
+
+@@ -1143,7 +1145,7 @@
+ /* NOTE: SELECTION IS *NOT* GUARANTEED to be within the bounds of 'pic'.
+ It is only guaranteed to *intersect* pic. */
+
+- *xp = selrx; *yp = selry;
++ *xp = selrx; *yp = selry;
+ *wp = selrw; *hp = selrh;
+ }
+
+@@ -1200,7 +1202,7 @@
+ if (lastClickButton==Button1 && (ev->time - lastClickTime) < DBLCLKTIME) {
+ lastClickButton=Button3;
+ if (HaveSelection() && PTINRECT(px, py, selrx, selry, selrw, selrh)) {
+- EnableSelection(0);
++ EnableSelection(0);
+ rv = 1;
+ }
+ else {
+@@ -1225,7 +1227,7 @@
+ else if (ev->button == Button2) { /* do a drag & drop operation */
+ if (HaveSelection() && PTINRECT(px,py,selrx,selry,selrw,selrh)) {
+ /* clip selection rect to pic */
+- EnableSelection(0);
++ EnableSelection(0);
+ CropRect2Rect(&selrx, &selry, &selrw, &selrh, 0, 0, pWIDE, pHIGH);
+
+ if (selrw<1 || selrh<1) rv = 0;
+@@ -1253,8 +1255,8 @@
+ * holding SHIFT constrains selection to be square,
+ * holding CTRL constrains selection to keep original aspect ratio
+ */
+-
+- int i, mex, mey, mpx, mpy, offx,offy;
++
++ int mex, mey, mpx, mpy, offx,offy;
+ int sex, sey, sex2, sey2, sew, seh, sew2, seh2, hs, h2;
+ int istp, isbt, islf, isrt, isvm, ishm;
+ int cnstsq, cnstasp;
+@@ -1272,7 +1274,7 @@
+ sew2 = sew/2;
+ seh2 = seh/2;
+ sex2--; sey2--;
+-
++
+ if (sew>=35 && seh>=35) hs=7;
+ else if (sew>=20 && seh>=20) hs=5;
+ else if (sew>= 9 && seh>= 9) hs=3;
+@@ -1307,7 +1309,7 @@
+
+
+ /* it's definitely in a handle... track 'til released */
+-
++
+ DrawSelection(0);
+ selFilled = 1;
+ selTracking = 1;
+@@ -1366,12 +1368,12 @@
+ else { chwide=1; newwide = (int) (seh*orgaspect); }
+ }
+ }
+-
++
+ if (chwide) {
+ if (islf) { sex = (sex+sew) - newwide; }
+ sew = newwide;
+ }
+-
++
+ if (chhigh) {
+ if (istp) { sey = (sey+seh) - newhigh; }
+ seh = newhigh;
+@@ -1380,7 +1382,7 @@
+
+ if (sew<1) sew=1;
+ if (seh<1) seh=1;
+-
++
+ if (sex!=selrx || sey!=selry || sew!=selrw || seh!=selrh) {
+ DrawSelection(0);
+ selrx = sex; selry = sey; selrw = sew; selrh = seh;
+@@ -1395,14 +1397,14 @@
+ Timer(100);
+ }
+ }
+-
++
+ EnableSelection(0);
+
+ selFilled = 0;
+ selTracking = 0;
+
+ /* only 'enable' the selection if it intersects CPIC */
+- if (selrx < cXOFF+cWIDE && selrx+selrw > cXOFF &&
++ if (selrx < cXOFF+cWIDE && selrx+selrw > cXOFF &&
+ selry < cYOFF+cHIGH && selry+selrh > cYOFF) EnableSelection(1);
+
+ return 1;
+@@ -1422,7 +1424,7 @@
+ *
+ * if 'dragndrop', changes cursor, monitors CTRL status
+ */
+-
++
+ int mpx, mpy, offx, offy;
+ int newsx, newsy, orgsx, orgsy, cnstrain, docopy, lastdocopy;
+ Window rW, cW;
+@@ -1436,9 +1438,9 @@
+
+ CoordE2P(ev->x, ev->y, &mpx, &mpy);
+ offx = mpx - selrx; offy = mpy - selry;
+-
++
+ /* track rectangle until we get a release */
+-
++
+ DrawSelection(0);
+ selFilled = 1;
+ selTracking = 1;
+@@ -1467,7 +1469,7 @@
+ dx = newsx - orgsx; dy = newsy - orgsy;
+ if (abs(dx) > abs(dy)) dy = 0;
+ else if (abs(dy) > abs(dx)) dx = 0;
+-
++
+ newsx = orgsx + dx; newsy = orgsy + dy;
+ }
+
+@@ -1485,7 +1487,7 @@
+ Timer(100);
+ }
+ }
+-
++
+ EnableSelection(0);
+
+ selFilled = 0;
+@@ -1495,7 +1497,7 @@
+
+ /* only do <whatever> if the selection intersects CPIC */
+
+- if (selrx < cXOFF+cWIDE && selrx+selrw > cXOFF &&
++ if (selrx < cXOFF+cWIDE && selrx+selrw > cXOFF &&
+ selry < cYOFF+cHIGH && selry+selrh > cYOFF) {
+
+ EnableSelection(1);
+@@ -1503,10 +1505,10 @@
+ if (dragndrop) {
+ int tmpsx, tmpsy;
+ byte *data;
+-
++
+ tmpsx = selrx; tmpsy = selry;
+ selrx = orgsx; selry = orgsy;
+-
++
+ data = getSelection(); /* copy old data */
+ if (data) {
+ if (!docopy) clearSelectedArea();
+@@ -1531,29 +1533,29 @@
+ int rx,ry,ox,oy,x,y,active, x1, y1, x2, y2, cnstrain;
+ int i, px,py,px2,py2,pw,ph;
+ unsigned int mask;
+-
++
+ /* called on a B1 press in mainW to draw a new rectangular selection.
+ * any former selection has already been removed. holding shift down
+- * while tracking constrains selection to a square
++ * while tracking constrains selection to a square
+ */
+-
++
+ active = 0;
+-
++
+ x1 = ox = ev->x; y1 = oy = ev->y; /* nail down one corner */
+ selrx = selry = selrw = selrh = 0;
+ selTracking = 1;
+-
++
+ while (1) {
+ if (!XQueryPointer(theDisp,mainW,&rW,&cW,&rx,&ry,&x,&y,&mask)) continue;
+ if (!(mask & Button1Mask)) break; /* button released */
+ cnstrain = (mask & ShiftMask);
+-
++
+ if (x!=ox || y!=oy) { /* moved. erase and redraw (?) */
+ x2 = x; y2 = y;
+-
++
+ /* x1,y1,x2,y2 are in epic coords. sort, convert to pic coords,
+ and if changed, erase+redraw */
+-
++
+ CoordE2P(x1, y1, &px, &py);
+ CoordE2P(x2, y2, &px2, &py2);
+ if (px>px2) { i=px; px=px2; px2=i; }
+@@ -1561,17 +1563,17 @@
+ pw = px2-px+1; ph=py2-py+1;
+
+ /* keep px,py,pw,ph inside 'pic' */
+-
++
+ if (px<0) { pw+=px; px=0; }
+ if (py<0) { ph+=py; py=0; }
+ if (px>pWIDE-1) px = pWIDE-1;
+ if (py>pHIGH-1) py = pHIGH-1;
+-
++
+ if (pw<0) pw=0;
+ if (ph<0) ph=0;
+ if (px+pw>pWIDE) pw = pWIDE - px;
+ if (py+ph>pHIGH) ph = pHIGH - py;
+-
++
+ if (cnstrain) { /* make a square at smaller of w,h */
+ if (ph>pw) { if (y2<y1) py += (ph-pw); ph=pw; }
+ else if (pw>ph) { if (x2<x1) px += (pw-ph); pw=ph; }
+@@ -1579,12 +1581,12 @@
+
+ /* put x,y,w,h -> selr{x,y,w,h}
+ if the rectangle has changed, erase old and draw new */
+-
++
+ if (px!=selrx || py!=selry || pw!=selrw || ph!=selrh) {
+ DrawSelection(0);
+ selrx = px; selry = py; selrw = pw; selrh = ph;
+ DrawSelection(1);
+-
++
+ haveSel = active = (pw>0 && ph>0);
+ if (infoUp) SetSelectionString();
+ XFlush(theDisp);
+@@ -1615,7 +1617,7 @@
+ set, pick a new 'color' to invert the selection with */
+
+ int x,y,x1,y1,w,h;
+-
++
+ if (newcol) selColor = (selColor+1) & 0x7;
+
+ /* convert selr{x,y,w,h} into epic coords */
+@@ -1650,7 +1652,7 @@
+ if (y<0 && y+h>eHIGH && selFilled!=1)
+ XDrawLine(theDisp, mainW, theGC, x, eHIGH/2, x+w, eHIGH/2);
+
+-
++
+ if (selFilled==0 || selFilled == 1) {
+ /* one little kludge: if w or h == eWIDE or eHIGH, make it one smaller */
+ if (x+w == eWIDE) w--;
+@@ -1664,17 +1666,17 @@
+ else if (w>=20 && h>=20) { hs=5; h1=4; h2=2; }
+ else if (w>= 9 && h>= 9) { hs=3; h1=2; h2=1; }
+ else hs=h1=h2=0;
+-
++
+ if (hs) {
+ XFillRectangle(theDisp,mainW,theGC,x+1, y+1, (u_int)h1,(u_int)h1);
+ XFillRectangle(theDisp,mainW,theGC,x+w/2-h2,y+1, (u_int)hs,(u_int)h1);
+ XFillRectangle(theDisp,mainW,theGC,x+w-h1, y+1, (u_int)h1,(u_int)h1);
+-
++
+ XFillRectangle(theDisp,mainW,theGC,x+1, y+h/2-h2,
+ (u_int)h1, (u_int)hs);
+ XFillRectangle(theDisp,mainW,theGC,x+w-h1,y+h/2-h2,
+ (u_int)h1, (u_int)hs);
+-
++
+ XFillRectangle(theDisp,mainW,theGC,x+1, y+h-h1,
+ (u_int)h1,(u_int)h1);
+ XFillRectangle(theDisp,mainW,theGC,x+w/2-h2,y+h-h1,
+@@ -1683,7 +1685,7 @@
+ (u_int)h1,(u_int)h1);
+ }
+ }
+-
++
+ if (selFilled==1) {
+ XDrawLine(theDisp, mainW, theGC, x+1, y+1, x+w-1, y+h-1);
+ XDrawLine(theDisp, mainW, theGC, x+1, y+h-1, x+w-1, y+1);
+@@ -1692,8 +1694,8 @@
+ else if (selFilled==2) {
+ XFillRectangle(theDisp, mainW, theGC, x,y,(u_int) w, (u_int) h);
+ }
+-
+-
++
++
+ XSetFunction(theDisp,theGC,GXcopy);
+ XSetPlaneMask(theDisp, theGC, AllPlanes);
+ }
+@@ -1703,7 +1705,7 @@
+ void MoveGrowSelection(dx,dy,dw,dh)
+ int dx,dy,dw,dh;
+ {
+- /* moves and/or grows the selection by the specified amount
++ /* moves and/or grows the selection by the specified amount
+ (in pic coords). keeps the selection entirely within 'pic'.
+ (called by 'CropKey()') */
+
+@@ -1729,7 +1731,7 @@
+ }
+ }
+
+-
++
+ /***********************************/
+ void BlinkSelection(cnt)
+ int cnt;
+diff -ru xv-3.10a/xvdflt.c xv-3.10a-enhancements/xvdflt.c
+--- xv-3.10a/xvdflt.c 1994-12-22 14:34:42.000000000 -0800
++++ xv-3.10a-enhancements/xvdflt.c 2007-05-12 14:07:36.000000000 -0700
+@@ -16,12 +16,12 @@
+ #include "bits/xv_rev"
+ #include "bits/xv_ver"
+ #include "bits/xf_left"
+-#include "bits/xf_right"
++/* #include "bits/xf_right" not used */
+ #include "bits/font5x9.h"
+
+
+ #ifndef USEOLDPIC
+-# include "xvdflt.h"
++# include "xvdflt.h"
+ #endif
+
+
+@@ -62,7 +62,7 @@
+ for (i=0; i<XVDFLT_HIGH; i++) {
+ nbytes = 0;
+ while (nbytes < XVDFLT_WIDE) {
+- char *sp;
++ const char *sp;
+ byte *dp;
+
+ j = XVDFLT_WIDE - nbytes;
+@@ -100,21 +100,21 @@
+ setcolor(pinfo, 252, 0, 0, 0); /* black background for text */
+
+
+- xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
++ xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
+ dfltpic, DWIDE, DHIGH, DWIDE/2+1, 203+1, 252);
+- xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
++ xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
+ dfltpic, DWIDE, DHIGH, DWIDE/2, 203, 250);
+
+ i = xv_ver_width + xv_rev_width + 30;
+
+- xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
++ xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
+ dfltpic, DWIDE, DHIGH, DWIDE/2 - (i/2) + xv_ver_width/2+1, 220+1,252);
+- xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
++ xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
+ dfltpic, DWIDE, DHIGH, DWIDE/2 + (i/2) - xv_rev_width/2+1, 220+1,252);
+
+- xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
++ xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
+ dfltpic, DWIDE, DHIGH, DWIDE/2 - (i/2) + xv_ver_width/2, 220, 250);
+- xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
++ xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
+ dfltpic, DWIDE, DHIGH, DWIDE/2 + (i/2) - xv_rev_width/2, 220, 250);
+
+ strcpy(str,"Press <right> mouse button for menu.");
+@@ -136,7 +136,11 @@
+ pinfo->w = XVDFLT_WIDE;
+ pinfo->h = XVDFLT_HIGH;
+ pinfo->type = PIC8;
++#ifdef HAVE_PNG
++ pinfo->frmType = F_PNG;
++#else
+ pinfo->frmType = F_GIF;
++#endif
+ pinfo->colType = F_FULLCOLOR;
+
+ pinfo->normw = pinfo->w;
+@@ -169,7 +173,7 @@
+ for (i=k=0; i<DHIGH; i+=xf_left_height) {
+ for (j=0; j<DWIDE; j+=xf_left_width) {
+ k++;
+- if (k&1)
++ if (k&1)
+ xbm2pic((byte *) xf_left_bits, xf_left_width, xf_left_height,
+ dfltpic, DWIDE, DHIGH, j + xf_left_width/2,
+ i + xf_left_height/2, 1);
+@@ -179,29 +183,29 @@
+
+
+
+- xbm2pic((byte *) xvpic_logo_out_bits, xvpic_logo_out_width,
++ xbm2pic((byte *) xvpic_logo_out_bits, xvpic_logo_out_width,
+ xvpic_logo_out_height, dfltpic, DWIDE, DHIGH, DWIDE/2 + 10, 80, 103);
+
+- xbm2pic((byte *) xvpic_logo_top_bits, xvpic_logo_top_width,
++ xbm2pic((byte *) xvpic_logo_top_bits, xvpic_logo_top_width,
+ xvpic_logo_top_height, dfltpic, DWIDE, DHIGH, DWIDE/2 + 10, 80, 100);
+
+- xbm2pic((byte *) xvpic_logo_bot_bits, xvpic_logo_bot_width,
++ xbm2pic((byte *) xvpic_logo_bot_bits, xvpic_logo_bot_width,
+ xvpic_logo_bot_height, dfltpic, DWIDE, DHIGH, DWIDE/2 + 10, 80, 101);
+
+
+
+- xbm2pic((byte *) xv_jhb_bits, xv_jhb_width, xv_jhb_height,
++ xbm2pic((byte *) xv_jhb_bits, xv_jhb_width, xv_jhb_height,
+ dfltpic, DWIDE, DHIGH, DWIDE/2, 160, 102);
+
+- xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
++ xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
+ dfltpic, DWIDE, DHIGH, DWIDE/2, 203, 102);
+
+ i = xv_ver_width + xv_rev_width + 30;
+
+- xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
++ xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
+ dfltpic, DWIDE, DHIGH, DWIDE/2 - (i/2) + xv_ver_width/2, 220, 102);
+
+- xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
++ xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
+ dfltpic, DWIDE, DHIGH, DWIDE/2 + (i/2) - xv_rev_width/2, 220, 102);
+
+ strcpy(str,"Press <right> mouse button for menu.");
+@@ -240,7 +244,11 @@
+ pinfo->w = DWIDE;
+ pinfo->h = DHIGH;
+ pinfo->type = PIC8;
++#ifdef HAVE_PNG
++ pinfo->frmType = F_PNG;
++#else
+ pinfo->frmType = F_GIF;
++#endif
+ pinfo->colType = F_FULLCOLOR;
+
+ sprintf(pinfo->fullInfo, "<8-bit internal>");
+@@ -272,7 +280,7 @@
+ x = cx - bwide/2;
+
+ k = *bptr;
+- for (j=0,bit=0; j<bwide; j++, bit = (++bit)&7, x++) {
++ for (j=0,bit=0; j<bwide; j++, bit = (bit+1)&7, x++) {
+ if (!bit) k = *bptr++;
+ if ( (k&1) && (x>=0) && (x<pwide))
+ pptr[x] = col;
+@@ -281,7 +289,7 @@
+ }
+ }
+ }
+-}
++}
+
+
+ /*******************************************/
+@@ -300,7 +308,7 @@
+ byte *dfltpic;
+ PICINFO *pinfo;
+ {
+- int i,j,k, dr, dg, db;
++ int i,j, dr, dg, db;
+ byte *pp;
+
+ pp = dfltpic;
+@@ -357,7 +365,7 @@
+
+ for ( ; *str; str++, cx+=6) {
+ i = (byte) *str;
+- if (i >= 32 && i < 128)
++ if (i >= 32 && i < 128)
+ xbm2pic(font5x9[i - 32], 5, 9, pic, pw, ph, cx, cy, col);
+ }
+ }
+diff -ru xv-3.10a/xvdflt.h xv-3.10a-enhancements/xvdflt.h
+--- xv-3.10a/xvdflt.h 1994-12-22 14:34:56.000000000 -0800
++++ xv-3.10a-enhancements/xvdflt.h 2007-04-15 20:45:08.000000000 -0700
+@@ -2,7 +2,7 @@
+ #define XVDFLT_HIGH 270
+ #define XVDFLT_NPARTS 5
+ #define XVDFLT_PARTLEN 100
+-char *xvdflt_pic[1350] = {
++const char *xvdflt_pic[1350] = {
+ /* 0a */ "00000000000000000000000000000000000000000000000101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000002020202020202020303030303030303030404040404040505050505060708",
+ /* 0b */ "0809090a0b0c0d0e0e0f101111121213131313141414141515151515151515151616161616161616161616161616161616161616161616161616161616171717171717171717171717171717161616161616161616161616161616161616161616161617",
+ /* 0c */ "171717181818181818181818181818181818181919181818181818191919191919191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1b1b1b1b1b1b1b1b1b1c1c1c1c1c1c1c1c1d1d1d1d1d1d1d1d1d1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b1b1b1b1b1b1b1b1b1a1a",
+@@ -1356,9 +1356,9 @@
+ };
+
+
+-byte xvdflt_r[256] = { 83,83,84,84,84,85,92,94,100,109,119,124,133,137,145,157,163,168,175,183,191,202,203,255,254,253,252,251,250,249,145,114,83,106,129,249,250,251,250,243,216,226,241,222,222,132,61,82,244,249,243,248,173,59,247,102,252,241,244,244,57,241,216,239,6,17,157,244,139,236,250,246,84,213,121,240,70,30,99,91,38,73,105,123,82,40,30,38,114,81,44,35,37,35,30,33,1,0,5,1,1,4,3,0,0,11,0,0,6,15,7,3,8,0,0,4,8,11,15,0,10,11,14,11,0,14,0,28,6,1,22,17,8,1,8,7,7,13,0,9,10,6,7,10,11,11,18,7,2,8,7,9,5,10,8,16,6,6,5,8,8,6,10,8,4,30,22,5,33,33,11,6,10,15,19,13,28,21,35,28,10,25,26,27,29,3,27,14,21,30,31,27,31,35,6,33,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
++const byte xvdflt_r[256] = { 83,83,84,84,84,85,92,94,100,109,119,124,133,137,145,157,163,168,175,183,191,202,203,255,254,253,252,251,250,249,145,114,83,106,129,249,250,251,250,243,216,226,241,222,222,132,61,82,244,249,243,248,173,59,247,102,252,241,244,244,57,241,216,239,6,17,157,244,139,236,250,246,84,213,121,240,70,30,99,91,38,73,105,123,82,40,30,38,114,81,44,35,37,35,30,33,1,0,5,1,1,4,3,0,0,11,0,0,6,15,7,3,8,0,0,4,8,11,15,0,10,11,14,11,0,14,0,28,6,1,22,17,8,1,8,7,7,13,0,9,10,6,7,10,11,11,18,7,2,8,7,9,5,10,8,16,6,6,5,8,8,6,10,8,4,30,22,5,33,33,11,6,10,15,19,13,28,21,35,28,10,25,26,27,29,3,27,14,21,30,31,27,31,35,6,33,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
+
+-byte xvdflt_g[256] = { 83,83,84,84,84,85,92,94,100,109,119,124,133,137,145,157,162,168,174,184,191,196,205,255,254,253,252,251,250,249,146,114,83,106,130,211,185,176,173,230,211,157,161,170,144,31,52,82,168,168,162,248,116,42,247,68,171,164,245,244,35,159,133,161,18,26,151,163,138,65,67,51,68,49,111,159,88,30,100,87,38,74,92,124,82,38,22,38,114,81,22,35,37,35,30,33,1,0,4,0,1,4,2,0,0,11,0,0,6,15,7,3,8,0,0,4,9,10,14,0,10,10,13,11,0,7,0,18,6,0,22,18,8,1,8,7,7,13,0,9,9,6,7,10,11,11,18,7,2,9,7,9,5,10,8,16,6,6,5,8,8,7,9,8,4,30,22,5,33,32,11,6,10,15,19,13,28,21,35,25,9,22,26,27,29,3,27,14,21,30,31,11,31,35,6,18,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
++const byte xvdflt_g[256] = { 83,83,84,84,84,85,92,94,100,109,119,124,133,137,145,157,162,168,174,184,191,196,205,255,254,253,252,251,250,249,146,114,83,106,130,211,185,176,173,230,211,157,161,170,144,31,52,82,168,168,162,248,116,42,247,68,171,164,245,244,35,159,133,161,18,26,151,163,138,65,67,51,68,49,111,159,88,30,100,87,38,74,92,124,82,38,22,38,114,81,22,35,37,35,30,33,1,0,4,0,1,4,2,0,0,11,0,0,6,15,7,3,8,0,0,4,9,10,14,0,10,10,13,11,0,7,0,18,6,0,22,18,8,1,8,7,7,13,0,9,9,6,7,10,11,11,18,7,2,9,7,9,5,10,8,16,6,6,5,8,8,7,9,8,4,30,22,5,33,32,11,6,10,15,19,13,28,21,35,25,9,22,26,27,29,3,27,14,21,30,31,11,31,35,6,18,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
+
+-byte xvdflt_b[256] = { 251,250,252,253,254,255,254,255,254,253,254,254,252,255,255,253,251,253,253,253,254,249,252,255,254,253,252,251,250,249,252,255,249,253,250,162,99,79,81,225,239,113,92,147,72,43,37,248,84,88,91,248,83,34,247,80,84,86,245,244,30,90,74,92,10,55,239,85,250,90,88,72,125,68,206,92,190,87,245,230,133,216,199,248,247,105,73,108,252,244,62,97,119,143,150,134,57,49,64,64,72,78,72,40,75,98,66,59,110,110,80,89,95,86,34,87,80,88,77,48,100,80,98,89,33,60,29,75,91,73,111,87,120,89,103,103,126,111,23,121,108,147,111,142,105,111,111,140,107,107,118,113,112,110,114,123,140,120,141,132,124,130,98,127,151,102,124,132,108,119,123,159,124,135,123,124,114,135,126,100,122,126,132,140,126,164,119,149,149,137,113,75,127,114,131,78,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
++const byte xvdflt_b[256] = { 251,250,252,253,254,255,254,255,254,253,254,254,252,255,255,253,251,253,253,253,254,249,252,255,254,253,252,251,250,249,252,255,249,253,250,162,99,79,81,225,239,113,92,147,72,43,37,248,84,88,91,248,83,34,247,80,84,86,245,244,30,90,74,92,10,55,239,85,250,90,88,72,125,68,206,92,190,87,245,230,133,216,199,248,247,105,73,108,252,244,62,97,119,143,150,134,57,49,64,64,72,78,72,40,75,98,66,59,110,110,80,89,95,86,34,87,80,88,77,48,100,80,98,89,33,60,29,75,91,73,111,87,120,89,103,103,126,111,23,121,108,147,111,142,105,111,111,140,107,107,118,113,112,110,114,123,140,120,141,132,124,130,98,127,151,102,124,132,108,119,123,159,124,135,123,124,114,135,126,100,122,126,132,140,126,164,119,149,149,137,113,75,127,114,131,78,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
+
+diff -ru xv-3.10a/xvdial.c xv-3.10a-enhancements/xvdial.c
+--- xv-3.10a/xvdial.c 1995-01-03 13:20:31.000000000 -0800
++++ xv-3.10a-enhancements/xvdial.c 2007-04-15 17:55:50.000000000 -0700
+@@ -1,11 +1,11 @@
+-/*
++/*
+ * xvdial.c - DIAL handling functions
+ *
+ * callable functions:
+ *
+ * DCreate() - creates a dial
+ * DSetRange() - sets min/max/current values of control
+- * DSetVal() - sets value of control
++ * DSetVal() - sets value of control
+ * DSetActive() - turns dial '.active' on and off
+ * DRedraw() - redraws the dial
+ * DTrack() - called when clicked. Operates control 'til mouseup
+@@ -41,51 +41,53 @@
+
+
+ /* local functions */
+-static int whereInDial PARM((DIAL *, int, int));
+-static void drawArrow PARM((DIAL *));
+-static void drawValStr PARM((DIAL *));
+-static void drawButt PARM((DIAL *, int, int));
+-static int computeDialVal PARM((DIAL *, int, int));
+-static void dimDial PARM((DIAL *));
++static int whereInDial PARM((DIAL *, int, int));
++static void drawArrow PARM((DIAL *));
++static void drawValStr PARM((DIAL *));
++static void drawButt PARM((DIAL *, int, int));
++static double computeDialVal PARM((DIAL *, int, int));
++static void dimDial PARM((DIAL *));
+
+
+ /***************************************************/
+-void DCreate(dp, parent, x, y, w, h, minv, maxv, curv, page,
++void DCreate(dp, parent, x, y, w, h, minv, maxv, curv, inc, page,
+ fg, bg, hi, lo, title, units)
+-DIAL *dp;
+-Window parent;
+-int x,y,w,h,minv,maxv,curv,page;
+-unsigned long fg,bg,hi,lo;
+-char *title, *units;
++DIAL *dp;
++Window parent;
++int x, y, w, h;
++double minv, maxv, curv, inc, page;
++unsigned long fg, bg, hi, lo;
++const char *title, *units;
+ {
+
+ if (!pixmaps_built) {
+- cw1Pix = XCreatePixmapFromBitmapData(theDisp, parent,
++ cw1Pix = XCreatePixmapFromBitmapData(theDisp, parent,
+ (char *) dial_cw1_bits, PW, PH, fg, bg, dispDEEP);
+- ccw1Pix = XCreatePixmapFromBitmapData(theDisp, parent,
++ ccw1Pix = XCreatePixmapFromBitmapData(theDisp, parent,
+ (char *) dial_ccw1_bits, PW, PH, fg, bg, dispDEEP);
+- cw2Pix = XCreatePixmapFromBitmapData(theDisp, parent,
++ cw2Pix = XCreatePixmapFromBitmapData(theDisp, parent,
+ (char *) dial_cw2_bits, PW, PH, fg, bg, dispDEEP);
+- ccw2Pix = XCreatePixmapFromBitmapData(theDisp, parent,
++ ccw2Pix = XCreatePixmapFromBitmapData(theDisp, parent,
+ (char *) dial_ccw2_bits, PW, PH, fg, bg, dispDEEP);
+ }
+
+- dp->x = x;
+- dp->y = y;
+-
+- dp->w = w;
+- dp->h = h;
+- dp->fg = fg;
+- dp->bg = bg;
+- dp->hi = hi;
+- dp->lo = lo;
+- dp->title = title;
+- dp->units = units;
+- dp->active = 1;
++ dp->x = x;
++ dp->y = y;
++ dp->w = w;
++ dp->h = h;
++ dp->fg = fg;
++ dp->bg = bg;
++ dp->hi = hi;
++ dp->lo = lo;
++ dp->title = title;
++ dp->units = units;
++ dp->active = 1;
+ dp->drawobj = NULL;
+
+- if (w < h-24-16) dp->rad = (w - 8) / 2;
+- else dp->rad = (h - 24 - 16 - 8) / 2;
++ if (w < h-24-16)
++ dp->rad = (w - 8) / 2;
++ else
++ dp->rad = (h - 24 - 16 - 8) / 2;
+ dp->cx = w / 2;
+ dp->cy = dp->rad + 4 + 16;
+
+@@ -94,22 +96,22 @@
+ dp->bx[INCW1] = w-14-4; dp->by[INCW1] = h - 4 - 20;
+ dp->bx[INCW2] = w-14-4; dp->by[INCW2] = h - 4 - 10;
+
+- dp->win = XCreateSimpleWindow(theDisp, parent,x,y,(u_int) w,(u_int) h,
+- 1,fg,bg);
++ dp->win = XCreateSimpleWindow(theDisp, parent, x, y, (u_int) w, (u_int) h,
++ 1, fg, bg);
+ if (!dp->win) FatalError("can't create dial window");
+
+- DSetRange(dp, minv, maxv, curv, page);
++ DSetRange(dp, minv, maxv, curv, inc, page);
+ XSelectInput(theDisp, dp->win, ExposureMask | ButtonPressMask);
+ }
+
+
+ /***************************************************/
+-void DSetRange(dp, minv, maxv, curv, page)
+-DIAL *dp;
+-int minv, maxv, curv, page;
++void DSetRange(dp, minv, maxv, curv, inc, page)
++DIAL *dp;
++double minv, maxv, curv, inc, page;
+ {
+ if (maxv<minv) maxv=minv;
+- dp->min = minv; dp->max = maxv; dp->page = page;
++ dp->min = minv; dp->max = maxv; dp->inc = inc; dp->page = page;
+ dp->active = (minv < maxv);
+
+ DSetVal(dp, curv);
+@@ -118,22 +120,22 @@
+
+ /***************************************************/
+ void DSetVal(dp, curv)
+-DIAL *dp;
+-int curv;
++DIAL *dp;
++double curv;
+ {
+ RANGE(curv, dp->min, dp->max); /* make sure curv is in-range */
+
+ if (curv == dp->val) return;
+
+ /* erase old arrow */
+- XSetForeground(theDisp, theGC, dp->bg);
++ XSetForeground(theDisp, theGC, dp->bg);
+ drawArrow(dp);
+
+- dp->val = curv;
++ dp->val = (double)((int)(curv / dp->inc + (curv > 0 ? 0.5 : -0.5))) * dp->inc;
+
+ /* draw new arrow and string */
+ XSetForeground(theDisp, theGC, dp->fg);
+- XSetBackground(theDisp, theGC, dp->bg);
++ XSetBackground(theDisp, theGC, dp->bg);
+ drawArrow(dp);
+ drawValStr(dp);
+ if (!dp->active) dimDial(dp);
+@@ -202,7 +204,8 @@
+ int mx,my;
+ {
+ Window rW,cW;
+- int rx,ry, x,y, ipos, pos, lit, i, origval;
++ int rx, ry, x, y, ipos, pos, lit;
++ double origval;
+ unsigned int mask;
+
+ lit = 0;
+@@ -224,35 +227,36 @@
+ if (ipos != INDIAL) {
+ drawButt(dp, ipos, 1);
+ switch (ipos) {
+- case INCW1: if (dp->val < dp->max) DSetVal(dp, dp->val+1); break;
++ case INCW1: if (dp->val < dp->max) DSetVal(dp, dp->val+dp->inc); break;
+ case INCW2: if (dp->val < dp->max) DSetVal(dp, dp->val+dp->page); break;
+- case INCCW1: if (dp->val > dp->min) DSetVal(dp, dp->val-1); break;
++ case INCCW1: if (dp->val > dp->min) DSetVal(dp, dp->val-dp->inc); break;
+ case INCCW2: if (dp->val > dp->min) DSetVal(dp, dp->val-dp->page); break;
+ }
+- if (dp->drawobj != NULL) (dp->drawobj)();
++ if (dp->drawobj != NULL) (dp->drawobj)();
+ Timer(INC1WAIT);
+ lit = 1;
+ }
+
+- else {
+- i = computeDialVal(dp, mx, my);
+- DSetVal(dp, i);
+- if (dp->drawobj != NULL) (dp->drawobj)();
++ else {
++ double v;
++ v = computeDialVal(dp, mx, my);
++ DSetVal(dp, v);
++ if (dp->drawobj != NULL) (dp->drawobj)();
+ }
+
+-
++
+ /* loop until mouse is released */
+ while (XQueryPointer(theDisp,dp->win,&rW,&cW,&rx,&ry,&x,&y,&mask)) {
+ if (!(mask & Button1Mask)) break; /* button released */
+
+ if (ipos == INDIAL) {
+- int j;
+- i = computeDialVal(dp, x, y);
+- j = dp->val;
+- DSetVal(dp, i);
+- if (j != dp->val) {
++ double v, w;
++ v = computeDialVal(dp, x, y);
++ w = dp->val;
++ DSetVal(dp, v);
++ if (w != dp->val) {
+ /* track whatever dial controls */
+- if (dp->drawobj != NULL) (dp->drawobj)();
++ if (dp->drawobj != NULL) (dp->drawobj)();
+ }
+ }
+
+@@ -266,18 +270,18 @@
+
+ if (lit) {
+ switch (ipos) {
+- case INCW1: if (dp->val < dp->max) DSetVal(dp, dp->val+1);
++ case INCW1: if (dp->val < dp->max) DSetVal(dp, dp->val+dp->inc);
+ break;
+ case INCW2: if (dp->val < dp->max) DSetVal(dp, dp->val+dp->page);
+ break;
+- case INCCW1: if (dp->val > dp->min) DSetVal(dp, dp->val-1);
++ case INCCW1: if (dp->val > dp->min) DSetVal(dp, dp->val-dp->inc);
+ break;
+ case INCCW2: if (dp->val > dp->min) DSetVal(dp, dp->val-dp->page);
+ break;
+ }
+
+ /* track whatever dial controls */
+- if (dp->drawobj != NULL) (dp->drawobj)();
++ if (dp->drawobj != NULL) (dp->drawobj)();
+
+ Timer(INC2WAIT);
+ }
+@@ -305,34 +309,35 @@
+
+ /* returns region * that x,y is in. returns -1 if none */
+
+- for (i=0; i<4; i++)
++ for (i=0; i<4; i++)
+ if (PTINRECT(x,y, dp->bx[i], dp->by[i], 14, 10)) return i;
+
+- if (PTINRECT(x,y, dp->cx - dp->rad, dp->cy - dp->rad,
++ if (PTINRECT(x,y, dp->cx - dp->rad, dp->cy - dp->rad,
+ 2*dp->rad, 2*dp->rad))
+ return INDIAL;
+
+ return -1;
+ }
+
+-
++
+ /***************************************************/
+ static void drawArrow(dp)
+ DIAL *dp;
+ {
+- int i, rad, cx, cy;
++ int rad, cx, cy;
++ double v;
+ XPoint arrow[4];
+
+ rad = dp->rad; cx = dp->cx; cy = dp->cy;
+
+ /* map pos (range minv..maxv) into degrees (range 240..-60) */
+- i = 240 + (-300 * (dp->val - dp->min)) / (dp->max - dp->min);
+- arrow[0].x = cx + (int) ((double) rad * .80 * cos(i * DEG2RAD));
+- arrow[0].y = cy - (int) ((double) rad * .80 * sin(i * DEG2RAD));
+- arrow[1].x = cx + (int) ((double) rad * .33 * cos((i+160) * DEG2RAD));
+- arrow[1].y = cy - (int) ((double) rad * .33 * sin((i+160) * DEG2RAD));
+- arrow[2].x = cx + (int) ((double) rad * .33 * cos((i-160) * DEG2RAD));
+- arrow[2].y = cy - (int) ((double) rad * .33 * sin((i-160) * DEG2RAD));
++ v = 240 + (-300 * (dp->val - dp->min)) / (dp->max - dp->min);
++ arrow[0].x = cx + (int) ((double) rad * .80 * cos(v * DEG2RAD));
++ arrow[0].y = cy - (int) ((double) rad * .80 * sin(v * DEG2RAD));
++ arrow[1].x = cx + (int) ((double) rad * .33 * cos((v+160) * DEG2RAD));
++ arrow[1].y = cy - (int) ((double) rad * .33 * sin((v+160) * DEG2RAD));
++ arrow[2].x = cx + (int) ((double) rad * .33 * cos((v-160) * DEG2RAD));
++ arrow[2].y = cy - (int) ((double) rad * .33 * sin((v-160) * DEG2RAD));
+ arrow[3].x = arrow[0].x;
+ arrow[3].y = arrow[0].y;
+ XDrawLines(theDisp, dp->win, theGC, arrow, 4, CoordModeOrigin);
+@@ -343,33 +348,47 @@
+ static void drawValStr(dp)
+ DIAL *dp;
+ {
+- int i, x1, x2;
++ int tot, i, x1, x2;
+ char foo[60], foo1[60];
+
+ /* compute longest string necessary so we can right-align this thing */
+- sprintf(foo,"%d",dp->min); x1 = strlen(foo);
+- sprintf(foo,"%d",dp->max); x2 = strlen(foo);
++ sprintf(foo,"%d",(int)dp->min); x1 = strlen(foo);
++ sprintf(foo,"%d",(int)dp->max); x2 = strlen(foo);
+ if (dp->min < 0 && dp->max > 0) x2++; /* put '+' at beginning */
+ i = x1; if (x2>x1) i = x2;
+ if (dp->units) i += strlen(dp->units);
+
+- if (dp->min < 0 && dp->max > 0) sprintf(foo,"%+d", dp->val);
+- else sprintf(foo,"%d", dp->val);
++ sprintf(foo,"%g",dp->inc); /* space for decimal values */
++ tot = i + strlen(foo) - 1; /* Take away the 0 from the beginning */
++
++ if (dp->min < 0.0 && dp->max > 0.0) sprintf(foo,"%+g", dp->val);
++ else sprintf(foo,"%g", dp->val);
++
++ if (dp->inc < 1.0)
++ {
++ int j;
++
++ if (dp->val == (double)((int)dp->val))
++ strcat(foo,".");
++
++ for (j = strlen(foo); j < tot; j++)
++ strcat(foo,"0");
++ }
+
+ if (dp->units) strcat(foo,dp->units);
+ foo1[0] = '\0';
+ if (strlen(foo) < (size_t) i) {
+- for (i = i - strlen(foo); i>0; i--) strcat(foo1," ");
++ for (i-=strlen(foo);i>0;i--) strcat(foo1," ");
+ }
+ strcat(foo1, foo);
+
+ XSetForeground(theDisp, theGC, dp->fg);
+ XSetBackground(theDisp, theGC, dp->bg);
+ XSetFont(theDisp, theGC, monofont);
+- XDrawImageString(theDisp, dp->win, theGC,
++ XDrawImageString(theDisp, dp->win, theGC,
+ dp->w/2 - XTextWidth(monofinfo, foo1, (int) strlen(foo1))/2,
+ dp->h-14 - (monofinfo->ascent + monofinfo->descent)/2
+- + monofinfo->ascent,
++ + monofinfo->ascent,
+ foo1, (int) strlen(foo1));
+ XSetFont(theDisp, theGC, mfont);
+ }
+@@ -411,12 +430,13 @@
+
+
+ /***************************************************/
+-static int computeDialVal(dp, x, y)
++static double computeDialVal(dp, x, y)
+ DIAL *dp;
+ int x, y;
+ {
+- int dx, dy, val;
+- double angle;
++ int dx, dy;
++
++ double angle, val;
+
+ /* compute dx, dy (distance from cx, cy). Note: +dy is *up* */
+ dx = x - dp->cx; dy = dp->cy - y;
+@@ -431,13 +451,15 @@
+ }
+ else if (dx>0) angle = atan((double) dy / (double) dx) * RAD2DEG;
+ else angle = atan((double) -dy / (double) -dx) * RAD2DEG + 180.0;
+-
++
+ /* map angle into range: -90..270, then into to value */
+ if (angle > 270.0) angle -= 360.0;
+ if (angle < -90.0) angle += 360.0;
+
+- val = (int) ((dp->max - dp->min) * (240.0 - angle) / 300.0) + dp->min;
++ val = ((dp->max - dp->min) * (240.0 - angle) / 300.0) + dp->min;
+
++ /* round value to be an even multiple of dp->inc */
++ val = (double)((int)(val / dp->inc + 0.5)) * dp->inc;
+ return val;
+ }
+
+diff -ru xv-3.10a/xvdir.c xv-3.10a-enhancements/xvdir.c
+--- xv-3.10a/xvdir.c 1995-01-03 13:21:39.000000000 -0800
++++ xv-3.10a-enhancements/xvdir.c 2007-05-13 18:47:51.000000000 -0700
+@@ -1,4 +1,4 @@
+-/*
++/*
+ * xvdir.c - Directory changin', file i/o dialog box
+ *
+ * callable functions:
+@@ -50,32 +50,63 @@
+ #define COLWIDE 150 /* width of colMB */
+
+ /* NOTE: make sure these match up with F_* definitions in xv.h */
+-static char *saveColors[] = { "Full Color",
+- "Greyscale",
+- "B/W Dithered",
+- "Reduced Color" };
+-
+-static char *saveFormats[] = { "GIF",
++static const char *saveColors[] = { "Full Color",
++ "Greyscale",
++ "B/W Dithered",
++ "Reduced Color" };
++
++static const char *saveFormats[] = {
++#ifdef HAVE_PNG
++ "PNG",
++#endif
+ #ifdef HAVE_JPEG
+- "JPEG",
++ "JPEG",
+ #endif
++#ifdef HAVE_JP2K
++ "JPEG 2000",
++ "JP2",
++#endif
++ "GIF",
+ #ifdef HAVE_TIFF
+- "TIFF",
++ "TIFF",
++#endif
++ "PostScript",
++ "PBM/PGM/PPM (raw)",
++ "PBM/PGM/PPM (ascii)",
++ "X11 Bitmap",
++ "XPM",
++ "BMP",
++ "Sun Rasterfile",
++ "IRIS RGB",
++ "Targa (24-bit)",
++ "FITS",
++ "PM",
++ "Spectrum SCREEN$", /* [JCE] */
++ "WBMP",
++#ifdef HAVE_MAG
++ "MAG",
++#endif
++#ifdef HAVE_PIC
++ "PIC",
++#endif
++#ifdef HAVE_MAKI
++ "MAKI (640x400 only)",
++#endif
++#ifdef HAVE_PI
++ "PI",
++#endif
++#ifdef HAVE_PIC2
++ "PIC2",
++#endif
++#ifdef HAVE_MGCSFX
++ "MgcSfx",
+ #endif
+- "PostScript",
+- "PBM/PGM/PPM (raw)",
+- "PBM/PGM/PPM (ascii)",
+- "X11 Bitmap",
+- "XPM",
+- "BMP",
+- "Sun Rasterfile",
+- "IRIS RGB",
+- "Targa (24-bit)",
+- "FITS",
+- "PM",
+- MBSEP,
+- "Filename List"};
++ MBSEP,
++ "Filename List" };
+
++#ifdef HAVE_PIC2
++extern int PIC2SaveParams PARM((char *, int));
++#endif
+
+ static void arrangeButts PARM((int));
+ static void RedrawDList PARM((int, SCRL *));
+@@ -83,34 +114,37 @@
+ static int dnamcmp PARM((const void *, const void *));
+ static int FNameCdable PARM((void));
+ static void loadCWD PARM((void));
++#ifdef FOO
+ static int cd_able PARM((char *));
++#endif
+ static void scrollToFileName PARM((void));
+-static void setFName PARM((char *));
++static void setFName PARM((const char *));
+ static void showFName PARM((void));
+ static void changeSuffix PARM((void));
+ static int autoComplete PARM((void));
+
+-static byte *handleBWandReduced PARM((byte *, int,int,int, int, int *,
++static byte *handleBWandReduced PARM((byte *, int,int,int, int, int *,
+ byte **, byte **, byte **));
+ static byte *handleNormSel PARM((int *, int *, int *, int *));
+
+
+-static char *fnames[MAXNAMES];
+-static int numfnames = 0, ndirs = 0;
+-static char path[MAXPATHLEN+1]; /* '/' terminated */
+-static char loadpath[MAXPATHLEN+1]; /* '/' terminated */
+-static char savepath[MAXPATHLEN+1]; /* '/' terminated */
+-static char *dirs[MAXDEEP]; /* list of directory names */
+-static char *dirMBlist[MAXDEEP]; /* list of dir names in right order */
+-static char *lastdir; /* name of the directory we're in */
+-static char filename[MAXFNLEN+100]; /* filename being entered */
+-static char deffname[MAXFNLEN+100]; /* default filename */
+-
+-static int savemode; /* if 0 'load box', if 1 'save box' */
+-static int curPos, stPos, enPos; /* filename textedit stuff */
+-static MBUTT dirMB; /* popup path menu */
+-static MBUTT fmtMB; /* 'format' menu button (Save only) */
+-static MBUTT colMB; /* 'colors' menu button (Save only) */
++static char *fnames[MAXNAMES];
++static int numfnames = 0, ndirs = 0;
++static char path[MAXPATHLEN+1]; /* '/' terminated */
++static char loadpath[MAXPATHLEN+1]; /* '/' terminated */
++static char savepath[MAXPATHLEN+1]; /* '/' terminated */
++static char *dirs[MAXDEEP]; /* list of directory names */
++static const char *dirMBlist[MAXDEEP]; /* list of dir names in right order */
++static char *lastdir; /* name of the directory we're in */
++static char filename[MAXFNLEN+100]; /* filename being entered */
++static char deffname[MAXFNLEN+100]; /* default filename */
++
++static int savemode; /* if 0 'load box', if 1 'save box' */
++static int curPos; /* insertion point in textedit filename */
++static int stPos, enPos; /* start and end of visible textedit filename */
++static MBUTT dirMB; /* popup path menu */
++static MBUTT fmtMB; /* 'format' menu button (Save only) */
++static MBUTT colMB; /* 'colors' menu button (Save only) */
+
+ static Pixmap d_loadPix, d_savePix;
+
+@@ -119,7 +153,7 @@
+ static char oldfname[MAXFNLEN+100];
+
+ /* the name of the file actually opened. (the temp file if we are piping) */
+-static char outFName[256];
++static char outFName[256];
+ static int dopipe;
+
+
+@@ -127,48 +161,46 @@
+ void CreateDirW(geom)
+ char *geom;
+ {
+- int w, y;
+-
+ path[0] = '\0';
+
+ xv_getwd(loadpath, sizeof(loadpath));
+ xv_getwd(savepath, sizeof(savepath));
+
+-
++
+ dirW = CreateWindow("","XVdir", geom, DIRWIDE, DIRHIGH, infofg, infobg, 0);
+ if (!dirW) FatalError("couldn't create 'directory' window!");
+
+- LSCreate(&dList, dirW, 10, 5 + 3*(6+LINEHIGH) + 6, LISTWIDE,
+- LINEHIGH*NLINES, NLINES, fnames, numfnames, infofg, infobg,
++ LSCreate(&dList, dirW, 10, 5 + 3*(6+LINEHIGH) + 6, LISTWIDE,
++ LINEHIGH*NLINES, NLINES, fnames, numfnames, infofg, infobg,
+ hicol, locol, RedrawDList, 1, 0);
+
+- dnamW = XCreateSimpleWindow(theDisp, dirW, 80, dList.y + (int) dList.h + 30,
+- (u_int) DNAMWIDE+6, (u_int) LINEHIGH+5,
++ dnamW = XCreateSimpleWindow(theDisp, dirW, 80, dList.y + (int) dList.h + 30,
++ (u_int) DNAMWIDE+6, (u_int) LINEHIGH+5,
+ 1, infofg, infobg);
+ if (!dnamW) FatalError("can't create name window");
+ XSelectInput(theDisp, dnamW, ExposureMask);
+
+
+- CBCreate(&browseCB, dirW, DIRWIDE/2, dList.y + (int) dList.h + 6,
++ CBCreate(&browseCB, dirW, DIRWIDE/2, dList.y + (int) dList.h + 6,
+ "Browse", infofg, infobg, hicol,locol);
+
+- CBCreate(&savenormCB, dirW, 220, dList.y + (int) dList.h + 6,
++ CBCreate(&savenormCB, dirW, 220, dList.y + (int) dList.h + 6,
+ "Normal Size", infofg, infobg,hicol,locol);
+
+- CBCreate(&saveselCB, dirW, 80, dList.y + (int) dList.h + 6,
++ CBCreate(&saveselCB, dirW, 80, dList.y + (int) dList.h + 6,
+ "Selected Area", infofg, infobg,hicol,locol);
+
+
+ /* y-coordinates get filled in when window is opened */
+- BTCreate(&dbut[S_BOK], dirW, 259, 0, 80, BUTTH,
++ BTCreate(&dbut[S_BOK], dirW, 259, 0, 80, BUTTH,
+ "Ok", infofg, infobg,hicol,locol);
+- BTCreate(&dbut[S_BCANC], dirW, 259, 0, 80, BUTTH,
++ BTCreate(&dbut[S_BCANC], dirW, 259, 0, 80, BUTTH,
+ "Cancel", infofg,infobg,hicol,locol);
+- BTCreate(&dbut[S_BRESCAN], dirW, 259, 0, 80, BUTTH,
++ BTCreate(&dbut[S_BRESCAN], dirW, 259, 0, 80, BUTTH,
+ "Rescan", infofg,infobg,hicol,locol);
+- BTCreate(&dbut[S_BOLDSET], dirW, 259, 0, 80, BUTTH,
++ BTCreate(&dbut[S_BOLDSET], dirW, 259, 0, 80, BUTTH,
+ "Prev Set", infofg,infobg,hicol,locol);
+- BTCreate(&dbut[S_BOLDNAM], dirW, 259, 0, 80, BUTTH,
++ BTCreate(&dbut[S_BOLDNAM], dirW, 259, 0, 80, BUTTH,
+ "Prev Name", infofg,infobg,hicol,locol);
+
+ SetDirFName("");
+@@ -180,33 +212,33 @@
+ * create MBUTTs *after* calling XMapSubWindows() to keep popup unmapped
+ */
+
+- MBCreate(&dirMB, dirW, 50, dList.y -(LINEHIGH+6),
++ MBCreate(&dirMB, dirW, 50, dList.y -(LINEHIGH+6),
+ (u_int) DDWIDE, (u_int) LINEHIGH, NULL, NULL, 0,
+ infofg,infobg,hicol,locol);
+
+- MBCreate(&fmtMB, dirW, DIRWIDE-FMTWIDE-10, 5,
+- (u_int) FMTWIDE, (u_int) LINEHIGH, NULL, saveFormats, F_MAXFMTS,
++ MBCreate(&fmtMB, dirW, DIRWIDE-FMTWIDE-10, 5,
++ (u_int) FMTWIDE, (u_int) LINEHIGH, NULL, saveFormats, F_MAXFMTS,
+ infofg,infobg,hicol,locol);
+ fmtMB.hascheck = 1;
+ MBSelect(&fmtMB, 0);
+
+- MBCreate(&colMB, dirW, DIRWIDE-COLWIDE-10, 5+LINEHIGH+6,
+- (u_int) COLWIDE, (u_int) LINEHIGH, NULL, saveColors, F_MAXCOLORS,
++ MBCreate(&colMB, dirW, DIRWIDE-COLWIDE-10, 5+LINEHIGH+6,
++ (u_int) COLWIDE, (u_int) LINEHIGH, NULL, saveColors, F_MAXCOLORS,
+ infofg,infobg,hicol,locol);
+ colMB.hascheck = 1;
+ MBSelect(&colMB, 0);
+
+
+- d_loadPix = XCreatePixmapFromBitmapData(theDisp, dirW,
+- (char *) d_load_bits, d_load_width, d_load_height,
++ d_loadPix = XCreatePixmapFromBitmapData(theDisp, dirW,
++ (char *) d_load_bits, d_load_width, d_load_height,
+ infofg, infobg, dispDEEP);
+
+- d_savePix = XCreatePixmapFromBitmapData(theDisp, dirW,
+- (char *) d_save_bits, d_save_width, d_save_height,
++ d_savePix = XCreatePixmapFromBitmapData(theDisp, dirW,
++ (char *) d_save_bits, d_save_width, d_save_height,
+ infofg, infobg, dispDEEP);
+
+ }
+-
++
+
+ /***************************************************/
+ void DirBox(mode)
+@@ -261,7 +293,7 @@
+
+ BTSetActive(&dbut[S_BOLDSET], haveoldinfo);
+ BTSetActive(&dbut[S_BOLDNAM], haveoldinfo);
+-
++
+ CBSetActive(&saveselCB, HaveSelection());
+
+ MBSetActive(&fmtMB, 1);
+@@ -303,15 +335,15 @@
+ if (gap>16) {
+ gap = 16;
+ top = dList.y + (dList.h - (nbts*BUTTH) - (ngaps*gap))/2;
+-
++
+ for (i=0; i<nbts; i++) dbut[i].y = top + i*(BUTTH+gap);
+ }
+ else {
+- for (i=0; i<nbts; i++)
++ for (i=0; i<nbts; i++)
+ dbut[i].y = dList.y + ((dList.h-BUTTH)*i) / ngaps;
+ }
+ }
+-
++
+
+
+ /***************************************************/
+@@ -319,24 +351,24 @@
+ int x,y,w,h;
+ {
+ int i, ypos, txtw;
+- char foo[30], *str;
+- XRectangle xr;
++ char foo[30];
++ const char *str;
+
+ if (dList.nstr==1) strcpy(foo,"1 file");
+ else sprintf(foo,"%d files",dList.nstr);
+
+ ypos = dList.y + dList.h + 8 + ASCENT;
+ XSetForeground(theDisp, theGC, infobg);
+- XFillRectangle(theDisp, dirW, theGC, 10, ypos-ASCENT,
++ XFillRectangle(theDisp, dirW, theGC, 10, ypos-ASCENT,
+ (u_int) DIRWIDE, (u_int) CHIGH);
+ XSetForeground(theDisp, theGC, infofg);
+ DrawString(dirW, 10, ypos, foo);
+
+
+- if (dirUp == BLOAD) str = "Load file:";
++ if (dirUp == BLOAD) str = "Load file:";
+ else str = "Save file:";
+ DrawString(dirW, 10, dList.y + (int) dList.h + 30 + 4 + ASCENT, str);
+-
++
+ /* draw dividing line */
+ XSetForeground(theDisp, theGC, infofg);
+ XDrawLine(theDisp, dirW, theGC, 0, dirMB.y-6, DIRWIDE, dirMB.y-6);
+@@ -346,11 +378,11 @@
+ XSetForeground(theDisp, theGC, hicol);
+ }
+ XDrawLine(theDisp, dirW, theGC, 0, dirMB.y-4, DIRWIDE, dirMB.y-4);
+-
+-
+-
++
++
++
+ for (i=0; i<(savemode ? S_NBUTTS : S_LOAD_NBUTTS); i++) BTRedraw(&dbut[i]);
+-
++
+ MBRedraw(&dirMB);
+ MBRedraw(&fmtMB);
+ MBRedraw(&colMB);
+@@ -362,7 +394,7 @@
+ if (StringWidth(COLLABEL) > txtw) txtw = StringWidth(COLLABEL);
+
+ if (!savemode) {
+- XCopyArea(theDisp, d_loadPix, dirW, theGC, 0,0,d_load_width,d_load_height,
++ XCopyArea(theDisp, d_loadPix, dirW, theGC, 0,0,d_load_width,d_load_height,
+ 10, (dirMB.y-6)/2 - d_load_height/2);
+
+ XSetFillStyle(theDisp, theGC, FillStippled);
+@@ -399,18 +431,18 @@
+ i = v = 0;
+ if (MBClick(&fmtMB, x,y) && (v=MBTrack(&fmtMB))>=0) i=1;
+ else if (MBClick(&colMB, x,y) && (v=MBTrack(&colMB))>=0) i=2;
+-
++
+ if (i) { /* changed one of them */
+ if (i==1) SetDirSaveMode(F_FORMAT, v);
+ else SetDirSaveMode(F_COLORS, v);
+ changeSuffix();
+ }
+ }
+-
+-
++
++
+ if (!savemode) { /* LOAD */
+ if (CBClick(&browseCB,x,y)) CBTrack(&browseCB);
+- }
++ }
+ else { /* SAVE */
+ if (CBClick(&savenormCB,x,y)) CBTrack(&savenormCB);
+ else if (CBClick(&saveselCB,x,y)) CBTrack(&saveselCB);
+@@ -482,7 +514,7 @@
+ }
+
+ if (oldnumnames != numnames) { /* added some */
+- if (numnames>0) BTSetActive(&but[BDELETE],1);
++ if (numnames>0) BTSetActive(&but[BDELETE],1);
+ windowMB.dim[WMB_TEXTVIEW] = (numnames==0);
+
+ LSNewData(&nList, dispnames, numnames);
+@@ -501,10 +533,35 @@
+ }
+
+
+-
+ if (MBClick(&dirMB, x, y)) {
+ i = MBTrack(&dirMB);
+ if (i >= 0) changedDirMB(i);
++ return -1;
++ }
++
++ /* handle clicks inside the filename box */
++ if (x > 80 &&
++ y > dList.y + (int) dList.h + 30 &&
++ x < 80 + DNAMWIDE+6 &&
++ y < dList.y + (int) dList.h + 30 + LINEHIGH+5) {
++ int tx;
++ int dx;
++ int pos;
++
++ /* make coordinates relative to dnamW */
++ tx = x - (80 + 1 + 3); /* left side plus the border plus the space for the "more stuff" sign */
++
++ for (pos=stPos; pos+1 < enPos; pos++) {
++ if (XTextWidth(mfinfo, &filename[stPos], 1+pos-stPos) > tx)
++ break;
++ }
++ /* if we are more than halfway past this char, put the insertion point after it */
++ dx = tx - XTextWidth(mfinfo, &filename[stPos], pos-stPos);
++ if (dx > XTextWidth(mfinfo, &filename[pos], 1)/2)
++ pos++;
++
++ curPos = pos;
++ showFName();
+ }
+
+ return -1;
+@@ -564,14 +621,18 @@
+ * a special concealed device setup to provide a list of available
+ * disks).
+ */
+- if ( ((ndirs-sel) == 2) && (strlen(tmppath) > 1) )
++ if ( ((ndirs-sel) == 2) && (strlen(tmppath) > 1) )
+ strcat ( tmppath, "/000000" ); /* add root dir for device */
+ else if ((ndirs-sel) == 1 ) {
+ strcpy ( tmppath, "/XV_Root_Device/000000" ); /* fake top level */
+ }
+ #endif
+
++#ifdef AUTO_EXPAND
++ if (Chvdir(tmppath)) {
++#else
+ if (chdir(tmppath)) {
++#endif
+ char str[512];
+ sprintf(str,"Unable to cd to '%s'\n", tmppath);
+ *trunc_point = '/'; /* restore the path */
+@@ -602,7 +663,7 @@
+ xv_getwd(path, sizeof(path));
+ LoadCurrentDirectory();
+ }
+-
++
+
+
+ /***************************************************/
+@@ -621,14 +682,14 @@
+ #else
+ struct dirent *dp;
+ #endif
+-
++
+
+ /* get rid of previous file names */
+ for (i=0; i<numfnames; i++) free(fnames[i]);
+ numfnames = 0;
+
+ /* get rid of old dirMBlist */
+- for (i=0; i<ndirs; i++) free(dirMBlist[i]);
++ for (i=0; i<ndirs; i++) free((char *) dirMBlist[i]);
+
+ #ifndef VMS
+ if (strlen(path) == 0) xv_getwd(path, sizeof(path)); /* no dir, use cwd */
+@@ -636,7 +697,11 @@
+ xv_getwd(path, sizeof(path));
+ #endif
+
++#ifdef AUTO_EXPAND
++ if (Chvdir(path)) {
++#else
+ if (chdir(path)) {
++#endif
+ ErrPopUp("Current load/save directory seems to have gone away!",
+ "\nYikes!");
+ #ifdef apollo
+@@ -644,7 +709,11 @@
+ #else
+ strcpy(path,"/");
+ #endif
++#ifdef AUTO_EXPAND
++ Chvdir(path);
++#else
+ chdir(path);
++#endif
+ }
+
+ changedDir = strcmp(path, oldpath);
+@@ -673,19 +742,22 @@
+
+ /* build dirMBlist */
+ for (i=ndirs-1,j=0; i>=0; i--,j++) {
+- size_t stlen = (i<(ndirs-1)) ? dirs[i+1] - dirs[i] : strlen(dirs[i]);
+- dirMBlist[j] = (char *) malloc(stlen+1);
+- if (!dirMBlist[j]) FatalError("unable to malloc dirMBlist[]");
++ size_t stlen = (i<(ndirs-1)) ? dirs[i+1] - dirs[i] : strlen(dirs[i]);
++ char *copy;
++
++ copy = malloc(stlen+1);
++ if (!copy) FatalError("unable to malloc dirMBlist[]");
+
+- strncpy(dirMBlist[j], dirs[i], stlen);
+- dirMBlist[j][stlen] = '\0';
++ strncpy(copy, dirs[i], stlen);
++ copy[stlen] = '\0';
++ dirMBlist[j] = copy;
+ }
+-
++
+
+ lastdir = dirs[ndirs-1];
+ dirMB.list = dirMBlist;
+ dirMB.nlist = ndirs;
+- XClearArea(theDisp, dirMB.win, dirMB.x, dirMB.y,
++ XClearArea(theDisp, dirMB.win, dirMB.x, dirMB.y,
+ (u_int) dirMB.w+3, (u_int) dirMB.h+3, False);
+ i = StringWidth(dirMBlist[0]) + 10;
+ dirMB.x = dirMB.x + dirMB.w/2 - i/2;
+@@ -704,8 +776,8 @@
+
+ i=0;
+ while ( (dp = readdir(dirp)) != NULL) {
+- if (strcmp(dp->d_name, ".")==0 ||
+- (strcmp(dp->d_name, "..")==0 &&
++ if (strcmp(dp->d_name, ".")==0 ||
++ (strcmp(dp->d_name, "..")==0 &&
+ (strcmp(path,"/")==0 || strcmp(path,"//")==0)) ||
+ strcmp(dp->d_name, THUMBDIR)==0) {
+ /* skip over '.' and '..' and THUMBDIR */
+@@ -714,7 +786,7 @@
+
+ if (i == MAXNAMES) {
+ fprintf(stderr,
+- "%s: too many directory entries. Only using first %d.\n",
++ "%s: too many directory entries. Using only first %d.\n",
+ cmd, MAXNAMES);
+ break;
+ }
+@@ -733,7 +805,7 @@
+ /* For VMS we will default all files EXCEPT directories to avoid
+ the high cost of the VAX C implementation of the stat function.
+ Suggested by Kevin Oberman (OBERMAN@icdc.llnl.gov) */
+-
++
+ if (xv_strstr (fnames[i]+1, ".DIR") != NULL) fnames[i][0] = C_DIR;
+ if (xv_strstr (fnames[i]+1, ".EXE") != NULL) fnames[i][0] = C_EXE;
+ if (xv_strstr (fnames[i]+1, ".OBJ") != NULL) fnames[i][0] = C_BLK;
+@@ -749,6 +821,9 @@
+ else if (S_ISFIFO(ftype)) fnames[i][0] = C_FIFO;
+ else if (S_ISSOCK(ftype)) fnames[i][0] = C_SOCK;
+ else if (fnames[i][0] == C_REG && (mode&0111)) fnames[i][0] = C_EXE;
++#ifdef AUTO_EXPAND
++ else if (Isarchive(fnames[i]+1)) fnames[i][0] = C_DIR;
++#endif
+ }
+ else {
+ /* fprintf(stderr,"problems 'stat-ing' files\n");*/
+@@ -784,11 +859,13 @@
+
+
+ /***************************************************/
++#ifdef FOO
+ static int cd_able(str)
+ char *str;
+ {
+ return ((str[0] == C_DIR || str[0] == C_LNK));
+ }
++#endif /* FOO */
+
+
+ /***************************************************/
+@@ -829,24 +906,28 @@
+ int len;
+
+ len = strlen(filename);
+-
++
+ if (c>=' ' && c<'\177') { /* printable characters */
+ /* note: only allow 'piped commands' in savemode... */
+
++#undef PREVENT_SPACES /* Spaces are fine in filenames. */
++#ifdef PREVENT_SPACES
+ /* only allow spaces in 'piped commands', not filenames */
+ if (c==' ' && (!ISPIPE(filename[0]) || curPos==0)) return (-1);
++#endif
+
+ /* only allow vertbars in 'piped commands', not filenames */
+ if (c=='|' && curPos!=0 && !ISPIPE(filename[0])) return(-1);
+
+ if (len >= MAXFNLEN-1) return(-1); /* max length of string */
++
+ xvbcopy(&filename[curPos], &filename[curPos+1], (size_t) (len-curPos+1));
+ filename[curPos]=c; curPos++;
+
+ scrollToFileName();
+ }
+
+- else if (c=='\010' || c=='\177') { /* BS or DEL */
++ else if (c=='\010') { /* BS */
+ if (curPos==0) return(-1); /* at beginning of str */
+ xvbcopy(&filename[curPos], &filename[curPos-1], (size_t) (len-curPos+1));
+ curPos--;
+@@ -871,7 +952,7 @@
+ curPos = len;
+ }
+
+- else if (c=='\004') { /* ^D: delete character at curPos */
++ else if (c=='\004' || c=='\177') { /* ^D or DEL: delete character at curPos */
+ if (curPos==len) return(-1);
+ xvbcopy(&filename[curPos+1], &filename[curPos], (size_t) (len-curPos));
+ }
+@@ -918,19 +999,19 @@
+ {
+ /* called to 'auto complete' a filename being entered. If the name that
+ has been entered so far is anything but a simple filename (ie, has
+- spaces, pipe char, '/', etc) fails. If it is a simple filename,
++ spaces, pipe char, '/', etc) fails. If it is a simple filename,
+ looks through the name list to find something that matches what's already
+ been typed. If nothing matches, it fails. If more than one thing
+ matches, it sets the name to the longest string that the multiple
+- matches have in common, and succeeds (and beeps).
++ matches have in common, and succeeds (and beeps).
+ If only one matches, sets the string to the match and succeeds.
+-
++
+ returns zero on failure, non-zero on success */
+-
++
+ int i, firstmatch, slen, nummatch, cnt;
+
+ /* is filename a simple filename? */
+- if (strlen(filename)==0 ||
++ if (strlen(filename)==0 ||
+ ISPIPE(filename[0]) ||
+ index(filename, '/') ||
+ filename[0]=='~' ) return 0;
+@@ -946,7 +1027,7 @@
+ firstmatch = i;
+
+ /* count # of matches */
+- for (i=firstmatch, nummatch=0;
++ for (i=firstmatch, nummatch=0;
+ i<dList.nstr && strncmp(filename, dList.str[i]+1, (size_t) slen)==0;
+ i++, nummatch++);
+
+@@ -960,14 +1041,14 @@
+ while (dList.str[firstmatch][slen+1]!='\0') {
+ filename[slen] = dList.str[firstmatch][slen+1];
+ slen++; filename[slen] = '\0';
+-
++
+ for (i=firstmatch, cnt=0;
+ i<dList.nstr && strncmp(filename, dList.str[i]+1, (size_t) slen)==0;
+ i++, cnt++);
+
+ if (cnt != nummatch) { slen--; filename[slen] = '\0'; break; }
+- }
+-
++ }
++
+ XBell(theDisp, 0);
+
+ return 1;
+@@ -1003,7 +1084,7 @@
+ i = pos - (NLINES/2);
+ SCSetVal(&dList.scrl, i);
+ }
+-
++
+
+ /***************************************************/
+ void RedrawDNamW()
+@@ -1012,7 +1093,7 @@
+
+ /* draw substring filename[stPos:enPos] and cursor */
+
+- Draw3dRect(dnamW, 0, 0, (u_int) DNAMWIDE+5, (u_int) LINEHIGH+4, R3D_IN, 2,
++ Draw3dRect(dnamW, 0, 0, (u_int) DNAMWIDE+5, (u_int) LINEHIGH+4, R3D_IN, 2,
+ hicol, locol, infobg);
+
+ XSetForeground(theDisp, theGC, infofg);
+@@ -1023,7 +1104,7 @@
+ XDrawLine(theDisp, dnamW, theGC, 2,0,2,LINEHIGH+5);
+ }
+
+- if ((size_t) enPos < strlen(filename)) {
++ if ((size_t) enPos < strlen(filename)) {
+ /* draw a "there's more over here" doowah */
+ XDrawLine(theDisp, dnamW, theGC, DNAMWIDE+5,0,DNAMWIDE+5,LINEHIGH+5);
+ XDrawLine(theDisp, dnamW, theGC, DNAMWIDE+4,0,DNAMWIDE+4,LINEHIGH+5);
+@@ -1032,6 +1113,7 @@
+
+ XDrawString(theDisp, dnamW, theGC,3,ASCENT+3,filename+stPos, enPos-stPos);
+
++ /* draw insertion point */
+ cpos = XTextWidth(mfinfo, &filename[stPos], curPos-stPos);
+ XDrawLine(theDisp, dnamW, theGC, 3+cpos, 2, 3+cpos, 2+CHIGH+1);
+ XDrawLine(theDisp, dnamW, theGC, 3+cpos, 2+CHIGH+1, 5+cpos, 2+CHIGH+3);
+@@ -1054,10 +1136,29 @@
+
+ fullname = GetDirFullName();
+
++#ifdef AUTO_EXPAND
++ {
++ char path[MAXPATHLEN];
++
++ GetDirPath(path);
++ Mkvdir(path);
++ if ((i = Isvdir(fullname)) & 01) {
++ char buf[128];
++ sprintf(buf,
++ "Sorry, you can't save file in the virtual directory, '%s'",
++ path);
++ ErrPopUp(buf, "\nBummer!");
++ return -1;
++ }
++ if (i & 06)
++ Rmvdir(fullname);
++ }
++#endif
++
+ fmt = MBWhich(&fmtMB);
+ col = MBWhich(&colMB);
+
+- if (fmt<0 || col<0)
++ if (fmt<0 || col<0)
+ FatalError("xv: no 'checked' format or color. shouldn't happen!\n");
+
+
+@@ -1068,19 +1169,19 @@
+ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
+ return -1;
+ }
+-
++
+ for (i=0; i<numnames; i++) {
+ if ((i&0x3f)==0) WaitCursor();
+ if (namelist[i][0] != '/') fprintf(fp, "%s/%s\n", initdir, namelist[i]);
+ else fprintf(fp, "%s\n", namelist[i]);
+ }
+-
++
+ i = (ferror(fp)) ? 1 : 0;
+ if (CloseOutFile(fp, fullname, i) == 0) {
+ DirBox(0);
+ XVCreatedFile(fullname);
+ }
+-
++
+ SetCursors(-1);
+ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
+ return i;
+@@ -1100,7 +1201,16 @@
+ #ifdef HAVE_JPEG
+ else if (fmt == F_JPEG) { /* JPEG */
+ JPEGSaveParams(fullname, col);
+- JPEGDialog(1); /* open JPEGDialog box */
++ JPEGDialog(1); /* open JPEGDialog box */
++ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
++ return 0; /* always 'succeeds' */
++ }
++#endif
++
++#ifdef HAVE_JP2K
++ else if (fmt == F_JPC || fmt == F_JP2) { /* JPEG 2000 */
++ JP2KSaveParams(fmt, fullname, col);
++ JP2KDialog(1); /* open JP2KDialog box */
+ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
+ return 0; /* always 'succeeds' */
+ }
+@@ -1109,13 +1219,40 @@
+ #ifdef HAVE_TIFF
+ else if (fmt == F_TIFF) { /* TIFF */
+ TIFFSaveParams(fullname, col);
+- TIFFDialog(1); /* open TIFF Dialog box */
++ TIFFDialog(1); /* open TIFF Dialog box */
++ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
++ return 0; /* always 'succeeds' */
++ }
++#endif
++
++#ifdef HAVE_PNG
++ else if (fmt == F_PNG) { /* PNG */
++ PNGSaveParams(fullname, col);
++ PNGDialog(1); /* open PNG Dialog box */
+ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
+ return 0; /* always 'succeeds' */
+ }
+ #endif
+
++#ifdef HAVE_PIC2
++ else if (fmt == F_PIC2) { /* PIC2 */
++ if (PIC2SaveParams(fullname, col) < 0)
++ return 0;
++ PIC2Dialog(1); /* open PIC2 Dialog box */
++ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
++ return 0; /* always 'succeeds' */
++ }
++#endif /* HAVE_PIC2 */
+
++#ifdef HAVE_MGCSFX
++ else if (fmt == F_MGCSFX) { /* MGCSFX */
++ if (MGCSFXSaveParams(fullname, col) < 0)
++ return 0;
++ MGCSFXDialog(1); /* open MGCSFX Dialog box */
++ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
++ return 0; /* always 'succeeds' */
++ }
++#endif /* HAVE_MGCSFX */
+
+
+ WaitCursor();
+@@ -1147,34 +1284,74 @@
+ rv = WritePBM (fp, thepic, ptype, w, h, rp,gp,bp, nc,col,1,picComments);
+ break;
+
+- case F_PBMASCII:
++ case F_PBMASCII:
+ rv = WritePBM (fp, thepic, ptype, w, h, rp,gp,bp, nc,col,0,picComments);
+ break;
+
+ case F_XBM:
+- rv = WriteXBM (fp, thepic, w, h, rp, gp, bp, fullname); break;
++ rv = WriteXBM (fp, thepic, w, h, rp, gp, bp, fullname);
++ break;
+
+ case F_SUNRAS:
+- rv = WriteSunRas(fp, thepic, ptype, w, h, rp, gp, bp, nc, col,0); break;
++ rv = WriteSunRas(fp, thepic, ptype, w, h, rp, gp, bp, nc, col,0);
++ break;
+
+ case F_BMP:
+- rv = WriteBMP (fp, thepic, ptype, w, h, rp, gp, bp, nc, col); break;
++ rv = WriteBMP (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
++ break;
++
++ case F_WBMP:
++ rv = WriteWBMP (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
++ break;
+
+ case F_IRIS:
+- rv = WriteIRIS (fp, thepic, ptype, w, h, rp, gp, bp, nc, col); break;
+-
++ rv = WriteIRIS (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
++ break;
++
+ case F_TARGA:
+- rv = WriteTarga (fp, thepic, ptype, w, h, rp, gp, bp, nc, col); break;
+-
++ rv = WriteTarga (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
++ break;
++
+ case F_XPM:
+- rv = WriteXPM (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
+- fullname, picComments);
++ rv = WriteXPM (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
++ fullname, picComments);
++ break;
++
+ case F_FITS:
+- rv = WriteFITS (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
+- picComments);
++ rv = WriteFITS (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
++ picComments);
++ break;
++
++ case F_ZX: /* [JCE] Spectrum SCREEN$ */
++ rv = WriteZX (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
++ picComments);
++ break;
++#ifdef HAVE_MAG
++ case F_MAG:
++ rv = WriteMAG (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
++ picComments);
++ break;
++#endif /* HAVE_MAG */
++#ifdef HAVE_PIC
++ case F_PIC:
++ rv = WritePIC (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
++ picComments);
+ break;
++#endif /* HAVE_PIC */
++#ifdef HAVE_MAKI
++ case F_MAKI:
++ rv = WriteMAKI (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
++ break;
++#endif /* HAVE_MAKI */
++
++#ifdef HAVE_PI
++ case F_PI:
++ rv = WritePi (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
++ picComments);
++ break;
++#endif /* HAVE_PI */
+ }
+-
++
+
+ if (CloseOutFile(fp, fullname, rv) == 0) {
+ DirBox(0);
+@@ -1184,12 +1361,12 @@
+ }
+ }
+
+-
++
+ if (pfree) free(thepic);
+-
++
+ SetCursors(-1);
+ dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
+-
++
+ return rv;
+ }
+
+@@ -1197,22 +1374,23 @@
+
+ /***************************************************/
+ void SetDirFName(st)
+- char *st;
++ const char *st;
+ {
+ strncpy(deffname, st, (size_t) MAXFNLEN-1);
++ deffname[MAXFNLEN-1] = '\0';
+ setFName(st);
+ }
+
+
+ /***************************************************/
+ static void setFName(st)
+- char *st;
++ const char *st;
+ {
+ strncpy(filename, st, (size_t) MAXFNLEN-1);
+ filename[MAXFNLEN-1] = '\0'; /* make sure it's terminated */
+ curPos = strlen(st);
+ stPos = 0; enPos = curPos;
+-
++
+ showFName();
+ }
+
+@@ -1221,17 +1399,17 @@
+ static void showFName()
+ {
+ int len;
+-
++
+ len = strlen(filename);
+-
++
+ if (curPos<stPos) stPos = curPos;
+ if (curPos>enPos) enPos = curPos;
+-
++
+ if (stPos>len) stPos = (len>0) ? len-1 : 0;
+ if (enPos>len) enPos = (len>0) ? len-1 : 0;
+-
++
+ /* while substring is shorter than window, inc enPos */
+-
++
+ while (XTextWidth(mfinfo, &filename[stPos], enPos-stPos) < DNAMWIDE
+ && enPos<len) { enPos++; }
+
+@@ -1244,7 +1422,7 @@
+ }
+
+
+- if (ctrlColor) XClearArea(theDisp, dnamW, 2,2, (u_int) DNAMWIDE+5-3,
++ if (ctrlColor) XClearArea(theDisp, dnamW, 2,2, (u_int) DNAMWIDE+5-3,
+ (u_int) LINEHIGH+4-3, False);
+ else XClearWindow(theDisp, dnamW);
+
+@@ -1270,7 +1448,7 @@
+ else {
+ strcpy(globname, filename);
+ if (globname[0] == '~') Globify(globname);
+-
++
+ if (globname[0] != '/') sprintf(fullname, "%s%s", path, globname);
+ else strcpy(fullname, globname);
+ }
+@@ -1294,14 +1472,15 @@
+ MBRedraw(&fmtMB);
+ }
+ }
+-
++
+ if (bnum>=0) MBSelect(&colMB, bnum);
+ }
+-
++
+
+ else if (group == F_FORMAT) {
+ MBSelect(&fmtMB, bnum);
+- if (MBWhich(&fmtMB) == F_XBM) { /* turn off all but B/W */
++ if (MBWhich(&fmtMB) == F_XBM ||
++ MBWhich(&fmtMB) == F_WBMP) { /* turn off all but B/W */
+ colMB.dim[F_FULLCOLOR] = 1;
+ colMB.dim[F_GREYSCALE] = 1;
+ colMB.dim[F_BWDITHER] = 0;
+@@ -1322,10 +1501,10 @@
+ colMB.dim[F_GREYSCALE] = 0;
+ colMB.dim[F_BWDITHER] = 0;
+ colMB.dim[F_REDUCED] = (picType==PIC8) ? 0 : 1;
+- if (picType!=PIC8 && MBWhich(&colMB)==F_REDUCED)
++ if (picType!=PIC8 && MBWhich(&colMB)==F_REDUCED)
+ MBSelect(&colMB, F_FULLCOLOR);
+ }
+-
++
+ if (MBWhich(&fmtMB) == F_FILELIST) {
+ MBSetActive(&colMB, 0);
+ CBSetActive(&savenormCB, 0);
+@@ -1337,12 +1516,12 @@
+ }
+ }
+
+-
++
+
+ /***************************************/
+ static void changeSuffix()
+ {
+- /* see if there's a common suffix at the end of the filename.
++ /* see if there's a common suffix at the end of the filename.
+ if there is, remember what case it was (all caps or all lower), lop
+ it off, and replace it with a new appropriate suffix, in the
+ same case */
+@@ -1356,7 +1535,7 @@
+ suffix++; /* point to first letter of the suffix */
+
+ /* check for all-caposity */
+- for (sp = suffix, allcaps=1; *sp; sp++)
++ for (sp = suffix, allcaps=1; *sp; sp++)
+ if (islower(*sp)) allcaps = 0;
+
+ /* copy the suffix into an all-lower-case buffer */
+@@ -1380,14 +1559,33 @@
+ (strcmp(lowsuf,"eps" )==0) ||
+ (strcmp(lowsuf,"rgb" )==0) ||
+ (strcmp(lowsuf,"tga" )==0) ||
+- (strcmp(lowsuf,"xpm" )==0) ||
+ (strcmp(lowsuf,"fits")==0) ||
+ (strcmp(lowsuf,"fts" )==0) ||
++#ifdef HAVE_JPEG
+ (strcmp(lowsuf,"jpg" )==0) ||
+ (strcmp(lowsuf,"jpeg")==0) ||
+ (strcmp(lowsuf,"jfif")==0) ||
++#endif
++#ifdef HAVE_JP2K
++ (strcmp(lowsuf,"jpc" )==0) ||
++ (strcmp(lowsuf,"jp2" )==0) ||
++#endif
++#ifdef HAVE_TIFF
+ (strcmp(lowsuf,"tif" )==0) ||
+- (strcmp(lowsuf,"tiff")==0)) {
++ (strcmp(lowsuf,"tiff")==0) ||
++#endif
++#ifdef HAVE_PNG
++ (strcmp(lowsuf,"png" )==0) ||
++#endif
++ (strcmp(lowsuf,"wbmp")==0) ||
++ (strcmp(lowsuf,"xpm" )==0) ||
++ (strcmp(lowsuf,"tiff")==0) ||
++ (strcmp(lowsuf,"mag" )==0) ||
++ (strcmp(lowsuf,"pic" )==0) ||
++ (strcmp(lowsuf,"mki" )==0) ||
++ (strcmp(lowsuf,"pi" )==0) ||
++ (strcmp(lowsuf,"p2" )==0) ||
++ (strcmp(lowsuf,"pcd" )==0)) {
+
+ /* found one. set lowsuf = to the new suffix, and tack on to filename */
+
+@@ -1401,7 +1599,7 @@
+ case F_GIF: strcpy(lowsuf,"gif"); break;
+ case F_PM: strcpy(lowsuf,"pm"); break;
+ case F_PBMRAW:
+- case F_PBMASCII: if (col == F_FULLCOLOR || col == F_REDUCED)
++ case F_PBMASCII: if (col == F_FULLCOLOR || col == F_REDUCED)
+ strcpy(lowsuf,"ppm");
+ else if (col == F_GREYSCALE) strcpy(lowsuf,"pgm");
+ else if (col == F_BWDITHER) strcpy(lowsuf,"pbm");
+@@ -1410,6 +1608,7 @@
+ case F_XBM: strcpy(lowsuf,"xbm"); break;
+ case F_SUNRAS: strcpy(lowsuf,"ras"); break;
+ case F_BMP: strcpy(lowsuf,"bmp"); break;
++ case F_WBMP: strcpy(lowsuf,"wbmp"); break;
+ case F_PS: strcpy(lowsuf,"ps"); break;
+ case F_IRIS: strcpy(lowsuf,"rgb"); break;
+ case F_TARGA: strcpy(lowsuf,"tga"); break;
+@@ -1420,16 +1619,46 @@
+ case F_JPEG: strcpy(lowsuf,"jpg"); break;
+ #endif
+
++#ifdef HAVE_JP2K
++ case F_JPC: strcpy(lowsuf,"jpc"); break;
++ case F_JP2: strcpy(lowsuf,"jp2"); break;
++#endif
++
+ #ifdef HAVE_TIFF
+ case F_TIFF: strcpy(lowsuf,"tif"); break;
+ #endif
++
++#ifdef HAVE_PNG
++ case F_PNG: strcpy(lowsuf,"png"); break;
++#endif
++
++#ifdef HAVE_MAG
++ case F_MAG: strcpy(lowsuf,"mag"); break;
++#endif
++
++#ifdef HAVE_PIC
++ case F_PIC: strcpy(lowsuf,"pic"); break;
++#endif
++
++#ifdef HAVE_MAKI
++ case F_MAKI: strcpy(lowsuf,"mki"); break;
++#endif
++
++#ifdef HAVE_PI
++ case F_PI: strcpy(lowsuf,"pi"); break;
++#endif
++
++#ifdef HAVE_PIC2
++ case F_PIC2: strcpy(lowsuf,"p2"); break;
++#endif
+ }
+
++
+ if (allcaps) { /* upper-caseify lowsuf */
+- for (sp=lowsuf; *sp; sp++)
++ for (sp=lowsuf; *sp; sp++)
+ *sp = (islower(*sp)) ? toupper(*sp) : *sp;
+ }
+-
++
+ /* one other case: if the original suffix started with a single
+ capital letter, make the new suffix start with a single cap */
+ if (isupper(suffix[0])) lowsuf[0] = toupper(lowsuf[0]);
+@@ -1439,7 +1668,7 @@
+ }
+
+ }
+-
++
+
+ /***************************************************/
+ int DirCheckCD()
+@@ -1462,7 +1691,7 @@
+ static int FNameCdable()
+ {
+ /* returns '1' if filename is a directory, and goes there */
+-
++
+ char newpath[1024];
+ struct stat st;
+ int retval = 0;
+@@ -1490,6 +1719,11 @@
+ }
+ #endif
+
++#ifdef AUTO_EXPAND
++ Mkvdir(newpath);
++ Dirtovd(newpath);
++#endif
++
+ if (stat(newpath, &st)==0) {
+ int isdir;
+
+@@ -1518,7 +1752,7 @@
+ retval = 1;
+ }
+ }
+-
++
+ return retval;
+ }
+
+@@ -1549,8 +1783,8 @@
+ *up='\0';
+
+ if (*uname=='\0') { /* no name. substitute ~ with $HOME */
+- char *homedir;
+- homedir = (char *) getenv("HOME");
++ const char *homedir;
++ homedir = (const char *) getenv("HOME");
+ if (homedir == NULL) homedir = ".";
+ strcpy(tmp,homedir);
+ strcat(tmp,sp);
+@@ -1574,12 +1808,12 @@
+
+ /***************************************/
+ FILE *OpenOutFile(filename)
+- char *filename;
++ const char *filename;
+ {
+ /* opens file for output. does various error handling bits. Returns
+ an open file pointer if success, NULL if failure */
+
+- FILE *fp;
++ FILE *fp = NULL;
+ struct stat st;
+
+ if (!filename || filename[0] == '\0') return NULL;
+@@ -1587,7 +1821,11 @@
+ dopipe = 0;
+
+ /* make sure we're in the correct directory */
++#ifdef AUTO_EXPAND
++ if (strlen(path)) Chvdir(path);
++#else
+ if (strlen(path)) chdir(path);
++#endif
+
+ if (ISPIPE(filename[0])) { /* do piping */
+ /* make up some bogus temp file to put this in */
+@@ -1596,23 +1834,34 @@
+ #else
+ strcpy(outFName, "[]xvXXXXXX.lis");
+ #endif
++#ifdef USE_MKSTEMP
++ fp = fdopen(mkstemp(outFName), "w");
++#else
+ mktemp(outFName);
++#endif
+ dopipe = 1;
+ }
+
+
+- /* see if file exists (ie, we're overwriting) */
+- if (stat(outFName, &st)==0) { /* stat succeeded, file must exist */
+- static char *foo[] = { "\nOk", "\033Cancel" };
+- char str[512];
++#ifdef USE_MKSTEMP /* (prior) nonexistence of file is already guaranteed by */
++ if (!dopipe) /* mkstemp(), but now mkstemp() itself has created it */
++#endif
++ /* see if file exists (i.e., we're overwriting) */
++ if (stat(outFName, &st)==0) { /* stat succeeded, file must exist */
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char str[512];
+
+- sprintf(str,"Overwrite existing file '%s'?", outFName);
+- if (PopUp(str, foo, 2)) return NULL;
+- }
+-
++ sprintf(str,"Overwrite existing file '%s'?", outFName);
++ if (PopUp(str, labels, 2)) return NULL;
++ }
++
++
++ /* Open file (if not already open via mkstemp()) */
++#ifdef USE_MKSTEMP
++ if (!dopipe)
++#endif
++ fp = fopen(outFName, "w");
+
+- /* Open file */
+- fp = fopen(outFName, "w");
+ if (!fp) {
+ char str[512];
+ sprintf(str,"Can't write file '%s'\n\n %s.",outFName, ERRSTR(errno));
+@@ -1622,12 +1871,12 @@
+
+ return fp;
+ }
+-
++
+
+ /***************************************/
+ int CloseOutFile(fp, filename, failed)
+ FILE *fp;
+- char *filename;
++ const char *filename;
+ int failed;
+ {
+ char buf[64];
+@@ -1642,9 +1891,8 @@
+ return 1;
+ }
+
+-
++
+ if (fclose(fp) == EOF) {
+- static char *foo[] = { "\nWeird!" };
+ char str[512];
+ sprintf(str,"Can't close file '%s'\n\n %s.",outFName, ERRSTR(errno));
+ ErrPopUp(str, "\nWeird!");
+@@ -1666,7 +1914,7 @@
+ }
+
+ SetISTR(ISTR_INFO,"Successfully wrote '%s'%s", outFName, buf);
+-
++
+ if (dopipe) {
+ char cmd[512], str[1024];
+ int i;
+@@ -1709,7 +1957,7 @@
+ return 0;
+ }
+
+-
++
+
+
+ static byte rBW[2], gBW[2], bBW[2];
+@@ -1732,7 +1980,7 @@
+ bwpic = (byte *) NULL;
+ *nc = numcols; *rpp = rMap; *gpp = gMap; *bpp = bMap;
+
+- /* quick check: if we're saving a 24-bit image, then none of this
++ /* quick check: if we're saving a 24-bit image, then none of this
+ complicated 'reduced'/dithered/smoothed business comes into play.
+ 'reduced' is disabled, for semi-obvious reasons, in 24-bit mode,
+ as is 'dithered'. If 'smoothed', and we're saving at current
+@@ -1744,32 +1992,32 @@
+ if we're saving B/W DITHERED, and deal accordingly */
+
+
+- if (ptype == PIC24) {
++ if (ptype == PIC24) {
+ if (color != F_BWDITHER) return NULL;
+ else { /* generate a bw-dithered version */
+ byte *p24, *thepic;
+-
++
+ thepic = pic;
+ p24 = GammifyPic24(thepic, pw, ph);
+ if (p24) thepic = p24;
+-
++
+ /* generate a FSDithered 1-byte per pixel image */
+ bwpic = FSDither(thepic, PIC24, pw, ph, NULL,NULL,NULL, 0, 1);
+ if (!bwpic) FatalError("unable to malloc dithered picture (DoSave)");
+-
++
+ if (p24) free(p24); /* won't need it any more */
+-
++
+ /* build a BW colormap */
+ rBW[0] = gBW[0] = bBW[0] = 0;
+ rBW[1] = gBW[1] = bBW[1] = 255;
+-
++
+ *rpp = rBW; *gpp = gBW; *bpp = bBW;
+ *nc = 2;
+-
++
+ return bwpic;
+ }
+ }
+-
++
+
+
+ /* ptype == PIC8 ... */
+@@ -1777,7 +2025,7 @@
+ *nc = numcols; *rpp = rMap; *gpp = gMap; *bpp = bMap;
+ if (color==F_REDUCED) { *rpp = rdisp; *gpp = gdisp; *bpp = bdisp; }
+
+- /* if DITHER or SMOOTH, and color==FULLCOLOR or GREY,
++ /* if DITHER or SMOOTH, and color==FULLCOLOR or GREY,
+ make color=REDUCED, so it will be written with the correct colortable */
+
+ if ((epicMode == EM_DITH || epicMode == EM_SMOOTH) && color != F_REDUCED) {
+@@ -1789,7 +2037,7 @@
+ *rpp = gray; *gpp = gray; *bpp = gray;
+ }
+ }
+-
++
+
+
+
+@@ -1823,8 +2071,8 @@
+ * and whether or not it should be freed when we're done with it. The 'pic'
+ * returned is the desired portion of 'cpic' or 'epic' if there is a
+ * selection, and the saveselCB is enabled, or alternately, it's the
+- * whole cpic or epic.
+- *
++ * whole cpic or epic.
++ *
+ * if selection does not intersect cpic/epic, returns cpic/epic
+ * NEVER RETURNS NULL
+ */
+@@ -1837,7 +2085,7 @@
+ if (savenormCB.val) { thepic = cpic; pw = cWIDE; ph = cHIGH; }
+ else { thepic = epic; pw = eWIDE; ph = eHIGH; }
+
+- *pwide = pw; *phigh = ph;
++ *pwide = pw; *phigh = ph;
+
+
+ if (saveselCB.active && saveselCB.val && HaveSelection()) {
+@@ -1862,7 +2110,7 @@
+ CoordP2E(x2,y2, &x2, &y2);
+ slx = x1; sly = y1; slw = x2-x1; slh = y2-y1;
+ CropRect2Rect(&slx, &sly, &slw, &slh, 0,0,pw,ph);
+-
++
+ if (slw<1 || slh<1) { slx = sly = 0; slw=pw; slh=ph; }
+
+ if (slx!=0 || sly!=0 || slw!=pw || slh!=ph) {
+@@ -1871,7 +2119,7 @@
+ }
+ }
+
+- *pwide = slw; *phigh = slh;
++ *pwide = slw; *phigh = slh;
+ }
+
+ return thepic;
+@@ -1884,11 +2132,11 @@
+ byte **rmapP, **gmapP, **bmapP;
+ {
+ /* handles the whole ugly mess of the various save options.
+- * returns an image, of type 'ptypeP', size 'wP,hP'.
++ * returns an image, of type 'ptypeP', size 'wP,hP'.
+ * if (*ptypeP == PIC8), also returns numcols 'ncP', and the r,g,b map
+ * to use rmapP, gmapP, bmapP.
+ *
+- * if freeP is set, image can safely be freed after it is saved
++ * if freeP is set, image can safely be freed after it is saved
+ */
+
+ byte *pic1, *pic2;
+@@ -1896,9 +2144,9 @@
+
+ pic1 = handleNormSel(&ptype, &w, &h, &pfree);
+
+- pic2 = handleBWandReduced(pic1, ptype, w,h, MBWhich(&colMB),
++ pic2 = handleBWandReduced(pic1, ptype, w,h, MBWhich(&colMB),
+ ncP, rmapP, gmapP, bmapP);
+- if (pic2) {
++ if (pic2) {
+ if (pfree) free(pic1);
+ pic1 = pic2;
+ pfree = 1;
+@@ -1906,7 +2154,7 @@
+ }
+
+
+- if (ptype == PIC24) {
++ if (ptype == PIC24) {
+ pic2 = GammifyPic24(pic1, w, h);
+ if (pic2) {
+ if (pfree) free(pic1);
+@@ -1920,7 +2168,7 @@
+ return pic1;
+ }
+
+-
++
+ /***************************************/
+ void GetSaveSize(wP, hP)
+ int *wP, *hP;
+@@ -1947,7 +2195,7 @@
+ CoordP2E(x2,y2, &x2, &y2);
+ slx = x1; sly = y1; slw = x2-x1; slh = y2-y1;
+ CropRect2Rect(&slx, &sly, &slw, &slh, 0,0,eWIDE,eHIGH);
+-
++
+ if (slw<1 || slh<1) { slx = sly = 0; slw=eWIDE; slh=eHIGH; }
+ }
+ }
+@@ -1982,8 +2230,8 @@
+
+ if (stat(namelist[curname], &origStat)==0) {
+ haveStat = 1;
+- if (DEBUG) fprintf(stderr," origStat.size=%ld, origStat.mtime=%d\n",
+- origStat.st_size, origStat.st_mtime);
++ if (DEBUG) fprintf(stderr," origStat.size=%ld, origStat.mtime=%ld\n",
++ (long)origStat.st_size, (long)origStat.st_mtime);
+ }
+ }
+ }
+@@ -1993,7 +2241,7 @@
+ int CheckPoll(del)
+ int del;
+ {
+- /* returns '1' if the file has been modified, and either
++ /* returns '1' if the file has been modified, and either
+ A) the file has stabilized (st = lastStat), or
+ B) 'del' seconds have gone by since the file last changed size
+ */
+@@ -2007,14 +2255,14 @@
+ (strcmp(namelist[curname], STDINSTR)!=0)) {
+
+ if (stat(namelist[curname], &st)==0) {
+- if (DEBUG) fprintf(stderr," st.size=%ld, st.mtime=%d\n",
+- st.st_size, st.st_mtime);
++ if (DEBUG) fprintf(stderr," st.size=%ld, st.mtime=%ld\n",
++ (long)st.st_size, (long)st.st_mtime);
+
+ if ((st.st_size == origStat.st_size) &&
+ (st.st_mtime == origStat.st_mtime)) return 0; /* no change */
+
+ /* if it's changed since last looked ... */
+- if (!haveLastStat ||
++ if (!haveLastStat ||
+ st.st_size != lastStat.st_size ||
+ st.st_mtime != lastStat.st_mtime) {
+ xvbcopy((char *) &st, (char *) &lastStat, sizeof(struct stat));
+@@ -2031,7 +2279,7 @@
+ }
+ }
+ }
+-
++
+ return 0;
+ }
+
+@@ -2042,14 +2290,13 @@
+ {
+ /* called when file 'name' has been deleted. If any of the browsers
+ were showing the directory that the file was in, does a rescan() */
+-
+- int i;
++
+ char buf[MAXPATHLEN + 2], *tmp;
+
+ strcpy(buf, name);
+- tmp = BaseName(buf);
++ tmp = (char *) BaseName(buf); /* intentionally losing constness */
+ *tmp = '\0'; /* truncate after last '/' */
+-
++
+ if (strcmp(path, buf)==0) LoadCurrentDirectory();
+ }
+
+@@ -2062,3 +2309,164 @@
+ }
+
+
++#ifdef HAVE_PIC2
++/**** Stuff for PIC2Dialog box ****/
++FILE *pic2_OpenOutFile(filename, append)
++char *filename;
++int *append;
++{
++ /* opens file for output. does various error handling bits. Returns
++ an open file pointer if success, NULL if failure */
++
++ FILE *fp = NULL;
++ struct stat st;
++
++ if (!filename || filename[0] == '\0')
++ return (NULL);
++ strcpy(outFName, filename);
++ dopipe = 0;
++
++ /* make sure we're in the correct directory */
++#ifdef AUTO_EXPAND
++ if (strlen(path)) Chvdir(path);
++#else
++ if (strlen(path)) chdir(path);
++#endif
++
++ if (ISPIPE(filename[0])) { /* do piping */
++ /* make up some bogus temp file to put this in */
++#ifndef VMS
++ sprintf(outFName, "%s/xvXXXXXX", tmpdir);
++#else
++ strcpy(outFName, "[]xvXXXXXX.lis");
++#endif
++#ifdef USE_MKSTEMP
++ fp = fdopen(mkstemp(outFName), "w");
++#else
++ mktemp(outFName);
++#endif
++ dopipe = 1;
++ }
++
++
++ /* see if file exists (i.e., we're overwriting) */
++ *append = 0;
++#ifdef USE_MKSTEMP
++ if (!dopipe)
++#endif
++ if (stat(outFName, &st)==0) { /* stat succeeded, file must exist */
++ if (ReadFileType(outFName) != RFT_PIC2) {
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char str[512];
++
++ sprintf(str,"Overwrite existing file '%s'?", outFName);
++ if (PopUp(str, labels, 2))
++ return (NULL);
++ } else {
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char str[512];
++
++ sprintf(str,"Append to existing file '%s'?", outFName);
++ if (PopUp(str, labels, 2)) {
++ sprintf(str,"Overwrite existing file '%s'?", outFName);
++ if (PopUp(str, labels, 2))
++ return (NULL);
++ } else
++ *append = 1;
++ }
++ }
++
++ /* Open file */
++#ifdef USE_MKSTEMP
++ if (!dopipe)
++#endif
++ fp = *append ? fopen(outFName, "r+") : fopen(outFName, "w");
++ if (!fp) {
++ char str[512];
++ sprintf(str,"Can't write file '%s'\n\n %s.",outFName, ERRSTR(errno));
++ ErrPopUp(str, "\nBummer");
++ return (NULL);
++ }
++
++ return (fp);
++}
++
++
++/***************************************/
++void pic2_KillNullFile(fp)
++FILE *fp;
++{
++ fseek(fp, (size_t) 0, SEEK_END);
++ if (ftell(fp) > 0) {
++ fclose(fp);
++ return;
++ } else {
++ fclose(fp);
++ unlink(outFName);
++ return;
++ }
++}
++#endif /* HAVE_PIC2 */
++
++
++#ifdef HAVE_MGCSFX
++/**** Stuff for MGCSFX Dialog box ****/
++/***************************************/
++int OpenOutFileDesc(filename)
++ char *filename;
++{
++ /* opens file for output. does various error handling bits. Returns
++ an open file pointer if success, NULL if failure */
++
++ int fd;
++ struct stat st;
++
++ if (!filename || filename[0] == '\0') return -1;
++ strcpy(outFName, filename);
++ dopipe = 0;
++
++ /* make sure we're in the correct directory */
++#ifdef AUTO_EXPAND
++ if (strlen(path)) Chvdir(path);
++#else
++ if (strlen(path)) chdir(path);
++#endif
++
++ if (ISPIPE(filename[0])) { /* do piping */
++ /* make up some bogus temp file to put this in */
++#ifndef VMS
++ sprintf(outFName, "%s/xvXXXXXX", tmpdir);
++#else
++ strcpy(outFName, "[]xvXXXXXX.lis");
++#endif
++#ifdef USE_MKSTEMP
++ close(mkstemp(outFName));
++#else
++ mktemp(outFName);
++#endif
++ dopipe = 1;
++ }
++
++
++ /* if didn't just create it, see if file exists (i.e., we're overwriting) */
++ if (!dopipe && stat(outFName, &st)==0) { /* stat succeeded, file exists */
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++ char str[512];
++
++ sprintf(str,"Overwrite existing file '%s'?", outFName);
++ if (PopUp(str, labels, 2)) return -1;
++ }
++
++
++ /* Open file */
++ fd = open(outFName, O_WRONLY | O_CREAT | O_TRUNC, (0644));
++ if (fd < 0) {
++ char str[512];
++ sprintf(str,"Can't write file '%s'\n\n %s.", outFName, ERRSTR(errno));
++ ErrPopUp(str, "\nBummer");
++ return -1;
++ }
++
++ return fd;
++}
++#endif /* HAVE_MGCSFX */
+diff -ru xv-3.10a/xvevent.c xv-3.10a-enhancements/xvevent.c
+--- xv-3.10a/xvevent.c 1995-01-23 15:20:24.000000000 -0800
++++ xv-3.10a-enhancements/xvevent.c 2007-05-12 15:27:11.000000000 -0700
+@@ -39,8 +39,15 @@
+ static Cursor dropper = 0, pen = 0, blur = 0;
+
+
++static void SelectDispMB PARM((int));
++static void Select24to8MB PARM((int));
++static void SelectRootMB PARM((int));
++static void SelectWindowMB PARM((int));
++static void SelectSizeMB PARM((int));
++
++static void DoPrint PARM((void));
+ static void debugEvent PARM((XEvent *));
+-static char *win2name PARM((Window));
++static const char *win2name PARM((Window));
+ static void handleButtonEvent PARM((XEvent *, int *, int *));
+ static void handleKeyEvent PARM((XEvent *, int *, int *));
+ static void zoomCurs PARM((u_int));
+@@ -64,6 +71,8 @@
+
+ static void annotatePic PARM((void));
+
++static int debkludge_offx;
++static int debkludge_offy;
+
+ /****************/
+ int EventLoop()
+@@ -71,13 +80,25 @@
+ {
+ XEvent event;
+ int retval,done,waiting;
+- time_t orgtime, curtime;
++#ifdef USE_TICKS
++ clock_t waitsec_ticks=0L, orgtime_ticks=0L, curtime_ticks;
++ clock_t elapsed_ticks=0L, remaining_interval;
++#else
++ time_t orgtime=0L, curtime;
++#endif
+
+
+ #ifndef NOSIGNAL
+ signal(SIGQUIT, onInterrupt);
+ #endif
+
++ if (startGrab == 1) {
++ startGrab = 2;
++ FakeButtonPress(&but[BGRAB]);
++ FakeKeyPress(ctrlW, XK_Return);
++ return(1);
++ }
++
+ /* note: there's no special event handling if we're using the root window.
+ if we're using the root window, we will recieve NO events for mainW */
+
+@@ -100,18 +121,24 @@
+
+ while (!done) {
+
+- if (waitsec > -1 && canstartwait && !waiting && XPending(theDisp)==0) {
+- /* we wanna wait, we can wait, we haven't started waiting yet, and
+- all pending events (ie, drawing the image the first time)
++ if (waitsec >= 0.0 && canstartwait && !waiting && XPending(theDisp)==0) {
++ /* we wanna wait, we can wait, we haven't started waiting yet, and
++ all pending events (ie, drawing the image the first time)
+ have been dealt with: START WAITING */
+- time((time_t *) &orgtime);
++#ifdef USE_TICKS
++ waitsec_ticks = (clock_t)(waitsec * CLK_TCK);
++ orgtime_ticks = times(NULL); /* unclear if NULL valid, but OK on Linux */
++#else
++ orgtime = time(NULL);
++#endif
+ waiting = 1;
+ }
+
+
+- /* if there's an XEvent pending *or* we're not doing anything
++ /* if there's an XEvent pending *or* we're not doing anything
+ in real-time (polling, flashing the selection, etc.) get next event */
+- if ((waitsec==-1 && !polling && !HaveSelection()) || XPending(theDisp)>0) {
++ if ((waitsec<0.0 && !polling && !HaveSelection()) || XPending(theDisp)>0)
++ {
+ XNextEvent(theDisp, &event);
+ retval = HandleEvent(&event,&done);
+ }
+@@ -121,7 +148,7 @@
+ DrawSelection(0);
+ DrawSelection(1);
+ XFlush(theDisp);
+- Timer(200);
++ Timer(200); /* milliseconds */
+ }
+
+ if (polling) {
+@@ -129,13 +156,32 @@
+ else if (!XPending(theDisp)) sleep(1);
+ }
+
+- if (waitsec>-1 && waiting) {
+- time((time_t *) &curtime);
+- if (curtime - orgtime < waitsec) sleep(1);
+- else {
+- if (waitloop) return NEXTLOOP;
+- else return NEXTQUIT;
+- }
++ if (waitsec>=0.0 && waiting) {
++#ifdef USE_TICKS
++ curtime_ticks = times(NULL); /* value in ticks */
++ if (curtime_ticks < orgtime_ticks) {
++ /* clock ticks rolled over: need to correct for that (i.e.,
++ * curtime_ticks is presumably quite small, while orgtime_ticks
++ * should be close to LONG_MAX, so do math accordingly--any way
++ * to check whether clock_t is *not* a signed long?) */
++ elapsed_ticks = curtime_ticks + (LONG_MAX - orgtime_ticks);
++ } else
++ elapsed_ticks = curtime_ticks - orgtime_ticks;
++ remaining_interval = waitsec_ticks - elapsed_ticks;
++ if (remaining_interval >= (clock_t)(1 * CLK_TCK))
++ sleep(1);
++ else {
++ /* less than one second remaining: do delay in msec, then return */
++ Timer((remaining_interval * 1000L) / CLK_TCK); /* can't overflow */
++ return waitloop? NEXTLOOP : NEXTQUIT;
++ }
++#else
++ curtime = time(NULL); /* value in seconds */
++ if (curtime - orgtime < (time_t)waitsec)
++ sleep(1);
++ else
++ return waitloop? NEXTLOOP : NEXTQUIT;
++#endif
+ }
+ }
+ } /* while (!done) */
+@@ -154,7 +200,27 @@
+ int *donep;
+ {
+ static int wasInfoUp=0, wasCtrlUp=0, wasDirUp=0, wasGamUp=0, wasPsUp=0;
+- static int wasJpegUp=0, wasTiffUp=0;
++#ifdef HAVE_JPEG
++ static int wasJpegUp=0;
++#endif
++#ifdef HAVE_JP2K
++ static int wasJp2kUp=0;
++#endif
++#ifdef HAVE_TIFF
++ static int wasTiffUp=0;
++#endif
++#ifdef HAVE_PNG
++ static int wasPngUp=0;
++#endif
++#ifdef HAVE_PCD
++ static int wasPcdUp=0;
++#endif
++#ifdef HAVE_PIC2
++ static int wasPic2Up=0;
++#endif
++#ifdef HAVE_MGCSFX
++ static int wasMgcSfxUp=0;
++#endif
+
+ static int mainWKludge=0; /* force first mainW expose after a mainW config
+ to redraw all of mainW */
+@@ -187,7 +253,7 @@
+
+ #ifdef VMS
+ static int borders_sized = 0;
+-
++
+ if (!borders_sized && !useroot && exp_event->window == mainW) {
+ /*
+ * Initial expose of main window, find the size of the ancestor
+@@ -198,13 +264,13 @@
+ int status, count, mwid, mhgt, x, y, w, h, b, d, mbrd;
+ Window root, parent, *children, crw = exp_event->window;
+ borders_sized = 1;
+- status = XGetGeometry(theDisp, crw,
++ status = XGetGeometry(theDisp, crw,
+ &root, &x, &y, &mwid, &mhgt, &mbrd, &d);
+-
++
+ for ( parent = crw, w=mwid, h=mhgt;
+ status && (parent != root) && (parent != vrootW); ) {
+ crw = parent;
+- status = XQueryTree ( theDisp, crw, &root, &parent,
++ status = XQueryTree ( theDisp, crw, &root, &parent,
+ &children, &count );
+ if ( children != NULL ) XFree ( children );
+ }
+@@ -221,7 +287,7 @@
+ win = exp_event->window;
+ x = exp_event->x; y = exp_event->y;
+ w = exp_event->width; h = exp_event->height;
+-
++
+ if (PUCheckEvent (event)) break; /* event has been processed */
+ if (PSCheckEvent (event)) break; /* event has been processed */
+
+@@ -229,16 +295,42 @@
+ if (JPEGCheckEvent(event)) break; /* event has been processed */
+ #endif
+
++#ifdef HAVE_JP2K
++ if (JP2KCheckEvent(event)) break; /* event has been processed */
++#endif
++
+ #ifdef HAVE_TIFF
+ if (TIFFCheckEvent(event)) break; /* event has been processed */
+ #endif
+
++#ifdef HAVE_PNG
++ if (PNGCheckEvent (event)) break; /* event has been processed */
++#endif
++
++ if (PCDCheckEvent(event)) break; /* event has been processed */
++
++#ifdef HAVE_PIC2
++ if (PIC2CheckEvent(event)) break; /* event has been processed */
++#endif
++
++#ifdef HAVE_PCD
++ if (PCDCheckEvent (event)) break; /* event has been processed */
++#endif
++
++#ifdef HAVE_MGCSFX
++ if (MGCSFXCheckEvent(event)) break; /* event has been processed */
++#endif
++
++#ifdef TV_MULTILINGUAL
++ if (CharsetCheckEvent(event)) break; /* event has been processed */
++#endif
++
+ if (GamCheckEvent (event)) break; /* event has been processed */
+ if (BrowseCheckEvent (event, &retval, &done)) break; /* event eaten */
+ if (TextCheckEvent (event, &retval, &done)) break; /* event eaten */
+
+ /* if the window doesn't do intelligent redraw, drop but last expose */
+- if (exp_event->count>0 &&
++ if (exp_event->count>0 &&
+ win != mainW && win != ctrlW && win != dirW && win != infoW) break;
+
+
+@@ -301,7 +393,7 @@
+ if (DEBUG) fprintf(stderr,"No configs pending.\n");
+ /* if (DEBUG) XClearArea(theDisp, mainW, x,y,w,h, False); */
+ DrawWindow(x,y,w,h);
+-
++
+ if (HaveSelection()) DrawSelection(0);
+
+ canstartwait = 1; /* finished drawing */
+@@ -314,7 +406,7 @@
+ else if (win == infoW) RedrawInfo(x,y,w,h);
+ else if (win == ctrlW) RedrawCtrl(x,y,w,h);
+ else if (win == dirW) RedrawDirW(x,y,w,h);
+-
++
+ XSetClipMask(theDisp, theGC, None);
+ XDestroyRegion(reg);
+ }
+@@ -324,10 +416,10 @@
+ else if (win == dList.win) LSRedraw(&dList,0);
+ else if (win == dList.scrl.win) SCRedraw(&dList.scrl);
+ else if (win == dnamW) RedrawDNamW();
+- }
++ }
+ break;
+
+-
++
+
+ case ClientMessage: {
+ Atom proto, delwin;
+@@ -344,6 +436,9 @@
+
+ if (BrowseDelWin(client_event->window)) break;
+ if (TextDelWin(client_event->window)) break;
++#ifdef TV_MULTILINGUAL
++ if (CharsetDelWin(client_event->window)) break;
++#endif
+
+ if (client_event->window == infoW) InfoBox(0);
+ else if (client_event->window == gamW) GamBox(0);
+@@ -355,10 +450,32 @@
+ else if (client_event->window == jpegW) JPEGDialog(0);
+ #endif
+
++#ifdef HAVE_JP2K
++ else if (client_event->window == jp2kW) JP2KDialog(0);
++#endif
++
+ #ifdef HAVE_TIFF
+ else if (client_event->window == tiffW) TIFFDialog(0);
+ #endif
+
++#ifdef HAVE_PNG
++ else if (client_event->window == pngW) PNGDialog(0);
++#endif
++
++ else if (client_event->window == pcdW) PCDDialog(0);
++
++#ifdef HAVE_PIC2
++ else if (client_event->window == pic2W) PIC2Dialog(0);
++#endif
++
++#ifdef HAVE_PCD
++ else if (client_event->window == pcdW) PCDDialog(0);
++#endif
++
++#ifdef HAVE_MGCSFX
++ else if (client_event->window == mgcsfxW) MGCSFXDialog(0);
++#endif
++
+ else if (client_event->window == mainW) Quit(0);
+ }
+ }
+@@ -381,31 +498,35 @@
+ if (win==ctrlW || win==gamW || win==infoW || win==mainW || win==dirW) {
+ XSizeHints hints;
+
++#define BAD_IDEA
++#ifdef BAD_IDEA
+ /*
+- * if there's a virtual window manager running (e.g. tvtwm / olvwm),
+- * we're going to get 'cevt' values in terms of the
++ * if there is a virtual window manager running (e.g., tvtwm / olvwm),
++ * we're going to get 'cevt' values in terms of the
+ * 'real' root window (the one that is the size of the screen).
+ * We'll want to translate them into values that are in terms of
+ * the 'virtual' root window (the 'big' one)
+ */
+
+ if (vrootW != rootW) {
+- int x1,y1; Window child;
++ int x1,y1;
++ Window child;
+
+- XTranslateCoordinates(theDisp, rootW, vrootW, cevt->x, cevt->y,
++ XTranslateCoordinates(theDisp, rootW, vrootW, cevt->x, cevt->y,
+ &x1, &y1, &child);
+ if (DEBUG) fprintf(stderr," CONFIG trans %d,%d root -> %d,%d vroot\n",
+ cevt->x, cevt->y, x1, y1);
+ cevt->x = x1; cevt->y = y1;
+ }
++#endif
+
+ #ifndef VMS
+ /* read hints for this window and adjust any position hints, but
+- only if this is a 'synthetic' event sent to us by the WM
++ only if this is a 'synthetic' event sent to us by the WM
+ ('real' events from the server have useless x,y info, since the
+ mainW has been reparented by the WM) */
+
+- if (cevt->send_event &&
++ if (cevt->send_event &&
+ XGetNormalHints(theDisp, cevt->window, &hints)) {
+
+ if (DEBUG) fprintf(stderr," CONFIG got hints (0x%x %d,%d)\n",
+@@ -439,11 +560,11 @@
+ * This sucks!
+ *
+ * So, if we have just loaded an image, and we get a Synthetic conf
+- * that is not the desired size (eWIDExeHIGH), ignore it, as it's
++ * that is not the desired size (eWIDExeHIGH), ignore it, as it's
+ * just the conf generated by moving the old window. And stop
+ * ignoring further config events
+ *
+- * EVIL KLUDGE: do *not* ignore configs that are <100x100. Not
++ * EVIL KLUDGE: do *not* ignore configs that are <100x100. Not
+ * ignoring them won't be a big performance problem, and it'll get
+ * around the 'I only got one config in the wrong size' problem when
+ * initially displaying small images
+@@ -453,7 +574,7 @@
+
+ /* fprintf(stderr,"***mainw, ignore=%d, send_event=%d, evtSize=%d,%d, size=%d,%d\n", ignoreConfigs, cevt->send_event, cevt->width, cevt->height, eWIDE, eHIGH); */
+
+- if (ignoreConfigs==1 && cevt->send_event &&
++ if (ignoreConfigs==1 && cevt->send_event &&
+ (cevt->width != eWIDE || cevt->height != eHIGH)) {
+ ignoreConfigs=0; /* ignore this one only */
+ break;
+@@ -470,7 +591,7 @@
+ else {
+ XEvent xev;
+ if (DEBUG) fprintf(stderr,"No configs pend.");
+-
++
+ if (cevt->width == eWIDE && cevt->height == eHIGH) {
+ if (DEBUG) fprintf(stderr,"No redraw\n");
+ }
+@@ -478,12 +599,12 @@
+ if (DEBUG) fprintf(stderr,"Do full redraw\n");
+
+ Resize(cevt->width, cevt->height);
+-
++
+ /* eat any pending expose events and do a full redraw */
+ while (XCheckTypedWindowEvent(theDisp, mainW, Expose, &xev)) {
+ XExposeEvent *exp = (XExposeEvent *) &xev;
+
+- if (DEBUG)
++ if (DEBUG)
+ fprintf(stderr," ate expose (%s) (count=%d) %d,%d %dx%d\n",
+ exp->send_event ? "synth" : "real", exp->count,
+ exp->x, exp->y, exp->width, exp->height);
+@@ -508,9 +629,9 @@
+
+ }
+ break;
+-
+
+-
++
++
+ case CirculateNotify:
+ case DestroyNotify:
+ case GravityNotify: break;
+@@ -534,10 +655,24 @@
+ #ifdef HAVE_JPEG
+ if (wasJpegUp) { JPEGDialog(wasJpegUp); wasJpegUp=0; }
+ #endif
+-
++#ifdef HAVE_JP2K
++ if (wasJp2kUp) { JP2KDialog(wasJpegUp); wasJp2kUp=0; }
++#endif
+ #ifdef HAVE_TIFF
+ if (wasTiffUp) { TIFFDialog(wasTiffUp); wasTiffUp=0; }
+ #endif
++#ifdef HAVE_PNG
++ if (wasPngUp) { PNGDialog(wasPngUp); wasPngUp=0; }
++#endif
++#ifdef HAVE_PCD
++ if (wasPcdUp) { PCDDialog(wasPcdUp); wasPcdUp=0; }
++#endif
++#ifdef HAVE_PIC2
++ if (wasPic2Up) { PIC2Dialog(wasPic2Up); wasPic2Up=0; }
++#endif
++#ifdef HAVE_MGCSFX
++ if (wasMgcSfxUp) { MGCSFXDialog(wasMgcSfxUp); wasMgcSfxUp=0; }
++#endif
+ }
+ }
+ }
+@@ -554,7 +689,7 @@
+
+ /* don't do it if we've just switched to a root mode */
+ if ((unmap_event->window == mainW && dispMode == 0) ||
+- (unmap_event->window == ctrlW && dispMode != 0)) {
++ (unmap_event->window == ctrlW && dispMode != 0)) {
+
+ if (autoclose) {
+ if (autoclose>1) autoclose -= 2; /* grab kludge */
+@@ -572,10 +707,24 @@
+ #ifdef HAVE_JPEG
+ if (jpegUp) { wasJpegUp = jpegUp; JPEGDialog(0); }
+ #endif
+-
++#ifdef HAVE_JP2K
++ if (jp2kUp) { wasJp2kUp = jp2kUp; JP2KDialog(0); }
++#endif
+ #ifdef HAVE_TIFF
+ if (tiffUp) { wasTiffUp = tiffUp; TIFFDialog(0); }
+ #endif
++#ifdef HAVE_PNG
++ if (pngUp) { wasPngUp = pngUp; PNGDialog(0); }
++#endif
++#ifdef HAVE_PCD
++ if (pcdUp) { wasPcdUp = pcdUp; PCDDialog(0); }
++#endif
++#ifdef HAVE_PIC2
++ if (pic2Up) { wasPic2Up = pic2Up; PIC2Dialog(0); }
++#endif
++#ifdef HAVE_MGCSFX
++ if (mgcsfxUp) { wasMgcSfxUp = mgcsfxUp; MGCSFXDialog(0); }
++#endif
+ }
+ }
+ }
+@@ -586,8 +735,8 @@
+ XReparentEvent *reparent_event = (XReparentEvent *) event;
+
+ if (DEBUG) {
+- fprintf(stderr,"Reparent: mainW=%x ->win=%x ->ev=%x ->parent=%x ",
+- (u_int) mainW, (u_int) reparent_event->window,
++ fprintf(stderr,"Reparent: mainW=%x ->win=%x ->ev=%x ->parent=%x ",
++ (u_int) mainW, (u_int) reparent_event->window,
+ (u_int) reparent_event->event, (u_int) reparent_event->parent);
+ fprintf(stderr,"%d,%d\n", reparent_event->x, reparent_event->y);
+ }
+@@ -598,7 +747,7 @@
+
+ p_offx = p_offy = 0; /* topleft correction for WMs titlebar */
+
+- if (ch_offx == 0 && ch_offy == 0) {
++ if (ch_offx == 0 && ch_offy == 0) {
+ /* looks like the user is running MWM or OLWM */
+
+ XWindowAttributes xwa;
+@@ -609,8 +758,8 @@
+
+ XSync(theDisp, False);
+ XGetWindowAttributes(theDisp, mainW, &xwa);
+-
+- if (DEBUG)
++
++ if (DEBUG)
+ fprintf(stderr,"XGetAttr: mainW %d,%d %dx%d\n", xwa.x, xwa.y,
+ xwa.width, xwa.height);
+
+@@ -620,8 +769,8 @@
+
+ XSync(theDisp, False);
+ XGetWindowAttributes(theDisp, reparent_event->parent, &xwa);
+-
+- if (DEBUG)
++
++ if (DEBUG)
+ fprintf(stderr,"XGetAttr: parent %d,%d %dx%d\n", xwa.x, xwa.y,
+ xwa.width, xwa.height);
+ }
+@@ -641,42 +790,75 @@
+ p_offy = xwa.y;
+ }
+
+-
++ /* Gather info to keep right border inside */
++ {
++ Window current;
++ Window root_r;
++ Window parent_r;
++ Window *children_r;
++ unsigned int nchildren_r;
++ XWindowAttributes xwa;
++
++ parent_r=mainW;
++ current=mainW;
++ do {
++ current=parent_r;
++ XQueryTree(theDisp, current, &root_r, &parent_r,
++ &children_r, &nchildren_r);
++ if (children_r!=NULL) {
++ XFree(children_r);
++ }
++ } while (parent_r!=root_r && parent_r!=vrootW);
++ XGetWindowAttributes(theDisp, current, &xwa);
++ debkludge_offx = eWIDE-xwa.width+p_offx;
++ debkludge_offy = eHIGH-xwa.height+p_offy;
++ }
++
++#if 0
++ /* FIXME: if we want to do this, we first have to wait for a configure
++ * notify to avoid a race condition because the location might be in-
++ * correct if the window manager does placement after managing the window.
++ */
+ /* move window around a bit... */
+ {
+ XWindowAttributes xwa;
++
+ GetWindowPos(&xwa);
++ //fprintf(stderr, "RAC: orig window pos %d,%d\n", xwa.x, xwa.y);
++
+ xwa.width = eWIDE; xwa.height = eHIGH;
+-
++ //fprintf(stderr, "RAC: image size now %d,%d\n", xwa.width, xwa.height);
++
+ /* try to keep the damned thing on-screen, if possible */
+- if (xwa.x + xwa.width > dispWIDE) xwa.x = dispWIDE - xwa.width;
+- if (xwa.y + xwa.height > dispHIGH) xwa.y = dispHIGH - xwa.height;
++ if (xwa.x + xwa.width > vrWIDE) xwa.x = vrWIDE - xwa.width;
++ if (xwa.y + xwa.height > vrHIGH) xwa.y = vrHIGH - xwa.height;
+ if (xwa.x < 0) xwa.x = 0;
+ if (xwa.y < 0) xwa.y = 0;
+-
++
++ //fprintf(stderr, "RAC: moving window to %d,%d\n", xwa.x, xwa.y);
+ SetWindowPos(&xwa);
+ }
+-
++#endif
+ }
+ }
+ break;
+-
++
+
+ case EnterNotify:
+ case LeaveNotify: {
+ XCrossingEvent *cross_event = (XCrossingEvent *) event;
+ if (cross_event->window == mainW || 0
+ /* (cross_event->window == gamW && cmapInGam) */ ) {
+-
++
+ if (cross_event->type == EnterNotify && cross_event->window == mainW) {
+ zoomCurs(cross_event->state);
+ }
+
+
+- if (cross_event->type == EnterNotify && LocalCmap && !ninstall)
++ if (cross_event->type == EnterNotify && LocalCmap && !ninstall)
+ XInstallColormap(theDisp,LocalCmap);
+
+- if (cross_event->type == LeaveNotify && LocalCmap && !ninstall)
++ if (cross_event->type == LeaveNotify && LocalCmap && !ninstall)
+ XUninstallColormap(theDisp,LocalCmap);
+ }
+ }
+@@ -685,12 +867,12 @@
+
+ case SelectionClear: break;
+
+- case SelectionRequest:
++ case SelectionRequest:
+ {
+ XSelectionRequestEvent *xsrevt = (XSelectionRequestEvent *) event;
+ XSelectionEvent xse;
+
+- if (xsrevt->owner != ctrlW ||
++ if (xsrevt->owner != ctrlW ||
+ xsrevt->selection != XA_PRIMARY ||
+ xsrevt->target != XA_STRING) { /* can't do it. */
+ xse.property = None;
+@@ -702,7 +884,7 @@
+ if (xse.property != None) {
+ xerrcode = 0;
+ XChangeProperty(theDisp, xsrevt->requestor, xse.property,
+- XA_STRING, 8, PropModeReplace,
++ XA_STRING, 8, PropModeReplace,
+ (byte *) ((xevPriSel) ? xevPriSel : "\0"),
+ (int) ((xevPriSel) ? strlen(xevPriSel)+1 : 1));
+ XSync(theDisp, False);
+@@ -721,9 +903,9 @@
+ XSync(theDisp, False);
+ }
+ break;
+-
+-
+-
++
++
++
+ default: break; /* ignore unexpected events */
+ } /* switch */
+
+@@ -734,11 +916,11 @@
+
+
+ /***********************************/
+-void SelectDispMB(i)
++static void SelectDispMB(i)
+ int i;
+ {
+ /* called to handle selection of a dispMB item */
+-
++
+ if (i<0 || i>=DMB_MAX) return;
+
+ if (dispMB.dim[i]) return; /* disabled */
+@@ -747,36 +929,36 @@
+ if (i==DMB_RAW) epicMode = EM_RAW;
+ else if (i==DMB_DITH) epicMode = EM_DITH;
+ else epicMode = EM_SMOOTH;
+-
+- SetEpicMode();
++
++ SetEpicMode();
+ GenerateEpic(eWIDE, eHIGH);
+ DrawEpic();
+ SetCursors(-1);
+ }
+-
++
+ else if (i==DMB_COLRW) { /* toggle rw on/off */
+ dispMB.flags[i] = !dispMB.flags[i];
+ allocMode = (dispMB.flags[i]) ? AM_READWRITE : AM_READONLY;
+ ChangeCmapMode(colorMapMode, 1, 0);
+ }
+-
++
+ else if (i>=DMB_COLNORM && i<=DMB_COLSTDC && !dispMB.flags[i]) {
+ switch (i) {
+- case DMB_COLNORM:
+- ChangeCmapMode(CM_NORMAL, 1, 0);
+- defaultCmapMode = CM_NORMAL;
++ case DMB_COLNORM:
++ ChangeCmapMode(CM_NORMAL, 1, 0);
++ defaultCmapMode = CM_NORMAL;
+ break;
+- case DMB_COLPERF:
++ case DMB_COLPERF:
+ ChangeCmapMode(CM_PERFECT,1, 0);
+- defaultCmapMode = CM_PERFECT;
++ defaultCmapMode = CM_PERFECT;
+ break;
+- case DMB_COLOWNC:
++ case DMB_COLOWNC:
+ ChangeCmapMode(CM_OWNCMAP,1, 0);
+- defaultCmapMode = CM_OWNCMAP;
++ defaultCmapMode = CM_OWNCMAP;
+ break;
+- case DMB_COLSTDC:
++ case DMB_COLSTDC:
+ ChangeCmapMode(CM_STDCMAP,1, 0);
+- defaultCmapMode = CM_STDCMAP;
++ defaultCmapMode = CM_STDCMAP;
+ break;
+ }
+ }
+@@ -784,27 +966,27 @@
+
+
+ /***********************************/
+-void SelectRootMB(i)
++static void SelectRootMB(i)
+ int i;
+ {
+ /* called to handle selection of a rootMB item */
+-
++
+ if (i<0 || i>=RMB_MAX) return;
+ if (rootMB.flags[i]) return;
+ if (rootMB.dim[i]) return;
+
+ dispMode = i;
+-
++
+ /* move checkmark */
+ for (i=RMB_WINDOW; i<RMB_MAX; i++) rootMB.flags[i] = 0;
+ rootMB.flags[dispMode] = 1;
+-
++
+ HandleDispMode();
+ }
+
+
+ /***********************************/
+-void Select24to8MB(i)
++static void Select24to8MB(i)
+ int i;
+ {
+ if (i<0 || i>=CONV24_MAX) return;
+@@ -818,25 +1000,25 @@
+ else if (i==CONV24_24BIT && state824==1) {
+ /* went 24->8->24 */
+ char buf[512];
+-
++
+ sprintf(buf,"Warning: You appear to have taken a 24-bit ");
+ strcat(buf, "image, turned it to an 8-bit image, and turned ");
+ strcat(buf, "it back into a 24-bit image. Understand that ");
+ strcat(buf, "image data has probably been lost in this ");
+ strcat(buf, "transformation. You *may* want to reload the ");
+ strcat(buf, "original image to avoid this problem.");
+-
++
+ ErrPopUp(buf, "\nI Know!");
+-
++
+ state824 = 2; /* shut up until next image is loaded */
+ }
+ }
+ }
+-
++
+ else if (i==CONV24_LOCK) {
+ conv24MB.flags[i] = !conv24MB.flags[i];
+ }
+-
++
+ else if (i>=CONV24_FAST && i<=CONV24_BEST) {
+ conv24 = i;
+ for (i=CONV24_FAST; i<=CONV24_BEST; i++) {
+@@ -847,7 +1029,7 @@
+
+
+ /***********************************/
+-void SelectWindowMB(i)
++static void SelectWindowMB(i)
+ int i;
+ {
+ if (i<0 || i>=WMB_MAX) return;
+@@ -859,15 +1041,15 @@
+ else chdir(initdir);
+ OpenBrowse();
+ break;
+-
++
+ case WMB_COLEDIT: GamBox (!gamUp); break;
+ case WMB_INFO: InfoBox(!infoUp); break;
+-
+- case WMB_COMMENT:
++
++ case WMB_COMMENT:
+ if (!commentUp) OpenCommentText();
+ else CloseCommentText();
+ break;
+-
++
+ case WMB_TEXTVIEW: textViewCmd(); break;
+ case WMB_ABOUTXV: ShowLicense(); break;
+ case WMB_KEYHELP: ShowKeyHelp(); break;
+@@ -878,7 +1060,7 @@
+
+
+ /***********************************/
+-void SelectSizeMB(i)
++static void SelectSizeMB(i)
+ int i;
+ {
+ int w,h;
+@@ -892,19 +1074,19 @@
+ double r,wr,hr;
+ wr = ((double) cWIDE) / maxWIDE;
+ hr = ((double) cHIGH) / maxHIGH;
+-
++
+ r = (wr>hr) ? wr : hr; /* r is the max(wr,hr) */
+ w = (int) ((cWIDE / r) + 0.5);
+ h = (int) ((cHIGH / r) + 0.5);
+ }
+ else { w = cWIDE; h = cHIGH; }
+-
++
+ WResize(w, h);
+ break;
+
+ case SZMB_MAXPIC: WMaximize(); break;
+
+- case SZMB_MAXPECT:
++ case SZMB_MAXPECT:
+ {
+ int w1,h1;
+ w1 = eWIDE; h1 = eHIGH;
+@@ -925,24 +1107,24 @@
+ if (h==eHIGH) h++;
+ WResize(w,h);
+ break;
+-
+-
++
++
+ case SZMB_SETSIZE: setSizeCmd(); break;
+ case SZMB_ASPECT: FixAspect(1, &w, &h); WResize(w,h); break;
+
+- case SZMB_4BY3:
++ case SZMB_4BY3:
+ w = eWIDE; h = (w * 3) / 4;
+ if (h>maxHIGH) { h = eHIGH; w = (h*4)/3; }
+ WResize(w,h);
+ break;
+
+- case SZMB_INTEXP:
++ case SZMB_INTEXP:
+ {
+ /* round (eWIDE/cWIDE),(eHIGH/cHIGH) to nearest
+ integer expansion/compression values */
+-
++
+ double w,h;
+-
++
+ if (eWIDE >= cWIDE) {
+ w = ((double) eWIDE) / cWIDE;
+ w = floor(w + 0.5);
+@@ -961,7 +1143,7 @@
+ }
+ w = pick;
+ }
+-
++
+ if (eHIGH >= cHIGH) {
+ h = ((double) eHIGH) / cHIGH;
+ h = floor(h + 0.5);
+@@ -980,25 +1162,26 @@
+ }
+ h = pick;
+ }
+-
++
+ WResize((int) (w*cWIDE), (int) (h*cHIGH));
+ }
+ break;
+-
++
+ default: break;
+ }
+ }
+
+
+ /***********************************/
+-void DoPrint()
++static void DoPrint()
+ {
+ /* pops open appropriate dialog boxes, issues print command */
+
+- int i;
+- char txt[512], str[PRINTCMDLEN + 10];
+- static char *labels[] = { " Color", " Grayscale", " B/W", "\033Cancel" };
+-
++ int i;
++ char txt[512], str[PRINTCMDLEN + 10];
++ static const char *labels[] = { "\03Color", "\07Grayscale", " B/W", "\033Cancel" };
++ /* ^B ("\02") already used for moving cursor back */
++
+ strcpy(txt, "Print: Enter a command that will read a PostScript file ");
+ strcat(txt, "from stdin and print it to the desired printer.\n\n");
+ #ifndef VMS
+@@ -1011,11 +1194,11 @@
+ if (i == 3 || strlen(printCmd)==0) return; /* CANCEL */
+
+ if (dirUp == BLOAD) DirBox(0);
+-
++
+ SetDirSaveMode(F_FORMAT, F_PS);
+ SetDirSaveMode(F_COLORS, i);
+
+- if (printCmd[0] != '|' && printCmd[0] != '!')
++ if (printCmd[0] != '|' && printCmd[0] != '!')
+ sprintf(str, "| %s", printCmd);
+ else strcpy(str, printCmd);
+
+@@ -1086,11 +1269,11 @@
+ }
+ }
+
+-static char *win2name(win)
++static const char *win2name(win)
+ Window win;
+ {
+ static char foo[16];
+-
++
+ if (win == mainW) return "mainW";
+ else if (win == rootW) return "rootW";
+ else if (win == vrootW) return "vrootW";
+@@ -1106,7 +1289,7 @@
+ }
+ }
+
+-
++
+ /***********************************/
+ static void handleButtonEvent(event, donep, retvalp)
+ XEvent *event;
+@@ -1127,38 +1310,60 @@
+ case ButtonPress:
+ /* *always* check for pop-up events, as errors can happen... */
+ if (PUCheckEvent (event)) break;
+-
++
+ if (autoquit && win == mainW) Quit(0);
+-
++
+ if (viewonly) break; /* ignore all other button presses */
+-
++
+ if (win == mainW && !useroot && showzoomcursor) {
+ DoZoom(x, y, but_event->button);
+ break;
+ }
+-
++
+ if (PSCheckEvent (event)) break;
+-
++
+ #ifdef HAVE_JPEG
+ if (JPEGCheckEvent(event)) break;
+ #endif
+-
++
++#ifdef HAVE_JP2K
++ if (JP2KCheckEvent(event)) break;
++#endif
++
+ #ifdef HAVE_TIFF
+ if (TIFFCheckEvent(event)) break;
+ #endif
+-
++
++#ifdef HAVE_PNG
++ if (PNGCheckEvent (event)) break;
++#endif
++
++#ifdef HAVE_PCD
++ if (PCDCheckEvent (event)) break; /* event has been processed */
++#endif
++
++#ifdef HAVE_PIC2
++ if (PIC2CheckEvent(event)) break;
++#endif
++
++#ifdef HAVE_MGCSFX
++ if (MGCSFXCheckEvent(event)) break;
++#endif
++
++#ifdef TV_MULTILINGUAL
++ if (CharsetCheckEvent(event)) break;
++#endif
++
+ if (GamCheckEvent (event)) break;
+ if (BrowseCheckEvent (event, &retval, &done)) break;
+ if (TextCheckEvent (event, &retval, &done)) break;
+-
++
+ switch (but_event->button) {
+-
+- case Button1:
++
++ case Button1:
+ if (win == mainW) DoSelection(but_event);
+-
++
+ else if (win == ctrlW) {
+- int w,h;
+-
+ if (MBClick(&dispMB, x,y)) SelectDispMB (MBTrack(&dispMB) );
+ else if (MBClick(&conv24MB, x,y)) Select24to8MB (MBTrack(&conv24MB));
+ else if (MBClick(&rootMB, x,y)) SelectRootMB (MBTrack(&rootMB) );
+@@ -1170,9 +1375,9 @@
+ if (i>=0) DoAlg(i);
+ break;
+ }
+-
++
+ i=ClickCtrl(x,y);
+-
++
+ switch (i) {
+ case BNEXT: retval= NEXTPIC; done=1; break;
+ case BPREV: retval= PREVPIC; done=1; break;
+@@ -1192,21 +1397,21 @@
+ case BROTR: Rotate(0); break;
+ case BFLIPH: Flip(0); break;
+ case BFLIPV: Flip(1); break;
+-
++
+ case BCROP: Crop(); break;
+ case BUNCROP: UnCrop(); break;
+ case BACROP: AutoCrop(); break;
+-
++
+ case BPAD:
+ {
+ int mode, wide, high, opaque, omode; char *str;
+-
++
+ while (PadPopUp(&mode, &str, &wide, &high, &opaque, &omode)==0) {
+- if (DoPad(mode, str, wide, high, opaque, omode)) {
++ if (DoPad(mode, str, wide, high, opaque, omode)) {
+ done = 1; retval = PADDED; break;
+ }
+- }
+- }
++ }
++ }
+ break;
+
+ case BANNOT: annotatePic(); break;
+@@ -1214,85 +1419,127 @@
+ case BABOUT: SelectWindowMB(WMB_ABOUTXV); break;
+ case BXV: retval = DFLTPIC; done=1; break;
+ case BQUIT: retval = QUIT; done=1; break;
+-
++
+ default: break;
+ }
+-
++
+ if (i==BFLIPH || i==BFLIPV) {
+ DrawEpic();
+ SetCursors(-1);
+ }
+ }
+-
++
+ else if (win == nList.win) {
+ i=LSClick(&nList,but_event);
+ if (curname<0) ActivePrevNext();
+ if (i>=0) { done = 1; retval = i; }
+ }
+-
++
+ else if (win == nList.scrl.win) SCTrack(&nList.scrl, x, y);
+-
++
+ else if (win == dirW) {
+ i=ClickDirW(x,y);
+-
++
+ switch (i) {
+ case S_BOK: if (dirUp == BLOAD) {
+- if (!DirCheckCD()) {
+- retval = LOADPIC;
+- done=1;
++ if (!DirCheckCD()) {
++ retval = LOADPIC;
++ done=1;
++ }
++ }
++ else if (dirUp == BSAVE) {
++ DoSave();
+ }
+- }
+- else if (dirUp == BSAVE) {
+- DoSave();
+- }
+ break;
+-
++
+ case S_BCANC: DirBox(0); break;
+-
++
+ case S_BRESCAN:
+ WaitCursor(); LoadCurrentDirectory(); SetCursors(-1);
+ break;
+ }
+ }
+-
++
+ else if (win == dList.win) {
+ i=LSClick(&dList,but_event);
+ SelectDir(i);
+ }
+-
++
+ else if (win == dList.scrl.win) SCTrack(&dList.scrl, x,y);
+ else if (win == infoW) InfoBox(0); /* close info */
+-
++
+ break;
+-
+-
+- case Button2:
++
++
++ case Button2:
+ if (win == mainW && !useroot) {
+ if (!shift && !DoSelection(but_event)) TrackPicValues(x,y);
+ else if (shift) Paint();
+ }
+ break;
+-
++
+ case Button3: /* if using root, MUST NOT get rid of ctrlbox. */
+- if (!shift && !useroot) CtrlBox(!ctrlUp);
++ if (!shift && !useroot) CtrlBox(!ctrlUp);
+ else if (shift) BlurPaint();
+ break;
+-
++
++ case Button4: /* note min vs. max, + vs. - */
++ if (win == ctrlW || win == nList.win || win == nList.scrl.win) {
++ SCRL *sp=&nList.scrl;
++ int halfpage=sp->page/2;
++
++ if (sp->val > sp->min+halfpage)
++ SCSetVal(sp,sp->val-halfpage);
++ else
++ SCSetVal(sp,sp->min);
++ }
++ else if (win == dirW || win == dList.win || win == dList.scrl.win) {
++ SCRL *sp=&dList.scrl;
++ int halfpage=sp->page/2;
++
++ if (sp->val > sp->min+halfpage)
++ SCSetVal(sp,sp->val-halfpage);
++ else
++ SCSetVal(sp,sp->min);
++ }
++ break;
++
++ case Button5: /* note max vs. min, - vs. + */
++ if (win == ctrlW || win == nList.win || win == nList.scrl.win) {
++ SCRL *sp=&nList.scrl;
++ int halfpage=sp->page/2;
++
++ if (sp->val < sp->max-halfpage)
++ SCSetVal(sp,sp->val+halfpage);
++ else
++ SCSetVal(sp,sp->max);
++ }
++ else if (win == dirW || win == dList.win || win == dList.scrl.win) {
++ SCRL *sp=&dList.scrl;
++ int halfpage=sp->page/2;
++
++ if (sp->val < sp->max-halfpage)
++ SCSetVal(sp,sp->val+halfpage);
++ else
++ SCSetVal(sp,sp->max);
++ }
++ break;
++
+ default: break;
+ }
+ }
+-
++
+ *donep = done; *retvalp = retval;
+ }
+
+-
++
+ /***********************************/
+ static void handleKeyEvent(event, donep, retvalp)
+ XEvent *event;
+ int *donep, *retvalp;
+ {
+ /* handles KeyPress and KeyRelease events, called from HandleEvent */
+-
++
+ XKeyEvent *key_event;
+ KeySym ks;
+ char buf[128];
+@@ -1306,26 +1553,26 @@
+ switch (event->type) {
+ case KeyRelease:
+ if (viewonly) break; /* ignore all user input */
+-
++
+ stlen = XLookupString(key_event,buf,128,&ks,(XComposeStatus *) NULL);
+ dealt = 0;
+-
++
+ if (key_event->window == mainW) {
+ u_int foo = key_event->state;
+
+- if (ks == XK_Shift_L || ks == XK_Shift_R)
++ if (ks == XK_Shift_L || ks == XK_Shift_R)
+ foo = foo & (u_int) (~ShiftMask);
+- if (ks == XK_Control_L || ks == XK_Control_R)
++ if (ks == XK_Control_L || ks == XK_Control_R)
+ foo = foo & (u_int) (~ControlMask);
+- if (ks == XK_Meta_L || ks == XK_Meta_R)
++ if (ks == XK_Meta_L || ks == XK_Meta_R)
+ foo = foo & (u_int) (~Mod1Mask);
+- if (ks == XK_Alt_L || ks == XK_Alt_R)
++ if (ks == XK_Alt_L || ks == XK_Alt_R)
+ foo = foo & (u_int) (~Mod1Mask);
+
+ zoomCurs(foo);
+ }
+ break;
+-
++
+
+ case KeyPress:
+ svkeystate = key_event->state;
+@@ -1343,11 +1590,11 @@
+ if (PUCheckEvent (event)) break; /* always check popups */
+
+ if (autoquit && key_event->window == mainW) Quit(0);
+-
++
+ if (viewonly && !frominterrupt) break; /* ignore all user input */
+-
++
+ if (PSCheckEvent (event)) break;
+-
++
+ if (key_event->window == mainW) {
+ u_int foo = key_event->state;
+
+@@ -1362,20 +1609,43 @@
+ if (JPEGCheckEvent(event)) break;
+ #endif
+
++#ifdef HAVE_JP2K
++ if (JP2KCheckEvent(event)) break;
++#endif
++
+ #ifdef HAVE_TIFF
+ if (TIFFCheckEvent(event)) break;
+ #endif
+
++#ifdef HAVE_PNG
++ if (PNGCheckEvent (event)) break;
++#endif
++
++ if (PCDCheckEvent (event)) break;
++
++#ifdef HAVE_PIC2
++ if (PIC2CheckEvent(event)) break;
++#endif
++
++#ifdef HAVE_PCD
++ if (PCDCheckEvent (event)) break;
++#endif
++
++#ifdef HAVE_MGCSFX
++ if (MGCSFXCheckEvent(event)) break;
++#endif
++
+ if (GamCheckEvent (event)) break;
+ if (BrowseCheckEvent (event, &retval, &done)) break;
+ if (TextCheckEvent (event, &retval, &done)) break;
+
+
+- /* check for pageup/pagedown, 'p' in main window
+- (you can use shift-up or shift-down if no crop rectangle drawn)
+- (for viewing multipage docs) */
++ /* Support for multi-image files ("multipage docs"). Check for PgUp/PgDn
++ or 'p' in any window but control or directory; PgUp/PgDn are already
++ used to page through the file list in those windows. If no cropping
++ rectangle is active, shift-Up and shift-Down also work. */
+
+- if (key_event->window == mainW) {
++ if (key_event->window != ctrlW && key_event->window != dirW) {
+ dealt = 1;
+
+ ck = CursorKey(ks, shift, 0);
+@@ -1386,7 +1656,7 @@
+ else XBell(theDisp,0);
+ }
+
+- else if (ck==CK_PAGEDOWN ||
++ else if (ck==CK_PAGEDOWN ||
+ (ck==CK_DOWN && shift && !but[BCROP].active)) {
+ if (strlen(pageBaseName) && numPages>1) {
+ done = 1; retval = OP_PAGEDN;
+@@ -1396,9 +1666,9 @@
+
+ else if (buf[0] == 'p' && stlen>0) {
+ if (strlen(pageBaseName) && numPages>1) {
+- int i,j, okay;
+- char buf[64], txt[512];
+- static char *labels[] = { "\nOk", "\033Cancel" };
++ int i,j, okay;
++ char buf[64], txt[512];
++ static const char *labels[] = { "\nOk", "\033Cancel" };
+
+ /* ask what page to go to */
+ sprintf(txt, "Go to page number... (1-%d)", numPages);
+@@ -1429,7 +1699,7 @@
+
+ if (dealt) break;
+ }
+-
++
+
+
+ /* check for crop rect keys */
+@@ -1468,15 +1738,17 @@
+ if (theList == &dList && dealt) { /* changed dir selection */
+ SelectDir(-1); /* nothing was double-clicked */
+ }
+-
++
+ if (dealt) break;
+ }
+
+
+ /* check dir filename arrows */
+- ck = CursorKey(ks, shift, 1);
+- if (key_event->window == dirW && ck==CK_LEFT) { DirKey('\002'); break; }
+- if (key_event->window == dirW && ck==CK_RIGHT) { DirKey('\006'); break; }
++ if (key_event->window == dirW) {
++ ck = CursorKey(ks, shift, 1);
++ if (ck==CK_LEFT) { DirKey('\002'); break; }
++ if (ck==CK_RIGHT) { DirKey('\006'); break; }
++ }
+
+
+ /* check for preset keys (meta-1, meta-2, meta-3, meta-4, meta-0)
+@@ -1491,7 +1763,7 @@
+ else if (ks==XK_2) FakeButtonPress(&gbut[G_B2]);
+ else if (ks==XK_3) FakeButtonPress(&gbut[G_B3]);
+ else if (ks==XK_4) FakeButtonPress(&gbut[G_B4]);
+- else if (ks==XK_r || ks==XK_0)
++ else if (ks==XK_r || ks==XK_0)
+ FakeButtonPress(&gbut[G_BRESET]);
+
+ else if (ks==XK_x) FakeButtonPress(&but[BCUT]);
+@@ -1521,7 +1793,7 @@
+
+ else if (ks==XK_a) FakeButtonPress(&gbut[G_BAPPLY]);
+
+- else if (ks==XK_8) {
++ else if (ks==XK_8) {
+ if (picType==PIC8) Select24to8MB(CONV24_24BIT);
+ else Select24to8MB(CONV24_8BIT);
+ }
+@@ -1530,20 +1802,47 @@
+
+ if (dealt) break;
+ }
+-
++
++ /* Check for function keys */
++ if (key_event->window == ctrlW || key_event->window == mainW) {
++ if (ks >= XK_F1 && ks <= XK_F1 + FSTRMAX - 1) {
++ int fkey = ks - XK_F1;
++ if (fkeycmds[fkey] && fullfname[0]) {
++#define CMDLEN 4096
++ char cmd[CMDLEN];
++ /* If a command begins with '@', we do not reload the current file */
++ int noreload = (fkeycmds[fkey][0] == '@');
++ int x = 0, y = 0, w = 0, h = 0;
++ if (HaveSelection())
++ GetSelRCoords(&x, &y, &w, &h);
++ snprintf(cmd, CMDLEN, fkeycmds[fkey] + noreload, fullfname, x, y, w, h);
++#undef CMDLEN
++ if (DEBUG) fprintf(stderr, "Executing '%s'\n", cmd);
++ WaitCursor();
++ system(cmd);
++ SetCursors(-1);
++ if (!noreload) {
++ retval = RELOAD;
++ done = 1;
++ }
++ break;
++ }
++ }
++ }
++
+ if (!stlen) break;
+-
++
+ if (key_event->window == dirW) {
+ if (DirKey(buf[0])) XBell(theDisp,0);
+ }
+ else { /* commands valid in any window */
+ switch (buf[0]) {
+-
++
+ /* things in dispMB */
+ case 'r': SelectDispMB(DMB_RAW); break;
+ case 'd': SelectDispMB(DMB_DITH); break;
+ case 's': SelectDispMB(DMB_SMOOTH); break;
+-
++
+ /* things in sizeMB */
+ case 'n': SelectSizeMB(SZMB_NORM); break;
+ case 'm': SelectSizeMB(SZMB_MAXPIC); break;
+@@ -1556,7 +1855,7 @@
+ case 'a': SelectSizeMB(SZMB_ASPECT); break;
+ case '4': SelectSizeMB(SZMB_4BY3); break;
+ case 'I': SelectSizeMB(SZMB_INTEXP); break;
+-
++
+ /* things in windowMB */
+ case '\026':
+ case 'V': SelectWindowMB(WMB_BROWSE); break; /* ^V or V */
+@@ -1565,36 +1864,36 @@
+ case '\003': SelectWindowMB(WMB_COMMENT); break; /* ^C */
+ case '\024': SelectWindowMB(WMB_TEXTVIEW); break; /* ^T */
+ case '\001': SelectWindowMB(WMB_ABOUTXV); break; /* ^A */
+-
+-
+-
++
++
++
+ /* buttons in ctrlW */
+ case '\t':
+ case ' ': FakeButtonPress(&but[BNEXT]); break;
+-
++
+ case '\r':
+ case '\n':
+ if (nList.selected >= 0 && nList.selected < nList.nstr) {
+- done = 1; retval = nList.selected;
++ done = 1; retval = nList.selected;
+ if (frominterrupt) retval = RELOAD;
+ }
+ break;
+-
+- case '\010':
+- case '\177': FakeButtonPress(&but[BPREV]); break;
+-
+-
++
++ case '\010': FakeButtonPress(&but[BPREV]); break;
++
++
+ case '\014': FakeButtonPress(&but[BLOAD]); break; /* ^L */
+ case '\023': FakeButtonPress(&but[BSAVE]); break; /* ^S */
+ case '\020': FakeButtonPress(&but[BPRINT]); break; /* ^P */
++ case '\177':
+ case '\004': FakeButtonPress(&but[BDELETE]); break; /* ^D */
+-
++
+ /* BCOPY, BCUT, BPASTE, BCLEAR handled in 'meta' case */
+-
++
+ case '\007': FakeButtonPress(&but[BGRAB]); break; /* ^G */
+-
++
+ /* BUP10, BDN10 handled in sizeMB case */
+-
++
+ case 'T': FakeButtonPress(&but[BROTL]); break;
+ case 't': FakeButtonPress(&but[BROTR]); break;
+ case 'h': FakeButtonPress(&but[BFLIPH]); break;
+@@ -1604,24 +1903,24 @@
+ case 'C': FakeButtonPress(&but[BACROP]); break;
+ case 'P': FakeButtonPress(&but[BPAD]); break;
+ case 'A': FakeButtonPress(&but[BANNOT]); break;
+-
++
+ /* BABOUT handled in windowMB case */
+-
++
+ case '\021': /* ^Q */
+ case 'q': FakeButtonPress(&but[BQUIT]); break;
+-
++
+ case '?': if (!useroot) CtrlBox(!ctrlUp); break;
+-
++
+ /* things in color editor */
+ case 'R': FakeButtonPress(&gbut[G_BRESET]); break;
+ case 'H': FakeButtonPress(&gbut[G_BHISTEQ]); break;
+ case 'N': FakeButtonPress(&gbut[G_BMAXCONT]); break;
+-
++
+ default: break;
+ }
+ }
+ }
+-
++
+ *donep = done; *retvalp = retval;
+ }
+
+@@ -1657,7 +1956,7 @@
+ else name = namelist[i];
+
+ TextView(name);
+-
++
+ if (name != namelist[i]) free(name);
+ }
+
+@@ -1668,10 +1967,10 @@
+ /* open 'set size' prompt window, get a string, parse it, and try to
+ set the window size accordingly */
+
+- int i, arg1, arg2, numargs, pct1, pct2, state, neww, newh;
+- char txt[512], buf[64], *sp, ch;
+- static char *labels[] = { "\nOk", "\033Cancel" };
+-
++ int i, arg1, arg2, numargs, pct1, pct2, state, neww, newh;
++ char txt[512], buf[64], *sp, ch;
++ static const char *labels[] = { "\nOk", "\033Cancel" };
++
+ sprintf(txt, "Enter new image display size (ex. '400 x 300'),\n");
+ strcat (txt, "expansion ratio (ex. '75%'),\n");
+ strcat (txt, "or expansion ratios (ex. '200% x 125%'):");
+@@ -1685,7 +1984,7 @@
+
+
+ /* attempt to parse the string accordingly...
+- * parses strings of the type: <num> [%] [ x <num> [%] ]
++ * parses strings of the type: <num> [%] [ x <num> [%] ]
+ * (-ish. <num> all by itself isn't legal)
+ * there may be any # of spaces between items, including zero
+ */
+@@ -1825,7 +2124,7 @@
+
+ if (theImage)
+ XPutImage(theDisp,mainW,theGC,theImage,x,y,x,y, (u_int) w, (u_int) h);
+- else
++ else
+ if (DEBUG) fprintf(stderr,"Tried to DrawWindow when theImage was NULL\n");
+ }
+
+@@ -1845,12 +2144,14 @@
+ return;
+ }
+
++ GetWindowPos(&xwa);
++
+ /* determine if new size goes off edge of screen. if so move window so it
+ doesn't go off screen */
+-
+- GetWindowPos(&xwa);
+ if (xwa.x + w > vrWIDE) xwa.x = vrWIDE - w;
+ if (xwa.y + h > vrHIGH) xwa.y = vrHIGH - h;
++ if (xwa.x < 0) xwa.x = 0;
++ if (xwa.y < 0) xwa.y = 0;
+
+ if (DEBUG) fprintf(stderr,"%s: resizing window to %d,%d at %d,%d\n",
+ cmd,w,h,xwa.x,xwa.y);
+@@ -1872,7 +2173,7 @@
+ XWindowAttributes xwa;
+ xvbzero((char *) &xwa, sizeof(XWindowAttributes));
+ xwa.x = xwa.y = 0;
+- xwa.width = dispWIDE;
++ xwa.width = dispWIDE;
+ xwa.height = dispHIGH;
+ SetWindowPos(&xwa);
+ }
+@@ -1898,14 +2199,14 @@
+ rotatesLeft++;
+ XClearWindow(theDisp, mainW); /* get rid of old bits */
+ GenExpose(mainW, 0, 0, (u_int) eWIDE, (u_int) eHIGH);
+- { int ew, eh;
++ { int ew, eh;
+ ew = eWIDE; eh = eHIGH;
+ WResize(eWIDE, eHIGH);
+ if (ew>maxWIDE || eh>maxHIGH) { /* rotated pic too big, scale down */
+ double r,wr,hr;
+ wr = ((double) ew) / maxWIDE;
+ hr = ((double) eh) / maxHIGH;
+-
++
+ r = (wr>hr) ? wr : hr; /* r is the max(wr,hr) */
+ ew = (int) ((ew / r) + 0.5);
+ eh = (int) ((eh / r) + 0.5);
+@@ -1920,7 +2221,7 @@
+ void WCrop(w,h,dx,dy)
+ int w,h,dx,dy;
+ {
+- int cx, cy, cw, ch, ex, ey;
++ int ex, ey;
+ XWindowAttributes xwa;
+
+ if (useroot) {
+@@ -1931,7 +2232,7 @@
+ else {
+ /* we want to move window to old x,y + dx,dy (in pic coords) */
+ GetWindowPos(&xwa);
+-
++
+ if (!origcropvalid) { /* first crop. remember win pos */
+ origcropvalid = 1;
+ origcropx = xwa.x;
+@@ -1939,7 +2240,7 @@
+ }
+
+ CoordC2E(dx, dy, &ex, &ey);
+-
++
+ xwa.x += ex; xwa.y += ey;
+ xwa.width = w; xwa.height = h;
+ GenExpose(mainW, 0, 0, (u_int) eWIDE, (u_int) eHIGH);
+@@ -1974,13 +2275,14 @@
+ xwa.y = origcropy;
+ }
+
+- if (xwa.x + w > vrWIDE) xwa.x = vrWIDE - w; /* keep on screen */
++ /* keep on screen */
++ if (xwa.x + w > vrWIDE) xwa.x = vrWIDE - w;
+ if (xwa.y + h > vrHIGH) xwa.y = vrHIGH - h;
++ if (xwa.x < 0) xwa.x = 0;
++ if (xwa.y < 0) xwa.y = 0;
+
+- if (xwa.x<0) xwa.x = 0;
+- if (xwa.y<0) xwa.y = 0;
+ xwa.width = w; xwa.height = h;
+-
++
+ if (!useroot) {
+ SetWindowPos(&xwa);
+ GenExpose(mainW, 0, 0, (u_int) eWIDE, (u_int) eHIGH);
+@@ -1995,8 +2297,8 @@
+ XWindowAttributes *xwa;
+ {
+ Window child;
+-
+- /* returns the x,y,w,h coords of mainW. x,y are relative to rootW
++
++ /* returns the x,y,w,h coords of mainW. x,y are relative to rootW
+ the border is not included (x,y map to top-left pixel in window) */
+
+ /* Get the window width/height */
+@@ -2023,36 +2325,58 @@
+
+ /* if we're less than max size in one axis, allow window manager doohickeys
+ on the screen */
+-
++
+ if (xwa->width < dispWIDE && xwc.x < p_offx) xwc.x = p_offx;
+ if (xwa->height < dispHIGH && xwc.y < p_offy) xwc.y = p_offy;
+
++ /* Try to keep bottom right decorations inside */
++#ifdef CRAP
++ if (xwc.x+eWIDE-debkludge_offx>dispWIDE) {
++ xwc.x=dispWIDE-eWIDE+debkludge_offx;
++ if (xwc.x<0) xwc.x=0;
++ }
++ if (xwc.y+eHIGH-debkludge_offy>dispHIGH) {
++ xwc.y=dispHIGH-eHIGH+debkludge_offy;
++ if (xwc.y<0) xwc.y=0;
++ }
++#else
++ if (xwc.x+eWIDE+p_offx>dispWIDE) {
++ xwc.x=dispWIDE-(eWIDE+debkludge_offx);
++ if (xwc.x<0) xwc.x=0;
++ }
++ if (xwc.y+eHIGH+p_offy>dispHIGH) {
++ xwc.y=dispHIGH-(eHIGH+debkludge_offy);
++ if (xwc.y<0) xwc.y=0;
++ }
++#endif
++
+ xwc.width = xwa->width;
+ xwc.height = xwa->height;
+
+-
++#define BAD_IDEA
+ #ifdef BAD_IDEA
+ /* if there is a virtual window manager running, then we should translate
+ the coordinates that are in terms of 'real' screen into coordinates
+- that are in terms of the 'virtual' root window
++ that are in terms of the 'virtual' root window
+ from: Daren W. Latham <dwl@mentat.udev.cdc.com> */
+-
++
+ if (vrootW != rootW) { /* virtual window manager running */
+ int x1,y1;
+ Window child;
+- XTranslateCoordinates(theDisp, rootW, vrootW,xwc.x,xwc.y,&x1,&y1,&child);
++
++ XTranslateCoordinates(theDisp, rootW, vrootW, xwc.x, xwc.y, &x1, &y1, &child);
+ if (DEBUG) fprintf(stderr,"SWP: translate: %d,%d -> %d,%d\n",
+- xwc.x,xwc.y,x1,y1);
++ xwc.x, xwc.y, x1, y1);
+ xwc.x = x1; xwc.y = y1;
+ }
+-#endif
++#endif
+
+
+ if (DEBUG) {
+ fprintf(stderr,
+ "SWP: xwa=%d,%d %dx%d xwc=%d,%d %dx%d off=%d,%d bw=%d klg=%d,%d\n",
+ xwa->x, xwa->y, xwa->width, xwa->height,
+- xwc.x, xwc.y, xwc.width, xwc.height, p_offx, p_offy,
++ xwc.x, xwc.y, xwc.width, xwc.height, p_offx, p_offy,
+ xwa->border_width, kludge_offx, kludge_offy);
+ }
+
+@@ -2080,7 +2404,7 @@
+
+ /* all non-DXWM window managers (?) */
+ /* Move/Resize the window. */
+- XConfigureWindow(theDisp, mainW,
++ XConfigureWindow(theDisp, mainW,
+ CWX | CWY | CWWidth | CWHeight /*| CWBorderWidth*/, &xwc);
+ }
+
+@@ -2090,7 +2414,7 @@
+ static void CropKey(dx,dy,grow,crop)
+ int dx,dy,grow,crop;
+ {
+- int x1,x2,y1,y2,active, ocx, ocy;
++ int ocx, ocy;
+
+ if (crop) { /* chop off a pixel from the appropriate edge */
+ int dealt=1;
+@@ -2112,7 +2436,7 @@
+ }
+ return;
+ }
+-
++
+ if (grow) MoveGrowSelection(0, 0, dx, dy);
+ else MoveGrowSelection(dx, dy, 0, 0);
+ }
+@@ -2128,7 +2452,7 @@
+ u_long wh, bl;
+ int ty, w, ecol, done1;
+ char foo[128];
+- char *str =
++ const char *str =
+ "8888,8888 = 123,123,123 #123456 (123,123,123 HSV) [-2345,-2345]";
+
+ ecol = 0; wh = infobg; bl = infofg;
+@@ -2136,14 +2460,14 @@
+ if (!dropper) {
+ Pixmap pix, mask;
+ XColor cfg, cbg;
+-
++
+ cfg.red = cfg.green = cfg.blue = 0x0000;
+ cbg.red = cbg.green = cbg.blue = 0xffff;
+-
++
+ pix = MakePix1(rootW, dropper_bits, dropper_width, dropper_height);
+ mask= MakePix1(rootW, dropperm_bits, dropperm_width, dropperm_height);
+- if (pix && mask)
+- dropper = XCreatePixmapCursor(theDisp, pix, mask, &cfg, &cbg,
++ if (pix && mask)
++ dropper = XCreatePixmapCursor(theDisp, pix, mask, &cfg, &cbg,
+ dropper_x_hot, dropper_y_hot);
+ if (pix) XFreePixmap(theDisp, pix);
+ if (mask) XFreePixmap(theDisp, mask);
+@@ -2151,7 +2475,7 @@
+
+ if (dropper) XDefineCursor(theDisp, mainW, dropper);
+
+- /* do a colormap search for black and white if LocalCmap
++ /* do a colormap search for black and white if LocalCmap
+ and use those colors instead of infobg and infofg */
+
+ if (LocalCmap) {
+@@ -2159,7 +2483,7 @@
+
+ for (i=0; i<nfcols; i++) ctab[i].pixel = freecols[i];
+ XQueryColors(theDisp,LocalCmap,ctab,nfcols);
+-
++
+ /* find 'blackest' pixel */
+ cval = 0x10000 * 3;
+ for (i=0; i<nfcols; i++)
+@@ -2176,7 +2500,7 @@
+ wh = ctab[i].pixel;
+ }
+ }
+-
++
+
+ XSetFont(theDisp, theGC, monofont);
+ w = XTextWidth(monofinfo, str, (int) strlen(str));
+@@ -2185,7 +2509,7 @@
+ else ty = eHIGH-(monofinfo->ascent + mfinfo->descent)-4;
+
+ XSetForeground(theDisp, theGC, bl);
+- XFillRectangle(theDisp, mainW, theGC, 0, ty, (u_int) w + 8,
++ XFillRectangle(theDisp, mainW, theGC, 0, ty, (u_int) w + 8,
+ (u_int) (monofinfo->ascent+monofinfo->descent) + 4);
+ XSetForeground(theDisp, theGC, wh);
+ XSetBackground(theDisp, theGC, bl);
+@@ -2198,15 +2522,15 @@
+
+ if (!XQueryPointer(theDisp,mainW,&rW,&cW,&rx,&ry,&x,&y,&mask)) continue;
+ if (done1 && !(mask & Button2Mask)) break; /* button released */
+-
++
+ CoordE2P(x,y, &px, &py);
+- RANGE(px,0,pWIDE-1);
++ RANGE(px,0,pWIDE-1);
+ RANGE(py,0,pHIGH-1);
+-
++
+ if (px!=ox || py!=oy || !done1) { /* moved, or firsttime. erase & draw */
+ double h1, s1, v1;
+ int rval, gval, bval;
+-
++
+ if (picType == PIC8) {
+ ecol = pix = pic[py * pWIDE + px];
+ rval = rcmap[pix]; gval = gcmap[pix]; bval = bcmap[pix];
+@@ -2216,7 +2540,7 @@
+ gval = pic[py * pWIDE * 3 + px * 3 + 1];
+ bval = pic[py * pWIDE * 3 + px * 3 + 2];
+ }
+-
++
+ clearR = rval; clearG = gval; clearB = bval;
+
+ rgb2hsv(rval, gval, bval, &h1, &s1, &v1);
+@@ -2229,8 +2553,8 @@
+ px, py, rval, gval, bval, rval, gval, bval,
+ (int) h1, (int) (s1 * 100), (int) (v1 * 100),
+ px-orgx, py-orgy);
+-
+- XDrawImageString(theDisp,mainW,theGC, 4, ty + 2 + monofinfo->ascent,
++
++ XDrawImageString(theDisp,mainW,theGC, 4, ty + 2 + monofinfo->ascent,
+ foo, (int) strlen(foo));
+ ox = px; oy = py;
+ done1 = 1;
+@@ -2275,7 +2599,7 @@
+
+ /* returns true if there's a config event in which mainW changes size
+ in the event queue */
+-
++
+ XSync(theDisp, False);
+ foo = 0;
+ XCheckIfEvent(theDisp, &ev, IsConfig, &foo);
+@@ -2328,7 +2652,7 @@
+ * BadMatch errors on XGetImage
+ */
+
+- if ((xerrcode == BadAlloc) ||
++ if ((xerrcode == BadAlloc) ||
+ (xerrcode == BadAccess && err->request_code==88 /* X_FreeColors */ ) ||
+ (err->request_code == 113 /* X_KillClient */ ) ||
+ (xerrcode == BadLength && err->request_code==18 /* X_ChangeProp */ ) ||
+@@ -2361,17 +2685,39 @@
+ {
+ /* but first, if any input-grabbing popups are active, we have to 'cancel'
+ them. */
+-
++
+ if (psUp) PSDialog(0); /* close PS window */
+
+ #ifdef HAVE_JPEG
+ if (jpegUp) JPEGDialog(0); /* close jpeg window */
+ #endif
+
++#ifdef HAVE_JP2K
++ if (jp2kUp) JP2KDialog(0); /* close jpeg 2000 window */
++#endif
++
+ #ifdef HAVE_TIFF
+ if (tiffUp) TIFFDialog(0); /* close tiff window */
+ #endif
+
++#ifdef HAVE_PNG
++ if (pngUp) PNGDialog(0); /* close png window */
++#endif
++
++ if (pcdUp) PCDDialog(0); /* close pcd window */
++
++#ifdef HAVE_PIC2
++ if (pic2Up) PIC2Dialog(0); /* close pic2 window */
++#endif
++
++#ifdef HAVE_PCD
++ if (pcdUp) PCDDialog(0); /* close pcd window */
++#endif
++
++#ifdef HAVE_MGCSFX
++ if (mgcsfxUp) MGCSFXDialog(0); /* close mgcsfx window */
++#endif
++
+ ClosePopUp();
+
+ /* make the interrupt signal look like a '\n' keypress in ctrlW */
+@@ -2400,14 +2746,14 @@
+ if (!pen) {
+ Pixmap pix, pmask;
+ XColor cfg, cbg;
+-
++
+ cfg.red = cfg.green = cfg.blue = 0x0000;
+ cbg.red = cbg.green = cbg.blue = 0xffff;
+-
++
+ pix = MakePix1(rootW, pen_bits, pen_width, pen_height);
+ pmask= MakePix1(rootW, penm_bits, penm_width, penm_height);
+- if (pix && pmask)
+- pen = XCreatePixmapCursor(theDisp, pix, pmask, &cfg, &cbg,
++ if (pix && pmask)
++ pen = XCreatePixmapCursor(theDisp, pix, pmask, &cfg, &cbg,
+ pen_x_hot, pen_y_hot);
+ if (pix) XFreePixmap(theDisp, pix);
+ if (pmask) XFreePixmap(theDisp, pmask);
+@@ -2416,7 +2762,7 @@
+ if (pen) XDefineCursor(theDisp, mainW, pen);
+
+
+- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
++ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
+ | StructureNotifyMask /* | ButtonPressMask */
+ | KeyReleaseMask | ColormapChangeMask
+ | EnterWindowMask | LeaveWindowMask );
+@@ -2435,7 +2781,7 @@
+
+ switch (state) {
+ case 0: /* initial state: make sure we do one pixel */
+- px1 = lx = px; py1 = ly = py;
++ px1 = lx = px; py1 = ly = py;
+ paintPixel(px, py);
+
+ if (nmask & ShiftMask ) state = 99;
+@@ -2444,7 +2790,7 @@
+ else state = 10;
+ break;
+
+-
++
+ case 1: /* waiting for click */
+ if (nmask & ShiftMask) state = 99;
+ else if ( mask & Button2Mask) {
+@@ -2459,7 +2805,7 @@
+ }
+ break;
+
+-
++
+ case 10: /* in freehand drawing mode */
+ if (nmask & ShiftMask ) state = 99;
+ else if (nmask & Button2Mask) state = 1;
+@@ -2507,11 +2853,11 @@
+ XSync(theDisp, False);
+ Timer(100);
+ }
+-
++
+ if (nmask & Button2Mask) seenRelease = 1;
+ }
+ break;
+-
++
+ case 99: /* EXIT loop: cleanup */
+ if (line) { /* erase old xor-line */
+ paintXLine(lx, ly, px1, py1, 0);
+@@ -2521,11 +2867,11 @@
+ break;
+ }
+ }
+-
+-
++
++
+ WaitCursor();
+-
+- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
++
++ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
+ | StructureNotifyMask | ButtonPressMask
+ | KeyReleaseMask | ColormapChangeMask
+ | EnterWindowMask | LeaveWindowMask );
+@@ -2557,17 +2903,17 @@
+ byte *pp = pic + (y * pWIDE + x) * 3;
+ pp[0] = clearR; pp[1] = clearG; pp[2] = clearB;
+ }
+-
++
+ /* visual feedback */
+ CoordP2E(x, y, &ex, &ey);
+ CoordP2E(x+1, y+1, &ex1, &ey1);
+-
++
+ ew = ex1-ex; eh = ey1-ey;
+-
++
+ if (picType == PIC8) XSetForeground(theDisp, theGC, cols[editColor]);
+ else XSetForeground(theDisp, theGC, RGBToXColor(clearR, clearG, clearB));
+-
+- if (ew>0 && eh>0)
++
++ if (ew>0 && eh>0)
+ XFillRectangle(theDisp,mainW,theGC, ex,ey, (u_int) ew, (u_int) eh);
+ }
+
+@@ -2576,29 +2922,46 @@
+ static void paintLine(x,y,x1,y1)
+ int x,y,x1,y1;
+ {
+- int dx,dy,i,lx,ly,adx,ady;
+-
+- dx = x1-x; dy = y1-y;
+- adx = abs(dx); ady = abs(dy);
+-
+- if (dx == 0 && dy == 0) paintPixel(x,y);
+-
+- else if (adx > ady) { /* X is major axis */
+- for (i=0; i<=adx; i++) {
+- lx = x + (i * dx + (adx/2)) / abs(dx);
+- ly = y + (i * dy + (adx/2)) / abs(dx);
+- paintPixel(lx,ly);
++ int t,dx,dy,d,dd;
++
++ dx = abs(x1-x); dy = abs(y1-y);
++
++ if (dx >= dy) { /* X is major axis */
++ if (x > x1) {
++ t = x; x = x1; x1 = t;
++ t = y; y = y1; y1 = t;
++ }
++ d = dy + dy - dx;
++ dd = y < y1 ? 1 : -1;
++ while (x <= x1) {
++ paintPixel(x,y);
++ if (d > 0) {
++ y += dd;
++ d -= dx + dx;
++ }
++ ++x;
++ d += dy + dy;
+ }
+ }
+
+ else { /* Y is major axis */
+- for (i=0; i<=ady; i++) {
+- lx = x + (i * dx + (ady/2)) / ady;
+- ly = y + (i * dy + (ady/2)) / ady;
+- paintPixel(lx,ly);
++ if (y > y1) {
++ t = x; x = x1; x1 = t;
++ t = y; y = y1; y1 = t;
++ }
++ d = dx + dx - dy;
++ dd = x < x1 ? 1 : -1;
++ while (y <= y1) {
++ paintPixel(x,y);
++ if (d > 0) {
++ x += dd;
++ d -= dy + dy;
++ }
++ ++y;
++ d += dx + dx;
+ }
+ }
+-
++
+
+ }
+
+@@ -2618,14 +2981,14 @@
+ CoordP2E(x+1,y+1,&tx1,&ty1);
+ ex = tx + (tx1 - tx)/2;
+ ey = ty + (ty1 - ty)/2;
+-
++
+ CoordP2E(x1, y1, &tx, &ty);
+ CoordP2E(x1+1,y1+1,&tx1,&ty1);
+ ex1 = tx + (tx1 - tx)/2;
+ ey1 = ty + (ty1 - ty)/2;
+-
++
+ if (ex==ex1 && ey==ey1) return;
+-
++
+ XSetPlaneMask(theDisp, theGC, xorMasks[pntxlcol]);
+ XSetFunction(theDisp, theGC, GXinvert);
+ XDrawLine(theDisp, mainW, theGC, ex, ey, ex1, ey1);
+@@ -2638,10 +3001,8 @@
+ static void BlurPaint()
+ {
+ Window rW,cW;
+- int rx,ry,ox,oy,x,y, px,py, ex,ey, ex1,ey1, ew, eh, done1, dragging;
+- int uppedpic;
++ int rx,ry,ox,oy,x,y, px,py, done1, dragging;
+ u_int mask;
+- byte *pp;
+
+ /* blurs pixels in either editCol (PIC8) or clear{R,G,B} (PIC24) until
+ 'shift' key is released. */
+@@ -2653,14 +3014,14 @@
+ if (!blur) {
+ Pixmap pix, mask;
+ XColor cfg, cbg;
+-
++
+ cfg.red = cfg.green = cfg.blue = 0x0000;
+ cbg.red = cbg.green = cbg.blue = 0xffff;
+-
++
+ pix = MakePix1(rootW, blur_bits, blur_width, blur_height);
+ mask= MakePix1(rootW, blurm_bits, blurm_width, blurm_height);
+- if (pix && mask)
+- blur = XCreatePixmapCursor(theDisp, pix, mask, &cfg, &cbg,
++ if (pix && mask)
++ blur = XCreatePixmapCursor(theDisp, pix, mask, &cfg, &cbg,
+ blur_x_hot, blur_y_hot);
+ if (pix) XFreePixmap(theDisp, pix);
+ if (mask) XFreePixmap(theDisp, mask);
+@@ -2669,7 +3030,7 @@
+ if (blur) XDefineCursor(theDisp, mainW, blur);
+
+
+- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
++ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
+ | StructureNotifyMask /* | ButtonPressMask */
+ | KeyReleaseMask | ColormapChangeMask
+ | EnterWindowMask | LeaveWindowMask );
+@@ -2682,12 +3043,12 @@
+ if (!(mask & Button3Mask)) { dragging = 0; continue; }
+
+ CoordE2P(x,y, &px, &py);
+-
++
+ if (!dragging || (dragging && (px!=ox || py!=oy))) { /* click or drag */
+ if (!dragging) blurPixel(px,py);
+ else {
+ int dx,dy,i,lx,ly;
+-
++
+ dx = px-ox; dy = py-oy; /* at least one will be non-zero */
+ if (abs(dx) > abs(dy)) { /* X is major axis */
+ for (i=0; i<=abs(dx); i++) {
+@@ -2707,10 +3068,10 @@
+ done1 = 1; dragging = 1; ox = px; oy = py;
+ }
+ }
+-
++
+ WaitCursor();
+-
+- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
++
++ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
+ | StructureNotifyMask | ButtonPressMask
+ | KeyReleaseMask | ColormapChangeMask
+ | EnterWindowMask | LeaveWindowMask );
+@@ -2731,9 +3092,9 @@
+ {
+ /* returns position of highest set bit in 'ul' as an integer (0-31),
+ or -1 if none */
+-
++
+ int i; unsigned long hb;
+-
++
+ hb = 0x80; hb = hb << 24; /* hb = 0x80000000UL */
+ for (i=31; ((ul & hb) == 0) && i>=0; i--, ul<<=1);
+ return i;
+@@ -2757,7 +3118,7 @@
+
+ d = 3*(256*256); j=0;
+ for (i=0; i<numcols; i++) {
+- di = ((r-rMap[i]) * (r-rMap[i])) +
++ di = ((r-rMap[i]) * (r-rMap[i])) +
+ ((g-gMap[i]) + (g-gMap[i])) +
+ ((b-bMap[i]) * (b-bMap[i]));
+ if (i==0 || di<d) { j=i; d=di; }
+@@ -2771,45 +3132,45 @@
+ if (theVisual->class==TrueColor || theVisual->class==DirectColor) {
+ unsigned long rmask, gmask, bmask;
+ int rshift, gshift, bshift, cshift, maplen;
+-
++
+ /* compute various shifting constants that we'll need... */
+-
++
+ rmask = theVisual->red_mask;
+ gmask = theVisual->green_mask;
+ bmask = theVisual->blue_mask;
+-
++
+ rshift = 7 - highbit(rmask);
+ gshift = 7 - highbit(gmask);
+ bshift = 7 - highbit(bmask);
+-
++
+ if (theVisual->class == DirectColor) {
+ maplen = theVisual->map_entries;
+ if (maplen>256) maplen=256;
+ cshift = 7 - highbit((u_long) (maplen-1));
+-
++
+ r = (u_long) directConv[(r>>cshift) & 0xff] << cshift;
+ g = (u_long) directConv[(g>>cshift) & 0xff] << cshift;
+ b = (u_long) directConv[(b>>cshift) & 0xff] << cshift;
+ }
+-
+-
++
++
+ /* shift the bits around */
+ if (rshift<0) r = r << (-rshift);
+ else r = r >> rshift;
+-
++
+ if (gshift<0) g = g << (-gshift);
+ else g = g >> gshift;
+-
++
+ if (bshift<0) b = b << (-bshift);
+ else b = b >> bshift;
+-
++
+ r = r & rmask;
+ g = g & gmask;
+ b = b & bmask;
+-
++
+ rv =r | g | b;
+ }
+-
++
+ else { /* non-TrueColor/DirectColor visual */
+ if (!ncols)
+ rv = ((r + g + b >= 128*3) ? white : black);
+@@ -2820,14 +3181,14 @@
+
+ return rv;
+ }
+-
+-
++
++
+ /***********************/
+ static void blurPixel(x,y)
+ int x,y;
+ {
+ /* blurs pixel x,y (pic coords) into pic in editColor (PIC8) or clearR,G,B
+- (PIC24) and does appropriate screen feedback. Does a 3x3 average
++ (PIC24) and does appropriate screen feedback. Does a 3x3 average
+ around the pixel, and replaces it with the average value (PIC24), or
+ the closest existing color to the average value (PIC8) */
+
+@@ -2861,7 +3222,7 @@
+ if (picType == PIC8) { /* find nearest actual color */
+ d = 3*(256*256); j=0;
+ for (i=0; i<numcols; i++) {
+- di = ((ar-rMap[i]) * (ar-rMap[i])) +
++ di = ((ar-rMap[i]) * (ar-rMap[i])) +
+ ((ag-gMap[i]) + (ag-gMap[i])) +
+ ((ab-bMap[i]) * (ab-bMap[i]));
+ if (i==0 || di<d) { j=i; d=di; }
+@@ -2874,17 +3235,17 @@
+ pp = pic + (y * pWIDE + x) * 3;
+ pp[0] = ar; pp[1] = ag; pp[2] = ab;
+ }
+-
++
+ /* visual feedback */
+ CoordP2E(x, y, &ex, &ey);
+ CoordP2E(x+1, y+1, &ex1, &ey1);
+-
++
+ ew = ex1-ex; eh = ey1-ey;
+-
++
+ if (picType == PIC8) XSetForeground(theDisp, theGC, cols[ac]);
+ else XSetForeground(theDisp, theGC, RGBToXColor(ar, ag, ab));
+-
+- if (ew>0 && eh>0)
++
++ if (ew>0 && eh>0)
+ XFillRectangle(theDisp,mainW,theGC, ex,ey, (u_int) ew, (u_int) eh);
+ }
+
+@@ -2895,19 +3256,19 @@
+ /***********************/
+ static void annotatePic()
+ {
+- int i, w,h, len;
+- byte *cimg;
+- char txt[256];
+- static char buf[256] = {'\0'};
+- static char *labels[] = {"\nOk", "\033Cancel" };
++ int i, w,h, len;
++ byte *cimg;
++ char txt[256];
++ static char buf[256] = {'\0'};
++ static const char *labels[] = {"\nOk", "\033Cancel" };
+
+- sprintf(txt, "Image Annotation:\n\n%s",
++ sprintf(txt, "Image Annotation:\n\n%s",
+ "Enter string to be placed on image.");
+-
++
+ i = GetStrPopUp(txt, labels, 2, buf, 256, "", 0);
+ if (i==1 || strlen(buf)==0) return;
+-
+-
++
++
+ /* build a 'cimg' array to be pasted on clipboard */
+ w = strlen(buf) * 6 - 1; h = 9;
+ len = CIMG_PIC8 + w*h;
+diff -ru xv-3.10a/xvfits.c xv-3.10a-enhancements/xvfits.c
+--- xv-3.10a/xvfits.c 1994-12-27 23:43:29.000000000 -0800
++++ xv-3.10a-enhancements/xvfits.c 2007-05-12 15:46:55.000000000 -0700
+@@ -14,7 +14,7 @@
+ * provided "as is" without express or implied warranty.
+ */
+
+-
++#define NEEDSDIR /* for S_IRUSR|S_IWUSR */
+ #include "xv.h"
+
+ #define NCARDS (36)
+@@ -39,17 +39,17 @@
+ static char *fits_block=NULL;
+
+
+-static int splitfits PARM((byte *, char *, int, int, int, char *));
+-static char *ftopen3d PARM((FITS *, char *, int *, int *, int *, int *));
+-static void ftclose PARM((FITS *));
+-static int ftgbyte PARM((FITS *, byte *, int));
+-static char *rdheader PARM((FITS *));
+-static char *wrheader PARM((FILE *, int, int, char *));
+-static char *rdcard PARM((char *, char *, DATTYPE, long int *));
+-static void wrcard PARM((char *, char *, DATTYPE, int, char *));
+-static int ftgdata PARM((FITS *, void *, int));
+-static void ftfixdata PARM((FITS *, void *, int));
+-static void flip PARM((byte *, int, int));
++static int splitfits PARM((byte *, char *, int, int, int, char *));
++static const char *ftopen3d PARM((FITS *, char *, int *, int *, int *, int *));
++static void ftclose PARM((FITS *));
++static int ftgbyte PARM((FITS *, byte *, int));
++static const char *rdheader PARM((FITS *));
++static const char *wrheader PARM((FILE *, int, int, char *));
++static const char *rdcard PARM((char *, const char *, DATTYPE, long int *));
++static void wrcard PARM((char *, const char *, DATTYPE, int, char *));
++static int ftgdata PARM((FITS *, void *, int));
++static void ftfixdata PARM((FITS *, void *, int));
++static void flip PARM((byte *, int, int));
+
+
+
+@@ -63,16 +63,16 @@
+ /* returns '1' on success */
+
+ FITS fs;
+- int i, nx, ny, nz, bitpix, np, nrd, ioerror;
++ int i, nx, ny, nz, bitpix, nrd, ioerror, npixels, bufsize;
+ byte *image;
+- char *error;
++ const char *error;
+ char basename[64];
+
+ if (fits_block == NULL) {
+ fits_block = (char *) malloc((size_t) BLOCKSIZE);
+ if (!fits_block) FatalError("Insufficient memory for FITS block buffer");
+ }
+-
++
+ error = ftopen3d(&fs, fname, &nx, &ny, &nz, &bitpix);
+ if (error) {
+ SetISTR(ISTR_WARNING, "%s", error);
+@@ -80,9 +80,15 @@
+ }
+
+ if (quick) nz = 1; /* only load first plane */
+- np = nx * ny * nz;
++ npixels = nx * ny;
++ bufsize = nz * npixels;
++ if (nx <= 0 || ny <= 0 || npixels/nx != ny || bufsize/nz != npixels) {
++ SetISTR(ISTR_WARNING, "FITS image dimensions out of range (%dx%dx%d)",
++ nx, ny, nz);
++ return 0;
++ }
+
+- image = (byte *) malloc((size_t) np);
++ image = (byte *) malloc((size_t) bufsize);
+ if (!image) FatalError("Insufficient memory for image");
+
+ /*
+@@ -90,7 +96,7 @@
+ * to ensure that we get that same scaling for all planes.
+ */
+
+- nrd = ftgbyte(&fs, image, np);
++ nrd = ftgbyte(&fs, image, bufsize);
+ ioerror = ferror(fs.fp);
+ ftclose(&fs);
+
+@@ -104,33 +110,32 @@
+ return 0;
+ }
+
+- else if (nrd < np) { /* read partial image */
++ else if (nrd < bufsize) { /* read partial image */
+ if (ioerror)
+ SetISTR(ISTR_WARNING, "%s", "Truncated FITS file due to I/O error");
+ else
+ SetISTR(ISTR_WARNING, "%s", "Truncated FITS file");
+-
++
+ { byte *foo;
+- for (foo=image+nrd; foo<image+np; foo++) *foo=0x80; /* pad with grey */
++ for (foo=image+nrd; foo<image+bufsize; foo++) *foo=0x80; /* pad with grey */
+ }
+ }
+
+ if (nz > 1) {
+ /* how many planes do we actually have? */
+- nz = (nrd-1)/(nx*ny) + 1;
++ nz = (nrd-1)/(npixels) + 1;
+
+ /* returns how many sub-files created */
+ nz = splitfits(image, fs.comment, nx, ny, nz, basename);
+- np = nx * ny;
+- image = (byte *)realloc(image, (size_t) np); /* toss all but first */
++ image = (byte *)realloc(image, (size_t) npixels); /* toss all but first */
+ }
+-
++
+ /* There seems to be a convention that fits files be displayed using
+ * a cartesian coordinate system. Thus the first pixel is in the lower left
+ * corner. Fix this by reflecting in the line y=ny/2.
+ */
+ flip(image, nx, ny);
+-
++
+ /* Success! */
+ pinfo->pic = image;
+ pinfo->type = PIC8;
+@@ -149,12 +154,12 @@
+ pinfo->numpages = nz;
+ strcpy(pinfo->pagebname, basename);
+ }
+-
++
+ return 1;
+-}
++}
++
+
+
+-
+ /*******************************************/
+ int WriteFITS(fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,comment)
+ FILE *fp;
+@@ -164,16 +169,16 @@
+ int numcols, colorstyle;
+ char *comment;
+ {
+- int i, j, np, nend;
++ int i, j, npixels, nend;
+ byte *ptr;
+- char *error;
++ const char *error;
+ byte rgb[256];
+-
++
+ if (!fits_block) {
+ fits_block = (char *) malloc((size_t) BLOCKSIZE);
+ if (!fits_block) FatalError("Insufficient memory for FITS block buffer");
+ }
+-
++
+ error = wrheader(fp, w, h, comment);
+ if (error) {
+ SetISTR(ISTR_WARNING, "%s", error);
+@@ -197,12 +202,12 @@
+ }
+ }
+
+- np = w*h;
++ npixels = w*h;
+
+ /* nend is the number of padding characters at the end of the last block */
+- nend = ((np+BLOCKSIZE-1)/BLOCKSIZE)*BLOCKSIZE - np;
++ nend = ((npixels+BLOCKSIZE-1)/BLOCKSIZE)*BLOCKSIZE - npixels;
+ if (nend) for (i=0; i<nend; i++) putc('\0', fp);
+-
++
+ return 0;
+ }
+
+@@ -216,17 +221,16 @@
+ char *basename;
+ {
+ /*
+- * Given a 3 dimensional FITS image, this splits it up into nz 2-d files.
++ * Given a 3-dimensional FITS image, this splits it up into nz 2-d files.
+ * It returns the number of files actually stored.
+ * If only one file could be written, then no split files are created.
+ * It returns the basename of the split files in bname.
+ * If there was a problem writing files, then a error message will be set.
+ */
+-
+- int i, np=nx * ny, ioerror, nwrt;
++
++ int i, npixels=nx * ny, nwrt, tmpfd;
+ FILE *fp;
+- char *error;
+- byte *work;
++ const char *error;
+ char filename[70];
+
+ #ifndef VMS
+@@ -234,8 +238,12 @@
+ #else
+ sprintf(basename, "Sys$Disk:[]xvpgXXXXXX");
+ #endif
+-
++
++#ifdef USE_MKSTEMP
++ close(mkstemp(basename));
++#else
+ mktemp(basename);
++#endif
+ if (basename[0] == '\0') {
+ SetISTR(ISTR_WARNING, "%s", "Unable to build temporary filename");
+ return 1;
+@@ -246,28 +254,37 @@
+
+ for (i=0; i < nz && !error; i++) {
+ sprintf(filename, "%s%d", basename, i+1);
+- fp = xv_fopen(filename, "w");
++ tmpfd = open(filename,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
++ if (tmpfd < 0) {
++ error = "Unable to open temporary file";
++ break;
++ }
++ fp = fdopen(tmpfd, "w");
+ if (!fp) {
+ error = "Unable to open temporary file";
+ break;
+ }
+-
++
+ if (wrheader(fp, nx, ny, comment)) {
+ error = "I/O error writing temporary file";
++ fflush(fp);
+ fclose(fp);
+ unlink(filename);
++ close(tmpfd);
+ break;
+ }
+
+- nwrt = fwrite(image+i*np, sizeof(byte), (size_t) np, fp);
++ nwrt = fwrite(image+i*npixels, sizeof(byte), (size_t) npixels, fp);
++ fflush(fp);
+ fclose(fp);
++ close(tmpfd);
+
+ if (nwrt == 0) { /* failed to write any data */
+ error = "I/O error writing temporary file";
+ unlink(filename);
+ break;
+- }
+- else if (nwrt < np)
++ }
++ else if (nwrt < npixels)
+ error = "I/O error writing temporary file";
+ }
+
+@@ -285,19 +302,19 @@
+
+
+ /************************************/
+-static char *wrheader(fp, nx, ny, comment)
++static const char *wrheader(fp, nx, ny, comment)
+ FILE *fp;
+ int nx, ny;
+ char *comment;
+ {
+ /* Writes a minimalist FITS file header */
+-
++
+ char *block = fits_block, *bp;
+- int i, j, wrotehist, lenhist;
++ int i, j, lenhist;
+ char history[80];
+
+ for (i=0, bp=block; i<BLOCKSIZE; i++, bp++) *bp = ' ';
+-
++
+ sprintf(history, "Written by XV %s", VERSTR);
+ lenhist = strlen(history);
+
+@@ -309,7 +326,7 @@
+ wrcard(&block[80*i++], "NAXIS2", T_INT, ny, NULL); /* write NAXIS2 card */
+
+ /* Write HISTORY keyword */
+- wrcard(&block[80*i++], "HISTORY", T_STR, lenhist, history);
++ wrcard(&block[80*i++], "HISTORY", T_STR, lenhist, history);
+
+ if (comment && *comment != '\0') {
+ while (*comment == '\n') comment++; /* Skip any blank lines */
+@@ -317,7 +334,7 @@
+ for (j=0; j<72; j++)
+ if (comment[j] == '\0' || comment[j] == '\n') break;
+
+- /*
++ /*
+ * Check to see if it is an xv history record; if so, then avoid
+ * duplicating it.
+ */
+@@ -330,7 +347,7 @@
+ for (i=0, bp=block; i<BLOCKSIZE; i++, bp++) *bp = ' ';
+ i = 0;
+ }
+-
++
+ comment += j;
+ while (*comment == '\n') comment++; /* Skip any blank lines */
+ }
+@@ -346,7 +363,7 @@
+
+
+ /************************************/
+-static char *ftopen3d(fs, file, nx, ny, nz, bitpix)
++static const char *ftopen3d(fs, file, nx, ny, nz, bitpix)
+ FITS *fs;
+ char *file;
+ int *nx, *ny, *nz, *bitpix;
+@@ -358,40 +375,40 @@
+ * Will return an error message if the primary data unit is not a
+ * 2 or 3-dimensional array.
+ */
+-
++
+ FILE *fp;
+ int naxis, i;
+- char *error;
+-
++ const char *error;
++
+ fp = xv_fopen(file, "r");
+ if (!fp) return "Unable to open FITS file";
+-
++
+ fs->fp = fp;
+ fs->bitpix = 0;
+ fs->naxis = 0;
+ fs->cpos = 0;
+-
++
+ /* read header */
+ error = rdheader(fs);
+ if (error) {
+ ftclose(fs);
+ return error;
+ }
+-
++
+ naxis = fs->naxis;
+-
++
+ /* get number of data */
+ fs->ndata = 1;
+- for (i=0; i<naxis; i++)
++ for (i=0; i<naxis; i++)
+ fs->ndata = fs->ndata * fs->axes[i];
+-
++
+ *nx = fs->axes[0];
+ *ny = fs->axes[1];
+ if (naxis == 2) *nz = 1;
+ else *nz = fs->axes[2];
+-
++
+ *bitpix = fs->bitpix;
+-
++
+ return NULL;
+ }
+
+@@ -406,7 +423,7 @@
+
+
+ /************************************/
+-static char *rdheader(fs)
++static const char *rdheader(fs)
+ FITS *fs;
+ {
+ /* reads the fits header, and updates the FITS structure fs.
+@@ -416,13 +433,13 @@
+ int i, j, res, commlen, commsize;
+ char name[9];
+ char *block=fits_block, *p;
+- char *error;
++ const char *error;
+ long int val; /* the value */
+-
++
+ fs->comment = NULL;
+ commlen = 0;
+ commsize = 256;
+-
++
+ res = fread(block, sizeof(char), (size_t) BLOCKSIZE, fs->fp);
+ if (res != BLOCKSIZE) return "Error reading FITS file";
+ i = 0;
+@@ -464,13 +481,13 @@
+ if (res != BLOCKSIZE) return "Error reading FITS file";
+ i = 0;
+ }
+-
++
+ sprintf(name, "NAXIS%d", j+1);
+ error = rdcard(&block[i*80], name, T_INT, &val);
+ if (error) return error;
+ if (val < 0) return "Bad NAXISn value in FITS file";
+ if (val == 0) return "FITS file does not contain an image";
+-
++
+ if (j < 3) fs->axes[j] = val;
+ else if (val != 1) return "FITS file has more than three dimensions";
+ i++;
+@@ -488,21 +505,21 @@
+ if (res != BLOCKSIZE) return "Unexpected eof in FITS file";
+ i = 0;
+ }
+-
++
+ p = &block[i*80];
+ if (strncmp(p, "END ", (size_t) 8) == 0) break;
+- if (strncmp(p, "HISTORY ", (size_t) 8) == 0 ||
++ if (strncmp(p, "HISTORY ", (size_t) 8) == 0 ||
+ strncmp(p, "COMMENT ", (size_t) 8) == 0) {
+ p += 8; /* skip keyword */
+ for (j=71; j >= 0; j--) if (p[j] != ' ') break;
+ j++; /* make j length of comment */
+ if (j > 0) { /* skip blank comment cards */
+ if (fs->comment == NULL) {
+- fs->comment = (char *) malloc((size_t) commsize);
++ fs->comment = (char *) malloc((size_t) commsize); /* initially 256 */
+ if (fs->comment == NULL)
+ FatalError("Insufficient memory for comment buffer");
+ }
+-
++
+ if (commlen + j + 2 > commsize) { /* if too small */
+ char *new;
+ commsize += commsize; /* double size of array */
+@@ -515,7 +532,7 @@
+ free(fs->comment);
+ fs->comment = new;
+ }
+-
++
+ xvbcopy(p, &fs->comment[commlen], (size_t) j); /* add string */
+ commlen += j;
+ fs->comment[commlen++] = '\n'; /* with trailing cr */
+@@ -531,7 +548,8 @@
+
+ /************************************/
+ static void wrcard(card, name, dtype, kvalue, svalue)
+- char *card, *name;
++ char *card;
++ const char *name;
+ DATTYPE dtype; /* type of value */
+ int kvalue;
+ char *svalue;
+@@ -556,9 +574,9 @@
+
+ l = strlen(name);
+ if (l) xvbcopy(name, card, (size_t) l); /* copy name */
+-
++
+ if (dtype == T_NOVAL) return;
+-
++
+ if (dtype == T_STR) {
+ l = kvalue;
+ if (l <= 0) return;
+@@ -566,9 +584,9 @@
+ xvbcopy(svalue, &card[8], (size_t) l);
+ return;
+ }
+-
++
+ card[8] = '=';
+-
++
+ if (dtype == T_LOG)
+ card[29] = kvalue ? 'T' : 'F';
+ else { /* T_INT */
+@@ -579,8 +597,9 @@
+
+
+ /************************************/
+-static char *rdcard(card, name, dtype, kvalue)
+- char *card, *name;
++static const char *rdcard(card, name, dtype, kvalue)
++ char *card;
++ const char *name;
+ DATTYPE dtype; /* type of value */
+ long int *kvalue;
+ {
+@@ -599,7 +618,7 @@
+ int i, ptr;
+ char namestr[9];
+ static char error[45];
+-
++
+ xvbcopy(card, namestr, (size_t) 8);
+
+ for (i=7; i>=0 && namestr[i] == ' '; i--);
+@@ -609,24 +628,24 @@
+ sprintf(error, "Keyword %s not found in FITS file", name);
+ return error;
+ }
+-
++
+
+ /* get start of value */
+ ptr = 10;
+ while (ptr < 80 && card[ptr] == ' ') ptr++;
+ if (ptr == 80) return "FITS file has missing keyword value"; /* no value */
+-
++
+ if (dtype == T_LOG) {
+ if (ptr != 29 || (card[29] != 'T' && card[29] != 'F'))
+ return "Keyword has bad logical value in FITS file";
+ *kvalue = (card[29] == 'T');
+- }
++ }
+
+ else { /* an integer */
+ int j;
+ long int ival;
+ char num[21];
+-
++
+ if (ptr > 29) return "Keyword has bad integer value in FITS file";
+ xvbcopy(&card[ptr], num, (size_t) (30-ptr));
+ num[30-ptr] = '\0';
+@@ -634,7 +653,7 @@
+ if (j != 1) return "Keyword has bad integer value in FITS file";
+ *kvalue = ival;
+ }
+-
++
+ return NULL;
+ }
+
+@@ -660,13 +679,13 @@
+ */
+
+ int res;
+-
++
+ if (nelem == 0) return 0;
+-
++
+ res = fread(buffer, (size_t) fs->size, (size_t) nelem, fs->fp);
+ /* if failed to read all the data because at end of file */
+ if (res != nelem && feof(fs->fp)) {
+- /* nblock is the number of elements in a record.
++ /* nblock is the number of elements in a record.
+ size is always a factor of BLOCKSIZE */
+
+ int loffs, nblock=BLOCKSIZE/fs->size;
+@@ -714,7 +733,7 @@
+ byte *ptr=buffer;
+
+ /*
+- * conversions. Although the data may be signed, reverse using unsigned
++ * conversions. Although the data may be signed, reverse using unsigned
+ * variables.
+ * Because the native int types may be larger than the types in the file,
+ * we start from the end and work backwards to avoid overwriting data
+@@ -741,12 +760,12 @@
+ ((unsigned int)ptr[2] << 8) |
+ ((unsigned int)ptr[3]);
+ }
+-
++
+ /* convert from IEE 754 single precision to native form */
+ else if (fs->bitpix == -32) {
+ int j, k, expo;
+ static float *exps=NULL;
+-
++
+ if (exps == NULL) {
+ exps = (float *)malloc(256 * sizeof(float));
+ if (exps == NULL) FatalError("Insufficient memory for exps store");
+@@ -754,7 +773,7 @@
+ for (i=151; i < 256; i++) exps[i] = 2.*exps[i-1];
+ for (i=149; i >= 0; i--) exps[i] = 0.5*exps[i+1];
+ }
+-
++
+ for (i=0; i < n; i++, ptr+=4) {
+ k = (int)*ptr;
+ j = ((int)ptr[1] << 16) | ((int)ptr[2] << 8) | (int)ptr[3];
+@@ -765,13 +784,13 @@
+ }
+
+ }
+-
++
+ /* convert from IEE 754 double precision to native form */
+ else if (fs->bitpix == -64) {
+ int expo, k, l;
+ unsigned int j;
+ static double *exps=NULL;
+-
++
+ if (exps == NULL) {
+ exps = (double *)malloc(2048 * sizeof(double));
+ if (exps == NULL) FatalError("Insufficient memory for exps store");
+@@ -779,7 +798,7 @@
+ for (i=1076; i < 2048; i++) exps[i] = 2.*exps[i-1];
+ for (i=1074; i >= 0; i--) exps[i] = 0.5*exps[i+1];
+ }
+-
++
+ for (i=0; i < n; i++, ptr+=8) {
+ k = (int)*ptr;
+ j = ((unsigned int)ptr[1] << 24) | ((unsigned int)ptr[2] << 16) |
+@@ -813,23 +832,36 @@
+ */
+
+ void *voidbuff;
+- int i, n, nrd;
++ int i, n, nrd, bufsize, overflow=0;
+
+ /* if the data is byte, then read it directly */
+ if (fs->bitpix == 8)
+ return ftgdata(fs, cbuff, nelem);
+-
++
+ /* allocate a buffer to store the image */
+- if (fs->bitpix == 16)
+- voidbuff = (void *)malloc(nelem * sizeof(short int));
+- else if (fs->bitpix == 32)
+- voidbuff = (void *)malloc(nelem * sizeof(int));
+- else
+- voidbuff = (void *)malloc(nelem * (size_t) fs->size); /* float, double */
++ if (fs->bitpix == 16) {
++ bufsize = nelem * sizeof(short int);
++ if (bufsize/nelem != (int)sizeof(short int))
++ overflow = 1;
++ } else if (fs->bitpix == 32) {
++ bufsize = nelem * sizeof(int);
++ if (bufsize/nelem != (int)sizeof(short int))
++ overflow = 1;
++ } else {
++ bufsize = nelem * fs->size; /* float, double */
++ if (bufsize/nelem != fs->size)
++ overflow = 1;
++ }
+
++ if (overflow) {
++ SetISTR(ISTR_WARNING, "FITS image dimensions out of range");
++ return 0;
++ }
++
++ voidbuff = (void *)malloc((size_t) bufsize);
+ if (voidbuff == NULL) {
+ char emess[60];
+- sprintf(emess, "Insufficient memory for raw image of %d bytes",
++ sprintf(emess, "Insufficient memory for raw image of %d bytes",
+ nelem*fs->size);
+ FatalError(emess);
+ }
+@@ -843,28 +875,28 @@
+ short int *buffer=voidbuff;
+ int max, min, maxmin_t;
+ float scale;
+-
++
+ min = max = buffer[0];
+ for (i=1; i < n; i++, buffer++) maxmin(*buffer, max, min);
+ scale = (max == min) ? 0. : 255./(float)(max-min);
+-
++
+ /* rescale and convert */
+ for (i=0, buffer=voidbuff; i < n; i++)
+ cbuff[i] = (byte)(scale*(float)((int)buffer[i]-min));
+-
++
+ /* convert long int to byte */
+- }
++ }
+
+ else if (fs->bitpix == 32) {
+ int *buffer=voidbuff;
+ int max, min, maxmin_t;
+ float scale, fmin;
+-
++
+ min = max = buffer[0];
+ for (i=1; i < n; i++, buffer++) maxmin(*buffer, max, min);
+ scale = (max == min) ? 1. : 255./((double)max-(double)min);
+ fmin = (float)min;
+-
++
+ /* rescale and convert */
+ if (scale < 255./2.1e9) /* is max-min too big for an int ? */
+ for (i=0, buffer=voidbuff; i < n; i++)
+@@ -872,34 +904,34 @@
+ else /* use integer subtraction */
+ for (i=0, buffer=voidbuff; i < n; i++)
+ cbuff[i] = (byte)(scale*(float)(buffer[i]-min));
+-
+-
+- }
++
++
++ }
+
+ /* convert float to byte */
+ else if (fs->bitpix == -32) {
+ float *buffer=voidbuff;
+ float max, min, maxmin_t, scale;
+-
++
+ min = max = buffer[0];
+ for (i=1; i < n; i++, buffer++) maxmin(*buffer, max, min);
+ scale = (max == min) ? 0. : 255./(max-min);
+-
++
+ /* rescale and convert */
+ for (i=0, buffer=voidbuff; i < n; i++)
+ cbuff[i] = (byte)(scale*(buffer[i]-min));
+-
+- }
++
++ }
+
+ /* convert double to byte */
+ else if (fs->bitpix == -64) {
+ double *buffer=voidbuff;
+ double max, min, maxmin_t, scale;
+-
++
+ min = max = buffer[0];
+ for (i=1; i < n; i++, buffer++) maxmin(*buffer, max, min);
+ scale = (max == min) ? 0. : 255./(max-min);
+-
++
+ /* rescale and convert */
+ for (i=0, buffer=voidbuff; i < n; i++)
+ cbuff[i] = (byte)(scale*(buffer[i]-min));
+@@ -923,7 +955,7 @@
+ int i;
+ int j, v;
+ byte *buff1, *buff2;
+-
++
+ for (i=0; i < ny/2; i++) {
+ buff1 = &buffer[i*nx];
+ buff2 = &buffer[(ny-1-i)*nx];
+diff -ru xv-3.10a/xvgam.c xv-3.10a-enhancements/xvgam.c
+--- xv-3.10a/xvgam.c 1995-01-13 11:51:14.000000000 -0800
++++ xv-3.10a-enhancements/xvgam.c 2007-05-13 14:12:04.000000000 -0700
+@@ -1,4 +1,4 @@
+-/*
++/*
+ * xvgam.c
+ *
+ * callable functions:
+@@ -87,7 +87,7 @@
+ GRAF_STATE istate, rstate, gstate, bstate;
+ };
+
+-static struct gamstate undo[MAXUNDO], preset[4], defstate;
++static struct gamstate undo[MAXUNDO], preset[4], defstate;
+ static struct gamstate *defLoadState;
+
+ static int uptr, uhead, utail;
+@@ -99,7 +99,7 @@
+ int stval; /* start of range (ONLY val ifnot range) */
+ int enval; /* end of range */
+ int ccwise; /* 1 if range goes ccwise, 0 if cwise */
+- char *str; /* title string */
++ const char *str; /* title string */
+ u_long fg,bg; /* colors */
+ int satval; /* saturation value on non-range dial */
+ BUTT hdbutt[N_HDBUTT];
+@@ -122,7 +122,7 @@
+ static int defAutoApply;
+ static int hsvnonlinear = 0;
+
+-static void printUTime PARM((char *));
++static void printUTime PARM((const char *));
+
+ static void computeHSVlinear PARM((void));
+ static void changedGam PARM((void));
+@@ -153,8 +153,8 @@
+ static void dragHueDial PARM((void));
+ static void dragEditColor PARM((void));
+
+-static void HDCreate PARM((HDIAL *, Window, int, int, int, int,
+- int, int, char *, u_long, u_long));
++static void HDCreate PARM((HDIAL *, Window, int, int, int, int,
++ int, int, const char *, u_long, u_long));
+
+ static void HDRedraw PARM((HDIAL *, int));
+ static int HDClick PARM((HDIAL *, int, int));
+@@ -191,10 +191,11 @@
+
+ /***************************/
+ static void printUTime(str)
+- char *str;
++ const char *str;
+ {
+ #ifdef TIMING_TEST
+- int i; struct rusage ru;
++ int i;
++ struct rusage ru;
+
+ i = getrusage(RUSAGE_SELF, &ru);
+ fprintf(stderr,"%s: utime = %ld.%ld seconds\n",
+@@ -206,19 +207,19 @@
+
+ /***************************************************/
+ void CreateGam(geom, gam, rgam, ggam, bgam, defpreset)
+- char *geom;
+- double gam, rgam, ggam, bgam;
+- int defpreset;
++ const char *geom;
++ double gam, rgam, ggam, bgam;
++ int defpreset;
+ {
+ XSetWindowAttributes xswa;
+
+- gamW = CreateWindow("xv color editor", "XVcedit", geom,
++ gamW = CreateWindow("xv color editor", "XVcedit", geom,
+ GAMW, GAMH, infofg,infobg, 0);
+ if (!gamW) FatalError("can't create cedit window!");
+-
++
+ cmapF = XCreateSimpleWindow(theDisp,gamW, 10, 8,CMAPF_WIDE,CMAPF_HIGH,
+ 1,infofg,infobg);
+- butF = XCreateSimpleWindow(theDisp,gamW, 10, 336,BUTF_WIDE,BUTF_HIGH,
++ butF = XCreateSimpleWindow(theDisp,gamW, 10, 336,BUTF_WIDE,BUTF_HIGH,
+ 1,infofg,infobg);
+ modF = XCreateSimpleWindow(theDisp,gamW, 10, 438,MODF_WIDE,MODF_HIGH,
+ 1,infofg,infobg);
+@@ -227,7 +228,7 @@
+ rgbF = XCreateSimpleWindow(theDisp,gamW, 467, 8,RGBF_WIDE,RGBF_HIGH,
+ 1,infofg,infobg);
+
+- if (!cmapF || !butF || !modF || !hsvF || !rgbF)
++ if (!cmapF || !butF || !modF || !hsvF || !rgbF)
+ FatalError("couldn't create frame windows");
+
+ #ifdef BACKING_STORE
+@@ -251,25 +252,25 @@
+ /********** COLORMAP editing doo-wahs ***********/
+
+
+- BTCreate(&gbut[G_BCOLUNDO], cmapF, 5, 165, 66, BUTTH,
++ BTCreate(&gbut[G_BCOLUNDO], cmapF, 5, 165, 66, BUTTH,
+ "ColUndo", infofg, infobg, hicol, locol);
+- BTCreate(&gbut[G_BCOLREV], cmapF, 5 + 66 + 1, 165, 67, BUTTH,
++ BTCreate(&gbut[G_BCOLREV], cmapF, 5 + 66 + 1, 165, 67, BUTTH,
+ "Revert", infofg, infobg, hicol, locol);
+- BTCreate(&gbut[G_BHSVRGB], cmapF, 5+66+67+2, 165, 66, BUTTH,
++ BTCreate(&gbut[G_BHSVRGB], cmapF, 5+66+67+2, 165, 66, BUTTH,
+ "RGB/HSV", infofg, infobg, hicol, locol);
+
+- BTCreate(&gbut[G_BMONO], cmapF, 5, 189, 66, BUTTH,
++ BTCreate(&gbut[G_BMONO], cmapF, 5, 189, 66, BUTTH,
+ "Grey", infofg, infobg, hicol, locol);
+- BTCreate(&gbut[G_BRV], cmapF, 5 + 66 + 1, 189, 67, BUTTH,
++ BTCreate(&gbut[G_BRV], cmapF, 5 + 66 + 1, 189, 67, BUTTH,
+ "RevVid", infofg, infobg, hicol, locol);
+- BTCreate(&gbut[G_BRNDCOL], cmapF, 5 + 66 + 67 + 2, 189, 66, BUTTH,
++ BTCreate(&gbut[G_BRNDCOL], cmapF, 5 + 66 + 67 + 2, 189, 66, BUTTH,
+ "Random", infofg, infobg, hicol, locol);
+
+- DCreate(&rhDial, cmapF, 5, 215, 66, 100, 0,360,180, 5,
++ DCreate(&rhDial, cmapF, 5, 215, 66, 100, 0.0, 360.0, 180.0, 1.0, 5.0,
+ infofg, infobg, hicol, locol, "Hue", NULL);
+- DCreate(&gsDial, cmapF, 72, 215, 66, 100, 0,360,180, 5,
++ DCreate(&gsDial, cmapF, 72, 215, 66, 100, 0.0, 360.0, 180.0, 1.0, 5.0,
+ infofg, infobg, hicol, locol, "Sat.", NULL);
+- DCreate(&bvDial, cmapF, 139, 215, 66, 100, 0,360,180, 5,
++ DCreate(&bvDial, cmapF, 139, 215, 66, 100, 0.0, 360.0, 180.0, 1.0, 5.0,
+ infofg, infobg, hicol, locol, "Value", NULL);
+
+ rhDial.drawobj = gsDial.drawobj = bvDial.drawobj = dragEditColor;
+@@ -291,44 +292,44 @@
+ #define BY2 (BY0 + BYSPACE*2)
+ #define BY3 (BY0 + BYSPACE*3)
+
+- BTCreate(&gbut[G_BAPPLY], butF, BX0,BY0, 52,BUTTH,"Apply",
++ BTCreate(&gbut[G_BAPPLY], butF, BX0,BY0, 52,BUTTH,"Apply",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_BNOGAM], butF, BX0,BY1, 52,BUTTH,"NoMod",
++ BTCreate(&gbut[G_BNOGAM], butF, BX0,BY1, 52,BUTTH,"NoMod",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_BMAXCONT],butF, BX0,BY2, 52,BUTTH,"Norm",
++ BTCreate(&gbut[G_BMAXCONT],butF, BX0,BY2, 52,BUTTH,"Norm",
+ infofg,infobg,hicol,locol);
+ BTCreate(&gbut[G_BHISTEQ], butF, BX0,BY3, 52,BUTTH,"HistEq",
+ infofg,infobg,hicol,locol);
+
+ BTCreate(&gbut[G_BUP_BR],butF, BX1,BY0, 52,BUTTH,"Brite",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_BDN_BR],butF, BX1,BY1, 52,BUTTH,"Dim",
++ BTCreate(&gbut[G_BDN_BR],butF, BX1,BY1, 52,BUTTH,"Dim",
+ infofg,infobg,hicol,locol);
+ BTCreate(&gbut[G_BUP_CN],butF, BX1,BY2, 52,BUTTH,"Sharp",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_BDN_CN],butF, BX1,BY3, 52,BUTTH,"Dull",
++ BTCreate(&gbut[G_BDN_CN],butF, BX1,BY3, 52,BUTTH,"Dull",
+ infofg,infobg,hicol,locol);
+
+- BTCreate(&gbut[G_BRESET],butF, BX2, BY0, 52,BUTTH,"Reset",
++ BTCreate(&gbut[G_BRESET],butF, BX2, BY0, 52,BUTTH,"Reset",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_B1], butF, BX2, BY1, 25,BUTTH,"1",
++ BTCreate(&gbut[G_B1], butF, BX2, BY1, 25,BUTTH,"1",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_B2], butF, BX2+26,BY1, 26,BUTTH,"2",
++ BTCreate(&gbut[G_B2], butF, BX2+26,BY1, 26,BUTTH,"2",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_B3], butF, BX2, BY2, 25,BUTTH,"3",
++ BTCreate(&gbut[G_B3], butF, BX2, BY2, 25,BUTTH,"3",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_B4], butF, BX2+26,BY2, 26,BUTTH,"4",
++ BTCreate(&gbut[G_B4], butF, BX2+26,BY2, 26,BUTTH,"4",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_BSET], butF, BX2, BY3, 52,BUTTH,"Set",
++ BTCreate(&gbut[G_BSET], butF, BX2, BY3, 52,BUTTH,"Set",
+ infofg,infobg,hicol,locol);
+
+- BTCreate(&gbut[G_BUNDO], butF, BX3, BY0, 52,BUTTH,"Undo",
++ BTCreate(&gbut[G_BUNDO], butF, BX3, BY0, 52,BUTTH,"Undo",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_BREDO], butF, BX3, BY1, 52,BUTTH,"Redo",
++ BTCreate(&gbut[G_BREDO], butF, BX3, BY1, 52,BUTTH,"Redo",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_BGETRES],butF,BX3, BY2, 52,BUTTH,"CutRes",
++ BTCreate(&gbut[G_BGETRES],butF,BX3, BY2, 52,BUTTH,"CutRes",
+ infofg,infobg,hicol,locol);
+- BTCreate(&gbut[G_BCLOSE],butF, BX3, BY3, 52,BUTTH,"Close",
++ BTCreate(&gbut[G_BCLOSE],butF, BX3, BY3, 52,BUTTH,"Close",
+ infofg,infobg,hicol,locol);
+
+
+@@ -338,11 +339,11 @@
+
+ CBCreate(&enabCB, modF,2,2, "Display with HSV/RGB mods.",
+ infofg,infobg,hicol,locol);
+- CBCreate(&autoCB, modF,2,2+17, "Auto-apply HSV/RGB mods.",
++ CBCreate(&autoCB, modF,2,2+17, "Auto-apply HSV/RGB mods.",
+ infofg,infobg,hicol,locol);
+ CBCreate(&dragCB, modF,2,2+17*2,"Auto-apply while dragging.",
+ infofg,infobg,hicol,locol);
+- CBCreate(&resetCB,modF,2,2+17*3,"Auto-reset on new image.",
++ CBCreate(&resetCB,modF,2,2+17*3,"Auto-reset on new image.",
+ infofg,infobg,hicol,locol);
+
+ enabCB.val = autoCB.val = resetCB.val = dragCB.val = 1;
+@@ -359,23 +360,23 @@
+
+ srcHD.drawobj = dstHD.drawobj = whtHD.drawobj = dragHueDial;
+
+- DCreate(&satDial, hsvF, 100, 199, 100, 121, -100, 100, 0, 5,
++ DCreate(&satDial, hsvF, 100, 199, 100, 121, -100.0, 100.0, 0.0, 1.0, 5.0,
+ infofg, infobg,hicol,locol, "Saturation", "%");
+
+- hueRB = RBCreate(NULL, hsvF, 7, 153, "1",
++ hueRB = RBCreate(NULL, hsvF, 7, 153, "1",
+ infofg, infobg,hicol,locol);
+- RBCreate (hueRB,hsvF, 47, 153, "2",
++ RBCreate (hueRB,hsvF, 47, 153, "2",
+ infofg, infobg,hicol,locol);
+- RBCreate (hueRB,hsvF, 87, 153, "3",
++ RBCreate (hueRB,hsvF, 87, 153, "3",
+ infofg, infobg,hicol,locol);
+- RBCreate (hueRB,hsvF, 7, 170, "4",
++ RBCreate (hueRB,hsvF, 7, 170, "4",
+ infofg, infobg,hicol,locol);
+- RBCreate (hueRB,hsvF, 47, 170, "5",
++ RBCreate (hueRB,hsvF, 47, 170, "5",
+ infofg, infobg,hicol,locol);
+- RBCreate (hueRB,hsvF, 87, 170, "6",
++ RBCreate (hueRB,hsvF, 87, 170, "6",
+ infofg, infobg,hicol,locol);
+
+- BTCreate(&hueclrB, hsvF, 127, 158, 70, BUTTH, "Reset",
++ BTCreate(&hueclrB, hsvF, 127, 158, 70, BUTTH, "Reset",
+ infofg, infobg,hicol,locol);
+
+ initHmap();
+@@ -394,13 +395,13 @@
+
+ InitGraf(&gGraf);
+ CreateGraf(&gGraf, rgbF, 10, 179, infofg, infobg, "Green");
+-
++
+ InitGraf(&bGraf);
+ CreateGraf(&bGraf, rgbF, 10, 338, infofg, infobg, "Blue");
+
+ satDial.drawobj = dragGamma;
+ intGraf.drawobj = rGraf.drawobj = gGraf.drawobj = bGraf.drawobj = dragGamma;
+-
++
+ SetHSVmode();
+
+ ctrls2gamstate(&defstate);
+@@ -415,14 +416,14 @@
+ Str2Graf(&preset[1].rstate,"L 4 : 0,0 : 127,0 : 128,255 : 255,255");
+ Str2Graf(&preset[1].gstate,"L 4 : 0,0 : 127,0 : 128,255 : 255,255");
+ Str2Graf(&preset[1].bstate,"L 4 : 0,0 : 127,0 : 128,255 : 255,255");
+-
++
+
+ /* set up preset2 as a 'temperature' pseudo-color preset */
+ ctrls2gamstate(&preset[2]);
+ Str2Graf(&preset[2].rstate,"S 4 : 0,0 : 105,0 : 155,140 : 255,255");
+ Str2Graf(&preset[2].gstate,"S 5 : 0,0 : 57,135 : 127,255 : 198,135 : 255,0");
+ Str2Graf(&preset[2].bstate,"S 4 : 0,255 : 100,140 : 150,0 : 255,0");
+-
++
+
+ /* set up preset3 as a 'map' pseudo-color preset */
+ ctrls2gamstate(&preset[3]);
+@@ -480,7 +481,7 @@
+
+ computeHSVlinear();
+ }
+-
++
+
+ /***************************************************/
+ int GamCheckEvent(xev)
+@@ -492,14 +493,14 @@
+ int rv;
+
+ rv = 1;
+-
++
+ if (xev->type == Expose) {
+ int x,y,w,h;
+ XExposeEvent *e = (XExposeEvent *) xev;
+ x = e->x; y = e->y; w = e->width; h = e->height;
+
+ /* throw away excess redraws for 'dumb' windows */
+- if (e->count > 0 &&
++ if (e->count > 0 &&
+ (e->window == satDial.win || e->window == rhDial.win ||
+ e->window == gsDial.win || e->window == bvDial.win ||
+ e->window == cmapF || e->window == modF ||
+@@ -600,7 +601,7 @@
+
+
+ else if (e->window == hsvF) {
+- if (HDClick(&srcHD, x,y) || HDClick(&dstHD, x,y)) {
++ if (HDClick(&srcHD, x,y) || HDClick(&dstHD, x,y)) {
+ dials2hmap();
+ build_hremap();
+ changedGam();
+@@ -654,7 +655,7 @@
+ e->window == gsDial.win ||
+ e->window == bvDial.win) {
+
+- if ((e->window == rhDial.win && DTrack(&rhDial, x,y)) ||
++ if ((e->window == rhDial.win && DTrack(&rhDial, x,y)) ||
+ (e->window == gsDial.win && DTrack(&gsDial, x,y)) ||
+ (e->window == bvDial.win && DTrack(&bvDial, x,y))) {
+ saveCMap(&prevcmap);
+@@ -683,7 +684,7 @@
+ XKeyEvent *e = (XKeyEvent *) xev;
+ char buf[128]; KeySym ks;
+ int stlen;
+-
++
+ stlen = XLookupString(e,buf,128,&ks,(XComposeStatus *) NULL);
+ buf[stlen] = '\0';
+
+@@ -722,7 +723,7 @@
+
+ if (whtHD.enabCB.val && whtHD.satval) hsvnonlinear++;
+
+- if (satDial.val != 0) hsvnonlinear++;
++ if (satDial.val != 0.0) hsvnonlinear++;
+
+ /* check intensity graf */
+ for (i=0; i<256 && intGraf.func[i]==i; i++);
+@@ -792,7 +793,7 @@
+ int x,y;
+ {
+ XPoint pts[8];
+-
++
+ pts[0].x = x+10; pts[0].y = y;
+ pts[1].x = x-4; pts[1].y = y-100;
+ pts[2].x = x-4; pts[2].y = y-40;
+@@ -873,11 +874,11 @@
+ XSetForeground(theDisp, theGC, infofg);
+
+ if (picType != PIC8) {
+- CenterString(cmapF, CMAPX + CMAPW/2, CMAPY + CMAPH/2,
++ CenterString(cmapF, CMAPX + CMAPW/2, CMAPY + CMAPH/2,
+ "No colormap in 24-bit mode.");
+ return;
+ }
+-
++
+
+
+ for (i=0; i<numcols; i++) {
+@@ -941,14 +942,14 @@
+ if (bp->win == butF && PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) break;
+ }
+
+- /* if 'Set' is lit, and we didn't click 'set' or 'Reset' or '1'..'4',
++ /* if 'Set' is lit, and we didn't click 'set' or 'Reset' or '1'..'4',
+ turn it off */
+ if (i!=G_BSET && i!=G_B1 && i!=G_B2 && i!=G_B3 && i!=G_B4 && i!=G_BRESET
+ && gbut[G_BSET].lit) {
+- gbut[G_BSET].lit = 0;
++ gbut[G_BSET].lit = 0;
+ BTRedraw(&gbut[G_BSET]);
+ }
+-
++
+
+ if (i<G_NBUTTS) { /* found one */
+ if (BTTrack(bp)) doCmd(i);
+@@ -1003,7 +1004,7 @@
+ } /* if i<numcols */
+ } /* if but==1 */
+
+-
++
+ else if (but==2) { /* color smooth */
+ int cellnum, delc, col1, j, delr, delg, delb;
+
+@@ -1025,9 +1026,9 @@
+ gcmap[col1 + i] = gcmap[col1] + (delg * i) / delc;
+ bcmap[col1 + i] = bcmap[col1] + (delb * i) / delc;
+
+- if (cellgroup[col1 + i]) {
++ if (cellgroup[col1 + i]) {
+ /* propogate new color to all members of this group */
+- for (j=0; j<numcols; j++)
++ for (j=0; j<numcols; j++)
+ if (cellgroup[j] == cellgroup[col1 + i]) {
+ rcmap[j] = rcmap[col1 + i];
+ gcmap[j] = gcmap[col1 + i];
+@@ -1043,7 +1044,7 @@
+ }
+
+ if (i<numcols) { /* something changed */
+- xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
++ xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
+ sizeof(struct cmapstate));
+ BTSetActive(&gbut[G_BCOLUNDO],1);
+ applyGamma(1);
+@@ -1067,7 +1068,7 @@
+
+ lastcell = curcell;
+
+- j = XGrabPointer(theDisp, cmapF, False, 0, GrabModeAsync,
++ j = XGrabPointer(theDisp, cmapF, False, 0, GrabModeAsync,
+ GrabModeAsync, None, None, (Time) CurrentTime);
+ while (1) {
+ Window rW,cW;
+@@ -1076,7 +1077,7 @@
+
+ if (XQueryPointer(theDisp,cmapF,&rW,&cW,&rx,&ry,&x,&y,&mask)) {
+ /* if button3 and shift released */
+- if (!(mask & (Button3Mask | ShiftMask))) break;
++ if (!(mask & (Button3Mask | ShiftMask))) break;
+
+ /* if user lets go of B3, reset addonly/delonly flag & lastcell */
+ if (!(mask & Button3Mask) && (mask & ShiftMask)) {
+@@ -1112,7 +1113,7 @@
+
+ if (recolor) {
+ /* colors changed. save to color undo area */
+- xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
++ xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
+ sizeof(struct cmapstate));
+ BTSetActive(&gbut[G_BCOLUNDO],1);
+ applyGamma(1); /* have to regen entire image when groupings chg */
+@@ -1146,12 +1147,12 @@
+ /* cases: curgroup>0, clicked on something in same group
+ remove target from group
+ curgroup>0, clicked on something in different group
+- merge groups. (target group gets
++ merge groups. (target group gets
+ set equal to current values)
+ curgroup>0, clicked on something in no group
+ add target to curgroup
+ curgroup=0, clicked on something in a group
+- add editColor to target group,
++ add editColor to target group,
+ set curgroup = target group
+ target group gets current values
+ curgroup=0, clicked on something in no group
+@@ -1185,7 +1186,7 @@
+ }
+ }
+
+- else if ((mode!=DELONLY) && cellgroup[cnum] != curgroup &&
++ else if ((mode!=DELONLY) && cellgroup[cnum] != curgroup &&
+ cellgroup[cnum]>0) {
+ /* merge clicked-on group into curgroup */
+ mode = ADDONLY;
+@@ -1196,11 +1197,11 @@
+ selectCell(i,1);
+ rcmap[i] = rcmap[editColor];
+ gcmap[i] = gcmap[editColor];
+- bcmap[i] = bcmap[editColor];
++ bcmap[i] = bcmap[editColor];
+ }
+ }
+ }
+-
++
+ else if ((mode!=DELONLY) && cellgroup[cnum] == 0) {
+ /* merge clicked-on cell into curgroup */
+ mode = ADDONLY;
+@@ -1209,7 +1210,7 @@
+ selectCell(cnum,1);
+ rcmap[cnum] = rcmap[editColor];
+ gcmap[cnum] = gcmap[editColor];
+- bcmap[cnum] = bcmap[editColor];
++ bcmap[cnum] = bcmap[editColor];
+ }
+ }
+
+@@ -1224,14 +1225,14 @@
+ selectCell(i,1);
+ rcmap[i] = rcmap[editColor];
+ gcmap[i] = gcmap[editColor];
+- bcmap[i] = bcmap[editColor];
++ bcmap[i] = bcmap[editColor];
+ }
+ }
+ curgroup = cellgroup[cnum];
+ cellgroup[editColor] = curgroup;
+ }
+-
+- else if ((mode!=DELONLY) && (cellgroup[cnum] == 0)
++
++ else if ((mode!=DELONLY) && (cellgroup[cnum] == 0)
+ && (cnum != editColor)) {
+ /* create new group for these two cells (cnum and editColor) */
+ mode = ADDONLY;
+@@ -1247,14 +1248,14 @@
+ }
+
+ return rv;
+-}
+-
++}
++
+
+ /*********************/
+ void ChangeEC(num)
+ int num;
+ {
+- /* given a color # that is to become the new editColor, do all
++ /* given a color # that is to become the new editColor, do all
+ highlighting/unhighlighting, copy editColor's rgb values to
+ the rgb/hsv dials */
+
+@@ -1291,18 +1292,18 @@
+ rgb2hsv(rcmap[editColor], gcmap[editColor], bcmap[editColor], &h, &s, &v);
+ if (h<0) h = 0;
+
+- DSetVal(&rhDial, (int) h);
+- DSetVal(&gsDial, (int) (s*100));
+- DSetVal(&bvDial, (int) (v*100));
++ DSetVal(&rhDial, h);
++ DSetVal(&gsDial, s*100);
++ DSetVal(&bvDial, v*100);
+ }
+ else {
+- DSetVal(&rhDial, rcmap[editColor]);
+- DSetVal(&gsDial, gcmap[editColor]);
+- DSetVal(&bvDial, bcmap[editColor]);
++ DSetVal(&rhDial, (double)rcmap[editColor]);
++ DSetVal(&gsDial, (double)gcmap[editColor]);
++ DSetVal(&bvDial, (double)bcmap[editColor]);
+ }
+ }
+-
+-
++
++
+ /*********************/
+ void ApplyECctrls()
+ {
+@@ -1310,16 +1311,15 @@
+
+ if (hsvmode) {
+ int rv, gv, bv;
+- hsv2rgb((double) rhDial.val, ((double) gsDial.val) / 100.0,
+- ((double) bvDial.val) / 100.0, &rv, &gv, &bv);
++ hsv2rgb(rhDial.val, gsDial.val / 100.0, bvDial.val / 100.0, &rv, &gv, &bv);
+ rcmap[editColor] = rv;
+ gcmap[editColor] = gv;
+ bcmap[editColor] = bv;
+ }
+ else {
+- rcmap[editColor] = rhDial.val;
+- gcmap[editColor] = gsDial.val;
+- bcmap[editColor] = bvDial.val;
++ rcmap[editColor] = (int)rhDial.val;
++ gcmap[editColor] = (int)gsDial.val;
++ bcmap[editColor] = (int)bvDial.val;
+ }
+ }
+
+@@ -1330,7 +1330,7 @@
+ {
+ /* this function generates the Floyd-Steinberg gamma curve (fsgamcr)
+
+- This function generates a 4 point spline curve to be used as a
++ This function generates a 4 point spline curve to be used as a
+ non-linear grey 'colormap'. Two of the points are nailed down at 0,0
+ and 255,255, and can't be changed. You specify the other two. If
+ you specify points on the line (0,0 - 255,255), you'll get the normal
+@@ -1345,7 +1345,7 @@
+ double yf[4];
+
+ InitSpline(x, y, 4, yf);
+-
++
+ for (i=0; i<256; i++) {
+ j = (int) EvalSpline(x, y, yf, 4, (double) i);
+ if (j<0) j=0;
+@@ -1364,14 +1364,14 @@
+
+ switch (cmd) {
+
+- case G_BAPPLY:
++ case G_BAPPLY:
+ if (enabCB.val != 1) { enabCB.val = 1; CBRedraw(&enabCB); }
+- applyGamma(0);
++ applyGamma(0);
+ break;
+
+ case G_BNOGAM:
+ if (enabCB.val != 0) { enabCB.val = 0; CBRedraw(&enabCB); }
+- applyGamma(0);
++ applyGamma(0);
+ break;
+
+ case G_BUNDO: gamUndo(); break;
+@@ -1383,7 +1383,7 @@
+
+
+
+- case G_BDN_BR:
++ case G_BDN_BR:
+ case G_BUP_BR: GetGrafState(&intGraf, &gs);
+ for (i=0; i < gs.nhands; i++) {
+ if (cmd==G_BUP_BR) gs.hands[i].y += 10;
+@@ -1434,7 +1434,7 @@
+ else if (cmd==G_B3) ptr = &preset[2];
+ else if (cmd==G_B4) ptr = &preset[3];
+ else if (cmd==G_BRESET) ptr = &defstate;
+-
++
+ if (gbut[G_BSET].lit) {
+ ctrls2gamstate(ptr);
+ gbut[G_BSET].lit = 0;
+@@ -1454,7 +1454,7 @@
+ break;
+
+
+- case G_BCOLREV:
++ case G_BCOLREV:
+ {
+ struct cmapstate tmp1cmap;
+ int gchg;
+@@ -1463,9 +1463,9 @@
+ gchg = (i!=numcols);
+
+ saveCMap(&tmpcmap); /* buffer current cmapstate */
+-
++
+ for (i=0; i<numcols; i++) { /* do reversion */
+- rcmap[i] = rorg[i];
++ rcmap[i] = rorg[i];
+ gcmap[i] = gorg[i];
+ bcmap[i] = borg[i];
+ cellgroup[i] = 0;
+@@ -1473,12 +1473,12 @@
+ curgroup = maxgroup = 0;
+
+ saveCMap(&tmp1cmap); /* buffer current cmapstate */
+-
++
+ /* prevent multiple 'Undo All's from filling Undo buffer */
+- if (xvbcmp((char *) &tmpcmap, (char *) &tmp1cmap,
++ if (xvbcmp((char *) &tmpcmap, (char *) &tmp1cmap,
+ sizeof(struct cmapstate))) {
+ /* the reversion changed the cmapstate */
+- xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
++ xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
+ sizeof(struct cmapstate));
+ BTSetActive(&gbut[G_BCOLUNDO],1);
+
+@@ -1496,7 +1496,7 @@
+ BTSetActive(&gbut[G_BCOLUNDO],1);
+ rndCols();
+ break;
+-
++
+ case G_BRV:
+ saveCMap(&prevcmap);
+ BTSetActive(&gbut[G_BCOLUNDO],1);
+@@ -1523,7 +1523,7 @@
+ ChangeEC(editColor);
+ applyGamma(1);
+ break;
+-
++
+
+ case G_BMONO:
+ saveCMap(&prevcmap);
+@@ -1534,7 +1534,7 @@
+ ChangeEC(editColor);
+ applyGamma(1);
+ break;
+-
++
+
+ case G_BCOLUNDO:
+ for (i=0; i<numcols && cellgroup[i]==prevcmap.cellgroup[i]; i++);
+@@ -1560,10 +1560,10 @@
+ rhDial.title = "Red";
+ gsDial.title = "Green";
+ bvDial.title = "Blue";
+-
+- DSetRange(&rhDial, 0, 255, rcmap[editColor], 16);
+- DSetRange(&gsDial, 0, 255, gcmap[editColor], 16);
+- DSetRange(&bvDial, 0, 255, bcmap[editColor], 16);
++
++ DSetRange(&rhDial, 0.0, 255.0, (double)rcmap[editColor], 1.0, 16.0);
++ DSetRange(&gsDial, 0.0, 255.0, (double)gcmap[editColor], 1.0, 16.0);
++ DSetRange(&bvDial, 0.0, 255.0, (double)bcmap[editColor], 1.0, 16.0);
+
+ XClearWindow(theDisp, rhDial.win); DRedraw(&rhDial);
+ XClearWindow(theDisp, gsDial.win); DRedraw(&gsDial);
+@@ -1581,9 +1581,9 @@
+ &h, &s, &v);
+
+ if (h<0.0) h = 0.0;
+- DSetRange(&rhDial, 0, 360, (int) h, 5);
+- DSetRange(&gsDial, 0, 100, (int) (s*100), 5);
+- DSetRange(&bvDial, 0, 100, (int) (v*100), 5);
++ DSetRange(&rhDial, 0.0, 360.0, h, 1.0, 5.0);
++ DSetRange(&gsDial, 0.0, 100.0, s*100, 1.0, 5.0);
++ DSetRange(&bvDial, 0.0, 100.0, v*100, 1.0, 5.0);
+
+ XClearWindow(theDisp, rhDial.win); DRedraw(&rhDial);
+ XClearWindow(theDisp, gsDial.win); DRedraw(&gsDial);
+@@ -1615,12 +1615,12 @@
+ GammifyColors();
+
+ /* if current 'desired' colormap hasn't changed, don't DO anything */
+- if (!xvbcmp((char *) rMap, (char *) oldr, (size_t) numcols) &&
+- !xvbcmp((char *) gMap, (char *) oldg, (size_t) numcols) &&
++ if (!xvbcmp((char *) rMap, (char *) oldr, (size_t) numcols) &&
++ !xvbcmp((char *) gMap, (char *) oldg, (size_t) numcols) &&
+ !xvbcmp((char *) bMap, (char *) oldb, (size_t) numcols)) return;
+
+ /* special case: if using R/W color, just modify the colors and leave */
+- if (allocMode==AM_READWRITE && rwthistime &&
++ if (allocMode==AM_READWRITE && rwthistime &&
+ (!cmapchange || nfcols==numcols)) {
+ XColor ctab[256];
+
+@@ -1647,10 +1647,10 @@
+ gdisp[i] = gMap[rwpc2pc[i]];
+ bdisp[i] = bMap[rwpc2pc[i]];
+ }
+-
++
+ return;
+ }
+-
++
+ FreeColors();
+
+ {
+@@ -1663,10 +1663,10 @@
+ AllocColors();
+
+
+- if (epicMode != EM_RAW) {
++ if (epicMode != EM_RAW) {
+ /* regen image, as we'll probably want to dither differently, given
+ new colors and such */
+-
++
+ GenerateEpic(eWIDE, eHIGH);
+ }
+ }
+@@ -1701,7 +1701,7 @@
+ for (i=255; i>0 && !hist[i]; i--);
+ *rmaxv = i;
+ }
+-
++
+ else { /* PIC24 */
+ int v,minv,maxv;
+
+@@ -1724,7 +1724,7 @@
+ hist[v]++;
+ }
+ }
+-
++
+ *rminv = minv; *rmaxv = maxv;
+ }
+
+@@ -1764,13 +1764,13 @@
+ int i, histeq[256], minv, maxv;
+
+ calcHistEQ(histeq, &minv, &maxv); /* ignore minv,maxv */
+-
+- for (i=0; i<256; i++)
++
++ for (i=0; i<256; i++)
+ intGraf.func[i] = histeq[i];
+-
++
+ for (i=0; i< intGraf.nhands; i++)
+ intGraf.hands[i].y = intGraf.func[intGraf.hands[i].x];
+-
++
+ intGraf.entergamma = 0;
+
+ if (gamUp) {
+@@ -1797,7 +1797,7 @@
+ if (v>maxv) maxv = v;
+ }
+ }
+- else {
++ else {
+ int histeq[256];
+ calcHistEQ(histeq, &minv, &maxv); /* ignore histeq */
+ }
+@@ -1833,11 +1833,11 @@
+ for (i=0; i<numcols; i++) Gammify1(i);
+ }
+ else {
+- for (i=0; i<numcols; i++) {
++ for (i=0; i<numcols; i++) {
+ rMap[i] = rcmap[i];
+ gMap[i] = gcmap[i];
+ bMap[i] = bcmap[i];
+- if (!ncols)
++ if (!ncols)
+ cols[i] = (((int)rMap[i]) + ((int)gMap[i]) + ((int)bMap[i]) >= 128*3)
+ ? white : black;
+ }
+@@ -1875,7 +1875,7 @@
+ if (DEBUG>1) fprintf(stderr," (v=%f)",v);
+
+ if (h>=0) {
+- hi = (int) h;
++ hi = (int) h;
+ if (hi<0) hi += 360;
+ if (hi>=360) hi -= 360;
+ h = (double) hremap[hi];
+@@ -1884,14 +1884,14 @@
+ if (whtHD.enabCB.val) {
+ h = (double) whtHD.stval;
+ s = (double) whtHD.satval / 100.0;
+-
++
+ /* special case: if stval = satval = 0, set hue = -1 */
+ if (whtHD.stval == 0 && whtHD.satval == 0) h = -1.0;
+ }
+ }
+
+ /* apply satDial value to s */
+- s = s + ((double) satDial.val) / 100.0;
++ s = s + satDial.val / 100.0;
+ if (s<0.0) s = 0.0;
+ if (s>1.0) s = 1.0;
+
+@@ -1899,13 +1899,13 @@
+ if (DEBUG>1) fprintf(stderr," -> %d,%d,%d",rv,gv,bv);
+ }
+
+- rMap[col] = rGraf.func[rv];
++ rMap[col] = rGraf.func[rv];
+ gMap[col] = gGraf.func[gv];
+ bMap[col] = bGraf.func[bv];
+
+- if (!ncols)
+- cols[col] =
+- (((int)rMap[col]) + ((int)gMap[col]) + ((int)bMap[col]) >= 128*3)
++ if (!ncols)
++ cols[col] =
++ (((int)rMap[col]) + ((int)gMap[col]) + ((int)bMap[col]) >= 128*3)
+ ? white : black;
+
+ if (DEBUG>1) fprintf(stderr," -> %d,%d,%d\n",rMap[col],gMap[col],bMap[col]);
+@@ -2001,13 +2001,13 @@
+ {
+ xvbcopy((char *) hmap, (char *) gs->hmap, sizeof(hmap));
+
+- gs->wht_stval = whtHD.stval;
+- gs->wht_satval = whtHD.satval;
++ gs->wht_stval = whtHD.stval;
++ gs->wht_satval = whtHD.satval;
+ gs->wht_enab = whtHD.enabCB.val;
+
+ gs->hueRBnum = RBWhich(hueRB);
+
+- gs->satval = satDial.val;
++ gs->satval = (int)satDial.val;
+ GetGrafState(&intGraf,&gs->istate);
+ GetGrafState(&rGraf, &gs->rstate);
+ GetGrafState(&gGraf, &gs->gstate);
+@@ -2042,7 +2042,7 @@
+ srcHD.ccwise = hm->src_ccw;
+ HDRedraw(&srcHD, HD_ALL | HD_CLEAR);
+ }
+-
++
+ if (dstHD.stval != hm->dst_st ||
+ dstHD.enval != hm->dst_en ||
+ dstHD.ccwise != hm->dst_ccw) {
+@@ -2051,7 +2051,7 @@
+ dstHD.ccwise = hm->dst_ccw;
+ HDRedraw(&dstHD, HD_ALL | HD_CLEAR);
+ }
+- }
++ }
+
+
+ if (whtHD.stval != gs->wht_stval || whtHD.satval != gs->wht_satval ||
+@@ -2063,9 +2063,9 @@
+ HDRedraw(&whtHD, HD_ALL | HD_CLEAR);
+ changed++;
+ }
+-
+- if (gs->satval != satDial.val) {
+- DSetVal(&satDial,gs->satval);
++
++ if (gs->satval != (int)satDial.val) {
++ DSetVal(&satDial,(double)gs->satval);
+ changed++;
+ }
+
+@@ -2203,7 +2203,7 @@
+ }
+
+
+-
++
+
+ /*********************/
+ static void parseResources()
+@@ -2226,7 +2226,7 @@
+ if (i) { sprintf(gname,"preset%d",i); gsp = &preset[i-1]; }
+ else { sprintf(gname,"default"); gsp = &defstate; }
+
+- xvbcopy((char *) gsp, (char *) &gs,
++ xvbcopy((char *) gsp, (char *) &gs,
+ sizeof(struct gamstate)); /* load 'gs' with defaults */
+
+ for (j=0; j<6; j++) { /* xv.*.huemap resources */
+@@ -2239,7 +2239,7 @@
+ lower_str(def_str);
+ if (sscanf(def_str,"%d %d %s %d %d %s",
+ &fst, &fen, fcw, &tst, &ten, tcw) != 6) {
+- fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
++ fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
+ cmd, tmp, def_str);
+ }
+ else {
+@@ -2260,7 +2260,7 @@
+ int wst, wsat, enab;
+ if (DEBUG) fprintf(stderr,"parseResource 'xv.%s: %s'\n",tmp, def_str);
+ if (sscanf(def_str,"%d %d %d", &wst, &wsat, &enab) != 3) {
+- fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
++ fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
+ cmd, tmp, def_str);
+ }
+ else { /* successful parse */
+@@ -2276,7 +2276,7 @@
+ int sat;
+ if (DEBUG) fprintf(stderr,"parseResource 'xv.%s: %s'\n",tmp, def_str);
+ if (sscanf(def_str,"%d", &sat) != 1) {
+- fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
++ fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
+ cmd, tmp, def_str);
+ }
+ else { /* successful parse */
+@@ -2304,7 +2304,7 @@
+ }
+ }
+ }
+-
++
+ /* copy (potentially) modified gs back to default/preset */
+ xvbcopy((char *) &gs, (char *) gsp, sizeof(struct gamstate));
+ }
+@@ -2324,16 +2324,16 @@
+ /* write out current state */
+ ctrls2gamstate(&gstate);
+ strcpy(gname, "xv.default");
+-
++
+ /* write out huemap resources */
+ for (i=0; i<6; i++) {
+ if (1 || gstate.hmap[i].src_st != gstate.hmap[i].dst_st ||
+ gstate.hmap[i].src_en != gstate.hmap[i].dst_en ||
+ gstate.hmap[i].src_ccw != gstate.hmap[i].dst_ccw) {
+- sprintf(tmp, "%s.huemap%d: %3d %3d %3s %3d %3d %3s\n", gname, i+1,
+- gstate.hmap[i].src_st, gstate.hmap[i].src_en,
++ sprintf(tmp, "%s.huemap%d: %3d %3d %3s %3d %3d %3s\n", gname, i+1,
++ gstate.hmap[i].src_st, gstate.hmap[i].src_en,
+ gstate.hmap[i].src_ccw ? "CCW" : "CW",
+- gstate.hmap[i].dst_st, gstate.hmap[i].dst_en,
++ gstate.hmap[i].dst_st, gstate.hmap[i].dst_en,
+ gstate.hmap[i].dst_ccw ? "CCW" : "CW");
+ strcat(rsrc, tmp);
+ }
+@@ -2341,7 +2341,7 @@
+
+ /* write out whtmap resource */
+ if (1 || gstate.wht_stval || gstate.wht_satval || gstate.wht_enab != 1) {
+- sprintf(tmp, "%s.whtmap: %d %d %d\n", gname, gstate.wht_stval,
++ sprintf(tmp, "%s.whtmap: %d %d %d\n", gname, gstate.wht_stval,
+ gstate.wht_satval, gstate.wht_enab);
+ strcat(rsrc, tmp);
+ }
+@@ -2372,7 +2372,7 @@
+
+ NewCutBuffer(rsrc);
+ }
+-
++
+
+ /*****************************/
+ static void dragGamma ()
+@@ -2381,14 +2381,14 @@
+ while gamma ctrls are being dragged
+ applies change to image if dragCB.val is set
+ does NOT call saveGamState() (as changedGam does) */
+-
++
+ if (dragCB.val && dragCB.active) {
+ hsvnonlinear = 1; /* force HSV calculations during drag */
+ applyGamma(0);
+ }
+ }
+
+-
++
+ /*****************************/
+ static void dragHueDial()
+ {
+@@ -2396,7 +2396,7 @@
+ while hue gamma ctrls are being dragged
+ applies change to image if dragCB.val is set
+ does NOT call saveGamState() (as changedGam does) */
+-
++
+ if (dragCB.val && dragCB.active) {
+ dials2hmap();
+ build_hremap();
+@@ -2413,14 +2413,14 @@
+ while color editor ctrls are being dragged
+ applies change to image if dragCB.val is set
+ does NOT call saveCMap(&prevcmap); BTSetActive(&gbut[G_BCOLUNDO],1); */
+-
++
+ if (dragCB.val && dragCB.active) ApplyEditColor(0);
+ }
+
+
+-
+-
+-
++
++
++
+
+ /**********************************************/
+ /************* HUE wheel functions ***********/
+@@ -2435,11 +2435,11 @@
+
+ /**************************************************/
+ static void HDCreate(hd, win, x, y, r, st, en, ccwise, str, fg, bg)
+-HDIAL *hd;
+-Window win;
+-int x,y,r,st,en,ccwise;
+-char *str;
+-u_long fg,bg;
++ HDIAL *hd;
++ Window win;
++ int x, y, r, st, en, ccwise;
++ const char *str;
++ u_long fg, bg;
+ {
+ int i;
+
+@@ -2470,7 +2470,7 @@
+ hdbpix2[HDB_ROTR] = hdbpix1[HDB_ROTR];
+ }
+
+-
++
+ #define BCOLS fg,bg,hicol,locol
+
+ if (hd->range) {
+@@ -2520,13 +2520,13 @@
+ }
+
+ if (flags & HD_FRAME) {
+- static char *colstr = "RYGCBM";
++ static const char *colstr = "RYGCBM";
+ char tstr[2];
+
+ XSetForeground(theDisp, theGC, hd->fg);
+ XDrawArc(theDisp, hd->win, theGC, hd->x - HD_RADIUS, hd->y - HD_RADIUS,
+ HD_RADIUS*2, HD_RADIUS*2, 0, 360*64);
+-
++
+ for (i=0; i<6; i++) {
+ int kldg;
+
+@@ -2553,8 +2553,8 @@
+ a = hdg2xdg(hd->stval) * DEG2RAD;
+ pol2xy(hd->x, hd->y, a, HD_RADIUS - 4, &x, &y);
+ XDrawLine(theDisp, hd->win, theGC, hd->x, hd->y, x,y);
+-
+- if (flags & HD_CLHNDS)
++
++ if (flags & HD_CLHNDS)
+ XFillRectangle(theDisp, hd->win, theGC, x-2,y-2, 5,5);
+ else {
+ XSetForeground(theDisp, theGC, hd->bg);
+@@ -2567,8 +2567,8 @@
+ a = hdg2xdg(hd->enval) * DEG2RAD;
+ pol2xy(hd->x, hd->y, a, HD_RADIUS - 4, &x, &y);
+ XDrawLine(theDisp, hd->win, theGC, hd->x, hd->y, x,y);
+-
+- if (flags & HD_CLHNDS)
++
++ if (flags & HD_CLHNDS)
+ XFillRectangle(theDisp, hd->win, theGC, x-2,y-2, 5,5);
+ else {
+ XSetForeground(theDisp, theGC, hd->bg);
+@@ -2587,7 +2587,7 @@
+ r = ((HD_RADIUS - 4) * hd->satval) / 100;
+ pol2xy(hd->x, hd->y, a, r, &x, &y);
+
+- if (flags & HD_CLHNDS)
++ if (flags & HD_CLHNDS)
+ XFillRectangle(theDisp, hd->win, theGC, x-2,y-2, 5,5);
+ else {
+ XFillRectangle(theDisp, hd->win, theGC, hd->x-1, hd->y-1, 3,3);
+@@ -2600,7 +2600,7 @@
+ }
+ }
+ }
+-
++
+
+
+
+@@ -2653,13 +2653,13 @@
+ XSetBackground(theDisp, theGC, hd->bg);
+
+ if (hd->range) {
+- sprintf(vstr,"%3d\007,%3d\007 %s", hd->stval, hd->enval,
++ sprintf(vstr,"%3d\007,%3d\007 %s", hd->stval, hd->enval,
+ hd->ccwise ? "CCW" : " CW");
+ }
+ else {
+ sprintf(vstr,"%3d\007 %3d%%", hd->stval, hd->satval);
+ }
+-
++
+ XDrawImageString(theDisp, hd->win, theGC,
+ hd->x - XTextWidth(monofinfo, vstr, (int) strlen(vstr))/2,
+ hd->y + HD_RADIUS + 24, vstr, (int) strlen(vstr));
+@@ -2669,7 +2669,7 @@
+
+ if (flags & HD_TITLE) {
+ XSetForeground(theDisp, theGC, hd->fg);
+- ULineString(hd->win, hd->x - HD_RADIUS - 15, hd->y - HD_RADIUS - 4,
++ ULineString(hd->win, hd->x - HD_RADIUS - 15, hd->y - HD_RADIUS - 4,
+ hd->str);
+ }
+
+@@ -2694,7 +2694,7 @@
+ }
+
+
+-
++
+ /**************************************************/
+ static int HDClick(hd,mx,my)
+ HDIAL *hd;
+@@ -2716,7 +2716,7 @@
+ if (!hd->range && !hd->enabCB.val) return 0; /* disabled */
+
+
+- if ( ((mx - hd->x) * (mx - hd->x) + (my - hd->y) * (my - hd->y))
++ if ( ((mx - hd->x) * (mx - hd->x) + (my - hd->y) * (my - hd->y))
+ < (HD_RADIUS * HD_RADIUS)) {
+ return HDTrack(hd,mx,my);
+ }
+@@ -2816,14 +2816,14 @@
+ hd->satval--; if (hd->satval<0) hd->satval = 0;
+ HDRedraw(hd, HD_HANDS | HD_VALS);
+ }
+-
++
+ else if (bnum == HDB_SAT && hd->satval<100) {
+ HDRedraw(hd, HD_CLHNDS);
+ hd->satval++; if (hd->satval>100) hd->satval = 100;
+ HDRedraw(hd, HD_HANDS | HD_VALS);
+ }
+ }
+-
++
+ break;
+ }
+
+@@ -2836,7 +2836,7 @@
+ }
+
+ if (bp->lit) { bp->lit = 0; BTRedraw(bp); }
+-
++
+ return 1;
+ }
+
+@@ -2872,7 +2872,7 @@
+
+ dx = x - hd->x; dy = y - hd->y;
+ dist = sqrt(dx*dx + dy*dy);
+-
++
+ newsat = (int) (dist / ((double) (HD_RADIUS - 4)) * 100);
+ RANGE(newsat,0,100);
+
+@@ -2899,7 +2899,7 @@
+ a = hdg2xdg(hd->enval) * DEG2RAD;
+ pol2xy(hd->x, hd->y, a, HD_RADIUS-4, &x,&y);
+ if (PTINRECT(mx,my,x-3,y-3,7,7)) handle = 2;
+-
++
+
+
+ if (!handle) { /* not in either, rotate both */
+@@ -2939,7 +2939,7 @@
+ }
+ rv = (origj != j);
+ }
+-
++
+
+ else { /* in one of the handles */
+ if (handle==1) valp = &(hd->stval); else valp = &(hd->enval);
+@@ -2958,22 +2958,22 @@
+
+ if (!hd->ccwise) {
+ ddist = (hd->enval - hd->stval + 360) % 360;
+- if (handle==1)
++ if (handle==1)
+ ndist = (hd->enval - j + 360) % 360;
+ else
+ ndist = (j - hd->stval + 360) % 360;
+ }
+ else {
+ ddist = (hd->stval - hd->enval + 360) % 360;
+- if (handle==1)
++ if (handle==1)
+ ndist = (j - hd->enval + 360) % 360;
+ else
+ ndist = (hd->stval - j + 360) % 360;
+ }
+
+- if (abs(ddist - ndist) >= 180 && ddist<180)
++ if (abs(ddist - ndist) >= 180 && ddist<180)
+ hd->ccwise = !hd->ccwise;
+-
++
+ *valp = j;
+ HDRedraw(hd, HD_HANDS | HD_DIR | HD_VALS);
+
+@@ -2986,8 +2986,8 @@
+
+ return rv;
+ }
+-
+-
++
++
+
+ /**************************************************/
+ static int hdg2xdg(hdg)
+@@ -3012,7 +3012,7 @@
+ *yp = cy - (int) (sin(ang) * (double) rad);
+ }
+
+-
++
+ /***************************************************/
+ static int computeHDval(hd, x, y)
+ HDIAL *hd;
+@@ -3044,7 +3044,7 @@
+
+
+
+-
++
+ /****************************************************/
+ static void initHmap()
+ {
+@@ -3117,10 +3117,10 @@
+ (hmap[i].src_en != hmap[i].dst_en) ||
+ (hmap[i].src_ccw != hmap[i].dst_ccw)) { /* not a 1:1 mapping */
+
+- st1 = hmap[i].src_st;
++ st1 = hmap[i].src_st;
+ en1 = hmap[i].src_en;
+ if (hmap[i].src_ccw) {
+- inc1 = -1;
++ inc1 = -1;
+ len1 = (st1 - en1 + 360) % 360;
+ }
+ else {
+@@ -3131,7 +3131,7 @@
+ st2 = hmap[i].dst_st;
+ en2 = hmap[i].dst_en;
+ if (hmap[i].dst_ccw) {
+- inc2 = -1;
++ inc2 = -1;
+ len2 = (st2 - en2 + 360) % 360;
+ }
+ else {
+@@ -3179,7 +3179,7 @@
+
+ byte *pp, *op;
+ int i,j;
+- int rv, gv, bv, vi, hi;
++ int rv, gv, bv;
+ byte *outpic;
+ int min, max, del, h, s, v;
+ int f, p, q, t, vs100, vsf10000;
+@@ -3200,7 +3200,7 @@
+
+ if (whtHD.enabCB.val && whtHD.satval) hsvmod++;
+
+- if (satDial.val != 0) hsvmod++;
++ if (satDial.val != 0.0) hsvmod++;
+
+ /* check intensity graf */
+ for (i=0; i<256; i++) {
+@@ -3270,7 +3270,7 @@
+
+ /* map near-black to black to avoid weird effects */
+ if (v <= 16) s = 0;
+-
++
+ /* apply intGraf.func[] function to 'v' (the intensity) */
+ v = intGraf.func[v];
+
+@@ -3284,7 +3284,7 @@
+ }
+
+ /* apply satDial value to s */
+- s = s + satDial.val;
++ s = s + (int)satDial.val;
+ if (s< 0) s = 0;
+ if (s>100) s = 100;
+
+@@ -3295,7 +3295,7 @@
+ if (h==NOHUE || !s) { rv = gv = bv = v; }
+ else {
+ if (h==360) h = 0;
+-
++
+ h = (h*100) / 60; /* h is in range 000..599 (0.0 - 5.99) */
+ j = h - (h%100); /* j = 000, 100, 200, 300, 400, 500 */
+ f = h - j; /* 'fractional' part of h (00..99) */
+@@ -3305,7 +3305,7 @@
+ p = v - vs100;
+ q = v - vsf10000;
+ t = v - vs100 + vsf10000;
+-
++
+ switch (j) {
+ case 000: rv = v; gv = t; bv = p; break;
+ case 100: rv = q; gv = v; bv = p; break;
+@@ -3319,7 +3319,7 @@
+ } /* if hsvmod */
+
+
+- *op++ = rGraf.func[rv];
++ *op++ = rGraf.func[rv];
+ *op++ = gGraf.func[gv];
+ *op++ = bGraf.func[bv];
+ }
+diff -ru xv-3.10a/xvgif.c xv-3.10a-enhancements/xvgif.c
+--- xv-3.10a/xvgif.c 1995-01-10 11:54:41.000000000 -0800
++++ xv-3.10a-enhancements/xvgif.c 2007-05-13 17:33:51.000000000 -0700
+@@ -28,17 +28,19 @@
+ typedef int boolean;
+
+ #define NEXTBYTE (*dataptr++)
++#define SKIPBYTE (dataptr++) /* quiet some compiler warnings */
+ #define EXTENSION 0x21
+-#define IMAGESEP 0x2c
++#define IMAGESEP 0x2c /* a.k.a. Image Descriptor */
+ #define TRAILER 0x3b
+ #define INTERLACEMASK 0x40
+ #define COLORMAPMASK 0x80
+
+-
+
+-FILE *fp;
+
+-int BitOffset = 0, /* Bit Offset of next code */
++static FILE *fp;
++
++static int
++ BitOffset = 0, /* Bit Offset of next code */
+ XC = 0, YC = 0, /* Output X and Y coords of current pixel */
+ Pass = 0, /* Used by output routine if interlaced pic */
+ OutCount = 0, /* Decompressor output 'stack count' */
+@@ -46,9 +48,10 @@
+ Width, Height, /* image dimensions */
+ LeftOfs, TopOfs, /* image offset */
+ BitsPerPixel, /* Bits per pixel, read from GIF header */
+- BytesPerScanline, /* bytes per scanline in output raster */
++/* BytesPerScanline, */ /* bytes per scanline in output raster */
+ ColorMapSize, /* number of colors */
+ Background, /* background color */
++ Transparent, /* transparent color (GRR 19980314) */
+ CodeSize, /* Code size, read from GIF header */
+ InitCodeSize, /* Starting code size, used during Clear */
+ Code, /* Value returned by ReadCode */
+@@ -57,47 +60,49 @@
+ EOFCode, /* GIF end-of-information code */
+ CurCode, OldCode, InCode, /* Decompressor variables */
+ FirstFree, /* First free code, generated per GIF spec */
+- FreeCode, /* Decompressor,next free slot in hash table */
++ FreeCode, /* Decompressor, next free slot in hash table */
+ FinChar, /* Decompressor variable */
+ BitMask, /* AND mask for data size */
+ ReadMask, /* Code AND mask for current code size */
+- Misc; /* miscellaneous bits (interlace, local cmap)*/
++ Misc, /* miscellaneous bits (interlace, local cmap)*/
++ GlobalBitsPerPixel, /* may have local colormap of different size */
++ GlobalColorMapSize, /* (ditto) */
++ GlobalBitMask; /* (ditto) */
+
+
+-boolean Interlace, HasColormap;
++static boolean Interlace, HasGlobalColormap;
+
+-byte *RawGIF; /* The heap array to hold it, raw */
+-byte *Raster; /* The raster data stream, unblocked */
+-byte *pic8;
++static byte *RawGIF; /* The heap array to hold it, raw */
++static byte *Raster; /* The raster data stream, unblocked */
++static byte *pic8;
+
+ /* The hash table used by the decompressor */
+-int Prefix[4096];
+-int Suffix[4096];
++static int Prefix[4096];
++static int Suffix[4096];
+
+ /* An output array used by the decompressor */
+-int OutCode[4097];
++static int OutCode[4097];
+
+-int gif89 = 0;
+-char *id87 = "GIF87a";
+-char *id89 = "GIF89a";
++static int gif89 = 0;
++static const char *id87 = "GIF87a";
++static const char *id89 = "GIF89a";
+
+-static int EGApalette[16][3] = {
+- {0,0,0}, {0,0,128}, {0,128,0}, {0,128,128},
++static int const EGApalette[16][3] = {
++ {0,0,0}, {0,0,128}, {0,128,0}, {0,128,128},
+ {128,0,0}, {128,0,128}, {128,128,0}, {200,200,200},
+ {100,100,100}, {100,100,255}, {100,255,100}, {100,255,255},
+ {255,100,100}, {255,100,255}, {255,255,100}, {255,255,255} };
+-
++
+
+ static int readImage PARM((PICINFO *));
+ static int readCode PARM((void));
+ static void doInterlace PARM((int));
+-static int gifError PARM((PICINFO *, char *));
+-static void gifWarning PARM((char *));
++static int gifError PARM((PICINFO *, const char *));
++static void gifWarning PARM((const char *));
+
+-int filesize;
+-char *bname;
+-
+-byte *dataptr;
++static int filesize;
++static const char *bname;
++static byte *dataptr;
+
+
+ /*****************************/
+@@ -108,17 +113,22 @@
+ {
+ /* returns '1' if successful */
+
+- register byte ch, ch1, *origptr;
++ register byte ch, *origptr;
+ register int i, block;
+- int aspect, gotimage;
++ int aspect;
++ char tmpname[256];
++ byte r[256], g[256], b[256];
+
+ /* initialize variables */
+- BitOffset = XC = YC = Pass = OutCount = gotimage = 0;
++ BitOffset = XC = YC = OutCount = 0;
++ Pass = -1;
+ RawGIF = Raster = pic8 = NULL;
+ gif89 = 0;
++ Transparent = -1;
+
+ pinfo->pic = (byte *) NULL;
+ pinfo->comment = (char *) NULL;
++ pinfo->numpages= 0;
+
+ bname = BaseName(fname);
+ fp = xv_fopen(fname,"r");
+@@ -129,67 +139,87 @@
+ fseek(fp, 0L, 2);
+ filesize = ftell(fp);
+ fseek(fp, 0L, 0);
+-
+- /* the +256's are so we can read truncated GIF files without fear of
++
++ if (filesize + 256 < filesize)
++ return( gifError(pinfo, "GIF file size is too large") );
++
++ /* the +256's are so we can read truncated GIF files without fear of
+ segmentation violation */
+ if (!(dataptr = RawGIF = (byte *) calloc((size_t) filesize+256, (size_t) 1)))
+- return( gifError(pinfo, "not enough memory to read gif file") );
+-
+- if (!(Raster = (byte *) calloc((size_t) filesize+256,(size_t) 1)))
+- return( gifError(pinfo, "not enough memory to read gif file") );
+-
+- if (fread(dataptr, (size_t) filesize, (size_t) 1, fp) != 1)
+- return( gifError(pinfo, "GIF data read failed") );
++ FatalError("LoadGIF: not enough memory to read GIF file");
+
++ if (!(Raster = (byte *) calloc((size_t) filesize+256,(size_t) 1)))
++ FatalError("LoadGIF: not enough memory to read GIF file");
++
++ if (fread(dataptr, (size_t) filesize, (size_t) 1, fp) != 1)
++ return( gifError(pinfo, "GIF data read failed") );
++ fclose(fp);
+
+ origptr = dataptr;
+
+ if (strncmp((char *) dataptr, id87, (size_t) 6)==0) gif89 = 0;
+ else if (strncmp((char *) dataptr, id89, (size_t) 6)==0) gif89 = 1;
+ else return( gifError(pinfo, "not a GIF file"));
+-
++
+ dataptr += 6;
+-
++
+ /* Get variables from the GIF screen descriptor */
+-
++
+ ch = NEXTBYTE;
+ RWidth = ch + 0x100 * NEXTBYTE; /* screen dimensions... not used. */
+ ch = NEXTBYTE;
+ RHeight = ch + 0x100 * NEXTBYTE;
+-
++ if (DEBUG) fprintf(stderr,"GIF89 logical screen = %d x %d\n",RWidth,RHeight);
++
+ ch = NEXTBYTE;
+- HasColormap = ((ch & COLORMAPMASK) ? True : False);
+-
+- BitsPerPixel = (ch & 7) + 1;
+- numcols = ColorMapSize = 1 << BitsPerPixel;
+- BitMask = ColorMapSize - 1;
+-
++ HasGlobalColormap = ((ch & COLORMAPMASK) ? True : False);
++
++ /* GRR 20070318: fix decoding bug when global and local color-table sizes
++ * differ */
++ GlobalBitsPerPixel = BitsPerPixel = (ch & 7) + 1;
++ GlobalColorMapSize = ColorMapSize = numcols = 1 << BitsPerPixel;
++ GlobalBitMask = BitMask = ColorMapSize - 1;
++
+ Background = NEXTBYTE; /* background color... not used. */
+-
++
+ aspect = NEXTBYTE;
+ if (aspect) {
+ if (!gif89) return(gifError(pinfo,"corrupt GIF file (screen descriptor)"));
+ else normaspect = (float) (aspect + 15) / 64.0; /* gif89 aspect ratio */
+ if (DEBUG) fprintf(stderr,"GIF89 aspect = %f\n", normaspect);
++ /* FIXME: apparently this _should_ apply to all frames in a multi-image
++ * GIF (i.e., PgUp/PgDn), but it doesn't */
+ }
+-
+-
++
++
+ /* Read in global colormap. */
+-
+- if (HasColormap)
++
++ if (HasGlobalColormap)
+ for (i=0; i<ColorMapSize; i++) {
+- pinfo->r[i] = NEXTBYTE;
+- pinfo->g[i] = NEXTBYTE;
+- pinfo->b[i] = NEXTBYTE;
++ r[i] = NEXTBYTE;
++ g[i] = NEXTBYTE;
++ b[i] = NEXTBYTE;
+ }
+- else { /* no colormap in GIF file */
++ else { /* no _global_ colormap in GIF file (but may have local one(s)) */
+ /* put std EGA palette (repeated 16 times) into colormap, for lack of
+- anything better to do */
++ anything better to do at the moment */
+
+ for (i=0; i<256; i++) {
+- pinfo->r[i] = EGApalette[i&15][0];
+- pinfo->g[i] = EGApalette[i&15][1];
+- pinfo->b[i] = EGApalette[i&15][2];
++ r[i] = EGApalette[i&15][0];
++ g[i] = EGApalette[i&15][1];
++ b[i] = EGApalette[i&15][2];
++ }
++ }
++ memcpy(pinfo->r, r, sizeof r);
++ memcpy(pinfo->g, g, sizeof g);
++ memcpy(pinfo->b, b, sizeof b);
++
++ if (DEBUG > 1) {
++ fprintf(stderr," global color table%s:\n",
++ HasGlobalColormap? "":" (repeated EGA palette)");
++ for (i=0; i<ColorMapSize; i++) {
++ fprintf(stderr," (%3d %02x,%02x,%02x)\n", i, pinfo->r[i],
++ pinfo->g[i], pinfo->b[i]);
+ }
+ }
+
+@@ -221,19 +251,19 @@
+ if (blocksize == 2) {
+ aspnum = NEXTBYTE;
+ aspden = NEXTBYTE;
+- if (aspden>0 && aspnum>0)
++ if (aspden>0 && aspnum>0)
+ normaspect = (float) aspnum / (float) aspden;
+ else { normaspect = 1.0; aspnum = aspden = 1; }
+
+- if (DEBUG) fprintf(stderr,"GIF87 aspect extension: %d:%d = %f\n\n",
++ if (DEBUG) fprintf(stderr,"GIF87 aspect extension: %d:%d = %f\n\n",
+ aspnum, aspden,normaspect);
+ }
+ else {
+- for (i=0; i<blocksize; i++) NEXTBYTE;
++ for (i=0; i<blocksize; i++) SKIPBYTE;
+ }
+
+ while ((sbsize=NEXTBYTE)>0) { /* eat any following data subblocks */
+- for (i=0; i<sbsize; i++) NEXTBYTE;
++ for (i=0; i<sbsize; i++) SKIPBYTE;
+ }
+ }
+
+@@ -254,9 +284,11 @@
+
+
+ if (cmtlen>0) { /* build into one un-blocked comment */
++ /* this can overflow iff cmtlen == 2G - 1, but then filesize
++ * would have to be > 2GB, which was disallowed above */
+ cmt = (byte *) malloc((size_t) (cmtlen + 1));
+- if (!cmt) gifWarning("couldn't malloc space for comments\n");
+- else {
++ if (!cmt) FatalError("LoadGIF: couldn't malloc space for comments");
++ /* else */ {
+ sp = cmt;
+ do {
+ sbsize = (*ptr1++);
+@@ -267,10 +299,10 @@
+ if (pinfo->comment) { /* have to strcat onto old comments */
+ cmt1 = (byte *) malloc(strlen(pinfo->comment) + cmtlen + 2);
+ if (!cmt1) {
+- gifWarning("couldn't malloc space for comments\n");
+ free(cmt);
++ FatalError("LoadGIF: couldn't malloc space for comments");
+ }
+- else {
++ /* else */ {
+ strcpy((char *) cmt1, (char *) pinfo->comment);
+ strcat((char *) cmt1, (char *) "\n");
+ strcat((char *) cmt1, (char *) cmt);
+@@ -288,8 +320,8 @@
+ else if (fn == 0x01) { /* PlainText Extension */
+ int j,sbsize,ch;
+ int tgLeft, tgTop, tgWidth, tgHeight, cWidth, cHeight, fg, bg;
+-
+- SetISTR(ISTR_INFO, "%s: %s", bname,
++
++ SetISTR(ISTR_INFO, "%s: %s", bname,
+ "PlainText extension found in GIF file. Ignored.");
+
+ sbsize = NEXTBYTE;
+@@ -302,12 +334,12 @@
+ fg = NEXTBYTE;
+ bg = NEXTBYTE;
+ i=12;
+- for ( ; i<sbsize; i++) NEXTBYTE; /* read rest of first subblock */
+-
++ for ( ; i<sbsize; i++) SKIPBYTE; /* read rest of first subblock */
++
+ if (DEBUG) fprintf(stderr,
+ "PlainText: tgrid=%d,%d %dx%d cell=%dx%d col=%d,%d\n",
+ tgLeft, tgTop, tgWidth, tgHeight, cWidth, cHeight, fg, bg);
+-
++
+ /* read (and ignore) data sub-blocks */
+ do {
+ j = 0;
+@@ -326,16 +358,32 @@
+
+ if (DEBUG) fprintf(stderr,"Graphic Control extension\n\n");
+
+- SetISTR(ISTR_INFO, "%s: %s", bname,
+- "Graphic Control Extension in GIF file. Ignored.");
+-
+- /* read (and ignore) data sub-blocks */
++ SetISTR(ISTR_INFO, "%s: %s", bname,
++ "Graphic Control Extension ignored.");
++
++ /* read (and ignore) data sub-blocks, unless compositing with
++ * user-defined background */
+ do {
+- j = 0; sbsize = NEXTBYTE;
+- while (j<sbsize) { NEXTBYTE; j++; }
++ j = 0;
++ sbsize = NEXTBYTE;
++ /* GRR 19980314: get transparent index out of block */
++ if (have_imagebg && sbsize == 4 && Transparent < 0) {
++ byte packed_fields = NEXTBYTE;
++
++ j++;
++ SKIPBYTE; j++;
++ SKIPBYTE; j++;
++ if (packed_fields & 1) {
++ Transparent = NEXTBYTE;
++ j++;
++ }
++ }
++ while (j<sbsize) {
++ SKIPBYTE; j++;
++ }
+ } while (sbsize);
+ }
+-
++
+
+ else if (fn == 0xFF) { /* Application Extension */
+ int j, sbsize;
+@@ -345,10 +393,10 @@
+ /* read (and ignore) data sub-blocks */
+ do {
+ j = 0; sbsize = NEXTBYTE;
+- while (j<sbsize) { NEXTBYTE; j++; }
++ while (j<sbsize) { SKIPBYTE; j++; }
+ } while (sbsize);
+ }
+-
++
+
+ else { /* unknown extension */
+ int j, sbsize;
+@@ -358,48 +406,68 @@
+ SetISTR(ISTR_INFO,
+ "%s: Unknown extension 0x%02x in GIF file. Ignored.",
+ bname, fn);
+-
++
+ /* read (and ignore) data sub-blocks */
+ do {
+ j = 0; sbsize = NEXTBYTE;
+- while (j<sbsize) { NEXTBYTE; j++; }
++ while (j<sbsize) { SKIPBYTE; j++; }
+ } while (sbsize);
+ }
+ }
+
+
+ else if (block == IMAGESEP) {
+- if (DEBUG) fprintf(stderr,"imagesep (got=%d) ",gotimage);
+- if (DEBUG) fprintf(stderr," at start: offset=0x%lx\n",dataptr-RawGIF);
+-
+- if (gotimage) { /* just skip over remaining images */
+- int i,misc,ch,ch1;
+-
+- /* skip image header */
+- NEXTBYTE; NEXTBYTE; /* left position */
+- NEXTBYTE; NEXTBYTE; /* top position */
+- NEXTBYTE; NEXTBYTE; /* width */
+- NEXTBYTE; NEXTBYTE; /* height */
+- misc = NEXTBYTE; /* misc. bits */
+-
+- if (misc & 0x80) { /* image has local colormap. skip it */
+- for (i=0; i< 1 << ((misc&7)+1); i++) {
+- NEXTBYTE; NEXTBYTE; NEXTBYTE;
++ if (DEBUG) fprintf(stderr, "imagesep (page=%d)\n", pinfo->numpages+1);
++ if (DEBUG) fprintf(stderr, " at start: offset=0x%lx\n",
++ (unsigned long)(dataptr-RawGIF));
++
++ BitOffset = XC = YC = Pass = OutCount = 0;
++
++ if (pinfo->numpages > 0) { /* do multipage stuff */
++ if (pinfo->numpages == 1) { /* first time only... */
++ xv_mktemp(pinfo->pagebname, "xvpgXXXXXX"); // a.k.a. close(mkstemp())
++ if (pinfo->pagebname[0] == '\0') {
++ ErrPopUp("LoadGIF: Unable to create temporary filename???",
++ "\nHow unlikely!");
++ return 0;
++ }
++ /* GRR 20070328: basename file doesn't go away, at least on Linux
++ * (though all appended-number ones do); ergo, open for reading (see
++ * if it's there), close, and explicitly unlink() if necessary */
++ /* GRR 20070506: could/should call KillPageFiles() (xv.c) instead */
++ fp = xv_fopen(pinfo->pagebname, "r");
++ if (fp) {
++ fclose(fp);
++ unlink(pinfo->pagebname); /* no errors during testing */
+ }
+ }
+-
+- NEXTBYTE; /* minimum code size */
+-
+- /* skip image data sub-blocks */
+- do {
+- ch = ch1 = NEXTBYTE;
+- while (ch--) NEXTBYTE;
+- if ((dataptr - RawGIF) > filesize) break; /* EOF */
+- } while(ch1);
+- }
+-
+- else if (readImage(pinfo)) gotimage = 1;
+- if (DEBUG) fprintf(stderr," at end: dataptr=0x%lx\n",dataptr-RawGIF);
++ sprintf(tmpname, "%s%d", pinfo->pagebname, pinfo->numpages);
++ fp = xv_fopen(tmpname, "w");
++ if (!fp) {
++ ErrPopUp("LoadGIF: Unable to open temp file", "\nDang!");
++ return 0;
++ }
++ if (WriteGIF(fp, pinfo->pic, pinfo->type, pinfo->w, pinfo->h, pinfo->r,
++ pinfo->g, pinfo->b, numcols, pinfo->colType, NULL)) {
++ fclose(fp);
++ ErrPopUp("LoadGIF: Error writing temp file", "\nBummer!");
++ return 0;
++ }
++ fclose(fp);
++ free(pinfo->pic);
++ pinfo->pic = (byte *) NULL;
++ if (HasGlobalColormap) {
++ memcpy(pinfo->r, r, sizeof r);
++ memcpy(pinfo->g, g, sizeof g);
++ memcpy(pinfo->b, b, sizeof b);
++ }
++ BitsPerPixel = GlobalBitsPerPixel;
++ numcols = ColorMapSize = GlobalColorMapSize;
++ BitMask = GlobalBitMask;
++ }
++ if (readImage(pinfo)) ++pinfo->numpages;
++ if (DEBUG) fprintf(stderr, " at end: offset=0x%lx\n",
++ (unsigned long)(dataptr-RawGIF));
+ }
+
+
+@@ -416,9 +484,9 @@
+ /* don't mention bad block if file was trunc'd, as it's all bogus */
+ if ((dataptr - origptr) < filesize) {
+ sprintf(str, "Unknown block type (0x%02x) at offset 0x%lx",
+- block, (dataptr - origptr) - 1);
++ block, (unsigned long)(dataptr - origptr) - 1);
+
+- if (!gotimage) return gifError(pinfo, str);
++ if (!pinfo->numpages) return gifError(pinfo, str);
+ else gifWarning(str);
+ }
+
+@@ -431,8 +499,34 @@
+ free(RawGIF); RawGIF = NULL;
+ free(Raster); Raster = NULL;
+
+- if (!gotimage)
++ if (!pinfo->numpages)
+ return( gifError(pinfo, "no image data found in GIF file") );
++ if (pinfo->numpages > 1) {
++ /* write the last page temp file */
++ int numpages = pinfo->numpages;
++ char *comment = pinfo->comment;
++ sprintf(tmpname, "%s%d", pinfo->pagebname, pinfo->numpages);
++ fp = xv_fopen(tmpname, "w");
++ if (!fp) {
++ ErrPopUp("LoadGIF: Unable to open temp file", "\nDang!");
++ return 0;
++ }
++ if (WriteGIF(fp, pinfo->pic, pinfo->type, pinfo->w, pinfo->h, pinfo->r,
++ pinfo->g, pinfo->b, numcols, pinfo->colType, NULL)) {
++ fclose(fp);
++ ErrPopUp("LoadGIF: Error writing temp file", "\nBummer!");
++ return 0;
++ }
++ fclose(fp);
++ free(pinfo->pic);
++ pinfo->pic = (byte *) NULL;
++
++ /* load the first page temp file */
++ sprintf(tmpname, "%s%d", pinfo->pagebname, 1);
++ i = LoadGIF(tmpname, pinfo);
++ pinfo->numpages = numpages;
++ pinfo->comment = comment;
++ }
+
+ return 1;
+ }
+@@ -444,11 +538,12 @@
+ {
+ register byte ch, ch1, *ptr1, *picptr;
+ int i, npixels, maxpixels;
++ boolean HasLocalColormap;
+
+ npixels = maxpixels = 0;
+
+ /* read in values from the image descriptor */
+-
++
+ ch = NEXTBYTE;
+ LeftOfs = ch + 0x100 * NEXTBYTE;
+ ch = NEXTBYTE;
+@@ -460,45 +555,68 @@
+
+ Misc = NEXTBYTE;
+ Interlace = ((Misc & INTERLACEMASK) ? True : False);
++ HasLocalColormap = ((Misc & COLORMAPMASK) ? True : False);
+
+- if (Misc & 0x80) {
+- for (i=0; i< 1 << ((Misc&7)+1); i++) {
++ if (HasLocalColormap) {
++ BitsPerPixel = (Misc & 7) + 1;
++ ColorMapSize = numcols = 1 << BitsPerPixel; /* GRR 20070318 */
++ BitMask = ColorMapSize - 1;
++ if (DEBUG) fprintf(stderr," local color table, %d bits (%d entries)\n",
++ (Misc&7)+1, ColorMapSize);
++ for (i=0; i<ColorMapSize; i++) {
+ pinfo->r[i] = NEXTBYTE;
+ pinfo->g[i] = NEXTBYTE;
+ pinfo->b[i] = NEXTBYTE;
+ }
++ if (DEBUG > 1) {
++ for (i=0; i<ColorMapSize; i++) {
++ fprintf(stderr," (%3d %02x,%02x,%02x)\n", i, pinfo->r[i],
++ pinfo->g[i], pinfo->b[i]);
++ }
++ }
+ }
+
+
+- if (!HasColormap && !(Misc&0x80)) {
++ if (!HasGlobalColormap && !HasLocalColormap) {
+ /* no global or local colormap */
+- SetISTR(ISTR_WARNING, "%s: %s", bname,
++ SetISTR(ISTR_WARNING, "%s: %s", bname,
+ "No colormap in this GIF file. Assuming EGA colors.");
+ }
+-
+
+-
++
++ /* GRR 19980314 */
++ /* need not worry about size of EGA palette: full 256 colors */
++ if (have_imagebg && Transparent >= 0 &&
++ Transparent < ((Misc&0x80)? (1 << ((Misc&7)+1)) : ColorMapSize) )
++ {
++ pinfo->r[Transparent] = (imagebgR >> 8);
++ pinfo->g[Transparent] = (imagebgG >> 8);
++ pinfo->b[Transparent] = (imagebgB >> 8);
++ }
++
++
++
+ /* Start reading the raster data. First we get the intial code size
+ * and compute decompressor constant values, based on this code size.
+ */
+-
++
+ CodeSize = NEXTBYTE;
+
+ ClearCode = (1 << CodeSize);
+ EOFCode = ClearCode + 1;
+ FreeCode = FirstFree = ClearCode + 2;
+-
++
+ /* The GIF spec has it that the code size is the code size used to
+ * compute the above values is the code size given in the file, but the
+ * code size used in compression/decompression is the code size given in
+ * the file plus one. (thus the ++).
+ */
+-
++
+ CodeSize++;
+ InitCodeSize = CodeSize;
+ MaxCode = (1 << CodeSize);
+ ReadMask = MaxCode - 1;
+-
++
+
+
+ /* UNBLOCK:
+@@ -506,7 +624,7 @@
+ * to the Raster array, turning it from a series of blocks into one long
+ * data stream, which makes life much easier for readCode().
+ */
+-
++
+ ptr1 = Raster;
+ do {
+ ch = ch1 = NEXTBYTE;
+@@ -522,21 +640,24 @@
+
+
+ if (DEBUG) {
+- fprintf(stderr,"xv: LoadGIF() - picture is %dx%d, %d bits, %sinterlaced\n",
++ fprintf(stderr,"LoadGIF: image is %dx%d, %d bits, %sinterlaced\n",
+ Width, Height, BitsPerPixel, Interlace ? "" : "non-");
+ }
+-
++
+
+ /* Allocate the 'pic' */
+- maxpixels = Width*Height;
++ maxpixels = Width*Height; /* 65535*65535 max (but everything is int) */
++ if (Width <= 0 || Height <= 0 || maxpixels/Width != Height)
++ return( gifError(pinfo, "image dimensions out of range") );
+ picptr = pic8 = (byte *) malloc((size_t) maxpixels);
+- if (!pic8) return( gifError(pinfo, "couldn't malloc 'pic8'") );
++ if (!pic8) FatalError("LoadGIF: couldn't malloc 'pic8'");
++
++
+
+-
+ /* Decompress the file, continuing until you see the GIF EOF code.
+ * One obvious enhancement is to add checking for corrupt files here.
+ */
+-
++
+ Code = readCode();
+ while (Code != EOFCode) {
+ /* Clear code sets everything back to its initial value, then reads the
+@@ -563,58 +684,58 @@
+ break; }
+
+ CurCode = InCode = Code;
+-
++
+ /* If greater or equal to FreeCode, not in the hash table yet;
+ * repeat the last character decoded
+ */
+-
++
+ if (CurCode >= FreeCode) {
+ CurCode = OldCode;
+ if (OutCount > 4096) { /* printf("outcount1 blew up\n"); */ break; }
+ OutCode[OutCount++] = FinChar;
+ }
+-
++
+ /* Unless this code is raw data, pursue the chain pointed to by CurCode
+ * through the hash table to its end; each code in the chain puts its
+ * associated output code on the output queue.
+ */
+-
++
+ while (CurCode > BitMask) {
+ if (OutCount > 4096) break; /* corrupt file */
+ OutCode[OutCount++] = Suffix[CurCode];
+ CurCode = Prefix[CurCode];
+ }
+-
++
+ if (OutCount > 4096) { /* printf("outcount blew up\n"); */ break; }
+-
++
+ /* The last code in the chain is treated as raw data. */
+-
++
+ FinChar = CurCode & BitMask;
+ OutCode[OutCount++] = FinChar;
+-
++
+ /* Now we put the data out to the Output routine.
+ * It's been stacked LIFO, so deal with it that way...
+ */
+
+ /* safety thing: prevent exceeding range of 'pic8' */
+ if (npixels + OutCount > maxpixels) OutCount = maxpixels-npixels;
+-
++
+ npixels += OutCount;
+ if (!Interlace) for (i=OutCount-1; i>=0; i--) *picptr++ = OutCode[i];
+ else for (i=OutCount-1; i>=0; i--) doInterlace(OutCode[i]);
+ OutCount = 0;
+
+ /* Build the hash table on-the-fly. No table is stored in the file. */
+-
++
+ Prefix[FreeCode] = OldCode;
+ Suffix[FreeCode] = FinChar;
+ OldCode = InCode;
+-
++
+ /* Point to the next slot in the table. If we exceed the current
+ * MaxCode value, increment the code size unless it's already 12. If it
+ * is, do nothing: the next code decompressed better be CLEAR
+ */
+-
++
+ FreeCode++;
+ if (FreeCode >= MaxCode) {
+ if (CodeSize < 12) {
+@@ -627,20 +748,19 @@
+ Code = readCode();
+ if (npixels >= maxpixels) break;
+ }
+-
++
+ if (npixels != maxpixels) {
+ SetISTR(ISTR_WARNING,"%s: %s", bname,
+ "This GIF file seems to be truncated. Winging it.");
+ if (!Interlace) /* clear->EOBuffer */
+- xvbzero((char *) pic8+npixels, (size_t) (maxpixels-npixels));
++ xvbzero((char *) pic8+npixels,
++ (size_t) (maxpixels-npixels<0 ? 0 : maxpixels-npixels));
+ }
+
+- fclose(fp);
+-
+ /* fill in the PICINFO structure */
+
+ pinfo->pic = pic8;
+- pinfo->w = Width;
++ pinfo->w = Width;
+ pinfo->h = Height;
+ pinfo->type = PIC8;
+ pinfo->frmType = F_GIF;
+@@ -650,8 +770,8 @@
+
+ sprintf(pinfo->fullInfo,
+ "GIF%s, %d bit%s per pixel, %sinterlaced. (%d bytes)",
+- (gif89) ? "89" : "87", BitsPerPixel,
+- (BitsPerPixel==1) ? "" : "s",
++ (gif89) ? "89" : "87", BitsPerPixel,
++ (BitsPerPixel==1) ? "" : "s",
+ Interlace ? "" : "non-", filesize);
+
+ sprintf(pinfo->shrtInfo, "%dx%d GIF%s.",Width,Height,(gif89) ? "89" : "87");
+@@ -668,13 +788,13 @@
+ * maintain our location in the Raster array as a BIT Offset. We compute
+ * the byte Offset into the raster array by dividing this by 8, pick up
+ * three bytes, compute the bit Offset into our 24-bit chunk, shift to
+- * bring the desired code to the bottom, then mask it off and return it.
++ * bring the desired code to the bottom, then mask it off and return it.
+ */
+
+ static int readCode()
+ {
+ int RawCode, ByteOffset;
+-
++
+ ByteOffset = BitOffset / 8;
+ RawCode = Raster[ByteOffset] + (Raster[ByteOffset + 1] << 8);
+ if (CodeSize >= 8)
+@@ -692,42 +812,47 @@
+ {
+ static byte *ptr = NULL;
+ static int oldYC = -1;
+-
++
++ if (Pass == -1) { /* first time through - init stuff */
++ oldYC = -1;
++ Pass = 0;
++ }
++
+ if (oldYC != YC) { ptr = pic8 + YC * Width; oldYC = YC; }
+-
++
+ if (YC<Height)
+ *ptr++ = Index;
+-
++
+ /* Update the X-coordinate, and if it overflows, update the Y-coordinate */
+-
++
+ if (++XC == Width) {
+-
++
+ /* deal with the interlace as described in the GIF
+ * spec. Put the decoded scan line out to the screen if we haven't gone
+ * past the bottom of it
+ */
+-
++
+ XC = 0;
+-
++
+ switch (Pass) {
+ case 0:
+ YC += 8;
+ if (YC >= Height) { Pass++; YC = 4; }
+ break;
+-
++
+ case 1:
+ YC += 8;
+ if (YC >= Height) { Pass++; YC = 2; }
+ break;
+-
++
+ case 2:
+ YC += 4;
+ if (YC >= Height) { Pass++; YC = 1; }
+ break;
+-
++
+ case 3:
+ YC += 2; break;
+-
++
+ default:
+ break;
+ }
+@@ -735,11 +860,11 @@
+ }
+
+
+-
++
+ /*****************************/
+ static int gifError(pinfo, st)
+- PICINFO *pinfo;
+- char *st;
++ PICINFO *pinfo;
++ const char *st;
+ {
+ gifWarning(st);
+
+@@ -760,7 +885,7 @@
+
+ /*****************************/
+ static void gifWarning(st)
+- char *st;
++ const char *st;
+ {
+ SetISTR(ISTR_WARNING,"%s: %s", bname, st);
+ }
+diff -ru xv-3.10a/xvgifwr.c xv-3.10a-enhancements/xvgifwr.c
+--- xv-3.10a/xvgifwr.c 1995-01-03 13:22:21.000000000 -0800
++++ xv-3.10a-enhancements/xvgifwr.c 2007-03-31 16:33:23.000000000 -0700
+@@ -2,11 +2,11 @@
+ * xvgifwr.c - handles writing of GIF files. based on flgife.c and
+ * flgifc.c from the FBM Library, by Michael Maudlin
+ *
+- * Contains:
++ * Contains:
+ * WriteGIF(fp, pic, ptype, w, h, rmap, gmap, bmap, numcols, colorstyle,
+ * comment)
+ *
+- * Note: slightly brain-damaged, in that it'll only write non-interlaced
++ * Note: slightly brain-damaged, in that it'll only write non-interlaced
+ * GIF files (in the interests of speed, or something)
+ *
+ */
+@@ -34,7 +34,7 @@
+ * James A. Woods (decvax!ihnp4!ames!jaw)
+ * Joe Orost (decvax!vax135!petsd!joe)
+ *****************************************************************/
+-
++
+
+ #include "xv.h"
+
+@@ -44,7 +44,6 @@
+ static int curx, cury;
+ static long CountDown;
+ static int Interlace;
+-static byte bw[2] = {0, 0xff};
+
+ static void putword PARM((int, FILE *));
+ static void compress PARM((int, FILE *, byte *, int));
+@@ -56,7 +55,7 @@
+ static void flush_char PARM((void));
+
+
+-static byte pc2nc[256],r1[256],g1[256],b1[256];
++static byte pc2nc[256];
+
+
+ /*************************************************************/
+@@ -74,7 +73,8 @@
+ int ColorMapSize, InitCodeSize, Background, BitsPerPixel;
+ int i,j,nc;
+ byte *pic8;
+- byte rtemp[256],gtemp[256],btemp[256];
++ byte rtemp[256],gtemp[256],btemp[256]; /* for 24-bit to 8-bit conversion */
++ byte r1[256],g1[256],b1[256]; /* for duplicated-color remapping */
+
+ if (ptype == PIC24) { /* have to quantize down to 8 bits */
+ pic8 = Conv24to8(pic, w, h, 256, rtemp,gtemp,btemp);
+@@ -97,7 +97,7 @@
+ for (i=0; i<numcols; i++) {
+ /* see if color #i is already used */
+ for (j=0; j<i; j++) {
+- if (rmap[i] == rmap[j] && gmap[i] == gmap[j] &&
++ if (rmap[i] == rmap[j] && gmap[i] == gmap[j] &&
+ bmap[i] == bmap[j]) break;
+ }
+
+@@ -115,15 +115,15 @@
+ /* figure out 'BitsPerPixel' */
+ for (i=1; i<8; i++)
+ if ( (1<<i) >= nc) break;
+-
++
+ BitsPerPixel = i;
+
+ ColorMapSize = 1 << BitsPerPixel;
+-
++
+ RWidth = Width = w;
+ RHeight = Height = h;
+ LeftOfs = TopOfs = 0;
+-
++
+ CountDown = w * h; /* # of pixels we'll be doing */
+
+ if (BitsPerPixel <= 1) InitCodeSize = 2;
+@@ -137,7 +137,7 @@
+ return (1);
+ }
+
+- if (DEBUG)
++ if (DEBUG)
+ fprintf(stderr,"WrGIF: pic=%lx, w,h=%dx%d, numcols=%d, Bits%d,Cmap=%d\n",
+ (u_long) pic8, w,h,numcols,BitsPerPixel,ColorMapSize);
+
+@@ -152,7 +152,7 @@
+ i = 0x80; /* Yes, there is a color map */
+ i |= (8-1)<<4; /* OR in the color resolution (hardwired 8) */
+ i |= (BitsPerPixel - 1); /* OR in the # of bits per pixel */
+- fputc(i,fp);
++ fputc(i,fp);
+
+ fputc(Background, fp); /* background color */
+
+@@ -290,7 +290,7 @@
+ /*
+ * compress stdin to stdout
+ *
+- * Algorithm: use open addressing double hashing (no chaining) on the
++ * Algorithm: use open addressing double hashing (no chaining) on the
+ * prefix code / next character combination. We do a variant of Knuth's
+ * algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime
+ * secondary probe. Here, the modular division first probe is gives way
+@@ -370,7 +370,7 @@
+ cl_hash( (count_int) hsize_reg); /* clear hash table */
+
+ output(ClearCode);
+-
++
+ while (len) {
+ c = pc2nc[*data++]; len--;
+ in_count++;
+@@ -399,7 +399,7 @@
+ continue;
+ }
+
+- if ( (long)HashTabOf (i) >= 0 )
++ if ( (long)HashTabOf (i) >= 0 )
+ goto probe;
+
+ nomatch:
+@@ -454,7 +454,7 @@
+ cur_accum |= ((long)code << cur_bits);
+ else
+ cur_accum = code;
+-
++
+ cur_bits += n_bits;
+
+ while( cur_bits >= 8 ) {
+@@ -482,7 +482,7 @@
+ maxcode = MAXCODE(n_bits);
+ }
+ }
+-
++
+ if( code == EOFCode ) {
+ /* At EOF, write the rest of the buffer */
+ while( cur_bits > 0 ) {
+@@ -492,11 +492,11 @@
+ }
+
+ flush_char();
+-
++
+ fflush( g_outfile );
+
+ #ifdef FOO
+- if( ferror( g_outfile ) )
++ if( ferror( g_outfile ) )
+ FatalError("unable to write GIF file");
+ #endif
+ }
+@@ -582,7 +582,7 @@
+ int c;
+ {
+ accum[ a_count++ ] = c;
+- if( a_count >= 254 )
++ if( a_count >= 254 )
+ flush_char();
+ }
+
+@@ -596,4 +596,4 @@
+ fwrite(accum, (size_t) 1, (size_t) a_count, g_outfile );
+ a_count = 0;
+ }
+-}
++}
+diff -ru xv-3.10a/xvgrab.c xv-3.10a-enhancements/xvgrab.c
+--- xv-3.10a/xvgrab.c 1994-12-22 14:34:47.000000000 -0800
++++ xv-3.10a-enhancements/xvgrab.c 2005-04-25 23:39:32.000000000 -0700
+@@ -6,7 +6,7 @@
+ * Contains:
+ * int Grab() - handles the GRAB command
+ * int LoadGrab(); - 'loads' the pic from the last succesful Grab
+- *
++ *
+ */
+
+ #include "copyright.h"
+@@ -14,28 +14,60 @@
+ #define NEEDSTIME
+ #include "xv.h"
+
+-static byte *grabPic = (byte *) NULL;
+-static int gbits; /* either '8' or '24' */
+-static byte grabmapR[256], grabmapG[256], grabmapB[256]; /* colormap */
+-static int gWIDE,gHIGH;
+-static int grabInProgress=0;
+-static int hidewins = 0;
+-static GC rootGC;
+-
+-static void flashrect PARM((int, int, int, int, int));
+-static void startflash PARM((void));
+-static void endflash PARM((void));
+-static int grabImage PARM((Window, int, int, int, int));
+-static void ungrabX PARM((void));
+-static int convertImage PARM((XImage *, XColor *, int,
+- XWindowAttributes *));
+-
+-static int lowbitnum PARM((unsigned long));
+-static int getxcolors PARM((XWindowAttributes *, XColor **));
+-static Window xvClientWindow PARM((Display *, Window));
++/* Allow flexibility in use of buttons JPD */
++#define WINDOWGRABMASK Button1Mask /* JPD prefers Button2Mask */
++#define RECTGTRACKMASK Button2Mask /* JPD prefers Button1Mask*/
++#define CANCELGRABMASK Button3Mask
+
++#define DO_GRABFLASH /* JPD prefers not to do that; just a loss of time ... */
+
+
++union swapun {
++ CARD32 l;
++ CARD16 s;
++ CARD8 b[sizeof(CARD32)];
++};
++
++
++struct rectlist {
++ int x,y,w,h;
++ struct rectlist *next;
++};
++
++
++static byte *grabPic = (byte *) NULL;
++static int gptype;
++static byte grabmapR[256], grabmapG[256], grabmapB[256];
++static int gXOFF, gYOFF, gWIDE,gHIGH;
++static int grabInProgress=0;
++static int hidewins = 0;
++static GC rootGC;
++static struct rectlist *regrabList;
++
++
++static void flashrect PARM((int, int, int, int, int));
++static void startflash PARM((void));
++static void endflash PARM((void));
++static void ungrabX PARM((void));
++static int lowbitnum PARM((unsigned long));
++static int getxcolors PARM((XWindowAttributes *, XColor **));
++
++static void printWinTree PARM((Window, int));
++static void errSpace PARM((int));
++
++static int grabRootRegion PARM((int, int, int, int));
++static int grabWinImage PARM((Window, VisualID, Colormap, int));
++static int convertImageAndStuff PARM((XImage *, XColor *, int,
++ XWindowAttributes *,
++ int,int,int,int));
++
++static int RectIntersect PARM((int,int,int,int, int,int,int,int));
++
++static int CountColors24 PARM((byte *, int, int,
++ int, int, int, int));
++
++static int Trivial24to8 PARM((byte *, int, int, byte *,
++ byte *, byte *, byte *, int));
+
+ /***********************************/
+ int Grab()
+@@ -44,13 +76,15 @@
+ 0 if cancelled */
+
+ int i, x, y, x1, y1, x2, y2, ix, iy, iw, ih, rv;
+- int rx, ry, pretendGotB1, autograb;
+- int oldaclose;
+- Window rW, cW, clickWin, tmpwin;
++ int rx, ry, GotButton, autograb;
++ int cancelled = 0;
++ Window rW, cW, clickWin;
+ unsigned int mask;
++#ifdef RECOLOR_GRAB_CURSOR
+ XColor fc, bc;
++#endif
+
+- pretendGotB1 = 0;
++ GotButton = 0;
+
+ if (grabInProgress) return 0; /* avoid recursive grabs during delay */
+
+@@ -75,7 +109,7 @@
+ grabInProgress = 1; /* guard against recursive grabs during delay */
+ time(&startT);
+ while (1) {
+- time(&t);
++ time(&t);
+ if (t >= startT + grabDelay) break;
+ if (XPending(theDisp)>0) {
+ XEvent evt;
+@@ -91,25 +125,33 @@
+ grabInProgress = 0;
+ }
+
+-
++
+ rootGC = DefaultGC(theDisp, theScreen);
+-
++
+ if (grabPic) { /* throw away previous 'grabbed' pic, if there is one */
+ free(grabPic); grabPic = (byte *) NULL;
+ }
+
+-
++ /* recolor cursor to indicate that grabbing is active? */
++ /* Instead, change cursor JPD */
++#ifdef RECOLOR_GRAB_CURSOR
+ fc.flags = bc.flags = DoRed | DoGreen | DoBlue;
+- fc.red = fc.green = fc.blue = 0xffff;
++ fc.red = fc.green = fc.blue = 0xffff;
+ bc.red = bc.green = bc.blue = 0x0000;
+ XRecolorCursor(theDisp, tcross, &fc, &bc);
++#endif
+
+
+ XBell(theDisp, 0); /* beep once at start of grab */
+
+- if (!autograb) XGrabButton(theDisp, (u_int) AnyButton, 0, rootW, False, 0,
++ /* Change cursor to top_left_corner JPD */
++ XGrabPointer(theDisp, rootW, False,
++ PointerMotionMask|ButtonPressMask|ButtonReleaseMask,
++ GrabModeAsync, GrabModeAsync, None, tlcorner, CurrentTime);
++
++ if (!autograb) XGrabButton(theDisp, (u_int) AnyButton, 0, rootW, False, 0,
+ GrabModeAsync, GrabModeSync, None, tcross);
+-
++
+ if (autograb) {
+ XGrabServer(theDisp); /* until we've done the grabImage */
+ if (!XQueryPointer(theDisp,rootW,&rW,&cW,&rx,&ry,&x1,&y1,&mask)) {
+@@ -118,7 +160,7 @@
+ rv = 0;
+ goto exit;
+ }
+- else { pretendGotB1 = 1; mask = Button1Mask; }
++ else { GotButton = 1; mask = WINDOWGRABMASK; }
+ }
+
+ else { /* !autograb */
+@@ -136,7 +178,7 @@
+ XNextEvent(theDisp, &evt);
+ i = HandleEvent(&evt, &done);
+ if (done) { /* only 'new image' cmd accepted=quit */
+- if (i==QUIT) {
++ if (i==QUIT) {
+ XUngrabButton(theDisp, (u_int) AnyButton, 0, rootW);
+ Quit(0);
+ }
+@@ -145,99 +187,75 @@
+
+ }
+ }
+-
+-
++
++ XUngrabPointer(theDisp, CurrentTime);
++ /* Reset cursor to XC_tcross JPD */
++ XGrabPointer(theDisp, rootW, False,
++ PointerMotionMask|ButtonPressMask|ButtonReleaseMask,
++ GrabModeAsync, GrabModeAsync, None, tcross, CurrentTime);
++
+ /***
+ *** got button click (or pretending we did, if autograb)
+ ***/
+-
+
+- if (mask & Button3Mask || rW!=rootW) { /* Button3: CANCEL GRAB */
++ if (mask & CANCELGRABMASK || rW!=rootW) { /* CANCEL GRAB */
+ while (1) { /* wait for button to be released */
+ if (XQueryPointer(theDisp,rootW,&rW,&cW,&rx,&ry,&x1,&y1,&mask)) {
+- if (!(mask & Button3Mask)) break;
++ if (!(mask & CANCELGRABMASK)) break;
+ }
+ }
+-
++
+ XUngrabButton(theDisp, (u_int) AnyButton, 0, rootW);
+ XBell(theDisp, 0);
+ XBell(theDisp, 0);
+ rv = 0;
++ cancelled = 1;
+ goto exit;
+ }
+
+
+-
+- if (mask & Button1Mask) { /* Button1: GRAB WINDOW (& FRAME, maybe) */
+- while (!pretendGotB1) { /* wait for button to be released, if clicked */
++ if (mask & WINDOWGRABMASK) { /* GRAB WINDOW (& FRAME, maybe) */
++ while (!GotButton) { /* wait for button to be released, if clicked */
+ int rx,ry,x1,y1; Window rW, cW;
+ if (XQueryPointer(theDisp,rootW,&rW,&cW,&rx,&ry,&x1,&y1,&mask)) {
+- if (!(mask & Button1Mask)) break;
++ if (!(mask & WINDOWGRABMASK)) break;
+ }
+ }
+-
+- if (!cW || cW == rootW) clickWin = rootW;
+- else {
+- int xr, yr; Window chwin;
+- XTranslateCoordinates(theDisp, rW, cW, rx, ry, &xr, &yr, &chwin);
+- if (chwin != None) {
+- XWindowAttributes clickxwa, parentxwa;
+-
+- clickWin = xvClientWindow(theDisp, chwin);
+-
+- /* decide if we want to just grab clickWin, or cW.
+- basically, if they're different in any important way
+- (depth, visual, colormap), grab 'clickWin' only,
+- as it's the important part */
+-
+- if (!clickWin ||
+- (XGetWindowAttributes(theDisp, clickWin, &clickxwa) &&
+- XGetWindowAttributes(theDisp, cW, &parentxwa) &&
+- clickxwa.visual->class == parentxwa.visual->class &&
+- clickxwa.colormap == parentxwa.colormap &&
+- clickxwa.depth == parentxwa.depth)
+- )
+- clickWin = cW; /* close enough! */
+- }
+- else clickWin = cW;
+-
+- if (DEBUG)
+- fprintf(stderr, "rW = %x, cW = %x, chwin = %x, clickWin = %x\n",
+- (u_int) rW, (u_int) cW, (u_int) chwin, (u_int) clickWin);
+- }
+-
+-
++
++ grabwin:
++
++ clickWin = (cW) ? cW : rootW;
++
+ if (clickWin == rootW) { /* grab entire screen */
+ if (DEBUG) fprintf(stderr,"Grab: clicked on root window.\n");
+ ix = iy = 0; iw = dispWIDE; ih = dispHIGH;
+ }
+ else {
+ int x,y; Window win; unsigned int rw,rh,rb,rd;
+-
++
+ if (XGetGeometry(theDisp,clickWin,&rW, &x, &y, &rw, &rh, &rb, &rd)) {
+ iw = (int) rw; ih = (int) rh;
+-
++
+ XTranslateCoordinates(theDisp, clickWin, rootW, 0, 0, &ix,&iy, &win);
+-
+- if (DEBUG) fprintf(stderr,"clickWin=0x%x: %d,%d %dx%d depth=%ud\n",
+- (u_int) clickWin, ix, iy, iw, ih, rd);
++
++ if (DEBUG) fprintf(stderr,"clickWin=0x%x: %d,%d %dx%d depth=%ud\n",
++ (u_int) clickWin, ix, iy, iw, ih, rd);
+ }
+ else {
+ ix = iy = 0; iw = dispWIDE; ih = dispHIGH; clickWin = rootW;
+ if (DEBUG) fprintf(stderr,"XGetGeometry failed? (using root win)\n");
+ }
+ }
+-
+-
++
+ /* range checking: keep rectangle fully on-screen */
+ if (ix<0) { iw += ix; ix = 0; }
+ if (iy<0) { ih += iy; iy = 0; }
+ if (ix+iw>dispWIDE) iw = dispWIDE-ix;
+ if (iy+ih>dispHIGH) ih = dispHIGH-iy;
+-
+-
++
++
+ if (DEBUG) fprintf(stderr,"using %d,%d (%dx%d)\n", ix, iy, iw, ih);
+-
++
+ /* flash the rectangle a bit... */
+ startflash();
+ for (i=0; i<5; i++) {
+@@ -249,23 +267,21 @@
+ endflash();
+ }
+
+-
+- else { /* Button2: TRACK A RECTANGLE */
++ else { /* TRACK A RECTANGLE */
+ int origrx, origry;
+- Window origcW;
+
+- clickWin = rootW; origcW = cW;
++ clickWin = rootW;
+ origrx = ix = x2 = rx;
+ origry = iy = y2 = ry;
+ iw = ih = 0;
+-
++
+ XGrabServer(theDisp);
+ startflash();
+
+ /* Wait for button release while tracking rectangle on screen */
+ while (1) {
+ if (XQueryPointer(theDisp,rootW,&rW,&cW,&rx,&ry,&x,&y,&mask)) {
+- if (!(mask & Button2Mask)) break;
++ if (!(mask & RECTGTRACKMASK)) break;
+ }
+
+ flashrect(ix, iy, iw, ih, 0); /* turn off rect */
+@@ -276,57 +292,63 @@
+ iw = abs(rx - x1); ih = abs(ry - y1);
+ x2 = rx; y2 = ry;
+ }
+-
++
+ if (iw>1 && ih>1) flashrect(ix,iy,iw,ih,1); /* turn on rect */
+ }
+
+ flashrect(ix, iy, iw, ih, 0); /* turn off rect */
++
++#ifdef DO_GRABFLASH
++ /* flash the rectangle a bit... */
++ for (i=0; i<5; i++) {
++ flashrect(ix, iy, iw, ih, 1);
++ XFlush(theDisp); Timer(100);
++ flashrect(ix, iy, iw, ih, 0);
++ XFlush(theDisp); Timer(100);
++ }
++#endif
++
+ endflash();
+-
+- XUngrabServer(theDisp);
+-
+-
+- if (origcW == cW) { /* maybe it's entirely in one window??? */
+- if (cW) { /* will be 0 if clicked in rootW */
+- Window stwin, enwin, stwin1, enwin1;
+- if (DEBUG) fprintf(stderr,"origcW=%x cW=%x ",
+- (u_int) origcW, (u_int) cW);
+- XTranslateCoordinates(theDisp,rootW,cW, origrx,origry,&x,&y,&stwin);
+- XTranslateCoordinates(theDisp,rootW,cW, rx, ry, &x,&y,&enwin);
+-
+- if (DEBUG) fprintf(stderr,"stwin=%x enwin=%x ",
+- (u_int) stwin, (u_int) enwin);
+- if (stwin == enwin && stwin != None) {
+- stwin1 = xvClientWindow(theDisp, stwin);
+- enwin1 = xvClientWindow(theDisp, enwin);
+- if (DEBUG) fprintf(stderr,"stwin1=%x enwin1=%x ",
+- (u_int) stwin1, (u_int) enwin1);
+-
+- if (stwin1 == enwin1 && stwin1) clickWin = stwin1;
+- else clickWin = stwin;
+- }
+- if (DEBUG) fprintf(stderr,"\n");
+- }
+- else clickWin = rootW;
++
++ /* if rectangle has zero width or height, search for child window JPD */
++ if (iw==0 && ih==0) {
++ int xr, yr;
++ Window childW = 0;
++ if (rW && cW)
++ XTranslateCoordinates(theDisp, rW, cW, rx, ry, &xr, &yr, &childW);
++ if (childW)
++ cW = childW;
++ goto grabwin;
+ }
++
++ XUngrabServer(theDisp);
+ }
+-
+
+ /***
+- *** now that clickWin,ix,iy,iw,ih are known, try to grab the bits...
++ *** now that clickWin,ix,iy,iw,ih are known, try to grab the bits :
++ *** grab screen area (ix,iy,iw,ih)
+ ***/
+
+
++ if (DEBUG>1) printWinTree(clickWin, 0);
++
+ WaitCursor();
+
+ if (!autograb) XGrabServer(theDisp); /* until we've done the grabImage */
+- rv = grabImage(clickWin,ix,iy,iw,ih); /* ungrabs the server & button */
++ rv = grabRootRegion(ix, iy, iw, ih); /* ungrabs the server & button */
+
+ SetCursors(-1);
+
+-
+ exit:
+
++ XUngrabPointer(theDisp, CurrentTime);
++ XUngrabServer(theDisp);
++
++ if (startGrab) {
++ startGrab = 0;
++ if (cancelled) Quit(0);
++ }
++
+ if (hidewins) { /* remap XV windows */
+ autoclose += 2; /* force it on once */
+ if (mainW && dispMode == RMB_WINDOW) {
+@@ -337,25 +359,25 @@
+
+ if (DEBUG) fprintf(stderr,"==remapped mainW. waiting for Config.\n");
+
+- /* sit here until we see a MapNotify on mainW followed by a
++ /* sit here until we see a MapNotify on mainW followed by a
+ ConfigureNotify on mainW */
+
+ state = 0;
+- while (1) {
++ while (state != 3) {
+ XEvent event;
+ XNextEvent(theDisp, &event);
+ HandleEvent(&event, &i);
+
+- if (state==0 && event.type == MapNotify &&
+- event.xmap.window == mainW) state = 1;
++ if (!(state&1) && event.type == MapNotify &&
++ event.xmap.window == mainW) state |= 1;
+
+- if (state==1 && event.type == ConfigureNotify &&
+- event.xconfigure.window == mainW) break;
++ if (!(state&2) && event.type == ConfigureNotify &&
++ event.xconfigure.window == mainW) state |= 2;
+ }
+
+ if (DEBUG) fprintf(stderr,"==after remapping mainW, GOT Config.\n");
+ }
+-
++
+ else if (ctrlW) CtrlBox(1);
+ }
+
+@@ -364,6 +386,45 @@
+
+
+ /***********************************/
++int LoadGrab(pinfo)
++ PICINFO *pinfo;
++{
++ /* loads up (into XV structures) last image successfully grabbed.
++ returns '0' on failure, '1' on success */
++
++ int i;
++
++ if (!grabPic) return 0; /* no image to use */
++
++ pinfo->type = gptype;
++ if (pinfo->type == PIC8) {
++ for (i=0; i<256; i++) {
++ pinfo->r[i] = grabmapR[i];
++ pinfo->g[i] = grabmapG[i];
++ pinfo->b[i] = grabmapB[i];
++ }
++ }
++
++ pinfo->pic = grabPic;
++ pinfo->normw = pinfo->w = gWIDE;
++ pinfo->normh = pinfo->h = gHIGH;
++ pinfo->frmType = -1;
++ pinfo->colType = -1;
++
++ sprintf(pinfo->fullInfo,"<%s internal>",
++ (pinfo->type == PIC8) ? "8-bit" : "24-bit");
++
++ sprintf(pinfo->shrtInfo,"%dx%d image.",gWIDE, gHIGH);
++
++ pinfo->comment = (char *) NULL;
++
++ grabPic = (byte *) NULL;
++
++ return 1;
++}
++
++
++/***********************************/
+ static void flashrect(x,y,w,h,show)
+ int x,y,w,h,show;
+ {
+@@ -373,7 +434,7 @@
+ XSetPlaneMask(theDisp, rootGC, xorMasks[maskno]);
+
+ if (!show) { /* turn off rectangle */
+- if (isvis)
++ if (isvis)
+ XDrawRectangle(theDisp, rootW, rootGC, x, y, (u_int) w-1, (u_int) h-1);
+
+ isvis = 0;
+@@ -391,15 +452,16 @@
+
+ /***********************************/
+ static void startflash()
+-{
++{
+ /* set up for drawing a flashing rectangle */
+ XSetFunction(theDisp, rootGC, GXinvert);
+ XSetSubwindowMode(theDisp, rootGC, IncludeInferiors);
+ }
+
++
+ /***********************************/
+ static void endflash()
+-{
++{
+ XSetFunction(theDisp, rootGC, GXcopy);
+ XSetSubwindowMode(theDisp, rootGC, ClipByChildren);
+ XSetPlaneMask(theDisp, rootGC, AllPlanes);
+@@ -408,21 +470,157 @@
+
+
+ /***********************************/
+-static int grabImage(clickWin, x, y, w, h)
+- Window clickWin;
++static void ungrabX()
++{
++ XUngrabServer(theDisp);
++ XUngrabButton(theDisp, (u_int) AnyButton, 0, rootW);
++}
++
++
++/**************************************/
++static int lowbitnum(ul)
++ unsigned long ul;
++{
++ /* returns position of lowest set bit in 'ul' as an integer (0-31),
++ or -1 if none */
++
++ int i;
++ for (i=0; ((ul&1) == 0) && i<32; i++, ul>>=1);
++ if (i==32) i = -1;
++ return i;
++}
++
++
++
++/**********************************************/
++/* getxcolors() function snarfed from 'xwd.c' */
++/**********************************************/
++
++#define lowbit(x) ((x) & (~(x) + 1))
++
++static int getxcolors(win_info, colors)
++ XWindowAttributes *win_info;
++ XColor **colors;
++{
++ int i, ncolors;
++
++ *colors = (XColor *) NULL;
++
++ if (win_info->visual->class == TrueColor) {
++ if (DEBUG>1) fprintf(stderr,"TrueColor visual: no colormap needed\n");
++ return 0;
++ }
++
++ else if (!win_info->colormap) {
++ if (DEBUG>1) fprintf(stderr,"no colormap associated with window\n");
++ return 0;
++ }
++
++ ncolors = win_info->visual->map_entries;
++ if (DEBUG>1) fprintf(stderr,"%d entries in colormap\n", ncolors);
++
++ if (!(*colors = (XColor *) malloc (sizeof(XColor) * ncolors)))
++ FatalError("malloc failed in getxcolors()");
++
++
++ if (win_info->visual->class == DirectColor) {
++ Pixel red, green, blue, red1, green1, blue1;
++
++ if (DEBUG>1) fprintf(stderr,"DirectColor visual\n");
++
++ red = green = blue = 0;
++ red1 = lowbit(win_info->visual->red_mask);
++ green1 = lowbit(win_info->visual->green_mask);
++ blue1 = lowbit(win_info->visual->blue_mask);
++ for (i=0; i<ncolors; i++) {
++ (*colors)[i].pixel = red|green|blue;
++ (*colors)[i].pad = 0;
++ red += red1;
++ if (red > win_info->visual->red_mask) red = 0;
++ green += green1;
++ if (green > win_info->visual->green_mask) green = 0;
++ blue += blue1;
++ if (blue > win_info->visual->blue_mask) blue = 0;
++ }
++ }
++ else {
++ for (i=0; i<ncolors; i++) {
++ (*colors)[i].pixel = i;
++ (*colors)[i].pad = 0;
++ }
++ }
++
++ XQueryColors(theDisp, win_info->colormap, *colors, ncolors);
++
++ return(ncolors);
++}
++
++
++
++/*******************************************/
++static void printWinTree(win,tab)
++ Window win;
++ int tab;
++{
++ u_int i, nchildren;
++ Window root, parent, *children, chwin;
++ XWindowAttributes xwa;
++ int xr, yr;
++
++ if (!XGetWindowAttributes(theDisp, win, &xwa)) {
++ errSpace(tab);
++ fprintf(stderr,"pWT: can't XGetWindowAttributes(%08x)\n", (u_int) win);
++ return;
++ }
++
++ XTranslateCoordinates(theDisp, win, rootW, 0,0, &xr,&yr, &chwin);
++ if (xwa.map_state==IsViewable) {
++ errSpace(tab);
++ fprintf(stderr,"%08x: %4d,%4d %4dx%4d vis: %02x cm=%x %s\n",
++ (u_int) win, xr,yr, xwa.width, xwa.height,
++ (u_int) XVisualIDFromVisual(xwa.visual),
++ (u_int) xwa.colormap,
++ ((xwa.map_state==IsUnmapped) ? "unmapped " :
++ (xwa.map_state==IsUnviewable) ? "unviewable" :
++ (xwa.map_state==IsViewable) ? "viewable " :
++ "<unknown> ") );
++
++ if (!XQueryTree(theDisp, win, &root, &parent, &children, &nchildren)) {
++ errSpace(tab);
++ fprintf(stderr,"pWT: XQueryTree(%08x) failed\n", (u_int) win);
++ if (children) XFree((char *)children);
++ return;
++ }
++
++ for (i=0; i<nchildren; i++) printWinTree(children[i], tab+1);
++ if (children) XFree((char *)children);
++ }
++
++ return;
++}
++
++
++/***********************************/
++static void errSpace(n)
++ int n;
++{
++ for ( ; n>0; n--) putc(' ', stderr);
++}
++
++
++
++
++/***********************************/
++static int grabRootRegion(x, y, w, h)
+ int x, y, w, h;
+ {
+ /* attempts to grab the specified rectangle of the root window
+- returns '1' on success. clickWin is used to figure out the depth
+- and colormap to use */
++ returns '1' on success */
+
+- XImage *image;
+- XWindowAttributes xwa;
+- XColor *colors;
+- int ncolors, i, ix, iy;
+- char str[256];
+- Window win;
++ XWindowAttributes xwa;
++ int i;
+
++ regrabList = (struct rectlist *) NULL;
+
+ /* range checking */
+ if (x<0) { w += x; x = 0; }
+@@ -430,86 +628,246 @@
+ if (x+w>dispWIDE) w = dispWIDE-x;
+ if (y+h>dispHIGH) h = dispHIGH-y;
+
+- if (w==0 || h==0) { /* selected nothing */
++ if (w<=0 || h<=0) { /* selected nothing */
+ ungrabX();
+ return 0;
+ }
+
+- if (!XGetWindowAttributes(theDisp, clickWin, &xwa)) {
+- sprintf(str,"Unable to get window attributes for clicked-on window\n");
++
++ /* grab this region, using the default (root's) visual */
++
++ /* now for all top-level windows (children of root), in bottom->top order
++ if they intersect the grabregion
++ are they drawn entirely (including children) using default visual+cmap?
++ yes: if they intersect 'regrab' list, grab'em - else skip'em
++ no: grab them, add their rectangle to 'regrab' list
++ */
++
++
++ /* make a 24bit grabPic */
++ gptype = PIC24;
++ gXOFF = x; gYOFF = y; gWIDE = w; gHIGH = h;
++ grabPic = (byte *) malloc((size_t) gWIDE * gHIGH * 3);
++ if (!grabPic) {
+ ungrabX();
+- ErrPopUp(str, "\nThat Sucks!");
++ ErrPopUp("Unable to malloc() space for grabbed image!", "\nBite Me!");
+ return 0;
+ }
+
+-
+- XTranslateCoordinates(theDisp, rootW, clickWin, x, y, &ix, &iy, &win);
+-
+- xerrcode = 0;
+- image = XGetImage(theDisp, clickWin, ix, iy, (u_int) w, (u_int) h,
+- AllPlanes, ZPixmap);
+- if (xerrcode || !image || !image->data) {
+- sprintf(str, "Unable to get image (%d,%d %dx%d) from display", ix,iy,w,h);
++ if (!XGetWindowAttributes(theDisp, rootW, &xwa)) {
+ ungrabX();
+- ErrPopUp(str, "\nThat Sucks!");
++ ErrPopUp("Can't get window attributes for root window!", "\nBite Me!");
+ return 0;
+ }
+
+- ncolors = getxcolors(&xwa, &colors);
++ i = grabWinImage(rootW, XVisualIDFromVisual(xwa.visual), xwa.colormap,0);
+
+ ungrabX();
+
+- if (ncolors && DEBUG) {
+- fprintf(stderr, "Colormap:\n");
+- for (i=0; i<ncolors; i++)
+- fprintf(stderr,"%02x%02x%02x ",colors[i].red>>8, colors[i].green>>8,
+- colors[i].blue>>8);
+- fprintf(stderr,"\n");
+- }
+-
+-
+ XBell(theDisp, 0); /* beep twice at end of grab */
+ XBell(theDisp, 0);
+
+- i = convertImage(image, colors, ncolors, &xwa);
++ { /* free regrabList */
++ struct rectlist *rr, *tmprr;
++ rr = regrabList;
++ while (rr) {
++ tmprr = rr->next;
++ free((char *) rr);
++ rr = tmprr;
++ }
++ regrabList = (struct rectlist *) NULL;
++ }
+
+- /* DO *NOT* use xvDestroyImage(), as the 'data' field was alloc'd by X, not
+- necessarily through 'malloc() / free()' */
+- XDestroyImage(image);
+-
+- if (colors) free((char *) colors);
++ if (i) {
++ ErrPopUp("Warning: Problems occurred during grab.","\nWYSInWYG!");
++ return 0;
++ }
+
+- return i;
++
++ /* if 256 or fewer colors in grabPic, make it a PIC8 */
++ i = CountColors24(grabPic, gWIDE, gHIGH, 0,0,gWIDE,gHIGH);
++ if (i<=256) {
++ byte *pic8;
++ pic8 = (byte *) malloc((size_t) (gWIDE * gHIGH));
++ if (pic8) {
++ if (Trivial24to8(grabPic, gWIDE,gHIGH, pic8,
++ grabmapR,grabmapG,grabmapB,256)) {
++ free((char *) grabPic);
++ grabPic = pic8;
++ gptype = PIC8;
++ }
++ }
++ }
++
++ return 1; /* full success */
+ }
+
+
+-static void ungrabX()
++/***********************************/
++static int grabWinImage(win, parentVid, parentCmap, toplevel)
++ Window win;
++ VisualID parentVid;
++ Colormap parentCmap;
++ int toplevel;
+ {
+- XUngrabServer(theDisp);
+- XUngrabButton(theDisp, (u_int) AnyButton, 0, rootW);
+-}
++ /* grabs area of window (and its children) that intersects
++ * grab region (root coords: gXOFF,gYOFF,gWIDE,gHIGH), and stuffs
++ * relevant bits into the grabPic (a gWIDE*gHIGH PIC24)
++ *
++ * Note: special kludge for toplevel windows (children of root):
++ * since that's the only case where a window can be obscuring something
++ * that isn't its parent
++ *
++ * returns 0 if okay, 1 if problems occurred
++ */
++
++
++ int i, rv, dograb;
++ int wx, wy, ww, wh; /* root coords of window */
++ int gx, gy, gw, gh; /* root coords of grab region of win*/
++ Window chwin; /* unused */
++ u_int nchildren;
++ Window root, parent, *children;
++ XWindowAttributes xwa;
+
++ /* first, quick checks to avoid recursing down useless branches */
+
++ if (!XGetWindowAttributes(theDisp, win, &xwa)) {
++ if (DEBUG) fprintf(stderr,"gWI: can't get win attr (%08x)\n", (u_int) win);
++ return 1;
++ }
+
++ if (xwa.class == InputOnly || xwa.map_state != IsViewable) return 0;
+
++ rv = 0;
++ dograb = 1;
++ wx = 0; wy = 0; ww = (int) xwa.width; wh = (int) xwa.height;
++
++ /* if this window doesn't intersect, none of its children will, either */
++ XTranslateCoordinates(theDisp, win, rootW, 0,0, &wx, &wy, &chwin);
++ if (!RectIntersect(wx,wy,ww,wh, gXOFF,gYOFF,gWIDE,gHIGH)) return 0;
++
++ gx = wx; gy = wy; gw = ww; gh = wh;
++ CropRect2Rect(&gx,&gy,&gw,&gh, gXOFF,gYOFF,gWIDE,gHIGH);
++
++ if (win==rootW) {
++ /* always grab */
++ }
++
++ else if (XVisualIDFromVisual(xwa.visual) == parentVid &&
++ ((xwa.visual->class==TrueColor) || xwa.colormap == parentCmap)) {
++
++ /* note: if both visuals are TrueColor, don't compare cmaps */
++
++ /* normally, if the vis/cmap info of a window is the same as its parent,
++ no need to regrab window. special case if this is a toplevel
++ window, as it can be obscuring windows that *aren't* its parent */
++
++ if (toplevel) {
++ /* we probably already have this region. Check it against regrabList
++ If it intersects none, no need to grab.
++ If it intersects one, crop to that rectangle and grab
++ if it intersects >1, don't crop, just grab gx,gy,gw,gh */
++
++ struct rectlist *rr, *cr;
++
++ i=0; cr=rr=regrabList;
++ while (rr) {
++ if (RectIntersect(gx,gy,gw,gh, rr->x,rr->y,rr->w,rr->h)) {
++ i++; cr = rr;
++ }
++ rr = rr->next;
++ }
++
++ if (i==0) dograb=0; /* no need to grab */
++
++ if (i==1) CropRect2Rect(&gx,&gy,&gw,&gh, cr->x,cr->y,cr->w,cr->h);
++ }
++ else dograb = 0;
++ }
++
++ else {
++ /* different vis/cmap from parent:
++ add to regrab list, if not already fully contained in list */
++ struct rectlist *rr;
++
++ /* check to see if fully contained... */
++ rr=regrabList;
++ while (rr && RectIntersect(gx,gy,gw,gh, rr->x,rr->y,rr->w,rr->h)!=2)
++ rr = rr->next;
++
++ if (!rr) { /* add to list */
++ if (DEBUG)
++ fprintf(stderr,"added to regrabList: %d,%d %dx%d\n",gx,gy,gw,gh);
++
++ rr = (struct rectlist *) malloc(sizeof(struct rectlist));
++ if (!rr) return 1;
++ else {
++ rr->x = gx; rr->y = gy; rr->w = gw; rr->h = gh;
++ rr->next = regrabList;
++ regrabList = rr;
++ }
++ }
++ }
++
++ /* at this point, we have to grab gx,gy,gw,gh from 'win' */
++
++ if (dograb) {
++ int ix, iy, ncolors;
++ XColor *colors;
++ XImage *image;
++
++ XTranslateCoordinates(theDisp, rootW, win, gx, gy, &ix, &iy, &chwin);
++
++ if (DEBUG)
++ fprintf(stderr,"Grabbing win (%08x) %d,%d %dx%d\n",
++ (u_int) win, gx,gy,gw,gh);
++
++ WaitCursor();
++
++ xerrcode = 0;
++ image = XGetImage(theDisp, win, ix, iy, (u_int) gw, (u_int) gh,
++ AllPlanes, ZPixmap);
++ if (xerrcode || !image || !image->data) return 1;
++
++ ncolors = getxcolors(&xwa, &colors);
++ rv = convertImageAndStuff(image, colors, ncolors, &xwa,
++ gx - gXOFF, gy - gYOFF, gw, gh);
++ XDestroyImage(image); /* can't use xvDestroyImage: alloc'd by X! */
++ if (colors) free((char *) colors);
++ }
++
++
++ /* recurse into children to see if any of them are 'different'... */
++
++ if (!XQueryTree(theDisp, win, &root, &parent, &children, &nchildren)) {
++ if (DEBUG) fprintf(stderr,"XQueryTree(%08x) failed\n", (u_int) win);
++ if (children) XFree((char *)children);
++ return rv+1;
++ }
++
++ for (i=0; i<nchildren; i++) {
++ rv += grabWinImage(children[i], XVisualIDFromVisual(xwa.visual),
++ xwa.colormap, (win==rootW));
++ }
++ if (children) XFree((char *)children);
++
++ return rv;
++}
+
+-union swapun {
+- CARD32 l;
+- CARD16 s;
+- CARD8 b[sizeof(CARD32)];
+-};
+
+
+ /**************************************/
+-static int convertImage(image, colors, ncolors, xwap)
++static int convertImageAndStuff(image, colors, ncolors, xwap, gx,gy,gw,gh)
+ XImage *image;
+ XColor *colors;
+ int ncolors;
+ XWindowAttributes *xwap;
++ int gx,gy,gw,gh; /* position within grabPic (guaranteed OK) */
+ {
+- /* attempts to conver the image from whatever weird-ass format it might
+- be in into something E-Z to deal with (either an 8-bit colormapped
+- image, or a 24-bit image). Returns '1' on success. */
++ /* attempts to convert the image from whatever weird-ass format it might
++ be in into a 24-bit RGB image, and stuff it into grabPic
++ Returns 0 on success, 1 on failure */
+
+ /* this code owes a lot to 'xwdtopnm.c', part of the pbmplus package,
+ written by Jef Poskanzer */
+@@ -528,7 +886,6 @@
+ int isLsbMachine, flipBytes;
+ Visual *visual;
+ char errstr[256];
+- static char *foo[] = { "\nThat Sucks!" };
+
+
+ /* quiet compiler warnings */
+@@ -538,20 +895,20 @@
+ pixvalue = 0;
+ rmask = gmask = bmask = 0;
+ rshift = gshift = bshift = 0;
+-
++ r8shift = g8shift = b8shift = 0;
+
+ /* determine byte order of the machine we're running on */
+ sw.l = 1;
+ isLsbMachine = (sw.b[0]) ? 1 : 0;
+
+- if (xwap && xwap->visual) visual = xwap->visual;
+- else visual = theVisual;
++ visual = xwap->visual;
++
+
+- if (DEBUG) {
++ if (DEBUG>1) {
+ fprintf(stderr,"convertImage:\n");
+ fprintf(stderr," %dx%d (offset %d), %s\n",
+- image->width, image->height, image->xoffset,
+- (image->format == XYBitmap || image->format == XYPixmap)
++ image->width, image->height, image->xoffset,
++ (image->format == XYBitmap || image->format == XYPixmap)
+ ? "XYPixmap" : "ZPixmap");
+
+ fprintf(stderr,"byte_order = %s, bitmap_bit_order = %s, unit=%d, pad=%d\n",
+@@ -575,41 +932,17 @@
+ sprintf(errstr, "%s\nReturned image bitmap_unit (%d) non-standard.",
+ "Can't deal with this display.", image->bitmap_unit);
+ ErrPopUp(errstr, "\nThat Sucks!");
+- return 0;
++ return 1;
+ }
+
+ if (!ncolors && visual->class != TrueColor) {
+ sprintf(errstr, "%s\nOnly TrueColor displays can have no colormap.",
+ "Can't deal with this display.");
+ ErrPopUp(errstr, "\nThat Sucks!");
+- return 0;
++ return 1;
+ }
+
+
+- /* build the 'global' grabPic stuff */
+- gWIDE = image->width; gHIGH = image->height;
+-
+- if (visual->class == TrueColor || visual->class == DirectColor ||
+- ncolors > 256) {
+- grabPic = (byte *) malloc((size_t) gWIDE * gHIGH * 3);
+- gbits = 24;
+- }
+- else {
+- grabPic = (byte *) malloc((size_t) gWIDE * gHIGH);
+- gbits = 8;
+-
+- /* load up the colormap */
+- for (i=0; i<ncolors; i++) {
+- grabmapR[i] = colors[i].red >> 8;
+- grabmapG[i] = colors[i].green >> 8;
+- grabmapB[i] = colors[i].blue >> 8;
+- }
+- }
+-
+- if (!grabPic) FatalError("unable to malloc grabPic in convertImage()");
+- pptr = grabPic;
+-
+-
+ if (visual->class == TrueColor || visual->class == DirectColor) {
+ unsigned int tmp;
+
+@@ -634,16 +967,35 @@
+ while (tmp >= 256) { tmp >>= 1; b8shift -= 1; }
+ while (tmp < 128) { tmp <<= 1; b8shift += 1; }
+
+- if (DEBUG)
++ if (DEBUG>1)
+ fprintf(stderr,"True/DirectColor: shifts=%d,%d,%d 8shifts=%d,%d,%d\n",
+ rshift, gshift, bshift, r8shift, g8shift, b8shift);
+ }
+
+
+- bits_per_item = image->bitmap_unit;
+- bits_used = bits_per_item;
++ bits_per_item = image->bitmap_unit;
+ bits_per_pixel = image->bits_per_pixel;
+
++
++ /* add code for freako 'exceed' server, where bitmapunit = 8
++ and bitsperpix = 32 (and depth=24)... */
++
++ if (bits_per_item < bits_per_pixel) {
++ bits_per_item = bits_per_pixel;
++
++ /* round bits_per_item up to next legal value, if necc */
++ if (bits_per_item < 8) bits_per_item = 8;
++ else if (bits_per_item < 16) bits_per_item = 16;
++ else bits_per_item = 32;
++ }
++
++
++ /* which raises the question: how (can?) you ever have a 24 bits per pix,
++ (ie, 3 bytes, no alpha/padding) */
++
++
++ bits_used = bits_per_item; /* so it will get a new item first time */
++
+ if (bits_per_pixel == 32) pixmask = 0xffffffff;
+ else pixmask = (((CARD32) 1) << bits_per_pixel) - 1;
+
+@@ -652,14 +1004,15 @@
+
+ /* if we're on an lsbfirst machine, or the image came from an lsbfirst
+ machine, we should flip the bytes around. NOTE: if we're on an
+- lsbfirst machine *and* the image came from an lsbfirst machine,
++ lsbfirst machine *and* the image came from an lsbfirst machine,
+ *don't* flip bytes, as it should work out */
+
+- /* pity we don't have a logical exclusive-or */
+ flipBytes = ( isLsbMachine && byte_order != LSBFirst) ||
+ (!isLsbMachine && byte_order == LSBFirst);
+
+ for (i=0; i<image->height; i++) {
++ pptr = grabPic + ((i+gy) * gWIDE + gx) * 3;
++
+ lineptr = (byte *) image->data + (i * image->bytes_per_line);
+ bptr = ((CARD8 *) lineptr) - 1;
+ sptr = ((CARD16 *) lineptr) - 1;
+@@ -667,35 +1020,39 @@
+ bits_used = bits_per_item;
+
+ for (j=0; j<image->width; j++) {
+-
+ /* get the next pixel value from the image data */
+
+ if (bits_used == bits_per_item) { /* time to move on to next b/s/l */
+ switch (bits_per_item) {
+- case 8: bptr++; break;
+- case 16: sptr++; sval = *sptr;
+- if (flipBytes) { /* swap CARD16 */
+- sw.s = sval;
+- tmpbyte = sw.b[0];
+- sw.b[0] = sw.b[1];
+- sw.b[1] = tmpbyte;
+- sval = sw.s;
+- }
+- break;
+- case 32: lptr++; lval = *lptr;
+- if (flipBytes) { /* swap CARD32 */
+- sw.l = lval;
+- tmpbyte = sw.b[0];
+- sw.b[0] = sw.b[3];
+- sw.b[3] = tmpbyte;
+- tmpbyte = sw.b[1];
+- sw.b[1] = sw.b[2];
+- sw.b[2] = tmpbyte;
+- lval = sw.l;
+- }
+- break;
++ case 8:
++ bptr++; break;
++
++ case 16:
++ sptr++; sval = *sptr;
++ if (flipBytes) { /* swap CARD16 */
++ sw.s = sval;
++ tmpbyte = sw.b[0];
++ sw.b[0] = sw.b[1];
++ sw.b[1] = tmpbyte;
++ sval = sw.s;
++ }
++ break;
++
++ case 32:
++ lptr++; lval = *lptr;
++ if (flipBytes) { /* swap CARD32 */
++ sw.l = lval;
++ tmpbyte = sw.b[0];
++ sw.b[0] = sw.b[3];
++ sw.b[3] = tmpbyte;
++ tmpbyte = sw.b[1];
++ sw.b[1] = sw.b[2];
++ sw.b[2] = tmpbyte;
++ lval = sw.l;
++ }
++ break;
+ }
+-
++
+ bits_used = 0;
+ if (bit_order == MSBFirst) bit_shift = bits_per_item - bits_per_pixel;
+ else bit_shift = 0;
+@@ -711,11 +1068,11 @@
+ else bit_shift += bits_per_pixel;
+ bits_used += bits_per_pixel;
+
+-
++
+ /* okay, we've got the next pixel value in 'pixvalue' */
+-
++
+ if (visual->class == TrueColor || visual->class == DirectColor) {
+- /* in either case, we have to take the pixvalue and
++ /* in either case, we have to take the pixvalue and
+ break it out into individual r,g,b components */
+ rval = (pixvalue & rmask) >> rshift;
+ gval = (pixvalue & gmask) >> gshift;
+@@ -741,212 +1098,165 @@
+ /* use pixel value as an index into colors array */
+
+ if (pixvalue >= ncolors) {
+- FatalError("convertImage(): pixvalue >= ncolors");
++ fprintf(stderr, "WARNING: convertImage(): pixvalue >= ncolors\n");
++ return 1;
+ }
+
+- if (gbits == 24) { /* too many colors for 8-bit colormap */
+- *pptr++ = (colors[pixvalue].red) >> 8;
+- *pptr++ = (colors[pixvalue].green) >> 8;
+- *pptr++ = (colors[pixvalue].blue) >> 8;
+- }
+- else *pptr++ = pixvalue & 0xff;
+-
++ *pptr++ = (colors[pixvalue].red) >> 8;
++ *pptr++ = (colors[pixvalue].green) >> 8;
++ *pptr++ = (colors[pixvalue].blue) >> 8;
+ }
+ }
+ }
+
+- return 1;
++ return 0;
+ }
+
+
+
+-/**************************************/
+-static int lowbitnum(ul)
+- unsigned long ul;
++/***********************************/
++static int RectIntersect(ax,ay,aw,ah, bx,by,bw,bh)
++ int ax,ay,aw,ah, bx,by,bw,bh;
+ {
+- /* returns position of lowest set bit in 'ul' as an integer (0-31),
+- or -1 if none */
++ /* returns 0 if rectangles A and B do not intersect
++ returns 1 if A partially intersects B
++ returns 2 if rectangle A is fully enclosed by B */
+
+- int i;
+- for (i=0; ((ul&1) == 0) && i<32; i++, ul>>=1);
+- if (i==32) i = -1;
+- return i;
+-}
++ int ax1,ay1, bx1,by1;
+
++ ax1 = ax+aw-1; ay1 = ay+ah-1;
++ bx1 = bx+bw-1; by1 = by+bh-1;
+
++ if (ax1<bx || ax>bx1 || ay1<by || ay>by1) return 0;
+
+-/**************************************/
+-/* following code snarfed from 'xwd.c' */
+-/**************************************/
++ if (ax>=bx && ax1<=bx1 && ay>=by && ay1<=by) return 2;
+
+-#define lowbit(x) ((x) & (~(x) + 1))
+-
+-
+-static int getxcolors(win_info, colors)
+- XWindowAttributes *win_info;
+- XColor **colors;
+-{
+- int i, ncolors;
+- Colormap cmap;
+-
+- *colors = (XColor *) NULL;
++ return 1;
++}
+
+- if (win_info->visual->class == TrueColor) {
+- if (DEBUG) fprintf(stderr,"TrueColor visual: no colormap needed\n");
+- return 0;
+- }
+
+- else if (!win_info->colormap) {
+- if (DEBUG) fprintf(stderr,"no colormap associated with window\n");
+- return 0;
+- }
+
+- ncolors = win_info->visual->map_entries;
+- if (DEBUG) fprintf(stderr,"%d entries in colormap\n", ncolors);
+
+- if (!(*colors = (XColor *) malloc (sizeof(XColor) * ncolors)))
+- FatalError("malloc failed in getxcolors()");
+
++/** stuff needed to make new xvgrab work in 3.10a. **/
+
+- if (win_info->visual->class == DirectColor) {
+- Pixel red, green, blue, red1, green1, blue1;
++/********************************************/
++static int CountColors24(pic, pwide, phigh, x, y, w, h)
++ byte *pic;
++ int pwide, phigh, x,y,w,h;
++{
++ /* counts the # of unique colors in a selected rect of a PIC24
++ returns '0-256' or >256 */
+
+- if (DEBUG) fprintf(stderr,"DirectColor visual\n");
++ int i, j, nc;
++ int low, high, mid;
++ u_int colors[257], col;
++ byte *pp;
++
++ nc = 0;
++
++ for (i=y; nc<257 && i<y+h; i++) {
++ pp = pic + (i*pwide + x)*3;
++
++ for (j=x; nc<257 && j<x+w; j++, pp+=3) {
++ col = (((u_int) pp[0])<<16) + (((u_int) pp[1])<<8) + pp[2];
++
++ /* binary search the 'colors' array to see if it's in there */
++ low = 0; high = nc-1;
++ while (low <= high) {
++ mid = (low+high)/2;
++ if (col < colors[mid]) high = mid - 1;
++ else if (col > colors[mid]) low = mid + 1;
++ else break;
++ }
+
+- red = green = blue = 0;
+- red1 = lowbit(win_info->visual->red_mask);
+- green1 = lowbit(win_info->visual->green_mask);
+- blue1 = lowbit(win_info->visual->blue_mask);
+- for (i=0; i<ncolors; i++) {
+- (*colors)[i].pixel = red|green|blue;
+- (*colors)[i].pad = 0;
+- red += red1;
+- if (red > win_info->visual->red_mask) red = 0;
+- green += green1;
+- if (green > win_info->visual->green_mask) green = 0;
+- blue += blue1;
+- if (blue > win_info->visual->blue_mask) blue = 0;
+- }
+- }
+- else {
+- for (i=0; i<ncolors; i++) {
+- (*colors)[i].pixel = i;
+- (*colors)[i].pad = 0;
++ if (high < low) { /* didn't find color in list, add it. */
++ xvbcopy((char *) &colors[low], (char *) &colors[low+1],
++ (nc - low) * sizeof(u_int));
++ colors[low] = col;
++ nc++;
++ }
+ }
+ }
+
+- XQueryColors(theDisp, win_info->colormap, *colors, ncolors);
+-
+- return(ncolors);
++ return nc;
+ }
+-
+-
+
+
+-
+-/***********************************/
+-int LoadGrab(pinfo)
+- PICINFO *pinfo;
++/****************************/
++static int Trivial24to8(pic24, w,h, pic8, rmap,gmap,bmap, maxcol)
++ byte *pic24, *pic8, *rmap, *gmap, *bmap;
++ int w,h,maxcol;
+ {
+- /* loads up (into XV structures) last image successfully grabbed.
+- returns '0' on failure, '1' on success */
+-
+- int i;
+-
+- if (!grabPic) return 0; /* no image to use */
+-
+- if (gbits == 24) pinfo->type = PIC24;
+- else {
+- pinfo->type = PIC8;
++ /* scans picture until it finds more than 'maxcol' different colors. If it
++ finds more than 'maxcol' colors, it returns '0'. If it DOESN'T, it does
++ the 24-to-8 conversion by simply sticking the colors it found into
++ a colormap, and changing instances of a color in pic24 into colormap
++ indicies (in pic8) */
++
++ unsigned long colors[256],col;
++ int i, nc, low, high, mid;
++ byte *p, *pix;
++
++ if (maxcol>256) maxcol = 256;
++
++ /* put the first color in the table by hand */
++ nc = 0; mid = 0;
++
++ for (i=w*h,p=pic24; i; i--) {
++ col = (((u_long) *p++) << 16);
++ col += (((u_long) *p++) << 8);
++ col += *p++;
++
++ /* binary search the 'colors' array to see if it's in there */
++ low = 0; high = nc-1;
++ while (low <= high) {
++ mid = (low+high)/2;
++ if (col < colors[mid]) high = mid - 1;
++ else if (col > colors[mid]) low = mid + 1;
++ else break;
++ }
+
+- for (i=0; i<256; i++) {
+- pinfo->r[i] = grabmapR[i];
+- pinfo->g[i] = grabmapG[i];
+- pinfo->b[i] = grabmapB[i];
++ if (high < low) { /* didn't find color in list, add it. */
++ if (nc>=maxcol) return 0;
++ xvbcopy((char *) &colors[low], (char *) &colors[low+1],
++ (nc - low) * sizeof(u_long));
++ colors[low] = col;
++ nc++;
+ }
+ }
+
+- pinfo->pic = grabPic;
+- pinfo->normw = pinfo->w = gWIDE;
+- pinfo->normh = pinfo->h = gHIGH;
+- pinfo->frmType = -1;
+- pinfo->colType = -1;
+
+- sprintf(pinfo->fullInfo,"<%s internal>",
+- (pinfo->type == PIC8) ? "8-bit" : "24-bit");
+-
+- sprintf(pinfo->shrtInfo,"%dx%d image.",gWIDE, gHIGH);
+-
+- pinfo->comment = (char *) NULL;
++ /* run through the data a second time, this time mapping pixel values in
++ pic24 into colormap offsets into 'colors' */
+
+- grabPic = (byte *) NULL;
+-
+- return 1;
+-}
+-
+-
+-
+-
+-
+-#include <X11/Xlib.h>
+-#include <X11/Xatom.h>
+-
+-static Window TryChildren PARM((Display *, Window, Atom));
+-
+-/* Find a window with WM_STATE, else return '0' */
+-
+-static Window xvClientWindow (dpy, win)
+- Display *dpy;
+- Window win;
+-{
+- Atom WM_STATE;
+- Atom type = None;
+- int format;
+- unsigned long nitems, after;
+- unsigned char *data;
+- Window inf;
+-
+- WM_STATE = XInternAtom(dpy, "WM_STATE", True);
+- if (!WM_STATE) return win;
+-
+- XGetWindowProperty(dpy, win, WM_STATE, 0L, 0L, False, AnyPropertyType,
+- &type, &format, &nitems, &after, &data);
+- if (type) return win;
+-
+- inf = TryChildren(dpy, win, WM_STATE);
+-
+- return inf;
+-}
+-
+-static Window TryChildren (dpy, win, WM_STATE)
+- Display *dpy;
+- Window win;
+- Atom WM_STATE;
+-{
+- Window root, parent;
+- Window *children;
+- unsigned int nchildren;
+- unsigned int i;
+- Atom type = None;
+- int format;
+- unsigned long nitems, after;
+- unsigned char *data;
+- Window inf = 0;
+-
+- if (!XQueryTree(dpy, win, &root, &parent, &children, &nchildren))
+- return 0;
++ for (i=w*h,p=pic24, pix=pic8; i; i--,pix++) {
++ col = (((u_long) *p++) << 16);
++ col += (((u_long) *p++) << 8);
++ col += *p++;
++
++ /* binary search the 'colors' array. It *IS* in there */
++ low = 0; high = nc-1;
++ while (low <= high) {
++ mid = (low+high)/2;
++ if (col < colors[mid]) high = mid - 1;
++ else if (col > colors[mid]) low = mid + 1;
++ else break;
++ }
+
+- for (i = 0; !inf && (i < nchildren); i++) {
+- XGetWindowProperty(dpy, children[i], WM_STATE, 0L, 0L, False,
+- AnyPropertyType, &type, &format, &nitems,
+- &after, &data);
+- if (type)
+- inf = children[i];
++ if (high < low) {
++ fprintf(stderr,"Trivial24to8: impossible situation!\n");
++ exit(1);
+ }
++ *pix = mid;
++ }
+
+- for (i = 0; !inf && (i < nchildren); i++)
+- inf = TryChildren(dpy, children[i], WM_STATE);
++ /* and load up the 'desired colormap' */
++ for (i=0; i<nc; i++) {
++ rmap[i] = colors[i]>>16;
++ gmap[i] = (colors[i]>>8) & 0xff;
++ bmap[i] = colors[i] & 0xff;
++ }
+
+- if (children) XFree((char *)children);
+- return inf;
++ return 1;
+ }
+diff -ru xv-3.10a/xvgraf.c xv-3.10a-enhancements/xvgraf.c
+--- xv-3.10a/xvgraf.c 1994-12-22 14:34:42.000000000 -0800
++++ xv-3.10a-enhancements/xvgraf.c 2007-05-12 14:03:08.000000000 -0700
+@@ -1,4 +1,4 @@
+-/*
++/*
+ * xvgraf.c - GRAF window handling functions
+ *
+ * callable functions:
+@@ -52,7 +52,7 @@
+ Window parent;
+ int x,y;
+ unsigned long fg,bg;
+- char *title;
++ const char *title;
+ {
+ /* NOTE: CreateGraf does not initialize hands[], nhands, or spline,
+ as these could be initialized by X resources (or whatever),
+@@ -88,7 +88,7 @@
+ gp->win = XCreateSimpleWindow(theDisp, parent, x,y, GWIDE, GHIGH, 1, fg,bg);
+ if (!gp->win) FatalError("can't create graph (main) window");
+
+- gp->gwin = XCreateSimpleWindow(theDisp, gp->win, 2, GHIGH-132,
++ gp->gwin = XCreateSimpleWindow(theDisp, gp->win, 2, GHIGH-132,
+ 128, 128, 1, fg,bg);
+ if (!gp->gwin) FatalError("can't create graph (sub) window");
+
+@@ -96,7 +96,7 @@
+ BTCreate(&gp->butts[i], gp->win, GWIDE-GBWIDE-2, 1+i * (GBHIGH + 1),
+ GBWIDE, GBHIGH, (char *) NULL, fg, bg, hicol, locol);
+ gp->butts[i].pix = gfbpix[i];
+- gp->butts[i].pw = PW;
++ gp->butts[i].pw = PW;
+ gp->butts[i].ph = PH;
+ }
+
+@@ -132,7 +132,7 @@
+
+ gp->gammamode = 0; gp->gamma = 1.0;
+ }
+-
++
+
+ /***************************************************/
+ void RedrawGraf(gp, gwin)
+@@ -148,7 +148,7 @@
+ else {
+ Draw3dRect(gp->win, 0,0, GWIDE-1, GHIGH-1, R3D_OUT, 1, hicol, locol,
+ gp->bg);
+-
++
+ XSetForeground(theDisp, theGC, gp->fg);
+ XSetBackground(theDisp, theGC, gp->bg);
+ DrawString(gp->win, 2, 1+ASCENT, gp->str);
+@@ -165,11 +165,11 @@
+ {
+ int i,x,y;
+ XPoint pts[129], *pt;
+-
++
+
+ if (gp->entergamma) {
+- char *str1 = "Enter gamma";
+- char *str2 = "value: ";
++ const char *str1 = "Enter gamma";
++ const char *str2 = "value: ";
+
+ XSetForeground(theDisp, theGC, gp->fg);
+ XSetBackground(theDisp, theGC, gp->bg);
+@@ -181,15 +181,15 @@
+ x = 10 + StringWidth(str2) + 8;
+ y = 30 + ASCENT + CHIGH + 3;
+ i = StringWidth(gp->gvstr);
+- if (gp->entergamma < 0 && strlen(gp->gvstr)) {
++ if (gp->entergamma < 0 && strlen(gp->gvstr)) {
+ /* show string highlited */
+ XFillRectangle(theDisp, gp->gwin, theGC, x-1, y-ASCENT-1,
+ (u_int) i+2, (u_int) CHIGH+2);
+ XSetForeground(theDisp, theGC, gp->bg);
+ }
+- else
++ else
+ XDrawLine(theDisp, gp->gwin, theGC, x+i, y-ASCENT, x+i, y+DESCENT);
+-
++
+ DrawString(gp->gwin, x,y, gp->gvstr);
+
+ return;
+@@ -267,7 +267,7 @@
+ if (i<N_GFB) { /* found one */
+ if (BTTrack(bp)) { /* it was selected */
+ switch (i) {
+- case GFB_SPLINE:
++ case GFB_SPLINE:
+ case GFB_LINE:
+ gp->gammamode = 0;
+
+@@ -312,7 +312,7 @@
+ if (gp->nhands < MAX_GHANDS) {
+ /* find largest x-gap in handles, put new handle in mid */
+ int lgap, lpos, x, y;
+-
++
+ lgap = gp->hands[1].x - gp->hands[0].x;
+ lpos = 1;
+ for (j=1; j<gp->nhands-1; j++)
+@@ -320,11 +320,11 @@
+ lgap = gp->hands[j+1].x - gp->hands[j].x;
+ lpos = j+1;
+ }
+-
++
+ /* open up position in hands[] array */
+- xvbcopy((char *) &gp->hands[lpos], (char *) &gp->hands[lpos+1],
++ xvbcopy((char *) &gp->hands[lpos], (char *) &gp->hands[lpos+1],
+ (gp->nhands - lpos) * sizeof(XPoint));
+-
++
+ x = gp->hands[lpos-1].x + lgap/2;
+ y = gp->func[x];
+ gp->hands[lpos].x = x;
+@@ -343,7 +343,7 @@
+ BTSetActive(&gp->butts[GFB_DELH], 1);
+ }
+ break;
+-
++
+ case GFB_DELH:
+ if (gp->nhands > 2) {
+ /* find (middle) point whose x-distance to previous
+@@ -361,9 +361,9 @@
+ mdist = dist; mpos = j;
+ }
+ }
+-
++
+ /* delete position 'mpos' in hands[] array */
+- xvbcopy((char *) &gp->hands[mpos+1], (char *) &gp->hands[mpos],
++ xvbcopy((char *) &gp->hands[mpos+1], (char *) &gp->hands[mpos],
+ (gp->nhands-mpos-1) * sizeof(XPoint));
+
+ gp->nhands--;
+@@ -408,16 +408,16 @@
+
+ /* keep original mouse position in 'mx,my', and warp mouse to center
+ of screen */
+- grab = !XGrabPointer(theDisp, gp->gwin, False, 0, GrabModeAsync,
++ grab = !XGrabPointer(theDisp, gp->gwin, False, 0, GrabModeAsync,
+ GrabModeAsync, None, inviso, (Time) CurrentTime);
+- XWarpPointer(theDisp, None, rootW, 0,0,0,0,
++ XWarpPointer(theDisp, None, rootW, 0,0,0,0,
+ (int) dispWIDE/2, (int) dispHIGH/2);
+
+- origx = dispWIDE/2; origy = dispHIGH/2;
++ origx = dispWIDE/2; origy = dispHIGH/2;
+ orighx = gp->hands[h].x; orighy = gp->hands[h].y;
+
+ gp->gammamode = 0;
+- offx = gp->hands[h].x - origx;
++ offx = gp->hands[h].x - origx;
+ offy = gp->hands[h].y - origy;
+
+ vertonly = (h==0 || h==(gp->nhands-1));
+@@ -434,7 +434,7 @@
+
+ dx = x - origx; dy = origy - y; /* flip y axis */
+
+- /* new (virt) position of handle is (desired)
++ /* new (virt) position of handle is (desired)
+ orighx + dx, orighy + dy */
+
+ if (!vertonly) { /* keep this handle between its neighbors */
+@@ -448,7 +448,7 @@
+ if (newx != gp->hands[h].x || newy != gp->hands[h].y) {
+ /* this handle has moved... */
+ XSetForeground(theDisp, theGC, gp->bg);
+- XFillRectangle(theDisp, gp->gwin, theGC,
++ XFillRectangle(theDisp, gp->gwin, theGC,
+ (gp->hands[h].x/2)-3, ((255-gp->hands[h].y)/2)-3, 7,7);
+
+ gp->hands[h].x = newx; gp->hands[h].y = newy;
+@@ -464,7 +464,7 @@
+ }
+
+ drawHandPos(gp, -1);
+- XWarpPointer(theDisp, None, gp->gwin, 0,0,0,0,
++ XWarpPointer(theDisp, None, gp->gwin, 0,0,0,0,
+ gp->hands[h].x/2, (255-gp->hands[h].y)/2);
+ if (grab) XUngrabPointer(theDisp, (Time) CurrentTime);
+ }
+@@ -480,24 +480,24 @@
+ int hnum;
+ {
+ int w;
+- char *tstr = "888,888";
+-
++ const char *tstr = "888,888";
++
+ /* if hnum < 0, clears the text area */
+-
++
+ XSetFont(theDisp, theGC, monofont);
+ w = XTextWidth(monofinfo, tstr, (int) strlen(tstr));
+
+- if (hnum >= 0) sprintf(str,"%3d,%3d",gp->hands[hnum].x,gp->hands[hnum].y);
+- else sprintf(str," ");
++ if (hnum >= 0) sprintf(dummystr,"%3d,%3d",gp->hands[hnum].x,gp->hands[hnum].y);
++ else sprintf(dummystr," ");
+
+ XSetForeground(theDisp, theGC, gp->fg);
+ XSetBackground(theDisp, theGC, gp->bg);
+- XDrawImageString(theDisp, gp->win, theGC, 130-w, 1+ASCENT,
+- str, (int) strlen(str));
++ XDrawImageString(theDisp, gp->win, theGC, 130-w, 1+ASCENT,
++ dummystr, (int) strlen(dummystr));
+
+ XSetFont(theDisp, theGC, mfont);
+ }
+-
++
+
+ /***************************************************/
+ int GrafKey(gp,str)
+@@ -518,7 +518,7 @@
+ }
+
+ while (*str) {
+- if (gp->entergamma == -1 &&
++ if (gp->entergamma == -1 &&
+ (*str != '\012' && *str != '\015' && *str != '\033')) {
+ gp->entergamma = 1;
+ gp->gvstr[0] = '\0';
+@@ -529,7 +529,7 @@
+ len = strlen(gp->gvstr);
+
+ if (*str>= '0' && *str <= '9') {
+- if (len < GVMAX) {
++ if (len < GVMAX) {
+ gp->gvstr[len++] = *str;
+ gp->gvstr[len] = '\0';
+ ok = 1;
+@@ -607,18 +607,18 @@
+
+ /* do sanity check. (x-coords must be sorted (strictly increasing)) */
+
+- for (i=0; i<gp->nhands; i++) {
+- RANGE(gp->hands[i].x, 0, 255);
++ for (i=0; i<gp->nhands; i++) {
++ RANGE(gp->hands[i].x, 0, 255);
+ RANGE(gp->hands[i].y, 0, 255);
+ }
+
+ gp->hands[0].x = 0; gp->hands[gp->nhands-1].x = 255;
+ for (i=1; i<gp->nhands-1; i++) {
+ if (gp->hands[i].x < i) gp->hands[i].x = i;
+- if (gp->hands[i].x > 256-gp->nhands+i)
++ if (gp->hands[i].x > 256-gp->nhands+i)
+ gp->hands[i].x = 256-gp->nhands+i;
+
+- if (gp->hands[i].x <= gp->hands[i-1].x)
++ if (gp->hands[i].x <= gp->hands[i-1].x)
+ gp->hands[i].x = gp->hands[i-1].x + 1;
+ }
+
+@@ -647,17 +647,17 @@
+ else { /* gp->gamma == 0.0 */
+ for (i=0; i<256; i++) gp->func[i] = 0;
+ }
+-
+-
++
++
+ for (i=0; i<gp->nhands; i++) {
+ gp->hands[i].y = gp->func[gp->hands[i].x];
+ }
+ }
+-
++
+ else if (!gp->spline) { /* do linear interpolation */
+ int y,x1,y1,x2,y2;
+ double yd;
+-
++
+ for (i=0; i<gp->nhands-1; i++) {
+ x1 = gp->hands[ i ].x; y1 = gp->hands[ i ].y;
+ x2 = gp->hands[i+1].x; y2 = gp->hands[i+1].y;
+@@ -676,12 +676,12 @@
+ double yf[MAX_GHANDS];
+ double yd;
+
+- for (i=0; i<gp->nhands; i++) {
++ for (i=0; i<gp->nhands; i++) {
+ x[i] = gp->hands[i].x; y[i] = gp->hands[i].y;
+ }
+-
++
+ InitSpline(x, y, gp->nhands, yf);
+-
++
+ for (i=0; i<256; i++) {
+ yd = EvalSpline(x, y, yf, gp->nhands, (double) i);
+ j = (int) floor(yd + 0.5);
+@@ -729,8 +729,8 @@
+
+ /*********************/
+ int Str2Graf(gp, str)
+-GRAF_STATE *gp;
+-char *str;
++ GRAF_STATE *gp;
++ const char *str;
+ {
+ /* parses strings of the form: "S 3 : 0,0 : 63,63 : 255,255",
+ (meaning SPLINE, 3 points, and the 3 sets of handle coordinates)
+@@ -744,14 +744,15 @@
+ thing tends to break optimizers */
+
+ char tstr[256], tstr1[256], *sp, *dp;
++ const char *csp;
+ XPoint coords[MAX_GHANDS];
+ int spline, nhands, i, x, y;
+
+ if (!str) return 1; /* NULL strings don't parse well! */
+
+ /* first, strip all pesky whitespace from str */
+- for (sp=str, dp=tstr; *sp; sp++)
+- if (*sp > ' ') { *dp = *sp; dp++; }
++ for (csp=str, dp=tstr; *csp; csp++)
++ if (*csp > ' ') { *dp = *csp; dp++; }
+ *dp = '\0';
+
+ /* check for 'gamma'-style str */
+@@ -761,10 +762,10 @@
+ gp->gammamode = 1;
+ sprintf(gp->gvstr, "%.5g", gp->gamma);
+ return 0;
+- }
++ }
+ else return 1;
+ }
+-
++
+ /* read Spline, or Line (S/L) character */
+ sp = tstr;
+ if (*sp == 'S' || *sp == 's') spline = 1;
+@@ -784,7 +785,7 @@
+ while (*sp && *sp != ':') {*dp = *sp; dp++; sp++; }
+ *dp++ = '\0';
+ if (sscanf(tstr1,"%d,%d",&x, &y) != 2) return 1;
+- if (x < 0 || x > 255 ||
++ if (x < 0 || x > 255 ||
+ y < 0 || y > 255) return 1; /* out of range */
+ coords[i].x = x; coords[i].y = y;
+ }
+@@ -837,7 +838,7 @@
+ IFSET(gp->gamma, gsp->gamma);
+ IFSET(gp->nhands, gsp->nhands);
+
+- if (strcmp(gp->gvstr, gsp->gvstr))
++ if (strcmp(gp->gvstr, gsp->gvstr))
+ { strcpy(gp->gvstr, gsp->gvstr); rv++; }
+
+ for (i=0; i<gp->nhands; i++) {
+@@ -880,7 +881,7 @@
+ sig = ((double) x[i]-x[i-1]) / ((double) x[i+1] - x[i-1]);
+ p = sig * y2[i-1] + 2.0;
+ y2[i] = (sig-1.0) / p;
+- u[i] = (((double) y[i+1]-y[i]) / (x[i+1]-x[i])) -
++ u[i] = (((double) y[i+1]-y[i]) / (x[i+1]-x[i])) -
+ (((double) y[i]-y[i-1]) / (x[i]-x[i-1]));
+ u[i] = (6.0 * u[i]/(x[i+1]-x[i-1]) - sig*u[i-1]) / p;
+ }
+@@ -912,9 +913,9 @@
+ if (h==0.0) FatalError("bad xvalues in splint\n");
+ a = (xa[khi]-x)/h;
+ b = (x-xa[klo])/h;
+- return (a*ya[klo] + b*ya[khi] + ((a*a*a-a)*y2a[klo] +(b*b*b-b)*y2a[khi])
++ return (a*ya[klo] + b*ya[khi] + ((a*a*a-a)*y2a[klo] +(b*b*b-b)*y2a[khi])
+ * (h*h) / 6.0);
+ }
+-
++
+
+
+diff -ru xv-3.10a/xviff.c xv-3.10a-enhancements/xviff.c
+--- xv-3.10a/xviff.c 1995-01-13 11:54:54.000000000 -0800
++++ xv-3.10a-enhancements/xviff.c 2007-05-13 17:50:59.000000000 -0700
+@@ -39,14 +39,14 @@
+
+ static long filesize;
+
+-static int readID PARM((FILE *, char *));
+-static int iffError PARM((char *, char *));
++/* static int readID PARM((FILE *, char *)); DOES NOT EXIST */
++static int iffError PARM((const char *, const char *));
+ static void decomprle PARM((byte *, byte *, long, long));
+ static unsigned int iff_getword PARM((byte *));
+ static unsigned long iff_getlong PARM((byte *));
+
+
+-static char *bname;
++static const char *bname;
+
+
+ /* Define internal ILBM types */
+@@ -65,16 +65,16 @@
+ /*******************************************/
+ {
+ /* returns '1' on success */
+-
++
+ register byte bitmsk, rval, gval, bval;
+ register long col, colbit;
+ FILE *fp;
+ int rv;
+- int BMHDok, CMAPok, CAMGok, BODYok;
++ int BMHDok, CMAPok, CAMGok;
+ int bmhd_width, bmhd_height, bmhd_bitplanes, bmhd_transcol;
+ int i, j, k, lineskip, colors, fmt;
+ byte bmhd_masking, bmhd_compression;
+- long chunkLen, camg_viewmode, decomp_bufsize;
++ long chunkLen, camg_viewmode;
+ byte *databuf, *dataptr, *cmapptr, *picptr, *pic, *bodyptr;
+ byte *workptr, *workptr2, *workptr3, *decomp_mem;
+
+@@ -138,6 +138,7 @@
+ BODY chunk was found or dataptr ran over end of file */
+
+ while ((rv<0) && (dataptr < (databuf + filesize))) {
++ int npixels = 0;
+ chunkLen = (iff_getlong(dataptr + 4) + 1) & 0xfffffffe; /* make even */
+
+ if (strncmp((char *) dataptr, "BMHD", (size_t) 4)==0) { /* BMHD chunk? */
+@@ -149,25 +150,30 @@
+ bmhd_transcol = iff_getword(dataptr + 8 + 12);
+ BMHDok = 1; /* got BMHD */
+ dataptr += 8 + chunkLen; /* to next chunk */
++
++ npixels = bmhd_width * bmhd_height; /* 65535*65535 max */
++ if (bmhd_width <= 0 || bmhd_height <= 0
++ || npixels/bmhd_width != bmhd_height)
++ return (iffError(bname, "xviff: image dimensions out of range"));
+ }
+
+
+ else if (strncmp((char *) dataptr, "CMAP", (size_t) 4)==0) { /* CMAP ? */
+ cmapptr = dataptr + 8;
+ colors = chunkLen / 3; /* calc no of colors */
+-
++
+ /* copy colors to color map */
+ for (i=0; i < colors; i++) {
+ pinfo->r[i] = *cmapptr++;
+ pinfo->g[i] = *cmapptr++;
+ pinfo->b[i] = *cmapptr++;
+ }
+-
++
+ CMAPok = 1; /* got CMAP */
+ dataptr += 8 + chunkLen; /* to next chunk */
+ }
+
+-
++
+ else if (strncmp((char *) dataptr, "CAMG", (size_t) 4)==0) { /* CAMG ? */
+ camg_viewmode = iff_getlong(dataptr + 8); /* get viewmodes */
+ CAMGok = 1; /* got CAMG */
+@@ -176,19 +182,28 @@
+
+
+ else if (strncmp((char *) dataptr, "BODY", (size_t) 4)==0) { /* BODY ? */
++ int byte_width = (((bmhd_width + 15) >> 4) << 1); /* 8192 max */
++
+ bodyptr = dataptr + 8; /* -> BODY data */
+-
++
+ if (BMHDok) { /* BMHD found? */
+ /* if BODY is compressed, allocate buffer for decrunched BODY and
+ decompress it (run length encoding) */
+-
++
+ if (bmhd_compression == 1) {
+ /* calc size of decrunch buffer - (size of the actual picture
+ decompressed in interleaved Amiga bitplane format) */
+
+- decomp_bufsize = (((bmhd_width + 15) >> 4) << 1)
+- * bmhd_height * bmhd_bitplanes;
+-
++ int bytes_per_bitplane = byte_width * bmhd_height; /* 536862720 max */
++ long decomp_bufsize = bytes_per_bitplane * bmhd_bitplanes;
++
++ if (byte_width <= 0 || bmhd_height <= 0 ||
++ bytes_per_bitplane/byte_width != bmhd_height ||
++ decomp_bufsize/bytes_per_bitplane != bmhd_bitplanes)
++ {
++ return (iffError(bname, "xviff: image dimensions out of range"));
++ }
++
+ if ((decomp_mem = (byte *)malloc((size_t) decomp_bufsize)) != NULL) {
+ decomprle(dataptr + 8, decomp_mem, chunkLen, decomp_bufsize);
+ bodyptr = decomp_mem; /* -> uncompressed BODY */
+@@ -200,12 +215,13 @@
+ FatalError("xviff: cannot malloc() decrunch buffer");
+ }
+ }
+-
++
+
+ /* the following determines the type of the ILBM file.
+ it's either NORMAL, EHB, HAM, HAM8 or 24BIT */
+-
++
+ fmt = ILBM_NORMAL; /* assume normal ILBM */
++ /* FIXME: does ILBM_NORMAL really support up to 255 bitplanes? */
+
+ if (bmhd_bitplanes == 24) fmt = ILBM_24BIT;
+ else if (bmhd_bitplanes == 8) {
+@@ -216,7 +232,7 @@
+ if (camg_viewmode & 0x80) fmt = ILBM_EHB;
+ else if (camg_viewmode & 0x800) fmt = ILBM_HAM;
+ }
+-
++
+
+ if (DEBUG) {
+ fprintf(stderr, "LoadIFF: %s %dx%d, planes=%d (%d cols), comp=%d\n",
+@@ -225,9 +241,9 @@
+ (fmt==ILBM_HAM8) ? "HAM8 ILBM" :
+ (fmt==ILBM_EHB) ? "EHB ILBM" :
+ (fmt==ILBM_24BIT) ? "24BIT ILBM" : "unknown ILBM",
+- bmhd_width, bmhd_height, bmhd_bitplanes,
++ bmhd_width, bmhd_height, bmhd_bitplanes,
+ 1<<bmhd_bitplanes, bmhd_compression);
+- }
++ }
+
+
+ if ((fmt==ILBM_NORMAL) || (fmt==ILBM_EHB) || (fmt==ILBM_HAM)) {
+@@ -248,8 +264,14 @@
+
+
+ if ((fmt == ILBM_HAM) || (fmt == ILBM_HAM8) || (fmt == ILBM_24BIT)) {
+- if ((picptr=(byte *) malloc((size_t)bmhd_width*bmhd_height*3))
+- ==NULL) {
++ int bufsize = 3 * npixels;
++
++ if (bufsize/3 != npixels) {
++ if (databuf) free(databuf);
++ if (decomp_mem) free(decomp_mem);
++ return (iffError(bname, "xviff: image dimensions out of range"));
++ }
++ if ((picptr=(byte *) malloc((size_t) bufsize)) == NULL) {
+ if (databuf) free(databuf);
+ if (decomp_mem) free(decomp_mem);
+ return (iffError(bname, "xviff: no memory for decoded picture"));
+@@ -258,8 +280,8 @@
+ else {
+ pic = picptr;
+ workptr = bodyptr;
+- lineskip = ((bmhd_width + 15) >> 4) << 1;
+-
++ lineskip = byte_width;
++
+ for (i=0; i<bmhd_height; i++) {
+ bitmsk = 0x80;
+ workptr2 = workptr;
+@@ -338,28 +360,28 @@
+
+
+ else if ((fmt == ILBM_NORMAL) || (fmt == ILBM_EHB)) {
+- if ((picptr = (byte *) malloc((size_t) bmhd_width * bmhd_height))
+- == NULL) {
++ /* if bmhd_width and bmhd_height are OK (checked in BMHD block
++ * above; guaranteed by BMHDok), then npixels is OK, too */
++ if ((picptr = (byte *) malloc((size_t) npixels)) == NULL) {
+ if (databuf) free(databuf);
+ if (decomp_mem) free(decomp_mem);
+ return (iffError(bname, "xviff: no memory for decoded picture"));
+ }
+-
++
+ else if (fmt == ILBM_EHB) {
+ if (DEBUG) fprintf(stderr,"Doubling CMAP for EHB mode\n");
+-
++
+ for (i=0; i<32; i++) {
+ pinfo->r[i + colors] = pinfo->r[i] >> 1;
+ pinfo->g[i + colors] = pinfo->g[i] >> 1;
+ pinfo->b[i + colors] = pinfo->b[i] >> 1;
+ }
+ }
+-
++
+ pic = picptr; /* ptr to chunky buffer */
+ workptr = bodyptr; /* ptr to uncmp'd pic, planar format */
+-
+- lineskip = ((bmhd_width + 15) >> 4) << 1; /* # of bytes/line */
+-
++ lineskip = byte_width;
++
+ for (i=0; i<bmhd_height; i++) {
+ bitmsk = 0x80; /* left most bit (mask) */
+ workptr2 = workptr; /* work ptr to source */
+@@ -367,14 +389,14 @@
+ col = 0;
+ colbit = 1;
+ workptr3 = workptr2; /* ptr to byte in 1st pln */
+-
++
+ for (k=0; k<bmhd_bitplanes; k++) {
+ if (*workptr3 & bitmsk) /* if bit set in this pln */
+ col = col + colbit; /* add bit to chunky byte */
+ workptr3 += lineskip; /* go to next line */
+ colbit <<= 1; /* shift color bit */
+ }
+-
++
+ *pic++ = col; /* write to chunky buffer */
+ bitmsk = bitmsk >> 1; /* shift mask to next bit */
+ if (bitmsk == 0) { /* if mask is zero */
+@@ -382,7 +404,7 @@
+ workptr2++; /* mv ptr to next byte */
+ }
+ } /* for j ... */
+-
++
+ workptr += lineskip * bmhd_bitplanes; /* to next line */
+ } /* for i ... */
+
+@@ -399,7 +421,7 @@
+ pinfo->colType = F_FULLCOLOR;
+ pinfo->frmType = -1;
+
+- sprintf(pinfo->fullInfo, "%s (%ld bytes)",
++ sprintf(pinfo->fullInfo, "%s (%ld bytes)",
+ (fmt==ILBM_NORMAL) ? "IFF ILBM" :
+ (fmt==ILBM_HAM) ? "HAM ILBM" :
+ (fmt==ILBM_HAM8) ? "HAM8 ILBM" :
+@@ -414,7 +436,8 @@
+ } /* if BMHDok */
+
+ else rv = 0; /* didn't get BMHD header */
+- }
++
++ } /* "BODY" chunk */
+
+ else {
+ if (DEBUG)
+@@ -440,10 +463,10 @@
+
+ /**************************************************************************
+ void decomprle(source, destination, source length, buffer size)
+-
++
+ Decompress run-length encoded data from source to destination. Terminates
+ when source is decoded completely or destination buffer is full.
+-
++
+ The decruncher is as optimized as I could make it, without risking
+ safety in case of corrupt BODY chunks.
+ ***************************************************************************/
+@@ -455,12 +478,12 @@
+ register long slen, dlen;
+ {
+ register byte codeByte, dataByte;
+-
++
+ while ((slen > 0) && (dlen > 0)) {
+-
++
+ /* read control byte */
+ codeByte = *sptr++;
+-
++
+ if (codeByte < 0x80) {
+ codeByte++;
+ if ((slen > (long) codeByte) && (dlen >= (long) codeByte)) {
+@@ -522,7 +545,7 @@
+
+ /*******************************************/
+ static int iffError(fname, st)
+- char *fname, *st;
++ const char *fname, *st;
+ {
+ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
+ return 0;
+diff -ru xv-3.10a/xvimage.c xv-3.10a-enhancements/xvimage.c
+--- xv-3.10a/xvimage.c 1995-01-13 16:11:36.000000000 -0800
++++ xv-3.10a-enhancements/xvimage.c 2007-03-18 18:13:51.000000000 -0700
+@@ -21,6 +21,16 @@
+ * int LoadPad(pinfo, fname);
+ */
+
++/* The following switch should better be provided at runtime for
++ * comparison purposes.
++ * At the moment it's only compile time, unfortunately.
++ * Who can make adaptions for use as a runtime switch by a menu option?
++ * [GRR 19980607: now via do_fixpix_smooth global; macro renamed to ENABLE_]
++ * [see http://sylvana.net/fixpix/ for home page, further info]
++ */
++/* #define ENABLE_FIXPIX_SMOOTH */ /* GRR 19980607: moved into xv.h */
++
++#define NEEDSDIR /* for S_IRUSR|S_IWUSR */
+ #include "copyright.h"
+
+ #include "xv.h"
+@@ -34,9 +44,11 @@
+ static void do_pan_calc PARM((int, int, int *, int *));
+ static void crop1 PARM((int, int, int, int, int));
+ static int doAutoCrop24 PARM((void));
+-static void floydDitherize1 PARM((XImage *, byte *, int, int, int,
++static void floydDitherize1 PARM((XImage *, byte *, int, int, int,
+ byte *, byte *,byte *));
++#if 0 /* NOTUSED */
+ static int highbit PARM((unsigned long));
++#endif
+
+ static int doPadSolid PARM((char *, int, int, int, int));
+ static int doPadBggen PARM((char *, int, int, int, int));
+@@ -46,6 +58,267 @@
+ static int ReadImageFile1 PARM((char *, PICINFO *));
+
+
++/* The following array represents the pixel values for each shade
++ * of the primary color components.
++ * If 'p' is a pointer to a source image rgb-byte-triplet, we can
++ * construct the output pixel value simply by 'oring' together
++ * the corresponding components:
++ *
++ * unsigned char *p;
++ * unsigned long pixval;
++ *
++ * pixval = screen_rgb[0][*p++];
++ * pixval |= screen_rgb[1][*p++];
++ * pixval |= screen_rgb[2][*p++];
++ *
++ * This is both efficient and generic, since the only assumption
++ * is that the primary color components have separate bits.
++ * The order and distribution of bits does not matter, and we
++ * don't need additional variables and shifting/masking code.
++ * The array size is 3 KBytes total and thus very reasonable.
++ */
++
++static unsigned long screen_rgb[3][256];
++
++/* The following array holds the exact color representations
++ * reported by the system.
++ * This is useful for less than 24 bit deep displays as a base
++ * for additional dithering to get smoother output.
++ */
++
++static byte screen_set[3][256];
++
++/* The following routine initializes the screen_rgb and screen_set
++ * arrays.
++ * Since it is executed only once per program run, it does not need
++ * to be super-efficient.
++ *
++ * The method is to draw points in a pixmap with the specified shades
++ * of primary colors and then get the corresponding XImage pixel
++ * representation.
++ * Thus we can get away with any Bit-order/Byte-order dependencies.
++ *
++ * The routine uses some global X variables: theDisp, theScreen,
++ * and dispDEEP. Adapt these to your application as necessary.
++ * I've not passed them in as parameters, since for other platforms
++ * than X these may be different (see vfixpix.c), and so the
++ * screen_init() interface is unique.
++ *
++ * BUG: I've read in the "Xlib Programming Manual" from O'Reilly &
++ * Associates, that the DefaultColormap in TrueColor might not
++ * provide the full shade representation in XAllocColor.
++ * In this case one had to provide a 'best' colormap instead.
++ * However, my tests with Xaccel on a Linux-Box with a Mach64
++ * card were fully successful, so I leave that potential problem
++ * to you at the moment and would appreciate any suggestions...
++ */
++
++static void screen_init()
++{
++ static int init_flag; /* assume auto-init as 0 */
++ Pixmap check_map;
++ GC check_gc;
++ XColor check_col;
++ XImage *check_image;
++ int ci, i;
++
++ if (init_flag) return;
++ init_flag = 1;
++
++ check_map = XCreatePixmap(theDisp, RootWindow(theDisp,theScreen),
++ 1, 1, dispDEEP);
++ check_gc = XCreateGC(theDisp, check_map, 0, NULL);
++ for (ci = 0; ci < 3; ci++) {
++ for (i = 0; i < 256; i++) {
++ check_col.red = 0;
++ check_col.green = 0;
++ check_col.blue = 0;
++ /* Do proper upscaling from unsigned 8 bit (image data values)
++ to unsigned 16 bit (X color representation). */
++ ((unsigned short *)&check_col.red)[ci] = (unsigned short)((i << 8) | i);
++ if (theVisual->class == TrueColor)
++ XAllocColor(theDisp, theCmap, &check_col);
++ else
++ xvAllocColor(theDisp, theCmap, &check_col);
++ screen_set[ci][i] =
++ (((unsigned short *)&check_col.red)[ci] >> 8) & 0xff;
++ XSetForeground(theDisp, check_gc, check_col.pixel);
++ XDrawPoint(theDisp, check_map, check_gc, 0, 0);
++ check_image = XGetImage(theDisp, check_map, 0, 0, 1, 1,
++ AllPlanes, ZPixmap);
++ if (check_image) {
++ switch (check_image->bits_per_pixel) {
++ case 8:
++ screen_rgb[ci][i] = *(CARD8 *)check_image->data;
++ break;
++ case 16:
++ screen_rgb[ci][i] = *(CARD16 *)check_image->data;
++ break;
++ case 24:
++ screen_rgb[ci][i] =
++ ((unsigned long)*(CARD8 *)check_image->data << 16) |
++ ((unsigned long)*(CARD8 *)(check_image->data + 1) << 8) |
++ (unsigned long)*(CARD8 *)(check_image->data + 2);
++ break;
++ case 32:
++ screen_rgb[ci][i] = *(CARD32 *)check_image->data;
++ break;
++ }
++ XDestroyImage(check_image);
++ }
++ }
++ }
++ XFreeGC(theDisp, check_gc);
++ XFreePixmap(theDisp, check_map);
++}
++
++
++#ifdef ENABLE_FIXPIX_SMOOTH
++
++/* The following code is based in part on:
++ *
++ * jquant1.c
++ *
++ * Copyright (C) 1991-1996, Thomas G. Lane.
++ * This file is part of the Independent JPEG Group's software.
++ * For conditions of distribution and use, see the accompanying README file.
++ *
++ * This file contains 1-pass color quantization (color mapping) routines.
++ * These routines provide mapping to a fixed color map using equally spaced
++ * color values. Optional Floyd-Steinberg or ordered dithering is available.
++ */
++
++/* Declarations for Floyd-Steinberg dithering.
++ *
++ * Errors are accumulated into the array fserrors[], at a resolution of
++ * 1/16th of a pixel count. The error at a given pixel is propagated
++ * to its not-yet-processed neighbors using the standard F-S fractions,
++ * ... (here) 7/16
++ * 3/16 5/16 1/16
++ * We work left-to-right on even rows, right-to-left on odd rows.
++ *
++ * We can get away with a single array (holding one row's worth of errors)
++ * by using it to store the current row's errors at pixel columns not yet
++ * processed, but the next row's errors at columns already processed. We
++ * need only a few extra variables to hold the errors immediately around the
++ * current column. (If we are lucky, those variables are in registers, but
++ * even if not, they're probably cheaper to access than array elements are.)
++ *
++ * We provide (#columns + 2) entries per component; the extra entry at each
++ * end saves us from special-casing the first and last pixels.
++ */
++
++typedef INT16 FSERROR; /* 16 bits should be enough */
++typedef int LOCFSERROR; /* use 'int' for calculation temps */
++
++typedef struct { byte *colorset;
++ FSERROR *fserrors;
++ } FSBUF;
++
++/* Floyd-Steinberg initialization function.
++ *
++ * It is called 'fs2_init' since it's specialized for our purpose and
++ * could be embedded in a more general FS-package.
++ *
++ * Returns a malloced FSBUF pointer which has to be passed as first
++ * parameter to subsequent 'fs2_dither' calls.
++ * The FSBUF structure does not need to be referenced by the calling
++ * application, it can be treated from the app like a void pointer.
++ *
++ * The current implementation does only require to free() this returned
++ * pointer after processing.
++ *
++ * Returns NULL if malloc fails.
++ *
++ * NOTE: The FSBUF structure is designed to allow the 'fs2_dither'
++ * function to work with an *arbitrary* number of color components
++ * at runtime! This is an enhancement over the IJG code base :-).
++ * Only fs2_init() specifies the (maximum) number of components.
++ */
++
++static FSBUF *fs2_init(width)
++int width;
++{
++ FSBUF *fs;
++ FSERROR *p;
++
++ fs = (FSBUF *)
++ malloc(sizeof(FSBUF) * 3 + ((size_t)width + 2) * sizeof(FSERROR) * 3);
++ if (fs == 0) return fs;
++
++ fs[0].colorset = screen_set[0];
++ fs[1].colorset = screen_set[1];
++ fs[2].colorset = screen_set[2];
++
++ p = (FSERROR *)(fs + 3);
++ memset(p, 0, ((size_t)width + 2) * sizeof(FSERROR) * 3);
++
++ fs[0].fserrors = p;
++ fs[1].fserrors = p + 1;
++ fs[2].fserrors = p + 2;
++
++ return fs;
++}
++
++/* Floyd-Steinberg dithering function.
++ *
++ * NOTE:
++ * (1) The image data referenced by 'ptr' is *overwritten* (input *and*
++ * output) to allow more efficient implementation.
++ * (2) Alternate FS dithering is provided by the sign of 'nc'. Pass in
++ * a negative value for right-to-left processing. The return value
++ * provides the right-signed value for subsequent calls!
++ * (3) This particular implementation assumes *no* padding between lines!
++ * Adapt this if necessary.
++ */
++
++static int fs2_dither(fs, ptr, nc, num_rows, num_cols)
++FSBUF *fs;
++byte *ptr;
++int nc, num_rows, num_cols;
++{
++ int abs_nc, ci, row, col;
++ LOCFSERROR delta, cur, belowerr, bpreverr;
++ byte *dataptr, *colsetptr;
++ FSERROR *errorptr;
++
++ if ((abs_nc = nc) < 0) abs_nc = -abs_nc;
++ for (row = 0; row < num_rows; row++) {
++ for (ci = 0; ci < abs_nc; ci++, ptr++) {
++ dataptr = ptr;
++ colsetptr = fs[ci].colorset;
++ errorptr = fs[ci].fserrors;
++ if (nc < 0) {
++ dataptr += (num_cols - 1) * abs_nc;
++ errorptr += (num_cols + 1) * abs_nc;
++ }
++ cur = belowerr = bpreverr = 0;
++ for (col = 0; col < num_cols; col++) {
++ cur += errorptr[nc];
++ cur += 8; cur >>= 4;
++ if ((cur += *dataptr) < 0) cur = 0;
++ else if (cur > 255) cur = 255;
++ *dataptr = cur & 0xff;
++ cur -= colsetptr[cur];
++ delta = cur << 1; cur += delta;
++ bpreverr += cur; cur += delta;
++ belowerr += cur; cur += delta;
++ errorptr[0] = (FSERROR)bpreverr;
++ bpreverr = belowerr;
++ belowerr = delta >> 1;
++ dataptr += nc;
++ errorptr += nc;
++ }
++ errorptr[0] = (FSERROR)bpreverr;
++ }
++ ptr += (num_cols - 1) * abs_nc;
++ nc = -nc;
++ }
++ return nc;
++}
++
++#endif /* ENABLE_FIXPIX_SMOOTH */
++
+
+ #define DO_CROP 0
+ #define DO_ZOOM 1
+@@ -74,7 +347,7 @@
+ GenerateEpic(w,h);
+ CreateXImage();
+ }
+-
++
+
+
+ /********************************************/
+@@ -90,15 +363,15 @@
+
+ cp = cpic;
+ bperpix = (picType == PIC8) ? 1 : 3;
+-
++
+ for (i=0; i<cHIGH; i++) {
+ if ((i&63)==0) WaitCursor();
+ pp = pic + (i+cYOFF) * (pWIDE*bperpix) + (cXOFF * bperpix);
+- for (j=0; j<cWIDE*bperpix; j++)
++ for (j=0; j<cWIDE*bperpix; j++)
+ *cp++ = *pp++;
+ }
+ }
+-
++
+
+
+ /***********************************/
+@@ -112,10 +385,10 @@
+ clptr = NULL; cxarrp = NULL; cy = 0; /* shut up compiler */
+
+ SetISTR(ISTR_EXPAND, "%.5g%% x %.5g%% (%d x %d)",
+- 100.0 * ((float) w) / cWIDE,
++ 100.0 * ((float) w) / cWIDE,
+ 100.0 * ((float) h) / cHIGH, w, h);
+
+- if (DEBUG)
++ if (DEBUG)
+ fprintf(stderr,"GenerateEpic(%d,%d) eSIZE=%d,%d cSIZE=%d,%d epicode=%d\n",
+ w,h,eWIDE,eHIGH,cWIDE,cHIGH, epicMode);
+
+@@ -124,7 +397,7 @@
+ eWIDE = w; eHIGH = h;
+
+
+- if (epicMode == EM_SMOOTH) {
++ if (epicMode == EM_SMOOTH) {
+ if (picType == PIC8) {
+ epic = SmoothResize(cpic, cWIDE, cHIGH, eWIDE, eHIGH,
+ rMap,gMap,bMap, rdisp,gdisp,bdisp, numcols);
+@@ -143,7 +416,7 @@
+
+
+ /* generate a 'raw' epic, as we'll need it for ColorDither if EM_DITH */
+-
++
+ if (eWIDE==cWIDE && eHIGH==cHIGH) { /* 1:1 expansion. point epic at cpic */
+ epic = cpic;
+ }
+@@ -163,13 +436,13 @@
+ /* the scaling routine. not really all that scary after all... */
+
+ /* OPTIMIZATON: Malloc an eWIDE array of ints which will hold the
+- values of the equation px = (pWIDE * ex) / eWIDE. Faster than doing
++ values of the equation px = (pWIDE * ex) / eWIDE. Faster than doing
+ a mul and a div for every point in picture */
+
+ cxarr = (int *) malloc(eWIDE * sizeof(int));
+ if (!cxarr) FatalError("unable to allocate cxarr");
+
+- for (ex=0; ex<eWIDE; ex++)
++ for (ex=0; ex<eWIDE; ex++)
+ cxarr[ex] = bperpix * ((cWIDE * ex) / eWIDE);
+
+ elptr = epptr = epic;
+@@ -182,7 +455,7 @@
+ clptr = cpic + (cy * cWIDE * bperpix);
+
+ if (bperpix == 1) {
+- for (ex=0, cxarrp = cxarr; ex<eWIDE; ex++, epptr++)
++ for (ex=0, cxarrp = cxarr; ex<eWIDE; ex++, epptr++)
+ *epptr = clptr[*cxarrp++];
+ }
+ else {
+@@ -190,7 +463,7 @@
+
+ for (ex=0, cxarrp = cxarr; ex<eWIDE; ex++,cxarrp++) {
+ cp = clptr + *cxarrp;
+- for (j=0; j<bperpix; j++)
++ for (j=0; j<bperpix; j++)
+ *epptr++ = *cp++;
+ }
+ }
+@@ -203,7 +476,7 @@
+ if (picType == PIC8 && epicMode == EM_DITH) {
+ byte *tmp;
+
+- tmp = DoColorDither(NULL, epic, eWIDE, eHIGH, rMap,gMap,bMap,
++ tmp = DoColorDither(NULL, epic, eWIDE, eHIGH, rMap,gMap,bMap,
+ rdisp,gdisp,bdisp, numcols);
+ if (tmp) { /* success */
+ FreeEpic();
+@@ -214,7 +487,7 @@
+ }
+ }
+ }
+-
++
+
+
+ /***********************************/
+@@ -233,7 +506,7 @@
+ static void do_zoom(mx,my)
+ int mx,my;
+ {
+- int i,w,h,x,y,x2,y2;
++ int i;
+ int rx,ry,rx2,ry2, orx, ory, orw, orh;
+ int px,py,pw,ph,opx,opy,opw,oph,m;
+ Window rW, cW; unsigned int mask; int rtx, rty;
+@@ -254,10 +527,10 @@
+ while (1) {
+ if (!XQueryPointer(theDisp,mainW,&rW,&cW,&rtx,&rty,
+ &mx,&my,&mask)) continue;
+-
++
+ if (!(mask & ControlMask)) break;
+ if (!(mask & Button1Mask)) break; /* button released */
+-
++
+ compute_zoom_rect(mx, my, &px, &py, &pw, &ph);
+ if (px!=opx || py!=opy) {
+ XDrawRectangle(theDisp,mainW,theGC, orx,ory, (u_int)orw, (u_int)orh);
+@@ -283,7 +556,7 @@
+ XSetPlaneMask(theDisp, theGC, AllPlanes);
+ return;
+ }
+-
++
+
+ for (i=0; i<4; i++) {
+ XDrawRectangle(theDisp, mainW, theGC, orx, ory, (u_int) orw, (u_int) orh);
+@@ -297,7 +570,7 @@
+ /* if rectangle is *completely* outside epic, don't zoom */
+ if (orx+orw<0 || ory+orh<0 || orx>=eWIDE || ory>=eHIGH) return;
+
+-
++
+ crop1(opx, opy, opw, oph, DO_ZOOM);
+ }
+
+@@ -306,15 +579,15 @@
+ static void compute_zoom_rect(x, y, px, py, pw, ph)
+ int x, y, *px, *py, *pw, *ph;
+ {
+- /* given a mouse pos (in epic coords), return x,y,w,h PIC coords for
+- a 'zoom in by 2x' rectangle to be tracked. The rectangle stays
++ /* given a mouse pos (in epic coords), return x,y,w,h PIC coords for
++ a 'zoom in by 2x' rectangle to be tracked. The rectangle stays
+ completely within 'pic' boundaries, and moves in 'pic' increments */
+
+ CoordE2P(x, y, px, py);
+- *pw = (cWIDE+1)/2;
++ *pw = (cWIDE+1)/2;
+ *ph = (cHIGH+1)/2;
+
+- *px = *px - (*pw)/2;
++ *px = *px - (*pw)/2;
+ *py = *py - (*ph)/2;
+
+ RANGE(*px, 0, pWIDE - *pw);
+@@ -327,7 +600,7 @@
+ {
+ int x,y,w,h, x2,y2, ex,ey,ew,eh;
+
+- /* compute a cropping rectangle (in pic coordinates) that's twice
++ /* compute a cropping rectangle (in pic coordinates) that's twice
+ the size of eWIDE,eHIGH, centered around eWIDE/2, eHIGH/2, but no
+ larger than pWIDE,PHIGH */
+
+@@ -362,7 +635,7 @@
+ int i, ox,oy,offx,offy, rw,rh, px, py, dx, dy,m;
+ Window rW, cW; unsigned int mask; int rx, ry;
+
+- offx = ox = mx;
++ offx = ox = mx;
+ offy = oy = my;
+ rw = eWIDE-1; rh = eHIGH-1;
+ m = 0;
+@@ -374,50 +647,50 @@
+
+ /* track until Button2 is released */
+ while (1) {
+- if (!XQueryPointer(theDisp, mainW, &rW, &cW, &rx, &ry,
++ if (!XQueryPointer(theDisp, mainW, &rW, &cW, &rx, &ry,
+ &mx, &my, &mask)) continue;
+ if (!(mask & ControlMask)) break; /* cancelled */
+ if (!(mask & Button2Mask)) break; /* button released */
+-
++
+ if (mask & ShiftMask) { /* constrain mx,my to horiz or vertical */
+ if (abs(mx-offx) > abs(my-offy)) my = offy;
+ else mx = offx;
+ }
+-
++
+ do_pan_calc(offx, offy, &mx, &my);
+-
++
+ if (mx!=ox || my!=oy) {
+- XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
++ XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
+ (u_int) rw, (u_int) rh);
+- XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
++ XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
+ (u_int) rw, (u_int) rh);
+ ox = mx; oy = my;
+ }
+ else {
+- XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
++ XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
+ (u_int) rw, (u_int) rh);
+ m = (m+1)&7;
+ XSetPlaneMask(theDisp, theGC, xorMasks[m]);
+- XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
++ XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
+ (u_int) rw, (u_int) rh);
+ XFlush(theDisp);
+ Timer(100);
+ }
+ }
+-
++
+ mx = ox; my = oy; /* in case mx,my changed on button release */
+
+ if (!(mask & ControlMask)) { /* cancelled */
+- XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
++ XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
+ (u_int) rw, (u_int) rh);
+ XSetFunction(theDisp, theGC, GXcopy);
+ XSetPlaneMask(theDisp, theGC, AllPlanes);
+ return;
+ }
+-
++
+
+ for (i=0; i<4; i++) {
+- XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
++ XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
+ (u_int) rw, (u_int) rh);
+ XFlush(theDisp);
+ Timer(100);
+@@ -430,7 +703,7 @@
+ dx = px - cXOFF; dy = py - cYOFF;
+
+ if (dx==0 && dy==0) { /* didn't pan anywhere */
+- XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
++ XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
+ (u_int) rw, (u_int) rh);
+ XSetFunction(theDisp, theGC, GXcopy);
+ XSetPlaneMask(theDisp, theGC, AllPlanes);
+@@ -485,7 +758,7 @@
+ /***********************************/
+ void Crop()
+ {
+- int i, x, y, w, h;
++ int x, y, w, h;
+
+ if (!HaveSelection()) return;
+
+@@ -499,8 +772,7 @@
+ static void crop1(x,y,w,h,zm)
+ int x,y,w,h,zm;
+ {
+- int i,j,oldew,oldeh,oldcx,oldcy;
+- byte *cp, *pp;
++ int oldew,oldeh,oldcx,oldcy;
+
+ oldcx = cXOFF; oldcy = cYOFF;
+ oldew = eWIDE; oldeh = eHIGH;
+@@ -529,7 +801,7 @@
+ if (cpic == pic) return; /* not cropped */
+
+ BTSetActive(&but[BUNCROP],0);
+-
++
+ if (epicMode == EM_SMOOTH) { /* turn off smoothing */
+ epicMode = EM_RAW; SetEpicMode();
+ }
+@@ -538,7 +810,7 @@
+ FreeEpic();
+ if (cpic && cpic != pic) free(cpic);
+ cpic = NULL;
+-
++
+
+ w = (pWIDE * eWIDE) / cWIDE; h = (pHIGH * eHIGH) / cHIGH;
+ if (w>maxWIDE || h>maxHIGH) {
+@@ -566,7 +838,7 @@
+ WUnCrop();
+ SetCropString();
+ }
+-
++
+
+ /***********************************/
+ void AutoCrop()
+@@ -583,7 +855,7 @@
+ WCrop(eWIDE, eHIGH, cXOFF-oldcx, cYOFF-oldcy);
+ }
+ }
+-
++
+ SetCursors(-1);
+ }
+
+@@ -650,7 +922,7 @@
+
+ /* do the actual cropping */
+ if (cleft || ctop || cbot || cright) {
+- DoCrop(cXOFF+cleft, cYOFF+ctop,
++ DoCrop(cXOFF+cleft, cYOFF+ctop,
+ cWIDE-(cleft+cright), cHIGH-(ctop+cbot));
+ return 1;
+ }
+@@ -673,7 +945,7 @@
+ # define NEIGHBOR 16 /* within 6% of neighboring pixels */
+ # define MISSPCT 6 /* and up to 6% that don't match */
+ # define inabsrange(a,n) ( (a) < n && (a) > -n )
+-
++
+
+ if (cHIGH<3 || cWIDE<3) return 0;
+
+@@ -739,7 +1011,7 @@
+ while (cleft + 1 < cWIDE) { /* see if we can delete this line */
+ oldr = bgR; oldg = bgG; oldb = bgB;
+
+- for (i=0, misses=0, cp1=cp; i<cHIGH && misses<maxmiss;
++ for (i=0, misses=0, cp1=cp; i<cHIGH && misses<maxmiss;
+ i++, cp1 += (cWIDE * 3)) {
+ r=cp1[0]-bgR; g=cp1[1]-bgG; b=cp1[2]-bgB;
+ R=cp1[0]-oldr; G=cp1[1]-oldg; B=cp1[2]-oldb;
+@@ -763,7 +1035,7 @@
+ while (cleft + cright + 1 < cWIDE) { /* see if we can delete this line */
+ oldr = bgR; oldg = bgG; oldb = bgB;
+
+- for (i=0, misses=0, cp1=cp; i<cHIGH && misses<maxmiss;
++ for (i=0, misses=0, cp1=cp; i<cHIGH && misses<maxmiss;
+ i++, cp1 += (cWIDE*3)) {
+ r=cp1[0]-bgR; g=cp1[1]-bgG; b=cp1[2]-bgB;
+ R=cp1[0]-oldr; G=cp1[1]-oldg; B=cp1[2]-oldb;
+@@ -784,8 +1056,8 @@
+ if (cleft || ctop || cbot || cright) {
+ if (cWIDE - (cleft + cright) < 1 ||
+ cHIGH - (ctop + cbot ) < 1) return 0; /* sanity check */
+-
+- DoCrop(cXOFF+cleft, cYOFF+ctop,
++
++ DoCrop(cXOFF+cleft, cYOFF+ctop,
+ cWIDE-(cleft+cright), cHIGH-(ctop+cbot));
+ return 1;
+ }
+@@ -802,7 +1074,7 @@
+ and sticks likely values into eWIDE,eHIGH, assuming you wanted to
+ crop. epic is not regnerated (but is freed) */
+
+- int i, j, k, bperpix;
++ int i, j, bperpix;
+ byte *cp, *pp;
+ double expw, exph;
+
+@@ -837,7 +1109,7 @@
+ else {
+ /* at this point, we want to generate cpic, which will contain a
+ cWIDE*cHIGH subsection of 'pic', top-left at cXOFF,cYOFF */
+-
++
+ cpic = (byte *) malloc((size_t) (cWIDE * cHIGH * bperpix));
+
+ if (cpic == NULL) {
+@@ -852,7 +1124,7 @@
+ cp = cpic;
+ for (i=0; i<cHIGH; i++) {
+ pp = pic + (i+cYOFF) * (pWIDE*bperpix) + (cXOFF * bperpix);
+- for (j=0; j<cWIDE*bperpix; j++)
++ for (j=0; j<cWIDE*bperpix; j++)
+ *cp++ = *pp++;
+ }
+ }
+@@ -861,7 +1133,7 @@
+ SetCropString();
+ BTSetActive(&but[BUNCROP], (cpic!=pic));
+
+- eWIDE = (int) (cWIDE * expw);
++ eWIDE = (int) (cWIDE * expw);
+ eHIGH = (int) (cHIGH * exph);
+
+ if (eWIDE>maxWIDE || eHIGH>maxHIGH) { /* make 'normal' size */
+@@ -869,7 +1141,7 @@
+ double r,wr,hr;
+ wr = ((double) cWIDE) / maxWIDE;
+ hr = ((double) cHIGH) / maxHIGH;
+-
++
+ r = (wr>hr) ? wr : hr; /* r is the max(wr,hr) */
+ eWIDE = (int) ((cWIDE / r) + 0.5);
+ eHIGH = (int) ((cHIGH / r) + 0.5);
+@@ -906,12 +1178,12 @@
+ int dir;
+ {
+ int i;
+-
++
+ /* dir=0: 90 degrees clockwise, else 90 degrees counter-clockwise */
+ WaitCursor();
+-
++
+ RotatePic(pic, picType, &pWIDE, &pHIGH, dir);
+-
++
+ /* rotate clipped version and modify 'clip' coords */
+ if (cpic != pic && cpic != NULL) {
+ if (!dir) {
+@@ -928,7 +1200,7 @@
+ RotatePic(cpic, picType, &cWIDE, &cHIGH,dir);
+ }
+ else { cWIDE = pWIDE; cHIGH = pHIGH; }
+-
++
+ /* rotate expanded version */
+ if (epic != cpic && epic != NULL) {
+ WaitCursor();
+@@ -940,7 +1212,7 @@
+ SetISTR(ISTR_RES,"%d x %d",pWIDE,pHIGH);
+
+ SetISTR(ISTR_EXPAND, "%.5g%% x %.5g%% (%d x %d)",
+- 100.0 * ((float) eWIDE) / cWIDE,
++ 100.0 * ((float) eWIDE) / cWIDE,
+ 100.0 * ((float) eHIGH) / cHIGH, eWIDE, eHIGH);
+ }
+
+@@ -951,7 +1223,7 @@
+ int *wp, *hp;
+ int ptype, dir;
+ {
+- /* rotates a w*h array of bytes 90 deg clockwise (dir=0)
++ /* rotates a w*h array of bytes 90 deg clockwise (dir=0)
+ or counter-clockwise (dir != 0). swaps w and h */
+
+ byte *pic1, *pix1, *pix;
+@@ -960,7 +1232,7 @@
+
+ bperpix = (ptype == PIC8) ? 1 : 3;
+
+- w = *wp; h = *hp;
++ w = *wp; h = *hp;
+ pix1 = pic1 = (byte *) malloc((size_t) (w*h*bperpix));
+ if (!pic1) FatalError("Not enough memory to rotate!");
+
+@@ -968,15 +1240,15 @@
+ if (dir==0) {
+ for (i=0; i<w; i++) { /* CW */
+ if (bperpix == 1) {
+- for (j=h-1, pix=pic+(h-1)*w + i; j>=0; j--, pix1++, pix-=w)
++ for (j=h-1, pix=pic+(h-1)*w + i; j>=0; j--, pix1++, pix-=w)
+ *pix1 = *pix;
+ }
+ else {
+ int bperlin = w*bperpix;
+ int k;
+-
+- for (j=h-1, pix=pic+(h-1)*w*bperpix + i*bperpix;
+- j>=0; j--, pix -= bperlin)
++
++ for (j=h-1, pix=pic+(h-1)*w*bperpix + i*bperpix;
++ j>=0; j--, pix -= bperlin)
+ for (k=0; k<bperpix; k++) *pix1++ = pix[k];
+ }
+ }
+@@ -984,25 +1256,25 @@
+ else {
+ for (i=w-1; i>=0; i--) { /* CCW */
+ if (bperpix == 1) {
+- for (j=0, pix=pic+i; j<h; j++, pix1++, pix+=w)
++ for (j=0, pix=pic+i; j<h; j++, pix1++, pix+=w)
+ *pix1 = *pix;
+ }
+ else {
+ int k;
+ int bperlin = w*bperpix;
+-
+- for (j=0, pix=pic+i*bperpix; j<h; j++, pix+=bperlin)
++
++ for (j=0, pix=pic+i*bperpix; j<h; j++, pix+=bperlin)
+ for (k=0; k<bperpix; k++) *pix1++ = pix[k];
+ }
+ }
+ }
+-
+-
++
++
+ /* copy the rotated buffer into the original buffer */
+ xvbcopy((char *) pic1, (char *) pic, (size_t) (w*h*bperpix));
+-
++
+ free(pic1);
+-
++
+ /* swap w and h */
+ *wp = h; *hp = w;
+ }
+@@ -1017,7 +1289,7 @@
+ *
+ * Note: flips pic, cpic, and epic. Doesn't touch Ximage, nor does it draw
+ */
+-
++
+ WaitCursor();
+
+ if (HaveSelection()) { /* only flip selection region */
+@@ -1026,7 +1298,7 @@
+ }
+
+ FlipPic(pic, pWIDE, pHIGH, dir);
+-
++
+ /* flip clipped version */
+ if (cpic && cpic != pic) {
+ WaitCursor();
+@@ -1048,21 +1320,21 @@
+ int dir;
+ {
+ /* flips a w*h array of bytes horizontally (dir=0) or vertically (dir!=0) */
+-
++
+ byte *plin;
+ int i,j,k,l,bperpix,bperlin;
+-
++
+ bperpix = (picType == PIC8) ? 1 : 3;
+ bperlin = w * bperpix;
+-
++
+ if (dir==0) { /* horizontal flip */
+ byte *leftp, *rightp;
+-
++
+ for (i=0; i<h; i++) {
+ plin = pic + i*bperlin;
+ leftp = plin;
+ rightp = plin + (w-1)*bperpix;
+-
++
+ for (j=0; j<w/2; j++, rightp -= (2*bperpix)) {
+ for (l=0; l<bperpix; l++, leftp++, rightp++) {
+ k = *leftp; *leftp = *rightp; *rightp = k;
+@@ -1070,14 +1342,14 @@
+ }
+ }
+ }
+-
++
+ else { /* vertical flip */
+ byte *topp, *botp;
+-
++
+ for (i=0; i<w; i++) {
+ topp = pic + i*bperpix;
+ botp = pic + (h-1)*bperlin + i*bperpix;
+-
++
+ for (j=0; j<h/2; j++, topp+=(w-1)*bperpix, botp-=(w+1)*bperpix) {
+ for (l=0; l<bperpix; l++, topp++, botp++) {
+ k = *topp; *topp = *botp; *botp = k;
+@@ -1093,26 +1365,26 @@
+ int dir;
+ {
+ /* flips selected area in 'pic', regens cpic and epic appropriately */
+-
++
+ int x,y,w,h;
+ byte *plin;
+ int i,j,k,l,bperpix;
+-
++
+ GetSelRCoords(&x,&y,&w,&h);
+ CropRect2Rect(&x,&y,&w,&h, 0,0,pWIDE,pHIGH);
+ if (w<1) w=1;
+ if (h<1) h=1;
+-
++
+ bperpix = (picType == PIC8) ? 1 : 3;
+-
++
+ if (dir==0) { /* horizontal flip */
+ byte *leftp, *rightp;
+-
++
+ for (i=y; i<y+h; i++) {
+ plin = pic + (i*pWIDE + x) * bperpix;
+ leftp = plin;
+ rightp = plin + (w-1)*bperpix;
+-
++
+ for (j=0; j<w/2; j++, rightp -= (2*bperpix)) {
+ for (l=0; l<bperpix; l++, leftp++, rightp++) {
+ k = *leftp; *leftp = *rightp; *rightp = k;
+@@ -1120,14 +1392,14 @@
+ }
+ }
+ }
+-
++
+ else { /* vertical flip */
+ byte *topp, *botp;
+-
++
+ for (i=x; i<x+w; i++) {
+ topp = pic + ( y * pWIDE + i) * bperpix;
+ botp = pic + ((y+h-1) * pWIDE + i) * bperpix;
+-
++
+ for (j=0; j<h/2; j++, topp+=(pWIDE-1)*bperpix, botp-=(pWIDE+1)*bperpix) {
+ for (l=0; l<bperpix; l++, topp++, botp++) {
+ k = *topp; *topp = *botp; *botp = k;
+@@ -1139,22 +1411,22 @@
+ GenerateCpic();
+ GenerateEpic(eWIDE,eHIGH);
+ }
+-
++
+
+ /************************/
+ void InstallNewPic()
+ {
+ /* given a new pic and colormap, (or new 24-bit pic) installs everything,
+ regens cpic and epic, and redraws image */
+-
++
+ /* toss old cpic and epic, if any */
+ FreeEpic();
+ if (cpic && cpic != pic) free(cpic);
+ cpic = NULL;
+-
++
+ /* toss old colors, and allocate new ones */
+ NewPicGetColors(0,0);
+-
++
+ /* generate cpic,epic,theImage from new 'pic' */
+ crop1(cXOFF, cYOFF, cWIDE, cHIGH, DO_ZOOM);
+ HandleDispMode();
+@@ -1166,15 +1438,15 @@
+ void DrawEpic()
+ {
+ /* given an 'epic', builds a new Ximage, and draws it. Basically
+- called whenever epic is changed, or whenever color allocation
+- changes (ie, the created X image will look different for the
++ called whenever epic is changed, or whenever color allocation
++ changes (ie, the created X image will look different for the
+ same epic) */
+-
++
+ CreateXImage();
+
+ if (useroot) MakeRootPic();
+ else DrawWindow(0,0,eWIDE,eHIGH);
+-
++
+ if (HaveSelection()) DrawSelection(0);
+ }
+
+@@ -1189,7 +1461,7 @@
+ if (pic) free(pic);
+ xvDestroyImage(theImage); theImage = NULL;
+ pic = egampic = epic = cpic = NULL;
+-
++
+ if (picComments) free(picComments);
+ picComments = (char *) NULL;
+ ChangeCommentText();
+@@ -1203,7 +1475,7 @@
+ byte *pic824, *rmap, *gmap, *bmap;
+ int ptype, wide, high;
+ {
+- /* does floyd-steinberg ditherizing algorithm.
++ /* does floyd-steinberg ditherizing algorithm.
+ *
+ * takes a wide*high input image, of type 'ptype' (PIC8, PIC24)
+ * (if PIC8, colormap is specified by rmap,gmap,bmap)
+@@ -1212,14 +1484,14 @@
+ *
+ * Note: this algorithm is *only* used when running on a 1-bit display
+ */
+-
++
+ register byte pix8, bit;
+ int *thisline, *nextline;
+ int *thisptr, *nextptr, *tmpptr;
+ int i, j, err, bperpix, bperln, order;
+ byte *pp, *image, w1, b1, w8, b8, rgb[256];
+-
+-
++
++
+ if (ptype == PIC8) { /* monoify colormap */
+ for (i=0; i<256; i++)
+ rgb[i] = MONO(rmap[i], gmap[i], bmap[i]);
+@@ -1234,7 +1506,7 @@
+
+ thisline = (int *) malloc(wide * sizeof(int));
+ nextline = (int *) malloc(wide * sizeof(int));
+- if (!thisline || !nextline)
++ if (!thisline || !nextline)
+ FatalError("ran out of memory in floydDitherize1()\n");
+
+
+@@ -1249,10 +1521,10 @@
+ *tmpptr++ = fsgamcr[rgb[*pp]];
+ }
+
+-
++
+ w1 = white&0x1; b1=black&0x1;
+ w8 = w1<<7; b8 = b1<<7; /* b/w bit in high bit */
+-
++
+
+ for (i=0; i<high; i++) {
+ if ((i&0x3f) == 0) WaitCursor();
+@@ -1326,7 +1598,7 @@
+
+
+ /************************/
+-byte *FSDither(inpic, intype, w, h, rmap, gmap, bmap,
++byte *FSDither(inpic, intype, w, h, rmap, gmap, bmap,
+ bval, wval)
+ byte *inpic, *rmap, *gmap, *bmap;
+ int w,h, intype, bval, wval;
+@@ -1338,14 +1610,21 @@
+ * and 'wval' as the 'black' and 'white' pixel values, respectively
+ */
+
+- int i, j, err, w1, h1;
++ int i, j, err, w1, h1, npixels, linebufsize;
+ byte *pp, *outpic, rgb[256];
+ int *thisline, *nextline, *thisptr, *nextptr, *tmpptr;
+
+
+- outpic = (byte *) malloc((size_t) (w * h));
++ npixels = w * h;
++ linebufsize = w * sizeof(int);
++ if (w <= 0 || h <= 0 || npixels/w != h || linebufsize/w != sizeof(int)) {
++ SetISTR(ISTR_WARNING, "Invalid image dimensions for dithering");
++ return (byte *)NULL;
++ }
++
++ outpic = (byte *) malloc((size_t) npixels);
+ if (!outpic) return outpic;
+-
++
+
+ if (intype == PIC8) { /* monoify colormap */
+ for (i=0; i<256; i++)
+@@ -1353,9 +1632,9 @@
+ }
+
+
+- thisline = (int *) malloc(w * sizeof(int));
+- nextline = (int *) malloc(w * sizeof(int));
+- if (!thisline || !nextline)
++ thisline = (int *) malloc(linebufsize);
++ nextline = (int *) malloc(linebufsize);
++ if (!thisline || !nextline)
+ FatalError("ran out of memory in FSDither()\n");
+
+
+@@ -1394,13 +1673,13 @@
+ pp = outpic + i * w;
+ thisptr = thisline; nextptr = nextline;
+
+- if (i&1 == 0) { /* go right */
++ if ((i&1) == 0) { /* go right */
+ for (j=0; j<w; j++, pp++, thisptr++, nextptr++) {
+ if (*thisptr<128) { err = *thisptr; *pp = (byte) bval; }
+ else { err = *thisptr-255; *pp = (byte) wval; }
+-
++
+ if (j<w1) thisptr[1] += ((err*7)/16);
+-
++
+ if (i<h1) {
+ nextptr[0] += ((err*5)/16);
+ if (j>0) nextptr[-1] += ((err*3)/16);
+@@ -1414,9 +1693,9 @@
+ for (j=w-1; j>=0; j--, pp--, thisptr--, nextptr--) {
+ if (*thisptr<128) { err = *thisptr; *pp = (byte) bval; }
+ else { err = *thisptr-255; *pp = (byte) wval; }
+-
++
+ if (j>0) thisptr[-1] += ((err*7)/16);
+-
++
+ if (i<h1) {
+ nextptr[0] += ((err*5)/16);
+ if (j>0) nextptr[-1] += (err/16);
+@@ -1449,8 +1728,8 @@
+ }
+
+
+- if (picType == PIC8)
+- theImage = Pic8ToXImage(epic, (u_int) eWIDE, (u_int) eHIGH,
++ if (picType == PIC8)
++ theImage = Pic8ToXImage(epic, (u_int) eWIDE, (u_int) eHIGH,
+ cols, rMap, gMap, bMap);
+ else if (picType == PIC24)
+ theImage = Pic24ToXImage(egampic, (u_int) eWIDE, (u_int) eHIGH);
+@@ -1482,7 +1761,7 @@
+
+ if (!pic8) return xim; /* shouldn't happen */
+
+- if (DEBUG > 1)
++ if (DEBUG > 1)
+ fprintf(stderr,"Pic8ToXImage(): creating a %dx%d Ximage, %d bits deep\n",
+ wide, high, dispDEEP);
+
+@@ -1491,7 +1770,7 @@
+ if (dispDEEP == 1) {
+ byte *imagedata;
+
+- xim = XCreateImage(theDisp, theVisual, dispDEEP, XYPixmap, 0, NULL,
++ xim = XCreateImage(theDisp, theVisual, dispDEEP, XYPixmap, 0, NULL,
+ wide, high, 32, 0);
+ if (!xim) FatalError("couldn't create xim!");
+
+@@ -1506,11 +1785,11 @@
+
+ /* if ncols==0, do a 'black' and 'white' dither */
+ if (ncols == 0) {
+- /* note that if dispDEEP > 8, dithpic will just have '0' and '1' instead
++ /* note that if dispDEEP > 8, dithpic will just have '0' and '1' instead
+ of 'black' and 'white' */
+
+ dithpic = FSDither(pic8, PIC8, (int) wide, (int) high, rmap, gmap, bmap,
+- (int) ((dispDEEP <= 8) ? black : 0),
++ (int) ((dispDEEP <= 8) ? black : 0),
+ (int) ((dispDEEP <= 8) ? white : 1));
+ }
+
+@@ -1521,14 +1800,14 @@
+ case 8: {
+ byte *imagedata, *ip, *pp;
+ int j, imWIDE, nullCount;
+-
++
+ nullCount = (4 - (wide % 4)) & 0x03; /* # of padding bytes per line */
+ imWIDE = wide + nullCount;
+-
++
+ /* Now create the image data - pad each scanline as necessary */
+ imagedata = (byte *) malloc((size_t) (imWIDE * high));
+ if (!imagedata) FatalError("couldn't malloc imagedata");
+-
++
+ pp = (dithpic) ? dithpic : pic8;
+
+ for (i=0, ip=imagedata; i<high; i++) {
+@@ -1543,9 +1822,9 @@
+
+ for (j=0; j<nullCount; j++, ip++) *ip = 0;
+ }
+-
++
+ xim = XCreateImage(theDisp,theVisual,dispDEEP,ZPixmap,0,
+- (char *) imagedata, wide, high,
++ (char *) imagedata, wide, high,
+ 32, imWIDE);
+ if (!xim) FatalError("couldn't create xim!");
+ }
+@@ -1554,13 +1833,13 @@
+
+
+ /*********************************/
+-
++
+ case 4: {
+ byte *imagedata, *ip, *pp;
+ byte *lip;
+ int bperline, half, j;
+
+- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
++ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
+ wide, high, 8, 0);
+ if (!xim) FatalError("couldn't create xim!");
+
+@@ -1569,7 +1848,7 @@
+ if (!imagedata) FatalError("couldn't malloc imagedata");
+ xim->data = (char *) imagedata;
+
+-
++
+ pp = (dithpic) ? dithpic : pic8;
+
+ if (xim->bits_per_pixel == 4) {
+@@ -1601,20 +1880,20 @@
+ else FatalError("This display's too bizarre. Can't create XImage.");
+ }
+ break;
+-
++
+
+ /*********************************/
+-
++
+ case 2: { /* by M.Kossa@frec.bull.fr (Marc Kossa) */
+ /* MSBFirst mods added by dale@ntg.com (Dale Luck) */
+- /* additional fixes by evol@infko.uni-koblenz.de
++ /* additional fixes by evol@infko.uni-koblenz.de
+ (Randolf Werner) for NeXT 2bit grayscale with MouseX */
+
+ byte *imagedata, *ip, *pp;
+ byte *lip;
+ int bperline, half, j;
+
+- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
++ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
+ wide, high, 8, 0);
+ if (!xim) FatalError("couldn't create xim!");
+
+@@ -1674,11 +1953,11 @@
+ *ip = (dithpic) ? *pp : (byte) xcolors[*pp];
+ }
+ }
+-
++
+ else FatalError("This display's too bizarre. Can't create XImage.");
+ }
+ break;
+-
++
+
+ /*********************************/
+
+@@ -1686,8 +1965,8 @@
+ case 6: {
+ byte *imagedata, *ip, *pp;
+ int bperline;
+-
+- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
++
++ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
+ wide, high, 8, 0);
+ if (!xim) FatalError("couldn't create xim!");
+
+@@ -1707,17 +1986,16 @@
+ }
+ }
+ break;
+-
++
+
+ /*********************************/
+
+ case 12:
+ case 15:
+ case 16: {
+- unsigned short *imagedata, *ip;
+- byte *pp;
++ byte *imagedata, *ip, *pp;
+
+- imagedata = (unsigned short *) malloc((size_t) (2*wide*high));
++ imagedata = (byte *) malloc((size_t) (2*wide*high));
+ if (!imagedata) FatalError("couldn't malloc imagedata");
+
+ xim = XCreateImage(theDisp,theVisual,dispDEEP,ZPixmap,0,
+@@ -1736,10 +2014,12 @@
+ if (xim->byte_order == MSBFirst) {
+ for (i=wide*high, ip=imagedata; i>0; i--,pp++) {
+ if (((i+1)&0x1ffff) == 0) WaitCursor();
+- if (dithpic) {
+- *ip++ = ((*pp) ? white : black) & 0xffff;
+- }
+- else *ip++ = xcolors[*pp] & 0xffff;
++
++ if (dithpic) xcol = ((*pp) ? white : black) & 0xffff;
++ else xcol = xcolors[*pp] & 0xffff;
++
++ *ip++ = (xcol>>8) & 0xff;
++ *ip++ = (xcol) & 0xff;
+ }
+ }
+ else { /* LSBFirst */
+@@ -1749,14 +2029,14 @@
+ if (dithpic) xcol = ((*pp) ? white : black) & 0xffff;
+ else xcol = xcolors[*pp];
+
+- /* WAS *ip++ = ((xcol>>8) & 0xff) | ((xcol&0xff) << 8); */
+- *ip++ = (unsigned short) (xcol);
++ *ip++ = (xcol) & 0xff;
++ *ip++ = (xcol>>8) & 0xff;
+ }
+ }
+ }
+ break;
+
+-
++
+ /*********************************/
+
+ case 24:
+@@ -1766,7 +2046,7 @@
+
+ imagedata = (byte *) malloc((size_t) (4*wide*high));
+ if (!imagedata) FatalError("couldn't malloc imagedata");
+-
++
+ xim = XCreateImage(theDisp,theVisual,dispDEEP,ZPixmap,0,
+ (char *) imagedata, wide, high, 32, 0);
+ if (!xim) FatalError("couldn't create xim!");
+@@ -1774,7 +2054,7 @@
+ do32 = (xim->bits_per_pixel == 32);
+
+ pp = (dithpic) ? dithpic : pic8;
+-
++
+ if (xim->byte_order == MSBFirst) {
+ for (i=0, ip=imagedata; i<high; i++) {
+ if (((i+1)&0x7f) == 0) WaitCursor();
+@@ -1809,11 +2089,11 @@
+
+
+ /*********************************/
+-
+- default:
+- sprintf(str,"no code to handle this display type (%d bits deep)",
++
++ default:
++ sprintf(dummystr,"no code to handle this display type (%d bits deep)",
+ dispDEEP);
+- FatalError(str);
++ FatalError(dummystr);
+ break;
+ }
+
+@@ -1823,7 +2103,7 @@
+ return(xim);
+ }
+
+-static int foo = 0;
++
+
+ /***********************************/
+ XImage *Pic24ToXImage(pic24, wide, high)
+@@ -1831,7 +2111,7 @@
+ unsigned int wide, high;
+ {
+ /*
+- * this has to do the none-to-simple bit of converting the data in 'pic24'
++ * This has to do the none-too-simple bit of converting the data in 'pic24'
+ * into something usable by X.
+ *
+ * There are two major approaches: if we're displaying on a TrueColor
+@@ -1840,12 +2120,12 @@
+ * variation of RGB the X device in question wants. No color allocation
+ * is involved.
+ *
+- * Alternately, if we're on a PseudoColor, GrayScale, StaticColor or
+- * StaticGray display, we're going to continue to operate in an 8-bit
++ * Alternately, if we're on a PseudoColor, GrayScale, StaticColor or
++ * StaticGray display, we're going to continue to operate in an 8-bit
+ * mode. (In that by this point, a 3/3/2 standard colormap has been
+ * created for our use (though all 256 colors may not be unique...), and
+ * we're just going to display the 24-bit picture by dithering with those
+- * colors
++ * colors.)
+ *
+ */
+
+@@ -1861,7 +2141,7 @@
+ if (dispDEEP == 1) {
+ byte *imagedata;
+
+- xim = XCreateImage(theDisp, theVisual, dispDEEP, XYPixmap, 0, NULL,
++ xim = XCreateImage(theDisp, theVisual, dispDEEP, XYPixmap, 0, NULL,
+ wide, high, 32, 0);
+ if (!xim) FatalError("couldn't create xim!");
+
+@@ -1883,33 +2163,17 @@
+ /* Non-ColorMapped Visuals: TrueColor, DirectColor */
+ /************************************************************************/
+
+- unsigned long r, g, b, rmask, gmask, bmask, xcol;
+- int rshift, gshift, bshift, bperpix, bperline, border, cshift;
+- int maplen;
++ unsigned long xcol;
++ int bperpix, bperline;
+ byte *imagedata, *lip, *ip, *pp;
+
+
+- /* compute various shifting constants that we'll need... */
+-
+- rmask = theVisual->red_mask;
+- gmask = theVisual->green_mask;
+- bmask = theVisual->blue_mask;
+-
+- rshift = 7 - highbit(rmask);
+- gshift = 7 - highbit(gmask);
+- bshift = 7 - highbit(bmask);
+-
+- maplen = theVisual->map_entries;
+- if (maplen>256) maplen=256;
+- cshift = 7 - highbit((u_long) (maplen-1));
+-
+ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
+ wide, high, 32, 0);
+ if (!xim) FatalError("couldn't create X image!");
+
+ bperline = xim->bytes_per_line;
+ bperpix = xim->bits_per_pixel;
+- border = xim->byte_order;
+
+ imagedata = (byte *) malloc((size_t) (high * bperline));
+ if (!imagedata) FatalError("couldn't malloc imagedata");
+@@ -1923,85 +2187,141 @@
+ FatalError(buf);
+ }
+
++ screen_init();
+
+- lip = imagedata; pp = pic24;
+- for (i=0; i<high; i++, lip+=bperline) {
+- for (j=0, ip=lip; j<wide; j++) {
+- r = *pp++; g = *pp++; b = *pp++;
+-
+- /* shift r,g,b so that high bit of 8-bit color specification is
+- * aligned with high bit of r,g,b-mask in visual,
+- * AND each component with its mask,
+- * and OR the three components together
+- */
+-
+- if (theVisual->class == DirectColor) {
+- r = (u_long) directConv[(r>>cshift) & 0xff] << cshift;
+- g = (u_long) directConv[(g>>cshift) & 0xff] << cshift;
+- b = (u_long) directConv[(b>>cshift) & 0xff] << cshift;
+- }
+-
+-
+- /* shift the bits around */
+- if (rshift<0) r = r << (-rshift);
+- else r = r >> rshift;
+-
+- if (gshift<0) g = g << (-gshift);
+- else g = g >> gshift;
+-
+- if (bshift<0) b = b << (-bshift);
+- else b = b >> bshift;
+-
+- r = r & rmask;
+- g = g & gmask;
+- b = b & bmask;
+-
+- xcol = r | g | b;
+-
+- if (bperpix == 32) {
+- if (border == MSBFirst) {
+- *ip++ = (xcol>>24) & 0xff;
+- *ip++ = (xcol>>16) & 0xff;
+- *ip++ = (xcol>>8) & 0xff;
+- *ip++ = xcol & 0xff;
+- }
+- else { /* LSBFirst */
+- *ip++ = xcol & 0xff;
+- *ip++ = (xcol>>8) & 0xff;
+- *ip++ = (xcol>>16) & 0xff;
+- *ip++ = (xcol>>24) & 0xff;
+- }
+- }
+-
+- else if (bperpix == 24) {
+- if (border == MSBFirst) {
+- *ip++ = (xcol>>16) & 0xff;
+- *ip++ = (xcol>>8) & 0xff;
+- *ip++ = xcol & 0xff;
+- }
+- else { /* LSBFirst */
+- *ip++ = xcol & 0xff;
+- *ip++ = (xcol>>8) & 0xff;
+- *ip++ = (xcol>>16) & 0xff;
+- }
+- }
++#ifdef ENABLE_FIXPIX_SMOOTH
++ if (do_fixpix_smooth) {
++#if 0
++ /* If we wouldn't have to save the original pic24 image data,
++ * the following code would do the dither job by overwriting
++ * the image data, and the normal render code would then work
++ * without any change on that data.
++ * Unfortunately, this approach would hurt the xv assumptions...
++ */
++ if (bperpix < 24) {
++ FSBUF *fs = fs2_init(wide);
++ if (fs) {
++ fs2_dither(fs, pic24, 3, high, wide);
++ free(fs);
++ }
++ }
++#else
++ /* ...so we have to take a different approach with linewise
++ * dithering/rendering in a loop using a temporary line buffer.
++ */
++ if (bperpix < 24) {
++ FSBUF *fs = fs2_init(wide);
++ if (fs) {
++ byte *row_buf = malloc((size_t)wide * 3);
++ if (row_buf) {
++ int nc = 3;
++ byte *picp = pic24; lip = imagedata;
++
++ switch (bperpix) {
++ case 8:
++ for (i=0; i<high; i++, lip+=bperline, picp+=(size_t)wide*3) {
++ memcpy(row_buf, picp, (size_t)wide * 3);
++ nc = fs2_dither(fs, row_buf, nc, 1, wide);
++ for (j=0, ip=lip, pp=row_buf; j<wide; j++) {
++ xcol = screen_rgb[0][*pp++];
++ xcol |= screen_rgb[1][*pp++];
++ xcol |= screen_rgb[2][*pp++];
++ *ip++ = xcol & 0xff;
++ }
++ }
++ break;
++
++ case 16:
++ for (i=0; i<high; i++, lip+=bperline, picp+=(size_t)wide*3) {
++ CARD16 *ip16 = (CARD16 *)lip;
++ memcpy(row_buf, picp, (size_t)wide * 3);
++ nc = fs2_dither(fs, row_buf, nc, 1, wide);
++ for (j=0, pp=row_buf; j<wide; j++) {
++ xcol = screen_rgb[0][*pp++];
++ xcol |= screen_rgb[1][*pp++];
++ xcol |= screen_rgb[2][*pp++];
++ *ip16++ = (CARD16)xcol;
++ }
++ }
++ break;
++ } /* end switch */
++
++ free(row_buf);
++ free(fs);
+
+- else if (bperpix == 16) {
+- if (border == MSBFirst) {
+- *ip++ = (xcol>>8) & 0xff;
+- *ip++ = xcol & 0xff;
+- }
+- else { /* LSBFirst */
+- *ip++ = xcol & 0xff;
+- *ip++ = (xcol>>8) & 0xff;
++ return xim;
+ }
+- }
+-
+- else if (bperpix == 8) {
+- *ip++ = xcol & 0xff;
+- }
++ free(fs);
++ }
+ }
++#endif /* 0? */
+ }
++#endif /* ENABLE_FIXPIX_SMOOTH */
++
++ lip = imagedata; pp = pic24;
++
++ switch (bperpix) {
++ case 8:
++ for (i=0; i<high; i++, lip+=bperline) {
++ for (j=0, ip=lip; j<wide; j++) {
++ xcol = screen_rgb[0][*pp++];
++ xcol |= screen_rgb[1][*pp++];
++ xcol |= screen_rgb[2][*pp++];
++ *ip++ = xcol & 0xff;
++ }
++ }
++ break;
++
++ case 16:
++ for (i=0; i<high; i++, lip+=bperline) {
++ CARD16 *ip16 = (CARD16 *)lip;
++ for (j=0; j<wide; j++) {
++ xcol = screen_rgb[0][*pp++];
++ xcol |= screen_rgb[1][*pp++];
++ xcol |= screen_rgb[2][*pp++];
++ *ip16++ = (CARD16)xcol;
++ }
++ }
++ break;
++
++ case 24:
++ for (i=0; i<high; i++, lip+=bperline) {
++ for (j=0, ip=lip; j<wide; j++) {
++ xcol = screen_rgb[0][*pp++];
++ xcol |= screen_rgb[1][*pp++];
++ xcol |= screen_rgb[2][*pp++];
++#ifdef USE_24BIT_ENDIAN_FIX
++ if (border == MSBFirst) {
++ *ip++ = (xcol>>16) & 0xff;
++ *ip++ = (xcol>>8) & 0xff;
++ *ip++ = xcol & 0xff;
++ }
++ else { /* LSBFirst */
++ *ip++ = xcol & 0xff;
++ *ip++ = (xcol>>8) & 0xff;
++ *ip++ = (xcol>>16) & 0xff;
++ }
++#else /* GRR: this came with the FixPix patch, but I don't think it's right */
++ *ip++ = (xcol >> 16) & 0xff; /* (no way to test, however, so */
++ *ip++ = (xcol >> 8) & 0xff; /* it's left enabled by default) */
++ *ip++ = xcol & 0xff;
++#endif
++ }
++ }
++ break;
++
++ case 32:
++ for (i=0; i<high; i++, lip+=bperline) {
++ CARD32 *ip32 = (CARD32 *)lip;
++ for (j=0; j<wide; j++) {
++ xcol = screen_rgb[0][*pp++];
++ xcol |= screen_rgb[1][*pp++];
++ xcol |= screen_rgb[2][*pp++];
++ *ip32++ = (CARD32)xcol;
++ }
++ }
++ break;
++ } /* end switch */
+ }
+
+ else {
+@@ -2019,17 +2339,17 @@
+ bwdith = 0;
+
+ if (ncols == 0 && dispDEEP != 1) { /* do 'black' and 'white' dither */
+- /* note that if dispDEEP > 8, pic8 will just have '0' and '1' instead
++ /* note that if dispDEEP > 8, pic8 will just have '0' and '1' instead
+ of 'black' and 'white' */
+
+- pic8 = FSDither(pic24, PIC24, (int) wide, (int) high, NULL, NULL, NULL,
+- (int) ((dispDEEP <= 8) ? black : 0),
++ pic8 = FSDither(pic24, PIC24, (int) wide, (int) high, NULL, NULL, NULL,
++ (int) ((dispDEEP <= 8) ? black : 0),
+ (int) ((dispDEEP <= 8) ? white : 1));
+ bwdith = 1;
+ }
+
+ else { /* do color dither using stdcmap */
+- pic8 = Do332ColorDither(pic24, NULL, (int) wide, (int) high,
++ pic8 = Do332ColorDither(pic24, NULL, (int) wide, (int) high,
+ NULL, NULL, NULL,
+ stdrdisp, stdgdisp, stdbdisp, 256);
+ }
+@@ -2046,14 +2366,14 @@
+ case 8: {
+ byte *imagedata, *ip, *pp;
+ int j, imWIDE, nullCount;
+-
++
+ nullCount = (4 - (wide % 4)) & 0x03; /* # of padding bytes per line */
+ imWIDE = wide + nullCount;
+-
++
+ /* Now create the image data - pad each scanline as necessary */
+ imagedata = (byte *) malloc((size_t) (imWIDE * high));
+ if (!imagedata) FatalError("couldn't malloc imagedata");
+-
++
+ for (i=0, pp=pic8, ip=imagedata; i<high; i++) {
+ if (((i+1)&0x7f) == 0) WaitCursor();
+
+@@ -2066,7 +2386,7 @@
+ }
+
+ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0,
+- (char *) imagedata, wide, high,
++ (char *) imagedata, wide, high,
+ 32, imWIDE);
+ if (!xim) FatalError("couldn't create xim!");
+ }
+@@ -2074,14 +2394,14 @@
+
+
+ /*********************************/
+-
++
+ case 4: {
+ byte *imagedata, *ip, *pp;
+ byte *lip;
+ int bperline, half, j;
+ unsigned long xcol;
+-
+- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
++
++ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
+ wide, high, 32, 0);
+ if (!xim) FatalError("couldn't create xim!");
+
+@@ -2123,14 +2443,14 @@
+ else FatalError("This display's too bizarre. Can't create XImage.");
+ }
+ break;
+-
++
+
+
+ /*********************************/
+-
++
+ case 2: { /* by M.Kossa@frec.bull.fr (Marc Kossa) */
+ /* MSBFirst mods added by dale@ntg.com (Dale Luck) */
+- /* additional fixes by evol@infko.uni-koblenz.de
++ /* additional fixes by evol@infko.uni-koblenz.de
+ (Randolf Werner) for NeXT 2bit grayscale with MouseX */
+
+ byte *imagedata, *ip, *pp;
+@@ -2138,7 +2458,7 @@
+ int bperline, half, j;
+ unsigned long xcol;
+
+- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
++ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
+ wide, high, 32, 0);
+ if (!xim) FatalError("couldn't create xim!");
+
+@@ -2201,22 +2521,22 @@
+ }
+ }
+ }
+-
++
+ else FatalError("This display's too bizarre. Can't create XImage.");
+ }
+ break;
+-
++
+
+ /*********************************/
+-
++
+ case 6: {
+ byte *imagedata, *lip, *ip, *pp;
+ int bperline;
+-
+- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
++
++ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
+ wide, high, 32, 0);
+ if (!xim) FatalError("couldn't create xim!");
+-
++
+ if (xim->bits_per_pixel != 8)
+ FatalError("This display's too bizarre. Can't create XImage.");
+
+@@ -2238,7 +2558,7 @@
+ }
+ break;
+
+-
++
+ /*********************************/
+
+ case 15:
+@@ -2282,7 +2602,7 @@
+ }
+ break;
+
+-
++
+ /*********************************/
+
+ /* this wouldn't seem likely to happen, but what the heck... */
+@@ -2295,7 +2615,7 @@
+
+ imagedata = (byte *) malloc((size_t) (4*wide*high));
+ if (!imagedata) FatalError("couldn't malloc imagedata");
+-
++
+ xim = XCreateImage(theDisp,theVisual,dispDEEP,ZPixmap,0,
+ (char *) imagedata, wide, high, 32, 0);
+ if (!xim) FatalError("couldn't create xim!");
+@@ -2303,7 +2623,7 @@
+ bperpix = xim->bits_per_pixel;
+
+ pp = pic8;
+-
++
+ if (xim->byte_order == MSBFirst) {
+ for (i=wide*high, ip=imagedata; i>0; i--,pp++) {
+ if (((i+1)&0x1ffff) == 0) WaitCursor();
+@@ -2327,7 +2647,7 @@
+ if (bperpix == 32) *ip++ = 0;
+ }
+ }
+- }
++ }
+ break;
+
+ } /* end of the switch */
+@@ -2346,7 +2666,7 @@
+ int mode;
+ {
+ /* move checkmark */
+- conv24MB.flags[CONV24_8BIT] = (mode==PIC8);
++ conv24MB.flags[CONV24_8BIT] = (mode==PIC8);
+ conv24MB.flags[CONV24_24BIT] = (mode==PIC24);
+
+ if (mode == PIC24) {
+@@ -2383,15 +2703,13 @@
+ void Change824Mode(mode)
+ int mode;
+ {
+- static int oldcmapmode = -1;
+-
+ if (mode == picType) return; /* same mode, do nothing */
+
+ Set824Menus(mode);
+
+ if (!pic) { /* done all we wanna do when there's no pic */
+ picType = mode;
+- return;
++ return;
+ }
+
+ /* should probably actually *do* something involving colors, regenrating
+@@ -2453,6 +2771,7 @@
+
+
+ /***********************/
++#if 0 /* NOTUSED */
+ static int highbit(ul)
+ unsigned long ul;
+ {
+@@ -2465,6 +2784,7 @@
+ for (i=31; ((ul & hb) == 0) && i>=0; i--, ul<<=1);
+ return i;
+ }
++#endif /* 0 - NOTUSED */
+
+
+
+@@ -2474,7 +2794,7 @@
+ int ptype, w,h, sx,sy,sw,sh;
+ {
+ /* mallocs and returns the selected subimage (sx,sy,sw,sh) of pic.
+- selection is guaranteed to be within pic boundaries.
++ selection is guaranteed to be within pic boundaries.
+ NEVER RETURNS NULL */
+
+ byte *rpic, *sp, *dp;
+@@ -2520,7 +2840,6 @@
+ installs the new pic and all that... Returns '0' on failure */
+
+ int rv;
+- char loadName[256];
+
+ if (padPic) free(padPic);
+ if (holdcomment) free(holdcomment);
+@@ -2530,8 +2849,8 @@
+
+ rv = 1;
+
+- if ((mode != PAD_LOAD) && (wide == pWIDE && high == pHIGH && opaque==100)) {
+- ErrPopUp("Padding to same size as pic while fully opaque has no effect.",
++ if ((mode != PAD_LOAD) && (wide == cWIDE && high == cHIGH && opaque==100)) {
++ ErrPopUp("Padding to same size as pic while fully opaque has no effect.",
+ "\nI see");
+ return 0;
+ }
+@@ -2539,8 +2858,8 @@
+ WaitCursor();
+
+ if (mode == PAD_SOLID) rv = doPadSolid(str, wide, high, opaque,omode);
+- else if (mode == PAD_BGGEN) rv = doPadBggen(str, wide, high, opaque,omode);
+- else if (mode == PAD_LOAD) rv = doPadLoad (str, wide, high, opaque,omode);
++ else if (mode == PAD_BGGEN) rv = doPadBggen(str, wide, high, opaque,omode);
++ else if (mode == PAD_LOAD) rv = doPadLoad (str, wide, high, opaque,omode);
+
+ SetCursors(-1);
+
+@@ -2556,7 +2875,7 @@
+
+ return 1;
+ }
+-
++
+
+ /***********************************/
+ int LoadPad(pinfo, fname)
+@@ -2645,7 +2964,7 @@
+ return 0;
+ }
+ }
+-
++
+
+
+ pic24 = (byte *) malloc(wide * high * 3 * sizeof(byte));
+@@ -2656,7 +2975,7 @@
+ return 0;
+ }
+
+-
++
+ /* fill pic24 with solidRGB */
+ for (i=0,pp=pic24; i<wide*high; i++, pp+=3) {
+ pp[0] = (solidRGB>>16) & 0xff;
+@@ -2676,6 +2995,9 @@
+ char *str;
+ int wide, high, opaque,omode;
+ {
++#ifndef USE_MKSTEMP
++ int tmpfd;
++#endif
+ int i;
+ byte *bgpic24;
+ char syscmd[512], fname[128], errstr[512];
+@@ -2697,7 +3019,18 @@
+ #else
+ strcpy(fname, "Sys$Disk:[]xvuXXXXXX");
+ #endif
++#ifdef USE_MKSTEMP
++ close(mkstemp(fname));
++#else
+ mktemp(fname);
++ tmpfd = open(fname, O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
++ if (tmpfd < 0) {
++ sprintf(errstr, "Error: can't create temporary file %s", fname);
++ ErrPopUp(errstr, "\nDoh!");
++ return 0;
++ }
++ close(tmpfd);
++#endif
+
+ /* run bggen to generate the background */
+ sprintf(syscmd, "bggen -g %dx%d %s > %s", wide, high, str, fname);
+@@ -2713,7 +3046,7 @@
+ ErrPopUp(errstr, "\nDoh!");
+ return 0;
+ }
+-
++
+
+ /* read the file that's been created */
+ if (!ReadImageFile1(fname, &pinfo)) {
+@@ -2791,7 +3124,7 @@
+ int wide, high, opaque,omode;
+ {
+ /* copies 'pic' onto the given 24-bit background image, converts back to
+- 8-bit (if necessary), and loads up pad* variables.
++ 8-bit (if necessary), and loads up pad* variables.
+ frees pic24 if necessary */
+
+ byte *pp, *p24;
+@@ -2806,30 +3139,30 @@
+
+ /* copy 'pic' centered onto pic24. */
+
+- sx = (wide - pWIDE) / 2;
+- sy = (high - pHIGH) / 2;
+-
+- for (py = 0; py<pHIGH; py++) {
+- ProgressMeter(0, pHIGH-1, py, "Pad");
++ sx = (wide - cWIDE) / 2;
++ sy = (high - cHIGH) / 2;
++
++ for (py = 0; py<cHIGH; py++) {
++ ProgressMeter(0, cHIGH-1, py, "Pad");
+ if ((py & 0x1f)==0) WaitCursor();
+
+ p24y = sy + py;
+ if (p24y >= 0 && p24y < high) {
+- for (px=0; px<pWIDE; px++) {
++ for (px=0; px<cWIDE; px++) {
+ p24x = sx + px;
+ if (p24x >= 0 && p24x < wide) {
+ p24 = pic24 + (p24y*wide + p24x)*3;
+-
+-
++
++
+ if (picType == PIC24) { /* src is PIC24 */
+- pp = pic + (py * pWIDE + px) *3;
++ pp = cpic + (py * cWIDE + px) *3;
+ r = pp[0]; g = pp[1]; b = pp[2];
+ }
+ else { /* src is PIC8 */
+- pp = pic + (py*pWIDE + px);
++ pp = cpic + (py*cWIDE + px);
+ r = rMap[*pp]; g = gMap[*pp]; b = bMap[*pp];
+ }
+-
++
+ if (omode == PAD_ORGB) {
+ rval = (r * fg) / 100 + ((int) p24[0] * bg) / 100;
+ gval = (g * fg) / 100 + ((int) p24[1] * bg) / 100;
+@@ -2845,7 +3178,7 @@
+
+ if (omode == PAD_OINT) {
+ h = fh;
+- s = fs;
++ s = fs;
+ /* v = (fv * fg) / 100.0 + (bv * bg) / 100.0; */
+ v = (fv * bv * bw) + (fv * fw);
+ }
+@@ -2855,18 +3188,18 @@
+ h = fh;
+ /* s = (fs * fg) / 100.0 + (bs * bg) / 100.0; */
+ s = (fs * bs * bw) + (fs * fw);
+- v = fv;
++ v = fv;
+ }
+ else if (omode == PAD_OHUE) { /* the hard one! */
+- int fdeg,bdeg,len1,len2;
+-
++ int fdeg,bdeg;
++
+ fdeg = (fh<0) ? -1 : (int) floor(fh + 0.5);
+ bdeg = (bh<0) ? -1 : (int) floor(bh + 0.5);
+
+ if (fdeg>=0 && bdeg>=0) { /* both are colors */
+ /* convert H,S onto x,y coordinates on the colorwheel for
+ constant V */
+-
++
+ double fx,fy, bx,by, ox,oy;
+
+ if (fg == 100 || bg == 100) { /* E-Z special case */
+@@ -2874,17 +3207,17 @@
+ else { h = bh; s = fs; v=fv; }
+ }
+ else { /* general case */
+-
++
+ fh *= (3.14159 / 180.0); /* -> radians */
+ bh *= (3.14159 / 180.0);
+-
++
+ fx = fs * cos(fh); fy = fs * sin(fh);
+ bx = bs * cos(bh); by = bs * sin(bh);
+-
++
+ /* compute pt. on line between fx,fy and bx,by */
+ ox = (fx * (fg/100.0)) + (bx * (bg/100.0));
+ oy = (fy * (fg/100.0)) + (by * (bg/100.0));
+-
++
+ /* convert ox,oy back into hue,sat */
+ s = sqrt((ox * ox) + (oy * oy));
+ if (ox == 0.0) {
+@@ -2897,7 +3230,7 @@
+ while (h<0.0) h += 360.0;
+ while (h>=360.0) h -= 360.0;
+ }
+-
++
+ v = fv;
+ }
+ }
+@@ -2924,7 +3257,7 @@
+ v = (fv * bv * bw) + (fv * fw);
+ hsv2rgb(h,s,v, &rval,&gval,&bval);
+ }
+-
++
+ RANGE(rval, 0, 255); RANGE(gval, 0, 255); RANGE(bval, 0, 255);
+ *p24++ = rval; *p24++ = gval; *p24++ = bval;
+ }
+@@ -2958,16 +3291,19 @@
+
+
+ /*******************************/
+-static int ReadImageFile1(name, pinfo)
++static int ReadImageFile1(name, pinfo)
+ char *name;
+ PICINFO *pinfo;
+ {
+ int i, ftype;
+- char basefname[128], uncompname[128], errstr[256], *uncName, *readname;
++ char uncompname[128], errstr[256], *uncName, *readname;
++#ifdef VMS
++ char basefname[128];
++#endif
+
+ ftype = ReadFileType(name);
+
+- if (ftype == RFT_COMPRESS) { /* handle compressed/gzipped files */
++ if ((ftype == RFT_COMPRESS) || (ftype == RFT_BZIP2)) { /* handle .Z,gz,bz2 */
+ #ifdef VMS
+ basefname[0] = '\0';
+ strcpy(basefname, name); /* remove trailing .Z */
+@@ -2976,8 +3312,8 @@
+ #else
+ uncName = name;
+ #endif
+-
+- if (UncompressFile(uncName, uncompname)) {
++
++ if (UncompressFile(uncName, uncompname, ftype)) {
+ ftype = ReadFileType(uncompname);
+ readname = uncompname;
+ }
+@@ -3004,7 +3340,7 @@
+ KillPageFiles(pinfo->pagebname, pinfo->numpages);
+
+ if (!i || (i && (pinfo->w<=0 || pinfo->h<=0))) {
+- if (i) {
++ if (i) {
+ if (pinfo->pic) free(pinfo->pic);
+ if (pinfo->comment) free(pinfo->comment);
+ }
+@@ -3018,9 +3354,3 @@
+
+ return 1;
+ }
+-
+-
+-
+-
+-
+-
+diff -ru xv-3.10a/xvinfo.c xv-3.10a-enhancements/xvinfo.c
+--- xv-3.10a/xvinfo.c 1994-12-22 14:34:41.000000000 -0800
++++ xv-3.10a-enhancements/xvinfo.c 2007-05-13 14:11:03.000000000 -0700
+@@ -1,4 +1,4 @@
+-/*
++/*
+ * xvinfo.c - 'Info' box handling functions
+ *
+ * callable functions:
+@@ -8,8 +8,8 @@
+ * maps/unmaps window, etc.
+ * RedrawInfo(x,y,w,h) - called by 'expose' events
+ * SetInfoMode(mode) - changes amount of info Info window shows
+- * SetISTR(st, fmt, args) - sprintf's into ISTR #st. Redraws it in window
+- * char *GetISTR(st) - returns pointer to ISTR #st, or NULL if st bogus
++ * SetISTR(st, fmt, args) - sprintf's into ISTR #st. Redraws it in window
++ * char *GetISTR(st) - returns pointer to ISTR #st, or NULL if st bogus
+ */
+
+ #include "copyright.h"
+@@ -43,20 +43,20 @@
+
+ /***************************************************/
+ void CreateInfo(geom)
+-char *geom;
++ const char *geom;
+ {
+- infoW = CreateWindow("xv info", "XVinfo", geom, INFOWIDE, INFOHIGH,
++ infoW = CreateWindow("xv info", "XVinfo", geom, INFOWIDE, INFOHIGH,
+ infofg, infobg, 0);
+ if (!infoW) FatalError("can't create info window!");
+-
+- pennPix = XCreatePixmapFromBitmapData(theDisp, infoW,
++
++ pennPix = XCreatePixmapFromBitmapData(theDisp, infoW,
+ (char *) penn_bits, penn_width, penn_height, infofg, infobg, dispDEEP);
+
+ pnetPix = XCreatePixmapFromBitmapData(theDisp,infoW,
+- (char *) pennnet_bits, pennnet_width, pennnet_height,
++ (char *) pennnet_bits, pennnet_width, pennnet_height,
+ infofg, infobg, dispDEEP);
+ }
+-
++
+
+ /***************************************************/
+ void InfoBox(vis)
+@@ -64,7 +64,7 @@
+ {
+ if (vis) XMapRaised(theDisp, infoW);
+ else XUnmapWindow(theDisp, infoW);
+-
++
+ infoUp = vis;
+ }
+
+@@ -74,23 +74,23 @@
+ int x,y,w,h;
+ {
+ int i;
+-
++
+ XSetForeground(theDisp, theGC, infofg);
+ XSetBackground(theDisp, theGC, infobg);
+
+ /* draw the two icons */
+ XCopyArea(theDisp, pennPix, infoW, theGC, 0, 0, penn_width, penn_height,
+ 36 - penn_width/2, 36 - penn_height/2);
+- XCopyArea(theDisp, pnetPix, infoW, theGC, 0, 0, pennnet_width,
+- pennnet_height, INFOWIDE - 36 - pennnet_width/2,
++ XCopyArea(theDisp, pnetPix, infoW, theGC, 0, 0, pennnet_width,
++ pennnet_height, INFOWIDE - 36 - pennnet_width/2,
+ 36 - pennnet_height/2);
+
+ /* draw the credits */
+- sprintf(str,"XV - %s",REVDATE);
+- CenterString(infoW, INFOWIDE/2, 36-LINEHIGH, str);
++ snprintf(dummystr, sizeof(dummystr), "XV - %s", REVDATE);
++ CenterString(infoW, INFOWIDE/2, 36-LINEHIGH, dummystr);
+ CenterString(infoW, INFOWIDE/2, 36,
+ "by John Bradley (bradley@dccs.upenn.edu)");
+- CenterString(infoW, INFOWIDE/2, 36+LINEHIGH,
++ CenterString(infoW, INFOWIDE/2, 36+LINEHIGH,
+ "Copyright 1994, John Bradley - All Rights Reserved");
+
+
+@@ -131,16 +131,16 @@
+ static void drawFieldName(fnum)
+ int fnum;
+ {
+- static char *fname[7] = { "Filename:", "Format:", "Resolution:", "Cropping:",
+- "Expansion:", "Selection:", "Colors:" };
++ static const char *fname[7] = { "Filename:", "Format:", "Resolution:",
++ "Cropping:", "Expansion:", "Selection:", "Colors:" };
+
+ XSetForeground(theDisp, theGC, infofg);
+ XSetBackground(theDisp, theGC, infobg);
+
+ if (infoMode == INF_NONE || infoMode == INF_STR) return;
+ if (infoMode == INF_PART && fnum>=3) return;
+-
+- XDrawString(theDisp, infoW, theGC, 10, TOPBASE + fnum*LINEHIGH,
++
++ XDrawString(theDisp, infoW, theGC, 10, TOPBASE + fnum*LINEHIGH,
+ fname[fnum], (int) strlen(fname[fnum]));
+ }
+
+@@ -150,7 +150,7 @@
+ int st;
+ {
+ /* erase area of string, and draw it with new contents */
+-
++
+ if (infoMode == INF_NONE) return;
+ if (infoMode == INF_STR && st > ISTR_WARNING) return;
+ if (infoMode == INF_PART && st > ISTR_RES) return;
+@@ -170,12 +170,12 @@
+ }
+ else {
+ XSetForeground(theDisp, theGC, infobg);
+- XFillRectangle(theDisp, infoW, theGC,
+- STLEFT, TOPBASE - ASCENT + (st-ISTR_FILENAME)*LINEHIGH,
++ XFillRectangle(theDisp, infoW, theGC,
++ STLEFT, TOPBASE - ASCENT + (st-ISTR_FILENAME)*LINEHIGH,
+ (u_int) INFOWIDE-STLEFT, (u_int) LINEHIGH);
+ XSetForeground(theDisp, theGC, infofg);
+ XDrawString(theDisp, infoW, theGC, STLEFT,
+- TOPBASE + (st-ISTR_FILENAME)*LINEHIGH, istrs[st],
++ TOPBASE + (st-ISTR_FILENAME)*LINEHIGH, istrs[st],
+ (int) strlen(istrs[st]));
+ }
+ }
+@@ -187,21 +187,21 @@
+ int mode;
+ {
+ int y1, y2;
+-
++
+ infoMode = mode;
+ if (infoUp) { /* only do this if window is mapped */
+ y1 = TOPBASE - ASCENT;
+ y2 = INFOHIGH-43;
+-
++
+ XSetForeground(theDisp, theGC, infobg);
+-
+- XFillRectangle(theDisp,infoW,theGC,0,y1,
++
++ XFillRectangle(theDisp,infoW,theGC,0,y1,
+ (u_int) INFOWIDE, (u_int) y2-y1);
+- XFillRectangle(theDisp,infoW,theGC,0,INFOHIGH-39,
++ XFillRectangle(theDisp,infoW,theGC,0,INFOHIGH-39,
+ (u_int) INFOWIDE, (u_int) 17);
+- XFillRectangle(theDisp,infoW,theGC,0,INFOHIGH-19,
++ XFillRectangle(theDisp,infoW,theGC,0,INFOHIGH-19,
+ (u_int) INFOWIDE, (u_int) 17);
+-
++
+ drawStrings();
+ }
+ }
+@@ -233,14 +233,14 @@
+
+ if (stnum>=0 && stnum < NISTR) {
+ fmt = va_arg(args, char *);
+- if (fmt) vsprintf(istrs[stnum], fmt, args);
++ if (fmt) vsnprintf(istrs[stnum], sizeof(istrs[stnum]), fmt, args);
+ else istrs[stnum][0] = '\0';
+ }
+ va_end(args);
+-
++
+ if (stnum == ISTR_COLOR) {
+- sprintf(istrs[ISTR_INFO], "%s %s %s", formatStr,
+- (picType==PIC8) ? "8-bit mode." : "24-bit mode.",
++ snprintf(istrs[ISTR_INFO], sizeof(istrs[ISTR_INFO]), "%s %s %s",
++ formatStr, (picType==PIC8) ? "8-bit mode." : "24-bit mode.",
+ istrs[ISTR_COLOR]);
+ }
+
+@@ -250,22 +250,22 @@
+ XFlush(theDisp);
+ }
+
+- if (ctrlUp && (stnum == ISTR_INFO || stnum == ISTR_WARNING ||
++ if (ctrlUp && (stnum == ISTR_INFO || stnum == ISTR_WARNING ||
+ stnum == ISTR_COLOR)) {
+ DrawCtrlStr();
+ XFlush(theDisp);
+ }
+
+- if (anyBrowUp && (stnum == ISTR_WARNING || stnum == ISTR_INFO)
++ if (anyBrowUp && (stnum == ISTR_WARNING || stnum == ISTR_INFO)
+ && strlen(istrs[stnum])) {
+ SetBrowStr(istrs[stnum]);
+ XFlush(theDisp);
+ }
+
+- if (stnum == ISTR_WARNING && !ctrlUp && !infoUp && !anyBrowUp &&
++ if (stnum == ISTR_WARNING && !ctrlUp && !infoUp && !anyBrowUp &&
+ strlen(istrs[stnum])) {
+ OpenAlert(istrs[stnum]);
+- sleep(3);
++ sleep(1); /* was 3, but _really_ slow for TIFFs with unknown tags... */
+ CloseAlert();
+ }
+ }
+diff -ru xv-3.10a/xviris.c xv-3.10a-enhancements/xviris.c
+--- xv-3.10a/xviris.c 1994-12-22 14:34:47.000000000 -0800
++++ xv-3.10a-enhancements/xviris.c 2007-05-13 17:49:50.000000000 -0700
+@@ -14,7 +14,7 @@
+ *
+ * This code should work on machines with any byte order.
+ *
+- * Could someone make this run real fast using multiple processors
++ * Could someone make this run real fast using multiple processors
+ * or how about using memory mapped files to speed it up?
+ *
+ * Paul Haeberli - 1991
+@@ -44,7 +44,7 @@
+ u_short zsize;
+ u_long min;
+ u_long max;
+- u_long wastebytes;
++ u_long wastebytes;
+ char name[80];
+ u_long colormap;
+
+@@ -80,7 +80,7 @@
+ #define CHANOFFSET(z) (3-(z)) /* this is byte order dependent */
+
+
+-static int irisError PARM((char *, char *));
++static int irisError PARM((const char *, const char *));
+ static byte *getimagedata PARM((FILE *, IMAGE *));
+ static void interleaverow PARM((byte *, byte *, int, int));
+ static void expandrow PARM((byte *, byte *, int));
+@@ -97,8 +97,8 @@
+ static void putlong PARM((FILE *, u_long));
+
+
+-static char *loaderr;
+-static char *bname;
++static const char *loaderr;
++static const char *bname;
+
+ /*****************************************************/
+ int LoadIRIS(fname, pinfo)
+@@ -112,7 +112,8 @@
+ IMAGE img;
+ byte *rawdata, *rptr;
+ byte *pic824, *bptr;
+- int trunc, i, j;
++ int trunc, i, npixels, bufsize;
++ u_short ii, jj;
+ long filesize;
+
+ trunc = 0;
+@@ -133,11 +134,11 @@
+ img.imagic = getshort(fp);
+ img.type = getshort(fp);
+ img.dim = getshort(fp);
+- img.xsize = getshort(fp);
++ img.xsize = getshort(fp); /* u_short */
+ img.ysize = getshort(fp);
+ img.zsize = getshort(fp);
+
+- if (FERROR(fp)) {
++ if (FERROR(fp) || img.xsize == 0 || img.ysize == 0 || img.zsize == 0) {
+ fclose(fp);
+ return irisError(bname, "error in header info");
+ }
+@@ -148,7 +149,7 @@
+ }
+
+ rawdata = getimagedata(fp, &img);
+- if (!rawdata) {
++ if (!rawdata) {
+ fclose(fp);
+ if (loaderr) irisError(bname, loaderr);
+ return 0;
+@@ -162,18 +163,22 @@
+ /* got the raw image data. Convert to an XV image (1,3 bytes / pix) */
+
+
++ npixels = img.xsize * img.ysize; /* 65535*65535 = (2^32 - 131071) max */
++ if (npixels/img.xsize != img.ysize)
++ return irisError(bname, "IRIS image dimensions out of range");
++
+ if (img.zsize < 3) { /* grayscale */
+- pic824 = (byte *) malloc((size_t) img.xsize * img.ysize);
++ pic824 = (byte *) malloc((size_t) npixels);
+ if (!pic824) FatalError("couldn't malloc pic824 in LoadIRIS()");
+
+ /* copy plane 3 from rawdata into pic824, inverting pic vertically */
+- for (i=0, bptr=pic824; i<(int) img.ysize; i++) {
+- rptr = rawdata + 3 + ((img.ysize - 1) - i) * (img.xsize * 4);
+- for (j=0; j<(int) img.xsize; j++, bptr++, rptr+=4) *bptr = *rptr;
++ for (ii=0, bptr=pic824; ii<img.ysize; ii++) {
++ rptr = rawdata + 3 + ((img.ysize - 1) - ii) * (img.xsize * 4);
++ for (jj=0; jj<img.xsize; jj++, bptr++, rptr+=4) *bptr = *rptr;
+ }
+
+
+- for (i=0; i<256; i++)
++ for (i=0; i<256; i++)
+ pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
+
+ pinfo->pic = pic824;
+@@ -188,13 +193,17 @@
+ }
+
+ else { /* truecolor */
+- pic824 = (byte *) malloc((size_t) img.xsize * img.ysize * 3);
++ bufsize = 3 * npixels;
++ if (npixels/img.xsize != img.ysize || bufsize/3 != npixels) {
++ return irisError(bname, "IRIS image dimensions out of range");
++ }
++ pic824 = (byte *) malloc((size_t) bufsize);
+ if (!pic824) FatalError("couldn't malloc pic824 in LoadIRIS()");
+-
++
+ /* copy plane 3 from rawdata into pic824, inverting pic vertically */
+- for (i=0, bptr=pic824; i<(int) img.ysize; i++) {
+- rptr = rawdata + ((img.ysize - 1) - i) * (img.xsize * 4);
+- for (j=0; j<(int) img.xsize; j++, rptr+=4) {
++ for (ii=0, bptr=pic824; ii<img.ysize; ii++) {
++ rptr = rawdata + ((img.ysize - 1) - ii) * (img.xsize * 4);
++ for (jj=0; jj<img.xsize; jj++, rptr+=4) {
+ *bptr++ = rptr[3];
+ *bptr++ = rptr[2];
+ *bptr++ = rptr[1];
+@@ -220,12 +229,12 @@
+ pinfo->comment = (char *) NULL;
+
+ return 1;
+-}
++}
+
+
+ /*******************************************/
+ static int irisError(name, st)
+- char *name, *st;
++ const char *name, *st;
+ {
+ SetISTR(ISTR_WARNING,"%s: %s", name, st);
+ return 0;
+@@ -237,41 +246,53 @@
+ FILE *fp;
+ IMAGE *img;
+ {
+- /* read in a B/W RGB or RGBA iris image file and return a
++ /* read in a B/W RGB or RGBA iris image file and return a
+ pointer to an array of 4-byte pixels, arranged ABGR, NULL on error */
+
+ byte *base, *lptr;
+ byte *verdat;
+- int y, z, pos, len, tablen;
++ int y, z, tablen;
+ int xsize, ysize, zsize;
+ int bpp, rle, cur, badorder;
+- int rlebuflen;
++ int rlebuflen, npixels, bufsize;
+
+
+ rle = ISRLE(img->type);
+ bpp = BPP(img->type);
+- loaderr = (char *) NULL;
++ loaderr = (const char *) NULL;
+
+ if (bpp != 1) {
+ loaderr = "image must have 1 byte per pix chan";
+ return (byte *) NULL;
+ }
+
+- xsize = img->xsize;
++ xsize = img->xsize; /* all three are > 0 (checked by caller), <= 65535 */
+ ysize = img->ysize;
+ zsize = img->zsize;
++ npixels = xsize * ysize; /* 65535*65535 = (2^32 - 131071) max */
++ if (npixels/xsize != ysize) {
++ loaderr = "IRIS image dimensions out of range";
++ return (byte *) NULL;
++ }
+
+ if (rle) {
+ byte *rledat;
+ u_long *starttab, *lengthtab;
+
+- rlebuflen = 2 * xsize + 10;
++ rlebuflen = 2 * xsize + 10; /* 10 <= rlebuflen <= 131080 */
+ tablen = ysize * zsize;
+- starttab = (u_long *) malloc((size_t) tablen * sizeof(long));
+- lengthtab = (u_long *) malloc((size_t) tablen * sizeof(long));
++ bufsize = tablen * sizeof(long);
++
++ if (tablen/ysize != zsize || bufsize/tablen != sizeof(long)) {
++ loaderr = "IRIS image dimensions out of range";
++ return (byte *)NULL;
++ }
++
++ starttab = (u_long *) malloc((size_t) bufsize);
++ lengthtab = (u_long *) malloc((size_t) bufsize);
+ rledat = (byte *) malloc((size_t) rlebuflen);
+
+- if (!starttab || !lengthtab || !rledat)
++ if (!starttab || !lengthtab || !rledat)
+ FatalError("out of memory in LoadIRIS()");
+
+ fseek(fp, 512L, 0);
+@@ -298,7 +319,13 @@
+ fseek(fp, (long) (512 + 2*tablen*4), 0);
+ cur = 512 + 2*tablen*4;
+
+- base = (byte *) malloc((size_t) (xsize*ysize+TAGLEN) * 4);
++ bufsize = 4 * (npixels+TAGLEN);
++ if (bufsize/4 != (npixels+TAGLEN)) {
++ loaderr = "Bogus IRIS File!";
++ free(starttab); free(lengthtab); free(rledat);
++ return (byte *)NULL;
++ }
++ base = (byte *) malloc((size_t) bufsize);
+ if (!base) FatalError("out of memory in LoadIRIS()");
+
+ addimgtag(base,xsize,ysize);
+@@ -349,12 +376,17 @@
+ } /* end of RLE case */
+
+ else { /* not RLE */
++ bufsize = 4 * (npixels+TAGLEN);
++ if (bufsize/4 != (npixels+TAGLEN)) {
++ loaderr = "Bogus IRIS File!";
++ return (byte *)NULL;
++ }
++ base = (byte *) malloc((size_t) bufsize);
+ verdat = (byte *) malloc((size_t) xsize);
+- base = (byte *) malloc((size_t) (xsize*ysize+TAGLEN) * 4);
+ if (!base || !verdat) FatalError("out of memory in LoadIRIS()");
+
+ addimgtag(base,xsize,ysize);
+-
++
+ fseek(fp,512L,0);
+
+ for (z=0; z<zsize; z++) {
+@@ -457,7 +489,7 @@
+ byte *dptr;
+ int xsize, ysize;
+ {
+- /* this is used to extract image data from core dumps.
++ /* this is used to extract image data from core dumps.
+ I doubt this is necessary... --jhb */
+
+ dptr = dptr + (xsize * ysize * 4);
+@@ -499,26 +531,31 @@
+ int ptype, w, h, numcols, colorstyle;
+ {
+ /* writes a greyscale or 24-bit RGB IRIS file to the already open
+- stream, rle compressed */
++ stream, RLE-compressed; returns 0 on success, -1 on minor error */
+
+ IMAGE img;
+- int i, j, pos, len, tablen, rlebuflen, zsize;
++ int i, j, pos, len, tablen, rlebuflen, zsize, npixels, bufsize;
+ u_long *starttab, *lengthtab;
+ byte *rlebuf, *pptr;
+ byte *lumbuf, *lptr, *longpic;
+
+ xvbzero((char *) &img, sizeof(IMAGE));
+-
++
+ /* write header information */
+ fwrite(&img, sizeof(IMAGE), (size_t) 1, fp);
+ fseek(fp, 0L, 0);
+
++ if (w <= 0 || h <= 0 || w > 65535 || h > 65535) {
++ SetISTR(ISTR_WARNING, "image dimensions too large for IRIS format");
++ return -1;
++ }
++
+ /* load up header */
+ img.imagic = IMAGIC;
+ img.type = ITYPE_RLE | (1 & BPPMASK); /* RLE, 1 byteperpix */
+ img.dim = (colorstyle == F_FULLCOLOR) ? 3 : 2;
+- img.xsize = w;
+- img.ysize = h;
++ img.xsize = (u_short)w;
++ img.ysize = (u_short)h;
+ img.zsize = zsize = (colorstyle == F_FULLCOLOR) ? 3 : 1;
+ img.min = 0;
+ img.max = 255;
+@@ -537,22 +574,33 @@
+ if (ferror(fp)) { fclose(fp); return -1; }
+
+ /* allocate RLE compression tables & stuff */
+- rlebuflen = 2*w + 10;
+- tablen = h * zsize;
++ rlebuflen = 2*w + 10; /* 10 <= rlebuflen <= 131080 */
++ tablen = h * zsize; /* 1 <= tablen <= 196605 */
+
++ /* no overflow is possible with any of these (given check on w,h above): */
+ starttab = (u_long *) malloc((size_t) tablen * sizeof(long));
+ lengthtab = (u_long *) malloc((size_t) tablen * sizeof(long));
+ rlebuf = (byte *) malloc((size_t) rlebuflen);
+- lumbuf = (byte *) malloc((size_t) w * 4);
++ lumbuf = (byte *) malloc((size_t) w * 4); /* 262140 max */
+
+- if (!starttab || !lengthtab || !rlebuf || !lumbuf)
++ if (!starttab || !lengthtab || !rlebuf || !lumbuf)
+ FatalError("out of memory in WriteIRIS()");
+
+ pos = 512 + 2 * (tablen * 4);
+ fseek(fp, (long) pos, 0);
+
+ /* convert image into 4-byte per pix image that the compress routines want */
+- longpic = (byte *) malloc((size_t) w * h * 4);
++ npixels = w * h;
++ bufsize = 4 * npixels;
++ if (npixels/w != h || bufsize/4 != npixels) {
++ SetISTR(ISTR_WARNING, "can't malloc longpic in WriteIRIS()");
++ free(starttab);
++ free(lengthtab);
++ free(rlebuf);
++ free(lumbuf);
++ return -1;
++ }
++ longpic = (byte *) malloc((size_t) bufsize);
+ if (!longpic) FatalError("couldn't malloc longpic in WriteIRIS()");
+
+ for (i=0, pptr=pic; i<h; i++) {
+@@ -574,7 +622,7 @@
+ }
+ }
+ }
+-
++
+
+
+ /* compress and write the data */
+@@ -584,12 +632,13 @@
+ if (zsize == 1) {
+ lumrow(lptr, lumbuf, w);
+ len = compressrow(lumbuf, rlebuf, CHANOFFSET(j), w);
+- }
++ }
+ else {
+ len = compressrow(lptr, rlebuf, CHANOFFSET(j), w);
+ }
+
+ if (len > rlebuflen) {
++ /* this condition shouldn't kill XV, just abort writing the image */
+ FatalError("WriteIRIS: rlebuf is too small");
+ exit(1);
+ }
+@@ -618,10 +667,10 @@
+
+ return 0;
+ }
+-
++
+
+ /*************************************/
+-static void lumrow(rgbptr, lumptr, n)
++static void lumrow(rgbptr, lumptr, n)
+ byte *rgbptr, *lumptr;
+ int n;
+ {
+@@ -640,7 +689,7 @@
+ int z, cnt;
+ {
+ byte *iptr, *ibufend, *sptr, *optr;
+- short todo, cc;
++ short todo, cc;
+ long count;
+
+ lbuf += z;
+@@ -685,7 +734,7 @@
+ cc = *iptr;
+ iptr += 4;
+ while ((iptr<ibufend) && (*iptr == cc)) iptr += 4;
+-
++
+ count = (iptr-sptr)/4;
+ while (count) {
+ todo = count>126 ? 126:count;
+@@ -694,7 +743,7 @@
+ *optr++ = cc;
+ }
+ }
+-
++
+ *optr++ = 0;
+ return (optr - rlebuf);
+ }
+diff -ru xv-3.10a/xvjpeg.c xv-3.10a-enhancements/xvjpeg.c
+--- xv-3.10a/xvjpeg.c 1995-01-05 00:17:13.000000000 -0800
++++ xv-3.10a-enhancements/xvjpeg.c 2007-05-13 17:47:11.000000000 -0700
+@@ -12,13 +12,17 @@
+
+ #include <setjmp.h>
+
+-#include "jpeglib.h"
++#include "jpeglib.h" /* currently defines JPEG_APP0 but not JPEG_APP1 */
+ #include "jerror.h"
+
++#ifndef JPEG_APP1
++# define JPEG_APP1 (JPEG_APP0 + 1) /* EXIF marker */
++#endif
++
+ #define CREATOR_STR "CREATOR: "
+
+ #if BITS_IN_JSAMPLE != 8
+- Sorry, this code only copes with 8-bit JSAMPLEs. /* deliberate syntax err */
++ Sorry, this code copes only with 8-bit JSAMPLEs. /* deliberate syntax err */
+ #endif
+
+
+@@ -30,12 +34,12 @@
+ #define J_BCANC 1
+ #define BUTTH 24
+
+-/* minimum size compression when doing a 'quick' image load. (of course, if
+- the image *is* smaller than this, you'll get whatever size it actually is.
++/* Minimum size compression when doing a 'quick' image load. (Of course, if
++ the image *is* smaller than this, you'll get whatever size it actually is.)
+ This is currently hardcoded to be twice the size of a schnauzer icon, as
+ the schnauzer's the only thing that does a quick load... */
+
+-#define QUICKWIDE 160
++#define QUICKWIDE 160
+ #define QUICKHIGH 120
+
+ struct my_error_mgr {
+@@ -51,19 +55,33 @@
+ static void clickJD PARM((int, int));
+ static void doCmd PARM((int));
+ static void writeJPEG PARM((void));
++#if JPEG_LIB_VERSION > 60
++METHODDEF(void) xv_error_exit PARM((j_common_ptr));
++METHODDEF(void) xv_error_output PARM((j_common_ptr));
++METHODDEF(void) xv_prog_meter PARM((j_common_ptr));
++#else
+ METHODDEF void xv_error_exit PARM((j_common_ptr));
+ METHODDEF void xv_error_output PARM((j_common_ptr));
+ METHODDEF void xv_prog_meter PARM((j_common_ptr));
++#endif
+ static unsigned int j_getc PARM((j_decompress_ptr));
++#if JPEG_LIB_VERSION > 60
++METHODDEF(boolean) xv_process_comment PARM((j_decompress_ptr));
++METHODDEF(boolean) xv_process_app1 PARM((j_decompress_ptr));
++#else
+ METHODDEF boolean xv_process_comment PARM((j_decompress_ptr));
++METHODDEF boolean xv_process_app1 PARM((j_decompress_ptr));
++#endif
+ static int writeJFIF PARM((FILE *, byte *, int,int,int));
+
+
+
+ /*** local variables ***/
+ static char *filename;
+-static char *fbasename;
++static const char *fbasename;
+ static char *comment;
++static byte *exifInfo;
++static int exifInfoSize; /* not a string => must track size explicitly */
+ static int colorType;
+
+ static DIAL qDial, smDial;
+@@ -80,28 +98,26 @@
+ /***************************************************/
+ void CreateJPEGW()
+ {
+- XClassHint classh;
+-
+ jpegW = CreateWindow("xv jpeg","XVjpeg",NULL,JWIDE,JHIGH,infofg,infobg,0);
+ if (!jpegW) FatalError("can't create jpeg window!");
+-
++
+ XSelectInput(theDisp, jpegW, ExposureMask | ButtonPressMask | KeyPressMask);
+-
+- DCreate(&qDial, jpegW, 10, 10, 80, 100, 1, 100, 75, 5,
++
++ DCreate(&qDial, jpegW, 10, 10, 80, 100, 1.0, 100.0, 75.0, 1.0, 5.0,
+ infofg, infobg, hicol, locol, "Quality", "%");
+-
+- DCreate(&smDial, jpegW, 120, 10, 80, 100, 0, 100, 0, 5,
++
++ DCreate(&smDial, jpegW, 120, 10, 80, 100, 0.0, 100.0, 0.0, 1.0, 5.0,
+ infofg, infobg, hicol, locol, "Smoothing", "%");
+-
+- BTCreate(&jbut[J_BOK], jpegW, JWIDE-180-1, JHIGH-10-BUTTH-1, 80, BUTTH,
++
++ BTCreate(&jbut[J_BOK], jpegW, JWIDE-180-1, JHIGH-10-BUTTH-1, 80, BUTTH,
+ "Ok", infofg, infobg, hicol, locol);
+-
+- BTCreate(&jbut[J_BCANC], jpegW, JWIDE-90-1, JHIGH-10-BUTTH-1, 80, BUTTH,
++
++ BTCreate(&jbut[J_BCANC], jpegW, JWIDE-90-1, JHIGH-10-BUTTH-1, 80, BUTTH,
+ "Cancel", infofg, infobg, hicol, locol);
+-
++
+ XMapSubwindows(theDisp, jpegW);
+ }
+-
++
+
+ /***************************************************/
+ void JPEGDialog(vis)
+@@ -122,32 +138,32 @@
+ {
+ /* check event to see if it's for one of our subwindows. If it is,
+ deal accordingly, and return '1'. Otherwise, return '0' */
+-
++
+ int rv;
+ rv = 1;
+-
++
+ if (!jpegUp) return 0;
+-
++
+ if (xev->type == Expose) {
+ int x,y,w,h;
+ XExposeEvent *e = (XExposeEvent *) xev;
+ x = e->x; y = e->y; w = e->width; h = e->height;
+-
++
+ /* throw away excess expose events for 'dumb' windows */
+- if (e->count > 0 && (e->window == qDial.win ||
++ if (e->count > 0 && (e->window == qDial.win ||
+ e->window == smDial.win)) {}
+-
++
+ else if (e->window == jpegW) drawJD(x, y, w, h);
+ else if (e->window == qDial.win) DRedraw(&qDial);
+ else if (e->window == smDial.win) DRedraw(&smDial);
+ else rv = 0;
+ }
+-
++
+ else if (xev->type == ButtonPress) {
+ XButtonEvent *e = (XButtonEvent *) xev;
+ int x,y;
+ x = e->x; y = e->y;
+-
++
+ if (e->button == Button1) {
+ if (e->window == jpegW) clickJD(x,y);
+ else if (e->window == qDial.win) DTrack(&qDial, x,y);
+@@ -156,18 +172,18 @@
+ } /* button1 */
+ else rv = 0;
+ } /* button press */
+-
+-
++
++
+ else if (xev->type == KeyPress) {
+ XKeyEvent *e = (XKeyEvent *) xev;
+ char buf[128]; KeySym ks;
+ int stlen;
+-
++
+ stlen = XLookupString(e,buf,128,&ks,(XComposeStatus *) NULL);
+ buf[stlen] = '\0';
+-
++
+ RemapKeyCheck(ks, buf, &stlen);
+-
++
+ if (e->window == jpegW) {
+ if (stlen) {
+ if (buf[0] == '\r' || buf[0] == '\n') { /* enter */
+@@ -181,12 +197,12 @@
+ else rv = 0;
+ }
+ else rv = 0;
+-
++
+ if (rv==0 && (xev->type == ButtonPress || xev->type == KeyPress)) {
+ XBell(theDisp, 50);
+ rv = 1; /* eat it */
+ }
+-
++
+ return rv;
+ }
+
+@@ -205,23 +221,24 @@
+ static void drawJD(x,y,w,h)
+ int x,y,w,h;
+ {
+- char *title = "Save JPEG file...";
+- char *title1 = "Quality value determines";
+- char *title2 = "compression rate: higher";
+- char *title3 = "quality = bigger file.";
+- char *title4 = "Use smoothing if saving";
+- char *title5 = "an 8-bit image (eg, a GIF).";
+-
+- char *qtitle1 = "Default = 75.";
+- char *qtitle2 = "Useful range";
+- char *qtitle3 = "is 5-95.";
+- char *smtitle1 = "Default = 0 (none).";
+- char *smtitle2 = "10-30 is enough";
+- char *smtitle3 = "for typical GIFs.";
+-
++ const char *title = "Save JPEG file...";
++ const char *title1 = "Quality value determines";
++ const char *title2 = "compression rate: higher";
++ const char *title3 = "quality = bigger file.";
++ const char *title4 = "Use smoothing if saving";
++ const char *title5 = "an 8-bit image (eg, a GIF).";
++
++ const char *qtitle1 = "Default = 75.";
++ const char *qtitle2 = "Useful range";
++ const char *qtitle3 = "is 5-95.";
++
++ const char *smtitle1 = "Default = 0 (none).";
++ const char *smtitle2 = "10-30 is enough";
++ const char *smtitle3 = "for typical GIFs.";
++
+ int i;
+ XRectangle xr;
+-
++
+ xr.x = x; xr.y = y; xr.width = w; xr.height = h;
+ XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
+
+@@ -240,11 +257,11 @@
+ DrawString(jpegW, 15, 10+100+10+ASCENT, qtitle1);
+ DrawString(jpegW, 15, 10+100+10+ASCENT+LINEHIGH, qtitle2);
+ DrawString(jpegW, 15, 10+100+10+ASCENT+LINEHIGH*2, qtitle3);
+-
++
+ DrawString(jpegW, 115, 10+100+10+ASCENT+LINEHIGH*0, smtitle1);
+ DrawString(jpegW, 115, 10+100+10+ASCENT+LINEHIGH*1, smtitle2);
+ DrawString(jpegW, 115, 10+100+10+ASCENT+LINEHIGH*2, smtitle3);
+-
++
+ XSetClipMask(theDisp, theGC, None);
+ }
+
+@@ -255,14 +272,14 @@
+ {
+ int i;
+ BUTT *bp;
+-
++
+ /* check BUTTs */
+-
++
+ for (i=0; i<J_NBUTTS; i++) {
+ bp = &jbut[i];
+ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) break;
+ }
+-
++
+ if (i<J_NBUTTS) { /* found one */
+ if (BTTrack(bp)) doCmd(i);
+ }
+@@ -281,7 +298,7 @@
+
+ writeJPEG();
+ JPEGDialog(0);
+-
++
+ fullname = GetDirFullName();
+ if (!ISPIPE(fullname[0])) {
+ XVCreatedFile(fullname);
+@@ -304,7 +321,7 @@
+ static void writeJPEG()
+ {
+ FILE *fp;
+- int i, nc, rv, w, h, ptype, pfree;
++ int i, nc, rv, w, h, npixels, ptype, pfree;
+ register byte *ip, *ep;
+ byte *inpix, *rmap, *gmap, *bmap;
+ byte *image8, *image24;
+@@ -322,6 +339,14 @@
+ WaitCursor();
+ inpix = GenSavePic(&ptype, &w, &h, &pfree, &nc, &rmap, &gmap, &bmap);
+
++ /* this case may not be possible to trigger, but not totally clear, so... */
++ npixels = w*h;
++ if (w <= 0 || h <= 0 || npixels/w < h) {
++ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
++ fbasename, w, h);
++ return;
++ }
++
+ image8 = image24 = (byte *) NULL;
+
+
+@@ -332,37 +357,46 @@
+ if (i==nc) colorType = F_GREYSCALE; /* made it all the way through */
+ }
+ else { /* PIC24 */
+- for (i=0,ip=inpix; i<w*h && ip[0]==ip[1] && ip[1]==ip[2]; i++,ip+=3);
+- if (i==w*h) colorType = F_GREYSCALE; /* all the way through */
++ for (i=0,ip=inpix; i<npixels && ip[0]==ip[1] && ip[1]==ip[2]; i++,ip+=3);
++ if (i==npixels) colorType = F_GREYSCALE; /* all the way through */
+ }
+ }
+-
+-
++
++
+ /* first thing to do is build an 8/24-bit Greyscale/TrueColor image
+ (meaning: non-colormapped) */
+-
++
+ if (colorType == F_GREYSCALE) { /* build an 8-bit Greyscale image */
+- image8 = (byte *) malloc((size_t) w * h);
++ image8 = (byte *) malloc((size_t) npixels);
+ if (!image8) FatalError("writeJPEG: unable to malloc image8\n");
+-
++
+ if (ptype == PIC8) {
+- for (i=0,ip=image8,ep=inpix; i<w * h; i++, ip++, ep++)
++ for (i=0,ip=image8,ep=inpix; i<npixels; i++, ip++, ep++)
+ *ip = MONO(rmap[*ep], gmap[*ep], bmap[*ep]);
+ }
+ else { /* PIC24 */
+- for (i=0,ip=image8,ep=inpix; i<w*h; i++, ip++, ep+=3)
++ for (i=0,ip=image8,ep=inpix; i<npixels; i++, ip++, ep+=3)
+ *ip = MONO(ep[0],ep[1],ep[2]);
+ }
+ }
+
+ else { /* *not* F_GREYSCALE */
+ if (ptype == PIC8) {
+- image24 = (byte *) malloc((size_t) w * h * 3);
++ int count = 3*npixels;
++
++ /* already know npixels > 0 (above) */
++ if (count/3 < npixels) {
++ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
++ fbasename, w, h);
++ return;
++ }
++
++ image24 = (byte *) malloc((size_t) count);
+ if (!image24) { /* this simply isn't going to work */
+ FatalError("writeJPEG: unable to malloc image24\n");
+ }
+
+- for (i=0, ip=image24, ep=inpix; i<w*h; i++, ep++) {
++ for (i=0, ip=image24, ep=inpix; i<npixels; i++, ep++) {
+ *ip++ = rmap[*ep];
+ *ip++ = gmap[*ep];
+ *ip++ = bmap[*ep];
+@@ -374,16 +408,16 @@
+ }
+ }
+
+-
++
+ /* in any event, we've got some valid image. Do the JPEG Thing */
+ rv = writeJFIF(fp, (colorType==F_GREYSCALE) ? image8 : image24,
+ w, h, colorType);
+-
++
+ if (colorType == F_GREYSCALE) free(image8);
+ else if (ptype == PIC8) free(image24);
+
+ if (pfree) free(inpix);
+-
++
+ if (CloseOutFile(fp, filename, rv) == 0) DirBox(0);
+ SetCursors(-1);
+ }
+@@ -400,7 +434,11 @@
+
+
+ /**************************************************/
+-METHODDEF void xv_error_exit(cinfo)
++#if JPEG_LIB_VERSION > 60
++METHODDEF(void) xv_error_exit(cinfo)
++#else
++METHODDEF void xv_error_exit(cinfo)
++#endif
+ j_common_ptr cinfo;
+ {
+ my_error_ptr myerr;
+@@ -412,7 +450,11 @@
+
+
+ /**************************************************/
+-METHODDEF void xv_error_output(cinfo)
++#if JPEG_LIB_VERSION > 60
++METHODDEF(void) xv_error_output(cinfo)
++#else
++METHODDEF void xv_error_output(cinfo)
++#endif
+ j_common_ptr cinfo;
+ {
+ my_error_ptr myerr;
+@@ -426,7 +468,11 @@
+
+
+ /**************************************************/
+-METHODDEF void xv_prog_meter(cinfo)
++#if JPEG_LIB_VERSION > 60
++METHODDEF(void) xv_prog_meter(cinfo)
++#else
++METHODDEF void xv_prog_meter(cinfo)
++#endif
+ j_common_ptr cinfo;
+ {
+ struct jpeg_progress_mgr *prog;
+@@ -462,14 +508,16 @@
+ struct my_error_mgr jerr;
+ JSAMPROW rowptr[1];
+ FILE *fp;
+- static byte *pic;
++ const char *colorspace_name = "Color";
++ byte *pic, *pic_end;
+ long filesize;
+- int i,w,h,bperpix;
++ int i,w,h,bperpix,bperline,count;
+
+
+ fbasename = BaseName(fname);
+ pic = (byte *) NULL;
+ comment = (char *) NULL;
++ exifInfo = (byte *) NULL;
+
+ pinfo->type = PIC8;
+
+@@ -485,14 +533,22 @@
+ jerr.pub.output_message = xv_error_output;
+
+ if (setjmp(jerr.setjmp_buffer)) {
++L1:
+ /* if we're here, it blowed up... */
+ jpeg_destroy_decompress(&cinfo);
+ fclose(fp);
+- if (pic) free(pic);
+- if (comment) free(comment);
+-
+- pinfo->pic = (byte *) NULL;
+- pinfo->comment = (char *) NULL;
++ if (pic) free(pic);
++ if (comment) free(comment);
++ if (exifInfo) free(exifInfo);
++
++ pinfo->pic = (byte *) NULL;
++ pinfo->comment = (char *) NULL;
++ pinfo->exifInfo = (byte *) NULL;
++ pinfo->exifInfoSize = 0;
++
++ comment = (char *) NULL;
++ exifInfo = (byte *) NULL;
++ exifInfoSize = 0;
+
+ return 0;
+ }
+@@ -500,6 +556,7 @@
+
+ jpeg_create_decompress(&cinfo);
+ jpeg_set_marker_processor(&cinfo, JPEG_COM, xv_process_comment);
++ jpeg_set_marker_processor(&cinfo, JPEG_APP1, xv_process_app1);
+
+ /* hook up progress meter */
+ prog.progress_monitor = xv_prog_meter;
+@@ -515,9 +572,8 @@
+
+
+ jpeg_calc_output_dimensions(&cinfo);
+- w = cinfo.output_width;
+- h = cinfo.output_height;
+- pinfo->normw = w; pinfo->normh = h;
++ pinfo->normw = w = cinfo.output_width;
++ pinfo->normh = h = cinfo.output_height;
+
+ if (quick) {
+ int wfac, hfac, fac;
+@@ -543,75 +599,120 @@
+ }
+
+
+- if (cinfo.jpeg_color_space == JCS_GRAYSCALE) {
+- cinfo.out_color_space = JCS_GRAYSCALE;
+- cinfo.quantize_colors = FALSE;
+-
+- SetISTR(ISTR_INFO,"Loading %dx%d Greyscale JPEG (%ld bytes)...",
+- w,h,filesize);
+-
+- for (i=0; i<256; i++) pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
+- }
+- else {
+- cinfo.out_color_space = JCS_RGB;
+- cinfo.quantize_colors = FALSE; /* default: give 24-bit image to XV */
+-
+- if (!quick && picType==PIC8 && conv24MB.flags[CONV24_LOCK] == 1) {
+- /*
+- * we're locked into 8-bit mode:
+- * if CONV24_FAST, use JPEG's one-pass quantizer
+- * if CONV24_SLOW, use JPEG's two-pass quantizer
+- * if CONV24_BEST, or other, ask for 24-bit image and hand it to XV
+- */
+-
+- cinfo.desired_number_of_colors = 256;
+-
+- if (conv24 == CONV24_FAST || conv24 == CONV24_SLOW) {
+- cinfo.quantize_colors = TRUE;
+- state824=1; /* image was converted from 24 to 8 bits */
+-
+- cinfo.two_pass_quantize = (conv24 == CONV24_SLOW);
++ cinfo.quantize_colors = FALSE; /* default: give 24-bit image to XV */
++ switch (cinfo.num_components) {
++ case 1:
++ cinfo.out_color_space = JCS_GRAYSCALE;
++ colorspace_name = "Greyscale";
++ for (i=0; i<256; i++) pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
++ break;
++
++ case 3:
++ cinfo.out_color_space = JCS_RGB;
++ goto L2;
++
++ case 4:
++ cinfo.out_color_space = JCS_CMYK;
++ colorspace_name = "4-Plane Color";
++L2:
++ if (!quick && picType == PIC8 && conv24MB.flags[CONV24_LOCK] == 1) {
++ /*
++ * we're locked into 8-bit mode:
++ * if CONV24_FAST, use JPEG's one-pass quantizer
++ * if CONV24_SLOW, use JPEG's two-pass quantizer
++ * if CONV24_BEST, or other, ask for 24-bit image and hand it to XV
++ */
++ cinfo.desired_number_of_colors = 256;
++
++ if (conv24 == CONV24_FAST || conv24 == CONV24_SLOW) {
++ cinfo.quantize_colors = TRUE;
++ state824 = 1; /* image was converted from 24 to 8 bits */
++ cinfo.two_pass_quantize = (conv24 == CONV24_SLOW);
++ }
+ }
+- }
+-
+- SetISTR(ISTR_INFO,"Loading %dx%d Color JPEG (%ld bytes)...",
+- w,h,filesize);
+- }
+-
+- jpeg_calc_output_dimensions(&cinfo); /* note colorspace changes... */
+-
++ break;
+
+- if (cinfo.output_components != 1 && cinfo.output_components != 3) {
+- SetISTR(ISTR_WARNING, "%s: can't read %d-plane JPEG file!",
+- fbasename, cinfo.output_components);
+- jpeg_destroy_decompress(&cinfo);
+- fclose(fp);
+- if (comment) free(comment);
+- return 0;
++ default:
++ SetISTR(ISTR_WARNING, "%s: can't read %d-plane JPEG file!",
++ fbasename, cinfo.output_components);
++ goto L1;
+ }
++ SetISTR(ISTR_INFO, "Loading %dx%d %s JPEG (%ld bytes)...", w, h,
++ colorspace_name, filesize);
++
++ jpeg_calc_output_dimensions(&cinfo); /* note colorspace changes... */
+
+
+ bperpix = cinfo.output_components;
+ pinfo->type = (bperpix == 1) ? PIC8 : PIC24;
+
+- pic = (byte *) malloc((size_t) (w * h * bperpix));
++ bperline = w * bperpix;
++ count = h * bperline;
++ if (w <= 0 || h <= 0 || bperline/w < bperpix || count/h < bperline) {
++ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
++ fbasename, w, h);
++ goto L1;
++ }
++
++ pic = (byte *) malloc((size_t) count);
+ if (!pic) {
+ SetISTR(ISTR_WARNING, "%s: can't read JPEG file - out of memory",
+ fbasename);
+- jpeg_destroy_decompress(&cinfo);
+- fclose(fp);
+- if (comment) free(comment);
+- return 0;
++ goto L1;
+ }
+-
++ pic_end = pic + count;
++
+ jpeg_start_decompress(&cinfo);
+
+ while (cinfo.output_scanline < cinfo.output_height) {
++ if (cinfo.output_scanline < 0) { /* should never happen, but... */
++ SetISTR(ISTR_WARNING, "%s: invalid negative scanline (%d)",
++ fbasename, cinfo.output_scanline);
++ goto L1;
++ }
+ rowptr[0] = (JSAMPROW) &pic[cinfo.output_scanline * w * bperpix];
+ (void) jpeg_read_scanlines(&cinfo, rowptr, (JDIMENSION) 1);
+ }
+
+-
++
++ /* Convert CMYK to RGB color space */
++
++ if (bperpix > 3) {
++ register byte *p = pic;
++
++ /* According to documentation accompanying the IJG JPEG Library, it appears
++ * that some versions of Adobe Systems' "Photoshop" write inverted CMYK
++ * data, where Byte 0 represents 100% ink coverage instead of 0% ink as
++ * you'd expect. The JPEG Library's implementors made a policy decision
++ * not to correct for this in the Library, but instead force applications
++ * to deal with it; so we try to do that here:
++ */
++ if (cinfo.saw_Adobe_marker) { /* assume inverted data */
++ register byte *q = pic;
++
++ do {
++ register int cmy, k = 255 - q[3];
++
++ if ((cmy = *q++ - k) < 0) cmy = 0; *p++ = cmy; /* R */
++ if ((cmy = *q++ - k) < 0) cmy = 0; *p++ = cmy; /* G */
++ if ((cmy = *q++ - k) < 0) cmy = 0; *p++ = cmy; /* B */
++ } while (++q <= pic_end);
++ }
++ else { /* assume normal data */
++ register byte *q = pic;
++
++ do {
++ register int cmy, k = 255 - q[3];
++
++ if ((cmy = k - *q++) < 0) cmy = 0; *p++ = cmy; /* R */
++ if ((cmy = k - *q++) < 0) cmy = 0; *p++ = cmy; /* G */
++ if ((cmy = k - *q++) < 0) cmy = 0; *p++ = cmy; /* B */
++ } while (++q <= pic_end);
++ }
++ pic = realloc(pic,p-pic); /* Release extra storage */
++ }
++
++
+
+ /* return 'PICINFO' structure to XV */
+
+@@ -621,38 +722,59 @@
+ pinfo->frmType = F_JPEG;
+
+ if (cinfo.out_color_space == JCS_GRAYSCALE) {
+- sprintf(pinfo->fullInfo, "Greyscale JPEG. (%ld bytes)", filesize);
+ pinfo->colType = F_GREYSCALE;
+-
++
+ for (i=0; i<256; i++) pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
+ }
+ else {
+- sprintf(pinfo->fullInfo, "Color JPEG. (%ld bytes)", filesize);
+ pinfo->colType = F_FULLCOLOR;
+
+ if (cinfo.quantize_colors) {
+- for (i=0; i<cinfo.actual_number_of_colors; i++) {
+- pinfo->r[i] = cinfo.colormap[0][i];
+- pinfo->g[i] = cinfo.colormap[1][i];
+- pinfo->b[i] = cinfo.colormap[2][i];
++ switch (bperpix) {
++ case 3:
++ for (i = 0; i < cinfo.actual_number_of_colors; i++) {
++ pinfo->r[i] = cinfo.colormap[0][i];
++ pinfo->g[i] = cinfo.colormap[1][i];
++ pinfo->b[i] = cinfo.colormap[2][i];
++ }
++ break;
++
++ case 4:
++ for (i = 0; i < cinfo.actual_number_of_colors; i++) {
++ register int cmy, k = cinfo.colormap[3][i];
++
++ if ((cmy = 255 - cinfo.colormap[0][i] - k) < 0) cmy = 0;
++ pinfo->r[i] = cmy;
++ if ((cmy = 255 - cinfo.colormap[1][i] - k) < 0) cmy = 0;
++ pinfo->g[i] = cmy;
++ if ((cmy = 255 - cinfo.colormap[2][i] - k) < 0) cmy = 0;
++ pinfo->b[i] = cmy;
++ }
++ break;
+ }
+ }
+ }
+-
+- sprintf(pinfo->shrtInfo, "%dx%d %s JPEG. ", w,h,
+- (cinfo.out_color_space == JCS_GRAYSCALE) ? "Greyscale " : "Color ");
+-
+- pinfo->comment = comment;
++
++ sprintf(pinfo->fullInfo, "%s JPEG. (%ld bytes)", colorspace_name, filesize);
++ sprintf(pinfo->shrtInfo, "%dx%d %s JPEG. ", w, h, colorspace_name);
++
++ pinfo->comment = comment;
++ pinfo->exifInfo = exifInfo;
++ pinfo->exifInfoSize = exifInfoSize;
+
+ jpeg_finish_decompress(&cinfo);
+ jpeg_destroy_decompress(&cinfo);
+ fclose(fp);
+
+- comment = (char *) NULL;
++ /* ownership transferred to pinfo */
++ comment = (char *) NULL;
++ exifInfo = (byte *) NULL;
++ exifInfoSize = 0;
++
+ return 1;
+ }
+-
+-
++
++
+
+
+ /**************************************************/
+@@ -660,7 +782,7 @@
+ j_decompress_ptr cinfo;
+ {
+ struct jpeg_source_mgr *datasrc = cinfo->src;
+-
++
+ if (datasrc->bytes_in_buffer == 0) {
+ if (! (*datasrc->fill_input_buffer) (cinfo))
+ ERREXIT(cinfo, JERR_CANT_SUSPEND);
+@@ -671,7 +793,11 @@
+
+
+ /**************************************************/
+-METHODDEF boolean xv_process_comment(cinfo)
++#if JPEG_LIB_VERSION > 60
++METHODDEF(boolean) xv_process_comment(cinfo)
++#else
++METHODDEF boolean xv_process_comment(cinfo)
++#endif
+ j_decompress_ptr cinfo;
+ {
+ int length, hasnull;
+@@ -688,7 +814,7 @@
+ }
+ else comment = (char *) realloc(comment, strlen(comment) + length + 1);
+ if (!comment) FatalError("out of memory in xv_process_comment");
+-
++
+ oldsp = sp = comment + strlen(comment);
+ hasnull = 0;
+
+@@ -705,6 +831,41 @@
+ }
+
+
++/**************************************************/
++#if JPEG_LIB_VERSION > 60
++METHODDEF(boolean) xv_process_app1(cinfo) /* Geoff H. Kuenning 20030331 */
++#else
++METHODDEF boolean xv_process_app1(cinfo)
++#endif
++ j_decompress_ptr cinfo;
++{
++ int length;
++ unsigned int ch;
++ byte *sp;
++
++ length = j_getc(cinfo) << 8;
++ length += j_getc(cinfo);
++ length -= 2; /* discount the length word itself */
++
++ if (!exifInfo) {
++ exifInfo = (byte *) malloc((size_t) length);
++ exifInfoSize = 0;
++ }
++ else exifInfo = (byte *) realloc(exifInfo, exifInfoSize + length);
++ if (!exifInfo) FatalError("out of memory in xv_process_app1 (EXIF info)");
++
++ sp = exifInfo + exifInfoSize;
++ exifInfoSize += length;
++
++ while (length-- > 0) {
++ ch = j_getc(cinfo);
++ *sp++ = (byte) ch;
++ }
++
++ return TRUE;
++}
++
++
+
+
+ /***************************************************************************/
+@@ -759,8 +920,8 @@
+
+
+ jpeg_set_defaults(&cinfo);
+- jpeg_set_quality(&cinfo, qDial.val, TRUE);
+- cinfo.smoothing_factor = smDial.val;
++ jpeg_set_quality(&cinfo, (int)qDial.val, TRUE);
++ cinfo.smoothing_factor = (int)smDial.val;
+
+
+ jpeg_start_compress(&cinfo, TRUE);
+@@ -769,20 +930,20 @@
+ /*** COMMENT HANDLING ***/
+
+ sprintf(xvcmt, "%sXV %s Quality = %d, Smoothing = %d\n",
+- CREATOR_STR, REVDATE, qDial.val, smDial.val);
+-
++ CREATOR_STR, REVDATE, (int)qDial.val, (int)smDial.val);
++
+ if (picComments) { /* append XV comment */
+ char *sp, *sp1; int done;
+
+ i = strlen(picComments);
+ comment = (char *) malloc(i + strlen(xvcmt) + 2 + 1);
+ if (!comment) FatalError("out of memory in writeJFIF()");
+-
++
+ strcpy(comment, picComments);
+-
++
+ /* see if there's a line that starts with 'CREATOR: ' in the
+ comments. If there is, rip it out. */
+-
++
+ sp = comment; done = 0;
+ while (!done && *sp) {
+ if (strncmp(sp, CREATOR_STR, strlen(CREATOR_STR)) == 0) {
+@@ -801,7 +962,7 @@
+ }
+ }
+
+- /* count # of \n's at end of comment.
++ /* count # of \n's at end of comment.
+ If none, add 2. If one, add 1. If two or more, add none. */
+
+ sp = comment + strlen(comment);
+@@ -814,15 +975,18 @@
+ strcat(comment, xvcmt);
+ }
+ else comment = xvcmt;
+-
+-
+- jpeg_write_marker(&cinfo,JPEG_COM,(byte *) comment,(u_int) strlen(comment));
+-
++
++
++ jpeg_write_marker(&cinfo, JPEG_COM, (byte *)comment, (u_int)strlen(comment));
++
++ if (picExifInfo) jpeg_write_marker(&cinfo, JPEG_APP1, (byte *)picExifInfo,
++ (u_int)picExifInfoSize);
++
+ while (cinfo.next_scanline < cinfo.image_height) {
+ rowptr[0] = (JSAMPROW) &pic[cinfo.next_scanline * w * bperpix];
+ (void) jpeg_write_scanlines(&cinfo, rowptr, (JDIMENSION) 1);
+ }
+-
++
+ jpeg_finish_compress(&cinfo);
+ jpeg_destroy_compress(&cinfo);
+ return 0;
+@@ -831,4 +995,27 @@
+
+
+
++
++/*******************************************/
++void
++VersionInfoJPEG() /* GRR 19980605, 19980607 */
++{
++ int major = JPEG_LIB_VERSION / 10;
++ int minor = JPEG_LIB_VERSION % 10;
++ char minoralpha[2];
++
++ if (minor) {
++ minoralpha[0] = (char)(minor - 1 + 'a');
++ minoralpha[1] = '\0';
++ } else
++ minoralpha[0] = '\0';
++
++/* fprintf(stderr, " Compiled with libjpeg %d.%d.\n", major, minor); */
++ fprintf(stderr, " Compiled with libjpeg %d%s.\n", major, minoralpha);
++}
++
++
++
++
++
+ #endif /* HAVE_JPEG */
+diff -ru xv-3.10a/xvmisc.c xv-3.10a-enhancements/xvmisc.c
+--- xv-3.10a/xvmisc.c 1995-01-13 15:41:34.000000000 -0800
++++ xv-3.10a-enhancements/xvmisc.c 2007-05-13 17:32:59.000000000 -0700
+@@ -21,13 +21,15 @@
+ * void LoadFishCursors()
+ * void WaitCursor()
+ * void SetCursors(int)
+- * char *BaseName(char *)
++ * const char *BaseName(const char *)
+ * void DrawTempGauge(win, x,y,w,h, percent, fg,bg,hi,lo, str)
+ * void ProgressMeter(min, max, val, str);
+ * void xvbcopy(src, dst, length)
+ * int xvbcmp (s1, s2, length)
+ * void xvbzero(s, length)
+ * char *xv_strstr(s1, s2)
++ * FILE *xv_fopen(str, str)
++ * void xv_mktemp(str)
+ * void Timer(milliseconds)
+ */
+
+@@ -36,6 +38,10 @@
+ #define NEEDSTIME
+ #include "xv.h"
+
++#ifdef __linux__ /* probably others, too, but being conservative */
++# include <unistd.h> /* getwd() */
++#endif
++
+ #include "bits/fc_left"
+ #include "bits/fc_leftm"
+ #include "bits/fc_left1"
+@@ -61,21 +67,24 @@
+
+ /* the following fakes 'XSetWMProtocols(theDisp, win, &atom_DELWIN, 1);' */
+
+- if (! atom_PROTOCOLS)
++ if (! atom_PROTOCOLS)
+ atom_PROTOCOLS = XInternAtom (theDisp, "WM_PROTOCOLS", False);
+
+ if (atom_PROTOCOLS == None) return;
+
+- XChangeProperty(theDisp, win, atom_PROTOCOLS, XA_ATOM, 32,
++ XChangeProperty(theDisp, win, atom_PROTOCOLS, XA_ATOM, 32,
+ PropModeReplace, (unsigned char *) &atom_DELWIN, 1);
+ }
+
+
+ /***************************************************/
+ Window CreateWindow(name,clname,geom,defw,defh,fg,bg,usesize)
+-char *name, *clname, *geom;
+-int defw,defh,usesize;
+-unsigned long fg, bg;
++ const char *name;
++ const char *clname;
++ const char *geom;
++ int defw,defh;
++ unsigned long fg, bg;
++ int usesize;
+ {
+ Window win;
+ XSetWindowAttributes xswa;
+@@ -91,16 +100,24 @@
+ x = y = 1;
+ i = XParseGeometry(geom,&x,&y, (unsigned int *) &w, (unsigned int *) &h);
+
+- if ((i&XValue || i&YValue)) hints.flags = USPosition;
++ if ((i&XValue || i&YValue)) hints.flags = USPosition;
+ else hints.flags = PPosition;
+-
++
+ if (!usesize || !(i&WidthValue)) w = defw;
+ if (!usesize || !(i&HeightValue)) h = defh;
+
+- hints.flags |= USSize;
++ hints.flags |= USSize | PWinGravity;
+
+- if (i&XValue && i&XNegative) x = dispWIDE - w - abs(x);
+- if (i&YValue && i&YNegative) y = dispHIGH - h - abs(y);
++ hints.win_gravity = NorthWestGravity;
++ if (i&XValue && i&XNegative) {
++ hints.win_gravity = NorthEastGravity;
++ x = dispWIDE - (w + 2 * bwidth) - abs(x);
++ }
++ if (i&YValue && i&YNegative) {
++ hints.win_gravity = (hints.win_gravity == NorthWestGravity) ?
++ SouthWestGravity : SouthEastGravity;
++ y = dispHIGH - (h + 2 * bwidth) - abs(y);
++ }
+
+
+ #define VROOT_TRANS
+@@ -130,77 +147,76 @@
+ xswamask = CWBackPixel | CWBorderPixel | CWColormap;
+ if (!usesize) xswamask |= CWBitGravity;
+
+- win = XCreateWindow(theDisp, rootW, x, y, (u_int) w, (u_int) h,
++ win = XCreateWindow(theDisp, rootW, x, y, (u_int) w, (u_int) h,
+ (u_int) bwidth, (int) dispDEEP, InputOutput,
+ theVisual, xswamask, &xswa);
+ if (!win) return(win); /* leave immediately if couldn't create */
+
+
+- XSetStandardProperties(theDisp, win, name, name, None, NULL, 0, &hints);
+-
+ xwmh.input = True;
+ xwmh.flags = InputHint;
+ if (iconPix) { xwmh.icon_pixmap = iconPix; xwmh.flags |= IconPixmapHint; }
+- XSetWMHints(theDisp, win, &xwmh);
+
+ if (clname && strlen(clname)) {
+ classh.res_name = "xv";
+- classh.res_class = clname;
+- XSetClassHint(theDisp, win, &classh);
++ classh.res_class = (char *) clname;
+ StoreDeleteWindowProp(win);
+ }
+
++ XmbSetWMProperties(theDisp, win, name, name, NULL, 0, &hints, &xwmh,
++ clname ? &classh : NULL);
++
+ return(win);
+ }
+-
++
+
+
+ /**************************************************/
+ void DrawString(win,x,y,str)
+- Window win;
+- int x,y;
+- char *str;
++ Window win;
++ int x,y;
++ const char *str;
+ {
+ XDrawString(theDisp, win, theGC, x, y, str, (int) strlen(str));
+ }
+
+-
++
+ /**************************************************/
+ void CenterString(win,x,y,str)
+- Window win;
+- int x,y;
+- char *str;
++ Window win;
++ int x,y;
++ const char *str;
+ {
+ DrawString(win, CENTERX(mfinfo, x, str), CENTERY(mfinfo, y), str);
+ }
+
+-
++
+ /**************************************************/
+ void ULineString(win,x,y,str)
+- Window win;
+- int x,y;
+- char *str;
++ Window win;
++ int x,y;
++ const char *str;
+ {
+ DrawString(win, x, y, str);
+- XDrawLine(theDisp, win, theGC, x, y+DESCENT-1,
++ XDrawLine(theDisp, win, theGC, x, y+DESCENT-1,
+ x+StringWidth(str), y+DESCENT-1);
+ }
+
+-
++
+ /**************************************************/
+ int StringWidth(str)
+- char *str;
++ const char *str;
+ {
+ return(XTextWidth(mfinfo, str, (int) strlen(str)));
+ }
+
+-
++
+ /**************************************************/
+ int CursorKey(ks, shift, dotrans)
+ KeySym ks;
+ int shift, dotrans;
+ {
+- /* called by the KeyPress/KeyRelease event handler to determine if a
++ /* called by the KeyPress/KeyRelease event handler to determine if a
+ given keypress is a cursor key. More complex than you'd think, since
+ certain Sun Keyboards generate a variety of odd keycodes, and not all
+ keyboards *have* all these keys. Note that 'shifted' arrow keys
+@@ -225,29 +241,29 @@
+
+ int i = CK_NONE;
+
+- if (ks==XK_Up || ks==XK_KP_Up ||
+- ks==XK_KP_8 || ks==XK_F28) i=CK_UP;
++ if (ks==XK_Up || ks==XK_KP_Up ||
++ ks==XK_F28) i=CK_UP;
+
+- else if (ks==XK_Down || ks==XK_KP_Down ||
+- ks==XK_KP_2 || ks==XK_F34) i=CK_DOWN;
++ else if (ks==XK_Down || ks==XK_KP_Down ||
++ ks==XK_F34) i=CK_DOWN;
+
+- else if (ks==XK_Left || ks==XK_KP_Left ||
+- ks==XK_KP_4 || ks==XK_F30) i=CK_LEFT;
++ else if (ks==XK_Left || ks==XK_KP_Left ||
++ ks==XK_F30) i=CK_LEFT;
+
+- else if (ks==XK_Right || ks==XK_KP_Right ||
+- ks==XK_KP_6 || ks==XK_F32) i=CK_RIGHT;
++ else if (ks==XK_Right || ks==XK_KP_Right ||
++ ks==XK_F32) i=CK_RIGHT;
+
+ else if (ks==XK_Prior || ks==XK_KP_Prior ||
+- ks==XK_KP_9 || ks==XK_F29) i=CK_PAGEUP;
++ ks==XK_F29) i=CK_PAGEUP;
+
+ else if (ks==XK_Next || ks==XK_KP_Next ||
+- ks==XK_KP_3 || ks==XK_F35) i=CK_PAGEDOWN;
++ ks==XK_F35) i=CK_PAGEDOWN;
+
+ else if (ks==XK_Home || ks==XK_KP_Home ||
+- ks==XK_KP_7 || ks==XK_F27) i=CK_HOME;
++ ks==XK_F27) i=CK_HOME;
+
+ else if (ks==XK_End || ks==XK_KP_End ||
+- ks==XK_KP_1 || ks==XK_F33) i=CK_END;
++ ks==XK_F33) i=CK_END;
+
+ else i = CK_NONE;
+
+@@ -257,7 +273,7 @@
+ else if (i==CK_UP) i=CK_PAGEUP;
+ else if (i==CK_DOWN) i=CK_PAGEDOWN;
+ }
+-
++
+ return i;
+ }
+
+@@ -334,9 +350,9 @@
+ ev.window = win;
+ ev.x = x; ev.y = y; ev.width = w; ev.height = h;
+ ev.count = 0;
+-
++
+ XSendEvent(theDisp, win, False, NoEventMask, (XEvent *) &ev);
+-}
++}
+
+
+ /***********************************/
+@@ -381,7 +397,7 @@
+ u_int w, h;
+ u_long bg;
+ {
+- /* stipple a rectangular region by drawing 'bg' where there's 1's
++ /* stipple a rectangular region by drawing 'bg' where there's 1's
+ in the stipple pattern */
+
+ XSetFillStyle (theDisp, theGC, FillStippled);
+@@ -400,7 +416,7 @@
+ unsigned int w,h;
+ unsigned long hi, lo, bg;
+ {
+- int i,r,x1,y1;
++ int i, x1, y1;
+
+ x1 = x + (int) w;
+ y1 = y + (int) h;
+@@ -413,7 +429,7 @@
+ XDrawLine(theDisp, win, theGC, x+i, y1-i, x+i, y+i);
+ XDrawLine(theDisp, win, theGC, x+i, y+i, x1-i, y+i);
+ }
+-
++
+ /* draw bot-right */
+ XSetForeground(theDisp, theGC, (inout==R3D_OUT) ? lo : hi);
+
+@@ -431,18 +447,18 @@
+ }
+ }
+ }
+-
++
+
+
+ /**************************************************/
+ void SetCropString()
+ {
+ /* sets the crop string in the info box to be correct. should
+- be called whenever 'but[BCROP].active', cXOFF,cYOFF,cWIDE,cHIGH
++ be called whenever 'but[BCROP].active', cXOFF,cYOFF,cWIDE,cHIGH
+ are changed */
+
+- if (cpic != pic)
+- SetISTR(ISTR_CROP, "%dx%d rectangle starting at %d,%d",
++ if (cpic != pic)
++ SetISTR(ISTR_CROP, "%dx%d rectangle starting at %d,%d",
+ cWIDE, cHIGH, cXOFF, cYOFF);
+ else SetISTR(ISTR_CROP, "<none>");
+ }
+@@ -469,7 +485,7 @@
+ char *st;
+
+ /* give 'em time to read message */
+- if (infoUp || ctrlUp || anyBrowUp) sleep(3);
++ if (infoUp || ctrlUp || anyBrowUp) sleep(3);
+ else {
+ st = GetISTR(ISTR_INFO);
+ OpenAlert(st);
+@@ -477,11 +493,11 @@
+ CloseAlert();
+ }
+ }
+-
++
+
+ /***********************************/
+ void FatalError (identifier)
+- char *identifier;
++ const char *identifier;
+ {
+ fprintf(stderr, "%s: %s\n",cmd, identifier);
+ Quit(-1);
+@@ -491,12 +507,17 @@
+ /***********************************/
+ void Quit(i)
+ int i;
+-{
++{
+ /* called when the program exits. frees everything explictly created
+ EXCEPT allocated colors. This is used when 'useroot' is in operation,
+ as we have to keep the alloc'd colors around, but we don't want anything
+ else to stay */
+
++#ifdef AUTO_EXPAND
++ chdir(initdir);
++ Vdsettle();
++#endif
++
+ if (!theDisp) exit(i); /* called before connection opened */
+
+ if (useroot && i==0) { /* save the root info */
+@@ -516,14 +537,38 @@
+ if (jpegW) XDestroyWindow(theDisp, jpegW);
+ #endif
+
++#ifdef HAVE_JP2K
++ if (jp2kW) XDestroyWindow(theDisp, jp2kW);
++#endif
++
+ #ifdef HAVE_TIFF
+ if (tiffW) XDestroyWindow(theDisp, tiffW);
+ #endif
+
++#ifdef HAVE_PNG
++ if (pngW) XDestroyWindow(theDisp, pngW);
++#endif
++
++#ifdef HAVE_PCD
++ if (pcdW) XDestroyWindow(theDisp, pcdW);
++#endif
++
++#ifdef HAVE_PIC2
++ if (pic2W) XDestroyWindow(theDisp, pic2W);
++#endif
++
++#ifdef HAVE_MGCSFX
++ if (mgcsfxW) XDestroyWindow(theDisp, mgcsfxW);
++#endif
++
++#ifdef HAVE_PNG
++ if (pngW) XDestroyWindow(theDisp, pngW);
++#endif
++
+ /* if NOT using stdcmap for images, free stdcmap */
+- if (colorMapMode != CM_STDCMAP) {
++ if (colorMapMode != CM_STDCMAP) {
+ int j;
+- for (j=0; j<stdnfcols; j++)
++ for (j=0; j<stdnfcols; j++)
+ xvFreeColors(theDisp, theCmap, &stdfreecols[j], 1, 0L);
+ }
+
+@@ -543,13 +588,13 @@
+ if (origlist[j][0] != '/') { /* relative path, prepend 'initdir' */
+ sprintf(str,"%s/%s", initdir, origlist[j]);
+ if (unlink(str)) {
+- fprintf(stderr,"%s: can't delete '%s' - %s\n",
++ fprintf(stderr,"%s: can't delete '%s' - %s\n",
+ cmd, str, ERRSTR(errno));
+ }
+ }
+ else {
+ if (unlink(origlist[j])) {
+- fprintf(stderr,"%s: can't delete '%s' - %s\n",
++ fprintf(stderr,"%s: can't delete '%s' - %s\n",
+ cmd, origlist[j], ERRSTR(errno));
+ }
+ }
+@@ -567,7 +612,7 @@
+ void LoadFishCursors()
+ {
+ #define fc_w 16
+-#define fc_h 16
++#define fc_h 16
+
+ Pixmap flpix,flmpix,fmpix,fmmpix,frpix,frmpix;
+ Pixmap fl1pix, fl1mpix, fr1pix, fr1mpix;
+@@ -592,7 +637,7 @@
+
+ fr1pix = XCreatePixmapFromBitmapData(theDisp, ctrlW, (char *) fc_right1_bits,
+ fc_w, fc_h, 1L, 0L, 1);
+- fr1mpix = XCreatePixmapFromBitmapData(theDisp, ctrlW,
++ fr1mpix = XCreatePixmapFromBitmapData(theDisp, ctrlW,
+ (char *) fc_right1m_bits,
+ fc_w, fc_h, 1L, 0L, 1);
+
+@@ -613,7 +658,7 @@
+ fr1curs= XCreatePixmapCursor(theDisp, fr1pix,fr1mpix,&fg, &bg, 8,8);
+ frcurs = XCreatePixmapCursor(theDisp, frpix, frmpix, &fg, &bg, 8,8);
+
+- if (!flcurs || !fmcurs || !frcurs || !fl1curs || !fr1curs)
++ if (!flcurs || !fmcurs || !frcurs || !fl1curs || !fr1curs)
+ { flcurs = fmcurs = frcurs = (Cursor) NULL; }
+ }
+
+@@ -633,8 +678,8 @@
+ time(&lastwaittime);
+ waiting=1;
+ xwmh.input = True;
+- xwmh.icon_pixmap = riconPix;
+- xwmh.icon_mask = riconmask;
++ xwmh.icon_pixmap = riconPix;
++ xwmh.icon_mask = riconmask;
+ xwmh.flags = (InputHint | IconPixmapHint | IconMaskHint) ;
+ if (!useroot && mainW) XSetWMHints(theDisp, mainW, &xwmh);
+ if ( useroot && ctrlW) XSetWMHints(theDisp, ctrlW, &xwmh);
+@@ -665,8 +710,8 @@
+ if (waiting) {
+ waiting=0;
+ xwmh.input = True;
+- xwmh.icon_pixmap = iconPix;
+- xwmh.icon_mask = iconmask;
++ xwmh.icon_pixmap = iconPix;
++ xwmh.icon_mask = iconmask;
+ xwmh.flags = (InputHint | IconPixmapHint | IconMaskHint) ;
+ if (!useroot && mainW) XSetWMHints(theDisp, mainW, &xwmh);
+ if ( useroot && ctrlW) XSetWMHints(theDisp, ctrlW, &xwmh);
+@@ -694,11 +739,11 @@
+
+ XFlush(theDisp);
+ }
+-
++
+
+ static void set_cursors(mainc, otherc)
+ Cursor mainc, otherc;
+-{
++{
+ if (!useroot && mainW) XDefineCursor(theDisp, mainW, mainc);
+ if (infoW) XDefineCursor(theDisp, infoW, otherc);
+ if (ctrlW) XDefineCursor(theDisp, ctrlW, otherc);
+@@ -708,42 +753,63 @@
+
+ SetBrowseCursor(otherc);
+ SetTextCursor(otherc);
+-
++
+ #ifdef HAVE_JPEG
+ if (jpegW) XDefineCursor(theDisp, jpegW, otherc);
+ #endif
+-
++
++#ifdef HAVE_JP2K
++ if (jp2kW) XDefineCursor(theDisp, jp2kW, otherc);
++#endif
++
+ #ifdef HAVE_TIFF
+ if (tiffW) XDefineCursor(theDisp, tiffW, otherc);
+ #endif
++
++#ifdef HAVE_PNG
++ if (pngW) XDefineCursor(theDisp, pngW, otherc);
++#endif
++
++#ifdef HAVE_PNG
++ if (pngW) XDefineCursor(theDisp, pngW, otherc);
++#endif
++
++#ifdef HAVE_PCD
++ if (pcdW) XDefineCursor(theDisp, pcdW, otherc);
++#endif
++
++#ifdef HAVE_PIC2
++ if (pic2W) XDefineCursor(theDisp, pic2W, otherc);
++#endif
++
++#ifdef HAVE_MGCSFX
++ if (mgcsfxW) XDefineCursor(theDisp, mgcsfxW, otherc);
++#endif
+ }
+
+
+ /***************************************************/
+-char *BaseName(fname)
+- char *fname;
++const char *BaseName(fname)
++ const char *fname;
+ {
+- char *basname;
++ const char *basname;
+
+- /* given a complete path name ('/foo/bar/weenie.gif'), returns just the
++ /* given a complete path name ('/foo/bar/weenie.gif'), returns just the
+ 'simple' name ('weenie.gif'). Note that it does not make a copy of
+ the name, so don't be modifying it... */
+
+- basname = (char *) rindex(fname, '/');
+- if (!basname) basname = fname;
+- else basname++;
+-
+- return basname;
++ basname = (const char *) rindex(fname, '/');
++ return basname? basname+1 : fname;
+ }
+
+-
++
+ /***************************************************/
+ void DrawTempGauge(win, x,y,w,h, ratio, fg,bg,hi,lo, str)
+- Window win;
+- int x,y,w,h;
+- double ratio;
+- u_long fg,bg,hi,lo;
+- char *str;
++ Window win;
++ int x,y,w,h;
++ double ratio;
++ u_long fg,bg,hi,lo;
++ const char *str;
+ {
+ /* draws a 'temprature'-style horizontal progress meter in the specified
+ window, at the specified location */
+@@ -773,14 +839,14 @@
+ if (numchars) { /* do string */
+ if (barwide < maxwide) {
+ XSetForeground(theDisp, theGC, bg);
+- XFillRectangle(theDisp, win, theGC, x+3+barwide, y+3,
++ XFillRectangle(theDisp, win, theGC, x+3+barwide, y+3,
+ (u_int) (maxwide-barwide), (u_int) (h-5));
+ }
+-
++
+ XSetFunction(theDisp, theGC, GXinvert);
+ XSetPlaneMask(theDisp, theGC, fg ^ bg);
+
+- XDrawString(theDisp, win, theGC, CENTERX(mfinfo, (x+w/2), str),
++ XDrawString(theDisp, win, theGC, CENTERX(mfinfo, (x+w/2), str),
+ CENTERY(mfinfo, (y+h/2)), str, numchars);
+
+ XSetFunction(theDisp, theGC, GXcopy);
+@@ -789,18 +855,18 @@
+
+ else if (barwide < maxwide) {
+ XDrawLine(theDisp,win,theGC,x+3+barwide, y+h/2 + 0, x+w-3, y+h/2 + 0);
+-
++
+ XSetForeground(theDisp, theGC, lo);
+ XDrawLine(theDisp,win,theGC,x+3+barwide, y+h/2 + 1, x+w-3, y+h/2 + 1);
+-
++
+ XSetForeground(theDisp, theGC, hi);
+ XDrawLine(theDisp,win,theGC,x+3+barwide, y+h/2 + 2, x+w-3, y+h/2 + 2);
+-
++
+ XSetForeground(theDisp, theGC, bg);
+- XFillRectangle(theDisp, win, theGC, x+3+barwide, y+3,
++ XFillRectangle(theDisp, win, theGC, x+3+barwide, y+3,
+ (u_int) (maxwide-barwide), (u_int) (h/2 - 3));
+-
+- XFillRectangle(theDisp, win, theGC, x+3+barwide, y+h/2 + 3,
++
++ XFillRectangle(theDisp, win, theGC, x+3+barwide, y+h/2 + 3,
+ (u_int) (maxwide-barwide),(u_int)((h-3) - (h/2+3)) + 1);
+ }
+ }
+@@ -815,44 +881,44 @@
+ if (numchars) {
+ if (barwide < maxwide) {
+ XSetForeground(theDisp, theGC, bg);
+- XFillRectangle(theDisp, win, theGC, x+1+barwide, y+1,
++ XFillRectangle(theDisp, win, theGC, x+1+barwide, y+1,
+ (u_int) (maxwide-barwide), (u_int) (h-1));
+ }
+-
++
+ XSetFunction(theDisp, theGC, GXinvert);
+ XSetPlaneMask(theDisp, theGC, fg ^ bg);
+
+- XDrawString(theDisp, win, theGC, CENTERX(mfinfo, (x+w/2), str),
++ XDrawString(theDisp, win, theGC, CENTERX(mfinfo, (x+w/2), str),
+ CENTERY(mfinfo, (y+h/2)), str, numchars);
+
+ XSetFunction(theDisp, theGC, GXcopy);
+ XSetPlaneMask(theDisp, theGC, AllPlanes);
+ }
+-
++
+ else if (barwide < maxwide) {
+ XDrawLine(theDisp, win, theGC, x+1+barwide, y+h/2, x+w-1, y+h/2);
+-
++
+ XSetForeground(theDisp, theGC, bg);
+- XFillRectangle(theDisp, win, theGC, x+1+barwide, y+1,
++ XFillRectangle(theDisp, win, theGC, x+1+barwide, y+1,
+ (u_int) (maxwide-barwide), (u_int) (h/2 - 1));
+-
+- XFillRectangle(theDisp, win, theGC, x+1+barwide, y+h/2 + 1,
++
++ XFillRectangle(theDisp, win, theGC, x+1+barwide, y+h/2 + 1,
+ (u_int)(maxwide-barwide),(u_int)(((h-1) - (h/2+1))+1));
+ }
+ }
+
+ XFlush(theDisp);
+ }
+-
++
+
+
+ /***************************************************/
+ void ProgressMeter(min, max, val, str)
+- int min, max, val;
+- char *str;
++ int min, max, val;
++ const char *str;
+ {
+ /* called during 'long' operations (algorithms, smoothing, etc.) to
+- give some indication that the program will ever finish. Draws a
++ give some indication that the program will ever finish. Draws a
+ temperature gauge in either mainW (if not useRoot), or ctrlW.
+ Tries to be clever: only draws gauge if it looks like the operation is
+ going to take more than a few seconds. Calling with val == max removes
+@@ -887,7 +953,7 @@
+ if (!waiting) { /* not waiting (or not waiting any longer) */
+ if (nowTime == lastTime && val<max) return; /* max one draw per second */
+ lastTime = nowTime;
+- DrawTempGauge(win, xpos, ypos, 100,19, doneness,
++ DrawTempGauge(win, xpos, ypos, 100,19, doneness,
+ infofg,infobg,hicol,locol,str);
+
+ if (val >= max) { /* remove temp gauge */
+@@ -915,7 +981,7 @@
+ void XVCreatedFile(fullname)
+ char *fullname;
+ {
+- /* called whenever a file has been deleted. Updates browser & dir windows,
++ /* called whenever a file has been created. Updates browser & dir windows,
+ if necessary */
+
+ BRCreatedFile(fullname);
+@@ -925,7 +991,8 @@
+
+ /***************************************************/
+ void xvbcopy(src, dst, len)
+- char *src, *dst;
++ const char *src;
++ char *dst;
+ size_t len;
+ {
+ /* Modern OS's (Solaris, etc.) frown upon the use of bcopy(),
+@@ -945,7 +1012,7 @@
+ */
+
+ if (src==dst || len<=0) return; /* nothin' to do */
+-
++
+ if (src<dst && src+len>dst) { /* do a backward copy */
+ src = src + len - 1;
+ dst = dst + len - 1;
+@@ -957,11 +1024,11 @@
+ for ( ; len>0; len--, src++, dst++) *dst = *src;
+ }
+ }
+-
++
+
+ /***************************************************/
+ int xvbcmp (s1, s2, len)
+- char *s1, *s2;
++ const char *s1, *s2;
+ size_t len;
+ {
+ for ( ; len>0; len--, s1++, s2++) {
+@@ -985,28 +1052,31 @@
+ char *buf;
+ size_t buflen;
+ {
+- /* gets the current working directory. No trailing '/' */
++ /* Gets the current working directory and puts it in buf. No trailing '/'. */
+
+- char *rv;
++ const char *rv;
+
+ #ifdef USE_GETCWD
+- rv = (char *) getcwd(buf, buflen);
++ rv = (const char *) getcwd(buf, buflen);
+ #else
+- rv = (char *) getwd(buf);
++ rv = (const char *) getwd(buf);
+ #endif
+
+ if (!rv || strlen(rv)==0) {
+- if (((rv=(char *) getenv("PWD"))==NULL) &&
+- ((rv=(char *) getenv("cwd"))==NULL)) rv = "./";
++ if (((rv=(const char *) getenv("PWD"))==NULL) &&
++ ((rv=(const char *) getenv("cwd"))==NULL)) rv = "./";
+ strcpy(buf, rv);
+ }
++#ifdef AUTO_EXPAND
++ Vdtodir(buf);
++#endif
+ }
+
+
+
+ /***************************************************/
+
+-/*
++/*
+ * Source code for the "strstr" library routine.
+ *
+ * Copyright 1988 Regents of the University of California
+@@ -1020,10 +1090,11 @@
+ */
+
+ char *xv_strstr(string, substring)
+- char *string; /* String to search. */
+- char *substring; /* Substring to try to find in string. */
++ const char *string; /* String to search. */
++ const char *substring; /* Substring to try to find in string. */
+ {
+- register char *a, *b;
++ const char *a;
++ const char *b;
+
+ /* First scan quickly through the two strings looking for a
+ * single-character match. When it's found, then compare the
+@@ -1031,14 +1102,14 @@
+ */
+
+ b = substring;
+- if (*b == 0) return string;
++ if (*b == 0) return (char *) string;
+
+ for ( ; *string != 0; string += 1) {
+ if (*string != *b) continue;
+
+ a = string;
+ while (1) {
+- if (*b == 0) return string;
++ if (*b == 0) return (char *) string;
+ if (*a++ != *b++) break;
+ }
+ b = substring;
+@@ -1052,7 +1123,8 @@
+
+ /***************************************************/
+ FILE *xv_fopen(fname, mode)
+- char *fname, *mode;
++ const char *fname;
++ const char *mode;
+ {
+ FILE *fp;
+
+@@ -1066,72 +1138,90 @@
+ }
+
+
++/***************************************************/
++/* GRR 20050320: added actual mk[s]temp() call... */
++void xv_mktemp(buf, fname)
++ char *buf;
++ const char *fname;
++{
++#ifndef VMS
++ sprintf(buf, "%s/%s", tmpdir, fname);
++#else
++ sprintf(buf, "Sys$Disk:[]%s", fname);
++#endif
++#ifdef USE_MKSTEMP
++ close(mkstemp(buf));
++#else
++ mktemp(buf);
++#endif
++}
+
+
+-/*******/
++/***************************************************/
+ void Timer(msec) /* waits for 'n' milliseconds */
+- int msec;
+-/*******/
++ int msec;
+ {
+ long usec;
+
+ if (msec <= 0) return;
++
+ usec = (long) msec * 1000;
+
+
+-#ifdef VMS
++#ifdef USLEEP
++ usleep(usec);
++ /* return */
++#endif
++
++
++#if defined(VMS) && !defined(USLEEP)
+ {
+ float ftime;
+ ftime = msec / 1000.0;
+ lib$wait(&ftime);
+- return;
++ /* return */
+ }
+ #endif
+
+
+-#ifdef sgi
++#if defined(sgi) && !defined(USLEEP)
+ {
+ float ticks_per_msec;
+ long ticks;
+ ticks_per_msec = (float) CLK_TCK / 1000.0;
+ ticks = (long) ((float) msec * ticks_per_msec);
+ sginap(ticks);
+- return;
++ /* return */
+ }
+ #endif
+
+
+-#if defined(SVR4) || defined(sco)
++/* does SGI define SVR4? not sure... */
++#if (defined(SVR4) || defined(sco)) && !defined(sgi) && !defined(USLEEP)
+ {
+ struct pollfd dummy;
+ poll(&dummy, 0, msec);
+- return;
++ /* return */
+ }
+ #endif
+
+
+-#ifdef USLEEP
+- usleep(usec); return;
+-#endif
+-
+-
+-#ifdef NOTIMER
+- return;
+-#endif
+-
+-
+-#ifndef VMS
++#if !defined(USLEEP) && !defined(VMS) && !defined(sgi) && !defined(SVR4) && !defined(sco) && !defined(NOTIMER)
+ {
+- /* default Timer() method now uses 'select()', which probably works
+- on all systems *anyhow* (except for VMS...) */
+-
++ /* default/fall-through Timer() method now uses 'select()', which
++ * probably works on all systems *anyhow* (except for VMS...) */
++
+ struct timeval time;
+
+ time.tv_sec = usec / 1000000L;
+ time.tv_usec = usec % 1000000L;
+ select(0, XV_FDTYPE NULL, XV_FDTYPE NULL, XV_FDTYPE NULL, &time);
++ /* return */
+ }
+-#endif /* VMS */
+-}
++#endif
+
+
++ /* NOTIMER case, fallthroughs, etc. ... but we return void, so who cares */
++ /* return */
++}
++
+diff -ru xv-3.10a/xvpbm.c xv-3.10a-enhancements/xvpbm.c
+--- xv-3.10a/xvpbm.c 1995-01-03 13:23:44.000000000 -0800
++++ xv-3.10a-enhancements/xvpbm.c 2007-05-13 17:44:03.000000000 -0700
+@@ -23,6 +23,15 @@
+ */
+
+
++typedef unsigned short ush;
++typedef unsigned char uch;
++
++#define alpha_composite(composite, fg, alpha, bg) { \
++ ush temp = ((ush)(fg)*(ush)(alpha) + \
++ (ush)(bg)*(ush)(255 - (ush)(alpha)) + (ush)128); \
++ (composite) = (uch)((temp + (temp >> 8)) >> 8); \
++}
++
+ #define TRUNCSTR "File appears to be truncated."
+
+ static int garbage;
+@@ -31,17 +40,91 @@
+ static int loadpbm PARM((FILE *, PICINFO *, int));
+ static int loadpgm PARM((FILE *, PICINFO *, int, int));
+ static int loadppm PARM((FILE *, PICINFO *, int, int));
++static int loadpam PARM((FILE *, PICINFO *, int, int));
+ static int getint PARM((FILE *, PICINFO *));
+ static int getbit PARM((FILE *, PICINFO *));
+ static int getshort PARM((FILE *));
+-static int pbmError PARM((char *, char *));
++static int pbmError PARM((const char *, const char *));
++
++static const char *bname;
++
++
++#ifdef HAVE_MGCSFX
++/*
++ * When file read or file write is fail, probably it's caused by
++ * reading from pipe which has no data yet, or writing to pipe
++ * which is not ready yet.
++ * Then we can use system call select() on descriptor of pipe and wait.
++ * If you want, change 'undef' to 'define' in the following line.
++ * This feature is performance-killer.
++ */
++#undef FIX_PIPE_ERROR
++
++#ifdef __osf__
++# ifdef __alpha
++# define FIX_PIPE_ERROR
++# endif
++#endif
++
++#endif /* HAVE_MGCSFX */
++
++
++#ifdef FIX_PIPE_ERROR
++
++int pipefdr;
++
++struct timeval timeout;
++int width;
++fd_set fds;
++
++static void ready_read()
++{
++ if(pipefdr < 0) return; /* if file descriptor is not pipe, OK */
++ WaitCursor();
+
+-static char *bname;
++reselect:
++ /* setting of timeout */
++ timeout.tv_sec = 1; /* 1 sec */
++ timeout.tv_usec = 0; /* 0 usec */
++
++ FD_ZERO(&fds); /* clear bits */
++ FD_SET(pipefdr, &fds); /* set bit of fd in fds */
++
++ /* number of file descriptor to want check (0 $B!A(B width-1) */
++ width = pipefdr + 1;
++
++ /* select returns number of file descriptors */
++ if (select(width, &fds, NULL, NULL, &timeout) < 0){
++ if(DEBUG){
++ fprintf(stderr, "No file descriptors can't selected, waiting...\n");
++ }
++ goto reselect;
++ }
++
++ if (FD_ISSET(pipefdr, &fds)){
++ /* Now, descriptor of pipe is ready to read */
++ return;
++ }else{
++ if(DEBUG){
++ fprintf(stderr, "Can't read from pipe yet, waiting...\n");
++ }
++ goto reselect;
++ }
++
++}
++#endif /* FIX_PIPE_ERROR */
+
+ /*******************************************/
++#ifdef HAVE_MGCSFX
++int LoadPBM(fname, pinfo, fd)
++ char *fname;
++ PICINFO *pinfo;
++ int fd;
++#else
+ int LoadPBM(fname, pinfo)
+ char *fname;
+ PICINFO *pinfo;
++#endif /* HAVE_MGCSFX */
+ /*******************************************/
+ {
+ /* returns '1' on success */
+@@ -50,6 +133,10 @@
+ int c, c1;
+ int maxv, rv;
+
++#ifdef FIX_PIPE_ERROR
++ pipefdr = fd;
++#endif
++
+ garbage = maxv = rv = 0;
+ bname = BaseName(fname);
+
+@@ -57,6 +144,22 @@
+ pinfo->comment = (char *) NULL;
+
+
++#ifdef HAVE_MGCSFX
++ if(fd < 0){
++ /* open the file */
++ fp = xv_fopen(fname,"r");
++ if (!fp) return (pbmError(bname, "can't open file"));
++
++ /* compute file length */
++ fseek(fp, 0L, 2);
++ filesize = ftell(fp);
++ fseek(fp, 0L, 0);
++ }else{
++ fp = fdopen(fd, "r");
++ if (!fp) return (pbmError(bname, "can't open file"));
++ filesize = 0; /* dummy */
++ }
++#else
+ /* open the file */
+ fp = xv_fopen(fname,"r");
+ if (!fp) return (pbmError(bname, "can't open file"));
+@@ -65,6 +168,7 @@
+ fseek(fp, 0L, 2);
+ filesize = ftell(fp);
+ fseek(fp, 0L, 0);
++#endif /* HAVE_MGCSFX */
+
+
+ /* read the first two bytes of the file to determine which format
+@@ -73,7 +177,8 @@
+ "P6" = raw pixmap */
+
+ c = getc(fp); c1 = getc(fp);
+- if (c!='P' || c1<'1' || c1>'6') return(pbmError(bname, "unknown format"));
++ if (c!='P' || c1<'1' || (c1>'6' && c1!='8')) /* GRR alpha */
++ return(pbmError(bname, "unknown format"));
+
+ /* read in header information */
+ pinfo->w = getint(fp, pinfo); pinfo->h = getint(fp, pinfo);
+@@ -104,6 +209,7 @@
+ if (c1=='1' || c1=='4') rv = loadpbm(fp, pinfo, c1=='4' ? 1 : 0);
+ else if (c1=='2' || c1=='5') rv = loadpgm(fp, pinfo, c1=='5' ? 1 : 0, maxv);
+ else if (c1=='3' || c1=='6') rv = loadppm(fp, pinfo, c1=='6' ? 1 : 0, maxv);
++ else if (c1=='8') rv = loadpam(fp, pinfo, 1 , maxv);
+
+ fclose(fp);
+
+@@ -115,7 +221,7 @@
+ }
+
+ return rv;
+-}
++}
+
+
+
+@@ -127,15 +233,21 @@
+ {
+ byte *pic8;
+ byte *pix;
+- int i,j,bit,w,h;
++ int i,j,bit,w,h,npixels;
++
++ w = pinfo->w;
++ h = pinfo->h;
+
+- w = pinfo->w; h = pinfo->h;
+- pic8 = (byte *) calloc((size_t) w * h, (size_t) 1);
+- if (!pic8) return pbmError(bname, "couldn't malloc 'pic8'");
++ npixels = w * h;
++ if (w <= 0 || h <= 0 || npixels/w != h)
++ return pbmError(bname, "image dimensions too large");
++
++ pic8 = (byte *) calloc((size_t) npixels, (size_t) 1);
++ if (!pic8) FatalError("couldn't malloc 'pic8' for PBM");
+
+ pinfo->pic = pic8;
+ pinfo->type = PIC8;
+- sprintf(pinfo->fullInfo, "PBM, %s format. (%ld bytes)",
++ sprintf(pinfo->fullInfo, "PBM, %s format. (%ld bytes)",
+ (raw) ? "raw" : "ascii", filesize);
+ sprintf(pinfo->shrtInfo, "%dx%d PBM.", w, h);
+ pinfo->colType = F_BWDITHER;
+@@ -153,7 +265,7 @@
+ for (j=0; j<w; j++, pix++) *pix = getbit(fp, pinfo);
+ }
+
+- if (numgot != w*h) pbmError(bname, TRUNCSTR);
++ if (numgot != npixels) pbmError(bname, TRUNCSTR);
+ if (garbage) {
+ return(pbmError(bname, "Garbage characters in image data."));
+ }
+@@ -192,17 +304,23 @@
+ int raw, maxv;
+ {
+ byte *pix, *pic8;
+- int i,j,bitshift,w,h, holdmaxv;
++ int i,j,bitshift,w,h,npixels, holdmaxv;
++
+
++ w = pinfo->w;
++ h = pinfo->h;
+
+- w = pinfo->w; h = pinfo->h;
+- pic8 = (byte *) calloc((size_t) w*h, (size_t) 1);
+- if (!pic8) return(pbmError(bname, "couldn't malloc 'pic8'"));
++ npixels = w * h;
++ if (w <= 0 || h <= 0 || npixels/w != h)
++ return pbmError(bname, "image dimensions too large");
++
++ pic8 = (byte *) calloc((size_t) npixels, (size_t) 1);
++ if (!pic8) FatalError("couldn't malloc 'pic8' for PGM");
+
+
+ pinfo->pic = pic8;
+ pinfo->type = PIC8;
+- sprintf(pinfo->fullInfo, "PGM, %s format. (%ld bytes)",
++ sprintf(pinfo->fullInfo, "PGM, %s format. (%ld bytes)",
+ (raw) ? "raw" : "ascii", filesize);
+ sprintf(pinfo->shrtInfo, "%dx%d PGM.", pinfo->w, pinfo->h);
+ pinfo->colType = F_GREYSCALE;
+@@ -236,11 +354,24 @@
+ }
+ }
+ else {
+- numgot = fread(pic8, (size_t) 1, (size_t) w*h, fp); /* read raw data */
++#ifdef FIX_PIPE_ERROR
++ reread:
++ numgot += fread(pic8 + numgot, (size_t) 1, (size_t) w*h - numgot, fp); /* read raw data */
++ if(errno == EINTR){
++ if(DEBUG){
++ fprintf(stderr,
++ "Can't read all data from pipe, call select and waiting...\n");
++ }
++ ready_read();
++ goto reread;
++ }
++#else
++ numgot = fread(pic8, (size_t)1, (size_t)npixels, fp); /* read raw data */
++#endif
+ }
+ }
+
+- if (numgot != w*h) pbmError(bname, TRUNCSTR); /* warning only */
++ if (numgot != npixels) pbmError(bname, TRUNCSTR); /* warning only */
+
+ if (garbage) {
+ return (pbmError(bname, "Garbage characters in image data."));
+@@ -256,18 +387,24 @@
+ PICINFO *pinfo;
+ int raw, maxv;
+ {
+- byte *pix, *pic24, scale[256], *pic8;
+- int i,j,bitshift, w, h, holdmaxv;
++ byte *pix, *pic24, scale[256];
++ int i,j,bitshift, w, h, npixels, bufsize, holdmaxv;
++
++ w = pinfo->w;
++ h = pinfo->h;
+
+- w = pinfo->w; h = pinfo->h;
++ npixels = w * h;
++ bufsize = 3*npixels;
++ if (w <= 0 || h <= 0 || npixels/w != h || bufsize/3 != npixels)
++ return pbmError(bname, "image dimensions too large");
+
+ /* allocate 24-bit image */
+- pic24 = (byte *) calloc((size_t) w*h*3, (size_t) 1);
+- if (!pic24) FatalError("couldn't malloc 'pic24'");
++ pic24 = (byte *) calloc((size_t) bufsize, (size_t) 1);
++ if (!pic24) FatalError("couldn't malloc 'pic24' for PPM");
+
+ pinfo->pic = pic24;
+ pinfo->type = PIC24;
+- sprintf(pinfo->fullInfo, "PPM, %s format. (%ld bytes)",
++ sprintf(pinfo->fullInfo, "PPM, %s format. (%ld bytes)",
+ (raw) ? "raw" : "ascii", filesize);
+ sprintf(pinfo->shrtInfo, "%dx%d PPM.", w, h);
+ pinfo->colType = F_FULLCOLOR;
+@@ -297,20 +434,149 @@
+ }
+ }
+ else {
+- numgot = fread(pic24, (size_t) 1, (size_t) w*h*3, fp); /* read data */
++#ifdef FIX_PIPE_ERROR
++ reread:
++ numgot += fread(pic24 + numgot, (size_t) 1, (size_t) w*h*3 - numgot, fp); /* read data */
++ if(errno == EINTR){
++ if(DEBUG){
++ fprintf(stderr,
++ "Can't read all data from pipe, call select and waiting...\n");
++ }
++ ready_read();
++ goto reread;
++ }
++#else
++ numgot = fread(pic24, (size_t) 1, (size_t) bufsize, fp); /* read data */
++#endif
+ }
+ }
+-
+- if (numgot != w*h*3) pbmError(bname, TRUNCSTR);
++
++ if (numgot != bufsize) pbmError(bname, TRUNCSTR);
+
+ if (garbage)
+ return(pbmError(bname, "Garbage characters in image data."));
+
+
+- /* have to scale all RGB values up (Conv24to8 expects RGB values to
+- range from 0-255 */
++ /* have to scale up all RGB values (Conv24to8 expects RGB values to
++ range from 0-255) */
+
+- if (maxv<255) {
++ if (maxv<255) {
++ for (i=0; i<=maxv; i++) scale[i] = (i * 255) / maxv;
++
++ for (i=0, pix=pic24; i<h; i++) {
++ if ((i&0x3f)==0) WaitCursor();
++ for (j=0; j<w*3; j++, pix++) *pix = scale[*pix];
++ }
++ }
++
++ return 1;
++}
++
++
++/*******************************************/
++static int loadpam(fp, pinfo, raw, maxv) /* unofficial RGBA extension */
++ FILE *fp;
++ PICINFO *pinfo;
++ int raw, maxv;
++{
++ byte *p, *pix, *pic24, *linebuf, scale[256], bgR, bgG, bgB, r, g, b, a;
++ int i, j, bitshift, w, h, npixels, bufsize, linebufsize, holdmaxv;
++
++ w = pinfo->w;
++ h = pinfo->h;
++
++ npixels = w * h;
++ bufsize = 3*npixels;
++ linebufsize = 4*w;
++ if (w <= 0 || h <= 0 || npixels/w != h || bufsize/3 != npixels ||
++ linebufsize/4 != w)
++ return pbmError(bname, "image dimensions too large");
++
++ /* allocate 24-bit image */
++ pic24 = (byte *) calloc((size_t) bufsize, (size_t) 1);
++ if (!pic24) FatalError("couldn't malloc 'pic24' for PAM");
++
++ /* allocate line buffer for pre-composited RGBA data */
++ linebuf = (byte *) malloc((size_t) linebufsize);
++ if (!linebuf) {
++ free(pic24);
++ FatalError("couldn't malloc 'linebuf' for PAM");
++ }
++
++ pinfo->pic = pic24;
++ pinfo->type = PIC24;
++ sprintf(pinfo->fullInfo, "PAM, %s format. (%ld bytes)",
++ (raw) ? "raw" : "ascii", filesize);
++ sprintf(pinfo->shrtInfo, "%dx%d PAM.", w, h);
++ pinfo->colType = F_FULLCOLOR;
++
++
++ /* if maxv>255, keep dropping bits until it's reasonable */
++ holdmaxv = maxv;
++ bitshift = 0;
++ while (maxv>255) { maxv = maxv>>1; bitshift++; }
++
++
++ numgot = 0;
++
++ if (!raw) { /* GRR: not alpha-ready */
++ return pbmError(bname, "can't handle non-raw PAM image");
++/*
++ for (i=0, pix=pic24; i<h; i++) {
++ if ((i&0x3f)==0) WaitCursor();
++ for (j=0; j<w*3; j++, pix++)
++ *pix = (byte) (getint(fp, pinfo) >> bitshift);
++ }
++ */
++ }
++ else { /* raw */
++ if (holdmaxv>255) { /* GRR: not alpha-ready */
++ return pbmError(bname, "can't handle PAM image with maxval > 255");
++/*
++ for (i=0, pix=pic24; i<h; i++) {
++ if ((i&0x3f)==0) WaitCursor();
++ for (j=0; j<w*3; j++,pix++)
++ *pix = (byte) (getshort(fp) >> bitshift);
++ }
++ */
++ }
++ else {
++ if (have_imagebg) { /* GRR: alpha-ready */
++ bgR = (imagebgR >> 8);
++ bgG = (imagebgG >> 8);
++ bgB = (imagebgB >> 8);
++ } else {
++ bgR = bgG = bgB = 0;
++ }
++ for (i=0, pix=pic24; i<h; i++) {
++ numgot += fread(linebuf, (size_t) 1, (size_t) linebufsize, fp); /* read data */
++ if ((i&0x3f)==0) WaitCursor();
++ for (j=0, p=linebuf; j<w; j++) {
++ r = *p++;
++ g = *p++;
++ b = *p++;
++ a = *p++;
++ alpha_composite(*pix++, r, a, bgR)
++ alpha_composite(*pix++, g, a, bgG)
++ alpha_composite(*pix++, b, a, bgB)
++ }
++ }
++ }
++ }
++
++ free(linebuf);
++
++ /* in principle this could overflow, but not critical */
++ if (numgot != w*h*4) pbmError(bname, TRUNCSTR);
++
++ if (garbage)
++ return(pbmError(bname, "Garbage characters in image data."));
++
++
++ /* have to scale up all RGB values (Conv24to8 expects RGB values to
++ range from 0-255) */
++
++ if (maxv<255) {
+ for (i=0; i<=maxv; i++) scale[i] = (i * 255) / maxv;
+
+ for (i=0, pix=pic24; i<h; i++) {
+@@ -360,8 +626,8 @@
+ pinfo->comment[0] = '\0';
+ }
+ else {
+- tmpptr = (char *) realloc(pinfo->comment,
+- strlen(pinfo->comment) + strlen(cmt) + 1);
++ tmpptr = (char *) realloc(pinfo->comment,
++ strlen(pinfo->comment) + strlen(cmt) + 1);
+ if (!tmpptr) FatalError("realloc failure in xvpbm.c getint");
+ pinfo->comment = tmpptr;
+ }
+@@ -409,7 +675,18 @@
+
+ numgot++;
+
++ /* Sometime after 1995, NetPBM's ppm(5) man page was changed to say, "Each
++ * sample is represented in pure binary by either 1 or 2 bytes. If the
++ * Maxval is less than 256, it is 1 byte. Otherwise, it is 2 bytes. The
++ * most significant byte is first." This change is incompatible with
++ * images created for viewing with all previous versions of XV, however,
++ * so both approaches are left available as a compile-time option. (Could
++ * make it runtime-selectable, too, but unclear whether anybody cares.) */
++#ifdef ASSUME_RAW_PPM_LSB_FIRST /* legacy approach */
+ return (c2 << 8) | c1;
++#else /* MSB first */
++ return (c1 << 8) | c2;
++#endif
+ }
+
+
+@@ -445,8 +722,8 @@
+ pinfo->comment[0] = '\0';
+ }
+ else {
+- tmpptr = (char *) realloc(pinfo->comment,
+- strlen(pinfo->comment) + strlen(cmt) + 1);
++ tmpptr = (char *) realloc(pinfo->comment,
++ strlen(pinfo->comment) + strlen(cmt) + 1);
+ if (!tmpptr) FatalError("realloc failure in xvpbm.c getint");
+ pinfo->comment = tmpptr;
+ }
+@@ -470,7 +747,7 @@
+
+ /*******************************************/
+ static int pbmError(fname, st)
+- char *fname, *st;
++ const char *fname, *st;
+ {
+ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
+ return 0;
+@@ -490,7 +767,7 @@
+ char *comment;
+ {
+ /* writes a PBM/PGM/PPM file to the already open stream
+- if (raw), writes as RAW bytes, otherwise writes as ASCII
++ if (raw), writes as RAW bytes, otherwise writes as ASCII
+ 'colorstyle' single-handedly determines the type of file written
+ if colorstyle==0, (Full Color) a PPM file is written
+ if colorstyle==1, (Greyscale) a PGM file is written
+@@ -546,7 +823,7 @@
+ }
+ }
+ else {
+- if (ptype==PIC8)
++ if (ptype==PIC8)
+ fprintf(fp,"%3d %3d %3d ",rmap[*pix], gmap[*pix], bmap[*pix]);
+ else
+ fprintf(fp,"%3d %3d %3d ",pix[0], pix[1], pix[2]);
+@@ -554,7 +831,7 @@
+ len+=12;
+ if (len>58) { fprintf(fp,"\n"); len=0; }
+ }
+-
++
+ pix += (ptype==PIC24) ? 3 : 1;
+ }
+ }
+@@ -584,7 +861,7 @@
+
+ else if (colorstyle==2) { /* 1-bit B/W stipple */
+ int bit,k,flipbw;
+- char *str0, *str1;
++ const char *str0, *str1;
+
+ /* shouldn't happen */
+ if (ptype == PIC24) FatalError("PIC24 and B/W Stipple in WritePBM()\n");
+@@ -626,10 +903,3 @@
+
+ return 0;
+ }
+-
+-
+-
+-
+-
+-
+-
+diff -ru xv-3.10a/xvpcx.c xv-3.10a-enhancements/xvpcx.c
+--- xv-3.10a/xvpcx.c 1995-01-10 15:06:37.000000000 -0800
++++ xv-3.10a-enhancements/xvpcx.c 2007-05-13 18:46:27.000000000 -0700
+@@ -29,17 +29,17 @@
+ #define PCX_YMAXH 11
+ /* hres (12,13) and vres (14,15) not used */
+ #define PCX_CMAP 16 /* start of 16*3 colormap data */
+-#define PCX_PLANES 65
++#define PCX_PLANES 65
+ #define PCX_BPRL 66
+ #define PCX_BPRH 67
+
+ #define PCX_MAPSTART 0x0c /* Start of appended colormap */
+
+
+-static int pcxLoadImage8 PARM((char *, FILE *, PICINFO *, byte *));
+-static int pcxLoadImage24 PARM((char *, FILE *, PICINFO *, byte *));
++static int pcxLoadImage8 PARM((const char *, FILE *, PICINFO *, byte *));
++static int pcxLoadImage24 PARM((const char *, FILE *, PICINFO *, byte *));
+ static void pcxLoadRaster PARM((FILE *, byte *, int, byte *, int, int));
+-static int pcxError PARM((char *, char *));
++static int pcxError PARM((const char *, const char *));
+
+
+
+@@ -51,9 +51,9 @@
+ {
+ FILE *fp;
+ long filesize;
+- char *bname, *errstr;
+- byte hdr[128], *image;
++ byte hdr[128];
+ int i, colors, gray, fullcolor;
++ const char *bname;
+
+ pinfo->type = PIC8;
+ pinfo->pic = (byte *) NULL;
+@@ -64,7 +64,7 @@
+ /* open the stream */
+ fp = xv_fopen(fname,"r");
+ if (!fp) return (pcxError(bname, "unable to open file"));
+-
++
+
+ /* figure out the file size */
+ fseek(fp, 0L, 2);
+@@ -84,10 +84,10 @@
+ return pcxError(bname,"unrecognized magic number");
+ }
+
+- pinfo->w = (hdr[PCX_XMAXL] + ((int) hdr[PCX_XMAXH]<<8))
++ pinfo->w = (hdr[PCX_XMAXL] + ((int) hdr[PCX_XMAXH]<<8))
+ - (hdr[PCX_XMINL] + ((int) hdr[PCX_XMINH]<<8));
+
+- pinfo->h = (hdr[PCX_YMAXL] + ((int) hdr[PCX_YMAXH]<<8))
++ pinfo->h = (hdr[PCX_YMAXL] + ((int) hdr[PCX_YMAXH]<<8))
+ - (hdr[PCX_YMINL] + ((int) hdr[PCX_YMINH]<<8));
+
+ pinfo->w++; pinfo->h++;
+@@ -96,10 +96,10 @@
+ fullcolor = (hdr[PCX_BPP] == 8 && hdr[PCX_PLANES] == 3);
+
+ if (DEBUG) {
+- fprintf(stderr,"PCX: %dx%d image, version=%d, encoding=%d\n",
++ fprintf(stderr,"PCX: %dx%d image, version=%d, encoding=%d\n",
+ pinfo->w, pinfo->h, hdr[PCX_VER], hdr[PCX_ENC]);
+ fprintf(stderr," BitsPerPixel=%d, planes=%d, BytePerRow=%d, colors=%d\n",
+- hdr[PCX_BPP], hdr[PCX_PLANES],
++ hdr[PCX_BPP], hdr[PCX_PLANES],
+ hdr[PCX_BPRL] + ((int) hdr[PCX_BPRH]<<8),
+ colors);
+ }
+@@ -190,9 +190,9 @@
+
+ if (colors > 2 || (colors==2 && !gray)) { /* grayscale or PseudoColor */
+ pinfo->colType = (gray) ? F_GREYSCALE : F_FULLCOLOR;
+- sprintf(pinfo->fullInfo,
+- "%s PCX, %d plane%s, %d bit%s per pixel. (%ld bytes)",
+- (gray) ? "Greyscale" : "Color",
++ sprintf(pinfo->fullInfo,
++ "%s PCX, %d plane%s, %d bit%s per pixel. (%ld bytes)",
++ (gray) ? "Greyscale" : "Color",
+ hdr[PCX_PLANES], (hdr[PCX_PLANES]==1) ? "" : "s",
+ hdr[PCX_BPP], (hdr[PCX_BPP]==1) ? "" : "s",
+ filesize);
+@@ -212,21 +212,27 @@
+
+ /*****************************/
+ static int pcxLoadImage8(fname, fp, pinfo, hdr)
+- char *fname;
++ const char *fname;
+ FILE *fp;
+ PICINFO *pinfo;
+ byte *hdr;
+ {
+ /* load an image with at most 8 bits per pixel */
+-
++
+ byte *image;
+-
++ int count;
++
+ /* note: overallocation to make life easier... */
+- image = (byte *) malloc((size_t) (pinfo->h + 1) * pinfo->w + 16);
++ count = (pinfo->h + 1) * pinfo->w + 16; /* up to 65537*65536+16 (~ 65552) */
++ if (pinfo->w <= 0 || pinfo->h <= 0 || count/pinfo->w < pinfo->h) {
++ pcxError(fname, "Bogus 8-bit PCX file!!");
++ return (0);
++ }
++ image = (byte *) malloc((size_t) count);
+ if (!image) FatalError("Can't alloc 'image' in pcxLoadImage8()");
+-
+- xvbzero((char *) image, (size_t) ((pinfo->h+1) * pinfo->w + 16));
+-
++
++ xvbzero((char *) image, (size_t) count);
++
+ switch (hdr[PCX_BPP]) {
+ case 1: pcxLoadRaster(fp, image, 1, hdr, pinfo->w, pinfo->h); break;
+ case 8: pcxLoadRaster(fp, image, 8, hdr, pinfo->w, pinfo->h); break;
+@@ -243,31 +249,39 @@
+
+ /*****************************/
+ static int pcxLoadImage24(fname, fp, pinfo, hdr)
+- char *fname;
++ const char *fname;
+ FILE *fp;
+ PICINFO *pinfo;
+ byte *hdr;
+ {
+ byte *pix, *pic24, scale[256];
+- int c, i, j, w, h, maxv, cnt, planes, bperlin, nbytes;
+-
++ int c, i, j, w, h, maxv, cnt, planes, bperlin, nbytes, count;
++
+ w = pinfo->w; h = pinfo->h;
+-
+- planes = (int) hdr[PCX_PLANES];
+- bperlin = hdr[PCX_BPRL] + ((int) hdr[PCX_BPRH]<<8);
+-
++
++ planes = (int) hdr[PCX_PLANES]; /* 255 max, but can't get here unless = 3 */
++ bperlin = hdr[PCX_BPRL] + ((int) hdr[PCX_BPRH]<<8); /* 65535 max */
++
++ j = h*planes; /* w and h are limited to 65536, planes to 3 */
++ count = w*j; /* ...so this could wrap up to 3 times */
++ nbytes = bperlin*j; /* ...and this almost 3 times */
++ if (w <= 0 || h <= 0 || planes <= 0 || bperlin <= 0 ||
++ j/h < planes || count/w < j || nbytes/bperlin < j) {
++ pcxError(fname, "Bogus 24-bit PCX file!!");
++ return (0);
++ }
++
+ /* allocate 24-bit image */
+- pic24 = (byte *) malloc((size_t) w*h*planes);
+- if (!pic24) FatalError("couldn't malloc 'pic24'");
+-
+- xvbzero((char *) pic24, (size_t) w*h*planes);
+-
++ pic24 = (byte *) malloc((size_t) count);
++ if (!pic24) FatalError("Can't malloc 'pic24' in pcxLoadImage24()");
++
++ xvbzero((char *) pic24, (size_t) count);
++
+ maxv = 0;
+ pix = pinfo->pic = pic24;
+ i = 0; /* planes, in this while loop */
+ j = 0; /* bytes per line, in this while loop */
+- nbytes = bperlin*h*planes;
+-
++
+ while (nbytes > 0 && (c = getc(fp)) != EOF) {
+ if ((c & 0xC0) == 0xC0) { /* have a rep. count */
+ cnt = c & 0x3F;
+@@ -275,9 +289,9 @@
+ if (c == EOF) { getc(fp); break; }
+ }
+ else cnt = 1;
+-
++
+ if (c > maxv) maxv = c;
+-
++
+ while (cnt-- > 0) {
+ if (j < w) {
+ *pix = c;
+@@ -297,19 +311,19 @@
+ }
+ }
+ }
+-
+-
++
++
+ /* scale all RGB to range 0-255, if they aren't */
+
+- if (maxv<255) {
++ if (maxv<255) {
+ for (i=0; i<=maxv; i++) scale[i] = (i * 255) / maxv;
+-
++
+ for (i=0, pix=pic24; i<h; i++) {
+ if ((i&0x3f)==0) WaitCursor();
+ for (j=0; j<w*planes; j++, pix++) *pix = scale[*pix];
+ }
+ }
+-
++
+ return 1;
+ }
+
+@@ -321,13 +335,13 @@
+ byte *image, *hdr;
+ int depth,w,h;
+ {
+- /* supported: 8 bits per pixel, 1 plane, or 1 bit per pixel, 1-8 planes */
++ /* supported: 8 bits per pixel, 1 plane; or 1 bit per pixel, 1-8 planes */
+
+ int row, bcnt, bperlin, pad;
+ int i, j, b, cnt, mask, plane, pmask;
+ byte *oldimage;
+
+- bperlin = hdr[PCX_BPRL] + ((int) hdr[PCX_BPRH]<<8);
++ bperlin = hdr[PCX_BPRL] + ((int) hdr[PCX_BPRH]<<8); /* 65535 max */
+ if (depth == 1) pad = (bperlin * 8) - w;
+ else pad = bperlin - w;
+
+@@ -342,7 +356,7 @@
+ if (b == EOF) { getc(fp); return; }
+ }
+ else cnt = 1;
+-
++
+ for (i=0; i<cnt; i++) {
+ if (depth == 1) {
+ for (j=0, mask=0x80; j<8; j++) {
+@@ -351,12 +365,12 @@
+ }
+ }
+ else *image++ = (byte) b;
+-
++
+ bcnt++;
+-
++
+ if (bcnt == bperlin) { /* end of a line reached */
+ bcnt = 0;
+- plane++;
++ plane++;
+
+ if (plane >= (int) hdr[PCX_PLANES]) { /* moved to next row */
+ plane = 0;
+@@ -367,19 +381,19 @@
+ }
+ else { /* next plane, same row */
+ image = oldimage;
+- }
++ }
+
+ pmask = 1 << plane;
+ }
+ }
+ }
+-}
++}
+
+
+
+ /*******************************************/
+ static int pcxError(fname,st)
+- char *fname, *st;
++ const char *fname, *st;
+ {
+ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
+ return 0;
+diff -ru xv-3.10a/xvpds.c xv-3.10a-enhancements/xvpds.c
+--- xv-3.10a/xvpds.c 1995-01-03 13:25:52.000000000 -0800
++++ xv-3.10a-enhancements/xvpds.c 2007-05-12 14:08:47.000000000 -0700
+@@ -22,23 +22,23 @@
+ Choice of algorithm for 16->8 bit conversion--linear or histogram stretch.
+ (adds CONV24_HIST item in "24/8 bit" pull-down menu.)
+ Uses any "palette.tab" file in cwd to color PDS/VICAR image.
+-
++
+ * 9-2-91 began integration. Much of this code is lifted from vicar.c,
+ which I wrote for xloadimage. This is a little simpler, though.
+-
++
+ * 10-17-91 pdsuncomp is called with system(), which typically feeds the
+ commandline to sh. Make sure that your .profile adds wherever
+ you have pdsuncomp to the PATH, like
+-
++
+ PATH=$PATH:/usr/local/bin
+-
++
+ * 11-15-91 substituted vdcomp from Viking CD's for pdsuncomp. I added
+ recognition of - and shut off various messages
+-
++
+ * 1-5-92 merged into xv rel 2
+-
++
+ * 3-11-92 cleaned up some comments
+-
++
+ * 3-24-92 Got some new CD's from NASA of mosics and other processed Viking
+ stuff. There are actually records terminated with CRNLCR in
+ these images, as well as ones that identify the spacecraft name
+@@ -46,14 +46,14 @@
+ yet further to deal with these. There's a Sun 4 XView binary for
+ an image display program on these discs, but it's nowhere near as
+ neat as the good Mr. Bradley's XV.
+-
+-
++
++
+ * Sources of these CD's:
+ *
+ * National Space Science Data Center
+ * Goddard Space Flight Center
+ * Code 933.4
+- * Greenbelt, Maryland
++ * Greenbelt, Maryland
+ * (301) 286-6695
+ * or call
+ * (301) 286-9000 (300,1200,2400 bps)
+@@ -77,8 +77,7 @@
+ * Huffman-encoded, and the encoding histogram follows the ASCII headers.
+ * To decode these, we use a slightly modified version of "vdcomp.c" from the
+ * NASA Viking CD-ROMS. For xv to work, you need to have vdcomp compiled
+- * and in your search path. vdcomp.c should be included with this
+-distribution.
++ * and in your search path. vdcomp.c should be included with this distribution.
+ *
+ * I've heard that newer discs have FITS images on them. If they do, support
+ * for them will be added when I get one. Until then, you can use fitstopgm.
+@@ -91,10 +90,10 @@
+ * Copyright 1989, 1990 by Anthony A. Datri
+ *
+ * Permission to use, copy, and distribute for non-commercial purposes,
+- * is hereby granted without fee, providing that the above copyright
++ * is hereby granted without fee, providing that the above copyright
+ * notice appear in all copies, that both the copyright notice and this
+ * permission notice appear in supporting documentation.
+- *
++ *
+ * In exception to the above, permission to John Bradley is hereby granted to
+ * distribute this code as he sees fit within the context of his "xv" image
+ * viewer.
+@@ -102,7 +101,7 @@
+ * This software is provided "as is" without any express or implied warranty.
+ */
+
+-
++#define NEEDSDIR /* for S_IRUSR|S_IWUSR */
+ #include "xv.h"
+
+ #ifdef HAVE_PDS
+@@ -129,27 +128,32 @@
+
+ /* This is arbitrary. Everything I've seen so far fits in 50 chars */
+ #define COMMENTSIZE 50
++#define INOTESIZE 1000
+
+
+ static int lastwasinote = FALSE;
+-static char scanbuff [MAX_SIZE],
+- rtbuff [RTBUFFSIZE],
+- inote [20*COMMENTSIZE],
+- infobuff [COMMENTSIZE],
+- spacecraft [COMMENTSIZE],
+- target [COMMENTSIZE],
+- filtname [COMMENTSIZE],
+- gainmode [COMMENTSIZE],
+- editmode [COMMENTSIZE],
+- scanmode [COMMENTSIZE],
+- exposure [COMMENTSIZE],
+- shuttermode [COMMENTSIZE],
+- mphase [COMMENTSIZE],
+- iname [COMMENTSIZE],
+- itime [COMMENTSIZE],
+- garbage [1020],
++static char scanbuff [MAX_SIZE+1],
++ rtbuff [RTBUFFSIZE+1],
++ inote [INOTESIZE+1],
++ infobuff [COMMENTSIZE+1],
++ spacecraft [COMMENTSIZE+1],
++ target [COMMENTSIZE+1],
++ filtname [COMMENTSIZE+1],
++ gainmode [COMMENTSIZE+1],
++ editmode [COMMENTSIZE+1],
++ scanmode [COMMENTSIZE+1],
++ exposure [COMMENTSIZE+1],
++ shuttermode [COMMENTSIZE+1],
++ mphase [COMMENTSIZE+1],
++ iname [COMMENTSIZE+1],
++ itime [COMMENTSIZE+1],
++ garbage [1024],
+ *tmptmp,
+ pdsuncompfname[FNAMESIZE];
++
++#define SSTR(l) "%" #l "s"
++#define S(l) SSTR(l)
++
+ byte *image;
+ static int elaphe;
+
+@@ -203,10 +207,10 @@
+ }
+ return(count);
+
+- case EOF: *bp='\0'; return(count);
+-
++ case EOF: *bp='\0'; return(count);
++
+ case '\0': return(count);
+-
++
+ default: count++; *bp++ = c;
+ }
+ }
+@@ -242,7 +246,7 @@
+ * disc seem to leave off the first two bytes. Sigh. This may sometimes be
+ * a distinction between the fixed and variable-record files.
+ */
+-
++
+ /*******************************************/
+ int LoadPDS(fname, pinfo)
+ char *fname;
+@@ -250,13 +254,16 @@
+ {
+ /* returns '1' on success, '0' on failure */
+
+- int tempnum;
++ int tempnum, bytewidth, bufsize;
++#ifndef USE_MKSTEMP
++ int tmpfd;
++#endif
+ FILE *zf;
+ static int isfixed,teco,i,j,itype,vaxbyte,
+ recsize,hrecsize,irecsize,isimage,labelrecs,labelsofar,
+- x,y,lpsize,lssize,samplesize,returnp,labelsize,yy;
++ w,h,lpsize,lssize,samplesize,returnp,labelsize,yy;
+ char *tmp;
+- char *ftypstr;
++ const char *ftypstr;
+ unsigned long filesize;
+ char sampletype[64];
+
+@@ -265,7 +272,7 @@
+ returnp = isimage = FALSE;
+ itype = PDSTRASH;
+
+- teco = i = j = recsize = hrecsize = irecsize = labelrecs = x = y = 0;
++ teco = i = j = recsize = hrecsize = irecsize = labelrecs = w = h = 0;
+ lpsize = lssize = samplesize = labelsize = labelsofar = 0;
+
+ (*pdsuncompfname) = (*iname) = (*target) = (*filtname) = (*garbage) = '\0';
+@@ -363,7 +370,7 @@
+ * length indicator. If the length indicator is odd, then a pad byte
+ * is appended to the end of the record so that all records contain
+ * an even number of bytes." */
+-
++
+ i=getc(zf);
+ j=getc(zf);
+ if (j == EOF) {
+@@ -371,7 +378,7 @@
+ fclose(zf);
+ return 0;
+ }
+-
++
+ teco = i + (j << 8);
+ if (teco % 2) teco++;
+
+@@ -380,7 +387,7 @@
+ fclose(zf);
+ return 0;
+ }
+-
++
+ scanbuff[teco]='\0';
+ }
+
+@@ -397,7 +404,7 @@
+
+ if (strcmp(scanbuff,"END") == 0) {
+ break;
+- } else if (sscanf(scanbuff," RECORD_TYPE = %s",rtbuff) == 1) {
++ } else if (sscanf(scanbuff, " RECORD_TYPE = " S(RTBUFFSIZE), rtbuff) == 1) {
+ if (strncmp(rtbuff,"VARIABLE_LENGTH", (size_t) 15) == 0) {
+ /* itype=PDSVARIABLE; */
+ } else if (strncmp(rtbuff,"FIXED_LENGTH", (size_t) 12) == 0) {
+@@ -416,7 +423,7 @@
+ if (irecsize == 0) irecsize=recsize;
+ lastwasinote=FALSE;
+ continue;
+- } else if (sscanf(scanbuff," FILE_TYPE = %s", rtbuff) != 0) {
++ } else if (sscanf(scanbuff, " FILE_TYPE = " S(RTBUFFSIZE), rtbuff) != 0) {
+ lastwasinote=FALSE;
+ if (strncmp(rtbuff,"IMAGE", (size_t) 5) == 0) {
+ isimage=TRUE;
+@@ -429,11 +436,11 @@
+ (sscanf(scanbuff," LABEL_RECORDS = %d", &labelrecs) == 1)) {
+ lastwasinote=FALSE;
+ continue;
+- } else if (sscanf(scanbuff," IMAGE_LINES = %d",&y) == 1) {
++ } else if (sscanf(scanbuff," IMAGE_LINES = %d",&h) == 1) {
+ isimage=TRUE; lastwasinote=FALSE; continue;
+- } else if (sscanf(scanbuff," LINE_SAMPLES = %d",&x) == 1) {
++ } else if (sscanf(scanbuff," LINE_SAMPLES = %d",&w) == 1) {
+ lastwasinote=FALSE; continue;
+- } else if (sscanf(scanbuff," LINES = %d",&y) == 1) {
++ } else if (sscanf(scanbuff," LINES = %d",&h) == 1) {
+ isimage=TRUE; lastwasinote=FALSE; continue;
+ } else if (sscanf(scanbuff," HEADER_RECORD_BYTES = %d",&hrecsize)==1) {
+ lastwasinote=FALSE; continue;
+@@ -445,74 +452,74 @@
+ lastwasinote=FALSE; continue;
+ } else if (sscanf(scanbuff," SAMPLE_BITS = %d", &samplesize) == 1) {
+ lastwasinote=FALSE; continue;
+- } else if (sscanf(scanbuff," SAMPLE_TYPE = %s", sampletype) == 1) {
++ } else if (sscanf(scanbuff, " SAMPLE_TYPE = " S(64), sampletype) == 1) {
+ lastwasinote=FALSE; continue;
+- } else if (sscanf(scanbuff," SPACECRAFT_NAME = %s %s",
++ } else if (sscanf(scanbuff," SPACECRAFT_NAME = " S(COMMENTSIZE) " " S(1023),
+ spacecraft,garbage) == 2 ) {
+- strcat(spacecraft,xv_strstr(scanbuff, spacecraft)+strlen(spacecraft));
++ const char *tmp = xv_strstr(scanbuff, spacecraft) + strlen(spacecraft);
++ strncat(spacecraft, tmp, COMMENTSIZE - strlen(spacecraft));
+ lastwasinote=FALSE; continue;
+- } else if (sscanf(scanbuff," SPACECRAFT_NAME = %s", spacecraft) == 1) {
++ } else if (sscanf(scanbuff, " SPACECRAFT_NAME = " S(COMMENTSIZE), spacecraft) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," TARGET_NAME = %s", target) == 1) {
++ } else if (sscanf(scanbuff, " TARGET_NAME = " S(COMMENTSIZE), target) == 1) {
+ lastwasinote=FALSE; continue;
+- } else if (sscanf(scanbuff," TARGET_BODY = %s", target) == 1) {
++ } else if (sscanf(scanbuff, " TARGET_BODY = " S(COMMENTSIZE), target) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," MISSION_PHASE_NAME = %s", mphase) == 1) {
++ } else if (sscanf(scanbuff, " MISSION_PHASE_NAME = " S(COMMENTSIZE), mphase) == 1) {
+ lastwasinote=FALSE; continue;
+- } else if (sscanf(scanbuff," MISSION_PHASE = %s", mphase) == 1) {
++ } else if (sscanf(scanbuff, " MISSION_PHASE = " S(COMMENTSIZE), mphase) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," INSTRUMENT_NAME = %s", iname) == 1) {
++ } else if (sscanf(scanbuff, " INSTRUMENT_NAME = " S(COMMENTSIZE), iname) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," GAIN_MODE_ID = %s", gainmode) == 1) {
++ } else if (sscanf(scanbuff, " GAIN_MODE_ID = " S(COMMENTSIZE), gainmode) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," INSTRUMENT_GAIN_STATE = %s",gainmode)==1) {
++ } else if (sscanf(scanbuff, " INSTRUMENT_GAIN_STATE = " S(COMMENTSIZE), gainmode) ==1 ) {
+ lastwasinote=FALSE; continue;
+-
+- } else if (sscanf(scanbuff," EDIT_MODE_ID = %s", editmode) == 1) {
++
++ } else if (sscanf(scanbuff, " EDIT_MODE_ID = " S(COMMENTSIZE), editmode) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," INSTRUMENT_EDIT_MODE = %s", editmode)==1) {
++ } else if (sscanf(scanbuff, " INSTRUMENT_EDIT_MODE = " S(COMMENTSIZE), editmode) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," SCAN_MODE_ID = %s", scanmode) == 1) {
++ } else if (sscanf(scanbuff, " SCAN_MODE_ID = " S(COMMENTSIZE), scanmode) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," INSTRUMENT_SCAN_RATE = %s", scanmode)==1) {
++ } else if (sscanf(scanbuff, " INSTRUMENT_SCAN_RATE = " S(COMMENTSIZE), scanmode) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," SHUTTER_MODE_ID = %s", shuttermode) == 1) {
++ } else if (sscanf(scanbuff, " SHUTTER_MODE_ID = " S(COMMENTSIZE), shuttermode) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," INSTRUMENT_SHUTTER_MODE = %s",
+- shuttermode) == 1) {
++ } else if (sscanf(scanbuff, " INSTRUMENT_SHUTTER_MODE = " S(COMMENTSIZE), shuttermode) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," SCAN_MODE_ID = %s", scanmode) == 1) {
++ } else if (sscanf(scanbuff, " SCAN_MODE_ID = " S(COMMENTSIZE), scanmode) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," INSTRUMENT_SCAN_RATE = %s", scanmode)==1) {
++ } else if (sscanf(scanbuff, " INSTRUMENT_SCAN_RATE = " S(COMMENTSIZE), scanmode) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," SPACECRAFT_EVENT_TIME = %s", itime) == 1) {
++ } else if (sscanf(scanbuff, " SPACECRAFT_EVENT_TIME = " S(COMMENTSIZE), itime) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," IMAGE_TIME = %s", itime) == 1) {
++ } else if (sscanf(scanbuff, " IMAGE_TIME = " S(COMMENTSIZE), itime) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," FILTER_NAME = %s", filtname) == 1) {
++ } else if (sscanf(scanbuff, " FILTER_NAME = " S(COMMENTSIZE), filtname) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff," INSTRUMENT_FILTER_NAME = %s",filtname)==1) {
++ } else if (sscanf(scanbuff, " INSTRUMENT_FILTER_NAME = " S(COMMENTSIZE), filtname) == 1) {
+ lastwasinote=FALSE; continue;
+
+- } else if ((sscanf(scanbuff," EXPOSURE_DURATION = %s", exposure) == 1)
+- || (sscanf(scanbuff," INSTRUMENT_EXPOSURE_DURATION = %s",
+- exposure) == 1)) {
++ } else if ((sscanf(scanbuff, " EXPOSURE_DURATION = " S(COMMENTSIZE), exposure) == 1)
++ || (sscanf(scanbuff, " INSTRUMENT_EXPOSURE_DURATION = " S(COMMENTSIZE),
++ exposure)) == 1) {
+ tmptmp = (char *) index(scanbuff,'=');
+ tmptmp++;
+ while((*tmptmp) == ' ')
+@@ -520,10 +527,10 @@
+ strcpy(exposure,tmptmp);
+ lastwasinote=FALSE; continue;
+
+- } else if (sscanf(scanbuff, "NOTE = %s", inote) == 1) {
++ } else if (sscanf(scanbuff, "NOTE = " S(INOTESIZE), inote) == 1) {
+ tmptmp = (char *) index(scanbuff,'='); tmptmp++;
+ while (((*tmptmp) == ' ') || ((*tmptmp) == '"')) tmptmp++;
+- strcpy(inote,tmptmp);
++ strncpy(inote, tmptmp, INOTESIZE - 1);
+ strcat(inote," ");
+
+ /* evil and somewhat risky: A "note" (really, any textual
+@@ -531,11 +538,11 @@
+ * get my hands on the clown who designed this format...
+ * What we basically assume here
+ * is that a NOTE record that doesn't end with a " is
+- * followed by some number of continuations, one of which
++ * followed by some number of continuations, one of which
+ * will have a " in it. If this turns out to not be true,
+ * well, we'll segmentation fault real soon. We use
+ * lastwasinote as a semaphore to indicate that the previous
+- * record was an unfinished NOTE record. We clear the
++ * record was an unfinished NOTE record. We clear the
+ * flag in each of the above record types for potential
+ * error recovery, although it really breaks up the beauty
+ * of the cascading sscanfs. Dykstra'd love me for this one */
+@@ -548,7 +555,7 @@
+ } else if (lastwasinote) {
+ tmptmp=scanbuff;
+ while (((*tmptmp) == ' ') || ((*tmptmp) == '"')) tmptmp++;
+- strcat(inote,tmptmp);
++ strncat(inote, tmptmp, INOTESIZE - strlen(inote) - 1);
+ strcat(inote," ");
+ if (index(tmptmp,'"') != NULL)
+ lastwasinote=FALSE;
+@@ -568,10 +575,10 @@
+ fclose(zf);
+ return 0;
+ }
+-
++
+ vaxbyte = strncmp(sampletype, "VAX_", (size_t) 4) == 0 ||
+ strncmp(sampletype, "LSB_", (size_t) 4) == 0;
+-
++
+ } else if (itype == VICAR) {
+ /* we've got a VICAR file. Let's find out how big the puppy is */
+ ungetc(' ', zf);
+@@ -582,8 +589,8 @@
+ SetISTR(ISTR_WARNING,"LoadPDS: bad NL in VICAR\n");
+ returnp=TRUE;
+ }
+-
+- if (sscanf(tmp," NL = %d",&y) != 1) {
++
++ if (sscanf(tmp," NL = %d",&h) != 1) {
+ SetISTR(ISTR_WARNING,"LoadPDS: bad scan NL in VICAR\n");
+ returnp=TRUE;
+ }
+@@ -593,7 +600,7 @@
+ returnp=TRUE;
+ }
+
+- if (sscanf(tmp, " NS = %d",&x) != 1) {
++ if (sscanf(tmp, " NS = %d",&w) != 1) {
+ SetISTR(ISTR_WARNING,"LoadPDS: bad scan NS in VICAR\n");
+ returnp=TRUE;
+ }
+@@ -625,6 +632,13 @@
+ returnp=TRUE;
+ }
+
++ /* samplesize can be arbitrarily large (up to int limit) in non-VICAR files */
++ if (samplesize != 8 && samplesize != 16) {
++ SetISTR(ISTR_WARNING,"LoadPDS: %d bits per pixel not supported",
++ samplesize);
++ returnp=TRUE;
++ }
++
+ if (returnp) {
+ fclose(zf);
+ return 0;
+@@ -640,27 +654,27 @@
+
+ *infobuff='\0';
+ if (*spacecraft) {
+- strcat(infobuff,spacecraft);
++ strncat(infobuff, spacecraft, sizeof(infobuff) - 1);
+ }
+
+ if (*target) {
+- strcat(infobuff,", ");
+- strcat(infobuff,target);
++ strncat(infobuff, ", ", sizeof(infobuff) - strlen(infobuff) - 1);
++ strncat(infobuff, target, sizeof(infobuff) - strlen(infobuff) - 1);
+ }
+
+ if (*filtname) {
+- strcat(infobuff,", ");
+- strcat(infobuff,filtname);
++ strncat(infobuff, ", ", sizeof(infobuff) - strlen(infobuff) - 1);
++ strncat(infobuff, filtname, sizeof(infobuff) - strlen(infobuff) - 1);
+ }
+
+ if (*itime) {
+- strcat(infobuff,", ");
+- strcat(infobuff,itime);
++ strncat(infobuff, ", ", sizeof(infobuff) - strlen(infobuff) - 1);
++ strncat(infobuff, itime, sizeof(infobuff) - strlen(infobuff) - 1);
+ }
+
+- SetISTR(ISTR_WARNING,infobuff);
++ SetISTR(ISTR_WARNING, "%s", infobuff);
+
+- strcpy(pdsuncompfname,fname);
++ strncpy(pdsuncompfname,fname,sizeof(pdsuncompfname) - 1);
+ ftypstr = "";
+
+ switch (itype) {
+@@ -688,12 +702,26 @@
+ fclose(zf);
+
+ #ifndef VMS
+- sprintf(pdsuncompfname,"%s/xvhuffXXXXXX", tmpdir);
+- mktemp(pdsuncompfname);
+- sprintf(scanbuff,"%s %s - 4 >%s",PDSUNCOMP,fname,pdsuncompfname);
++ snprintf(pdsuncompfname, sizeof(pdsuncompfname) - 1, "%s/xvhuffXXXXXX", tmpdir);
+ #else
+ strcpy(pdsuncompfname,"sys$disk:[]xvhuffXXXXXX");
++#endif
++
++#ifdef USE_MKSTEMP
++ close(mkstemp(pdsuncompfname));
++#else
+ mktemp(pdsuncompfname);
++ tmpfd = open(pdsuncompfname,O_WRONLY|O_CREAT|O_EXCL,S_IRWUSR);
++ if (tmpfd < 0) {
++ SetISTR(ISTR_WARNING,"Unable to create temporary file.");
++ return 0;
++ }
++ close(tmpfd);
++#endif
++
++#ifndef VMS
++ sprintf(scanbuff,"%s '%s' - 4 > %s", PDSUNCOMP, fname, pdsuncompfname);
++#else
+ sprintf(scanbuff,"%s %s %s 4",PDSUNCOMP,fname,pdsuncompfname);
+ #endif
+
+@@ -727,63 +755,72 @@
+ fread(scanbuff, (size_t) labelsize, (size_t) 1, zf);
+ }
+
+- x *= samplesize/8;
++ /* samplesize is bits per pixel; guaranteed at this point to be 8 or 16 */
++ bytewidth = w * (samplesize/8);
++ bufsize = bytewidth * h;
++ if (w <= 0 || h <= 0 || bytewidth/w != (samplesize/8) ||
++ bufsize/bytewidth != h)
++ {
++ SetISTR(ISTR_WARNING,"LoadPDS: image dimensions out of range (%dx%dx%d)",
++ w, h, samplesize/8);
++ fclose(zf);
++ return 0;
++ }
+
+- image = (byte *) malloc((size_t) x*y);
++ image = (byte *) malloc((size_t) bufsize);
+ if (image == NULL) {
+- SetISTR(ISTR_WARNING,"LoadPDS: couldn't malloc %d",x*y);
+ fclose(zf);
+ if (isfixed == FALSE)
+ unlink(pdsuncompfname);
+- exit(1);
++ FatalError("LoadPDS: can't malloc image buffer");
+ }
+
+ if ((lssize || lpsize) &&
+ ((itype == PDSFIXED) || (itype == VIKINGFIXED) || (itype == VICAR)) ) {
+ /* ARrrrgh. Some of these images have crud intermixed with the image, */
+ /* preventing us from freading in one fell swoop */
+- /* (whatever a fell swoop is */
++ /* (whatever a fell swoop is) */
+
+- for (yy=0; yy<y; yy++) {
+- if (lpsize &&
+- ((teco=(fread(scanbuff,(size_t) lpsize,(size_t) 1,zf))) != 1)) {
++ for (yy=0; yy<h; yy++) {
++ if (lpsize &&
++ (teco=fread(scanbuff,(size_t) lpsize,(size_t) 1,zf)) != 1) {
+ SetISTR(ISTR_WARNING, "LoadPDS: unexpected EOF reading prefix");
+ fclose(zf);
+ return 0;
+ }
+-
+- if ((teco=(fread(image+(yy*x), (size_t) x, (size_t) 1,zf))) != 1) {
++
++ teco = fread(image+(yy*bytewidth), (size_t) bytewidth, (size_t) 1,zf);
++ if (teco != 1) {
+ SetISTR(ISTR_WARNING, "LoadPDS: unexpected EOF reading line %d",yy);
+ fclose(zf);
+ return 0;
+ }
+
+- if (lssize &&
+- ((teco=(fread(scanbuff,(size_t) lssize,(size_t) 1,zf))) != 1)) {
++ if (lssize &&
++ (teco=fread(scanbuff,(size_t) lssize,(size_t) 1,zf)) != 1) {
+ SetISTR(ISTR_WARNING, "LoadPDS: unexpected EOF reading suffix");
+ fclose(zf);
+ return 0;
+ }
+ }
+
+- } else if ((yy=fread(image, (size_t) x*y, (size_t) 1, zf)) != 1) {
++ } else if ((yy=fread(image, (size_t) bytewidth*h, (size_t) 1, zf)) != 1) {
+ SetISTR(ISTR_WARNING,"LoadPDS: error reading image data");
+ fclose(zf);
+ if (itype==PDSVARIABLE || itype==VIKINGVARIABLE)
+ unlink(pdsuncompfname);
+-
+ return 0;
+ }
+
+- fclose(zf);
++ fclose(zf);
+
+
+ if (isfixed == FALSE)
+ unlink(pdsuncompfname);
+
+ pinfo->pic = image;
+- pinfo->w = x;
+- pinfo->h = y;
++ pinfo->w = w; /* true pixel-width now (no longer bytewidth!) */
++ pinfo->h = h;
+
+ if (samplesize == 16)
+ if (Convert16BitImage(fname, pinfo,
+@@ -798,27 +835,27 @@
+ if (pinfo->comment) {
+ char tmp[256];
+ *(pinfo->comment) = '\0';
+-
+- sprintf(tmp, "Spacecraft: %-28sTarget: %-32s\n", spacecraft, target);
+- strcat(pinfo->comment, tmp);
+-
+- sprintf(tmp, "Filter: %-32sMission phase: %-24s\n", filtname, mphase);
+- strcat(pinfo->comment, tmp);
+-
+- sprintf(tmp, "Image time: %-28sGain mode: %-29s\n", itime, gainmode);
+- strcat(pinfo->comment, tmp);
+-
+- sprintf(tmp, "Edit mode: %-29sScan mode: %-29s\n", editmode, scanmode);
+- strcat(pinfo->comment, tmp);
+-
+- sprintf(tmp, "Exposure: %-30sShutter mode: %-25s\n", exposure,shuttermode);
+- strcat(pinfo->comment, tmp);
+-
+- sprintf(tmp, "Instrument: %-28sImage time: %-28s\n", iname, itime);
+- strcat(pinfo->comment, tmp);
+-
+- sprintf(tmp, "Image Note: %-28s", inote);
+- strcat(pinfo->comment, tmp);
++
++ sprintf(tmp, "Spacecraft: %-28.28sTarget: %-32.32s\n", spacecraft, target);
++ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
++
++ sprintf(tmp, "Filter: %-32.32sMission phase: %-24.24s\n", filtname, mphase);
++ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
++
++ sprintf(tmp, "Image time: %-28.28sGain mode: %-29.29s\n", itime, gainmode);
++ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
++
++ sprintf(tmp, "Edit mode: %-29.29sScan mode: %-29.29s\n", editmode, scanmode);
++ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
++
++ sprintf(tmp, "Exposure: %-30.30sShutter mode: %-25.25s\n", exposure,shuttermode);
++ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
++
++ sprintf(tmp, "Instrument: %-28.28sImage time: %-28.28s\n", iname, itime);
++ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
++
++ sprintf(tmp, "Image Note: %-28.28s", inote);
++ strncat(pinfo->comment, tmp, 2000 - strlen(pinfo->comment) - 1);
+ }
+
+ if (LoadPDSPalette(fname, pinfo)) return 1;
+@@ -868,23 +905,20 @@
+ m = 65536 * sizeof(byte);
+ lut = (byte *) malloc(m);
+ if (lut == NULL) {
+- SetISTR(ISTR_WARNING,"LoadPDS: couldn't malloc %d", m);
+- return 0;
++ FatalError("LoadPDS: can't malloc LUT buffer");
+ }
+- pinfo->w /= 2;
+
+ /* allocate histogram table */
+ m = 65536 * sizeof(long);
+ hist = (long *) malloc(m);
+ if (hist == NULL) {
+- SetISTR(ISTR_WARNING,"LoadPDS: couldn't malloc %d", m);
+ free(lut);
+- return 0;
++ FatalError("LoadPDS: can't malloc histogram buffer");
+ }
+
+ /* check whether histogram file exists */
+ #ifdef VMS
+- c = (char *) rindex(strcpy(name,
++ c = (char *) rindex(strcpy(name,
+ (c = (char *) rindex(fname, ':')) ? c+1 : fname),
+ ']');
+ #else
+@@ -947,14 +981,20 @@
+ }
+ }
+
+- /* allocate new 8-bit image */
+ free(hist);
++
++ /* allocate new 8-bit image */
+ n = pinfo->w * pinfo->h;
++ if (pinfo->w <= 0 || pinfo->h <= 0 || n/pinfo->w != pinfo->h) {
++ SetISTR(ISTR_WARNING,"LoadPDS: image dimensions out of range (%dx%d)",
++ pinfo->w, pinfo->h);
++ free(lut);
++ return 0;
++ }
+ pPix8 = (byte *)malloc(n*sizeof(byte));
+ if (pPix8 == NULL) {
+- SetISTR(ISTR_WARNING,"LoadPDS: couldn't malloc %d", n*sizeof(byte));
+ free(lut);
+- return 0;
++ FatalError("LoadPDS: can't malloc 16-to-8-bit conversion buffer");
+ }
+
+ /* convert the 16-bit image to 8-bit */
+@@ -979,16 +1019,16 @@
+ FILE *fp;
+ char name[1024], buf[256], *c;
+ int i, n, r, g, b;
+-
++
+ #ifdef VMS
+- c = (char *) rindex(strcpy(name,
++ c = (char *) rindex(strcpy(name,
+ (c = (char *) rindex(fname, ':')) ? c+1 : fname),
+ ']');
+ #else
+ c = (char *) rindex(strcpy(name, fname), '/');
+ #endif /* VMS */
+ (void)strcpy(c ? c+1 : name, "palette.tab");
+-
++
+ if ((fp = xv_fopen(name, "r")) == NULL)
+ return 0;
+ for (i = 0; i < 256; i++) {
+@@ -1014,7 +1054,3 @@
+
+
+ #endif /* HAVE_PDS */
+-
+-
+-
+-
+diff -ru xv-3.10a/xvpictoppm.c xv-3.10a-enhancements/xvpictoppm.c
+--- xv-3.10a/xvpictoppm.c 1995-01-13 11:57:14.000000000 -0800
++++ xv-3.10a-enhancements/xvpictoppm.c 2005-04-10 09:36:04.000000000 -0700
+@@ -77,7 +77,7 @@
+ FILE *fp;
+ byte *icon8, *pic24, *ip, *pp;
+ char buf[256];
+- int i, builtin, w, h, mv;
++ int i, builtin, w, h, maxval, npixels, p24sz;
+
+ fp = stdin;
+ builtin = 0;
+@@ -88,42 +88,45 @@
+ /* read comments until we see '#END_OF_COMMENTS', or hit EOF */
+ while (1) {
+ if (!fgets(buf, 256, fp)) errexit();
+-
++
+ if (!strncmp(buf, "#END_OF_COMMENTS", (size_t) 16)) break;
+
+ else if (!strncmp(buf, "#BUILTIN:", (size_t) 9)) {
+ builtin = 1;
+- fprintf(stderr,"Built-In icon: no image to convert!\n");
++ fprintf(stderr, "Built-in icon: no image to convert\n");
+ exit(1);
+ }
+ }
+
+
+ /* read width, height, maxval */
+- if (!fgets(buf, 256, fp) || sscanf(buf, "%d %d %d", &w, &h, &mv) != 3)
++ if (!fgets(buf, 256, fp) || sscanf(buf, "%d %d %d", &w, &h, &maxval) != 3)
+ errexit();
+
++ npixels = w * h;
++ p24sz = 3 * npixels;
+
+- if (w<1 || h<1 || mv != 255) {
+- fprintf(stderr,"Bogus thumbnail file!\n");
++ if (w <= 0 || h <= 0 || maxval != 255 || npixels/w != h || p24sz/3 != npixels)
++ {
++ fprintf(stderr, "Thumbnail dimensions out of range\n");
+ exit(1);
+ }
+
+
+ /* read binary data */
+- icon8 = (byte *) malloc((size_t) w * h);
++ icon8 = (byte *) malloc((size_t) npixels);
+ if (!icon8) errexit();
+
+- i = fread(icon8, (size_t) 1, (size_t) w*h, fp);
+- if (i != w*h) errexit();
++ i = fread(icon8, (size_t) 1, (size_t) npixels, fp);
++ if (i != npixels) errexit();
++
+
+-
+ /* make 24-bit version of icon */
+- pic24 = (byte *) malloc((size_t) w * h * 3);
++ pic24 = (byte *) malloc((size_t) p24sz);
+ if (!pic24) errexit();
+
+ /* convert icon from 332 to 24-bit image */
+- for (i=0, ip=icon8, pp=pic24; i<w*h; i++, ip++, pp+=3) {
++ for (i=0, ip=icon8, pp=pic24; i<npixels; i++, ip++, pp+=3) {
+ pp[0] = ( ((int) ((*ip >> 5) & 0x07)) * 255) / 7;
+ pp[1] = ( ((int) ((*ip >> 2) & 0x07)) * 255) / 7;
+ pp[2] = ( ((int) ((*ip >> 0) & 0x03)) * 255) / 3;
+@@ -160,10 +163,3 @@
+
+ if (ferror(fp)) errexit();
+ }
+-
+-
+-
+-
+-
+-
+-
+diff -ru xv-3.10a/xvpm.c xv-3.10a-enhancements/xvpm.c
+--- xv-3.10a/xvpm.c 1994-12-22 14:34:40.000000000 -0800
++++ xv-3.10a-enhancements/xvpm.c 2007-05-13 17:34:04.000000000 -0700
+@@ -42,9 +42,9 @@
+ /***** end PM.H *****/
+
+
+-pmpic thePic;
++static pmpic thePic;
+
+-static int pmError PARM((char *, char *));
++static int pmError PARM((const char *, const char *));
+ static int flip4 PARM((int));
+ static int getint32 PARM((FILE *));
+ static void putint32 PARM((int, FILE *));
+@@ -60,8 +60,8 @@
+
+ FILE *fp;
+ byte *pic8;
+- int isize,i,flipit,w,h;
+- char *bname;
++ int isize,i,flipit,w,h,npixels,nRGBbytes;
++ const char *bname;
+
+ bname = BaseName(fname);
+ thePic.pm_image = (char *) NULL;
+@@ -103,10 +103,11 @@
+ thePic.pm_cmtsize = flip4(thePic.pm_cmtsize);
+ }
+
+- w = thePic.pm_ncol; h = thePic.pm_nrow;
++ w = thePic.pm_ncol;
++ h = thePic.pm_nrow;
+
+ /* make sure that the input picture can be dealt with */
+- if ( thePic.pm_nband!=1 ||
++ if ( thePic.pm_nband!=1 ||
+ (thePic.pm_form!=PM_I && thePic.pm_form!=PM_C) ||
+ (thePic.pm_form==PM_I && thePic.pm_np>1) ||
+ (thePic.pm_form==PM_C && (thePic.pm_np==2 || thePic.pm_np>4)) ) {
+@@ -114,20 +115,27 @@
+ fprintf(stderr,"(ie, 1-plane PM_I, or 1-, 3-, or 4-plane PM_C)\n");
+
+ return pmError(bname, "PM file in unsupported format");
+- }
++ }
+
+
+ isize = pm_isize(&thePic);
++ npixels = w*h;
++ nRGBbytes = 3*npixels;
++
++ /* make sure image is more-or-less valid (and no overflows) */
++ if (isize <= 0 || w <= 0 || h <= 0 || npixels/w < h ||
++ nRGBbytes/3 < npixels || thePic.pm_cmtsize < 0)
++ return pmError(bname, "Bogus PM file!!");
+
+- if (DEBUG)
++ if (DEBUG)
+ fprintf(stderr,"%s: LoadPM() - loading a %dx%d %s pic, %d planes\n",
+- cmd, w, h, (thePic.pm_form==PM_I) ? "PM_I" : "PM_C",
++ cmd, w, h, (thePic.pm_form==PM_I) ? "PM_I" : "PM_C",
+ thePic.pm_np);
+
+-
++
+ /* allocate memory for picture and read it in */
+ thePic.pm_image = (char *) malloc((size_t) isize);
+- if (thePic.pm_image == NULL)
++ if (thePic.pm_image == NULL)
+ return( pmError(bname, "unable to malloc PM picture") );
+
+ if (fread(thePic.pm_image, (size_t) isize, (size_t) 1, fp) != 1) {
+@@ -147,7 +155,7 @@
+ }
+ }
+ }
+-
++
+ fclose(fp);
+
+
+@@ -155,11 +163,11 @@
+ int *intptr;
+ byte *pic24, *picptr;
+
+- if ((pic24 = (byte *) malloc((size_t) w*h*3))==NULL) {
++ if ((pic24 = (byte *) malloc((size_t) nRGBbytes))==NULL) {
+ if (thePic.pm_cmt) free(thePic.pm_cmt);
+ return( pmError(bname, "unable to malloc 24-bit picture") );
+ }
+-
++
+ intptr = (int *) thePic.pm_image;
+ picptr = pic24;
+
+@@ -190,7 +198,7 @@
+ else if (thePic.pm_form == PM_C && thePic.pm_np>1) {
+ byte *pic24, *picptr, *rptr, *gptr, *bptr;
+
+- if ((pic24 = (byte *) malloc((size_t) w*h*3))==NULL) {
++ if ((pic24 = (byte *) malloc((size_t) nRGBbytes))==NULL) {
+ if (thePic.pm_cmt) free(thePic.pm_cmt);
+ return( pmError(bname, "unable to malloc 24-bit picture") );
+ }
+@@ -210,12 +218,12 @@
+ pinfo->pic = pic24;
+ pinfo->type = PIC24;
+ }
+-
++
+
+ else if (thePic.pm_form == PM_C && thePic.pm_np==1) {
+ /* don't have to convert, just point pic at thePic.pm_image */
+ pic8 = (byte *) thePic.pm_image;
+- for (i=0; i<256; i++)
++ for (i=0; i<256; i++)
+ pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i; /* build mono cmap */
+
+ pinfo->pic = pic8;
+@@ -228,13 +236,13 @@
+ pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
+
+ pinfo->frmType = F_PM;
+- pinfo->colType = (thePic.pm_form==PM_I || thePic.pm_np>1)
++ pinfo->colType = (thePic.pm_form==PM_I || thePic.pm_np>1)
+ ? F_FULLCOLOR : F_GREYSCALE;
+- sprintf(pinfo->fullInfo,"PM, %s. (%d plane %s) (%ld bytes)",
+- (thePic.pm_form==PM_I || thePic.pm_np>1)
++ sprintf(pinfo->fullInfo,"PM, %s. (%d plane %s) (%d bytes)",
++ (thePic.pm_form==PM_I || thePic.pm_np>1)
+ ? "24-bit color" : "8-bit greyscale",
+ thePic.pm_np, (thePic.pm_form==PM_I) ? "PM_I" : "PM_C",
+- isize + PM_IOHDR_SIZE + thePic.pm_cmtsize);
++ isize + (int)PM_IOHDR_SIZE + thePic.pm_cmtsize);
+
+ sprintf(pinfo->shrtInfo, "%dx%d PM.", w,h);
+ pinfo->comment = thePic.pm_cmt;
+@@ -313,7 +321,7 @@
+
+ else if (colorstyle == 1) { /* GreyScale: 8 bits per pixel */
+ byte rgb[256];
+-
++
+ if (ptype == PIC8) {
+ for (i=0; i<numcols; i++) rgb[i] = MONO(rmap[i],gmap[i],bmap[i]);
+ for (i=0, p=pic; i<w*h; i++, p++) {
+@@ -351,7 +359,7 @@
+
+ /*****************************/
+ static int pmError(fname, st)
+- char *fname, *st;
++ const char *fname, *st;
+ {
+ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
+ if (thePic.pm_image != NULL) free(thePic.pm_image);
+diff -ru xv-3.10a/xvpopup.c xv-3.10a-enhancements/xvpopup.c
+--- xv-3.10a/xvpopup.c 1995-01-19 10:09:31.000000000 -0800
++++ xv-3.10a-enhancements/xvpopup.c 2007-04-15 15:02:32.000000000 -0700
+@@ -1,5 +1,5 @@
+-/*
+- * xvpopup.c - popup "Are you sure? Yes/No/Maybe" sort of dialog box
++/*
++ * xvpopup.c - pop up "Are you sure? Yes/No/Maybe" sort of dialog box
+ *
+ * callable functions:
+ *
+@@ -13,16 +13,16 @@
+ * OpenAlert(str) - maps a button-less window
+ * CloseAlert() - closes a button-less window
+ * PUCheckEvent(event) - called by event handler
+- * TextRect() - draws semi-complex strings in a rectangle
+ */
+
+ #include "copyright.h"
+
+ #include "xv.h"
+
+-#include "bits/icon"
++#define OMIT_ICON_BITS
++#include "bits/icon" /* icon_bits[] not used, but icon_width/height are */
+
+-#define PUWIDE 400
++#define PUWIDE 480
+ #define PUHIGH 170
+
+ #define PAD_PUWIDE 480
+@@ -30,8 +30,9 @@
+
+ #define BUTTH 24
+
+-static int doPopUp PARM((char *, char **, int, int, char *));
++static int doPopUp PARM((const char *, const char **, int, int, const char *));
+ static void attachPUD PARM((void));
++static void TextRect PARM((Window, const char *, int, int, int, int, u_long));
+ static void createPUD PARM((void));
+ static void drawPUD PARM((int, int, int, int));
+ static void drawPadOMStr PARM((void));
+@@ -41,8 +42,8 @@
+ static void changedGSBuf PARM((void));
+ static void drawGSBuf PARM((void));
+ static void buildPadLists PARM((void));
+-static void build1PadList PARM((char *, char **, char **, int *,
+- char **, char **, int));
++static void build1PadList PARM((const char *, const char **, const char **, int *,
++ const char **, const char **, int));
+
+
+ /* values 'popUp' can take */
+@@ -57,20 +58,21 @@
+ #define HIDESTR "Hide XV windows"
+
+ /* local variables */
+-Window popW;
+-int nbts, selected, popUp=0, firsttime=1;
+-int puwide = PUWIDE;
+-int puhigh = PUHIGH;
+-BUTT *bts;
+-char *text;
+-char accel[8];
+-
+-char *gsBuf, *gsFilter; /* stuff needed for GetStrPopUp() handling */
+-int gsBufLen, gsAllow, gsCurPos, gsStPos, gsEnPos;
+-int gsx, gsy, gsw, gsh;
++static Window popW;
++static int nbts, selected, popUp=0, firsttime=1;
++static int puwide = PUWIDE;
++static int puhigh = PUHIGH;
++static BUTT *bts;
++static const char *text;
++static char accel[8];
++
++static char *gsBuf; /* stuff needed for GetStrPopUp() handling */
++static const char *gsFilter;
++static int gsBufLen, gsAllow, gsCurPos, gsStPos, gsEnPos;
++static int gsx, gsy, gsw, gsh;
+
+ /* stuff for GrabPopUp */
+-CBUTT ahideCB;
++static CBUTT ahideCB;
+
+
+ /*** stuff for PadPopUp ***/
+@@ -82,48 +84,51 @@
+ static int padMode, padOMode;
+ static DIAL padWDial, padHDial, padODial;
+
+-static int padMthdLen=3;
+-static char *padMthdNames[] = { "Solid Fill", "Run 'bggen'", "Load Image" };
++static int padMthdLen=3;
++static const char *padMthdNames[] = { "Solid Fill", "Run 'bggen'", "Load Image" };
+
+-static int padColDefLen = 9;
+-static char *padColDefNames[] = { "black", "red", "yellow", "green",
+- "cyan", "blue", "magenta", "white",
+- "50% gray" };
+-
+-static char *padColDefVals[] = { "black", "red", "yellow", "green",
+- "cyan", "blue", "magenta", "white",
+- "gray50" };
+-
+-static int padBgDefLen = 8;
+-static char *padBgDefNames[] = {
+- "Black->White",
+- "Blue Gradient",
+- "RGB Rainbow",
+- "Full Rainbow",
+- "Color Assortment",
+- "Green Tiles",
+- "Red Balls",
+- "Red+Yellow Diamonds" };
+-
+-static char *padBgDefVals[] = {
+- "black white",
+- "100 100 255 50 50 150",
+- "red green blue",
+- "black red yellow green blue purple black",
+- "black white red black yellow white green black cyan white blue black magenta white red yellow green cyan blue magenta red",
+- "green black -r 30 -G 32x32",
+- "red black -r 45 -G 32x32",
+- "red yellow -r 45 -G 32x32" };
++static int padColDefLen = 9;
++static const char *padColDefNames[] = { "black", "red", "yellow", "green",
++ "cyan", "blue", "magenta", "white",
++ "50% gray" };
++
++static const char *padColDefVals[] = { "black", "red", "yellow", "green",
++ "cyan", "blue", "magenta", "white",
++ "gray50" };
++
++static int padBgDefLen = 8;
++static const char *padBgDefNames[] = { "Black->White",
++ "Blue Gradient",
++ "RGB Rainbow",
++ "Full Rainbow",
++ "Color Assortment",
++ "Green Tiles",
++ "Red Balls",
++ "Red+Yellow Diamonds" };
++
++static const char *padBgDefVals[] = { "black white",
++ "100 100 255 50 50 150",
++ "red green blue",
++ "black red yellow green blue purple black",
++ "black white red black yellow white green black cyan white blue black magenta white red yellow green cyan blue magenta red",
++ "green black -r 30 -G 32x32",
++ "red black -r 45 -G 32x32",
++ "red yellow -r 45 -G 32x32" };
+
+
+ /* this should match with PAD_O* defs in xv.h */
+-static char *padOMStr[] = { "RGB", "Int.", "Hue", "Sat." };
++static const char *padOMStr[] = { "RGB", "Int.", "Hue", "Sat." };
+
+ #define PAD_MAXDEFLEN 10
+-static int padColLen = 0, padBgLen = 0, padLoadLen = 0;
+-static char *padColNames [PAD_MAXDEFLEN], *padColVals [PAD_MAXDEFLEN];
+-static char *padBgNames [PAD_MAXDEFLEN], *padBgVals [PAD_MAXDEFLEN];
+-static char *padLoadNames[PAD_MAXDEFLEN], *padLoadVals[PAD_MAXDEFLEN];
++static int padColLen = 0;
++static const char *padColNames [PAD_MAXDEFLEN];
++static const char *padColVals [PAD_MAXDEFLEN];
++static int padBgLen = 0;
++static const char *padBgNames [PAD_MAXDEFLEN];
++static const char *padBgVals [PAD_MAXDEFLEN];
++static int padLoadLen = 0;
++static const char *padLoadNames[PAD_MAXDEFLEN];
++static const char *padLoadVals [PAD_MAXDEFLEN];
+
+
+ /***************************************************/
+@@ -150,11 +155,11 @@
+ if (wy + h > dispHIGH) wy = dispHIGH - h;
+ }
+
+-
++
+ if (winCtrPosKludge) {
+ wx -= (p_offx + ch_offx);
+ wy -= (p_offy + ch_offy);
+- }
++ }
+ else {
+ wx -= (ch_offx);
+ wy -= (ch_offy);
+@@ -174,16 +179,20 @@
+
+ /***************************************************/
+ int PopUp(txt, labels, n)
+- char *txt, *labels[];
+- int n;
++ const char *txt;
++ const char *labels[];
++ int n;
+ {
+ return doPopUp(txt, labels, n, ISPOPUP, "xv confirm");
+ }
+
++
+ /***************************************************/
+ static int doPopUp(txt, labels, n, poptyp, wname)
+- char *txt, *labels[], *wname;
+- int n, poptyp;
++ const char *txt;
++ const char *labels[];
++ int n, poptyp;
++ const char *wname;
+ {
+ int i;
+ XEvent event;
+@@ -197,17 +206,17 @@
+ /* attach controls to popW, now that it exists */
+ if (poptyp==ISGRAB) ahideCB.win = popW;
+ else if (poptyp == ISPAD) {
+-
++
+ if (!padHaveDooDads) {
+ DCreate(&padWDial, popW, 16, puhigh-16-100-1,75,100,
+- 1, 2048, pWIDE, 10,
++ 1.0, 2048.0, (double)pWIDE, 1.0, 10.0,
+ infofg, infobg, hicol, locol, "Width", NULL);
+ DCreate(&padHDial, popW, 16+1+75, puhigh-16-100-1,75,100,
+- 1, 2048, pHIGH, 10,
++ 1.0, 2048.0, (double)pHIGH, 1.0, 10.0,
+ infofg, infobg, hicol, locol, "Height", NULL);
+
+ DCreate(&padODial, popW, 16+1+75+75+9, puhigh-16-100-1,75,100,
+- 0, 100, 100, 10,
++ 0.0, 100.0, 100.0, 1.0, 10.0,
+ infofg, infobg, hicol, locol, "Opaque", NULL);
+
+ MBCreate(&padMthdMB, popW, 100-2+44, 10, 140, 19, NULL,
+@@ -230,8 +239,8 @@
+ XMapWindow(theDisp, padWDial.win);
+ XMapWindow(theDisp, padHDial.win);
+ XMapWindow(theDisp, padODial.win);
+- }
+-
++ }
++
+
+ XResizeWindow(theDisp, popW, (u_int) puwide, (u_int) puhigh);
+ XStoreName (theDisp, popW, wname);
+@@ -257,10 +266,10 @@
+ }
+ else if (poptyp == ISPAD) {
+ BTSetActive(&bts[0], (int) strlen(gsBuf));
+- i = pWIDE * 3; RANGE(i,2048,9999);
+- DSetRange(&padWDial, 1, i, padWDial.val, 10);
+- i = pHIGH * 3; RANGE(i,2048,9999);
+- DSetRange(&padHDial, 1, i, padHDial.val, 10);
++ i = pWIDE * 3; RANGE(i,2048,9999);
++ DSetRange(&padWDial, 1.0, (double)i, padWDial.val, 1.0, 10.0);
++ i = pHIGH * 3; RANGE(i,2048,9999);
++ DSetRange(&padHDial, 1.0, (double)i, padHDial.val, 1.0, 10.0);
+
+ DSetActive(&padWDial, (padMode!=PAD_LOAD)); /* DSetRange activates dial */
+ DSetActive(&padHDial, (padMode!=PAD_LOAD));
+@@ -283,18 +292,22 @@
+ }
+ }
+
+- /* center first button in window around mouse position, with constraint that
++ /* center first button in window around mouse position, with constraint that
+ window be fully on the screen */
+
+- CenterMapWindow(popW, 40 + bts[0].x, BUTTH/2 + bts[0].y, puwide, puhigh);
+ popUp = poptyp;
++ if (startGrab == 2)
++ startGrab = 4;
++ else {
++ CenterMapWindow(popW, 40 + bts[0].x, BUTTH/2 + bts[0].y, puwide, puhigh);
+
+- /* MUST wait for VisibilityNotify event to come in, else we run the risk
+- of UnMapping the window *before* the Map request completed. This
+- appears to be bad, (It leaves an empty window frame up.) though it
+- generally only happens on slow servers. Better safe than screwed... */
++ /* MUST wait for VisibilityNotify event to come in, else we run the risk
++ of UnMapping the window *before* the Map request completed. This
++ appears to be bad, (It leaves an empty window frame up.) though it
++ generally only happens on slow servers. Better safe than screwed... */
+
+- XWindowEvent(theDisp, popW, VisibilityChangeMask, &event);
++ XWindowEvent(theDisp, popW, VisibilityChangeMask, &event);
++ }
+
+ /* block until this window gets closed */
+ while (popUp) {
+@@ -312,7 +325,8 @@
+
+ /***************************************************/
+ void ErrPopUp(txt, label)
+- char *txt, *label;
++ const char *txt;
++ const char *label;
+ {
+ /* simplified interface to PopUp. Takes a string and the label for the
+ (one) button */
+@@ -323,7 +337,10 @@
+
+ /***************************************************/
+ int GetStrPopUp(txt, labels, n, buf, buflen, filstr, allow)
+- char *txt, *labels[], *buf, *filstr;
++ const char *txt;
++ const char *labels[];
++ char *buf;
++ const char *filstr;
+ int n, buflen, allow;
+ {
+ /* pops up a window with a prompt string, a 1-line editable
+@@ -338,10 +355,10 @@
+ button labels have 1-character accellerators at the front, same
+ as in PopUp(). Note that it would be suboptimal to make any
+ of the 1-character accellerators be the same character as one of
+- the edit-text command keys
++ the edit-text command keys
+
+ Also note that the filter string should only contain normal printable
+- characters (' ' through '\177'), as ctrl chars are pre-filtered
++ characters (' ' through '\177'), as ctrl chars are pre-filtered
+ (ie, interpreted as emacs-like commands) */
+
+ gsBuf = buf; gsBufLen = buflen;
+@@ -358,7 +375,7 @@
+ gsy = PUHIGH - 10 - BUTTH - 10 - gsh - 20;
+
+ gsw = PUWIDE - gsx - 10;
+-
++
+ changedGSBuf(); /* careful! popW doesn't exist yet! */
+
+ return doPopUp(txt, labels, n, ISGETSTR, "xv prompt");
+@@ -371,9 +388,9 @@
+ {
+ /* pops up Grab options dialog box */
+
+- int rv;
+- char delaybuf[32], grabTxt[1024];
+- static char *grabLabels[] = { "\nGrab", "aAutoGrab", "\033Cancel" };
++ int rv;
++ char delaybuf[32], grabTxt[1024];
++ static const char *grabLabels[] = { "\nGrab", "aAutoGrab", "\033Cancel" };
+
+ sprintf(delaybuf,"%d", *pDelay);
+ gsBuf = delaybuf; gsBufLen = 3;
+@@ -390,7 +407,7 @@
+ changedGSBuf(); /* careful! popW doesn't exist yet! */
+
+ /* window value gets filled in in doPopUp() */
+- CBCreate(&ahideCB, (Window) NULL,
++ CBCreate(&ahideCB, (Window) NULL,
+ PUWIDE-10-18-StringWidth(HIDESTR),
+ gsy+2, HIDESTR, infofg, infobg, hicol, locol);
+ ahideCB.val = *pHide;
+@@ -417,9 +434,9 @@
+ {
+ /* pops up 'Pad' options dialog box */
+
+- int rv, oldW, oldH, oldO;
+- static int firsttime=1;
+- static char *labels[] = { "\nOk", "\033Cancel" };
++ int rv, oldW, oldH, oldO;
++ static int firsttime=1;
++ static const char *labels[] = { "\nOk", "\033Cancel" };
+
+ if (firsttime) {
+ padSbuf[0] = '\0';
+@@ -464,10 +481,10 @@
+
+ changedGSBuf(); /* careful! popW doesn't exist yet! */
+
+- if (padHaveDooDads) {
+- oldW = padWDial.val;
+- oldH = padHDial.val;
+- oldO = padODial.val;
++ if (padHaveDooDads) {
++ oldW = (int)padWDial.val;
++ oldH = (int)padHDial.val;
++ oldO = (int)padODial.val;
+ }
+ else { oldW = pWIDE; oldH = pHIGH; oldO = 100; }
+
+@@ -486,9 +503,9 @@
+ }
+
+ if (rv == 1) { /* cancelled: restore normal values */
+- DSetVal(&padWDial, oldW);
+- DSetVal(&padHDial, oldH);
+- DSetVal(&padODial, oldO);
++ DSetVal(&padWDial, (double)oldW);
++ DSetVal(&padHDial, (double)oldH);
++ DSetVal(&padODial, (double)oldO);
+ }
+
+ XUnmapWindow(theDisp, padWDial.win);
+@@ -496,11 +513,11 @@
+ XUnmapWindow(theDisp, padODial.win);
+
+ /* load up return values */
+- *pMode = padMode;
+- *pStr = padBuf;
+- *pWide = padWDial.val;
+- *pHigh = padHDial.val;
+- *pOpaque = padODial.val;
++ *pMode = padMode;
++ *pStr = padBuf;
++ *pWide = (int)padWDial.val;
++ *pHigh = (int)padHDial.val;
++ *pOpaque = (int)padODial.val;
+ *pOmode = padOMode;
+
+ return rv;
+@@ -513,8 +530,6 @@
+ /* generates padCol* and padBg* lists used in 'Defaults' MBUTT. Grabs
+ all the X resources values it can, and adds appropriate defaults */
+
+- int i;
+-
+ rd_str_cl("foo", "", 1); /* rebuild database */
+
+ build1PadList("color", padColVals, padColNames, &padColLen,
+@@ -524,49 +539,52 @@
+ padBgDefVals, padBgDefNames, padBgDefLen);
+
+ build1PadList("load", padLoadVals, padLoadNames, &padLoadLen,
+- (char **) NULL, (char **) NULL, 0);
++ (const char **) NULL, (const char **) NULL, 0);
+ }
+-
+-
++
++
+ /***************************************************/
+ static void build1PadList(typstr, vals, nams, lenp, dvals, dnams, dlen)
+- char *typstr, **vals, **nams, **dvals, **dnams;
+- int *lenp, dlen;
+-{
+- int i;
+- char resname[128], name[256], value[256];
++ const char *typstr;
++ const char **vals, **nams;
++ const char **dvals, **dnams;
++ int *lenp, dlen;
++{
++ int i;
++ char resname[128];
++ char *copy;
+
+ for (i=0; i<*lenp; i++) { /* kill old lists */
+- free(nams[i]);
+- free(vals[i]);
++ free((char *) nams[i]);
++ free((char *) vals[i]);
+ }
+ *lenp = 0;
+
+ for (i=0; i<10; i++) {
+ sprintf(resname, "pad.%s.val%d", typstr, i);
+ if (rd_str_cl(resname, "Dialog.Menu.Slot",0)) { /* got one! */
+- vals[*lenp] = (char *) malloc(strlen(def_str)+1);
+- if (!vals[*lenp]) continue;
+- strcpy(vals[*lenp], def_str);
+-
++ copy = strdup(def_str);
++ if (!copy) continue;
++ vals[*lenp] = copy;
++
+ sprintf(resname, "pad.%s.name%d", typstr, i);
+ if (rd_str_cl(resname, "Dialog.Menu.Slot",0)) { /* and it has a name! */
+- nams[*lenp] = (char *) malloc(strlen(def_str)+1);
+- if (!nams[*lenp]) { free(vals[*lenp]); continue; }
+- strcpy(nams[*lenp], def_str);
+-
++ copy = strdup(def_str);
++ if (!copy) { free((char *) vals[*lenp]); continue; }
+ }
+ else { /* it doesn't have a name. fabricate one */
+- nams[*lenp] = (char *) malloc((size_t) 32);
+- if (!nams[*lenp]) { free(vals[*lenp]); continue; }
+- strncpy(nams[*lenp], vals[*lenp], (size_t) 31);
++ copy = malloc((size_t) 32);
++ if (!copy) { free((char *) vals[*lenp]); continue; }
++ strncpy(copy, vals[*lenp], (size_t) 31);
++ copy[31] = '\0';
+ }
+-
+- if (strlen(nams[*lenp]) > (size_t) 20) { /* fix long names */
+- char *sp = nams[*lenp] + 18;
++ if (strlen(copy) > (size_t) 20) { /* fix long names */
++ char *sp = copy + 18;
++
+ *sp++ = '.'; *sp++ = '.'; *sp++ = '.'; *sp++ = '\0';
+ }
+-
++ nams[*lenp] = copy;
++
+ *lenp = (*lenp) + 1;
+ }
+ }
+@@ -574,16 +592,17 @@
+
+ /* add 'built-in' defaults to the lists */
+ for (i=0; i<dlen && *lenp<PAD_MAXDEFLEN; i++) {
+- vals[*lenp] = (char *) malloc(strlen(dvals[i])+1);
+- if (!vals[*lenp]) break;
+- strcpy(vals[*lenp], dvals[i]);
+-
+- nams[*lenp] = (char *) malloc(strlen(dnams[i])+1);
+- if (!nams[*lenp]) { free(vals[*lenp]); break; }
+- strcpy(nams[*lenp], dnams[i]);
++ copy = strdup(dvals[i]);
++ if (!copy) break;
++ vals[*lenp] = copy;
++
++ copy = strdup(dnams[i]);
++ if (!copy) { free((char *) vals[*lenp]); break; }
++ nams[*lenp] = copy;
++
+ *lenp = (*lenp) + 1;
+ }
+-}
++}
+
+
+
+@@ -603,9 +622,9 @@
+
+ /***************************************************/
+ void OpenAlert(txt)
+- char *txt;
++ const char *txt;
+ {
+- /* pops up a window with txt displayed in it (*no buttons*).
++ /* pops up a window with txt displayed in it (*no buttons*).
+ returns immediately. window is closed by 'CloseAlert()'.
+ No 'PopUp()' calls are allowed while an Alert is displayed. */
+
+@@ -624,14 +643,14 @@
+ puwide = PUWIDE; puhigh = PUHIGH;
+ XResizeWindow(theDisp, popW, (u_int) puwide, (u_int) puhigh);
+
+- /* center last button in window around mouse position, with constraint that
++ /* center last button in window around mouse position, with constraint that
+ window be fully on the screen */
+
+ CenterMapWindow(popW, puwide/2, puhigh/2, puwide, puhigh);
+ popUp = ISALERT;
+
+ /* MUST wait for VisibilityNotify event to come in, else we run the risk
+- of UnMapping the window *before* the Map request completed. This
++ of UnMapping the window *before* the Map request completed. This
+ appears to be bad, (It leaves an empty window frame up.) though it
+ generally only happens on slow servers. Better safe than screwed... */
+
+@@ -695,7 +714,7 @@
+ XKeyEvent *e = (XKeyEvent *) xev;
+ char buf[128]; KeySym ks;
+ int stlen, i, shift, ck;
+-
++
+ stlen = XLookupString(e,buf,128,&ks,(XComposeStatus *) NULL);
+ shift = e->state & ShiftMask;
+ ck = CursorKey(ks, shift, 0);
+@@ -725,7 +744,7 @@
+ rv = 1;
+ }
+
+- if (!rv && (popUp==ISGETSTR || popUp==ISGRAB || popUp==ISPAD)) {
++ if (!rv && (popUp==ISGETSTR || popUp==ISGRAB || popUp==ISPAD)) {
+ if (e->window == popW) { doGetStrKey(buf[0]); rv = 1; }
+ }
+ }
+@@ -765,26 +784,31 @@
+ #define TR_MAXLN 10
+
+ /***************************************************/
+-void TextRect(win, txt, x, y, w, h, fg)
+- Window win;
+- char *txt;
+- int x,y,w,h;
+- u_long fg;
+-{
+- char *sp, *ep, *oldep, *start[TR_MAXLN];
+- int i, inbreak, lineno, top, hardcr, maxln, len[TR_MAXLN];
++static void TextRect(win, txt, x, y, w, h, fg)
++ Window win;
++ const char *txt;
++ int x,y,w,h;
++ u_long fg;
++{
++ /* draws semi-complex strings in a rectangle */
++
++ const char *sp;
++ const char *ep;
++ const char *oldep;
++ const char *start[TR_MAXLN];
++ int i, inbreak, lineno, top, hardcr, maxln, len[TR_MAXLN];
+
+ XSetForeground(theDisp, theGC, fg);
+-
++
+ sp = txt; lineno = hardcr = 0;
+
+- maxln = h / LINEHIGH;
++ maxln = h / LINEHIGH;
+ RANGE(maxln,0,TR_MAXLN);
+ while (*sp && lineno<maxln) {
+
+ /* drop off any leading spaces (except on first line or after \n) */
+ if (sp!=txt && !hardcr) {
+- while(*sp==' ') sp++;
++ while (*sp==' ') sp++;
+ }
+
+ hardcr = 0; ep = sp;
+@@ -797,7 +821,7 @@
+ while (XTextWidth(mfinfo, sp, (int)(ep-sp))<= w && *ep && *ep!='\n') ep++;
+ if (*ep=='\n') { ep++; hardcr=1; } /* eat newline */
+
+- /* if we got too wide, back off until we find a break position
++ /* if we got too wide, back off until we find a break position
+ (last char before a space or a '/') */
+
+ if (XTextWidth(mfinfo, sp, (int)(ep-sp)) > w) {
+@@ -812,7 +836,7 @@
+ }
+
+ start[lineno] = sp; len[lineno] = ep-sp;
+-
++
+ /* make sure we don't print a trailing '\n' character! */
+ if (len[lineno] > 0) {
+ while (sp[len[lineno]-1] == '\n') len[lineno] = len[lineno] - 1;
+@@ -835,7 +859,7 @@
+ /***************************************************/
+ static void createPUD()
+ {
+- popW = CreateWindow("xv confirm", "XVconfirm", "+0+0",
++ popW = CreateWindow("xv confirm", "XVconfirm", "+0+0",
+ PUWIDE, PUHIGH, infofg, infobg, 0);
+ if (!popW) FatalError("can't create popup window!");
+
+@@ -847,7 +871,7 @@
+ bts = (BUTT *) NULL;
+ nbts = selected = firsttime = 0;
+ }
+-
++
+
+ /***************************************************/
+ static void attachPUD()
+@@ -913,24 +937,24 @@
+ XDrawLine(theDisp, popW, theGC, 16+1+75+75+5, puhigh-140 + 6+8,
+ 16+1+75+75+5, puhigh-10-4);
+ }
+-
++
+
+ XSetForeground(theDisp, theGC, infofg);
+- XDrawRectangle(theDisp, popW, theGC, 268, puhigh-140,
++ XDrawRectangle(theDisp, popW, theGC, 268, puhigh-140,
+ (u_int) puwide - 10 - 268, 130-BUTTH-10);
+- Draw3dRect(popW, 268+1, puhigh-140+1, (u_int) puwide -10-268-2,
++ Draw3dRect(popW, 268+1, puhigh-140+1, (u_int) puwide -10-268-2,
+ 130-2 - BUTTH-10, R3D_IN,2,hicol,locol,infobg);
+-
+- TextRect(popW,padInst,268+5, puhigh-140+3, puwide-10-268-10,
++
++ TextRect(popW,padInst,268+5, puhigh-140+3, puwide-10-268-10,
+ 130-6 - BUTTH-10, infofg);
+ }
+
+ else {
+ XCopyPlane(theDisp, iconPix, popW, theGC, 0,0, icon_width, icon_height,
+ 10,10+(puhigh-30-BUTTH-icon_height)/2, 1L);
+-
++
+ xt = 10+icon_width+20; yt = 10;
+-
++
+ if (popUp == ISGETSTR) {
+ TextRect(popW, text, xt, yt, puwide-10-xt, gsy-20, infofg);
+ drawGSBuf();
+@@ -947,23 +971,23 @@
+ /***************************************************/
+ static void drawPadOMStr()
+ {
+- CenterString(popW, padODial.x + (padODial.w - 13)/2,
++ CenterString(popW, padODial.x + (padODial.w - 13)/2,
+ puhigh-16-100-12, padOMStr[padOMode]);
+ }
+-
++
+ /***************************************************/
+ static void clickPUD(x,y)
+ int x,y;
+ {
+ int i;
+- BUTT *bp;
+-
++ BUTT *bp = NULL;
++
+ for (i=0; i<nbts; i++) {
+ bp = &bts[i];
+ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) break;
+ }
+-
+- if (i<nbts && BTTrack(bp)) {
++
++ if (i<nbts && bp && BTTrack(bp)) {
+ popUp = 0; selected = i; return;
+ }
+
+@@ -972,8 +996,8 @@
+ else if (popUp == ISPAD) {
+ if (PTINRECT(x, y, padDButt.x, padDButt.y, padDButt.w, padDButt.h)) {
+ if (BTTrack(&padDButt)) {
+- DSetVal(&padWDial, pWIDE);
+- DSetVal(&padHDial, pHIGH);
++ DSetVal(&padWDial, (double)pWIDE);
++ DSetVal(&padHDial, (double)pHIGH);
+ }
+ }
+
+@@ -1017,11 +1041,11 @@
+ gsCurPos = strlen(gsBuf);
+ gsStPos = gsEnPos = 0;
+ changedGSBuf();
+- if (ctrlColor)
+- XClearArea(theDisp, popW, gsx+3,gsy+3,
++ if (ctrlColor)
++ XClearArea(theDisp, popW, gsx+3,gsy+3,
+ (u_int)gsw-5, (u_int)gsh-5, False);
+ else
+- XClearArea(theDisp, popW, gsx+1,gsy+1,
++ XClearArea(theDisp, popW, gsx+1,gsy+1,
+ (u_int)gsw-1, (u_int)gsh-1, False);
+ drawGSBuf();
+
+@@ -1032,7 +1056,7 @@
+ DSetActive (&padWDial, (i!=PAD_LOAD));
+ DSetActive (&padHDial, (i!=PAD_LOAD));
+
+- XClearArea(theDisp, popW, 184+5, puhigh-140+3,
++ XClearArea(theDisp, popW, 184+5, puhigh-140+3,
+ (u_int) puwide-10-184-10, 130-6 - BUTTH-10, True);
+
+ padMode = i;
+@@ -1049,11 +1073,11 @@
+ gsCurPos = strlen(gsBuf);
+ gsStPos = gsEnPos = 0;
+ changedGSBuf();
+- if (ctrlColor)
+- XClearArea(theDisp, popW, gsx+3,gsy+3,
++ if (ctrlColor)
++ XClearArea(theDisp, popW, gsx+3,gsy+3,
+ (u_int)gsw-5, (u_int)gsh-5, False);
+ else
+- XClearArea(theDisp, popW, gsx+1,gsy+1,
++ XClearArea(theDisp, popW, gsx+1,gsy+1,
+ (u_int)gsw-1, (u_int)gsh-1, False);
+ drawGSBuf();
+
+@@ -1079,8 +1103,8 @@
+ /* handle characters typed at GetStrPopUp window. Button accel. keys
+ have already been checked for elsewhere. Practical upshot is that
+ we don't have to do anything with ESC or Return (as these will normally
+- be Cancel and Ok buttons)
+-
++ be Cancel and Ok buttons)
++
+ Normally returns '0'. Returns '1' if character wasn't accepted, for
+ whatever reason. */
+
+@@ -1089,7 +1113,7 @@
+ len = strlen(gsBuf);
+ if (gsFilter) flen = strlen(gsFilter);
+ else flen = 0;
+-
++
+
+ if (c>=' ' && c<'\177') { /* 'NORMAL' CHARACTERS */
+ if (flen) { /* check filter string */
+@@ -1097,7 +1121,7 @@
+ if (!gsAllow && i< flen) return 1; /* found in 'disallow' filter */
+ if ( gsAllow && i==flen) return 1; /* not found in 'allow' filter */
+ }
+-
++
+ if (len >= gsBufLen-1) return 1; /* at max length */
+
+ xvbcopy(&gsBuf[gsCurPos], &gsBuf[gsCurPos+1], (size_t) len-gsCurPos+1);
+@@ -1105,7 +1129,7 @@
+ }
+
+
+- else if (c=='\010' || c=='\177') { /* BS or DEL */
++ else if (c=='\010') { /* BS */
+ if (gsCurPos==0) return 1; /* at beginning of str */
+ xvbcopy(&gsBuf[gsCurPos], &gsBuf[gsCurPos-1], (size_t) len-gsCurPos+1);
+ gsCurPos--;
+@@ -1128,7 +1152,7 @@
+ gsCurPos = len;
+ }
+
+- else if (c=='\004') { /* ^D: delete character at gsCurPos */
++ else if (c=='\004' || c=='\177') { /* ^D or DEL: delete character at gsCurPos */
+ if (gsCurPos==len) return 1;
+ xvbcopy(&gsBuf[gsCurPos+1], &gsBuf[gsCurPos], (size_t) len-gsCurPos);
+ }
+@@ -1147,7 +1171,7 @@
+
+ changedGSBuf(); /* compute gsEnPos, gsStPos */
+
+- if (ctrlColor)
++ if (ctrlColor)
+ XClearArea(theDisp, popW, gsx+3,gsy+3, (u_int)gsw-5, (u_int)gsh-5, False);
+ else
+ XClearArea(theDisp, popW, gsx+1,gsy+1, (u_int)gsw-1, (u_int)gsh-1, False);
+@@ -1175,7 +1199,7 @@
+ /***************************************************/
+ static void changedGSBuf()
+ {
+- /* cursor position (or whatever) may have changed. adjust displayed
++ /* cursor position (or whatever) may have changed. adjust displayed
+ portion of gsBuf */
+
+ int len;
+@@ -1212,7 +1236,7 @@
+
+ XSetForeground(theDisp, theGC, infofg);
+ XDrawRectangle(theDisp, popW, theGC, gsx, gsy, (u_int) gsw, (u_int) gsh);
+- Draw3dRect(popW, gsx+1, gsy+1, (u_int) gsw-2, (u_int) gsh-2,
++ Draw3dRect(popW, gsx+1, gsy+1, (u_int) gsw-2, (u_int) gsh-2,
+ R3D_IN, 2, hicol,locol,infobg);
+
+ XSetForeground(theDisp, theGC, infofg);
+diff -ru xv-3.10a/xvps.c xv-3.10a-enhancements/xvps.c
+--- xv-3.10a/xvps.c 1994-12-22 14:34:42.000000000 -0800
++++ xv-3.10a-enhancements/xvps.c 2007-05-12 15:25:59.000000000 -0700
+@@ -1,4 +1,4 @@
+-/*
++/*
+ * xvps.c - Postscript dialog box, file output functions
+ *
+ * callable functions:
+@@ -71,10 +71,13 @@
+ static void psColorImage PARM((FILE *));
+ static void psColorMap PARM((FILE *fp, int, int, byte *, byte *, byte *));
+ static void psRleCmapImage PARM((FILE *, int));
+-static void epsPreview PARM((FILE *, byte *, int, int, int, int,
++static void epsPreview PARM((FILE *, byte *, int, int, int, int,
+ byte *, byte *, byte *, int));
+-static int writeBWStip PARM((FILE *, byte *, char *, int, int, int));
++static int writeBWStip PARM((FILE *, byte *, const char *, int, int, int));
+
++#ifdef GS_PATH
++static void buildCmdStr PARM((char *, char *, char *, int, int));
++#endif
+
+
+ /* local variables */
+@@ -123,7 +126,7 @@
+ void CreatePSD(geom)
+ char *geom;
+ {
+- psW = CreateWindow("xv postscript", "XVps", geom,
++ psW = CreateWindow("xv postscript", "XVps", geom,
+ PSWIDE, PSHIGH, infofg, infobg, 0);
+ if (!psW) FatalError("can't create postscript window!");
+
+@@ -139,9 +142,9 @@
+ CBCreate(&encapsCB, psW, 240, 7, "preview", infofg, infobg, hicol, locol);
+ CBCreate(&pscompCB, psW, 331, 7, "compress", infofg, infobg, hicol, locol);
+
+- DCreate(&xsDial, psW, 240, 30, 80, 100, 10, 800, 100, 5,
++ DCreate(&xsDial, psW, 240, 30, 80, 100, 10.0, 800.0, 100.0, 0.5, 5.0,
+ infofg, infobg, hicol, locol, "Width", "%");
+- DCreate(&ysDial, psW, 331, 30, 80, 100, 10, 800, 100, 5,
++ DCreate(&ysDial, psW, 331, 30, 80, 100, 10.0, 800.0, 100.0, 0.5, 5.0,
+ infofg, infobg, hicol, locol, "Height", "%");
+ xsDial.drawobj = changedScale;
+ ysDial.drawobj = changedScale;
+@@ -154,38 +157,38 @@
+ RBCreate(orientRB, psW, 36+80, 240+18, "Landscape", infofg, infobg,
+ hicol, locol);
+
+- paperRB = RBCreate(NULL, psW,36, 240+18+36, "8.5\"x11\"",
++ paperRB = RBCreate(NULL, psW,36, 240+18+36, "8.5\"x11\"",
+ infofg, infobg, hicol, locol);
+ RBCreate(paperRB, psW, 36+80, 240+18+36, "A4",
+ infofg, infobg, hicol, locol);
+- RBCreate(paperRB, psW, 36+122, 240+18+36, "B5",
++ RBCreate(paperRB, psW, 36+122, 240+18+36, "B5",
+ infofg, infobg, hicol, locol);
+- RBCreate(paperRB, psW, 36+164, 240+18+36, "A3",
++ RBCreate(paperRB, psW, 36+164, 240+18+36, "A3",
+ infofg, infobg, hicol, locol);
+ RBCreate(paperRB, psW, 36, 240+36+36, "8.5\"x14\"",
+ infofg, infobg, hicol, locol);
+- RBCreate(paperRB, psW, 36+80, 240+36+36, "11\"x17\"",
++ RBCreate(paperRB, psW, 36+80, 240+36+36, "11\"x17\"",
+ infofg, infobg, hicol, locol);
+- RBCreate(paperRB, psW, 36, 240+54+36, "4\"x5\"",
++ RBCreate(paperRB, psW, 36, 240+54+36, "4\"x5\"",
+ infofg, infobg, hicol, locol);
+- RBCreate(paperRB, psW, 36+80, 240+54+36, "35mm slide",
++ RBCreate(paperRB, psW, 36+80, 240+54+36, "35mm slide",
+ infofg, infobg, hicol, locol);
+
+- BTCreate(&psbut[PS_BOK], psW, PSWIDE-180, PSHIGH-10-BUTTH, 80, BUTTH,
++ BTCreate(&psbut[PS_BOK], psW, PSWIDE-180, PSHIGH-10-BUTTH, 80, BUTTH,
+ "Ok", infofg, infobg, hicol, locol);
+- BTCreate(&psbut[PS_BCANC], psW, PSWIDE-90, PSHIGH-10-BUTTH, 80, BUTTH,
++ BTCreate(&psbut[PS_BCANC], psW, PSWIDE-90, PSHIGH-10-BUTTH, 80, BUTTH,
+ "Cancel", infofg, infobg, hicol, locol);
+
+- BTCreate(&psbut[PS_BCENT], psW, 240, 154, 55, BUTTH-2,
++ BTCreate(&psbut[PS_BCENT], psW, 240, 154, 55, BUTTH-2,
+ "Center", infofg, infobg, hicol, locol);
+- BTCreate(&psbut[PS_BORG], psW, 298, 154, 55, BUTTH-2,
++ BTCreate(&psbut[PS_BORG], psW, 298, 154, 55, BUTTH-2,
+ "Origin", infofg, infobg, hicol, locol);
+- BTCreate(&psbut[PS_BMAX], psW, 356, 154, 55, BUTTH-2,
++ BTCreate(&psbut[PS_BMAX], psW, 356, 154, 55, BUTTH-2,
+ "Max", infofg, infobg, hicol, locol);
+
+- BTCreate(&psbut[PS_BPOSX], psW, 256-14, 190+13-8, 8,8, "",
++ BTCreate(&psbut[PS_BPOSX], psW, 256-14, 190+13-8, 8,8, "",
+ infofg, infobg, hicol, locol);
+- BTCreate(&psbut[PS_BPOSY], psW, 256-14, 190+26-8, 8,8, "",
++ BTCreate(&psbut[PS_BPOSY], psW, 256-14, 190+26-8, 8,8, "",
+ infofg, infobg, hicol, locol);
+
+ posxType = posyType = 0;
+@@ -236,17 +239,17 @@
+
+ if (rd_int("psres")) { /* xv.psres: default paper resolution */
+ if (def_int >= 10 && def_int <= 720) {
+- int i = (int) ((PIX2INCH * 100) / def_int);
++ double v = (PIX2INCH * 100) / def_int;
+
+- DSetVal(&xsDial, i);
+- DSetVal(&ysDial, i);
++ DSetVal(&xsDial, v);
++ DSetVal(&ysDial, v);
+ }
+ }
+
+
+ XMapSubwindows(theDisp, psW);
+ }
+-
++
+
+ /***************************************************/
+ void PSDialog(vis)
+@@ -289,7 +292,7 @@
+ x = e->x; y = e->y; w = e->width; h = e->height;
+
+ /* throw away excess expose events for 'dumb' windows */
+- if (e->count > 0 &&
++ if (e->count > 0 &&
+ (e->window == xsDial.win || e->window == ysDial.win ||
+ e->window == pageF)) {}
+
+@@ -332,7 +335,7 @@
+ XKeyEvent *e = (XKeyEvent *) xev;
+ char buf[128]; KeySym ks;
+ int stlen, shift, ck;
+-
++
+ stlen = XLookupString(e,buf,128,&ks,(XComposeStatus *) NULL);
+ shift = e->state & ShiftMask;
+ ck = CursorKey(ks, shift, 0);
+@@ -403,7 +406,7 @@
+ static void drawPSD(x,y,w,h)
+ int x,y,w,h;
+ {
+- char *title = "Save PostScript File...";
++ const char *title = "Save PostScript File...";
+ int i,cx;
+ XRectangle xr;
+
+@@ -463,12 +466,14 @@
+ /***************************************************/
+ static void drawPosStr()
+ {
+- int x,y;
+- double cmx, cmy, inx, iny;
+- char str[64], str1[64], *xst, *yst;
++ int x,y;
++ double cmx, cmy, inx, iny;
++ char str[64], str1[64];
++ const char *xst, *yst;
+
+ x = 256; y = 190 + 13;
+- inx = iny = 0; xst = yst = (char *) NULL;
++ inx = iny = 0;
++ xst = yst = (const char *) NULL;
+
+ switch (posxType) {
+ case 0: xst = "Left: "; inx = pos_inx; break;
+@@ -497,7 +502,7 @@
+ XSetFont(theDisp, theGC, mfont);
+ }
+
+-
++
+ /***************************************************/
+ static void drawSizeStr()
+ {
+@@ -522,7 +527,7 @@
+ XSetFont(theDisp, theGC, mfont);
+ }
+
+-
++
+ /***************************************************/
+ static void drawResStr()
+ {
+@@ -540,9 +545,9 @@
+ XSetFont(theDisp, theGC, mfont);
+ }
+
+-
+-
+-
++
++
++
+ /***************************************************/
+ static void drawPage()
+ {
+@@ -554,7 +559,7 @@
+ XSetForeground(theDisp, theGC, infofg);
+ XDrawRectangle(theDisp, pageF, theGC, pageRect.x, pageRect.y,
+ (u_int) pageRect.width, (u_int) pageRect.height);
+-
++
+ drawIRect(1);
+ }
+
+@@ -611,7 +616,7 @@
+ unsigned int mask;
+ double offx, offy, newx, newy;
+
+- /* compute offset (in inches) between 'drag point' and
++ /* compute offset (in inches) between 'drag point' and
+ the top-left corner of the image */
+
+ offx = ((mx - pageRect.x) / in2pix) - pos_inx;
+@@ -642,7 +647,7 @@
+ char *fullname;
+
+ switch (cmd) {
+- case PS_BOK: writePS();
++ case PS_BOK: writePS();
+ PSDialog(0);
+ fullname = GetDirFullName();
+ if (!ISPIPE(fullname[0])) {
+@@ -721,15 +726,15 @@
+
+ GetSaveSize(&w, &h);
+
+- sz_inx = (double) w / PIX2INCH * (xsDial.val / 100.0);
+- sz_iny = (double) h / PIX2INCH * (ysDial.val / 100.0);
++ sz_inx = (double) w / PIX2INCH * (xsDial.val / 100.0);
++ sz_iny = (double) h / PIX2INCH * (ysDial.val / 100.0);
+
+ /* round to integer .001ths of an inch */
+ sz_inx = floor(sz_inx * 1000.0 + 0.5) / 1000.0;
+ sz_iny = floor(sz_iny * 1000.0 + 0.5) / 1000.0;
+
+- dpix = (int) (PIX2INCH / (xsDial.val / 100.0));
+- dpiy = (int) (PIX2INCH / (ysDial.val / 100.0));
++ dpix = (int) (PIX2INCH / (xsDial.val / 100.0));
++ dpiy = (int) (PIX2INCH / (ysDial.val / 100.0));
+
+ /* make sure 'center' of image is still on page */
+ hsx = sz_inx/2; hsy = sz_iny/2;
+@@ -783,20 +788,20 @@
+ {
+ int x,y,w,h;
+ XRectangle xr;
+-
++
+ x = pageRect.x + (int) (pos_inx * in2pix);
+ y = pageRect.y + (int) (pos_iny * in2pix);
+ w = sz_inx * in2pix;
+ h = sz_iny * in2pix;
+-
++
+ xr.x = pageRect.x + 1;
+ xr.y = pageRect.y + 1;
+ xr.width = pageRect.width - 1;
+ xr.height = pageRect.height - 1;
+-
++
+ if (draw) XSetForeground(theDisp, theGC, infofg);
+ else XSetForeground(theDisp, theGC, infobg);
+-
++
+ XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
+ XDrawRectangle(theDisp, pageF, theGC, x, y, (u_int) w, (u_int) h);
+ XDrawLine(theDisp, pageF, theGC, x, y, x+w, y+h);
+@@ -836,18 +841,18 @@
+ if (scx < scy) { sz_iny = h * scx; }
+ else { sz_inx = w * scy; }
+
+- DSetVal(&xsDial, (int) ((100 * (sz_inx * PIX2INCH) / w) + .5));
++ DSetVal(&xsDial, 100 * (sz_inx * PIX2INCH) / w);
+ DSetVal(&ysDial, xsDial.val);
+
+- sz_inx = (double) w / PIX2INCH * (xsDial.val / 100.0);
+- sz_iny = (double) h / PIX2INCH * (ysDial.val / 100.0);
++ sz_inx = (double) w / PIX2INCH * (xsDial.val / 100.0);
++ sz_iny = (double) h / PIX2INCH * (ysDial.val / 100.0);
+
+ /* round to integer .001ths of an inch */
+ sz_inx = floor(sz_inx * 1000.0 + 0.5) / 1000.0;
+ sz_iny = floor(sz_iny * 1000.0 + 0.5) / 1000.0;
+
+- dpix = (int) (PIX2INCH / (xsDial.val / 100.0));
+- dpiy = (int) (PIX2INCH / (ysDial.val / 100.0));
++ dpix = (int) (PIX2INCH / (xsDial.val / 100.0));
++ dpiy = (int) (PIX2INCH / (ysDial.val / 100.0));
+
+ pos_inx = psizex/2 - sz_inx/2;
+ pos_iny = psizey/2 - sz_iny/2;
+@@ -888,7 +893,7 @@
+ static void writePS()
+ {
+ FILE *fp;
+- int i, j, q, err, rpix, gpix, bpix, nc, ptype;
++ int i, j, err, rpix, gpix, bpix, nc, ptype;
+ int iw, ih, ox, oy, slen, lwidth, bits, colorps, w, h, pfree;
+ double iwf, ihf;
+ byte *inpix, *rmap, *gmap, *bmap;
+@@ -900,13 +905,19 @@
+ if (!fp) return;
+
+ WaitCursor();
+-
++
+ inpix = GenSavePic(&ptype, &w, &h, &pfree, &nc, &rmap, &gmap, &bmap);
+
+-
++ if (w <= 0 || h <= 0 || w*2 < w) {
++ SetISTR(ISTR_WARNING,"%s: Image dimensions out of range", filename);
++ CloseOutFile(fp, filename, 1);
++ return;
++ }
++
++
+ /* printed image will have size iw,ih (in picas) */
+ iw = (int) (sz_inx * 72.0 + 0.5);
+- ih = (int) (sz_iny * 72.0 + 0.5);
++ ih = (int) (sz_iny * 72.0 + 0.5);
+ iwf = sz_inx * 72.0;
+ ihf = sz_iny * 72.0;
+
+@@ -923,12 +934,12 @@
+ fprintf(fp,"%%%%Creator: XV %s - by John Bradley\n",REVDATE);
+
+ if (RBWhich(orientRB)==ORNT_LAND) /* Landscape mode */
+- fprintf(fp,"%%%%BoundingBox: %d %d %d %d\n",
++ fprintf(fp,"%%%%BoundingBox: %d %d %d %d\n",
+ (int) (pos_iny * 72.0 + 0.5),
+ (int) (pos_inx * 72.0 + 0.5),
+ (int) (pos_iny * 72.0 + 0.5) + ih,
+ (int) (pos_inx * 72.0 + 0.5) + iw);
+- else
++ else
+ fprintf(fp,"%%%%BoundingBox: %d %d %d %d\n", ox, oy, ox+iw, oy+ih);
+
+ fprintf(fp,"%%%%Pages: 1\n");
+@@ -943,9 +954,9 @@
+ case F_BWDITHER: slen = (w+7)/8; bits = 1; colorps = 0; break;
+ default: FatalError("unknown colorType in writePS()"); break;
+ }
+-
++
+ if (encapsCB.val) epsPreview(fp, inpix, ptype, colorType, w, h,
+- rmap,gmap,bmap,
++ rmap,gmap,bmap,
+ (RBWhich(orientRB)==ORNT_LAND) );
+
+ fprintf(fp,"%%%%EndProlog\n\n");
+@@ -978,7 +989,7 @@
+ fprintf(fp,"%% print in landscape mode\n");
+ fprintf(fp,"90 rotate 0 %d translate\n\n",(int) (-psizey*72.0));
+ }
+-
++
+ if (RBWhich(paperRB) == PSZ_4BY5 ||
+ RBWhich(paperRB) == PSZ_35MM) {
+ fprintf(fp,"%% we're going to a 4x5 or a 35mm film recorder.\n");
+@@ -1083,12 +1094,12 @@
+ gpix = inpix[1];
+ bpix = inpix[2];
+ }
+-
+- if (colorps) {
++
++ if (colorps) {
+ err = fprintf(fp,"%02x%02x%02x",rpix,gpix,bpix);
+ lwidth+=6;
+ }
+-
++
+ else { /* greyscale */
+ err = fprintf(fp,"%02x", MONO(rpix,gpix,bpix));
+ lwidth+=2;
+@@ -1106,7 +1117,7 @@
+ fprintf(fp,"\n\n");
+ fprintf(fp,"%%\n");
+ fprintf(fp,"%% Compression made this file %.2f%% %s\n",
+- 100.0 * ((double) outbytes) /
++ 100.0 * ((double) outbytes) /
+ ((double) eWIDE * eHIGH * ((colorps) ? 3 : 1)),
+ "of the uncompressed size.");
+ fprintf(fp,"%%\n");
+@@ -1147,10 +1158,10 @@
+ *
+ * returns length of the rleline vector
+ */
+-
++
+ int i, j, blocklen, isrun, rlen;
+ byte block[256], pix;
+-
++
+ blocklen = isrun = rlen = 0;
+
+ for (i=0; i<wide; i++) {
+@@ -1186,7 +1197,7 @@
+ }
+ }
+ }
+-
++
+ else { /* not a run */
+ if (pix == block[blocklen-1]) { /* case 3: non-run, prev==cur */
+ if (blocklen>1) { /* have a non-run block to flush */
+@@ -1215,7 +1226,7 @@
+
+ else {
+ rleline[rlen++] = (blocklen-1) | 0x80;
+- for (j=0; j<blocklen; j++)
++ for (j=0; j<blocklen; j++)
+ rleline[rlen++] = block[j];
+ }
+
+@@ -1231,15 +1242,15 @@
+
+ else {
+ rleline[rlen++] = (blocklen-1) | 0x80;
+- for (j=0; j<blocklen; j++)
++ for (j=0; j<blocklen; j++)
+ rleline[rlen++] = block[j];
+ }
+ }
+
+ return rlen;
+ }
+-
+-
++
++
+ /**********************************************/
+ static void psColorImage(fp)
+ FILE *fp;
+@@ -1276,7 +1287,7 @@
+ fprintf(fp," %% Utility procedure for colorimage operator.\n");
+ fprintf(fp," %% This procedure takes two procedures off the\n");
+ fprintf(fp," %% stack and merges them into a single procedure.\n\n");
+-
++
+ fprintf(fp," /mergeprocs { %% def\n");
+ fprintf(fp," dup length\n");
+ fprintf(fp," 3 -1 roll\n");
+@@ -1326,12 +1337,12 @@
+ for (i=0; i<nc; i++) {
+ if (color) fprintf(fp,"%02x%02x%02x ", rmap[i],gmap[i],bmap[i]);
+ else fprintf(fp,"%02x ", MONO(rmap[i],gmap[i],bmap[i]));
+-
++
+ if ((i%10) == 9) fprintf(fp,"\n");
+ }
+ if (i%10) fprintf(fp,"\n");
+ fprintf(fp,"pop pop %% lose return values from readhexstring\n\n\n");
+-
++
+ }
+
+
+@@ -1407,7 +1418,7 @@
+
+
+ /**********************************************/
+-static void epsPreview(fp, pic, ptype, colorType, w, h, rmap,gmap,bmap,
++static void epsPreview(fp, pic, ptype, colorType, w, h, rmap,gmap,bmap,
+ landscape)
+ FILE *fp;
+ byte *pic;
+@@ -1420,21 +1431,37 @@
+
+
+ if (landscape) { /* generate a rotated version of the pic */
+- int bperpix;
++ int npixels, bufsize;
+ byte *lpic;
+
+- bperpix = (ptype == PIC8) ? 1 : 3;
+- lpic = (byte *) malloc((size_t) w * h * bperpix);
++ npixels = w * h;
++ if (w <= 0 || h <= 0 || npixels/w != h) {
++ SetISTR(ISTR_WARNING,"%s: Image dimensions out of range", filename);
++/* CloseOutFile(fp, filename, 1); can't do since caller still writing */
++ return;
++ }
++ if (ptype == PIC8)
++ bufsize = npixels;
++ else {
++ bufsize = 3*npixels;
++ if (bufsize/3 != npixels) {
++ SetISTR(ISTR_WARNING,"%s: Image dimensions out of range", filename);
++/* CloseOutFile(fp, filename, 1); can't do since caller still writing */
++ return;
++ }
++ }
++
++ lpic = (byte *) malloc((size_t) bufsize);
+ if (!lpic) FatalError("can't alloc mem to rotate image in epsPreview");
+
+- xvbcopy((char *) pic, (char *) lpic, (size_t) w * h * bperpix);
++ xvbcopy((char *) pic, (char *) lpic, (size_t) bufsize);
+ RotatePic(lpic, ptype, &w, &h, 0);
+ pic = lpic;
+ }
+-
++
+
+ /* put in an EPSI preview */
+-
++
+ if (colorType != F_BWDITHER) { /* have to generate a preview */
+ prev = FSDither(pic, ptype, w, h, rmap,gmap,bmap, 0, 1);
+
+@@ -1451,8 +1478,8 @@
+ flipbw = (MONO(rmap[0],gmap[0],bmap[0]) > MONO(rmap[1],gmap[1],bmap[1]));
+ }
+
+-
+- fprintf(fp,"%%%%BeginPreview: %d %d %d %d\n", w, h, 1,
++
++ fprintf(fp,"%%%%BeginPreview: %d %d %d %d\n", w, h, 1,
+ (w/(72*4) + 1) * h);
+
+ writeBWStip(fp, prev, "% ", w, h, !flipbw);
+@@ -1468,10 +1495,10 @@
+ static int writeBWStip(fp, pic, prompt, w, h, flipbw)
+ FILE *fp;
+ byte *pic;
+- char *prompt;
++ const char *prompt;
+ int w, h, flipbw;
+ {
+- /* write the given 'pic' (B/W stippled, 1 byte per pixel, 0=blk,1=wht)
++ /* write the given 'pic' (B/W stippled, 1 byte per pixel, 0=blk,1=wht)
+ out as hexadecimal, max of 72 hex chars per line.
+
+ if 'flipbw', then 0=white, 1=black
+@@ -1535,39 +1562,46 @@
+ document is multiple pages, a series of PNM files are created, and
+ the first one is loaded (but not deleted) */
+
+-
+- char tmp[512], tmp1[512], tmpname[64];
+- int gsresult, nump, i, filetype;
+- char *rld;
++#ifdef GS_PATH
++ #define CMDSIZE 1024
++ char tmp[512], gscmd[512], cmdstr[CMDSIZE], tmpname[64];
++ int gsresult, nump, i, filetype, doalert, epsf;
++#endif
+
+ pinfo->pic = (byte *) NULL;
+ pinfo->comment = (char *) NULL;
+
+-
+ #ifdef GS_PATH
+
++ doalert = (!quick && !ctrlUp && !infoUp); /* open alert if no info wins */
++ epsf = 0;
++
+ #ifndef VMS
+ sprintf(tmpname, "%s/xvpgXXXXXX", tmpdir);
+ #else
+ sprintf(tmpname, "Sys$Scratch:xvpgXXXXXX");
+ #endif
+
++#ifdef USE_MKSTEMP
++ close(mkstemp(tmpname));
++#else
+ mktemp(tmpname);
+- if (tmpname[0] == '\0') { /* mktemp() blew up */
+- sprintf(str,"LoadPS: Unable to create temporary filename???");
+- ErrPopUp(str, "\nHow unlikely!");
++#endif
++ if (tmpname[0] == '\0') { /* mktemp() or mkstemp() blew up */
++ sprintf(dummystr,"LoadPS: Unable to create temporary filename???");
++ ErrPopUp(dummystr, "\nHow unlikely!");
+ return 0;
+ }
+ strcat(tmpname,".");
+
+
+- /* build command string */
++ /* build 'gscmd' string */
+
+ #ifndef VMS /* VMS needs quotes around mixed case command lines */
+- sprintf(tmp, "%s -sDEVICE=%s -r%d -q -dNOPAUSE -sOutputFile=%s%%d ",
++ sprintf(gscmd, "%s -sDEVICE=%s -r%d -q -dSAFER -dNOPAUSE -sOutputFile=%s%%d ",
+ GS_PATH, gsDev, gsRes, tmpname);
+ #else
+- sprintf(tmp,
++ sprintf(gscmd,
+ "%s \"-sDEVICE=%s\" -r%d -q \"-dNOPAUSE\" \"-sOutputFile=%s%%d\" ",
+ GS_PATH, gsDev, gsRes, tmpname);
+ #endif
+@@ -1575,74 +1609,60 @@
+
+ #ifdef GS_LIB
+ # ifndef VMS
+- sprintf(tmp1, "-I%s ", GS_LIB);
++ sprintf(tmp, "-I%s ", GS_LIB);
+ # else
+- sprintf(tmp1, "\"-I%s\"", GS_LIB);
++ sprintf(tmp, "\"-I%s\" ", GS_LIB);
+ # endif
+- strcat(tmp, tmp1);
++ strcat(gscmd, tmp);
+ #endif
+
+- if (gsGeomStr) {
+- sprintf(tmp1, "-g%s ", gsGeomStr);
+- strcat(tmp, tmp1);
+- }
+-
+- /* if 'quick' is set, stop processing after first page by tacking
+- some PostScript commands that break the 'showpage' operator onto
+- the front of the stream passed to the ghostscript interpreter */
+
++ /* prevent some potential naughtiness... */
+ #ifndef VMS
+- if (quick) {
+- sprintf(tmp1, "echo '%s' | cat - %s | %s -",
+- "/showpage { showpage quit } bind def", /* mk showpage exit */
+- fname, tmp);
+- strcpy(tmp, tmp1);
+- }
+- else {
+- strcat(tmp, " -- ");
+- strcat(tmp, fname);
+- }
+-#else /* VMS */
+- /* VMS doesn't have pipes or an 'echo' command and GS doesn't like
+- Unix-style file names as input files in the VMS version */
+- strcat(tmp, " -- ");
+- rld = strrchr(fname, '/'); /* Pointer to last '/' */
+- if (rld) rld++; /* Pointer to filename */
+- else rld = fname; /* No path - use original string */
+- strcat(tmp, rld);
++ strcat(gscmd, "-dSAFER ");
++#else
++ strcat(gscmd, "\"-dSAFER\" ");
+ #endif
+
+
++ if (gsGeomStr) {
++ sprintf(tmp, "-g%s ", gsGeomStr);
++ strcat(gscmd, tmp);
++ }
+
+
+- WaitCursor();
+-
+- if (DEBUG) fprintf(stderr,"LoadPS: executing command '%s'\n", tmp);
+- SetISTR(ISTR_INFO, "Running '%s'...", GS_PATH);
++ do {
++ buildCmdStr(cmdstr, gscmd, fname, quick, epsf);
+
+- sprintf(tmp1, "Running %s", tmp);
+- if (!quick && !ctrlUp && !infoUp) OpenAlert(tmp1);
++ if (DEBUG) fprintf(stderr,"LoadPS: executing command '%s'\n", cmdstr);
++ SetISTR(ISTR_INFO, "Running '%s'...", GS_PATH);
++ sprintf(tmp, "Running %s", cmdstr);
++ if (doalert && epsf==0) OpenAlert(tmp); /* open alert first time only */
+
+-#ifndef VMS
+- gsresult = system(tmp);
+-#else
+- gsresult = !system(tmp);
++ WaitCursor();
++ gsresult = system(cmdstr);
++ WaitCursor();
++#ifdef VMS
++ gsresult = !gsresult; /* VMS returns non-zero if OK */
+ #endif
+
+- WaitCursor();
++ /* count # of files produced... */
++ for (i=1; i<1000; i++) {
++ struct stat st;
++ sprintf(tmp, "%s%d", tmpname, i);
++ if (stat(tmp, &st)!=0) break;
++ }
++ nump = i-1;
++ WaitCursor();
+
+- if (!quick && !ctrlUp && !infoUp) CloseAlert();
++ /* EPSF hack: if gsresult==0 (OK) and 0 pages produced,
++ try tacking a 'showpage' onto the end of the file, do it again... */
++
++ if (!gsresult && !nump && !epsf) epsf++;
++ } while (!gsresult && !nump && epsf<2);
++
++ if (doalert) CloseAlert();
+
+- /* figure out how many page files were created, by stating files.
+- breaks out on first failure, assuming there won't be any more after
+- that, and it would complicate matters too much anyhow... */
+-
+- for (i=1; i<1000; i++) {
+- struct stat st;
+- sprintf(tmp, "%s%d", tmpname, i);
+- if (stat(tmp, &st)!=0) break;
+- }
+- nump = i-1;
+
+ WaitCursor();
+
+@@ -1664,7 +1684,7 @@
+ return 0;
+ }
+
+- SetISTR(ISTR_INFO, "Running '%s'... Done. (%d page%s)",
++ SetISTR(ISTR_INFO, "Running '%s'... Done. (%d page%s)",
+ GS_PATH, nump, (nump==1) ? "" : "s");
+ }
+
+@@ -1677,8 +1697,8 @@
+
+ sprintf(tmp, "%s%d", tmpname, 1);
+ filetype = ReadFileType(tmp);
+-
+- if (filetype == RFT_ERROR || filetype == RFT_UNKNOWN ||
++
++ if (filetype == RFT_ERROR || filetype == RFT_UNKNOWN ||
+ filetype == RFT_COMPRESS) { /* shouldn't happen */
+ SetISTR(ISTR_WARNING, "Couldn't load first page '%s'", tmp);
+ KillPageFiles(tmpname, nump);
+@@ -1695,7 +1715,7 @@
+ KillPageFiles(tmpname, nump);
+ SetCursors(-1);
+ return 0;
+- }
++ }
+
+
+ /* SUCCESS! */
+@@ -1712,3 +1732,54 @@
+ we don't have 'gs' package */
+ }
+
++
++
++/******************************************************************/
++#ifdef GS_PATH
++void buildCmdStr(str, gscmd, xname, quick, epsf)
++ char *str, *gscmd, *xname;
++ int quick, epsf;
++{
++ /* note 'epsf' set only on files that don't have a showpage cmd */
++ char *x, *y, *fname;
++
++ x = (char *) malloc((5 * strlen(xname))+3);
++ if (!x)
++ FatalError("malloc failure in xvps.c buildCmdStr");
++ fname = x;
++ *x++ = 0x27;
++
++ for (y = xname; *y; ++y) {
++ if (0x27 == *y) {
++ strcpy(x, "'\"'\"'");
++ x += strlen(x);
++ } else *x++ = *y;
++ }
++ strcpy (x, "'");
++
++#ifndef VMS
++
++ if (epsf) snprintf(str, CMDSIZE, "echo '\n showpage ' | cat %s - | %s -",
++ fname, gscmd);
++
++ else if (quick) snprintf(str, CMDSIZE, "echo %s | cat - %s | %s -",
++ "/showpage { showpage quit } bind def",
++ fname, gscmd);
++
++ else snprintf(str, CMDSIZE, "%s -- %s", gscmd, fname);
++
++#else /* VMS */
++ /* VMS doesn't have pipes or an 'echo' command and GS doesn't like
++ Unix-style filenames as input files in the VMS version */
++ strcat(tmp, " -- ");
++ rld = strrchr(fname, '/'); /* Pointer to last '/' */
++ if (rld) rld++; /* Pointer to filename */
++ else rld = fname; /* No path - use original string */
++ strcat(tmp, rld);
++#endif /* VMS */
++ free(fname);
++}
++#endif /* GS_PATH */
++
++
++
+diff -ru xv-3.10a/xvrle.c xv-3.10a-enhancements/xvrle.c
+--- xv-3.10a/xvrle.c 1995-01-19 09:27:47.000000000 -0800
++++ xv-3.10a-enhancements/xvrle.c 2007-05-13 17:49:34.000000000 -0700
+@@ -28,7 +28,7 @@
+ #define GETINT(fp) (c=getc(fp), c1=getc(fp), (c1<<8) + c )
+
+ static void read_rle PARM((FILE *, byte *, int, int, int, int));
+-static int rleError PARM((char *, char *));
++static int rleError PARM((const char *, const char *));
+
+
+
+@@ -44,9 +44,10 @@
+ byte maps[3][256];
+ int xpos, ypos, w, h, flags, ncolors, pixelbits, ncmap, cmaplen;
+ int cmtlen;
+- byte *img, *pic8;
++ byte *img;
+ long filesize;
+- char *bname, *errstr;
++ const char *bname;
++ const char *errstr;
+
+ pinfo->type = PIC8;
+ pinfo->pic = (byte *) NULL;
+@@ -57,7 +58,7 @@
+ /* open the stream */
+ fp = xv_fopen(fname,"r");
+ if (!fp) return (rleError(bname, "unable to open file"));
+-
++
+
+ /* figure out the file size */
+ fseek(fp, 0L, 2);
+@@ -85,7 +86,7 @@
+ if (DEBUG) {
+ fprintf(stderr,"RLE: %dx%d image at %d,%d\n", w, h, xpos, ypos);
+ fprintf(stderr,"flags: 0x%02x (%s%s%s%s)\n",
+- flags,
++ flags,
+ (flags & H_CLEARFIRST) ? "CLEARFIRST " : "",
+ (flags & H_NO_BACKGROUND) ? "NO_BG " : "",
+ (flags & H_ALPHA) ? "ALPHA " : "",
+@@ -93,7 +94,7 @@
+
+ fprintf(stderr, "%d bands, %d pixelbits, %d cmap bands, %d cmap entries\n",
+ ncolors, pixelbits, ncmap, cmaplen);
+- }
++ }
+
+ if (!(flags & H_NO_BACKGROUND)) {
+ if (DEBUG) fprintf(stderr, "background value: ");
+@@ -212,7 +213,7 @@
+ for (i=0, ip=img; i<w*h; i++, ip++) *ip = bgcol[0];
+ }
+ else {
+- for (i=0, ip=img; i<w*h; i++)
++ for (i=0, ip=img; i<w*h; i++)
+ for (j=0; j<3; j++, ip++) *ip = bgcol[j];
+ }
+ }
+@@ -250,7 +251,7 @@
+ /* finally, convert into XV internal format */
+
+ pinfo->pic = img;
+- pinfo->w = w;
++ pinfo->w = w;
+ pinfo->h = h;
+ pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
+ pinfo->frmType = -1; /* no default format to save in */
+@@ -260,7 +261,7 @@
+ if (ncmap == 0 || ncmap == 1) { /* grey, or grey with gamma curve */
+ pinfo->colType = F_GREYSCALE;
+ sprintf(pinfo->fullInfo, "Greyscale RLE. (%ld bytes)", filesize);
+- for (i=0; i<256; i++)
++ for (i=0; i<256; i++)
+ pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
+ }
+ else {
+@@ -272,7 +273,7 @@
+ pinfo->b[i] = maps[2][i];
+ }
+ }
+-
++
+ sprintf(pinfo->shrtInfo, "%dx%d RLE.",w, h);
+ }
+
+@@ -294,7 +295,7 @@
+ int w, h, ncolors, ncmap;
+ {
+ int posx, posy, plane, bperpix, i, pixval, skipcalls;
+- int opcode, operand, done, c, c1;
++ int opcode, operand, done, c, c1;
+ byte *ip;
+
+ posx = posy = plane = done = skipcalls = 0;
+@@ -324,7 +325,7 @@
+ case RSkipPixelsOp:
+ if (opcode & LONG_OP) { getc(fp); operand = GETINT(fp); }
+ else operand = getc(fp);
+-
++
+ posx += operand;
+ break;
+
+@@ -340,7 +341,7 @@
+ c = getc(fp);
+ if (plane<ncolors && posy<h && (posx+i < w)) *ip = c;
+ }
+-
++
+ if (operand & 1) getc(fp); /* word boundary */
+ posx += operand;
+ break;
+@@ -358,7 +359,7 @@
+ for (i=0; i<operand; i++, ip+=bperpix) {
+ if (plane<ncolors && posy<h && (posx+i < w)) *ip = pixval;
+ }
+-
++
+ /* if (operand & 1) getc(fp); */ /* word boundary */
+ posx += operand;
+ break;
+@@ -373,7 +374,7 @@
+
+ /*******************************************/
+ static int rleError(fname,st)
+- char *fname, *st;
++ const char *fname, *st;
+ {
+ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
+ return 0;
+diff -ru xv-3.10a/xvroot.c xv-3.10a-enhancements/xvroot.c
+--- xv-3.10a/xvroot.c 1994-12-22 14:34:42.000000000 -0800
++++ xv-3.10a-enhancements/xvroot.c 2004-05-16 18:07:52.000000000 -0700
+@@ -22,7 +22,7 @@
+ /***********************************/
+ void MakeRootPic()
+ {
+- /* called after 'epic' has been generated (if we're using root).
++ /* called after 'epic' has been generated (if we're using root).
+ creates the XImage and the pixmap, sets the root to the new
+ pixmap, and refreshes the display */
+
+@@ -44,6 +44,7 @@
+ case RM_MIRROR:
+ case RM_IMIRROR: rpixw = 2*eWIDE; rpixh = 2*eHIGH; break;
+ case RM_CSOLID:
++ case RM_UPLEFT:
+ case RM_CWARP:
+ case RM_CBRICK: rpixw = dispWIDE; rpixh = dispHIGH; break;
+
+@@ -67,32 +68,32 @@
+
+
+ if (rmode == RM_NORMAL || rmode == RM_TILE) {
+- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,0,
++ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,0,
+ (u_int) eWIDE, (u_int) eHIGH);
+ }
+
+ else if (rmode == RM_MIRROR || rmode == RM_IMIRROR) {
+ /* quadrant 2 */
+- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,0,
++ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,0,
+ (u_int) eWIDE, (u_int) eHIGH);
+ if (epic == NULL) FatalError("epic == NULL in RM_MIRROR code...\n");
+
+ /* quadrant 1 */
+ FlipPic(epic, eWIDE, eHIGH, 0); /* flip horizontally */
+ CreateXImage();
+- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, eWIDE,0,
++ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, eWIDE,0,
+ (u_int) eWIDE, (u_int) eHIGH);
+
+ /* quadrant 4 */
+ FlipPic(epic, eWIDE, eHIGH, 1); /* flip vertically */
+ CreateXImage();
+- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, eWIDE,eHIGH,
++ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, eWIDE,eHIGH,
+ (u_int) eWIDE, (u_int) eHIGH);
+
+ /* quadrant 3 */
+ FlipPic(epic, eWIDE, eHIGH, 0); /* flip horizontally */
+ CreateXImage();
+- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,eHIGH,
++ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,eHIGH,
+ (u_int) eWIDE, (u_int) eHIGH);
+
+ FlipPic(epic, eWIDE, eHIGH, 1); /* flip vertically (back to orig) */
+@@ -101,7 +102,7 @@
+
+
+ else if (rmode == RM_CENTER || rmode == RM_CENTILE || rmode == RM_CSOLID ||
+- rmode == RM_CWARP || rmode == RM_CBRICK) {
++ rmode == RM_CWARP || rmode == RM_CBRICK || rmode == RM_UPLEFT) {
+ /* do some stuff to set up the border around the picture */
+
+ if (rmode != RM_CENTILE) {
+@@ -122,15 +123,15 @@
+ for (i=ay; i < (int) eHIGH; i+=h) {
+ for (j=ax; j < (int) eWIDE; j+=w) {
+ /* if image goes off tmpPix, only draw subimage */
+-
++
+ x = j; y = i; w1 = w; h1 = h; offx = offy = 0;
+ if (x<0) { offx = -x; w1 -= offx; x = 0; }
+ if (x+w1>eWIDE) { w1 = (eWIDE-x); }
+
+ if (y<0) { offy = -y; h1 -= offy; y = 0; }
+ if (y+h1>eHIGH) { h1 = (eHIGH-y); }
+-
+- XPutImage(theDisp, tmpPix, theGC, theImage, offx, offy,
++
++ XPutImage(theDisp, tmpPix, theGC, theImage, offx, offy,
+ x, y, (u_int) w1, (u_int) h1);
+ }
+ }
+@@ -138,9 +139,15 @@
+
+ else if (rmode == RM_CSOLID) { }
+
++ else if (rmode == RM_UPLEFT) {
++
++ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,0,
++ (u_int) eWIDE, (u_int) eHIGH);
++ }
++
+ else if (rmode == RM_CWARP) { /* warp effect */
+ XSetForeground(theDisp, theGC, rootfg);
+- for (i=0; i<=dispWIDE; i+=8)
++ for (i=0; i<=dispWIDE; i+=8)
+ XDrawLine(theDisp,tmpPix,theGC, i,0, (int) dispWIDE-i,(int) dispHIGH);
+ for (i=0; i<=dispHIGH; i+=8)
+ XDrawLine(theDisp,tmpPix,theGC, 0,i, (int) dispWIDE, (int) dispHIGH-i);
+@@ -150,16 +157,16 @@
+ XSetForeground(theDisp, theGC, rootfg);
+ for (i=k=0; i<dispHIGH; i+=20,k++) {
+ XDrawLine(theDisp, tmpPix, theGC, 0, i, (int) dispWIDE, i);
+- for (j=(k&1) * 20 + 10; j<dispWIDE; j+=40)
++ for (j=(k&1) * 20 + 10; j<dispWIDE; j+=40)
+ XDrawLine(theDisp, tmpPix, theGC, j,i,j,i+20);
+ }
+ }
+
+
+ /* draw the image centered on top of the background */
+- if (rmode != RM_CENTILE)
+- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0,
+- ((int) dispWIDE-eWIDE)/2, ((int) dispHIGH-eHIGH)/2,
++ if ((rmode != RM_CENTILE) && (rmode != RM_UPLEFT))
++ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0,
++ ((int) dispWIDE-eWIDE)/2, ((int) dispHIGH-eHIGH)/2,
+ (u_int) eWIDE, (u_int) eHIGH);
+ }
+
+@@ -172,7 +179,7 @@
+ if (dispWIDE == eWIDE) {
+ /* horizontal center line */
+ int y, ay;
+-
++
+ y = eHIGH - ((dispHIGH/2)%eHIGH); /* Starting point in picture to copy */
+ ay = 0; /* Vertical anchor point */
+ while (ay < dispHIGH) {
+@@ -189,7 +196,7 @@
+ else if (dispHIGH == eHIGH) {
+ /* vertical centerline */
+ int x, ax;
+-
++
+ x = eWIDE - ((dispWIDE/2)%eWIDE); /* Starting point in picture to copy */
+ ax = 0; /* Horizontal anchor point */
+ while (ax < dispWIDE) {
+@@ -206,10 +213,10 @@
+ else {
+ /* vertical and horizontal centerlines */
+ int x,y, ax,ay;
+-
++
+ y = eHIGH - ((dispHIGH/2)%eHIGH); /* Starting point in picture to copy */
+ ay = 0; /* Vertical anchor point */
+-
++
+ while (ay < dispHIGH) {
+ x = eWIDE - ((dispWIDE/2)%eWIDE);/* Starting point in picture to cpy */
+ ax = 0; /* Horizontal anchor point */
+@@ -276,8 +283,8 @@
+ gc_init.foreground = BlackPixel(theDisp, theScreen);
+ gc_init.background = WhitePixel(theDisp, theScreen);
+ gc = XCreateGC(theDisp, vrootW, GCForeground|GCBackground, &gc_init);
+- pix = XCreatePixmap(theDisp, vrootW, root_weave_width,
+- root_weave_height,
++ pix = XCreatePixmap(theDisp, vrootW, root_weave_width,
++ root_weave_height,
+ (unsigned int) DefaultDepth(theDisp, theScreen));
+
+ XCopyPlane(theDisp, bitmap, pix, gc, 0,0, root_weave_width,
+@@ -333,8 +340,8 @@
+ prop = XInternAtom(theDisp, "_XSETROOT_ID", True);
+ if (prop == None) return; /* no old pixmap to kill */
+
+- if (XGetWindowProperty(theDisp, vrootW, prop, 0L, 1L, True,
+- AnyPropertyType, &type, &format, &length,
++ if (XGetWindowProperty(theDisp, vrootW, prop, 0L, 1L, True,
++ AnyPropertyType, &type, &format, &length,
+ &after, &data) == Success) {
+
+ if (type==XA_PIXMAP && format==32 && length==1 && after==0 && data) {
+@@ -348,4 +355,4 @@
+
+
+
+-
++
+diff -ru xv-3.10a/xvscrl.c xv-3.10a-enhancements/xvscrl.c
+--- xv-3.10a/xvscrl.c 1994-12-22 14:34:41.000000000 -0800
++++ xv-3.10a-enhancements/xvscrl.c 2004-05-16 18:07:56.000000000 -0700
+@@ -1,4 +1,4 @@
+-/*
++/*
+ * xvscrl.c - Scroll Bar handling functions
+ *
+ * callable functions:
+@@ -6,7 +6,7 @@
+ * SCCreate() - creates the Scroll Bar window.
+ * SCChange() - resize/repositions the Scroll Bar window.
+ * SCSetRange() - sets min/max/current values of control
+- * SCSetVal() - sets value of control
++ * SCSetVal() - sets value of control
+ * SCRedraw() - redraws scroll bar
+ * SCTrack() - called when clicked. Operates control 'til mouseup
+ */
+@@ -50,7 +50,7 @@
+
+
+ /***************************************************/
+-void SCCreate(sp, parent, x, y, vert, len, minv, maxv, curv, page,
++void SCCreate(sp, parent, x, y, vert, len, minv, maxv, curv, page,
+ fg, bg, hi, lo, func)
+ SCRL *sp;
+ Window parent;
+@@ -71,7 +71,7 @@
+ downhPix = MakePix1(parent, downh_bits, downh_width, downh_height);
+ uph1Pix = MakePix1(parent, uph1_bits, uph1_width, uph1_height);
+ downh1Pix= MakePix1(parent, downh1_bits, downh1_width, downh1_height);
+-
++
+ sgray = XCreatePixmapFromBitmapData(theDisp, parent,
+ (char *) scrlgray_bits, scrlgray_width, scrlgray_height,
+ fg,bg,dispDEEP);
+@@ -124,7 +124,7 @@
+ sp->len = len;
+ sp->uplit = sp->dnlit = 0;
+
+- if (vert) XMoveResizeWindow(theDisp, sp->win, x,y,
++ if (vert) XMoveResizeWindow(theDisp, sp->win, x,y,
+ (u_int) sp->tsize,(u_int) len);
+ else XMoveResizeWindow(theDisp, sp->win, x,y,
+ (u_int) len, (u_int) sp->tsize);
+@@ -144,7 +144,7 @@
+ if (maxv<minv) maxv=minv;
+ sp->min = minv; sp->max = maxv; sp->page = page;
+ sp->active = (minv < maxv);
+-
++
+ /* adjust scroll bar background */
+ if (sp->active) {
+ if (ctrlColor) XSetWindowBackground(theDisp, sp->win, sp->lo);
+@@ -174,7 +174,7 @@
+
+ sp->val = curv;
+
+- if (sp->active)
++ if (sp->active)
+ sp->tpos = sp->tmin + ((sp->tmax - sp->tmin)*(curv - sp->min))
+ / (sp->max - sp->min);
+
+@@ -194,20 +194,20 @@
+ XSetBackground(theDisp, theGC, sp->bg);
+
+ XClearWindow(theDisp, sp->win);
+-
++
+ drawArrow(sp,UPLINE); /* draw up/down arrows */
+ drawArrow(sp,DNLINE);
+
+ XSetForeground(theDisp, theGC, sp->fg);
+
+- if (sp->vert) {
++ if (sp->vert) {
+ XDrawLine(theDisp, sp->win, theGC, 0, sp->tsize, sp->tsize, sp->tsize);
+- XDrawLine(theDisp, sp->win, theGC, 0, sp->len-sp->tsize-1,
++ XDrawLine(theDisp, sp->win, theGC, 0, sp->len-sp->tsize-1,
+ sp->tsize, sp->len-sp->tsize-1);
+ }
+ else { /* horizontal version */
+ XDrawLine(theDisp, sp->win, theGC, sp->tsize, 0, sp->tsize, sp->tsize);
+- XDrawLine(theDisp, sp->win, theGC, sp->len - sp->tsize-1, 0,
++ XDrawLine(theDisp, sp->win, theGC, sp->len - sp->tsize-1, 0,
+ sp->len - sp->tsize-1, sp->tsize);
+ }
+
+@@ -225,7 +225,7 @@
+
+ if (arr == UPLINE) {
+ XSetForeground(theDisp, theGC, sp->bg);
+- XFillRectangle(theDisp, sp->win, theGC, 0, 0,
++ XFillRectangle(theDisp, sp->win, theGC, 0, 0,
+ (u_int) sp->tsize, (u_int) sp->tsize);
+
+ if (sp->vert) butpix = (sp->uplit) ? up1Pix : upPix;
+@@ -235,14 +235,14 @@
+ XSetBackground(theDisp, theGC, sp->bg);
+ XCopyPlane(theDisp, butpix, sp->win, theGC, 0, 0, up_width,up_height,
+ 3,3, 1L);
+- Draw3dRect(sp->win, 0,0, (u_int) sp->tsize-1, (u_int) sp->tsize-1,
++ Draw3dRect(sp->win, 0,0, (u_int) sp->tsize-1, (u_int) sp->tsize-1,
+ (sp->uplit) ? R3D_IN : R3D_OUT, 2, sp->hi, sp->lo, sp->bg);
+ }
+
+ else if (arr == DNLINE) {
+ if (sp->vert) {
+ XSetForeground(theDisp, theGC, sp->bg);
+- XFillRectangle(theDisp, sp->win, theGC, 0, sp->len - sp->tsize,
++ XFillRectangle(theDisp, sp->win, theGC, 0, sp->len - sp->tsize,
+ (u_int) sp->tsize, (u_int) sp->tsize);
+ butpix = (sp->dnlit) ? down1Pix : downPix;
+
+@@ -251,8 +251,8 @@
+ XCopyPlane(theDisp, butpix, sp->win, theGC, 0, 0, up_width,up_height,
+ 3, sp->len - 3 - up_height, 1L);
+
+- Draw3dRect(sp->win, 0, sp->len - sp->tsize,
+- (u_int) sp->tsize-1, (u_int) sp->tsize-1,
++ Draw3dRect(sp->win, 0, sp->len - sp->tsize,
++ (u_int) sp->tsize-1, (u_int) sp->tsize-1,
+ (sp->dnlit) ? R3D_IN : R3D_OUT, 2, sp->hi, sp->lo, sp->bg);
+ }
+
+@@ -267,8 +267,8 @@
+ XCopyPlane(theDisp, butpix, sp->win, theGC, 0, 0, up_width,up_height,
+ sp->len - 3 - up_width, 3, 1L);
+
+- Draw3dRect(sp->win, sp->len - sp->tsize, 0,
+- (u_int) sp->tsize-1, (u_int) sp->tsize-1,
++ Draw3dRect(sp->win, sp->len - sp->tsize, 0,
++ (u_int) sp->tsize-1, (u_int) sp->tsize-1,
+ (sp->dnlit) ? R3D_IN : R3D_OUT, 2, sp->hi, sp->lo, sp->bg);
+ }
+ }
+@@ -283,17 +283,17 @@
+ {
+ if (sp->vert) {
+ /* clear out thumb area with background color */
+- XClearArea(theDisp, sp->win, 0, sp->tsize+1, (u_int) sp->tsize,
++ XClearArea(theDisp, sp->win, 0, sp->tsize+1, (u_int) sp->tsize,
+ (u_int) ((sp->len-sp->tsize-1)-(sp->tsize+1)), False);
+
+ if (sp->active) { /* a thumb is necessary */
+
+ XSetForeground(theDisp, theGC, sp->bg);
+- XFillRectangle(theDisp, sp->win, theGC, 1, sp->tpos+1,
++ XFillRectangle(theDisp, sp->win, theGC, 1, sp->tpos+1,
+ (u_int) (sp->tsize-2), (u_int) (sp->tsize-2));
+
+ XSetForeground(theDisp, theGC, sp->fg);
+- XDrawRectangle(theDisp, sp->win, theGC, 0, sp->tpos,
++ XDrawRectangle(theDisp, sp->win, theGC, 0, sp->tpos,
+ (u_int) (sp->tsize-1), (u_int) (sp->tsize-1));
+
+ XDrawLine(theDisp, sp->win, theGC, 9-3, sp->tpos+6, 9+3, sp->tpos+6);
+@@ -301,7 +301,7 @@
+ XDrawLine(theDisp, sp->win, theGC, 9-3, sp->tpos+10,9+3, sp->tpos+10);
+ XDrawLine(theDisp, sp->win, theGC, 9-3, sp->tpos+12,9+3, sp->tpos+12);
+
+- Draw3dRect(sp->win, 1, sp->tpos+1,
++ Draw3dRect(sp->win, 1, sp->tpos+1,
+ (u_int) sp->tsize-3, (u_int) sp->tsize-3, R3D_OUT,2,
+ sp->hi, sp->lo, sp->bg);
+ }
+@@ -309,17 +309,17 @@
+
+ else { /* horizontal */
+ /* clear out thumb area with background color */
+- XClearArea(theDisp, sp->win, sp->tsize+1, 0,
+- (u_int) ((sp->len-sp->tsize-1)-(sp->tsize+1)),
++ XClearArea(theDisp, sp->win, sp->tsize+1, 0,
++ (u_int) ((sp->len-sp->tsize-1)-(sp->tsize+1)),
+ (u_int) sp->tsize, False);
+
+ if (sp->active) { /* a thumb is necessary */
+ XSetForeground(theDisp, theGC, sp->bg);
+- XFillRectangle(theDisp, sp->win, theGC, sp->tpos+1, 1,
++ XFillRectangle(theDisp, sp->win, theGC, sp->tpos+1, 1,
+ (u_int) (sp->tsize-2), (u_int) (sp->tsize-2));
+
+ XSetForeground(theDisp, theGC, sp->fg);
+- XDrawRectangle(theDisp, sp->win, theGC, sp->tpos, 0,
++ XDrawRectangle(theDisp, sp->win, theGC, sp->tpos, 0,
+ (u_int) (sp->tsize-1), (u_int) (sp->tsize-1));
+
+ XDrawLine(theDisp, sp->win, theGC, sp->tpos+6, 9-3, sp->tpos+6, 9+3);
+@@ -327,7 +327,7 @@
+ XDrawLine(theDisp, sp->win, theGC, sp->tpos+10,9-3, sp->tpos+10,9+3);
+ XDrawLine(theDisp, sp->win, theGC, sp->tpos+12,9-3, sp->tpos+12,9+3);
+
+- Draw3dRect(sp->win, sp->tpos+1, 1,
++ Draw3dRect(sp->win, sp->tpos+1, 1,
+ (u_int) sp->tsize-3, (u_int) sp->tsize-3, R3D_OUT,2,
+ sp->hi, sp->lo, sp->bg);
+ }
+@@ -450,8 +450,8 @@
+ case DNLINE: /* arrows */
+ pos = whereInScrl(sp,x,y);
+ if (pos == ipos) {
+- if (!lit) {
+- lit = 1;
++ if (!lit) {
++ lit = 1;
+ if (ipos == UPLINE) { sp->uplit = 1; drawArrow(sp,UPLINE); }
+ else { sp->dnlit = 1; drawArrow(sp,DNLINE); }
+ }
+@@ -467,16 +467,16 @@
+ }
+ }
+ }
+-
++
+ else {
+- if (lit) {
+- lit = 0;
++ if (lit) {
++ lit = 0;
+ if (ipos == UPLINE) { sp->uplit = 0; drawArrow(sp,UPLINE); }
+ else { sp->dnlit = 0; drawArrow(sp,DNLINE); }
+ }
+ }
+ break;
+-
++
+ }
+ }
+
+diff -ru xv-3.10a/xvsmooth.c xv-3.10a-enhancements/xvsmooth.c
+--- xv-3.10a/xvsmooth.c 1994-12-22 14:34:42.000000000 -0800
++++ xv-3.10a-enhancements/xvsmooth.c 2004-05-16 18:07:59.000000000 -0700
+@@ -4,11 +4,11 @@
+ * Contains:
+ * byte *SmoothResize(src8, swide, shigh, dwide, dhigh,
+ * rmap, gmap, bmap, rdmap, gdmap, bdmap, maplen)
+- * byte *Smooth24(pic824, is24, swide, shigh, dwide, dhigh,
++ * byte *Smooth24(pic824, is24, swide, shigh, dwide, dhigh,
+ * rmap, gmap, bmap)
+- * byte *DoColorDither(pic24, pic8, w, h, rmap,gmap,bmap,
++ * byte *DoColorDither(pic24, pic8, w, h, rmap,gmap,bmap,
+ * rdisp, gdisp, bdisp, maplen)
+- * byte *Do332ColorDither(pic24, pic8, w, h, rmap,gmap,bmap,
++ * byte *Do332ColorDither(pic24, pic8, w, h, rmap,gmap,bmap,
+ * rdisp, gdisp, bdisp, maplen)
+ */
+
+@@ -18,21 +18,21 @@
+
+ static int smoothX PARM((byte *, byte *, int, int, int, int, int,
+ byte *, byte *, byte *));
+-static int smoothY PARM((byte *, byte *, int, int, int, int, int,
++static int smoothY PARM((byte *, byte *, int, int, int, int, int,
+ byte *, byte *, byte *));
+ static int smoothXY PARM((byte *, byte *, int, int, int, int, int,
+ byte *, byte *, byte *));
+
+
+ /***************************************************/
+-byte *SmoothResize(srcpic8, swide, shigh, dwide, dhigh,
++byte *SmoothResize(srcpic8, swide, shigh, dwide, dhigh,
+ rmap, gmap, bmap, rdmap, gdmap, bdmap, maplen)
+ byte *srcpic8, *rmap, *gmap, *bmap, *rdmap, *gdmap, *bdmap;
+ int swide, shigh, dwide, dhigh, maplen;
+ {
+- /* generic interface to Smooth and ColorDither code.
+- given an 8-bit-per, swide * shigh image with colormap rmap,gmap,bmap,
+- will generate a new 8-bit-per, dwide * dhigh image, which is dithered
++ /* generic interface to Smooth and ColorDither code.
++ given an 8-bit-per, swide * shigh image with colormap rmap,gmap,bmap,
++ will generate a new 8-bit-per, dwide * dhigh image, which is dithered
+ using colors found in rdmap, gdmap, bdmap arrays */
+
+ /* returns ptr to a dwide*dhigh array of bytes, or NULL on failure */
+@@ -50,7 +50,7 @@
+
+ return (byte *) NULL;
+ }
+-
++
+
+
+ /***************************************************/
+@@ -83,29 +83,29 @@
+ bperpix = (is24) ? 3 : 1;
+
+ /* decide which smoothing routine to use based on type of expansion */
+- if (dwide < swide && dhigh < shigh)
++ if (dwide < swide && dhigh < shigh)
+ retval = smoothXY(pic24, pic824, is24, swide, shigh, dwide, dhigh,
+ rmap, gmap, bmap);
+
+- else if (dwide < swide && dhigh >= shigh)
++ else if (dwide < swide && dhigh >= shigh)
+ retval = smoothX (pic24, pic824, is24, swide, shigh, dwide, dhigh,
+ rmap, gmap, bmap);
+
+- else if (dwide >= swide && dhigh < shigh)
++ else if (dwide >= swide && dhigh < shigh)
+ retval = smoothY (pic24, pic824, is24, swide, shigh, dwide, dhigh,
+ rmap, gmap, bmap);
+
+ else {
+ /* dwide >= swide && dhigh >= shigh */
+
+- /* cx,cy = original pixel in pic824. px,py = relative position
+- of pixel ex,ey inside of cx,cy as percentages +-50%, +-50%.
++ /* cx,cy = original pixel in pic824. px,py = relative position
++ of pixel ex,ey inside of cx,cy as percentages +-50%, +-50%.
+ 0,0 = middle of pixel */
+
+ /* we can save a lot of time by precomputing cxtab[] and pxtab[], both
+ dwide arrays of ints that contain values for the equations:
+ cx = (ex * swide) / dwide;
+- px = ((ex * swide * 100) / dwide) - (cx * 100) - 50; */
++ px = ((ex * swide * 128) / dwide) - (cx * 128) - 64; */
+
+ cxtab = (int *) malloc(dwide * sizeof(int));
+ if (!cxtab) { free(pic24); return NULL; }
+@@ -115,17 +115,17 @@
+
+ for (ex=0; ex<dwide; ex++) {
+ cxtab[ex] = (ex * swide) / dwide;
+- pxtab[ex] = (((ex * swide)* 100) / dwide)
+- - (cxtab[ex] * 100) - 50;
++ pxtab[ex] = (((ex * swide)* 128) / dwide)
++ - (cxtab[ex] * 128) - 64;
+ }
+-
++
+ for (ey=0; ey<dhigh; ey++) {
+ byte *pptr, rA, gA, bA, rB, gB, bB, rC, gC, bC, rD, gD, bD;
+
+ ProgressMeter(0, (dhigh)-1, ey, "Smooth");
+
+ cy = (ey * shigh) / dhigh;
+- py = (((ey * shigh) * 100) / dhigh) - (cy * 100) - 50;
++ py = (((ey * shigh) * 128) / dhigh) - (cy * 128) - 64;
+ if (py<0) { y1 = cy-1; if (y1<0) y1=0; }
+ else { y1 = cy+1; if (y1>shigh-1) y1=shigh-1; }
+
+@@ -162,7 +162,7 @@
+ cC = pic824[cyOff + x1]; /* left/right center pixel */
+ cD = pic824[cyOff + cx]; /* center pixel */
+ }
+-
++
+ /* quick check */
+ if (!is24 && cA == cB && cB == cC && cC == cD) {
+ /* set this pixel to the same color as in pic8 */
+@@ -172,36 +172,36 @@
+ else {
+ /* compute weighting factors */
+ apx = abs(px); apy = abs(py);
+- pA = (apx * apy) / 100;
+- pB = (apy * (100 - apx)) / 100;
+- pC = (apx * (100 - apy)) / 100;
+- pD = 100 - (pA + pB + pC);
++ pA = (apx * apy) >> 7; /* div 128 */
++ pB = (apy * (128 - apx)) >> 7; /* div 128 */
++ pC = (apx * (128 - apy)) >> 7; /* div 128 */
++ pD = 128 - (pA + pB + pC);
+
+ if (is24) {
+- *pp++ = ((int) (pA * rA))/100 + ((int) (pB * rB))/100 +
+- ((int) (pC * rC))/100 + ((int) (pD * rD))/100;
++ *pp++ = (((int) (pA * rA))>>7) + (((int) (pB * rB))>>7) +
++ (((int) (pC * rC))>>7) + (((int) (pD * rD))>>7);
+
+- *pp++ = ((int) (pA * gA))/100 + ((int) (pB * gB))/100 +
+- ((int) (pC * gC))/100 + ((int) (pD * gD))/100;
++ *pp++ = (((int) (pA * gA))>>7) + (((int) (pB * gB))>>7) +
++ (((int) (pC * gC))>>7) + (((int) (pD * gD))>>7);
+
+- *pp++ = ((int) (pA * bA))/100 + ((int) (pB * bB))/100 +
+- ((int) (pC * bC))/100 + ((int) (pD * bD))/100;
++ *pp++ = (((int) (pA * bA))>>7) + (((int) (pB * bB))>>7) +
++ (((int) (pC * bC))>>7) + (((int) (pD * bD))>>7);
+ }
+ else { /* 8-bit pic */
+- *pp++ = ((int) (pA * rmap[cA]))/100 + ((int)(pB * rmap[cB]))/100 +
+- ((int) (pC * rmap[cC]))/100 + ((int)(pD * rmap[cD]))/100;
++ *pp++ = (((int)(pA * rmap[cA]))>>7) + (((int)(pB * rmap[cB]))>>7) +
++ (((int)(pC * rmap[cC]))>>7) + (((int)(pD * rmap[cD]))>>7);
+
+- *pp++ = ((int) (pA * gmap[cA]))/100 + ((int)(pB * gmap[cB]))/100 +
+- ((int) (pC * gmap[cC]))/100 + ((int)(pD * gmap[cD]))/100;
++ *pp++ = (((int)(pA * gmap[cA]))>>7) + (((int)(pB * gmap[cB]))>>7) +
++ (((int)(pC * gmap[cC]))>>7) + (((int)(pD * gmap[cD]))>>7);
+
+- *pp++ = ((int)(pA * bmap[cA]))/100 + ((int)(pB * bmap[cB]))/100 +
+- ((int)(pC * bmap[cC]))/100 + ((int)(pD * bmap[cD]))/100;
++ *pp++ = (((int)(pA * bmap[cA]))>>7) + (((int)(pB * bmap[cB]))>>7) +
++ (((int)(pC * bmap[cC]))>>7) + (((int)(pD * bmap[cD]))>>7);
+ }
+ }
+ }
+ }
+
+- free(cxtab);
++ free(cxtab);
+ free(pxtab);
+ retval = 0; /* okay */
+ }
+@@ -218,7 +218,7 @@
+
+
+ /***************************************************/
+-static int smoothX(pic24, pic824, is24, swide, shigh, dwide, dhigh,
++static int smoothX(pic24, pic824, is24, swide, shigh, dwide, dhigh,
+ rmap, gmap, bmap)
+ byte *pic24, *pic824, *rmap, *gmap, *bmap;
+ int is24, swide, shigh, dwide, dhigh;
+@@ -253,7 +253,7 @@
+
+ bperpix = (is24) ? 3 : 1;
+
+- for (j=0; j<=swide; j++)
++ for (j=0; j<=swide; j++)
+ pixarr[j] = (j*dwide + (15*swide)/16) / swide;
+
+ cptr = pic824; cptr1 = cptr + swide * bperpix;
+@@ -280,7 +280,7 @@
+ lbufG[j] = ((int) ((*cptr++ * pcnt0) + (*cptr1++ * pcnt1))) >> 6;
+ lbufB[j] = ((int) ((*cptr++ * pcnt0) + (*cptr1++ * pcnt1))) >> 6;
+ }
+- }
++ }
+ else { /* 8-bit input pic */
+ for (j=0; j<swide; j++, cptr++, cptr1++) {
+ lbufR[j] = ((int)((rmap[*cptr]* pcnt0) + (rmap[*cptr1]* pcnt1))) >> 6;
+@@ -314,8 +314,8 @@
+ return 0;
+ }
+
+-
+-
++
++
+
+
+
+@@ -405,7 +405,7 @@
+ lbufB[j] += ((int)((bmap[*cptr]*pct0[j])+(bmap[*cptr1]*pct1[j]))) >> 6;
+ }
+ }
+-
++
+ linecnt++;
+ }
+
+@@ -421,13 +421,13 @@
+ return retval;
+ }
+
+-
+-
++
++
+
+
+
+ /***************************************************/
+-static int smoothXY(pic24, pic824, is24, swide, shigh, dwide, dhigh,
++static int smoothXY(pic24, pic824, is24, swide, shigh, dwide, dhigh,
+ rmap, gmap, bmap)
+ byte *pic24, *pic824, *rmap, *gmap, *bmap;
+ int is24, swide, shigh, dwide, dhigh;
+@@ -462,7 +462,7 @@
+
+ bperpix = (is24) ? 3 : 1;
+
+- for (j=0; j<=swide; j++)
++ for (j=0; j<=swide; j++)
+ pixarr[j] = (j*dwide + (15*swide)/16) / swide;
+
+ lastline = linecnt = pixR = pixG = pixB = 0;
+@@ -526,20 +526,20 @@
+ return 0;
+ }
+
+-
+-
++
++
+
+ /********************************************/
+-byte *DoColorDither(pic24, pic8, w, h, rmap, gmap, bmap,
++byte *DoColorDither(pic24, pic8, w, h, rmap, gmap, bmap,
+ rdisp, gdisp, bdisp, maplen)
+ byte *pic24, *pic8, *rmap, *gmap, *bmap, *rdisp, *gdisp, *bdisp;
+ int w, h, maplen;
+ {
+ /* takes a 24 bit picture, of size w*h, dithers with the colors in
+ rdisp, gdisp, bdisp (which have already been allocated),
+- and generates an 8-bit w*h image, which it returns.
++ and generates an 8-bit w*h image, which it returns.
+ ignores input value 'pic8'
+- returns NULL on error
++ returns NULL on error
+
+ note: the rdisp,gdisp,bdisp arrays should be the 'displayed' colors,
+ not the 'desired' colors
+@@ -547,7 +547,7 @@
+ if pic24 is NULL, uses the passed-in pic8 (an 8-bit image) as
+ the source, and the rmap,gmap,bmap arrays as the desired colors */
+
+- byte *np, *ep, *newpic;
++ byte *np, *ep, *newpic;
+ short *cache;
+ int r2, g2, b2;
+ int *thisline, *nextline, *thisptr, *nextptr, *tmpptr;
+@@ -558,11 +558,11 @@
+ int fserrmap[512]; /* -255 .. 0 .. +255 */
+
+ /* compute somewhat non-linear floyd-steinberg error mapping table */
+- for (i=j=0; i<=0x40; i++,j++)
++ for (i=j=0; i<=0x40; i++,j++)
+ { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
+- for ( ; i<0x80; i++, j += !(i&1) ? 1 : 0)
++ for ( ; i<0x80; i++, j += !(i&1) ? 1 : 0)
+ { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
+- for ( ; i<=0xff; i++)
++ for ( ; i<=0xff; i++)
+ { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
+
+
+@@ -575,7 +575,7 @@
+ cache = (short *) calloc((size_t) (2<<14), sizeof(short));
+ thisline = (int *) malloc(pwide3 * sizeof(int));
+ nextline = (int *) malloc(pwide3 * sizeof(int));
+- if (!cache || !newpic || !thisline || !nextline) {
++ if (!cache || !newpic || !thisline || !nextline) {
+ if (newpic) free(newpic);
+ if (cache) free(cache);
+ if (thisline) free(thisline);
+@@ -624,30 +624,30 @@
+
+ r2 = *thisptr++; g2 = *thisptr++; b2 = *thisptr++;
+
+- /* map r2,g2,b2 components (could be outside 0..255 range)
++ /* map r2,g2,b2 components (could be outside 0..255 range)
+ into 0..255 range */
+-
++
+ if (r2<0 || g2<0 || b2<0) { /* are there any negatives in RGB? */
+ if (r2<g2) { if (r2<b2) k = 0; else k = 2; }
+ else { if (g2<b2) k = 1; else k = 2; }
+
+ switch (k) {
+ case 0: g2 -= r2; b2 -= r2; d = (abs(r2) * 3) / 2; /* RED */
+- r2 = 0;
++ r2 = 0;
+ g2 = (g2>d) ? g2 - d : 0;
+ b2 = (b2>d) ? b2 - d : 0;
+ break;
+
+ case 1: r2 -= g2; b2 -= g2; d = (abs(g2) * 3) / 2; /* GREEN */
+ r2 = (r2>d) ? r2 - d : 0;
+- g2 = 0;
++ g2 = 0;
+ b2 = (b2>d) ? b2 - d : 0;
+ break;
+
+ case 2: r2 -= b2; g2 -= b2; d = (abs(b2) * 3) / 2; /* BLUE */
+ r2 = (r2>d) ? r2 - d : 0;
+ g2 = (g2>d) ? g2 - d : 0;
+- b2 = 0;
++ b2 = 0;
+ break;
+ }
+ }
+@@ -674,7 +674,7 @@
+ mind = 10000;
+ for (k=closest=0; k<maplen && mind>7; k++) {
+ d = abs(r2 - rdisp[k])
+- + abs(g2 - gdisp[k])
++ + abs(g2 - gdisp[k])
+ + abs(b2 - bdisp[k]);
+ if (d<mind) { mind = d; closest = k; }
+ }
+@@ -703,7 +703,7 @@
+ thisptr[1] += (gerr*7)/16;
+ thisptr[2] += (berr*7)/16;
+ }
+-
++
+ if (i!=imax) { /* do BOTTOM pixel */
+ nextptr[0] += (rerr*5)/16;
+ nextptr[1] += (gerr*5)/16;
+@@ -735,7 +735,7 @@
+
+
+ /********************************************/
+-byte *Do332ColorDither(pic24, pic8, w, h, rmap, gmap, bmap,
++byte *Do332ColorDither(pic24, pic8, w, h, rmap, gmap, bmap,
+ rdisp, gdisp, bdisp, maplen)
+ byte *pic24, *pic8, *rmap, *gmap, *bmap, *rdisp, *gdisp, *bdisp;
+ int w, h, maplen;
+@@ -744,9 +744,9 @@
+
+ /* takes a 24 bit picture, of size w*h, dithers with the colors in
+ rdisp, gdisp, bdisp (which have already been allocated),
+- and generates an 8-bit w*h image, which it returns.
++ and generates an 8-bit w*h image, which it returns.
+ ignores input value 'pic8'
+- returns NULL on error
++ returns NULL on error
+
+ note: the rdisp,gdisp,bdisp arrays should be the 'displayed' colors,
+ not the 'desired' colors
+@@ -754,7 +754,7 @@
+ if pic24 is NULL, uses the passed-in pic8 (an 8-bit image) as
+ the source, and the rmap,gmap,bmap arrays as the desired colors */
+
+- byte *np, *ep, *newpic;
++ byte *np, *ep, *newpic;
+ int r2, g2, b2;
+ int *thisline, *nextline, *thisptr, *nextptr, *tmpptr;
+ int i, j, rerr, gerr, berr, pwide3;
+@@ -763,11 +763,11 @@
+ int fserrmap[512]; /* -255 .. 0 .. +255 */
+
+ /* compute somewhat non-linear floyd-steinberg error mapping table */
+- for (i=j=0; i<=0x40; i++,j++)
++ for (i=j=0; i<=0x40; i++,j++)
+ { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
+- for ( ; i<0x80; i++, j += !(i&1) ? 1 : 0)
++ for ( ; i<0x80; i++, j += !(i&1) ? 1 : 0)
+ { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
+- for ( ; i<=0xff; i++)
++ for ( ; i<=0xff; i++)
+ { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
+
+
+@@ -778,7 +778,7 @@
+ newpic = (byte *) malloc((size_t) (w * h));
+ thisline = (int *) malloc(pwide3 * sizeof(int));
+ nextline = (int *) malloc(pwide3 * sizeof(int));
+- if (!newpic || !thisline || !nextline) {
++ if (!newpic || !thisline || !nextline) {
+ if (newpic) free(newpic);
+ if (thisline) free(thisline);
+ if (nextline) free(nextline);
+@@ -830,7 +830,7 @@
+
+
+ for (j=0; j<w; j++) {
+- int k, d, mind, closest, rb,gb,bb;
++ int rb,gb,bb;
+
+ r2 = *thisptr++; g2 = *thisptr++; b2 = *thisptr++;
+ if (i&1) thisptr -= 6; /* move left */
+@@ -846,7 +846,7 @@
+ bb = (b2 + 0x20); /* round 2 bits */
+ RANGE(bb,0,255);
+ bb = bb & 0xc0;
+-
++
+
+ *np = rb | (gb>>3) | (bb>>6);
+
+diff -ru xv-3.10a/xvsunras.c xv-3.10a-enhancements/xvsunras.c
+--- xv-3.10a/xvsunras.c 1994-12-22 14:34:42.000000000 -0800
++++ xv-3.10a-enhancements/xvsunras.c 2007-05-13 17:46:42.000000000 -0700
+@@ -39,7 +39,7 @@
+ #define RAS_RLE 0x80
+
+
+-static int sunRasError PARM((char *, char *));
++static int sunRasError PARM((const char *, const char *));
+ static int rle_read PARM((byte *, int, int, FILE *, int));
+ static void sunRas1to8 PARM((byte *, byte *, int));
+ static void sunRas8to1 PARM((byte *, byte *, int, int));
+@@ -54,10 +54,10 @@
+ PICINFO *pinfo;
+ {
+ FILE *fp;
+- int linesize,lsize,csize,isize,i,w,h,d;
+- byte *image, *line, *pic8;
++ int linesize,lsize,csize,isize,i,w,h,d,npixels,nbytes;
++ byte *image, *line;
+ struct rasterfile sunheader;
+- char *bname;
++ const char *bname;
+
+ bname = BaseName(fname);
+
+@@ -85,7 +85,7 @@
+ sunheader.ras_depth != 8 &&
+ sunheader.ras_depth != 24 &&
+ sunheader.ras_depth != 32) {
+- fprintf (stderr, "Sun rasterfile image has depth %d\n",
++ fprintf (stderr, "Sun rasterfile image has depth %d\n",
+ sunheader.ras_depth);
+ fprintf (stderr, "Depths supported are 1, 8, 24, and 32\n");
+ fclose(fp);
+@@ -115,26 +115,59 @@
+
+ w = sunheader.ras_width;
+ h = sunheader.ras_height;
+- d = sunheader.ras_depth;
+- isize = sunheader.ras_length ?
+- sunheader.ras_length :
+- (w * h * d) / 8;
++ d = sunheader.ras_depth; /* 1, 8, 24, or 32 (above) */
++ npixels = w * h;
++ if (w <= 0 || h <= 0 || npixels/w != h) {
++ fprintf (stderr, "Sun rasterfile image has invalid dimensions (%dx%d)\n",
++ w, h);
++ fclose(fp);
++ return 0;
++ }
++ if (d == 1)
++ nbytes = npixels/8; /* should round up here, but used only for printf */
++ else {
++ nbytes = npixels * (d/8);
++/*
++ [nbytes (isize) used only in printfs; don't really care about overflows]
++ if (nbytes/npixels != (d/8)) {
++ fprintf (stderr, "Sun rasterfile has invalid dimensions (%dx%dx%d)\n",
++ w, h, d);
++ fclose(fp);
++ return 0;
++ }
++ */
++ }
++ isize = sunheader.ras_length ? sunheader.ras_length : nbytes;
+ csize = (sunheader.ras_maptype == RMT_NONE) ? 0 : sunheader.ras_maplength;
+
+
+- /* compute length of the output (xv-format) image */
+- lsize = w * h;
+- if (d == 24 || d == 32) lsize = lsize * 3;
++ /* length of the output (xv-format) image */
++ lsize = npixels;
++ if (d == 24 || d == 32) {
++ lsize *= 3;
++ if (lsize/3 != npixels) {
++ fprintf (stderr, "Sun rasterfile has invalid dimensions (%dx%dx%d)\n",
++ w, h, d);
++ fclose(fp);
++ return 0;
++ }
++ }
+
+
+ linesize = w * d;
++ if (linesize/w != d || linesize + 15 < linesize) {
++ fprintf (stderr, "Sun rasterfile has invalid dimensions (%dx%dx%d)\n",
++ w, h, d);
++ fclose(fp);
++ return 0;
++ }
+ if (linesize % 16) linesize += (16 - (linesize % 16));
+ linesize /= 8;
+
+ if (DEBUG) {
+ fprintf(stderr,"%s: LoadSunRas() - loading a %dx%d pic, %d planes\n",
+ cmd, w, h, d);
+- fprintf (stderr,
++ fprintf (stderr,
+ "type %d, maptype %d, isize %d, csize %d, lsize %d, linesize %d\n",
+ sunheader.ras_type, sunheader.ras_maptype,
+ isize, csize, lsize, linesize);
+@@ -188,13 +221,13 @@
+ }
+
+ switch (d) {
+- case 1: sunRas1to8 (image + w * i, line, w);
++ case 1: sunRas1to8 (image + w * i, line, w);
+ break;
+ case 8: xvbcopy((char *) line, (char *) image + w * i, (size_t) w);
+ break;
+ case 24: xvbcopy((char *) line, (char *) image + w * i * 3, (size_t) w*3);
+ break;
+-
++
+ case 32:
+ {
+ int k;
+@@ -202,7 +235,7 @@
+ ip = line;
+ op = (byte *) (image + w * i * 3);
+ for (k = 0; k<w; k++) {
+- *ip++; /* skip 'alpha' */
++ ip++; /* skip 'alpha' */
+ *op++ = *ip++; /* red */
+ *op++ = *ip++; /* green */
+ *op++ = *ip++; /* blue */
+@@ -210,9 +243,9 @@
+ }
+ }
+ }
+-
++
+ free(line);
+-
++
+ if (DEBUG) fprintf(stderr,"Sun ras: image loaded!\n");
+
+
+@@ -224,7 +257,7 @@
+ else pinfo->type = PIC8;
+
+ pinfo->pic = image;
+- pinfo->w = w;
++ pinfo->w = w;
+ pinfo->h = h;
+ pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
+ pinfo->frmType = F_SUNRAS;
+@@ -285,7 +318,7 @@
+
+ /*****************************/
+ static int sunRasError(fname, st)
+- char *fname, *st;
++ const char *fname, *st;
+ {
+ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
+ return 0;
+@@ -364,10 +397,15 @@
+
+ /* special case: if PIC24 and writing GREYSCALE, write 8-bit file */
+ if (ptype == PIC24 && colorstyle == F_GREYSCALE) {
+- graypic = (byte *) malloc((size_t) w*h);
++ int npixels = w * h;
++ if (w <= 0 || h <= 0 || npixels/w != h) {
++ SetISTR(ISTR_WARNING, "Image is too large (%dx%d)", w, h);
++ return (2);
++ }
++ graypic = (byte *) malloc((size_t) npixels);
+ if (!graypic) FatalError("unable to malloc in WriteSunRas()");
+-
+- for (i=0,sp=pic,dp=graypic; i<w*h; i++,sp+=3,dp++) {
++
++ for (i=0,sp=pic,dp=graypic; i<npixels; i++,sp+=3,dp++) {
+ *dp = MONO(sp[0],sp[1],sp[2]);
+ }
+
+@@ -379,9 +417,18 @@
+ }
+
+
+- if (ptype==PIC24) { d = 24; linesize = w * 3; }
+- else if (colorstyle != F_BWDITHER) { d = 8; linesize = w; }
+- else {
++ if (ptype==PIC24) {
++ d = 24;
++ linesize = w * 3;
++ if (linesize/w != 3) {
++ SetISTR(ISTR_WARNING, "Image is too wide (%d)", w);
++ if (graypic) free(graypic);
++ return (2);
++ }
++ } else if (colorstyle != F_BWDITHER) {
++ d = 8;
++ linesize = w;
++ } else {
+ d = 1;
+ linesize = w;
+ if (linesize % 8) linesize += (8 - linesize % 8);
+@@ -391,6 +438,11 @@
+
+
+ if (linesize % 2) linesize++;
++ if (linesize == 0) {
++ SetISTR(ISTR_WARNING, "Image is too wide (%d)", w);
++ if (graypic) free(graypic);
++ return (2);
++ }
+ line = (byte *) malloc((size_t) linesize);
+ if (!line) {
+ SetISTR(ISTR_WARNING, "Can't allocate memory for save!\n");
+@@ -428,7 +480,7 @@
+ write_sun_long (sunheader.ras_maplength, fp);
+
+ /* write the colormap */
+- if (d == 8)
++ if (d == 8) {
+ if (colorstyle == 1) /* grayscale */
+ for (color=0; color<3; color++)
+ for (i=0; i<numcols; i++)
+@@ -438,6 +490,7 @@
+ fwrite (gmap, sizeof(byte), (size_t) numcols, fp);
+ fwrite (bmap, sizeof(byte), (size_t) numcols, fp);
+ }
++ }
+
+
+ /* write the image */
+diff -ru xv-3.10a/xvtarga.c xv-3.10a-enhancements/xvtarga.c
+--- xv-3.10a/xvtarga.c 1994-12-22 14:34:55.000000000 -0800
++++ xv-3.10a-enhancements/xvtarga.c 2007-05-13 17:51:18.000000000 -0700
+@@ -17,8 +17,8 @@
+ * 0:
+ * 1: colormap type
+ * 2: image type (1=colmap RGB, 2=uncomp RGB, 3=uncomp gray)
+- * 3:
+- * 4:
++ * 3:
++ * 4:
+ * 5: colormap_length, low byte
+ * 6: colormap_length, high byte
+ * 7: bits per cmap entry (8, 24, 32)
+@@ -28,7 +28,7 @@
+ * 14: height, low byte
+ * 15: height, high byte
+ * 16: bits per pixel (8, 24)
+- * 17: flags
++ * 17: flags
+ */
+
+
+@@ -36,7 +36,7 @@
+ #include "xv.h"
+
+ static long filesize;
+-static char *bname;
++static const char *bname;
+
+
+ /*******************************************/
+@@ -48,7 +48,7 @@
+ /* returns '1' on success */
+
+ FILE *fp;
+- int i, row, c, c1, w, h, r, g, b, flags, intlace, topleft, trunc;
++ int i, row, c, c1, w, h, npixels, bufsize, flags, intlace, topleft, trunc;
+ byte *pic24, *pp;
+
+ bname = BaseName(fname);
+@@ -88,7 +88,9 @@
+ c=getc(fp); c1=getc(fp);
+ h = c1*256 + c;
+
+- if (w<1 || h<1) {
++ npixels = w * h;
++ bufsize = 3 * npixels;
++ if (w <= 0 || h <= 0 || npixels/w != h || bufsize/3 != npixels) {
+ fclose(fp);
+ SetISTR(ISTR_WARNING,"%s: error in Targa header (bad image size)", bname);
+ return 0;
+@@ -115,7 +117,7 @@
+ #endif
+
+
+- pic24 = (byte *) calloc((size_t) w*h*3, (size_t) 1);
++ pic24 = (byte *) calloc((size_t) bufsize, (size_t) 1);
+ if (!pic24) FatalError("couldn't malloc 'pic24'");
+
+
+@@ -134,7 +136,7 @@
+ if (i < h / 2) row = 2 * i;
+ else row = 2 * (i - h/2) + 1;
+ }
+-
++
+ else row = i; /* no interlace */
+
+
+@@ -150,7 +152,7 @@
+
+
+ /* swap R,B values (file is in BGR, pic24 should be in RGB) */
+- for (i=0, pp=pic24; i<w*h; i++, pp+=3) {
++ for (i=0, pp=pic24; i<npixels; i++, pp+=3) {
+ c = pp[0]; pp[0] = pp[2]; pp[2] = c;
+ }
+
+@@ -185,7 +187,7 @@
+
+ /* write the header */
+ for (i=0; i<12; i++) putc( (i==2) ? 2 : 0, fp);
+-
++
+ putc(w&0xff, fp);
+ putc((w>>8)&0xff,fp);
+ putc(h&0xff, fp);
+diff -ru xv-3.10a/xvtext.c xv-3.10a-enhancements/xvtext.c
+--- xv-3.10a/xvtext.c 1995-01-13 15:46:28.000000000 -0800
++++ xv-3.10a-enhancements/xvtext.c 2007-05-13 14:25:59.000000000 -0700
+@@ -1,6 +1,6 @@
+ /*
+ * xvtext.c - text file display window routines
+- *
++ *
+ * includes:
+ * void CreateTextWins(geom, cmtgeom);
+ * void OpenTextView(text, textlen, title, freeonclose);
+@@ -19,9 +19,13 @@
+ #include "copyright.h"
+
+ #include "xv.h"
++#ifdef TV_MULTILINGUAL
++#include "xvml.h"
++#endif
+
+-
+-#define BUTTW 80
++#define BUTTW1 80
++#define BUTTW2 60
++#define BUTTW3 110
+ #define BUTTH 24
+
+ #define TOPMARGIN 30 /* from top of window to top of text window */
+@@ -36,19 +40,36 @@
+ #define TV_ASCII 0
+ #define TV_HEX 1
+ #define TV_CLOSE 2
+-#define TV_NBUTTS 3
+
++#define TV_E_NBUTTS 3
++
++#ifdef TV_L10N
++# define TV_RESCAN 3
++# define TV_USASCII 4
++# define TV_JIS 5
++# define TV_EUCJ 6
++# define TV_MSCODE 7
++
++# define TV_J_NBUTTS 8
++#endif
+
+ #define TITLELEN 128
+
++#ifdef TV_MULTILINGUAL
++struct coding_spec {
++ struct coding_system coding_system;
++ char *(*converter)PARM((char *, int, int *));
++};
++#endif
++
+ /* data needed per text window */
+ typedef struct { Window win, textW;
+ int vis, wasvis;
+- char *text; /* text to be displayed */
++ const char *text; /* text to be displayed */
+ int freeonclose; /* free text when closing win */
+ int textlen; /* length of text */
+ char title[TITLELEN]; /* name of file being displayed */
+- char **lines; /* ptr to array of line ptrs */
++ const char **lines; /* ptr to array of line ptrs */
+ int numlines; /* # of lines in text */
+ int hexlines; /* # of lines in HEX mode */
+ int maxwide; /* length of longest line (ascii) */
+@@ -57,16 +78,89 @@
+ int chwide, chhigh; /* size of textW, in chars */
+ int hexmode; /* true if disp Hex, else Ascii */
+ SCRL vscrl, hscrl;
+- BUTT but[TV_NBUTTS], nopBut;
++#ifdef TV_L10N
++ int code; /* current character code */
++ BUTT but[TV_J_NBUTTS], nopBut;
++#else
++ BUTT but[TV_E_NBUTTS], nopBut;
++#endif
++#ifdef TV_MULTILINGUAL
++/* int codeset; */
++ struct coding_spec ccs; /* current coding_spec */
++ BUTT csbut;
++ char *cv_text;
++ int cv_len;
++ struct context *ctx;
++ struct ml_text *txt;
++ struct csinfo_t *cs;
++#endif
+ } TVINFO;
+
+
+ static TVINFO tinfo[MAXTVWIN];
+ static int hasBeenSized = 0;
+ static int haveWindows = 0;
++static int nbutts; /* # of buttons */
+ static int mfwide, mfhigh, mfascent; /* size of chars in mono font */
+ static int *event_retP, *event_doneP; /* used in tvChkEvent() */
+-
++#ifdef TV_MULTILINGUAL
++# define TV_PLAIN 0
++# define TV_ISO_8859_1 1
++# define TV_ISO_2022_JP 2
++# define TV_EUC_JAPAN 3
++# define TV_ISO_2022_INT_1 4
++# define TV_ISO_2022_KR 5
++# define TV_EUC_KOREA 6
++# define TV_ISO_2022_SS2_8 7
++# define TV_ISO_2022_SS2_7 8
++# define TV_SHIFT_JIS 9
++# define TV_NCSS 10
++static char *codeSetNames[TV_NCSS] = {
++ "plain",
++ "iso-8859-1",
++ "iso-2022-jp",
++ "euc-japan",
++ "iso-2022-int-1",
++ "iso-2022-kr",
++ "euc-korea",
++ "iso-2022-ss2-8",
++ "iso-2022-ss2-7",
++ "Shift JIS",
++};
++static struct coding_spec coding_spec[TV_NCSS] = {
++ /* --- G0 --- --- G1 --- --- G2 --- --- G3 --- GL GR EOL SF LS */
++ /* plain */
++ {{{{ 1,94,'B'}, { 1,94,'B'}, { 1,94,'B'}, { 1,94,'B'}}, 0, 0, 0, 1, 1},
++ NULL},
++ /* iso-8859-1 */
++ {{{{ 1,94,'B'}, { 1,96,'A'}, {-1,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 0, 0},
++ NULL},
++ /* iso-2022-jp */
++ {{{{ 1,94,'B'}, {-1,94,'B'}, {-1,94,'B'}, {-1,94,'B'}}, 0, 0, 0, 1, 0},
++ NULL},
++ /* euc-japan */
++ {{{{ 1,94,'B'}, { 2,94,'B'}, { 1,94,'J'}, { 2,94,'D'}}, 0, 1, 0, 1, 0},
++ NULL},
++ /* iso-2022-int-1 */
++ {{{{ 1,94,'B'}, { 2,94,'C'}, {-1,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 1, 1},
++ NULL},
++ /* iso-2022-kr */
++ {{{{ 1,94,'B'}, { 2,94,'C'}, {-1,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 0, 1},
++ NULL},
++ /* euc-korea */
++ {{{{ 1,94,'B'}, { 2,94,'C'}, {-1,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 0, 0},
++ NULL},
++ /* iso-2022-ss2-8 */
++ {{{{ 1,94,'B'}, {-1,94,'C'}, { 0,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 0, 0},
++ NULL},
++ /* iso-2022-ss2-7 */
++ {{{{ 1,94,'B'}, {-1,94,'C'}, { 0,94,'B'}, {-1,94,'B'}}, 0, 1, 0, 1, 0},
++ NULL},
++ /* shift jis */
++ {{{{ 1,94,'B'}, { 2,94,'B'}, { 1,94,'J'}, { 2,94,'D'}}, 0, 1, 1, 1, 0},
++ sjis_to_jis},
++};
++#endif
+
+ static void closeText PARM((TVINFO *));
+ static int tvChkEvent PARM((TVINFO *, XEvent *));
+@@ -82,7 +176,15 @@
+ static void textKey PARM((TVINFO *, int));
+ static void doHexAsciiCmd PARM((TVINFO *, int));
+ static void computeText PARM((TVINFO *));
+-
++#ifdef TV_L10N
++static int selectCodeset PARM((TVINFO *));
++#endif
++#ifdef TV_MULTILINGUAL
++static void setCodingSpec PARM((TVINFO *, struct coding_spec *));
++static void createCsWins PARM((char *));
++static void openCsWin PARM((TVINFO *));
++static void closeCsWin PARM((TVINFO *));
++#endif
+
+ /* HEXMODE output looks like this:
+ 0x00000000: 00 11 22 33 44 55 66 77 - 88 99 aa bb cc dd ee ff 0123456789abcdef
+@@ -92,19 +194,57 @@
+
+ /***************************************************************/
+ void CreateTextWins(geom, cmtgeom)
+- char *geom, *cmtgeom;
++ const char *geom, *cmtgeom;
+ {
+ int i, defwide, defhigh, cmthigh;
+ XSizeHints hints;
+ XSetWindowAttributes xswa;
+ TVINFO *tv;
+- int gx,gy,gw,gh,gset,gx1,gy1;
+-
++#ifdef TV_MULTILINGUAL
++ int default_codeset;
++#endif
++
++#ifdef TV_L10N
++ if (!xlocale) {
++#endif
++ mfwide = monofinfo->max_bounds.width;
++ mfhigh = monofinfo->ascent + monofinfo->descent;
++ mfascent = monofinfo->ascent;
++
++ nbutts = TV_E_NBUTTS; /* # of buttons */
++#ifdef TV_L10N
++ }
++ else {
++ mfwide = monofsetinfo->max_logical_extent.width / 2; /* shit! */
++ mfhigh = monofsetinfo->max_logical_extent.height + 1;
++ mfascent = mfhigh;
+
+- mfwide = monofinfo->max_bounds.width;
+- mfhigh = monofinfo->ascent + monofinfo->descent;
+- mfascent = monofinfo->ascent;
++ nbutts = TV_J_NBUTTS; /* # of buttons */
++ }
++#endif
+
++#ifdef TV_MULTILINGUAL
++ {
++ char *dc = XGetDefault(theDisp, "xv", "codeSet");
++ if (dc == NULL)
++ default_codeset = TV_DEFAULT_CODESET;
++ else {
++ for (i = 0; i < TV_NCSS; i++) {
++ if (strcmp(dc, codeSetNames[i]) == 0)
++ break;
++ }
++ if (i >= TV_NCSS) {
++ if (strcmp(dc, "iso-2022") == 0)
++ default_codeset = TV_PLAIN;
++ else {
++ SetISTR(ISTR_WARNING, "%s: unknown codeset.", dc);
++ default_codeset = TV_PLAIN;
++ }
++ } else
++ default_codeset = i;
++ }
++ }
++#endif
+ /* compute default size of textview windows. should be big enough to
+ hold an 80x24 text window */
+
+@@ -119,11 +259,19 @@
+ for (i=0; i<MAXTVWIN; i++) {
+ tv = &tinfo[i];
+
++#ifdef TV_MULTILINGUAL
++ tv->ctx = ml_create_context(ScreenOfDisplay(theDisp, theScreen));
++ tv->txt = NULL;
++ tv->cv_text = NULL;
++ tv->cv_len = 0;
++ ml_set_charsets(tv->ctx, &coding_spec[TV_PLAIN].coding_system);
++#endif
++
+ tv->win = CreateWindow((i<CMTWIN) ? "xv text viewer" : "xv image comments",
+- "XVtextview",
+- (i<CMTWIN) ? geom : cmtgeom,
+- defwide,
+- (i<CMTWIN) ? defhigh : cmthigh,
++ "XVtextview",
++ (i<CMTWIN) ? geom : cmtgeom,
++ defwide,
++ (i<CMTWIN) ? defhigh : cmthigh,
+ infofg, infobg, 1);
+ if (!tv->win) FatalError("can't create textview window!");
+
+@@ -135,17 +283,17 @@
+
+ /* note: everything is sized and positioned in resizeText() */
+
+- tv->textW = XCreateSimpleWindow(theDisp, tv->win, 1,1, 100,100,
++ tv->textW = XCreateSimpleWindow(theDisp, tv->win, 1,1, 100,100,
+ 1,infofg,infobg);
+ if (!tv->textW) FatalError("can't create textview text window!");
+
+- SCCreate(&(tv->vscrl), tv->win, 0,0, 1,100, 0,0,0,0,
++ SCCreate(&(tv->vscrl), tv->win, 0,0, 1,100, 0,0,0,0,
+ infofg, infobg, hicol, locol, drawTextW);
+
+- SCCreate(&(tv->hscrl), tv->win, 0,0, 0,100, 0,0,0,0,
++ SCCreate(&(tv->hscrl), tv->win, 0,0, 0,100, 0,0,0,0,
+ infofg, infobg, hicol, locol, drawTextW);
+
+- if (XGetNormalHints(theDisp, tv->win, &hints))
++ if (XGetNormalHints(theDisp, tv->win, &hints))
+ hints.flags |= PMinSize;
+ else
+ hints.flags = PMinSize;
+@@ -162,74 +310,115 @@
+
+ XSelectInput(theDisp, tv->textW, ExposureMask | ButtonPressMask);
+
+-
+- BTCreate(&(tv->but[TV_ASCII]), tv->win, 0,0,BUTTW,BUTTH,
++
++ BTCreate(&(tv->but[TV_ASCII]), tv->win, 0,0,BUTTW1,BUTTH,
+ "Ascii",infofg,infobg,hicol,locol);
+- BTCreate(&(tv->but[TV_HEX]), tv->win, 0,0,BUTTW,BUTTH,
++ BTCreate(&(tv->but[TV_HEX]), tv->win, 0,0,BUTTW1,BUTTH,
+ "Hex",infofg,infobg,hicol,locol);
+- BTCreate(&(tv->but[TV_CLOSE]), tv->win, 0,0,BUTTW,BUTTH,
++ BTCreate(&(tv->but[TV_CLOSE]), tv->win, 0,0,BUTTW1,BUTTH,
+ "Close",infofg,infobg,hicol,locol);
+
++#ifdef TV_L10N
++ if (xlocale) {
++ BTCreate(&(tv->but[TV_RESCAN]), tv->win, 0,0,BUTTW2,BUTTH,
++ "RESCAN",infofg,infobg,hicol,locol);
++ BTCreate(&(tv->but[TV_USASCII]), tv->win, 0,0,BUTTW2,BUTTH,
++ "ASCII",infofg,infobg,hicol,locol);
++ BTCreate(&(tv->but[TV_JIS]), tv->win, 0,0,BUTTW2,BUTTH,
++ "JIS",infofg,infobg,hicol,locol);
++ BTCreate(&(tv->but[TV_EUCJ]), tv->win, 0,0,BUTTW2,BUTTH,
++ "EUC-j",infofg,infobg,hicol,locol);
++ BTCreate(&(tv->but[TV_MSCODE]), tv->win, 0,0,BUTTW2,BUTTH,
++ "MS Kanji",infofg,infobg,hicol,locol);
++ }
++#endif
++
+ BTCreate(&(tv->nopBut), tv->win, 0,0, (u_int) tv->vscrl.tsize+1,
+ (u_int) tv->vscrl.tsize+1, "", infofg, infobg, hicol, locol);
+ tv->nopBut.active = 0;
+
+ XMapSubwindows(theDisp, tv->win);
+
++#ifdef TV_MULTILINGUAL
++ BTCreate(&tv->csbut, tv->win, 0, 0, BUTTW1, BUTTH, "Code Sets",
++ infofg, infobg, hicol, locol);
++#endif
++
+ tv->text = (char *) NULL;
+ tv->textlen = 0;
+ tv->title[0] = '\0';
++#ifdef TV_L10N
++ tv->code = (xlocale ? LOCALE_DEFAULT : 0);
++#endif
++#ifdef TV_MULTILINGUAL
++ tv->ccs = coding_spec[default_codeset];
++#endif
+ }
+-
++#ifdef TV_MULTILINGUAL
++ get_monofont_size(&mfwide, &mfhigh);
++ /* recalculate sizes. */
++ defwide = 80 * mfwide + 2*LRMARGINS + 8 + 20; /* -ish */
++ defhigh = 24 * mfhigh + TOPMARGIN + BOTMARGIN + 8 + 20; /* ish */
++ cmthigh = 6 * mfhigh + TOPMARGIN + BOTMARGIN + 8 + 20; /* ish */
++#endif
+
+ for (i=0; i<MAXTVWIN; i++) {
+ resizeText(&tinfo[i], defwide, (i<CMTWIN) ? defhigh : cmthigh);
+
+- XSelectInput(theDisp, tinfo[i].win, ExposureMask | ButtonPressMask |
++ XSelectInput(theDisp, tinfo[i].win, ExposureMask | ButtonPressMask |
+ KeyPressMask | StructureNotifyMask);
+ }
+
+ hasBeenSized = 1; /* we can now start looking at textview events */
+
++#ifdef TV_MULTILINGUAL
++ createCsWins("+100+100");
++#endif
+ }
+
+
+ /***************************************************************/
+-void TextView(fname)
+- char *fname;
++int TextView(fname)
++ const char *fname;
+ {
+ /* given a filename, attempts to read in the file and open a textview win */
+
+- int i;
++ int filetype;
+ long textlen;
+ char *text, buf[512], title[128], rfname[MAXPATHLEN+1];
+ char *basefname[128]; /* just current fname, no path */
+ FILE *fp;
++ char filename[MAXPATHLEN+1];
++
++ strncpy(filename, fname, sizeof(filename) - 1);
++#ifdef AUTO_EXPAND
++ Mkvdir(filename);
++ Dirtovd(filename);
++#endif
+
+ basefname[0] = '\0';
+- strcpy(rfname, fname);
++ strncpy(rfname, filename, sizeof(rfname) - 1);
+
+ /* see if this file is compressed. if it is, uncompress it, and view
+ the uncompressed version */
+
+- if (ReadFileType(fname) == RFT_COMPRESS) {
++ filetype = ReadFileType(filename);
++ if ((filetype == RFT_COMPRESS) || (filetype == RFT_BZIP2)) {
+ #ifndef VMS
+- if (!UncompressFile(fname, rfname)) return; /* failed to uncompress */
++ if (!UncompressFile(filename, rfname, filetype)) return FALSE;
+ #else
+ /* chop off trailing '.Z' from friendly displayed basefname, if any */
+- strcpy (basefname, fname);
++ strncpy (basefname, filename, 128 - 1);
+ *rindex (basefname, '.') = '\0';
+- if (!UncompressFile(basefname, rfname)) return;/* failed to uncompress */
++ if (!UncompressFile(basefname, rfname, filetype)) return FALSE;
+ #endif
+ }
+-
+-
+
+ fp = fopen(rfname, "r");
+ if (!fp) {
+ sprintf(buf,"Couldn't open '%s': %s", rfname, ERRSTR(errno));
+ ErrPopUp(buf,"\nOh well");
+- return;
++ return FALSE;
+ }
+
+
+@@ -241,16 +430,16 @@
+ sprintf(buf, "File '%s' contains no data. (Zero length file.)", rfname);
+ ErrPopUp(buf, "\nOk");
+ fclose(fp);
+- return;
++ return FALSE;
+ }
+
+- text = (char *) malloc((size_t) textlen);
++ text = (char *) malloc((size_t) textlen + 1);
+ if (!text) {
+- sprintf(buf, "Couldn't malloc %ld bytes to read file '%s'",
++ sprintf(buf, "Couldn't malloc %ld bytes to read file '%s'",
+ textlen, rfname);
+ ErrPopUp(buf, "\nSo what!");
+ fclose(fp);
+- return;
++ return FALSE;
+ }
+
+ if (fread(text, (size_t) 1, (size_t) textlen, fp) != textlen) {
+@@ -258,6 +447,9 @@
+ rfname);
+ ErrPopUp(buf, "\nHmm...");
+ }
++#ifdef TV_MULTILINGUAL
++ text[textlen] = '\0';
++#endif
+
+ fclose(fp);
+
+@@ -265,27 +457,28 @@
+ OpenTextView(text, (int) textlen, title, 1);
+
+ /* note: text gets freed when window gets closed */
++ return TRUE;
+ }
+
+-
+-
++
++
+ /***************************************************************/
+ void OpenTextView(text, len, title, freeonclose)
+- char *text, *title;
+- int len, freeonclose;
++ const char *text, *title;
++ int len, freeonclose;
+ {
+ /* opens up a textview window */
+
+- int i, oldone;
+ TVINFO *tv;
+
+ tv = &tinfo[0];
+
+ /* kill off old text info */
+- if (tv->freeonclose && tv->text) free(tv->text);
++ if (tv->freeonclose && tv->text) free((void *)tv->text);
+ if (tv->lines) free(tv->lines);
+- tv->text = (char *) NULL;
+- tv->lines = (char **) NULL;
++
++ tv->text = (const char *) NULL;
++ tv->lines = (const char **) NULL;
+ tv->numlines = tv->textlen = tv->hexmode = 0;
+
+
+@@ -293,6 +486,7 @@
+ tv->textlen = len;
+ tv->freeonclose = freeonclose;
+ strncpy(tv->title, title, (size_t) TITLELEN-1);
++ tv->title[TITLELEN-1] = '\0';
+
+ computeText(tv); /* compute # lines and linestarts array */
+
+@@ -316,7 +510,6 @@
+ {
+ /* opens up the reserved 'comment' textview window */
+
+- int i;
+ TVINFO *tv;
+
+ tv = &tinfo[CMTWIN];
+@@ -351,9 +544,9 @@
+ tv->textlen = (tv->text) ? strlen(tv->text) : 0;
+ tv->freeonclose = 0;
+
+- if (strlen(fullfname))
++ if (strlen(fullfname))
+ sprintf(tv->title, "File: '%s'", BaseName(fullfname));
+- else
++ else
+ sprintf(tv->title, "<no file loaded>");
+
+ computeText(tv); /* compute # lines and linestarts array */
+@@ -501,12 +694,16 @@
+ if (i==MAXTEXTWIN) anyTextUp = 0;
+
+ /* free all info for this textview window */
+- if (tv->freeonclose && tv->text) free(tv->text);
++ if (tv->freeonclose && tv->text) free((void *)tv->text);
+ if (tv->lines) free(tv->lines);
+
+- tv->text = (char *) NULL;
+- tv->lines = (char **) NULL;
++ tv->text = (const char *) NULL;
++ tv->lines = (const char **) NULL;
+ tv->numlines = tv->textlen = tv->hexmode = 0;
++
++#ifdef TV_MULTILINGUAL
++ closeCsWin(tv);
++#endif
+ }
+
+
+@@ -518,7 +715,7 @@
+ /* checks event to see if it's a text-window related thing. If it
+ is, it eats the event and returns '1', otherwise '0'. */
+
+- int i, rv;
++ int rv;
+
+ rv = 1;
+
+@@ -560,7 +757,7 @@
+ count++;
+ } while (XCheckWindowEvent(theDisp, evt.xexpose.window,
+ ExposureMask, &evt));
+-
++
+ XClipBox(reg, &rect); /* bounding box of region */
+ XSetRegion(theDisp, theGC, reg);
+
+@@ -570,7 +767,7 @@
+ fprintf(stderr,"grouped %d expose events into %d,%d %dx%d rect\n",
+ count, rect.x, rect.y, rect.width, rect.height);
+ }
+-
++
+ if (e->window == tv->win) drawTextView(tv);
+ else if (e->window == tv->textW) drawTextW(0, &(tv->vscrl));
+
+@@ -584,7 +781,7 @@
+
+ else if (xev->type == ButtonPress) {
+ XButtonEvent *e = (XButtonEvent *) xev;
+- int i,x,y;
++ int x,y;
+ x = e->x; y = e->y;
+
+ if (e->button == Button1) {
+@@ -594,6 +791,40 @@
+ else if (e->window == tv->textW) { }
+ else rv = 0;
+ }
++ else if (e->button == Button4) { /* note min vs. max, + vs. - */
++ /* scroll regardless of where we are in the text window */
++ if (e->window == tv->win ||
++ e->window == tv->vscrl.win ||
++ e->window == tv->hscrl.win ||
++ e->window == tv->textW)
++ {
++ SCRL *sp=&(tv->vscrl);
++ int halfpage=sp->page/2;
++
++ if (sp->val > sp->min+halfpage)
++ SCSetVal(sp,sp->val-halfpage);
++ else
++ SCSetVal(sp,sp->min);
++ }
++ else rv = 0;
++ }
++ else if (e->button == Button5) { /* note max vs. min, - vs. + */
++ /* scroll regardless of where we are in the text window */
++ if (e->window == tv->win ||
++ e->window == tv->vscrl.win ||
++ e->window == tv->hscrl.win ||
++ e->window == tv->textW)
++ {
++ SCRL *sp=&(tv->vscrl);
++ int halfpage=sp->page/2;
++
++ if (sp->val < sp->max-halfpage)
++ SCSetVal(sp,sp->val+halfpage);
++ else
++ SCSetVal(sp,sp->max);
++ }
++ else rv = 0;
++ }
+ else rv = 0;
+ }
+
+@@ -615,7 +846,7 @@
+
+ if (tv->wide != e->width || tv->high != e->height) {
+ if (DEBUG) fprintf(stderr,"Forcing a redraw! (from configure)\n");
+- XClearArea(theDisp, tv->win, 0, 0,
++ XClearArea(theDisp, tv->win, 0, 0,
+ (u_int) e->width, (u_int) e->height, True);
+ resizeText(tv, e->width, e->height);
+ }
+@@ -633,10 +864,12 @@
+ TVINFO *tv;
+ int w,h;
+ {
+- int i, maxw, maxh, hmax, hpage, vmax, vpage;
++ int i, maxw, maxh;
+ XSizeHints hints;
+
++#ifndef TV_MULTILINGUAL
+ if (tv->wide == w && tv->high == h) return; /* no change in size */
++#endif
+
+ if (XGetNormalHints(theDisp, tv->win, &hints)) {
+ hints.width = w;
+@@ -657,13 +890,26 @@
+ tv->twWide = tv->chwide * mfwide + 6;
+ tv->twHigh = tv->chhigh * mfhigh + 6;
+
+- XMoveResizeWindow(theDisp, tv->textW, LRMARGINS, TOPMARGIN,
++ XMoveResizeWindow(theDisp, tv->textW, LRMARGINS, TOPMARGIN,
+ (u_int) tv->twWide, (u_int) tv->twHigh);
+
+- for (i=0; i<TV_NBUTTS; i++) {
+- tv->but[i].x = tv->wide - (TV_NBUTTS-i) * (BUTTW+5);
++ for (i=0; i<TV_E_NBUTTS; i++) {
++ tv->but[i].x = tv->wide - (TV_E_NBUTTS-i) * (BUTTW1+5);
+ tv->but[i].y = tv->high - BUTTH - 5;
+ }
++#ifdef TV_MULTILINGUAL
++ tv->csbut.x = 5;
++ tv->csbut.y = tv->high - BUTTH - 5;
++#endif
++
++#ifdef TV_L10N
++ if (xlocale) {
++ for (; i<TV_J_NBUTTS; i++) {
++ tv->but[i].x = 5 + (i-TV_E_NBUTTS) * (BUTTW2+5);
++ tv->but[i].y = tv->high - BUTTH - 5;
++ }
++ }
++#endif
+
+ computeScrlVals(tv);
+
+@@ -692,8 +938,8 @@
+ hpag = tv->chwide / 4;
+ vpag = tv->chhigh - 1;
+
+-
+- SCChange(&tv->vscrl, LRMARGINS + tv->twWide+1, TOPMARGIN,
++
++ SCChange(&tv->vscrl, LRMARGINS + tv->twWide+1, TOPMARGIN,
+ 1, tv->twHigh, 0, vmax, tv->vscrl.val, vpag);
+
+ SCChange(&tv->hscrl, LRMARGINS, TOPMARGIN + tv->twHigh + 1,
+@@ -714,6 +960,29 @@
+ case TV_CLOSE: if (tv == &tinfo[CMTWIN]) CloseCommentText();
+ else closeText(tv);
+ break;
++
++#ifdef TV_L10N
++ case TV_RESCAN:
++ tv->code = selectCodeset(tv);
++ drawTextW(0, &tv->vscrl);
++ break;
++ case TV_USASCII:
++ tv->code = LOCALE_USASCII;
++ drawTextW(0, &tv->vscrl);
++ break;
++ case TV_JIS:
++ tv->code = LOCALE_JIS;
++ drawTextW(0, &tv->vscrl);
++ break;
++ case TV_EUCJ:
++ tv->code = LOCALE_EUCJ;
++ drawTextW(0, &tv->vscrl);
++ break;
++ case TV_MSCODE:
++ tv->code = LOCALE_MSCODE;
++ drawTextW(0, &tv->vscrl);
++ break;
++#endif /* TV_L10N */
+ }
+ }
+
+@@ -731,11 +1000,11 @@
+ y = 5;
+
+ XSetForeground(theDisp, theGC, infobg);
+- XFillRectangle(theDisp, tv->win, theGC, 5+1, y+1,
++ XFillRectangle(theDisp, tv->win, theGC, 5+1, y+1,
+ (u_int) StringWidth(tv->title)+6, (u_int) CHIGH+4);
+
+ XSetForeground(theDisp, theGC, infofg);
+- XDrawRectangle(theDisp, tv->win, theGC, 5, y,
++ XDrawRectangle(theDisp, tv->win, theGC, 5, y,
+ (u_int) StringWidth(tv->title)+7, (u_int) CHIGH+5);
+
+ Draw3dRect(tv->win, 5+1, y+1, (u_int) StringWidth(tv->title)+5,
+@@ -748,8 +1017,10 @@
+ drawNumLines(tv);
+
+ /* draw the buttons */
+- for (i=0; i<TV_NBUTTS; i++) BTRedraw(&(tv->but[i]));
+-
++ for (i=0; i<nbutts; i++) BTRedraw(&(tv->but[i]));
++#ifdef TV_MULTILINGUAL
++ BTRedraw(&tv->csbut);
++#endif
+ BTRedraw(&tv->nopBut);
+ }
+
+@@ -763,15 +1034,15 @@
+
+ if (tv->hexmode) nl = tv->hexlines;
+ else {
+- if (tv->numlines>0 &&
+- tv->lines[tv->numlines-1] - tv->lines[tv->numlines-2] == 1)
++ if (tv->numlines>0 &&
++ tv->lines[tv->numlines-1] - tv->lines[tv->numlines-2] == 1)
+ nl = tv->numlines - 2; /* line after last \n has zero length */
+ else nl = tv->numlines - 1;
+ }
+ if (nl<0) nl = 0;
+
+- sprintf(tmpstr, "%d byte%s, %d line%s",
+- tv->textlen, (tv->textlen!=1) ? "s" : "",
++ sprintf(tmpstr, "%d byte%s, %d line%s",
++ tv->textlen, (tv->textlen!=1) ? "s" : "",
+ nl, (nl!=1) ? "s" : "");
+
+ w = StringWidth(tmpstr) + 7; /* width of frame */
+@@ -779,13 +1050,13 @@
+ y = 6;
+
+ XSetForeground(theDisp, theGC, infobg);
+- XFillRectangle(theDisp, tv->win, theGC, (x-w)+1, y+1,
++ XFillRectangle(theDisp, tv->win, theGC, (x-w)+1, y+1,
+ (u_int) (w-1), (u_int) CHIGH+4);
+
+ XSetForeground(theDisp, theGC, infofg);
+ XDrawRectangle(theDisp, tv->win, theGC, x-w, y, (u_int) w, (u_int) CHIGH+5);
+
+- Draw3dRect(tv->win, (x-w)+1, y+1, (u_int) (w-2), (u_int) CHIGH+3,
++ Draw3dRect(tv->win, (x-w)+1, y+1, (u_int) (w-2), (u_int) CHIGH+3,
+ R3D_IN,2,hicol,locol,infobg);
+
+ XSetForeground(theDisp, theGC, infofg);
+@@ -800,10 +1071,10 @@
+ int x, y, w, nl;
+ char tmpstr[64];
+
+- nl = (tv->hexmode) ? tv->hexlines : tv->numlines-1;
++ nl = (tv->hexmode) ? tv->hexlines : tv->numlines-1;
+
+- sprintf(tmpstr, "%d byte%s, %d line%s",
+- tv->textlen, (tv->textlen>1) ? "s" : "",
++ sprintf(tmpstr, "%d byte%s, %d line%s",
++ tv->textlen, (tv->textlen>1) ? "s" : "",
+ nl, (nl>1) ? "s" : "");
+
+ w = StringWidth(tmpstr) + 7; /* width of frame */
+@@ -819,20 +1090,28 @@
+ int delta;
+ SCRL *sptr;
+ {
+- int i, j, lnum, hpos, cpos, extrach, lwide;
++ int i, j, lnum, hpos, vpos, cpos, lwide;
++#ifndef TV_MULTILINGUAL
++ int extrach;
++#endif
++#ifdef TV_L10N
++ int desig_stat; /* for ISO 2022-JP */
++ /* 0: ASCII, 1: JIS X 0208, 2: GL is JIS X 0201 kana */
++#endif
+ TVINFO *tv;
+ char linestr[512];
+- u_char *sp, *ep, *lp;
++ byte *lp;
++ const byte *sp, *ep;
+
+ /* figure out TVINFO pointer from SCRL pointer */
+- for (i=0; i<MAXTVWIN && sptr != &tinfo[i].vscrl
++ for (i=0; i<MAXTVWIN && sptr != &tinfo[i].vscrl
+ && sptr != &tinfo[i].hscrl; i++);
+ if (i==MAXTVWIN) return; /* didn't find one */
+
+ tv = &tinfo[i];
+
+ /* make sure we've been sized. Necessary, as creating/modifying the
+- scrollbar calls this routine directly, rather than through
++ scrollbar calls this routine directly, rather than through
+ TextCheckEvent() */
+
+ if (!hasBeenSized) return;
+@@ -842,14 +1121,40 @@
+ XSetFont(theDisp, theGC, monofont);
+
+ hpos = tv->hscrl.val;
++ vpos = tv->vscrl.val;
+ lwide = (tv->chwide < 500) ? tv->chwide : 500;
+
+ /* draw text */
+ if (!tv->hexmode) { /* ASCII mode */
++#ifdef TV_MULTILINGUAL
++ XClearArea(theDisp, tv->textW, 0, 0,
++ (u_int) tv->twWide, (u_int) tv->twHigh, False);
++ if(tv->txt == NULL)
++ return;
++ else {
++ int i;
++ int y;
++ struct ml_text *tp = tv->txt;
++ struct ml_line *lp2;
++
++ XSetFunction(theDisp, theGC, GXcopy);
++ XSetClipMask(theDisp, theGC, None);
++ y = 3;
++ for (lp2 = &tp->lines[vpos], i = tp->nlines - vpos;
++ i > 0; lp2++, i--) {
++ XDrawText16(theDisp, tv->textW, theGC,
++ -mfwide * hpos + 3, y + lp2->ascent,
++ lp2->items, lp2->nitems);
++ y += lp2->ascent + lp2->descent;
++ if (y > tv->twHigh)
++ break;
++ }
++ }
++#else
+ for (i=0; i<tv->chhigh; i++) { /* draw each line */
+- lnum = i + tv->vscrl.val;
++ lnum = i + vpos;
+ if (lnum < tv->numlines-1) {
+-
++
+ /* find start of displayed portion of line. This is *wildly*
+ complicated by the ctrl-character and tab expansion... */
+
+@@ -868,7 +1173,13 @@
+ cpos--; sp++;
+ }
+ else if (*sp < 32) extrach = 1;
++
++#ifdef TV_L10N
++ else if (!tv->code && *sp > 127) extrach = 3;
++#else
+ else if (*sp > 127) extrach = 3;
++#endif
++
+ else sp++;
+ }
+ else {
+@@ -884,6 +1195,10 @@
+
+ /* build up the linestr buffer, which is the current line, padded
+ with blanks to a width of exactly tv->chwide chars */
++#ifdef TV_L10N
++ desig_stat = 0; /* for ISO 2022-JP */
++ /* 0: ASCII, 1: JIS X 0208, 2: GL is JIS X 0201 kana */
++#endif
+ for (cpos=0, lp=(byte *) linestr; cpos<lwide; cpos++, lp++) {
+ if (sp>=ep) *lp = ' ';
+ else {
+@@ -897,13 +1212,117 @@
+ cpos--; lp--; sp++;
+ }
+
++#ifdef TV_L10N
++ else if (*sp < 32 && !(tv->code == LOCALE_JIS && *sp == 0x1b)) {
++#else
+ else if (*sp < 32) {
++#endif
+ if (!extrach) extrach = 2;
+ if (extrach == 2) *lp = '^';
+ else if (extrach == 1) *lp = *sp + 64;
+ }
+-
++
++#ifdef TV_L10N
++ /* convert to EUC-Japan */
++ else if (tv->code == LOCALE_JIS) {
++ if (*sp == 0x1b) { /* ESC */
++ if (*(sp+1) == '$') {
++ if (*(sp+2) == 'B' || *(sp+2) == 'A' || *(sp+2) == '@') {
++ /* ESC $ B, ESC $ A, ESC $ @ */
++ desig_stat = 1;
++ sp += 3; cpos--; lp--;
++ }
++ else if (*(sp+2) == '(' && *(sp+3) == 'B') {
++ /* ESC $ ( B */
++ desig_stat = 1;
++ sp += 4; cpos--; lp--;
++ }
++ }
++ else if (*(sp+1) == '(') {
++ if (*(sp+2) == 'B' || *(sp+2) == 'J' || *(sp+2) == 'H') {
++ /* ESC ( B, ESC ( J, ESC ( H */
++ desig_stat = 0;
++ sp += 3; cpos--; lp--;
++ }
++ else if (*(sp+2) == 'I') {
++ /* ESC ( I */
++ desig_stat = 2;
++ sp += 3; cpos--; lp--;
++ }
++ }
++ else if (*(sp+1) == ')' && *(sp+2) == 'I') {
++ /* ESC ) I */
++ desig_stat = 2;
++ sp += 3; cpos--; lp--;
++ }
++ else { /* error */
++ *lp = ' '; sp++;
++ }
++ }
++
++ else {
++ switch (desig_stat) {
++ case 0: /* ASCII */
++ *lp = *sp++;
++ break;
++ case 1: /* JIS X 0208 */
++ *lp++ = *sp++ | 0x80;
++ *lp = *sp++ | 0x80;
++ cpos++;
++ break;
++ case 2: /* JIS X 0201 kana */
++#if defined(__osf__) && !defined(X_LOCALE)
++ *lp = '='; sp++;
++#else
++ *lp++ = 0x8e; /* ^N | 0x80 */
++ *lp = *sp++ | 0x80;
++#endif
++ break;
++ default: /* error */
++ *lp = *sp++;
++ break;
++ }
++ }
++ }
++
++ else if (tv->code == LOCALE_MSCODE) {
++ if ((*sp >= 0x81 && *sp <= 0x9f)
++ || (*sp >= 0xe0 && *sp <= 0xef)) {
++ static u_char c1, c2;
++
++/*fprintf(stderr, "(%x,%x)->", *sp, *(sp+1));*/
++ c1 = ((*sp - ((*sp>=0xe0) ? 0xb0 : 0x70)) << 1)
++ - ((*(sp+1)<=0x9e) ? 1 : 0);
++ c2 = *(sp+1);
++ if (c2 >= 0x9f) c2 -= 0x7e; /* 0x9F - 0xFC */
++ else if (c2 >= 0x80) c2 -= 0x20; /* 0x80 - 0x9E */
++ else c2 -= 0x1f; /* 0x40 - 0x7E */
++
++ *lp++ = c1 | 0x80;
++ *lp = c2 | 0x80;
++ sp += 2;
++/*fprintf(stderr, "(%x %x) ", c1 | 0x80, c2 | 0x80);*/
++ cpos++;
++ }
++
++ else if (*sp >= 0xa1 && *sp <= 0xdf) { /* JIS X 0201 kana */
++#if defined(__osf__) && !defined(X_LOCALE)
++ *lp = '='; sp++;
++#else
++ *lp++ = 0x8e; /* ^N | 0x80 */
++ *lp = *sp++;
++#endif
++ }
++
++ else *lp = *sp++;
++ }
++#endif /* TV_L10N */
++
++#ifdef TV_L10N
++ else if (!tv->code && *sp > 127) {
++#else
+ else if (*sp > 127) {
++#endif
+ if (!extrach) extrach = 4;
+ if (extrach == 4) *lp = '\\';
+ else if (extrach == 3) *lp = ((u_char)(*sp & 0700) >> 6) + '0';
+@@ -919,6 +1338,9 @@
+ }
+ }
+ }
++#ifdef TV_L10N
++ *lp = '\0'; /* terminate linestr */
++#endif
+ }
+
+ else { /* below bottom of file. Just build a blank str */
+@@ -926,24 +1348,31 @@
+ }
+
+ /* draw the line */
+- XDrawImageString(theDisp, tv->textW, theGC,
+- 3, i*mfhigh + 3 + mfascent, linestr, lwide);
++#ifdef TV_L10N
++ if (xlocale)
++ XmbDrawImageString(theDisp, tv->textW, monofset, theGC,
++ 3, i*mfhigh + 1 + mfascent, linestr, strlen(linestr));
++ else
++#endif
++ XDrawImageString(theDisp, tv->textW, theGC,
++ 3, i*mfhigh + 3 + mfascent, linestr, lwide);
+ } /* for i ... */
++#endif /* TV_MULTILINGUAL */
+ } /* if hexmode */
+
+
+ else { /* HEX MODE */
+ for (i=0; i<tv->chhigh; i++) { /* draw each line */
+- lnum = i + tv->vscrl.val;
++ lnum = i + vpos;
+ if (lnum < tv->hexlines) {
+-
++
+ char hexstr[80], tmpstr[16];
+
+ /* generate hex for this line */
+ sprintf(hexstr, "0x%08x: ", lnum * 0x10);
+
+- sp = (byte *) tv->text + lnum * 0x10;
+- ep = (byte *) tv->text + tv->textlen; /* ptr to end of buffer */
++ sp = (const byte *) tv->text + lnum * 0x10;
++ ep = (const byte *) tv->text + tv->textlen; /* ptr to end of buffer */
+
+ for (j=0; j<16; j++) {
+ if (sp+j < ep) sprintf(tmpstr,"%02x ", sp[j]);
+@@ -960,7 +1389,11 @@
+
+ for (j=0; j<16; j++) {
+ if (sp+j < ep) {
++#ifdef TV_L10N
++ if (sp[j] >= 32 && (sp[j] <= 127 || tv->code)) *lp++ = sp[j];
++#else
+ if (sp[j] >= 32 && sp[j] <= 127) *lp++ = sp[j];
++#endif
+ else *lp++ = '.';
+ }
+ else *lp++ = ' ';
+@@ -972,7 +1405,7 @@
+ now build 'linestr', which is going to have hexstr shifted
+ and/or padded with blanks (ie, the displayed portion or hexstr) */
+
+- /* skip obscured beginning of line, if any */
++ /* skip obscured beginning of line, if any */
+ for (cpos=0, sp=(byte *) hexstr; cpos<hpos && *sp; cpos++, sp++);
+
+ for (cpos=0, lp=(byte *)linestr; cpos<lwide; cpos++, lp++) {
+@@ -985,16 +1418,16 @@
+ }
+
+ /* draw the line */
+- XDrawImageString(theDisp, tv->textW, theGC,
++ XDrawImageString(theDisp, tv->textW, theGC,
+ 3, i*mfhigh + 3 + mfascent, linestr, lwide);
+ } /* for i ... */
+ } /* else hexmode */
+-
++
+
+
+ XSetFont(theDisp, theGC, mfont);
+
+- Draw3dRect(tv->textW, 0, 0, (u_int) (tv->twWide-1), (u_int) (tv->twHigh-1),
++ Draw3dRect(tv->textW, 0, 0, (u_int) (tv->twWide-1), (u_int) (tv->twHigh-1),
+ R3D_IN, 2, hicol, locol, infobg);
+ }
+
+@@ -1008,14 +1441,21 @@
+ int i;
+ BUTT *bp;
+
+- for (i=0, bp=tv->but; i<TV_NBUTTS; i++, bp++) {
++ for (i=0, bp=tv->but; i<nbutts; i++, bp++) {
+ if (PTINRECT(x,y,bp->x,bp->y,bp->w,bp->h)) break;
+ }
+
+- if (i<TV_NBUTTS) {
++ if (i<nbutts) {
+ if (BTTrack(bp)) doCmd(tv, i);
+ return;
+ }
++
++#ifdef TV_MULTILINGUAL
++ if (PTINRECT(x, y, tv->csbut.x, tv->csbut.y, tv->csbut.w, tv->csbut.h)) {
++ if (BTTrack(&tv->csbut))
++ openCsWin(tv);
++ }
++#endif
+ }
+
+
+@@ -1033,7 +1473,7 @@
+ stlen = XLookupString(kevt, buf, 128, &ks, (XComposeStatus *) NULL);
+ shift = kevt->state & ShiftMask;
+ ck = CursorKey(ks, shift, 1);
+- dealt = 1;
++ dealt = 1;
+
+ RemapKeyCheck(ks, buf, &stlen);
+
+@@ -1045,13 +1485,38 @@
+
+ /* keyboard equivalents */
+ switch (buf[0]) {
+- case '\001': doCmd(tv, TV_ASCII); break; /* ^A = Ascii */
+- case '\010': doCmd(tv, TV_HEX); break; /* ^H = Hex */
+-
+- case '\033': doCmd(tv, TV_CLOSE); break; /* ESC = Close window */
++ case '\001': case 'a': case 'A':
++ doCmd(tv, TV_ASCII); break; /* ^A = Ascii */
++ case '\010': case 'h': case 'H':
++ doCmd(tv, TV_HEX); break; /* ^H = Hex */
++
++ case '\021': case 'q': case 'Q':
++ case '\003': case 'c': case 'C':
++ case '\033':
++ doCmd(tv, TV_CLOSE); break; /* ESC = Close window */
+
+ default: break;
+ }
++
++#ifdef TV_L10N
++ if (xlocale) {
++ switch (buf[0]) {
++ case '\022': case 'r': case 'R':
++ doCmd(tv, TV_RESCAN); break;
++ case '\012': case 'j': case 'J':
++ doCmd(tv, TV_JIS); break;
++ case '\005': case 'e': case 'E':
++ case '\025': case 'u': case 'U':
++ doCmd(tv, TV_EUCJ); break;
++ case '\015': case 'm': case 'M':
++ case '\023': case 's': case 'S':
++ doCmd(tv, TV_MSCODE); break;
++
++ default: break;
++ }
++ }
++#endif /* TV_L10N */
++
+ }
+
+
+@@ -1060,8 +1525,6 @@
+ TVINFO *tv;
+ int key;
+ {
+- int i,j;
+-
+ if (!tv->textlen) return;
+
+ /* an arrow key (or something like that) was pressed in icon window.
+@@ -1108,13 +1571,26 @@
+ else { /* switch to ascii mode */
+ pos = oldvscrl * 16;
+ for (i=0; i<tv->numlines-1; i++) {
+- if (tv->lines[i+1] - tv->text > pos &&
++ if (tv->lines[i+1] - tv->text > pos &&
+ tv->lines[i] - tv->text <= pos) break;
+ }
+ if (i<tv->numlines-1) SCSetVal(&tv->vscrl, i);
+ }
+
++#ifdef TV_L10N
++ /* redraw text */
++ if (xlocale) {
++ XClearArea(theDisp, tv->textW, 0, 0,
++ (u_int) tv->twWide, (u_int) tv->twHigh, False);
++
++ drawTextW(0, &tv->vscrl);
++ }
++#endif
++#ifdef TV_MULTILINGUAL
++ XClearArea(theDisp, tv->textW, 0, 0,
++ (u_int) tv->twWide, (u_int) tv->twHigh, False);
+ drawTextW(0, &tv->vscrl);
++#endif
+ }
+
+
+@@ -1125,16 +1601,29 @@
+ /* compute # of lines and linestarts array for given text */
+
+ int i,j,wide,maxwide,space;
+- byte *sp;
++ const byte *sp;
+
+- if (!tv->text) {
+- tv->numlines = tv->hexlines = 0;
+- tv->lines = (char **) NULL;
++#ifdef TV_L10N
++ /* select code-set */
++ if (xlocale)
++ tv->code = selectCodeset(tv);
++#endif /* TV_L10N */
++
++ if (!tv->text) {
++ tv->numlines = tv->hexlines = 0;
++ tv->lines = (const char **) NULL;
++#ifdef TV_MULTILINGUAL
++ if (tv->cv_text != NULL) {
++ free(tv->cv_text);
++ tv->cv_text = NULL;
++ }
++ tv->txt = NULL;
++#endif
+ return;
+ }
+
+ /* count the # of newline characters in text */
+- for (i=0, sp=(byte *) tv->text, tv->numlines=0; i<tv->textlen; i++, sp++) {
++ for (i=0, sp=(const byte *) tv->text, tv->numlines=0; i<tv->textlen; i++, sp++) {
+ if (*sp == '\n') tv->numlines++;
+ }
+
+@@ -1142,19 +1631,19 @@
+ tv->numlines += 2;
+
+ /* build lines array */
+- tv->lines = (char **) malloc(tv->numlines * sizeof(char *));
++ tv->lines = (const char **) malloc(tv->numlines * sizeof(char *));
+ if (!tv->lines) FatalError("out of memory in computeText()");
+
+ j = 0;
+ tv->lines[j++] = tv->text;
+- for (i=0, sp=(byte *) tv->text; i<tv->textlen; i++, sp++) {
++ for (i=0, sp=(const byte *) tv->text; i<tv->textlen; i++, sp++) {
+ if (*sp == '\n') tv->lines[j++] = (char *) (sp + 1);
+ }
+
+ tv->lines[tv->numlines - 1] = tv->text + tv->textlen + 1;
+
+- /* each line has a trailing '\n' character, except for the last line,
+- which has a trailing '\0' character. In any case, all lines can
++ /* each line has a trailing '\n' character, except for the last line,
++ which has a trailing '\0' character. In any case, all lines can
+ be printed by printing ((lines[n+1] - lines[n]) - 1) characters,
+ starting with lines[n].
+
+@@ -1164,30 +1653,142 @@
+
+ /* compute length of longest line, when shown in 'ascii' mode. Takes
+ into account the fact that non-printing chars (<32 or >127) will be
+- shown in an 'expanded' form. (<32 chars will be shown as '^A'
++ shown in an 'expanded' form. (<32 chars will be shown as '^A'
+ (or whatever), and >127 chars will be shown as octal '\275') */
+
+ maxwide = 0;
+ for (i=0; i<tv->numlines-1; i++) {
+ /* compute displayed width of line #i */
+- for (sp=(byte *) tv->lines[i], wide=0; sp<(byte *) tv->lines[i+1]-1;
++ for (sp=(const byte *) tv->lines[i], wide=0; sp<(const byte *) tv->lines[i+1]-1;
+ sp++) {
+ if (*sp == '\011') { /* tab to next multiple of 8 */
+ space = ((wide+8) & (~7)) - wide;
+ wide += space;
+ }
+ else if (*sp < 32) wide += 2;
++#ifdef TV_L10N
++ else if (*sp > 127 && !tv->code) wide += 4;
++#else
+ else if (*sp > 127) wide += 4;
++#endif
+ else wide++;
+ }
+ if (wide > maxwide) maxwide = wide;
+ }
+ tv->maxwide = maxwide;
+
++#ifdef TV_MULTILINGUAL
++ ml_set_charsets(tv->ctx, &tv->ccs.coding_system);
++ if (tv->cv_text != NULL) {
++ free(tv->cv_text);
++ tv->cv_text = NULL;
++ }
++ if (tv->ccs.converter == NULL) {
++ tv->txt = ml_draw_text(tv->ctx, tv->text, tv->textlen);
++ } else {
++ tv->cv_text = (*tv->ccs.converter)(tv->text, tv->textlen, &tv->cv_len);
++ tv->txt = ml_draw_text(tv->ctx, tv->cv_text, tv->cv_len);
++ }
++ tv->maxwide = tv->txt->width / mfwide;
++ tv->numlines = tv->txt->height / mfhigh + 1;
++#endif
++
+ tv->hexlines = (tv->textlen + 15) / 16;
+ }
+
+
++/***************************************************/
++#ifdef TV_L10N
++static int selectCodeset(tv)
++ TVINFO *tv;
++{
++ const byte *sp;
++ int i, len;
++ int code = LOCALE_USASCII; /* == 0 */
++
++
++ len = tv->textlen;
++
++ /* select code-set */
++ if (xlocale) {
++ sp = (const byte *) tv->text; i = 0;
++ while (i < len - 1) {
++ if (*sp == 0x1b &&
++ (*(sp+1) == '$' || *(sp+1) == '(' || *(sp+1) == ')')) {
++ code = LOCALE_JIS;
++ break;
++ }
++
++ else if (*sp >= 0xa1 && *sp <= 0xdf) {
++ if (*(sp+1) >= 0xf0 && *(sp+1) <= 0xfe) {
++ code = LOCALE_EUCJ;
++ break;
++ }
++# if (LOCALE_DEFAULT == LOCALE_EUCJ)
++ else {
++ sp++; i++;
++ }
++# endif
++ }
++
++ else if ((*sp >= 0x81 && *sp <= 0x9f) || (*sp >= 0xe0 && *sp <= 0xef)) {
++ if ((*(sp+1) >= 0x40 && *(sp+1) <= 0x7e) || *(sp+1) == 0x80) {
++ code = LOCALE_MSCODE;
++ break;
++ }
++ else if (*(sp+1) == 0xfd || *(sp+1) == 0xfe) {
++ code = LOCALE_EUCJ;
++ break;
++ }
++ else {
++ sp++; i++;
++ }
++ }
++
++ else if (*sp >= 0xf0 && *sp <= 0xfe) {
++ code = LOCALE_EUCJ;
++ break;
++ }
++
++ sp++; i++;
++ }
++ if (!code) code = LOCALE_DEFAULT;
++ }
++
++ return code;
++}
++#endif /* TV_L10N */
++
++#ifdef TV_MULTILINGUAL
++static void setCodingSpec(tv, cs)
++ TVINFO *tv;
++ struct coding_spec *cs;
++{
++ if (xvbcmp((char *) &tv->ccs, (char *) cs, sizeof *cs) == 0)
++ return;
++
++ tv->ccs = *cs;
++#if 0
++ ml_set_charsets(tv->ctx, &tv->ccs.coding_system);
++ if (tv->cv_text != NULL) {
++ free(tv->cv_text);
++ tv->cv_text = NULL;
++ }
++ if (tv->ccs.converter == NULL) {
++ tv->txt = ml_draw_text(tv->ctx, tv->text, tv->textlen);
++ } else {
++ tv->cv_text = (*tv->ccs.converter)(tv->text, tv->textlen, &tv->cv_len);
++ tv->txt = ml_draw_text(tv->ctx, tv->cv_text, tv->cv_len);
++ }
++#else
++ computeText(tv);
++ computeScrlVals(tv);
++#endif
++ /* drawTextW(0, &tv->vscrl); */
++}
++#endif
++
++
+ /**********************************************************************/
+ /* BUILT-IN TEXT FILES ************************************************/
+ /**********************************************************************/
+@@ -1203,9 +1804,13 @@
+
+ /* build the license text */
+ #ifdef LC
+-#undef LC
++# undef LC
++#endif
++#ifdef __STDC__ /* since "x" is always a static string, this works: */
++# define LC(x) (strcat(license, x "\n"))
++#else
++# define LC(x) (strcat(license, x), strcat(license, "\n"))
+ #endif
+-#define LC(x) (strcat(license, x), strcat(license, "\n"))
+
+ LC("(Note: This has been changed, and hopefully clarified, from the 3.00");
+ LC("version of this info. Please read it.)");
+@@ -1220,7 +1825,12 @@
+ LC("the xv distribution. Do *not* send mail unless absolutely necessary");
+ LC("(ie, you don't have ftp capability).");
+ LC("");
+- LC("Note: The docs (xvdocs.ps) may be installed in '/usr/local/lib'.");
++ LC("Note: The documentation (README.jumbo, xvdocs.ps, and/or xvdocs.pdf)");
++#ifdef __STDC__
++ LC("may be installed in '" DOCDIR "'.");
++#else
++ LC("may be installed in '/usr/local/share/doc/xv'.");
++#endif
+ LC("");
+ LC("If you're viewing this information via the 'About XV' command, and");
+ LC("you'd like to print it out, a copy of this info can be found in the ");
+@@ -1230,7 +1840,7 @@
+ LC("");
+ LC("XV Licensing Information");
+ LC("------------------------");
+- LC("XV IS SHAREWARE FOR PERSONAL USE ONLY. ");
++ LC("XV IS SHAREWARE FOR PERSONAL USE ONLY.");
+ LC("");
+ LC("You may use XV for your own amusement, and if you find it nifty,");
+ LC("useful, generally cool, or of some value to you, your registration fee");
+@@ -1279,7 +1889,7 @@
+ LC("are not. All forms of payment must be payable in US Funds. Checks");
+ LC("must be payable through a US bank (or a US branch of a non-US bank).");
+ LC("Purchase orders for less than $50, while still accepted, are not");
+- LC("encouraged. ");
++ LC("encouraged.");
+ LC("");
+ LC("All payments should be payable to 'John Bradley', and mailed to:");
+ LC(" John Bradley");
+@@ -1382,7 +1992,11 @@
+ keyhelp[0] = '\0';
+
+ #undef LC
+-#define LC(x) (strcat(keyhelp, x), strcat(keyhelp, "\n"))
++#ifdef __STDC__ /* since "x" is always a static string, this works: */
++# define LC(x) (strcat(keyhelp, x "\n"))
++#else
++# define LC(x) (strcat(keyhelp, x), strcat(keyhelp, "\n"))
++#endif
+
+ LC("XV Mouse and Keyboard Usage");
+ LC("===========================");
+@@ -1415,16 +2029,16 @@
+ LC("");
+ LC("Part 2: Normal Keyboard Equivalents");
+ LC("------------------------------------");
+- LC("The following keys can be used in most xv windows, including the ");
+- LC("image, controls, and color editor windows, but *not* in the visual");
+- LC("schnauzer windows.");
++ LC("The following keys can be used in most xv windows, including the");
++ LC("image, controls, and color editor windows, but *not* in the Visual");
++ LC("Schnauzer windows.");
+ LC("");
+- LC(" Tab or ");
++ LC(" Tab or");
+ LC(" Space - 'Next' command");
+ LC("");
+ LC(" Return - reload currently displayed image file");
+ LC("");
+- LC(" Del or ");
++ LC(" Del or");
+ LC(" Backspace - 'Prev' command");
+ LC("");
+ LC(" ctrl+'l' - 'Load' command");
+@@ -1432,7 +2046,7 @@
+ LC(" ctrl+'p' - 'Print' command");
+ LC(" ctrl+'d' - 'Delete' command");
+ LC("");
+- LC(" 'q' or ");
++ LC(" 'q' or");
+ LC(" ctrl+'q' - 'Quit' command");
+ LC("");
+ LC(" meta+'x' - 'cut' command");
+@@ -1468,7 +2082,7 @@
+ LC(" 's' - smooth mode");
+ LC(" meta+'8' - toggle 8/24 bit mode");
+ LC("");
+- LC(" 'V' or ");
++ LC(" 'V' or");
+ LC(" ctrl+'v' - Visual Schnauzer");
+ LC(" 'e' - Color Editor");
+ LC(" 'i' - Image Info");
+@@ -1490,7 +2104,7 @@
+ LC(" meta+'S' - Spread algorithm");
+ LC("");
+ LC(" 'R' or");
+- LC(" meta+'r' or ");
++ LC(" meta+'r' or");
+ LC(" meta+'0' - 'Reset' command in color editor");
+ LC("");
+ LC(" meta+'1' - select preset 1 in color editor");
+@@ -1503,7 +2117,7 @@
+ LC("");
+ LC("Part 2a: Image Window Keys");
+ LC("---------------------------");
+- LC("The following keys can *only* be used inside the image window.");
++ LC("The following keys can be used *only* inside the image window.");
+ LC("");
+ LC(" ctrl + Up - crops 1 pixel off the bottom of the image");
+ LC(" ctrl + Down - crops 1 pixel off the top of the image");
+@@ -1514,11 +2128,11 @@
+ LC(" 'p' - opens a 'go to page #' dialog box");
+ LC("");
+ LC(" PageUp, or");
+- LC(" Prev, or ");
++ LC(" Prev, or");
+ LC(" shift+Up - previous page");
+ LC("");
+ LC(" PageDown, or");
+- LC(" Next, or ");
++ LC(" Next, or");
+ LC(" shift+Down - next page");
+ LC("");
+ LC("");
+@@ -1535,7 +2149,7 @@
+ LC("");
+ LC("Part 2b: Visual Schnauzer Keys");
+ LC("-------------------------------");
+- LC("The following keys can only be used in the visual schnauzer windows.");
++ LC("The following keys can be used only in the Visual Schnauzer windows.");
+ LC("");
+ LC(" ctrl+'d' - delete file(s)");
+ LC(" ctrl+'n' - create new directory");
+@@ -1560,8 +2174,509 @@
+ OpenTextView(keyhelp, (int) strlen(keyhelp), "XV Help", 0);
+ }
+
++#ifdef TV_MULTILINGUAL
+
++#define TV_ML_ACCEPT TV_NCSS
++#define TV_ML_CLOSE (TV_ML_ACCEPT + 1)
++#define TV_ML_NBUTTS (TV_ML_CLOSE + 1)
++
++#define TV_ML_RETCODE 0
++# define TV_ML_RET_LF 0
++# define TV_ML_RET_CRLF 1
++# define TV_ML_RET_CR 2
++# define TV_ML_RET_ANY 3
++#define TV_ML_GL 1
++#define TV_ML_GR 2
++#define TV_ML_CVTR 3
++#define TV_ML_NRBUTTS 4
++
++#define TV_ML_SHORT 0
++#define TV_ML_LOCK 1
++#define TV_ML_NCBUTTS 2
++
++#define TV_ML_NLISTS 4
++
++#define CSWIDE (BUTTW3 * 5 + 5 * 6)
++#define CSHIGH 450
++
++typedef struct csinfo_t {
++ TVINFO *tv;
++ RBUTT *rbt[TV_ML_NRBUTTS];
++ CBUTT cbt[TV_ML_NCBUTTS];
++ LIST ls[TV_ML_NLISTS];
++ BUTT bt[TV_ML_NBUTTS];
++ int up;
++ Window win;
++ struct coding_spec tcs; /* temporary coding_spec */
++} CSINFO;
++CSINFO csinfo[MAXTVWIN];
++static char **regs;
++static int nregs;
++
++static int csCheckEvent PARM((CSINFO *, XEvent *));
++static void csReflect PARM((CSINFO *));
++static void csRedraw PARM((CSINFO *));
++static void csListRedraw PARM((LIST *));
++static void csLsRedraw PARM((int, SCRL *));
++static void create_registry_list PARM((void));
++
++static char *(*cvtrtab[])PARM((char *, int, int *)) = {
++ NULL,
++ sjis_to_jis,
++};
+
++static void createCsWins(geom)
++ const char *geom;
++{
++ XSetWindowAttributes xswa;
++ int i, j;
++
++ create_registry_list();
++
++ xswa.backing_store = WhenMapped;
++ for (i = 0; i < MAXTVWIN; i++) {
++ char nam[8];
++ TVINFO *tv = &tinfo[i];
++ CSINFO *cs = &csinfo[i];
++ tv->cs = cs;
++ cs->tv = tv;
++ sprintf(nam, "XVcs%d", i);
++ cs->win = CreateWindow("xv codeset", nam, geom,
++ CSWIDE, CSHIGH, infofg, infobg, 0);
++ if (!cs->win) FatalError("couldn't create 'charset' window!");
++#ifdef BACKING_STORE
++ XChangeWindowAttributes(theDisp, cs->win, CWBackingStore, &xswa);
++#endif
++ XSelectInput(theDisp, cs->win, ExposureMask | ButtonPressMask);
++
++ DrawString(cs->win, 5, 5 + ASCENT, "Initial States");
++ for (i = 0; i < TV_ML_NLISTS; i++) {
++ int x, y;
++ char buf[80];
++
++ if (i / 2 == 0)
++ x = 15;
++ else
++ x = 280;
++ if (i % 2 == 0)
++ y = 5 + LINEHIGH * 1;
++ else
++ y = 5 + LINEHIGH * 7 + SPACING * 3;
++
++ sprintf(buf, "Designation for G%d:", i + 1);
++ DrawString(cs->win, x, y + ASCENT, buf);
++
++ LSCreate(&cs->ls[i], cs->win, x + 15, y + LINEHIGH,
++ 200, LINEHIGH * 5, 5,
++ regs, nregs + 2,
++ infofg, infobg, hicol, locol, csLsRedraw, 0, 0);
++ cs->ls[i].selected = 0;
++ }
+
++ for (i = 0; i < 2; i++) {
++ char *p;
++ int n;
++ int x, y;
++
++ if ((p = (char *) malloc(3 * 4)) == NULL)
++ FatalError("out of memory in createCsWins().");
++ strcpy(p, "G1 G2 G3 G4");
++ p[2] = p[5] = p[8] = '\0';
++ n = (i == 0 ? TV_ML_GL : TV_ML_GR);
++ x = (i == 0 ? 15 : 280);
++ y = 235;
++ DrawString(cs->win, x, y + ASCENT, "Assignment for GL:");
++ x += 15;
++ y += LINEHIGH;
++ cs->rbt[n] = RBCreate(NULL, cs->win,
++ x, y, p, infofg, infobg, hicol, locol);
++ for (j = 1; j < 4; j++) {
++ p += 3;
++ x += 50;
++ RBCreate(cs->rbt[n], cs->win,
++ x, y, p, infofg, infobg, hicol, locol);
++ }
++ }
++
++ DrawString(cs->win, 5, 280 + ASCENT, "Ret Code:");
++ cs->rbt[TV_ML_RETCODE] =
++ RBCreate(NULL, cs->win, 20, 300, "LF", infofg,infobg, hicol,locol);
++ RBCreate(cs->rbt[TV_ML_RETCODE], cs->win, 20, 300 + 20, "CR+LF",
++ infofg, infobg, hicol, locol);
++ RBCreate(cs->rbt[TV_ML_RETCODE], cs->win, 90, 300, "CR",
++ infofg, infobg, hicol, locol);
++ RBCreate(cs->rbt[TV_ML_RETCODE], cs->win, 90, 300 + 20, "Any",
++ infofg, infobg, hicol, locol);
++
++ DrawString(cs->win, 350, 280 + ASCENT, "Converter:");
++ cs->rbt[TV_ML_CVTR] =
++ RBCreate(NULL, cs->win, 365, 300, "Nothing",
++ infofg, infobg, hicol, locol);
++ RBCreate(cs->rbt[TV_ML_CVTR], cs->win, 365, 300 + 20, "Shift JIS",
++ infofg, infobg, hicol, locol);
++
++ CBCreate(&cs->cbt[TV_ML_SHORT], cs->win, 200, 300, "Short Form",
++ infofg, infobg, hicol, locol);
++ CBCreate(&cs->cbt[TV_ML_LOCK], cs->win, 200, 320, "Locking Shift",
++ infofg, infobg, hicol, locol);
++
++ for (j = 0; j < TV_NCSS; j++) {
++ BTCreate(&cs->bt[j], cs->win,
++ 5 + (BUTTW3 + 5) * (j % 5),
++ 350 + 5 + (BUTTH + 5) * (j / 5),
++ BUTTW3, BUTTH, codeSetNames[j],
++ infofg, infobg, hicol, locol);
++ }
++ BTCreate(&cs->bt[TV_ML_ACCEPT], cs->win,
++ CSWIDE - 10 - BUTTW3 * 2, CSHIGH - 5 - BUTTH, BUTTW3, BUTTH,
++ "Accept", infofg, infobg, hicol, locol);
++ BTCreate(&cs->bt[TV_ML_CLOSE], cs->win,
++ CSWIDE - 5 - BUTTW3, CSHIGH - 5 - BUTTH, BUTTW3, BUTTH,
++ "Close", infofg, infobg, hicol, locol);
++
++ XMapSubwindows(theDisp, cs->win);
++ cs->up = 0;
++ }
++}
+
++static void openCsWin(tv)
++ TVINFO *tv;
++{
++ CSINFO *cs = tv->cs;
++ if (cs->up)
++ return;
++
++ XMapRaised(theDisp, cs->win);
++ cs->up = 1;
++ cs->tcs = cs->tv->ccs;
++ csReflect(cs);
++}
++
++static void closeCsWin(tv)
++ TVINFO *tv;
++{
++ CSINFO *cs = tv->cs;
++ if (!cs->up)
++ return;
++ cs->up = 0;
++ XUnmapWindow(theDisp, cs->win);
++}
++
++int CharsetCheckEvent(xev)
++ XEvent *xev;
++{
++ int i;
++ CSINFO *cs;
++
++ for (cs = csinfo, i = 0; i < MAXTVWIN; cs++, i++) {
++ if (!cs->up)
++ continue;
++ if (csCheckEvent(cs, xev))
++ break;
++ }
++ if (i < MAXTVWIN)
++ return 1;
++ return 0;
++}
++
++static int csCheckEvent(cs, xev)
++ CSINFO *cs;
++ XEvent *xev;
++{
++ RBUTT **rbp;
++ CBUTT *cbp;
++ LIST *ls;
++ BUTT *bp;
++ int i, n;
++
++ if (xev->type == Expose) {
++ int x, y, w, h;
++ XExposeEvent *e = (XExposeEvent *) xev;
++ x = e->x; y = e->y; w = e->width; h = e->height;
++
++ if (cs->win == e->window){
++ csRedraw(cs);
++ return 1;
++ } else {
++ for (i = 0; i < TV_ML_NLISTS; i++) {
++ if (cs->ls[i].win == e->window) {
++ LSRedraw(&cs->ls[i], 0);
++ return 1;
++ }
++ }
++ for (i = 0; i < TV_ML_NLISTS; i++) {
++ if (cs->ls[i].scrl.win == e->window) {
++ SCRedraw(&cs->ls[i].scrl);
++ return 1;
++ }
++ }
++ }
++ } else if (xev->type == ButtonPress) {
++ int x, y;
++ XButtonEvent *e = (XButtonEvent *) xev;
++ x = e->x; y = e->y;
++ if (cs->win == e->window) {
++ for (bp = cs->bt, i = 0; i < TV_ML_NBUTTS; bp++, i++) {
++ if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h))
++ break;
++ }
++ if (i < TV_ML_NBUTTS) {
++ if (BTTrack(bp)) {
++ if (i < TV_NCSS) {
++ cs->tcs = coding_spec[i];
++ csReflect(cs);
++ } else {
++ switch (i) {
++ case TV_ML_ACCEPT:
++ setCodingSpec(cs->tv, &cs->tcs);
++ break;
++ case TV_ML_CLOSE:
++ closeCsWin(cs->tv);
++ break;
++ }
++ }
++ }
++ return 1;
++ }
++ for (cbp = cs->cbt, i = 0; i < TV_ML_NCBUTTS; cbp++, i++) {
++ if (CBClick(cbp, x, y) && CBTrack(cbp))
++ break;
++ }
++ if (i < TV_ML_NCBUTTS) {
++ switch (i) {
++ case TV_ML_SHORT:
++ cs->tcs.coding_system.short_form = cbp->val;
++ break;
++ case TV_ML_LOCK:
++ cs->tcs.coding_system.lock_shift = cbp->val;
++ break;
++ }
++ return 1;
++ }
++ for (rbp = cs->rbt, i = 0; i < TV_ML_NRBUTTS; rbp++, i++) {
++ if ((n = RBClick(*rbp, x, y)) >= 0 && RBTrack(*rbp, n)) {
++ break;
++ }
++ }
++ if (i < TV_ML_NRBUTTS) {
++ switch (i) {
++ case TV_ML_RETCODE:
++ cs->tcs.coding_system.eol = n;
++ break;
++ case TV_ML_GL:
++ cs->tcs.coding_system.gl = n;
++ break;
++ case TV_ML_GR:
++ cs->tcs.coding_system.gr = n;
++ break;
++ case TV_ML_CVTR:
++ cs->tcs.converter = cvtrtab[n];
++ break;
++ }
++ return 1;
++ }
++ } else {
++ for (ls = cs->ls, i = 0; i < TV_ML_NLISTS; ls++, i++) {
++ if (ls->win == e->window) {
++ LSClick(ls, e);
++ n = ls->selected;
++ if (n < nregs) {
++ char r[32], *p = r;
++ int b7;
++ strcpy(r, regs[n]);
++ if ((p = strrchr(r, '/')) != NULL) {
++ *p = '\0';
++ b7 = (*(p + 1) == 'R' ? 1 : 0);
++ } else
++ b7 = 0; /* shouldn't occur */
++ cs->tcs.coding_system.design[i] = lookup_design(r, b7);
++ } else if (n == nregs) /* initially none is designed. */
++ cs->tcs.coding_system.design[i].bpc = 0;
++ else
++ cs->tcs.coding_system.design[i].bpc = -1;
++ return 1;
++ }
++ }
++ for (ls = cs->ls, i = 0; i < TV_ML_NLISTS; ls++, i++) {
++ if (ls->scrl.win == e->window) {
++ SCTrack(&ls->scrl, x, y);
++ return 1;
++ }
++ }
++ }
++ }
++ return 0;
++}
++
++static void csReflect(cs)
++ CSINFO *cs;
++{
++ int i;
++
++ RBSelect(cs->rbt[TV_ML_RETCODE], cs->tcs.coding_system.eol);
++ RBSelect(cs->rbt[TV_ML_GL], cs->tcs.coding_system.gl);
++ RBSelect(cs->rbt[TV_ML_GR], cs->tcs.coding_system.gr);
++ for (i = 0; i < sizeof cvtrtab / sizeof cvtrtab[0]; i++) {
++ if (cs->tcs.converter == cvtrtab[i])
++ break;
++ }
++ if (i >= sizeof cvtrtab / sizeof cvtrtab[0])
++ FatalError("program error in csReflect().");
++ RBSelect(cs->rbt[TV_ML_CVTR], i);
++
++ cs->cbt[TV_ML_SHORT].val = cs->tcs.coding_system.short_form;
++ cs->cbt[TV_ML_LOCK].val = cs->tcs.coding_system.lock_shift;
++ for (i = 0; i < TV_ML_NLISTS; i++) {
++ struct design design = cs->tcs.coding_system.design[i];
++ char *reg, r[32];
++ int b7;
++ int n = 0;
++ switch (design.bpc) {
++ case -1:
++ n = nregs + 1;
++ break;
++ case 0:
++ n = nregs;
++ break;
++ case 1:
++ case 2:
++ if ((reg = lookup_registry(design, &b7)) == NULL)
++ FatalError("internal error in csReflect.");
++ sprintf(r, "%s/%s", reg, b7 ? "Right" : "Left");
++ for (n = 0; n < nregs; n++) {
++ if (strcmp(regs[n], r) == 0)
++ break;
++ }
++ }
++ cs->ls[i].selected = n;
++ ScrollToCurrent(&cs->ls[i]);
++ }
++ csRedraw(cs);
++ for (i = 0; i < TV_ML_NLISTS; i++)
++ csListRedraw(&cs->ls[i]);
++}
++
++static void csRedraw(cs)
++ CSINFO *cs;
++{
++ int i;
++
++ XSetForeground(theDisp, theGC, infofg);
++ DrawString(cs->win, 5,5 + ASCENT, "Initial States");
++ for (i = 0; i < TV_ML_NLISTS; i++) {
++ int x, y;
++ char buf[80];
++
++ if (i / 2 == 0)
++ x = 15;
++ else
++ x = 280;
++ if (i % 2 == 0)
++ y = 5 + LINEHIGH * 1;
++ else
++ y = 5 + LINEHIGH * 7 + SPACING * 3;
++
++ sprintf(buf, "Designation for G%d:", i);
++ DrawString(cs->win, x, y + ASCENT, buf);
++ }
++
++ DrawString(cs->win, 15, 235 + ASCENT, "Invocation for GL:");
++ DrawString(cs->win, 280, 235 + ASCENT, "Invocation for GR:");
++ DrawString(cs->win, 5, 280 + ASCENT, "Ret Code:");
++ DrawString(cs->win, 350, 280 + ASCENT, "Converter:");
++
++ for (i = 0; i < TV_ML_NBUTTS; i++)
++ BTRedraw(&cs->bt[i]);
++ for (i = 0; i < TV_ML_NCBUTTS; i++)
++ CBRedraw(&cs->cbt[i]);
++ for (i = 0; i < TV_ML_NRBUTTS; i++)
++ RBRedraw(cs->rbt[i], -1);
++}
++
++static void csListRedraw(ls)
++ LIST *ls;
++{
++ int i;
++ for (i = 0; i < TV_ML_NLISTS; i++) {
++ LSRedraw(ls, 0);
++ SCRedraw(&ls->scrl);
++ }
++}
++
++static void csLsRedraw(delta, sptr)
++ int delta;
++ SCRL *sptr;
++{
++ int i, j;
++ for (i = 0; i < MAXTVWIN; i++) {
++ for (j = 0; j < TV_ML_NLISTS; j++) {
++ if (sptr == &csinfo[i].ls[j].scrl) {
++ LSRedraw(&csinfo[i].ls[j], delta);
++ return;
++ }
++ }
++ }
++}
++
++int CharsetDelWin(win)
++ Window win;
++{
++ CSINFO *cs;
++ int i;
++
++ for (cs = csinfo, i = 0; i < TV_NCSS; cs++, i++) {
++ if (cs->win == win) {
++ if (cs->up) {
++ XUnmapWindow(theDisp, cs->win);
++ cs->up = 0;
++ }
++ return 1;
++ }
++ }
++ return 0;
++}
++
++static int reg_comp PARM((const void *, const void *));
++static void create_registry_list()
++{
++ struct design d;
++ char *names, *p;
++ int i;
++
++ if ((p = names = (char *) malloc(32 * 0x80 * 2 * 2)) == NULL)
++ FatalError("out of memory in create_name_list#1.");
++ nregs = 0;
++ for (d.bpc = 1; d.bpc <=2; d.bpc++) {
++ for (d.noc = 94; d.noc <= 96; d.noc += 2) {
++ for (d.des = ' '; (unsigned char) d.des < 0x80; d.des++) {
++ int b7;
++ char *r;
++ if ((r = lookup_registry(d, &b7)) != NULL) {
++ sprintf(p, "%s/%s", r, b7 ? "Right" : "Left");
++ p += strlen(p) + 1;
++ nregs++;
++ }
++ }
++ }
++ }
++ if ((names = (char *) realloc(names, (size_t) (p - names))) == NULL)
++ FatalError("out of memory in create_name_list#2.");
++ if ((regs = (char **) malloc(sizeof(char *) * (nregs + 3))) == NULL)
++ FatalError("out of memory in create_name_list#3.");
++ p = names;
++ for (i = 0; i < nregs; i++) {
++ regs[i] = p;
++ p += strlen(p) + 1;
++ }
++ qsort(regs, (size_t) nregs, sizeof(char *), reg_comp);
++ regs[i++] = "nothing";
++ regs[i++] = "unused";
++ regs[i++] = NULL;
++}
++static int reg_comp(dst, src)
++ const void *dst, *src;
++{
++ return strcmp(*(char **) dst, *(char **) src);
++}
+
++#endif /* TV_MULTILINGUAL */
+diff -ru xv-3.10a/xvtiff.c xv-3.10a-enhancements/xvtiff.c
+--- xv-3.10a/xvtiff.c 1995-01-13 11:53:34.000000000 -0800
++++ xv-3.10a-enhancements/xvtiff.c 2007-05-20 10:32:31.000000000 -0700
+@@ -1,11 +1,11 @@
+ /*
+ * xvtiff.c - load routine for 'TIFF' format pictures
+ *
+- * LoadTIFF(fname, numcols) - load a TIFF file
++ * LoadTIFF(fname, numcols, quick) - load a TIFF file
+ */
+
+ #ifndef va_start
+-# define NEEDSARGS
++# define NEEDSARGS
+ #endif
+
+ #include "xv.h"
+@@ -15,6 +15,35 @@
+ #include "tiffio.h" /* has to be after xv.h, as it needs varargs/stdarg */
+
+
++/* Portions fall under the following copyright:
++ *
++ * Copyright (c) 1992, 1993, 1994 Sam Leffler
++ * Copyright (c) 1992, 1993, 1994 Silicon Graphics, Inc.
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and
++ * its documentation for any purpose is hereby granted without fee, provided
++ * that (i) the above copyright notices and this permission notice appear in
++ * all copies of the software and related documentation, and (ii) the names of
++ * Sam Leffler and Silicon Graphics may not be used in any advertising or
++ * publicity relating to the software without the specific, prior written
++ * permission of Sam Leffler and Silicon Graphics.
++ *
++ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
++ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
++ *
++ * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
++ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
++ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
++ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
++ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
++ * OF THIS SOFTWARE.
++ */
++
++
++static int copyTiff PARM((TIFF *, char *));
++static int cpStrips PARM((TIFF *, TIFF *));
++static int cpTiles PARM((TIFF *, TIFF *));
+ static byte *loadPalette PARM((TIFF *, uint32, uint32, int, int, PICINFO *));
+ static byte *loadColor PARM((TIFF *, uint32, uint32, int, int, PICINFO *));
+ static int loadImage PARM((TIFF *, uint32, uint32, byte *, int));
+@@ -23,24 +52,29 @@
+
+ static long filesize;
+ static byte *rmap, *gmap, *bmap;
+-static char *filename;
++static const char *filename;
+
+ static int error_occurred;
+
++
+ /*******************************************/
+-int LoadTIFF(fname, pinfo)
+- char *fname;
++int LoadTIFF(fname, pinfo, quick)
++ char *fname;
+ PICINFO *pinfo;
++ int quick;
+ /*******************************************/
+ {
+ /* returns '1' on success, '0' on failure */
+
+ TIFF *tif;
+ uint32 w, h;
++ float xres, yres;
+ short bps, spp, photo, orient;
+ FILE *fp;
+ byte *pic8;
+ char *desc, oldpath[MAXPATHLEN+1], tmppath[MAXPATHLEN+1], *sp;
++ char tmp[256], tmpname[256];
++ int i, nump;
+
+ error_occurred = 0;
+
+@@ -60,6 +94,8 @@
+ filesize = ftell(fp);
+ fclose(fp);
+
++
++
+ rmap = pinfo->r; gmap = pinfo->g; bmap = pinfo->b;
+
+ /* a kludge: temporarily cd to the directory that the file is in (if
+@@ -71,7 +107,7 @@
+ if (fname[0] == '/') {
+ xv_getwd(oldpath, sizeof(oldpath));
+ strcpy(tmppath, fname);
+- sp = BaseName(tmppath);
++ sp = (char *) BaseName(tmppath); /* intentionally losing constness */
+ if (sp != tmppath) {
+ sp[-1] = '\0'; /* truncate before last '/' char */
+ if (chdir(tmppath)) {
+@@ -80,10 +116,65 @@
+ else filename = BaseName(fname);
+ }
+ }
+-
+-
+
+- tif=TIFFOpen(filename,"r");
++
++ nump = 1;
++
++ if (!quick) {
++ /* see if there's more than 1 image in tiff file, to determine if we
++ should do multi-page thing... */
++
++ tif = TIFFOpen(filename, "r");
++ if (!tif) return 0;
++ while (TIFFReadDirectory(tif)) ++nump;
++ TIFFClose(tif);
++ if (DEBUG)
++ fprintf(stderr,"LoadTIFF: %d page%s found\n", nump, nump==1 ? "" : "s");
++
++
++ /* if there are multiple images, copy them out to multiple tmp files,
++ and load the first one... */
++
++ if (nump>1) {
++ TIFF *in;
++
++ /* GRR 20050320: converted this fake mktemp() to use mktemp()/mkstemp()
++ internally (formerly it simply prepended tmpdir to the string and
++ returned immediately) */
++ xv_mktemp(tmpname, "xvpgXXXXXX");
++
++ if (tmpname[0] == '\0') { /* mktemp() or mkstemp() blew up */
++ sprintf(dummystr,"LoadTIFF: Unable to create temporary filename???");
++ ErrPopUp(dummystr, "\nHow unlikely!");
++ return 0;
++ }
++
++ /* GRR 20070506: could clean up unappended tmpname-file here (Linux
++ bug?), but "cleaner" (more general) to do so in KillPageFiles() */
++
++ in = TIFFOpen(filename, "r");
++ if (!in) return 0;
++ for (i=1; i<=nump; i++) {
++ sprintf(tmp, "%s%d", tmpname, i);
++ if (!copyTiff(in, tmp)) {
++ SetISTR(ISTR_WARNING, "LoadTIFF: Error writing page files!");
++ break;
++ }
++
++ if (!TIFFReadDirectory(in)) break;
++ }
++ TIFFClose(in);
++ if (DEBUG)
++ fprintf(stderr,"LoadTIFF: %d page%s written\n",
++ i-1, (i-1)==1 ? "" : "s");
++
++ sprintf(tmp, "%s%d", tmpname, 1); /* start with page #1 */
++ filename = tmp;
++ }
++ } /* if (!quick) ... */
++
++
++ tif = TIFFOpen(filename, "r");
+ if (!tif) return 0;
+
+ /* flip orientation so that image comes in X order */
+@@ -107,6 +198,11 @@
+ TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE, &bps);
+ TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &photo);
+ TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &spp);
++ if ((TIFFGetField(tif, TIFFTAG_XRESOLUTION, &xres) == 1) &&
++ (TIFFGetField(tif, TIFFTAG_YRESOLUTION, &yres) == 1)) {
++ normaspect = yres / xres;
++ if (DEBUG) fprintf(stderr,"TIFF aspect = %f\n", normaspect);
++ }
+
+ if (spp == 1) {
+ pic8 = loadPalette(tif, w, h, photo, bps, pinfo);
+@@ -116,19 +212,19 @@
+
+ /* try to get comments, if any */
+ pinfo->comment = (char *) NULL;
+-
++
+ desc = (char *) NULL;
+
+ TIFFGetField(tif, TIFFTAG_IMAGEDESCRIPTION, &desc);
+ if (desc && strlen(desc) > (size_t) 0) {
+ /* kludge: tiff library seems to return bizarre comments */
+- if (strlen(desc)==4 && strcmp(desc, "\367\377\353\370")==0) {}
++ if (strlen(desc)==4 && strcmp(desc, "\367\377\353\370")==0) {}
+ else {
+ pinfo->comment = (char *) malloc(strlen(desc) + 1);
+ if (pinfo->comment) strcpy(pinfo->comment, desc);
+ }
+ }
+-
++
+ TIFFClose(tif);
+
+ /* un-kludge */
+@@ -139,6 +235,8 @@
+ if (pic8) free(pic8);
+ if (pinfo->comment) free(pinfo->comment);
+ pinfo->comment = (char *) NULL;
++ if (!quick && nump>1) KillPageFiles(tmpname, nump);
++ SetCursors(-1);
+ return 0;
+ }
+
+@@ -148,15 +246,178 @@
+ pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
+ pinfo->frmType = F_TIFF;
+
++ if (nump>1) strcpy(pinfo->pagebname, tmpname);
++ pinfo->numpages = nump;
+
+ if (pinfo->pic) return 1;
+
++
+ /* failed. if we malloc'd a comment, free it */
+ if (pinfo->comment) free(pinfo->comment);
+ pinfo->comment = (char *) NULL;
+
++ if (!quick && nump>1) KillPageFiles(tmpname, nump);
++ SetCursors(-1);
++
+ return 0;
+-}
++}
++
++
++
++
++/*******************************************/
++
++#define CopyField(tag, v) \
++ if (TIFFGetField(in, tag, &v)) TIFFSetField(out, tag, v)
++#define CopyField2(tag, v1, v2) \
++ if (TIFFGetField(in, tag, &v1, &v2)) TIFFSetField(out, tag, v1, v2)
++#define CopyField3(tag, v1, v2, v3) \
++ if (TIFFGetField(in, tag, &v1, &v2, &v3)) TIFFSetField(out, tag, v1, v2, v3)
++
++
++/*******************************************/
++static int copyTiff(in, fname)
++ TIFF *in;
++ char *fname;
++{
++ /* copies tiff (sub)image to given filename. (Used only for multipage
++ images.) Returns 0 on error */
++
++ TIFF *out;
++ short bitspersample, samplesperpixel, shortv, *shortav;
++ uint32 w, l;
++ float floatv, *floatav;
++ char *stringv;
++ uint32 longv;
++ uint16 *red, *green, *blue, shortv2;
++ int rv;
++
++ out = TIFFOpen(fname, "w");
++ if (!out) return 0;
++
++ if (TIFFGetField(in, TIFFTAG_COMPRESSION, &shortv)){
++ /* Currently, the TIFF Library cannot correctly copy TIFF version 6.0 (or
++ * earlier) files that use "old" JPEG compression, so don't even try. */
++ if (shortv == COMPRESSION_OJPEG) return 0;
++ TIFFSetField(out, TIFFTAG_COMPRESSION, shortv);
++ }
++ CopyField (TIFFTAG_SUBFILETYPE, longv);
++ CopyField (TIFFTAG_TILEWIDTH, w);
++ CopyField (TIFFTAG_TILELENGTH, l);
++ CopyField (TIFFTAG_IMAGEWIDTH, w);
++ CopyField (TIFFTAG_IMAGELENGTH, l);
++ CopyField (TIFFTAG_BITSPERSAMPLE, bitspersample);
++ CopyField (TIFFTAG_PREDICTOR, shortv);
++ CopyField (TIFFTAG_PHOTOMETRIC, shortv);
++ CopyField (TIFFTAG_THRESHHOLDING, shortv);
++ CopyField (TIFFTAG_FILLORDER, shortv);
++ CopyField (TIFFTAG_ORIENTATION, shortv);
++ CopyField (TIFFTAG_SAMPLESPERPIXEL, samplesperpixel);
++ CopyField (TIFFTAG_MINSAMPLEVALUE, shortv);
++ CopyField (TIFFTAG_MAXSAMPLEVALUE, shortv);
++ CopyField (TIFFTAG_XRESOLUTION, floatv);
++ CopyField (TIFFTAG_YRESOLUTION, floatv);
++ CopyField (TIFFTAG_GROUP3OPTIONS, longv);
++ CopyField (TIFFTAG_GROUP4OPTIONS, longv);
++ CopyField (TIFFTAG_RESOLUTIONUNIT, shortv);
++ CopyField (TIFFTAG_PLANARCONFIG, shortv);
++ CopyField (TIFFTAG_ROWSPERSTRIP, longv);
++ CopyField (TIFFTAG_XPOSITION, floatv);
++ CopyField (TIFFTAG_YPOSITION, floatv);
++ CopyField (TIFFTAG_IMAGEDEPTH, longv);
++ CopyField (TIFFTAG_TILEDEPTH, longv);
++ CopyField2(TIFFTAG_EXTRASAMPLES, shortv, shortav);
++ CopyField3(TIFFTAG_COLORMAP, red, green, blue);
++ CopyField2(TIFFTAG_PAGENUMBER, shortv, shortv2);
++ CopyField (TIFFTAG_ARTIST, stringv);
++ CopyField (TIFFTAG_IMAGEDESCRIPTION, stringv);
++ CopyField (TIFFTAG_MAKE, stringv);
++ CopyField (TIFFTAG_MODEL, stringv);
++ CopyField (TIFFTAG_SOFTWARE, stringv);
++ CopyField (TIFFTAG_DATETIME, stringv);
++ CopyField (TIFFTAG_HOSTCOMPUTER, stringv);
++ CopyField (TIFFTAG_PAGENAME, stringv);
++ CopyField (TIFFTAG_DOCUMENTNAME, stringv);
++ CopyField2(TIFFTAG_JPEGTABLES, longv, stringv);
++ CopyField (TIFFTAG_YCBCRCOEFFICIENTS, floatav);
++ CopyField2(TIFFTAG_YCBCRSUBSAMPLING, shortv,shortv2);
++ CopyField (TIFFTAG_YCBCRPOSITIONING, shortv);
++ CopyField (TIFFTAG_REFERENCEBLACKWHITE, floatav);
++
++ if (TIFFIsTiled(in)) rv = cpTiles (in, out);
++ else rv = cpStrips(in, out);
++
++ TIFFClose(out);
++ return rv;
++}
++
++
++/*******************************************/
++static int cpStrips(in, out)
++ TIFF *in, *out;
++{
++ tsize_t bufsize;
++ byte *buf;
++
++ bufsize = TIFFStripSize(in);
++ if (bufsize <= 0) return 0; /* tsize_t is signed */
++ buf = (byte *) malloc((size_t) bufsize);
++ if (buf) {
++ tstrip_t s, ns = TIFFNumberOfStrips(in);
++ uint32 *bytecounts;
++
++ TIFFGetField(in, TIFFTAG_STRIPBYTECOUNTS, &bytecounts);
++ for (s = 0; s < ns; s++) {
++ if (bytecounts[s] > bufsize) {
++ buf = (unsigned char *) realloc(buf, (size_t) bytecounts[s]);
++ if (!buf) return (0);
++ bufsize = bytecounts[s];
++ }
++ if (TIFFReadRawStrip (in, s, buf, (tsize_t) bytecounts[s]) < 0 ||
++ TIFFWriteRawStrip(out, s, buf, (tsize_t) bytecounts[s]) < 0) {
++ free(buf);
++ return 0;
++ }
++ }
++ free(buf);
++ return 1;
++ }
++ return 0;
++}
++
++
++/*******************************/
++static int cpTiles(in, out)
++ TIFF *in, *out;
++{
++ tsize_t bufsize;
++ byte *buf;
++
++ bufsize = TIFFTileSize(in);
++ if (bufsize <= 0) return 0; /* tsize_t is signed */
++ buf = (unsigned char *) malloc((size_t) bufsize);
++ if (buf) {
++ ttile_t t, nt = TIFFNumberOfTiles(in);
++ uint32 *bytecounts;
++
++ TIFFGetField(in, TIFFTAG_TILEBYTECOUNTS, &bytecounts);
++ for (t = 0; t < nt; t++) {
++ if (bytecounts[t] > bufsize) {
++ buf = (unsigned char *)realloc(buf, (size_t) bytecounts[t]);
++ if (!buf) return (0);
++ bufsize = bytecounts[t];
++ }
++ if (TIFFReadRawTile (in, t, buf, (tsize_t) bytecounts[t]) < 0 ||
++ TIFFWriteRawTile(out, t, buf, (tsize_t) bytecounts[t]) < 0) {
++ free(buf);
++ return 0;
++ }
++ }
++ free(buf);
++ return 1;
++ }
++ return 0;
++}
+
+
+ /*******************************************/
+@@ -167,6 +428,7 @@
+ PICINFO *pinfo;
+ {
+ byte *pic8;
++ uint32 npixels;
+
+ switch (photo) {
+ case PHOTOMETRIC_PALETTE:
+@@ -178,7 +440,7 @@
+ case PHOTOMETRIC_MINISWHITE:
+ case PHOTOMETRIC_MINISBLACK:
+ pinfo->colType = (bps==1) ? F_BWDITHER : F_GREYSCALE;
+- sprintf(pinfo->fullInfo,"TIFF, %u-bit, %s format. (%ld bytes)",
++ sprintf(pinfo->fullInfo,"TIFF, %u-bit, %s format. (%ld bytes)",
+ bps,
+ photo == PHOTOMETRIC_MINISWHITE ? "min-is-white" :
+ "min-is-black",
+@@ -186,9 +448,16 @@
+ break;
+ }
+
+- sprintf(pinfo->shrtInfo, "%ux%u TIFF.",w,h);
++ sprintf(pinfo->shrtInfo, "%ux%u TIFF.",(u_int) w, (u_int) h);
++
++ npixels = w*h;
++ if (npixels/w != h) {
++ /* SetISTR(ISTR_WARNING, "loadPalette() - image dimensions too large"); */
++ TIFFError(filename, "Image dimensions too large");
++ return (byte *) NULL;
++ }
+
+- pic8 = (byte *) malloc((size_t) w*h);
++ pic8 = (byte *) malloc((size_t) npixels);
+ if (!pic8) FatalError("loadPalette() - couldn't malloc 'pic8'");
+
+ if (loadImage(tif, w, h, pic8, 0)) return pic8;
+@@ -205,19 +474,28 @@
+ PICINFO *pinfo;
+ {
+ byte *pic24, *pic8;
++ uint32 npixels, count;
+
+ pinfo->colType = F_FULLCOLOR;
+- sprintf(pinfo->fullInfo, "TIFF, %u-bit, %s format. (%ld bytes)",
++ sprintf(pinfo->fullInfo, "TIFF, %u-bit, %s format. (%ld bytes)",
+ bps,
+ (photo == PHOTOMETRIC_RGB ? "RGB" :
+ photo == PHOTOMETRIC_YCBCR ? "YCbCr" :
+ "???"),
+ filesize);
+
+- sprintf(pinfo->shrtInfo, "%ux%u TIFF.",w,h);
++ sprintf(pinfo->shrtInfo, "%ux%u TIFF.",(u_int) w, (u_int) h);
++
++ npixels = w*h;
++ count = 3*npixels;
++ if (npixels/w != h || count/3 != npixels) {
++ /* SetISTR(ISTR_WARNING, "loadPalette() - image dimensions too large"); */
++ TIFFError(filename, "Image dimensions too large");
++ return (byte *) NULL;
++ }
+
+ /* allocate 24-bit image */
+- pic24 = (byte *) malloc((size_t) w*h*3);
++ pic24 = (byte *) malloc((size_t) count);
+ if (!pic24) FatalError("loadColor() - couldn't malloc 'pic24'");
+
+ pic8 = (byte *) NULL;
+@@ -249,7 +527,7 @@
+ vsprintf(cp, fmt, ap);
+ strcat(cp, ".");
+
+- SetISTR(ISTR_WARNING,buf);
++ SetISTR(ISTR_WARNING, "%s", buf);
+
+ error_occurred = 1;
+ }
+@@ -273,7 +551,7 @@
+ vsprintf(cp, fmt, ap);
+ strcat(cp, ".");
+
+- SetISTR(ISTR_WARNING,buf);
++ SetISTR(ISTR_WARNING, "%s", buf);
+ }
+
+
+@@ -301,10 +579,14 @@
+ static byte **BWmap;
+ static byte **PALmap;
+
+-typedef void (*tileContigRoutine) PARM((byte*, u_char*, RGBvalue*,
++/* XXX Work around some collisions with the new library. */
++#define tileContigRoutine _tileContigRoutine
++#define tileSeparateRoutine _tileSeparateRoutine
++
++typedef void (*tileContigRoutine) PARM((byte*, u_char*, RGBvalue*,
+ uint32, uint32, int, int));
+
+-typedef void (*tileSeparateRoutine) PARM((byte*, u_char*, u_char*, u_char*,
++typedef void (*tileSeparateRoutine) PARM((byte*, u_char*, u_char*, u_char*,
+ RGBvalue*, uint32, uint32, int, int));
+
+
+@@ -312,13 +594,13 @@
+
+ static int gt PARM((TIFF *, uint32, uint32, byte *));
+ static uint32 setorientation PARM((TIFF *, uint32));
+-static int gtTileContig PARM((TIFF *, byte *, RGBvalue *,
++static int gtTileContig PARM((TIFF *, byte *, RGBvalue *,
+ uint32, uint32, int));
+-static int gtTileSeparate PARM((TIFF *, byte *, RGBvalue *,
++static int gtTileSeparate PARM((TIFF *, byte *, RGBvalue *,
+ uint32, uint32, int));
+-static int gtStripContig PARM((TIFF *, byte *, RGBvalue *,
++static int gtStripContig PARM((TIFF *, byte *, RGBvalue *,
+ uint32, uint32, int));
+-static int gtStripSeparate PARM((TIFF *, byte *, RGBvalue *,
++static int gtStripSeparate PARM((TIFF *, byte *, RGBvalue *,
+ uint32, uint32, int));
+
+ static int makebwmap PARM((void));
+@@ -340,7 +622,7 @@
+ uint32, uint32, int, int));
+ static void put4bitbwtile PARM((byte *, u_char *, RGBvalue *,
+ uint32, uint32, int, int));
+-static void put16bitbwtile PARM((byte *, u_char *, RGBvalue *,
++static void put16bitbwtile PARM((byte *, u_short *, RGBvalue *,
+ uint32, uint32, int, int));
+
+ static void putRGBcontig8bittile PARM((byte *, u_char *, RGBvalue *,
+@@ -349,22 +631,38 @@
+ static void putRGBcontig16bittile PARM((byte *, u_short *, RGBvalue *,
+ uint32, uint32, int, int));
+
+-static void putRGBseparate8bittile PARM((byte *, u_char *, u_char *,
+- u_char *, RGBvalue *,
++static void putRGBseparate8bittile PARM((byte *, u_char *, u_char *,
++ u_char *, RGBvalue *,
+ uint32, uint32, int, int));
+
+-static void putRGBseparate16bittile PARM((byte *, u_short *, u_short *,
+- u_short *, RGBvalue *,
++static void putRGBseparate16bittile PARM((byte *, u_short *, u_short *,
++ u_short *, RGBvalue *,
+ uint32, uint32, int, int));
+
+
+-static void initYCbCrConversion PARM((void));
++static void initYCbCrConversion PARM((void));
+
+-static void putRGBContigYCbCrClump PARM((byte *, u_char *, int, int,
+- uint32, int, int, int));
++static void putRGBContigYCbCrClump PARM((byte *, u_char *, int, int,
++ uint32, int, int, int));
+
+-static void putcontig8bitYCbCrtile PARM((byte *, u_char *, RGBvalue *,
+- uint32, uint32, int, int));
++static void putRGBSeparateYCbCrClump PARM((byte *, u_char *, u_char *,
++ u_char *, int, int, uint32, int,
++ int, int));
++
++static void putRGBSeparate16bitYCbCrClump PARM((byte *, u_short *, u_short *,
++ u_short *, int, int, uint32,
++ int, int, int));
++
++static void putcontig8bitYCbCrtile PARM((byte *, u_char *, RGBvalue *,
++ uint32, uint32, int, int));
++
++static void putYCbCrseparate8bittile PARM((byte *, u_char *, u_char *,
++ u_char *, RGBvalue *,
++ uint32, uint32, int, int));
++
++static void putYCbCrseparate16bittile PARM((byte *, u_short *, u_short *,
++ u_short *, RGBvalue *,
++ uint32, uint32, int, int));
+
+ static tileContigRoutine pickTileContigCase PARM((RGBvalue *));
+ static tileSeparateRoutine pickTileSeparateCase PARM((RGBvalue *));
+@@ -382,28 +680,28 @@
+
+ TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE, &bitspersample);
+ switch (bitspersample) {
+- case 1:
+- case 2:
++ case 1:
++ case 2:
+ case 4:
+- case 8:
++ case 8:
+ case 16: break;
+
+ default:
+ TIFFError(TIFFFileName(tif),
+- "Sorry, can not handle %d-bit pictures", bitspersample);
++ "Sorry, cannot handle %d-bit pictures", bitspersample);
+ return (0);
+ }
+
+
+ TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &samplesperpixel);
+ switch (samplesperpixel) {
+- case 1:
+- case 3:
++ case 1:
++ case 3:
+ case 4: break;
+
+ default:
+ TIFFError(TIFFFileName(tif),
+- "Sorry, can not handle %d-channel images", samplesperpixel);
++ "Sorry, cannot handle %d-channel images", samplesperpixel);
+ return (0);
+ }
+
+@@ -462,39 +760,81 @@
+ uint32 w, h;
+ byte *raster;
+ {
++#ifdef USE_LIBJPEG_FOR_TIFF_YCbCr_RGB_CONVERSION
++ u_short compression;
++#endif
+ u_short minsamplevalue, maxsamplevalue, planarconfig;
+ RGBvalue *Map;
+ int bpp = 1, e;
+ int x, range;
+
++#ifdef USE_LIBJPEG_FOR_TIFF_YCbCr_RGB_CONVERSION
++ TIFFGetField(tif, TIFFTAG_COMPRESSION, &compression);
++#endif
++ TIFFGetField(tif, TIFFTAG_PLANARCONFIG, &planarconfig);
+ TIFFGetFieldDefaulted(tif, TIFFTAG_MINSAMPLEVALUE, &minsamplevalue);
+ TIFFGetFieldDefaulted(tif, TIFFTAG_MAXSAMPLEVALUE, &maxsamplevalue);
+ Map = NULL;
+-
++
+ switch (photometric) {
+ case PHOTOMETRIC_YCBCR:
+- TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRCOEFFICIENTS,
+- &YCbCrCoeffs);
+- TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING,
+- &YCbCrHorizSampling, &YCbCrVertSampling);
+- TIFFGetFieldDefaulted(tif, TIFFTAG_REFERENCEBLACKWHITE,
+- &refBlackWhite);
+- initYCbCrConversion();
++#ifdef USE_LIBJPEG_FOR_TIFF_YCbCr_RGB_CONVERSION
++ if (compression == COMPRESSION_JPEG
++#ifdef LIBTIFF_HAS_OLDJPEG_SUPPORT
++ || compression == COMPRESSION_OJPEG
++#endif
++ ) {
++ /* FIXME: Remove the following test as soon as TIFF Library is fixed!
++ * (Currently [June 2002] this requires supporting patches in both
++ * tif_ojpeg.c and tif_jpeg.c in order to support subsampled YCbCr
++ * images having separated color planes.) */
++ if (planarconfig == PLANARCONFIG_CONTIG) {
++ /* can rely on libjpeg to convert to RGB (assuming newer libtiff,
++ * compiled with appropriate forms of JPEG support) */
++ TIFFSetField(tif, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
++ photometric = PHOTOMETRIC_RGB;
++ } else {
++ TIFFError(filename, "Cannot handle format");
++ return (0);
++ }
++ } else
++#endif // USE_LIBJPEG_FOR_TIFF_YCbCr_RGB_CONVERSION
++ {
++ TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRCOEFFICIENTS, &YCbCrCoeffs);
++ TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING,
++ &YCbCrHorizSampling, &YCbCrVertSampling);
++
++ /* According to the TIFF specification, if no "ReferenceBlackWhite"
++ * tag is present in the input file, "TIFFGetFieldDefaulted()" returns
++ * default reference black and white levels suitable for PHOTOMETRIC_RGB;
++ * namely: <0,255,0,255,0,255>. But for PHOTOMETRIC_YCBCR in JPEG
++ * images, the usual default (e.g., corresponding to the behavior of the
++ * IJG libjpeg) is: <0,255,128,255,128,255>. Since libtiff doesn't have
++ * a clean, standard interface for making this repair, the following
++ * slightly dirty code installs the default. --Scott Marovich,
++ * Hewlett-Packard Labs, 9/2001.
++ */
++ if (!TIFFGetField(tif, TIFFTAG_REFERENCEBLACKWHITE, &refBlackWhite)) {
++ TIFFGetFieldDefaulted(tif, TIFFTAG_REFERENCEBLACKWHITE, &refBlackWhite);
++ refBlackWhite[4] = refBlackWhite[2] = 1 << (bitspersample - 1);
++ }
++ TIFFGetFieldDefaulted(tif, TIFFTAG_REFERENCEBLACKWHITE, &refBlackWhite);
++ initYCbCrConversion();
++ }
+ /* fall thru... */
+-
++
+ case PHOTOMETRIC_RGB:
+ bpp *= 3;
+ if (minsamplevalue == 0 && maxsamplevalue == 255)
+ break;
+-
++
+ /* fall thru... */
+ case PHOTOMETRIC_MINISBLACK:
+ case PHOTOMETRIC_MINISWHITE:
+ range = maxsamplevalue - minsamplevalue;
+ Map = (RGBvalue *)malloc((range + 1) * sizeof (RGBvalue));
+ if (Map == NULL) {
+- TIFFError(filename,
+- "No space for photometric conversion table");
++ TIFFError(filename, "No space for photometric conversion table");
+ return (0);
+ }
+
+@@ -509,7 +849,7 @@
+ if (range<256) {
+ for (x=0; x<=range; x++) rmap[x] = gmap[x] = bmap[x] = Map[x];
+ } else {
+- for (x=0; x<256; x++)
++ for (x=0; x<256; x++)
+ rmap[x] = gmap[x] = bmap[x] = Map[(range*x)/255];
+ }
+
+@@ -529,8 +869,7 @@
+ case PHOTOMETRIC_PALETTE:
+ if (!TIFFGetField(tif, TIFFTAG_COLORMAP,
+ &redcmap, &greencmap, &bluecmap)) {
+- TIFFError(filename,
+- "Missing required \"Colormap\" tag");
++ TIFFError(filename, "Missing required \"Colormap\" tag");
+ return (0);
+ }
+
+@@ -571,7 +910,6 @@
+ return (0);
+ }
+
+- TIFFGetField(tif, TIFFTAG_PLANARCONFIG, &planarconfig);
+ if (planarconfig == PLANARCONFIG_SEPARATE && samplesperpixel > 1) {
+ e = TIFFIsTiled(tif) ? gtTileSeparate (tif, raster, Map, h, w, bpp) :
+ gtStripSeparate(tif, raster, Map, h, w, bpp);
+@@ -590,6 +928,8 @@
+ TIFF *tif;
+ uint32 h;
+ {
++ /* note that orientation was flipped in LoadTIFF() (near line 175) */
++
+ uint32 y;
+
+ TIFFGetFieldDefaulted(tif, TIFFTAG_ORIENTATION, &orientation);
+@@ -613,6 +953,11 @@
+ orientation = ORIENTATION_TOPLEFT;
+ /* fall thru... */
+ case ORIENTATION_TOPLEFT:
++ /* GRR 20050319: This may be wrong for tiled images (also stripped?);
++ * looks like we want to return th-1 instead of h-1 in at least some
++ * cases. For now, just added quick hack (USE_TILED_TIFF_BOTLEFT_FIX)
++ * to gtTileContig(). (Note that, as of libtiff 3.7.1, tiffcp still
++ * has exactly the same bug.) */
+ y = h-1;
+ break;
+ }
+@@ -623,11 +968,11 @@
+
+
+ /*
+- * Get an tile-organized image that has
++ * Get a tile-organized image that has
+ * PlanarConfiguration contiguous if SamplesPerPixel > 1
+ * or
+ * SamplesPerPixel == 1
+- */
++ */
+ /*******************************************/
+ static int gtTileContig(tif, raster, Map, h, w, bpp)
+ TIFF *tif;
+@@ -642,11 +987,14 @@
+ int fromskew, toskew;
+ u_int nrow;
+ tileContigRoutine put;
++ tsize_t bufsize;
+
+ put = pickTileContigCase(Map);
+ if (put == 0) return (0);
+
+- buf = (u_char *) malloc((size_t) TIFFTileSize(tif));
++ bufsize = TIFFTileSize(tif);
++ if (bufsize <= 0) return 0; /* tsize_t is signed */
++ buf = (u_char *) malloc((size_t) bufsize);
+ if (buf == 0) {
+ TIFFError(filename, "No space for tile buffer");
+ return (0);
+@@ -655,12 +1003,27 @@
+ TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tw);
+ TIFFGetField(tif, TIFFTAG_TILELENGTH, &th);
+ y = setorientation(tif, h);
++#ifdef USE_TILED_TIFF_BOTLEFT_FIX /* image _originally_ ORIENTATION_BOTLEFT */
++ /* this fix causes tiles as a whole to be placed starting at the top,
++ * regardless of orientation; the only difference is what happens within
++ * a given tile (see toskew, below) */
++ /* GRR FIXME: apply globally in setorientation()? */
++ if (orientation == ORIENTATION_TOPLEFT)
++ y = th-1;
++#endif
++ /* toskew causes individual tiles to copy from bottom to top for
++ * ORIENTATION_TOPLEFT and from top to bottom otherwise */
+ toskew = (orientation == ORIENTATION_TOPLEFT ? -tw + -w : -tw + w);
+
+ for (row = 0; row < h; row += th) {
+ nrow = (row + th > h ? h - row : th);
+ for (col = 0; col < w; col += tw) {
+- if (TIFFReadTile(tif,buf,(uint32)col, (uint32)row, 0, 0) < 0
++ /*
++ * This reads the tile at (col,row) into buf. "The data placed in buf
++ * are returned decompressed and, typically, in the native byte- and
++ * bit-ordering, but are otherwise packed."
++ */
++ if (TIFFReadTile(tif, buf, (uint32)col, (uint32)row, 0, 0) < 0
+ && stoponerr) break;
+
+ if (col + tw > w) {
+@@ -670,14 +1033,18 @@
+ */
+ uint32 npix = w - col;
+ fromskew = tw - npix;
+- (*put)(raster + (y*w + col)*bpp, buf, Map, npix, (uint32) nrow,
+- fromskew, (int) ((toskew + fromskew)*bpp));
++ (*put)(raster + (y*w + col)*bpp, buf, Map, npix, (uint32) nrow,
++ fromskew, (int) ((toskew + fromskew)*bpp) );
+ } else
+- (*put)(raster + (y*w + col)*bpp, buf, Map, tw, (uint32) nrow,
++ (*put)(raster + (y*w + col)*bpp, buf, Map, tw, (uint32) nrow,
+ 0, (int) (toskew*bpp));
+ }
+
++#ifdef USE_TILED_TIFF_BOTLEFT_FIX /* image _originally_ ORIENTATION_BOTLEFT */
++ y += nrow;
++#else
+ y += (orientation == ORIENTATION_TOPLEFT ? -nrow : nrow);
++#endif
+ }
+ free(buf);
+ return (1);
+@@ -687,11 +1054,11 @@
+
+
+ /*
+- * Get an tile-organized image that has
++ * Get a tile-organized image that has
+ * SamplesPerPixel > 1
+ * PlanarConfiguration separated
+ * We assume that all such images are RGB.
+- */
++ */
+
+ /*******************************************/
+ static int gtTileSeparate(tif, raster, Map, h, w, bpp)
+@@ -701,20 +1068,26 @@
+ uint32 h, w;
+ int bpp;
+ {
+- uint32 col, row, y;
+ uint32 tw, th;
++ uint32 col, row, y;
+ u_char *buf;
+ u_char *r, *g, *b;
+- int tilesize;
++ tsize_t tilesize;
++ uint32 bufsize;
+ int fromskew, toskew;
+ u_int nrow;
+ tileSeparateRoutine put;
+-
++
+ put = pickTileSeparateCase(Map);
+ if (put == 0) return (0);
+
+ tilesize = TIFFTileSize(tif);
+- buf = (u_char *)malloc((size_t) (3*tilesize));
++ bufsize = 3*tilesize;
++ if (tilesize <= 0 || bufsize/3 != tilesize) { /* tsize_t is signed */
++ TIFFError(filename, "Image dimensions too large");
++ return 0;
++ }
++ buf = (u_char *) malloc((size_t) bufsize);
+ if (buf == 0) {
+ TIFFError(filename, "No space for tile buffer");
+ return (0);
+@@ -751,10 +1124,10 @@
+ */
+ uint32 npix = w - col;
+ fromskew = tw - npix;
+- (*put)(raster + (y*w + col)*bpp, r, g, b, Map, npix, (uint32) nrow,
++ (*put)(raster + (y*w + col)*bpp, r, g, b, Map, npix, (uint32) nrow,
+ fromskew, (int) ((toskew + fromskew)*bpp));
+ } else
+- (*put)(raster + (y*w + col)*bpp, r, g, b, Map, tw, (uint32) nrow,
++ (*put)(raster + (y*w + col)*bpp, r, g, b, Map, tw, (uint32) nrow,
+ 0, (int) (toskew*bpp));
+ }
+ y += (orientation == ORIENTATION_TOPLEFT ? -nrow : nrow);
+@@ -768,7 +1141,7 @@
+ * PlanarConfiguration contiguous if SamplesPerPixel > 1
+ * or
+ * SamplesPerPixel == 1
+- */
++ */
+ /*******************************************/
+ static int gtStripContig(tif, raster, Map, h, w, bpp)
+ TIFF *tif;
+@@ -784,11 +1157,15 @@
+ uint32 imagewidth;
+ int scanline;
+ int fromskew, toskew;
+-
++ tsize_t bufsize;
++
+ put = pickTileContigCase(Map);
+ if (put == 0)
+ return (0);
+- buf = (u_char *) malloc((size_t) TIFFStripSize(tif));
++
++ bufsize = TIFFStripSize(tif);
++ if (bufsize <= 0) return 0; /* tsize_t is signed */
++ buf = (u_char *) malloc((size_t) bufsize);
+ if (buf == 0) {
+ TIFFError(filename, "No space for strip buffer");
+ return (0);
+@@ -828,25 +1205,34 @@
+ uint32 h, w;
+ int bpp;
+ {
++ uint32 nrow, row, y;
+ u_char *buf;
+ u_char *r, *g, *b;
+- uint32 row, y, nrow;
++ tsize_t stripsize;
++ uint32 bufsize;
++ int fromskew, toskew;
+ int scanline;
+ tileSeparateRoutine put;
+ uint32 rowsperstrip;
+ uint32 imagewidth;
+- u_int stripsize;
+- int fromskew, toskew;
+-
++
+ stripsize = TIFFStripSize(tif);
+- r = buf = (u_char *) malloc((size_t) 3*stripsize);
+- if (buf == 0)
++ bufsize = 3*stripsize;
++ if (stripsize <= 0 || bufsize/3 != stripsize) { /* tsize_t is signed */
++ TIFFError(filename, "Image dimensions too large");
++ return 0;
++ }
++ buf = (u_char *) malloc((size_t) bufsize);
++ if (buf == 0) {
++ TIFFError(filename, "No space for strip buffer");
+ return (0);
++ }
++ r = buf;
+ g = r + stripsize;
+ b = g + stripsize;
+ put = pickTileSeparateCase(Map);
+ if (put == 0) {
+- TIFFError(filename, "Can not handle format");
++ TIFFError(filename, "Cannot handle format");
+ return (0);
+ }
+ y = setorientation(tif, h);
+@@ -861,7 +1247,7 @@
+ nrow = (row + rowsperstrip > h ? h - row : rowsperstrip);
+ band = 0;
+ if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, (uint32) row, band),
+- (tdata_t) r, (tsize_t)(nrow*scanline)) < 0
++ (tdata_t) r, (tsize_t)(nrow*scanline)) < 0
+ && stoponerr) break;
+
+ band = 1;
+@@ -871,7 +1257,7 @@
+
+ band = 2;
+ if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, (uint32) row, band),
+- (tdata_t) b, (tsize_t)(nrow*scanline)) < 0
++ (tdata_t) b, (tsize_t)(nrow*scanline)) < 0
+ && stoponerr) break;
+
+ (*put)(raster + y*w*bpp, r, g, b, Map, w, nrow, fromskew, toskew*bpp);
+@@ -886,7 +1272,7 @@
+ /*
+ * Greyscale images with less than 8 bits/sample are handled
+ * with a table to avoid lots of shifts and masks. The table
+- * is setup so that put*bwtile (below) can retrieve 8/bitspersample
++ * is set up so that put*bwtile (below) can retrieve 8/bitspersample
+ * pixel values simply by indexing into the table with one
+ * number.
+ */
+@@ -895,7 +1281,7 @@
+ register int i;
+ int nsamples = 8 / bitspersample;
+ register byte *p;
+-
++
+ BWmap = (byte **)malloc(
+ 256*sizeof (byte *)+(256*nsamples*sizeof(byte)));
+ if (BWmap == NULL) {
+@@ -938,18 +1324,18 @@
+
+
+ /*
+- * Palette images with <= 8 bits/sample are handled
+- * with a table to avoid lots of shifts and masks. The table
+- * is setup so that put*cmaptile (below) can retrieve 8/bitspersample
+- * pixel values simply by indexing into the table with one
+- * number.
++ * Palette images with <= 8 bits/sample are handled with
++ * a table to avoid lots of shifts and masks. The table
++ * is set up so that put*cmaptile (below) can retrieve
++ * (8/bitspersample) pixel-values simply by indexing into
++ * the table with one number.
+ */
+ static int makecmap()
+ {
+ register int i;
+ int nsamples = 8 / bitspersample;
+ register byte *p;
+-
++
+ PALmap = (byte **)malloc(
+ 256*sizeof (byte *)+(256*nsamples*sizeof(byte)));
+ if (PALmap == NULL) {
+@@ -994,7 +1380,7 @@
+ /*
+ * The following routines move decoded data returned
+ * from the TIFF library into rasters filled with packed
+- * ABGR pixels (i.e. suitable for passing to lrecwrite.)
++ * ABGR pixels (i.e., suitable for passing to lrecwrite.)
+ *
+ * The routines have been created according to the most
+ * important cases and optimized. pickTileContigCase and
+@@ -1014,7 +1400,7 @@
+ #define CASE4(x,op) switch (x) { case 3: op; case 2: op; case 1: op; }
+
+ #define UNROLL8(w, op1, op2) { \
+- uint32 x; \
++ uint32 x; \
+ for (x = w; x >= 8; x -= 8) { \
+ op1; \
+ REPEAT8(op2); \
+@@ -1026,7 +1412,7 @@
+ }
+
+ #define UNROLL4(w, op1, op2) { \
+- register uint32 x; \
++ uint32 x; \
+ for (x = w; x >= 4; x -= 4) { \
+ op1; \
+ REPEAT4(op2); \
+@@ -1038,7 +1424,7 @@
+ }
+
+ #define UNROLL2(w, op1, op2) { \
+- register uint32 x; \
++ uint32 x; \
+ for (x = w; x >= 2; x -= 2) { \
+ op1; \
+ REPEAT2(op2); \
+@@ -1048,7 +1434,7 @@
+ op2; \
+ } \
+ }
+-
++
+
+ #define SKEW(r,g,b,skew) { r += skew; g += skew; b += skew; }
+
+@@ -1065,7 +1451,7 @@
+ int fromskew, toskew;
+ {
+ while (h-- > 0) {
+- UNROLL8(w,0, *cp++ = PALmap[*pp++][0]);
++ UNROLL8(w, , *cp++ = PALmap[*pp++][0]);
+ cp += toskew;
+ pp += fromskew;
+ }
+@@ -1082,7 +1468,7 @@
+ int fromskew, toskew;
+ {
+ register byte *bw;
+-
++
+ fromskew /= 2;
+ while (h-- > 0) {
+ UNROLL2(w, bw = PALmap[*pp++], *cp++ = *bw++);
+@@ -1103,7 +1489,7 @@
+ int fromskew, toskew;
+ {
+ register byte *bw;
+-
++
+ fromskew /= 4;
+ while (h-- > 0) {
+ UNROLL4(w, bw = PALmap[*pp++], *cp++ = *bw++);
+@@ -1123,10 +1509,10 @@
+ int fromskew, toskew;
+ {
+ register byte *bw;
+-
++
+ fromskew /= 8;
+ while (h-- > 0) {
+- UNROLL8(w, bw = PALmap[*pp++], *cp++ = *bw++);
++ UNROLL8(w, bw = PALmap[*pp++], *cp++ = *bw++)
+ cp += toskew;
+ pp += fromskew;
+ }
+@@ -1164,10 +1550,10 @@
+ int fromskew, toskew;
+ {
+ register byte *bw;
+-
++
+ fromskew /= 8;
+ while (h-- > 0) {
+- UNROLL8(w, bw = BWmap[*pp++], *cp++ = *bw++);
++ UNROLL8(w, bw = BWmap[*pp++], *cp++ = *bw++)
+ cp += toskew;
+ pp += fromskew;
+ }
+@@ -1184,7 +1570,7 @@
+ int fromskew, toskew;
+ {
+ register byte *bw;
+-
++
+ fromskew /= 4;
+ while (h-- > 0) {
+ UNROLL4(w, bw = BWmap[*pp++], *cp++ = *bw++);
+@@ -1204,7 +1590,7 @@
+ int fromskew, toskew;
+ {
+ register byte *bw;
+-
++
+ fromskew /= 2;
+ while (h-- > 0) {
+ UNROLL2(w, bw = BWmap[*pp++], *cp++ = *bw++);
+@@ -1218,17 +1604,16 @@
+ */
+ static void put16bitbwtile(cp, pp, Map, w, h, fromskew, toskew)
+ byte *cp;
+- u_char *pp;
++ u_short *pp;
+ RGBvalue *Map;
+ uint32 w, h;
+ int fromskew, toskew;
+ {
+ register uint32 x;
+-
++
+ while (h-- > 0) {
+ for (x=w; x>0; x--) {
+- *cp++ = Map[(pp[0] << 8) + pp[1]];
+- pp += 2;
++ *cp++ = Map[*pp++];
+ }
+ cp += toskew;
+ pp += fromskew;
+@@ -1262,7 +1647,7 @@
+ }
+ } else {
+ while (h-- > 0) {
+- UNROLL8(w,0,
++ UNROLL8(w, ,
+ *cp++ = pp[0];
+ *cp++ = pp[1];
+ *cp++ = pp[2];
+@@ -1284,7 +1669,7 @@
+ int fromskew, toskew;
+ {
+ register u_int x;
+-
++
+ fromskew *= samplesperpixel;
+ if (Map) {
+ while (h-- > 0) {
+@@ -1320,7 +1705,7 @@
+ RGBvalue *Map;
+ uint32 w, h;
+ int fromskew, toskew;
+-
++
+ {
+ if (Map) {
+ while (h-- > 0) {
+@@ -1335,7 +1720,7 @@
+ }
+ } else {
+ while (h-- > 0) {
+- UNROLL8(w,0,
++ UNROLL8(w, ,
+ *cp++ = *r++;
+ *cp++ = *g++;
+ *cp++ = *b++;
+@@ -1357,7 +1742,7 @@
+ int fromskew, toskew;
+ {
+ uint32 x;
+-
++
+ if (Map) {
+ while (h-- > 0) {
+ for (x = w; x > 0; x--) {
+@@ -1381,7 +1766,7 @@
+ }
+ }
+
+-#define Code2V(c, RB, RW, CR) ((((c)-(int)RB)*(float)CR)/(float)(RW-RB))
++#define Code2V(c, RB, RW, CR) (((((int)c)-(int)RB)*(float)CR)/(float)(RW-RB))
+
+ #define CLAMP(f,min,max) \
+ (int)((f)+.5 < (min) ? (min) : (f)+.5 > (max) ? (max) : (f)+.5)
+@@ -1390,17 +1775,32 @@
+ #define LumaGreen YCbCrCoeffs[1]
+ #define LumaBlue YCbCrCoeffs[2]
+
+-static float D1, D2;
+-static float D3, D4, D5;
++static float D1, D2, D3, D4 /*, D5 */;
+
+
+ static void initYCbCrConversion()
+ {
++ /*
++ * Old, broken version (goes back at least to 19920426; made worse 19941222):
++ * YCbCrCoeffs[] = {0.299, 0.587, 0.114}
++ * D1 = 1.402
++ * D2 = 0.714136
++ * D3 = 1.772
++ * D4 = 0.138691 <-- bogus
++ * D5 = 1.70358 <-- unnecessary
++ *
++ * New, fixed version (GRR 20050319):
++ * YCbCrCoeffs[] = {0.299, 0.587, 0.114}
++ * D1 = 1.402
++ * D2 = 0.714136
++ * D3 = 1.772
++ * D4 = 0.344136
++ */
+ D1 = 2 - 2*LumaRed;
+ D2 = D1*LumaRed / LumaGreen;
+ D3 = 2 - 2*LumaBlue;
+- D4 = D2*LumaBlue / LumaGreen;
+- D5 = 1.0 / LumaGreen;
++ D4 = D3*LumaBlue / LumaGreen; /* ARGH, used to be D2*LumaBlue/LumaGreen ! */
++/* D5 = 1.0 / LumaGreen; */ /* unnecessary */
+ }
+
+ static void putRGBContigYCbCrClump(cp, pp, cw, ch, w, n, fromskew, toskew)
+@@ -1412,7 +1812,7 @@
+ {
+ float Cb, Cr;
+ int j, k;
+-
++
+ Cb = Code2V(pp[n], refBlackWhite[2], refBlackWhite[3], 127);
+ Cr = Code2V(pp[n+1], refBlackWhite[4], refBlackWhite[5], 127);
+ for (j = 0; j < ch; j++) {
+@@ -1421,8 +1821,24 @@
+ Y = Code2V(*pp++,
+ refBlackWhite[0], refBlackWhite[1], 255);
+ R = Y + Cr*D1;
++/* G = Y*D5 - Cb*D4 - Cr*D2; highly bogus! */
++ G = Y - Cb*D4 - Cr*D2;
+ B = Y + Cb*D3;
+- G = Y*D5 - Cb*D4 - Cr*D2;
++ /*
++ * These are what the JPEG/JFIF equations--which aren't _necessarily_
++ * what JPEG/TIFF uses but which seem close enough--are supposed to be,
++ * according to Avery Lee (e.g., see http://www.fourcc.org/fccyvrgb.php):
++ *
++ * R = Y + 1.402 (Cr-128)
++ * G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)
++ * B = Y + 1.772 (Cb-128)
++ *
++ * Translated into xvtiff.c notation:
++ *
++ * R = Y + Cr*D1
++ * G = Y - Cb*D4' - Cr*D2 (i.e., omit D5 and fix D4)
++ * B = Y + Cb*D3
++ */
+ cp[3*k+0] = CLAMP(R,0,255);
+ cp[3*k+1] = CLAMP(G,0,255);
+ cp[3*k+2] = CLAMP(B,0,255);
+@@ -1432,6 +1848,62 @@
+ }
+ }
+
++static void putRGBSeparateYCbCrClump(cp, y, cb, cr, cw, ch, w, n, fromskew, toskew)
++ byte *cp;
++ u_char *y, *cb, *cr;
++ int cw, ch;
++ uint32 w;
++ int n, fromskew, toskew;
++{
++ float Cb, Cr;
++ int j, k;
++
++ Cb = Code2V(cb[0], refBlackWhite[2], refBlackWhite[3], 127);
++ Cr = Code2V(cr[0], refBlackWhite[4], refBlackWhite[5], 127);
++ for (j = 0; j < ch; j++) {
++ for (k = 0; k < cw; k++) {
++ float Y, R, G, B;
++ Y = Code2V(y[k], refBlackWhite[0], refBlackWhite[1], 255);
++ R = Y + Cr*D1;
++ G = Y - Cb*D4 - Cr*D2;
++ B = Y + Cb*D3;
++ cp[3*k+0] = CLAMP(R,0,255);
++ cp[3*k+1] = CLAMP(G,0,255);
++ cp[3*k+2] = CLAMP(B,0,255);
++ }
++ cp += w*3 + toskew;
++ y += w + ch*fromskew;
++ }
++}
++
++static void putRGBSeparate16bitYCbCrClump(cp, y, cb, cr, cw, ch, w, n, fromskew, toskew)
++ byte *cp;
++ u_short *y, *cb, *cr;
++ int cw, ch;
++ uint32 w;
++ int n, fromskew, toskew;
++{
++ float Cb, Cr;
++ int j, k;
++
++ Cb = Code2V(cb[0], refBlackWhite[2], refBlackWhite[3], 127);
++ Cr = Code2V(cr[0], refBlackWhite[4], refBlackWhite[5], 127);
++ for (j = 0; j < ch; j++) {
++ for (k = 0; k < cw; k++) {
++ float Y, R, G, B;
++ Y = Code2V(y[k], refBlackWhite[0], refBlackWhite[1], 255);
++ R = Y + Cr*D1;
++ G = Y - Cb*D4 - Cr*D2;
++ B = Y + Cb*D3;
++ cp[3*k+0] = CLAMP(R,0,255);
++ cp[3*k+1] = CLAMP(G,0,255);
++ cp[3*k+2] = CLAMP(B,0,255);
++ }
++ cp += w*3 + toskew;
++ y += w + ch*fromskew;
++ }
++}
++
+ #undef LumaBlue
+ #undef LumaGreen
+ #undef LumaRed
+@@ -1452,7 +1924,7 @@
+ u_int Coff = YCbCrVertSampling * YCbCrHorizSampling;
+ byte *tp;
+ uint32 x;
+-
++
+ /* XXX adjust fromskew */
+ while (h >= YCbCrVertSampling) {
+ tp = cp;
+@@ -1481,19 +1953,122 @@
+ pp += Coff+2;
+ }
+ if (x > 0)
+- putRGBContigYCbCrClump(tp, pp, (int) x, (int) h, w,
++ putRGBContigYCbCrClump(tp, pp, (int) x, (int) h, w,
+ (int)Coff, (int)(YCbCrHorizSampling-x),toskew);
+ }
+ }
+
+ /*
++ * 8-bit unpacked YCbCr samples => RGB
++ */
++static void putYCbCrseparate8bittile(cp, y, cb, cr, Map, w, h, fromskew, toskew)
++ byte *cp;
++ u_char *y, *cb, *cr;
++ RGBvalue *Map;
++ uint32 w, h;
++ int fromskew, toskew;
++{
++ uint32 x;
++ int fromskew2 = fromskew/YCbCrHorizSampling;
++
++ while (h >= YCbCrVertSampling) {
++ for (x = w; x >= YCbCrHorizSampling; x -= YCbCrHorizSampling) {
++ putRGBSeparateYCbCrClump(cp, y, cb, cr, YCbCrHorizSampling,
++ YCbCrVertSampling, w, 0, 0, toskew);
++ cp += 3*YCbCrHorizSampling;
++ y += YCbCrHorizSampling;
++ ++cb;
++ ++cr;
++ }
++ if (x > 0) {
++ putRGBSeparateYCbCrClump(cp, y, cb, cr, (int) x, YCbCrVertSampling,
++ w, 0, (int)(YCbCrHorizSampling - x), toskew);
++ cp += x*3;
++ y += YCbCrHorizSampling;
++ ++cb;
++ ++cr;
++ }
++ cp += (YCbCrVertSampling - 1)*w*3 + YCbCrVertSampling*toskew;
++ y += (YCbCrVertSampling - 1)*w + YCbCrVertSampling*fromskew;
++ cb += fromskew2;
++ cr += fromskew2;
++ h -= YCbCrVertSampling;
++ }
++ if (h > 0) {
++ for (x = w; x >= YCbCrHorizSampling; x -= YCbCrHorizSampling) {
++ putRGBSeparateYCbCrClump(cp, y, cb, cr, YCbCrHorizSampling, (int) h,
++ w, 0, 0, toskew);
++ cp += 3*YCbCrHorizSampling;
++ y += YCbCrHorizSampling;
++ ++cb;
++ ++cr;
++ }
++ if (x > 0)
++ putRGBSeparateYCbCrClump(cp, y, cb, cr, (int) x, (int) h, w,
++ 0, (int)(YCbCrHorizSampling-x),toskew);
++ }
++}
++
++/*
++ * 16-bit unpacked YCbCr samples => RGB
++ */
++static void putYCbCrseparate16bittile(cp, y, cb, cr, Map, w, h, fromskew, toskew)
++ byte *cp;
++ u_short *y, *cb, *cr;
++ RGBvalue *Map;
++ uint32 w, h;
++ int fromskew, toskew;
++{
++ uint32 x;
++ int fromskew2 = fromskew/YCbCrHorizSampling;
++
++ while (h >= YCbCrVertSampling) {
++ for (x = w; x >= YCbCrHorizSampling; x -= YCbCrHorizSampling) {
++ putRGBSeparate16bitYCbCrClump(cp, y, cb, cr, YCbCrHorizSampling,
++ YCbCrVertSampling, w, 0, 0, toskew);
++ cp += 3*YCbCrHorizSampling;
++ y += YCbCrHorizSampling;
++ ++cb;
++ ++cr;
++ }
++ if (x > 0) {
++ putRGBSeparate16bitYCbCrClump(cp, y, cb, cr, (int) x, YCbCrVertSampling,
++ w, 0, (int)(YCbCrHorizSampling - x),
++ toskew);
++ cp += x*3;
++ y += YCbCrHorizSampling;
++ ++cb;
++ ++cr;
++ }
++ cp += (YCbCrVertSampling - 1)*w*3 + YCbCrVertSampling*toskew;
++ y += (YCbCrVertSampling - 1)*w + YCbCrVertSampling*fromskew;
++ cb += fromskew2;
++ cr += fromskew2;
++ h -= YCbCrVertSampling;
++ }
++ if (h > 0) {
++ for (x = w; x >= YCbCrHorizSampling; x -= YCbCrHorizSampling) {
++ putRGBSeparate16bitYCbCrClump(cp, y, cb, cr, YCbCrHorizSampling, (int) h,
++ w, 0, 0, toskew);
++ cp += 3*YCbCrHorizSampling;
++ y += YCbCrHorizSampling;
++ ++cb;
++ ++cr;
++ }
++ if (x > 0)
++ putRGBSeparate16bitYCbCrClump(cp, y, cb, cr, (int) x, (int) h, w,
++ 0, (int)(YCbCrHorizSampling-x),toskew);
++ }
++}
++
++/*
+ * Select the appropriate conversion routine for packed data.
+ */
+ static tileContigRoutine pickTileContigCase(Map)
+ RGBvalue* Map;
+ {
+ tileContigRoutine put = 0;
+-
++
+ switch (photometric) {
+ case PHOTOMETRIC_RGB:
+ switch (bitspersample) {
+@@ -1501,7 +2076,7 @@
+ case 16: put = (tileContigRoutine) putRGBcontig16bittile; break;
+ }
+ break;
+-
++
+ case PHOTOMETRIC_PALETTE:
+ switch (bitspersample) {
+ case 8: put = put8bitcmaptile; break;
+@@ -1514,7 +2089,7 @@
+ case PHOTOMETRIC_MINISWHITE:
+ case PHOTOMETRIC_MINISBLACK:
+ switch (bitspersample) {
+- case 16: put = put16bitbwtile; break;
++ case 16: put = (tileContigRoutine) put16bitbwtile; break;
+ case 8: put = putgreytile; break;
+ case 4: put = put4bitbwtile; break;
+ case 2: put = put2bitbwtile; break;
+@@ -1529,7 +2104,7 @@
+ break;
+ }
+
+- if (put==0) TIFFError(filename, "Can not handle format");
++ if (put==0) TIFFError(filename, "Cannot handle format");
+ return (put);
+ }
+
+@@ -1537,14 +2112,14 @@
+ /*
+ * Select the appropriate conversion routine for unpacked data.
+ *
+- * NB: we assume that unpacked single channel data is directed
+- * to the "packed routines.
++ * NB: we assume that unpacked single-channel data is directed
++ * to the "packed" routines.
+ */
+ static tileSeparateRoutine pickTileSeparateCase(Map)
+ RGBvalue* Map;
+ {
+ tileSeparateRoutine put = 0;
+-
++
+ switch (photometric) {
+ case PHOTOMETRIC_RGB:
+ switch (bitspersample) {
+@@ -1552,12 +2127,41 @@
+ case 16: put = (tileSeparateRoutine) putRGBseparate16bittile; break;
+ }
+ break;
++
++ case PHOTOMETRIC_YCBCR:
++ switch (bitspersample) {
++ case 8: put = (tileSeparateRoutine) putYCbCrseparate8bittile; break;
++ case 16: put = (tileSeparateRoutine) putYCbCrseparate16bittile; break;
++ }
++ break;
+ }
+
+- if (put==0) TIFFError(filename, "Can not handle format");
++ if (put==0) TIFFError(filename, "Cannot handle format");
+ return (put);
+ }
+
+
+
++/*******************************************/
++void
++VersionInfoTIFF() /* GRR 19980605 */
++{
++ char temp[1024], *p, *q;
++
++ strcpy(temp, TIFFGetVersion());
++ p = temp;
++ while (!isdigit(*p))
++ ++p;
++ if ((q = strchr(p, '\n')) != NULL)
++ *q = '\0';
++
++ fprintf(stderr, " Compiled with libtiff %s", p);
++#ifdef TIFFLIB_VERSION
++ fprintf(stderr, " of %d", TIFFLIB_VERSION); /* e.g., 19960307 */
++#endif
++ fprintf(stderr, ".\n");
++}
++
++
++
+ #endif /* HAVE_TIFF */
+diff -ru xv-3.10a/xvtiffwr.c xv-3.10a-enhancements/xvtiffwr.c
+--- xv-3.10a/xvtiffwr.c 1995-01-03 13:28:13.000000000 -0800
++++ xv-3.10a-enhancements/xvtiffwr.c 2007-05-12 14:07:58.000000000 -0700
+@@ -9,15 +9,15 @@
+
+ #ifdef HAVE_TIFF
+
+-#include "tiffio.h" /* has to be after xv.h, as it needs varargs/stdarg */
++#include <tiffio.h> /* has to be after xv.h, as it needs varargs/stdarg */
+
+
+ #define ALLOW_JPEG 0 /* set to '1' to allow 'JPEG' choice in dialog box */
+
+
+ static void setupColormap PARM((TIFF *, byte *, byte *, byte *));
+-static int WriteTIFF PARM((FILE *, byte *, int, int, int,
+- byte *, byte *, byte *, int, int,
++static int WriteTIFF PARM((FILE *, byte *, int, int, int,
++ byte *, byte *, byte *, int, int,
+ char *, int, char *));
+
+
+@@ -29,7 +29,7 @@
+ {
+ short red[256], green[256], blue[256];
+ int i;
+-
++
+ /* convert 8-bit colormap to 16-bit */
+ for (i=0; i<256; i++) {
+ #define SCALE(x) ((((int)x)*((1L<<16)-1))/255)
+@@ -43,6 +43,7 @@
+
+
+ /*******************************************/
++/* Returns '0' if successful. */
+ static int WriteTIFF(fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,
+ fname,comp,comment)
+ FILE *fp;
+@@ -55,6 +56,13 @@
+ TIFF *tif;
+ byte *pix;
+ int i,j;
++ int npixels = w*h;
++
++ if (w <= 0 || h <= 0 || npixels/w != h) {
++ SetISTR(ISTR_WARNING, "%s: image dimensions too large", fname);
++ /* TIFFError(fname, "Image dimensions too large"); */
++ return -1;
++ }
+
+ #ifndef VMS
+ tif = TIFFOpen(fname, "w");
+@@ -62,7 +70,7 @@
+ tif = TIFFFdOpen(dup(fileno(fp)), fname, "w");
+ #endif
+
+- if (!tif) return 0;
++ if (!tif) return -1; /* GRR: was 0 */
+
+ WaitCursor();
+
+@@ -78,25 +86,36 @@
+ TIFFSetField(tif, TIFFTAG_GROUP3OPTIONS,
+ GROUP3OPT_2DENCODING+GROUP3OPT_FILLBITS);
+
++ if (comp == COMPRESSION_LZW)
++ TIFFSetField(tif, TIFFTAG_PREDICTOR, 2);
++
+ TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
+ TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1);
+ TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
+ TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, h);
+
+ TIFFSetField(tif, TIFFTAG_RESOLUTIONUNIT, (int)2);
+- TIFFSetField(tif, TIFFTAG_XRESOLUTION, (float)1200.0);
+- TIFFSetField(tif, TIFFTAG_YRESOLUTION, (float)1200.0);
++ TIFFSetField(tif, TIFFTAG_XRESOLUTION, (float) 72.0);
++ TIFFSetField(tif, TIFFTAG_YRESOLUTION, (float) 72.0);
+
+
+ /* write the image data */
+
+ if (ptype == PIC24) { /* only have to deal with FULLCOLOR or GREYSCALE */
+ if (colorstyle == F_FULLCOLOR) {
++ int count = 3*npixels;
++
++ if (count/3 != npixels) { /* already know w, h, npixels > 0 */
++ /* SetISTR(ISTR_WARNING, "%s: image dimensions too large", fname); */
++ TIFFError(fname, "Image dimensions too large");
++ return -1;
++ }
++
+ TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 3);
+ TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
+ TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
+-
+- TIFFWriteEncodedStrip(tif, 0, pic, w*h*3);
++
++ TIFFWriteEncodedStrip(tif, 0, pic, count);
+ }
+
+ else { /* colorstyle == F_GREYSCALE */
+@@ -106,13 +125,13 @@
+ TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
+ TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
+
+- tpic = (byte *) malloc((size_t) w*h);
++ tpic = (byte *) malloc((size_t) npixels);
+ if (!tpic) FatalError("unable to malloc in WriteTIFF()");
+
+- for (i=0, tp=tpic, sp=pic; i<w*h; i++, sp+=3)
++ for (i=0, tp=tpic, sp=pic; i<npixels; i++, sp+=3)
+ *tp++ = MONO(sp[0],sp[1],sp[2]);
+-
+- TIFFWriteEncodedStrip(tif, 0, tpic, w*h);
++
++ TIFFWriteEncodedStrip(tif, 0, tpic, npixels);
+
+ free(tpic);
+ }
+@@ -123,32 +142,42 @@
+ TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
+ TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_PALETTE);
+ setupColormap(tif, rmap, gmap, bmap);
+- TIFFWriteEncodedStrip(tif, 0, pic, w*h);
++ TIFFWriteEncodedStrip(tif, 0, pic, npixels);
+ }
+
+ else if (colorstyle == F_GREYSCALE) { /* 8-bit greyscale */
+ byte rgb[256];
+- byte *tpic = (byte *) malloc((size_t) w*h);
++ byte *tpic = (byte *) malloc((size_t) npixels);
+ byte *tp = tpic;
+ TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
+ TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
+ for (i=0; i<numcols; i++) rgb[i] = MONO(rmap[i],gmap[i],bmap[i]);
+- for (i=0, pix=pic; i<w*h; i++,pix++) {
++ for (i=0, pix=pic; i<npixels; i++,pix++) {
+ if ((i&0x7fff)==0) WaitCursor();
+ *tp++ = rgb[*pix];
+ }
+- TIFFWriteEncodedStrip(tif, 0, tpic, w*h);
++ TIFFWriteEncodedStrip(tif, 0, tpic, npixels);
+ free(tpic);
+ }
+
+ else if (colorstyle == F_BWDITHER) { /* 1-bit B/W stipple */
+ int bit,k,flipbw;
+ byte *tpic, *tp;
++ tsize_t stripsize; /* signed */
+
+ flipbw = (MONO(rmap[0],gmap[0],bmap[0]) > MONO(rmap[1],gmap[1],bmap[1]));
+ TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 1);
+ TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
+- tpic = (byte *) malloc((size_t) TIFFStripSize(tif));
++ stripsize = TIFFStripSize(tif);
++ if (stripsize <= 0) {
++ TIFFError(fname, "Image dimensions too large");
++ return -1;
++ }
++ tpic = (byte *) malloc((size_t) stripsize);
++ if (tpic == 0) {
++ TIFFError(fname, "No space for strip buffer");
++ return -1;
++ }
+ tp = tpic;
+ for (i=0, pix=pic; i<h; i++) {
+ if ((i&15)==0) WaitCursor();
+@@ -167,7 +196,7 @@
+ *tp++ = (byte) (k & 0xff);
+ }
+ }
+- TIFFWriteEncodedStrip(tif, 0, tpic, TIFFStripSize(tif));
++ TIFFWriteEncodedStrip(tif, 0, tpic, stripsize);
+ free(tpic);
+ }
+ }
+@@ -209,16 +238,16 @@
+ {
+ int y;
+
+- tiffW = CreateWindow("xv tiff", "XVtiff", NULL,
++ tiffW = CreateWindow("xv tiff", "XVtiff", NULL,
+ TWIDE, THIGH, infofg, infobg, 0);
+ if (!tiffW) FatalError("can't create tiff window!");
+
+ XSelectInput(theDisp, tiffW, ExposureMask | ButtonPressMask | KeyPressMask);
+
+- BTCreate(&tbut[T_BOK], tiffW, TWIDE-140-1, THIGH-10-BUTTH-1, 60, BUTTH,
++ BTCreate(&tbut[T_BOK], tiffW, TWIDE-140-1, THIGH-10-BUTTH-1, 60, BUTTH,
+ "Ok", infofg, infobg, hicol, locol);
+
+- BTCreate(&tbut[T_BCANC], tiffW, TWIDE-70-1, THIGH-10-BUTTH-1, 60, BUTTH,
++ BTCreate(&tbut[T_BCANC], tiffW, TWIDE-70-1, THIGH-10-BUTTH-1, 60, BUTTH,
+ "Cancel", infofg, infobg, hicol, locol);
+
+ y = 55;
+@@ -237,7 +266,7 @@
+
+ XMapSubwindows(theDisp, tiffW);
+ }
+-
++
+
+ /***************************************************/
+ void TIFFDialog(vis)
+@@ -288,9 +317,9 @@
+
+ else if (xev->type == KeyPress) {
+ XKeyEvent *e = (XKeyEvent *) xev;
+- char buf[128]; KeySym ks; XComposeStatus status;
++ char buf[128]; KeySym ks; XComposeStatus status;
+ int stlen;
+-
++
+ stlen = XLookupString(e,buf,128,&ks,&status);
+ buf[stlen] = '\0';
+
+@@ -350,7 +379,7 @@
+ static void drawTD(x,y,w,h)
+ int x,y,w,h;
+ {
+- char *title = "Save TIFF file...";
++ const char *title = "Save TIFF file...";
+ int i;
+ XRectangle xr;
+
+@@ -381,7 +410,7 @@
+ /* check BUTTs */
+
+ /* check the RBUTTS first, since they don't DO anything */
+- if ( (i=RBClick(compRB, x,y)) >= 0) {
++ if ( (i=RBClick(compRB, x,y)) >= 0) {
+ (void) RBTrack(compRB, i);
+ return;
+ }
+@@ -417,7 +446,7 @@
+ }
+ }
+ break;
+-
++
+ case T_BCANC: TIFFDialog(0); break;
+
+ default: break;
+diff -ru xv-3.10a/xvxbm.c xv-3.10a-enhancements/xvxbm.c
+--- xv-3.10a/xvxbm.c 1994-12-22 14:34:41.000000000 -0800
++++ xv-3.10a-enhancements/xvxbm.c 2007-05-13 17:45:48.000000000 -0700
+@@ -25,9 +25,9 @@
+ * move forward to next occurence of '0x'
+ * repeat
+ */
+-
+
+-static int xbmError PARM((char *, char *));
++
++static int xbmError PARM((const char *, const char *));
+
+
+ /*******************************************/
+@@ -44,7 +44,7 @@
+ long filesize;
+ char line[256], name[256];
+ byte hex[256];
+- char *bname;
++ const char *bname;
+
+ k = 0;
+
+@@ -59,7 +59,7 @@
+
+ /* read width: skip lines until we hit a #define */
+ while (1) {
+- if (!fgets(line,256,fp))
++ if (!fgets(line,256,fp))
+ return(xbmError(bname, "EOF reached in header info."));
+
+ if (strncmp(line,"#define", (size_t) 7)==0 &&
+@@ -70,9 +70,9 @@
+
+ /* read height: skip lines until we hit another #define */
+ while (1) {
+- if (!fgets(line,256,fp))
++ if (!fgets(line,256,fp))
+ return(xbmError(bname, "EOF reached in header info."));
+-
++
+ if (strncmp(line,"#define", (size_t) 7)==0 &&
+ sscanf(line,"#define %s %d", name, &h)==2 &&
+ xv_strstr(name, "_height") != NULL) break;
+@@ -84,18 +84,18 @@
+ c = getc(fp); c1 = getc(fp);
+ while (c1!=EOF && !(c=='0' && c1=='x') ) { c = c1; c1 = getc(fp); }
+
+- if (c1==EOF)
++ if (c1==EOF)
+ return(xbmError(bname, "No bitmap data found"));
+
+- if (w<1 || h<1 || w>10000 || h>10000)
++ if (w<1 || h<1 || w>10000 || h>10000)
+ return(xbmError(bname, "not an XBM file"));
+-
+- pic8 = (byte *) calloc((size_t) w*h, (size_t) 1);
++
++ pic8 = (byte *) calloc((size_t) w*h, (size_t) 1); /* safe (10^8 max) */
+ if (!pic8) return(xbmError(bname, "couldn't malloc 'pic8'"));
+
+ /* load up the pinfo structure */
+ pinfo->pic = pic8;
+- pinfo->w = w;
++ pinfo->w = w;
+ pinfo->h = h;
+ pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
+ pinfo->type = PIC8;
+@@ -120,18 +120,18 @@
+ /* read/convert the image data */
+
+ for (i=0, pix=pic8; i<h; i++)
+- for (j=0,bit=0; j<w; j++, pix++, bit = (++bit)&7) {
++ for (j=0,bit=0; j<w; j++, pix++, bit = (bit+1)&7) {
+
+ if (!bit) {
+ /* get next byte from file. we're already positioned at it */
+ c = getc(fp); c1 = getc(fp);
+- if (c<0 || c1<0) {
+- /* EOF: break out of loop */
++ if (c<0 || c1<0) {
++ /* EOF: break out of loop */
+ c=c1='0'; i=h; j=w;
+ xbmError(bname, "The file would appear to be truncated.");
+ }
+
+- if (hex[c1] == 255) {
++ if (hex[c1] == 255) {
+ if (hex[c] == 255) k = 0; /* no digits after the '0x' ... */
+ else k = hex[c];
+ }
+@@ -149,13 +149,13 @@
+ fclose(fp);
+
+ return 1;
+-}
++}
+
+
+
+ /*******************************************/
+ static int xbmError(fname, st)
+- char *fname, *st;
++ const char *fname, *st;
+ {
+ SetISTR(ISTR_WARNING,"%s: %s", fname, st);
+ return 0;
+@@ -172,7 +172,7 @@
+ {
+ /* pic is expected to be an array of w*h bytes, each of which is either
+ '0' or '1'.
+- The 'darker' of {rmap,gmap,bmap}[0] and {rmap,gmap,bmap}[1] is
++ The 'darker' of {rmap,gmap,bmap}[0] and {rmap,gmap,bmap}[1] is
+ considered black, and the other one, white.
+ Some sort of stippling algorithm should've
+ been called already to produce pic, otherwise the output won't be at all
+@@ -182,13 +182,12 @@
+ byte *pix;
+ char name[256], *foo;
+
+- foo = BaseName(fname);
+- strcpy(name, foo);
++ strcpy(name, BaseName(fname));
+
+ foo = (char *) index(name,'.');
+ if (foo) *foo='\0'; /* truncated name at first '.' */
+
+- fprintf(fp,"#define %s_width %d\n",name,w);
++ fprintf(fp,"#define %s_width %d\n",name,w);
+ fprintf(fp,"#define %s_height %d\n",name,h);
+ fprintf(fp,"static char %s_bits[] = {\n",name);
+
+diff -ru xv-3.10a/xvxpm.c xv-3.10a-enhancements/xvxpm.c
+--- xv-3.10a/xvxpm.c 1994-12-22 14:34:42.000000000 -0800
++++ xv-3.10a-enhancements/xvxpm.c 2007-05-13 17:52:21.000000000 -0700
+@@ -10,7 +10,7 @@
+ * format images.
+ *
+ * Thanks go to Sam Yates (syates@spam.maths.adelaide.edu.au) for
+- * provideing inspiration.
++ * providing inspiration.
+ */
+
+ #define VALUES_LEN 80 /* Max length of values line */
+@@ -48,8 +48,8 @@
+ /* a quoted string? */
+
+ /* Local Functions */
+-static int XpmLoadError PARM((char*, char*));
+-static int XpmGetc PARM((FILE*));
++static int XpmLoadError PARM((const char *, const char *));
++static int XpmGetc PARM((FILE *));
+ static int hash PARM((char *));
+ static int hash_init PARM((int));
+ static int hash_insert PARM((hentry *));
+@@ -63,110 +63,128 @@
+ PICINFO *pinfo;
+ {
+ /* returns '1' on success */
+-
++
+ FILE *fp;
+ hentry item;
+ int c;
+- char *bname;
++ const char *bname;
+ char values[VALUES_LEN];
+ byte *pic;
+ byte *i_sptr; /* image search pointer */
+ long filesize;
+ int w, h, nc, cpp, line_pos;
++ int npixels;
+ short i, j, k; /* for() loop indexes */
+ hentry *clmp; /* colormap hash-table */
+ hentry *c_sptr; /* cmap hash-table search pointer*/
+ XColor col;
+-
++
+ bname = BaseName(fname);
+ fp = fopen(fname, "r");
+ if (!fp)
+ return (XpmLoadError(bname, "couldn't open file"));
+-
++
+ if (DEBUG)
+ printf("LoadXPM(): Loading xpm from %s\n", fname);
+-
++
+ fseek(fp, 0L, 2);
+ filesize = ftell(fp);
+ fseek(fp, 0L, 0);
+-
++
+ bufchar = -2;
+ in_quote = FALSE;
+-
++
+ /* Read in the values line. It is the first string in the
+ * xpm, and contains four numbers. w, h, num_colors, and
+ * chars_per_pixel. */
+-
++
+ /* First, get to the first string */
+ while (((c = XpmGetc(fp))!=EOF) && (c != '"')) ;
+ line_pos = 0;
+-
++
+ /* Now, read in the string */
+ while (((c = XpmGetc(fp))!=EOF) && (line_pos < VALUES_LEN) && (c != '"')) {
+ values[line_pos++] = c;
+ }
+ if (c != '"')
+ return (XpmLoadError(bname, "error parsing values line"));
+-
++
+ values[line_pos] = '\0';
+ sscanf(values, "%d%d%d%d", &w, &h, &nc, &cpp);
+ if (nc <= 0 || cpp <= 0)
+ return (XpmLoadError(bname, "No colours in Xpm?"));
+-
++
++ npixels = w * h;
++ if (w <= 0 || h <= 0 || npixels/w != h)
++ return (XpmLoadError(bname, "Image dimensions out of range"));
++
+ if (nc > 256)
+ pinfo->type = PIC24;
+ else
+ pinfo->type = PIC8;
+-
++
+ if (DEBUG)
+ printf("LoadXPM(): reading a %dx%d image (%d colors)\n", w, h, nc);
+-
++
+ /* We got this far... */
+ WaitCursor();
+-
++
+ if (!hash_init(nc))
+ return (XpmLoadError(bname, "Not enough memory to hash colormap"));
+-
++
+ clmp = (hentry *) malloc(nc * sizeof(hentry)); /* Holds the colormap */
+- if (pinfo->type == PIC8) pic = (byte *) malloc((size_t) (w*h));
+- else pic = (byte *) malloc((size_t) (w*h*3));
+-
++ if (pinfo->type == PIC8)
++ pic = (byte *) malloc((size_t) npixels);
++ else {
++ int bufsize = 3*npixels;
++ if (bufsize/3 != npixels)
++ return (XpmLoadError(bname, "Image dimensions out of range"));
++ pic = (byte *) malloc((size_t) bufsize);
++ }
++
+ if (!clmp || !pic)
+ return (XpmLoadError(bname, "Not enough memory to load pixmap"));
+-
++
+ c_sptr = clmp;
+ i_sptr = pic;
+-
++
+ /* initialize the 'hex' array for zippy ASCII-hex -> int conversion */
+-
++
+ for (i = 0 ; i < 256 ; i++) hex[i] = 0;
+ for (i = '0'; i <= '9' ; i++) hex[i] = i - '0';
+ for (i = 'a'; i <= 'f' ; i++) hex[i] = i - 'a' + 10;
+ for (i = 'A'; i <= 'F' ; i++) hex[i] = i - 'A' + 10;
+-
++
+ /* Again, we've made progress. */
+ WaitCursor();
+-
++
+ /* Now, we need to read the colormap. */
+ pinfo->colType = F_BWDITHER;
+ for (i = 0 ; i < nc ; i++) {
+ while (((c = XpmGetc(fp))!=EOF) && (c != '"')) ;
+ if (c != '"')
+ return (XpmLoadError(bname, "Error reading colormap"));
+-
++
+ for (j = 0 ; j < cpp ; j++)
+ c_sptr->token[j] = XpmGetc(fp);
+ c_sptr->token[j] = '\0';
+-
++
+ while (((c = XpmGetc(fp))!=EOF) && ((c == ' ') || (c == '\t'))) ;
+ if (c == EOF) /* The failure condition of getc() */
+ return (XpmLoadError(bname, "Error parsing colormap line"));
+-
++
+ do {
+ char key[3];
+- char color[40]; /* Need to figure a good size for this... */
+- short hd; /* Hex digits per R, G, or B */
+-
++ char color[80]; /* Need to figure a good size for this... */
++
++/*
++ * Problem with spaces in color names
++ *
++ * X s Color Name m Other Name c Last Name
++ *
++ * ... this parser doesn't find `Any Name'
++ */
++
+ for (j=0; j<2 && (c != ' ') && (c != '\t') && (c != EOF); j++) {
+ key[j] = c;
+ c = XpmGetc(fp);
+@@ -177,7 +195,7 @@
+ if (c == EOF) /* The failure condition of getc() */
+ return (XpmLoadError(bname, "Error parsing colormap line"));
+
+- for (j=0; j<39 && (c!=' ') && (c!='\t') && (c!='"') && c!=EOF; j++) {
++ for (j=0; j<79 && (c!=' ') && (c!='\t') && (c!='"') && c!=EOF; j++) {
+ color[j] = c;
+ c = XpmGetc(fp);
+ }
+@@ -185,14 +203,14 @@
+
+ while ((c == ' ') || (c == '\t'))
+ c = XpmGetc(fp);
+-
++
+ if (DEBUG > 1)
+ printf("LoadXPM(): Got color key '%s', color '%s'\n",
+ key, color);
+-
++
+ if (key[0] == 's') /* Don't find a color for a symbolic name */
+ continue;
+-
++
+ if (XParseColor(theDisp,theCmap,color,&col)) {
+ if (pinfo->type == PIC8) {
+ pinfo->r[i] = col.red >> 8;
+@@ -201,8 +219,8 @@
+ c_sptr->cv_index = i;
+
+ /* Is there a better way to do this? */
+- if (pinfo->colType != F_FULLCOLOR)
+- if (pinfo->colType == F_GREYSCALE)
++ if (pinfo->colType != F_FULLCOLOR) {
++ if (pinfo->colType == F_GREYSCALE) {
+ if (pinfo->r[i] == pinfo->g[i] &&
+ pinfo->g[i] == pinfo->b[i])
+ /* Still greyscale... */
+@@ -210,9 +228,9 @@
+ else
+ /* It's color */
+ pinfo->colType = F_FULLCOLOR;
+- else
++ } else {
+ if (pinfo->r[i] == pinfo->g[i] &&
+- pinfo->g[i] == pinfo->b[i])
++ pinfo->g[i] == pinfo->b[i]) {
+ if ((pinfo->r[i] == 0 || pinfo->r[i] == 0xff) &&
+ (pinfo->g[i] == 0 || pinfo->g[i] == 0xff) &&
+ (pinfo->b[i] == 0 || pinfo->b[i] == 0xff))
+@@ -221,10 +239,12 @@
+ else
+ /* It's greyscale */
+ pinfo->colType = F_GREYSCALE;
+- else
++ } else
+ /* It's color */
+ pinfo->colType = F_FULLCOLOR;
+-
++ }
++ }
++
+ }
+ else { /* PIC24 */
+ c_sptr->cv_rgb[0] = col.red >> 8;
+@@ -236,13 +256,13 @@
+ else { /* 'None' or unrecognized color spec */
+ int rgb;
+
+- if (strcmp(color, "None") == 0) rgb = 0xb2c0dc; /* infobg */
++ if (strcasecmp(color, "None") == 0) rgb = 0xb2c0dc; /* infobg */
+ else {
+ SetISTR(ISTR_INFO, "%s: unknown color spec '%s'", bname, color);
+ Timer(1000);
+ rgb = 0x808080;
+ }
+-
++
+ if (pinfo->type == PIC8) {
+ pinfo->r[i] = (rgb>>16) & 0xff;
+ pinfo->g[i] = (rgb>> 8) & 0xff;
+@@ -256,39 +276,39 @@
+ }
+ }
+
+-
++
+ xvbcopy((char *) c_sptr, (char *) &item, sizeof(item));
+ hash_insert(&item);
+-
+- if (DEBUG > 1)
++
++ if (DEBUG > 1)
+ printf("LoadXPM(): Cmap entry %d, 0x%02x 0x%02x 0x%02x, token '%s'\n",
+ i, pinfo->r[i], pinfo->g[i], pinfo->b[i], c_sptr->token);
+-
++
+ if (*key == 'c') { /* This is the color entry, keep it. */
+ while (c!='"' && c!=EOF) c = XpmGetc(fp);
+ break;
+ }
+-
++
+ } while (c != '"');
+ c_sptr++;
+
+ if (!(i%13)) WaitCursor();
+ } /* for */
+-
++
+
+ if (DEBUG)
+ printf("LoadXPM(): Read and stored colormap.\n");
+-
++
+ /* Now, read the pixmap. */
+ for (i = 0 ; i < h ; i++) {
+ while (((c = XpmGetc(fp))!=EOF) && (c != '"')) ;
+ if (c != '"')
+ return (XpmLoadError(bname, "Error reading colormap"));
+-
++
+ for (j = 0 ; j < w ; j++) {
+ char pixel[TOKEN_LEN];
+ hentry *mapentry;
+-
++
+ for (k = 0 ; k < cpp ; k++)
+ pixel[k] = XpmGetc(fp);
+ pixel[k] = '\0';
+@@ -300,7 +320,7 @@
+ pixel);
+ return (XpmLoadError(bname, "Can't map resolve into colormap"));
+ }
+-
++
+ if (pinfo->type == PIC8)
+ *i_sptr++ = mapentry->cv_index;
+ else {
+@@ -309,35 +329,36 @@
+ *i_sptr++ = mapentry->cv_rgb[2];
+ }
+ } /* for ( j < w ) */
+- (void)XpmGetc(fp); /* Throw away the close " */
+-
++ while (((c = XpmGetc(fp))!=EOF) && /* Throw away the close " and */
++ (c != '"')); /* erase all remaining pixels */
++
+ if (!(i%7)) WaitCursor();
+ } /* for ( i < h ) */
+-
++
+ pinfo->pic = pic;
+ pinfo->normw = pinfo->w = w;
+ pinfo->normh = pinfo->h = h;
+ pinfo->frmType = F_XPM;
+
+ if (DEBUG) printf("LoadXPM(): pinfo->colType is %d\n", pinfo->colType);
+-
++
+ sprintf(pinfo->fullInfo, "Xpm v3 Pixmap (%ld bytes)", filesize);
+ sprintf(pinfo->shrtInfo, "%dx%d Xpm.", w, h);
+ pinfo->comment = (char *)NULL;
+-
++
+ hash_destroy();
+ free(clmp);
+-
++
+ if (fp != stdin)
+ fclose(fp);
+-
++
+ return(1);
+ }
+
+
+ /***************************************/
+ static int XpmLoadError(fname, st)
+- char *fname, *st;
++ const char *fname, *st;
+ {
+ SetISTR(ISTR_WARNING, "%s: %s", fname, st);
+ return 0;
+@@ -349,17 +370,17 @@
+ FILE *f;
+ {
+ int c, d, lastc;
+-
++
+ if (bufchar != -2) {
+ /* The last invocation of this routine read the character... */
+ c = bufchar;
+ bufchar = -2;
+ return(c);
+ }
+-
++
+ if ((c = getc(f)) == EOF)
+ return(EOF);
+-
++
+ if (c == '"')
+ in_quote = !in_quote;
+ else if (!in_quote && c == '/') { /* might be a C-style comment */
+@@ -389,14 +410,14 @@
+
+
+ /***************************************/
+-static int hash(token)
++static int hash(token)
+ char *token;
+ {
+ int i, sum;
+
+ for (i=sum=0; token[i] != '\0'; i++)
+ sum += token[i];
+-
++
+ sum = sum % hash_len;
+ return (sum);
+ }
+@@ -414,7 +435,7 @@
+ */
+
+ int i;
+-
++
+ hash_len = 257;
+
+ hashtab = (hentry **) malloc(sizeof(hentry *) * hash_len);
+@@ -425,7 +446,7 @@
+
+ for (i = 0 ; i < hash_len ; i++)
+ hashtab[i] = NULL;
+-
++
+ return 1;
+ }
+
+@@ -436,22 +457,22 @@
+ {
+ int key;
+ hentry *tmp;
+-
++
+ key = hash(entry->token);
+-
++
+ tmp = (hentry *) malloc(sizeof(hentry));
+ if (!tmp) {
+ SetISTR(ISTR_WARNING, "Couldn't malloc hash entry in LoadXPM()!\n");
+ return 0;
+ }
+-
++
+ xvbcopy((char *)entry, (char *)tmp, sizeof(hentry));
+-
++
+ if (hashtab[key]) tmp->next = hashtab[key];
+ else tmp->next = NULL;
+-
++
+ hashtab[key] = tmp;
+-
++
+ return 1;
+ }
+
+@@ -462,9 +483,9 @@
+ {
+ int key;
+ hentry *tmp;
+-
++
+ key = hash(token);
+-
++
+ tmp = hashtab[key];
+ while (tmp && strcmp(token, tmp->token)) {
+ tmp = tmp->next;
+@@ -479,7 +500,7 @@
+ {
+ int i;
+ hentry *tmp;
+-
++
+ for (i=0; i<hash_len; i++) {
+ while (hashtab[i]) {
+ tmp = hashtab[i]->next;
+@@ -487,7 +508,7 @@
+ hashtab[i] = tmp;
+ }
+ }
+-
++
+ free(hashtab);
+ return;
+ }
+@@ -508,10 +529,10 @@
+ /* Note here, that tokenchars is assumed to contain 64 valid token */
+ /* characters. It's hardcoded to assume this for benefit of generating */
+ /* tokens, when there are more than 64^2 colors. */
+-
++
+ short i, imax, j; /* for() loop indices */
+ short cpp = 0;
+- char *tokenchars =
++ const char *tokenchars =
+ ".#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+ char *tokens;
+ char image_name[256], *foo;
+@@ -523,20 +544,20 @@
+ long li; /* for() loop index */
+ int numcol;
+ #endif
+-
+- if (DEBUG)
++
++ if (DEBUG) {
+ if (ptype == PIC8)
+ printf("WriteXPM(): Write a %d color, colortype %d, PIC8 image.\n",
+ nc, col);
+ else
+ printf("WriteXPM(): Write a colortype %d, PIC24 image.\n", col);
+-
+- foo = BaseName(name);
+- strcpy(image_name, foo);
++ }
++
++ strcpy(image_name, BaseName(name));
+ foo = (char *)strchr(image_name, '.');
+ if (foo)
+ *foo = '\0'; /* Truncate name at first '.' */
+-
++
+ #ifdef USE_UNFINISHED_24BIT_WRITING_CODE
+ if (ptype == PIC24)
+ return -1;
+@@ -547,15 +568,15 @@
+ /* 'packed'. Code in here to do that should be removed if */
+ /* Conv24to8 is "fixed" to do this... */
+ /* Chris P. Ross (cross@eng.umd.edu) 28-Sept-94 */
+-
++
+ numcol = 0;
+-
++
+ if (ptype == PIC24) {
+ /* Reduce to an 8-bit image. Would be nice to actually write */
+ /* the 24-bit image. I'll have to code that someday... */
+ pic8 = Conv24to8(pic, w, h, 256, rtemp, gtemp, btemp);
+ if (!pic8) {
+- SetISTR(ISTR_WARNING,
++ SetISTR(ISTR_WARNING,
+ "%s: Unable to convert to 8-bit image in WriteXPM()",
+ image_name);
+ return 1;
+@@ -594,7 +615,7 @@
+ }
+ #endif
+
+-
++
+ #ifdef USE_UNFINISHED_24BIT_WRITING_CODE
+ if (ptype == PIC24) cpp = 4;
+ else if (numcol > 64) cpp = 2;
+@@ -609,7 +630,7 @@
+ fprintf(fp, "/* width height num_colors chars_per_pixel */\n");
+ fprintf(fp, "\" %3d %3d %6d %1d\",\n", w, h, numcol, cpp);
+ fprintf(fp, "/* colors */\n");
+-
++
+ switch (cpp) {
+
+ case 1: /* <= 64 colors; index into tokenchars */
+@@ -681,12 +702,12 @@
+
+ case 4:
+ /* Generate a colormap */
+-
++
+ break;
+ default:
+ break;
+ }
+-
++
+ if (fprintf(fp, "\"\n};\n") == EOF) {
+ return 1;
+ } else
+diff -ru xv-3.10a/xvxwd.c xv-3.10a-enhancements/xvxwd.c
+--- xv-3.10a/xvxwd.c 1994-12-22 14:34:40.000000000 -0800
++++ xv-3.10a-enhancements/xvxwd.c 2007-05-13 17:52:35.000000000 -0700
+@@ -1,10 +1,10 @@
+-/*
++/*
+ ** Based on xwdtopnm.c - read and write an X11 or X10 window dump file
+ **
+ ** Modified heavily by Markus Baur (mbaur@ira.uka.de) for use as a part
+ ** of xv-2.21, 12/30/92
+ **
+- ** Hacked up again to support xv-3.00 and XWDs from 64bit machines
++ ** Hacked up again to support xv-3.00 and XWDs from 64bit machines
+ ** (e.g. DEC Alphas), 04/10/94
+ **
+ ** Copyright (C) 1989, 1991 by Jef Poskanzer.
+@@ -24,42 +24,42 @@
+ /***************************** x11wd.h *****************************/
+ #define X11WD_FILE_VERSION 7
+ typedef struct {
+- CARD32 header_size; /* Size of the entire file header (bytes). */
+- CARD32 file_version; /* X11WD_FILE_VERSION */
+- CARD32 pixmap_format; /* Pixmap format */
+- CARD32 pixmap_depth; /* Pixmap depth */
+- CARD32 pixmap_width; /* Pixmap width */
+- CARD32 pixmap_height; /* Pixmap height */
+- CARD32 xoffset; /* Bitmap x offset */
+- CARD32 byte_order; /* MSBFirst, LSBFirst */
+- CARD32 bitmap_unit; /* Bitmap unit */
+- CARD32 bitmap_bit_order; /* MSBFirst, LSBFirst */
+- CARD32 bitmap_pad; /* Bitmap scanline pad */
+- CARD32 bits_per_pixel; /* Bits per pixel */
+- CARD32 bytes_per_line; /* Bytes per scanline */
+- CARD32 visual_class; /* Class of colormap */
+- CARD32 red_mask; /* Z red mask */
+- CARD32 green_mask; /* Z green mask */
+- CARD32 blue_mask; /* Z blue mask */
+- CARD32 bits_per_rgb; /* Log base 2 of distinct color values */
+- CARD32 colormap_entries; /* Number of entries in colormap */
+- CARD32 ncolors; /* Number of Color structures */
+- CARD32 window_width; /* Window width */
+- CARD32 window_height; /* Window height */
+- CARD32 window_x; /* Window upper left X coordinate */
+- CARD32 window_y; /* Window upper left Y coordinate */
+- CARD32 window_bdrwidth; /* Window border width */
++ CARD32 header_size; /* Size of the entire file header (bytes). */
++ CARD32 file_version; /* X11WD_FILE_VERSION */
++ CARD32 pixmap_format; /* Pixmap format */
++ CARD32 pixmap_depth; /* Pixmap depth */
++ CARD32 pixmap_width; /* Pixmap width */
++ CARD32 pixmap_height; /* Pixmap height */
++ CARD32 xoffset; /* Bitmap x offset */
++ CARD32 byte_order; /* MSBFirst, LSBFirst */
++ CARD32 bitmap_unit; /* Bitmap unit */
++ CARD32 bitmap_bit_order; /* MSBFirst, LSBFirst */
++ CARD32 bitmap_pad; /* Bitmap scanline pad */
++ CARD32 bits_per_pixel; /* Bits per pixel */
++ CARD32 bytes_per_line; /* Bytes per scanline */
++ CARD32 visual_class; /* Class of colormap */
++ CARD32 red_mask; /* Z red mask */
++ CARD32 grn_mask; /* Z green mask */
++ CARD32 blu_mask; /* Z blue mask */
++ CARD32 bits_per_rgb; /* Log base 2 of distinct color values */
++ CARD32 colormap_entries; /* Number of entries in colormap */
++ CARD32 ncolors; /* Number of Color structures */
++ CARD32 window_width; /* Window width */
++ CARD32 window_height; /* Window height */
++ CARD32 window_x; /* Window upper left X coordinate */
++ CARD32 window_y; /* Window upper left Y coordinate */
++ CARD32 window_bdrwidth; /* Window border width */
+ #ifdef WORD64
+- CARD32 header_pad;
++ CARD32 header_pad;
+ #endif
+- } X11WDFileHeader;
++} X11WDFileHeader;
+
+ typedef struct {
+ CARD32 num;
+ CARD16 red, green, blue;
+- CARD8 flags; /* do_red, do_green, do_blue */
++ CARD8 flags; /* do_red, do_green, do_blue */
+ CARD8 pad;
+- } X11XColor;
++} X11XColor;
+
+
+ /*-------------------------------------------------------------------------*/
+@@ -67,32 +67,35 @@
+ typedef byte pixel;
+
+ /* local functions */
+-static int getinit PARM((FILE *, int*, int*, int*, CARD32 *,
++static int getinit PARM((FILE *, int*, int*, int*, CARD32 *,
+ CARD32, PICINFO *));
+ static CARD32 getpixnum PARM((FILE *));
+-static int xwdError PARM((char *));
+-static void xwdWarning PARM((char *));
++static int xwdError PARM((const char *));
++static void xwdWarning PARM((const char *));
+ static int bs_short PARM((int));
+ static CARD32 bs_long PARM((CARD32));
+ static int readbigshort PARM((FILE *, CARD16 *));
+ static int readbiglong PARM((FILE *, CARD32 *));
+ static int readlittleshort PARM((FILE *, CARD16 *));
+ static int readlittlelong PARM((FILE *, CARD32 *));
++#if 0 /* NOTUSED */
+ static int writebigshort PARM((FILE *, int));
+ static int writebiglong PARM((FILE *, CARD32));
++#endif
+
+ static byte *pic8, *pic24;
+ static CARD32 red_mask, green_mask, blue_mask;
+-static int bits_per_item, bits_used, bit_shift, bits_per_pixel;
++static int red_shift, green_shift, blue_shift;
++static int bits_per_item, bits_used, bit_shift,
++ bits_per_pixel, bits_per_rgb;
+ static char buf[4];
+ static char *byteP;
+ static CARD16 *shortP;
+ static CARD32 *longP;
+ static CARD32 pixel_mask;
+ static int byte_swap, byte_order, bit_order, filesize;
+-static byte bw[2] = {0, 0xff};
+
+-static char *bname;
++static const char *bname;
+
+
+
+@@ -105,33 +108,38 @@
+
+ pixel *xP;
+ int col;
+- int rows, cols, padright, row;
+- CARD32 maxval, visualclass;
++ int rows=0, cols=0, padright=0, row, npixels, bufsize;
++ CARD32 maxval=0, visualclass=0;
+ FILE *ifp;
+
+ bname = BaseName(fname);
+ pinfo->pic = (byte *) NULL;
+ pinfo->comment = (char *) NULL;
+- maxval = 0;
+
+ ifp = xv_fopen(fname, "r");
+ if (!ifp) return (xwdError("can't open file"));
+-
++
+ /* figure out the file size (used to check colormap size) */
+ fseek(ifp, 0L, 2);
+ filesize = ftell(ifp);
+ fseek(ifp, 0L, 0);
+-
++
+
+ if (getinit(ifp, &cols, &rows, &padright, &visualclass, maxval, pinfo))
+ return 0;
+
++ npixels = cols * rows;
++ if (cols <= 0 || rows <= 0 || npixels/cols != rows) {
++ xwdError("Image dimensions out of range");
++ return 0;
++ }
++
+
+ switch (visualclass) {
+ case StaticGray:
+ case GrayScale:
+ pinfo->colType = F_GREYSCALE;
+- pic8 = (byte *) calloc((size_t) cols*rows, (size_t) 1);
++ pic8 = (byte *) calloc((size_t) npixels, (size_t) 1);
+ if (!pic8) {
+ xwdError("couldn't malloc 'pic'");
+ return 0;
+@@ -140,18 +148,18 @@
+ for (row=0; row<rows; row++) {
+ for (col=0, xP=pic8+(row*cols); col<cols; col++, xP++)
+ *xP = getpixnum(ifp);
+-
++
+ for (col=0; col<padright; col++) getpixnum(ifp);
+ }
+
+ pinfo->type = PIC8;
+ pinfo->pic = pic8;
+- break;
++ break;
+
+ case StaticColor:
+ case PseudoColor:
+ pinfo->colType = F_FULLCOLOR;
+- pic8 = (byte *) calloc((size_t) cols*rows, (size_t) 1);
++ pic8 = (byte *) calloc((size_t) npixels, (size_t) 1);
+ if (!pic8) {
+ xwdError("couldn't malloc 'pic'");
+ return 0;
+@@ -162,59 +170,70 @@
+ *xP = getpixnum(ifp);
+ for (col=0; col<padright; col++) getpixnum(ifp);
+ }
+-
++
+ pinfo->type = PIC8;
+ pinfo->pic = pic8;
+- break;
++ break;
+
+ case TrueColor:
+ case DirectColor:
+ pinfo->colType = F_FULLCOLOR;
+- pic24 = (byte *) calloc((size_t) cols*rows*3, (size_t) 1);
++ bufsize = 3*npixels;
++ if (bufsize/3 != npixels) {
++ xwdError("Image dimensions out of range");
++ return 0;
++ }
++ pic24 = (byte *) calloc((size_t) bufsize, (size_t) 1);
+ if (!pic24) {
+ xwdError("couldn't malloc 'pic24'");
+ return 0;
+ }
+
+- for (row=0; row<rows; row++) {
+- for (col=0, xP=pic24+(row*cols*3); col<cols; col++) {
+- CARD32 ul;
+-
+- ul = getpixnum(ifp);
+- switch (bits_per_pixel) {
+- case 16:
+- *xP++ = ((ul & red_mask) >> 0);
+- *xP++ = ((ul & green_mask) >> 5);
+- *xP++ = ((ul & blue_mask) >> 10);
+- break;
+-
+- case 24:
+- case 32:
+- *xP++ = (ul ) & 0xff;
+- *xP++ = (ul>> 8) & 0xff;
+- *xP++ = (ul>>16) & 0xff;
+- break;
+-
+- default:
+- xwdError("True/Direct only supports 16, 24, and 32 bits");
+- return 0;
+- }
+- }
++ switch (bits_per_pixel) {
++ case 16:
++ case 24:
++ case 32:
++ ;
++ default:
++ xwdError("True/Direct supports only 16, 24, and 32 bits");
++ return 0;
++ }
+
+- for (col=0; col<padright; col++) getpixnum(ifp);
++ if (byte_order == MSBFirst) {
++ for (row=0; row<rows; row++) {
++ for (col=0, xP=pic24+(row*cols*3); col<cols; col++) {
++ register CARD32 ul = getpixnum(ifp);
++
++ *xP++ = ul >> red_shift & red_mask ;
++ *xP++ = ul >> green_shift & green_mask;
++ *xP++ = ul >> blue_shift & blue_mask ;
++ };
++ for (col=0; col<padright; col++) getpixnum(ifp);
++ }
++ } else {
++ for (row=0; row<rows; row++) {
++ for (col=0, xP=pic24+(row*cols*3); col<cols; col++) {
++ register CARD32 ul = getpixnum(ifp);
++
++ *xP++ = ul >> blue_shift & blue_mask ;
++ *xP++ = ul >> green_shift & green_mask;
++ *xP++ = ul >> red_shift & red_mask ;
++ };
++ for (col=0; col<padright; col++) getpixnum(ifp);
++ }
+ }
+-
++
+ pinfo->type = PIC24;
+ pinfo->pic = pic24;
+ break;
+-
++
+ default:
+ xwdError("unknown visual class");
+ return 0;
+ }
+
+ sprintf(pinfo->fullInfo, "XWD, %d-bit %s. (%d bytes)",
+- bits_per_pixel,
++ bits_per_pixel,
+ ((visualclass == StaticGray ) ? "StaticGray" :
+ (visualclass == GrayScale ) ? "GrayScale" :
+ (visualclass == StaticColor) ? "StaticColor" :
+@@ -258,10 +277,10 @@
+ maxv = 255L;
+
+ h11P = (X11WDFileHeader*) header;
+-
++
+ if (fread(&header[0], sizeof(*h11P), (size_t) 1, file) != 1)
+ return(xwdError("couldn't read X11 XWD file header"));
+-
++
+ if (h11P->file_version != X11WD_FILE_VERSION) {
+ byte_swap = 1;
+ h11P->header_size = bs_long(h11P->header_size);
+@@ -279,8 +298,8 @@
+ h11P->bytes_per_line = bs_long(h11P->bytes_per_line);
+ h11P->visual_class = bs_long(h11P->visual_class);
+ h11P->red_mask = bs_long(h11P->red_mask);
+- h11P->green_mask = bs_long(h11P->green_mask);
+- h11P->blue_mask = bs_long(h11P->blue_mask);
++ h11P->grn_mask = bs_long(h11P->grn_mask);
++ h11P->blu_mask = bs_long(h11P->blu_mask);
+ h11P->bits_per_rgb = bs_long(h11P->bits_per_rgb);
+ h11P->colormap_entries = bs_long(h11P->colormap_entries);
+ h11P->ncolors = bs_long(h11P->ncolors);
+@@ -294,7 +313,7 @@
+ for (i=0; i<h11P->header_size - sizeof(*h11P); i++)
+ if (getc(file) == EOF)
+ return(xwdError("couldn't read rest of X11 XWD file header"));
+-
++
+ /* Check whether we can handle this dump. */
+ if (h11P->pixmap_depth > 24)
+ return(xwdError("can't handle X11 pixmap_depth > 24"));
+@@ -303,27 +322,31 @@
+ return(xwdError("can't handle X11 bits_per_rgb > 24"));
+
+ if (h11P->pixmap_format != ZPixmap && h11P->pixmap_depth != 1) {
+- sprintf(errstr, "can't handle X11 pixmap_format %d with depth != 1",
+- h11P->pixmap_format);
++ sprintf(errstr, "can't handle X11 pixmap_format %ld with depth != 1",
++ (long)h11P->pixmap_format);
+ return(xwdError(errstr));
+ }
+
+ if (h11P->bitmap_unit != 8 && h11P->bitmap_unit != 16 &&
+ h11P->bitmap_unit != 32) {
+- sprintf(errstr, "X11 bitmap_unit (%d) is non-standard - can't handle",
+- h11P->bitmap_unit);
++ sprintf(errstr, "X11 bitmap_unit (%ld) is non-standard - can't handle",
++ (long)h11P->bitmap_unit);
+ return(xwdError(errstr));
+ }
+-
++
+ grayscale = 1;
+ if (h11P->ncolors > 0) { /* Read X11 colormap. */
+- x11colors = (X11XColor*) malloc(h11P->ncolors * sizeof(X11XColor));
++ int bufsize = h11P->ncolors * sizeof(X11XColor);
++
++ if (bufsize/sizeof(X11XColor) != h11P->ncolors)
++ return(xwdError("too many colors"));
++ x11colors = (X11XColor*) malloc(bufsize);
+ if (!x11colors) return(xwdError("out of memory"));
+-
+- if (h11P->header_size + h11P->ncolors * sizeof(X11XColor)
++
++ if (h11P->header_size + bufsize
+ + h11P->pixmap_height * h11P->bytes_per_line + h11P->ncolors * 4
+ == filesize ) word64 = 1;
+-
++
+ if (word64) {
+ for (i = 0; i < h11P->ncolors; ++i) {
+ if (fread(&pad, sizeof(pad), (size_t) 1, file ) != 1)
+@@ -334,11 +357,11 @@
+ }
+ }
+ else {
+- if (fread(x11colors, sizeof(X11XColor), (size_t) h11P->ncolors, file)
++ if (fread(x11colors, sizeof(X11XColor), (size_t) h11P->ncolors, file)
+ != h11P->ncolors)
+ return(xwdError("couldn't read X11 XWD colormap"));
+ }
+-
++
+ for (i = 0; i < h11P->ncolors; ++i) {
+ if (byte_swap) {
+ x11colors[i].red = (CARD16) bs_short(x11colors[i].red);
+@@ -356,8 +379,11 @@
+ grayscale = 0;
+ }
+ }
+-
++
+ *visualclassP = h11P->visual_class;
++ /* SJT: FIXME. If bits_per_pixel == 16, maxv could be either 31 or 63.
++ It doesn't matter, though, because maxv is never used beyond here.
++ */
+ if (*visualclassP == TrueColor || *visualclassP == DirectColor) {
+ if (h11P->bits_per_pixel == 16) maxv = 31;
+ else maxv = 255;
+@@ -389,24 +415,58 @@
+ }
+ }
+ }
+-
++
+ *colsP = h11P->pixmap_width;
+ *rowsP = h11P->pixmap_height;
+ *padrightP = h11P->bytes_per_line * 8 / h11P->bits_per_pixel -
+ h11P->pixmap_width;
+-
++
+ bits_per_item = h11P->bitmap_unit;
+- bits_used = bits_per_item;
+ bits_per_pixel = h11P->bits_per_pixel;
+ byte_order = h11P->byte_order;
+ bit_order = h11P->bitmap_bit_order;
+-
++ bits_per_rgb = h11P->bits_per_rgb;
++
++
++ /* add sanity-code for freako 'exceed' server, where bitmapunit = 8
++ and bitsperpix = 32 (and depth=24)... */
++
++ if (bits_per_item < bits_per_pixel) {
++ bits_per_item = bits_per_pixel;
++
++ /* round bits_per_item up to next legal value, if necc */
++ if (bits_per_item < 8) bits_per_item = 8;
++ else if (bits_per_item < 16) bits_per_item = 16;
++ else bits_per_item = 32;
++ }
++
++
++ /* which raises the question: how (can?) you ever have a 24 bits per pix,
++ (i.e., 3 bytes, no alpha/padding) */
++
++
++ bits_used = bits_per_item;
++
+ if (bits_per_pixel == sizeof(pixel_mask) * 8) pixel_mask = (CARD32) -1;
+ else pixel_mask = (1 << bits_per_pixel) - 1;
+-
++
+ red_mask = h11P->red_mask;
+- green_mask = h11P->green_mask;
+- blue_mask = h11P->blue_mask;
++ green_mask = h11P->grn_mask;
++ blue_mask = h11P->blu_mask;
++
++ red_shift = blue_shift = green_shift = 0;
++ while (!(red_mask & 1)) {
++ red_mask >>= 1;
++ ++red_shift;
++ }
++ while (!(blue_mask & 1)) {
++ blue_mask >>= 1;
++ ++blue_shift;
++ }
++ while (!(green_mask & 1)) {
++ green_mask >>= 1;
++ ++green_shift;
++ }
+
+ byteP = (char *) buf;
+ shortP = (CARD16 *) buf;
+@@ -421,13 +481,13 @@
+ FILE* file;
+ {
+ int n;
+-
++
+ if (bits_used == bits_per_item) {
+ switch (bits_per_item) {
+ case 8:
+ *byteP = getc(file);
+ break;
+-
++
+ case 16:
+ if (byte_order == MSBFirst) {
+ if (readbigshort(file, shortP) == -1)
+@@ -438,7 +498,7 @@
+ xwdWarning("unexpected EOF");
+ }
+ break;
+-
++
+ case 32:
+ if (byte_order == MSBFirst) {
+ if (readbiglong(file, longP) == -1)
+@@ -449,48 +509,48 @@
+ xwdWarning("unexpected EOF");
+ }
+ break;
+-
++
+ default:
+ xwdWarning("can't happen");
+ }
+ bits_used = 0;
+-
++
+ if (bit_order == MSBFirst)
+ bit_shift = bits_per_item - bits_per_pixel;
+ else
+ bit_shift = 0;
+ }
+-
++
+ switch (bits_per_item) {
+ case 8:
+ n = (*byteP >> bit_shift) & pixel_mask;
+ break;
+-
++
+ case 16:
+ n = (*shortP >> bit_shift) & pixel_mask;
+ break;
+-
++
+ case 32:
+ n = (*longP >> bit_shift) & pixel_mask;
+ break;
+-
++
+ default:
+ n = 0;
+ xwdWarning("can't happen");
+ }
+-
++
+ if (bit_order == MSBFirst) bit_shift -= bits_per_pixel;
+ else bit_shift += bits_per_pixel;
+
+ bits_used += bits_per_pixel;
+-
++
+ return n;
+ }
+
+
+ /***************************/
+ static int xwdError(st)
+- char *st;
++ const char *st;
+ {
+ if (pic8 != NULL) free(pic8);
+ if (pic24 != NULL) free(pic24);
+@@ -502,7 +562,7 @@
+
+ /***************************/
+ static void xwdWarning(st)
+- char *st;
++ const char *st;
+ {
+ SetISTR(ISTR_WARNING,"%s: %s", bname, st);
+ }
+@@ -511,7 +571,7 @@
+
+
+
+-/*
++/*
+ * Byte-swapping junk.
+ */
+
+@@ -537,7 +597,7 @@
+ {
+ union cheat u;
+ unsigned char t;
+-
++
+ u.l = l;
+ t = u.c[0]; u.c[0] = u.c[3]; u.c[3] = t;
+ t = u.c[1]; u.c[1] = u.c[2]; u.c[2] = t;
+@@ -549,7 +609,7 @@
+
+
+
+-/*
++/*
+ * Endian I/O.
+ */
+
+@@ -584,7 +644,7 @@
+ {
+ *sP = getc(in) & 0xff;
+ *sP |= (getc(in) & 0xff) << 8;
+-
++
+ if (ferror(in)) return -1;
+ return 0;
+ }
+@@ -604,6 +664,7 @@
+ }
+
+
++#if 0 /* NOTUSED */
+ static int writebiglong(out, l)
+ FILE* out;
+ CARD32 l;
+@@ -624,3 +685,4 @@
+ putc(s&0xff, out);
+ return 0;
+ }
++#endif /* 0 (NOTUSED) */
diff --git a/source/xap/xv/xv-3.10a-jumbo-fix-patch-20050410.txt b/source/xap/xv/xv-3.10a-jumbo-fix-patch-20050410.txt
deleted file mode 100644
index cc4e72d39..000000000
--- a/source/xap/xv/xv-3.10a-jumbo-fix-patch-20050410.txt
+++ /dev/null
@@ -1,28743 +0,0 @@
-diff : xv-3.10a-jumbo-fix-patch-20050410.txt
-
-This is a unified diff. It should be applied (using Larry Wall's "patch"
-program) to the stock XV 3.10a sources. If desired, the jumbo-enhancements
-patch may be applied afterward.
-
-diffs below:
- Makefile
- Makefile.std
- README.jumbo
- bggen.c
- bits/icon
- cleandir
- config.h
- copyright.h
- tiff/Makefile
- tiff/Makefile.std
- tiff/RANLIB.sh
- vdcomp.c
- xcmap.c
- xv.c
- xv.h
- xv24to8.c
- xvalg.c
- xvbmp.c
- xvbrowse.c
- xvbutt.c
- xvcolor.c
- xvctrl.c
- xvcut.c
- xvdflt.c
- xvdial.c
- xvdir.c
- xvevent.c
- xvfits.c
- xvgam.c
- xvgif.c
- xvgifwr.c
- xvgrab.c
- xvgraf.c
- xviff.c
- xvimage.c
- xvinfo.c
- xviris.c
- xvjpeg.c
- xvmisc.c
- xvpbm.c
- xvpcx.c
- xvpds.c
- xvpictoppm.c
- xvpm.c
- xvpopup.c
- xvps.c
- xvrle.c
- xvroot.c
- xvscrl.c
- xvsmooth.c
- xvsunras.c
- xvtarga.c
- xvtext.c
- xvtiff.c
- xvtiffwr.c
- xvxbm.c
- xvxpm.c
- xvxwd.c
-
-
-diff -ruN xv-3.10a/Makefile xv-3.10a-bugfixes/Makefile
---- xv-3.10a/Makefile 1995-01-23 12:20:54.000000000 -0800
-+++ xv-3.10a-bugfixes/Makefile 2005-04-06 08:17:13.000000000 -0700
-@@ -2,7 +2,11 @@
-
- # your C compiler (and options) of choice
- CC = cc
--# CC = gcc -ansi
-+#CC = gcc -ansi
-+# note that -ansi kills __USE_MISC (gcc 2.95.3), which (at least in Linux)
-+# determines whether stdlib.h includes prototypes for mktemp(), random(), etc.
-+# (i.e., if you use it, you will get unnecessary compiler warnings)
-+#CC = gcc
-
- # use this if you're using 'cc' on a DEC Alpha (OSF/1) or MIPS (Ultrix) system:
- # CC = cc -std1 -Olimit 750
-@@ -14,8 +18,13 @@
- # -Wuninitialized -Wparentheses
-
-
--CCOPTS = -O
--
-+CCOPTS = -O
-+# these are the usual optimization and warning options for gcc; all such
-+# warnings but one (mktemp() use) have been eliminated (at least on Linux):
-+#CCOPTS = -O3 -Wall
-+# for the next step up in gcc noise, try adding -W (but note that it adds a
-+# huge number of unused-parameter and signed/unsigned comparison warnings):
-+#CCOPTS = -O3 -Wall -W
-
- ### NOTE: Sun running OpenWindows:
- ### if you're using a SUN running OPENWINDOWS, you need to add these two
-@@ -27,6 +36,10 @@
- ### '-I' options on the CCOPTS line to tell the compiler where said files are.
-
-
-+# BeOS _may_ need to use a different version (below), but probably not
-+CLEANDIR = cleandir
-+
-+
- ### Installation locations
- BINDIR = /usr/local/bin
- MANDIR = /usr/local/man/man1
-@@ -38,7 +51,7 @@
-
-
- ########################### CONFIGURATION OPTIONS ############################
--### NOTE: be sure to check 'config.h', for a few other configuration options
-+### NOTE: be sure to check 'config.h', for a few other configuration options
- ##############################################################################
-
- ###
-@@ -59,18 +72,25 @@
- ### if, for whatever reason, you're unable to get the TIFF library to compile
- ### on your machine, *COMMENT OUT* the following lines
- ###
--TIFF = -DDOTIFF
-+### GRR 20050319: USE_TILED_TIFF_BOTLEFT_FIX enables an experimental fix for
-+### tiled TIFFs with ORIENTATION_BOTLEFT. It may break other tiled TIFFs,
-+### or it may be required for certain other TIFF types (e.g., strips with
-+### ORIENTATION_BOTLEFT). I don't have a sufficient variety of TIFF test
-+### images at hand.
-+###
-+#TIFF = -DDOTIFF
-+TIFF = -DDOTIFF -DUSE_TILED_TIFF_BOTLEFT_FIX
- TIFFDIR = tiff
- TIFFINC = -I$(TIFFDIR)
- TIFFLIB = $(TIFFDIR)/libtiff.a
- $(TIFFLIB):
-- ( cd $(TIFFDIR) ; make CC='$(CC)' )
-+ ( cd $(TIFFDIR) ; make CC='$(CC)' COPTS='$(CCOPTS) $(MCHN)' )
-
-
- ###
- ### if, for whatever reason, you're unable to get the PDS/VICAR support
- ### to compile (xvpds.c, and vdcomp.c), *COMMENT OUT* the following line,
--### and also remove 'vdcomp' from the 'all:' dependancy
-+### and also remove 'vdcomp' from the 'all:' dependancy
- ###
- PDS = -DDOPDS
-
-@@ -78,17 +98,25 @@
- #----------System V----------
-
- # if you are running on a SysV-based machine, such as HP, Silicon Graphics,
--# Solaris, etc., uncomment the following line to get mostly there.
-+# Solaris, etc., uncomment the following line to get mostly there.
- #UNIX = -DSVR4
-
-
--#----------Machine Specific Configurations----------
-+#----------Machine-Specific Configurations----------
-+
-+### If you are using a BeOS system, uncomment the following line
-+#MCHN = -DUSE_GETCWD -I/usr/X11/include -L/usr/X11/lib
-+###
-+### The stock version of cleandir now should work for BeOS, too, so try
-+### leaving this commented out:
-+#CLEANDIR = cleandir.BeOS
-+
-
- ### If you are using an SGI system, uncomment the following line
- #MCHN = -Dsgi
-
-
--### For HP-UX, uncomment the following line:
-+### For HP-UX, uncomment the following line
- #MCHN= -Dhpux -D_HPUX_SOURCE
- # To use old HP compilers (HPUX 7.0 or so), you may need
- #MCHN= -Dhpux -D_HPUX_SOURCE +Ns4000
-@@ -102,22 +130,22 @@
-
-
- ### for LINUX, uncomment the following line
--#MCHN = -DLINUX
-+#MCHN = -DLINUX -L/usr/X11R6/lib
-
-
- # For SCO 1.1 (UNIX 3.2v2) machines, uncomment the following:
- #MCHN = -Dsco -DPOSIX
- #
- # For ODT 2.0 (UNIX 3.2v4) machines, uncomment the following:
--#MCHN= -Dsco -DPOSIX -DNO_RANDOM
-+#MCHN= -Dsco -DPOSIX -DNO_RANDOM
- #
- # Also, you should add '-lc -lx' to the end of the LIBS def below
- # -lx must be after -lc so you get the right directory routines.
-
-
- # for UMAX V by Encore Computers uncomment the following line for
--# the portable c compiler, system specific definitions and
--# location of local X11 library(if site specific, modify -L option)
-+# the portable C compiler, system-specific definitions and
-+# location of local X11 library (if site-specific, modify -L option)
- # No other switches should be necessary, or so I'm told...
- #
- #MCHN = -q extensions=pcc_c -D__UMAXV__ -L/usr2/usr/lib/X11 -DSVR4
-@@ -147,8 +175,8 @@
- #TIMERS = -DUSLEEP
-
-
--# if XV locks up whenever you click on *any* of the buttons, the Timer()
--# function in xvmisc.c is going out to lunch. A simple workaround is to
-+# if XV locks up whenever you click on *any* of the buttons, the Timer()
-+# function in xvmisc.c is going out to lunch. A simple workaround is to
- # uncomment the following line:
- #TIMERS = -DNOTIMER
-
-@@ -160,7 +188,7 @@
- #DXWM = -DDXWM
-
-
--# if, during compilation, your system complains about the types
-+# if, during compilation, your system complains about the types
- # 'u_long', 'u_short', 'u_int', etc. as being undefined, uncomment the
- # following line:
- #BSDTYPES = -DBSDTYPES
-@@ -188,7 +216,9 @@
- $(NODIRENT) $(VPRINTF) $(TIMERS) $(UNIX) $(BSDTYPES) $(RAND) \
- $(DXWM) $(MCHN)
-
-+### remove -lm for BeOS:
- LIBS = -lX11 $(JPEGLIB) $(TIFFLIB) -lm
-+#LIBS = -lX11 $(JPEGLIB) $(TIFFLIB)
-
- OBJS = xv.o xvevent.o xvroot.o xvmisc.o xvimage.o xvcolor.o xvsmooth.o \
- xv24to8.o xvgif.o xvpm.o xvinfo.o xvctrl.o xvscrl.o xvalg.o \
-@@ -231,9 +261,10 @@
-
- clean: xvclean
- rm -f bggen vdcomp xcmap xvpictoppm
-- ./cleandir $(JPEGDIR)
-- rm -f $(JPEGDIR)/jconfig.h $(JPEGDIR)/Makefile
-- ./cleandir $(TIFFDIR)
-+# clean only local jpeg and tiff dirs, not user's or system's copies:
-+ ./$(CLEANDIR) jpeg
-+ rm -f jpeg/jconfig.h jpeg/Makefile
-+ ./$(CLEANDIR) tiff
-
-
- install: all
-@@ -246,8 +277,9 @@
- cp docs/xvdocs.ps* $(LIBDIR)
-
- tar:
-+# tar only local jpeg and tiff dirs, not user's or system's copies:
- tar cvf xv.tar Makefile* Imakefile *.c *.h bits \
-- docs unsupt vms $(JPEGDIR) $(TIFFDIR) $(MISC)
-+ docs unsupt vms jpeg tiff $(MISC)
-
- xvtar:
- tar cvf xv.tar Makefile* Imakefile *.c *.h bits
-@@ -257,26 +289,26 @@
-
- ################# bitmap dependencies ####################
-
--xv.o: bits/icon bits/iconmask bits/runicon bits/runiconm
--xv.o: bits/cboard50 bits/gray25
-+xv.o: bits/icon bits/iconmask bits/runicon bits/runiconm
-+xv.o: bits/cboard50 bits/gray25
-
- xvbrowse.o: bits/br_file bits/br_dir bits/br_exe bits/br_chr bits/br_blk
--xvbrowse.o: bits/br_sock bits/br_fifo bits/br_error bits/br_unknown
-+xvbrowse.o: bits/br_sock bits/br_fifo bits/br_error # bits/br_unknown
- xvbrowse.o: bits/br_cmpres bits/br_gif bits/br_pm bits/br_pbm
- xvbrowse.o: bits/br_sunras bits/br_bmp bits/br_utah bits/br_iris
--xvbrowse.o: bits/br_pcx bits/br_jfif bits/br_tiff bits/br_pds
-+xvbrowse.o: bits/br_pcx bits/br_jfif bits/br_tiff bits/br_pds
- xvbrowse.o: bits/br_ps bits/br_iff bits/br_targa bits/br_xpm
- xvbrowse.o: bits/br_trash bits/fcurs bits/fccurs bits/fdcurs bits/fcursm
--xvbrowse.o: bits/br_xwd
-+xvbrowse.o: bits/br_xwd
-
- xvbutt.o: bits/cboard50 bits/rb_frame bits/rb_frame1 bits/rb_top
- xvbutt.o: bits/rb_bot bits/rb_dtop bits/rb_dbot bits/rb_body
- xvbutt.o: bits/rb_dot bits/cb_check bits/mb_chk
-
- xvctrl.o: bits/gray25 bits/gray50 bits/i_fifo bits/i_chr bits/i_dir
--xvctrl.o: bits/i_blk bits/i_lnk bits/i_sock bits/i_exe bits/i_reg
-+xvctrl.o: bits/i_blk bits/i_lnk bits/i_sock bits/i_exe bits/i_reg
- xvctrl.o: bits/h_rotl bits/h_rotr bits/fliph bits/flipv bits/p10
--xvctrl.o: bits/m10 bits/cut bits/copy bits/paste bits/clear
-+xvctrl.o: bits/m10 bits/cut bits/copy bits/paste bits/clear
- xvctrl.o: bits/uicon bits/oicon1 bits/oicon2 bits/icon
- xvctrl.o: bits/padimg bits/annot
-
-@@ -285,13 +317,13 @@
- xvdflt.o: bits/logo_top bits/logo_bot bits/logo_out bits/xv_jhb
- xvdflt.o: bits/xv_cpyrt bits/xv_rev bits/xv_ver
- xvdflt.o: bits/xf_left bits/xf_right bits/font5x9.h
--xvdflt.o: xvdflt.h
-+xvdflt.o: xvdflt.h
-
- xvdial.o: bits/dial_cw1 bits/dial_ccw1 bits/dial_cw2 bits/dial_ccw2
-
- xvdir.o: bits/d_load bits/d_save
-
--xvevent.o: bits/dropper bits/dropperm bits/pen bits/penm
-+xvevent.o: bits/dropper bits/dropperm bits/pen bits/penm
- xvevent.o: bits/blur bits/blurm
-
- xvgam.o: bits/h_rotl bits/h_rotr bits/h_flip bits/h_sinc bits/h_sdec
-diff -ruN xv-3.10a/Makefile.std xv-3.10a-bugfixes/Makefile.std
---- xv-3.10a/Makefile.std 1995-01-23 17:06:26.000000000 -0800
-+++ xv-3.10a-bugfixes/Makefile.std 2005-04-06 08:17:13.000000000 -0700
-@@ -2,7 +2,11 @@
-
- # your C compiler (and options) of choice
- CC = cc
--# CC = gcc -ansi
-+#CC = gcc -ansi
-+# note that -ansi kills __USE_MISC (gcc 2.95.3), which (at least in Linux)
-+# determines whether stdlib.h includes prototypes for mktemp(), random(), etc.
-+# (i.e., if you use it, you will get unnecessary compiler warnings)
-+#CC = gcc
-
- # use this if you're using 'cc' on a DEC Alpha (OSF/1) or MIPS (Ultrix) system:
- # CC = cc -std1 -Olimit 750
-@@ -14,8 +18,13 @@
- # -Wuninitialized -Wparentheses
-
-
--CCOPTS = -O
--
-+CCOPTS = -O
-+# these are the usual optimization and warning options for gcc; all such
-+# warnings but one (mktemp() use) have been eliminated (at least on Linux):
-+#CCOPTS = -O3 -Wall
-+# for the next step up in gcc noise, try adding -W (but note that it adds a
-+# huge number of unused-parameter and signed/unsigned comparison warnings):
-+#CCOPTS = -O3 -Wall -W
-
- ### NOTE: Sun running OpenWindows:
- ### if you're using a SUN running OPENWINDOWS, you need to add these two
-@@ -27,6 +36,10 @@
- ### '-I' options on the CCOPTS line to tell the compiler where said files are.
-
-
-+# BeOS _may_ need to use a different version (below), but probably not
-+CLEANDIR = cleandir
-+
-+
- ### Installation locations
- BINDIR = /usr/local/bin
- MANDIR = /usr/local/man/man1
-@@ -38,7 +51,7 @@
-
-
- ########################### CONFIGURATION OPTIONS ############################
--### NOTE: be sure to check 'config.h', for a few other configuration options
-+### NOTE: be sure to check 'config.h', for a few other configuration options
- ##############################################################################
-
- ###
-@@ -59,18 +72,25 @@
- ### if, for whatever reason, you're unable to get the TIFF library to compile
- ### on your machine, *COMMENT OUT* the following lines
- ###
--TIFF = -DDOTIFF
-+### GRR 20050319: USE_TILED_TIFF_BOTLEFT_FIX enables an experimental fix for
-+### tiled TIFFs with ORIENTATION_BOTLEFT. It may break other tiled TIFFs,
-+### or it may be required for certain other TIFF types (e.g., strips with
-+### ORIENTATION_BOTLEFT). I don't have a sufficient variety of TIFF test
-+### images at hand.
-+###
-+#TIFF = -DDOTIFF
-+TIFF = -DDOTIFF -DUSE_TILED_TIFF_BOTLEFT_FIX
- TIFFDIR = tiff
- TIFFINC = -I$(TIFFDIR)
- TIFFLIB = $(TIFFDIR)/libtiff.a
- $(TIFFLIB):
-- ( cd $(TIFFDIR) ; make CC='$(CC)' )
-+ ( cd $(TIFFDIR) ; make CC='$(CC)' COPTS='$(CCOPTS) $(MCHN)' )
-
-
- ###
- ### if, for whatever reason, you're unable to get the PDS/VICAR support
- ### to compile (xvpds.c, and vdcomp.c), *COMMENT OUT* the following line,
--### and also remove 'vdcomp' from the 'all:' dependancy
-+### and also remove 'vdcomp' from the 'all:' dependancy
- ###
- PDS = -DDOPDS
-
-@@ -78,17 +98,25 @@
- #----------System V----------
-
- # if you are running on a SysV-based machine, such as HP, Silicon Graphics,
--# Solaris, etc., uncomment the following line to get mostly there.
-+# Solaris, etc., uncomment the following line to get mostly there.
- #UNIX = -DSVR4
-
-
--#----------Machine Specific Configurations----------
-+#----------Machine-Specific Configurations----------
-+
-+### If you are using a BeOS system, uncomment the following line
-+#MCHN = -DUSE_GETCWD -I/usr/X11/include -L/usr/X11/lib
-+###
-+### The stock version of cleandir now should work for BeOS, too, so try
-+### leaving this commented out:
-+#CLEANDIR = cleandir.BeOS
-+
-
- ### If you are using an SGI system, uncomment the following line
- #MCHN = -Dsgi
-
-
--### For HP-UX, uncomment the following line:
-+### For HP-UX, uncomment the following line
- #MCHN= -Dhpux -D_HPUX_SOURCE
- # To use old HP compilers (HPUX 7.0 or so), you may need
- #MCHN= -Dhpux -D_HPUX_SOURCE +Ns4000
-@@ -102,22 +130,22 @@
-
-
- ### for LINUX, uncomment the following line
--#MCHN = -DLINUX
-+#MCHN = -DLINUX -L/usr/X11R6/lib
-
-
- # For SCO 1.1 (UNIX 3.2v2) machines, uncomment the following:
- #MCHN = -Dsco -DPOSIX
- #
- # For ODT 2.0 (UNIX 3.2v4) machines, uncomment the following:
--#MCHN= -Dsco -DPOSIX -DNO_RANDOM
-+#MCHN= -Dsco -DPOSIX -DNO_RANDOM
- #
- # Also, you should add '-lc -lx' to the end of the LIBS def below
- # -lx must be after -lc so you get the right directory routines.
-
-
- # for UMAX V by Encore Computers uncomment the following line for
--# the portable c compiler, system specific definitions and
--# location of local X11 library(if site specific, modify -L option)
-+# the portable C compiler, system-specific definitions and
-+# location of local X11 library (if site-specific, modify -L option)
- # No other switches should be necessary, or so I'm told...
- #
- #MCHN = -q extensions=pcc_c -D__UMAXV__ -L/usr2/usr/lib/X11 -DSVR4
-@@ -147,8 +175,8 @@
- #TIMERS = -DUSLEEP
-
-
--# if XV locks up whenever you click on *any* of the buttons, the Timer()
--# function in xvmisc.c is going out to lunch. A simple workaround is to
-+# if XV locks up whenever you click on *any* of the buttons, the Timer()
-+# function in xvmisc.c is going out to lunch. A simple workaround is to
- # uncomment the following line:
- #TIMERS = -DNOTIMER
-
-@@ -160,7 +188,7 @@
- #DXWM = -DDXWM
-
-
--# if, during compilation, your system complains about the types
-+# if, during compilation, your system complains about the types
- # 'u_long', 'u_short', 'u_int', etc. as being undefined, uncomment the
- # following line:
- #BSDTYPES = -DBSDTYPES
-@@ -188,7 +216,9 @@
- $(NODIRENT) $(VPRINTF) $(TIMERS) $(UNIX) $(BSDTYPES) $(RAND) \
- $(DXWM) $(MCHN)
-
-+### remove -lm for BeOS:
- LIBS = -lX11 $(JPEGLIB) $(TIFFLIB) -lm
-+#LIBS = -lX11 $(JPEGLIB) $(TIFFLIB)
-
- OBJS = xv.o xvevent.o xvroot.o xvmisc.o xvimage.o xvcolor.o xvsmooth.o \
- xv24to8.o xvgif.o xvpm.o xvinfo.o xvctrl.o xvscrl.o xvalg.o \
-@@ -231,9 +261,10 @@
-
- clean: xvclean
- rm -f bggen vdcomp xcmap xvpictoppm
-- ./cleandir $(JPEGDIR)
-- rm -f $(JPEGDIR)/jconfig.h $(JPEGDIR)/Makefile
-- ./cleandir $(TIFFDIR)
-+# clean only local jpeg and tiff dirs, not user's or system's copies:
-+ ./$(CLEANDIR) jpeg
-+ rm -f jpeg/jconfig.h jpeg/Makefile
-+ ./$(CLEANDIR) tiff
-
-
- install: all
-@@ -246,8 +277,9 @@
- cp docs/xvdocs.ps* $(LIBDIR)
-
- tar:
-+# tar only local jpeg and tiff dirs, not user's or system's copies:
- tar cvf xv.tar Makefile* Imakefile *.c *.h bits \
-- docs unsupt vms $(JPEGDIR) $(TIFFDIR) $(MISC)
-+ docs unsupt vms jpeg tiff $(MISC)
-
- xvtar:
- tar cvf xv.tar Makefile* Imakefile *.c *.h bits
-@@ -257,26 +289,26 @@
-
- ################# bitmap dependencies ####################
-
--xv.o: bits/icon bits/iconmask bits/runicon bits/runiconm
--xv.o: bits/cboard50 bits/gray25
-+xv.o: bits/icon bits/iconmask bits/runicon bits/runiconm
-+xv.o: bits/cboard50 bits/gray25
-
- xvbrowse.o: bits/br_file bits/br_dir bits/br_exe bits/br_chr bits/br_blk
--xvbrowse.o: bits/br_sock bits/br_fifo bits/br_error bits/br_unknown
-+xvbrowse.o: bits/br_sock bits/br_fifo bits/br_error # bits/br_unknown
- xvbrowse.o: bits/br_cmpres bits/br_gif bits/br_pm bits/br_pbm
- xvbrowse.o: bits/br_sunras bits/br_bmp bits/br_utah bits/br_iris
--xvbrowse.o: bits/br_pcx bits/br_jfif bits/br_tiff bits/br_pds
-+xvbrowse.o: bits/br_pcx bits/br_jfif bits/br_tiff bits/br_pds
- xvbrowse.o: bits/br_ps bits/br_iff bits/br_targa bits/br_xpm
- xvbrowse.o: bits/br_trash bits/fcurs bits/fccurs bits/fdcurs bits/fcursm
--xvbrowse.o: bits/br_xwd
-+xvbrowse.o: bits/br_xwd
-
- xvbutt.o: bits/cboard50 bits/rb_frame bits/rb_frame1 bits/rb_top
- xvbutt.o: bits/rb_bot bits/rb_dtop bits/rb_dbot bits/rb_body
- xvbutt.o: bits/rb_dot bits/cb_check bits/mb_chk
-
- xvctrl.o: bits/gray25 bits/gray50 bits/i_fifo bits/i_chr bits/i_dir
--xvctrl.o: bits/i_blk bits/i_lnk bits/i_sock bits/i_exe bits/i_reg
-+xvctrl.o: bits/i_blk bits/i_lnk bits/i_sock bits/i_exe bits/i_reg
- xvctrl.o: bits/h_rotl bits/h_rotr bits/fliph bits/flipv bits/p10
--xvctrl.o: bits/m10 bits/cut bits/copy bits/paste bits/clear
-+xvctrl.o: bits/m10 bits/cut bits/copy bits/paste bits/clear
- xvctrl.o: bits/uicon bits/oicon1 bits/oicon2 bits/icon
- xvctrl.o: bits/padimg bits/annot
-
-@@ -285,13 +317,13 @@
- xvdflt.o: bits/logo_top bits/logo_bot bits/logo_out bits/xv_jhb
- xvdflt.o: bits/xv_cpyrt bits/xv_rev bits/xv_ver
- xvdflt.o: bits/xf_left bits/xf_right bits/font5x9.h
--xvdflt.o: xvdflt.h
-+xvdflt.o: xvdflt.h
-
- xvdial.o: bits/dial_cw1 bits/dial_ccw1 bits/dial_cw2 bits/dial_ccw2
-
- xvdir.o: bits/d_load bits/d_save
-
--xvevent.o: bits/dropper bits/dropperm bits/pen bits/penm
-+xvevent.o: bits/dropper bits/dropperm bits/pen bits/penm
- xvevent.o: bits/blur bits/blurm
-
- xvgam.o: bits/h_rotl bits/h_rotr bits/h_flip bits/h_sinc bits/h_sdec
-diff -ruN xv-3.10a/README.jumbo xv-3.10a-bugfixes/README.jumbo
---- xv-3.10a/README.jumbo 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-bugfixes/README.jumbo 2005-04-10 19:55:23.000000000 -0700
-@@ -0,0 +1,387 @@
-+These are the latest versions of the XV jumbo patches I originally created
-+in February 2000 (but never distributed) and eventually updated and released
-+in May 2004, prompted by a discussion on LWN (http://lwn.net/Articles/76391/).
-+Information about the patches, updates to the patches, and the patches
-+themselves can all be found here:
-+
-+ http://pobox.com/~newt/greg_xv.html
-+ http://freshmeat.net/projects/xvjumbopatches/
-+
-+(Use the "Subscribe to new releases" link on the latter page if you want to
-+be notified of new versions automatically; trivial registration required.)
-+
-+These two patches incorporate all of the fix- and enhancement-patches
-+available from John's XV site (http://www.trilon.com/xv/downloads.html
-+and ftp://ftp.trilon.com/pub/xv/patches/), plus a number of my own fixes
-+and additions, plus quite a few from other people--though not all of the
-+ones I'd intended to (sorry, SJT, AT, and JPD!) due to lack of time after
-+dealing with the latest security issue (which I discovered, sigh). They're
-+still not fully complete, and it's possible they never will be, but I do
-+plan to continue working on them whenever the mood strikes--and I may even
-+release them publicly on rare occasions. (At the current rate, it looks
-+like once a year may be the best we can hope for...we'll see.)
-+
-+Also be aware that several other people have had the same idea over the
-+years. Ones I've found, more or less by accident, include:
-+
-+ - Landon Curt "chongo" Noll (http://www.isthe.com/chongo/)
-+ http://www.isthe.com/chongo/src/xv-patch/
-+ - Mark Ashley <mark@ibiblio.org>
-+ http://www.ibiblio.org/pub/packages/solaris/sparc/html/xv.3.10a.p19.html
-+ - Peter Jordan <pete@dc.seflin.org>
-+ http://www.ibiblio.org/pub/Linux/apps/graphics/viewers/X/xv-3.10a.patch.*
-+ - Uwe F. Mayer (http://www.tux.org/~mayer/)
-+ http://www.tux.org/~mayer/linux/book/node311.html
-+ - Kurt Wall <kwall@kurtwerks.com>
-+ http://www.kurtwerks.com/software/xv.html
-+ - Chisato Yamauchi (http://phe.phyas.aichi-edu.ac.jp/~cyamauch/index_en.html)
-+ http://phe.phyas.aichi-edu.ac.jp/~cyamauch/xv.html
-+ - Daisuke Yabuki <dxy@optix.org>
-+ http://www.optix.org/~dxy/solaris/xv/
-+ - Pekoe (http://pekoe.lair.net/)
-+ http://pekoe.lair.net/diary/xv.html
-+ - FreeBSD FreshPorts
-+ http://www.freshports.org/graphics/xv/
-+ - <sudakyo@fat.coara.or.jp>
-+ http://www.coara.or.jp/~sudakyo/XV_jp.html
-+
-+I very much doubt that this is an exhaustive list. So far, most of the other
-+patch-sets appear not to be quite as extensive or as up-to-date as my own,
-+although the last three or four do include the [large] Japanese extension
-+patches that I omitted--not because they're unworthy, but simply because I
-+didn't find them until collisions between the two sets of patches had become
-+a large problem. (Maybe for the next release... I'd intended to try for
-+this release, but the security issues ended up taking almost all of my
-+available time. And, to be honest, from my perspective, inclusion of the
-+jp-extension patches is more for completeness' sake than personal interest,
-+so their priority is fairly low.)
-+
-+Below I summarize the component patches that are encompassed by my jumbo
-+bugfixes and jumbo enhancements patches. Unfortunately, some of my own
-+additions never saw the light of day as standalone patches, but considering
-+the number of overlaps (collisions) already implicit in this list, it would
-+have been difficult to accomplish even if I'd had the time. In any case,
-+they're present in these jumbo patches but not chongo's, so those who _really_
-+care can "subtract" the two sets of patches to see what I did.
-+
-+Here's a quick guide to the "third-party" credits in the lists below:
-+
-+ AAC = Andrey A. Chernov [ache]
-+ (http://cvsweb.freebsd.org/ports/graphics/xv/files/patch-ab)
-+ AD = Andreas Dilger (adilger@clusterfs.com)
-+ AL = Alexander Lehmann (lehmann@usa.net)
-+ AT = Anthony Thyssen (http://www.cit.gu.edu.au/~anthony/)
-+ DAC = David A. Clunie (http://www.dclunie.com/xv-pcd.html)
-+ EK = Egmont Koblinger (egmont@users.sourceforge.net)
-+ GRR = Greg Roelofs (http://pobox.com/~newt/)
-+ GV = Guido Vollbeding (http://sylvana.net/guido/)
-+ JCE = John C. Elliott (http://www.seasip.demon.co.uk/ZX/zxdload.html)
-+ JHB = John H. Bradley, of course (http://www.trilon.com/xv/)
-+ JPD = Jean-Pierre Demailly (http://www-fourier.ujf-grenoble.fr/~demailly/)
-+ JR = John Rochester (http://www.freebsd.org/cgi/query-pr.cgi?pr=2920)
-+ (also http://cvsweb.freebsd.org/ports/graphics/xv/files/patch-af, -ag)
-+ JZ = Joe Zbiciak (http://spatula-city.org/~im14u2c/)
-+ LCN = Landon Curt "chongo" Noll (http://www.isthe.com/chongo/)
-+ PBJ = Peter Jordan (http://www.ibiblio.org/pub/Linux/apps/graphics/viewers/X/)
-+ PSV = Pawel S. Veselov (http://manticore.2y.net/wbmp.html)
-+ SB = Sean Borman (http://www.nd.edu/~sborman/software/xvwheelmouse.html)
-+ SJT = TenThumbs (tenthumbs@cybernex.net)
-+ TA = Tim Adye (http://hepwww.rl.ac.uk/Adye/xv-psnewstyle.html)
-+
-+Other credits are as listed on the XV Downloads page or in the respective
-+patches (e.g., the jp-extension patches or within the PNG patch).
-+
-+Finally, please note that these patches have not been blessed by John Bradley
-+in any way (although I copied him on the May 2004 announcement--no response).
-+Nor have I personally tested every change and feature! (See the BIG SCARY
-+WARNING below for further caveats.) In other words, they're both completely
-+unofficial and completely unguaranteed. But they seem to work for me. (And
-+when they don't, I fix 'em. Eventually, anyway... ;-) )
-+
-+One further "final" note: this may well be the last release to include
-+separate fix- and enhancements-patches. It is too much of a timesink to
-+maintain parallel trees--not to mention parallel makefiles (generic/public
-+vs. local/personal, old vs. new libjpeg/libtiff) and xv.h (unregistered/
-+public vs. registered/personal), particularly when some fixes come about
-+while working on an enhancement. Henceforth--assuming, of course, that
-+there _is_ a "henceforth"--I expect to merge the patches into a single
-+jumbo patch. (Alternatively, I may simply freeze the current fix-patch
-+and continue to evolve only the enhancements patch; in particular, new
-+fixes would appear only in it. Either approach would be simple enough;
-+feedback as to which would be preferable is welcomed.)
-+
-+GRR 20050410
-+
-+
-+How to build
-+------------
-+
-+The following assumes you, the user, already have the libtiff,[1]
-+libjpeg,[2] libpng,[3] and zlib[4] libraries downloaded, patched (if
-+necessary), compiled, and installed, not to mention a C compiler and
-+the bzip2,[5] tar,[6] patch,[7] and make[8] utilities. You should also
-+have downloaded the original XV 3.10a source distribution from the XV
-+Downloads page[9] and be able to edit its Makefile and config.h files
-+as indicated in the INSTALL file. Finally, you should know what a
-+Unix(-style) command line is, where to find one, and how to wield it
-+with abandon (or at least with adult supervision)--and preferably not
-+as the root user until the make install step. (A filesystem is a
-+terrible thing to waste.)
-+
-+ [1] http://www.remotesensing.org/libtiff/
-+ [2] http://www.ijg.org/
-+ [3] http://www.libpng.org/pub/png/libpng.html
-+ [4] http://www.zlib.net/
-+ [5] http://sources.redhat.com/bzip2/
-+ [6] http://www.gnu.org/directory/devel/specific/tar.html
-+ [7] http://www.gnu.org/directory/devel/specific/patch.html
-+ [8] http://www.gnu.org/directory/devel/specific/make.html
-+ [9] http://www.trilon.com/xv/downloads.html#src-distrib
-+
-++-------------------------------------------------------------------------+
-+| |
-+| BIG SCARY WARNING |
-+| |
-+| These patches work for Greg (and parts of them apparently work for |
-+| various other people), and so far Greg's CPU still computes and his |
-+| hard disks haven't been wiped. But there's no guarantee that that |
-+| will be the case for you! In particular, not every incorporated patch |
-+| has been explicitly tested, nor has every possible subcase of the |
-+| explicitly tested subset. (Read that again; it's grammatical.) Nor are |
-+| these patches officially blessed by John Bradley in any way. In other |
-+| words, if you use these patches, you do so at your own risk. (Greg |
-+| doesn't believe there are any serious problems remaining, but then, |
-+| what programmer ever does? Bugs happen.) |
-+| |
-++-------------------------------------------------------------------------+
-+
-+Assuming you have the prerequisites out of the way and aren't scared
-+off by the Big Scary Warning, here's the build procedure:
-+
-+ bzip2 -dc xv-3.10a-jumbo-patches-20050410.tar.bz2 | tar xvf -
-+ (or tar xvzf xv-3.10a-jumbo-patches-20050410.tar.gz)
-+
-+ tar xvzf xv-3.10a.tar.gz
-+
-+ cd xv-3.10a
-+
-+ patch -p1 < ../xv-3.10a-jumbo-fix-patch-20050410.txt
-+
-+ [optional] patch -p1 < ../xv-3.10a-jumbo-enh-patch-20050410.txt
-+
-+ edit Makefile and config.h as directed in INSTALL file (in particular,
-+ ensure paths to external libraries and header files are correct)
-+
-+ make
-+
-+ ./xv your_favorite_image your_other_favorite_image etc.
-+
-+If everything seems to be working to your satisfaction, go ahead and install:
-+
-+ make -n install (and double-check that things will be installed
-+ where you want them to be)
-+
-+ become root if necessary (e.g., type su)
-+
-+ make install
-+
-+That wasn't so hard, was it?
-+
-+
-+Summary of incorporated and unincorporated patches
-+--------------------------------------------------
-+
-+fixes ((*) = listed on XV Downloads page, (f) = on ftp site only):
-+
-+20040516:
-+ - grabpatch (*) [obsoleted by new-xvgrab.c below]
-+ - vispatch (*)
-+ - mp-tiff-patch (*) [technically an enhancement, but JHB says...]
-+ - longname.patch (*) [*SECURITY*]
-+ - xpm.patch (*)
-+ - deepcolor.patch (*) [slightly modified for language conformance]
-+ - gifpatch (*)
-+ - exceed_grab.patch (*)
-+ - xv-redhat6-readme.txt (*) [slightly modified for portability]
-+ - beos.patch (*) [modified for portability]
-+ - croppad.patch (f)
-+ - epsfpatch (f)
-+ - tiff1200.patch (*)
-+ - gssafer.patch (*) [*SECURITY*]
-+ - new-xvgrab.c (f) [includes grabpatch but not exceed_grab.patch]
-+ - xcmap.diff (AD) [part of xv-3.10a-png-1.2d.tar.gz]
-+ - fixes for huge number gcc -Wall warnings--including two bugs (GRR)
-+ - fix for cleandir script when no makefile exists (GRR)
-+ - *SECURITY* fix for gets() in vdcomp.c (GRR, LCN vdcomp-security.patch)
-+ - *SECURITY* fix for getwd() on Linux (GRR, LCN Linux-compile.patch)
-+ - fix for "no fuss" Linux compiles (LCN Linux-compile.patch)
-+ - partial *SECURITY* fix for mktemp() in xv.c and xvdir.c (GRR)
-+ (remaining instances in xv.c (2), xvimage.c, xvfits.c, xvpds.c, xvps.c, and
-+ possibly xvtiff.c--most involve system())
-+ - freebsd-vdcomp-newline.patch (AAC)
-+ - xv-3.10a.patch.linux (PBJ) [/bin/sh versions of cleandir, RANLIB.sh only]
-+ - removed trailing white space (GRR) [purely cosmetic]
-+20050410:
-+ - fix for YCbCr oversaturated-green bug(s) in TIFF decoder (GRR)
-+ - provisional fix for contiguous tiled TIFFs with bottom-* orientation (GRR)
-+ - fixes for gcc 3.3 -Wall warnings (GRR)
-+ - fix for incorrect 16/24-bit display of xwd dumps (SJT)
-+ - *SECURITY* fix for multiple input-validation bugs (OpenBSD/SuSE, Gentoo, GRR)
-+ (this also completes the partial mktemp() security fix listed above)
-+ - fix for (probable) 24-bit endianness bug in fixpix code (GRR)
-+
-+
-+enhancements ((*) = listed on XV Downloads page, (<who>) = third-party):
-+
-+20040516:
-+ - xv-3.10a.JPEG-patch (*)
-+ (xv-3.10a.JPEG-patch.old differs only in ftp site listed in comments at top)
-+ - xv-3.10a.TIFF-patch (*)
-+ - xv-3.10a-png-1.2d.tar.gz (AL, AD) (*)
-+ (xvjpeg.diff and xvtiff.diff ignored; xcmap.diff included in fixes)
-+ - xvpng-1.2d-fix3.patch (GRR, SJT) (*)
-+ - pdf.patch (*)
-+ - windowid.patch + windowid.patch.readme (*)
-+ - bmp32.patch (*)
-+ - fixpix-20000610.tar.gz (GV)
-+ (identical to 19961127 version except for README updates and new Win32 file)
-+ [modified to be runtime-selectable via -/+fixpix option]
-+ - browse-remember.patch (JZ)
-+ - faster-smooth.patch (JZ)
-+ - PAM support (GRR)
-+ - PNG/GIF -ibg ("image background") transparency option (GRR)
-+ (does not yet support TIFF, XPM or TGA)
-+ - VersionInfo* in help screen (GRR)
-+ - minor grammar/spelling fixes (GRR)
-+ - floating-point support for -wait when USE_TICKS enabled (GRR)
-+ - wheelmouse.patch (SB)
-+ - freebsd-gravity-hints-patch (JR)
-+ - xv-zx.patch (JCE)
-+ - xv3.10a.wapbmp.patch (PSV)
-+ - xv-3.10a-pcd.patch.20010708 (DAC)
-+ - jp-ext-bzip2-1.1.patch
-+ (from ftp://ftp.freebsd.org/pub/FreeBSD/ports/local-distfiles/shige/xv/)
-+20050410:
-+ - boosted maximum number of files from 4096 to 32768 (GRR)
-+ (note that OS kernel limits may also apply; for example, in Linux see
-+ MAX_ARG_PAGES in linux-<version>/include/linux/binfmts.h)
-+ - xv-3.10a-bmp16.patch
-+ (from http://www.coara.or.jp/~sudakyo/XV_jp.html)
-+ - final-image delay (e.g., "-wait 0.2,3" : pause 3 secs on final image) (GRR)
-+ - xv-numpad.patch (EK)
-+ - xv-delete-is-not-backspace.patch (EK)
-+ - made browser window (schnauzer) and icons configurable (AT, GRR)
-+
-+
-+not (yet?) included:
-+
-+ - others from http://www.coara.or.jp/~sudakyo/XV_jp.html (some are duplicates):
-+ -rw-r--r-- 4644 Mar 11 2004 xv-3.10a-directory.patch
-+ -rw-r--r-- 462 Mar 11 2004 xv-3.10a-dirwkey.patch
-+ -rw-r--r-- 688 Mar 11 2004 xv-3.10a-docdir.patch
-+ -rw-r--r-- 11952 Mar 11 2004 xv-3.10a-download-test0.patch
-+ -rw-r--r-- 41786 Mar 11 2004 xv-3.10a-download-test1.patch
-+ -rw-r--r-- 42397 Mar 11 2004 xv-3.10a-download-test2.patch
-+ -rw-r--r-- 47679 Mar 11 2004 xv-3.10a-download-test3.patch
-+ -rw-r--r-- 52745 Mar 11 2004 xv-3.10a-download-test4.patch
-+ -rw-r--r-- 415 Mar 11 2004 xv-3.10a-formatstr.patch
-+ -rw-r--r-- 3423 Apr 24 2004 xv-3.10a-keyzoom.patch
-+ -rw-r--r-- 1461 Mar 11 2004 xv-3.10a-locale-linux.patch
-+ -rw-r--r-- 12387 Mar 15 2004 xv-3.10a-menubutton.patch
-+ -rw-r--r-- 1178 Apr 24 2004 xv-3.10a-noblink.patch
-+ -rw-r--r-- 484 Mar 11 2004 xv-3.10a-printkey.patch
-+ -rw-r--r-- 57092 Jul 9 2004 xv-3.10a-resolution.patch
-+ -rw-r--r-- 4645 Apr 24 2004 xv-3.10a-selall.patch
-+ -rw-r--r-- 360 Mar 11 2004 xv-3.10a-shortsleep.patch
-+ -rw-r--r-- 702 Apr 24 2004 xv-3.10a-showlongname.patch
-+ -rw-r--r-- 1205 Apr 24 2004 xv-3.10a-staytoppdir.patch
-+ -rw-r--r-- 1591 Mar 15 2004 xv-3.10a-sysconfdir.patch
-+ -rw-r--r-- 4228 Apr 24 2004 xv-3.10a-wheelmouse.patch
-+ -rw-r--r-- 744 Apr 24 2004 xv-3.10a-xvbutt_wait.patch
-+ -rw-r--r-- 712 Mar 11 2004 xv-3.10a-xvexecpath.patch
-+ -rw-r--r-- 3757 Jul 9 2004 xv-3.10a-xvscrl_button2.patch
-+ -rw-r--r-- 1494 Jul 9 2004 xv-3.10a-xvscrl_wait.patch
-+ -rw-r--r-- 19352 Jul 9 2004 xv-3.10a-xvzoom.patch
-+ -rw-r--r-- 1827 Apr 24 2004 xv-3.10a-zeroquit.patch
-+
-+ - xv310a-jp-extension-rev5.3.3.tar.gz [extensive]
-+ - xv-3.10a-jp-extension-5.3.3-png-1.2d.patch [PNG patch relative to jp-ext]
-+ - xv-3.10a+jp-extension-rev5.3.3+FLmask.v2.1+png+misc.patch [??]
-+
-+ - xv-grab-imake-hips.patch (JPD) [HIPS format, -startgrab option]
-+ - xv-psnewstyle.patch (TA) [coming later in 2005?]
-+ - xv-3.10a.patch.linux (PBJ) [maybe use vdcomp.c changes?]
-+ - xvxpm-anthony-thyssen.c (AT) ["slate grey" bug already gone?]
-+
-+ - stuff in xv/unsupt:
-+ -rw-r--r-- 30527 Dec 22 1994 FITS.rite
-+ -rw-r--r-- 49152 Dec 22 1994 FITS.tar
-+ -rw-r--r-- 3753 Dec 22 1994 G3.patch1
-+ -rw-r--r-- 24576 Dec 22 1994 G3.tar
-+ -rw-r--r-- 1098 Dec 22 1994 INFO.cgm
-+ -rw-r--r-- 1941 Dec 22 1994 README
-+ -rwxr-xr-x 1059 Dec 22 1994 getweather
-+ -rwxr-xr-x 2186 Dec 22 1994 getweather.ksh
-+ -rw-r--r-- 856 Dec 22 1994 twm.fix
-+ -rw-r--r-- 844 Dec 22 1994 vargs.c
-+ -rw-r--r-- 47626 Dec 22 1994 vis
-+ -rw-r--r-- 21097 Dec 22 1994 xscm
-+
-+
-+
-+not finished (and/or even started ;-) ):
-+
-+ - fix xvpng.c not to use direct struct access
-+ - fix for never-ending pile of SLOW popups when viewing TIFFs with unknown tags
-+ (or truncated/corrupted images)
-+ - fix for minor .Z inefficiency in xv.c ("FIXME")
-+ - fix for filename entry-field mouse/cursor bogosity
-+ (want at least positioning to work; preferably also select/cut/paste)
-+ - fix for spacebar-for-next-image getting stuck at first text file
-+ - fix for .ppm.gz "disk leak" [can't reproduce...already fixed?]
-+ (maybe occurs only if filesystem is already nearly full? bad .gz?)
-+
-+ - transparency support for TIFF, XPM and TGA images
-+ - support for tiled background image (with transparent foreground image)
-+ - MNG/JNG support
-+
-+
-+ChangeLog
-+---------
-+
-+ 20000220
-+ original pair of jumbo patches, comprising perhaps 16 fix-patches and a
-+ dozen enhancement-patches; never publicly released
-+
-+ 20040516
-+ first public release, incorporating 25 fix-patches and 21 enhancement-
-+ patches
-+
-+ 20040523
-+ minor fix to xvctrl.c to support registered versions (GRR warnings-patch
-+ was slightly overzealous); switched to tarball packaging
-+
-+ 20040531
-+ fixed undefined CLK_TCK with gcc -ansi (enh/USE_TICKS option); made
-+ libjpeg, libtiff, libpng and zlib sections of makefile more consistent
-+ (enh);
-+
-+ 20040606
-+ added freshmeat link, build instructions, and changelog to jumbo README
-+ (this file)
-+
-+ 20050213
-+ increased max number of files from 4096 to 32768 (enh)
-+
-+ 20050320-20050410
-+ fixed two very long-standing YCbCr bugs in TIFF decoder (fix);
-+ provisionally fixed bug in TIFF decoder for contiguous tiled TIFFs with
-+ bottom-* orientation (fix/USE_TILED_TIFF_BOTLEFT_FIX option); fixed new
-+ gcc 3.3 warnings (fix); fixed incorrect 16/24-bit display of xwd dumps
-+ (fix); fixed multiple input-validation bugs (potential heap overflows)
-+ and mktemp() dependencies (*SECURITY* fixes: CAN-2004-1725, CAN-2004-
-+ 1726, CAN-2005-0665, CERT VU#622622, and others); added support for 16-
-+ and 32-bit BMPs using bitfields "compression" (enh); fixed probable byte-
-+ sex bug in 24-bit FixPix display code (enh/USE_24BIT_ENDIAN_FIX option);
-+ fixed numerical-keypad NumLock behavior and delete-key behavior in file-
-+ load/save window (enh); made schnauzer window and icons configurable (enh)
-diff -ruN xv-3.10a/bggen.c xv-3.10a-bugfixes/bggen.c
---- xv-3.10a/bggen.c 1994-12-22 14:34:41.000000000 -0800
-+++ xv-3.10a-bugfixes/bggen.c 2004-05-16 17:50:52.000000000 -0700
-@@ -18,6 +18,11 @@
- #include <stdio.h>
- #include <math.h>
-
-+#ifdef __STDC__
-+# include <stdlib.h> /* atoi() */
-+# include <ctype.h> /* isdigit() */
-+#endif
-+
- #ifndef M_PI
- # define M_PI 3.1415926535897932385
- #endif
-@@ -46,8 +51,8 @@
-
- typedef unsigned char byte;
-
--struct color { int r,g,b;
-- int y;
-+struct color { int r,g,b;
-+ int y;
- } colors[MAXCOLS], *cur, *nex;
-
- int numcols;
-@@ -62,7 +67,7 @@
- double computeDist PARM((int, int, int, int, int));
- void writePPM PARM((byte *, int, int, int));
-
--
-+
- /*************************************/
- int main(argc,argv)
- int argc;
-@@ -80,18 +85,18 @@
- char *geom = NULL;
- char *rptgeom = NULL;
-
--
-+
- #ifdef VMS
- getredirection(&argc, &argv);
- #endif
--
-+
-
- for (i=1; i<argc; i++) {
- if (!strncmp(argv[i],"-d",(size_t) 2)) { /* -d disp */
- i++; if (i<argc) dname = argv[i];
- }
- }
--
-+
- if ((theDisp = XOpenDisplay(dname)) == NULL) {
- fprintf(stderr,"bggen: Warning - can't open display, screen %s",
- "size unknown, color names not accepted.\n");
-@@ -99,41 +104,41 @@
-
-
- cnt = 0; numcols = 0;
--
-+
- /* parse cmd-line args */
- for (i=1; i<argc; i++) {
- if (!strcmp(argv[i],"-h")) { /* -h high */
- i++; if (i<argc) high = atoi(argv[i]);
- hset++;
- }
--
-+
- else if (!strcmp(argv[i],"-w")) { /* -w wide */
- i++; if (i<argc) wide = atoi(argv[i]);
- wset++;
- }
--
-+
- else if (!strcmp(argv[i],"-b")) { /* -b bits */
- i++; if (i<argc) bits = atoi(argv[i]);
- }
--
-+
- else if (!strncmp(argv[i],"-g",(size_t) 2)) { /* -g geom */
- i++; if (i<argc) geom = argv[i];
- }
--
-+
- else if (!strncmp(argv[i],"-d",(size_t) 2)) { /* -d disp */
- i++; if (i<argc) dname = argv[i];
- }
--
-+
- else if (!strcmp(argv[i],"-G")) { /* -G rptgeom */
- i++; if (i<argc) rptgeom = argv[i];
- }
--
-+
- else if (!strncmp(argv[i],"-a",(size_t) 2)) doascii++; /* -a */
--
-+
- else if (!strcmp(argv[i],"-r")) { /* -r rot */
- i++; if (i<argc) rot = atoi(argv[i]);
- }
--
-+
- else if (argv[i][0]=='-') usage(); /* any other '-' option is unknown */
-
- else if (isdigit(argv[i][0])) {
-@@ -143,7 +148,7 @@
- case 2: colors[numcols].b = atoi(argv[i]); break;
- }
- cnt++;
--
-+
- if (cnt==3) {
- if (numcols<MAXCOLS) numcols++;
- cnt = 0;
-@@ -176,50 +181,50 @@
- }
- }
- }
--
--
--
-+
-+
-+
- /* print error/usage message, if appropriate */
- if (cnt || numcols==0 || high<1 || wide<1 || bits<1 || bits>8) usage();
--
--
-+
-+
- if (geom) {
- int x,y; unsigned int w,h;
- i = XParseGeometry(geom, &x, &y, &w, &h);
- if (i&WidthValue) { wset++; wide = (int) w; }
- if (i&HeightValue) { hset++; high = (int) h; }
- }
--
--
-+
-+
- /* attempt to connect to X server and get screen dimensions */
- if (theDisp) {
- i = DefaultScreen(theDisp);
- if (!wset) wide = DisplayWidth(theDisp, i);
- if (!hset) high = DisplayHeight(theDisp, i);
- }
--
--
-+
-+
- /* normalize 'rot' */
- while (rot< 0) rot += 360;
- while (rot>=360) rot -= 360;
--
--
-+
-+
- rptwide = wide; rpthigh = high;
- if (rptgeom) {
- int x,y; unsigned int w,h;
- i = XParseGeometry(rptgeom, &x, &y, &w, &h);
- if (i&WidthValue) rptwide = (int) w;
- if (i&HeightValue) rpthigh = (int) h;
--
-+
- RANGE(rptwide, 1, wide);
- RANGE(rpthigh, 1, high);
- }
--
--
-
--
-+
-+
-+
- rpic24 = (byte *) malloc(rptwide * rpthigh * 3 * sizeof(byte));
-- if (rptwide != wide || rpthigh != high)
-+ if (rptwide != wide || rpthigh != high)
- pic24 = (byte *) malloc(wide * high * 3 * sizeof(byte));
- else pic24 = rpic24;
-
-@@ -229,7 +234,7 @@
- exit(1);
- }
- for (i=0, pp=pic24; i<wide*high*3; i++) *pp++ = 0;
--
-+
-
-
- /*** generate image ***/
-@@ -244,34 +249,34 @@
- }
- }
- }
--
--
-+
-+
- else if (rot==0) { /* un-rotated linear (vertical) gradient */
- for (i=0; i<numcols; i++)
- colors[i].y = ((rpthigh-1) * i) / (numcols-1);
--
-+
- cur = &colors[0]; nex = cur+1;
--
-+
- for (i=0; i<rpthigh; i++) {
- pp = rpic24 + (i * rptwide * 3);
-
- /* advance to next pair of colors if we're outside region */
- while (nex->y < i) { cur++; nex++; }
--
-+
- r = cur->r + ((nex->r - cur->r) * (i - cur->y)) / (nex->y - cur->y);
- g = cur->g + ((nex->g - cur->g) * (i - cur->y)) / (nex->y - cur->y);
- b = cur->b + ((nex->b - cur->b) * (i - cur->y)) / (nex->y - cur->y);
--
-+
- r = r & bmask[bits-1];
- g = g & bmask[bits-1];
- b = b & bmask[bits-1];
--
-+
- for (j=0; j<rptwide; j++) {
- *pp++ = (byte) r; *pp++ = (byte) g; *pp++ = (byte) b;
- }
- }
- }
--
-+
- else dorot(rpic24, rptwide, rpthigh, rot);
-
-
-@@ -293,7 +298,7 @@
- y = ((i-ay) % rpthigh);
-
- sp = rpic24 + (y * rptwide + x) * 3;
--
-+
- pp[0] = *sp++; pp[1] = *sp++; pp[2] = *sp++;
- }
- }
-@@ -355,12 +360,12 @@
- mind = computeDist(w-1, 0, cx, cy, rot);
- maxd = computeDist(0, h-1, cx, cy, rot);
- }
--
-+
- del = maxd - mind; /* maximum distance */
--
-+
- distdebug = 0;
--
--
-+
-+
- for (y=0; y<h; y++) {
- pp = pic + (y * w * 3);
- for (x=0; x<w; x++) {
-@@ -368,11 +373,11 @@
- rat = (d - mind) / del;
- if (rat<0.0) rat = 0.0;
- if (rat>1.0) rat = 1.0;
--
-+
- cval = rat * nc1;
- bc = floor(cval);
- crat = cval - bc;
--
-+
- if (bc < nc1) {
- r = colors[bc].r + crat * (colors[bc+1].r - colors[bc].r);
- g = colors[bc].g + crat * (colors[bc+1].g - colors[bc].g);
-@@ -383,7 +388,7 @@
- g = colors[nc1].g;
- b = colors[nc1].b;
- }
--
-+
- *pp++ = (byte) r; *pp++ = (byte) g; *pp++ = (byte) b;
- }
- }
-@@ -395,9 +400,9 @@
- int x,y,cx,cy,rot;
- {
- /* rot has to be in range 0-359 */
--
-- double x1, y1, x2, y2, x3, y3, d, d1, b, theta;
--
-+
-+ double x1, y1, x2, y2, x3, y3, d, d1, b;
-+
- if (rot == 0) return (double) (y - cy);
- if (rot == 180) return (double) (cy - y);
-
-@@ -407,7 +412,7 @@
- /* x2,y2 = vertical projection onto a || line that runs through cx,cy */
- x2 = x1;
- y2 = cy - (cx-x2)*tant1;
--
-+
- d1 = y2 - y1; /* vertical distance between lines */
- b = d1 * cost1;
-
-@@ -435,11 +440,11 @@
- int w,h,doascii;
- {
- /* dumps a pic24 in PPM format to stdout */
--
-+
- int x,y;
--
-+
- printf("P%s %d %d 255\n", (doascii) ? "3" : "6", w, h);
--
-+
- for (y=0; y<h; y++) {
- if (doascii) {
- for (x=0; x<w; x++, pic+=3)
-diff -ruN xv-3.10a/bits/icon xv-3.10a-bugfixes/bits/icon
---- xv-3.10a/bits/icon 1994-12-22 14:35:28.000000000 -0800
-+++ xv-3.10a-bugfixes/bits/icon 2004-04-28 00:53:10.000000000 -0700
-@@ -1,5 +1,6 @@
- #define icon_width 40
- #define icon_height 32
-+#ifndef OMIT_ICON_BITS
- static unsigned char icon_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
-@@ -15,3 +16,4 @@
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00};
-+#endif
-diff -ruN xv-3.10a/cleandir xv-3.10a-bugfixes/cleandir
---- xv-3.10a/cleandir 1994-12-22 14:34:50.000000000 -0800
-+++ xv-3.10a-bugfixes/cleandir 2004-05-10 23:19:16.000000000 -0700
-@@ -1,9 +1,13 @@
--#!/bin/csh -f
-+#!/bin/sh -f
- # cleandir: if called with an argument, cd's there and does a 'make clean'
- #
-
--if ( x$1 != x ) then
-- echo "cleaning $1 subdirectory"
-- cd $1
-- make clean
--endif
-+if [ x"$1" != x ]; then
-+ if [ -f "$1"/makefile -o -f "$1"/Makefile ]; then
-+ echo "cleaning '$1' subdirectory"
-+ cd "$1"
-+ make clean
-+# else
-+# echo "no makefile found; NOT cleaning '$1' subdirectory"
-+ fi
-+fi
-diff -ruN xv-3.10a/config.h xv-3.10a-bugfixes/config.h
---- xv-3.10a/config.h 1995-01-05 10:49:21.000000000 -0800
-+++ xv-3.10a-bugfixes/config.h 2005-03-21 23:21:31.000000000 -0800
-@@ -8,9 +8,9 @@
- *
- * if you have the gnu uncompression utility 'gunzip', XV can use it to
- * automatically 'unzip' any gzip'd files. To enable this feature,
-- * change 'undef' to 'define' in the following line. Needless to say, if
-+ * change 'undef' to 'define' in the following line. Needless to say, if
- * your gunzip is installed elsewhere on your machine, change the 'GUNZIP'
-- * definition appropriately. (use 'which gunzip' to find if you have gunzip,
-+ * definition appropriately. (use 'which gunzip' to find if you have gunzip,
- * and where it lives)
- */
- #undef USE_GUNZIP
-@@ -19,7 +19,8 @@
- # ifdef VMS
- # define GUNZIP "UNCOMPRESS"
- # else
--# define GUNZIP "/usr/local/bin/gunzip -q"
-+/* define GUNZIP "/usr/local/bin/gunzip -q" */
-+# define GUNZIP "/usr/bin/gzip -dq" /* more portable */
- # endif
- #endif
-
-@@ -70,18 +71,18 @@
- * PostScript file input support:
- *
- * if you have the 'ghostscript' package installed (version 2.6 or later),
-- * XV can use it to read and display PostScript files. To do so,
-+ * XV can use it to read and display PostScript files. To do so,
- * uncomment the '#define GS_PATH' line, below. You probably will not
- * need to modify the GS_LIB or GS_DEV lines, but if you do modify them,
- * be sure to uncomment them, as well.
- *
-- * the ghostscript package can be acquired via anonymous ftp on
-+ * the ghostscript package can be acquired via anonymous ftp on
- * prep.ai.mit.edu, in the 'pub/gnu' directory
- *
-- * GS_PATH specifies the complete path to your gs executable.
-+ * GS_PATH specifies the complete path to your gs executable.
- *
-- * GS_LIB should be set if there's some other gs libs that should be
-- * searched, but aren't by default. (In which case you should probably
-+ * GS_LIB should be set if there's some other gs libs that should be
-+ * searched, but aren't by default. (In which case you should probably
- * just fix your 'gs' so it looks in the right places without being told...)
- *
- * GS_DEV is the file format that ghostscript will convert PS into. It
-@@ -97,7 +98,7 @@
- * 'old-style' XV logo image:
- *
- * XV now has a nifty, new logo image. The downside is that it increases
-- * the size of the 'xv' executable by 250K or so, and it's possible that
-+ * the size of the 'xv' executable by 250K or so, and it's possible that
- * your compiler may choke while compiling 'xvdflt.c'. If you're compiler
- * can't handle it, or you're running Linux on a system with minimal memory,
- * change 'undef' to 'define' in the following line
-@@ -108,8 +109,8 @@
-
- /***************************************************************************
- * Backing Store:
-- *
-- * XV can request that 'Backing Store' may be turned on ('WhenMapped') for
-+ *
-+ * XV can request that 'Backing Store' may be turned on ('WhenMapped') for
- * several of its windows, which may help performance over a slow network
- * connection. However, it has been known to behave strangely (or crash)
- * on some X servers, so it's left here as an option. If you run into trouble
-diff -ruN xv-3.10a/copyright.h xv-3.10a-bugfixes/copyright.h
---- xv-3.10a/copyright.h 1994-12-22 14:34:56.000000000 -0800
-+++ xv-3.10a-bugfixes/copyright.h 2004-05-16 17:53:11.000000000 -0700
-@@ -1,11 +1,11 @@
- /* Copyright Notice
- * ================
- * Copyright 1989, 1994 by John Bradley
-- *
-- * Permission to copy and distribute XV in its entirety, for non-commercial
-- * purposes, is hereby granted without fee, provided that this license
-+ *
-+ * Permission to copy and distribute XV in its entirety, for non-commercial
-+ * purposes, is hereby granted without fee, provided that this license
- * information and copyright notice appear unmodified in all copies.
-- *
-+ *
- * Note that distributing XV 'bundled' in with any product is considered
- * to be a 'commercial purpose'.
- *
-@@ -13,16 +13,16 @@
- * and/or configured to be in their 'unregistered copy' mode, so that it
- * is made obvious to the user that XV is shareware, and that they should
- * consider donating, or at least reading this License Info.
-- *
-+ *
- * The software may be modified for your own purposes, but modified
- * versions may not be distributed without prior consent of the author.
-- *
-+ *
- * This software is provided 'as-is', without any express or implied
- * warranty. In no event will the author be held liable for any damages
- * arising from the use of this software.
-- *
-+ *
- * If you would like to do something with XV that this copyright
-- * prohibits (such as distributing it with a commercial product,
-+ * prohibits (such as distributing it with a commercial product,
- * using portions of the source in some other program, etc.), please
- * contact the author (preferably via email). Arrangements can
- * probably be worked out.
-@@ -34,13 +34,13 @@
- * larger donations are quite welcome. Folks who donate $25 or more
- * can receive a Real Nice bound copy of the XV manual for no extra
- * charge.
-- *
-+ *
- * Commercial, government, and institutional users must register their
- * copies of XV, for the price of $25 per workstation/X terminal or per
- * XV user, whichever is less. Note that it does NOT say 'simultaneous user',
-- * but rather, the total number of people who use XV on any sort of
-- * recurring basis. Site licenses are available (and recommended) for those
-- * who wish to run XV on a large (>10) number of machines.
-+ * but rather, the total number of people who use XV on any sort of
-+ * recurring basis. Site licenses are available (and recommended) for those
-+ * who wish to run XV on a large (>10) number of machines.
- * Contact the author for more details.
- *
- * The author may be contacted via:
-diff -ruN xv-3.10a/tiff/Makefile xv-3.10a-bugfixes/tiff/Makefile
---- xv-3.10a/tiff/Makefile 1994-12-22 14:35:12.000000000 -0800
-+++ xv-3.10a-bugfixes/tiff/Makefile 2004-05-16 18:49:11.000000000 -0700
-@@ -30,8 +30,10 @@
- # OF THIS SOFTWARE.
- #
-
--AR= ar
--RANLIB= ./RANLIB.csh
-+AR= ar
-+CHMOD= chmod
-+#RANLIB= ./RANLIB.csh
-+RANLIB= ./RANLIB.sh
-
- IPATH= -I.
-
-@@ -60,6 +62,7 @@
-
- ${ALL}: ${OBJS}
- ${AR} rc libtiff.a $?
-+ ${CHMOD} +x ${RANLIB}
- ${RANLIB} libtiff.a
-
- ${OBJS}: tiffio.h tiff.h tiffcomp.h tiffiop.h tiffconf.h
-diff -ruN xv-3.10a/tiff/Makefile.std xv-3.10a-bugfixes/tiff/Makefile.std
---- xv-3.10a/tiff/Makefile.std 1994-12-22 14:35:16.000000000 -0800
-+++ xv-3.10a-bugfixes/tiff/Makefile.std 2004-05-16 18:50:39.000000000 -0700
-@@ -30,8 +30,10 @@
- # OF THIS SOFTWARE.
- #
-
--AR= /bin/ar
--RANLIB= ./RANLIB.csh
-+AR= /bin/ar
-+CHMOD= chmod
-+#RANLIB= ./RANLIB.csh
-+RANLIB= ./RANLIB.sh
-
- IPATH= -I.
-
-@@ -60,6 +62,7 @@
-
- ${ALL}: ${OBJS}
- ${AR} rc libtiff.a $?
-+ ${CHMOD} +x ${RANLIB}
- ${RANLIB} libtiff.a
-
- ${OBJS}: tiffio.h tiff.h tiffcomp.h tiffiop.h tiffconf.h
-diff -ruN xv-3.10a/tiff/RANLIB.sh xv-3.10a-bugfixes/tiff/RANLIB.sh
---- xv-3.10a/tiff/RANLIB.sh 1969-12-31 16:00:00.000000000 -0800
-+++ xv-3.10a-bugfixes/tiff/RANLIB.sh 2004-05-10 23:31:38.000000000 -0700
-@@ -0,0 +1,22 @@
-+#!/bin/sh -f
-+#
-+# tests to see if the program 'ranlib' exists. If it does, runs ranlib on
-+# the first argument (a library name). Otherwise, does nothing, and returns
-+#
-+# written by John Bradley for the XV 3.00 release
-+# thanks to John Hagan for shell-script hackery
-+#
-+
-+echo "executing 'ranlib $1'..."
-+
-+# Is there a ranlib? Let's try and then suffer the consequences...
-+ranlib $1 >& /dev/null
-+
-+if [ $? -ne 0 ]; then
-+ echo "There doesn't seem to be a ranlib on this system..."
-+ echo "Don't worry about it."
-+fi
-+
-+echo ""
-+echo ""
-+
-diff -ruN xv-3.10a/vdcomp.c xv-3.10a-bugfixes/vdcomp.c
---- xv-3.10a/vdcomp.c 1994-12-22 14:34:47.000000000 -0800
-+++ xv-3.10a-bugfixes/vdcomp.c 2005-03-20 17:48:59.000000000 -0800
-@@ -5,8 +5,8 @@
- /* Decompresses images using Kris Becker's subroutine DECOMP.C */
- /* which is included in this program in a shortened version. */
- /* */
--/* Reads a variable length compressed PDS image and outputs a */
--/* fixed length uncompressed image file in PDS format with */
-+/* Reads a variable-length compressed PDS image and outputs a */
-+/* fixed-length uncompressed image file in PDS format with */
- /* labels, image histogram, engineering table, line header table */
- /* and an image with PDS, FITS, VICAR or no labels. If used on */
- /* a non-byte-swapped machine the image histogram is un-swapped. */
-@@ -108,7 +108,9 @@
- !defined(bsd43) && \
- !defined(aux) && \
- !defined(__bsdi__) && \
-- !defined(sequent)
-+ !defined(sequent) && \
-+ !defined(__FreeBSD__) && \
-+ !defined(__OpenBSD__)
-
- # if defined(hp300) || defined(hp800) || defined(NeXT)
- # include <sys/malloc.h> /* it's in 'sys' on HPs and NeXT */
-@@ -121,15 +123,17 @@
-
- #include <X11/Xos.h>
-
--#define TRUE 1
--#define FALSE 0
-+#define TRUE 1
-+#define FALSE 0
-
-- /* pc i/o defines */
--#define O_BINARY 0x8000 /* file mode is binary */
-+#define NAMELEN 1024 /* inname and outname sizes */
-
-- /* vax i/o defines */
--#define RECORD_TYPE "rfm=fix" /* VAX fixed length output */
--#define CTX "ctx=bin" /* no translation of \n */
-+ /* PC I/O defines */
-+#define O_BINARY 0x8000 /* file mode is binary */
-+
-+ /* VAX/VMS I/O defines */
-+#define RECORD_TYPE "rfm=fix" /* VAX/VMS fixed-length output */
-+#define CTX "ctx=bin" /* no translation of \n */
- #define FOP "fop=cif,sup" /* file processing ops */
-
- typedef struct leaf { struct leaf *right;
-@@ -176,7 +180,7 @@
-
- int infile;
- FILE *outfile;
--char inname[1024],outname[1024];
-+char inname[NAMELEN], outname[NAMELEN];
- int output_format;
- int record_bytes, max_lines;
- int line_samples, fits_pad;
-@@ -185,8 +189,8 @@
-
- /*************************************************/
- int main(argc,argv)
-- int argc;
-- char **argv;
-+ int argc;
-+ char **argv;
- {
- unsigned char ibuf[2048],obuf[2048];
- unsigned char blank=32;
-@@ -200,12 +204,12 @@
- /* */
- /*********************************************************************/
-
-- strcpy(inname," ");
-+ strcpy(inname," ");
- strcpy(outname," ");
- output_format = 0;
-
- if (argc == 1); /* prompt user for parameters */
-- else if (argc == 2 && (strncmp(argv[1],"help",(size_t) 4) == 0 ||
-+ else if (argc == 2 && (strncmp(argv[1],"help",(size_t) 4) == 0 ||
- strncmp(argv[1],"HELP",(size_t) 4) == 0 ||
- strncmp(argv[1],"?", (size_t) 1) == 0)) {
- fprintf(stderr,
-@@ -214,18 +218,22 @@
- fprintf(stderr," infile - name of compressed image file. \n");
- fprintf(stderr," outfile - name of uncompressed output file.\n");
- fprintf(stderr," output format - selected from the following list:\n");
-- fprintf(stderr,"\n");
-- fprintf(stderr," 1 SFDU/PDS format [DEFAULT].\n");
-- fprintf(stderr," 2 FITS format. \n");
-- fprintf(stderr," 3 VICAR format. \n");
-- fprintf(stderr," 4 Unlabelled binary array. \n\n");
-+ fprintf(stderr,"\n");
-+ fprintf(stderr," 1 SFDU/PDS format [DEFAULT].\n");
-+ fprintf(stderr," 2 FITS format. \n");
-+ fprintf(stderr," 3 VICAR format. \n");
-+ fprintf(stderr," 4 Unlabelled binary array. \n\n");
- exit(1);
-- }
-+ }
- else {
-- strcpy(inname,argv[1]);
-- if (argc >= 3) strcpy(outname,argv[2]);
-+ strncpy(inname, argv[1], sizeof(inname)-1);
-+ inname[sizeof(inname)-1] = '\0';
-+ if (argc >= 3) {
-+ strncpy(outname, argv[2], sizeof(outname)-1);
-+ outname[sizeof(outname)-1] = '\0';
-+ }
- if (argc == 3) output_format = 1;
-- if (argc == 4) sscanf(argv[3],"%d",&output_format);
-+ if (argc == 4) sscanf(argv[3],"%d",&output_format);
- }
-
- host = check_host();
-@@ -244,13 +252,13 @@
- case 4: no_labels(host); break;
- }
-
-- if (record_bytes == 836) { /* set up values for image sizes */
-+ if (record_bytes == 836) { /* set up values for image sizes */
- max_lines = 800;
- fits_pad = 2240;
- line_samples = 800;
- }
- else {
-- max_lines = 1056;
-+ max_lines = 1056;
- fits_pad = 1536;
- line_samples = 1204;
- }
-@@ -394,12 +402,12 @@
- if (record_bytes == 1204) /* do checksum for viking */
- for (i=0; i<record_bytes; i++) checksum += (int)obuf[i];
-
-- if ((line % 100 == 0) && (outfile != stdout))
-+ if ((line % 100 == 0) && (outfile != stdout))
- fprintf(stderr,"\nline %d",line);
-
- } while (length > 0 && line < max_lines);
-
-- if (record_bytes == 1204 && (outfile != stdout))
-+ if (record_bytes == 1204 && (outfile != stdout))
- /* print checksum for viking */
- fprintf(stderr,"\n Image label checksum = %d computed checksum = %d\n",
- label_checksum,checksum);
-@@ -425,33 +433,36 @@
- /*********************************************************************/
-
- int get_files(host)
--int host;
-+ int host;
- {
-- short shortint;
- typedef long off_t;
-+ short shortint;
-+ char *s;
-
- if (inname[0] == ' ') {
- printf("\nEnter name of file to be decompressed: ");
-- gets (inname);
-+ fgets(inname, sizeof(inname), stdin);
-+ if ((s = strchr(inname, '\n')) != NULL)
-+ *s = '\0';
- }
-
-- if (host == 1 | host == 2) {
-- if ((infile = open(inname,O_RDONLY | O_BINARY)) <= 0) {
-- fprintf(stderr,"\ncan't open input file: %s\n",inname);
-+ if (host == 1 || host == 2) {
-+ if ((infile = open(inname, O_RDONLY | O_BINARY)) <= 0) {
-+ fprintf(stderr,"\ncan't open input file: %s\n", inname);
- exit(1);
- }
- }
-- else if (host == 3 | host == 5) {
-- if ((infile = open(inname,O_RDONLY)) <= 0) {
-- fprintf(stderr,"\ncan't open input file: %s\n",inname);
-+ else if (host == 3 || host == 5) {
-+ if ((infile = open(inname, O_RDONLY)) <= 0) {
-+ fprintf(stderr,"\ncan't open input file: %s\n", inname);
- exit(1);
- }
-
- /****************************************************************/
-- /* If we are on a vax see if the file is in var length format. */
-- /* This logic is in here in case the vax file has been stored */
-+ /* If we are on a VAX see if the file is in var length format. */
-+ /* This logic is in here in case the VAX file has been stored */
- /* in fixed or undefined format. This might be necessary since */
-- /* vax variable length files can't be moved to other computer */
-+ /* VAX variable-length files can't be moved to other computer */
- /* systems with standard comm programs (kermit, for example). */
- /****************************************************************/
-
-@@ -459,9 +470,9 @@
- read(infile,&shortint, (size_t) 2);
- if (shortint > 0 && shortint < 80) {
- host = 4; /* change host to 4 */
-- printf("This is not a VAX variable length file.");
-+ printf("This is not a VAX variable-length file.");
- }
-- else printf("This is a VAX variable length file.");
-+ else printf("This is a VAX variable-length file.");
- lseek(infile,(off_t) 0,0); /* reposition to beginning of file */
- }
- }
-@@ -474,13 +485,17 @@
- printf("\n 3. VICAR format.");
- printf("\n 4. Unlabelled binary array.\n");
- printf("\n Enter format number:");
-- gets(inname);
-+ fgets(inname, sizeof(inname), stdin);
-+ if ((s = strchr(inname, '\n')) != NULL)
-+ *s = '\0';
- output_format = atoi(inname);
- } while (output_format < 1 || output_format > 4);
-
- if (outname[0] == ' ') {
- printf("\nEnter name of uncompressed output file: ");
-- gets (outname);
-+ fgets(outname, sizeof(outname), stdin);
-+ if ((s = strchr(outname, '\n')) != NULL)
-+ *s = '\0';
- }
-
- return(host);
-@@ -495,68 +510,68 @@
- /*********************************************************************/
-
- void open_files(host)
--int *host;
-+ int *host;
- {
- if (*host == 1 || *host == 2 || *host == 5) {
- if (outname[0] == '-') outfile=stdout;
-- else if ((outfile = fopen(outname,"wb"))==NULL) {
-- fprintf(stderr,"\ncan't open output file: %s\n",outname);
-+ else if ((outfile = fopen(outname, "wb"))==NULL) {
-+ fprintf(stderr,"\ncan't open output file: %s\n", outname);
- exit(1);
- }
- }
-
- else if (*host == 3 || *host == 4) {
- if (output_format == 1) { /* write PDS format blocks */
-- if (record_bytes == 836) {
-- if ((outfile=fopen(outname,"w"
-+ if (record_bytes == 836) {
-+ if ((outfile=fopen(outname, "w"
- #ifdef VMS
- ,"mrs=836",FOP,CTX,RECORD_TYPE
- #endif
- ))==NULL) {
-- fprintf(stderr,"\ncan't open output file: %s\n",outname);
-+ fprintf(stderr,"\ncan't open output file: %s\n", outname);
- exit(1);
- }
- }
- else {
-- if ((outfile=fopen(outname,"w"
-+ if ((outfile=fopen(outname, "w"
- #ifdef VMS
- ,"mrs=1204",FOP,CTX,RECORD_TYPE
- #endif
- ))==NULL) {
-- fprintf(stderr,"\ncan't open output file: %s\n",outname);
-+ fprintf(stderr,"\ncan't open output file: %s\n", outname);
- exit(1);
- }
- }
- }
- else if (output_format == 2) { /* write FITS format blocks */
-- if ((outfile=fopen(outname,"w"
-+ if ((outfile=fopen(outname, "w"
- #ifdef VMS
- ,"mrs=2880",FOP,CTX,RECORD_TYPE
- #endif
- ))==NULL) {
-- fprintf(stderr,"\ncan't open output file: %s\n",outname);
-+ fprintf(stderr,"\ncan't open output file: %s\n", outname);
- exit(1);
- }
- }
-
-- else { /* write fixed length records */
-- if (record_bytes == 836) {
-- if ((outfile=fopen(outname,"w"
-+ else { /* write fixed-length records */
-+ if (record_bytes == 836) {
-+ if ((outfile=fopen(outname, "w"
- #ifdef VMS
- ,"mrs=800",FOP,CTX,RECORD_TYPE
- #endif
- ))==NULL) {
-- fprintf(stderr,"\ncan't open output file: %s\n",outname);
-+ fprintf(stderr,"\ncan't open output file: %s\n", outname);
- exit(1);
- }
- }
- else {
-- if ((outfile=fopen(outname,"w"
-+ if ((outfile=fopen(outname, "w"
- #ifdef VMS
- ,"mrs=1204",FOP,CTX,RECORD_TYPE
- #endif
- ))==NULL) {
-- fprintf(stderr,"\ncan't open output file: %s\n",outname);
-+ fprintf(stderr,"\ncan't open output file: %s\n", outname);
- exit(1);
- }
- }
-@@ -572,11 +587,11 @@
- /*********************************************************************/
-
- void pds_labels(host)
-- int host;
-+ int host;
- {
-- char outstring[80],ibuf[2048];
-+ char ibuf[2048];
- unsigned char cr=13,lf=10,blank=32;
-- short length,nlen,total_bytes,line,i;
-+ short length,total_bytes,i;
-
-
- total_bytes = 0;
-@@ -613,11 +628,11 @@
- (size_t) 53,(size_t) 1,outfile);
- else
- fwrite("CCSD3ZF0000100000001NJPL3IF0PDS200000001 = SFDU_LABEL",
-- (size_t) 53,(size_t) 1,outfile);
-+ (size_t) 53,(size_t) 1,outfile);
-
- fprintf(outfile,"%c%c",cr,lf);
- fwrite("/* FILE FORMAT AND LENGTH */",(size_t) 37,(size_t) 1,
-- outfile);
-+ outfile);
- fprintf(outfile,"%c%c",cr,lf);
- fwrite("RECORD_TYPE = FIXED_LENGTH",(size_t) 47,
- (size_t) 1,outfile);
-@@ -710,7 +725,7 @@
- }
- else {
- strcpy(ibuf+35,"60");
-- length = length - 2;
-+ length = length - 2;
- }
-
- fwrite(ibuf,(size_t) length,(size_t) 1,outfile);
-@@ -730,7 +745,7 @@
- }
-
- else if ((i = strncmp(ibuf," ENCODING",(size_t) 9)) == 0);
--
-+
- /*****************************************************************/
- /* delete the encoding type label in the image object */
- /*****************************************************************/
-@@ -787,10 +802,10 @@
- /*********************************************************************/
-
- void fits_labels(host)
--int host;
-+ int host;
- {
- char ibuf[2048],outstring[80];
-- short length,nlen,total_bytes,line,i;
-+ short length,total_bytes,i;
- unsigned char cr=13,lf=10,blank=32;
-
- do {
-@@ -799,7 +814,7 @@
- /*****************************************************************/
- /* find the checksum and store in label_checksum */
- /*****************************************************************/
-- if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
-+ if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
- ibuf[length] = '\0';
- label_checksum = atol(ibuf+35);
- }
-@@ -842,7 +857,7 @@
-
- if (record_bytes == 836)
- strcpy(outstring,"NAXIS1 = 800");
-- else
-+ else
- strcpy(outstring,"NAXIS1 = 1204");
-
- strcat(outstring," ");
-@@ -862,7 +877,7 @@
-
- strcpy(outstring,"END ");
- strcat(outstring," ");
--
-+
- fwrite(outstring,(size_t) 78,(size_t) 1,outfile);
- fprintf(outfile,"%c%c",cr,lf);
- total_bytes = total_bytes + 80;
-@@ -871,6 +886,7 @@
- for (i=total_bytes; i<2880; i++) fputc(blank,outfile);
- }
-
-+
- /*********************************************************************/
- /* */
- /* subroutine vicar_labels - write vicar labels to output file */
-@@ -878,11 +894,10 @@
- /*********************************************************************/
-
- void vicar_labels(host)
--int host;
--
-+ int host;
- {
- char ibuf[2048],outstring[80];
-- short length,nlen,total_bytes,line,i;
-+ short length,total_bytes,i;
- unsigned char cr=13,lf=10,blank=32;
-
- do {
-@@ -890,7 +905,7 @@
- /*****************************************************************/
- /* find the checksum and store in label_checksum */
- /*****************************************************************/
-- if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
-+ if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
- ibuf[length] = '\0';
- label_checksum = atol(ibuf+35);
- }
-@@ -950,10 +965,10 @@
- /*********************************************************************/
-
- void no_labels(host)
--int host;
-+ int host;
- {
-- char ibuf[2048],outstring[80];
-- short length,nlen,total_bytes,line,i;
-+ char ibuf[2048];
-+ short length,i;
-
- do {
- length = read_var(ibuf,host);
-@@ -961,7 +976,7 @@
- /*****************************************************************/
- /* find the checksum and store in label_checksum */
- /*****************************************************************/
-- if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
-+ if ((i = strncmp(ibuf," CHECKSUM",(size_t) 9)) == 0) {
- ibuf[length] = '\0';
- label_checksum = atol(ibuf+35);
- }
-@@ -984,15 +999,16 @@
- open_files(&host);
- }
-
-+
- /*********************************************************************/
- /* */
--/* subroutine read_var - read variable length records from input file*/
-+/* subroutine read_var - read variable-length records from input file*/
- /* */
- /*********************************************************************/
-
- int read_var(ibuf,host)
--char *ibuf;
--int host;
-+ char *ibuf;
-+ int host;
- {
- int length,result,nlen;
- char temp;
-@@ -1027,19 +1043,19 @@
- return (length);
-
- case 3: /*******************************************************/
-- /* VAX host with variable length support */
-+ /* VAX host with variable-length support */
- /*******************************************************/
- length = read(infile,ibuf,(size_t) 2048/* upper bound */);
- return (length);
-
- case 4: /*******************************************************/
-- /* VAX host, but not a variable length file */
-+ /* VAX host, but not a variable-length file */
- /*******************************************************/
- length = 0;
- result = read(infile,&length,(size_t) 2);
- nlen = read(infile,ibuf,(size_t) length+(length%2));
-
-- /* check to see if we crossed a vax record boundary */
-+ /* check to see if we crossed a VAX record boundary */
- while (nlen < length)
- nlen += read(infile,ibuf+nlen,(size_t) length+(length%2)-nlen);
- return (length);
-@@ -1061,6 +1077,7 @@
- return 0;
- }
-
-+
- /*********************************************************************/
- /* */
- /* subroutine check_host - find out what kind of machine we are on */
-@@ -1115,23 +1132,23 @@
- "Host 5 - 32 bit integers without swapping, no var len support.");
- }
-
-- if ((*outname)!='-') fprintf(stderr,"%s\n",hostname);
-+ if ((*outname) != '-') fprintf(stderr, "%s\n", hostname);
- return(host);
- }
-
-
--int swap_int(inval) /* swap 4 byte integer */
-- int inval;
-+int swap_int(inval) /* swap 4 byte integer */
-+ int inval;
- {
-- union /* this union is used to swap 16 and 32 bit integers */
-+ union /* this union is used to swap 16 and 32 bit integers */
- {
- char ichar[4];
- short slen;
- int llen;
- } onion;
- char temp;
--
-- /* byte swap the input field */
-+
-+ /* byte swap the input field */
- onion.llen = inval;
- temp = onion.ichar[0];
- onion.ichar[0]=onion.ichar[3];
-@@ -1146,17 +1163,16 @@
- /****************************************************************************
- *_TITLE decompress - decompresses image lines stored in compressed format *
- *_ARGS TYPE NAME I/O DESCRIPTION */
-- char *ibuf; /* I Compressed data buffer */
-- char *obuf; /* O Decompressed image line */
-- int *nin; /* I Number of bytes on input buffer */
-- int *nout; /* I Number of bytes in output buffer */
--
-+ char *ibuf; /* I Compressed data buffer */
-+ char *obuf; /* O Decompressed image line */
-+ int *nin; /* I Number of bytes on input buffer */
-+ int *nout; /* I Number of bytes in output buffer */
- {
- /* The external root pointer to tree */
- extern NODE *tree;
-
- dcmprs(ibuf,obuf,nin,nout,tree);
--
-+
- return;
- }
-
-@@ -1165,8 +1181,7 @@
- /***************************************************************************
- *_TITLE decmpinit - initializes the Huffman tree *
- *_ARGS TYPE NAME I/O DESCRIPTION */
-- int *hist; /* I First-difference histogram. */
--
-+ int *hist; /* I First-difference histogram. */
- {
- extern NODE *tree; /* Huffman tree root pointer */
- tree = huff_tree(hist);
-@@ -1178,8 +1193,7 @@
- /****************************************************************************
- *_TITLE huff_tree - constructs the Huffman tree; returns pointer to root *
- *_ARGS TYPE NAME I/O DESCRIPTION */
-- int *hist; /* I First difference histogram */
--
-+ int *hist; /* I First difference histogram */
- {
- /* Local variables used */
- int freq_list[512]; /* Histogram frequency list */
-@@ -1189,7 +1203,6 @@
- NODE **np; /* Node list pointer */
-
- int num_freq; /* Number non-zero frequencies in histogram */
-- int sum; /* Sum of all frequencies */
-
- short int num_nodes; /* Counter for DN initialization */
- short int cnt; /* Miscellaneous counter */
-@@ -1228,7 +1241,7 @@
-
- j = 0;
- for (i=4 ; --i >= 0 ; j = (j << 8) | *(cp+i));
--
-+
- /* Now make the assignment */
- *fp++ = j;
- temp = new_node(num_nodes);
-@@ -1341,7 +1354,7 @@
- l--;
- if ( j <= freq_list) break;
- }
--
-+
- }
- return;
- }
-@@ -1362,9 +1375,9 @@
- NODE *ptr = root; /* pointer to position in tree */
- unsigned char test; /* test byte for bit set */
- unsigned char idn; /* input compressed byte */
--
-+
- char odn; /* last dn value decompressed */
--
-+
- char *ilim = ibuf + *nin; /* end of compressed bytes */
- char *olim = obuf + *nout; /* end of output buffer */
-
-@@ -1406,10 +1419,9 @@
- /****************************************************************************
- *_TITLE free_tree - free memory of all allocated nodes *
- *_ARGS TYPE NAME I/O DESCRIPTION */
-- int *nfreed; /* O Return of total count of nodes *
-+ int *nfreed; /* O Return of total count of nodes *
- * freed. */
--
--/*
-+/* *
- *_DESCR This routine is supplied to the programmer to free up all the *
- * allocated memory required to build the huffman tree. The count *
- * of the nodes freed is returned in the parameter 'nfreed'. The *
-@@ -1417,11 +1429,10 @@
- * than one file per run, the program will not keep allocating new *
- * memory without first deallocating all previous nodes associated *
- * with the previous file decompression. *
--
-+* *
- *_HIST 16-AUG-89 Kris Becker USGS, Flagstaff Original Version *
- *_END *
- ****************************************************************************/
--
- {
- int total_free = 0;
-
-@@ -1435,36 +1446,33 @@
-
- int free_node(pnode,total_free)
- /***************************************************************************
--*_TITLE free_node - deallocates an allocated NODE pointer
-+*_TITLE free_node - deallocates an allocated NODE pointer *
- *_ARGS TYPE NAME I/O DESCRIPTION */
- NODE *pnode; /* I Pointer to node to free */
-- int total_free; /* I Total number of freed nodes */
--
--/*
-+ int total_free; /* I Total number of freed nodes */
-+/* *
- *_DESCR free_node will check both right and left pointers of a node *
- * and then free the current node using the free() C utility. *
- * Note that all nodes attached to the node via right or left *
- * pointers area also freed, so be sure that this is the desired *
- * result when calling this routine. *
--
-+* *
- * This routine is supplied to allow successive calls to the *
- * decmpinit routine. It will free up the memory allocated *
- * by previous calls to the decmpinit routine. The call to free *
--* a previous huffman tree is: total = free_node(tree,(int) 0); *
-+* a previous huffman tree is: total = free_node(tree,(int) 0); *
- * This call must be done by the programmer application routine *
- * and is not done by any of these routines. *
- *_HIST 16-AUG-89 Kris Becker U.S.G.S Flagstaff Original Version */
- {
- if (pnode == (NODE *) NULL) return(total_free);
--
-+
- if (pnode->right != (NODE *) NULL)
- total_free = free_node(pnode->right,total_free);
- if (pnode->left != (NODE *) NULL)
- total_free = free_node(pnode->left,total_free);
--
-+
- free((char *) pnode);
- return(total_free + 1);
- }
-
--
--
-diff -ruN xv-3.10a/xcmap.c xv-3.10a-bugfixes/xcmap.c
---- xv-3.10a/xcmap.c 1995-01-03 13:14:52.000000000 -0800
-+++ xv-3.10a-bugfixes/xcmap.c 2005-03-20 15:51:59.000000000 -0800
-@@ -9,6 +9,9 @@
-
- /* include files */
- #include <stdio.h>
-+#ifdef __STDC__
-+# include <stdlib.h> /* exit(), abs() */
-+#endif
- #include <sys/types.h>
- #include <ctype.h>
-
-@@ -18,7 +21,7 @@
- #include <X11/cursorfont.h>
-
- #ifdef VMS
--#define index strchr
-+# define index strchr
- #endif
-
- typedef unsigned char byte;
-@@ -75,50 +78,50 @@
- int i;
- char *display, *geom;
- XEvent event;
--
-+
- cmd = argv[0];
- display = geom = NULL;
--
--
-+
-+
- /*********************Options*********************/
--
-+
- for (i = 1; i < argc; i++) {
- char *strind;
--
-+
- if (!strncmp(argv[i],"-g", (size_t)2)) { /* geometry */
- i++;
- geom = argv[i];
- continue;
- }
--
-+
- if (argv[i][0] == '=') { /* old-style geometry */
- geom = argv[i];
- continue;
- }
--
-+
- if (!strncmp(argv[i],"-d",(size_t) 2)) { /* display */
- i++;
- display = argv[i];
- continue;
- }
--
-+
- strind = (char *) index(argv[i], ':'); /* old-style display */
- if(strind != NULL) {
- display = argv[i];
- continue;
- }
--
-+
- Syntax();
- }
--
--
-+
-+
- /*****************************************************/
--
-+
- /* Open up the display. */
--
-+
- if ( (theDisp=XOpenDisplay(display)) == NULL)
- FatalError("can't open display");
--
-+
- theScreen = DefaultScreen(theDisp);
- theCmap = DefaultColormap(theDisp, theScreen);
- rootW = RootWindow(theDisp,theScreen);
-@@ -126,9 +129,9 @@
- fcol = WhitePixel(theDisp,theScreen);
- bcol = BlackPixel(theDisp,theScreen);
- theVisual = DefaultVisual(theDisp,theScreen);
--
-+
- dispcells = DisplayCells(theDisp, theScreen);
--
-+
- if (dispcells>256) {
- sprintf(tmpstr,"dispcells = %d. %s",
- dispcells, "This program can only deal with <= 8-bit displays.");
-@@ -140,27 +143,32 @@
- nxcells = nycells = 8;
- else if (dispcells>4)
- nxcells = nycells = 4;
-- else
-+ else if (dispcells>2)
- nxcells = nycells = 2;
--
-+ else
-+ {
-+ nxcells = 2;
-+ nycells = 1;
-+ }
-+
- /**************** Create/Open X Resources ***************/
- if ((mfinfo = XLoadQueryFont(theDisp,FONT))==NULL) {
- sprintf(tmpstr,"couldn't open '%s' font",FONT);
- FatalError(tmpstr);
- }
--
-+
- mfont=mfinfo->fid;
- XSetFont(theDisp,theGC,mfont);
- XSetForeground(theDisp,theGC,fcol);
- XSetBackground(theDisp,theGC,bcol);
--
-+
- CreateMainWindow(cmd,geom,argc,argv);
- Resize(WIDE,HIGH);
--
-- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
-+
-+ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
- | StructureNotifyMask | ButtonPressMask);
- XMapWindow(theDisp,mainW);
--
-+
- /**************** Main loop *****************/
- while (1) {
- XNextEvent(theDisp, &event);
-@@ -177,41 +185,41 @@
- switch (event->type) {
- case Expose: {
- XExposeEvent *exp_event = (XExposeEvent *) event;
--
-- if (exp_event->window==mainW)
-+
-+ if (exp_event->window==mainW)
- DrawWindow(exp_event->x,exp_event->y,
- exp_event->width, exp_event->height);
- }
- break;
--
-+
- case ButtonPress: {
- XButtonEvent *but_event = (XButtonEvent *) event;
--
-- if (but_event->window == mainW && but_event->button == Button1)
-+
-+ if (but_event->window == mainW && but_event->button == Button1)
- TrackMouse(but_event->x, but_event->y);
- }
- break;
--
-+
- case KeyPress: {
- XKeyEvent *key_event = (XKeyEvent *) event;
- KeySym ks;
- XComposeStatus status;
--
-+
- XLookupString(key_event,tmpstr,128,&ks,&status);
- if (tmpstr[0]=='q' || tmpstr[0]=='Q') Quit();
- }
- break;
--
-+
- case ConfigureNotify: {
- XConfigureEvent *conf_event = (XConfigureEvent *) event;
--
-- if (conf_event->window == mainW &&
-+
-+ if (conf_event->window == mainW &&
- (conf_event->width != WIDE || conf_event->height != HIGH))
- Resize(conf_event->width, conf_event->height);
- }
- break;
--
--
-+
-+
- case CirculateNotify:
- case MapNotify:
- case DestroyNotify:
-@@ -220,7 +228,7 @@
- case UnmapNotify:
- case MappingNotify:
- case ClientMessage: break;
--
-+
- default: /* ignore unexpected events */
- break;
- } /* end of switch */
-@@ -262,24 +270,31 @@
- XSizeHints hints;
- int i,x,y;
- unsigned int w,h;
--
-+
- WIDE = HIGH = 256; /* default window size */
--
-+
- x=y=w=h=1;
- i=XParseGeometry(geom,&x,&y,&w,&h);
-- if (i&WidthValue) WIDE = (int) w;
-- if (i&HeightValue) HIGH = (int) h;
--
-- if (i&XValue || i&YValue) hints.flags = USPosition;
-- else hints.flags = PPosition;
--
-- hints.flags |= USSize;
--
-- if (i&XValue && i&XNegative)
-- x = XDisplayWidth(theDisp,theScreen)-WIDE-abs(x);
-- if (i&YValue && i&YNegative)
-- y = XDisplayHeight(theDisp,theScreen)-HIGH-abs(y);
--
-+ if (i&WidthValue)
-+ {
-+ WIDE = (int) w;
-+ hints.flags |= USSize;
-+ }
-+ if (i&HeightValue)
-+ {
-+ HIGH = (int) h;
-+ hints.flags |= USSize;
-+ }
-+
-+ if (i&XValue || i&YValue)
-+ {
-+ if (i&XNegative)
-+ x = XDisplayWidth(theDisp,theScreen)-WIDE-abs(x);
-+ if (i&YNegative)
-+ y = XDisplayHeight(theDisp,theScreen)-HIGH-abs(y);
-+ hints.flags |= USPosition;
-+ }
-+
- hints.x=x; hints.y=y;
- hints.width = WIDE; hints.height = HIGH;
- hints.max_width = DisplayWidth(theDisp,theScreen);
-@@ -288,22 +303,22 @@
- hints.min_height = 16;
- hints.width_inc = hints.height_inc = 16;
- hints.flags |= PMaxSize | PMinSize | PResizeInc;
--
-+
- xswa.background_pixel = bcol;
- xswa.border_pixel = fcol;
- xswa.cursor = XCreateFontCursor (theDisp, XC_top_left_arrow);
- xswamask = CWBackPixel | CWBorderPixel | CWCursor;
--
-+
- mainW = XCreateWindow(theDisp,rootW,x,y,(unsigned int) WIDE,
-- (unsigned int) HIGH, 2, 0,
-+ (unsigned int) HIGH, 2, 0,
- (unsigned int) CopyFromParent,
- CopyFromParent, xswamask, &xswa);
--
-+
- XSetStandardProperties(theDisp,mainW,"xcmap","xcmap",None,
- argv,argc,&hints);
--
-+
- if (!mainW) FatalError("Can't open main window");
--
-+
- }
-
-
-@@ -312,11 +327,11 @@
- int x,y,w,h;
- {
- int i,j,x1,y1,x2,y2;
--
-+
- x1 = x / cWIDE; y1 = y / cHIGH; /* (x1,y1) (x2,y2): bounding */
- x2 = ((x+w) + cWIDE - 1) / cWIDE; /* rect in cell coords */
- y2 = ((y+h) + cHIGH - 1) / cHIGH;
--
-+
- for (i=y1; i<y2; i++) {
- for (j=x1; j<x2; j++) {
- XSetForeground(theDisp,theGC,(unsigned long) (i*nycells+j) );
-@@ -343,18 +358,18 @@
- {
- /* called when there's a button press in the window. draws the pixel
- value, and loops until button is released */
--
-+
- Window rootW,childW;
- int rx,ry,x,y;
- unsigned int mask;
--
-+
- pvalup = 0;
- DrawPixValue(mx,my);
--
-+
- while (1) {
- if (XQueryPointer(theDisp,mainW,&rootW,&childW,&rx,&ry,&x,&y,&mask)) {
- if (!(mask & Button1Mask)) break; /* button released */
--
-+
- DrawPixValue(x,y);
- }
- }
-@@ -367,10 +382,10 @@
- {
- static unsigned long pix, lastpix;
- static int pvaly;
--
-+
- if (x<0) x=0; if (x>=WIDE) x=WIDE-1;
- if (y<0) y=0; if (y>=HIGH) y=HIGH-1;
--
-+
- if (!pvalup) { /* it's not up. make it so */
- if (y >= HIGH/2) pvaly = 0; else pvaly = HIGH - 12;
- pvalup = 1;
-@@ -378,30 +393,30 @@
- XClearArea(theDisp,mainW,0,pvaly,
- (unsigned int) WIDE, (unsigned int) 13,True);
- }
--
-+
- x /= cWIDE; y /= cHIGH;
--
-+
- pix = y * nxcells + x;
--
-+
- if (pix != lastpix) {
- XColor def;
- char *sp;
--
-+
- XSetForeground(theDisp,theGC,fcol);
- lastpix = def.pixel = pix;
- if (pix<dispcells) {
- XQueryColor(theDisp, theCmap, &def);
- sprintf(tmpstr, "Pix %3ld = ($%04x, $%04x, $%04x)",
- pix, def.red, def.green, def.blue);
--
-- /* make the hex uppercase */
-- for (sp=tmpstr+4; *sp; sp++)
-+
-+ /* make the hex uppercase */
-+ for (sp=tmpstr+4; *sp; sp++)
- if (islower(*sp)) *sp = toupper(*sp);
- }
- else {
- sprintf(tmpstr, "Pix %3ld is out of legal range. ", pix);
- }
--
-+
- XDrawImageString(theDisp,mainW,theGC,5,pvaly+10,tmpstr,
- (int) strlen(tmpstr));
- }
-diff -ruN xv-3.10a/xv.c xv-3.10a-bugfixes/xv.c
---- xv-3.10a/xv.c 1995-01-19 10:08:43.000000000 -0800
-+++ xv-3.10a-bugfixes/xv.c 2005-03-20 22:25:22.000000000 -0800
-@@ -33,9 +33,9 @@
-
- /* a mono-spaced font needed for the 'pixel value tracking' feature */
- #define MFONT1 "-misc-fixed-medium-r-normal-*-13-*"
--#define MFONT2 "6x13"
-+#define MFONT2 "6x13"
- #define MFONT3 "-*-courier-medium-r-*-*-12-*"
--#define MFONT4 "fixed"
-+#define MFONT4 "fixed"
-
-
- /* default positions for various windows */
-@@ -116,13 +116,13 @@
-
- /* formerly local vars in main, made local to this module when
- parseResources() and parseCmdLine() were split out of main() */
--
-+
- int imap, ctrlmap, gmap, browmap, cmtmap, clrroot, nopos, limit2x;
- char *display, *whitestr, *blackstr, *histr, *lostr,
- *infogeom, *fgstr, *bgstr, *ctrlgeom, *gamgeom, *browgeom, *tmpstr;
- char *rootfgstr, *rootbgstr, *visualstr, *textgeom, *cmtgeom;
- char *monofontname, *flistName;
--int curstype, stdinflag, browseMode, savenorm, preview, pscomp, preset,
-+int curstype, stdinflag, browseMode, savenorm, preview, pscomp, preset,
- rmodeset, gamset, cgamset, perfect, owncmap, rwcolor, stdcmap;
- int nodecor;
- double gamval, rgamval, ggamval, bgamval;
-@@ -177,16 +177,16 @@
-
- LocalCmap = browCmap = 0;
- stdinflag = 0;
-- autoclose = autoDelete = 0;
-+ autoclose = autoDelete = 0;
- cmapInGam = 0;
- grabDelay = 0;
- showzoomcursor = 0;
- perfect = owncmap = stdcmap = rwcolor = 0;
-
- ignoreConfigs = 0;
-- browPerfect = 1;
-+ browPerfect = 1;
- gamval = rgamval = ggamval = bgamval = 1.0;
--
-+
- picType = -1; /* gets set once file is loaded */
- colorMapMode = CM_NORMAL;
- haveStdCmap = STD_NONE;
-@@ -230,11 +230,11 @@
- }
-
- /* init command-line options flags */
-- infogeom = DEFINFOGEOM; ctrlgeom = DEFCTRLGEOM;
-+ infogeom = DEFINFOGEOM; ctrlgeom = DEFCTRLGEOM;
- gamgeom = DEFGAMGEOM; browgeom = DEFBROWGEOM;
- textgeom = DEFTEXTGEOM; cmtgeom = DEFCMTGEOM;
-
-- ncols = -1; mono = 0;
-+ ncols = -1; mono = 0;
- ninstall = 0; fixedaspect = 0; noFreeCols = nodecor = 0;
- DEBUG = 0; bwidth = 2;
- nolimits = useroot = clrroot = noqcheck = 0;
-@@ -306,7 +306,7 @@
- /*****************************************************/
- /*** X Setup ***/
- /*****************************************************/
--
-+
- theScreen = DefaultScreen(theDisp);
- theCmap = DefaultColormap(theDisp, theScreen);
- rootW = RootWindow(theDisp,theScreen);
-@@ -321,52 +321,66 @@
- rootDEEP = dispDEEP;
-
- /* things dependant on theVisual:
-- * dispDEEP, theScreen, rootW, ncells, theCmap, theGC,
-+ * dispDEEP, theScreen, rootW, ncells, theCmap, theGC,
- * vrWIDE, dispWIDE, vrHIGH, dispHIGH, maxWIDE, maxHIGH
- */
-
-
--
- /* if we *haven't* had a non-default visual specified,
-- see if we have a TrueColor or DirectColor visual of 24 or 32 bits,
-+ see if we have a TrueColor or DirectColor visual of 24 or 32 bits,
- and if so, use that as the default visual (prefer TrueColor) */
-
- if (!visualstr && !useroot) {
-+ VisualID defvid;
- XVisualInfo *vinfo, rvinfo;
- int best, numvis;
- long flags;
-
-- best = -1;
-+ best = -1;
- rvinfo.class = TrueColor;
- rvinfo.screen = theScreen;
-- flags = VisualClassMask | VisualScreenMask;
--
-+ flags = VisualClassMask | VisualScreenMask;
-+ defvid = XVisualIDFromVisual(DefaultVisual(theDisp,
-+ DefaultScreen(theDisp)));
-+
- vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
-- if (vinfo) { /* look for a TrueColor, 24-bit or more (pref 24) */
-- for (i=0, best = -1; i<numvis; i++) {
-+ if (vinfo) {
-+ /* Check list, use 'default', first 24-bit, or first >24-bit */
-+ for (i=0; i<numvis && best==-1; i++) { /* default? */
-+ if ((vinfo[i].visualid == defvid) && (vinfo[i].depth >= 24)) best=i;
-+ }
-+ for (i=0; i<numvis && best==-1; i++) { /* 24-bit ? */
- if (vinfo[i].depth == 24) best = i;
-- else if (vinfo[i].depth>24 && best<0) best = i;
-+ }
-+ for (i=0; i<numvis && best==-1; i++) { /* >24-bit ? */
-+ if (vinfo[i].depth >= 24) best = i;
- }
- }
-
- if (best == -1) { /* look for a DirectColor, 24-bit or more (pref 24) */
- rvinfo.class = DirectColor;
- if (vinfo) XFree((char *) vinfo);
-+
- vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
- if (vinfo) {
-- for (i=0, best = -1; i<numvis; i++) {
-+ for (i=0; i<numvis && best==-1; i++) { /* default? */
-+ if ((vinfo[i].visualid == defvid) && (vinfo[i].depth >= 24)) best=i;
-+ }
-+ for (i=0; i<numvis && best==-1; i++) { /* 24-bit ? */
- if (vinfo[i].depth == 24) best = i;
-- else if (vinfo[i].depth>24 && best<0) best = i;
-+ }
-+ for (i=0; i<numvis && best==-1; i++) { /* >24-bit ? */
-+ if (vinfo[i].depth >= 24) best = i;
- }
- }
- }
--
-+
- if (best>=0 && best<numvis) useOtherVisual(vinfo, best);
- if (vinfo) XFree((char *) vinfo);
- }
-
-
--
-+
- if (visualstr && useroot) {
- fprintf(stderr, "%s: %sUsing default visual.\n",
- cmd, "Warning: Can't use specified visual on root. ");
-@@ -401,11 +415,11 @@
- long vinfomask;
- int numvis, best;
-
-- if (vclass >= 0) {
-+ if (vclass >= 0) {
- rvinfo.class = vclass; vinfomask = VisualClassMask;
- }
- else { rvinfo.visualid = vid; vinfomask = VisualIDMask; }
--
-+
- rvinfo.screen = theScreen;
- vinfomask |= VisualScreenMask;
-
-@@ -429,9 +443,9 @@
- /* make linear colormap for DirectColor visual */
- if (theVisual->class == DirectColor) makeDirectCmap();
-
-- defaultVis = (XVisualIDFromVisual(theVisual) ==
-+ defaultVis = (XVisualIDFromVisual(theVisual) ==
- XVisualIDFromVisual(DefaultVisual(theDisp, DefaultScreen(theDisp))));
--
-+
-
- /* turn GraphicsExposures OFF in the default GC */
- {
-@@ -456,12 +470,12 @@
- Atom actual_type;
- int actual_format;
- unsigned long nitems, bytesafter;
-- Window *newRoot = NULL;
-+ byte *newRoot = NULL; /* byte instead of Window avoids type-pun warning */
- XWindowAttributes xwa;
- if (XGetWindowProperty (theDisp, children[i], __SWM_VROOT, 0L, 1L,
- False, XA_WINDOW, &actual_type, &actual_format, &nitems,
- &bytesafter, (unsigned char **) &newRoot) == Success && newRoot) {
-- vrootW = *newRoot;
-+ vrootW = *(Window *)newRoot;
- XGetWindowAttributes(theDisp, vrootW, &xwa);
- vrWIDE = xwa.width; vrHIGH = xwa.height;
- dispDEEP = xwa.depth;
-@@ -492,7 +506,7 @@
- XColor fc, bc;
- fc.red = fc.green = fc.blue = 0xffff;
- bc.red = bc.green = bc.blue = 0x0000;
--
-+
- XRecolorCursor(theDisp, zoom, &fc, &bc);
- }
-
-@@ -541,7 +555,7 @@
-
-
- /* set up fg,bg colors */
-- fg = black; bg = white;
-+ fg = black; bg = white;
- if (fgstr && XParseColor(theDisp, theCmap, fgstr, &ecdef) &&
- xvAllocColor(theDisp, theCmap, &ecdef)) {
- fg = ecdef.pixel;
-@@ -590,7 +604,7 @@
- if (theVisual->class == StaticGray || theVisual->class == GrayScale)
- mono = 1;
- }
--
-+
-
-
- iconPix = MakePix1(rootW, icon_bits, icon_width, icon_height);
-@@ -598,27 +612,27 @@
- riconPix = MakePix1(rootW, runicon_bits, runicon_width, runicon_height);
- riconmask= MakePix1(rootW, runiconm_bits, runiconm_width,runiconm_height);
-
-- if (!iconPix || !iconmask || !riconPix || !riconmask)
-+ if (!iconPix || !iconmask || !riconPix || !riconmask)
- FatalError("Unable to create icon pixmaps\n");
-
-- gray50Tile = XCreatePixmapFromBitmapData(theDisp, rootW,
-+ gray50Tile = XCreatePixmapFromBitmapData(theDisp, rootW,
- (char *) cboard50_bits,
-- cboard50_width, cboard50_height,
-+ cboard50_width, cboard50_height,
- infofg, infobg, dispDEEP);
- if (!gray50Tile) FatalError("Unable to create gray50Tile bitmap\n");
-
-- gray25Tile = XCreatePixmapFromBitmapData(theDisp, rootW,
-+ gray25Tile = XCreatePixmapFromBitmapData(theDisp, rootW,
- (char *) gray25_bits,
-- gray25_width, gray25_height,
-+ gray25_width, gray25_height,
- infofg, infobg, dispDEEP);
- if (!gray25Tile) FatalError("Unable to create gray25Tile bitmap\n");
-
-
- /* try to load fonts */
-- if ( (mfinfo = XLoadQueryFont(theDisp,FONT1))==NULL &&
-- (mfinfo = XLoadQueryFont(theDisp,FONT2))==NULL &&
-- (mfinfo = XLoadQueryFont(theDisp,FONT3))==NULL &&
-- (mfinfo = XLoadQueryFont(theDisp,FONT4))==NULL &&
-+ if ( (mfinfo = XLoadQueryFont(theDisp,FONT1))==NULL &&
-+ (mfinfo = XLoadQueryFont(theDisp,FONT2))==NULL &&
-+ (mfinfo = XLoadQueryFont(theDisp,FONT3))==NULL &&
-+ (mfinfo = XLoadQueryFont(theDisp,FONT4))==NULL &&
- (mfinfo = XLoadQueryFont(theDisp,FONT5))==NULL) {
- sprintf(str,
- "couldn't open the following fonts:\n\t%s\n\t%s\n\t%s\n\t%s\n\t%s",
-@@ -632,14 +646,14 @@
-
- if (monofontname) {
- monofinfo = XLoadQueryFont(theDisp, monofontname);
-- if (!monofinfo) fprintf(stderr,"xv: unable to load font '%s'\n",
-+ if (!monofinfo) fprintf(stderr,"xv: unable to load font '%s'\n",
- monofontname);
-- }
-+ }
-
- if (!monofinfo) {
-- if ((monofinfo = XLoadQueryFont(theDisp,MFONT1))==NULL &&
-- (monofinfo = XLoadQueryFont(theDisp,MFONT2))==NULL &&
-- (monofinfo = XLoadQueryFont(theDisp,MFONT3))==NULL &&
-+ if ((monofinfo = XLoadQueryFont(theDisp,MFONT1))==NULL &&
-+ (monofinfo = XLoadQueryFont(theDisp,MFONT2))==NULL &&
-+ (monofinfo = XLoadQueryFont(theDisp,MFONT3))==NULL &&
- (monofinfo = XLoadQueryFont(theDisp,MFONT4))==NULL) {
- sprintf(str,"couldn't open %s fonts:\n\t%s\n\t%s\n\t%s\n\t%s",
- "any of the following",
-@@ -649,28 +663,28 @@
- }
-
- monofont=monofinfo->fid;
--
-
--
--
-+
-+
-+
- /* if ncols wasn't set, set it to 2^dispDEEP, unless dispDEEP=1, in which
- case ncols = 0; (ncols = max number of colors allocated. on 1-bit
- displays, no colors are allocated */
--
-+
- if (ncols == -1) {
- if (dispDEEP>1) ncols = 1 << ((dispDEEP>8) ? 8 : dispDEEP);
- else ncols = 0;
- }
- else if (ncols>256) ncols = 256; /* so program doesn't blow up */
--
--
-+
-+
- GenerateFSGamma(); /* has to be done before 'OpenBrowse()' is called */
--
--
--
-+
-+
-+
- /* no filenames. build one-name (stdio) list (if stdinflag) */
- if (numnames==0) {
-- if (stdinflag) {
-+ if (stdinflag) {
- /* have to malloc namelist[0] so we can free it in deleteFromList() */
- namelist[0] = (char *) malloc(strlen(STDINSTR) + 1);
- if (!namelist[0]) FatalError("unable to to build namelist[0]");
-@@ -679,16 +693,16 @@
- }
- else namelist[0] = NULL;
- }
--
-+
- if (numnames) makeDispNames();
--
--
-- if (viewonly || autoquit) {
-- imap = ctrlmap = gmap = browmap = cmtmap = 0;
-+
-+
-+ if (viewonly || autoquit) {
-+ imap = ctrlmap = gmap = browmap = cmtmap = 0;
- novbrowse = 1;
- }
--
--
-+
-+
- /* create the info box window */
- CreateInfo(infogeom);
- XSelectInput(theDisp, infoW, ExposureMask | ButtonPressMask | KeyPressMask
-@@ -698,12 +712,12 @@
- RedrawInfo(0,0,1000,1000); /* explicit draw if mapped */
- XFlush(theDisp);
- }
--
--
-+
-+
- /* create the control box window */
- CreateCtrl(ctrlgeom);
- epicMode = EM_RAW; SetEpicMode();
--
-+
- XSelectInput(theDisp, ctrlW, ExposureMask | ButtonPressMask | KeyPressMask
- | StructureNotifyMask);
- if (ctrlmap < 0) { /* map iconified */
-@@ -719,22 +733,22 @@
- RedrawCtrl(0,0,1000,1000); /* explicit draw if mapped */
- XFlush(theDisp);
- }
--
-+
- fixDispNames();
- ChangedCtrlList();
--
-+
- /* disable root modes if using non-default visual */
- if (!defaultVis) {
- for (i=RMB_ROOT; i<RMB_MAX; i++) rootMB.dim[i] = 1;
- }
--
--
-+
-+
- /* create the directory window */
- CreateDirW(NULL);
- XSelectInput(theDisp, dirW, ExposureMask | ButtonPressMask | KeyPressMask);
- browseCB.val = browseMode;
- savenormCB.val = savenorm;
--
-+
- /* create the gamma window */
- CreateGam(gamgeom, (gamset) ? gamval : -1.0,
- (cgamset) ? rgamval : -1.0,
-@@ -744,60 +758,60 @@
- XSelectInput(theDisp, gamW, ExposureMask | ButtonPressMask | KeyPressMask
- | StructureNotifyMask
- | (cmapInGam ? ColormapChangeMask : 0));
--
-+
- GamBox(gmap); /* map it (or not) */
--
--
--
-+
-+
-+
- stdnfcols = 0; /* so we don't try to free any if we don't create any */
--
-+
- if (!novbrowse) {
- MakeBrowCmap();
- /* create the visual browser window */
- CreateBrowse(browgeom, fgstr, bgstr, histr, lostr);
--
-+
- if (browmap) OpenBrowse();
- }
- else windowMB.dim[WMB_BROWSE] = 1; /* disable visual schnauzer */
--
--
-+
-+
- CreateTextWins(textgeom, cmtgeom);
- if (cmtmap) OpenCommentText();
--
--
-+
-+
- /* create the ps window */
- CreatePSD(NULL);
- XSetTransientForHint(theDisp, psW, dirW);
- encapsCB.val = preview;
- pscompCB.val = pscomp;
--
--
-+
-+
- #ifdef HAVE_JPEG
- CreateJPEGW();
- XSetTransientForHint(theDisp, jpegW, dirW);
- #endif
--
-+
- #ifdef HAVE_TIFF
- CreateTIFFW();
- XSetTransientForHint(theDisp, tiffW, dirW);
- #endif
--
--
-+
-+
- LoadFishCursors();
- SetCursors(-1);
--
--
-+
-+
- /* if we're not on a colormapped display, turn off rwcolor */
- if (!CMAPVIS(theVisual)) {
- if (rwcolor) fprintf(stderr, "xv: not a colormapped display. %s\n",
- "'rwcolor' turned off.");
--
-+
- allocMode = AM_READONLY;
- dispMB.flags[DMB_COLRW] = 0; /* de-'check' */
- dispMB.dim[DMB_COLRW] = 1; /* and dim it */
- }
--
--
-+
-+
- if (force24) {
- Set824Menus(PIC24);
- conv24MB.flags[CONV24_LOCK] = 1;
-@@ -812,15 +826,15 @@
- Set824Menus(PIC8); /* default mode */
- picType = PIC8;
- }
--
--
--
-+
-+
-+
- /* make std colormap, maybe */
- ChangeCmapMode(colorMapMode, 0, 0);
-
-
--
--
-+
-+
- /* Do The Thing... */
- mainLoop();
- Quit(0);
-@@ -832,12 +846,12 @@
- /*****************************************************/
- static void makeDirectCmap()
- {
-- int i, j, cmaplen, numgot;
-+ int i, cmaplen, numgot;
- byte origgot[256];
- XColor c;
- u_long rmask, gmask, bmask;
- int rshift, gshift, bshift;
--
-+
-
- rmask = theVisual->red_mask;
- gmask = theVisual->green_mask;
-@@ -849,22 +863,22 @@
-
- if (rshift<0) rmask = rmask << (-rshift);
- else rmask = rmask >> rshift;
--
-+
- if (gshift<0) gmask = gmask << (-gshift);
- else gmask = gmask >> gshift;
--
-+
- if (bshift<0) bmask = bmask << (-bshift);
- else bmask = bmask >> bshift;
-
-
- cmaplen = theVisual->map_entries;
- if (cmaplen>256) cmaplen=256;
--
-+
-
- /* try to alloc a 'cmaplen' long grayscale colormap. May not get all
- entries for whatever reason. Build table 'directConv[]' that
- maps range [0..(cmaplen-1)] into set of colors we did get */
--
-+
- for (i=0; i<256; i++) { origgot[i] = 0; directConv[i] = 0; }
-
- for (i=numgot=0; i<cmaplen; i++) {
-@@ -882,9 +896,9 @@
- }
- }
-
--
-+
- if (numgot == 0) FatalError("Got no entries in DirectColor cmap!\n");
--
-+
- /* directConv may or may not have holes in it. */
- for (i=0; i<cmaplen; i++) {
- if (!origgot[i]) {
-@@ -892,10 +906,10 @@
- numbak = numfwd = 0;
- while ((i - numbak) >= 0 && !origgot[i-numbak]) numbak++;
- while ((i + numfwd) < cmaplen && !origgot[i+numfwd]) numfwd++;
--
-+
- if (i-numbak<0 || !origgot[i-numbak]) numbak = 999;
- if (i+numfwd>=cmaplen || !origgot[i+numfwd]) numfwd = 999;
--
-+
- if (numbak<numfwd) directConv[i] = directConv[i-numbak];
- else if (numfwd<999) directConv[i] = directConv[i+numfwd];
- else FatalError("DirectColor cmap: can't happen!");
-@@ -926,14 +940,14 @@
- {
- if (!vinfo || best<0) return;
-
-- if (vinfo[best].visualid ==
-+ if (vinfo[best].visualid ==
- XVisualIDFromVisual(DefaultVisual(theDisp, theScreen))) return;
-
- theVisual = vinfo[best].visual;
-
- if (DEBUG) {
- fprintf(stderr,"%s: using %s visual (0x%0x), depth = %d, screen = %d\n",
-- cmd,
-+ cmd,
- (vinfo[best].class==StaticGray) ? "StaticGray" :
- (vinfo[best].class==StaticColor) ? "StaticColor" :
- (vinfo[best].class==TrueColor) ? "TrueColor" :
-@@ -947,41 +961,41 @@
- (int) vinfo[best].red_mask, (int) vinfo[best].green_mask,
- (int) vinfo[best].blue_mask, vinfo[best].bits_per_rgb);
- }
--
-+
- dispDEEP = vinfo[best].depth;
- theScreen = vinfo[best].screen;
- rootW = RootWindow(theDisp, theScreen);
- ncells = vinfo[best].colormap_size;
- theCmap = XCreateColormap(theDisp, rootW, theVisual, AllocNone);
--
-+
- {
- /* create a temporary window using this visual so we can
- create a GC for this visual */
--
-- Window win;
-+
-+ Window win;
- XSetWindowAttributes xswa;
- XGCValues xgcv;
- unsigned long xswamask;
--
-+
- XFlush(theDisp);
- XSync(theDisp, False);
--
-+
- xswa.background_pixel = 0;
- xswa.border_pixel = 1;
- xswa.colormap = theCmap;
- xswamask = CWBackPixel | CWBorderPixel | CWColormap;
--
-+
- win = XCreateWindow(theDisp, rootW, 0, 0, 100, 100, 2, (int) dispDEEP,
- InputOutput, theVisual, xswamask, &xswa);
--
-+
- XFlush(theDisp);
- XSync(theDisp, False);
--
-+
- theGC = XCreateGC(theDisp, win, 0L, &xgcv);
--
-+
- XDestroyWindow(theDisp, win);
- }
--
-+
- vrWIDE = dispWIDE = DisplayWidth(theDisp,theScreen);
- vrHIGH = dispHIGH = DisplayHeight(theDisp,theScreen);
- maxWIDE = dispWIDE; maxHIGH = dispHIGH;
-@@ -1037,8 +1051,8 @@
- fprintf(stderr,"%s: unable to parse 'aspect' resource\n",cmd);
- else defaspect = (float) n / (float) d;
- }
--
-- if (rd_flag("2xlimit")) limit2x = def_int;
-+
-+ if (rd_flag("2xlimit")) limit2x = def_int;
- if (rd_flag("auto4x3")) auto4x3 = def_int;
- if (rd_flag("autoClose")) autoclose = def_int;
- if (rd_flag("autoCrop")) autocrop = def_int;
-@@ -1073,7 +1087,7 @@
-
- if (rd_str ("expand")) {
- if (index(def_str, ':')) {
-- if (sscanf(def_str, "%lf:%lf", &hexpand, &vexpand)!=2)
-+ if (sscanf(def_str, "%lf:%lf", &hexpand, &vexpand)!=2)
- { hexpand = vexpand = 1.0; }
- }
- else hexpand = vexpand = atof(def_str);
-@@ -1108,7 +1122,7 @@
- if (rd_flag("ownCmap")) owncmap = def_int;
- if (rd_flag("perfect")) perfect = def_int;
- if (rd_flag("popupKludge")) winCtrPosKludge = def_int;
-- if (rd_str ("print")) strncpy(printCmd, def_str,
-+ if (rd_str ("print")) strncpy(printCmd, def_str,
- (size_t) PRINTCMDLEN);
- if (rd_flag("pscompress")) pscomp = def_int;
- if (rd_flag("pspreview")) preview = def_int;
-@@ -1146,7 +1160,7 @@
-
- not_in_first_half = 0;
-
-- if (argv[i][0] != '-' && argv[i][0] != '+') {
-+ if (argv[i][0] != '-' && argv[i][0] != '+') {
- /* a file name. put it in list */
-
- if (!nostat) {
-@@ -1186,54 +1200,54 @@
-
- else if (!argcmp(argv[i],"-best24",3,0,&pm)) /* -best */
- conv24 = CONV24_BEST;
--
-+
- else if (!argcmp(argv[i],"-bg",3,0,&pm)) /* bg color */
- { if (++i<argc) bgstr = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-black",3,0,&pm)) /* black color */
- { if (++i<argc) blackstr = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-bw",3,0,&pm)) /* border width */
- { if (++i<argc) bwidth=atoi(argv[i]); }
--
-+
- else if (!argcmp(argv[i],"-cecmap",4,1,&cmapInGam)); /* cmapInGam */
--
-+
- else if (!argcmp(argv[i],"-cegeometry",4,0,&pm)) /* gammageom */
- { if (++i<argc) gamgeom = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-cemap",4,1,&gmap)); /* gmap */
--
-+
- else if (!argcmp(argv[i],"-cgamma",4,0,&pm)) { /* color gamma */
- if (i+3<argc) {
-- rgamval = atof(argv[++i]);
-- ggamval = atof(argv[++i]);
-- bgamval = atof(argv[++i]);
-+ rgamval = atof(argv[++i]);
-+ ggamval = atof(argv[++i]);
-+ bgamval = atof(argv[++i]);
- }
- cgamset++;
- }
--
-+
- else if (!argcmp(argv[i],"-cgeometry",4,0,&pm)) /* ctrlgeom */
- { if (++i<argc) ctrlgeom = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-clear",4,1,&clrroot)); /* clear */
- else if (!argcmp(argv[i],"-close",4,1,&autoclose)); /* close */
- else if (!argcmp(argv[i],"-cmap", 3,1,&ctrlmap)); /* ctrlmap */
-
- else if (!argcmp(argv[i],"-cmtgeometry",5,0,&pm)) /* comment geom */
- { if (++i<argc) cmtgeom = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-cmtmap",5,1,&cmtmap)); /* map cmt window */
--
-+
- else if (!argcmp(argv[i],"-crop",3,0,&pm)) { /* crop */
- if (i+4<argc) {
-- acropX = atoi(argv[++i]);
-- acropY = atoi(argv[++i]);
-- acropW = atoi(argv[++i]);
-- acropH = atoi(argv[++i]);
-+ acropX = atoi(argv[++i]);
-+ acropY = atoi(argv[++i]);
-+ acropW = atoi(argv[++i]);
-+ acropH = atoi(argv[++i]);
- }
- acrop++;
- }
--
-+
- else if (!argcmp(argv[i],"-cursor",3,0,&pm)) /* cursor */
- { if (++i<argc) curstype = atoi(argv[i]); }
-
-@@ -1265,7 +1279,7 @@
- else if (!argcmp(argv[i],"-expand",2,0,&pm)) { /* expand factor */
- if (++i<argc) {
- if (index(argv[i], ':')) {
-- if (sscanf(argv[i], "%lf:%lf", &hexpand, &vexpand)!=2)
-+ if (sscanf(argv[i], "%lf:%lf", &hexpand, &vexpand)!=2)
- { hexpand = vexpand = 1.0; }
- }
- else hexpand = vexpand = atof(argv[i]);
-@@ -1274,47 +1288,47 @@
-
- else if (!argcmp(argv[i],"-fg",3,0,&pm)) /* fg color */
- { if (++i<argc) fgstr = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-fixed",3,1,&fixedaspect)); /* fix asp. ratio */
--
-+
- else if (!argcmp(argv[i],"-flist",3,0,&pm)) /* file list */
- { if (++i<argc) flistName = argv[i]; }
-
- else if (!argcmp(argv[i],"-gamma",3,0,&pm)) /* gamma */
- { if (++i<argc) gamval = atof(argv[i]); gamset++; }
--
-+
- else if (!argcmp(argv[i],"-geometry",3,0,&pm)) /* geometry */
- { if (++i<argc) maingeom = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-grabdelay",3,0,&pm)) /* grabDelay */
- { if (++i<argc) grabDelay = atoi(argv[i]); }
--
-+
- else if (!argcmp(argv[i],"-gsdev",4,0,&pm)) /* gsDevice */
- { if (++i<argc) gsDev = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-gsgeom",4,0,&pm)) /* gsGeometry */
- { if (++i<argc) gsGeomStr = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-gsres",4,0,&pm)) /* gsResolution */
- { if (++i<argc) gsRes=abs(atoi(argv[i])); }
--
-+
- else if (!argcmp(argv[i],"-hflip",3,1,&autohflip)); /* hflip */
-
- else if (!argcmp(argv[i],"-hi",3,0,&pm)) /* highlight */
- { if (++i<argc) histr = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-hist", 4,1,&autohisteq)); /* hist eq */
-
- else if (!argcmp(argv[i],"-hsv", 3,1,&hsvmode)); /* hsvmode */
-
- else if (!argcmp(argv[i],"-icgeometry",4,0,&pm)) /* icon geometry */
- { if (++i<argc) icongeom = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-iconic",4,1,&startIconic)); /* iconic */
--
-+
- else if (!argcmp(argv[i],"-igeometry",3,0,&pm)) /* infogeom */
- { if (++i<argc) infogeom = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-imap", 3,1,&imap)); /* imap */
- else if (!argcmp(argv[i],"-lbrowse", 3,1,&browseMode)); /* browse mode */
-
-@@ -1323,8 +1337,8 @@
-
- else if (!argcmp(argv[i],"-loadclear",4,1,&clearonload)); /* clearonload */
-
--
-- else not_in_first_half = 1;
-+
-+ else not_in_first_half = 1;
-
-
-
-@@ -1339,18 +1353,18 @@
- if (!argcmp(argv[i],"-max",4,1,&automax)); /* auto maximize */
- else if (!argcmp(argv[i],"-maxpect",5,1,&pm)) /* auto maximize */
- { automax=pm; fixedaspect=pm; }
--
-+
- else if (!argcmp(argv[i],"-mfn",3,0,&pm)) /* mono font name */
- { if (++i<argc) monofontname = argv[i]; }
-
- else if (!argcmp(argv[i],"-mono",3,1,&mono)); /* mono */
--
-+
- else if (!argcmp(argv[i],"-name",3,0,&pm)) /* name */
- { if (++i<argc) winTitle = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-ncols",3,0,&pm)) /* ncols */
- { if (++i<argc) ncols=abs(atoi(argv[i])); }
--
-+
- else if (!argcmp(argv[i],"-ninstall", 3,1,&ninstall)); /* inst cmaps?*/
- else if (!argcmp(argv[i],"-nodecor", 4,1,&nodecor));
- else if (!argcmp(argv[i],"-nofreecols",4,1,&noFreeCols));
-@@ -1367,61 +1381,61 @@
-
- else if (!argcmp(argv[i],"-preset",3,0,&pm)) /* preset */
- { if (++i<argc) preset=abs(atoi(argv[i])); }
--
-+
- else if (!argcmp(argv[i],"-quick24",5,0,&pm)) /* quick 24-to-8 conv */
- conv24 = CONV24_FAST;
--
-+
- else if (!argcmp(argv[i],"-quit", 2,1,&autoquit)); /* auto-quit */
- else if (!argcmp(argv[i],"-random", 4,1,&randomShow)); /* random */
- else if (!argcmp(argv[i],"-raw", 4,1,&autoraw)); /* force raw */
-
- else if (!argcmp(argv[i],"-rbg",3,0,&pm)) /* root background color */
- { if (++i<argc) rootbgstr = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-rfg",3,0,&pm)) /* root foreground color */
- { if (++i<argc) rootfgstr = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-rgb",4,1,&pm)) /* rgb mode */
- hsvmode = !pm;
--
-+
- else if (!argcmp(argv[i],"-RM",3,0,&pm)) /* auto-delete */
- autoDelete = 1;
--
-+
- else if (!argcmp(argv[i],"-rmode",3,0,&pm)) /* root pattern */
-- { if (++i<argc) rootMode = atoi(argv[i]);
-+ { if (++i<argc) rootMode = atoi(argv[i]);
- useroot++; rmodeset++;
- }
--
-+
- else if (!argcmp(argv[i],"-root",4,1,&useroot)); /* use root window */
--
-+
- else if (!argcmp(argv[i],"-rotate",4,0,&pm)) /* rotate */
- { if (++i<argc) autorotate = atoi(argv[i]); }
--
-+
- else if (!argcmp(argv[i],"-rv",3,1,&revvideo)); /* reverse video */
- else if (!argcmp(argv[i],"-rw",3,1,&rwcolor)); /* use r/w color */
-
- else if (!argcmp(argv[i],"-slow24",3,0,&pm)) /* slow 24->-8 conv.*/
- conv24 = CONV24_SLOW;
--
-+
- else if (!argcmp(argv[i],"-smooth",3,1,&autosmooth)); /* autosmooth */
- else if (!argcmp(argv[i],"-stdcmap",3,1,&stdcmap)); /* use stdcmap */
-
- else if (!argcmp(argv[i],"-tgeometry",2,0,&pm)) /* textview geom */
- { if (++i<argc) textgeom = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-vflip",3,1,&autovflip)); /* vflip */
- else if (!argcmp(argv[i],"-viewonly",4,1,&viewonly)); /* viewonly */
-
- else if (!argcmp(argv[i],"-visual",4,0,&pm)) /* visual */
- { if (++i<argc) visualstr = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-vsdisable",4,1,&novbrowse)); /* disable sch? */
--
-+
- else if (!argcmp(argv[i],"-vsgeometry",4,0,&pm)) /* visSchnauzer geom */
- { if (++i<argc) browgeom = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-vsmap",4,1,&browmap)); /* visSchnauzer map */
--
-+
- else if (!argcmp(argv[i],"-vsperfect",3,1,&browPerfect)); /* vs perf. */
-
- else if (!argcmp(argv[i],"-wait",3,0,&pm)) { /* secs betwn pics */
-@@ -1430,12 +1444,12 @@
- if (waitsec<0) waitsec = 0;
- }
- }
--
-+
- else if (!argcmp(argv[i],"-white",3,0,&pm)) /* white color */
- { if (++i<argc) whitestr = argv[i]; }
--
-+
- else if (!argcmp(argv[i],"-wloop",3,1,&waitloop)); /* waitloop */
--
-+
- else if (not_in_first_half) cmdSyntax();
- }
-
-@@ -1462,7 +1476,7 @@
- }
-
-
-- if (flistName)
-+ if (flistName)
- add_filelist_to_namelist(flistName, namelist, &numnames, MAXNAMES);
-
- RANGE(curstype,0,254);
-@@ -1475,16 +1489,16 @@
-
- /* if using root, generally gotta map ctrl window, 'cause there won't be
- any way to ask for it. (no kbd or mouse events from rootW) */
-- if (useroot && !autoquit) ctrlmap = -1;
-+ if (useroot && !autoquit) ctrlmap = -1;
-+
-
--
- if (abs(autorotate) != 0 && abs(autorotate) != 90 &&
- abs(autorotate) != 180 && abs(autorotate) != 270) {
- fprintf(stderr,"Invalid auto rotation value (%d) ignored.\n", autorotate);
- fprintf(stderr," (Valid values: 0, +-90, +-180, +-270)\n");
-
- autorotate = 0;
-- }
-+ }
-
-
- if (grabDelay < 0 || grabDelay > 15) {
-@@ -1498,7 +1512,7 @@
- fprintf(stderr," (Valid values: 1, 2, 3, 4)\n");
-
- preset = 0;
-- }
-+ }
-
- if (waitsec < 0) noFreeCols = 0; /* disallow nfc if not doing slideshow */
- if (noFreeCols && perfect) { perfect = 0; owncmap = 1; }
-@@ -1512,13 +1526,13 @@
-
- defaultCmapMode = colorMapMode; /* default mode for 8-bit images */
-
-- if (nopos) {
-+ if (nopos) {
- maingeom = infogeom = ctrlgeom = gamgeom = browgeom = textgeom = NULL;
- cmtgeom = NULL;
- }
-
- /* if -root and -maxp, disallow 'integer' tiling modes */
-- if (useroot && fixedaspect && automax && !rmodeset &&
-+ if (useroot && fixedaspect && automax && !rmodeset &&
- (rootMode == RM_TILE || rootMode == RM_IMIRROR))
- rootMode = RM_CSOLID;
- }
-@@ -1656,7 +1670,7 @@
- /***********************************/
- static void rmodeSyntax()
- {
-- fprintf(stderr,"%s: unknown root mode '%d'. Valid modes are:\n",
-+ fprintf(stderr,"%s: unknown root mode '%d'. Valid modes are:\n",
- cmd, rootMode);
- fprintf(stderr,"\t0: tiling\n");
- fprintf(stderr,"\t1: integer tiling\n");
-@@ -1679,13 +1693,11 @@
- int minlen, plusallowed;
- int *plusminus;
- {
-- /* does a string compare between a1 and a2. To return '0', a1 and a2
-+ /* does a string compare between a1 and a2. To return '0', a1 and a2
- must match to the length of a2, and that length has to
- be at least 'minlen'. Otherwise, return non-zero. plusminus set to '1'
- if '-option', '0' if '+option' */
-
-- int i;
--
- if ((strlen(a1) < (size_t) minlen) || (strlen(a2) < (size_t) minlen))
- return 1;
- if (strlen(a1) > strlen(a2)) return 1;
-@@ -1694,7 +1706,7 @@
-
- if (a1[0]=='-' || (plusallowed && a1[0]=='+')) {
- /* only set if we match */
-- *plusminus = (a1[0] == '-');
-+ *plusminus = (a1[0] == '-');
- return 0;
- }
-
-@@ -1721,8 +1733,7 @@
- int oldCXOFF, oldCYOFF, oldCWIDE, oldCHIGH, wascropped;
- char *tmp;
- char *fullname, /* full name of the original file */
-- filename[512], /* full name of file to load (could be /tmp/xxx)*/
-- globnm[512]; /* globbed version of fullname of orig file */
-+ filename[512]; /* full name of file to load (could be /tmp/xxx)*/
-
- xvbzero((char *) &pinfo, sizeof(PICINFO));
-
-@@ -1748,7 +1759,7 @@
-
- /* if we're not loading next or prev page in a multi-page doc, kill off
- page files */
-- if (strlen(pageBaseName) && filenum!=OP_PAGEDN && filenum!=OP_PAGEUP)
-+ if (strlen(pageBaseName) && filenum!=OP_PAGEDN && filenum!=OP_PAGEUP)
- killpage = 1;
-
-
-@@ -1799,7 +1810,7 @@
- }
-
- else if (filenum == PADDED) {
-- /* need fullfname (used for window/icon name),
-+ /* need fullfname (used for window/icon name),
- basefname(compute from fullfname) */
-
- i = LoadPad(&pinfo, fullfname);
-@@ -1864,7 +1875,7 @@
-
-
- /* chop off trailing ".Z", ".z", or ".gz" from displayed basefname, if any */
-- if (strlen(basefname) > (size_t) 2 &&
-+ if (strlen(basefname) > (size_t) 2 &&
- strcmp(basefname+strlen(basefname)-2,".Z")==0)
- basefname[strlen(basefname)-2]='\0';
- else {
-@@ -1872,7 +1883,7 @@
- if (strlen(basefname)>2 && strcmp(basefname+strlen(basefname)-2,".Z")==0)
- basefname[strlen(basefname)-2]='\0';
-
-- else if (strlen(basefname)>3 &&
-+ else if (strlen(basefname)>3 &&
- strcmp(basefname+strlen(basefname)-3,".gz")==0)
- basefname[strlen(basefname)-3]='\0';
- #endif /* GUNZIP */
-@@ -1881,7 +1892,7 @@
-
- if (filenum == LOADPIC && ISPIPE(fullname[0])) {
- /* if we're reading from a pipe, 'filename' will have the /tmp/xvXXXXXX
-- filename, and we can skip a lot of stuff: (such as prepending
-+ filename, and we can skip a lot of stuff: (such as prepending
- 'initdir' to relative paths, dealing with reading from stdin, etc. */
-
- /* at this point, fullname = "! do some commands",
-@@ -1891,11 +1902,11 @@
-
- else { /* NOT reading from a PIPE */
-
-- /* if fullname doesn't start with a '/' (ie, it's a relative path),
-- (and it's not LOADPIC and it's not the special case '<stdin>')
-+ /* if fullname doesn't start with a '/' (ie, it's a relative path),
-+ (and it's not LOADPIC and it's not the special case '<stdin>')
- then we need to prepend a directory name to it:
--
-- prepend 'initdir',
-+
-+ prepend 'initdir',
- if we have a searchdir (ie, we have multiple places to look),
- see if such a file exists (via fopen()),
- if it does, we're done.
-@@ -1904,7 +1915,7 @@
- if it does, we're done.
- if it doesn't, remove all prepended directories, and fall through
- to error code below. */
--
-+
- if (filenum!=LOADPIC && fullname[0]!='/' && strcmp(fullname,STDINSTR)!=0) {
- char *tmp1;
-
-@@ -1954,26 +1965,30 @@
- }
- }
- }
--
-+
- strcpy(filename, fullname);
--
--
-+
-+
- /* if the file is STDIN, write it out to a temp file */
-
- if (strcmp(filename,STDINSTR)==0) {
-- FILE *fp;
-+ FILE *fp = NULL;
-
--#ifndef VMS
-+#ifndef VMS
- sprintf(filename,"%s/xvXXXXXX",tmpdir);
- #else /* it is VMS */
- sprintf(filename, "[]xvXXXXXX");
- #endif
-+
-+#ifdef USE_MKSTEMP
-+ fp = fdopen(mkstemp(filename), "w");
-+#else
- mktemp(filename);
-+ fp = fopen(filename, "w");
-+#endif
-+ if (!fp) FatalError("openPic(): can't write temporary file");
-
- clearerr(stdin);
-- fp = fopen(filename,"w");
-- if (!fp) FatalError("openPic(): can't write temporary file");
--
- while ( (i=getchar()) != EOF) putc(i,fp);
- fclose(fp);
-
-@@ -2003,7 +2018,7 @@
- ) {
-
- filetype = ReadFileType(tmpname); /* and try again */
--
-+
- /* if we made a /tmp file (from stdin, etc.) won't need it any more */
- if (strcmp(fullname,filename)!=0) unlink(filename);
-
-@@ -2084,7 +2099,7 @@
- /**************/
- /* SUCCESS!!! */
- /**************/
--
-+
-
- GOTIMAGE:
- /* successfully read this picture. No failures from here on out
-@@ -2097,7 +2112,7 @@
- if (conv24MB.flags[CONV24_LOCK]) { /* locked */
- if (pinfo.type==PIC24 && picType==PIC8) { /* 24 -> 8 bit */
- byte *pic8;
-- pic8 = Conv24to8(pinfo.pic, pinfo.w, pinfo.h, ncols,
-+ pic8 = Conv24to8(pinfo.pic, pinfo.w, pinfo.h, ncols,
- pinfo.r, pinfo.g, pinfo.b);
- free(pinfo.pic);
- pinfo.pic = pic8;
-@@ -2108,7 +2123,7 @@
-
- else if (pinfo.type!=PIC24 && picType==PIC24) { /* 8 -> 24 bit */
- byte *pic24;
-- pic24 = Conv8to24(pinfo.pic, pinfo.w, pinfo.h,
-+ pic24 = Conv8to24(pinfo.pic, pinfo.w, pinfo.h,
- pinfo.r, pinfo.g, pinfo.b);
- free(pinfo.pic);
- pinfo.pic = pic24;
-@@ -2144,7 +2159,7 @@
-
- if (mainW && !useroot) {
- /* avoid generating excess configure events while we resize the window */
-- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
-+ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
- | StructureNotifyMask
- | ButtonPressMask | KeyReleaseMask
- | EnterWindowMask | LeaveWindowMask);
-@@ -2162,7 +2177,7 @@
- pHIGH = pinfo.h;
- if (pinfo.frmType >=0) SetDirSaveMode(F_FORMAT, pinfo.frmType);
- if (pinfo.colType >=0) SetDirSaveMode(F_COLORS, pinfo.colType);
--
-+
- SetISTR(ISTR_FORMAT, pinfo.fullInfo);
- strcpy(formatStr, pinfo.shrtInfo);
- picComments = pinfo.comment;
-@@ -2195,11 +2210,11 @@
-
-
- SetISTR(ISTR_INFO,formatStr);
--
-+
- SetInfoMode(INF_PART);
-- SetISTR(ISTR_FILENAME,
-- (filenum==DFLTPIC || filenum==GRABBED || frompipe)
-- ? "<none>" : basefname);
-+ SetISTR(ISTR_FILENAME, "%s",
-+ (filenum==DFLTPIC || filenum==GRABBED || frompipe) ?
-+ "<none>" : basefname);
-
- SetISTR(ISTR_RES,"%d x %d",pWIDE,pHIGH);
- SetISTR(ISTR_COLOR, "");
-@@ -2219,7 +2234,7 @@
-
-
- /* handle various 'auto-whatever' command line options
-- Note that if 'frompoll' is set, things that have to do with
-+ Note that if 'frompoll' is set, things that have to do with
- setting the expansion factor are skipped, as we'll want it to
- display in the (already-existing) window at the same size */
-
-@@ -2254,7 +2269,7 @@
- w = eWIDE; h = (w*3) / 4;
- eWIDE = w; eHIGH = h;
- }
--
-+
-
- if (eWIDE != cWIDE || eHIGH != cHIGH) epic = (byte *) NULL;
-
-@@ -2306,14 +2321,14 @@
- aspWIDE = eWIDE; aspHIGH = eHIGH; /* aspect-corrected eWIDE,eHIGH */
-
- if (hexpand < 0.0) eWIDE=(int)(aspWIDE / -hexpand); /* neg: reciprocal */
-- else eWIDE=(int)(aspWIDE * hexpand);
-+ else eWIDE=(int)(aspWIDE * hexpand);
- if (vexpand < 0.0) eHIGH=(int)(aspHIGH / -vexpand); /* neg: reciprocal */
-- else eHIGH=(int)(aspHIGH * vexpand);
-+ else eHIGH=(int)(aspHIGH * vexpand);
-
- if (maingeom) {
- /* deal with geometry spec. Note, they shouldn't have given us
- *both* an expansion factor and a geomsize. The geomsize wins out */
--
-+
- int i,x,y,gewide,gehigh; u_int w,h;
-
- gewide = eWIDE; gehigh = eHIGH;
-@@ -2321,11 +2336,11 @@
-
- if (i&WidthValue) gewide = (int) w;
- if (i&HeightValue) gehigh = (int) h;
--
-+
- /* handle case where the pinheads only specified width *or * height */
- if (( i&WidthValue && ~i&HeightValue) ||
- (~i&WidthValue && i&HeightValue)) {
--
-+
- if (i&WidthValue) { gehigh = (aspHIGH * gewide) / pWIDE; }
- else { gewide = (aspWIDE * gehigh) / pHIGH; }
- }
-@@ -2391,7 +2406,7 @@
-
- /* if we're using an integer tiled root mode, truncate eWIDE/eHIGH to
- be an integer divisor of the display size */
--
-+
- if (useroot && (rootMode == RM_TILE || rootMode == RM_IMIRROR)) {
- /* make picture size a divisor of the rootW size. round down */
- i = (dispWIDE + eWIDE-1) / eWIDE; eWIDE = (dispWIDE + i-1) / i;
-@@ -2419,7 +2434,7 @@
-
- /* 'dithering' makes no sense in 24-bit mode */
- if (picType == PIC24 && epicMode == EM_DITH) epicMode = EM_RAW;
--
-+
- SetEpicMode();
- } /* end of !frompoll */
-
-@@ -2450,7 +2465,7 @@
- if (useroot) mainW = vrootW;
- if (eWIDE != cWIDE || eHIGH != cHIGH) epic = (byte *) NULL;
-
-- NewPicGetColors(autonorm, autohisteq);
-+ NewPicGetColors(autonorm, autohisteq);
-
- GenerateEpic(eWIDE, eHIGH); /* want to dither *after* color allocs */
- CreateXImage();
-@@ -2474,7 +2489,7 @@
- SetISTR(ISTR_INFO,"%s %s %s", formatStr,
- (picType==PIC8) ? "8-bit mode." : "24-bit mode.",
- tmp);
--
-+
- SetInfoMode(INF_FULL);
- if (freename) free(fullname);
-
-@@ -2499,16 +2514,16 @@
-
- return 1;
-
--
-+
- FAILED:
- SetCursors(-1);
- KillPageFiles(pinfo.pagebname, pinfo.numpages);
-
-- if (fullname && strcmp(fullname,filename)!=0)
-+ if (fullname && strcmp(fullname,filename)!=0)
- unlink(filename); /* kill /tmp file */
- if (freename) free(fullname);
-
-- if (!fromint && !polling && filenum>=0 && filenum<nList.nstr)
-+ if (!fromint && !polling && filenum>=0 && filenum<nList.nstr)
- deleteFromList(filenum);
-
- if (polling) sleep(1);
-@@ -2546,7 +2561,7 @@
- fp = xv_fopen(fname, "r");
- if (!fp) return RFT_ERROR;
-
-- n = fread(magicno, (size_t) 1, (size_t) 30, fp);
-+ n = fread(magicno, (size_t) 1, (size_t) 30, fp);
- fclose(fp);
-
- if (n<30) return RFT_UNKNOWN; /* files less than 30 bytes long... */
-@@ -2559,7 +2574,7 @@
- else if (strncmp((char *) magicno,"VIEW", (size_t) 4)==0 ||
- strncmp((char *) magicno,"WEIV", (size_t) 4)==0) rv = RFT_PM;
-
-- else if (magicno[0] == 'P' && magicno[1]>='1' &&
-+ else if (magicno[0] == 'P' && magicno[1]>='1' &&
- magicno[1]<='6') rv = RFT_PBM;
-
- /* note: have to check XPM before XBM, as first 2 chars are the same */
-@@ -2586,7 +2601,7 @@
-
- else if (magicno[0]==0x0a && magicno[1] <= 5) rv = RFT_PCX;
-
-- else if (strncmp((char *) magicno, "FORM", (size_t) 4)==0 &&
-+ else if (strncmp((char *) magicno, "FORM", (size_t) 4)==0 &&
- strncmp((char *) magicno+8, "ILBM", (size_t) 4)==0) rv = RFT_IFF;
-
- else if (magicno[0]==0 && magicno[1]==0 &&
-@@ -2597,12 +2612,12 @@
- else if (magicno[4]==0x00 && magicno[5]==0x00 &&
- magicno[6]==0x00 && magicno[7]==0x07) rv = RFT_XWD;
-
-- else if (strncmp((char *) magicno,"SIMPLE ", (size_t) 8)==0 &&
-+ else if (strncmp((char *) magicno,"SIMPLE ", (size_t) 8)==0 &&
- magicno[29] == 'T') rv = RFT_FITS;
--
-+
-
- #ifdef HAVE_JPEG
-- else if (magicno[0]==0xff && magicno[1]==0xd8 &&
-+ else if (magicno[0]==0xff && magicno[1]==0xd8 &&
- magicno[2]==0xff) rv = RFT_JFIF;
- #endif
-
-@@ -2668,7 +2683,7 @@
- #endif
-
- #ifdef HAVE_TIFF
-- case RFT_TIFF: rv = LoadTIFF (fname, pinfo); break;
-+ case RFT_TIFF: rv = LoadTIFF (fname, pinfo, quick); break;
- #endif
-
- #ifdef HAVE_PDS
-@@ -2703,7 +2718,7 @@
- to what it was. necessary because uncompress doesn't handle files
- that don't end with '.Z' */
-
-- if (strlen(name) >= (size_t) 2 &&
-+ if (strlen(name) >= (size_t) 2 &&
- strcmp(name + strlen(name)-2,".Z")!=0 &&
- strcmp(name + strlen(name)-2,".z")!=0) {
- strcpy(namez, name);
-@@ -2721,34 +2736,42 @@
- #endif /* not VMS and not GUNZIP */
-
-
--
- #ifndef VMS
- sprintf(uncompname, "%s/xvuXXXXXX", tmpdir);
-+#else
-+ strcpy(uncompname, "[]xvuXXXXXX");
-+#endif
-+
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(uncompname));
-+#else
- mktemp(uncompname);
-+#endif
-+
-+#ifndef VMS
- sprintf(buf,"%s -c %s >%s", UNCOMPRESS, fname, uncompname);
- #else /* it IS VMS */
-- strcpy(uncompname, "[]xvuXXXXXX");
-- mktemp(uncompname);
--# ifdef GUNZIP
-+# ifdef GUNZIP
- sprintf(buf,"%s %s %s", UNCOMPRESS, fname, uncompname);
--# else
-+# else
- sprintf(buf,"%s %s", UNCOMPRESS, fname);
--# endif
-+# endif
- #endif
-
- SetISTR(ISTR_INFO, "Uncompressing '%s'...", BaseName(fname));
- #ifndef VMS
-- if (system(buf)) {
-+ if (system(buf))
- #else
-- if (!system(buf)) {
-+ if (!system(buf))
- #endif
-+ {
- SetISTR(ISTR_INFO, "Unable to uncompress '%s'.", BaseName(fname));
- Warning();
- return 0;
- }
-
--#ifndef VMS
-- /* if we renamed the file to end with a .Z for the sake of 'uncompress',
-+#ifndef VMS
-+ /* if we renamed the file to end with a .Z for the sake of 'uncompress',
- rename it back to what it once was... */
-
- if (strlen(namez)) {
-@@ -2769,7 +2792,7 @@
- }
- */
- #endif /* not VMS */
--
-+
- return 1;
- }
-
-@@ -2798,11 +2821,11 @@
- {
- int i;
-
-- /* some stuff that necessary whenever running an algorithm or
-+ /* some stuff that necessary whenever running an algorithm or
- installing a new 'pic' (or switching 824 modes) */
-
- numcols = 0; /* gets set by SortColormap: set to 0 for PIC24 images */
-- for (i=0; i<256; i++) cols[i]=infobg;
-+ for (i=0; i<256; i++) cols[i]=infobg;
-
- if (picType == PIC8) {
- byte trans[256];
-@@ -2811,18 +2834,18 @@
- }
-
- if (picType == PIC8) {
-- /* see if image is a b/w bitmap.
-+ /* see if image is a b/w bitmap.
- If so, use '-black' and '-white' colors */
- if (numcols == 2) {
- if ((rMap[0] == gMap[0] && rMap[0] == bMap[0] && rMap[0] == 255) &&
- (rMap[1] == gMap[1] && rMap[1] == bMap[1] && rMap[1] == 0)) {
- /* 0=wht, 1=blk */
-- rMap[0] = (whtRGB>>16)&0xff;
-- gMap[0] = (whtRGB>>8)&0xff;
-+ rMap[0] = (whtRGB>>16)&0xff;
-+ gMap[0] = (whtRGB>>8)&0xff;
- bMap[0] = whtRGB&0xff;
-
- rMap[1] = (blkRGB>>16)&0xff;
-- gMap[1] = (blkRGB>>8)&0xff;
-+ gMap[1] = (blkRGB>>8)&0xff;
- bMap[1] = blkRGB&0xff;
- }
-
-@@ -2852,10 +2875,10 @@
- }
-
- /* save the desired RGB colormap (before dicking with it) */
-- for (i=0; i<numcols; i++) {
-- rorg[i] = rcmap[i] = rMap[i];
-- gorg[i] = gcmap[i] = gMap[i];
-- borg[i] = bcmap[i] = bMap[i];
-+ for (i=0; i<numcols; i++) {
-+ rorg[i] = rcmap[i] = rMap[i];
-+ gorg[i] = gcmap[i] = gMap[i];
-+ borg[i] = bcmap[i] = bMap[i];
- }
- }
-
-@@ -2888,7 +2911,7 @@
- {
- /* cmd is something like: "! bggen 100 0 0"
- *
-- * runs command (with "> /tmp/xv******" appended).
-+ * runs command (with "> /tmp/xv******" appended).
- * returns "/tmp/xv******" in fname
- * returns '0' if everything's cool, '1' on error
- */
-@@ -2899,8 +2922,12 @@
- if (!cmd || (strlen(cmd) < (size_t) 2)) return 1;
-
- sprintf(tmpname,"%s/xvXXXXXX", tmpdir);
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(tmpname));
-+#else
- mktemp(tmpname);
-- if (tmpname[0] == '\0') { /* mktemp() blew up */
-+#endif
-+ if (tmpname[0] == '\0') { /* mktemp() or mkstemp() blew up */
- sprintf(str,"Unable to create temporary filename.");
- ErrPopUp(str, "\nHow unlikely!");
- return 1;
-@@ -2946,7 +2973,7 @@
- while (numnames>0) {
- if (openPic(0)) return; /* success */
- else {
-- if (polling && !i)
-+ if (polling && !i)
- fprintf(stderr,"%s: POLLING: Waiting for file '%s' \n\tto %s\n",
- cmd, namelist[0], "be created, or whatever...");
- i = 1;
-@@ -2970,11 +2997,11 @@
- int i;
-
- if (curname>=0) i = curname+1;
-- else if (nList.selected >= 0 && nList.selected < numnames)
-+ else if (nList.selected >= 0 && nList.selected < numnames)
- i = nList.selected;
- else i = 0;
-
--
-+
- while (i<numnames && !openPic(i));
- if (i<numnames) return; /* success */
-
-@@ -2989,7 +3016,7 @@
-
- if (!randomShow) {
- if (curname>=0) i = curname+1;
-- else if (nList.selected >= 0 && nList.selected < numnames)
-+ else if (nList.selected >= 0 && nList.selected < numnames)
- i = nList.selected;
- else i = 0;
-
-@@ -3015,7 +3042,7 @@
- if (!randomShow) {
-
- if (curname>=0) i = curname+1;
-- else if (nList.selected >= 0 && nList.selected < numnames)
-+ else if (nList.selected >= 0 && nList.selected < numnames)
- i = nList.selected;
- else i = 0;
-
-@@ -3044,7 +3071,7 @@
- int i;
-
- if (curname>0) i = curname-1;
-- else if (nList.selected>0 && nList.selected < numnames)
-+ else if (nList.selected>0 && nList.selected < numnames)
- i = nList.selected - 1;
- else i = numnames-1;
-
-@@ -3089,7 +3116,7 @@
- loadList = (byte *) malloc((size_t) listLen);
- for (k=0; k<listLen; k++) loadList[k] = 0;
- }
--
-+
- if (left_to_load <= 0) { /* we've loaded all the pics */
- for (k=0; k<listLen; k++) loadList[k] = 0; /* clear flags */
- left_to_load = listLen;
-@@ -3097,7 +3124,7 @@
- }
-
- for (k=abs(random()) % listLen; loadList[k]; k = (k+1) % listLen);
--
-+
- left_to_load--;
- loadList[k] = TRUE;
-
-@@ -3107,13 +3134,13 @@
- /****************/
- static void mainLoop()
- {
-- /* search forward until we manage to display a picture,
-- then call EventLoop. EventLoop will eventually return
-+ /* search forward until we manage to display a picture,
-+ then call EventLoop. EventLoop will eventually return
- NEXTPIC, PREVPIC, NEXTQUIT, QUIT, or, if >= 0, a filenum to GOTO */
-
- int i;
-
-- /* if curname<0 (there is no 'current' file), 'Next' means view the
-+ /* if curname<0 (there is no 'current' file), 'Next' means view the
- selected file (or the 0th file, if no selection either), and 'Prev' means
- view the one right before the selected file */
-
-@@ -3133,7 +3160,7 @@
- }
-
- else if (i==PREVPIC) {
-- if (curname>0 || (curname<0 && nList.selected>0))
-+ if (curname>0 || (curname<0 && nList.selected>0))
- openPrevPic();
- }
-
-@@ -3151,7 +3178,7 @@
-
- else if (i==THISNEXT) { /* open current sel, 'next' until success */
- int j;
-- j = nList.selected;
-+ j = nList.selected;
- if (j<0) j = 0;
- while (j<numnames && !openPic(j));
- if (!pic) openPic(DFLTPIC);
-@@ -3219,12 +3246,12 @@
- hints.width = eWIDE; hints.height = eHIGH;
- hints.max_width = maxWIDE; hints.max_height = maxHIGH;
- hints.flags |= USSize | PMaxSize;
--
-+
- xswa.bit_gravity = StaticGravity;
- xswa.background_pixel = bg;
- xswa.border_pixel = fg;
- xswa.colormap = theCmap;
--
-+
- xswa.backing_store = WhenMapped;
-
- /* NOTE: I've turned 'backing-store' off on the image window, as some
-@@ -3233,9 +3260,9 @@
- improvement anyway (for the image window), unless you're on a slow
- network. In any event, I'm not *turning off* backing store, I'm
- just not explicitly turning it *on*. If your X server is set up
-- that windows, by default, have backing-store turned on, then the
-+ that windows, by default, have backing-store turned on, then the
- image window will, too */
--
-+
- xswamask = CWBackPixel | CWBorderPixel | CWColormap /* | CWBackingStore */;
- if (!clearonload) xswamask |= CWBitGravity;
-
-@@ -3251,11 +3278,11 @@
-
- SetWindowPos(&xwa);
- hints.flags = PSize | PMaxSize;
-- }
-+ }
-
- else {
- mainW = XCreateWindow(theDisp,rootW,x,y, (u_int) eWIDE, (u_int) eHIGH,
-- (u_int) bwidth, (int) dispDEEP, InputOutput,
-+ (u_int) bwidth, (int) dispDEEP, InputOutput,
- theVisual, xswamask, &xswa);
- if (!mainW) FatalError("can't create window!");
-
-@@ -3274,8 +3301,8 @@
- xwmh.input = True;
- xwmh.flags = InputHint;
-
-- xwmh.icon_pixmap = iconPix;
-- xwmh.icon_mask = iconmask;
-+ xwmh.icon_pixmap = iconPix;
-+ xwmh.icon_mask = iconmask;
- xwmh.flags |= (IconPixmapHint | IconMaskHint);
-
-
-@@ -3302,7 +3329,7 @@
- XSetClassHint(theDisp, mainW, &classh);
-
-
-- if (nodecor) { /* turn of image window decorations (in MWM) */
-+ if (nodecor) { /* turn of image window decorations (in MWM) */
- Atom mwm_wm_hints;
- struct s_mwmhints {
- long flags;
-@@ -3311,7 +3338,7 @@
- u_long input_mode;
- long status;
- } mwmhints;
--
-+
- mwm_wm_hints = XInternAtom(theDisp, "_MOTIF_WM_HINTS", False);
- if (mwm_wm_hints != None) {
- xvbzero((char *) &mwmhints, sizeof(mwmhints));
-@@ -3319,13 +3346,13 @@
- mwmhints.decorations = 4;
-
- XChangeProperty(theDisp, mainW, mwm_wm_hints, mwm_wm_hints, 32,
-- PropModeReplace, (byte *) &mwmhints,
-- (int) (sizeof(mwmhints))/4);
-+ PropModeReplace, (byte *) &mwmhints,
-+ (int) (sizeof(mwmhints))/4);
- XSync(theDisp, False);
- }
- }
-
--
-+
- firstTime = 0;
- }
-
-@@ -3366,8 +3393,8 @@
- int *w, *h;
- {
- /* computes new values of eWIDE and eHIGH which will have aspect ratio
-- 'normaspect'. If 'grow' it will preserve aspect by enlarging,
-- otherwise, it will shrink to preserve aspect ratio.
-+ 'normaspect'. If 'grow' it will preserve aspect by enlarging,
-+ otherwise, it will shrink to preserve aspect ratio.
- Returns these values in 'w' and 'h' */
-
- float xr,yr,curaspect,a,exp;
-@@ -3380,14 +3407,14 @@
- curaspect = xr / yr;
-
- /* if too narrow & shrink, shrink height. too wide and grow, grow height */
-- if ((curaspect < normaspect && !grow) ||
-+ if ((curaspect < normaspect && !grow) ||
- (curaspect > normaspect && grow)) { /* modify height */
- exp = curaspect / normaspect;
- *h = (int) (eHIGH * exp + .5);
- }
-
- /* if too narrow & grow, grow width. too wide and shrink, shrink width */
-- if ((curaspect < normaspect && grow) ||
-+ if ((curaspect < normaspect && grow) ||
- (curaspect > normaspect && !grow)) { /* modify width */
- exp = normaspect / curaspect;
- *w = (int) (eWIDE * exp + .5);
-@@ -3423,22 +3450,22 @@
- suffix = namelist[0];
- prelen = 0; /* length of prefix to be removed */
- n = i = 0; /* shut up pesky compiler warnings */
--
-+
- done = 0;
- while (!done) {
- suffix = (char *) index(suffix,'/'); /* find next '/' in file name */
- if (!suffix) break;
--
-+
- suffix++; /* go past it */
- n = suffix - namelist[0];
- for (i=1; i<numnames; i++) {
- if (strncmp(namelist[0], namelist[i], (size_t) n)!=0) { done=1; break; }
- }
--
-+
- if (!done) prelen = n;
- }
--
-- for (i=0; i<numnames; i++)
-+
-+ for (i=0; i<numnames; i++)
- dispnames[i] = namelist[i] + prelen;
- }
-
-@@ -3447,20 +3474,20 @@
- static void fixDispNames()
- {
- /* fix dispnames array so that names don't go off right edge */
--
-+
- int i,j;
- char *tmp;
--
-+
- for (i=j=0; i<numnames; i++) {
- char *dname;
--
-+
- dname = dispnames[i];
- if (StringWidth(dname) > (nList.w-10-16)) { /* have to trunc. */
- tmp = dname;
- while (1) {
- tmp = (char *) index(tmp,'/'); /* find next '/' in filename */
- if (!tmp) { tmp = dname; break; }
--
-+
- tmp++; /* move to char following the '/' */
- if (StringWidth(tmp) <= (nList.w-10-16)) { /* is cool now */
- j++; break;
-@@ -3484,9 +3511,9 @@
-
- name = GetDirFName();
- GetDirPath(cwd);
--
-+
- AddFNameToCtrlList(cwd, name);
--
-+
- if (select) {
- nList.selected = numnames-1;
- curname = numnames - 1;
-@@ -3501,32 +3528,32 @@
- char *fpath, *fname;
- {
- /* stick given path/name into 'namelist'. Doesn't redraw list */
--
-- char *fullname, *dname;
-+
-+ char *fullname;
- char cwd[MAXPATHLEN], globnm[MAXPATHLEN+100];
- int i;
--
-+
- if (!fpath) fpath = ""; /* bulletproofing... */
-- if (!fname) fname = "";
--
-+ if (!fname) fname = "";
-+
- if (numnames == MAXNAMES) return; /* full up */
--
-+
- /* handle globbing */
- if (fname[0] == '~') {
- strcpy(globnm, fname);
- Globify(globnm);
- fname = globnm;
- }
--
-+
- if (fname[0] != '/') { /* prepend path */
- strcpy(cwd, fpath); /* copy it to a modifiable place */
--
-+
- /* make sure fpath has a trailing '/' char */
- if (strlen(cwd)==0 || cwd[strlen(cwd)-1]!='/') strcat(cwd, "/");
--
-+
- fullname = (char *) malloc(strlen(cwd) + strlen(fname) + 2);
- if (!fullname) FatalError("couldn't alloc name in AddFNameToCtrlList()\n");
--
-+
- sprintf(fullname, "%s%s", cwd, fname);
- }
- else { /* copy name to fullname */
-@@ -3534,15 +3561,15 @@
- if (!fullname) FatalError("couldn't alloc name in AddFNameToCtrlList()\n");
- strcpy(fullname, fname);
- }
--
--
-+
-+
- /* see if this name is a duplicate. Don't add it if it is. */
- for (i=0; i<numnames; i++)
- if (strcmp(fullname, namelist[i]) == 0) {
- free(fullname);
- return;
- }
--
-+
- namelist[numnames] = fullname;
- numnames++;
- makeDispNames();
-@@ -3578,7 +3605,7 @@
- /* called to enable/disable the Prev/Next buttons whenever curname and/or
- numnames and/or nList.selected change */
-
-- /* if curname<0 (there is no 'current' file), 'Next' means view the
-+ /* if curname<0 (there is no 'current' file), 'Next' means view the
- selected file (or the 0th file, if no selection either), and 'Prev' means
- view the one right before the selected file */
-
-@@ -3591,15 +3618,15 @@
- BTSetActive(&but[BPREV], (curname>0));
- }
- }
--
-+
-
- /***********************************/
- int DeleteCmd()
- {
- /* 'delete' button was pressed. Pop up a dialog box to determine
- what should be deleted, then do it.
-- returns '1' if THE CURRENTLY VIEWED entry was deleted from the list,
-- in which case the 'selected' filename on the ctrl list is now
-+ returns '1' if THE CURRENTLY VIEWED entry was deleted from the list,
-+ in which case the 'selected' filename on the ctrl list is now
- different, and should be auto-loaded, or something */
-
- static char *bnames[] = { "\004Disk File", "\nList Entry", "\033Cancel" };
-@@ -3616,9 +3643,9 @@
- "'Disk File' deletes file associated with selection.");
-
- del = PopUp(str, bnames, 3);
--
-+
- if (del == 2) return 0; /* cancel */
--
-+
- if (del == 0) { /* 'Disk File' */
- char *name;
- if (namelist[delnum][0] != '/') { /* prepend 'initdir' */
-@@ -3669,13 +3696,13 @@
-
- if (delnum != numnames-1) {
- /* snip out of namelist and dispnames lists */
-- xvbcopy((char *) &namelist[delnum+1], (char *) &namelist[delnum],
-+ xvbcopy((char *) &namelist[delnum+1], (char *) &namelist[delnum],
- (numnames - delnum - 1) * sizeof(namelist[0]));
-
-- xvbcopy((char *) &dispnames[delnum+1], (char *) &dispnames[delnum],
-+ xvbcopy((char *) &dispnames[delnum+1], (char *) &dispnames[delnum],
- (numnames - delnum - 1) * sizeof(dispnames[0]));
- }
--
-+
- numnames--;
- if (numnames==0) BTSetActive(&but[BDELETE],0);
- windowMB.dim[WMB_TEXTVIEW] = (numnames==0);
-@@ -3686,7 +3713,7 @@
- if (nList.selected >= numnames) nList.selected = numnames-1;
- if (nList.selected < 0) nList.selected = 0;
-
-- SCSetRange(&nList.scrl, 0, numnames - nList.nlines,
-+ SCSetRange(&nList.scrl, 0, numnames - nList.nlines,
- nList.scrl.val, nList.nlines-1);
- ScrollToCurrent(&nList);
- DrawCtrlNumFiles();
-@@ -3753,7 +3780,7 @@
- if (useroot && resetroot) ClearRoot();
-
- if (mainW == (Window) NULL || useroot) { /* window not visible */
-- useroot = 0;
-+ useroot = 0;
-
- if (haveoldinfo) { /* just remap mainW and resize it */
- XWMHints xwmh;
-@@ -3771,8 +3798,8 @@
- xwmh.input = True;
- xwmh.flags = InputHint;
-
-- xwmh.icon_pixmap = iconPix;
-- xwmh.icon_mask = iconmask;
-+ xwmh.icon_pixmap = iconPix;
-+ xwmh.icon_mask = iconmask;
- xwmh.flags |= ( IconPixmapHint | IconMaskHint) ;
-
- xwmh.flags |= StateHint;
-@@ -3787,7 +3814,7 @@
- else { /* first time. need to create mainW */
- mainW = (Window) NULL;
- createMainWindow(maingeom, fnam);
-- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
-+ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
- | StructureNotifyMask | ButtonPressMask
- | KeyReleaseMask | ColormapChangeMask
- | EnterWindowMask | LeaveWindowMask );
-@@ -3802,7 +3829,7 @@
-
- else { /* mainW already visible */
- createMainWindow(maingeom, fnam);
-- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
-+ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
- | StructureNotifyMask | ButtonPressMask
- | KeyReleaseMask | ColormapChangeMask
- | EnterWindowMask | LeaveWindowMask );
-@@ -3845,13 +3872,13 @@
- if (LocalCmap) regen=1;
-
- /* this reallocs the colors */
-- if (colorMapMode==CM_PERFECT || colorMapMode==CM_OWNCMAP)
-+ if (colorMapMode==CM_PERFECT || colorMapMode==CM_OWNCMAP)
- ChangeCmapMode(CM_NORMAL, 0, 0);
--
--
-+
-+
- XUnmapWindow(theDisp, mainW);
- mainW = vrootW;
--
-+
- if (!ctrlUp) { /* make sure ctrl is up when going to 'root' mode */
- XWMHints xwmh;
- xwmh.input = True;
-@@ -3861,7 +3888,7 @@
- CtrlBox(1);
- }
- }
--
-+
- useroot = 1;
- rootMode = dispMode - RMB_ROOT;
- ew = eWIDE; eh = eHIGH;
-@@ -3877,7 +3904,7 @@
- GenerateEpic(ew, eh);
- CreateXImage();
- }
-- else if (regen) CreateXImage();
-+ else if (regen) CreateXImage();
-
- KillOldRootInfo();
- MakeRootPic();
-@@ -3954,7 +3981,7 @@
- if (rd_str_cl(name, "", 0)) { /* sets def_str */
- if (sscanf(def_str, "%d", &def_int) == 1) return 1;
- else {
-- fprintf(stderr, "%s: couldn't read integer value for %s resource\n",
-+ fprintf(stderr, "%s: couldn't read integer value for %s resource\n",
- cmd, name);
- return 0;
- }
-@@ -3976,14 +4003,14 @@
- char *name;
- {
- /* returns '1' if successful. result in def_int */
--
-+
- char buf[256];
-
- if (rd_str_cl(name, "", 0)) { /* sets def_str */
- strcpy(buf, def_str);
- lower_str(buf);
-
-- def_int = (strcmp(buf, "on")==0) ||
-+ def_int = (strcmp(buf, "on")==0) ||
- (strcmp(buf, "1")==0) ||
- (strcmp(buf, "true")==0) ||
- (strcmp(buf, "yes")==0);
-@@ -3992,12 +4019,12 @@
-
- else return 0;
- }
--
-+
-
-
-
- static int xrm_initted = 0;
--
-+
- /***********************************/
- int rd_str_cl (name_str, class_str, reinit)
- char *name_str;
-@@ -4044,14 +4071,14 @@
- byte *data;
-
- i = XGetWindowProperty(theDisp, RootWindow(theDisp, 0),
-- resAtom, 0L, 1L, False,
-- XA_STRING, &actType, &actFormat, &nitems, &nleft,
-+ resAtom, 0L, 1L, False,
-+ XA_STRING, &actType, &actFormat, &nitems, &nleft,
- (unsigned char **) &data);
- if (i==Success && actType==XA_STRING && actFormat==8) {
- if (nitems>0 && data) XFree(data);
-- i = XGetWindowProperty(theDisp, RootWindow(theDisp, 0), resAtom, 0L,
-+ i = XGetWindowProperty(theDisp, RootWindow(theDisp, 0), resAtom, 0L,
- (long) ((nleft+4+3)/4),
-- False, XA_STRING, &actType, &actFormat,
-+ False, XA_STRING, &actType, &actFormat,
- &nitems, &nleft, (unsigned char **) &data);
- if (i==Success && actType==XA_STRING && actFormat==8 && data) {
- def_resource = XrmGetStringDatabase((char *) data);
-@@ -4064,8 +4091,8 @@
-
-
- if (!gotit) {
-- xrm_str = XResourceManagerString(theDisp);
--
-+ xrm_str = XResourceManagerString(theDisp);
-+
- if (xrm_str) {
- def_resource = XrmGetStringDatabase(xrm_str);
- if (DEBUG) fprintf(stderr,"rd_str_cl: Using RESOURCE_MANAGER prop.\n");
-@@ -4073,7 +4100,7 @@
- else { /* no RESOURCE_MANAGER prop. read from 'likely' file */
- char foo[256], *homedir, *xenviron;
- XrmDatabase res1;
--
-+
- #ifdef VMS
- strcpy(foo, "SYS$LOGIN:DECW$XDEFAULTS.DAT");
- #else
-@@ -4081,33 +4108,33 @@
- if (!homedir) homedir = ".";
- sprintf(foo,"%s/.Xdefaults", homedir);
- #endif
--
-+
- def_resource = XrmGetFileDatabase(foo);
--
-+
- if (DEBUG) {
- fprintf(stderr,"rd_str_cl: No RESOURCE_MANAGER prop.\n");
- fprintf(stderr,"rd_str_cl: Using file '%s' (%s) ",
- foo, (def_resource) ? "success" : "failure");
- }
--
--
-+
-+
- /* merge file pointed to by XENVIRONMENT */
- xenviron = (char *) getenv("XENVIRONMENT");
- if (xenviron) {
- res1 = XrmGetFileDatabase(xenviron);
--
-+
- if (DEBUG) {
- fprintf(stderr,"merging XENVIRONMENT='%s' (%s) ",
- xenviron, (res1) ? "success" : "failure");
- }
--
-+
- if (res1) { /* merge databases */
- if (!def_resource) def_resource = res1;
- else XrmMergeDatabases(res1, &def_resource);
- }
- }
--
--
-+
-+
- if (DEBUG) fprintf(stderr,"\n\n");
- }
- }
-@@ -4120,13 +4147,13 @@
- strcpy (q_name, PROGNAME);
- strcat (q_name, ".");
- strcat (q_name, name_str);
--
-+
- strcpy (q_class, "Program");
- strcat (q_class, ".");
- strcat (q_class, class_str);
-
- (void) XrmGetResource(def_resource, q_name, q_class, &type, &result);
--
-+
- def_str = result.addr;
- if (def_str) return (1);
- else return (0);
-diff -ruN xv-3.10a/xv.h xv-3.10a-bugfixes/xv.h
---- xv-3.10a/xv.h 1995-01-23 12:22:23.000000000 -0800
-+++ xv-3.10a-bugfixes/xv.h 2005-04-10 09:37:18.000000000 -0700
-@@ -1,6 +1,6 @@
- /*
- * xv.h - header file for xv, but you probably guessed as much
-- *
-+ *
- * Author: John Bradley (bradley@cis.upenn.edu)
- */
-
-@@ -8,8 +8,14 @@
- #include "config.h"
-
-
--#define REVDATE "Version 3.10a Rev: 12/29/94"
--#define VERSTR "3.10a"
-+/* xv 3.10a: 19941229 */
-+/* PNG patch 1.2d: 19960731 */
-+/* GRR orig jumbo fixes patch: 20000213 */
-+/* GRR orig jumbo enhancements patch: 20000220 */
-+/* GRR 1st public jumbo F+E patches: 20040531 */
-+/* GRR 2nd public jumbo F+E patches: 20050410 */
-+#define REVDATE "version 3.10a-jumboFix of 20050410"
-+#define VERSTR "3.10a-20050410"
-
- /*
- * uncomment the following, and modify for your site, but only if you've
-@@ -62,15 +68,27 @@
- #endif
-
-
--#ifdef LINUX
-+/* at least on Linux, the following file (1) includes sys/types.h and
-+ * (2) defines __USE_BSD (which was not defined before here), so __linux__
-+ * block is now moved after this #include */
-+#include <X11/Xos.h> /* need type declarations immediately */
-+
-+
-+#ifdef __linux__
- # ifndef _LINUX_LIMITS_H
- # include <linux/limits.h>
- # endif
-+# define USLEEP
-+ /* want only one or the other defined, not both: */
-+# if !defined(BSDTYPES) && !defined(__USE_BSD)
-+# define BSDTYPES
-+# endif
-+# if defined(BSDTYPES) && defined(__USE_BSD)
-+# undef BSDTYPES
-+# endif
- #endif
-
-
--#include <X11/Xos.h> /* need type declarations immediately */
--
- /*********************************************************/
-
-
-@@ -115,17 +133,21 @@
- #ifndef VMS
- # include <errno.h>
- extern int errno; /* SHOULD be in errno.h, but often isn't */
--# ifndef __NetBSD__
-+# if !defined(__NetBSD__) && !(defined(__linux__) && defined(__USE_BSD))
- extern char *sys_errlist[]; /* this too... */
- # endif
- #endif
-
-
- /* not everyone has the strerror() function, or so I'm told */
--#ifndef VMS
--# define ERRSTR(x) sys_errlist[x]
--#else
-+#ifdef VMS
- # define ERRSTR(x) strerror(x, vaxc$errno)
-+#else
-+# if defined(__BEOS__) || defined(__linux__) /* or all modern/glibc systems? */
-+# define ERRSTR(x) strerror(x)
-+# else
-+# define ERRSTR(x) sys_errlist[x]
-+# endif
- #endif
-
-
-@@ -159,7 +181,9 @@
- !defined(bsd43) && \
- !defined(aux) && \
- !defined(__bsdi__) && \
-- !defined(sequent)
-+ !defined(sequent) && \
-+ !defined(__FreeBSD__) && \
-+ !defined(__OpenBSD__)
-
- # if defined(hp300) || defined(hp800) || defined(NeXT)
- # include <sys/malloc.h> /* it's in 'sys' on HPs and NeXT */
-@@ -205,6 +229,10 @@
- # include <limits.h>
- # endif
-
-+# ifdef __BEOS__
-+# include <socket.h>
-+# endif
-+
- /*** for select() call ***/
- # ifdef __hpux
- # define XV_FDTYPE (int *)
-@@ -259,7 +287,7 @@
- * make them if missing, along with a few fictitious ones
- * Cameron Simpson (cameron@cse.unsw.edu.au)
- */
--
-+
- #ifndef S_ISDIR /* missing POSIX-type macros */
- # define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR)
- # define S_ISBLK(mode) (((mode)&S_IFMT) == S_IFBLK)
-@@ -308,10 +336,18 @@
-
- #ifndef VMS /* VMS hates multi-line definitions */
- # if defined(SVR4) || defined(SYSV) || defined(sco) || \
-- defined(XENIX) || defined(__osf__)
-+ defined(XENIX) || defined(__osf__) || defined(__linux__)
- # undef USE_GETCWD
- # define USE_GETCWD /* use 'getcwd()' instead of 'getwd()' */
--# endif
-+# endif /* >> SECURITY ISSUE << */
-+#endif
-+
-+
-+/* GRR 20040430: This is new and still only partially implemented. No doubt
-+ * there are many other systems that have mkstemp() (SUSv3),
-+ * but let's start small... */
-+#if defined(__linux__) || defined(__OpenBSD__)
-+# define USE_MKSTEMP /* use 'mkstemp()' instead of 'mktemp()' */
- #endif
-
-
-@@ -320,15 +356,15 @@
- /*****************************/
-
- #ifdef DOJPEG
--#define HAVE_JPEG
-+# define HAVE_JPEG
- #endif
-
- #ifdef DOTIFF
--#define HAVE_TIFF
-+# define HAVE_TIFF
- #endif
-
- #ifdef DOPDS
--#define HAVE_PDS
-+# define HAVE_PDS
- #endif
-
-
-@@ -442,7 +478,7 @@
-
- /* following list gives indicies into 'saveFormats[]' array in xvdir.c
- note that JPEG and TIFF entries may or may not exist, and following
-- constants have to be adjusted accordingly. Also, don't worry about
-+ constants have to be adjusted accordingly. Also, don't worry about
- duplicate cases if JPGINC or TIFINC = 0. All code that references
- F_JPEG or F_TIFF is #ifdef'd, so it won't be a problem */
-
-@@ -482,7 +518,7 @@
- /* return values from ReadFileType()
- * positive values are *definitely* readable formats (HAVE_*** is defined)
- * negative values are random files that XV can't read, but display as
-- * different icons in the visual browser
-+ * different icons in the visual browser
- */
- #define RFT_ERROR -1 /* couldn't open file, or whatever... */
- #define RFT_UNKNOWN 0
-@@ -742,7 +778,7 @@
-
- typedef unsigned char byte;
-
--typedef struct scrl {
-+typedef struct scrl {
- Window win; /* window ID */
- int x,y,w,h; /* window coords in parent */
- int len; /* length of major axis */
-@@ -972,12 +1008,12 @@
- /* this is converted to 'theImage' */
- WHERE int eWIDE, eHIGH; /* size of epic */
-
--WHERE byte *egampic; /* expanded, gammified cpic
-+WHERE byte *egampic; /* expanded, gammified cpic
- (only used in 24-bit mode) */
-
- WHERE int p_offx, p_offy; /* offset of reparented windows */
- WHERE int ch_offx,ch_offy; /* ChngAttr ofst for reparented windows */
--WHERE int kludge_offx, /* WM kludges for SetWindowPos routine */
-+WHERE int kludge_offx, /* WM kludges for SetWindowPos routine */
- kludge_offy;
- WHERE int winCtrPosKludge; /* kludge for popup positioning... */
-
-@@ -1072,7 +1108,7 @@
- WHERE int autoDelete; /* delete cmd-line files on exit? */
-
- #define PRINTCMDLEN 256
--WHERE char printCmd[PRINTCMDLEN];
-+WHERE char printCmd[PRINTCMDLEN];
-
- /* stuff used for 'info' box */
- WHERE Window infoW;
-@@ -1135,7 +1171,7 @@
- /* stuff used for 'ps' box */
- WHERE Window psW;
- WHERE int psUp; /* is psW mapped, or what? */
--WHERE CBUTT encapsCB, pscompCB;
-+WHERE CBUTT encapsCB, pscompCB;
- WHERE char *gsDev, *gsGeomStr;
- WHERE int gsRes;
-
-@@ -1210,7 +1246,7 @@
-
- /*************************** XVMISC.C ***************************/
- void StoreDeleteWindowProp PARM((Window));
--Window CreateWindow PARM((char *, char *, char *, int, int,
-+Window CreateWindow PARM((char *, char *, char *, int, int,
- u_long, u_long, int));
- void DrawString PARM((Window, int, int, char *));
- void CenterString PARM((Window, int, int, char *));
-@@ -1222,7 +1258,7 @@
- void GenExpose PARM((Window, int, int, u_int, u_int));
- void DimRect PARM((Window, int, int, u_int, u_int, u_long));
-
--void Draw3dRect PARM((Window, int, int, u_int, u_int, int, int,
-+void Draw3dRect PARM((Window, int, int, u_int, u_int, int, int,
- u_long, u_long, u_long));
-
- void RemapKeyCheck PARM((KeySym, char *, int *));
-@@ -1237,7 +1273,7 @@
- void SetCursors PARM((int));
- char *BaseName PARM((char *));
-
--void DrawTempGauge PARM((Window, int, int, int, int, double,
-+void DrawTempGauge PARM((Window, int, int, int, int, double,
- u_long, u_long, u_long, u_long, char *));
- void ProgressMeter PARM((int, int, int, char *));
- void XVDeletedFile PARM((char *));
-@@ -1248,6 +1284,7 @@
- void xv_getwd PARM((char *, size_t));
- char *xv_strstr PARM((char *, char *));
- FILE *xv_fopen PARM((char *, char *));
-+void xv_mktemp PARM((char *, char *));
- void Timer PARM((int));
-
- /*************************** XVCOLOR.C ***************************/
-@@ -1282,11 +1319,11 @@
- void DrawEpic PARM((void));
- void KillOldPics PARM((void));
-
--byte *FSDither PARM((byte *, int, int, int,
-+byte *FSDither PARM((byte *, int, int, int,
- byte *, byte *, byte *, int, int));
-
- void CreateXImage PARM((void));
--XImage *Pic8ToXImage PARM((byte *, u_int, u_int, u_long *,
-+XImage *Pic8ToXImage PARM((byte *, u_int, u_int, u_long *,
- byte *, byte *, byte *));
-
- XImage *Pic24ToXImage PARM((byte *, u_int, u_int));
-@@ -1306,21 +1343,21 @@
- void DoAlg PARM((int));
-
- /*************************** XVSMOOTH.C ***************************/
--byte *SmoothResize PARM((byte *, int, int, int, int, byte *, byte *,
-+byte *SmoothResize PARM((byte *, int, int, int, int, byte *, byte *,
- byte *, byte *, byte *, byte *, int));
-
--byte *Smooth24 PARM((byte *, int, int, int, int, int,
-+byte *Smooth24 PARM((byte *, int, int, int, int, int,
- byte *, byte *, byte *));
-
--byte *DoColorDither PARM((byte *, byte *, int, int, byte *, byte *,
-+byte *DoColorDither PARM((byte *, byte *, int, int, byte *, byte *,
- byte *, byte *, byte *, byte *, int));
-
--byte *Do332ColorDither PARM((byte *, byte *, int, int, byte *, byte *,
-+byte *Do332ColorDither PARM((byte *, byte *, int, int, byte *, byte *,
- byte *, byte *, byte *, byte *, int));
-
- /*************************** XV24TO8.C **************************/
- void Init24to8 PARM((void));
--byte *Conv24to8 PARM((byte *, int, int, int,
-+byte *Conv24to8 PARM((byte *, int, int, int,
- byte *, byte *, byte *));
-
- byte *Conv8to24 PARM((byte *, int, int, byte *, byte *, byte *));
-@@ -1337,7 +1374,7 @@
- void DrawCtrlStr PARM((void));
- void ScrollToCurrent PARM((LIST *));
-
--void LSCreate PARM((LIST *, Window, int, int, int, int, int,
-+void LSCreate PARM((LIST *, Window, int, int, int, int, int,
- char **, int, u_long, u_long, u_long, u_long,
- void (*)(int, SCRL *), int, int));
-
-@@ -1384,7 +1421,7 @@
- FILE *OpenOutFile PARM((char *));
- int CloseOutFile PARM((FILE *, char *, int));
-
--byte *GenSavePic PARM((int*, int*,int*, int*, int*,
-+byte *GenSavePic PARM((int*, int*,int*, int*, int*,
- byte**, byte**, byte**));
- void GetSaveSize PARM((int *, int *));
-
-@@ -1451,11 +1488,11 @@
- void GamSetAutoApply PARM((int));
-
- /*************************** XVSCRL.C ***************************/
--void SCCreate PARM((SCRL *, Window, int, int, int, int,
-- int, int, int, int, u_long, u_long,
-+void SCCreate PARM((SCRL *, Window, int, int, int, int,
-+ int, int, int, int, u_long, u_long,
- u_long, u_long, void (*)(int, SCRL *)));
-
--void SCChange PARM((SCRL *, int, int, int, int, int,
-+void SCChange PARM((SCRL *, int, int, int, int, int,
- int, int, int));
-
- void SCSetRange PARM((SCRL *, int, int, int, int));
-@@ -1465,8 +1502,8 @@
-
-
- /*************************** XVDIAL.C ***************************/
--void DCreate PARM((DIAL *, Window, int, int, int, int, int,
-- int, int, int, u_long, u_long, u_long,
-+void DCreate PARM((DIAL *, Window, int, int, int, int, int,
-+ int, int, int, u_long, u_long, u_long,
- u_long, char *, char *));
-
- void DSetRange PARM((DIAL *, int, int, int, int));
-@@ -1477,7 +1514,7 @@
-
-
- /**************************** XVBUTT.C ***************************/
--void BTCreate PARM((BUTT *, Window, int, int, u_int, u_int,
-+void BTCreate PARM((BUTT *, Window, int, int, u_int, u_int,
- char *, u_long, u_long, u_long, u_long));
-
- void BTSetActive PARM((BUTT *, int));
-@@ -1485,7 +1522,7 @@
- int BTTrack PARM((BUTT *));
-
-
--RBUTT *RBCreate PARM((RBUTT *, Window, int, int, char *,
-+RBUTT *RBCreate PARM((RBUTT *, Window, int, int, char *,
- u_long, u_long, u_long, u_long));
-
- void RBRedraw PARM((RBUTT *, int));
-@@ -1497,7 +1534,7 @@
- int RBTrack PARM((RBUTT *, int));
-
-
--void CBCreate PARM((CBUTT *, Window, int, int, char *,
-+void CBCreate PARM((CBUTT *, Window, int, int, char *,
- u_long, u_long, u_long, u_long));
-
- void CBRedraw PARM((CBUTT *));
-@@ -1506,8 +1543,8 @@
- int CBTrack PARM((CBUTT *));
-
-
--void MBCreate PARM((MBUTT *, Window, int, int, u_int, u_int,
-- char *,
-+void MBCreate PARM((MBUTT *, Window, int, int, u_int, u_int,
-+ char *,
- char **, int,u_long,u_long, u_long, u_long));
-
- void MBRedraw PARM((MBUTT *));
-@@ -1519,7 +1556,7 @@
-
-
- /**************************** XVGRAF.C ***************************/
--void CreateGraf PARM((GRAF *, Window, int, int,
-+void CreateGraf PARM((GRAF *, Window, int, int,
- u_long, u_long, char *));
-
- void InitGraf PARM((GRAF *));
-@@ -1539,32 +1576,32 @@
- int LoadGIF PARM((char *, PICINFO *));
-
- /*************************** XVGIFWR.C **************************/
--int WriteGIF PARM((FILE *, byte *, int, int, int,
-+int WriteGIF PARM((FILE *, byte *, int, int, int,
- byte *, byte *, byte *, int, int, char *));
-
- /**************************** XVPM.C ****************************/
- int LoadPM PARM((char *, PICINFO *));
--int WritePM PARM((FILE *, byte *, int, int, int, byte *,
-+int WritePM PARM((FILE *, byte *, int, int, int, byte *,
- byte *, byte *, int, int, char *));
-
- /**************************** XVPBM.C ***************************/
- int LoadPBM PARM((char *, PICINFO *));
--int WritePBM PARM((FILE *, byte *, int, int, int, byte *,
-+int WritePBM PARM((FILE *, byte *, int, int, int, byte *,
- byte *, byte *, int, int, int, char *));
-
- /**************************** XVXBM.C ***************************/
- int LoadXBM PARM((char *, PICINFO *));
--int WriteXBM PARM((FILE *, byte *, int, int, byte *, byte *,
-+int WriteXBM PARM((FILE *, byte *, int, int, byte *, byte *,
- byte *, char *));
-
- /**************************** XVSUNRAS.C ***************************/
- int LoadSunRas PARM((char *, PICINFO *));
--int WriteSunRas PARM((FILE *, byte *, int, int, int, byte *,
-+int WriteSunRas PARM((FILE *, byte *, int, int, int, byte *,
- byte *, byte*, int, int, int));
-
- /**************************** XVBMP.C ***************************/
- int LoadBMP PARM((char *, PICINFO *));
--int WriteBMP PARM((FILE *, byte *, int, int, int, byte *,
-+int WriteBMP PARM((FILE *, byte *, int, int, int, byte *,
- byte *, byte *, int, int));
-
- /**************************** XVRLE.C ***************************/
-@@ -1572,7 +1609,7 @@
-
- /**************************** XVIRIS.C ***************************/
- int LoadIRIS PARM((char *, PICINFO *));
--int WriteIRIS PARM((FILE *, byte *, int, int, int, byte *,
-+int WriteIRIS PARM((FILE *, byte *, int, int, int, byte *,
- byte *, byte *, int, int));
-
- /**************************** XVPCX.C ***************************/
-@@ -1583,12 +1620,12 @@
-
- /**************************** XVTARGA.C ***************************/
- int LoadTarga PARM((char *, PICINFO *));
--int WriteTarga PARM((FILE *, byte *, int, int, int, byte *,
-+int WriteTarga PARM((FILE *, byte *, int, int, int, byte *,
- byte *, byte *, int, int));
-
- /**************************** XVXPM.C ***************************/
- int LoadXPM PARM((char *, PICINFO *));
--int WriteXPM PARM((FILE *, byte *, int, int, int, byte *,
-+int WriteXPM PARM((FILE *, byte *, int, int, int, byte *,
- byte *, byte *, int, int, char *, char *));
-
- /**************************** XVXWD.C ***************************/
-@@ -1607,7 +1644,7 @@
- void JPEGSaveParams PARM((char *, int));
-
- /**************************** XVTIFF.C ***************************/
--int LoadTIFF PARM((char *, PICINFO *));
-+int LoadTIFF PARM((char *, PICINFO *, int));
- void CreateTIFFW PARM((void));
- void TIFFDialog PARM((int));
- int TIFFCheckEvent PARM((XEvent *));
-@@ -1628,7 +1665,7 @@
- void CenterMapWindow PARM((Window, int, int, int, int));
- int PopUp PARM((char *, char **, int));
- void ErrPopUp PARM((char *, char *));
--int GetStrPopUp PARM((char *, char **, int, char *, int,
-+int GetStrPopUp PARM((char *, char **, int, char *, int,
- char *, int));
- int GrabPopUp PARM((int *, int *));
- int PadPopUp PARM((int *, char **, int *, int *, int *, int *));
-diff -ruN xv-3.10a/xv24to8.c xv-3.10a-bugfixes/xv24to8.c
---- xv-3.10a/xv24to8.c 1995-01-13 11:49:21.000000000 -0800
-+++ xv-3.10a-bugfixes/xv24to8.c 2004-05-16 18:00:58.000000000 -0700
-@@ -14,15 +14,15 @@
- *
- * The Conv24to8 procedure will set up the following: it will allocate, make
- * & return 'pic8', a 'w' by 'h' (passed in values) 8-bit picture.
-- * it will load up the rmap, gmap and bmap colormap arrays. it will NOT
-+ * it will load up the rmap, gmap and bmap colormap arrays. it will NOT
- * calculate numcols, since the cmap sort procedure has to be called anyway
- *
-- * Conv24to8 returns 'pic8' if successful, 'NULL' on failure (presumably on a
-+ * Conv24to8 returns 'pic8' if successful, 'NULL' on failure (presumably on a
- * malloc())
- *
-- * The 'slow' code, while still based on Heckbert's Median Cut algorithm,
-+ * The 'slow' code, while still based on Heckbert's Median Cut algorithm,
- * has been shamelessly lifted from the Independent JPEG Group's software
-- * (jquant2.c), as (for a variety of reasons) theirs was far better than
-+ * (jquant2.c), as (for a variety of reasons) theirs was far better than
- * the version I was previously using. Thanks guys!
- *
- * Also, as is my way, I've stripped out most of the IJG's well-written
-@@ -65,10 +65,10 @@
- {
- /* returns pointer to new 8-bit-per-pixel image (w*h) if successful, or
- NULL if unsuccessful */
--
-+
- int i;
- byte *pic8;
--
-+
- if (!pic24) return NULL;
-
- pic8 = (byte *) malloc((size_t) (w * h));
-@@ -79,9 +79,9 @@
-
- if (nc<=0) nc = 255; /* 'nc == 0' breaks code */
-
-- if (!noqcheck && quick_check(pic24, w,h, pic8, rm,gm,bm, nc)) {
-+ if (!noqcheck && quick_check(pic24, w,h, pic8, rm,gm,bm, nc)) {
- SetISTR(ISTR_INFO,"No color compression was necessary.\n");
-- return pic8;
-+ return pic8;
- }
-
- switch (conv24) {
-@@ -89,19 +89,19 @@
- SetISTR(ISTR_INFO,"Doing 'quick' 24-bit to 8-bit conversion.");
- i = quick_quant(pic24, w, h, pic8, rm, gm, bm, nc);
- break;
--
-+
- case CONV24_BEST:
- SetISTR(ISTR_INFO,"Doing 'best' 24-bit to 8-bit conversion.");
- i = ppm_quant(pic24, w, h, pic8, rm, gm, bm, nc);
- break;
--
-+
- case CONV24_SLOW:
- default:
- SetISTR(ISTR_INFO,"Doing 'slow' 24-bit to 8-bit conversion.");
- i = slow_quant(pic24, w, h, pic8, rm, gm, bm, nc);
- break;
- }
--
-+
- if (i) { free(pic8); pic8 = NULL; }
- return pic8;
- }
-@@ -134,7 +134,7 @@
-
- return pic24;
- }
--
-+
-
- /****************************/
- static int quick_check(pic24, w,h, pic8, rmap,gmap,bmap, maxcol)
-@@ -154,10 +154,10 @@
- if (maxcol>256) maxcol = 256;
-
- /* put the first color in the table by hand */
-- nc = 0; mid = 0;
-+ nc = 0; mid = 0;
-
- for (i=w*h,p=pic24; i; i--) {
-- col = (((u_long) *p++) << 16);
-+ col = (((u_long) *p++) << 16);
- col += (((u_long) *p++) << 8);
- col += *p++;
-
-@@ -184,7 +184,7 @@
- pic24 into colormap offsets into 'colors' */
-
- for (i=w*h,p=pic24, pix=pic8; i; i--,pix++) {
-- col = (((u_long) *p++) << 16);
-+ col = (((u_long) *p++) << 16);
- col += (((u_long) *p++) << 8);
- col += *p++;
-
-@@ -206,7 +206,7 @@
-
- /* and load up the 'desired colormap' */
- for (i=0; i<nc; i++) {
-- rmap[i] = colors[i]>>16;
-+ rmap[i] = colors[i]>>16;
- gmap[i] = (colors[i]>>8) & 0xff;
- bmap[i] = colors[i] & 0xff;
- }
-@@ -224,7 +224,7 @@
- {
- /* called after 'pic8' has been alloced, pWIDE,pHIGH set up, mono/1-bit
- checked already */
--
-+
- /* up to 256 colors: 3 bits R, 3 bits G, 2 bits B (RRRGGGBB) */
- #define RMASK 0xe0
- #define RSHIFT 0
-@@ -252,7 +252,7 @@
- gmap[i] = (((i<<GSHIFT) & GMASK) * 255 + GMASK/2) / GMASK;
- bmap[i] = (((i<<BSHIFT) & BMASK) * 255 + BMASK/2) / BMASK;
- }
--
-+
-
- thisline = (int *) malloc(pwide3 * sizeof(int));
- nextline = (int *) malloc(pwide3 * sizeof(int));
-@@ -262,40 +262,40 @@
- fprintf(stderr,"%s: unable to allocate memory in quick_quant()\n", cmd);
- return(1);
- }
--
-+
- /* get first line of picture */
- for (j=pwide3, tmpptr=nextline; j; j--) *tmpptr++ = (int) *p24++;
--
-+
- for (i=0; i<h; i++) {
- tmpptr = thisline; thisline = nextline; nextline = tmpptr; /* swap */
--
-+
- if ((i&0x3f) == 0) WaitCursor();
-
- if (i!=imax) /* get next line */
- for (j=pwide3, tmpptr=nextline; j; j--)
- *tmpptr++ = (int) *p24++;
--
-+
- for (j=0, thisptr=thisline, nextptr=nextline; j<w; j++,pp++) {
- r1 = *thisptr++; g1 = *thisptr++; b1 = *thisptr++;
-- RANGE(r1,0,255); RANGE(g1,0,255); RANGE(b1,0,255);
--
-+ RANGE(r1,0,255); RANGE(g1,0,255); RANGE(b1,0,255);
-+
- /* choose actual pixel value */
-- val = (((r1&RMASK)>>RSHIFT) | ((g1&GMASK)>>GSHIFT) |
-+ val = (((r1&RMASK)>>RSHIFT) | ((g1&GMASK)>>GSHIFT) |
- ((b1&BMASK)>>BSHIFT));
- *pp = val;
--
-+
- /* compute color errors */
- r1 -= rmap[val];
- g1 -= gmap[val];
- b1 -= bmap[val];
--
-+
- /* Add fractions of errors to adjacent pixels */
- if (j!=jmax) { /* adjust RIGHT pixel */
- thisptr[0] += (r1*7) / 16;
- thisptr[1] += (g1*7) / 16;
- thisptr[2] += (b1*7) / 16;
- }
--
-+
- if (i!=imax) { /* do BOTTOM pixel */
- nextptr[0] += (r1*5) / 16;
- nextptr[1] += (g1*5) / 16;
-@@ -316,7 +316,7 @@
- }
- }
- }
--
-+
- free(thisline);
- free(nextline);
- return 0;
-@@ -329,7 +329,7 @@
- #undef BMASK
- #undef BSHIFT
- }
--
-+
-
-
-
-@@ -381,7 +381,7 @@
-
- /* Luminance macro. */
-
--/*
-+/*
- * #define PPM_LUMIN(p) \
- * ( 0.299 * PPM_GETR(p) + 0.587 * PPM_GETG(p) + 0.114 * PPM_GETB(p) )
- */
-@@ -472,7 +472,7 @@
-
- if (DEBUG) fprintf(stderr,"%s: remapping to ppm-style internal fmt\n", fn);
- WaitCursor();
--
-+
- pixels = (pixel **) malloc(rows * sizeof(pixel *));
- if (!pixels) FatalError("couldn't allocate 'pixels' array");
- for (row=0; row<rows; row++) {
-@@ -488,7 +488,7 @@
- if (DEBUG) fprintf(stderr,"%s: done format remapping\n", fn);
-
-
--
-+
-
- /*
- * attempt to make a histogram of the colors, unclustered.
-@@ -503,7 +503,7 @@
-
- chv = ppm_computechist(pixels, cols, rows, MAXCOLORS, &colors);
- if (chv != (chist_vec) 0) break;
--
-+
- if (DEBUG) fprintf(stderr, "%s: too many colors!\n", fn);
- newmaxval = maxval / 2;
- if (DEBUG) fprintf(stderr, "%s: rescaling colors (maxval=%d) %s\n",
-@@ -635,7 +635,7 @@
- int boxes;
-
- bv = (box_vector) malloc(sizeof(struct box) * newcolors);
-- colormap = (chist_vec)
-+ colormap = (chist_vec)
- malloc(sizeof(struct chist_item) * newcolors );
-
- if (!bv || !colormap) FatalError("unable to malloc in mediancut()");
-@@ -723,7 +723,7 @@
- else if (gl >= bl)
- qsort((char*) &(chv[indx]), (size_t) clrs, sizeof(struct chist_item),
- greencompare );
-- else
-+ else
- qsort((char*) &(chv[indx]), (size_t) clrs, sizeof(struct chist_item),
- bluecompare );
- }
-@@ -750,7 +750,7 @@
- ++boxes;
- qsort((char*) bv, (size_t) boxes, sizeof(struct box), sumcompare);
- } /* while (boxes ... */
--
-+
- /*
- ** Ok, we've got enough boxes. Now choose a representative color for
- ** each box. There are a number of possible ways to make this choice.
-@@ -761,7 +761,7 @@
- ** method is used by switching the commenting on the REP_ defines at
- ** the beginning of this source file.
- */
--
-+
- for (bi=0; bi<boxes; bi++) {
- /* REP_AVERAGE_PIXELS version */
- register int indx = bv[bi].index;
-@@ -791,7 +791,7 @@
- static int redcompare(p1, p2)
- const void *p1, *p2;
- {
-- return (int) PPM_GETR( ((chist_vec)p1)->color ) -
-+ return (int) PPM_GETR( ((chist_vec)p1)->color ) -
- (int) PPM_GETR( ((chist_vec)p2)->color );
- }
-
-@@ -799,7 +799,7 @@
- static int greencompare(p1, p2)
- const void *p1, *p2;
- {
-- return (int) PPM_GETG( ((chist_vec)p1)->color ) -
-+ return (int) PPM_GETG( ((chist_vec)p1)->color ) -
- (int) PPM_GETG( ((chist_vec)p2)->color );
- }
-
-@@ -807,7 +807,7 @@
- static int bluecompare(p1, p2)
- const void *p1, *p2;
- {
-- return (int) PPM_GETB( ((chist_vec)p1)->color ) -
-+ return (int) PPM_GETB( ((chist_vec)p1)->color ) -
- (int) PPM_GETB( ((chist_vec)p2)->color );
- }
-
-@@ -821,7 +821,7 @@
-
-
- /****************************************************************************/
--static chist_vec
-+static chist_vec
- ppm_computechist(pixels, cols, rows, maxcolors, colorsP)
- pixel** pixels;
- int cols, rows, maxcolors;
-@@ -840,7 +840,7 @@
-
-
- /****************************************************************************/
--static chash_table ppm_computechash(pixels, cols, rows,
-+static chash_table ppm_computechash(pixels, cols, rows,
- maxcolors, colorsP )
- pixel** pixels;
- int cols, rows, maxcolors;
-@@ -861,14 +861,14 @@
-
- for (chl = cht[hash]; chl != (chist_list) 0; chl = chl->next)
- if (PPM_EQUAL(chl->ch.color, *pP)) break;
--
-+
- if (chl != (chist_list) 0) ++(chl->ch.value);
- else {
- if ((*colorsP)++ > maxcolors) {
- ppm_freechash(cht);
- return (chash_table) 0;
- }
--
-+
- chl = (chist_list) malloc(sizeof(struct chist_list_item));
- if (!chl) FatalError("ran out of memory computing hash table");
-
-@@ -878,7 +878,7 @@
- cht[hash] = chl;
- }
- }
--
-+
- return cht;
- }
-
-@@ -1114,7 +1114,7 @@
- register int i;
- register long maxc = 0;
- boxptr which = NULL;
--
-+
- for (i = 0, boxp = boxlist; i < numboxes; i++, boxp++) {
- if (boxp->colorcount > maxc && boxp->volume > 0) {
- which = boxp;
-@@ -1133,7 +1133,7 @@
- register int i;
- register INT32 maxv = 0;
- boxptr which = NULL;
--
-+
- for (i = 0, boxp = boxlist; i < numboxes; i++, boxp++) {
- if (boxp->volume > maxv) {
- which = boxp;
-@@ -1153,11 +1153,11 @@
- int c0min,c0max,c1min,c1max,c2min,c2max;
- INT32 dist0,dist1,dist2;
- long ccount;
--
-+
- c0min = boxp->c0min; c0max = boxp->c0max;
- c1min = boxp->c1min; c1max = boxp->c1max;
- c2min = boxp->c2min; c2max = boxp->c2max;
--
-+
- if (c0max > c0min)
- for (c0 = c0min; c0 <= c0max; c0++)
- for (c1 = c1min; c1 <= c1max; c1++) {
-@@ -1229,7 +1229,7 @@
- dist1 = ((c1max - c1min) << C1_SHIFT) * C1_SCALE;
- dist2 = ((c2max - c2min) << C2_SHIFT) * C2_SCALE;
- boxp->volume = dist0*dist0 + dist1*dist1 + dist2*dist2;
--
-+
- ccount = 0;
- for (c0 = c0min; c0 <= c0max; c0++)
- for (c1 = c1min; c1 <= c1max; c1++) {
-@@ -1315,11 +1315,11 @@
- long c0total = 0;
- long c1total = 0;
- long c2total = 0;
--
-+
- c0min = boxp->c0min; c0max = boxp->c0max;
- c1min = boxp->c1min; c1max = boxp->c1max;
- c2min = boxp->c2min; c2max = boxp->c2max;
--
-+
- for (c0 = c0min; c0 <= c0max; c0++)
- for (c1 = c1min; c1 <= c1max; c1++) {
- histp = & histogram[c0][c1][c2min];
-@@ -1332,7 +1332,7 @@
- }
- }
- }
--
-+
- sl_colormap[0][icolor] = (JSAMPLE) ((c0total + (total>>1)) / total);
- sl_colormap[1][icolor] = (JSAMPLE) ((c1total + (total>>1)) / total);
- sl_colormap[2][icolor] = (JSAMPLE) ((c2total + (total>>1)) / total);
-@@ -1505,12 +1505,12 @@
- bptr = bestdist;
- for (i = BOX_C0_ELEMS*BOX_C1_ELEMS*BOX_C2_ELEMS-1; i >= 0; i--)
- *bptr++ = 0x7FFFFFFFL;
--
-+
- /* Nominal steps between cell centers ("x" in Thomas article) */
- #define STEP_C0 ((1 << C0_SHIFT) * C0_SCALE)
- #define STEP_C1 ((1 << C1_SHIFT) * C1_SCALE)
- #define STEP_C2 ((1 << C2_SHIFT) * C2_SCALE)
--
-+
- for (i = 0; i < numcolors; i++) {
- icolor = colorlist[i];
- /* Compute (square of) distance from minc0/c1/c2 to this color */
-@@ -1576,7 +1576,7 @@
- minc0 = (c0 << BOX_C0_SHIFT) + ((1 << C0_SHIFT) >> 1);
- minc1 = (c1 << BOX_C1_SHIFT) + ((1 << C1_SHIFT) >> 1);
- minc2 = (c2 << BOX_C2_SHIFT) + ((1 << C2_SHIFT) >> 1);
--
-+
- numcolors = find_nearby_colors(minc0, minc1, minc2, colorlist);
-
- /* Determine the actually nearest colors. */
-diff -ruN xv-3.10a/xvalg.c xv-3.10a-bugfixes/xvalg.c
---- xv-3.10a/xvalg.c 1994-12-22 14:34:47.000000000 -0800
-+++ xv-3.10a-bugfixes/xvalg.c 2004-05-16 18:01:13.000000000 -0700
-@@ -38,7 +38,7 @@
- double, int));
- static void doPixel PARM((byte *,int,int,byte *, int,int,int,int,
- int, int));
--static void doSpread PARM((byte *,int,int,byte *, int,int,int,int,
-+static void doSpread PARM((byte *,int,int,byte *, int,int,int,int,
- int, int));
- static void doMedianFilter PARM((byte *,int,int,byte *, int,int,int,int, int));
-
-@@ -89,7 +89,7 @@
- /************************************************************/
- void AlgInit()
- {
-- /* called whenver an image file is loaded. disposes of origPic
-+ /* called whenver an image file is loaded. disposes of origPic
- if neccessary, and points it to null */
-
- if (origPic) free(origPic);
-@@ -160,7 +160,7 @@
- {
- /* runs a n*n convolution mask (all 1's) over 'pic',
- producing a 24-bit version. Then calls 24to8 to generate a new 8-bit
-- image, and installs it.
-+ image, and installs it.
-
- Note that 'n' must be odd for things to work properly */
-
-@@ -169,7 +169,7 @@
- static char *labels[] = { "\nOk", "\033Cancel" };
- char txt[256];
- static char buf[64] = { '3', '\0' };
--
-+
- sprintf(txt, "Blur: \n\n%s",
- "Enter mask size (ex. 3, 5, 7, ...)");
-
-@@ -178,7 +178,7 @@
- n = atoi(buf);
-
- if (n < 1 || (n&1)!=1) {
-- ErrPopUp("Error: The value entered must be odd and greater than zero.",
-+ ErrPopUp("Error: The value entered must be odd and greater than zero.",
- "\nOh!");
- return;
- }
-@@ -194,7 +194,7 @@
-
- if (start24bitAlg(&pic24, &tmpPic)) return;
- xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
--
-+
- doBlurConvolv(pic24, pWIDE,pHIGH, tmpPic, sx,sy,sw,sh, n);
-
- end24bitAlg(pic24, tmpPic);
-@@ -212,7 +212,7 @@
- static char *labels[] = { "\nOk", "\033Cancel" };
- char txt[256];
- static char buf[64] = { '7', '5', '\0' };
--
-+
- sprintf(txt, "Sharpen: \n\n%s",
- "Enter enhancement factor (0-99%)");
-
-@@ -236,7 +236,7 @@
-
- if (start24bitAlg(&pic24, &tmpPic)) return;
- xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
--
-+
- doSharpConvolv(pic24, pWIDE,pHIGH, tmpPic, sx,sy,sw,sh, n);
-
- end24bitAlg(pic24, tmpPic);
-@@ -264,7 +264,7 @@
- xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
-
- doEdgeConvolv(pic24, pWIDE, pHIGH, tmpPic, sx,sy,sw,sh);
--
-+
- SetISTR(ISTR_INFO, "%snormalizing...", str);
-
- /* Normalize results */
-@@ -292,19 +292,19 @@
- /************************/
- static void TinFoil()
- {
-- byte *pic24, *p24, *tmpPic, *tp, *tlp;
-+ byte *pic24, *tmpPic, *tp, *tlp;
- char *str;
-- int i, j, v, maxv,sx,sy,sw,sh;
--
-+ int i, j, v, sx,sy,sw,sh;
-+
- WaitCursor();
--
-+
- str = "Doing cheesy embossing effect...";
- SetISTR(ISTR_INFO, str);
--
-+
- if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
- else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
- CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
--
-+
- if (start24bitAlg(&pic24, &tmpPic)) return;
- xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
-
-@@ -315,9 +315,9 @@
- *tp++ = 128; *tp++ = 128; *tp++ = 128;
- }
- }
--
-+
- doAngleConvolv(pic24, pWIDE, pHIGH, tmpPic, sx,sy,sw,sh);
--
-+
- /* mono-ify selected area of tmpPic */
- for (i=sy; i<sy+sh; i++) {
- tp = tlp = tmpPic + (i*pWIDE + sx) * 3;
-@@ -327,9 +327,9 @@
- tp[0] = tp[1] = tp[2] = (byte) v;
- }
- }
--
-+
- end24bitAlg(pic24, tmpPic);
--}
-+}
-
-
- /************************/
-@@ -345,7 +345,7 @@
- if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
- else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
- CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
--
-+
- if (start24bitAlg(&pic24, &tmpPic)) return;
- xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
-
-@@ -365,7 +365,7 @@
- if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
- else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
- CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
--
-+
- WaitCursor();
-
- if (start24bitAlg(&pic24, &tmpPic)) return;
-@@ -396,12 +396,12 @@
- rotval = atof(buf);
-
- if (rotval == 0.0) return;
--
-+
-
- if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
- else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
- CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
--
-+
- WaitCursor();
-
- if (start24bitAlg(&pic24, &tmpPic)) return;
-@@ -443,11 +443,11 @@
- return;
- }
-
--
-+
- if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
- else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
- CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
--
-+
- WaitCursor();
-
- if (start24bitAlg(&pic24, &tmpPic)) return;
-@@ -493,11 +493,11 @@
- return;
- }
-
--
-+
- if (HaveSelection()) GetSelRCoords(&sx,&sy,&sw,&sh);
- else { sx = 0; sy = 0; sw = pWIDE; sh = pHIGH; }
- CropRect2Rect(&sx,&sy,&sw,&sh, 0,0,pWIDE,pHIGH);
--
-+
- WaitCursor();
-
- if (start24bitAlg(&pic24, &tmpPic)) return;
-@@ -521,7 +521,7 @@
- static char *labels[] = { "\nOk", "\033Cancel" };
- char txt[256];
- static char buf[64] = { '3', '\0' };
--
-+
- sprintf(txt, "DeSpeckle (median filter): \n\n%s",
- "Enter mask size (ex. 3, 5, 7, ...)");
-
-@@ -530,7 +530,7 @@
- n = atoi(buf);
-
- if (n < 1 || (n&1)!=1) {
-- ErrPopUp("Error: The value entered must be odd and greater than zero.",
-+ ErrPopUp("Error: The value entered must be odd and greater than zero.",
- "\nOh!");
- return;
- }
-@@ -546,7 +546,7 @@
-
- if (start24bitAlg(&pic24, &tmpPic)) return;
- xvbcopy((char *) pic24, (char *) tmpPic, (size_t) (pWIDE*pHIGH*3));
--
-+
- doMedianFilter(pic24, pWIDE,pHIGH, tmpPic, sx,sy,sw,sh, n);
-
- end24bitAlg(pic24, tmpPic);
-@@ -560,7 +560,7 @@
- int w,h, selx,sely,selw,selh, n;
- {
-
-- /* convolves with an n*n array, consisting of only 1's.
-+ /* convolves with an n*n array, consisting of only 1's.
- Operates on rectangular region 'selx,sely,selw,selh' (in pic coords)
- Region is guaranteed to be completely within pic boundaries
- 'n' must be odd */
-@@ -568,7 +568,7 @@
- register byte *p24;
- register int rsum,gsum,bsum;
- byte *rp;
-- int i,j,k,x,y,x1,y1,count,n2;
-+ int x,y,x1,y1,count,n2;
-
-
- printUTime("start of blurConvolv");
-@@ -589,7 +589,7 @@
- for (y1=y-n2; y1<=y+n2; y1++) {
-
- if (y1>=sely && y1<sely+selh) {
-- p24 = pic24 + y1*w*3 +(x-n2)*3;
-+ p24 = pic24 + y1*w*3 +(x-n2)*3;
-
- for (x1=x-n2; x1<=x+n2; x1++) {
- if (x1>=selx && x1<selx+selw) {
-@@ -631,7 +631,7 @@
- byte *p24;
- int rv, gv, bv;
- byte *rp;
-- int i,j,k,x,y,x1,y1;
-+ int i,x,y;
- double fact, ifact, hue,sat,val, vsum;
- double *linem1, *line0, *linep1, *tmpptr;
-
-@@ -673,7 +673,7 @@
- for (y=sely+1; y<(sely+selh)-1; y++) {
- ProgressMeter(sely+1, (sely+selh)-2, y, "Sharpen");
- if ((y & 15) == 0) WaitCursor();
--
-+
- tmpptr = linem1; linem1 = line0; line0 = linep1; linep1 = tmpptr;
-
- /* get next line */
-@@ -691,7 +691,7 @@
- vsum = linem1[i-1] + linem1[i] + linem1[i+1] +
- line0 [i-1] + line0 [i] + line0 [i+1] +
- linep1[i-1] + linep1[i] + linep1[i+1];
--
-+
- rgb2hsv((int) p24[0], (int) p24[1], (int) p24[2], &hue, &sat, &val);
-
- val = ((val - (fact * vsum) / 9) / ifact);
-@@ -723,22 +723,22 @@
- {
-
- /* convolves with two edge detection masks (vertical and horizontal)
-- simultaneously, taking Max(abs(results))
--
-+ simultaneously, taking Max(abs(results))
-+
- The two masks are (hard coded):
-
- -1 0 1 -1 -1 -1
- H = -1 0 1 and V = 0 0 0
- -1 0 1 1 1 1
-
-- divided into
-+ divided into
- -1 0 0 0 0 0 0 0 1 0 1 0
- a = 0 0 0 , b = -1 0 1 , c = 0 0 0 , d = 0 0 0 .
- 0 0 1 0 0 0 -1 0 0 0 -1 0
-
- So H = a + b + c, V = a - c - d.
- gradient = max(abs(H),abs(V)).
--
-+
- Also, only does pixels in which the masks fit fully onto the picture
- (no pesky boundary conditionals) */
-
-@@ -746,7 +746,7 @@
- register byte *p24;
- register int bperlin, a, b, c, d, rsum, gsum, bsum;
- byte *rp;
-- int i, x, y;
-+ int x, y;
-
-
- printUTime("start of edgeConvolv");
-@@ -818,13 +818,13 @@
- {
-
- /* convolves with edge detection mask, at 45 degrees to horizontal.
--
-+
- The mask is (hard coded):
-
- -2 -1 0
- -1 0 1
- 0 1 2
--
-+
- Also, only does pixels in which the masks fit fully onto the picture
- (no pesky boundary conditionals)
-
-@@ -833,7 +833,7 @@
- register byte *p24;
- register int bperlin,rsum,gsum,bsum;
- byte *rp;
-- int i, x,y;
-+ int x,y;
-
-
- printUTime("start of doAngleConvolv");
-@@ -912,14 +912,14 @@
- for each pixel in the image (assume, for a second, a grayscale image),
- compute a histogram of the n*n rectangle centered on the pixel.
- replace the pixel with the color that had the greatest # of hits in
-- the histogram. Note that 'n' should be odd.
-+ the histogram. Note that 'n' should be odd.
-
- I've modified the algorithm to do the *right* thing for RGB images.
- (jhb, 6/94) */
-
-
- register byte *pp;
-- register int bperlin, rsum,gsum,bsum;
-+ register int bperlin;
- byte *rp, *p24, *plin;
- int i,j,k,x,y,n2,col,cnt,maxcnt;
- int *nnrect;
-@@ -933,7 +933,7 @@
-
- /* nnrect[] is an n*n array of ints, with '-1' meaning 'outside the region'
- otherwise they'll have 24-bit RGB values */
--
-+
- nnrect = (int *) malloc(n * n * sizeof(int));
- if (!nnrect) FatalError("can't malloc nnrect[] in doOilPaint()\n");
-
-@@ -943,13 +943,13 @@
-
- p24 = pic24 + ((y-n2)*w + selx-n2)*3; /* pts to top-left of mask */
- rp = results + (y*w + selx)*3;
--
-+
- for (x=selx; x<selx+selw; x++) {
- /* fill 'nnrect' with valid pixels from n*n region centered round x,y */
- pp = plin = p24;
- for (i=y-n2, k=0; i<y+n2; i++) {
- for (j=x-n2; j<x+n2; j++, k++, pp+=3) {
-- if (i>=sely && i<sely+selh && j>=selx && j<selx+selw) {
-+ if (i>=sely && i<sely+selh && j>=selx && j<selx+selw) {
- nnrect[k] = (((int) pp[0])<<16) | (((int) pp[1])<<8) | pp[2];
- }
- else nnrect[k] = -1;
-@@ -957,7 +957,7 @@
- plin += bperlin; pp = plin;
- }
-
--
-+
- /* find 'most popular color' in nnrect, not counting '-1' */
- maxcnt = cnt = col = 0;
- for (i=0; i<n*n; i++) {
-@@ -1021,7 +1021,7 @@
- p24 = pic24 + (y*w + selx) * 3;
- rf += (double) p24[0]; gf += (double) p24[1]; bf += (double) p24[2];
- i++;
--
-+
- p24 = pic24 + (y*w + (selx+selw-1)) * 3;
- rf += (double) p24[0]; gf += (double) p24[1]; bf += (double) p24[2];
- i++;
-@@ -1047,7 +1047,7 @@
- if (dx==0 && dy==0) { ex = selx; ey = sely; } /* don't care */
- else if (dx==0) { ex = cx; ey = (dy<0) ? sely : sely+selh-1; }
- else if (dy==0) { ey = cy; ex = (dx<0) ? selx : selx+selw-1; }
-- else {
-+ else {
- slope = ((double) dy) / dx;
- if (fabs(slope) > fabs(dslope)) { /* y axis is major */
- ey = (dy<0) ? sely : sely+selh-1;
-@@ -1092,7 +1092,7 @@
- printUTime("end of blend");
- }
-
--
-+
-
- /************************/
- static void doRotate(pic24, w, h, results, selx,sely,selw,selh, rotval, clear)
-@@ -1104,7 +1104,7 @@
- by the amount specified in degrees (rotval), and stores the result in
- 'results', which is also a w*h 24-bit image. The rotated bits are
- clipped to fit in 'results'. If 'clear', the (unrotated) rectangular
-- region is cleared (in results) first.
-+ region is cleared (in results) first.
- sel[x,y,w,h] is guaranteed to be within image bounds */
-
- byte *pp, *dp;
-@@ -1118,7 +1118,7 @@
- printUTime("start of rotate");
-
- /*
-- * cfx,cfy - center point of sel rectangle (double)
-+ * cfx,cfy - center point of sel rectangle (double)
- * rx1,ry1 - top-left of sel, rotated
- * rx2,ry2 - bot-left of sel, rotated
- * rx3,ry3 - top-right of sel, rotated
-@@ -1174,7 +1174,7 @@
- /* now, for each pixel in rb[x,y,w,h], do the inverse rotation to see if
- it would be in the original unrotated selection rectangle. if it *is*,
- compute and store an appropriate color, otherwise skip it */
--
-+
- for (y=rby; y<rby+rbh; y++) {
- dp = results + (y * w + rbx) * 3;
-
-@@ -1194,7 +1194,7 @@
- int p0r,p0g,p0b, p1r,p1g,p1b, p2r,p2g,p2b, p3r,p3g,p3b;
- int rv,gv,bv;
- double rd,gd,bd, p0wgt, p1wgt, p2wgt, p3wgt;
--
-+
- /* compute the color, same idea as in Smooth**(). The color
- will be a linear combination of the colors of the center pixel,
- its left-or-right neighbor, its top-or-bottom neighbor, and
-@@ -1265,9 +1265,9 @@
- }
- #endif /* ROTATE_FOO */
-
-- dp[0] = (byte) (rv&0xff);
-- dp[1] = (byte) (gv&0xff);
-- dp[2] = (byte) (bv&0xff);
-+ dp[0] = (byte) (rv&0xff);
-+ dp[1] = (byte) (gv&0xff);
-+ dp[2] = (byte) (bv&0xff);
- }
- }
- }
-@@ -1311,11 +1311,11 @@
- #ifdef FOO
- fprintf(stderr,"rotXfer: rotating (%4d,%4d) %7.2f degrees around",
- x,y, rad*180.0 / M_PI);
-- fprintf(stderr,"(%4d,%4d) -> %7.2f %7.2f (d=%f ang=%f)\n",
-+ fprintf(stderr,"(%4d,%4d) -> %7.2f %7.2f (d=%f ang=%f)\n",
- cx,cy, *rx,*ry, d, ang);
- #endif
- }
--
-+
-
-
- /************************/
-@@ -1323,29 +1323,29 @@
- byte *pic24, *results;
- int w, h, selx,sely,selw,selh, pixX,pixY;
- {
-- /* runs 'pixelization' algorithm. replaces each pixX-by-pixY region
-+ /* runs 'pixelization' algorithm. replaces each pixX-by-pixY region
- (smaller on edges) with the average color within that region */
--
-+
- byte *pp;
- int nwide, nhigh, i,j, x,y, x1,y1, stx,sty;
- int nsum, rsum, gsum, bsum;
--
-+
- printUTime("start of pixelize");
--
-+
- /* center grid on selection */
- nwide = (selw + pixX-1) / pixX;
- nhigh = (selh + pixY-1) / pixY;
--
-+
- stx = selx - (nwide*pixX - selw)/2;
- sty = sely - (nhigh*pixY - selh)/2;
--
-+
- y = sty;
- for (i=0; i<nhigh; i++, y+=pixY) {
- ProgressMeter(0, nhigh-1, i, "Pixelize");
--
-+
- x = stx;
- for (j=0; j<nwide; j++, x+=pixX) {
--
-+
- /* COMPUTE AVERAGE COLOR FOR RECT:[x,y,pixX,pixY] */
- nsum = rsum = gsum = bsum = 0;
- for (y1=y; y1<y+pixY; y1++) {
-@@ -1357,17 +1357,17 @@
- }
- }
- }
--
-+
- if (nsum>0) { /* just to be safe... */
- rsum /= nsum; gsum /= nsum; bsum /= nsum;
- RANGE(rsum,0,255); RANGE(gsum,0,255); RANGE(bsum,0,255);
- }
--
--
-+
-+
- /* STORE color in rect:[x,y,pixX,pixY] */
- for (y1=y; y1<y+pixY; y1++) {
- if (!j && (y1 & 255)==0) WaitCursor();
--
-+
- pp = results + (y1 * w + x) * 3;
- for (x1=x; x1<x+pixX; x1++, pp+=3) {
- if (PTINRECT(x1,y1, selx,sely,selw,selh)) {
-@@ -1381,7 +1381,7 @@
- printUTime("end of pixelize");
- }
-
--
-+
-
- /************************/
- static void doSpread(pic24, w, h, results, selx,sely,selw,selh, pixX, pixY)
-@@ -1393,17 +1393,17 @@
- by pixX,pixY. If pixX<0, it is treated as a single 'distance' value
- (after being abs()'d). */
-
-- /* assumes that initially 'results' is a copy of pic24. Doesn't
-+ /* assumes that initially 'results' is a copy of pic24. Doesn't
- even look at pic24 */
--
-+
- byte *pp, *dp, r,g,b;
-- int x,y, dx,dy, x1,y1, d, xrng, xoff, yrng, yoff, i,j;
-+ int x,y, x1,y1, d;
- int minx, maxx, miny, maxy, rdist;
- time_t nowT;
-
- time(&nowT);
- srandom((unsigned int) nowT);
--
-+
- printUTime("start of spread");
-
- for (y=sely; y<sely+selh; y++) {
-@@ -1453,7 +1453,7 @@
- printUTime("end of spread");
- }
-
--
-+
-
- /************************/
- static void doMedianFilter(pic24, w, h, results, selx,sely,selw,selh, n)
-@@ -1468,7 +1468,7 @@
- register byte *p24;
- register int rsum,gsum,bsum;
- byte *rp;
-- int i,j,k,x,y,x1,y1,count,n2,nsq,c2;
-+ int x,y,x1,y1,count,n2,nsq,c2;
- int *rtab, *gtab, *btab;
-
- printUTime("start of doMedianFilter");
-@@ -1494,7 +1494,7 @@
- for (y1=y-n2; y1<=y+n2; y1++) {
-
- if (y1>=sely && y1<sely+selh) {
-- p24 = pic24 + y1*w*3 +(x-n2)*3;
-+ p24 = pic24 + y1*w*3 +(x-n2)*3;
-
- for (x1=x-n2; x1<=x+n2; x1++) {
- if (x1>=selx && x1<selx+selw) {
-@@ -1509,12 +1509,12 @@
- }
-
-
-- /* now sort the rtab,gtab,btab arrays, (using shell sort)
-- and pick the middle value. doing it in-line, rather than
-+ /* now sort the rtab,gtab,btab arrays, (using shell sort)
-+ and pick the middle value. doing it in-line, rather than
- as a function call (ie, 'qsort()') , for speed */
-- {
-+ {
- int i,j,t,d;
--
-+
- for (d=count/2; d>0; d=d/2) {
- for (i=d; i<count; i++) {
- for (j=i-d; j>=0 && rtab[j]>rtab[j+d]; j-=d) {
-@@ -1531,14 +1531,14 @@
- }
- }
- }
--
-+
- c2 = count/2;
- *rp++ = (byte) ( (count&1) ? rtab[c2] : (rtab[c2] + rtab[c2-1])/2);
- *rp++ = (byte) ( (count&1) ? gtab[c2] : (gtab[c2] + gtab[c2-1])/2);
- *rp++ = (byte) ( (count&1) ? btab[c2] : (btab[c2] + btab[c2-1])/2);
- }
- }
--
-+
- free(rtab); free(gtab); free(btab);
- printUTime("end of doMedianFilter");
- }
-@@ -1549,7 +1549,7 @@
- static void intsort(a, n)
- int *a, n;
- {
-- /* uses the shell-sort algorithm. for the relatively small data sets
-+ /* uses the shell-sort algorithm. for the relatively small data sets
- we'll be using, should be quicker than qsort() because of all the
- function calling overhead associated with qsort(). */
-
-@@ -1571,7 +1571,7 @@
- byte **pic24, **tmpPic;
- {
- /* generates a 24-bit version of 'pic', if neccessary, and also mallocs
-- * a pWIDE*pHIGH*3 24-bit output pic.
-+ * a pWIDE*pHIGH*3 24-bit output pic.
- *
- * Returns '1' if there's some sort of screwup, '0' if cool
- */
-@@ -1588,7 +1588,7 @@
- *tmpPic = (byte *) calloc((size_t) (pWIDE * pHIGH * 3), (size_t) 1);
- if (!(*tmpPic)) {
- SetCursors(-1);
-- ErrPopUp("Unable to malloc() tmp 24-bit image in start24bitAlg()",
-+ ErrPopUp("Unable to malloc() tmp 24-bit image in start24bitAlg()",
- "\nTough!");
- if (picType == PIC8) free(*pic24);
- return 1;
-@@ -1609,16 +1609,16 @@
- saveOrigPic(); /* also kills pic/cpic/epic/egampic/theImage, NOT pic24 */
-
- /* copy results to pic24 */
-- xvbcopy((char *) outPic, (char *) pic24, (size_t) (pWIDE*pHIGH*3));
-+ xvbcopy((char *) outPic, (char *) pic24, (size_t) (pWIDE*pHIGH*3));
- free(outPic);
-
- if (picType == PIC8) {
- pic = Conv24to8(pic24, pWIDE, pHIGH, ncols, rMap,gMap,bMap);
- free(pic24);
-- if (!pic) {
-+ if (!pic) {
- SetCursors(-1);
- ErrPopUp("Some sort of failure occured in 24to8 conversion\n","\nDamn!");
-- NoAlg();
-+ NoAlg();
- return;
- }
- }
-@@ -1632,7 +1632,7 @@
- static void saveOrigPic()
- {
- /* saves original picture into origPic, if it hasn't already been done.
-- This allows us to undo algorithms...
-+ This allows us to undo algorithms...
-
- Also, frees all pics, (except 'pic', if we're in PIC24 mode) */
-
-@@ -1649,7 +1649,7 @@
- /* make a backup copy of 'pic' */
- origPic = (byte *) malloc((size_t)(pWIDE*pHIGH*((picType==PIC8) ? 1 : 3)));
- if (!origPic) FatalError("out of memory in 'saveOrigPic()'");
-- xvbcopy((char *) pic, (char *) origPic,
-+ xvbcopy((char *) pic, (char *) origPic,
- (size_t) (pWIDE * pHIGH * ((picType==PIC8) ? 1 : 3)));
-
- origPicType = picType;
-diff -ruN xv-3.10a/xvbmp.c xv-3.10a-bugfixes/xvbmp.c
---- xv-3.10a/xvbmp.c 1994-12-22 14:34:42.000000000 -0800
-+++ xv-3.10a-bugfixes/xvbmp.c 2005-03-27 18:12:17.000000000 -0800
-@@ -14,7 +14,7 @@
- rest of the pic is filled with 0's.
-
- a file with garbage characters in it is an unloadable file. All allocated
-- stuff is tossed, and LoadPBM returns non-zero
-+ stuff is tossed, and LoadBMP returns non-zero
-
- not being able to malloc is a Fatal Error. The program is aborted. */
-
-@@ -54,9 +54,9 @@
- {
- FILE *fp;
- int i, c, c1, rv;
-- unsigned int bfSize, bfOffBits, biSize, biWidth, biHeight, biPlanes;
-- unsigned int biBitCount, biCompression, biSizeImage, biXPelsPerMeter;
-- unsigned int biYPelsPerMeter, biClrUsed, biClrImportant;
-+ u_int bfSize, bfOffBits, biSize, biWidth, biHeight, biPlanes;
-+ u_int biBitCount, biCompression, biSizeImage, biXPelsPerMeter;
-+ u_int biYPelsPerMeter, biClrUsed, biClrImportant;
- int bPad;
- char *cmpstr;
- byte *pic24, *pic8;
-@@ -69,7 +69,7 @@
-
- fp = xv_fopen(fname,"r");
- if (!fp) return (bmpError(bname, "couldn't open file"));
--
-+
- fseek(fp, 0L, 2); /* figure out the file size */
- filesize = ftell(fp);
- fseek(fp, 0L, 0);
-@@ -104,11 +104,11 @@
- biHeight = getshort(fp);
- biPlanes = getshort(fp);
- biBitCount = getshort(fp);
--
-+
- /* Not in old versions so have to compute them*/
- biSizeImage = (((biPlanes * biBitCount*biWidth)+31)/32)*4*biHeight;
--
-- biCompression = BI_RGB;
-+
-+ biCompression = BI_RGB;
- biXPelsPerMeter = biYPelsPerMeter = 0;
- biClrUsed = biClrImportant = 0;
- }
-@@ -127,11 +127,14 @@
-
-
- /* error checking */
-- if ((biBitCount!=1 && biBitCount!=4 && biBitCount!=8 && biBitCount!=24) ||
-- biPlanes!=1 || biCompression>BI_RLE4) {
--
-- sprintf(buf,"Bogus BMP File! (bitCount=%d, Planes=%d, Compression=%d)",
-- biBitCount, biPlanes, biCompression);
-+ if ((biBitCount!=1 && biBitCount!=4 && biBitCount!=8 && biBitCount!=24) ||
-+ biPlanes!=1 || biCompression>BI_RLE4 ||
-+ biWidth<=0 || biHeight<=0 ||
-+ (biClrUsed && biClrUsed > (1 << biBitCount))) {
-+
-+ sprintf(buf,
-+ "Bogus BMP File! (%dx%d, Bits=%d, Colors=%d, Planes=%d, Compr=%d)",
-+ biWidth, biHeight, biBitCount, biClrUsed, biPlanes, biCompression);
-
- bmpError(bname, buf);
- goto ERROR;
-@@ -154,7 +157,7 @@
- /* skip ahead to colormap, using biSize */
- c = biSize - 40; /* 40 bytes read from biSize to biClrImportant */
- for (i=0; i<c; i++) getc(fp);
--
-+
- bPad = bfOffBits - (biSize + 14);
- }
-
-@@ -162,6 +165,11 @@
- if (biBitCount!=24) {
- int i, cmaplen;
-
-+/* this is superfluous; see identical test in "error checking" block above
-+ if (biClrUsed > (1 << biBitCount))
-+ biClrUsed = (1 << biBitCount);
-+ */
-+
- cmaplen = (biClrUsed) ? biClrUsed : 1 << biBitCount;
- for (i=0; i<cmaplen; i++) {
- pinfo->b[i] = getc(fp);
-@@ -173,7 +181,7 @@
- }
- }
-
-- if (FERROR(fp))
-+ if (FERROR(fp))
- { bmpError(bname,"EOF reached in BMP colormap"); goto ERROR; }
-
- if (DEBUG>1) {
-@@ -188,7 +196,7 @@
- if (biSize != WIN_OS2_OLD) {
- /* Waste any unused bytes between the colour map (if present)
- and the start of the actual bitmap data. */
--
-+
- while (bPad > 0) {
- (void) getc(fp);
- bPad--;
-@@ -198,11 +206,21 @@
- /* create pic8 or pic24 */
-
- if (biBitCount==24) {
-- pic24 = (byte *) calloc((size_t) biWidth * biHeight * 3, (size_t) 1);
-+ u_int npixels = biWidth * biHeight;
-+ u_int count = 3 * npixels;
-+
-+ if (biWidth == 0 || biHeight == 0 || npixels/biWidth != biHeight ||
-+ count/3 != npixels)
-+ return (bmpError(bname, "image dimensions too large"));
-+ pic24 = (byte *) calloc((size_t) count, (size_t) 1);
- if (!pic24) return (bmpError(bname, "couldn't malloc 'pic24'"));
- }
- else {
-- pic8 = (byte *) calloc((size_t) biWidth * biHeight, (size_t) 1);
-+ u_int npixels = biWidth * biHeight;
-+
-+ if (biWidth == 0 || biHeight == 0 || npixels/biWidth != biHeight)
-+ return (bmpError(bname, "image dimensions too large"));
-+ pic8 = (byte *) calloc((size_t) npixels, (size_t) 1);
- if (!pic8) return(bmpError(bname, "couldn't malloc 'pic8'"));
- }
-
-@@ -216,7 +234,7 @@
- biCompression);
- else rv = loadBMP24(fp,pic24,biWidth,biHeight);
-
-- if (rv) bmpError(bname, "File appears truncated. Winging it.\n");
-+ if (rv) bmpError(bname, "File appears truncated. Winging it.");
-
- fclose(fp);
-
-@@ -254,7 +272,7 @@
- ERROR:
- fclose(fp);
- return 0;
--}
-+}
-
-
- /*******************************************/
-@@ -277,7 +295,7 @@
- c = getc(fp);
- bitnum = 0;
- }
--
-+
- if (j<w) {
- *pp++ = (c & 0x80) ? 1 : 0;
- c <<= 1;
-@@ -287,7 +305,7 @@
- }
-
- return (FERROR(fp));
--}
-+}
-
-
-
-@@ -299,24 +317,24 @@
- {
- int i,j,c,c1,x,y,nybnum,padw,rv;
- byte *pp;
--
--
-+
-+
- rv = 0;
- c = c1 = 0;
--
-+
- if (comp == BI_RGB) { /* read uncompressed data */
- padw = ((w + 7)/8) * 8; /* 'w' padded to a multiple of 8pix (32 bits) */
--
-+
- for (i=h-1; i>=0; i--) {
- pp = pic8 + (i * w);
- if ((i&0x3f)==0) WaitCursor();
--
-+
- for (j=nybnum=0; j<padw; j++,nybnum++) {
- if ((nybnum & 1) == 0) { /* read next byte */
- c = getc(fp);
- nybnum = 0;
- }
--
-+
- if (j<w) {
- *pp++ = (c & 0xf0) >> 4;
- c <<= 4;
-@@ -325,55 +343,55 @@
- if (FERROR(fp)) break;
- }
- }
--
-+
- else if (comp == BI_RLE4) { /* read RLE4 compressed data */
-- x = y = 0;
-+ x = y = 0;
- pp = pic8 + x + (h-y-1)*w;
--
-+
- while (y<h) {
- c = getc(fp); if (c == EOF) { rv = 1; break; }
--
-+
- if (c) { /* encoded mode */
- c1 = getc(fp);
-- for (i=0; i<c; i++,x++,pp++)
-+ for (i=0; i<c; i++,x++,pp++)
- *pp = (i&1) ? (c1 & 0x0f) : ((c1>>4)&0x0f);
- }
--
-+
- else { /* c==0x00 : escape codes */
- c = getc(fp); if (c == EOF) { rv = 1; break; }
--
-+
- if (c == 0x00) { /* end of line */
- x=0; y++; pp = pic8 + x + (h-y-1)*w;
-- }
--
-+ }
-+
- else if (c == 0x01) break; /* end of pic8 */
--
-+
- else if (c == 0x02) { /* delta */
- c = getc(fp); x += c;
- c = getc(fp); y += c;
- pp = pic8 + x + (h-y-1)*w;
- }
--
-+
- else { /* absolute mode */
- for (i=0; i<c; i++, x++, pp++) {
- if ((i&1) == 0) c1 = getc(fp);
- *pp = (i&1) ? (c1 & 0x0f) : ((c1>>4)&0x0f);
- }
--
-+
- if (((c&3)==1) || ((c&3)==2)) getc(fp); /* read pad byte */
- }
- } /* escape processing */
- if (FERROR(fp)) break;
- } /* while */
- }
--
-+
- else {
- fprintf(stderr,"unknown BMP compression type 0x%0x\n", comp);
- }
--
-+
- if (FERROR(fp)) rv = 1;
- return rv;
--}
-+}
-
-
-
-@@ -385,7 +403,7 @@
- {
- int i,j,c,c1,padw,x,y,rv;
- byte *pp;
--
-+
- rv = 0;
-
- if (comp == BI_RGB) { /* read uncompressed data */
-@@ -404,7 +422,7 @@
- }
-
- else if (comp == BI_RLE8) { /* read RLE8 compressed data */
-- x = y = 0;
-+ x = y = 0;
- pp = pic8 + x + (h-y-1)*w;
-
- while (y<h) {
-@@ -420,7 +438,7 @@
-
- if (c == 0x00) { /* end of line */
- x=0; y++; pp = pic8 + x + (h-y-1)*w;
-- }
-+ }
-
- else if (c == 0x01) break; /* end of pic8 */
-
-@@ -435,21 +453,21 @@
- c1 = getc(fp);
- *pp = c1;
- }
--
-+
- if (c & 1) getc(fp); /* odd length run: read an extra pad byte */
- }
- } /* escape processing */
- if (FERROR(fp)) break;
- } /* while */
- }
--
-+
- else {
- fprintf(stderr,"unknown BMP compression type 0x%0x\n", comp);
- }
-
- if (FERROR(fp)) rv = 1;
- return rv;
--}
-+}
-
-
-
-@@ -469,7 +487,7 @@
- for (i=h-1; i>=0; i--) {
- pp = pic24 + (i * w * 3);
- if ((i&0x3f)==0) WaitCursor();
--
-+
- for (j=0; j<w; j++) {
- pp[2] = getc(fp); /* blue */
- pp[1] = getc(fp); /* green */
-@@ -484,30 +502,30 @@
- }
-
- return rv;
--}
-+}
-
-
-
- /*******************************************/
--static unsigned int getshort(fp)
-+static u_int getshort(fp)
- FILE *fp;
- {
- int c, c1;
- c = getc(fp); c1 = getc(fp);
-- return ((unsigned int) c) + (((unsigned int) c1) << 8);
-+ return ((u_int) c) + (((u_int) c1) << 8);
- }
-
-
- /*******************************************/
--static unsigned int getint(fp)
-+static u_int getint(fp)
- FILE *fp;
- {
- int c, c1, c2, c3;
- c = getc(fp); c1 = getc(fp); c2 = getc(fp); c3 = getc(fp);
-- return ((unsigned int) c) +
-- (((unsigned int) c1) << 8) +
-- (((unsigned int) c2) << 16) +
-- (((unsigned int) c3) << 24);
-+ return ((u_int) c) +
-+ (((u_int) c1) << 8) +
-+ (((u_int) c2) << 16) +
-+ (((u_int) c3) << 24);
- }
-
-
-@@ -518,7 +536,7 @@
- {
- int c, c1;
-
-- c = ((unsigned int ) i) & 0xff; c1 = (((unsigned int) i)>>8) & 0xff;
-+ c = ((u_int) i) & 0xff; c1 = (((u_int) i)>>8) & 0xff;
- putc(c, fp); putc(c1,fp);
- }
-
-@@ -529,10 +547,10 @@
- int i;
- {
- int c, c1, c2, c3;
-- c = ((unsigned int ) i) & 0xff;
-- c1 = (((unsigned int) i)>>8) & 0xff;
-- c2 = (((unsigned int) i)>>16) & 0xff;
-- c3 = (((unsigned int) i)>>24) & 0xff;
-+ c = ((u_int) i) & 0xff;
-+ c1 = (((u_int) i)>>8) & 0xff;
-+ c2 = (((u_int) i)>>16) & 0xff;
-+ c3 = (((u_int) i)>>24) & 0xff;
-
- putc(c, fp); putc(c1,fp); putc(c2,fp); putc(c3,fp);
- }
-@@ -562,11 +580,11 @@
- * 8-bit image
- * note that PIC24 and F_BWDITHER/F_REDUCED won't happen
- *
-- * if colorstyle == F_BWDITHER, it writes a 1-bit image
-+ * if colorstyle == F_BWDITHER, it writes a 1-bit image
- *
- */
-
-- int i,j, nc, nbits, bperlin, cmaplen;
-+ int i,j, nc, nbits, bperlin, cmaplen, npixels;
- byte *graypic, *sp, *dp, graymap[256];
-
- nc = nbits = cmaplen = 0;
-@@ -576,10 +594,16 @@
- /* generate a faked 8-bit per pixel image with a grayscale cmap,
- so that it can just fall through existing 8-bit code */
-
-- graypic = (byte *) malloc((size_t) w*h);
-+ npixels = w * h;
-+ if (w <= 0 || h <= 0 || npixels/w != h) {
-+ SetISTR(ISTR_WARNING, "image dimensions too large");
-+ return -1;
-+ }
-+
-+ graypic = (byte *) malloc((size_t) npixels);
- if (!graypic) FatalError("unable to malloc in WriteBMP()");
-
-- for (i=0,sp=pic824,dp=graypic; i<w*h; i++,sp+=3, dp++) {
-+ for (i=0,sp=pic824,dp=graypic; i<npixels; i++,sp+=3, dp++) {
- *dp = MONO(sp[0],sp[1],sp[2]);
- }
-
-@@ -611,7 +635,7 @@
- for (i=0; i<numcols; i++) {
- /* see if color #i is a duplicate */
- for (j=0; j<i; j++) {
-- if (rmap[i] == rmap[j] && gmap[i] == gmap[j] &&
-+ if (rmap[i] == rmap[j] && gmap[i] == gmap[j] &&
- bmap[i] == bmap[j]) break;
- }
-
-@@ -689,13 +713,13 @@
- #else
- if (!FERROR(fp)) return -1;
- #endif
--
-+
- return 0;
- }
-
-
--
--
-+
-+
- /*******************************************/
- static void writeBMP1(fp, pic8, w, h)
- FILE *fp;
-@@ -708,7 +732,7 @@
- padw = ((w + 31)/32) * 32; /* 'w', padded to be a multiple of 32 */
-
- for (i=h-1; i>=0; i--) {
-- pp = pic8 + (i * w);
-+ pp = pic8 + (i * w);
- if ((i&0x3f)==0) WaitCursor();
-
- for (j=bitnum=c=0; j<=padw; j++,bitnum++) {
-@@ -716,7 +740,7 @@
- putc(c,fp);
- bitnum = c = 0;
- }
--
-+
- c <<= 1;
-
- if (j<w) {
-@@ -724,7 +748,7 @@
- }
- }
- }
--}
-+}
-
-
-
-@@ -758,7 +782,7 @@
- }
- }
- }
--}
-+}
-
-
-
-@@ -768,7 +792,7 @@
- byte *pic8;
- int w,h;
- {
-- int i,j,c,padw;
-+ int i,j,padw;
- byte *pp;
-
- padw = ((w + 3)/4) * 4; /* 'w' padded to a multiple of 4pix (32 bits) */
-@@ -780,7 +804,7 @@
- for (j=0; j<w; j++) putc(pc2nc[*pp++], fp);
- for ( ; j<padw; j++) putc(0, fp);
- }
--}
-+}
-
-
- /*******************************************/
-@@ -789,7 +813,7 @@
- byte *pic24;
- int w,h;
- {
-- int i,j,c,padb;
-+ int i,j,padb;
- byte *pp;
-
- padb = (4 - ((w*3) % 4)) & 0x03; /* # of pad bytes to write at EOscanline */
-@@ -807,7 +831,7 @@
-
- for (j=0; j<padb; j++) putc(0, fp);
- }
--}
-+}
-
-
-
-diff -ruN xv-3.10a/xvbrowse.c xv-3.10a-bugfixes/xvbrowse.c
---- xv-3.10a/xvbrowse.c 1995-01-19 09:49:17.000000000 -0800
-+++ xv-3.10a-bugfixes/xvbrowse.c 2004-05-16 18:01:25.000000000 -0700
-@@ -1,6 +1,6 @@
- /*
- * xvbrowse.c - visual schnauzer routines
-- *
-+ *
- * includes:
- * void CreateBrowse(char *, char *, char *, char *, char *);
- * void OpenBrowse();
-@@ -34,7 +34,7 @@
- #include "bits/br_sock"
- #include "bits/br_fifo"
- #include "bits/br_error"
--#include "bits/br_unknown"
-+/* #include "bits/br_unknown" commented out (near line 492) */
- #include "bits/br_cmpres"
-
- #include "bits/br_gif"
-@@ -97,7 +97,7 @@
- #define BF_MAX 28 /* # of built-in icons */
-
- #define ISLOADABLE(ftyp) (ftyp!=BF_DIR && ftyp!=BF_CHR && ftyp!=BF_BLK && \
-- ftyp!=BF_SOCK && ftyp!=BF_FIFO)
-+ ftyp!=BF_SOCK && ftyp!=BF_FIFO)
-
- #define DEF_BROWWIDE 615 /* default size of window */
- #define DEF_BROWHIGH 356
-@@ -150,12 +150,12 @@
- static char *hideHstr = "Hide 'hidden' files";
-
- static char *cmdMList[] = { "Change directory...\t^c",
-- "Delete file(s)\t^d",
-- "New directory...\t^n",
-- "Rename file...\t^r",
-+ "Delete file(s)\t^d",
-+ "New directory...\t^n",
-+ "Rename file...\t^r",
- "Rescan directory\t^s",
-- "Update icons\t^u",
-- "Open new window\t^w",
-+ "Update icons\t^u",
-+ "Open new window\t^w",
- "Generate icon(s)\t^g",
- "Select all files\t^a",
- "Text view\t^t",
-@@ -260,7 +260,7 @@
- static void genSelectedIcons PARM((BROWINFO *));
- static void genIcon PARM((BROWINFO *, BFIL *));
- static void loadThumbFile PARM((BROWINFO *, BFIL *));
--static void writeThumbFile PARM((BROWINFO *, BFIL *, byte *, int,
-+static void writeThumbFile PARM((BROWINFO *, BFIL *, byte *, int,
- int, char *));
-
- static void makeThumbDir PARM((BROWINFO *));
-@@ -284,7 +284,7 @@
- static void rm_dir PARM((BROWINFO *, char *));
- static void rm_dir1 PARM((BROWINFO *));
-
--static void dragFiles PARM((BROWINFO *, BROWINFO *, char *, char *,
-+static void dragFiles PARM((BROWINFO *, BROWINFO *, char *, char *,
- char *, char **, int, int));
- static int moveFile PARM((char *, char *));
- static int copyFile PARM((char *, char *));
-@@ -369,8 +369,8 @@
- if (gset & YNegative) gy1 = gy - i * 20;
- else gy1 = gy + i * 20;
-
-- if ((gset & WidthValue) && (gset & HeightValue))
-- sprintf(wgeom, "%dx%d%s%d%s%d", gw, gh,
-+ if ((gset & WidthValue) && (gset & HeightValue))
-+ sprintf(wgeom, "%dx%d%s%d%s%d", gw, gh,
- (gset & XNegative) ? "-" : "+", abs(gx1),
- (gset & YNegative) ? "-" : "+", abs(gy1));
- else
-@@ -402,11 +402,11 @@
-
- /* note: everything is sized and positioned in ResizeBrowse() */
-
-- br->iconW = XCreateSimpleWindow(theDisp, br->win, 1,1, 100,100,
-+ br->iconW = XCreateSimpleWindow(theDisp, br->win, 1,1, 100,100,
- 1,browfg,browbg);
- if (!br->iconW) FatalError("can't create schnauzer icon window!");
-
-- SCCreate(&(br->scrl), br->win, 0,0, 1,100, 0,0,0,0,
-+ SCCreate(&(br->scrl), br->win, 0,0, 1,100, 0,0,0,0,
- browfg, browbg, browhi, browlo, drawIconWin);
-
-
-@@ -486,7 +486,7 @@
- bfIcons[BF_SOCK]=MakePix1(br->win,br_sock_bits,br_sock_width,br_sock_height);
- bfIcons[BF_FIFO]=MakePix1(br->win,br_fifo_bits,br_fifo_width,br_fifo_height);
-
-- bfIcons[BF_ERROR] = MakePix1(br->win, br_error_bits,
-+ bfIcons[BF_ERROR] = MakePix1(br->win, br_error_bits,
- br_error_width, br_error_height);
-
- /* bfIcons[BF_UNKNOWN] = MakePix1(br->win, br_unknown_bits,
-@@ -501,9 +501,9 @@
-
- bfIcons[BF_SUNRAS] = MakePix1(br->win, br_sunras_bits,
- br_sunras_width, br_sunras_height);
-- bfIcons[BF_BMP] = MakePix1(br->win,br_bmp_bits,
-+ bfIcons[BF_BMP] = MakePix1(br->win,br_bmp_bits,
- br_bmp_width, br_bmp_height);
-- bfIcons[BF_UTAHRLE] = MakePix1(br->win, br_utahrle_bits,
-+ bfIcons[BF_UTAHRLE] = MakePix1(br->win, br_utahrle_bits,
- br_utahrle_width, br_utahrle_height);
-
- bfIcons[BF_IRIS]=MakePix1(br->win,br_iris_bits,br_iris_width,br_iris_height);
-@@ -528,13 +528,13 @@
-
- /* check that they all got built */
- for (i=0; i<BF_MAX && bfIcons[i]; i++);
-- if (i<BF_MAX)
-+ if (i<BF_MAX)
- FatalError("unable to create all built-in icons for schnauzer");
-
- for (i=0; i<MAXBRWIN; i++) {
- resizeBrowse(&binfo[i], DEF_BROWWIDE, DEF_BROWHIGH);
-
-- XSelectInput(theDisp, binfo[i].win, ExposureMask | ButtonPressMask |
-+ XSelectInput(theDisp, binfo[i].win, ExposureMask | ButtonPressMask |
- KeyPressMask | StructureNotifyMask);
- }
-
-@@ -557,7 +557,7 @@
- movecurs = XCreatePixmapCursor(theDisp,mcpix,fcmpix,&cursfg,&cursbg,13,13);
- copycurs = XCreatePixmapCursor(theDisp,ccpix,fcmpix,&cursfg,&cursbg,13,13);
- delcurs = XCreatePixmapCursor(theDisp,dcpix,fcmpix,&cursbg,&cursfg,13,13);
-- if (!movecurs || !copycurs || !delcurs)
-+ if (!movecurs || !copycurs || !delcurs)
- FatalError("unable to create schnauzer cursors...");
- }
- else FatalError("unable to create schnauzer cursors...");
-@@ -566,7 +566,7 @@
- XFreePixmap(theDisp, ccpix);
- XFreePixmap(theDisp, dcpix);
- XFreePixmap(theDisp, fcmpix);
--
-+
-
- hasBeenSized = 1; /* we can now start looking at browse events */
- }
-@@ -586,11 +586,11 @@
- if (!br->vis) break;
- }
- if (i==MAXBRWIN) return; /* full up: shouldn't happen */
--
-+
- anyBrowUp = 1;
- XMapRaised(theDisp, br->win);
- br->vis = 1;
--
-+
- freeBfList(br);
-
- /* see if some browser is pointing to the same path as CWD. If so,
-@@ -645,7 +645,7 @@
- /* free all info for this browse window */
- freeBfList(br);
- sprintf(br->path, BOGUSPATH);
--
-+
- /* turn on 'open new window' command doodads */
- windowMB.dim[WMB_BROWSE] = 0;
- for (i=0; i<MAXBRWIN; i++) {
-@@ -739,8 +739,7 @@
- /* checks event to see if it's a browse-window related thing. If it
- is, it eats the event and returns '1', otherwise '0'. */
-
-- int i, rv;
-- char buf[1024];
-+ int rv;
-
- rv = 1;
-
-@@ -788,7 +787,7 @@
- fprintf(stderr,"grouped %d expose events into %d,%d %dx%d rect\n",
- count, rect.x, rect.y, rect.width, rect.height);
- }
--
-+
- if (e->window == br->win) drawBrow(br);
-
- else if (e->window == br->iconW)
-@@ -811,7 +810,7 @@
- if (e->window == br->win) clickBrow(br,x,y);
- else if (e->window == br->scrl.win) SCTrack(&(br->scrl),x,y);
- else if (e->window == br->iconW) {
-- i = clickIconWin(br, x,y,(unsigned long) e->time,
-+ i = clickIconWin(br, x,y,(unsigned long) e->time,
- (e->state&ControlMask) || (e->state&ShiftMask));
-
- }
-@@ -837,7 +836,7 @@
-
- if (br->wide != e->width || br->high != e->height) {
- if (DEBUG) fprintf(stderr,"Forcing a redraw! (from configure)\n");
-- XClearArea(theDisp, br->win, 0, 0,
-+ XClearArea(theDisp, br->win, 0, 0,
- (u_int) e->width, (u_int) e->height, True);
- resizeBrowse(br, e->width, e->height);
- }
-@@ -877,7 +876,7 @@
- int w,h;
- {
- XSizeHints hints;
-- int i, minv, maxv, curv, page, maxh;
-+ int i, maxv, page, maxh;
-
- if (br->wide == w && br->high == h) return; /* no change in size */
-
-@@ -895,7 +894,7 @@
- br->iwHigh = (maxh / ISPACE_HIGH) * ISPACE_HIGH;
- if (br->iwHigh < ISPACE_HIGH) br->iwHigh = ISPACE_HIGH;
-
-- XMoveResizeWindow(theDisp, br->iconW, LRMARGINS, TOPMARGIN,
-+ XMoveResizeWindow(theDisp, br->iconW, LRMARGINS, TOPMARGIN,
- (u_int) br->iwWide, (u_int) br->iwHigh);
-
-
-@@ -907,11 +906,11 @@
- for (i=0; i<BR_NBUTTS; i++) {
- /* 'close' always goes on right-most edge */
-
-- if (i<br->numbutshown)
-+ if (i<br->numbutshown)
- br->but[i].x = br->wide - (1+br->numbutshown-i) * (BUTTW+5);
- else if (i==BR_CLOSE)
- br->but[i].x = br->wide - (BUTTW+5);
-- else
-+ else
- br->but[i].x = br->wide + 10; /* offscreen */
-
- br->but[i].y = br->high - BUTTH - 5;
-@@ -928,11 +927,11 @@
- br->numWide = br->iwWide / ISPACE_WIDE;
- br->visHigh = br->iwHigh / ISPACE_HIGH;
-
-- /* compute minv,maxv,curv,page values based on new current size */
-+ /* compute maxv,page values based on new current size */
- computeScrlVals(br, &maxv, &page);
- if (br->scrl.val>maxv) br->scrl.val = maxv;
--
-- SCChange(&br->scrl, LRMARGINS+br->iwWide+1, TOPMARGIN,
-+
-+ SCChange(&br->scrl, LRMARGINS+br->iwWide+1, TOPMARGIN,
- 1, br->iwHigh, 0, maxv, br->scrl.val, page);
- }
-
-@@ -945,7 +944,7 @@
- /* put string in *all* browse windows */
- int i;
-
-- for (i=0; i<MAXBRWIN; i++)
-+ for (i=0; i<MAXBRWIN; i++)
- setBrowStr(&binfo[i], str);
- }
-
-@@ -956,6 +955,7 @@
- char *str;
- {
- strncpy(br->dispstr, str, (size_t) 256);
-+ br->dispstr[255] = '\0';
- drawBrowStr(br);
- XFlush(theDisp);
- }
-@@ -992,7 +992,7 @@
-
- char tmp[64];
-
-- sprintf(tmp, "Re-coloring icons: processed %d out of %d...",
-+ sprintf(tmp, "Re-coloring icons: processed %d out of %d...",
- i+1, br->bfLen);
- setBrowStr(br, tmp);
- }
-@@ -1011,14 +1011,14 @@
- {
- /* called when file 'name' has been deleted. If any of the browsers
- were showing the directory that the file was in, does a rescan() */
--
-+
- int i;
- char buf[MAXPATHLEN + 2], *tmp;
-
- strcpy(buf, name);
- tmp = BaseName(buf);
- *tmp = '\0'; /* truncate after last '/' */
--
-+
- for (i=0; i<MAXBRWIN; i++) {
- if (strcmp(binfo[i].path, buf)==0) rescanDir(&binfo[i]);
- }
-@@ -1070,9 +1070,9 @@
- case BR_GENICON: genSelectedIcons(br); break;
-
- case BR_SELALL: {
-- int i; char buf[128];
-+ int i;
-
-- for (i=0; i<br->bfLen; i++)
-+ for (i=0; i<br->bfLen; i++)
- br->bfList[i].lit = 1;
- br->numlit = br->bfLen;
-
-@@ -1087,13 +1087,13 @@
- break;
-
- case BR_TEXTVIEW: doTextCmd(br); break;
--
-+
- case BR_QUIT: Quit(0); break;
-
- case BR_CLOSE: closeBrowse(br); break;
-
- case BR_HIDDEN: br->showhidden = !br->showhidden;
-- br->cmdMB.list[cmd] = (br->showhidden)
-+ br->cmdMB.list[cmd] = (br->showhidden)
- ? hideHstr : showHstr;
- rescanDir(br);
- break;
-@@ -1137,16 +1137,16 @@
-
- if (br->bfLen != 1) sprintf(foo, "%d files", br->bfLen);
- else strcpy(foo, "1 file");
--
-+
- XSetForeground(theDisp, theGC, browbg);
-- XFillRectangle(theDisp,br->win, theGC, x+1,y+1,
-+ XFillRectangle(theDisp,br->win, theGC, x+1,y+1,
- (u_int) StringWidth(foo)+6, (u_int) br->dirMB.h-1);
-
- XSetForeground(theDisp,theGC,browfg);
- XDrawRectangle(theDisp,br->win, theGC, x,y,
- (u_int) StringWidth(foo)+7, (u_int) br->dirMB.h);
-
-- Draw3dRect(br->win, x+1, y+1, (u_int) StringWidth(foo)+5,
-+ Draw3dRect(br->win, x+1, y+1, (u_int) StringWidth(foo)+5,
- (u_int) br->dirMB.h-2, R3D_IN, 2, browhi, browlo, browbg);
-
- XSetForeground(theDisp,theGC,browfg);
-@@ -1163,7 +1163,7 @@
-
- if (nf != 1) sprintf(foo,"%d files",nf);
- else strcpy(foo,"1 file");
--
-+
- XClearArea(theDisp,br->win, 30, br->dirMB.y,
- (u_int) StringWidth(foo)+8, (u_int) br->dirMB.h+1, False);
- }
-@@ -1185,13 +1185,13 @@
-
- XSetForeground(theDisp,theGC,browfg);
- XDrawRectangle(theDisp,br->win, theGC, x,y, (u_int) w, (u_int) h);
-- Draw3dRect(br->win, x+1, y+1, (u_int) w-2, (u_int) h-2,
-+ Draw3dRect(br->win, x+1, y+1, (u_int) w-2, (u_int) h-2,
- R3D_IN, 2, browhi, browlo, browbg);
-
- XSetForeground(theDisp,theGC,browfg);
- XSetBackground(theDisp,theGC,browbg);
-- XCopyPlane(theDisp, trashPix, br->win, theGC,
-- 0,0,(u_int) br_trash_width, (u_int) br_trash_height,
-+ XCopyPlane(theDisp, trashPix, br->win, theGC,
-+ 0,0,(u_int) br_trash_width, (u_int) br_trash_height,
- x+(w-br_trash_width)/2, y+(h-br_trash_height)/2,
- 1L);
- }
-@@ -1222,7 +1222,7 @@
- y = br->high - (BUTTH+10) - (CHIGH + 6);
-
- XSetForeground(theDisp, theGC, browbg);
-- XFillRectangle(theDisp, br->win, theGC, 0, y+3,
-+ XFillRectangle(theDisp, br->win, theGC, 0, y+3,
- (u_int) br->wide, (u_int) CHIGH+1);
-
- XSetForeground(theDisp, theGC, browfg);
-@@ -1277,7 +1277,7 @@
- {
- /* sets the '# files selected' string in the brow window appropriately */
-
-- /* criteria:
-+ /* criteria:
- * if no files are lit, display ''
- * if 1 file is lit, pretend it was selected, fall through...
- * if 1 or more files are lit
-@@ -1316,7 +1316,7 @@
-
- else if (bf->ftype != BF_DIR) { /* no info. display file size */
- struct stat st;
--
-+
- sprintf(buf, "%s%s", br->path, bf->name); /* build filename */
- if (stat(buf, &st) == 0) {
- sprintf(buf, "%s: %ld bytes", bf->name, st.st_size);
-@@ -1360,8 +1360,8 @@
- if (j>=0 && j < br->bfLen) drawIcon(br,j);
- }
- }
--
-- Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
-+
-+ Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
- R3D_IN, 2, browhi, browlo, browbg);
- }
-
-@@ -1371,10 +1371,8 @@
- int delta;
- SCRL *sptr;
- {
-- int i,indx, x,y, ix,iy, num;
-- BFIL *bf;
-+ int i,indx, num;
- BROWINFO *br;
-- char tmpstr[64], *nstr;
-
- /* figure out BROWINFO pointer from SCRL pointer */
- for (i=0; i<MAXBRWIN; i++) {
-@@ -1385,7 +1383,7 @@
- br = &binfo[i];
-
- /* make sure we've been sized. Necessary, as creating/modifying the
-- scrollbar calls this routine directly, rather than through
-+ scrollbar calls this routine directly, rather than through
- BrowseCheckEvent() */
-
- if (!hasBeenSized) return;
-@@ -1413,12 +1411,12 @@
- if (y+h > br->iwHigh-4) h = (br->iwHigh-4)-y + 2;
- }
- XFillRectangle(theDisp, br->iconW, theGC, x, y, ISPACE_WIDE, (u_int) h);
--
-+
- if (indx>=0 && indx < br->bfLen) drawIcon(br, indx);
- }
- }
-
-- Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
-+ Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
- R3D_IN, 2, browhi, browlo, browbg);
- }
-
-@@ -1431,7 +1429,10 @@
- {
- int i,x,y,ix,iy,sw,sh,sx,sy;
- BFIL *bf;
-- char tmpstr[64], fixedname[64], *nstr, *str;
-+ char tmpstr[64], *nstr, *str;
-+#ifdef VMS
-+ char fixedname[64];
-+#endif
-
-
- if (num<0 || num >= br->bfLen) return;
-@@ -1463,12 +1464,12 @@
- }
-
- else if (bf->ftype == BF_HAVEIMG && bf->ximage) {
-- XPutImage(theDisp, br->iconW, theGC, bf->ximage, 0,0, ix,iy,
-+ XPutImage(theDisp, br->iconW, theGC, bf->ximage, 0,0, ix,iy,
- (u_int) bf->w, (u_int) bf->h);
- }
-
- else { /* shouldn't happen */
-- XDrawRectangle(theDisp, br->iconW, theGC, ix, iy,
-+ XDrawRectangle(theDisp, br->iconW, theGC, ix, iy,
- (u_int) bf->w, (u_int) bf->h);
- }
-
-@@ -1488,24 +1489,25 @@
-
- /* decide if the title is too big, and shorten if neccesary */
- if (StringWidth(str) > ISPACE_WIDE-6) {
-- int dotpos;
-+ int dotpos;
- strncpy(tmpstr, str, (size_t) 56);
-+ tmpstr[56] = '\0'; /* MR: otherwise it dies on long file names */
- dotpos = strlen(tmpstr);
- strcat(tmpstr,"...");
-
- while(StringWidth(tmpstr) > ISPACE_WIDE-6 && dotpos>0) {
- /* change last non-dot char in tmpstr to a dot, and lop off
- last dot */
--
-+
- dotpos--;
- tmpstr[dotpos] = '.';
- tmpstr[dotpos+3] = '\0';
- }
--
-+
- nstr = tmpstr;
- }
- else nstr = str;
--
-+
-
- /* draw the title */
- sw = StringWidth(nstr);
-@@ -1516,12 +1518,12 @@
-
- XSetForeground(theDisp, theGC,
- (bf->lit && bf->lit!=ICON_ONLY) ? browfg : browbg);
-- XFillRectangle(theDisp, br->iconW, theGC, sx, sy,
-+ XFillRectangle(theDisp, br->iconW, theGC, sx, sy,
- (u_int) sw + 4, (u_int) sh + 2);
-
- XSetForeground(theDisp, theGC,
- (bf->lit && bf->lit!=ICON_ONLY) ? browbg : browfg);
-- CenterString(br->iconW, x + ISPACE_WIDE/2,
-+ CenterString(br->iconW, x + ISPACE_WIDE/2,
- y + ISPACE_TOP + ISIZE_HIGH + ISPACE_TTOP + CHIGH/2, nstr);
- }
-
-@@ -1535,7 +1537,6 @@
-
- int i,x,y,ix,iy,w,h;
- BFIL *bf;
-- char tmpstr[64], *nstr;
-
- if (num<0 || num >= br->bfLen) return;
- bf = &(br->bfList[num]);
-@@ -1579,12 +1580,12 @@
- y = (i / br->numWide) * ISPACE_HIGH;
-
- XSetForeground(theDisp, theGC, browbg);
-- XFillRectangle(theDisp, br->iconW, theGC,
-+ XFillRectangle(theDisp, br->iconW, theGC,
- x, y + ISPACE_TOP + ISIZE_HIGH + ISPACE_TTOP - 1,
- (u_int) ISPACE_WIDE, (u_int) LINEHIGH);
-
-- if (ctrlColor)
-- Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
-+ if (ctrlColor)
-+ Draw3dRect(br->iconW, 0, 0, (u_int) br->iwWide-1, (u_int) br->iwHigh-1,
- R3D_IN, 2, browhi, browlo, browbg);
- }
-
-@@ -1658,7 +1659,7 @@
- /* returns '-1' normally, returns an index into bfList[] if the user
- double-clicks an icon */
-
-- int i,j, base, num, x,y,ix,iy, rv, sel, cpymode, dodel;
-+ int i,j, rv, sel, cpymode, dodel;
- BROWINFO *destBr;
- BFIL *bf;
- char buf[256], *destFolderName;
-@@ -1681,7 +1682,7 @@
- }
-
- changedNumLit(br, sel, 0);
-- br->lastIconClicked = -1;
-+ br->lastIconClicked = -1;
- }
-
-
-@@ -1725,10 +1726,9 @@
-
- changedNumLit(br, sel, 0);
-
--
-+
- /* see if we've double-clicked something */
- if (sel==br->lastIconClicked && mtime-br->lastClickTime < DBLCLICKTIME) {
-- int k;
- br->lastIconClicked = -1; /* YES */
-
- doubleClick(br, sel);
-@@ -1759,10 +1759,10 @@
- first = 1; hasrect = 0; cpymode = 0;
- origsval = br->scrl.val;
-
-- if ( (sel>=0 && !multi) || sel==-1) {
-+ if ( (sel>=0 && !multi) || sel==-1) {
- /* clicked on an icon, or clicked on nothing... */
-
-- while (!XQueryPointer(theDisp, rootW, &rW, &cW, &rootx, &rooty,
-+ while (!XQueryPointer(theDisp, rootW, &rW, &cW, &rootx, &rooty,
- &x,&y,&mask));
- if (mask & Button1Mask) { /* still held down */
-
-@@ -1773,7 +1773,7 @@
- else curs = movecurs;
-
- /* change cursors */
-- for (i=0; i<MAXBRWIN; i++)
-+ for (i=0; i<MAXBRWIN; i++)
- XDefineCursor(theDisp,binfo[i].iconW, curs);
-
- samepos = oldx = oldy = oldbrnum = 0;
-@@ -1785,43 +1785,43 @@
-
- if (sel>=0) { /* see if changed copy/move status (and cursor) */
- int cmod;
--
-+
- cmod = (mask&ControlMask || mask&ShiftMask) ? 1 : 0;
-
- if (cmod != cpymode && !dodel) {
- curs = (cmod) ? copycurs : movecurs;
-- for (i=0; i<MAXBRWIN; i++)
-+ for (i=0; i<MAXBRWIN; i++)
- XDefineCursor(theDisp,binfo[i].iconW, curs);
- }
- cpymode = cmod;
--
--
-+
-+
- /* see if cursor is in any of the trash can areas */
- for (i=0; i<MAXBRWIN; i++) {
- if (binfo[i].vis) {
-- XTranslateCoordinates(theDisp, rW, binfo[i].win, rootx,rooty,
-+ XTranslateCoordinates(theDisp, rW, binfo[i].win, rootx,rooty,
- &bwx,&bwy, &cW);
- if (inTrash(&binfo[i], bwx, bwy)) break;
- }
- }
--
-+
- if (dodel && i==MAXBRWIN) { /* moved out */
- dodel = 0;
- curs = (cpymode) ? copycurs : movecurs;
-- for (i=0; i<MAXBRWIN; i++)
-+ for (i=0; i<MAXBRWIN; i++)
- XDefineCursor(theDisp,binfo[i].iconW, curs);
- }
--
-+
- else if (!dodel && i<MAXBRWIN) { /* moved in */
- dodel = 1;
-- for (i=0; i<MAXBRWIN; i++)
-+ for (i=0; i<MAXBRWIN; i++)
- XDefineCursor(theDisp,binfo[i].iconW, delcurs);
- }
- }
-
-
-
-- XTranslateCoordinates(theDisp, rW, br->iconW, rootx,rooty,
-+ XTranslateCoordinates(theDisp, rW, br->iconW, rootx,rooty,
- &iwx,&iwy, &cW);
-
- /* find deepest child that the mouse is in */
-@@ -1837,12 +1837,12 @@
- /* if it's in any icon window, and we're doing icon-dragging
- OR we're doing a rectangle-drag */
-
-- if (i<MAXBRWIN || sel == -1) {
-+ if (i<MAXBRWIN || sel == -1) {
- if (i<MAXBRWIN) destBr = &binfo[i];
- if (sel == -1) destBr = br;
-
-- /* AUTO-SCROLLING: scroll any icon window if we're doing an
-- icon-drag. Only scroll the original window if we're doing
-+ /* AUTO-SCROLLING: scroll any icon window if we're doing an
-+ icon-drag. Only scroll the original window if we're doing
- a rect drag */
-
- if (sel>=0 && (oldx!=x || oldy!=y || oldbrnum!=i)) { /* moved */
-@@ -1873,7 +1873,7 @@
- }
- }
-
--
-+
- /* if we clicked on an icon (originally), and therefore are
- showing the 'move files' cursor, see if the cursor is within
- the icon region of any folders. If so, light up *the icon
-@@ -1904,9 +1904,9 @@
-
- /* Dragging a selection rectangle. */
-
-- else {
-+ else {
- static int prevx, prevy, prevcnt;
-- int origy, top, left, wide, high, cnt;
-+ int origy, cnt;
-
- if (first) { prevx = mx; prevy = my; first=0; prevcnt = -1; }
-
-@@ -1922,18 +1922,18 @@
-
- rx = (mx < x) ? mx : x;
- ry = (origy < y) ? origy : y;
-- rw = abs(mx - x);
-+ rw = abs(mx - x);
- rh = abs(origy - y);
-
- /* figure out which icons need to be lit/unlit. Only
- redraw those that have changed state */
--
-+
- for (i=0,cnt=0, bf=br->bfList; i<br->bfLen; i++,bf++) {
-- int ix, iy, isin, light;
-+ int ix, iy, isin;
-
-- ix = ((i%br->numWide) * ISPACE_WIDE)
-+ ix = ((i%br->numWide) * ISPACE_WIDE)
- + ISPACE_WIDE/2 - bf->w/2;
-- iy = ((i/br->numWide) * ISPACE_HIGH)
-+ iy = ((i/br->numWide) * ISPACE_HIGH)
- + ISPACE_TOP + ISIZE_HIGH - bf->h;
-
- iy = iy - br->scrl.val * ISPACE_HIGH;
-@@ -1994,7 +1994,7 @@
- }
-
- /* RELEASED BUTTON: back to normal arrow cursor */
-- for (i=0; i<MAXBRWIN; i++)
-+ for (i=0; i<MAXBRWIN; i++)
- XDefineCursor(theDisp, binfo[i].iconW, None);
-
- if (sel == -1) { /* was dragging rectangle */
-@@ -2007,7 +2007,7 @@
- if (bf->lit == TEMP_LIT || bf->lit == TEMP_LIT1) {
- bf->lit = 1; drawIcon(br, i);
- }
--
-+
- if (bf->lit) br->numlit++;
- }
-
-@@ -2020,7 +2020,6 @@
-
- /* if doing a copy or a move, do the thing to the files */
- if (sel >= 0) {
-- char *destFolder;
-
- if (DEBUG) {
- fprintf(stderr,"---------------\n");
-@@ -2029,7 +2028,7 @@
- fprintf(stderr,"Dest Folder: '%s'\n", destFolderName);
- }
-
--
-+
- if (!br->numlit) {
- if (DEBUG) fprintf(stderr, "no selected files. Nothing to do!\n");
- }
-@@ -2042,7 +2041,7 @@
- if (DEBUG) fprintf(stderr, "no destination. Nothing to do!\n");
- }
-
-- else if (strcmp(destFolderName,".") == 0 &&
-+ else if (strcmp(destFolderName,".") == 0 &&
- strcmp(br->path, destBr->path) == 0) {
- if (DEBUG) fprintf(stderr,"source == destination. Nothing to do!\n");
- }
-@@ -2067,12 +2066,12 @@
- }
- }
- if (DEBUG) fprintf(stderr,"\n\n");
--
-+
- #ifdef VMS
- /*
-- * For VMS, our directory file names are identifed by the
-- * special filename extension, ".DIR". Unfortunately, this
-- * needs to be stripped before we ever actually use the name
-+ * For VMS, our directory file names are identifed by the
-+ * special filename extension, ".DIR". Unfortunately, this
-+ * needs to be stripped before we ever actually use the name
- * in a copy command... :( RLD 26-FEB-1993
- */
-
-@@ -2080,7 +2079,7 @@
- #endif
-
-
-- dragFiles(br, destBr, br->path, destBr->path, destFolderName, nlist,
-+ dragFiles(br, destBr, br->path, destBr->path, destFolderName, nlist,
- ncnt, cpymode);
-
- /* free namelist */
-@@ -2155,7 +2154,7 @@
- }
-
-
--
-+
- /* double-clicked something. We should do something about it */
- if (br->bfList[sel].ftype == BF_DIR) { /* try to cd */
- #ifndef VMS
-@@ -2193,7 +2192,7 @@
- *event_retP = THISNEXT;
- }
- else { *event_retP = LOADPIC; SetDirFName(buf); }
--
-+
- *event_doneP = 1; /* make MainLoop load image */
- }
- }
-@@ -2259,7 +2258,7 @@
- stlen = XLookupString(kevt, buf, 128, &ks, (XComposeStatus *) NULL);
- shift = kevt->state & ShiftMask;
- ck = CursorKey(ks, shift, 1);
-- dealt = 1;
-+ dealt = 1;
-
- RemapKeyCheck(ks, buf, &stlen);
-
-@@ -2306,7 +2305,7 @@
- char fname[MAXPATHLEN];
-
- /* if 'shift-space' find last lit icon, select the next one after it,
-- and load it. If 'space' do the same, but lose prior lit. These
-+ and load it. If 'space' do the same, but lose prior lit. These
- are the only cases where br->numlit >1 allowed */
-
- if (br->numlit>1 && buf[0] != ' ') return;
-@@ -2314,7 +2313,7 @@
- if (buf[0]==' ' && (br->numlit>1 || (br->numlit==1 && shift))) {
- for (i=br->bfLen-1; i>=0 && !br->bfList[i].lit; i--); /* i=last lit */
- if (i==br->bfLen-1) return;
--
-+
- i++;
- if (!shift) {
- for (j=0; j<br->bfLen; j++) {
-@@ -2364,7 +2363,7 @@
- for (i=0; i<br->bfLen && !br->bfList[i].lit; i++); /* find lit one */
- sprintf(fname, "%s%s", br->path, br->bfList[i].name);
- viewsel = !(strcmp(fname, fullfname));
--
-+
- if (viewsel) {
- if (buf[0]==' ') browKey(br, CK_RIGHT);
- else browKey(br, CK_LEFT);
-@@ -2372,7 +2371,7 @@
-
- if (!br->bfList[i].lit || !viewsel) { /* changed selection */
- for (i=0; i<br->bfLen && !br->bfList[i].lit; i++); /* find it */
-- if (br->bfList[i].ftype != BF_DIR)
-+ if (br->bfList[i].ftype != BF_DIR)
- doubleClick(br, -1);
- }
- }
-@@ -2410,10 +2409,10 @@
- /* handle up/down/left/right keys
- *
- * if precisely *one* item is lit, than the up/down/left/right keys move
-- * the selection.
-+ * the selection.
- *
- * if NO items are lit, then left/right select the first/last fully-displayed
-- * icon, and up/down simply scroll window up or down, without selecting
-+ * icon, and up/down simply scroll window up or down, without selecting
- * anything
- *
- * if more than one item is lit, up/down/left/right keys BEEP
-@@ -2443,8 +2442,8 @@
- if (key == CK_DOWN) j = i + br->numWide;
- if (key == CK_LEFT) j = i - 1;
- if (key == CK_RIGHT) j = i + 1;
--
-- if (j >= 0 && j < br->bfLen) {
-+
-+ if (j >= 0 && j < br->bfLen) {
- br->bfList[i].lit = 0;
- br->bfList[j].lit = 1;
- makeIconVisible(br,j);
-@@ -2455,7 +2454,7 @@
- }
- }
-
--
-+
- if (br->numlit == 0) { /* no current selection */
- if (key == CK_UP) SCSetVal(&br->scrl, br->scrl.val - 1);
- if (key == CK_DOWN) SCSetVal(&br->scrl, br->scrl.val + 1);
-@@ -2541,13 +2540,13 @@
- * The VMS chdir always needs 2 components (device and directory),
- * so convert "/device" to "/device/000000" and convert
- * "/" to "/XV_Root_Device/000000" (XV_RootDevice will need to be
-- * a special concealed device setup to provide list of available
-+ * a special concealed device setup to provide list of available
- * disks).
- *
- * End 'tmppath' by changing trailing '/' (of dir name) to a '\0'
- */
- *rindex ( tmppath, '/') = '\0';
-- if ( ((br->ndirs-sel) == 2) && (strlen(tmppath) > 1) )
-+ if ( ((br->ndirs-sel) == 2) && (strlen(tmppath) > 1) )
- strcat ( tmppath, "/000000" ); /* add root dir for device */
- else if ((br->ndirs-sel) == 1 )
- strcpy ( tmppath, "/XV_Root_Device/000000" ); /* fake top level */
-@@ -2599,7 +2598,7 @@
- static void copyDirInfo(srcbr, dstbr)
- BROWINFO *srcbr, *dstbr;
- {
-- /* copies br info from an already existing browser window
-+ /* copies br info from an already existing browser window
- (ie, one that is already showing the same directory) */
-
- int i, oldnum, maxv, page;
-@@ -2619,7 +2618,7 @@
- dstbr->dirMB.list = srcbr->mblist;
- dstbr->dirMB.nlist = srcbr->ndirs;
-
-- XClearArea(theDisp, dstbr->dirMB.win, dstbr->dirMB.x, dstbr->dirMB.y,
-+ XClearArea(theDisp, dstbr->dirMB.win, dstbr->dirMB.x, dstbr->dirMB.y,
- dstbr->dirMB.w+3, dstbr->dirMB.h+3, False);
-
- i = StringWidth(dstbr->mblist[0]) + 10;
-@@ -2644,7 +2643,7 @@
-
- if ((i&0x03) == 0) drawTemp(dstbr, i, dstbr->bfLen);
- if ((i & 0x3f) == 0) WaitCursor();
--
-+
- sbf = &(srcbr->bfList[i]);
- dbf = &(dstbr->bfList[i]);
-
-@@ -2670,7 +2669,7 @@
- if (sbf->pimage) {
- dbf->pimage = (byte *) malloc((size_t) dbf->w * dbf->h);
- if (!dbf->pimage) FatalError("ran out of memory for dbf->pimage");
-- xvbcopy((char *) sbf->pimage, (char *) dbf->pimage,
-+ xvbcopy((char *) sbf->pimage, (char *) dbf->pimage,
- (size_t) (dbf->w * dbf->h));
- }
- else dbf->pimage = (byte *) NULL;
-@@ -2681,10 +2680,10 @@
- xvbcopy((char *) sbf->ximage, (char *) dbf->ximage, sizeof(XImage));
-
- if (sbf->ximage->data) {
-- dbf->ximage->data = (char *) malloc((size_t) dbf->ximage->height *
-+ dbf->ximage->data = (char *) malloc((size_t) dbf->ximage->height *
- dbf->ximage->bytes_per_line);
- if (!dbf->ximage->data) FatalError("ran out of memory for ximg data");
-- xvbcopy((char *) sbf->ximage->data, (char *) dbf->ximage->data,
-+ xvbcopy((char *) sbf->ximage->data, (char *) dbf->ximage->data,
- (size_t) dbf->ximage->height * dbf->ximage->bytes_per_line);
- }
- }
-@@ -2701,15 +2700,15 @@
- computeScrlVals(dstbr, &maxv, &page);
- if (dstbr->scrl.val > maxv) dstbr->scrl.val = maxv;
-
-- XClearArea(theDisp, dstbr->iconW, 0, 0, (u_int) dstbr->iwWide,
-+ XClearArea(theDisp, dstbr->iconW, 0, 0, (u_int) dstbr->iwWide,
- (u_int) dstbr->iwHigh, True);
- SCSetRange(&dstbr->scrl, 0, maxv, dstbr->scrl.val, page);
-
- SetCursors(-1);
- }
-
--
--
-+
-+
-
- /***************************************************************/
- static void scanDir(br)
-@@ -2726,7 +2725,7 @@
- * and it's reasonable to expect folks to want to add their own bitmaps
- */
-
-- int i,j,k,oldbflen,vmsparent;
-+ int i,j,oldbflen,vmsparent;
- BFIL *bf;
-
- DIR *dirp;
-@@ -2775,7 +2774,7 @@
-
- /* build brMBlist */
- for (i = br->ndirs-1,j=0; i>=0; i--,j++) {
-- size_t stlen = (i<(br->ndirs-1)) ? dirnames[i+1] - dirnames[i]
-+ size_t stlen = (i<(br->ndirs-1)) ? dirnames[i+1] - dirnames[i]
- : strlen(dirnames[i]);
-
- br->mblist[j] = (char *) malloc(stlen+1);
-@@ -2784,13 +2783,13 @@
- strncpy(br->mblist[j], dirnames[i], stlen);
- br->mblist[j][stlen] = '\0';
- }
--
-+
-
- /* refresh the brdirMB button */
- br->dirMB.list = br->mblist;
- br->dirMB.nlist = br->ndirs;
-
-- XClearArea(theDisp, br->dirMB.win, br->dirMB.x, br->dirMB.y,
-+ XClearArea(theDisp, br->dirMB.win, br->dirMB.x, br->dirMB.y,
- br->dirMB.w+3, br->dirMB.h+3, False);
-
- i = StringWidth(br->mblist[0]) + 10;
-@@ -2815,7 +2814,7 @@
- /* count how many files are in the list */
-
- dirp = opendir(".");
-- if (!dirp) {
-+ if (!dirp) {
- endScan(br, oldbflen);
- setBrowStr(br, "Couldn't read current directory.");
- SetCursors(-1);
-@@ -2827,11 +2826,11 @@
- #endif
-
- while ( (dp = readdir(dirp)) != NULL) {
-- if (strcmp(dp->d_name, ".") &&
-+ if (strcmp(dp->d_name, ".") &&
- strcmp(dp->d_name, THUMBDIR)) {
-- if (!br->showhidden && dp->d_name[0] == '.' &&
-+ if (!br->showhidden && dp->d_name[0] == '.' &&
- strcmp(dp->d_name,"..")!=0) continue;
-- else
-+ else
- br->bfLen++;
- }
- if ((br->bfLen & 0x3f) == 0) WaitCursor();
-@@ -2877,13 +2876,13 @@
- }
- else {
- do { dp = readdir(dirp); }
-- while (dp && (strcmp(dp->d_name, ".")==0 ||
-+ while (dp && (strcmp(dp->d_name, ".")==0 ||
- strcmp(dp->d_name, THUMBDIR)==0 ||
- strcmp(dp->d_name, THUMBDIRNAME)==0 ||
- (br->ndirs==1 && strcmp(dp->d_name,"..")==0) ||
-- (!br->showhidden && dp->d_name[0] == '.' &&
-+ (!br->showhidden && dp->d_name[0] == '.' &&
- strcmp(dp->d_name,"..")!=0)));
--
-+
- if (!dp) { br->bfLen = i; break; } /* dir got shorter... */
- }
-
-@@ -2940,11 +2939,11 @@
- if (w<1) w = 1;
- if (h<1) h = 1;
-
-- XClearArea(theDisp, br->iconW, (ctrlColor) ? 2 : 0, (ctrlColor) ? 2 : 0,
-+ XClearArea(theDisp, br->iconW, (ctrlColor) ? 2 : 0, (ctrlColor) ? 2 : 0,
- (u_int) w, (u_int) h, False);
-
- SCSetRange(&br->scrl, 0, maxv, br->scrl.val, page);
--
-+
- SetCursors(-1);
- }
-
-@@ -2972,7 +2971,7 @@
- bf->pimage = (byte *) NULL;
- bf->ximage = (XImage *) NULL;
- bf->lit = 0;
--
-+
-
- if (stat(bf->name, &st)==0) {
- bf->ftype = stat2bf((u_int) st.st_mode);
-@@ -3048,11 +3047,11 @@
- bfcompares++;
- if ((bfcompares & 0x7f)==0) WaitCursor();
-
-- /* sort critera: directories first, in alphabetical order,
-+ /* sort critera: directories first, in alphabetical order,
- followed by everything else, in alphabetical order */
--
-+
- if ((b1->ftype == BF_DIR && b2->ftype == BF_DIR) ||
-- (b1->ftype != BF_DIR && b2->ftype != BF_DIR))
-+ (b1->ftype != BF_DIR && b2->ftype != BF_DIR))
- return strcmp(b1->name, b2->name);
-
- else if (b1->ftype == BF_DIR && b2->ftype != BF_DIR) return -1;
-@@ -3108,7 +3107,7 @@
- for (i=0; i<bflen; i++) {
- bfnames[i] = (char *) malloc(strlen(br->bfList[i].name) + 1);
- if (!bfnames[i]) FatalError("couldn't alloc bfnames in rescanDir()");
--
-+
- strcpy(bfnames[i], br->bfList[i].name);
- }
- }
-@@ -3121,7 +3120,7 @@
-
- /* note, either (or both) dirnames/bfnames can be NULL, in which case
- their respective 'len's will be zero */
--
-+
- /* sort the two name lists */
- if (bflen) qsort((char *) bfnames, (size_t) bflen, sizeof(char *),namcmp);
- if (dirlen) qsort((char *) dirnames, (size_t) dirlen,sizeof(char *),namcmp);
-@@ -3153,7 +3152,7 @@
- }
- }
- bflen = j;
--
-+
-
- for (i=j=0; i<dirlen; i++) {
- if (dirnames[i] && strcmp(dirnames[i],".") && strcmp(dirnames[i],"..") &&
-@@ -3162,21 +3161,21 @@
- }
- }
- dirlen = j;
--
-+
-
- if (DEBUG) {
- fprintf(stderr,"%d files seem to have gone away: ", bflen);
-- for (i=0; i<bflen; i++)
-+ for (i=0; i<bflen; i++)
- fprintf(stderr,"%s ", bfnames[i]);
- fprintf(stderr,"\n\n");
-
- fprintf(stderr,"%d files seem to have appeared: ", dirlen);
-- for (i=0; i<dirlen; i++)
-+ for (i=0; i<dirlen; i++)
- fprintf(stderr,"%s ", dirnames[i]);
- fprintf(stderr,"\n\n");
- }
--
--
-+
-+
- /* create a new bfList */
- newlen = br->bfLen - bflen + dirlen; /* oldlen - #del'd + #created */
- if (newlen>0) {
-@@ -3241,7 +3240,7 @@
- if (bf->pimage) free(bf->pimage);
- if (bf->ximage) xvDestroyImage(bf->ximage);
- }
--
-+
- free(br->bfList);
- }
-
-@@ -3267,13 +3266,13 @@
- int *lenP;
- int dohidden;
- {
-- /* loads up all directory entries into an array. This *isn't* a great
-- way to do it, but I can't count on 'scandir()' existing on
-+ /* loads up all directory entries into an array. This *isn't* a great
-+ way to do it, but I can't count on 'scandir()' existing on
- every system. Returns 'NULL' on failure, or pointer to array of
- 'lenP' strings on success. '.' and '..' ARE included in list
- if !dohidden, all '.*' files are skipped (except . and ..) */
-
-- int i, j, dirlen;
-+ int i, dirlen;
- DIR *dirp;
- char **names;
- #ifdef NODIRENT
-@@ -3294,9 +3293,9 @@
- /* count # of entries in dir (worst case) */
- for (dirlen=0; (dp = readdir(dirp)) != NULL; dirlen++);
- if (!dirlen) {
-- closedir(dirp);
-+ closedir(dirp);
- *lenP = dirlen;
-- return (char **) NULL;
-+ return (char **) NULL;
- }
-
-
-@@ -3312,7 +3311,7 @@
-
- if (!dohidden) {
- #ifndef VMS
-- if (dp->d_name[0] == '.' &&
-+ if (dp->d_name[0] == '.' &&
- strcmp(dp->d_name,"." )!=0 &&
- strcmp(dp->d_name,"..")!=0) continue;
- #endif
-@@ -3324,7 +3323,7 @@
- strcpy(names[i], dp->d_name);
- i++;
- }
--
-+
- if (i<dirlen) dirlen = i; /* dir got shorter... */
-
- closedir(dirp);
-@@ -3359,7 +3358,7 @@
- static void genSelectedIcons(br)
- BROWINFO *br;
- {
-- int i, sval, first, numvis, cnt;
-+ int i, cnt;
-
- setBrowStr(br, "");
-
-@@ -3395,7 +3394,7 @@
- BFIL *bf;
- {
- /* given a BFIL entry, load up the file.
-- * if we succeeded in loading up the file,
-+ * if we succeeded in loading up the file,
- * generate an aspect-correct 8-bit image using brow Cmap
- * otherwise
- * replace this icon with the BF_UNKNOWN, or BF_ERR icons
-@@ -3408,20 +3407,20 @@
- byte *icon24, *icon8;
- char str[256], str1[256], *readname, uncompname[128];
- char basefname[128], *uncName;
--
--
-+
-+
- if (!bf || !bf->name || bf->name[0] == '\0') return; /* shouldn't happen */
- str[0] = '\0';
- basefname[0] = '\0';
- pinfo.pic = (byte *) NULL;
- pinfo.comment = (char *) NULL;
- readname = bf->name;
--
-+
- /* free any old info in 'bf' */
- if (bf->imginfo) free (bf->imginfo);
- if (bf->pimage) free (bf->pimage);
- if (bf->ximage) xvDestroyImage(bf->ximage);
--
-+
- bf->imginfo = (char *) NULL;
- bf->pimage = (byte *) NULL;
- bf->ximage = (XImage *) NULL;
-@@ -3429,9 +3428,9 @@
-
- /* skip all 'special' files */
- if (!ISLOADABLE(bf->ftype)) return;
--
-+
- filetype = ReadFileType(bf->name);
--
-+
- if (filetype == RFT_COMPRESS) {
- #if (defined(VMS) && !defined(GUNZIP))
- /* VMS decompress doesn't like the file to have a trailing .Z in fname
-@@ -3442,7 +3441,7 @@
- #else
- uncName = bf->name;
- #endif
--
-+
- if (UncompressFile(uncName, uncompname)) {
- filetype = ReadFileType(uncompname);
- readname = uncompname;
-@@ -3453,61 +3452,61 @@
- bf->ftype = BF_ERROR;
- }
- }
--
-+
- /* get rid of comments. don't need 'em */
- if (pinfo.comment) free(pinfo.comment); pinfo.comment = (char *) NULL;
--
-- if (filetype == RFT_ERROR) {
-+
-+ if (filetype == RFT_ERROR) {
- sprintf(str,"Couldn't open file '%s'", bf->name);
- setBrowStr(br, str);
- bf->ftype = BF_ERROR;
- }
--
-+
- else if (filetype == RFT_UNKNOWN) {
- /* if it *was* an 'exe', leave it that way */
- if (bf->ftype != BF_EXE) bf->ftype = BF_UNKNOWN;
- }
--
-+
- else {
- /* otherwise it's a known filetype... do the *hard* part now... */
--
-+
- i = ReadPicFile(readname, filetype, &pinfo, 1);
- KillPageFiles(pinfo.pagebname, pinfo.numpages);
--
-+
- if (!i) bf->ftype = BF_ERROR;
--
-+
- if (i && (pinfo.w<=0 || pinfo.h<=0)) { /* bogus size */
- bf->ftype = BF_ERROR;
- free(pinfo.pic); pinfo.pic = (byte *) NULL;
- }
--
-+
- if (bf->ftype==BF_ERROR && filetype==RFT_XBM) bf->ftype = BF_UNKNOWN;
- }
--
-+
- /* get rid of comment, as we don't need it */
-- if (pinfo.comment) {
-+ if (pinfo.comment) {
- free(pinfo.comment); pinfo.comment = (char *) NULL;
- }
--
-+
- /* if we made an uncompressed file, we can rm it now */
- if (readname != bf->name) unlink(readname);
--
--
-+
-+
- /* at this point either BF_ERROR, BF_UNKNOWN, BF_EXE or pic */
--
-+
- if (!pinfo.pic) {
- if (bf->ftype == BF_EXE) return; /* don't write thumbfiles for exe's */
--
-+
- bf->w = br_file_width; bf->h = br_file_height;
- writeThumbFile(br, bf, NULL, 0, 0, NULL); /* BF_ERROR, BF_UNKNOWN */
- return;
- }
--
-+
- /* at this point, we have a pic, so it must be an image file */
--
--
-+
-+
- /* compute size of icon (iwide,ihigh) */
--
-+
- wexpand = (double) pinfo.w / (double) ISIZE_WIDE;
- hexpand = (double) pinfo.h / (double) ISIZE_HIGH;
-
-@@ -3527,13 +3526,13 @@
-
-
- /* generate icon */
-- icon24 = Smooth24(pinfo.pic, pinfo.type==PIC24, pinfo.w, pinfo.h,
-+ icon24 = Smooth24(pinfo.pic, pinfo.type==PIC24, pinfo.w, pinfo.h,
- iwide, ihigh, pinfo.r,pinfo.g,pinfo.b);
- if (!icon24) { bf->ftype = BF_FILE; free(pinfo.pic); return; }
-
- sprintf(str, "%dx%d ", pinfo.normw, pinfo.normh);
- switch (filetype) {
-- case RFT_GIF: if (xv_strstr(pinfo.shrtInfo, "GIF89"))
-+ case RFT_GIF: if (xv_strstr(pinfo.shrtInfo, "GIF89"))
- strcat(str,"GIF89 file");
- else
- strcat(str,"GIF87 file");
-@@ -3543,12 +3542,12 @@
-
- case RFT_PBM: if (xv_strstr(pinfo.fullInfo, "raw")) strcat(str,"Raw ");
- else strcat(str,"Ascii ");
--
-+
- for (i=0; i<3 && (strlen(pinfo.fullInfo)>(size_t)3); i++){
- str1[0] = pinfo.fullInfo[i]; str1[1] = '\0';
- strcat(str, str1);
- }
--
-+
- strcat(str," file");
- break;
-
-@@ -3569,19 +3568,19 @@
- case RFT_FITS: strcat(str,"FITS file"); break;
- default: strcat(str,"file of unknown type"); break;
- }
--
--
-+
-+
- /* find out length of original file */
- { FILE *fp;
- long filesize;
- char buf[64];
--
-+
- fp = fopen(bf->name, "r");
- if (fp) {
- fseek(fp, 0L, 2);
- filesize = ftell(fp);
- fclose(fp);
--
-+
- sprintf(buf," (%ld bytes)", filesize);
- strcat(str, buf);
- }
-@@ -3609,17 +3608,17 @@
- bf->w = iwide;
- bf->h = ihigh;
- bf->ftype = BF_HAVEIMG;
--
-+
- bf->ximage = Pic8ToXImage(icon8, (u_int) iwide, (u_int) ihigh, browcols,
- browR, browG, browB);
--
-+
- free(icon24);
- free(pinfo.pic);
- }
-
-
-
--
-+
-
-
- /*
-@@ -3682,7 +3681,7 @@
- /* read comments until we see '#END_OF_COMMENTS', or hit EOF */
- while (1) {
- if (!fgets(buf, 256, fp)) goto errexit;
--
-+
- if (!strncmp(buf, "#END_OF_COMMENTS", strlen("#END_OF_COMMENTS")))
- break;
-
-@@ -3714,7 +3713,7 @@
-
-
- /* read width, height, maxval */
-- if (!fgets(buf, 256, fp) || sscanf(buf, "%d %d %d", &w, &h, &mv) != 3)
-+ if (!fgets(buf, 256, fp) || sscanf(buf, "%d %d %d", &w, &h, &mv) != 3)
- goto errexit;
-
-
-@@ -3738,14 +3737,14 @@
- bf->h = h;
- bf->ftype = BF_HAVEIMG;
- bf->imginfo = info;
--
-- bf->ximage = Pic8ToXImage(icon8, (u_int) w, (u_int) h, browcols,
-+
-+ bf->ximage = Pic8ToXImage(icon8, (u_int) w, (u_int) h, browcols,
- browR, browG, browB);
- }
- else {
- if (info) free(info);
- }
--
-+
- fclose(fp);
- return;
-
-@@ -3757,7 +3756,7 @@
- }
-
-
--
-+
- /***************************************************************/
- static void writeThumbFile(br, bf, icon8, w, h, info)
- BROWINFO *br;
-@@ -3787,7 +3786,7 @@
-
- fp = fopen(thFname, "w");
- if (!fp) {
-- sprintf(buf, "Can't create thumbnail file '%s': %s", thFname,
-+ sprintf(buf, "Can't create thumbnail file '%s': %s", thFname,
- ERRSTR(errno));
- setBrowStr(br, buf);
- return; /* can't write... */
-@@ -3829,9 +3828,9 @@
- setBrowStr(br, buf);
- return; /* can't write... */
- }
--
-+
- fclose(fp);
--
-+
- chmod(thFname, (mode_t) perm);
- }
-
-@@ -3915,7 +3914,7 @@
-
- if (s1 || s2 || filest.st_mtime > thumbst.st_mtime ||
- filest.st_ctime > thumbst.st_ctime) {
-- /* either stat'ing the file or the thumbfile failed, or
-+ /* either stat'ing the file or the thumbfile failed, or
- both stat's succeeded and the file has a newer mod or creation
- time than the thumbnail file */
-
-@@ -3926,8 +3925,8 @@
-
- if (bf->ftype != BF_EXE) {
- iconsBuilt++;
-- if (DEBUG)
-- fprintf(stderr,"icon made:fname='%s' thfname='%s' %d,%d,%d,%d\n",
-+ if (DEBUG)
-+ fprintf(stderr,"icon made:fname='%s' thfname='%s' %d,%d,%ld,%ld\n",
- bf->name, thfname, s1,s2,filest.st_mtime,thumbst.st_mtime);
- }
- }
-@@ -3974,7 +3973,7 @@
- }
- }
- statcount++;
--
-+
- if ((statcount % 30)==0) WaitCursor();
- }
- closedir(dirp);
-@@ -3998,16 +3997,16 @@
- {
- if (maxcnt<1) return; /* none of that naughty ol' divide by zero stuff */
-
-- DrawTempGauge(br->win, 5, br->dirMB.y,
-+ DrawTempGauge(br->win, 5, br->dirMB.y,
- (int) br->dirMB.x-10, (int) br->dirMB.h,
- (double) cnt / (double) maxcnt,
- browfg, browbg, browhi, browlo, "");
- }
--
-+
- static void clearTemp(br)
- BROWINFO *br;
- {
-- XClearArea(theDisp, br->win, 5, br->dirMB.y,
-+ XClearArea(theDisp, br->win, 5, br->dirMB.y,
- (u_int) br->dirMB.x-10+1, (u_int) br->dirMB.h + 1, True);
- }
-
-@@ -4048,7 +4047,7 @@
- /* find the selected file */
- for (i=0; i<br->bfLen && !br->bfList[i].lit; i++);
- if (i==br->bfLen) return; /* shouldn't happen */
--
-+
- origname = br->bfList[i].name; num = i;
-
- if (strcmp(origname, "..")==0) {
-@@ -4058,7 +4057,7 @@
- return;
- }
-
-- sprintf(txt, "Enter a new name for the %s '%s':",
-+ sprintf(txt, "Enter a new name for the %s '%s':",
- (br->bfList[i].ftype==BF_DIR) ? "directory" : "file",
- origname);
-
-@@ -4107,7 +4106,7 @@
- drawIcon(br, num);
-
- for (i=0; i<MAXBRWIN; i++) {
-- if (&binfo[i] != br && strcmp(binfo[i].path, br->path)==0)
-+ if (&binfo[i] != br && strcmp(binfo[i].path, br->path)==0)
- rescanDir(&binfo[i]);
- }
-
-@@ -4133,7 +4132,7 @@
- if (cdBrow(br)) return;
-
- buf[0] = '\0';
-- i = GetStrPopUp("Enter name for new directory:", labels, 2,
-+ i = GetStrPopUp("Enter name for new directory:", labels, 2,
- buf, 128, "/ |\'\"<>,", 0);
- if (i) return; /* cancelled */
-
-@@ -4161,7 +4160,7 @@
-
- /* rescan current br, and all other br's pointing to same directory */
- for (i=0; i<MAXBRWIN; i++) {
-- if (strcmp(binfo[i].path, br->path)==0)
-+ if (strcmp(binfo[i].path, br->path)==0)
- rescanDir(&binfo[i]);
- }
-
-@@ -4179,7 +4178,7 @@
- int i;
- static char buf[MAXPATHLEN+100];
- static char *labels[] = { "\nOk", "\033Cancel" };
-- char str[512];
-+ char str[512];
-
- buf[0] = '\0';
- i = GetStrPopUp("Change to directory:", labels, 2, buf, MAXPATHLEN, " ", 0);
-@@ -4226,7 +4225,7 @@
- */
-
- BFIL *bf;
-- int i, j, numdirs, numfiles, slen, firstdel;
-+ int i, numdirs, numfiles, slen, firstdel;
- char buf[512];
- static char *yesno[] = { "\004Delete", "\033Cancel" };
-
-@@ -4258,7 +4257,7 @@
- }
-
-
-- /* if any plain files are being toasted, bring up the low-key
-+ /* if any plain files are being toasted, bring up the low-key
- confirmation box */
-
- if (numfiles) {
-@@ -4281,7 +4280,7 @@
- i = PopUp(buf, yesno, 2);
- if (i) return; /* cancelled */
- }
--
-+
-
- /* if any directories are being toasted, bring up the are you REALLY sure
- confirmation box */
-@@ -4309,7 +4308,7 @@
-
-
- /* okay, at this point they've been warned. do the deletion */
--
-+
- for (i=0, bf=br->bfList; i<br->bfLen; i++,bf++) {
- if (bf->lit) {
- if (bf->ftype == BF_DIR) rm_dir (br, bf->name);
-@@ -4340,7 +4339,7 @@
-
- /* rescan other br's that are looking at this directory */
- for (i=0; i<MAXBRWIN; i++) {
-- if (&binfo[i] != br && strcmp(binfo[i].path, br->path)==0)
-+ if (&binfo[i] != br && strcmp(binfo[i].path, br->path)==0)
- rescanDir(&binfo[i]);
- }
-
-@@ -4356,7 +4355,7 @@
- int i;
- static char buf[MAXPATHLEN+100];
- static char *labels[] = { "\nOk", "\033Cancel" };
-- char str[512];
-+ char str[512];
-
- buf[0] = '\0';
- strcpy(str,"Select file name(s). Wildcard '*' is allowed. ");
-@@ -4396,7 +4395,7 @@
- {
- int i;
- static char *labels[] = { "\nOk", "\033Cancel" };
-- char str[512];
-+ char str[512];
-
- strcpy(str,"Recursive Update: This could take *quite* a while.\n");
- strcat(str,"Are you sure?");
-@@ -4415,7 +4414,7 @@
-
-
- /*******************************************/
--static void recurseUpdate(br, subdir)
-+static void recurseUpdate(br, subdir)
- BROWINFO *br;
- char *subdir;
- {
-@@ -4430,7 +4429,7 @@
- * and for each subdir in this dir, recurse
- *
- * if cur dir != orig dir, cd back to orig dir and reload 'br'
-- */
-+ */
-
- int i;
- char orgDir[MAXPATHLEN + 2];
-@@ -4449,7 +4448,7 @@
- }
-
- xv_getwd(curDir, sizeof(curDir));
--
-+
- /* have we looped? */
- for (i=0; i<dirStackLen && strcmp(curDir, dirStack[i]); i++);
- if (i<dirStackLen) { /* YES */
-@@ -4481,8 +4480,8 @@
- /* do subdirectories of this directory, not counting . .. and .xvpics */
- for (i=0; i<br->bfLen; i++) {
- bf = &(br->bfList[i]);
-- if (bf &&
-- bf->ftype == BF_DIR &&
-+ if (bf &&
-+ bf->ftype == BF_DIR &&
- strcmp(bf->name, ".") &&
- strcmp(bf->name, "..") &&
- strcmp(bf->name, THUMBDIRNAME) ) {
-@@ -4524,7 +4523,7 @@
- tmp = (char *) rindex(buf1, '/');
- if (!tmp) strcpy(buf1,".");
- else *tmp = '\0';
--
-+
- sprintf(buf, "%s/%s/%s", buf1, THUMBDIR, BaseName(name));
- if (DEBUG) fprintf(stderr," (%s)\n", buf);
-
-@@ -4548,7 +4547,7 @@
- BROWINFO *br;
- {
- /* recursively delete this directory, and all things under it */
--
-+
- int i, dirlen, longpath, oldpathlen;
- char **names, *name, buf[512];
- struct stat st;
-@@ -4569,7 +4568,7 @@
- name = names[i];
-
- /* skip . and .. (not that we should ever see them... */
-- if (name[0] == '.' && (name[1]=='\0' ||
-+ if (name[0] == '.' && (name[1]=='\0' ||
- (name[1]=='.' && name[2]=='\0'))) goto done;
-
- if (strlen(name) + oldpathlen >= (MAXPATHLEN-3)) {
-@@ -4586,7 +4585,7 @@
- rmdirPath[oldpathlen] = '\0';
- goto done;
- }
--
-+
- if (stat2bf((u_int) st.st_mode) == BF_DIR) { /* skip, for now */
- rmdirPath[oldpathlen] = '\0';
- continue; /* don't remove from list */
-@@ -4594,7 +4593,7 @@
-
- rm_file(br, rmdirPath);
- rmdirPath[oldpathlen] = '\0';
--
-+
- done: /* remove name from list */
- free(name);
- names[i] = (char *) NULL;
-@@ -4645,19 +4644,19 @@
-
-
- /*******************************************/
--static void dragFiles(srcBr, dstBr, srcpath, dstpath, dstdir,
-+static void dragFiles(srcBr, dstBr, srcpath, dstpath, dstdir,
- names, nlen, cpymode)
- BROWINFO *srcBr, *dstBr;
- char *srcpath, *dstpath, *dstdir, **names;
- int nlen, cpymode;
- {
-- /* move or copy file(s) and their associated thumbnail files.
-+ /* move or copy file(s) and their associated thumbnail files.
- srcpath and dstpath will have trailing '/'s. dstdir is name of
- folder in dstpath (or "." or "..") to write to. names is an nlen
- long array of strings (the simple filenames of the files to move)
- if 'cpymode' copy files, otherwise move them */
-
-- int i, j, k, dothumbs, fail;
-+ int i, j, dothumbs, fail;
- char dstp[MAXPATHLEN + 1];
- char src[MAXPATHLEN+1], dst[MAXPATHLEN+1];
- char buf[128];
-@@ -4750,7 +4749,7 @@
-
-
- /* clear all files in the destination folder */
-- for (i=0; i<dstBr->bfLen; i++) {
-+ for (i=0; i<dstBr->bfLen; i++) {
- dstBr->bfList[i].lit = 0;
- }
- dstBr->numlit = 0;
-@@ -4760,10 +4759,10 @@
- for (i=0; i<nlen; i++) {
- char *name; BFIL *bf;
- name = names[i];
-- for (j=0, bf=dstBr->bfList;
-+ for (j=0, bf=dstBr->bfList;
- j<dstBr->bfLen && strcmp(name, bf->name)!=0; j++, bf++);
-- if (j<dstBr->bfLen) {
-- bf->lit = 1; dstBr->numlit++;
-+ if (j<dstBr->bfLen) {
-+ bf->lit = 1; dstBr->numlit++;
- }
- }
-
-@@ -4783,10 +4782,10 @@
- changedNumLit(srcBr, -1, 0);
-
-
-- if (fail) sprintf(buf, "Some files were not %s because of errors.",
-+ if (fail) sprintf(buf, "Some files were not %s because of errors.",
- cpymode ? "copied" : "moved");
-
-- else if (nlen>1) sprintf(buf, "%d files %s", nlen,
-+ else if (nlen>1) sprintf(buf, "%d files %s", nlen,
- (cpymode) ? "copied" : "moved");
- else buf[0] = '\0';
- setBrowStr(srcBr, buf);
-@@ -4824,7 +4823,7 @@
- dstdir = (stat2bf((u_int) st.st_mode) == BF_DIR);
-
- if (overwrite==OWRT_ASK) {
-- sprintf(buf, "%s '%s' exists.\n\nOverwrite?",
-+ sprintf(buf, "%s '%s' exists.\n\nOverwrite?",
- dstdir ? "Directory" : "File", dst);
- i = PopUp(buf, owbuts, 4);
-
-@@ -4848,7 +4847,7 @@
- }
- }
-
--
-+
- if (!rename(src, dst)) return 0; /* Ok */
- if (errno != EXDEV) return 1; /* failure, of some sort */
-
-@@ -4896,7 +4895,7 @@
- /* possible cases: source is either a file or a directory, or doesn't exist,
- destination is either a file, a directory, or doesn't exist.
-
-- if source doesn't exist, nothing to do.
-+ if source doesn't exist, nothing to do.
- if source is a file:
- if dest is a file, popup 'overwriting' question, delete file if ok
- if dest is a dir, popup 'overwriting dir' question, delete dir if ok
-@@ -4957,7 +4956,7 @@
- /* destination doesn't exist no more, if it ever did... */
- userMask = umask(0); /* grab the umask */
- umask((mode_t) userMask); /* put it back... */
--
-+
-
- strcpy(cpSrcPath, src);
- strcpy(cpDstPath, dst);
-@@ -5017,7 +5016,7 @@
- called recursively by cp_dir, there are *no* guarantees that either file
- exists or not */
-
-- int i, havedst;
-+ int havedst;
- struct stat srcSt, dstSt;
-
- if (stat(cpSrcPath, &srcSt)) { /* src doesn't exist, usefully... */
-@@ -5037,7 +5036,7 @@
- }
-
-
-- switch(stat2bf((u_int) srcSt.st_mode)) {
-+ switch(stat2bf((u_int) srcSt.st_mode)) {
- /* determine how to copy, by filetype */
-
- /* NOTE: There is no S_IFLNK case here, since we're using 'stat()' and
-@@ -5059,12 +5058,12 @@
- return;
- }
- }
--
-+
- cp_dir();
- if (!havedst) chmod(cpDstPath, srcSt.st_mode);
--
-+
- break;
--
-+
-
- case BF_CHR:
- case BF_BLK: cp_special(&srcSt, havedst); break;
-@@ -5089,12 +5088,12 @@
- {
- int i, dirlen, oldsrclen, olddstlen, longpath;
- char **names, *name;
-- struct stat srcSt, dstSt;
-+ struct stat srcSt;
-
-
- /* src and dst directories both exists now. copy entries */
-
-- if (DEBUG) fprintf(stderr,"cp_dir: src='%s', dst='%s'\n",
-+ if (DEBUG) fprintf(stderr,"cp_dir: src='%s', dst='%s'\n",
- cpSrcPath, cpDstPath);
-
- longpath = 0;
-@@ -5110,9 +5109,9 @@
-
- for (i=0; i<dirlen && overwrite!=OWRT_CANCEL; i++) {
- name = names[i];
-- if (name[0] == '.' && (name[1]=='\0' ||
-+ if (name[0] == '.' && (name[1]=='\0' ||
- (name[1]=='.' && name[2]=='\0'))) goto done;
--
-+
- /* add name to src and dst paths */
- if ((strlen(name) + oldsrclen >= (MAXPATHLEN-3)) ||
- (strlen(name) + olddstlen >= (MAXPATHLEN-3))) {
-@@ -5130,12 +5129,12 @@
- cpSrcPath[oldsrclen] = '\0';
- goto done;
- }
--
-+
- if (stat2bf((u_int) srcSt.st_mode) == BF_DIR) {
- cpSrcPath[oldsrclen] = '\0';
- continue; /* don't remove from list, just skip */
- }
--
-+
- strcat(cpDstPath, "/");
- strcat(cpDstPath, name);
- cp(); /* RECURSE */
-@@ -5169,7 +5168,7 @@
- strcat(cpDstPath, name);
-
- cp(); /* RECURSE */
--
-+
- cpSrcPath[oldsrclen] = '\0';
- cpDstPath[olddstlen] = '\0';
- }
-@@ -5191,10 +5190,10 @@
- /*****************************/
- {
- register int srcFd, dstFd, rcount, wcount, i;
-- char str[512], buf[8192];
-+ char buf[8192];
- static char *owbuts[4] = { "\nOk", "dDon't Ask", "nNo", "\033Cancel" };
-
-- if (DEBUG) fprintf(stderr,"cp_file: src='%s', dst='%s'\n",
-+ if (DEBUG) fprintf(stderr,"cp_file: src='%s', dst='%s'\n",
- cpSrcPath, cpDstPath);
-
- if ((srcFd = open(cpSrcPath, O_RDONLY, 0)) == -1) {
-@@ -5255,7 +5254,7 @@
- int exists;
- /*********************************/
- {
-- if (DEBUG) fprintf(stderr,"cp_spec: src='%s', dst='%s'\n",
-+ if (DEBUG) fprintf(stderr,"cp_spec: src='%s', dst='%s'\n",
- cpSrcPath, cpDstPath);
-
- if (exists && unlink(cpDstPath)) {
-@@ -5281,7 +5280,7 @@
- int exists;
- /*********************************/
- {
-- if (DEBUG) fprintf(stderr,"cp_fifo: src='%s', dst='%s'\n",
-+ if (DEBUG) fprintf(stderr,"cp_fifo: src='%s', dst='%s'\n",
- cpSrcPath, cpDstPath);
-
- #ifdef S_IFIFO
-@@ -5302,12 +5301,12 @@
-
-
-
--
-+
- /*********************************/
- static int stat2bf(uistmode)
- u_int uistmode;
- {
-- /* given the 'st.st_mode' field from a successful stat(), returns
-+ /* given the 'st.st_mode' field from a successful stat(), returns
- BF_FILE, BF_DIR, BF_BLK, BF_CHR, BF_FIFO, or BF_SOCK. Does *NOT*
- return BF_EXE */
-
-@@ -5357,8 +5356,8 @@
- static int selmatch1(name, arg)
- char *name, *arg;
- {
-- /* returns non-zero if 'name' matches 'arg'. Any '*' chars found in arg
-- are considered wildcards that match any number of characters,
-+ /* returns non-zero if 'name' matches 'arg'. Any '*' chars found in arg
-+ are considered wildcards that match any number of characters,
- including zero. */
-
- char *sp, *oldnp;
-@@ -5379,7 +5378,7 @@
- while (*name) name++;
- while (*arg ) arg++;
- name--; arg--;
--
-+
- while (*arg != '*') {
- if (*arg != *name || name<oldnp) return 0;
- arg--; name--;
-@@ -5388,7 +5387,7 @@
- }
-
- else { /* there are more '*'s in arg... */
-- /* find the first occurrence of the string between the two '*'s.
-+ /* find the first occurrence of the string between the two '*'s.
- if the '*'s are next to each other, just throw away the first one */
-
- arg++; /* points to char after first '*' */
-@@ -5410,7 +5409,7 @@
- arg = sp+1;
- }
- }
-- }
-+ }
- }
-
- if (!*arg && !*name) return 1;
-diff -ruN xv-3.10a/xvbutt.c xv-3.10a-bugfixes/xvbutt.c
---- xv-3.10a/xvbutt.c 1995-01-03 13:19:51.000000000 -0800
-+++ xv-3.10a-bugfixes/xvbutt.c 2004-05-16 18:01:29.000000000 -0700
-@@ -1,4 +1,4 @@
--/*
-+/*
- * xvbutt.c - regular, 'radio', 'checkbox', and 'menu' pushbuttons
- *
- * callable functions:
-@@ -16,7 +16,7 @@
- * RBSetActive() - sets active status of an RBUTT
- * RBClick() - finds clicked-on rb in a list
- * RBTrack() - tracks rb after click, until release
-- *
-+ *
- * CBCreate() - create a CBUTT (checkbox button)
- * CBRedraw() - redraw a CBUTT
- * CBSetActive() - change active status of a CBUTT
-@@ -26,7 +26,7 @@
- * MBCreate() - create a MBUTT (menu button)
- * MBRedraw() - redraw a MBUTT
- * MBSetActive() - change active status of a MBUTT
-- * MBWhich() - returns # of first checked selection
-+ * MBWhich() - returns # of first checked selection
- * MBSelect() - similar to RBSelect() ...
- * MBClick() - returns true if given MB was clicked on
- * MBTrack() - tracks MBUTT after click, until release
-@@ -116,7 +116,7 @@
- void BTRedraw(bp)
- BUTT *bp;
- {
-- int i,x,y,r,x1,y1;
-+ int x,y,r,x1,y1;
- unsigned int w,h;
- XPoint tpts[10], bpts[10], ipts[5];
-
-@@ -170,13 +170,13 @@
- XSetForeground(theDisp, theGC, bp->fg);
- XDrawLines(theDisp, bp->win, theGC, ipts, 5, CoordModeOrigin); /* inset */
-
-- XDrawLine(theDisp, bp->win, theGC, x+1, y + 1,
-+ XDrawLine(theDisp, bp->win, theGC, x+1, y + 1,
- ipts[0].x, ipts[0].y);
- XDrawLine(theDisp, bp->win, theGC, x+1, y + (int) h - 1,
- ipts[1].x, ipts[1].y);
- XDrawLine(theDisp, bp->win, theGC, x + (int) w - 1, y + (int) h - 1,
- ipts[2].x, ipts[2].y);
-- XDrawLine(theDisp, bp->win, theGC, x + (int) w - 1, y+1,
-+ XDrawLine(theDisp, bp->win, theGC, x + (int) w - 1, y+1,
- ipts[3].x, ipts[3].y);
-
- if (bp->lit) {
-@@ -184,12 +184,12 @@
- XDrawRectangle(theDisp, bp->win, theGC, x+1, y+1, w-2, h-2);
- }
- }
--
-+
- else { /* ctrlColor */
- XSetForeground(theDisp, theGC, bp->bg);
- XFillRectangle(theDisp, bp->win, theGC, x+1, y+1, w-1, h-1);
-
-- Draw3dRect(bp->win, x+1, y+1, w-2, h-2, R3D_OUT, bp->fwidth,
-+ Draw3dRect(bp->win, x+1, y+1, w-2, h-2, R3D_OUT, bp->fwidth,
- bp->hi, bp->lo, bp->bg);
-
- XSetForeground(theDisp, theGC, bp->fg);
-@@ -198,7 +198,7 @@
- if (bp->lit)
- XDrawRectangle(theDisp, bp->win, theGC, x+1, y+1, w-2, h-2);
- }
--
-+
-
-
-
-@@ -210,7 +210,7 @@
-
- XSetBackground(theDisp, theGC, bp->bg);
-
-- if (bp->colorpix)
-+ if (bp->colorpix)
- XCopyArea (theDisp,bp->pix, bp->win, theGC, 0,0,bp->pw,bp->ph, x1,y1);
- else
- XCopyPlane(theDisp,bp->pix, bp->win, theGC, 0,0,bp->pw,bp->ph, x1,y1,1L);
-@@ -262,15 +262,15 @@
- if (bp->lit==inval && PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) {
- bp->lit = !inval; BTRedraw(bp); XFlush(theDisp);
- }
--
-+
- if (bp->lit!=inval && !PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) {
- bp->lit = inval; BTRedraw(bp); XFlush(theDisp);
- }
- }
-
- rval = (bp->lit != inval);
--
-- if (bp->lit && !bp->toggle)
-+
-+ if (bp->lit && !bp->toggle)
- { bp->lit = 0; BTRedraw(bp); XFlush(theDisp); }
-
- return(rval);
-@@ -295,13 +295,13 @@
- {
- /* mallocs an RBUTT, fills in the fields, and appends it to rblist
- if rblist is NULL, this is the first rb in the list. It will
-- be made the 'selected' one
-+ be made the 'selected' one
-
-- Note: no need to check return status. It'll fatal error if it
-+ Note: no need to check return status. It'll fatal error if it
- can't malloc */
-
- RBUTT *rb, *rbptr;
-- Pixmap rb_frame, rb_frame1, rb_top, rb_bot, rb_dtop, rb_dbot, rb_body,
-+ Pixmap rb_frame, rb_frame1, rb_top, rb_bot, rb_dtop, rb_dbot, rb_body,
- rb_dot;
-
- rb = (RBUTT *) malloc(sizeof(RBUTT));
-@@ -348,7 +348,7 @@
- rb_off = XCreatePixmap(theDisp, rootW, RBSIZE, RBSIZE, dispDEEP);
- rb_off1 = XCreatePixmap(theDisp, rootW, RBSIZE, RBSIZE, dispDEEP);
-
-- if (!rb_frame || !rb_frame1 || !rb_top || !rb_bot || !rb_dtop ||
-+ if (!rb_frame || !rb_frame1 || !rb_top || !rb_bot || !rb_dtop ||
- !rb_dbot || !rb_body || !rb_dot || !rb_on || !rb_on1 ||
- !rb_off || !rb_off1)
- FatalError("unable to create radio-button pixmaps");
-@@ -410,7 +410,7 @@
- XFillRectangle(theDisp, rb_on, theGC, 0,0,RBSIZE,RBSIZE);
- XFillRectangle(theDisp, rb_on1, theGC, 0,0,RBSIZE,RBSIZE);
- }
--
-+
- XSetStipple(theDisp, theGC, rb_frame);
- XSetForeground(theDisp, theGC, fg);
- XFillRectangle(theDisp, rb_on, theGC, 0,0,RBSIZE,RBSIZE);
-@@ -437,7 +437,7 @@
-
- return(rb);
- }
--
-+
-
-
-
-@@ -475,23 +475,23 @@
- int lit;
- {
- /* draws the rb being pointed at */
--
-+
- Pixmap pix;
--
-+
- if (!rb) return; /* rb = NULL */
--
-+
- XSetForeground(theDisp, theGC, rb->fg);
--
-+
- if (rb->selected) { pix = (lit) ? rb_on1 : rb_on; }
- else { pix = (lit) ? rb_off1 : rb_off; }
--
-+
- XCopyArea(theDisp, pix, rb->win, theGC, 0,0,RBSIZE,RBSIZE, rb->x, rb->y);
-- DrawString(rb->win, rb->x + RBSIZE + 4,
-+ DrawString(rb->win, rb->x + RBSIZE + 4,
- rb->y + RBSIZE/2 - CHIGH/2 + ASCENT, rb->str);
-
- if (!rb->active) { /* if non-active, dim button and string */
- DimRect(rb->win, rb->x, rb->y, RBSIZE, RBSIZE, rb->bg);
-- DimRect(rb->win, rb->x + RBSIZE + 4, rb->y + RBSIZE/2 - CHIGH/2,
-+ DimRect(rb->win, rb->x + RBSIZE + 4, rb->y + RBSIZE/2 - CHIGH/2,
- (u_int) StringWidth(rb->str), (u_int) CHIGH, rb->bg);
- }
- }
-@@ -527,19 +527,19 @@
- }
-
-
--
-+
- /***********************************************/
- int RBWhich(rblist)
- RBUTT *rblist;
- {
- int i;
--
-+
- /* returns index of currently selected rb. if none, returns -1 */
--
-+
- i = 0;
-- while (rblist && !rblist->selected)
-+ while (rblist && !rblist->selected)
- { rblist = (RBUTT *) rblist->next; i++; }
--
-+
- if (!rblist) return -1; /* didn't find one */
- return i;
- }
-@@ -550,9 +550,9 @@
- RBUTT *rblist;
- {
- int i;
--
-+
- /* returns # of rb's in the list */
--
-+
- i = 0;
- while (rblist) { rblist = (RBUTT *) rblist->next; i++; }
- return i;
-@@ -566,13 +566,13 @@
- {
- RBUTT *rb;
- int i;
--
-+
- /* sets 'active' status of rb #n. does redrawing */
--
-+
- rb=rblist; i=0;
- while (rb && i!=n) { rb = (RBUTT *) rb->next; i++; }
- if (!rb) return; /* n out of range. do nothing */
--
-+
- if (rb->active != act) {
- rb->active = act;
- drawRB(rb, 0);
-@@ -588,13 +588,13 @@
- int i;
-
- /* searches through rblist to see if mouse click at mx,my is in the
-- clickable region of any of the rb's. If it finds one, it returns
-+ clickable region of any of the rb's. If it finds one, it returns
- it's index in the list. If not, returns -1 */
-
- i = 0;
- while (rblist) {
- if (PTINRECT(mx, my, rblist->x, rblist->y, RBSIZE, RBSIZE)) break;
--
-+
- rblist = (RBUTT *) rblist->next;
- i++;
- }
-@@ -613,9 +613,9 @@
- Window rW, cW;
- int i, x, y, rx, ry, lit, rv;
- unsigned int mask;
--
-+
- /* returns '1' if selection changed */
--
-+
- rb=rblist; i=0;
- while (rb && i!=n) { rb = (RBUTT *) rb->next; i++; }
- if (!rb) return 0; /* n out of range */
-@@ -637,7 +637,7 @@
- drawRB(rb, lit);
- XFlush(theDisp);
- }
--
-+
- if (lit && !PTINRECT(x, y, rb->x, rb->y, RBSIZE, RBSIZE)) {
- lit=0;
- drawRB(rb, lit);
-@@ -690,14 +690,14 @@
- do so. We'll be needing them, y'see... */
-
- if (!cbpixmade) {
-- cbcheck = XCreatePixmapFromBitmapData(theDisp, rootW,
-+ cbcheck = XCreatePixmapFromBitmapData(theDisp, rootW,
- (char *) cb_check_bits,
- cb_check_width, cb_check_height, fg, bg, dispDEEP);
-
- cbpixmade = 1;
- }
- }
--
-+
-
-
-
-@@ -708,25 +708,25 @@
- /* draws the cb being pointed at */
-
- XSetForeground(theDisp, theGC, cb->bg);
-- XFillRectangle(theDisp, cb->win, theGC, cb->x+2, cb->y+2,
-+ XFillRectangle(theDisp, cb->win, theGC, cb->x+2, cb->y+2,
- XVCBSIZE-3,XVCBSIZE-3);
-
- XSetForeground(theDisp, theGC, cb->fg);
- XDrawRectangle(theDisp, cb->win, theGC, cb->x, cb->y, XVCBSIZE, XVCBSIZE);
- Draw3dRect(cb->win, cb->x+1, cb->y+1, XVCBSIZE-2, XVCBSIZE-2, R3D_OUT, 2,
-- cb->hi, cb->lo, cb->bg);
-+ cb->hi, cb->lo, cb->bg);
-
-- if (cb->val) XCopyArea(theDisp, cbcheck, cb->win, theGC,
-- 0, 0, cb_check_width, cb_check_height,
-+ if (cb->val) XCopyArea(theDisp, cbcheck, cb->win, theGC,
-+ 0, 0, cb_check_width, cb_check_height,
- cb->x+3, cb->y+3);
--
-+
- XSetForeground(theDisp, theGC, cb->fg);
-- DrawString(cb->win, cb->x + XVCBSIZE+4,
-+ DrawString(cb->win, cb->x + XVCBSIZE+4,
- cb->y+XVCBSIZE/2 - CHIGH/2 + ASCENT, cb->str);
-
- if (!cb->active) { /* if non-active, dim button and string */
- DimRect(cb->win, cb->x, cb->y, XVCBSIZE, XVCBSIZE, cb->bg);
-- DimRect(cb->win, cb->x + XVCBSIZE+4, cb->y+XVCBSIZE/2 - CHIGH/2,
-+ DimRect(cb->win, cb->x + XVCBSIZE+4, cb->y+XVCBSIZE/2 - CHIGH/2,
- (u_int) StringWidth(cb->str), (u_int) CHIGH, cb->bg);
- }
- }
-@@ -761,7 +761,6 @@
- Window rW, cW;
- int x, y, rx, ry, lit;
- unsigned int mask;
-- Pixmap litpix, darkpix;
-
- /* called once we've figured out that the mouse clicked in 'cb' */
-
-@@ -782,7 +781,7 @@
- drawCB(cb,lit);
- XFlush(theDisp);
- }
--
-+
- if (lit && !PTINRECT(x, y, cb->x, cb->y, XVCBSIZE, XVCBSIZE)) {
- lit=0;
- drawCB(cb,lit);
-@@ -809,28 +808,28 @@
- {
- /* draws highlighting */
- if (lit) {
-- if (ctrlColor)
-+ if (ctrlColor)
- Draw3dRect(cb->win, cb->x+1, cb->y+1, XVCBSIZE-2, XVCBSIZE-2, R3D_IN, 2,
- cb->hi, cb->lo, cb->bg);
- else {
- XSetForeground(theDisp, theGC, cb->fg);
-- XDrawRectangle(theDisp, cb->win, theGC, cb->x+1, cb->y+1,
-+ XDrawRectangle(theDisp, cb->win, theGC, cb->x+1, cb->y+1,
- XVCBSIZE-2, XVCBSIZE-2);
- }
- }
-
- else {
-- if (ctrlColor)
-+ if (ctrlColor)
- Draw3dRect(cb->win, cb->x+1, cb->y+1, XVCBSIZE-2, XVCBSIZE-2, R3D_OUT, 2,
- cb->hi, cb->lo, cb->bg);
- else {
- XSetForeground(theDisp, theGC, cb->bg);
-- XDrawRectangle(theDisp, cb->win, theGC, cb->x+1, cb->y+1,
-+ XDrawRectangle(theDisp, cb->win, theGC, cb->x+1, cb->y+1,
- XVCBSIZE-2, XVCBSIZE-2);
- }
- }
- }
--
-+
-
-
- /******************* MBUTT ROUTINES ************************/
-@@ -851,7 +850,7 @@
- XSetWindowAttributes xswa;
- unsigned long xswamask;
- int i;
--
-+
- if (!mbpixmade) {
- mbchk = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) mb_chk_bits,
- mb_chk_width, mb_chk_height, fg, bg, dispDEEP);
-@@ -889,7 +888,7 @@
- xswa.save_under = True;
- xswamask = CWBackPixel | CWBorderPixel | CWSaveUnder;
-
-- mb->mwin = XCreateWindow(theDisp, mb->win, x, y, w, h,
-+ mb->mwin = XCreateWindow(theDisp, mb->win, x, y, w, h,
- (u_int) 2, (int) dispDEEP, InputOutput,
- theVisual, xswamask, &xswa);
-
-@@ -898,7 +897,7 @@
- XSelectInput(theDisp, mb->mwin, ExposureMask | VisibilityChangeMask);
- XSetTransientForHint(theDisp, mb->mwin, mb->win);
- }
--
-+
-
-
-
-@@ -908,15 +907,15 @@
- {
- /* draws a menu button in it's normal state. (When it's actively being
- used (to select an item), all drawing is handled in MBTrack) */
--
-+
- int x,y,i,r,x1,y1;
- unsigned int w,h;
--
-+
- r = 2; /* amt of shadow */
- x = mb->x; y = mb->y; w = mb->w; h = mb->h;
-- x1 = x + (int) w;
-+ x1 = x + (int) w;
- y1 = y + (int) h;
--
-+
- XSetForeground(theDisp, theGC, mb->bg);
- XFillRectangle(theDisp, mb->win, theGC, x+1, y+1, w-1, h-1);
-
-@@ -940,7 +939,7 @@
- XSetBackground(theDisp, theGC, mb->bg);
- XCopyPlane(theDisp, mb->pix, mb->win, theGC, 0,0,
- (u_int) mb->pw, (u_int) mb->ph, x1,y1, 1L);
-- if (!mb->active)
-+ if (!mb->active)
- DimRect(mb->win, x1,y1, (u_int) mb->pw, (u_int) mb->ph, mb->bg);
- }
-
-@@ -997,14 +996,14 @@
- MBUTT *mb;
- {
- /* returns index of first checked selection, or '-1' if nothing selected */
--
-+
- int i;
-
- if (!mb->hascheck) return -1;
-
- for (i=0; i<mb->nlist; i++)
- if (mb->flags[i]) return i;
--
-+
- return -1;
- }
-
-@@ -1017,13 +1016,13 @@
- /* makes entry #n the selected entry (ie, the only one with a check mark)
- Does all redrawing. Does nothing if entry #n already selected.
- Don't let it select 'dim' entries */
--
-+
- int i;
--
-+
- if (n<0 || n>mb->nlist) return; /* # out of range */
- if (!mb->hascheck) return; /* shouldn't happen */
- if (mb->flags[n]) return; /* already selected */
--
-+
- for (i=0; i<MAXMBLEN; i++) mb->flags[i] = 0;
-
- mb->flags[n] = 1;
-@@ -1083,7 +1082,7 @@
- }
- }
- mwide += 8; /* extra room at edges */
--
-+
- /* make wider if any checked menu items */
- for (i=0; i<mb->nlist && !mb->flags[i]; i++);
- hascheck = (i<mb->nlist || mb->hascheck);
-@@ -1091,7 +1090,7 @@
- if (hascheck && mb->title) mwide += 8;
-
- if (mwide < (mb->w+1)) mwide = mb->w+1; /* at least as wide as button */
--
-+
- mhigh = mb->nlist * LINEHIGH + 2 + extratop;
-
- mx = mb->x-1; my = mb->y - 1;
-@@ -1144,10 +1143,10 @@
- }
-
- if (mb->flags[i]) {
-- XCopyArea(theDisp, mbchk, win, theGC, 0, 0, mb_chk_width, mb_chk_height,
-+ XCopyArea(theDisp, mbchk, win, theGC, 0, 0, mb_chk_width, mb_chk_height,
- x - 10, y - 8);
- }
--
-+
- if (!strcmp(mb->list[i], MBSEP)) {
- mb->dim[i] = 1; /* don't select this one */
- if (ctrlColor) {
-@@ -1161,15 +1160,15 @@
- XDrawLine(theDisp,win,theGC,4,y-(ASCENT/2)+1, mwide-5, y-(ASCENT/2)+1);
- XSetForeground(theDisp, theGC, mb->fg);
- }
-- else
-+ else
- XDrawLine(theDisp, win, theGC, 4, y-(ASCENT/2), mwide-5, y-(ASCENT/2));
- }
- else {
- DrawString(win, x, y, txtstr);
-- if (tabstr)
-+ if (tabstr)
- DrawString(win, mwide - mtabwide - 4, y, tabstr);
-
-- if (mb->dim[i])
-+ if (mb->dim[i])
- DimRect(win, x, y-ASCENT, (u_int) mwide, (u_int) CHIGH, mb->bg);
- XSetForeground(theDisp, theGC, mb->fg);
- }
-diff -ruN xv-3.10a/xvcolor.c xv-3.10a-bugfixes/xvcolor.c
---- xv-3.10a/xvcolor.c 1995-01-06 11:29:23.000000000 -0800
-+++ xv-3.10a-bugfixes/xvcolor.c 2004-05-16 18:01:37.000000000 -0700
-@@ -52,7 +52,7 @@
- int pwide, phigh, *pnumcols;
- {
- /* operates on 8-bit images. sorts the colormap into 'best' order
-- * 'order' is the 'best' order to allocate the colors. 'trans' is a
-+ * 'order' is the 'best' order to allocate the colors. 'trans' is a
- * transformation to be done to pic, cpic, and epic (in PIC8 mode) to
- * compress the colormap
- */
-@@ -67,22 +67,22 @@
- /* initialize histogram and compute it */
- for (i=0; i<256; i++) hist[i]=0;
- for (i=pwide*phigh, p=pic; i; i--, p++) hist[*p]++;
--
-+
- if (DEBUG>1) {
- fprintf(stderr,"%s: Desired colormap\n",cmd);
-- for (i=0; i<256; i++)
-+ for (i=0; i<256; i++)
- if (hist[i]) fprintf(stderr,"(%3d %02x,%02x,%02x %d)\n",
- i,rmap[i],gmap[i],bmap[i], hist[i]);
- fprintf(stderr,"\n\n");
- }
--
--
-+
-+
- /* put the actually-used colors into the 'c' array in the order they occur
- also, while we're at it, calculate ncols, and close up gaps in
- colortable */
--
-+
- for (i=ncols=0; i<256; i++) {
-- if (hist[i]) {
-+ if (hist[i]) {
- rmap[ncols] = rmap[i];
- gmap[ncols] = gmap[i];
- bmap[ncols] = bmap[i];
-@@ -104,8 +104,8 @@
- }
- xvbcopy((char *) &c[entry], (char *) &c1[0], sizeof(CMAPENT));
- c[entry].use = 0; /* dealt with */
--
--
-+
-+
- /* sort rest of colormap. Half of the entries are allocated on the
- basis of distance from already allocated colors, and half on the
- basis of usage. (NB: 'taxicab' distance is used throughout this file.)
-@@ -116,7 +116,7 @@
- To obtain O(n^2) performance, we keep each unselected color
- (in c[], with use>0) marked with the minimum distance to any of
- the selected colors (in c1[]). Each time we select a color, we
-- can update the minimum distances in O(n) time.
-+ can update the minimum distances in O(n) time.
-
- mod by Tom Lane Tom.Lane@g.gp.cs.cmu.edu */
-
-@@ -134,8 +134,8 @@
- for (j=0, cj=c; j<ncols; j++,cj++) {
- if (cj->use) { /* this color has not been marked already */
- /* update mindist */
-- d = (cj->r - ckR)*(cj->r - ckR) +
-- (cj->g - ckG)*(cj->g - ckG) +
-+ d = (cj->r - ckR)*(cj->r - ckR) +
-+ (cj->g - ckG)*(cj->g - ckG) +
- (cj->b - ckB)*(cj->b - ckB);
- if (cj->mindist > d) cj->mindist = d;
- if (cj->mindist > mdist) { mdist = cj->mindist; entry = j; }
-@@ -148,8 +148,8 @@
- for (j=0, cj=c; j<ncols; j++,cj++) {
- if (cj->use) { /* this color has not been marked already */
- /* update mindist */
-- d = (cj->r - ckR)*(cj->r - ckR) +
-- (cj->g - ckG)*(cj->g - ckG) +
-+ d = (cj->r - ckR)*(cj->r - ckR) +
-+ (cj->g - ckG)*(cj->g - ckG) +
- (cj->b - ckB)*(cj->b - ckB);
- if (cj->mindist > d) cj->mindist = d;
- if (cj->use > mdist) { mdist = cj->use; entry = j; }
-@@ -162,18 +162,18 @@
- xvbcopy((char *) &c[entry], (char *) &c1[i], sizeof(CMAPENT));
- c[entry].use = 0;
- }
--
-+
-
- for (i=0; i<ncols; i++) order[i] = (byte) c1[i].oldindex;
-
- if (DEBUG>1) {
- fprintf(stderr,"%s: result of sorting colormap\n",cmd);
-- for (i=0; i<ncols; i++)
-+ for (i=0; i<ncols; i++)
- fprintf(stderr,"(%3d %02x,%02x,%02x) ",i,rmap[i],gmap[i],bmap[i]);
- fprintf(stderr,"\n\n");
--
-+
- fprintf(stderr,"%s: allocation order table\n",cmd);
-- for (i=0; i<ncols; i++)
-+ for (i=0; i<ncols; i++)
- fprintf(stderr,"order[%d] = -> %d\n", i, order[i]);
- fprintf(stderr,"\n");
- }
-@@ -240,7 +240,7 @@
- SetISTR(ISTR_COLOR,"Using %s colormap.",
- (haveStdCmap == STD_111 ? "2x2x2" :
- haveStdCmap == STD_222 ? "4x4x4" :
-- haveStdCmap == STD_232 ? "4x8x4" :
-+ haveStdCmap == STD_232 ? "4x8x4" :
- haveStdCmap == STD_666 ? "6x6x6" : "8x8x4"));
-
- if (ncols>0) SetISTR(ISTR_COLOR2,stdCmapSuccess);
-@@ -251,7 +251,7 @@
-
- for (i=0; i<numcols; i++) {
- int i332;
-- i332 = ((int)rMap[i]&0xe0) | (((int)gMap[i]&0xe0)>>3) |
-+ i332 = ((int)rMap[i]&0xe0) | (((int)gMap[i]&0xe0)>>3) |
- (((int)bMap[i]&0xc0)>>6);
-
- cols[i] = stdcols[i332];
-@@ -291,7 +291,7 @@
- }
-
- else {
-- for (i=0; i<nfcols; i++)
-+ for (i=0; i<nfcols; i++)
- xvFreeColors(theDisp, theCmap, &freecols[i], 1, 0L);
-
- nfcols = 0;
-@@ -314,19 +314,19 @@
- unique = p2alloc = 0;
- rwthistime = 0;
-
-- /* FIRST PASS COLOR ALLOCATION:
-+ /* FIRST PASS COLOR ALLOCATION:
- for each color in the 'desired colormap', try to get it via
- xvAllocColor(). If for any reason it fails, mark that pixel
- 'unallocated' and worry about it later. Repeat. */
-
-- /* attempt to allocate first ncols entries in colormap
-+ /* attempt to allocate first ncols entries in colormap
- note: On displays with less than 8 bits per RGB gun, it's quite
- possible that different colors in the original picture will be
- mapped to the same color on the screen. X does this for you
-- silently. However, this is not-desirable for this application,
-+ silently. However, this is not-desirable for this application,
- because when I say 'allocate me 32 colors' I want it to allocate
- 32 different colors, not 32 instances of the same 4 shades... */
--
-+
-
- for (i=0; i<256; i++) failed[i] = 1;
-
-@@ -334,7 +334,7 @@
-
- for (i=0; i<numcols && unique<ncols; i++) {
- c = colAllocOrder[i];
-- if (mono) {
-+ if (mono) {
- int intens = MONO(rMap[c], gMap[c], bMap[c]);
- defs[c].red = defs[c].green = defs[c].blue = intens<<8;
- }
-@@ -346,8 +346,8 @@
-
- defs[c].flags = DoRed | DoGreen | DoBlue;
-
-- if (!(colorMapMode==CM_OWNCMAP && cmap==theCmap && CMAPVIS(theVisual))
-- && xvAllocColor(theDisp,cmap,&defs[c])) {
-+ if (!(colorMapMode==CM_OWNCMAP && cmap==theCmap && CMAPVIS(theVisual))
-+ && xvAllocColor(theDisp,cmap,&defs[c])) {
- unsigned long pixel, *fcptr;
-
- pixel = cols[c] = defs[c].pixel;
-@@ -355,7 +355,7 @@
- gdisp[c] = defs[c].green >> 8;
- bdisp[c] = defs[c].blue >> 8;
- failed[c]= 0;
--
-+
- /* see if the newly allocated color is new and different */
- for (j=0, fcptr=freecols; j<nfcols && *fcptr!=pixel; j++,fcptr++);
- if (j==nfcols) unique++;
-@@ -365,24 +365,24 @@
- }
-
- else {
-- /* the allocation failed. If we want 'perfect' color, and we haven't
-+ /* the allocation failed. If we want 'perfect' color, and we haven't
- already created our own colormap, we'll want to do so */
- if ((colorMapMode == CM_PERFECT || colorMapMode == CM_OWNCMAP)
- && !LocalCmap && CMAPVIS(theVisual)) {
- LocalCmap = XCreateColormap(theDisp, vrootW, theVisual, AllocNone);
--
-+
- if (LocalCmap) { /* succeeded, presumably */
- /* free all colors that were allocated, and try again with the
- new colormap. This is necessary because 'XCopyColormapAndFree()'
- has the unpleasant side effect of freeing up the various
- colors I need for the control panel, etc. */
-
-- for (i=0; i<nfcols; i++)
-+ for (i=0; i<nfcols; i++)
- xvFreeColors(theDisp, theCmap, &freecols[i], 1, 0L);
--
-+
- if (mainW && !useroot) XSetWindowColormap(theDisp,mainW, LocalCmap);
-
-- if (mainW && !useroot && cmapInGam)
-+ if (mainW && !useroot && cmapInGam)
- XSetWindowColormap(theDisp,gamW, LocalCmap);
- cmap = LocalCmap;
-
-@@ -402,9 +402,9 @@
- }
- }
- } /* FIRST PASS */
--
--
--
-+
-+
-+
- if (nfcols==numcols) {
- if (numcols != unique)
- SetISTR(ISTR_COLOR,"Got all %d colors. (%d unique)", numcols,
-@@ -415,7 +415,7 @@
- SetISTR(ISTR_COLOR2,"");
- return;
- }
--
-+
-
-
- /* SECOND PASS COLOR ALLOCATION:
-@@ -427,7 +427,7 @@
- is in the X colormap. Try to allocate that color (read only).
- If that fails, the THIRD PASS will deal with it */
-
-- SetISTR(ISTR_COLOR,"Got %d of %d colors. (%d unique)",
-+ SetISTR(ISTR_COLOR,"Got %d of %d colors. (%d unique)",
- nfcols,numcols,unique);
-
- /* read entire colormap (or first 256 entries) into 'ctab' */
-@@ -436,28 +436,28 @@
- if (dc>0) { /* only do SECOND PASS if there IS a colormap to read */
- for (i=0; i<dc; i++) ctab[i].pixel = (unsigned long) i;
- XQueryColors(theDisp, cmap, ctab, dc);
--
-+
- for (i=0; i<numcols && unique<ncols; i++) {
- c = colAllocOrder[i];
--
-+
- if (failed[c]) { /* an unallocated pixel */
- int d, mdist, close;
- int rd, gd, bd, ri, gi, bi;
--
-+
- mdist = 1000000; close = -1;
- ri = rMap[c]; gi = gMap[c]; bi = bMap[c];
--
-+
- for (j=0; j<dc; j++) {
- rd = ri - (ctab[j].red >>8);
- gd = gi - (ctab[j].green>>8);
- bd = bi - (ctab[j].blue >>8);
--
-+
- d = rd*rd + gd*gd + bd*bd;
- if (d<mdist) { mdist=d; close=j; }
- }
--
-+
- if (close<0) FatalError("This Can't Happen! (How reassuring.)");
-- if (xvAllocColor(theDisp, cmap, &ctab[close])) {
-+ if (xvAllocColor(theDisp, cmap, &ctab[close])) {
- xvbcopy((char *) &ctab[close], (char *) &defs[c], sizeof(XColor));
- failed[c]= 0;
- cols[c] = ctab[close].pixel;
-@@ -487,7 +487,7 @@
-
- mdist = 1000000; close = -1;
- ri = rMap[c]; gi = gMap[c]; bi = bMap[c];
--
-+
- /* search the alloc'd colors */
- for (j=0; j<nfcols; j++) {
- k = fc2pcol[j];
-@@ -535,7 +535,7 @@
- unsigned long pmr[1], pix[1];
- c = colAllocOrder[i];
-
-- if (cellgroup[c]) {
-+ if (cellgroup[c]) {
- int n;
- /* this color is part of a group. see if its group's
- been seen already, and if so, skip this */
-@@ -548,11 +548,11 @@
- }
- }
-
-- if (!(colorMapMode==CM_OWNCMAP && cmap==theCmap && CMAPVIS(theVisual)) &&
-+ if (!(colorMapMode==CM_OWNCMAP && cmap==theCmap && CMAPVIS(theVisual)) &&
- XAllocColorCells(theDisp, cmap, False, pmr, 0, pix, 1)) {
- defs[c].pixel = cols[c] = pix[0];
- failed[c] = 0;
-- if (mono) {
-+ if (mono) {
- int intens = MONO(rMap[c], gMap[c], bMap[c]);
- defs[c].red = defs[c].green = defs[c].blue = intens<<8;
- }
-@@ -573,20 +573,20 @@
- }
-
- else {
-- if ((colorMapMode == CM_PERFECT || colorMapMode == CM_OWNCMAP)
-+ if ((colorMapMode == CM_PERFECT || colorMapMode == CM_OWNCMAP)
- && !LocalCmap && CMAPVIS(theVisual)) {
- LocalCmap = XCreateColormap(theDisp, vrootW, theVisual, AllocNone);
--
-+
- /* free all colors that were allocated, and try again with the
- new colormap. This is necessary because 'XCopyColormapAndFree()'
- has the unpleasant side effect of freeing up the various
- colors I need for the control panel, etc. */
-
-- for (i=0; i<nfcols; i++)
-+ for (i=0; i<nfcols; i++)
- xvFreeColors(theDisp, theCmap, &freecols[i], 1, 0L);
--
-+
- if (mainW && !useroot) XSetWindowColormap(theDisp,mainW, LocalCmap);
-- if (mainW && !useroot && cmapInGam)
-+ if (mainW && !useroot && cmapInGam)
- XSetWindowColormap(theDisp,gamW, LocalCmap);
- cmap = LocalCmap;
-
-@@ -608,7 +608,7 @@
- }
-
- else {
-- /* Failed to allocate all colors in picture. Map remaining desired
-+ /* Failed to allocate all colors in picture. Map remaining desired
- colors into closest allocated desired colors */
-
- if (nfcols==0 && !LocalCmap) {
-@@ -623,7 +623,7 @@
- allocROColors();
- return;
- }
--
-+
- SetISTR(ISTR_COLOR,"Got %d of %d colors.", nfcols,numcols);
-
- for (i=0; i<numcols; i++) {
-@@ -662,7 +662,7 @@
- j = fc2pcol[i];
- defs[j].pixel = freecols[i];
-
-- if (mono) {
-+ if (mono) {
- int intens = MONO(rMap[j], gMap[j], bMap[j]);
- defs[j].red = defs[j].green = defs[j].blue = intens<<8;
- }
-@@ -706,9 +706,9 @@
- if (theVisual->class == TrueColor || theVisual->class == DirectColor) {
- unsigned long r, g, b, rmask, gmask, bmask, origr, origg, origb;
- int rshift, gshift, bshift;
--
-- /* shift r,g,b so that high bit of 16-bit color specification is
-- * aligned with high bit of r,g,b-mask in visual,
-+
-+ /* shift r,g,b so that high bit of 16-bit color specification is
-+ * aligned with high bit of r,g,b-mask in visual,
- * AND each component with its mask,
- * and OR the three components together
- */
-@@ -781,7 +781,7 @@
- " mask=%04lx,%04lx,%04lx pix=%08lx\n",
- rmask, gmask, bmask, cdef->pixel);
- }
--
-+
- return 1;
- }
- else {
-@@ -811,7 +811,7 @@
- {
- int i, j;
-
-- /* if regroup is set, we *must* do a full realloc, as the cols[] array
-+ /* if regroup is set, we *must* do a full realloc, as the cols[] array
- isn't correct anymore. (cell groupings changed) */
-
- ApplyECctrls(); /* set {r,g,b}cmap[editColor] based on dial settings */
-@@ -830,16 +830,16 @@
- }
- }
-
--
-+
- /* do something clever if we're using R/W color and this colorcell isn't
- shared */
-
- if (!regroup && allocMode==AM_READWRITE && rwthistime) {
- /* let's try to be clever */
-- /* determine if the editColor cell is unique, or shared (among
-+ /* determine if the editColor cell is unique, or shared (among
- non-group members, that is) */
-
-- for (i=j=0; i<numcols; i++)
-+ for (i=j=0; i<numcols; i++)
- if (rwpc2pc[i] == rwpc2pc[editColor]) j++;
-
- /* if this is a group, subtract off the non-this-one pixels from group */
-@@ -901,7 +901,7 @@
- }
-
- /* shift 0..i-1 down one position */
-- xvbcopy((char *) colAllocOrder, (char *) colAllocOrder+1,
-+ xvbcopy((char *) colAllocOrder, (char *) colAllocOrder+1,
- i * sizeof(colAllocOrder[0]));
- colAllocOrder[0] = editColor;
- }
-@@ -930,9 +930,9 @@
- * stdfreecols[256] - list of colors to free on exit
- * stdnfcols - # of colors to free
- *
-- * possibly modifies browR, browG, browB, and browcols arrays
-+ * possibly modifies browR, browG, browB, and browcols arrays
- * (if !browPerfect)
-- */
-+ */
-
- /* returns '1' if the colors were reallocated, '0' otherwise */
-
-@@ -946,18 +946,18 @@
-
- /* note:
- * if (ncols==0) (ie, we're either on, or emulating a b/w display),
-- * build std*[], std*disp[], colormaps, but don't actually
-+ * build std*[], std*disp[], colormaps, but don't actually
- * allocate any colors.
- */
-
-- int i,j,r,g,b, desMode, screwed;
-+ int i, r,g,b, desMode, screwed;
- XColor def;
- byte rmap[256],gmap[256],bmap[256],order[256];
- unsigned long descols[256];
- int des2got[256], failed[256];
- int maplen, exactCnt, nearCnt;
--
--
-+
-+
- /* generate stdr,stdg,stdb cmap. Same in all cases */
- for (r=0, i=0; r<8; r++)
- for (g=0; g<8; g++)
-@@ -966,10 +966,10 @@
- stdg[i] = (g*255)/7;
- stdb[i] = (b*255)/3;
- }
--
--
-+
-+
- /* determine what size cmap we should build */
-- if (theVisual->class == TrueColor ||
-+ if (theVisual->class == TrueColor ||
- theVisual->class == DirectColor) desMode = STD_332;
- else if (colorMapMode == CM_STDCMAP) desMode = STD_232;
- else desMode = STD_222;
-@@ -983,9 +983,9 @@
- }
-
-
-- if (DEBUG) fprintf(stderr,"MakeStdCmaps: have=%d, des=%d, ncols=%d\n",
-+ if (DEBUG) fprintf(stderr,"MakeStdCmaps: have=%d, des=%d, ncols=%d\n",
- haveStdCmap, desMode, ncols);
--
-+
- if (haveStdCmap != STD_NONE && haveStdCmap == desMode) return 0;
- freeStdCmaps();
-
-@@ -997,7 +997,7 @@
- for (i=0; i<256; i++) des2got[i] = i;
- exactCnt = nearCnt = 0;
-
--
-+
- if (desMode == STD_111) { /* try to alloc 8 colors */
- /* generate a 1/1/1 desired colormap */
- maplen = 8;
-@@ -1009,7 +1009,7 @@
- bmap[i] = (b*255);
- }
- }
--
-+
- else if (desMode == STD_222) { /* try to alloc 64 colors */
- /* generate a 2/2/2 desired colormap */
- maplen = 64;
-@@ -1021,7 +1021,7 @@
- bmap[i] = (b*255)/3;
- }
- }
--
-+
- else if (desMode == STD_232) { /* try to alloc 128 colors */
- /* generate a 2/3/2 desired colormap */
- maplen = 128;
-@@ -1033,7 +1033,7 @@
- bmap[i] = (b*255)/3;
- }
- }
--
-+
- else if (desMode == STD_666) { /* try to alloc 216 colors */
- /* generate a 6*6*6 desired colormap */
- maplen = 216;
-@@ -1045,14 +1045,14 @@
- bmap[i] = (b*255)/5;
- }
- }
--
-+
- else { /* desMode == STD_332 */
- maplen = 256;
- for (i=0; i<maplen; i++) {
- rmap[i] = stdr[i]; gmap[i] = stdg[i]; bmap[i] = stdb[i];
- }
- }
--
-+
-
- /* sort the colors according to the diversity algorithm... */
- diverseOrder(rmap,gmap,bmap,maplen,order);
-@@ -1072,7 +1072,7 @@
- def.red = rmap[order[i]] << 8;
- def.green = gmap[order[i]] << 8;
- def.blue = bmap[order[i]] << 8;
--
-+
- def.flags = DoRed | DoGreen | DoBlue;
-
- if (xvAllocColor(theDisp, theCmap, &def)) { /* success */
-@@ -1090,34 +1090,34 @@
-
- if (numgot != maplen) {
- /* PHASE 2: find 'close' colors in colormap, try to alloc those */
--
-+
- /* read entire colormap (or first 256 entries) into 'ctab' */
- dc = (ncells<256) ? ncells : 256;
- if (dc>0) {
- for (i=0; i<dc; i++) ctab[i].pixel = (unsigned long) i;
- XQueryColors(theDisp, theCmap, ctab, dc);
--
-+
- for (i=0; i<maplen; i++) {
- if (failed[i]) {
--
-+
- /* find closest color in colormap, and try to alloc it */
- mind = 1000000; /* greater than 3 * (256^2) */
- for (j=0,num = -1; j<dc; j++) {
- rd = rmap[i] - (ctab[j].red >>8);
- gd = gmap[i] - (ctab[j].green>>8);
- bd = bmap[i] - (ctab[j].blue >>8);
--
-+
- d = CDIST(rd, gd, bd);
- if (d<mind) { mind = d; num = j; }
- }
--
-+
- if (num < 0) screwed = 1;
- else if (xvAllocColor(theDisp, theCmap, &ctab[num])) { /*success*/
- des2got[i] = i;
- descols[i] = ctab[num].pixel;
- failed[i] = 0;
-- nearCnt++;
-- /* for (j=0; j<stdnfcols && stdfreecols[j]!=ctab[num].pixel;
-+ nearCnt++;
-+ /* for (j=0; j<stdnfcols && stdfreecols[j]!=ctab[num].pixel;
- j++); */
- stdfreecols[stdnfcols++] = ctab[num].pixel;
- }
-@@ -1125,12 +1125,12 @@
- }
- }
- }
--
-- /* PHASE 3: map remaining unallocated colors into closest we got */
--
-+
-+ /* PHASE 3: map remaining unallocated colors into closest we got */
-+
- for (i=0; i<maplen; i++) {
- if (failed[i]) {
--
-+
- /* find closest alloc'd color */
- mind = 1000000; /* greater than 3 * (256^2) */
- for (j=0,num=0; j<maplen; j++) {
-@@ -1139,7 +1139,7 @@
- if (d<mind) { mind = d; num = j; }
- }
- }
--
-+
- if (failed[num]) screwed = 1;
- else {
- descols[i] = descols[num];
-@@ -1151,8 +1151,8 @@
- }
-
-
-- /* at this point, we have 'descols', a maplen long array of
-- X pixel values that maps 1/1/1, 2/2/2, 6*6*6, or 3/3/2 values
-+ /* at this point, we have 'descols', a maplen long array of
-+ X pixel values that maps 1/1/1, 2/2/2, 6*6*6, or 3/3/2 values
- into an X pixel value */
-
- /* build stdcols and stdrdisp,stdgdisp,stdbdisp colormap */
-@@ -1170,7 +1170,7 @@
-
- stdcols[i332] = descols[des2got[i111]];
- }
-- }
-+ }
-
- else if (desMode == STD_222) {
- for (r=0; r<8; r++)
-@@ -1186,7 +1186,7 @@
-
- stdcols[i332] = descols[des2got[i222]];
- }
-- }
-+ }
-
- else if (desMode == STD_232) {
- for (r=0; r<8; r++)
-@@ -1201,7 +1201,7 @@
- stdbdisp[i332] = bmap[des2got[i232]];
- stdcols[i332] = descols[des2got[i232]];
- }
-- }
-+ }
-
- else if (desMode == STD_666) {
- for (r=0,i=0; r<8; r++)
-@@ -1221,7 +1221,7 @@
-
- stdcols[i] = descols[des2got[i666]];
- }
-- }
-+ }
-
- else { /* desMode == STD_332 */
- for (i=0; i<256; i++) {
-@@ -1249,22 +1249,22 @@
- if (DEBUG > 1) {
- fprintf(stderr,"MakeStdCmaps: ncols=%d maplen=%d\n", ncols, maplen);
- fprintf(stderr," std*[]= ");
-- for (i=0; i<256; i++)
-+ for (i=0; i<256; i++)
- fprintf(stderr,"%02x,%02x,%02x ",stdr[i],stdg[i],stdb[i]);
- fprintf(stderr,"\n\n");
-
- fprintf(stderr," disp[]= ");
-- for (i=0; i<256; i++)
-+ for (i=0; i<256; i++)
- fprintf(stderr,"%02x,%02x,%02x ",stdrdisp[i],stdgdisp[i],stdbdisp[i]);
- fprintf(stderr,"\n\n");
-
- fprintf(stderr," stdcols[]= ");
-- for (i=0; i<256; i++)
-+ for (i=0; i<256; i++)
- fprintf(stderr,"%02lx ",stdcols[i]);
- fprintf(stderr,"\n\n");
-
- fprintf(stderr," stdfreecols[%d] = ", stdnfcols);
-- for (i=0; i<stdnfcols; i++)
-+ for (i=0; i<stdnfcols; i++)
- fprintf(stderr,"%02lx ",stdfreecols[i]);
- fprintf(stderr,"\n\n");
- }
-@@ -1272,8 +1272,8 @@
- if (exactCnt == maplen)
- sprintf(stdCmapSuccess, "Got all %d colors.", exactCnt);
- else {
-- if (nearCnt>0)
-- sprintf(stdCmapSuccess, "Got %d out of %d colors. (%d close color%s)",
-+ if (nearCnt>0)
-+ sprintf(stdCmapSuccess, "Got %d out of %d colors. (%d close color%s)",
- exactCnt, maplen, nearCnt, (nearCnt>1) ? "s" : "");
- else
- sprintf(stdCmapSuccess, "Got %d out of %d colors.", exactCnt, maplen);
-@@ -1292,11 +1292,11 @@
- /* This function should only be called once, at the start of the program.
- *
- * produces many things:
-- * browR,browG,browB[256]
-+ * browR,browG,browB[256]
- * - a 3/3/2 colormap used by genIcon
- * browcols[256] - maps 3/3/2 values into X colors
- * browCmap - local cmap used in browse window, if browPerfect
-- */
-+ */
-
- int i,j,r,g,b, screwed, num, exactCnt, nearCnt;
- XColor def;
-@@ -1306,8 +1306,8 @@
- long d, mind;
-
-
-- if (DEBUG)
-- fprintf(stderr,"MakeBrowCmap: perfect = %d, ncols = %d\n",
-+ if (DEBUG)
-+ fprintf(stderr,"MakeBrowCmap: perfect = %d, ncols = %d\n",
- browPerfect, ncols);
-
- if (ncols == 0 || !CMAPVIS(theVisual)) browPerfect = 0;
-@@ -1350,7 +1350,7 @@
- def.red = rmap[order[i]] << 8;
- def.green = gmap[order[i]] << 8;
- def.blue = bmap[order[i]] << 8;
--
-+
- def.flags = DoRed | DoGreen | DoBlue;
-
- if (xvAllocColor(theDisp, browCmap, &def)) { /* success */
-@@ -1358,14 +1358,14 @@
- descols[order[i]] = def.pixel;
-
- if (DEBUG>1)
-- fprintf(stderr,"makebrowcmap: Phase 1: Alloc %x,%x,%x succeeded!\n",
-+ fprintf(stderr,"makebrowcmap: Phase 1: Alloc %x,%x,%x succeeded!\n",
- rmap[order[i]], gmap[order[i]], bmap[order[i]]);
- }
- else failed[order[i]] = 1;
- }
-
--
-- /* PHASE 2: map remaining unallocated colors into closest we got */
-+
-+ /* PHASE 2: map remaining unallocated colors into closest we got */
-
- for (i=0; i<256; i++) {
- if (failed[i]) {
-@@ -1377,9 +1377,9 @@
- if (d<mind) { mind = d; num = j; }
- }
- }
--
-+
- if (DEBUG>1)
-- fprintf(stderr,"makebrowcmap: closest to %x,%x,%x = %x,%x,%x\n",
-+ fprintf(stderr,"makebrowcmap: closest to %x,%x,%x = %x,%x,%x\n",
- rmap[i],gmap[i],bmap[i], rmap[num], gmap[num], bmap[num]);
-
- if (failed[num]) screwed = 1;
-@@ -1406,7 +1406,7 @@
- byte *rmap, *gmap, *bmap, *order;
- int maplen;
- {
-- /* takes a colormap (maxlen 256) and produces an order array that
-+ /* takes a colormap (maxlen 256) and produces an order array that
- contains the most-diverse order for allocating these colors */
-
- int dist[256], i, pick, maxv, ocnt, d;
-@@ -1422,7 +1422,7 @@
-
- ocnt = 0;
- order[ocnt++] = pick;
--
-+
- /* init dist[] array */
- for (i=0; i<maplen; i++) dist[i] = 1000000;
-
-@@ -1509,14 +1509,14 @@
- else if (cmode == CM_NORMAL) {
- if (novbrowse || browPerfect || haveStdCmap != iconCmapSize)
- freeStdCmaps();
--
-+
- /* if using browser, and killed stdcmap, make icon stdcmap */
- if (!novbrowse && !browPerfect && haveStdCmap == STD_NONE) {
- if (MakeStdCmaps() && anyBrowUp && CMAPVIS(theVisual))
- RegenBrowseIcons();
- }
- }
--
-+
- else if (cmode == CM_PERFECT) { }
- else if (cmode == CM_OWNCMAP) { }
-
-@@ -1540,7 +1540,7 @@
- SetEpicMode();
- if (genepic) GenerateEpic(eWIDE, eHIGH);
- }
-- else {
-+ else {
- if (oldmode == CM_STDCMAP && cmode != CM_STDCMAP && epicMode != EM_RAW) {
- /* just left STDCMAP mode. Switch to using 'RAW' */
- epicMode = EM_RAW;
-diff -ruN xv-3.10a/xvctrl.c xv-3.10a-bugfixes/xvctrl.c
---- xv-3.10a/xvctrl.c 1994-12-22 14:34:41.000000000 -0800
-+++ xv-3.10a-bugfixes/xvctrl.c 2004-05-23 11:56:37.000000000 -0700
-@@ -1,4 +1,4 @@
--/*
-+/*
- * xvctrl.c - Control box handling functions
- *
- * callable functions:
-@@ -9,7 +9,7 @@
- * RedrawCtrl(x,y,w,h) - called by 'expose' events
- * ClickCtrl(x,y)
- * DrawCtrlStr() - called to redraw 'ISTR_INFO' string in ctrlW
-- * ScrollToCurrent() - called when list selection is changed
-+ * ScrollToCurrent() - called when list selection is changed
- *
- * LSCreate() - creates a listbox
- * LSRedraw() - redraws 'namelist' box
-@@ -49,7 +49,10 @@
- #include "bits/uicon"
- #include "bits/oicon1"
- #include "bits/oicon2"
--#include "bits/icon"
-+#ifdef REGSTR
-+# define OMIT_ICON_BITS
-+# include "bits/icon"
-+#endif
-
- #define CTRLWIDE 440 /* (fixed) size of control window */
- #define CTRLHIGH 348 /* 379 */
-@@ -80,7 +83,7 @@
- in xv.h */
-
-
--static char *dispMList[] = { "Raw\tr",
-+static char *dispMList[] = { "Raw\tr",
- "Dithered\td",
- "Smooth\ts",
- MBSEP,
-@@ -91,7 +94,7 @@
- "Use Own Colormap",
- "Use Std. Colormap" };
-
--static char *rootMList[] = { "Window",
-+static char *rootMList[] = { "Window",
- "Root: tiled",
- "Root: integer tiled",
- "Root: mirrored",
-@@ -159,12 +162,12 @@
- void CreateCtrl(geom)
- char *geom;
- {
-- int i, listh, topskip;
-+ int listh, topskip;
- double skip;
- XSetWindowAttributes xswa;
- Pixmap oicon1Pix, oicon2Pix;
-
-- ctrlW = CreateWindow("xv controls", "XVcontrols", geom,
-+ ctrlW = CreateWindow("xv controls", "XVcontrols", geom,
- CTRLWIDE, CTRLHIGH, infofg, infobg, 0);
- if (!ctrlW) FatalError("can't create controls window!");
-
-@@ -205,10 +208,10 @@
- oicon2Pix = MakePix1(ctrlW, oicon2_bits, oicon2_width, oicon2_height);
-
- if (!grayTile || !dimStip || !fifoPix || !chrPix || !dirPix ||
-- !blkPix || !lnkPix || !regPix || !rotlPix || !fliphPix ||
-+ !blkPix || !lnkPix || !regPix || !rotlPix || !fliphPix ||
- !flipvPix || !p10Pix || !m10Pix || !cutPix || !copyPix ||
- !pastePix || !clearPix || !uiconPix || !oiconPix || !oicon1Pix ||
-- !oicon2Pix || !padPix || !annotPix)
-+ !oicon2Pix || !padPix || !annotPix)
- FatalError("unable to create all pixmaps in CreateCtrl()\n");
-
-
-@@ -226,7 +229,7 @@
- XFreePixmap(theDisp, oicon1Pix);
- XFreePixmap(theDisp, oicon2Pix);
-
--
-+
-
- if (ctrlColor) XSetWindowBackground(theDisp, ctrlW, locol);
- else XSetWindowBackgroundPixmap(theDisp, ctrlW, grayTile);
-@@ -234,7 +237,7 @@
- listh = LINEHIGH * NLINES;
-
- LSCreate(&nList, ctrlW, 5, 52, (CTRLWIDE-BUTTW-18),
-- LINEHIGH*NLINES, NLINES, dispnames, numnames,
-+ LINEHIGH*NLINES, NLINES, dispnames, numnames,
- infofg, infobg, hicol, locol, RedrawNList, 0, 0);
- nList.selected = 0; /* default to first name selected */
-
-@@ -245,8 +248,8 @@
-
- topskip = nList.y;
- skip = ((double) (nList.h - (CHIGH+5))) / 6.0;
-- if (skip > SBUTTH+8) {
-- skip = SBUTTH + 7;
-+ if (skip > SBUTTH+8) {
-+ skip = SBUTTH + 7;
- topskip = nList.y + (nList.h - (6*skip + (CHIGH+5))) / 2;
- }
-
-@@ -258,7 +261,7 @@
- #define R_BY3 (topskip + (int)(3*skip))
- #define R_BY4 (topskip + (int)(4*skip))
- #define R_BY5 (topskip + (int)(5*skip))
--
-+
- BTCreate(&but[BNEXT], ctrlW, R_BX0, R_BY0, R_BW1, SBUTTH, "Next", BCLS);
- BTCreate(&but[BPREV], ctrlW, R_BX0, R_BY1, R_BW1, SBUTTH, "Prev", BCLS);
- BTCreate(&but[BLOAD], ctrlW, R_BX0, R_BY2, R_BW1, SBUTTH, "Load", BCLS);
-@@ -309,7 +312,7 @@
- BTCreate(&but[BABOUT], ctrlW,BX4, BY1,BUTTW,BUTTH,"About XV",BCLS);
- BTCreate(&but[BQUIT], ctrlW,BX5, BY1,BUTTW,BUTTH,"Quit", BCLS);
-
-- BTCreate(&but[BXV], ctrlW,5,5, 100, (u_int) nList.y - 5 - 2 - 5,
-+ BTCreate(&but[BXV], ctrlW,5,5, 100, (u_int) nList.y - 5 - 2 - 5,
- "", BCLS);
-
- SetButtPix(&but[BCOPY], copyPix, copy_width, copy_height);
-@@ -329,7 +332,7 @@
- if (ctrlColor) {
- SetButtPix(&but[BXV], oiconPix, oicon1_width, oicon1_height);
- but[BXV].colorpix = 1;
-- }
-+ }
- else SetButtPix(&but[BXV], iconPix, icon_width, icon_height);
- #else
- SetButtPix(&but[BXV], uiconPix, uicon_width, uicon_height);
-@@ -338,21 +341,21 @@
- XMapSubwindows(theDisp, ctrlW);
-
-
-- /* have to create menu buttons after XMapSubWindows, as we *don't* want
-+ /* have to create menu buttons after XMapSubWindows, as we *don't* want
- the popup menus mapped */
-
-- MBCreate(&dispMB, ctrlW, CTRLWIDE - 8 - 112 - 2*(112+2), 5,112,19,
-+ MBCreate(&dispMB, ctrlW, CTRLWIDE - 8 - 112 - 2*(112+2), 5,112,19,
- "Display", dispMList, DMB_MAX, BCLS);
-- MBCreate(&conv24MB, ctrlW, CTRLWIDE - 8 - 112 - (112+2), 5,112,19,
-+ MBCreate(&conv24MB, ctrlW, CTRLWIDE - 8 - 112 - (112+2), 5,112,19,
- "24/8 Bit", conv24MList, CONV24_MAX, BCLS);
-- MBCreate(&algMB, ctrlW, CTRLWIDE - 8 - 112, 5,112,19,
-+ MBCreate(&algMB, ctrlW, CTRLWIDE - 8 - 112, 5,112,19,
- "Algorithms", algMList, ALG_MAX, BCLS);
-
-- MBCreate(&rootMB, ctrlW, CTRLWIDE - 8 - 112 - 2*(112+2), 5+21,112,19,
-+ MBCreate(&rootMB, ctrlW, CTRLWIDE - 8 - 112 - 2*(112+2), 5+21,112,19,
- "Root", rootMList, RMB_MAX, BCLS);
-- MBCreate(&windowMB, ctrlW, CTRLWIDE - 8 - 112 - (112+2), 5+21,112,19,
-+ MBCreate(&windowMB, ctrlW, CTRLWIDE - 8 - 112 - (112+2), 5+21,112,19,
- "Windows", windowMList, WMB_MAX, BCLS);
-- MBCreate(&sizeMB, ctrlW, CTRLWIDE - 8 - 112, 5+21,112,19,
-+ MBCreate(&sizeMB, ctrlW, CTRLWIDE - 8 - 112, 5+21,112,19,
- "Image Size", sizeMList, SZMB_MAX, BCLS);
-
-
-@@ -395,7 +398,7 @@
- byte *bits;
- int w,h;
- {
-- return XCreatePixmapFromBitmapData(theDisp, win, (char *) bits,
-+ return XCreatePixmapFromBitmapData(theDisp, win, (char *) bits,
- (u_int) w, (u_int) h, 1L,0L,1);
- }
-
-@@ -404,7 +407,7 @@
- void CtrlBox(vis)
- int vis;
- {
-- if (vis) XMapRaised(theDisp, ctrlW);
-+ if (vis) XMapRaised(theDisp, ctrlW);
- else XUnmapWindow(theDisp, ctrlW);
-
- ctrlUp = vis;
-@@ -416,7 +419,6 @@
- int x,y,w,h;
- {
- int i;
-- XRectangle xr;
-
- RANGE(w, 0, CTRLWIDE);
- RANGE(h, 0, CTRLHIGH);
-@@ -452,7 +454,7 @@
- /***************************************************/
- void DrawCtrlNumFiles()
- {
-- int x,y,w,h;
-+ int x,y,w;
- char foo[40];
-
- x = but[BNEXT].x;
-@@ -463,14 +465,14 @@
- XSetBackground(theDisp, theGC, infobg);
-
- sprintf(foo, "%d file%s", numnames, (numnames==1) ? "" : "s");
--
-+
- XSetForeground(theDisp, theGC, infobg);
- XFillRectangle(theDisp,ctrlW, theGC, x+1,y+1, (u_int) w-1, (u_int) CHIGH+5);
-
- XSetForeground(theDisp,theGC,infofg);
- XDrawRectangle(theDisp,ctrlW, theGC, x,y, (u_int) w, (u_int) CHIGH+6);
-
-- Draw3dRect(ctrlW, x+1,y+1, (u_int) w-2, (u_int) CHIGH+4,
-+ Draw3dRect(ctrlW, x+1,y+1, (u_int) w-2, (u_int) CHIGH+4,
- R3D_IN, 2, hicol, locol, infobg);
-
- XSetForeground(theDisp,theGC,infofg);
-@@ -489,7 +491,7 @@
- st1 = GetISTR(ISTR_WARNING);
-
- XSetForeground(theDisp, theGC, infobg);
-- XFillRectangle(theDisp, ctrlW, theGC, 0, y+1,
-+ XFillRectangle(theDisp, ctrlW, theGC, 0, y+1,
- CTRLWIDE, (u_int)((CHIGH+4)*2+1));
-
- XSetForeground(theDisp, theGC, infofg);
-@@ -501,7 +503,7 @@
- XSetForeground(theDisp, theGC, locol);
- XDrawLine(theDisp, ctrlW, theGC, 0, y+1, CTRLWIDE, y+1);
- XDrawLine(theDisp, ctrlW, theGC, 0, y+CHIGH+5, CTRLWIDE, y+CHIGH+5);
-- XDrawLine(theDisp, ctrlW, theGC, 0, y+(CHIGH+4)*2+1,
-+ XDrawLine(theDisp, ctrlW, theGC, 0, y+(CHIGH+4)*2+1,
- CTRLWIDE, y+(CHIGH+4)*2+1);
- }
-
-@@ -542,16 +544,16 @@
- void ScrollToCurrent(lst)
- LIST *lst;
- {
-- /* called when selected item on list is changed. Makes the selected
-+ /* called when selected item on list is changed. Makes the selected
- item visible. If it already is, nothing happens. Otherwise, it
-- attempts to scroll so that the selection appears in the middle of
-+ attempts to scroll so that the selection appears in the middle of
- the list window */
-
- int halfway;
-
- if (lst->selected < 0) return; /* no selection, do nothing */
-
-- if (lst->selected > lst->scrl.val &&
-+ if (lst->selected > lst->scrl.val &&
- lst->selected < lst->scrl.val + lst->nlines-1) LSRedraw(lst, 0);
- else {
- halfway = (lst->nlines)/2; /* offset to the halfway pt. of the list */
-@@ -590,7 +592,7 @@
- lp->win = XCreateSimpleWindow(theDisp,win,x,y,(u_int) w, (u_int) h,1,fg,bg);
- if (!lp->win) FatalError("can't create list window!");
-
-- lp->x = x; lp->y = y;
-+ lp->x = x; lp->y = y;
- lp->w = w; lp->h = h;
- lp->fg = fg; lp->bg = bg;
- lp->hi = hi; lp->lo = lo;
-@@ -603,7 +605,7 @@
-
- XSelectInput(theDisp, lp->win, ExposureMask | ButtonPressMask);
-
-- SCCreate(&lp->scrl, lp->win, w-20, -1, 1, h, 0,
-+ SCCreate(&lp->scrl, lp->win, w-20, -1, 1, h, 0,
- nstr-nlines, 0, nlines-1, fg, bg, hi, lo, fptr);
-
- XMapSubwindows(theDisp, lp->win);
-@@ -646,7 +648,7 @@
- LIST *lp;
- {
- /* redraws lists 3d-effect, which can be trounced by drawSel() */
-- Draw3dRect(lp->win, 0, 0, lp->w-1, lp->h-1, R3D_IN, 2,
-+ Draw3dRect(lp->win, 0, 0, lp->w-1, lp->h-1, R3D_IN, 2,
- lp->hi, lp->lo, lp->bg);
- }
-
-@@ -675,43 +677,43 @@
- else { fg = lp->fg; bg = lp->bg; }
-
- XSetForeground(theDisp, theGC, bg);
-- XFillRectangle(theDisp, lp->win, theGC, x0, y0+i*LINEHIGH,
-+ XFillRectangle(theDisp, lp->win, theGC, x0, y0+i*LINEHIGH,
- (u_int) wide+1, (u_int) LINEHIGH);
-
- if (j>=0 && j<lp->nstr) { /* only draw string if valid */
- XSetForeground(theDisp, theGC, fg);
- XSetBackground(theDisp, theGC, bg);
-
-- if (!lp->filetypes)
-+ if (!lp->filetypes)
- DrawString(lp->win, x0+3, y0+i*LINEHIGH + ASCENT + 1, lp->str[j]);
- else {
- int ypos = y0 + i*LINEHIGH + (LINEHIGH - i_fifo_height)/2;
-
-- if (lp->str[j][0] == C_FIFO)
-+ if (lp->str[j][0] == C_FIFO)
- XCopyPlane(theDisp, fifoPix, lp->win, theGC, 0, 0,
- i_fifo_width, i_fifo_height, x0+3, ypos, 1L);
-
-- else if (lp->str[j][0] == C_CHR)
-+ else if (lp->str[j][0] == C_CHR)
- XCopyPlane(theDisp, chrPix, lp->win, theGC, 0, 0,
- i_chr_width, i_chr_height, x0+3, ypos, 1L);
-
-- else if (lp->str[j][0] == C_DIR)
-+ else if (lp->str[j][0] == C_DIR)
- XCopyPlane(theDisp, dirPix, lp->win, theGC, 0, 0,
- i_dir_width, i_dir_height, x0+3, ypos, 1L);
-
-- else if (lp->str[j][0] == C_BLK)
-+ else if (lp->str[j][0] == C_BLK)
- XCopyPlane(theDisp, blkPix, lp->win, theGC, 0, 0,
- i_blk_width, i_blk_height, x0+3, ypos, 1L);
-
-- else if (lp->str[j][0] == C_LNK)
-+ else if (lp->str[j][0] == C_LNK)
- XCopyPlane(theDisp, lnkPix, lp->win, theGC, 0, 0,
- i_lnk_width, i_lnk_height, x0+3, ypos, 1L);
-
-- else if (lp->str[j][0] == C_SOCK)
-+ else if (lp->str[j][0] == C_SOCK)
- XCopyPlane(theDisp, sockPix, lp->win, theGC, 0, 0,
- i_sock_width, i_sock_height, x0+3, ypos, 1L);
-
-- else if (lp->str[j][0] == C_EXE)
-+ else if (lp->str[j][0] == C_EXE)
- XCopyPlane(theDisp, exePix, lp->win, theGC, 0, 0,
- i_exe_width, i_exe_height, x0+3, ypos, 1L);
-
-@@ -720,8 +722,8 @@
- i_reg_width, i_reg_height, x0+3, ypos, 1L);
-
-
-- DrawString(lp->win, x0+3 + i_fifo_width + 3,
-- y0+i*LINEHIGH + ASCENT + 1,
-+ DrawString(lp->win, x0+3 + i_fifo_width + 3,
-+ y0+i*LINEHIGH + ASCENT + 1,
- lp->str[j]+1);
- }
- }
-@@ -735,7 +737,7 @@
- {
- int i;
-
-- for (i = lp->scrl.val; i < lp->scrl.val + lp->nlines; i++)
-+ for (i = lp->scrl.val; i < lp->scrl.val + lp->nlines; i++)
- drawSel(lp,i);
- ls3d(lp);
- }
-@@ -762,7 +764,7 @@
- if (sel >= lp->nstr) sel = lp->selected;
-
- /* see if it's a double click */
-- if (ev->time - lasttime < DBLCLKTIME && sel==lastsel
-+ if (ev->time - lasttime < DBLCLKTIME && sel==lastsel
- && (lp->scrl.val + (y-y0)/LINEHIGH) < lp->nstr
- && !INACTIVE(lp,sel)) {
- return (sel);
-@@ -782,7 +784,7 @@
- while (XQueryPointer(theDisp,lp->win,&rW,&cW,&rx,&ry,&x,&y,&mask)) {
- if (!(mask & Button1Mask)) break; /* button released */
-
-- if (y<y0) { /* scroll up in list */
-+ if (y<y0) { /* scroll up in list */
- if (lp->scrl.val > lp->scrl.min) {
- lp->selected = lp->scrl.val - 1;
- SCSetVal(&lp->scrl, lp->scrl.val - 1);
-@@ -804,7 +806,7 @@
- if (sel >= lp->nstr) sel = lp->nstr - 1;
-
- if (sel != lp->selected && sel >= lp->scrl.val &&
-- sel < lp->scrl.val + lp->nlines) {
-+ sel < lp->scrl.val + lp->nlines) {
- /* dragged to another on current page */
- oldsel = lp->selected;
- lp->selected = sel;
-@@ -829,17 +831,17 @@
- else if (key==LS_PAGEDOWN) SCSetVal(&lp->scrl,lp->scrl.val + (lp->nlines-1));
- else if (key==LS_HOME) SCSetVal(&lp->scrl,lp->scrl.min);
- else if (key==LS_END) SCSetVal(&lp->scrl,lp->scrl.max);
--
-+
- else if (key==LS_LINEUP) {
- /* if the selected item visible, but not the top line */
-- if (lp->selected > lp->scrl.val &&
-+ if (lp->selected > lp->scrl.val &&
- lp->selected <= lp->scrl.val + lp->nlines - 1) {
- /* then just move it */
- lp->selected--;
- drawSel(lp, lp->selected); drawSel(lp, lp->selected+1);
- ls3d(lp);
- }
--
-+
- /* if it's the top line... */
- else if (lp->selected == lp->scrl.val) {
- if (lp->selected > 0) {
-@@ -847,7 +849,7 @@
- SCSetVal(&lp->scrl, lp->selected);
- }
- }
--
-+
- /* if it's not visible, put it on the bottom line */
- else {
- lp->selected = lp->scrl.val + lp->nlines - 1;
-@@ -856,10 +858,10 @@
- ls3d(lp);
- }
- }
--
-+
- else if (key==LS_LINEDOWN) {
- /* if the selected item visible, but not the bottom line */
-- if (lp->selected >= lp->scrl.val &&
-+ if (lp->selected >= lp->scrl.val &&
- lp->selected < lp->scrl.val + lp->nlines - 1) {
- if (lp->selected < lp->nstr-1) {
- /* then just move it */
-@@ -868,7 +870,7 @@
- ls3d(lp);
- }
- }
--
-+
- /* if it's the bottom line... */
- else if (lp->selected == lp->scrl.val + lp->nlines - 1) {
- if (lp->selected < lp->nstr-1) {
-@@ -876,7 +878,7 @@
- SCSetVal(&lp->scrl, lp->scrl.val+1);
- }
- }
--
-+
- /* if it's not visible, put it on the top line */
- else {
- lp->selected = lp->scrl.val;
-diff -ruN xv-3.10a/xvcut.c xv-3.10a-bugfixes/xvcut.c
---- xv-3.10a/xvcut.c 1995-01-13 11:55:48.000000000 -0800
-+++ xv-3.10a-bugfixes/xvcut.c 2004-05-16 18:01:43.000000000 -0700
-@@ -15,7 +15,7 @@
- * static void clearSelectedArea();
- * static void makeClipFName ();
- * static int countcols24 (byte *, int,int, int,int,int,int));
-- * static int countNewCols (byte*, int, int, byte*, int,
-+ * static int countNewCols (byte*, int, int, byte*, int,
- * int, int, int, int);
- *
- * void InitSelection ();
-@@ -72,7 +72,7 @@
- static void clearSelectedArea PARM((void));
- static void makeClipFName PARM((void));
- static int countcols24 PARM((byte *, int, int, int, int, int, int));
--static int countNewCols PARM((byte *, int, int, byte *, int,
-+static int countNewCols PARM((byte *, int, int, byte *, int,
- int, int, int, int));
- static int dragHandle PARM((XButtonEvent *));
- static void dragSelection PARM((XButtonEvent *, u_int, int));
-@@ -210,7 +210,7 @@
- if (!PasteAllowed()) { XBell(theDisp, 0); return; }
-
- cimg = getFromClip();
-- if (!cimg) return;
-+ if (!cimg) return;
-
- /* if there's no selection, make one! */
- if (!HaveSelection()) makePasteSel(cimg);
-@@ -231,7 +231,7 @@
-
- byte *dp, *dpic, *clippic, *clipcmap;
- int clipw, cliph, clipis24, len, istran, trval;
-- int i, j, sx,sy,sw,sh, cx,cy,cw,ch, dx,dy,dw,dh,dx2,dy2;
-+ int i, j, sx,sy,sw,sh, cx,cy,cw,ch, dx,dy,dw,dh;
-
-
- /*
-@@ -245,7 +245,7 @@
- ((int) (cimg[CIMG_LEN + 2]<<16)) |
- ((int) (cimg[CIMG_LEN + 3]<<24));
-
-- if (len < CIMG_PIC24) return;
-+ if (len < CIMG_PIC24) return;
-
- istran = cimg[CIMG_TRANS];
- trval = cimg[CIMG_TRVAL];
-@@ -268,7 +268,7 @@
- * already, because if we *are*, we'd prefer to do any clipboard rescaling
- * in 24-bit space for the obvious reasons.
- *
-- * possibilities:
-+ * possibilities:
- * PIC24 - easy, do clipboard rescale in 24-bit space
- * PIC8, and clipboard is 8 bits, (or 24-bits, but with <=256 colors)
- * and total unique colors < 256:
-@@ -283,7 +283,7 @@
-
- /* dx,dy,dw,dh is the rectangle (in PIC coords) where the paste will occur
- (cropped to be entirely within PIC */
--
-+
- dx = sx; dy = sy; dw = sw; dh = sh;
- CropRect2Rect(&dx, &dy, &dw, &dh, 0, 0, pWIDE, pHIGH);
-
-@@ -291,7 +291,7 @@
- /* cx,cy,cw,ch is the rectangle of the clipboard data (in clipboard coords)
- that will actually be used in the paste operation */
-
-- cx = (sx>=0) ? 0 : ((-sx) * clipw) / sw;
-+ cx = (sx>=0) ? 0 : ((-sx) * clipw) / sw;
- cy = (sy>=0) ? 0 : ((-sy) * cliph) / sh;
- cw = (dw * clipw) / sw;
- ch = (dh * cliph) / sh;
-@@ -302,26 +302,26 @@
- if (picType == PIC8) {
- int ncc, keep8;
- char buf[512];
--
-+
- if (clipis24) { /* pasting in a 24-bit image that *requires* promotion */
- static char *bnames[] = { "\nOkay", "\033Cancel" };
- strcpy(buf, "Warning: Pasting this 24-bit image will require ");
- strcat(buf, "promoting the current image to 24 bits.");
--
-+
- if (PopUp(buf, bnames, 2)) goto exit; /* Cancelled */
- else Change824Mode(PIC24); /* promote pic to 24 bits */
- }
-
- else { /* clip is 8 bits */
- ncc = countNewCols(clippic,clipw,cliph,clipcmap,clipis24,cx,cy,cw,ch);
--
-+
- if (ncc + numcols > 256) {
- static char *bnames[] = { "\nPromote", "8Keep 8-bit", "\033Cancel" };
- strcpy(buf,"Warning: The image and the clipboard combine to have ");
- strcat(buf,"more than 256 unique colors. Promoting the ");
- strcat(buf,"image to 24 bits is recommended, otherwise the contents ");
- strcat(buf,"of the clipboard will probably lose some colors.");
--
-+
- keep8 = PopUp(buf, bnames, 3);
- if (keep8==2) goto exit; /* Cancel */
- else if (keep8==0) Change824Mode(PIC24); /* promote pic to 24 bits */
-@@ -331,8 +331,8 @@
-
-
-
--
--
-+
-+
- /* legal possibilities at this point:
- * pic is PIC24: clip is 8 or 24
- * pic is PIC8: clip is 8, or clip is 24 but has 256 or fewer colors
-@@ -342,18 +342,18 @@
-
- if (picType == PIC8) {
- int clx, cly, r,g,b,k,mind,close,newcols;
-- byte *cp, *clp, *pp, *ccp, newr[256], newg[256], newb[256], remap[256];
-+ byte *cp, *clp, *pp, newr[256], newg[256], newb[256], remap[256];
- byte order[256], trans[256];
- int bperpix, dpncols;
--
-+
- dpic = (byte *) malloc((size_t) dw * dh);
- if (!dpic) FatalError("Out of memory in DoImgPaste()\n");
--
-+
- bperpix = (clipis24) ? 3 : 1;
- newcols = 0;
--
-+
- /* dpic = a scaled, 8-bit representation of clippic[cx,cy,cw,ch] */
--
-+
- if (!clipis24) { /* copy colormap from clip data into newr,g,b[] */
- for (i=0; i<256; i++) {
- newr[i] = clipcmap[i*3];
-@@ -366,22 +366,22 @@
- dp = dpic + i*dw;
- cly = cy + (i * ch) / dh;
- clp = clippic + (cly*clipw * bperpix);
--
-+
- for (j=0; j<dw; j++, dp++) {
- /* get appropriate pixel from clippic */
- clx = cx + (j * cw) / dw;
- cp = clp + (clx * bperpix);
--
-+
- if (!clipis24) *dp = *cp;
- else { /* build colormap as we go... */
- r = *cp++; g = *cp++; b = *cp++;
--
-+
- /* look it up in new colormap, add if not there */
- for (k=0; k<newcols && (r!=newr[k] || g!=newg[k] ||b!=newb[k]); k++);
- if (k==newcols && k<256) {
- newr[k]=r; newg[k]=g; newb[k]=b; newcols++;
- }
--
-+
- *dp = (byte) (k & 0xff);
- }
- }
-@@ -401,23 +401,23 @@
- }
- }
- }
--
--
--
-+
-+
-+
- /* COLORMAP MERGING */
--
-+
- newcols = 0;
--
-+
- for (i=0; i<dpncols; i++) {
- if (istran && i==trval) continue;
--
-+
- for (j=0; j<numcols; j++) { /* look for an exact match */
- if (rMap[j]==newr[i] && gMap[j]==newg[i] && bMap[j]==newb[i]) break;
- }
- if (j<numcols) remap[i] = j;
- else { /* no exact match */
- newcols++;
--
-+
- if (numcols < 256) {
- rMap[numcols] = newr[i];
- gMap[numcols] = newg[i];
-@@ -429,7 +429,7 @@
- r = newr[i]; g=newg[i]; b=newb[i];
- mind = 256*256 + 256*256 + 256*256;
- for (j=close=0; j<numcols; j++) {
-- k = ((rMap[j]-r) * (rMap[j]-r)) +
-+ k = ((rMap[j]-r) * (rMap[j]-r)) +
- ((gMap[j]-g) * (gMap[j]-g)) +
- ((bMap[j]-b) * (bMap[j]-b));
- if (k<mind) { mind = k; close = j; }
-@@ -438,10 +438,10 @@
- }
- }
- }
--
--
-+
-+
- /* copy the data into PIC */
--
-+
- dp = dpic;
- for (i=dy; i<dy+dh; i++) {
- pp = pic + (i*pWIDE) + dx;
-@@ -451,7 +451,7 @@
- }
- }
- free(dpic);
--
-+
- if (newcols) InstallNewPic(); /* does color reallocation, etc. */
- else {
- GenerateCpic();
-@@ -459,16 +459,16 @@
- DrawEpic();
- }
- }
--
-+
-
- /******************** PIC24 handling **********************/
--
--
-+
-+
- else {
- byte *tmppic, *cp, *pp, *clp;
- int bperpix;
- int trr, trg, trb, clx, cly;
--
-+
- trr = trg = trb = 0;
- if (istran) {
- if (clipis24) {
-@@ -482,24 +482,24 @@
- trb = clipcmap[trval*3+2];
- }
- }
--
-+
- bperpix = (clipis24) ? 3 : 1;
-
- if (!istran && (cw != dw || ch != dh)) { /* need to resize, can smooth */
- byte rmap[256], gmap[256], bmap[256];
--
-+
- tmppic = (byte *) malloc((size_t) cw * ch * bperpix);
- if (!tmppic) FatalError("Out of memory in DoImgPaste()\n");
--
-- /* copy relevant hunk of clippic into tmppic (Smooth24 only works on
-+
-+ /* copy relevant hunk of clippic into tmppic (Smooth24 only works on
- complete images */
--
-+
- for (i=0; i<ch; i++) {
- dp = tmppic + i*cw*bperpix;
- cp = clippic + ((i+cy)*clipw + cx) * bperpix;
- for (j=0; j<cw*bperpix; j++) *dp++ = *cp++;
- }
--
-+
- if (!clipis24) {
- for (i=0; i<256; i++) {
- rmap[i] = clipcmap[i*3];
-@@ -507,15 +507,15 @@
- bmap[i] = clipcmap[i*3+2];
- }
- }
--
-+
- dpic = Smooth24(tmppic, clipis24, cw,ch, dw,dh, rmap,gmap,bmap);
- if (!dpic) FatalError("Out of memory (2) in DoImgPaste()\n");
- free(tmppic);
--
-+
- /* copy the resized, smoothed, 24-bit data into 'pic' */
--
-+
- /* XXX: (deal with smooth-resized transparent imgs) */
--
-+
- dp = dpic;
- for (i=dy; i<dy+dh; i++) {
- pp = pic + (i*pWIDE + dx) * 3;
-@@ -536,11 +536,11 @@
- pp = pic + ((i+dy)*pWIDE + dx) * 3;
- cly = cy + (i * ch) / dh;
- clp = clippic + (cly*clipw * bperpix);
--
-+
- for (j=0; j<dw; j++, pp+=3) {
- clx = cx + (j * cw) / dw;
- cp = clp + (clx * bperpix);
--
-+
- if (clipis24) {
- if (!istran || cp[0]!=trr || cp[1]!=trg || cp[2]==trb) {
- pp[0] = *cp++; pp[1] = *cp++; pp[2] = *cp++;
-@@ -557,14 +557,14 @@
- }
- }
-
--
-+
- GenerateCpic();
- GenerateEpic(eWIDE, eHIGH);
- DrawEpic();
- }
--
--
-- exit:
-+
-+
-+ exit:
- SetCursors(-1);
- }
-
-@@ -577,20 +577,20 @@
- XColor cfg, cbg;
-
- dragcurs = XCreateFontCursor(theDisp, XC_fleur);
-- p1 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) cut_bits,
-+ p1 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) cut_bits,
- cut_width, cut_height, 1L, 0L, 1);
-- p2 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) cutm_bits,
-+ p2 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) cutm_bits,
- cutm_width, cutm_height, 1L, 0L, 1);
-- p3 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) copy_bits,
-+ p3 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) copy_bits,
- copy_width, copy_height, 1L, 0L, 1);
-- p4 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) copym_bits,
-+ p4 = XCreatePixmapFromBitmapData(theDisp, rootW, (char *) copym_bits,
- copym_width, copym_height, 1L, 0L, 1);
- if (p1 && p2 && p3 && p4) {
- cfg.red = cfg.green = cfg.blue = 0;
- cbg.red = cbg.green = cbg.blue = 0xffff;
-- cutcurs = XCreatePixmapCursor(theDisp, p1,p2, &cfg, &cbg,
-+ cutcurs = XCreatePixmapCursor(theDisp, p1,p2, &cfg, &cbg,
- cut_x_hot, cut_y_hot);
-- copycurs = XCreatePixmapCursor(theDisp, p3,p4, &cfg, &cbg,
-+ copycurs = XCreatePixmapCursor(theDisp, p3,p4, &cfg, &cbg,
- copy_x_hot, copy_y_hot);
- if (!cutcurs || !copycurs) FatalError("can't create cut/copy cursors...");
- }
-@@ -619,7 +619,7 @@
-
- if (!CutAllowed()) { XBell(theDisp, 0); return (byte *) NULL; }
- if (!HaveSelection()) return (byte *) NULL;
--
-+
- GetSelRCoords(&x,&y,&w,&h);
- CropRect2Rect(&x,&y,&w,&h, 0,0,pWIDE,pHIGH);
-
-@@ -663,15 +663,15 @@
- if (picType == PIC24 && !do24) { /* 24-bit data as 8-bit */
- int nc,pr,pg,pb;
- byte *cm;
--
-+
- nc = 0;
- dp = cimg + CIMG_PIC8;
--
-+
- for (i=y; i<y+h; i++) {
- pp = pic + i*pWIDE*3 + x*3;
- for (j=x; j<x+w; j++, pp+=3) {
- pr = pp[0]; pg = pp[1]; pb = pp[2];
--
-+
- cm = cimg + CIMG_CMAP;
- for (k=0; k<nc; k++,cm+=3) {
- if (pr==cm[0] && pg==cm[1] && pb==cm[2]) break;
-@@ -682,12 +682,12 @@
- cimg[CIMG_CMAP + nc*3 + 1] = pg;
- cimg[CIMG_CMAP + nc*3 + 2] = pb;
- }
--
-+
- *dp++ = (byte) k;
- }
- }
- }
--
-+
-
- else if (picType == PIC24) { /* 24-bit data as 24-bit */
- dp = cimg + CIMG_PIC24;
-@@ -705,26 +705,26 @@
- else if (picType == PIC8) { /* 8-bit selection */
- byte *cm = cimg + CIMG_CMAP;
- for (i=0; i<256; i++) { /* copy colormap */
-- if (i<numcols) {
-+ if (i<numcols) {
- *cm++ = rMap[i];
- *cm++ = gMap[i];
- *cm++ = bMap[i];
- }
- }
--
-+
- dp = cimg + CIMG_PIC8;
- for (i=y; i<y+h; i++) { /* copy image */
- pp = pic + i*pWIDE + x;
- for (j=x; j<x+w; j++) *dp++ = *pp++;
- }
- }
--
-+
- return cimg;
- }
-
-
-
--
-+
- /********************************************/
- static byte *getFromClip()
- {
-@@ -743,14 +743,14 @@
- clipAtom = XInternAtom(theDisp, CLIPPROP, True);
- if (clipAtom != None) XDeleteProperty(theDisp, rootW, clipAtom);
- }
--
--
-+
-+
- clipAtom = XInternAtom(theDisp, CLIPPROP, True); /* find prop */
- if (clipAtom != None) {
-
- /* try to retrieve the length of the data in the property */
-- i = XGetWindowProperty(theDisp, rootW, clipAtom, 0L, 1L, False, XA_STRING,
-- &actType, &actFormat, &nitems, &nleft,
-+ i = XGetWindowProperty(theDisp, rootW, clipAtom, 0L, 1L, False, XA_STRING,
-+ &actType, &actFormat, &nitems, &nleft,
- (unsigned char **) &data);
-
- if (i==Success && actType==XA_STRING && actFormat==8 && nleft>0) {
-@@ -763,9 +763,9 @@
- XFree((void *) data);
-
- /* read the rest of the data (len bytes) */
-- i = XGetWindowProperty(theDisp, rootW, clipAtom, 1L,
-- (long) ((len-4)+3)/4,
-- False, XA_STRING, &actType, &actFormat, &nitems,
-+ i = XGetWindowProperty(theDisp, rootW, clipAtom, 1L,
-+ (long) ((len-4)+3)/4,
-+ False, XA_STRING, &actType, &actFormat, &nitems,
- &nleft, (unsigned char **) &data);
-
- if (i==Success) {
-@@ -791,8 +791,8 @@
- }
- }
-
--
-- /* if we're still here, then the prop method was less than successful.
-+
-+ /* if we're still here, then the prop method was less than successful.
- use the file method, instead */
-
- if (!clipfname) makeClipFName();
-@@ -800,7 +800,7 @@
- fp = fopen(clipfname, "r");
- if (!fp) {
- unlink(clipfname);
-- sprintf(str, "Can't read clipboard file '%s'\n\n %s.",
-+ sprintf(str, "Can't read clipboard file '%s'\n\n %s.",
- clipfname, ERRSTR(errno));
- ErrPopUp(str,"\nBletch!");
- return (byte *) NULL;
-@@ -877,19 +877,19 @@
- clipAtom = XInternAtom(theDisp, CLIPPROP, True);
- if (clipAtom != None) XDeleteProperty(theDisp, rootW, clipAtom);
- }
--
--
-+
-+
- if (!forceClipFile) {
- clipAtom = XInternAtom(theDisp, CLIPPROP, False); /* find or make prop */
- if (clipAtom != None) {
- /* try to store the data in the property */
--
-+
- xerrcode = 0;
- XChangeProperty(theDisp, rootW, clipAtom, XA_STRING, 8, PropModeReplace,
- cimg, len);
- XSync(theDisp, False); /* make it happen *now* */
- if (!xerrcode) return; /* success! */
--
-+
- /* failed, use file method */
- XDeleteProperty(theDisp, rootW, clipAtom);
- }
-@@ -903,7 +903,7 @@
- fp = fopen(clipfname, "w");
- if (!fp) {
- unlink(clipfname);
-- sprintf(str, "Can't write clipboard file '%s'\n\n %s.",
-+ sprintf(str, "Can't write clipboard file '%s'\n\n %s.",
- clipfname, ERRSTR(errno));
- ErrPopUp(str,"\nBletch!");
- return;
-@@ -996,7 +996,7 @@
- byte *pp;
-
- nc = 0;
--
-+
- for (i=y; nc<257 && i<y+h; i++) {
- pp = pic + i*pwide*3 + x*3;
- for (j=x; nc<257 && j<x+w; j++, pp+=3) {
-@@ -1022,7 +1022,7 @@
- */
-
- int i, j, k, nc, r,g,b;
-- byte *pp, *cp;
-+ byte *pp;
- byte newr[257], newg[257], newb[257];
-
- if (picType != PIC8) return 0; /* shouldn't happen */
-@@ -1034,7 +1034,7 @@
- pp = newpic + i*w*3 + cx*3;
- for (j=cx; j<cx+cw; j++) {
- r = *pp++; g = *pp++; b = *pp++;
--
-+
- /* lookup r,g,b in 'pic's colormap and the newcolors colormap */
- for (k=0; k<nc && (r!=newr[k] || g!=newg[k] || b!=newb[k]); k++);
- if (k==nc) {
-@@ -1062,11 +1062,11 @@
- /* now see which of the used colors are new */
- for (i=0, nc=0; i<256; i++) {
- if (!coluse[i]) continue;
--
-- r = newcmap[i*3];
-- g = newcmap[i*3+1];
-+
-+ r = newcmap[i*3];
-+ g = newcmap[i*3+1];
- b = newcmap[i*3+2];
--
-+
- /* lookup r,g,b in pic's colormap */
- for (k=0; k<numcols && (r!=rMap[k] || g!=gMap[k] || b!=bMap[k]);k++);
- if (k==numcols) { /* it's a new color, alright */
-@@ -1075,7 +1075,7 @@
- }
- }
- }
--
-+
- return nc;
- }
-
-@@ -1143,7 +1143,7 @@
- /* NOTE: SELECTION IS *NOT* GUARANTEED to be within the bounds of 'pic'.
- It is only guaranteed to *intersect* pic. */
-
-- *xp = selrx; *yp = selry;
-+ *xp = selrx; *yp = selry;
- *wp = selrw; *hp = selrh;
- }
-
-@@ -1200,7 +1200,7 @@
- if (lastClickButton==Button1 && (ev->time - lastClickTime) < DBLCLKTIME) {
- lastClickButton=Button3;
- if (HaveSelection() && PTINRECT(px, py, selrx, selry, selrw, selrh)) {
-- EnableSelection(0);
-+ EnableSelection(0);
- rv = 1;
- }
- else {
-@@ -1225,7 +1225,7 @@
- else if (ev->button == Button2) { /* do a drag & drop operation */
- if (HaveSelection() && PTINRECT(px,py,selrx,selry,selrw,selrh)) {
- /* clip selection rect to pic */
-- EnableSelection(0);
-+ EnableSelection(0);
- CropRect2Rect(&selrx, &selry, &selrw, &selrh, 0, 0, pWIDE, pHIGH);
-
- if (selrw<1 || selrh<1) rv = 0;
-@@ -1253,8 +1253,8 @@
- * holding SHIFT constrains selection to be square,
- * holding CTRL constrains selection to keep original aspect ratio
- */
--
-- int i, mex, mey, mpx, mpy, offx,offy;
-+
-+ int mex, mey, mpx, mpy, offx,offy;
- int sex, sey, sex2, sey2, sew, seh, sew2, seh2, hs, h2;
- int istp, isbt, islf, isrt, isvm, ishm;
- int cnstsq, cnstasp;
-@@ -1272,7 +1272,7 @@
- sew2 = sew/2;
- seh2 = seh/2;
- sex2--; sey2--;
--
-+
- if (sew>=35 && seh>=35) hs=7;
- else if (sew>=20 && seh>=20) hs=5;
- else if (sew>= 9 && seh>= 9) hs=3;
-@@ -1307,7 +1307,7 @@
-
-
- /* it's definitely in a handle... track 'til released */
--
-+
- DrawSelection(0);
- selFilled = 1;
- selTracking = 1;
-@@ -1366,12 +1366,12 @@
- else { chwide=1; newwide = (int) (seh*orgaspect); }
- }
- }
--
-+
- if (chwide) {
- if (islf) { sex = (sex+sew) - newwide; }
- sew = newwide;
- }
--
-+
- if (chhigh) {
- if (istp) { sey = (sey+seh) - newhigh; }
- seh = newhigh;
-@@ -1380,7 +1380,7 @@
-
- if (sew<1) sew=1;
- if (seh<1) seh=1;
--
-+
- if (sex!=selrx || sey!=selry || sew!=selrw || seh!=selrh) {
- DrawSelection(0);
- selrx = sex; selry = sey; selrw = sew; selrh = seh;
-@@ -1395,14 +1395,14 @@
- Timer(100);
- }
- }
--
-+
- EnableSelection(0);
-
- selFilled = 0;
- selTracking = 0;
-
- /* only 'enable' the selection if it intersects CPIC */
-- if (selrx < cXOFF+cWIDE && selrx+selrw > cXOFF &&
-+ if (selrx < cXOFF+cWIDE && selrx+selrw > cXOFF &&
- selry < cYOFF+cHIGH && selry+selrh > cYOFF) EnableSelection(1);
-
- return 1;
-@@ -1422,7 +1422,7 @@
- *
- * if 'dragndrop', changes cursor, monitors CTRL status
- */
--
-+
- int mpx, mpy, offx, offy;
- int newsx, newsy, orgsx, orgsy, cnstrain, docopy, lastdocopy;
- Window rW, cW;
-@@ -1436,9 +1436,9 @@
-
- CoordE2P(ev->x, ev->y, &mpx, &mpy);
- offx = mpx - selrx; offy = mpy - selry;
--
-+
- /* track rectangle until we get a release */
--
-+
- DrawSelection(0);
- selFilled = 1;
- selTracking = 1;
-@@ -1467,7 +1467,7 @@
- dx = newsx - orgsx; dy = newsy - orgsy;
- if (abs(dx) > abs(dy)) dy = 0;
- else if (abs(dy) > abs(dx)) dx = 0;
--
-+
- newsx = orgsx + dx; newsy = orgsy + dy;
- }
-
-@@ -1485,7 +1485,7 @@
- Timer(100);
- }
- }
--
-+
- EnableSelection(0);
-
- selFilled = 0;
-@@ -1495,7 +1495,7 @@
-
- /* only do <whatever> if the selection intersects CPIC */
-
-- if (selrx < cXOFF+cWIDE && selrx+selrw > cXOFF &&
-+ if (selrx < cXOFF+cWIDE && selrx+selrw > cXOFF &&
- selry < cYOFF+cHIGH && selry+selrh > cYOFF) {
-
- EnableSelection(1);
-@@ -1503,10 +1503,10 @@
- if (dragndrop) {
- int tmpsx, tmpsy;
- byte *data;
--
-+
- tmpsx = selrx; tmpsy = selry;
- selrx = orgsx; selry = orgsy;
--
-+
- data = getSelection(); /* copy old data */
- if (data) {
- if (!docopy) clearSelectedArea();
-@@ -1531,29 +1531,29 @@
- int rx,ry,ox,oy,x,y,active, x1, y1, x2, y2, cnstrain;
- int i, px,py,px2,py2,pw,ph;
- unsigned int mask;
--
-+
- /* called on a B1 press in mainW to draw a new rectangular selection.
- * any former selection has already been removed. holding shift down
-- * while tracking constrains selection to a square
-+ * while tracking constrains selection to a square
- */
--
-+
- active = 0;
--
-+
- x1 = ox = ev->x; y1 = oy = ev->y; /* nail down one corner */
- selrx = selry = selrw = selrh = 0;
- selTracking = 1;
--
-+
- while (1) {
- if (!XQueryPointer(theDisp,mainW,&rW,&cW,&rx,&ry,&x,&y,&mask)) continue;
- if (!(mask & Button1Mask)) break; /* button released */
- cnstrain = (mask & ShiftMask);
--
-+
- if (x!=ox || y!=oy) { /* moved. erase and redraw (?) */
- x2 = x; y2 = y;
--
-+
- /* x1,y1,x2,y2 are in epic coords. sort, convert to pic coords,
- and if changed, erase+redraw */
--
-+
- CoordE2P(x1, y1, &px, &py);
- CoordE2P(x2, y2, &px2, &py2);
- if (px>px2) { i=px; px=px2; px2=i; }
-@@ -1561,17 +1561,17 @@
- pw = px2-px+1; ph=py2-py+1;
-
- /* keep px,py,pw,ph inside 'pic' */
--
-+
- if (px<0) { pw+=px; px=0; }
- if (py<0) { ph+=py; py=0; }
- if (px>pWIDE-1) px = pWIDE-1;
- if (py>pHIGH-1) py = pHIGH-1;
--
-+
- if (pw<0) pw=0;
- if (ph<0) ph=0;
- if (px+pw>pWIDE) pw = pWIDE - px;
- if (py+ph>pHIGH) ph = pHIGH - py;
--
-+
- if (cnstrain) { /* make a square at smaller of w,h */
- if (ph>pw) { if (y2<y1) py += (ph-pw); ph=pw; }
- else if (pw>ph) { if (x2<x1) px += (pw-ph); pw=ph; }
-@@ -1579,12 +1579,12 @@
-
- /* put x,y,w,h -> selr{x,y,w,h}
- if the rectangle has changed, erase old and draw new */
--
-+
- if (px!=selrx || py!=selry || pw!=selrw || ph!=selrh) {
- DrawSelection(0);
- selrx = px; selry = py; selrw = pw; selrh = ph;
- DrawSelection(1);
--
-+
- haveSel = active = (pw>0 && ph>0);
- if (infoUp) SetSelectionString();
- XFlush(theDisp);
-@@ -1615,7 +1615,7 @@
- set, pick a new 'color' to invert the selection with */
-
- int x,y,x1,y1,w,h;
--
-+
- if (newcol) selColor = (selColor+1) & 0x7;
-
- /* convert selr{x,y,w,h} into epic coords */
-@@ -1650,7 +1650,7 @@
- if (y<0 && y+h>eHIGH && selFilled!=1)
- XDrawLine(theDisp, mainW, theGC, x, eHIGH/2, x+w, eHIGH/2);
-
--
-+
- if (selFilled==0 || selFilled == 1) {
- /* one little kludge: if w or h == eWIDE or eHIGH, make it one smaller */
- if (x+w == eWIDE) w--;
-@@ -1664,17 +1664,17 @@
- else if (w>=20 && h>=20) { hs=5; h1=4; h2=2; }
- else if (w>= 9 && h>= 9) { hs=3; h1=2; h2=1; }
- else hs=h1=h2=0;
--
-+
- if (hs) {
- XFillRectangle(theDisp,mainW,theGC,x+1, y+1, (u_int)h1,(u_int)h1);
- XFillRectangle(theDisp,mainW,theGC,x+w/2-h2,y+1, (u_int)hs,(u_int)h1);
- XFillRectangle(theDisp,mainW,theGC,x+w-h1, y+1, (u_int)h1,(u_int)h1);
--
-+
- XFillRectangle(theDisp,mainW,theGC,x+1, y+h/2-h2,
- (u_int)h1, (u_int)hs);
- XFillRectangle(theDisp,mainW,theGC,x+w-h1,y+h/2-h2,
- (u_int)h1, (u_int)hs);
--
-+
- XFillRectangle(theDisp,mainW,theGC,x+1, y+h-h1,
- (u_int)h1,(u_int)h1);
- XFillRectangle(theDisp,mainW,theGC,x+w/2-h2,y+h-h1,
-@@ -1683,7 +1683,7 @@
- (u_int)h1,(u_int)h1);
- }
- }
--
-+
- if (selFilled==1) {
- XDrawLine(theDisp, mainW, theGC, x+1, y+1, x+w-1, y+h-1);
- XDrawLine(theDisp, mainW, theGC, x+1, y+h-1, x+w-1, y+1);
-@@ -1692,8 +1692,8 @@
- else if (selFilled==2) {
- XFillRectangle(theDisp, mainW, theGC, x,y,(u_int) w, (u_int) h);
- }
--
--
-+
-+
- XSetFunction(theDisp,theGC,GXcopy);
- XSetPlaneMask(theDisp, theGC, AllPlanes);
- }
-@@ -1703,7 +1703,7 @@
- void MoveGrowSelection(dx,dy,dw,dh)
- int dx,dy,dw,dh;
- {
-- /* moves and/or grows the selection by the specified amount
-+ /* moves and/or grows the selection by the specified amount
- (in pic coords). keeps the selection entirely within 'pic'.
- (called by 'CropKey()') */
-
-@@ -1729,7 +1729,7 @@
- }
- }
-
--
-+
- /***********************************/
- void BlinkSelection(cnt)
- int cnt;
-diff -ruN xv-3.10a/xvdflt.c xv-3.10a-bugfixes/xvdflt.c
---- xv-3.10a/xvdflt.c 1994-12-22 14:34:42.000000000 -0800
-+++ xv-3.10a-bugfixes/xvdflt.c 2004-05-16 18:01:46.000000000 -0700
-@@ -16,12 +16,12 @@
- #include "bits/xv_rev"
- #include "bits/xv_ver"
- #include "bits/xf_left"
--#include "bits/xf_right"
-+/* #include "bits/xf_right" not used */
- #include "bits/font5x9.h"
-
-
- #ifndef USEOLDPIC
--# include "xvdflt.h"
-+# include "xvdflt.h"
- #endif
-
-
-@@ -100,21 +100,21 @@
- setcolor(pinfo, 252, 0, 0, 0); /* black background for text */
-
-
-- xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
-+ xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
- dfltpic, DWIDE, DHIGH, DWIDE/2+1, 203+1, 252);
-- xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
-+ xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
- dfltpic, DWIDE, DHIGH, DWIDE/2, 203, 250);
-
- i = xv_ver_width + xv_rev_width + 30;
-
-- xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
-+ xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
- dfltpic, DWIDE, DHIGH, DWIDE/2 - (i/2) + xv_ver_width/2+1, 220+1,252);
-- xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
-+ xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
- dfltpic, DWIDE, DHIGH, DWIDE/2 + (i/2) - xv_rev_width/2+1, 220+1,252);
-
-- xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
-+ xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
- dfltpic, DWIDE, DHIGH, DWIDE/2 - (i/2) + xv_ver_width/2, 220, 250);
-- xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
-+ xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
- dfltpic, DWIDE, DHIGH, DWIDE/2 + (i/2) - xv_rev_width/2, 220, 250);
-
- strcpy(str,"Press <right> mouse button for menu.");
-@@ -169,7 +169,7 @@
- for (i=k=0; i<DHIGH; i+=xf_left_height) {
- for (j=0; j<DWIDE; j+=xf_left_width) {
- k++;
-- if (k&1)
-+ if (k&1)
- xbm2pic((byte *) xf_left_bits, xf_left_width, xf_left_height,
- dfltpic, DWIDE, DHIGH, j + xf_left_width/2,
- i + xf_left_height/2, 1);
-@@ -179,29 +179,29 @@
-
-
-
-- xbm2pic((byte *) xvpic_logo_out_bits, xvpic_logo_out_width,
-+ xbm2pic((byte *) xvpic_logo_out_bits, xvpic_logo_out_width,
- xvpic_logo_out_height, dfltpic, DWIDE, DHIGH, DWIDE/2 + 10, 80, 103);
-
-- xbm2pic((byte *) xvpic_logo_top_bits, xvpic_logo_top_width,
-+ xbm2pic((byte *) xvpic_logo_top_bits, xvpic_logo_top_width,
- xvpic_logo_top_height, dfltpic, DWIDE, DHIGH, DWIDE/2 + 10, 80, 100);
-
-- xbm2pic((byte *) xvpic_logo_bot_bits, xvpic_logo_bot_width,
-+ xbm2pic((byte *) xvpic_logo_bot_bits, xvpic_logo_bot_width,
- xvpic_logo_bot_height, dfltpic, DWIDE, DHIGH, DWIDE/2 + 10, 80, 101);
-
-
-
-- xbm2pic((byte *) xv_jhb_bits, xv_jhb_width, xv_jhb_height,
-+ xbm2pic((byte *) xv_jhb_bits, xv_jhb_width, xv_jhb_height,
- dfltpic, DWIDE, DHIGH, DWIDE/2, 160, 102);
-
-- xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
-+ xbm2pic((byte *) xv_cpyrt_bits, xv_cpyrt_width, xv_cpyrt_height,
- dfltpic, DWIDE, DHIGH, DWIDE/2, 203, 102);
-
- i = xv_ver_width + xv_rev_width + 30;
-
-- xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
-+ xbm2pic((byte *) xv_ver_bits, xv_ver_width, xv_ver_height,
- dfltpic, DWIDE, DHIGH, DWIDE/2 - (i/2) + xv_ver_width/2, 220, 102);
-
-- xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
-+ xbm2pic((byte *) xv_rev_bits, xv_rev_width, xv_rev_height,
- dfltpic, DWIDE, DHIGH, DWIDE/2 + (i/2) - xv_rev_width/2, 220, 102);
-
- strcpy(str,"Press <right> mouse button for menu.");
-@@ -281,7 +281,7 @@
- }
- }
- }
--}
-+}
-
-
- /*******************************************/
-@@ -300,7 +300,7 @@
- byte *dfltpic;
- PICINFO *pinfo;
- {
-- int i,j,k, dr, dg, db;
-+ int i,j, dr, dg, db;
- byte *pp;
-
- pp = dfltpic;
-@@ -357,7 +357,7 @@
-
- for ( ; *str; str++, cx+=6) {
- i = (byte) *str;
-- if (i >= 32 && i < 128)
-+ if (i >= 32 && i < 128)
- xbm2pic(font5x9[i - 32], 5, 9, pic, pw, ph, cx, cy, col);
- }
- }
-diff -ruN xv-3.10a/xvdial.c xv-3.10a-bugfixes/xvdial.c
---- xv-3.10a/xvdial.c 1995-01-03 13:20:31.000000000 -0800
-+++ xv-3.10a-bugfixes/xvdial.c 2004-05-16 18:01:57.000000000 -0700
-@@ -1,11 +1,11 @@
--/*
-+/*
- * xvdial.c - DIAL handling functions
- *
- * callable functions:
- *
- * DCreate() - creates a dial
- * DSetRange() - sets min/max/current values of control
-- * DSetVal() - sets value of control
-+ * DSetVal() - sets value of control
- * DSetActive() - turns dial '.active' on and off
- * DRedraw() - redraws the dial
- * DTrack() - called when clicked. Operates control 'til mouseup
-@@ -50,7 +50,7 @@
-
-
- /***************************************************/
--void DCreate(dp, parent, x, y, w, h, minv, maxv, curv, page,
-+void DCreate(dp, parent, x, y, w, h, minv, maxv, curv, page,
- fg, bg, hi, lo, title, units)
- DIAL *dp;
- Window parent;
-@@ -60,13 +60,13 @@
- {
-
- if (!pixmaps_built) {
-- cw1Pix = XCreatePixmapFromBitmapData(theDisp, parent,
-+ cw1Pix = XCreatePixmapFromBitmapData(theDisp, parent,
- (char *) dial_cw1_bits, PW, PH, fg, bg, dispDEEP);
-- ccw1Pix = XCreatePixmapFromBitmapData(theDisp, parent,
-+ ccw1Pix = XCreatePixmapFromBitmapData(theDisp, parent,
- (char *) dial_ccw1_bits, PW, PH, fg, bg, dispDEEP);
-- cw2Pix = XCreatePixmapFromBitmapData(theDisp, parent,
-+ cw2Pix = XCreatePixmapFromBitmapData(theDisp, parent,
- (char *) dial_cw2_bits, PW, PH, fg, bg, dispDEEP);
-- ccw2Pix = XCreatePixmapFromBitmapData(theDisp, parent,
-+ ccw2Pix = XCreatePixmapFromBitmapData(theDisp, parent,
- (char *) dial_ccw2_bits, PW, PH, fg, bg, dispDEEP);
- }
-
-@@ -126,14 +126,14 @@
- if (curv == dp->val) return;
-
- /* erase old arrow */
-- XSetForeground(theDisp, theGC, dp->bg);
-+ XSetForeground(theDisp, theGC, dp->bg);
- drawArrow(dp);
-
- dp->val = curv;
-
- /* draw new arrow and string */
- XSetForeground(theDisp, theGC, dp->fg);
-- XSetBackground(theDisp, theGC, dp->bg);
-+ XSetBackground(theDisp, theGC, dp->bg);
- drawArrow(dp);
- drawValStr(dp);
- if (!dp->active) dimDial(dp);
-@@ -229,18 +229,18 @@
- case INCCW1: if (dp->val > dp->min) DSetVal(dp, dp->val-1); break;
- case INCCW2: if (dp->val > dp->min) DSetVal(dp, dp->val-dp->page); break;
- }
-- if (dp->drawobj != NULL) (dp->drawobj)();
-+ if (dp->drawobj != NULL) (dp->drawobj)();
- Timer(INC1WAIT);
- lit = 1;
- }
-
-- else {
-+ else {
- i = computeDialVal(dp, mx, my);
- DSetVal(dp, i);
-- if (dp->drawobj != NULL) (dp->drawobj)();
-+ if (dp->drawobj != NULL) (dp->drawobj)();
- }
-
--
-+
- /* loop until mouse is released */
- while (XQueryPointer(theDisp,dp->win,&rW,&cW,&rx,&ry,&x,&y,&mask)) {
- if (!(mask & Button1Mask)) break; /* button released */
-@@ -252,7 +252,7 @@
- DSetVal(dp, i);
- if (j != dp->val) {
- /* track whatever dial controls */
-- if (dp->drawobj != NULL) (dp->drawobj)();
-+ if (dp->drawobj != NULL) (dp->drawobj)();
- }
- }
-
-@@ -266,7 +266,7 @@
-
- if (lit) {
- switch (ipos) {
-- case INCW1: if (dp->val < dp->max) DSetVal(dp, dp->val+1);
-+ case INCW1: if (dp->val < dp->max) DSetVal(dp, dp->val+1);
- break;
- case INCW2: if (dp->val < dp->max) DSetVal(dp, dp->val+dp->page);
- break;
-@@ -277,7 +277,7 @@
- }
-
- /* track whatever dial controls */
-- if (dp->drawobj != NULL) (dp->drawobj)();
-+ if (dp->drawobj != NULL) (dp->drawobj)();
-
- Timer(INC2WAIT);
- }
-@@ -305,17 +305,17 @@
-
- /* returns region * that x,y is in. returns -1 if none */
-
-- for (i=0; i<4; i++)
-+ for (i=0; i<4; i++)
- if (PTINRECT(x,y, dp->bx[i], dp->by[i], 14, 10)) return i;
-
-- if (PTINRECT(x,y, dp->cx - dp->rad, dp->cy - dp->rad,
-+ if (PTINRECT(x,y, dp->cx - dp->rad, dp->cy - dp->rad,
- 2*dp->rad, 2*dp->rad))
- return INDIAL;
-
- return -1;
- }
-
--
-+
- /***************************************************/
- static void drawArrow(dp)
- DIAL *dp;
-@@ -366,10 +366,10 @@
- XSetForeground(theDisp, theGC, dp->fg);
- XSetBackground(theDisp, theGC, dp->bg);
- XSetFont(theDisp, theGC, monofont);
-- XDrawImageString(theDisp, dp->win, theGC,
-+ XDrawImageString(theDisp, dp->win, theGC,
- dp->w/2 - XTextWidth(monofinfo, foo1, (int) strlen(foo1))/2,
- dp->h-14 - (monofinfo->ascent + monofinfo->descent)/2
-- + monofinfo->ascent,
-+ + monofinfo->ascent,
- foo1, (int) strlen(foo1));
- XSetFont(theDisp, theGC, mfont);
- }
-@@ -431,7 +431,7 @@
- }
- else if (dx>0) angle = atan((double) dy / (double) dx) * RAD2DEG;
- else angle = atan((double) -dy / (double) -dx) * RAD2DEG + 180.0;
--
-+
- /* map angle into range: -90..270, then into to value */
- if (angle > 270.0) angle -= 360.0;
- if (angle < -90.0) angle += 360.0;
-diff -ruN xv-3.10a/xvdir.c xv-3.10a-bugfixes/xvdir.c
---- xv-3.10a/xvdir.c 1995-01-03 13:21:39.000000000 -0800
-+++ xv-3.10a-bugfixes/xvdir.c 2005-03-20 18:38:30.000000000 -0800
-@@ -1,4 +1,4 @@
--/*
-+/*
- * xvdir.c - Directory changin', file i/o dialog box
- *
- * callable functions:
-@@ -50,7 +50,7 @@
- #define COLWIDE 150 /* width of colMB */
-
- /* NOTE: make sure these match up with F_* definitions in xv.h */
--static char *saveColors[] = { "Full Color",
-+static char *saveColors[] = { "Full Color",
- "Greyscale",
- "B/W Dithered",
- "Reduced Color" };
-@@ -83,14 +83,16 @@
- static int dnamcmp PARM((const void *, const void *));
- static int FNameCdable PARM((void));
- static void loadCWD PARM((void));
-+#ifdef FOO
- static int cd_able PARM((char *));
-+#endif
- static void scrollToFileName PARM((void));
- static void setFName PARM((char *));
- static void showFName PARM((void));
- static void changeSuffix PARM((void));
- static int autoComplete PARM((void));
-
--static byte *handleBWandReduced PARM((byte *, int,int,int, int, int *,
-+static byte *handleBWandReduced PARM((byte *, int,int,int, int, int *,
- byte **, byte **, byte **));
- static byte *handleNormSel PARM((int *, int *, int *, int *));
-
-@@ -119,7 +121,7 @@
- static char oldfname[MAXFNLEN+100];
-
- /* the name of the file actually opened. (the temp file if we are piping) */
--static char outFName[256];
-+static char outFName[256];
- static int dopipe;
-
-
-@@ -127,48 +129,46 @@
- void CreateDirW(geom)
- char *geom;
- {
-- int w, y;
--
- path[0] = '\0';
-
- xv_getwd(loadpath, sizeof(loadpath));
- xv_getwd(savepath, sizeof(savepath));
-
--
-+
- dirW = CreateWindow("","XVdir", geom, DIRWIDE, DIRHIGH, infofg, infobg, 0);
- if (!dirW) FatalError("couldn't create 'directory' window!");
-
-- LSCreate(&dList, dirW, 10, 5 + 3*(6+LINEHIGH) + 6, LISTWIDE,
-- LINEHIGH*NLINES, NLINES, fnames, numfnames, infofg, infobg,
-+ LSCreate(&dList, dirW, 10, 5 + 3*(6+LINEHIGH) + 6, LISTWIDE,
-+ LINEHIGH*NLINES, NLINES, fnames, numfnames, infofg, infobg,
- hicol, locol, RedrawDList, 1, 0);
-
-- dnamW = XCreateSimpleWindow(theDisp, dirW, 80, dList.y + (int) dList.h + 30,
-- (u_int) DNAMWIDE+6, (u_int) LINEHIGH+5,
-+ dnamW = XCreateSimpleWindow(theDisp, dirW, 80, dList.y + (int) dList.h + 30,
-+ (u_int) DNAMWIDE+6, (u_int) LINEHIGH+5,
- 1, infofg, infobg);
- if (!dnamW) FatalError("can't create name window");
- XSelectInput(theDisp, dnamW, ExposureMask);
-
-
-- CBCreate(&browseCB, dirW, DIRWIDE/2, dList.y + (int) dList.h + 6,
-+ CBCreate(&browseCB, dirW, DIRWIDE/2, dList.y + (int) dList.h + 6,
- "Browse", infofg, infobg, hicol,locol);
-
-- CBCreate(&savenormCB, dirW, 220, dList.y + (int) dList.h + 6,
-+ CBCreate(&savenormCB, dirW, 220, dList.y + (int) dList.h + 6,
- "Normal Size", infofg, infobg,hicol,locol);
-
-- CBCreate(&saveselCB, dirW, 80, dList.y + (int) dList.h + 6,
-+ CBCreate(&saveselCB, dirW, 80, dList.y + (int) dList.h + 6,
- "Selected Area", infofg, infobg,hicol,locol);
-
-
- /* y-coordinates get filled in when window is opened */
-- BTCreate(&dbut[S_BOK], dirW, 259, 0, 80, BUTTH,
-+ BTCreate(&dbut[S_BOK], dirW, 259, 0, 80, BUTTH,
- "Ok", infofg, infobg,hicol,locol);
-- BTCreate(&dbut[S_BCANC], dirW, 259, 0, 80, BUTTH,
-+ BTCreate(&dbut[S_BCANC], dirW, 259, 0, 80, BUTTH,
- "Cancel", infofg,infobg,hicol,locol);
-- BTCreate(&dbut[S_BRESCAN], dirW, 259, 0, 80, BUTTH,
-+ BTCreate(&dbut[S_BRESCAN], dirW, 259, 0, 80, BUTTH,
- "Rescan", infofg,infobg,hicol,locol);
-- BTCreate(&dbut[S_BOLDSET], dirW, 259, 0, 80, BUTTH,
-+ BTCreate(&dbut[S_BOLDSET], dirW, 259, 0, 80, BUTTH,
- "Prev Set", infofg,infobg,hicol,locol);
-- BTCreate(&dbut[S_BOLDNAM], dirW, 259, 0, 80, BUTTH,
-+ BTCreate(&dbut[S_BOLDNAM], dirW, 259, 0, 80, BUTTH,
- "Prev Name", infofg,infobg,hicol,locol);
-
- SetDirFName("");
-@@ -180,33 +180,33 @@
- * create MBUTTs *after* calling XMapSubWindows() to keep popup unmapped
- */
-
-- MBCreate(&dirMB, dirW, 50, dList.y -(LINEHIGH+6),
-+ MBCreate(&dirMB, dirW, 50, dList.y -(LINEHIGH+6),
- (u_int) DDWIDE, (u_int) LINEHIGH, NULL, NULL, 0,
- infofg,infobg,hicol,locol);
-
-- MBCreate(&fmtMB, dirW, DIRWIDE-FMTWIDE-10, 5,
-- (u_int) FMTWIDE, (u_int) LINEHIGH, NULL, saveFormats, F_MAXFMTS,
-+ MBCreate(&fmtMB, dirW, DIRWIDE-FMTWIDE-10, 5,
-+ (u_int) FMTWIDE, (u_int) LINEHIGH, NULL, saveFormats, F_MAXFMTS,
- infofg,infobg,hicol,locol);
- fmtMB.hascheck = 1;
- MBSelect(&fmtMB, 0);
-
-- MBCreate(&colMB, dirW, DIRWIDE-COLWIDE-10, 5+LINEHIGH+6,
-- (u_int) COLWIDE, (u_int) LINEHIGH, NULL, saveColors, F_MAXCOLORS,
-+ MBCreate(&colMB, dirW, DIRWIDE-COLWIDE-10, 5+LINEHIGH+6,
-+ (u_int) COLWIDE, (u_int) LINEHIGH, NULL, saveColors, F_MAXCOLORS,
- infofg,infobg,hicol,locol);
- colMB.hascheck = 1;
- MBSelect(&colMB, 0);
-
-
-- d_loadPix = XCreatePixmapFromBitmapData(theDisp, dirW,
-- (char *) d_load_bits, d_load_width, d_load_height,
-+ d_loadPix = XCreatePixmapFromBitmapData(theDisp, dirW,
-+ (char *) d_load_bits, d_load_width, d_load_height,
- infofg, infobg, dispDEEP);
-
-- d_savePix = XCreatePixmapFromBitmapData(theDisp, dirW,
-- (char *) d_save_bits, d_save_width, d_save_height,
-+ d_savePix = XCreatePixmapFromBitmapData(theDisp, dirW,
-+ (char *) d_save_bits, d_save_width, d_save_height,
- infofg, infobg, dispDEEP);
-
- }
--
-+
-
- /***************************************************/
- void DirBox(mode)
-@@ -261,7 +261,7 @@
-
- BTSetActive(&dbut[S_BOLDSET], haveoldinfo);
- BTSetActive(&dbut[S_BOLDNAM], haveoldinfo);
--
-+
- CBSetActive(&saveselCB, HaveSelection());
-
- MBSetActive(&fmtMB, 1);
-@@ -303,15 +303,15 @@
- if (gap>16) {
- gap = 16;
- top = dList.y + (dList.h - (nbts*BUTTH) - (ngaps*gap))/2;
--
-+
- for (i=0; i<nbts; i++) dbut[i].y = top + i*(BUTTH+gap);
- }
- else {
-- for (i=0; i<nbts; i++)
-+ for (i=0; i<nbts; i++)
- dbut[i].y = dList.y + ((dList.h-BUTTH)*i) / ngaps;
- }
- }
--
-+
-
-
- /***************************************************/
-@@ -320,23 +320,22 @@
- {
- int i, ypos, txtw;
- char foo[30], *str;
-- XRectangle xr;
-
- if (dList.nstr==1) strcpy(foo,"1 file");
- else sprintf(foo,"%d files",dList.nstr);
-
- ypos = dList.y + dList.h + 8 + ASCENT;
- XSetForeground(theDisp, theGC, infobg);
-- XFillRectangle(theDisp, dirW, theGC, 10, ypos-ASCENT,
-+ XFillRectangle(theDisp, dirW, theGC, 10, ypos-ASCENT,
- (u_int) DIRWIDE, (u_int) CHIGH);
- XSetForeground(theDisp, theGC, infofg);
- DrawString(dirW, 10, ypos, foo);
-
-
-- if (dirUp == BLOAD) str = "Load file:";
-+ if (dirUp == BLOAD) str = "Load file:";
- else str = "Save file:";
- DrawString(dirW, 10, dList.y + (int) dList.h + 30 + 4 + ASCENT, str);
--
-+
- /* draw dividing line */
- XSetForeground(theDisp, theGC, infofg);
- XDrawLine(theDisp, dirW, theGC, 0, dirMB.y-6, DIRWIDE, dirMB.y-6);
-@@ -346,11 +345,11 @@
- XSetForeground(theDisp, theGC, hicol);
- }
- XDrawLine(theDisp, dirW, theGC, 0, dirMB.y-4, DIRWIDE, dirMB.y-4);
--
--
--
-+
-+
-+
- for (i=0; i<(savemode ? S_NBUTTS : S_LOAD_NBUTTS); i++) BTRedraw(&dbut[i]);
--
-+
- MBRedraw(&dirMB);
- MBRedraw(&fmtMB);
- MBRedraw(&colMB);
-@@ -362,7 +361,7 @@
- if (StringWidth(COLLABEL) > txtw) txtw = StringWidth(COLLABEL);
-
- if (!savemode) {
-- XCopyArea(theDisp, d_loadPix, dirW, theGC, 0,0,d_load_width,d_load_height,
-+ XCopyArea(theDisp, d_loadPix, dirW, theGC, 0,0,d_load_width,d_load_height,
- 10, (dirMB.y-6)/2 - d_load_height/2);
-
- XSetFillStyle(theDisp, theGC, FillStippled);
-@@ -399,18 +398,18 @@
- i = v = 0;
- if (MBClick(&fmtMB, x,y) && (v=MBTrack(&fmtMB))>=0) i=1;
- else if (MBClick(&colMB, x,y) && (v=MBTrack(&colMB))>=0) i=2;
--
-+
- if (i) { /* changed one of them */
- if (i==1) SetDirSaveMode(F_FORMAT, v);
- else SetDirSaveMode(F_COLORS, v);
- changeSuffix();
- }
- }
--
--
-+
-+
- if (!savemode) { /* LOAD */
- if (CBClick(&browseCB,x,y)) CBTrack(&browseCB);
-- }
-+ }
- else { /* SAVE */
- if (CBClick(&savenormCB,x,y)) CBTrack(&savenormCB);
- else if (CBClick(&saveselCB,x,y)) CBTrack(&saveselCB);
-@@ -482,7 +481,7 @@
- }
-
- if (oldnumnames != numnames) { /* added some */
-- if (numnames>0) BTSetActive(&but[BDELETE],1);
-+ if (numnames>0) BTSetActive(&but[BDELETE],1);
- windowMB.dim[WMB_TEXTVIEW] = (numnames==0);
-
- LSNewData(&nList, dispnames, numnames);
-@@ -564,7 +563,7 @@
- * a special concealed device setup to provide a list of available
- * disks).
- */
-- if ( ((ndirs-sel) == 2) && (strlen(tmppath) > 1) )
-+ if ( ((ndirs-sel) == 2) && (strlen(tmppath) > 1) )
- strcat ( tmppath, "/000000" ); /* add root dir for device */
- else if ((ndirs-sel) == 1 ) {
- strcpy ( tmppath, "/XV_Root_Device/000000" ); /* fake top level */
-@@ -602,7 +601,7 @@
- xv_getwd(path, sizeof(path));
- LoadCurrentDirectory();
- }
--
-+
-
-
- /***************************************************/
-@@ -621,7 +620,7 @@
- #else
- struct dirent *dp;
- #endif
--
-+
-
- /* get rid of previous file names */
- for (i=0; i<numfnames; i++) free(fnames[i]);
-@@ -680,12 +679,12 @@
- strncpy(dirMBlist[j], dirs[i], stlen);
- dirMBlist[j][stlen] = '\0';
- }
--
-+
-
- lastdir = dirs[ndirs-1];
- dirMB.list = dirMBlist;
- dirMB.nlist = ndirs;
-- XClearArea(theDisp, dirMB.win, dirMB.x, dirMB.y,
-+ XClearArea(theDisp, dirMB.win, dirMB.x, dirMB.y,
- (u_int) dirMB.w+3, (u_int) dirMB.h+3, False);
- i = StringWidth(dirMBlist[0]) + 10;
- dirMB.x = dirMB.x + dirMB.w/2 - i/2;
-@@ -704,8 +703,8 @@
-
- i=0;
- while ( (dp = readdir(dirp)) != NULL) {
-- if (strcmp(dp->d_name, ".")==0 ||
-- (strcmp(dp->d_name, "..")==0 &&
-+ if (strcmp(dp->d_name, ".")==0 ||
-+ (strcmp(dp->d_name, "..")==0 &&
- (strcmp(path,"/")==0 || strcmp(path,"//")==0)) ||
- strcmp(dp->d_name, THUMBDIR)==0) {
- /* skip over '.' and '..' and THUMBDIR */
-@@ -733,7 +732,7 @@
- /* For VMS we will default all files EXCEPT directories to avoid
- the high cost of the VAX C implementation of the stat function.
- Suggested by Kevin Oberman (OBERMAN@icdc.llnl.gov) */
--
-+
- if (xv_strstr (fnames[i]+1, ".DIR") != NULL) fnames[i][0] = C_DIR;
- if (xv_strstr (fnames[i]+1, ".EXE") != NULL) fnames[i][0] = C_EXE;
- if (xv_strstr (fnames[i]+1, ".OBJ") != NULL) fnames[i][0] = C_BLK;
-@@ -784,11 +783,13 @@
-
-
- /***************************************************/
-+#ifdef FOO
- static int cd_able(str)
- char *str;
- {
- return ((str[0] == C_DIR || str[0] == C_LNK));
- }
-+#endif /* FOO */
-
-
- /***************************************************/
-@@ -829,7 +830,7 @@
- int len;
-
- len = strlen(filename);
--
-+
- if (c>=' ' && c<'\177') { /* printable characters */
- /* note: only allow 'piped commands' in savemode... */
-
-@@ -918,19 +919,19 @@
- {
- /* called to 'auto complete' a filename being entered. If the name that
- has been entered so far is anything but a simple filename (ie, has
-- spaces, pipe char, '/', etc) fails. If it is a simple filename,
-+ spaces, pipe char, '/', etc) fails. If it is a simple filename,
- looks through the name list to find something that matches what's already
- been typed. If nothing matches, it fails. If more than one thing
- matches, it sets the name to the longest string that the multiple
-- matches have in common, and succeeds (and beeps).
-+ matches have in common, and succeeds (and beeps).
- If only one matches, sets the string to the match and succeeds.
--
-+
- returns zero on failure, non-zero on success */
--
-+
- int i, firstmatch, slen, nummatch, cnt;
-
- /* is filename a simple filename? */
-- if (strlen(filename)==0 ||
-+ if (strlen(filename)==0 ||
- ISPIPE(filename[0]) ||
- index(filename, '/') ||
- filename[0]=='~' ) return 0;
-@@ -946,7 +947,7 @@
- firstmatch = i;
-
- /* count # of matches */
-- for (i=firstmatch, nummatch=0;
-+ for (i=firstmatch, nummatch=0;
- i<dList.nstr && strncmp(filename, dList.str[i]+1, (size_t) slen)==0;
- i++, nummatch++);
-
-@@ -960,14 +961,14 @@
- while (dList.str[firstmatch][slen+1]!='\0') {
- filename[slen] = dList.str[firstmatch][slen+1];
- slen++; filename[slen] = '\0';
--
-+
- for (i=firstmatch, cnt=0;
- i<dList.nstr && strncmp(filename, dList.str[i]+1, (size_t) slen)==0;
- i++, cnt++);
-
- if (cnt != nummatch) { slen--; filename[slen] = '\0'; break; }
-- }
--
-+ }
-+
- XBell(theDisp, 0);
-
- return 1;
-@@ -1003,7 +1004,7 @@
- i = pos - (NLINES/2);
- SCSetVal(&dList.scrl, i);
- }
--
-+
-
- /***************************************************/
- void RedrawDNamW()
-@@ -1012,7 +1013,7 @@
-
- /* draw substring filename[stPos:enPos] and cursor */
-
-- Draw3dRect(dnamW, 0, 0, (u_int) DNAMWIDE+5, (u_int) LINEHIGH+4, R3D_IN, 2,
-+ Draw3dRect(dnamW, 0, 0, (u_int) DNAMWIDE+5, (u_int) LINEHIGH+4, R3D_IN, 2,
- hicol, locol, infobg);
-
- XSetForeground(theDisp, theGC, infofg);
-@@ -1023,7 +1024,7 @@
- XDrawLine(theDisp, dnamW, theGC, 2,0,2,LINEHIGH+5);
- }
-
-- if ((size_t) enPos < strlen(filename)) {
-+ if ((size_t) enPos < strlen(filename)) {
- /* draw a "there's more over here" doowah */
- XDrawLine(theDisp, dnamW, theGC, DNAMWIDE+5,0,DNAMWIDE+5,LINEHIGH+5);
- XDrawLine(theDisp, dnamW, theGC, DNAMWIDE+4,0,DNAMWIDE+4,LINEHIGH+5);
-@@ -1057,7 +1058,7 @@
- fmt = MBWhich(&fmtMB);
- col = MBWhich(&colMB);
-
-- if (fmt<0 || col<0)
-+ if (fmt<0 || col<0)
- FatalError("xv: no 'checked' format or color. shouldn't happen!\n");
-
-
-@@ -1068,19 +1069,19 @@
- dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
- return -1;
- }
--
-+
- for (i=0; i<numnames; i++) {
- if ((i&0x3f)==0) WaitCursor();
- if (namelist[i][0] != '/') fprintf(fp, "%s/%s\n", initdir, namelist[i]);
- else fprintf(fp, "%s\n", namelist[i]);
- }
--
-+
- i = (ferror(fp)) ? 1 : 0;
- if (CloseOutFile(fp, fullname, i) == 0) {
- DirBox(0);
- XVCreatedFile(fullname);
- }
--
-+
- SetCursors(-1);
- dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
- return i;
-@@ -1147,34 +1148,41 @@
- rv = WritePBM (fp, thepic, ptype, w, h, rp,gp,bp, nc,col,1,picComments);
- break;
-
-- case F_PBMASCII:
-+ case F_PBMASCII:
- rv = WritePBM (fp, thepic, ptype, w, h, rp,gp,bp, nc,col,0,picComments);
- break;
-
- case F_XBM:
-- rv = WriteXBM (fp, thepic, w, h, rp, gp, bp, fullname); break;
-+ rv = WriteXBM (fp, thepic, w, h, rp, gp, bp, fullname);
-+ break;
-
- case F_SUNRAS:
-- rv = WriteSunRas(fp, thepic, ptype, w, h, rp, gp, bp, nc, col,0); break;
-+ rv = WriteSunRas(fp, thepic, ptype, w, h, rp, gp, bp, nc, col,0);
-+ break;
-
- case F_BMP:
-- rv = WriteBMP (fp, thepic, ptype, w, h, rp, gp, bp, nc, col); break;
-+ rv = WriteBMP (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
-+ break;
-
- case F_IRIS:
-- rv = WriteIRIS (fp, thepic, ptype, w, h, rp, gp, bp, nc, col); break;
--
-+ rv = WriteIRIS (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
-+ break;
-+
- case F_TARGA:
-- rv = WriteTarga (fp, thepic, ptype, w, h, rp, gp, bp, nc, col); break;
--
-+ rv = WriteTarga (fp, thepic, ptype, w, h, rp, gp, bp, nc, col);
-+ break;
-+
- case F_XPM:
-- rv = WriteXPM (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
-- fullname, picComments);
-+ rv = WriteXPM (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
-+ fullname, picComments);
-+ break;
-+
- case F_FITS:
-- rv = WriteFITS (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
-- picComments);
-+ rv = WriteFITS (fp, thepic, ptype, w, h, rp, gp, bp, nc, col,
-+ picComments);
- break;
- }
--
-+
-
- if (CloseOutFile(fp, fullname, rv) == 0) {
- DirBox(0);
-@@ -1184,12 +1192,12 @@
- }
- }
-
--
-+
- if (pfree) free(thepic);
--
-+
- SetCursors(-1);
- dbut[S_BOK].lit = 0; BTRedraw(&dbut[S_BOK]);
--
-+
- return rv;
- }
-
-@@ -1200,6 +1208,7 @@
- char *st;
- {
- strncpy(deffname, st, (size_t) MAXFNLEN-1);
-+ deffname[MAXFNLEN-1] = '\0';
- setFName(st);
- }
-
-@@ -1212,7 +1221,7 @@
- filename[MAXFNLEN-1] = '\0'; /* make sure it's terminated */
- curPos = strlen(st);
- stPos = 0; enPos = curPos;
--
-+
- showFName();
- }
-
-@@ -1221,17 +1230,17 @@
- static void showFName()
- {
- int len;
--
-+
- len = strlen(filename);
--
-+
- if (curPos<stPos) stPos = curPos;
- if (curPos>enPos) enPos = curPos;
--
-+
- if (stPos>len) stPos = (len>0) ? len-1 : 0;
- if (enPos>len) enPos = (len>0) ? len-1 : 0;
--
-+
- /* while substring is shorter than window, inc enPos */
--
-+
- while (XTextWidth(mfinfo, &filename[stPos], enPos-stPos) < DNAMWIDE
- && enPos<len) { enPos++; }
-
-@@ -1244,7 +1253,7 @@
- }
-
-
-- if (ctrlColor) XClearArea(theDisp, dnamW, 2,2, (u_int) DNAMWIDE+5-3,
-+ if (ctrlColor) XClearArea(theDisp, dnamW, 2,2, (u_int) DNAMWIDE+5-3,
- (u_int) LINEHIGH+4-3, False);
- else XClearWindow(theDisp, dnamW);
-
-@@ -1270,7 +1279,7 @@
- else {
- strcpy(globname, filename);
- if (globname[0] == '~') Globify(globname);
--
-+
- if (globname[0] != '/') sprintf(fullname, "%s%s", path, globname);
- else strcpy(fullname, globname);
- }
-@@ -1294,10 +1303,10 @@
- MBRedraw(&fmtMB);
- }
- }
--
-+
- if (bnum>=0) MBSelect(&colMB, bnum);
- }
--
-+
-
- else if (group == F_FORMAT) {
- MBSelect(&fmtMB, bnum);
-@@ -1322,10 +1331,10 @@
- colMB.dim[F_GREYSCALE] = 0;
- colMB.dim[F_BWDITHER] = 0;
- colMB.dim[F_REDUCED] = (picType==PIC8) ? 0 : 1;
-- if (picType!=PIC8 && MBWhich(&colMB)==F_REDUCED)
-+ if (picType!=PIC8 && MBWhich(&colMB)==F_REDUCED)
- MBSelect(&colMB, F_FULLCOLOR);
- }
--
-+
- if (MBWhich(&fmtMB) == F_FILELIST) {
- MBSetActive(&colMB, 0);
- CBSetActive(&savenormCB, 0);
-@@ -1337,12 +1346,12 @@
- }
- }
-
--
-+
-
- /***************************************/
- static void changeSuffix()
- {
-- /* see if there's a common suffix at the end of the filename.
-+ /* see if there's a common suffix at the end of the filename.
- if there is, remember what case it was (all caps or all lower), lop
- it off, and replace it with a new appropriate suffix, in the
- same case */
-@@ -1356,7 +1365,7 @@
- suffix++; /* point to first letter of the suffix */
-
- /* check for all-caposity */
-- for (sp = suffix, allcaps=1; *sp; sp++)
-+ for (sp = suffix, allcaps=1; *sp; sp++)
- if (islower(*sp)) allcaps = 0;
-
- /* copy the suffix into an all-lower-case buffer */
-@@ -1401,7 +1410,7 @@
- case F_GIF: strcpy(lowsuf,"gif"); break;
- case F_PM: strcpy(lowsuf,"pm"); break;
- case F_PBMRAW:
-- case F_PBMASCII: if (col == F_FULLCOLOR || col == F_REDUCED)
-+ case F_PBMASCII: if (col == F_FULLCOLOR || col == F_REDUCED)
- strcpy(lowsuf,"ppm");
- else if (col == F_GREYSCALE) strcpy(lowsuf,"pgm");
- else if (col == F_BWDITHER) strcpy(lowsuf,"pbm");
-@@ -1426,10 +1435,10 @@
- }
-
- if (allcaps) { /* upper-caseify lowsuf */
-- for (sp=lowsuf; *sp; sp++)
-+ for (sp=lowsuf; *sp; sp++)
- *sp = (islower(*sp)) ? toupper(*sp) : *sp;
- }
--
-+
- /* one other case: if the original suffix started with a single
- capital letter, make the new suffix start with a single cap */
- if (isupper(suffix[0])) lowsuf[0] = toupper(lowsuf[0]);
-@@ -1439,7 +1448,7 @@
- }
-
- }
--
-+
-
- /***************************************************/
- int DirCheckCD()
-@@ -1462,7 +1471,7 @@
- static int FNameCdable()
- {
- /* returns '1' if filename is a directory, and goes there */
--
-+
- char newpath[1024];
- struct stat st;
- int retval = 0;
-@@ -1518,7 +1527,7 @@
- retval = 1;
- }
- }
--
-+
- return retval;
- }
-
-@@ -1550,7 +1559,7 @@
-
- if (*uname=='\0') { /* no name. substitute ~ with $HOME */
- char *homedir;
-- homedir = (char *) getenv("HOME");
-+ homedir = (char *) getenv("HOME");
- if (homedir == NULL) homedir = ".";
- strcpy(tmp,homedir);
- strcat(tmp,sp);
-@@ -1579,7 +1588,7 @@
- /* opens file for output. does various error handling bits. Returns
- an open file pointer if success, NULL if failure */
-
-- FILE *fp;
-+ FILE *fp = NULL;
- struct stat st;
-
- if (!filename || filename[0] == '\0') return NULL;
-@@ -1596,23 +1605,34 @@
- #else
- strcpy(outFName, "[]xvXXXXXX.lis");
- #endif
-+#ifdef USE_MKSTEMP
-+ fp = fdopen(mkstemp(outFName), "w");
-+#else
- mktemp(outFName);
-+#endif
- dopipe = 1;
- }
-
-
-- /* see if file exists (ie, we're overwriting) */
-- if (stat(outFName, &st)==0) { /* stat succeeded, file must exist */
-- static char *foo[] = { "\nOk", "\033Cancel" };
-- char str[512];
-+#ifdef USE_MKSTEMP /* (prior) nonexistence of file is already guaranteed by */
-+ if (!dopipe) /* mkstemp(), but now mkstemp() itself has created it */
-+#endif
-+ /* see if file exists (i.e., we're overwriting) */
-+ if (stat(outFName, &st)==0) { /* stat succeeded, file must exist */
-+ static char *foo[] = { "\nOk", "\033Cancel" };
-+ char str[512];
-
-- sprintf(str,"Overwrite existing file '%s'?", outFName);
-- if (PopUp(str, foo, 2)) return NULL;
-- }
--
-+ sprintf(str,"Overwrite existing file '%s'?", outFName);
-+ if (PopUp(str, foo, 2)) return NULL;
-+ }
-+
-+
-+ /* Open file (if not already open via mkstemp()) */
-+#ifdef USE_MKSTEMP
-+ if (!dopipe)
-+#endif
-+ fp = fopen(outFName, "w");
-
-- /* Open file */
-- fp = fopen(outFName, "w");
- if (!fp) {
- char str[512];
- sprintf(str,"Can't write file '%s'\n\n %s.",outFName, ERRSTR(errno));
-@@ -1622,7 +1642,7 @@
-
- return fp;
- }
--
-+
-
- /***************************************/
- int CloseOutFile(fp, filename, failed)
-@@ -1642,9 +1662,8 @@
- return 1;
- }
-
--
-+
- if (fclose(fp) == EOF) {
-- static char *foo[] = { "\nWeird!" };
- char str[512];
- sprintf(str,"Can't close file '%s'\n\n %s.",outFName, ERRSTR(errno));
- ErrPopUp(str, "\nWeird!");
-@@ -1666,7 +1685,7 @@
- }
-
- SetISTR(ISTR_INFO,"Successfully wrote '%s'%s", outFName, buf);
--
-+
- if (dopipe) {
- char cmd[512], str[1024];
- int i;
-@@ -1709,7 +1728,7 @@
- return 0;
- }
-
--
-+
-
-
- static byte rBW[2], gBW[2], bBW[2];
-@@ -1732,7 +1751,7 @@
- bwpic = (byte *) NULL;
- *nc = numcols; *rpp = rMap; *gpp = gMap; *bpp = bMap;
-
-- /* quick check: if we're saving a 24-bit image, then none of this
-+ /* quick check: if we're saving a 24-bit image, then none of this
- complicated 'reduced'/dithered/smoothed business comes into play.
- 'reduced' is disabled, for semi-obvious reasons, in 24-bit mode,
- as is 'dithered'. If 'smoothed', and we're saving at current
-@@ -1744,32 +1763,32 @@
- if we're saving B/W DITHERED, and deal accordingly */
-
-
-- if (ptype == PIC24) {
-+ if (ptype == PIC24) {
- if (color != F_BWDITHER) return NULL;
- else { /* generate a bw-dithered version */
- byte *p24, *thepic;
--
-+
- thepic = pic;
- p24 = GammifyPic24(thepic, pw, ph);
- if (p24) thepic = p24;
--
-+
- /* generate a FSDithered 1-byte per pixel image */
- bwpic = FSDither(thepic, PIC24, pw, ph, NULL,NULL,NULL, 0, 1);
- if (!bwpic) FatalError("unable to malloc dithered picture (DoSave)");
--
-+
- if (p24) free(p24); /* won't need it any more */
--
-+
- /* build a BW colormap */
- rBW[0] = gBW[0] = bBW[0] = 0;
- rBW[1] = gBW[1] = bBW[1] = 255;
--
-+
- *rpp = rBW; *gpp = gBW; *bpp = bBW;
- *nc = 2;
--
-+
- return bwpic;
- }
- }
--
-+
-
-
- /* ptype == PIC8 ... */
-@@ -1777,7 +1796,7 @@
- *nc = numcols; *rpp = rMap; *gpp = gMap; *bpp = bMap;
- if (color==F_REDUCED) { *rpp = rdisp; *gpp = gdisp; *bpp = bdisp; }
-
-- /* if DITHER or SMOOTH, and color==FULLCOLOR or GREY,
-+ /* if DITHER or SMOOTH, and color==FULLCOLOR or GREY,
- make color=REDUCED, so it will be written with the correct colortable */
-
- if ((epicMode == EM_DITH || epicMode == EM_SMOOTH) && color != F_REDUCED) {
-@@ -1789,7 +1808,7 @@
- *rpp = gray; *gpp = gray; *bpp = gray;
- }
- }
--
-+
-
-
-
-@@ -1823,8 +1842,8 @@
- * and whether or not it should be freed when we're done with it. The 'pic'
- * returned is the desired portion of 'cpic' or 'epic' if there is a
- * selection, and the saveselCB is enabled, or alternately, it's the
-- * whole cpic or epic.
-- *
-+ * whole cpic or epic.
-+ *
- * if selection does not intersect cpic/epic, returns cpic/epic
- * NEVER RETURNS NULL
- */
-@@ -1837,7 +1856,7 @@
- if (savenormCB.val) { thepic = cpic; pw = cWIDE; ph = cHIGH; }
- else { thepic = epic; pw = eWIDE; ph = eHIGH; }
-
-- *pwide = pw; *phigh = ph;
-+ *pwide = pw; *phigh = ph;
-
-
- if (saveselCB.active && saveselCB.val && HaveSelection()) {
-@@ -1862,7 +1881,7 @@
- CoordP2E(x2,y2, &x2, &y2);
- slx = x1; sly = y1; slw = x2-x1; slh = y2-y1;
- CropRect2Rect(&slx, &sly, &slw, &slh, 0,0,pw,ph);
--
-+
- if (slw<1 || slh<1) { slx = sly = 0; slw=pw; slh=ph; }
-
- if (slx!=0 || sly!=0 || slw!=pw || slh!=ph) {
-@@ -1871,7 +1890,7 @@
- }
- }
-
-- *pwide = slw; *phigh = slh;
-+ *pwide = slw; *phigh = slh;
- }
-
- return thepic;
-@@ -1884,11 +1903,11 @@
- byte **rmapP, **gmapP, **bmapP;
- {
- /* handles the whole ugly mess of the various save options.
-- * returns an image, of type 'ptypeP', size 'wP,hP'.
-+ * returns an image, of type 'ptypeP', size 'wP,hP'.
- * if (*ptypeP == PIC8), also returns numcols 'ncP', and the r,g,b map
- * to use rmapP, gmapP, bmapP.
- *
-- * if freeP is set, image can safely be freed after it is saved
-+ * if freeP is set, image can safely be freed after it is saved
- */
-
- byte *pic1, *pic2;
-@@ -1896,9 +1915,9 @@
-
- pic1 = handleNormSel(&ptype, &w, &h, &pfree);
-
-- pic2 = handleBWandReduced(pic1, ptype, w,h, MBWhich(&colMB),
-+ pic2 = handleBWandReduced(pic1, ptype, w,h, MBWhich(&colMB),
- ncP, rmapP, gmapP, bmapP);
-- if (pic2) {
-+ if (pic2) {
- if (pfree) free(pic1);
- pic1 = pic2;
- pfree = 1;
-@@ -1906,7 +1925,7 @@
- }
-
-
-- if (ptype == PIC24) {
-+ if (ptype == PIC24) {
- pic2 = GammifyPic24(pic1, w, h);
- if (pic2) {
- if (pfree) free(pic1);
-@@ -1920,7 +1939,7 @@
- return pic1;
- }
-
--
-+
- /***************************************/
- void GetSaveSize(wP, hP)
- int *wP, *hP;
-@@ -1947,7 +1966,7 @@
- CoordP2E(x2,y2, &x2, &y2);
- slx = x1; sly = y1; slw = x2-x1; slh = y2-y1;
- CropRect2Rect(&slx, &sly, &slw, &slh, 0,0,eWIDE,eHIGH);
--
-+
- if (slw<1 || slh<1) { slx = sly = 0; slw=eWIDE; slh=eHIGH; }
- }
- }
-@@ -1982,7 +2001,7 @@
-
- if (stat(namelist[curname], &origStat)==0) {
- haveStat = 1;
-- if (DEBUG) fprintf(stderr," origStat.size=%ld, origStat.mtime=%d\n",
-+ if (DEBUG) fprintf(stderr," origStat.size=%ld, origStat.mtime=%ld\n",
- origStat.st_size, origStat.st_mtime);
- }
- }
-@@ -1993,7 +2012,7 @@
- int CheckPoll(del)
- int del;
- {
-- /* returns '1' if the file has been modified, and either
-+ /* returns '1' if the file has been modified, and either
- A) the file has stabilized (st = lastStat), or
- B) 'del' seconds have gone by since the file last changed size
- */
-@@ -2007,14 +2026,14 @@
- (strcmp(namelist[curname], STDINSTR)!=0)) {
-
- if (stat(namelist[curname], &st)==0) {
-- if (DEBUG) fprintf(stderr," st.size=%ld, st.mtime=%d\n",
-+ if (DEBUG) fprintf(stderr," st.size=%ld, st.mtime=%ld\n",
- st.st_size, st.st_mtime);
-
- if ((st.st_size == origStat.st_size) &&
- (st.st_mtime == origStat.st_mtime)) return 0; /* no change */
-
- /* if it's changed since last looked ... */
-- if (!haveLastStat ||
-+ if (!haveLastStat ||
- st.st_size != lastStat.st_size ||
- st.st_mtime != lastStat.st_mtime) {
- xvbcopy((char *) &st, (char *) &lastStat, sizeof(struct stat));
-@@ -2031,7 +2050,7 @@
- }
- }
- }
--
-+
- return 0;
- }
-
-@@ -2042,14 +2061,13 @@
- {
- /* called when file 'name' has been deleted. If any of the browsers
- were showing the directory that the file was in, does a rescan() */
--
-- int i;
-+
- char buf[MAXPATHLEN + 2], *tmp;
-
- strcpy(buf, name);
- tmp = BaseName(buf);
- *tmp = '\0'; /* truncate after last '/' */
--
-+
- if (strcmp(path, buf)==0) LoadCurrentDirectory();
- }
-
-diff -ruN xv-3.10a/xvevent.c xv-3.10a-bugfixes/xvevent.c
---- xv-3.10a/xvevent.c 1995-01-23 15:20:24.000000000 -0800
-+++ xv-3.10a-bugfixes/xvevent.c 2004-05-16 18:02:03.000000000 -0700
-@@ -101,15 +101,15 @@
- while (!done) {
-
- if (waitsec > -1 && canstartwait && !waiting && XPending(theDisp)==0) {
-- /* we wanna wait, we can wait, we haven't started waiting yet, and
-- all pending events (ie, drawing the image the first time)
-+ /* we wanna wait, we can wait, we haven't started waiting yet, and
-+ all pending events (ie, drawing the image the first time)
- have been dealt with: START WAITING */
- time((time_t *) &orgtime);
- waiting = 1;
- }
-
-
-- /* if there's an XEvent pending *or* we're not doing anything
-+ /* if there's an XEvent pending *or* we're not doing anything
- in real-time (polling, flashing the selection, etc.) get next event */
- if ((waitsec==-1 && !polling && !HaveSelection()) || XPending(theDisp)>0) {
- XNextEvent(theDisp, &event);
-@@ -187,7 +187,7 @@
-
- #ifdef VMS
- static int borders_sized = 0;
--
-+
- if (!borders_sized && !useroot && exp_event->window == mainW) {
- /*
- * Initial expose of main window, find the size of the ancestor
-@@ -198,13 +198,13 @@
- int status, count, mwid, mhgt, x, y, w, h, b, d, mbrd;
- Window root, parent, *children, crw = exp_event->window;
- borders_sized = 1;
-- status = XGetGeometry(theDisp, crw,
-+ status = XGetGeometry(theDisp, crw,
- &root, &x, &y, &mwid, &mhgt, &mbrd, &d);
--
-+
- for ( parent = crw, w=mwid, h=mhgt;
- status && (parent != root) && (parent != vrootW); ) {
- crw = parent;
-- status = XQueryTree ( theDisp, crw, &root, &parent,
-+ status = XQueryTree ( theDisp, crw, &root, &parent,
- &children, &count );
- if ( children != NULL ) XFree ( children );
- }
-@@ -221,7 +221,7 @@
- win = exp_event->window;
- x = exp_event->x; y = exp_event->y;
- w = exp_event->width; h = exp_event->height;
--
-+
- if (PUCheckEvent (event)) break; /* event has been processed */
- if (PSCheckEvent (event)) break; /* event has been processed */
-
-@@ -238,7 +238,7 @@
- if (TextCheckEvent (event, &retval, &done)) break; /* event eaten */
-
- /* if the window doesn't do intelligent redraw, drop but last expose */
-- if (exp_event->count>0 &&
-+ if (exp_event->count>0 &&
- win != mainW && win != ctrlW && win != dirW && win != infoW) break;
-
-
-@@ -301,7 +301,7 @@
- if (DEBUG) fprintf(stderr,"No configs pending.\n");
- /* if (DEBUG) XClearArea(theDisp, mainW, x,y,w,h, False); */
- DrawWindow(x,y,w,h);
--
-+
- if (HaveSelection()) DrawSelection(0);
-
- canstartwait = 1; /* finished drawing */
-@@ -314,7 +314,7 @@
- else if (win == infoW) RedrawInfo(x,y,w,h);
- else if (win == ctrlW) RedrawCtrl(x,y,w,h);
- else if (win == dirW) RedrawDirW(x,y,w,h);
--
-+
- XSetClipMask(theDisp, theGC, None);
- XDestroyRegion(reg);
- }
-@@ -324,10 +324,10 @@
- else if (win == dList.win) LSRedraw(&dList,0);
- else if (win == dList.scrl.win) SCRedraw(&dList.scrl);
- else if (win == dnamW) RedrawDNamW();
-- }
-+ }
- break;
-
--
-+
-
- case ClientMessage: {
- Atom proto, delwin;
-@@ -382,8 +382,8 @@
- XSizeHints hints;
-
- /*
-- * if there's a virtual window manager running (e.g. tvtwm / olvwm),
-- * we're going to get 'cevt' values in terms of the
-+ * if there's a virtual window manager running (e.g. tvtwm / olvwm),
-+ * we're going to get 'cevt' values in terms of the
- * 'real' root window (the one that is the size of the screen).
- * We'll want to translate them into values that are in terms of
- * the 'virtual' root window (the 'big' one)
-@@ -392,7 +392,7 @@
- if (vrootW != rootW) {
- int x1,y1; Window child;
-
-- XTranslateCoordinates(theDisp, rootW, vrootW, cevt->x, cevt->y,
-+ XTranslateCoordinates(theDisp, rootW, vrootW, cevt->x, cevt->y,
- &x1, &y1, &child);
- if (DEBUG) fprintf(stderr," CONFIG trans %d,%d root -> %d,%d vroot\n",
- cevt->x, cevt->y, x1, y1);
-@@ -401,11 +401,11 @@
-
- #ifndef VMS
- /* read hints for this window and adjust any position hints, but
-- only if this is a 'synthetic' event sent to us by the WM
-+ only if this is a 'synthetic' event sent to us by the WM
- ('real' events from the server have useless x,y info, since the
- mainW has been reparented by the WM) */
-
-- if (cevt->send_event &&
-+ if (cevt->send_event &&
- XGetNormalHints(theDisp, cevt->window, &hints)) {
-
- if (DEBUG) fprintf(stderr," CONFIG got hints (0x%x %d,%d)\n",
-@@ -439,11 +439,11 @@
- * This sucks!
- *
- * So, if we have just loaded an image, and we get a Synthetic conf
-- * that is not the desired size (eWIDExeHIGH), ignore it, as it's
-+ * that is not the desired size (eWIDExeHIGH), ignore it, as it's
- * just the conf generated by moving the old window. And stop
- * ignoring further config events
- *
-- * EVIL KLUDGE: do *not* ignore configs that are <100x100. Not
-+ * EVIL KLUDGE: do *not* ignore configs that are <100x100. Not
- * ignoring them won't be a big performance problem, and it'll get
- * around the 'I only got one config in the wrong size' problem when
- * initially displaying small images
-@@ -453,7 +453,7 @@
-
- /* fprintf(stderr,"***mainw, ignore=%d, send_event=%d, evtSize=%d,%d, size=%d,%d\n", ignoreConfigs, cevt->send_event, cevt->width, cevt->height, eWIDE, eHIGH); */
-
-- if (ignoreConfigs==1 && cevt->send_event &&
-+ if (ignoreConfigs==1 && cevt->send_event &&
- (cevt->width != eWIDE || cevt->height != eHIGH)) {
- ignoreConfigs=0; /* ignore this one only */
- break;
-@@ -470,7 +470,7 @@
- else {
- XEvent xev;
- if (DEBUG) fprintf(stderr,"No configs pend.");
--
-+
- if (cevt->width == eWIDE && cevt->height == eHIGH) {
- if (DEBUG) fprintf(stderr,"No redraw\n");
- }
-@@ -478,12 +478,12 @@
- if (DEBUG) fprintf(stderr,"Do full redraw\n");
-
- Resize(cevt->width, cevt->height);
--
-+
- /* eat any pending expose events and do a full redraw */
- while (XCheckTypedWindowEvent(theDisp, mainW, Expose, &xev)) {
- XExposeEvent *exp = (XExposeEvent *) &xev;
-
-- if (DEBUG)
-+ if (DEBUG)
- fprintf(stderr," ate expose (%s) (count=%d) %d,%d %dx%d\n",
- exp->send_event ? "synth" : "real", exp->count,
- exp->x, exp->y, exp->width, exp->height);
-@@ -508,9 +508,9 @@
-
- }
- break;
--
-
--
-+
-+
- case CirculateNotify:
- case DestroyNotify:
- case GravityNotify: break;
-@@ -554,7 +554,7 @@
-
- /* don't do it if we've just switched to a root mode */
- if ((unmap_event->window == mainW && dispMode == 0) ||
-- (unmap_event->window == ctrlW && dispMode != 0)) {
-+ (unmap_event->window == ctrlW && dispMode != 0)) {
-
- if (autoclose) {
- if (autoclose>1) autoclose -= 2; /* grab kludge */
-@@ -586,8 +586,8 @@
- XReparentEvent *reparent_event = (XReparentEvent *) event;
-
- if (DEBUG) {
-- fprintf(stderr,"Reparent: mainW=%x ->win=%x ->ev=%x ->parent=%x ",
-- (u_int) mainW, (u_int) reparent_event->window,
-+ fprintf(stderr,"Reparent: mainW=%x ->win=%x ->ev=%x ->parent=%x ",
-+ (u_int) mainW, (u_int) reparent_event->window,
- (u_int) reparent_event->event, (u_int) reparent_event->parent);
- fprintf(stderr,"%d,%d\n", reparent_event->x, reparent_event->y);
- }
-@@ -598,7 +598,7 @@
-
- p_offx = p_offy = 0; /* topleft correction for WMs titlebar */
-
-- if (ch_offx == 0 && ch_offy == 0) {
-+ if (ch_offx == 0 && ch_offy == 0) {
- /* looks like the user is running MWM or OLWM */
-
- XWindowAttributes xwa;
-@@ -609,8 +609,8 @@
-
- XSync(theDisp, False);
- XGetWindowAttributes(theDisp, mainW, &xwa);
--
-- if (DEBUG)
-+
-+ if (DEBUG)
- fprintf(stderr,"XGetAttr: mainW %d,%d %dx%d\n", xwa.x, xwa.y,
- xwa.width, xwa.height);
-
-@@ -620,8 +620,8 @@
-
- XSync(theDisp, False);
- XGetWindowAttributes(theDisp, reparent_event->parent, &xwa);
--
-- if (DEBUG)
-+
-+ if (DEBUG)
- fprintf(stderr,"XGetAttr: parent %d,%d %dx%d\n", xwa.x, xwa.y,
- xwa.width, xwa.height);
- }
-@@ -641,42 +641,42 @@
- p_offy = xwa.y;
- }
-
--
-+
- /* move window around a bit... */
- {
- XWindowAttributes xwa;
- GetWindowPos(&xwa);
- xwa.width = eWIDE; xwa.height = eHIGH;
--
-+
- /* try to keep the damned thing on-screen, if possible */
- if (xwa.x + xwa.width > dispWIDE) xwa.x = dispWIDE - xwa.width;
- if (xwa.y + xwa.height > dispHIGH) xwa.y = dispHIGH - xwa.height;
- if (xwa.x < 0) xwa.x = 0;
- if (xwa.y < 0) xwa.y = 0;
--
-+
- SetWindowPos(&xwa);
- }
-
- }
- }
- break;
--
-+
-
- case EnterNotify:
- case LeaveNotify: {
- XCrossingEvent *cross_event = (XCrossingEvent *) event;
- if (cross_event->window == mainW || 0
- /* (cross_event->window == gamW && cmapInGam) */ ) {
--
-+
- if (cross_event->type == EnterNotify && cross_event->window == mainW) {
- zoomCurs(cross_event->state);
- }
-
-
-- if (cross_event->type == EnterNotify && LocalCmap && !ninstall)
-+ if (cross_event->type == EnterNotify && LocalCmap && !ninstall)
- XInstallColormap(theDisp,LocalCmap);
-
-- if (cross_event->type == LeaveNotify && LocalCmap && !ninstall)
-+ if (cross_event->type == LeaveNotify && LocalCmap && !ninstall)
- XUninstallColormap(theDisp,LocalCmap);
- }
- }
-@@ -685,12 +685,12 @@
-
- case SelectionClear: break;
-
-- case SelectionRequest:
-+ case SelectionRequest:
- {
- XSelectionRequestEvent *xsrevt = (XSelectionRequestEvent *) event;
- XSelectionEvent xse;
-
-- if (xsrevt->owner != ctrlW ||
-+ if (xsrevt->owner != ctrlW ||
- xsrevt->selection != XA_PRIMARY ||
- xsrevt->target != XA_STRING) { /* can't do it. */
- xse.property = None;
-@@ -702,7 +702,7 @@
- if (xse.property != None) {
- xerrcode = 0;
- XChangeProperty(theDisp, xsrevt->requestor, xse.property,
-- XA_STRING, 8, PropModeReplace,
-+ XA_STRING, 8, PropModeReplace,
- (byte *) ((xevPriSel) ? xevPriSel : "\0"),
- (int) ((xevPriSel) ? strlen(xevPriSel)+1 : 1));
- XSync(theDisp, False);
-@@ -721,9 +721,9 @@
- XSync(theDisp, False);
- }
- break;
--
--
--
-+
-+
-+
- default: break; /* ignore unexpected events */
- } /* switch */
-
-@@ -738,7 +738,7 @@
- int i;
- {
- /* called to handle selection of a dispMB item */
--
-+
- if (i<0 || i>=DMB_MAX) return;
-
- if (dispMB.dim[i]) return; /* disabled */
-@@ -747,36 +747,36 @@
- if (i==DMB_RAW) epicMode = EM_RAW;
- else if (i==DMB_DITH) epicMode = EM_DITH;
- else epicMode = EM_SMOOTH;
--
-- SetEpicMode();
-+
-+ SetEpicMode();
- GenerateEpic(eWIDE, eHIGH);
- DrawEpic();
- SetCursors(-1);
- }
--
-+
- else if (i==DMB_COLRW) { /* toggle rw on/off */
- dispMB.flags[i] = !dispMB.flags[i];
- allocMode = (dispMB.flags[i]) ? AM_READWRITE : AM_READONLY;
- ChangeCmapMode(colorMapMode, 1, 0);
- }
--
-+
- else if (i>=DMB_COLNORM && i<=DMB_COLSTDC && !dispMB.flags[i]) {
- switch (i) {
-- case DMB_COLNORM:
-- ChangeCmapMode(CM_NORMAL, 1, 0);
-- defaultCmapMode = CM_NORMAL;
-+ case DMB_COLNORM:
-+ ChangeCmapMode(CM_NORMAL, 1, 0);
-+ defaultCmapMode = CM_NORMAL;
- break;
-- case DMB_COLPERF:
-+ case DMB_COLPERF:
- ChangeCmapMode(CM_PERFECT,1, 0);
-- defaultCmapMode = CM_PERFECT;
-+ defaultCmapMode = CM_PERFECT;
- break;
-- case DMB_COLOWNC:
-+ case DMB_COLOWNC:
- ChangeCmapMode(CM_OWNCMAP,1, 0);
-- defaultCmapMode = CM_OWNCMAP;
-+ defaultCmapMode = CM_OWNCMAP;
- break;
-- case DMB_COLSTDC:
-+ case DMB_COLSTDC:
- ChangeCmapMode(CM_STDCMAP,1, 0);
-- defaultCmapMode = CM_STDCMAP;
-+ defaultCmapMode = CM_STDCMAP;
- break;
- }
- }
-@@ -788,17 +788,17 @@
- int i;
- {
- /* called to handle selection of a rootMB item */
--
-+
- if (i<0 || i>=RMB_MAX) return;
- if (rootMB.flags[i]) return;
- if (rootMB.dim[i]) return;
-
- dispMode = i;
--
-+
- /* move checkmark */
- for (i=RMB_WINDOW; i<RMB_MAX; i++) rootMB.flags[i] = 0;
- rootMB.flags[dispMode] = 1;
--
-+
- HandleDispMode();
- }
-
-@@ -818,25 +818,25 @@
- else if (i==CONV24_24BIT && state824==1) {
- /* went 24->8->24 */
- char buf[512];
--
-+
- sprintf(buf,"Warning: You appear to have taken a 24-bit ");
- strcat(buf, "image, turned it to an 8-bit image, and turned ");
- strcat(buf, "it back into a 24-bit image. Understand that ");
- strcat(buf, "image data has probably been lost in this ");
- strcat(buf, "transformation. You *may* want to reload the ");
- strcat(buf, "original image to avoid this problem.");
--
-+
- ErrPopUp(buf, "\nI Know!");
--
-+
- state824 = 2; /* shut up until next image is loaded */
- }
- }
- }
--
-+
- else if (i==CONV24_LOCK) {
- conv24MB.flags[i] = !conv24MB.flags[i];
- }
--
-+
- else if (i>=CONV24_FAST && i<=CONV24_BEST) {
- conv24 = i;
- for (i=CONV24_FAST; i<=CONV24_BEST; i++) {
-@@ -859,15 +859,15 @@
- else chdir(initdir);
- OpenBrowse();
- break;
--
-+
- case WMB_COLEDIT: GamBox (!gamUp); break;
- case WMB_INFO: InfoBox(!infoUp); break;
--
-- case WMB_COMMENT:
-+
-+ case WMB_COMMENT:
- if (!commentUp) OpenCommentText();
- else CloseCommentText();
- break;
--
-+
- case WMB_TEXTVIEW: textViewCmd(); break;
- case WMB_ABOUTXV: ShowLicense(); break;
- case WMB_KEYHELP: ShowKeyHelp(); break;
-@@ -892,19 +892,19 @@
- double r,wr,hr;
- wr = ((double) cWIDE) / maxWIDE;
- hr = ((double) cHIGH) / maxHIGH;
--
-+
- r = (wr>hr) ? wr : hr; /* r is the max(wr,hr) */
- w = (int) ((cWIDE / r) + 0.5);
- h = (int) ((cHIGH / r) + 0.5);
- }
- else { w = cWIDE; h = cHIGH; }
--
-+
- WResize(w, h);
- break;
-
- case SZMB_MAXPIC: WMaximize(); break;
-
-- case SZMB_MAXPECT:
-+ case SZMB_MAXPECT:
- {
- int w1,h1;
- w1 = eWIDE; h1 = eHIGH;
-@@ -925,24 +925,24 @@
- if (h==eHIGH) h++;
- WResize(w,h);
- break;
--
--
-+
-+
- case SZMB_SETSIZE: setSizeCmd(); break;
- case SZMB_ASPECT: FixAspect(1, &w, &h); WResize(w,h); break;
-
-- case SZMB_4BY3:
-+ case SZMB_4BY3:
- w = eWIDE; h = (w * 3) / 4;
- if (h>maxHIGH) { h = eHIGH; w = (h*4)/3; }
- WResize(w,h);
- break;
-
-- case SZMB_INTEXP:
-+ case SZMB_INTEXP:
- {
- /* round (eWIDE/cWIDE),(eHIGH/cHIGH) to nearest
- integer expansion/compression values */
--
-+
- double w,h;
--
-+
- if (eWIDE >= cWIDE) {
- w = ((double) eWIDE) / cWIDE;
- w = floor(w + 0.5);
-@@ -961,7 +961,7 @@
- }
- w = pick;
- }
--
-+
- if (eHIGH >= cHIGH) {
- h = ((double) eHIGH) / cHIGH;
- h = floor(h + 0.5);
-@@ -980,11 +980,11 @@
- }
- h = pick;
- }
--
-+
- WResize((int) (w*cWIDE), (int) (h*cHIGH));
- }
- break;
--
-+
- default: break;
- }
- }
-@@ -998,7 +998,7 @@
- int i;
- char txt[512], str[PRINTCMDLEN + 10];
- static char *labels[] = { " Color", " Grayscale", " B/W", "\033Cancel" };
--
-+
- strcpy(txt, "Print: Enter a command that will read a PostScript file ");
- strcat(txt, "from stdin and print it to the desired printer.\n\n");
- #ifndef VMS
-@@ -1011,11 +1011,11 @@
- if (i == 3 || strlen(printCmd)==0) return; /* CANCEL */
-
- if (dirUp == BLOAD) DirBox(0);
--
-+
- SetDirSaveMode(F_FORMAT, F_PS);
- SetDirSaveMode(F_COLORS, i);
-
-- if (printCmd[0] != '|' && printCmd[0] != '!')
-+ if (printCmd[0] != '|' && printCmd[0] != '!')
- sprintf(str, "| %s", printCmd);
- else strcpy(str, printCmd);
-
-@@ -1090,7 +1090,7 @@
- Window win;
- {
- static char foo[16];
--
-+
- if (win == mainW) return "mainW";
- else if (win == rootW) return "rootW";
- else if (win == vrootW) return "vrootW";
-@@ -1106,7 +1106,7 @@
- }
- }
-
--
-+
- /***********************************/
- static void handleButtonEvent(event, donep, retvalp)
- XEvent *event;
-@@ -1127,38 +1127,36 @@
- case ButtonPress:
- /* *always* check for pop-up events, as errors can happen... */
- if (PUCheckEvent (event)) break;
--
-+
- if (autoquit && win == mainW) Quit(0);
--
-+
- if (viewonly) break; /* ignore all other button presses */
--
-+
- if (win == mainW && !useroot && showzoomcursor) {
- DoZoom(x, y, but_event->button);
- break;
- }
--
-+
- if (PSCheckEvent (event)) break;
--
-+
- #ifdef HAVE_JPEG
- if (JPEGCheckEvent(event)) break;
- #endif
--
-+
- #ifdef HAVE_TIFF
- if (TIFFCheckEvent(event)) break;
- #endif
--
-+
- if (GamCheckEvent (event)) break;
- if (BrowseCheckEvent (event, &retval, &done)) break;
- if (TextCheckEvent (event, &retval, &done)) break;
--
-+
- switch (but_event->button) {
--
-- case Button1:
-+
-+ case Button1:
- if (win == mainW) DoSelection(but_event);
--
-+
- else if (win == ctrlW) {
-- int w,h;
--
- if (MBClick(&dispMB, x,y)) SelectDispMB (MBTrack(&dispMB) );
- else if (MBClick(&conv24MB, x,y)) Select24to8MB (MBTrack(&conv24MB));
- else if (MBClick(&rootMB, x,y)) SelectRootMB (MBTrack(&rootMB) );
-@@ -1170,9 +1168,9 @@
- if (i>=0) DoAlg(i);
- break;
- }
--
-+
- i=ClickCtrl(x,y);
--
-+
- switch (i) {
- case BNEXT: retval= NEXTPIC; done=1; break;
- case BPREV: retval= PREVPIC; done=1; break;
-@@ -1192,21 +1190,21 @@
- case BROTR: Rotate(0); break;
- case BFLIPH: Flip(0); break;
- case BFLIPV: Flip(1); break;
--
-+
- case BCROP: Crop(); break;
- case BUNCROP: UnCrop(); break;
- case BACROP: AutoCrop(); break;
--
-+
- case BPAD:
- {
- int mode, wide, high, opaque, omode; char *str;
--
-+
- while (PadPopUp(&mode, &str, &wide, &high, &opaque, &omode)==0) {
-- if (DoPad(mode, str, wide, high, opaque, omode)) {
-+ if (DoPad(mode, str, wide, high, opaque, omode)) {
- done = 1; retval = PADDED; break;
- }
-- }
-- }
-+ }
-+ }
- break;
-
- case BANNOT: annotatePic(); break;
-@@ -1214,27 +1212,27 @@
- case BABOUT: SelectWindowMB(WMB_ABOUTXV); break;
- case BXV: retval = DFLTPIC; done=1; break;
- case BQUIT: retval = QUIT; done=1; break;
--
-+
- default: break;
- }
--
-+
- if (i==BFLIPH || i==BFLIPV) {
- DrawEpic();
- SetCursors(-1);
- }
- }
--
-+
- else if (win == nList.win) {
- i=LSClick(&nList,but_event);
- if (curname<0) ActivePrevNext();
- if (i>=0) { done = 1; retval = i; }
- }
--
-+
- else if (win == nList.scrl.win) SCTrack(&nList.scrl, x, y);
--
-+
- else if (win == dirW) {
- i=ClickDirW(x,y);
--
-+
- switch (i) {
- case S_BOK: if (dirUp == BLOAD) {
- if (!DirCheckCD()) {
-@@ -1246,53 +1244,53 @@
- DoSave();
- }
- break;
--
-+
- case S_BCANC: DirBox(0); break;
--
-+
- case S_BRESCAN:
- WaitCursor(); LoadCurrentDirectory(); SetCursors(-1);
- break;
- }
- }
--
-+
- else if (win == dList.win) {
- i=LSClick(&dList,but_event);
- SelectDir(i);
- }
--
-+
- else if (win == dList.scrl.win) SCTrack(&dList.scrl, x,y);
- else if (win == infoW) InfoBox(0); /* close info */
--
-+
- break;
--
--
-- case Button2:
-+
-+
-+ case Button2:
- if (win == mainW && !useroot) {
- if (!shift && !DoSelection(but_event)) TrackPicValues(x,y);
- else if (shift) Paint();
- }
- break;
--
-+
- case Button3: /* if using root, MUST NOT get rid of ctrlbox. */
-- if (!shift && !useroot) CtrlBox(!ctrlUp);
-+ if (!shift && !useroot) CtrlBox(!ctrlUp);
- else if (shift) BlurPaint();
- break;
--
-+
- default: break;
- }
- }
--
-+
- *donep = done; *retvalp = retval;
- }
-
--
-+
- /***********************************/
- static void handleKeyEvent(event, donep, retvalp)
- XEvent *event;
- int *donep, *retvalp;
- {
- /* handles KeyPress and KeyRelease events, called from HandleEvent */
--
-+
- XKeyEvent *key_event;
- KeySym ks;
- char buf[128];
-@@ -1306,26 +1304,26 @@
- switch (event->type) {
- case KeyRelease:
- if (viewonly) break; /* ignore all user input */
--
-+
- stlen = XLookupString(key_event,buf,128,&ks,(XComposeStatus *) NULL);
- dealt = 0;
--
-+
- if (key_event->window == mainW) {
- u_int foo = key_event->state;
-
-- if (ks == XK_Shift_L || ks == XK_Shift_R)
-+ if (ks == XK_Shift_L || ks == XK_Shift_R)
- foo = foo & (u_int) (~ShiftMask);
-- if (ks == XK_Control_L || ks == XK_Control_R)
-+ if (ks == XK_Control_L || ks == XK_Control_R)
- foo = foo & (u_int) (~ControlMask);
-- if (ks == XK_Meta_L || ks == XK_Meta_R)
-+ if (ks == XK_Meta_L || ks == XK_Meta_R)
- foo = foo & (u_int) (~Mod1Mask);
-- if (ks == XK_Alt_L || ks == XK_Alt_R)
-+ if (ks == XK_Alt_L || ks == XK_Alt_R)
- foo = foo & (u_int) (~Mod1Mask);
-
- zoomCurs(foo);
- }
- break;
--
-+
-
- case KeyPress:
- svkeystate = key_event->state;
-@@ -1343,11 +1341,11 @@
- if (PUCheckEvent (event)) break; /* always check popups */
-
- if (autoquit && key_event->window == mainW) Quit(0);
--
-+
- if (viewonly && !frominterrupt) break; /* ignore all user input */
--
-+
- if (PSCheckEvent (event)) break;
--
-+
- if (key_event->window == mainW) {
- u_int foo = key_event->state;
-
-@@ -1371,7 +1369,7 @@
- if (TextCheckEvent (event, &retval, &done)) break;
-
-
-- /* check for pageup/pagedown, 'p' in main window
-+ /* check for pageup/pagedown, 'p' in main window
- (you can use shift-up or shift-down if no crop rectangle drawn)
- (for viewing multipage docs) */
-
-@@ -1386,7 +1384,7 @@
- else XBell(theDisp,0);
- }
-
-- else if (ck==CK_PAGEDOWN ||
-+ else if (ck==CK_PAGEDOWN ||
- (ck==CK_DOWN && shift && !but[BCROP].active)) {
- if (strlen(pageBaseName) && numPages>1) {
- done = 1; retval = OP_PAGEDN;
-@@ -1429,7 +1427,7 @@
-
- if (dealt) break;
- }
--
-+
-
-
- /* check for crop rect keys */
-@@ -1468,7 +1466,7 @@
- if (theList == &dList && dealt) { /* changed dir selection */
- SelectDir(-1); /* nothing was double-clicked */
- }
--
-+
- if (dealt) break;
- }
-
-@@ -1491,7 +1489,7 @@
- else if (ks==XK_2) FakeButtonPress(&gbut[G_B2]);
- else if (ks==XK_3) FakeButtonPress(&gbut[G_B3]);
- else if (ks==XK_4) FakeButtonPress(&gbut[G_B4]);
-- else if (ks==XK_r || ks==XK_0)
-+ else if (ks==XK_r || ks==XK_0)
- FakeButtonPress(&gbut[G_BRESET]);
-
- else if (ks==XK_x) FakeButtonPress(&but[BCUT]);
-@@ -1521,7 +1519,7 @@
-
- else if (ks==XK_a) FakeButtonPress(&gbut[G_BAPPLY]);
-
-- else if (ks==XK_8) {
-+ else if (ks==XK_8) {
- if (picType==PIC8) Select24to8MB(CONV24_24BIT);
- else Select24to8MB(CONV24_8BIT);
- }
-@@ -1530,20 +1528,20 @@
-
- if (dealt) break;
- }
--
-+
- if (!stlen) break;
--
-+
- if (key_event->window == dirW) {
- if (DirKey(buf[0])) XBell(theDisp,0);
- }
- else { /* commands valid in any window */
- switch (buf[0]) {
--
-+
- /* things in dispMB */
- case 'r': SelectDispMB(DMB_RAW); break;
- case 'd': SelectDispMB(DMB_DITH); break;
- case 's': SelectDispMB(DMB_SMOOTH); break;
--
-+
- /* things in sizeMB */
- case 'n': SelectSizeMB(SZMB_NORM); break;
- case 'm': SelectSizeMB(SZMB_MAXPIC); break;
-@@ -1556,7 +1554,7 @@
- case 'a': SelectSizeMB(SZMB_ASPECT); break;
- case '4': SelectSizeMB(SZMB_4BY3); break;
- case 'I': SelectSizeMB(SZMB_INTEXP); break;
--
-+
- /* things in windowMB */
- case '\026':
- case 'V': SelectWindowMB(WMB_BROWSE); break; /* ^V or V */
-@@ -1565,36 +1563,36 @@
- case '\003': SelectWindowMB(WMB_COMMENT); break; /* ^C */
- case '\024': SelectWindowMB(WMB_TEXTVIEW); break; /* ^T */
- case '\001': SelectWindowMB(WMB_ABOUTXV); break; /* ^A */
--
--
--
-+
-+
-+
- /* buttons in ctrlW */
- case '\t':
- case ' ': FakeButtonPress(&but[BNEXT]); break;
--
-+
- case '\r':
- case '\n':
- if (nList.selected >= 0 && nList.selected < nList.nstr) {
-- done = 1; retval = nList.selected;
-+ done = 1; retval = nList.selected;
- if (frominterrupt) retval = RELOAD;
- }
- break;
--
-+
- case '\010':
- case '\177': FakeButtonPress(&but[BPREV]); break;
--
--
-+
-+
- case '\014': FakeButtonPress(&but[BLOAD]); break; /* ^L */
- case '\023': FakeButtonPress(&but[BSAVE]); break; /* ^S */
- case '\020': FakeButtonPress(&but[BPRINT]); break; /* ^P */
- case '\004': FakeButtonPress(&but[BDELETE]); break; /* ^D */
--
-+
- /* BCOPY, BCUT, BPASTE, BCLEAR handled in 'meta' case */
--
-+
- case '\007': FakeButtonPress(&but[BGRAB]); break; /* ^G */
--
-+
- /* BUP10, BDN10 handled in sizeMB case */
--
-+
- case 'T': FakeButtonPress(&but[BROTL]); break;
- case 't': FakeButtonPress(&but[BROTR]); break;
- case 'h': FakeButtonPress(&but[BFLIPH]); break;
-@@ -1604,24 +1602,24 @@
- case 'C': FakeButtonPress(&but[BACROP]); break;
- case 'P': FakeButtonPress(&but[BPAD]); break;
- case 'A': FakeButtonPress(&but[BANNOT]); break;
--
-+
- /* BABOUT handled in windowMB case */
--
-+
- case '\021': /* ^Q */
- case 'q': FakeButtonPress(&but[BQUIT]); break;
--
-+
- case '?': if (!useroot) CtrlBox(!ctrlUp); break;
--
-+
- /* things in color editor */
- case 'R': FakeButtonPress(&gbut[G_BRESET]); break;
- case 'H': FakeButtonPress(&gbut[G_BHISTEQ]); break;
- case 'N': FakeButtonPress(&gbut[G_BMAXCONT]); break;
--
-+
- default: break;
- }
- }
- }
--
-+
- *donep = done; *retvalp = retval;
- }
-
-@@ -1657,7 +1655,7 @@
- else name = namelist[i];
-
- TextView(name);
--
-+
- if (name != namelist[i]) free(name);
- }
-
-@@ -1671,7 +1669,7 @@
- int i, arg1, arg2, numargs, pct1, pct2, state, neww, newh;
- char txt[512], buf[64], *sp, ch;
- static char *labels[] = { "\nOk", "\033Cancel" };
--
-+
- sprintf(txt, "Enter new image display size (ex. '400 x 300'),\n");
- strcat (txt, "expansion ratio (ex. '75%'),\n");
- strcat (txt, "or expansion ratios (ex. '200% x 125%'):");
-@@ -1685,7 +1683,7 @@
-
-
- /* attempt to parse the string accordingly...
-- * parses strings of the type: <num> [%] [ x <num> [%] ]
-+ * parses strings of the type: <num> [%] [ x <num> [%] ]
- * (-ish. <num> all by itself isn't legal)
- * there may be any # of spaces between items, including zero
- */
-@@ -1825,7 +1823,7 @@
-
- if (theImage)
- XPutImage(theDisp,mainW,theGC,theImage,x,y,x,y, (u_int) w, (u_int) h);
-- else
-+ else
- if (DEBUG) fprintf(stderr,"Tried to DrawWindow when theImage was NULL\n");
- }
-
-@@ -1872,7 +1870,7 @@
- XWindowAttributes xwa;
- xvbzero((char *) &xwa, sizeof(XWindowAttributes));
- xwa.x = xwa.y = 0;
-- xwa.width = dispWIDE;
-+ xwa.width = dispWIDE;
- xwa.height = dispHIGH;
- SetWindowPos(&xwa);
- }
-@@ -1898,14 +1896,14 @@
- rotatesLeft++;
- XClearWindow(theDisp, mainW); /* get rid of old bits */
- GenExpose(mainW, 0, 0, (u_int) eWIDE, (u_int) eHIGH);
-- { int ew, eh;
-+ { int ew, eh;
- ew = eWIDE; eh = eHIGH;
- WResize(eWIDE, eHIGH);
- if (ew>maxWIDE || eh>maxHIGH) { /* rotated pic too big, scale down */
- double r,wr,hr;
- wr = ((double) ew) / maxWIDE;
- hr = ((double) eh) / maxHIGH;
--
-+
- r = (wr>hr) ? wr : hr; /* r is the max(wr,hr) */
- ew = (int) ((ew / r) + 0.5);
- eh = (int) ((eh / r) + 0.5);
-@@ -1920,7 +1918,7 @@
- void WCrop(w,h,dx,dy)
- int w,h,dx,dy;
- {
-- int cx, cy, cw, ch, ex, ey;
-+ int ex, ey;
- XWindowAttributes xwa;
-
- if (useroot) {
-@@ -1931,7 +1929,7 @@
- else {
- /* we want to move window to old x,y + dx,dy (in pic coords) */
- GetWindowPos(&xwa);
--
-+
- if (!origcropvalid) { /* first crop. remember win pos */
- origcropvalid = 1;
- origcropx = xwa.x;
-@@ -1939,7 +1937,7 @@
- }
-
- CoordC2E(dx, dy, &ex, &ey);
--
-+
- xwa.x += ex; xwa.y += ey;
- xwa.width = w; xwa.height = h;
- GenExpose(mainW, 0, 0, (u_int) eWIDE, (u_int) eHIGH);
-@@ -1980,7 +1978,7 @@
- if (xwa.x<0) xwa.x = 0;
- if (xwa.y<0) xwa.y = 0;
- xwa.width = w; xwa.height = h;
--
-+
- if (!useroot) {
- SetWindowPos(&xwa);
- GenExpose(mainW, 0, 0, (u_int) eWIDE, (u_int) eHIGH);
-@@ -1995,8 +1993,8 @@
- XWindowAttributes *xwa;
- {
- Window child;
--
-- /* returns the x,y,w,h coords of mainW. x,y are relative to rootW
-+
-+ /* returns the x,y,w,h coords of mainW. x,y are relative to rootW
- the border is not included (x,y map to top-left pixel in window) */
-
- /* Get the window width/height */
-@@ -2023,7 +2021,7 @@
-
- /* if we're less than max size in one axis, allow window manager doohickeys
- on the screen */
--
-+
- if (xwa->width < dispWIDE && xwc.x < p_offx) xwc.x = p_offx;
- if (xwa->height < dispHIGH && xwc.y < p_offy) xwc.y = p_offy;
-
-@@ -2034,9 +2032,9 @@
- #ifdef BAD_IDEA
- /* if there is a virtual window manager running, then we should translate
- the coordinates that are in terms of 'real' screen into coordinates
-- that are in terms of the 'virtual' root window
-+ that are in terms of the 'virtual' root window
- from: Daren W. Latham <dwl@mentat.udev.cdc.com> */
--
-+
- if (vrootW != rootW) { /* virtual window manager running */
- int x1,y1;
- Window child;
-@@ -2045,14 +2043,14 @@
- xwc.x,xwc.y,x1,y1);
- xwc.x = x1; xwc.y = y1;
- }
--#endif
-+#endif
-
-
- if (DEBUG) {
- fprintf(stderr,
- "SWP: xwa=%d,%d %dx%d xwc=%d,%d %dx%d off=%d,%d bw=%d klg=%d,%d\n",
- xwa->x, xwa->y, xwa->width, xwa->height,
-- xwc.x, xwc.y, xwc.width, xwc.height, p_offx, p_offy,
-+ xwc.x, xwc.y, xwc.width, xwc.height, p_offx, p_offy,
- xwa->border_width, kludge_offx, kludge_offy);
- }
-
-@@ -2080,7 +2078,7 @@
-
- /* all non-DXWM window managers (?) */
- /* Move/Resize the window. */
-- XConfigureWindow(theDisp, mainW,
-+ XConfigureWindow(theDisp, mainW,
- CWX | CWY | CWWidth | CWHeight /*| CWBorderWidth*/, &xwc);
- }
-
-@@ -2090,7 +2088,7 @@
- static void CropKey(dx,dy,grow,crop)
- int dx,dy,grow,crop;
- {
-- int x1,x2,y1,y2,active, ocx, ocy;
-+ int ocx, ocy;
-
- if (crop) { /* chop off a pixel from the appropriate edge */
- int dealt=1;
-@@ -2112,7 +2110,7 @@
- }
- return;
- }
--
-+
- if (grow) MoveGrowSelection(0, 0, dx, dy);
- else MoveGrowSelection(dx, dy, 0, 0);
- }
-@@ -2128,7 +2126,7 @@
- u_long wh, bl;
- int ty, w, ecol, done1;
- char foo[128];
-- char *str =
-+ char *str =
- "8888,8888 = 123,123,123 #123456 (123,123,123 HSV) [-2345,-2345]";
-
- ecol = 0; wh = infobg; bl = infofg;
-@@ -2136,14 +2134,14 @@
- if (!dropper) {
- Pixmap pix, mask;
- XColor cfg, cbg;
--
-+
- cfg.red = cfg.green = cfg.blue = 0x0000;
- cbg.red = cbg.green = cbg.blue = 0xffff;
--
-+
- pix = MakePix1(rootW, dropper_bits, dropper_width, dropper_height);
- mask= MakePix1(rootW, dropperm_bits, dropperm_width, dropperm_height);
-- if (pix && mask)
-- dropper = XCreatePixmapCursor(theDisp, pix, mask, &cfg, &cbg,
-+ if (pix && mask)
-+ dropper = XCreatePixmapCursor(theDisp, pix, mask, &cfg, &cbg,
- dropper_x_hot, dropper_y_hot);
- if (pix) XFreePixmap(theDisp, pix);
- if (mask) XFreePixmap(theDisp, mask);
-@@ -2151,7 +2149,7 @@
-
- if (dropper) XDefineCursor(theDisp, mainW, dropper);
-
-- /* do a colormap search for black and white if LocalCmap
-+ /* do a colormap search for black and white if LocalCmap
- and use those colors instead of infobg and infofg */
-
- if (LocalCmap) {
-@@ -2159,7 +2157,7 @@
-
- for (i=0; i<nfcols; i++) ctab[i].pixel = freecols[i];
- XQueryColors(theDisp,LocalCmap,ctab,nfcols);
--
-+
- /* find 'blackest' pixel */
- cval = 0x10000 * 3;
- for (i=0; i<nfcols; i++)
-@@ -2176,7 +2174,7 @@
- wh = ctab[i].pixel;
- }
- }
--
-+
-
- XSetFont(theDisp, theGC, monofont);
- w = XTextWidth(monofinfo, str, (int) strlen(str));
-@@ -2185,7 +2183,7 @@
- else ty = eHIGH-(monofinfo->ascent + mfinfo->descent)-4;
-
- XSetForeground(theDisp, theGC, bl);
-- XFillRectangle(theDisp, mainW, theGC, 0, ty, (u_int) w + 8,
-+ XFillRectangle(theDisp, mainW, theGC, 0, ty, (u_int) w + 8,
- (u_int) (monofinfo->ascent+monofinfo->descent) + 4);
- XSetForeground(theDisp, theGC, wh);
- XSetBackground(theDisp, theGC, bl);
-@@ -2198,15 +2196,15 @@
-
- if (!XQueryPointer(theDisp,mainW,&rW,&cW,&rx,&ry,&x,&y,&mask)) continue;
- if (done1 && !(mask & Button2Mask)) break; /* button released */
--
-+
- CoordE2P(x,y, &px, &py);
-- RANGE(px,0,pWIDE-1);
-+ RANGE(px,0,pWIDE-1);
- RANGE(py,0,pHIGH-1);
--
-+
- if (px!=ox || py!=oy || !done1) { /* moved, or firsttime. erase & draw */
- double h1, s1, v1;
- int rval, gval, bval;
--
-+
- if (picType == PIC8) {
- ecol = pix = pic[py * pWIDE + px];
- rval = rcmap[pix]; gval = gcmap[pix]; bval = bcmap[pix];
-@@ -2216,7 +2214,7 @@
- gval = pic[py * pWIDE * 3 + px * 3 + 1];
- bval = pic[py * pWIDE * 3 + px * 3 + 2];
- }
--
-+
- clearR = rval; clearG = gval; clearB = bval;
-
- rgb2hsv(rval, gval, bval, &h1, &s1, &v1);
-@@ -2229,8 +2227,8 @@
- px, py, rval, gval, bval, rval, gval, bval,
- (int) h1, (int) (s1 * 100), (int) (v1 * 100),
- px-orgx, py-orgy);
--
-- XDrawImageString(theDisp,mainW,theGC, 4, ty + 2 + monofinfo->ascent,
-+
-+ XDrawImageString(theDisp,mainW,theGC, 4, ty + 2 + monofinfo->ascent,
- foo, (int) strlen(foo));
- ox = px; oy = py;
- done1 = 1;
-@@ -2275,7 +2273,7 @@
-
- /* returns true if there's a config event in which mainW changes size
- in the event queue */
--
-+
- XSync(theDisp, False);
- foo = 0;
- XCheckIfEvent(theDisp, &ev, IsConfig, &foo);
-@@ -2328,7 +2326,7 @@
- * BadMatch errors on XGetImage
- */
-
-- if ((xerrcode == BadAlloc) ||
-+ if ((xerrcode == BadAlloc) ||
- (xerrcode == BadAccess && err->request_code==88 /* X_FreeColors */ ) ||
- (err->request_code == 113 /* X_KillClient */ ) ||
- (xerrcode == BadLength && err->request_code==18 /* X_ChangeProp */ ) ||
-@@ -2361,7 +2359,7 @@
- {
- /* but first, if any input-grabbing popups are active, we have to 'cancel'
- them. */
--
-+
- if (psUp) PSDialog(0); /* close PS window */
-
- #ifdef HAVE_JPEG
-@@ -2400,14 +2398,14 @@
- if (!pen) {
- Pixmap pix, pmask;
- XColor cfg, cbg;
--
-+
- cfg.red = cfg.green = cfg.blue = 0x0000;
- cbg.red = cbg.green = cbg.blue = 0xffff;
--
-+
- pix = MakePix1(rootW, pen_bits, pen_width, pen_height);
- pmask= MakePix1(rootW, penm_bits, penm_width, penm_height);
-- if (pix && pmask)
-- pen = XCreatePixmapCursor(theDisp, pix, pmask, &cfg, &cbg,
-+ if (pix && pmask)
-+ pen = XCreatePixmapCursor(theDisp, pix, pmask, &cfg, &cbg,
- pen_x_hot, pen_y_hot);
- if (pix) XFreePixmap(theDisp, pix);
- if (pmask) XFreePixmap(theDisp, pmask);
-@@ -2416,7 +2414,7 @@
- if (pen) XDefineCursor(theDisp, mainW, pen);
-
-
-- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
-+ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
- | StructureNotifyMask /* | ButtonPressMask */
- | KeyReleaseMask | ColormapChangeMask
- | EnterWindowMask | LeaveWindowMask );
-@@ -2435,7 +2433,7 @@
-
- switch (state) {
- case 0: /* initial state: make sure we do one pixel */
-- px1 = lx = px; py1 = ly = py;
-+ px1 = lx = px; py1 = ly = py;
- paintPixel(px, py);
-
- if (nmask & ShiftMask ) state = 99;
-@@ -2444,7 +2442,7 @@
- else state = 10;
- break;
-
--
-+
- case 1: /* waiting for click */
- if (nmask & ShiftMask) state = 99;
- else if ( mask & Button2Mask) {
-@@ -2459,7 +2457,7 @@
- }
- break;
-
--
-+
- case 10: /* in freehand drawing mode */
- if (nmask & ShiftMask ) state = 99;
- else if (nmask & Button2Mask) state = 1;
-@@ -2507,11 +2505,11 @@
- XSync(theDisp, False);
- Timer(100);
- }
--
-+
- if (nmask & Button2Mask) seenRelease = 1;
- }
- break;
--
-+
- case 99: /* EXIT loop: cleanup */
- if (line) { /* erase old xor-line */
- paintXLine(lx, ly, px1, py1, 0);
-@@ -2521,11 +2519,11 @@
- break;
- }
- }
--
--
-+
-+
- WaitCursor();
--
-- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
-+
-+ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
- | StructureNotifyMask | ButtonPressMask
- | KeyReleaseMask | ColormapChangeMask
- | EnterWindowMask | LeaveWindowMask );
-@@ -2557,17 +2555,17 @@
- byte *pp = pic + (y * pWIDE + x) * 3;
- pp[0] = clearR; pp[1] = clearG; pp[2] = clearB;
- }
--
-+
- /* visual feedback */
- CoordP2E(x, y, &ex, &ey);
- CoordP2E(x+1, y+1, &ex1, &ey1);
--
-+
- ew = ex1-ex; eh = ey1-ey;
--
-+
- if (picType == PIC8) XSetForeground(theDisp, theGC, cols[editColor]);
- else XSetForeground(theDisp, theGC, RGBToXColor(clearR, clearG, clearB));
--
-- if (ew>0 && eh>0)
-+
-+ if (ew>0 && eh>0)
- XFillRectangle(theDisp,mainW,theGC, ex,ey, (u_int) ew, (u_int) eh);
- }
-
-@@ -2577,7 +2575,7 @@
- int x,y,x1,y1;
- {
- int dx,dy,i,lx,ly,adx,ady;
--
-+
- dx = x1-x; dy = y1-y;
- adx = abs(dx); ady = abs(dy);
-
-@@ -2598,7 +2596,7 @@
- paintPixel(lx,ly);
- }
- }
--
-+
-
- }
-
-@@ -2618,14 +2616,14 @@
- CoordP2E(x+1,y+1,&tx1,&ty1);
- ex = tx + (tx1 - tx)/2;
- ey = ty + (ty1 - ty)/2;
--
-+
- CoordP2E(x1, y1, &tx, &ty);
- CoordP2E(x1+1,y1+1,&tx1,&ty1);
- ex1 = tx + (tx1 - tx)/2;
- ey1 = ty + (ty1 - ty)/2;
--
-+
- if (ex==ex1 && ey==ey1) return;
--
-+
- XSetPlaneMask(theDisp, theGC, xorMasks[pntxlcol]);
- XSetFunction(theDisp, theGC, GXinvert);
- XDrawLine(theDisp, mainW, theGC, ex, ey, ex1, ey1);
-@@ -2638,10 +2636,8 @@
- static void BlurPaint()
- {
- Window rW,cW;
-- int rx,ry,ox,oy,x,y, px,py, ex,ey, ex1,ey1, ew, eh, done1, dragging;
-- int uppedpic;
-+ int rx,ry,ox,oy,x,y, px,py, done1, dragging;
- u_int mask;
-- byte *pp;
-
- /* blurs pixels in either editCol (PIC8) or clear{R,G,B} (PIC24) until
- 'shift' key is released. */
-@@ -2653,14 +2649,14 @@
- if (!blur) {
- Pixmap pix, mask;
- XColor cfg, cbg;
--
-+
- cfg.red = cfg.green = cfg.blue = 0x0000;
- cbg.red = cbg.green = cbg.blue = 0xffff;
--
-+
- pix = MakePix1(rootW, blur_bits, blur_width, blur_height);
- mask= MakePix1(rootW, blurm_bits, blurm_width, blurm_height);
-- if (pix && mask)
-- blur = XCreatePixmapCursor(theDisp, pix, mask, &cfg, &cbg,
-+ if (pix && mask)
-+ blur = XCreatePixmapCursor(theDisp, pix, mask, &cfg, &cbg,
- blur_x_hot, blur_y_hot);
- if (pix) XFreePixmap(theDisp, pix);
- if (mask) XFreePixmap(theDisp, mask);
-@@ -2669,7 +2665,7 @@
- if (blur) XDefineCursor(theDisp, mainW, blur);
-
-
-- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
-+ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
- | StructureNotifyMask /* | ButtonPressMask */
- | KeyReleaseMask | ColormapChangeMask
- | EnterWindowMask | LeaveWindowMask );
-@@ -2682,12 +2678,12 @@
- if (!(mask & Button3Mask)) { dragging = 0; continue; }
-
- CoordE2P(x,y, &px, &py);
--
-+
- if (!dragging || (dragging && (px!=ox || py!=oy))) { /* click or drag */
- if (!dragging) blurPixel(px,py);
- else {
- int dx,dy,i,lx,ly;
--
-+
- dx = px-ox; dy = py-oy; /* at least one will be non-zero */
- if (abs(dx) > abs(dy)) { /* X is major axis */
- for (i=0; i<=abs(dx); i++) {
-@@ -2707,10 +2703,10 @@
- done1 = 1; dragging = 1; ox = px; oy = py;
- }
- }
--
-+
- WaitCursor();
--
-- XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
-+
-+ XSelectInput(theDisp, mainW, ExposureMask | KeyPressMask
- | StructureNotifyMask | ButtonPressMask
- | KeyReleaseMask | ColormapChangeMask
- | EnterWindowMask | LeaveWindowMask );
-@@ -2731,9 +2727,9 @@
- {
- /* returns position of highest set bit in 'ul' as an integer (0-31),
- or -1 if none */
--
-+
- int i; unsigned long hb;
--
-+
- hb = 0x80; hb = hb << 24; /* hb = 0x80000000UL */
- for (i=31; ((ul & hb) == 0) && i>=0; i--, ul<<=1);
- return i;
-@@ -2757,7 +2753,7 @@
-
- d = 3*(256*256); j=0;
- for (i=0; i<numcols; i++) {
-- di = ((r-rMap[i]) * (r-rMap[i])) +
-+ di = ((r-rMap[i]) * (r-rMap[i])) +
- ((g-gMap[i]) + (g-gMap[i])) +
- ((b-bMap[i]) * (b-bMap[i]));
- if (i==0 || di<d) { j=i; d=di; }
-@@ -2771,45 +2767,45 @@
- if (theVisual->class==TrueColor || theVisual->class==DirectColor) {
- unsigned long rmask, gmask, bmask;
- int rshift, gshift, bshift, cshift, maplen;
--
-+
- /* compute various shifting constants that we'll need... */
--
-+
- rmask = theVisual->red_mask;
- gmask = theVisual->green_mask;
- bmask = theVisual->blue_mask;
--
-+
- rshift = 7 - highbit(rmask);
- gshift = 7 - highbit(gmask);
- bshift = 7 - highbit(bmask);
--
-+
- if (theVisual->class == DirectColor) {
- maplen = theVisual->map_entries;
- if (maplen>256) maplen=256;
- cshift = 7 - highbit((u_long) (maplen-1));
--
-+
- r = (u_long) directConv[(r>>cshift) & 0xff] << cshift;
- g = (u_long) directConv[(g>>cshift) & 0xff] << cshift;
- b = (u_long) directConv[(b>>cshift) & 0xff] << cshift;
- }
--
--
-+
-+
- /* shift the bits around */
- if (rshift<0) r = r << (-rshift);
- else r = r >> rshift;
--
-+
- if (gshift<0) g = g << (-gshift);
- else g = g >> gshift;
--
-+
- if (bshift<0) b = b << (-bshift);
- else b = b >> bshift;
--
-+
- r = r & rmask;
- g = g & gmask;
- b = b & bmask;
--
-+
- rv =r | g | b;
- }
--
-+
- else { /* non-TrueColor/DirectColor visual */
- if (!ncols)
- rv = ((r + g + b >= 128*3) ? white : black);
-@@ -2820,14 +2816,14 @@
-
- return rv;
- }
--
--
-+
-+
- /***********************/
- static void blurPixel(x,y)
- int x,y;
- {
- /* blurs pixel x,y (pic coords) into pic in editColor (PIC8) or clearR,G,B
-- (PIC24) and does appropriate screen feedback. Does a 3x3 average
-+ (PIC24) and does appropriate screen feedback. Does a 3x3 average
- around the pixel, and replaces it with the average value (PIC24), or
- the closest existing color to the average value (PIC8) */
-
-@@ -2861,7 +2857,7 @@
- if (picType == PIC8) { /* find nearest actual color */
- d = 3*(256*256); j=0;
- for (i=0; i<numcols; i++) {
-- di = ((ar-rMap[i]) * (ar-rMap[i])) +
-+ di = ((ar-rMap[i]) * (ar-rMap[i])) +
- ((ag-gMap[i]) + (ag-gMap[i])) +
- ((ab-bMap[i]) * (ab-bMap[i]));
- if (i==0 || di<d) { j=i; d=di; }
-@@ -2874,17 +2870,17 @@
- pp = pic + (y * pWIDE + x) * 3;
- pp[0] = ar; pp[1] = ag; pp[2] = ab;
- }
--
-+
- /* visual feedback */
- CoordP2E(x, y, &ex, &ey);
- CoordP2E(x+1, y+1, &ex1, &ey1);
--
-+
- ew = ex1-ex; eh = ey1-ey;
--
-+
- if (picType == PIC8) XSetForeground(theDisp, theGC, cols[ac]);
- else XSetForeground(theDisp, theGC, RGBToXColor(ar, ag, ab));
--
-- if (ew>0 && eh>0)
-+
-+ if (ew>0 && eh>0)
- XFillRectangle(theDisp,mainW,theGC, ex,ey, (u_int) ew, (u_int) eh);
- }
-
-@@ -2901,13 +2897,13 @@
- static char buf[256] = {'\0'};
- static char *labels[] = {"\nOk", "\033Cancel" };
-
-- sprintf(txt, "Image Annotation:\n\n%s",
-+ sprintf(txt, "Image Annotation:\n\n%s",
- "Enter string to be placed on image.");
--
-+
- i = GetStrPopUp(txt, labels, 2, buf, 256, "", 0);
- if (i==1 || strlen(buf)==0) return;
--
--
-+
-+
- /* build a 'cimg' array to be pasted on clipboard */
- w = strlen(buf) * 6 - 1; h = 9;
- len = CIMG_PIC8 + w*h;
-diff -ruN xv-3.10a/xvfits.c xv-3.10a-bugfixes/xvfits.c
---- xv-3.10a/xvfits.c 1994-12-27 23:43:29.000000000 -0800
-+++ xv-3.10a-bugfixes/xvfits.c 2005-04-02 21:08:45.000000000 -0800
-@@ -63,7 +63,7 @@
- /* returns '1' on success */
-
- FITS fs;
-- int i, nx, ny, nz, bitpix, np, nrd, ioerror;
-+ int i, nx, ny, nz, bitpix, nrd, ioerror, npixels, bufsize;
- byte *image;
- char *error;
- char basename[64];
-@@ -72,7 +72,7 @@
- fits_block = (char *) malloc((size_t) BLOCKSIZE);
- if (!fits_block) FatalError("Insufficient memory for FITS block buffer");
- }
--
-+
- error = ftopen3d(&fs, fname, &nx, &ny, &nz, &bitpix);
- if (error) {
- SetISTR(ISTR_WARNING, "%s", error);
-@@ -80,9 +80,15 @@
- }
-
- if (quick) nz = 1; /* only load first plane */
-- np = nx * ny * nz;
-+ npixels = nx * ny;
-+ bufsize = nz * npixels;
-+ if (nx <= 0 || ny <= 0 || npixels/nx != ny || bufsize/nz != npixels) {
-+ SetISTR(ISTR_WARNING, "FITS image dimensions out of range (%dx%dx%d)",
-+ nx, ny, nz);
-+ return 0;
-+ }
-
-- image = (byte *) malloc((size_t) np);
-+ image = (byte *) malloc((size_t) bufsize);
- if (!image) FatalError("Insufficient memory for image");
-
- /*
-@@ -90,7 +96,7 @@
- * to ensure that we get that same scaling for all planes.
- */
-
-- nrd = ftgbyte(&fs, image, np);
-+ nrd = ftgbyte(&fs, image, bufsize);
- ioerror = ferror(fs.fp);
- ftclose(&fs);
-
-@@ -104,33 +110,32 @@
- return 0;
- }
-
-- else if (nrd < np) { /* read partial image */
-+ else if (nrd < bufsize) { /* read partial image */
- if (ioerror)
- SetISTR(ISTR_WARNING, "%s", "Truncated FITS file due to I/O error");
- else
- SetISTR(ISTR_WARNING, "%s", "Truncated FITS file");
--
-+
- { byte *foo;
-- for (foo=image+nrd; foo<image+np; foo++) *foo=0x80; /* pad with grey */
-+ for (foo=image+nrd; foo<image+bufsize; foo++) *foo=0x80; /* pad with grey */
- }
- }
-
- if (nz > 1) {
- /* how many planes do we actually have? */
-- nz = (nrd-1)/(nx*ny) + 1;
-+ nz = (nrd-1)/(npixels) + 1;
-
- /* returns how many sub-files created */
- nz = splitfits(image, fs.comment, nx, ny, nz, basename);
-- np = nx * ny;
-- image = (byte *)realloc(image, (size_t) np); /* toss all but first */
-+ image = (byte *)realloc(image, (size_t) npixels); /* toss all but first */
- }
--
-+
- /* There seems to be a convention that fits files be displayed using
- * a cartesian coordinate system. Thus the first pixel is in the lower left
- * corner. Fix this by reflecting in the line y=ny/2.
- */
- flip(image, nx, ny);
--
-+
- /* Success! */
- pinfo->pic = image;
- pinfo->type = PIC8;
-@@ -149,12 +154,12 @@
- pinfo->numpages = nz;
- strcpy(pinfo->pagebname, basename);
- }
--
-+
- return 1;
--}
-+}
-+
-
-
--
- /*******************************************/
- int WriteFITS(fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,comment)
- FILE *fp;
-@@ -164,16 +169,16 @@
- int numcols, colorstyle;
- char *comment;
- {
-- int i, j, np, nend;
-+ int i, j, npixels, nend;
- byte *ptr;
- char *error;
- byte rgb[256];
--
-+
- if (!fits_block) {
- fits_block = (char *) malloc((size_t) BLOCKSIZE);
- if (!fits_block) FatalError("Insufficient memory for FITS block buffer");
- }
--
-+
- error = wrheader(fp, w, h, comment);
- if (error) {
- SetISTR(ISTR_WARNING, "%s", error);
-@@ -197,12 +202,12 @@
- }
- }
-
-- np = w*h;
-+ npixels = w*h;
-
- /* nend is the number of padding characters at the end of the last block */
-- nend = ((np+BLOCKSIZE-1)/BLOCKSIZE)*BLOCKSIZE - np;
-+ nend = ((npixels+BLOCKSIZE-1)/BLOCKSIZE)*BLOCKSIZE - npixels;
- if (nend) for (i=0; i<nend; i++) putc('\0', fp);
--
-+
- return 0;
- }
-
-@@ -216,17 +221,16 @@
- char *basename;
- {
- /*
-- * Given a 3 dimensional FITS image, this splits it up into nz 2-d files.
-+ * Given a 3-dimensional FITS image, this splits it up into nz 2-d files.
- * It returns the number of files actually stored.
- * If only one file could be written, then no split files are created.
- * It returns the basename of the split files in bname.
- * If there was a problem writing files, then a error message will be set.
- */
--
-- int i, np=nx * ny, ioerror, nwrt;
-+
-+ int i, npixels=nx * ny, nwrt;
- FILE *fp;
- char *error;
-- byte *work;
- char filename[70];
-
- #ifndef VMS
-@@ -234,8 +238,12 @@
- #else
- sprintf(basename, "Sys$Disk:[]xvpgXXXXXX");
- #endif
--
-+
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(basename));
-+#else
- mktemp(basename);
-+#endif
- if (basename[0] == '\0') {
- SetISTR(ISTR_WARNING, "%s", "Unable to build temporary filename");
- return 1;
-@@ -251,7 +259,7 @@
- error = "Unable to open temporary file";
- break;
- }
--
-+
- if (wrheader(fp, nx, ny, comment)) {
- error = "I/O error writing temporary file";
- fclose(fp);
-@@ -259,15 +267,15 @@
- break;
- }
-
-- nwrt = fwrite(image+i*np, sizeof(byte), (size_t) np, fp);
-+ nwrt = fwrite(image+i*npixels, sizeof(byte), (size_t) npixels, fp);
- fclose(fp);
-
- if (nwrt == 0) { /* failed to write any data */
- error = "I/O error writing temporary file";
- unlink(filename);
- break;
-- }
-- else if (nwrt < np)
-+ }
-+ else if (nwrt < npixels)
- error = "I/O error writing temporary file";
- }
-
-@@ -291,13 +299,13 @@
- char *comment;
- {
- /* Writes a minimalist FITS file header */
--
-+
- char *block = fits_block, *bp;
-- int i, j, wrotehist, lenhist;
-+ int i, j, lenhist;
- char history[80];
-
- for (i=0, bp=block; i<BLOCKSIZE; i++, bp++) *bp = ' ';
--
-+
- sprintf(history, "Written by XV %s", VERSTR);
- lenhist = strlen(history);
-
-@@ -309,7 +317,7 @@
- wrcard(&block[80*i++], "NAXIS2", T_INT, ny, NULL); /* write NAXIS2 card */
-
- /* Write HISTORY keyword */
-- wrcard(&block[80*i++], "HISTORY", T_STR, lenhist, history);
-+ wrcard(&block[80*i++], "HISTORY", T_STR, lenhist, history);
-
- if (comment && *comment != '\0') {
- while (*comment == '\n') comment++; /* Skip any blank lines */
-@@ -317,7 +325,7 @@
- for (j=0; j<72; j++)
- if (comment[j] == '\0' || comment[j] == '\n') break;
-
-- /*
-+ /*
- * Check to see if it is an xv history record; if so, then avoid
- * duplicating it.
- */
-@@ -330,7 +338,7 @@
- for (i=0, bp=block; i<BLOCKSIZE; i++, bp++) *bp = ' ';
- i = 0;
- }
--
-+
- comment += j;
- while (*comment == '\n') comment++; /* Skip any blank lines */
- }
-@@ -358,40 +366,40 @@
- * Will return an error message if the primary data unit is not a
- * 2 or 3-dimensional array.
- */
--
-+
- FILE *fp;
- int naxis, i;
- char *error;
--
-+
- fp = xv_fopen(file, "r");
- if (!fp) return "Unable to open FITS file";
--
-+
- fs->fp = fp;
- fs->bitpix = 0;
- fs->naxis = 0;
- fs->cpos = 0;
--
-+
- /* read header */
- error = rdheader(fs);
- if (error) {
- ftclose(fs);
- return error;
- }
--
-+
- naxis = fs->naxis;
--
-+
- /* get number of data */
- fs->ndata = 1;
-- for (i=0; i<naxis; i++)
-+ for (i=0; i<naxis; i++)
- fs->ndata = fs->ndata * fs->axes[i];
--
-+
- *nx = fs->axes[0];
- *ny = fs->axes[1];
- if (naxis == 2) *nz = 1;
- else *nz = fs->axes[2];
--
-+
- *bitpix = fs->bitpix;
--
-+
- return NULL;
- }
-
-@@ -418,11 +426,11 @@
- char *block=fits_block, *p;
- char *error;
- long int val; /* the value */
--
-+
- fs->comment = NULL;
- commlen = 0;
- commsize = 256;
--
-+
- res = fread(block, sizeof(char), (size_t) BLOCKSIZE, fs->fp);
- if (res != BLOCKSIZE) return "Error reading FITS file";
- i = 0;
-@@ -464,13 +472,13 @@
- if (res != BLOCKSIZE) return "Error reading FITS file";
- i = 0;
- }
--
-+
- sprintf(name, "NAXIS%d", j+1);
- error = rdcard(&block[i*80], name, T_INT, &val);
- if (error) return error;
- if (val < 0) return "Bad NAXISn value in FITS file";
- if (val == 0) return "FITS file does not contain an image";
--
-+
- if (j < 3) fs->axes[j] = val;
- else if (val != 1) return "FITS file has more than three dimensions";
- i++;
-@@ -488,21 +496,21 @@
- if (res != BLOCKSIZE) return "Unexpected eof in FITS file";
- i = 0;
- }
--
-+
- p = &block[i*80];
- if (strncmp(p, "END ", (size_t) 8) == 0) break;
-- if (strncmp(p, "HISTORY ", (size_t) 8) == 0 ||
-+ if (strncmp(p, "HISTORY ", (size_t) 8) == 0 ||
- strncmp(p, "COMMENT ", (size_t) 8) == 0) {
- p += 8; /* skip keyword */
- for (j=71; j >= 0; j--) if (p[j] != ' ') break;
- j++; /* make j length of comment */
- if (j > 0) { /* skip blank comment cards */
- if (fs->comment == NULL) {
-- fs->comment = (char *) malloc((size_t) commsize);
-+ fs->comment = (char *) malloc((size_t) commsize); /* initially 256 */
- if (fs->comment == NULL)
- FatalError("Insufficient memory for comment buffer");
- }
--
-+
- if (commlen + j + 2 > commsize) { /* if too small */
- char *new;
- commsize += commsize; /* double size of array */
-@@ -515,7 +523,7 @@
- free(fs->comment);
- fs->comment = new;
- }
--
-+
- xvbcopy(p, &fs->comment[commlen], (size_t) j); /* add string */
- commlen += j;
- fs->comment[commlen++] = '\n'; /* with trailing cr */
-@@ -556,9 +564,9 @@
-
- l = strlen(name);
- if (l) xvbcopy(name, card, (size_t) l); /* copy name */
--
-+
- if (dtype == T_NOVAL) return;
--
-+
- if (dtype == T_STR) {
- l = kvalue;
- if (l <= 0) return;
-@@ -566,9 +574,9 @@
- xvbcopy(svalue, &card[8], (size_t) l);
- return;
- }
--
-+
- card[8] = '=';
--
-+
- if (dtype == T_LOG)
- card[29] = kvalue ? 'T' : 'F';
- else { /* T_INT */
-@@ -599,7 +607,7 @@
- int i, ptr;
- char namestr[9];
- static char error[45];
--
-+
- xvbcopy(card, namestr, (size_t) 8);
-
- for (i=7; i>=0 && namestr[i] == ' '; i--);
-@@ -609,24 +617,24 @@
- sprintf(error, "Keyword %s not found in FITS file", name);
- return error;
- }
--
-+
-
- /* get start of value */
- ptr = 10;
- while (ptr < 80 && card[ptr] == ' ') ptr++;
- if (ptr == 80) return "FITS file has missing keyword value"; /* no value */
--
-+
- if (dtype == T_LOG) {
- if (ptr != 29 || (card[29] != 'T' && card[29] != 'F'))
- return "Keyword has bad logical value in FITS file";
- *kvalue = (card[29] == 'T');
-- }
-+ }
-
- else { /* an integer */
- int j;
- long int ival;
- char num[21];
--
-+
- if (ptr > 29) return "Keyword has bad integer value in FITS file";
- xvbcopy(&card[ptr], num, (size_t) (30-ptr));
- num[30-ptr] = '\0';
-@@ -634,7 +642,7 @@
- if (j != 1) return "Keyword has bad integer value in FITS file";
- *kvalue = ival;
- }
--
-+
- return NULL;
- }
-
-@@ -660,13 +668,13 @@
- */
-
- int res;
--
-+
- if (nelem == 0) return 0;
--
-+
- res = fread(buffer, (size_t) fs->size, (size_t) nelem, fs->fp);
- /* if failed to read all the data because at end of file */
- if (res != nelem && feof(fs->fp)) {
-- /* nblock is the number of elements in a record.
-+ /* nblock is the number of elements in a record.
- size is always a factor of BLOCKSIZE */
-
- int loffs, nblock=BLOCKSIZE/fs->size;
-@@ -714,7 +722,7 @@
- byte *ptr=buffer;
-
- /*
-- * conversions. Although the data may be signed, reverse using unsigned
-+ * conversions. Although the data may be signed, reverse using unsigned
- * variables.
- * Because the native int types may be larger than the types in the file,
- * we start from the end and work backwards to avoid overwriting data
-@@ -741,12 +749,12 @@
- ((unsigned int)ptr[2] << 8) |
- ((unsigned int)ptr[3]);
- }
--
-+
- /* convert from IEE 754 single precision to native form */
- else if (fs->bitpix == -32) {
- int j, k, expo;
- static float *exps=NULL;
--
-+
- if (exps == NULL) {
- exps = (float *)malloc(256 * sizeof(float));
- if (exps == NULL) FatalError("Insufficient memory for exps store");
-@@ -754,7 +762,7 @@
- for (i=151; i < 256; i++) exps[i] = 2.*exps[i-1];
- for (i=149; i >= 0; i--) exps[i] = 0.5*exps[i+1];
- }
--
-+
- for (i=0; i < n; i++, ptr+=4) {
- k = (int)*ptr;
- j = ((int)ptr[1] << 16) | ((int)ptr[2] << 8) | (int)ptr[3];
-@@ -765,13 +773,13 @@
- }
-
- }
--
-+
- /* convert from IEE 754 double precision to native form */
- else if (fs->bitpix == -64) {
- int expo, k, l;
- unsigned int j;
- static double *exps=NULL;
--
-+
- if (exps == NULL) {
- exps = (double *)malloc(2048 * sizeof(double));
- if (exps == NULL) FatalError("Insufficient memory for exps store");
-@@ -779,7 +787,7 @@
- for (i=1076; i < 2048; i++) exps[i] = 2.*exps[i-1];
- for (i=1074; i >= 0; i--) exps[i] = 0.5*exps[i+1];
- }
--
-+
- for (i=0; i < n; i++, ptr+=8) {
- k = (int)*ptr;
- j = ((unsigned int)ptr[1] << 24) | ((unsigned int)ptr[2] << 16) |
-@@ -813,23 +821,36 @@
- */
-
- void *voidbuff;
-- int i, n, nrd;
-+ int i, n, nrd, bufsize, overflow=0;
-
- /* if the data is byte, then read it directly */
- if (fs->bitpix == 8)
- return ftgdata(fs, cbuff, nelem);
--
-+
- /* allocate a buffer to store the image */
-- if (fs->bitpix == 16)
-- voidbuff = (void *)malloc(nelem * sizeof(short int));
-- else if (fs->bitpix == 32)
-- voidbuff = (void *)malloc(nelem * sizeof(int));
-- else
-- voidbuff = (void *)malloc(nelem * (size_t) fs->size); /* float, double */
-+ if (fs->bitpix == 16) {
-+ bufsize = nelem * sizeof(short int);
-+ if (bufsize/nelem != (int)sizeof(short int))
-+ overflow = 1;
-+ } else if (fs->bitpix == 32) {
-+ bufsize = nelem * sizeof(int);
-+ if (bufsize/nelem != (int)sizeof(short int))
-+ overflow = 1;
-+ } else {
-+ bufsize = nelem * fs->size; /* float, double */
-+ if (bufsize/nelem != fs->size)
-+ overflow = 1;
-+ }
-
-+ if (overflow) {
-+ SetISTR(ISTR_WARNING, "FITS image dimensions out of range");
-+ return 0;
-+ }
-+
-+ voidbuff = (void *)malloc((size_t) bufsize);
- if (voidbuff == NULL) {
- char emess[60];
-- sprintf(emess, "Insufficient memory for raw image of %d bytes",
-+ sprintf(emess, "Insufficient memory for raw image of %d bytes",
- nelem*fs->size);
- FatalError(emess);
- }
-@@ -843,28 +864,28 @@
- short int *buffer=voidbuff;
- int max, min, maxmin_t;
- float scale;
--
-+
- min = max = buffer[0];
- for (i=1; i < n; i++, buffer++) maxmin(*buffer, max, min);
- scale = (max == min) ? 0. : 255./(float)(max-min);
--
-+
- /* rescale and convert */
- for (i=0, buffer=voidbuff; i < n; i++)
- cbuff[i] = (byte)(scale*(float)((int)buffer[i]-min));
--
-+
- /* convert long int to byte */
-- }
-+ }
-
- else if (fs->bitpix == 32) {
- int *buffer=voidbuff;
- int max, min, maxmin_t;
- float scale, fmin;
--
-+
- min = max = buffer[0];
- for (i=1; i < n; i++, buffer++) maxmin(*buffer, max, min);
- scale = (max == min) ? 1. : 255./((double)max-(double)min);
- fmin = (float)min;
--
-+
- /* rescale and convert */
- if (scale < 255./2.1e9) /* is max-min too big for an int ? */
- for (i=0, buffer=voidbuff; i < n; i++)
-@@ -872,34 +893,34 @@
- else /* use integer subtraction */
- for (i=0, buffer=voidbuff; i < n; i++)
- cbuff[i] = (byte)(scale*(float)(buffer[i]-min));
--
--
-- }
-+
-+
-+ }
-
- /* convert float to byte */
- else if (fs->bitpix == -32) {
- float *buffer=voidbuff;
- float max, min, maxmin_t, scale;
--
-+
- min = max = buffer[0];
- for (i=1; i < n; i++, buffer++) maxmin(*buffer, max, min);
- scale = (max == min) ? 0. : 255./(max-min);
--
-+
- /* rescale and convert */
- for (i=0, buffer=voidbuff; i < n; i++)
- cbuff[i] = (byte)(scale*(buffer[i]-min));
--
-- }
-+
-+ }
-
- /* convert double to byte */
- else if (fs->bitpix == -64) {
- double *buffer=voidbuff;
- double max, min, maxmin_t, scale;
--
-+
- min = max = buffer[0];
- for (i=1; i < n; i++, buffer++) maxmin(*buffer, max, min);
- scale = (max == min) ? 0. : 255./(max-min);
--
-+
- /* rescale and convert */
- for (i=0, buffer=voidbuff; i < n; i++)
- cbuff[i] = (byte)(scale*(buffer[i]-min));
-@@ -923,7 +944,7 @@
- int i;
- int j, v;
- byte *buff1, *buff2;
--
-+
- for (i=0; i < ny/2; i++) {
- buff1 = &buffer[i*nx];
- buff2 = &buffer[(ny-1-i)*nx];
-diff -ruN xv-3.10a/xvgam.c xv-3.10a-bugfixes/xvgam.c
---- xv-3.10a/xvgam.c 1995-01-13 11:51:14.000000000 -0800
-+++ xv-3.10a-bugfixes/xvgam.c 2004-05-16 18:02:11.000000000 -0700
-@@ -1,4 +1,4 @@
--/*
-+/*
- * xvgam.c
- *
- * callable functions:
-@@ -87,7 +87,7 @@
- GRAF_STATE istate, rstate, gstate, bstate;
- };
-
--static struct gamstate undo[MAXUNDO], preset[4], defstate;
-+static struct gamstate undo[MAXUNDO], preset[4], defstate;
- static struct gamstate *defLoadState;
-
- static int uptr, uhead, utail;
-@@ -153,7 +153,7 @@
- static void dragHueDial PARM((void));
- static void dragEditColor PARM((void));
-
--static void HDCreate PARM((HDIAL *, Window, int, int, int, int,
-+static void HDCreate PARM((HDIAL *, Window, int, int, int, int,
- int, int, char *, u_long, u_long));
-
- static void HDRedraw PARM((HDIAL *, int));
-@@ -212,13 +212,13 @@
- {
- XSetWindowAttributes xswa;
-
-- gamW = CreateWindow("xv color editor", "XVcedit", geom,
-+ gamW = CreateWindow("xv color editor", "XVcedit", geom,
- GAMW, GAMH, infofg,infobg, 0);
- if (!gamW) FatalError("can't create cedit window!");
--
-+
- cmapF = XCreateSimpleWindow(theDisp,gamW, 10, 8,CMAPF_WIDE,CMAPF_HIGH,
- 1,infofg,infobg);
-- butF = XCreateSimpleWindow(theDisp,gamW, 10, 336,BUTF_WIDE,BUTF_HIGH,
-+ butF = XCreateSimpleWindow(theDisp,gamW, 10, 336,BUTF_WIDE,BUTF_HIGH,
- 1,infofg,infobg);
- modF = XCreateSimpleWindow(theDisp,gamW, 10, 438,MODF_WIDE,MODF_HIGH,
- 1,infofg,infobg);
-@@ -227,7 +227,7 @@
- rgbF = XCreateSimpleWindow(theDisp,gamW, 467, 8,RGBF_WIDE,RGBF_HIGH,
- 1,infofg,infobg);
-
-- if (!cmapF || !butF || !modF || !hsvF || !rgbF)
-+ if (!cmapF || !butF || !modF || !hsvF || !rgbF)
- FatalError("couldn't create frame windows");
-
- #ifdef BACKING_STORE
-@@ -251,25 +251,25 @@
- /********** COLORMAP editing doo-wahs ***********/
-
-
-- BTCreate(&gbut[G_BCOLUNDO], cmapF, 5, 165, 66, BUTTH,
-+ BTCreate(&gbut[G_BCOLUNDO], cmapF, 5, 165, 66, BUTTH,
- "ColUndo", infofg, infobg, hicol, locol);
-- BTCreate(&gbut[G_BCOLREV], cmapF, 5 + 66 + 1, 165, 67, BUTTH,
-+ BTCreate(&gbut[G_BCOLREV], cmapF, 5 + 66 + 1, 165, 67, BUTTH,
- "Revert", infofg, infobg, hicol, locol);
-- BTCreate(&gbut[G_BHSVRGB], cmapF, 5+66+67+2, 165, 66, BUTTH,
-+ BTCreate(&gbut[G_BHSVRGB], cmapF, 5+66+67+2, 165, 66, BUTTH,
- "RGB/HSV", infofg, infobg, hicol, locol);
-
-- BTCreate(&gbut[G_BMONO], cmapF, 5, 189, 66, BUTTH,
-+ BTCreate(&gbut[G_BMONO], cmapF, 5, 189, 66, BUTTH,
- "Grey", infofg, infobg, hicol, locol);
-- BTCreate(&gbut[G_BRV], cmapF, 5 + 66 + 1, 189, 67, BUTTH,
-+ BTCreate(&gbut[G_BRV], cmapF, 5 + 66 + 1, 189, 67, BUTTH,
- "RevVid", infofg, infobg, hicol, locol);
-- BTCreate(&gbut[G_BRNDCOL], cmapF, 5 + 66 + 67 + 2, 189, 66, BUTTH,
-+ BTCreate(&gbut[G_BRNDCOL], cmapF, 5 + 66 + 67 + 2, 189, 66, BUTTH,
- "Random", infofg, infobg, hicol, locol);
-
-- DCreate(&rhDial, cmapF, 5, 215, 66, 100, 0,360,180, 5,
-+ DCreate(&rhDial, cmapF, 5, 215, 66, 100, 0,360,180, 5,
- infofg, infobg, hicol, locol, "Hue", NULL);
-- DCreate(&gsDial, cmapF, 72, 215, 66, 100, 0,360,180, 5,
-+ DCreate(&gsDial, cmapF, 72, 215, 66, 100, 0,360,180, 5,
- infofg, infobg, hicol, locol, "Sat.", NULL);
-- DCreate(&bvDial, cmapF, 139, 215, 66, 100, 0,360,180, 5,
-+ DCreate(&bvDial, cmapF, 139, 215, 66, 100, 0,360,180, 5,
- infofg, infobg, hicol, locol, "Value", NULL);
-
- rhDial.drawobj = gsDial.drawobj = bvDial.drawobj = dragEditColor;
-@@ -291,44 +291,44 @@
- #define BY2 (BY0 + BYSPACE*2)
- #define BY3 (BY0 + BYSPACE*3)
-
-- BTCreate(&gbut[G_BAPPLY], butF, BX0,BY0, 52,BUTTH,"Apply",
-+ BTCreate(&gbut[G_BAPPLY], butF, BX0,BY0, 52,BUTTH,"Apply",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_BNOGAM], butF, BX0,BY1, 52,BUTTH,"NoMod",
-+ BTCreate(&gbut[G_BNOGAM], butF, BX0,BY1, 52,BUTTH,"NoMod",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_BMAXCONT],butF, BX0,BY2, 52,BUTTH,"Norm",
-+ BTCreate(&gbut[G_BMAXCONT],butF, BX0,BY2, 52,BUTTH,"Norm",
- infofg,infobg,hicol,locol);
- BTCreate(&gbut[G_BHISTEQ], butF, BX0,BY3, 52,BUTTH,"HistEq",
- infofg,infobg,hicol,locol);
-
- BTCreate(&gbut[G_BUP_BR],butF, BX1,BY0, 52,BUTTH,"Brite",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_BDN_BR],butF, BX1,BY1, 52,BUTTH,"Dim",
-+ BTCreate(&gbut[G_BDN_BR],butF, BX1,BY1, 52,BUTTH,"Dim",
- infofg,infobg,hicol,locol);
- BTCreate(&gbut[G_BUP_CN],butF, BX1,BY2, 52,BUTTH,"Sharp",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_BDN_CN],butF, BX1,BY3, 52,BUTTH,"Dull",
-+ BTCreate(&gbut[G_BDN_CN],butF, BX1,BY3, 52,BUTTH,"Dull",
- infofg,infobg,hicol,locol);
-
-- BTCreate(&gbut[G_BRESET],butF, BX2, BY0, 52,BUTTH,"Reset",
-+ BTCreate(&gbut[G_BRESET],butF, BX2, BY0, 52,BUTTH,"Reset",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_B1], butF, BX2, BY1, 25,BUTTH,"1",
-+ BTCreate(&gbut[G_B1], butF, BX2, BY1, 25,BUTTH,"1",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_B2], butF, BX2+26,BY1, 26,BUTTH,"2",
-+ BTCreate(&gbut[G_B2], butF, BX2+26,BY1, 26,BUTTH,"2",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_B3], butF, BX2, BY2, 25,BUTTH,"3",
-+ BTCreate(&gbut[G_B3], butF, BX2, BY2, 25,BUTTH,"3",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_B4], butF, BX2+26,BY2, 26,BUTTH,"4",
-+ BTCreate(&gbut[G_B4], butF, BX2+26,BY2, 26,BUTTH,"4",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_BSET], butF, BX2, BY3, 52,BUTTH,"Set",
-+ BTCreate(&gbut[G_BSET], butF, BX2, BY3, 52,BUTTH,"Set",
- infofg,infobg,hicol,locol);
-
-- BTCreate(&gbut[G_BUNDO], butF, BX3, BY0, 52,BUTTH,"Undo",
-+ BTCreate(&gbut[G_BUNDO], butF, BX3, BY0, 52,BUTTH,"Undo",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_BREDO], butF, BX3, BY1, 52,BUTTH,"Redo",
-+ BTCreate(&gbut[G_BREDO], butF, BX3, BY1, 52,BUTTH,"Redo",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_BGETRES],butF,BX3, BY2, 52,BUTTH,"CutRes",
-+ BTCreate(&gbut[G_BGETRES],butF,BX3, BY2, 52,BUTTH,"CutRes",
- infofg,infobg,hicol,locol);
-- BTCreate(&gbut[G_BCLOSE],butF, BX3, BY3, 52,BUTTH,"Close",
-+ BTCreate(&gbut[G_BCLOSE],butF, BX3, BY3, 52,BUTTH,"Close",
- infofg,infobg,hicol,locol);
-
-
-@@ -338,11 +338,11 @@
-
- CBCreate(&enabCB, modF,2,2, "Display with HSV/RGB mods.",
- infofg,infobg,hicol,locol);
-- CBCreate(&autoCB, modF,2,2+17, "Auto-apply HSV/RGB mods.",
-+ CBCreate(&autoCB, modF,2,2+17, "Auto-apply HSV/RGB mods.",
- infofg,infobg,hicol,locol);
- CBCreate(&dragCB, modF,2,2+17*2,"Auto-apply while dragging.",
- infofg,infobg,hicol,locol);
-- CBCreate(&resetCB,modF,2,2+17*3,"Auto-reset on new image.",
-+ CBCreate(&resetCB,modF,2,2+17*3,"Auto-reset on new image.",
- infofg,infobg,hicol,locol);
-
- enabCB.val = autoCB.val = resetCB.val = dragCB.val = 1;
-@@ -359,23 +359,23 @@
-
- srcHD.drawobj = dstHD.drawobj = whtHD.drawobj = dragHueDial;
-
-- DCreate(&satDial, hsvF, 100, 199, 100, 121, -100, 100, 0, 5,
-+ DCreate(&satDial, hsvF, 100, 199, 100, 121, -100, 100, 0, 5,
- infofg, infobg,hicol,locol, "Saturation", "%");
-
-- hueRB = RBCreate(NULL, hsvF, 7, 153, "1",
-+ hueRB = RBCreate(NULL, hsvF, 7, 153, "1",
- infofg, infobg,hicol,locol);
-- RBCreate (hueRB,hsvF, 47, 153, "2",
-+ RBCreate (hueRB,hsvF, 47, 153, "2",
- infofg, infobg,hicol,locol);
-- RBCreate (hueRB,hsvF, 87, 153, "3",
-+ RBCreate (hueRB,hsvF, 87, 153, "3",
- infofg, infobg,hicol,locol);
-- RBCreate (hueRB,hsvF, 7, 170, "4",
-+ RBCreate (hueRB,hsvF, 7, 170, "4",
- infofg, infobg,hicol,locol);
-- RBCreate (hueRB,hsvF, 47, 170, "5",
-+ RBCreate (hueRB,hsvF, 47, 170, "5",
- infofg, infobg,hicol,locol);
-- RBCreate (hueRB,hsvF, 87, 170, "6",
-+ RBCreate (hueRB,hsvF, 87, 170, "6",
- infofg, infobg,hicol,locol);
-
-- BTCreate(&hueclrB, hsvF, 127, 158, 70, BUTTH, "Reset",
-+ BTCreate(&hueclrB, hsvF, 127, 158, 70, BUTTH, "Reset",
- infofg, infobg,hicol,locol);
-
- initHmap();
-@@ -394,13 +394,13 @@
-
- InitGraf(&gGraf);
- CreateGraf(&gGraf, rgbF, 10, 179, infofg, infobg, "Green");
--
-+
- InitGraf(&bGraf);
- CreateGraf(&bGraf, rgbF, 10, 338, infofg, infobg, "Blue");
-
- satDial.drawobj = dragGamma;
- intGraf.drawobj = rGraf.drawobj = gGraf.drawobj = bGraf.drawobj = dragGamma;
--
-+
- SetHSVmode();
-
- ctrls2gamstate(&defstate);
-@@ -415,14 +415,14 @@
- Str2Graf(&preset[1].rstate,"L 4 : 0,0 : 127,0 : 128,255 : 255,255");
- Str2Graf(&preset[1].gstate,"L 4 : 0,0 : 127,0 : 128,255 : 255,255");
- Str2Graf(&preset[1].bstate,"L 4 : 0,0 : 127,0 : 128,255 : 255,255");
--
-+
-
- /* set up preset2 as a 'temperature' pseudo-color preset */
- ctrls2gamstate(&preset[2]);
- Str2Graf(&preset[2].rstate,"S 4 : 0,0 : 105,0 : 155,140 : 255,255");
- Str2Graf(&preset[2].gstate,"S 5 : 0,0 : 57,135 : 127,255 : 198,135 : 255,0");
- Str2Graf(&preset[2].bstate,"S 4 : 0,255 : 100,140 : 150,0 : 255,0");
--
-+
-
- /* set up preset3 as a 'map' pseudo-color preset */
- ctrls2gamstate(&preset[3]);
-@@ -480,7 +480,7 @@
-
- computeHSVlinear();
- }
--
-+
-
- /***************************************************/
- int GamCheckEvent(xev)
-@@ -492,14 +492,14 @@
- int rv;
-
- rv = 1;
--
-+
- if (xev->type == Expose) {
- int x,y,w,h;
- XExposeEvent *e = (XExposeEvent *) xev;
- x = e->x; y = e->y; w = e->width; h = e->height;
-
- /* throw away excess redraws for 'dumb' windows */
-- if (e->count > 0 &&
-+ if (e->count > 0 &&
- (e->window == satDial.win || e->window == rhDial.win ||
- e->window == gsDial.win || e->window == bvDial.win ||
- e->window == cmapF || e->window == modF ||
-@@ -600,7 +600,7 @@
-
-
- else if (e->window == hsvF) {
-- if (HDClick(&srcHD, x,y) || HDClick(&dstHD, x,y)) {
-+ if (HDClick(&srcHD, x,y) || HDClick(&dstHD, x,y)) {
- dials2hmap();
- build_hremap();
- changedGam();
-@@ -654,7 +654,7 @@
- e->window == gsDial.win ||
- e->window == bvDial.win) {
-
-- if ((e->window == rhDial.win && DTrack(&rhDial, x,y)) ||
-+ if ((e->window == rhDial.win && DTrack(&rhDial, x,y)) ||
- (e->window == gsDial.win && DTrack(&gsDial, x,y)) ||
- (e->window == bvDial.win && DTrack(&bvDial, x,y))) {
- saveCMap(&prevcmap);
-@@ -683,7 +683,7 @@
- XKeyEvent *e = (XKeyEvent *) xev;
- char buf[128]; KeySym ks;
- int stlen;
--
-+
- stlen = XLookupString(e,buf,128,&ks,(XComposeStatus *) NULL);
- buf[stlen] = '\0';
-
-@@ -792,7 +792,7 @@
- int x,y;
- {
- XPoint pts[8];
--
-+
- pts[0].x = x+10; pts[0].y = y;
- pts[1].x = x-4; pts[1].y = y-100;
- pts[2].x = x-4; pts[2].y = y-40;
-@@ -873,11 +873,11 @@
- XSetForeground(theDisp, theGC, infofg);
-
- if (picType != PIC8) {
-- CenterString(cmapF, CMAPX + CMAPW/2, CMAPY + CMAPH/2,
-+ CenterString(cmapF, CMAPX + CMAPW/2, CMAPY + CMAPH/2,
- "No colormap in 24-bit mode.");
- return;
- }
--
-+
-
-
- for (i=0; i<numcols; i++) {
-@@ -941,14 +941,14 @@
- if (bp->win == butF && PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) break;
- }
-
-- /* if 'Set' is lit, and we didn't click 'set' or 'Reset' or '1'..'4',
-+ /* if 'Set' is lit, and we didn't click 'set' or 'Reset' or '1'..'4',
- turn it off */
- if (i!=G_BSET && i!=G_B1 && i!=G_B2 && i!=G_B3 && i!=G_B4 && i!=G_BRESET
- && gbut[G_BSET].lit) {
-- gbut[G_BSET].lit = 0;
-+ gbut[G_BSET].lit = 0;
- BTRedraw(&gbut[G_BSET]);
- }
--
-+
-
- if (i<G_NBUTTS) { /* found one */
- if (BTTrack(bp)) doCmd(i);
-@@ -1003,7 +1003,7 @@
- } /* if i<numcols */
- } /* if but==1 */
-
--
-+
- else if (but==2) { /* color smooth */
- int cellnum, delc, col1, j, delr, delg, delb;
-
-@@ -1025,9 +1025,9 @@
- gcmap[col1 + i] = gcmap[col1] + (delg * i) / delc;
- bcmap[col1 + i] = bcmap[col1] + (delb * i) / delc;
-
-- if (cellgroup[col1 + i]) {
-+ if (cellgroup[col1 + i]) {
- /* propogate new color to all members of this group */
-- for (j=0; j<numcols; j++)
-+ for (j=0; j<numcols; j++)
- if (cellgroup[j] == cellgroup[col1 + i]) {
- rcmap[j] = rcmap[col1 + i];
- gcmap[j] = gcmap[col1 + i];
-@@ -1043,7 +1043,7 @@
- }
-
- if (i<numcols) { /* something changed */
-- xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
-+ xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
- sizeof(struct cmapstate));
- BTSetActive(&gbut[G_BCOLUNDO],1);
- applyGamma(1);
-@@ -1067,7 +1067,7 @@
-
- lastcell = curcell;
-
-- j = XGrabPointer(theDisp, cmapF, False, 0, GrabModeAsync,
-+ j = XGrabPointer(theDisp, cmapF, False, 0, GrabModeAsync,
- GrabModeAsync, None, None, (Time) CurrentTime);
- while (1) {
- Window rW,cW;
-@@ -1076,7 +1076,7 @@
-
- if (XQueryPointer(theDisp,cmapF,&rW,&cW,&rx,&ry,&x,&y,&mask)) {
- /* if button3 and shift released */
-- if (!(mask & (Button3Mask | ShiftMask))) break;
-+ if (!(mask & (Button3Mask | ShiftMask))) break;
-
- /* if user lets go of B3, reset addonly/delonly flag & lastcell */
- if (!(mask & Button3Mask) && (mask & ShiftMask)) {
-@@ -1112,7 +1112,7 @@
-
- if (recolor) {
- /* colors changed. save to color undo area */
-- xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
-+ xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
- sizeof(struct cmapstate));
- BTSetActive(&gbut[G_BCOLUNDO],1);
- applyGamma(1); /* have to regen entire image when groupings chg */
-@@ -1146,12 +1146,12 @@
- /* cases: curgroup>0, clicked on something in same group
- remove target from group
- curgroup>0, clicked on something in different group
-- merge groups. (target group gets
-+ merge groups. (target group gets
- set equal to current values)
- curgroup>0, clicked on something in no group
- add target to curgroup
- curgroup=0, clicked on something in a group
-- add editColor to target group,
-+ add editColor to target group,
- set curgroup = target group
- target group gets current values
- curgroup=0, clicked on something in no group
-@@ -1185,7 +1185,7 @@
- }
- }
-
-- else if ((mode!=DELONLY) && cellgroup[cnum] != curgroup &&
-+ else if ((mode!=DELONLY) && cellgroup[cnum] != curgroup &&
- cellgroup[cnum]>0) {
- /* merge clicked-on group into curgroup */
- mode = ADDONLY;
-@@ -1196,11 +1196,11 @@
- selectCell(i,1);
- rcmap[i] = rcmap[editColor];
- gcmap[i] = gcmap[editColor];
-- bcmap[i] = bcmap[editColor];
-+ bcmap[i] = bcmap[editColor];
- }
- }
- }
--
-+
- else if ((mode!=DELONLY) && cellgroup[cnum] == 0) {
- /* merge clicked-on cell into curgroup */
- mode = ADDONLY;
-@@ -1209,7 +1209,7 @@
- selectCell(cnum,1);
- rcmap[cnum] = rcmap[editColor];
- gcmap[cnum] = gcmap[editColor];
-- bcmap[cnum] = bcmap[editColor];
-+ bcmap[cnum] = bcmap[editColor];
- }
- }
-
-@@ -1224,14 +1224,14 @@
- selectCell(i,1);
- rcmap[i] = rcmap[editColor];
- gcmap[i] = gcmap[editColor];
-- bcmap[i] = bcmap[editColor];
-+ bcmap[i] = bcmap[editColor];
- }
- }
- curgroup = cellgroup[cnum];
- cellgroup[editColor] = curgroup;
- }
--
-- else if ((mode!=DELONLY) && (cellgroup[cnum] == 0)
-+
-+ else if ((mode!=DELONLY) && (cellgroup[cnum] == 0)
- && (cnum != editColor)) {
- /* create new group for these two cells (cnum and editColor) */
- mode = ADDONLY;
-@@ -1247,14 +1247,14 @@
- }
-
- return rv;
--}
--
-+}
-+
-
- /*********************/
- void ChangeEC(num)
- int num;
- {
-- /* given a color # that is to become the new editColor, do all
-+ /* given a color # that is to become the new editColor, do all
- highlighting/unhighlighting, copy editColor's rgb values to
- the rgb/hsv dials */
-
-@@ -1301,8 +1301,8 @@
- DSetVal(&bvDial, bcmap[editColor]);
- }
- }
--
--
-+
-+
- /*********************/
- void ApplyECctrls()
- {
-@@ -1310,7 +1310,7 @@
-
- if (hsvmode) {
- int rv, gv, bv;
-- hsv2rgb((double) rhDial.val, ((double) gsDial.val) / 100.0,
-+ hsv2rgb((double) rhDial.val, ((double) gsDial.val) / 100.0,
- ((double) bvDial.val) / 100.0, &rv, &gv, &bv);
- rcmap[editColor] = rv;
- gcmap[editColor] = gv;
-@@ -1330,7 +1330,7 @@
- {
- /* this function generates the Floyd-Steinberg gamma curve (fsgamcr)
-
-- This function generates a 4 point spline curve to be used as a
-+ This function generates a 4 point spline curve to be used as a
- non-linear grey 'colormap'. Two of the points are nailed down at 0,0
- and 255,255, and can't be changed. You specify the other two. If
- you specify points on the line (0,0 - 255,255), you'll get the normal
-@@ -1345,7 +1345,7 @@
- double yf[4];
-
- InitSpline(x, y, 4, yf);
--
-+
- for (i=0; i<256; i++) {
- j = (int) EvalSpline(x, y, yf, 4, (double) i);
- if (j<0) j=0;
-@@ -1364,14 +1364,14 @@
-
- switch (cmd) {
-
-- case G_BAPPLY:
-+ case G_BAPPLY:
- if (enabCB.val != 1) { enabCB.val = 1; CBRedraw(&enabCB); }
-- applyGamma(0);
-+ applyGamma(0);
- break;
-
- case G_BNOGAM:
- if (enabCB.val != 0) { enabCB.val = 0; CBRedraw(&enabCB); }
-- applyGamma(0);
-+ applyGamma(0);
- break;
-
- case G_BUNDO: gamUndo(); break;
-@@ -1383,7 +1383,7 @@
-
-
-
-- case G_BDN_BR:
-+ case G_BDN_BR:
- case G_BUP_BR: GetGrafState(&intGraf, &gs);
- for (i=0; i < gs.nhands; i++) {
- if (cmd==G_BUP_BR) gs.hands[i].y += 10;
-@@ -1434,7 +1434,7 @@
- else if (cmd==G_B3) ptr = &preset[2];
- else if (cmd==G_B4) ptr = &preset[3];
- else if (cmd==G_BRESET) ptr = &defstate;
--
-+
- if (gbut[G_BSET].lit) {
- ctrls2gamstate(ptr);
- gbut[G_BSET].lit = 0;
-@@ -1454,7 +1454,7 @@
- break;
-
-
-- case G_BCOLREV:
-+ case G_BCOLREV:
- {
- struct cmapstate tmp1cmap;
- int gchg;
-@@ -1463,9 +1463,9 @@
- gchg = (i!=numcols);
-
- saveCMap(&tmpcmap); /* buffer current cmapstate */
--
-+
- for (i=0; i<numcols; i++) { /* do reversion */
-- rcmap[i] = rorg[i];
-+ rcmap[i] = rorg[i];
- gcmap[i] = gorg[i];
- bcmap[i] = borg[i];
- cellgroup[i] = 0;
-@@ -1473,12 +1473,12 @@
- curgroup = maxgroup = 0;
-
- saveCMap(&tmp1cmap); /* buffer current cmapstate */
--
-+
- /* prevent multiple 'Undo All's from filling Undo buffer */
-- if (xvbcmp((char *) &tmpcmap, (char *) &tmp1cmap,
-+ if (xvbcmp((char *) &tmpcmap, (char *) &tmp1cmap,
- sizeof(struct cmapstate))) {
- /* the reversion changed the cmapstate */
-- xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
-+ xvbcopy((char *) &tmpcmap, (char *) &prevcmap,
- sizeof(struct cmapstate));
- BTSetActive(&gbut[G_BCOLUNDO],1);
-
-@@ -1496,7 +1496,7 @@
- BTSetActive(&gbut[G_BCOLUNDO],1);
- rndCols();
- break;
--
-+
- case G_BRV:
- saveCMap(&prevcmap);
- BTSetActive(&gbut[G_BCOLUNDO],1);
-@@ -1523,7 +1523,7 @@
- ChangeEC(editColor);
- applyGamma(1);
- break;
--
-+
-
- case G_BMONO:
- saveCMap(&prevcmap);
-@@ -1534,7 +1534,7 @@
- ChangeEC(editColor);
- applyGamma(1);
- break;
--
-+
-
- case G_BCOLUNDO:
- for (i=0; i<numcols && cellgroup[i]==prevcmap.cellgroup[i]; i++);
-@@ -1560,7 +1560,7 @@
- rhDial.title = "Red";
- gsDial.title = "Green";
- bvDial.title = "Blue";
--
-+
- DSetRange(&rhDial, 0, 255, rcmap[editColor], 16);
- DSetRange(&gsDial, 0, 255, gcmap[editColor], 16);
- DSetRange(&bvDial, 0, 255, bcmap[editColor], 16);
-@@ -1615,12 +1615,12 @@
- GammifyColors();
-
- /* if current 'desired' colormap hasn't changed, don't DO anything */
-- if (!xvbcmp((char *) rMap, (char *) oldr, (size_t) numcols) &&
-- !xvbcmp((char *) gMap, (char *) oldg, (size_t) numcols) &&
-+ if (!xvbcmp((char *) rMap, (char *) oldr, (size_t) numcols) &&
-+ !xvbcmp((char *) gMap, (char *) oldg, (size_t) numcols) &&
- !xvbcmp((char *) bMap, (char *) oldb, (size_t) numcols)) return;
-
- /* special case: if using R/W color, just modify the colors and leave */
-- if (allocMode==AM_READWRITE && rwthistime &&
-+ if (allocMode==AM_READWRITE && rwthistime &&
- (!cmapchange || nfcols==numcols)) {
- XColor ctab[256];
-
-@@ -1647,10 +1647,10 @@
- gdisp[i] = gMap[rwpc2pc[i]];
- bdisp[i] = bMap[rwpc2pc[i]];
- }
--
-+
- return;
- }
--
-+
- FreeColors();
-
- {
-@@ -1663,10 +1663,10 @@
- AllocColors();
-
-
-- if (epicMode != EM_RAW) {
-+ if (epicMode != EM_RAW) {
- /* regen image, as we'll probably want to dither differently, given
- new colors and such */
--
-+
- GenerateEpic(eWIDE, eHIGH);
- }
- }
-@@ -1701,7 +1701,7 @@
- for (i=255; i>0 && !hist[i]; i--);
- *rmaxv = i;
- }
--
-+
- else { /* PIC24 */
- int v,minv,maxv;
-
-@@ -1724,7 +1724,7 @@
- hist[v]++;
- }
- }
--
-+
- *rminv = minv; *rmaxv = maxv;
- }
-
-@@ -1764,13 +1764,13 @@
- int i, histeq[256], minv, maxv;
-
- calcHistEQ(histeq, &minv, &maxv); /* ignore minv,maxv */
--
-- for (i=0; i<256; i++)
-+
-+ for (i=0; i<256; i++)
- intGraf.func[i] = histeq[i];
--
-+
- for (i=0; i< intGraf.nhands; i++)
- intGraf.hands[i].y = intGraf.func[intGraf.hands[i].x];
--
-+
- intGraf.entergamma = 0;
-
- if (gamUp) {
-@@ -1797,7 +1797,7 @@
- if (v>maxv) maxv = v;
- }
- }
-- else {
-+ else {
- int histeq[256];
- calcHistEQ(histeq, &minv, &maxv); /* ignore histeq */
- }
-@@ -1833,11 +1833,11 @@
- for (i=0; i<numcols; i++) Gammify1(i);
- }
- else {
-- for (i=0; i<numcols; i++) {
-+ for (i=0; i<numcols; i++) {
- rMap[i] = rcmap[i];
- gMap[i] = gcmap[i];
- bMap[i] = bcmap[i];
-- if (!ncols)
-+ if (!ncols)
- cols[i] = (((int)rMap[i]) + ((int)gMap[i]) + ((int)bMap[i]) >= 128*3)
- ? white : black;
- }
-@@ -1875,7 +1875,7 @@
- if (DEBUG>1) fprintf(stderr," (v=%f)",v);
-
- if (h>=0) {
-- hi = (int) h;
-+ hi = (int) h;
- if (hi<0) hi += 360;
- if (hi>=360) hi -= 360;
- h = (double) hremap[hi];
-@@ -1884,7 +1884,7 @@
- if (whtHD.enabCB.val) {
- h = (double) whtHD.stval;
- s = (double) whtHD.satval / 100.0;
--
-+
- /* special case: if stval = satval = 0, set hue = -1 */
- if (whtHD.stval == 0 && whtHD.satval == 0) h = -1.0;
- }
-@@ -1899,13 +1899,13 @@
- if (DEBUG>1) fprintf(stderr," -> %d,%d,%d",rv,gv,bv);
- }
-
-- rMap[col] = rGraf.func[rv];
-+ rMap[col] = rGraf.func[rv];
- gMap[col] = gGraf.func[gv];
- bMap[col] = bGraf.func[bv];
-
-- if (!ncols)
-- cols[col] =
-- (((int)rMap[col]) + ((int)gMap[col]) + ((int)bMap[col]) >= 128*3)
-+ if (!ncols)
-+ cols[col] =
-+ (((int)rMap[col]) + ((int)gMap[col]) + ((int)bMap[col]) >= 128*3)
- ? white : black;
-
- if (DEBUG>1) fprintf(stderr," -> %d,%d,%d\n",rMap[col],gMap[col],bMap[col]);
-@@ -2001,8 +2001,8 @@
- {
- xvbcopy((char *) hmap, (char *) gs->hmap, sizeof(hmap));
-
-- gs->wht_stval = whtHD.stval;
-- gs->wht_satval = whtHD.satval;
-+ gs->wht_stval = whtHD.stval;
-+ gs->wht_satval = whtHD.satval;
- gs->wht_enab = whtHD.enabCB.val;
-
- gs->hueRBnum = RBWhich(hueRB);
-@@ -2042,7 +2042,7 @@
- srcHD.ccwise = hm->src_ccw;
- HDRedraw(&srcHD, HD_ALL | HD_CLEAR);
- }
--
-+
- if (dstHD.stval != hm->dst_st ||
- dstHD.enval != hm->dst_en ||
- dstHD.ccwise != hm->dst_ccw) {
-@@ -2051,7 +2051,7 @@
- dstHD.ccwise = hm->dst_ccw;
- HDRedraw(&dstHD, HD_ALL | HD_CLEAR);
- }
-- }
-+ }
-
-
- if (whtHD.stval != gs->wht_stval || whtHD.satval != gs->wht_satval ||
-@@ -2063,7 +2063,7 @@
- HDRedraw(&whtHD, HD_ALL | HD_CLEAR);
- changed++;
- }
--
-+
- if (gs->satval != satDial.val) {
- DSetVal(&satDial,gs->satval);
- changed++;
-@@ -2203,7 +2203,7 @@
- }
-
-
--
-+
-
- /*********************/
- static void parseResources()
-@@ -2226,7 +2226,7 @@
- if (i) { sprintf(gname,"preset%d",i); gsp = &preset[i-1]; }
- else { sprintf(gname,"default"); gsp = &defstate; }
-
-- xvbcopy((char *) gsp, (char *) &gs,
-+ xvbcopy((char *) gsp, (char *) &gs,
- sizeof(struct gamstate)); /* load 'gs' with defaults */
-
- for (j=0; j<6; j++) { /* xv.*.huemap resources */
-@@ -2239,7 +2239,7 @@
- lower_str(def_str);
- if (sscanf(def_str,"%d %d %s %d %d %s",
- &fst, &fen, fcw, &tst, &ten, tcw) != 6) {
-- fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
-+ fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
- cmd, tmp, def_str);
- }
- else {
-@@ -2260,7 +2260,7 @@
- int wst, wsat, enab;
- if (DEBUG) fprintf(stderr,"parseResource 'xv.%s: %s'\n",tmp, def_str);
- if (sscanf(def_str,"%d %d %d", &wst, &wsat, &enab) != 3) {
-- fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
-+ fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
- cmd, tmp, def_str);
- }
- else { /* successful parse */
-@@ -2276,7 +2276,7 @@
- int sat;
- if (DEBUG) fprintf(stderr,"parseResource 'xv.%s: %s'\n",tmp, def_str);
- if (sscanf(def_str,"%d", &sat) != 1) {
-- fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
-+ fprintf(stderr,"%s: unable to parse resource 'xv.%s: %s'\n",
- cmd, tmp, def_str);
- }
- else { /* successful parse */
-@@ -2304,7 +2304,7 @@
- }
- }
- }
--
-+
- /* copy (potentially) modified gs back to default/preset */
- xvbcopy((char *) &gs, (char *) gsp, sizeof(struct gamstate));
- }
-@@ -2324,16 +2324,16 @@
- /* write out current state */
- ctrls2gamstate(&gstate);
- strcpy(gname, "xv.default");
--
-+
- /* write out huemap resources */
- for (i=0; i<6; i++) {
- if (1 || gstate.hmap[i].src_st != gstate.hmap[i].dst_st ||
- gstate.hmap[i].src_en != gstate.hmap[i].dst_en ||
- gstate.hmap[i].src_ccw != gstate.hmap[i].dst_ccw) {
-- sprintf(tmp, "%s.huemap%d: %3d %3d %3s %3d %3d %3s\n", gname, i+1,
-- gstate.hmap[i].src_st, gstate.hmap[i].src_en,
-+ sprintf(tmp, "%s.huemap%d: %3d %3d %3s %3d %3d %3s\n", gname, i+1,
-+ gstate.hmap[i].src_st, gstate.hmap[i].src_en,
- gstate.hmap[i].src_ccw ? "CCW" : "CW",
-- gstate.hmap[i].dst_st, gstate.hmap[i].dst_en,
-+ gstate.hmap[i].dst_st, gstate.hmap[i].dst_en,
- gstate.hmap[i].dst_ccw ? "CCW" : "CW");
- strcat(rsrc, tmp);
- }
-@@ -2341,7 +2341,7 @@
-
- /* write out whtmap resource */
- if (1 || gstate.wht_stval || gstate.wht_satval || gstate.wht_enab != 1) {
-- sprintf(tmp, "%s.whtmap: %d %d %d\n", gname, gstate.wht_stval,
-+ sprintf(tmp, "%s.whtmap: %d %d %d\n", gname, gstate.wht_stval,
- gstate.wht_satval, gstate.wht_enab);
- strcat(rsrc, tmp);
- }
-@@ -2372,7 +2372,7 @@
-
- NewCutBuffer(rsrc);
- }
--
-+
-
- /*****************************/
- static void dragGamma ()
-@@ -2381,14 +2381,14 @@
- while gamma ctrls are being dragged
- applies change to image if dragCB.val is set
- does NOT call saveGamState() (as changedGam does) */
--
-+
- if (dragCB.val && dragCB.active) {
- hsvnonlinear = 1; /* force HSV calculations during drag */
- applyGamma(0);
- }
- }
-
--
-+
- /*****************************/
- static void dragHueDial()
- {
-@@ -2396,7 +2396,7 @@
- while hue gamma ctrls are being dragged
- applies change to image if dragCB.val is set
- does NOT call saveGamState() (as changedGam does) */
--
-+
- if (dragCB.val && dragCB.active) {
- dials2hmap();
- build_hremap();
-@@ -2413,14 +2413,14 @@
- while color editor ctrls are being dragged
- applies change to image if dragCB.val is set
- does NOT call saveCMap(&prevcmap); BTSetActive(&gbut[G_BCOLUNDO],1); */
--
-+
- if (dragCB.val && dragCB.active) ApplyEditColor(0);
- }
-
-
--
--
--
-+
-+
-+
-
- /**********************************************/
- /************* HUE wheel functions ***********/
-@@ -2470,7 +2470,7 @@
- hdbpix2[HDB_ROTR] = hdbpix1[HDB_ROTR];
- }
-
--
-+
- #define BCOLS fg,bg,hicol,locol
-
- if (hd->range) {
-@@ -2526,7 +2526,7 @@
- XSetForeground(theDisp, theGC, hd->fg);
- XDrawArc(theDisp, hd->win, theGC, hd->x - HD_RADIUS, hd->y - HD_RADIUS,
- HD_RADIUS*2, HD_RADIUS*2, 0, 360*64);
--
-+
- for (i=0; i<6; i++) {
- int kldg;
-
-@@ -2553,8 +2553,8 @@
- a = hdg2xdg(hd->stval) * DEG2RAD;
- pol2xy(hd->x, hd->y, a, HD_RADIUS - 4, &x, &y);
- XDrawLine(theDisp, hd->win, theGC, hd->x, hd->y, x,y);
--
-- if (flags & HD_CLHNDS)
-+
-+ if (flags & HD_CLHNDS)
- XFillRectangle(theDisp, hd->win, theGC, x-2,y-2, 5,5);
- else {
- XSetForeground(theDisp, theGC, hd->bg);
-@@ -2567,8 +2567,8 @@
- a = hdg2xdg(hd->enval) * DEG2RAD;
- pol2xy(hd->x, hd->y, a, HD_RADIUS - 4, &x, &y);
- XDrawLine(theDisp, hd->win, theGC, hd->x, hd->y, x,y);
--
-- if (flags & HD_CLHNDS)
-+
-+ if (flags & HD_CLHNDS)
- XFillRectangle(theDisp, hd->win, theGC, x-2,y-2, 5,5);
- else {
- XSetForeground(theDisp, theGC, hd->bg);
-@@ -2587,7 +2587,7 @@
- r = ((HD_RADIUS - 4) * hd->satval) / 100;
- pol2xy(hd->x, hd->y, a, r, &x, &y);
-
-- if (flags & HD_CLHNDS)
-+ if (flags & HD_CLHNDS)
- XFillRectangle(theDisp, hd->win, theGC, x-2,y-2, 5,5);
- else {
- XFillRectangle(theDisp, hd->win, theGC, hd->x-1, hd->y-1, 3,3);
-@@ -2600,7 +2600,7 @@
- }
- }
- }
--
-+
-
-
-
-@@ -2653,13 +2653,13 @@
- XSetBackground(theDisp, theGC, hd->bg);
-
- if (hd->range) {
-- sprintf(vstr,"%3d\007,%3d\007 %s", hd->stval, hd->enval,
-+ sprintf(vstr,"%3d\007,%3d\007 %s", hd->stval, hd->enval,
- hd->ccwise ? "CCW" : " CW");
- }
- else {
- sprintf(vstr,"%3d\007 %3d%%", hd->stval, hd->satval);
- }
--
-+
- XDrawImageString(theDisp, hd->win, theGC,
- hd->x - XTextWidth(monofinfo, vstr, (int) strlen(vstr))/2,
- hd->y + HD_RADIUS + 24, vstr, (int) strlen(vstr));
-@@ -2669,7 +2669,7 @@
-
- if (flags & HD_TITLE) {
- XSetForeground(theDisp, theGC, hd->fg);
-- ULineString(hd->win, hd->x - HD_RADIUS - 15, hd->y - HD_RADIUS - 4,
-+ ULineString(hd->win, hd->x - HD_RADIUS - 15, hd->y - HD_RADIUS - 4,
- hd->str);
- }
-
-@@ -2694,7 +2694,7 @@
- }
-
-
--
-+
- /**************************************************/
- static int HDClick(hd,mx,my)
- HDIAL *hd;
-@@ -2716,7 +2716,7 @@
- if (!hd->range && !hd->enabCB.val) return 0; /* disabled */
-
-
-- if ( ((mx - hd->x) * (mx - hd->x) + (my - hd->y) * (my - hd->y))
-+ if ( ((mx - hd->x) * (mx - hd->x) + (my - hd->y) * (my - hd->y))
- < (HD_RADIUS * HD_RADIUS)) {
- return HDTrack(hd,mx,my);
- }
-@@ -2816,14 +2816,14 @@
- hd->satval--; if (hd->satval<0) hd->satval = 0;
- HDRedraw(hd, HD_HANDS | HD_VALS);
- }
--
-+
- else if (bnum == HDB_SAT && hd->satval<100) {
- HDRedraw(hd, HD_CLHNDS);
- hd->satval++; if (hd->satval>100) hd->satval = 100;
- HDRedraw(hd, HD_HANDS | HD_VALS);
- }
- }
--
-+
- break;
- }
-
-@@ -2836,7 +2836,7 @@
- }
-
- if (bp->lit) { bp->lit = 0; BTRedraw(bp); }
--
-+
- return 1;
- }
-
-@@ -2872,7 +2872,7 @@
-
- dx = x - hd->x; dy = y - hd->y;
- dist = sqrt(dx*dx + dy*dy);
--
-+
- newsat = (int) (dist / ((double) (HD_RADIUS - 4)) * 100);
- RANGE(newsat,0,100);
-
-@@ -2899,7 +2899,7 @@
- a = hdg2xdg(hd->enval) * DEG2RAD;
- pol2xy(hd->x, hd->y, a, HD_RADIUS-4, &x,&y);
- if (PTINRECT(mx,my,x-3,y-3,7,7)) handle = 2;
--
-+
-
-
- if (!handle) { /* not in either, rotate both */
-@@ -2939,7 +2939,7 @@
- }
- rv = (origj != j);
- }
--
-+
-
- else { /* in one of the handles */
- if (handle==1) valp = &(hd->stval); else valp = &(hd->enval);
-@@ -2958,22 +2958,22 @@
-
- if (!hd->ccwise) {
- ddist = (hd->enval - hd->stval + 360) % 360;
-- if (handle==1)
-+ if (handle==1)
- ndist = (hd->enval - j + 360) % 360;
- else
- ndist = (j - hd->stval + 360) % 360;
- }
- else {
- ddist = (hd->stval - hd->enval + 360) % 360;
-- if (handle==1)
-+ if (handle==1)
- ndist = (j - hd->enval + 360) % 360;
- else
- ndist = (hd->stval - j + 360) % 360;
- }
-
-- if (abs(ddist - ndist) >= 180 && ddist<180)
-+ if (abs(ddist - ndist) >= 180 && ddist<180)
- hd->ccwise = !hd->ccwise;
--
-+
- *valp = j;
- HDRedraw(hd, HD_HANDS | HD_DIR | HD_VALS);
-
-@@ -2986,8 +2986,8 @@
-
- return rv;
- }
--
--
-+
-+
-
- /**************************************************/
- static int hdg2xdg(hdg)
-@@ -3012,7 +3012,7 @@
- *yp = cy - (int) (sin(ang) * (double) rad);
- }
-
--
-+
- /***************************************************/
- static int computeHDval(hd, x, y)
- HDIAL *hd;
-@@ -3044,7 +3044,7 @@
-
-
-
--
-+
- /****************************************************/
- static void initHmap()
- {
-@@ -3117,10 +3117,10 @@
- (hmap[i].src_en != hmap[i].dst_en) ||
- (hmap[i].src_ccw != hmap[i].dst_ccw)) { /* not a 1:1 mapping */
-
-- st1 = hmap[i].src_st;
-+ st1 = hmap[i].src_st;
- en1 = hmap[i].src_en;
- if (hmap[i].src_ccw) {
-- inc1 = -1;
-+ inc1 = -1;
- len1 = (st1 - en1 + 360) % 360;
- }
- else {
-@@ -3131,7 +3131,7 @@
- st2 = hmap[i].dst_st;
- en2 = hmap[i].dst_en;
- if (hmap[i].dst_ccw) {
-- inc2 = -1;
-+ inc2 = -1;
- len2 = (st2 - en2 + 360) % 360;
- }
- else {
-@@ -3179,7 +3179,7 @@
-
- byte *pp, *op;
- int i,j;
-- int rv, gv, bv, vi, hi;
-+ int rv, gv, bv;
- byte *outpic;
- int min, max, del, h, s, v;
- int f, p, q, t, vs100, vsf10000;
-@@ -3270,7 +3270,7 @@
-
- /* map near-black to black to avoid weird effects */
- if (v <= 16) s = 0;
--
-+
- /* apply intGraf.func[] function to 'v' (the intensity) */
- v = intGraf.func[v];
-
-@@ -3295,7 +3295,7 @@
- if (h==NOHUE || !s) { rv = gv = bv = v; }
- else {
- if (h==360) h = 0;
--
-+
- h = (h*100) / 60; /* h is in range 000..599 (0.0 - 5.99) */
- j = h - (h%100); /* j = 000, 100, 200, 300, 400, 500 */
- f = h - j; /* 'fractional' part of h (00..99) */
-@@ -3305,7 +3305,7 @@
- p = v - vs100;
- q = v - vsf10000;
- t = v - vs100 + vsf10000;
--
-+
- switch (j) {
- case 000: rv = v; gv = t; bv = p; break;
- case 100: rv = q; gv = v; bv = p; break;
-@@ -3319,7 +3319,7 @@
- } /* if hsvmod */
-
-
-- *op++ = rGraf.func[rv];
-+ *op++ = rGraf.func[rv];
- *op++ = gGraf.func[gv];
- *op++ = bGraf.func[bv];
- }
-diff -ruN xv-3.10a/xvgif.c xv-3.10a-bugfixes/xvgif.c
---- xv-3.10a/xvgif.c 1995-01-10 11:54:41.000000000 -0800
-+++ xv-3.10a-bugfixes/xvgif.c 2005-04-03 11:53:13.000000000 -0700
-@@ -28,13 +28,14 @@
- typedef int boolean;
-
- #define NEXTBYTE (*dataptr++)
-+#define SKIPBYTE (dataptr++) /* quiet some compiler warnings */
- #define EXTENSION 0x21
- #define IMAGESEP 0x2c
- #define TRAILER 0x3b
- #define INTERLACEMASK 0x40
- #define COLORMAPMASK 0x80
-
--
-+
-
- FILE *fp;
-
-@@ -82,11 +83,11 @@
- char *id89 = "GIF89a";
-
- static int EGApalette[16][3] = {
-- {0,0,0}, {0,0,128}, {0,128,0}, {0,128,128},
-+ {0,0,0}, {0,0,128}, {0,128,0}, {0,128,128},
- {128,0,0}, {128,0,128}, {128,128,0}, {200,200,200},
- {100,100,100}, {100,100,255}, {100,255,100}, {100,255,255},
- {255,100,100}, {255,100,255}, {255,255,100}, {255,255,255} };
--
-+
-
- static int readImage PARM((PICINFO *));
- static int readCode PARM((void));
-@@ -108,12 +109,13 @@
- {
- /* returns '1' if successful */
-
-- register byte ch, ch1, *origptr;
-+ register byte ch, *origptr;
- register int i, block;
- int aspect, gotimage;
-
- /* initialize variables */
-- BitOffset = XC = YC = Pass = OutCount = gotimage = 0;
-+ BitOffset = XC = YC = OutCount = gotimage = 0;
-+ Pass = -1;
- RawGIF = Raster = pic8 = NULL;
- gif89 = 0;
-
-@@ -129,16 +131,19 @@
- fseek(fp, 0L, 2);
- filesize = ftell(fp);
- fseek(fp, 0L, 0);
--
-- /* the +256's are so we can read truncated GIF files without fear of
-+
-+ if (filesize + 256 < filesize)
-+ return( gifError(pinfo, "GIF file size is too large") );
-+
-+ /* the +256's are so we can read truncated GIF files without fear of
- segmentation violation */
- if (!(dataptr = RawGIF = (byte *) calloc((size_t) filesize+256, (size_t) 1)))
-- return( gifError(pinfo, "not enough memory to read gif file") );
--
-- if (!(Raster = (byte *) calloc((size_t) filesize+256,(size_t) 1)))
-- return( gifError(pinfo, "not enough memory to read gif file") );
--
-- if (fread(dataptr, (size_t) filesize, (size_t) 1, fp) != 1)
-+ FatalError("LoadGIF: not enough memory to read GIF file");
-+
-+ if (!(Raster = (byte *) calloc((size_t) filesize+256,(size_t) 1)))
-+ FatalError("LoadGIF: not enough memory to read GIF file");
-+
-+ if (fread(dataptr, (size_t) filesize, (size_t) 1, fp) != 1)
- return( gifError(pinfo, "GIF data read failed") );
-
-
-@@ -147,35 +152,35 @@
- if (strncmp((char *) dataptr, id87, (size_t) 6)==0) gif89 = 0;
- else if (strncmp((char *) dataptr, id89, (size_t) 6)==0) gif89 = 1;
- else return( gifError(pinfo, "not a GIF file"));
--
-+
- dataptr += 6;
--
-+
- /* Get variables from the GIF screen descriptor */
--
-+
- ch = NEXTBYTE;
- RWidth = ch + 0x100 * NEXTBYTE; /* screen dimensions... not used. */
- ch = NEXTBYTE;
- RHeight = ch + 0x100 * NEXTBYTE;
--
-+
- ch = NEXTBYTE;
- HasColormap = ((ch & COLORMAPMASK) ? True : False);
--
-+
- BitsPerPixel = (ch & 7) + 1;
- numcols = ColorMapSize = 1 << BitsPerPixel;
- BitMask = ColorMapSize - 1;
--
-+
- Background = NEXTBYTE; /* background color... not used. */
--
-+
- aspect = NEXTBYTE;
- if (aspect) {
- if (!gif89) return(gifError(pinfo,"corrupt GIF file (screen descriptor)"));
- else normaspect = (float) (aspect + 15) / 64.0; /* gif89 aspect ratio */
- if (DEBUG) fprintf(stderr,"GIF89 aspect = %f\n", normaspect);
- }
--
--
-+
-+
- /* Read in global colormap. */
--
-+
- if (HasColormap)
- for (i=0; i<ColorMapSize; i++) {
- pinfo->r[i] = NEXTBYTE;
-@@ -221,19 +226,19 @@
- if (blocksize == 2) {
- aspnum = NEXTBYTE;
- aspden = NEXTBYTE;
-- if (aspden>0 && aspnum>0)
-+ if (aspden>0 && aspnum>0)
- normaspect = (float) aspnum / (float) aspden;
- else { normaspect = 1.0; aspnum = aspden = 1; }
-
-- if (DEBUG) fprintf(stderr,"GIF87 aspect extension: %d:%d = %f\n\n",
-+ if (DEBUG) fprintf(stderr,"GIF87 aspect extension: %d:%d = %f\n\n",
- aspnum, aspden,normaspect);
- }
- else {
-- for (i=0; i<blocksize; i++) NEXTBYTE;
-+ for (i=0; i<blocksize; i++) SKIPBYTE;
- }
-
- while ((sbsize=NEXTBYTE)>0) { /* eat any following data subblocks */
-- for (i=0; i<sbsize; i++) NEXTBYTE;
-+ for (i=0; i<sbsize; i++) SKIPBYTE;
- }
- }
-
-@@ -254,9 +259,11 @@
-
-
- if (cmtlen>0) { /* build into one un-blocked comment */
-+ /* this can overflow iff cmtlen == 2G - 1, but then filesize
-+ * would have to be > 2GB, which was disallowed above */
- cmt = (byte *) malloc((size_t) (cmtlen + 1));
-- if (!cmt) gifWarning("couldn't malloc space for comments\n");
-- else {
-+ if (!cmt) FatalError("LoadGIF: couldn't malloc space for comments");
-+ /* else */ {
- sp = cmt;
- do {
- sbsize = (*ptr1++);
-@@ -267,10 +274,10 @@
- if (pinfo->comment) { /* have to strcat onto old comments */
- cmt1 = (byte *) malloc(strlen(pinfo->comment) + cmtlen + 2);
- if (!cmt1) {
-- gifWarning("couldn't malloc space for comments\n");
- free(cmt);
-+ FatalError("LoadGIF: couldn't malloc space for comments");
- }
-- else {
-+ /* else */ {
- strcpy((char *) cmt1, (char *) pinfo->comment);
- strcat((char *) cmt1, (char *) "\n");
- strcat((char *) cmt1, (char *) cmt);
-@@ -288,8 +295,8 @@
- else if (fn == 0x01) { /* PlainText Extension */
- int j,sbsize,ch;
- int tgLeft, tgTop, tgWidth, tgHeight, cWidth, cHeight, fg, bg;
--
-- SetISTR(ISTR_INFO, "%s: %s", bname,
-+
-+ SetISTR(ISTR_INFO, "%s: %s", bname,
- "PlainText extension found in GIF file. Ignored.");
-
- sbsize = NEXTBYTE;
-@@ -302,12 +309,12 @@
- fg = NEXTBYTE;
- bg = NEXTBYTE;
- i=12;
-- for ( ; i<sbsize; i++) NEXTBYTE; /* read rest of first subblock */
--
-+ for ( ; i<sbsize; i++) SKIPBYTE; /* read rest of first subblock */
-+
- if (DEBUG) fprintf(stderr,
- "PlainText: tgrid=%d,%d %dx%d cell=%dx%d col=%d,%d\n",
- tgLeft, tgTop, tgWidth, tgHeight, cWidth, cHeight, fg, bg);
--
-+
- /* read (and ignore) data sub-blocks */
- do {
- j = 0;
-@@ -326,16 +333,16 @@
-
- if (DEBUG) fprintf(stderr,"Graphic Control extension\n\n");
-
-- SetISTR(ISTR_INFO, "%s: %s", bname,
-+ SetISTR(ISTR_INFO, "%s: %s", bname,
- "Graphic Control Extension in GIF file. Ignored.");
--
-+
- /* read (and ignore) data sub-blocks */
- do {
- j = 0; sbsize = NEXTBYTE;
-- while (j<sbsize) { NEXTBYTE; j++; }
-+ while (j<sbsize) { SKIPBYTE; j++; }
- } while (sbsize);
- }
--
-+
-
- else if (fn == 0xFF) { /* Application Extension */
- int j, sbsize;
-@@ -345,10 +352,10 @@
- /* read (and ignore) data sub-blocks */
- do {
- j = 0; sbsize = NEXTBYTE;
-- while (j<sbsize) { NEXTBYTE; j++; }
-+ while (j<sbsize) { SKIPBYTE; j++; }
- } while (sbsize);
- }
--
-+
-
- else { /* unknown extension */
- int j, sbsize;
-@@ -358,11 +365,11 @@
- SetISTR(ISTR_INFO,
- "%s: Unknown extension 0x%02x in GIF file. Ignored.",
- bname, fn);
--
-+
- /* read (and ignore) data sub-blocks */
- do {
- j = 0; sbsize = NEXTBYTE;
-- while (j<sbsize) { NEXTBYTE; j++; }
-+ while (j<sbsize) { SKIPBYTE; j++; }
- } while (sbsize);
- }
- }
-@@ -370,36 +377,36 @@
-
- else if (block == IMAGESEP) {
- if (DEBUG) fprintf(stderr,"imagesep (got=%d) ",gotimage);
-- if (DEBUG) fprintf(stderr," at start: offset=0x%lx\n",dataptr-RawGIF);
-+ if (DEBUG) fprintf(stderr," at start: offset=0x%x\n",dataptr-RawGIF);
-
- if (gotimage) { /* just skip over remaining images */
- int i,misc,ch,ch1;
-
- /* skip image header */
-- NEXTBYTE; NEXTBYTE; /* left position */
-- NEXTBYTE; NEXTBYTE; /* top position */
-- NEXTBYTE; NEXTBYTE; /* width */
-- NEXTBYTE; NEXTBYTE; /* height */
-+ SKIPBYTE; SKIPBYTE; /* left position */
-+ SKIPBYTE; SKIPBYTE; /* top position */
-+ SKIPBYTE; SKIPBYTE; /* width */
-+ SKIPBYTE; SKIPBYTE; /* height */
- misc = NEXTBYTE; /* misc. bits */
-
- if (misc & 0x80) { /* image has local colormap. skip it */
- for (i=0; i< 1 << ((misc&7)+1); i++) {
-- NEXTBYTE; NEXTBYTE; NEXTBYTE;
-+ SKIPBYTE; SKIPBYTE; SKIPBYTE;
- }
- }
-
-- NEXTBYTE; /* minimum code size */
-+ SKIPBYTE; /* minimum code size */
-
- /* skip image data sub-blocks */
- do {
- ch = ch1 = NEXTBYTE;
-- while (ch--) NEXTBYTE;
-+ while (ch--) SKIPBYTE;
- if ((dataptr - RawGIF) > filesize) break; /* EOF */
- } while(ch1);
- }
-
- else if (readImage(pinfo)) gotimage = 1;
-- if (DEBUG) fprintf(stderr," at end: dataptr=0x%lx\n",dataptr-RawGIF);
-+ if (DEBUG) fprintf(stderr," at end: dataptr=0x%x\n",dataptr-RawGIF);
- }
-
-
-@@ -415,7 +422,7 @@
-
- /* don't mention bad block if file was trunc'd, as it's all bogus */
- if ((dataptr - origptr) < filesize) {
-- sprintf(str, "Unknown block type (0x%02x) at offset 0x%lx",
-+ sprintf(str, "Unknown block type (0x%02x) at offset 0x%x",
- block, (dataptr - origptr) - 1);
-
- if (!gotimage) return gifError(pinfo, str);
-@@ -431,7 +438,7 @@
- free(RawGIF); RawGIF = NULL;
- free(Raster); Raster = NULL;
-
-- if (!gotimage)
-+ if (!gotimage)
- return( gifError(pinfo, "no image data found in GIF file") );
-
- return 1;
-@@ -448,7 +455,7 @@
- npixels = maxpixels = 0;
-
- /* read in values from the image descriptor */
--
-+
- ch = NEXTBYTE;
- LeftOfs = ch + 0x100 * NEXTBYTE;
- ch = NEXTBYTE;
-@@ -472,33 +479,33 @@
-
- if (!HasColormap && !(Misc&0x80)) {
- /* no global or local colormap */
-- SetISTR(ISTR_WARNING, "%s: %s", bname,
-+ SetISTR(ISTR_WARNING, "%s: %s", bname,
- "No colormap in this GIF file. Assuming EGA colors.");
- }
--
-
--
-+
-+
- /* Start reading the raster data. First we get the intial code size
- * and compute decompressor constant values, based on this code size.
- */
--
-+
- CodeSize = NEXTBYTE;
-
- ClearCode = (1 << CodeSize);
- EOFCode = ClearCode + 1;
- FreeCode = FirstFree = ClearCode + 2;
--
-+
- /* The GIF spec has it that the code size is the code size used to
- * compute the above values is the code size given in the file, but the
- * code size used in compression/decompression is the code size given in
- * the file plus one. (thus the ++).
- */
--
-+
- CodeSize++;
- InitCodeSize = CodeSize;
- MaxCode = (1 << CodeSize);
- ReadMask = MaxCode - 1;
--
-+
-
-
- /* UNBLOCK:
-@@ -506,7 +513,7 @@
- * to the Raster array, turning it from a series of blocks into one long
- * data stream, which makes life much easier for readCode().
- */
--
-+
- ptr1 = Raster;
- do {
- ch = ch1 = NEXTBYTE;
-@@ -525,18 +532,21 @@
- fprintf(stderr,"xv: LoadGIF() - picture is %dx%d, %d bits, %sinterlaced\n",
- Width, Height, BitsPerPixel, Interlace ? "" : "non-");
- }
--
-+
-
- /* Allocate the 'pic' */
-- maxpixels = Width*Height;
-+ maxpixels = Width*Height; /* 65535*65535 max (but everything is int) */
-+ if (Width <= 0 || Height <= 0 || maxpixels/Width != Height)
-+ return( gifError(pinfo, "image dimensions out of range") );
- picptr = pic8 = (byte *) malloc((size_t) maxpixels);
-- if (!pic8) return( gifError(pinfo, "couldn't malloc 'pic8'") );
-+ if (!pic8) FatalError("LoadGIF: couldn't malloc 'pic8'");
-+
-+
-
--
- /* Decompress the file, continuing until you see the GIF EOF code.
- * One obvious enhancement is to add checking for corrupt files here.
- */
--
-+
- Code = readCode();
- while (Code != EOFCode) {
- /* Clear code sets everything back to its initial value, then reads the
-@@ -563,58 +573,58 @@
- break; }
-
- CurCode = InCode = Code;
--
-+
- /* If greater or equal to FreeCode, not in the hash table yet;
- * repeat the last character decoded
- */
--
-+
- if (CurCode >= FreeCode) {
- CurCode = OldCode;
- if (OutCount > 4096) { /* printf("outcount1 blew up\n"); */ break; }
- OutCode[OutCount++] = FinChar;
- }
--
-+
- /* Unless this code is raw data, pursue the chain pointed to by CurCode
- * through the hash table to its end; each code in the chain puts its
- * associated output code on the output queue.
- */
--
-+
- while (CurCode > BitMask) {
- if (OutCount > 4096) break; /* corrupt file */
- OutCode[OutCount++] = Suffix[CurCode];
- CurCode = Prefix[CurCode];
- }
--
-+
- if (OutCount > 4096) { /* printf("outcount blew up\n"); */ break; }
--
-+
- /* The last code in the chain is treated as raw data. */
--
-+
- FinChar = CurCode & BitMask;
- OutCode[OutCount++] = FinChar;
--
-+
- /* Now we put the data out to the Output routine.
- * It's been stacked LIFO, so deal with it that way...
- */
-
- /* safety thing: prevent exceeding range of 'pic8' */
- if (npixels + OutCount > maxpixels) OutCount = maxpixels-npixels;
--
-+
- npixels += OutCount;
- if (!Interlace) for (i=OutCount-1; i>=0; i--) *picptr++ = OutCode[i];
- else for (i=OutCount-1; i>=0; i--) doInterlace(OutCode[i]);
- OutCount = 0;
-
- /* Build the hash table on-the-fly. No table is stored in the file. */
--
-+
- Prefix[FreeCode] = OldCode;
- Suffix[FreeCode] = FinChar;
- OldCode = InCode;
--
-+
- /* Point to the next slot in the table. If we exceed the current
- * MaxCode value, increment the code size unless it's already 12. If it
- * is, do nothing: the next code decompressed better be CLEAR
- */
--
-+
- FreeCode++;
- if (FreeCode >= MaxCode) {
- if (CodeSize < 12) {
-@@ -627,7 +637,7 @@
- Code = readCode();
- if (npixels >= maxpixels) break;
- }
--
-+
- if (npixels != maxpixels) {
- SetISTR(ISTR_WARNING,"%s: %s", bname,
- "This GIF file seems to be truncated. Winging it.");
-@@ -640,7 +650,7 @@
- /* fill in the PICINFO structure */
-
- pinfo->pic = pic8;
-- pinfo->w = Width;
-+ pinfo->w = Width;
- pinfo->h = Height;
- pinfo->type = PIC8;
- pinfo->frmType = F_GIF;
-@@ -650,8 +660,8 @@
-
- sprintf(pinfo->fullInfo,
- "GIF%s, %d bit%s per pixel, %sinterlaced. (%d bytes)",
-- (gif89) ? "89" : "87", BitsPerPixel,
-- (BitsPerPixel==1) ? "" : "s",
-+ (gif89) ? "89" : "87", BitsPerPixel,
-+ (BitsPerPixel==1) ? "" : "s",
- Interlace ? "" : "non-", filesize);
-
- sprintf(pinfo->shrtInfo, "%dx%d GIF%s.",Width,Height,(gif89) ? "89" : "87");
-@@ -668,13 +678,13 @@
- * maintain our location in the Raster array as a BIT Offset. We compute
- * the byte Offset into the raster array by dividing this by 8, pick up
- * three bytes, compute the bit Offset into our 24-bit chunk, shift to
-- * bring the desired code to the bottom, then mask it off and return it.
-+ * bring the desired code to the bottom, then mask it off and return it.
- */
-
- static int readCode()
- {
- int RawCode, ByteOffset;
--
-+
- ByteOffset = BitOffset / 8;
- RawCode = Raster[ByteOffset] + (Raster[ByteOffset + 1] << 8);
- if (CodeSize >= 8)
-@@ -692,42 +702,47 @@
- {
- static byte *ptr = NULL;
- static int oldYC = -1;
--
-+
-+ if (Pass == -1) { /* first time through - init stuff */
-+ oldYC = -1;
-+ Pass = 0;
-+ }
-+
- if (oldYC != YC) { ptr = pic8 + YC * Width; oldYC = YC; }
--
-+
- if (YC<Height)
- *ptr++ = Index;
--
-+
- /* Update the X-coordinate, and if it overflows, update the Y-coordinate */
--
-+
- if (++XC == Width) {
--
-+
- /* deal with the interlace as described in the GIF
- * spec. Put the decoded scan line out to the screen if we haven't gone
- * past the bottom of it
- */
--
-+
- XC = 0;
--
-+
- switch (Pass) {
- case 0:
- YC += 8;
- if (YC >= Height) { Pass++; YC = 4; }
- break;
--
-+
- case 1:
- YC += 8;
- if (YC >= Height) { Pass++; YC = 2; }
- break;
--
-+
- case 2:
- YC += 4;
- if (YC >= Height) { Pass++; YC = 1; }
- break;
--
-+
- case 3:
- YC += 2; break;
--
-+
- default:
- break;
- }
-@@ -735,7 +750,7 @@
- }
-
-
--
-+
- /*****************************/
- static int gifError(pinfo, st)
- PICINFO *pinfo;
-diff -ruN xv-3.10a/xvgifwr.c xv-3.10a-bugfixes/xvgifwr.c
---- xv-3.10a/xvgifwr.c 1995-01-03 13:22:21.000000000 -0800
-+++ xv-3.10a-bugfixes/xvgifwr.c 2004-05-16 18:03:27.000000000 -0700
-@@ -2,11 +2,11 @@
- * xvgifwr.c - handles writing of GIF files. based on flgife.c and
- * flgifc.c from the FBM Library, by Michael Maudlin
- *
-- * Contains:
-+ * Contains:
- * WriteGIF(fp, pic, ptype, w, h, rmap, gmap, bmap, numcols, colorstyle,
- * comment)
- *
-- * Note: slightly brain-damaged, in that it'll only write non-interlaced
-+ * Note: slightly brain-damaged, in that it'll only write non-interlaced
- * GIF files (in the interests of speed, or something)
- *
- */
-@@ -34,7 +34,7 @@
- * James A. Woods (decvax!ihnp4!ames!jaw)
- * Joe Orost (decvax!vax135!petsd!joe)
- *****************************************************************/
--
-+
-
- #include "xv.h"
-
-@@ -44,7 +44,6 @@
- static int curx, cury;
- static long CountDown;
- static int Interlace;
--static byte bw[2] = {0, 0xff};
-
- static void putword PARM((int, FILE *));
- static void compress PARM((int, FILE *, byte *, int));
-@@ -97,7 +96,7 @@
- for (i=0; i<numcols; i++) {
- /* see if color #i is already used */
- for (j=0; j<i; j++) {
-- if (rmap[i] == rmap[j] && gmap[i] == gmap[j] &&
-+ if (rmap[i] == rmap[j] && gmap[i] == gmap[j] &&
- bmap[i] == bmap[j]) break;
- }
-
-@@ -115,15 +114,15 @@
- /* figure out 'BitsPerPixel' */
- for (i=1; i<8; i++)
- if ( (1<<i) >= nc) break;
--
-+
- BitsPerPixel = i;
-
- ColorMapSize = 1 << BitsPerPixel;
--
-+
- RWidth = Width = w;
- RHeight = Height = h;
- LeftOfs = TopOfs = 0;
--
-+
- CountDown = w * h; /* # of pixels we'll be doing */
-
- if (BitsPerPixel <= 1) InitCodeSize = 2;
-@@ -137,7 +136,7 @@
- return (1);
- }
-
-- if (DEBUG)
-+ if (DEBUG)
- fprintf(stderr,"WrGIF: pic=%lx, w,h=%dx%d, numcols=%d, Bits%d,Cmap=%d\n",
- (u_long) pic8, w,h,numcols,BitsPerPixel,ColorMapSize);
-
-@@ -152,7 +151,7 @@
- i = 0x80; /* Yes, there is a color map */
- i |= (8-1)<<4; /* OR in the color resolution (hardwired 8) */
- i |= (BitsPerPixel - 1); /* OR in the # of bits per pixel */
-- fputc(i,fp);
-+ fputc(i,fp);
-
- fputc(Background, fp); /* background color */
-
-@@ -290,7 +289,7 @@
- /*
- * compress stdin to stdout
- *
-- * Algorithm: use open addressing double hashing (no chaining) on the
-+ * Algorithm: use open addressing double hashing (no chaining) on the
- * prefix code / next character combination. We do a variant of Knuth's
- * algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime
- * secondary probe. Here, the modular division first probe is gives way
-@@ -370,7 +369,7 @@
- cl_hash( (count_int) hsize_reg); /* clear hash table */
-
- output(ClearCode);
--
-+
- while (len) {
- c = pc2nc[*data++]; len--;
- in_count++;
-@@ -399,7 +398,7 @@
- continue;
- }
-
-- if ( (long)HashTabOf (i) >= 0 )
-+ if ( (long)HashTabOf (i) >= 0 )
- goto probe;
-
- nomatch:
-@@ -454,7 +453,7 @@
- cur_accum |= ((long)code << cur_bits);
- else
- cur_accum = code;
--
-+
- cur_bits += n_bits;
-
- while( cur_bits >= 8 ) {
-@@ -482,7 +481,7 @@
- maxcode = MAXCODE(n_bits);
- }
- }
--
-+
- if( code == EOFCode ) {
- /* At EOF, write the rest of the buffer */
- while( cur_bits > 0 ) {
-@@ -492,11 +491,11 @@
- }
-
- flush_char();
--
-+
- fflush( g_outfile );
-
- #ifdef FOO
-- if( ferror( g_outfile ) )
-+ if( ferror( g_outfile ) )
- FatalError("unable to write GIF file");
- #endif
- }
-@@ -582,7 +581,7 @@
- int c;
- {
- accum[ a_count++ ] = c;
-- if( a_count >= 254 )
-+ if( a_count >= 254 )
- flush_char();
- }
-
-@@ -596,4 +595,4 @@
- fwrite(accum, (size_t) 1, (size_t) a_count, g_outfile );
- a_count = 0;
- }
--}
-+}
-diff -ruN xv-3.10a/xvgrab.c xv-3.10a-bugfixes/xvgrab.c
---- xv-3.10a/xvgrab.c 1994-12-22 14:34:47.000000000 -0800
-+++ xv-3.10a-bugfixes/xvgrab.c 2004-05-16 18:03:30.000000000 -0700
-@@ -6,7 +6,7 @@
- * Contains:
- * int Grab() - handles the GRAB command
- * int LoadGrab(); - 'loads' the pic from the last succesful Grab
-- *
-+ *
- */
-
- #include "copyright.h"
-@@ -14,29 +14,54 @@
- #define NEEDSTIME
- #include "xv.h"
-
--static byte *grabPic = (byte *) NULL;
--static int gbits; /* either '8' or '24' */
--static byte grabmapR[256], grabmapG[256], grabmapB[256]; /* colormap */
--static int gWIDE,gHIGH;
--static int grabInProgress=0;
--static int hidewins = 0;
--static GC rootGC;
--
--static void flashrect PARM((int, int, int, int, int));
--static void startflash PARM((void));
--static void endflash PARM((void));
--static int grabImage PARM((Window, int, int, int, int));
--static void ungrabX PARM((void));
--static int convertImage PARM((XImage *, XColor *, int,
-- XWindowAttributes *));
--
--static int lowbitnum PARM((unsigned long));
--static int getxcolors PARM((XWindowAttributes *, XColor **));
--static Window xvClientWindow PARM((Display *, Window));
-+
-+union swapun {
-+ CARD32 l;
-+ CARD16 s;
-+ CARD8 b[sizeof(CARD32)];
-+};
-
-
-+struct rectlist {
-+ int x,y,w,h;
-+ struct rectlist *next;
-+};
-
-
-+static byte *grabPic = (byte *) NULL;
-+static int gptype;
-+static byte grabmapR[256], grabmapG[256], grabmapB[256];
-+static int gXOFF, gYOFF, gWIDE,gHIGH;
-+static int grabInProgress=0;
-+static int hidewins = 0;
-+static GC rootGC;
-+static struct rectlist *regrabList;
-+
-+
-+static void flashrect PARM((int, int, int, int, int));
-+static void startflash PARM((void));
-+static void endflash PARM((void));
-+static void ungrabX PARM((void));
-+static int lowbitnum PARM((unsigned long));
-+static int getxcolors PARM((XWindowAttributes *, XColor **));
-+
-+static void printWinTree PARM((Window, int));
-+static void errSpace PARM((int));
-+
-+static int grabRootRegion PARM((int, int, int, int));
-+static int grabWinImage PARM((Window, VisualID, Colormap, int));
-+static int convertImageAndStuff PARM((XImage *, XColor *, int,
-+ XWindowAttributes *,
-+ int,int,int,int));
-+
-+static int RectIntersect PARM((int,int,int,int, int,int,int,int));
-+
-+static int CountColors24 PARM((byte *, int, int,
-+ int, int, int, int));
-+
-+static int Trivial24to8 PARM((byte *, int, int, byte *,
-+ byte *, byte *, byte *, int));
-+
- /***********************************/
- int Grab()
- {
-@@ -45,8 +70,7 @@
-
- int i, x, y, x1, y1, x2, y2, ix, iy, iw, ih, rv;
- int rx, ry, pretendGotB1, autograb;
-- int oldaclose;
-- Window rW, cW, clickWin, tmpwin;
-+ Window rW, cW, clickWin;
- unsigned int mask;
- XColor fc, bc;
-
-@@ -75,7 +99,7 @@
- grabInProgress = 1; /* guard against recursive grabs during delay */
- time(&startT);
- while (1) {
-- time(&t);
-+ time(&t);
- if (t >= startT + grabDelay) break;
- if (XPending(theDisp)>0) {
- XEvent evt;
-@@ -91,25 +115,25 @@
- grabInProgress = 0;
- }
-
--
-+
- rootGC = DefaultGC(theDisp, theScreen);
--
-+
- if (grabPic) { /* throw away previous 'grabbed' pic, if there is one */
- free(grabPic); grabPic = (byte *) NULL;
- }
-
-
- fc.flags = bc.flags = DoRed | DoGreen | DoBlue;
-- fc.red = fc.green = fc.blue = 0xffff;
-+ fc.red = fc.green = fc.blue = 0xffff;
- bc.red = bc.green = bc.blue = 0x0000;
- XRecolorCursor(theDisp, tcross, &fc, &bc);
-
-
- XBell(theDisp, 0); /* beep once at start of grab */
-
-- if (!autograb) XGrabButton(theDisp, (u_int) AnyButton, 0, rootW, False, 0,
-+ if (!autograb) XGrabButton(theDisp, (u_int) AnyButton, 0, rootW, False, 0,
- GrabModeAsync, GrabModeSync, None, tcross);
--
-+
- if (autograb) {
- XGrabServer(theDisp); /* until we've done the grabImage */
- if (!XQueryPointer(theDisp,rootW,&rW,&cW,&rx,&ry,&x1,&y1,&mask)) {
-@@ -136,7 +160,7 @@
- XNextEvent(theDisp, &evt);
- i = HandleEvent(&evt, &done);
- if (done) { /* only 'new image' cmd accepted=quit */
-- if (i==QUIT) {
-+ if (i==QUIT) {
- XUngrabButton(theDisp, (u_int) AnyButton, 0, rootW);
- Quit(0);
- }
-@@ -145,12 +169,12 @@
-
- }
- }
--
--
-+
-+
- /***
- *** got button click (or pretending we did, if autograb)
- ***/
--
-+
-
- if (mask & Button3Mask || rW!=rootW) { /* Button3: CANCEL GRAB */
- while (1) { /* wait for button to be released */
-@@ -158,7 +182,7 @@
- if (!(mask & Button3Mask)) break;
- }
- }
--
-+
- XUngrabButton(theDisp, (u_int) AnyButton, 0, rootW);
- XBell(theDisp, 0);
- XBell(theDisp, 0);
-@@ -175,69 +199,40 @@
- if (!(mask & Button1Mask)) break;
- }
- }
--
-- if (!cW || cW == rootW) clickWin = rootW;
-- else {
-- int xr, yr; Window chwin;
-- XTranslateCoordinates(theDisp, rW, cW, rx, ry, &xr, &yr, &chwin);
-- if (chwin != None) {
-- XWindowAttributes clickxwa, parentxwa;
--
-- clickWin = xvClientWindow(theDisp, chwin);
--
-- /* decide if we want to just grab clickWin, or cW.
-- basically, if they're different in any important way
-- (depth, visual, colormap), grab 'clickWin' only,
-- as it's the important part */
--
-- if (!clickWin ||
-- (XGetWindowAttributes(theDisp, clickWin, &clickxwa) &&
-- XGetWindowAttributes(theDisp, cW, &parentxwa) &&
-- clickxwa.visual->class == parentxwa.visual->class &&
-- clickxwa.colormap == parentxwa.colormap &&
-- clickxwa.depth == parentxwa.depth)
-- )
-- clickWin = cW; /* close enough! */
-- }
-- else clickWin = cW;
--
-- if (DEBUG)
-- fprintf(stderr, "rW = %x, cW = %x, chwin = %x, clickWin = %x\n",
-- (u_int) rW, (u_int) cW, (u_int) chwin, (u_int) clickWin);
-- }
--
--
-+
-+ clickWin = (cW) ? cW : rootW;
-+
- if (clickWin == rootW) { /* grab entire screen */
- if (DEBUG) fprintf(stderr,"Grab: clicked on root window.\n");
- ix = iy = 0; iw = dispWIDE; ih = dispHIGH;
- }
- else {
- int x,y; Window win; unsigned int rw,rh,rb,rd;
--
-+
- if (XGetGeometry(theDisp,clickWin,&rW, &x, &y, &rw, &rh, &rb, &rd)) {
- iw = (int) rw; ih = (int) rh;
--
-+
- XTranslateCoordinates(theDisp, clickWin, rootW, 0, 0, &ix,&iy, &win);
--
-- if (DEBUG) fprintf(stderr,"clickWin=0x%x: %d,%d %dx%d depth=%ud\n",
-- (u_int) clickWin, ix, iy, iw, ih, rd);
-+
-+ if (DEBUG) fprintf(stderr,"clickWin=0x%x: %d,%d %dx%d depth=%ud\n",
-+ (u_int) clickWin, ix, iy, iw, ih, rd);
- }
- else {
- ix = iy = 0; iw = dispWIDE; ih = dispHIGH; clickWin = rootW;
- if (DEBUG) fprintf(stderr,"XGetGeometry failed? (using root win)\n");
- }
- }
--
--
-+
-+
- /* range checking: keep rectangle fully on-screen */
- if (ix<0) { iw += ix; ix = 0; }
- if (iy<0) { ih += iy; iy = 0; }
- if (ix+iw>dispWIDE) iw = dispWIDE-ix;
- if (iy+ih>dispHIGH) ih = dispHIGH-iy;
--
--
-+
-+
- if (DEBUG) fprintf(stderr,"using %d,%d (%dx%d)\n", ix, iy, iw, ih);
--
-+
- /* flash the rectangle a bit... */
- startflash();
- for (i=0; i<5; i++) {
-@@ -252,13 +247,12 @@
-
- else { /* Button2: TRACK A RECTANGLE */
- int origrx, origry;
-- Window origcW;
-
-- clickWin = rootW; origcW = cW;
-+ clickWin = rootW;
- origrx = ix = x2 = rx;
- origry = iy = y2 = ry;
- iw = ih = 0;
--
-+
- XGrabServer(theDisp);
- startflash();
-
-@@ -276,51 +270,36 @@
- iw = abs(rx - x1); ih = abs(ry - y1);
- x2 = rx; y2 = ry;
- }
--
-+
- if (iw>1 && ih>1) flashrect(ix,iy,iw,ih,1); /* turn on rect */
- }
-
- flashrect(ix, iy, iw, ih, 0); /* turn off rect */
-+
-+ /* flash the rectangle a bit... */
-+ for (i=0; i<5; i++) {
-+ flashrect(ix, iy, iw, ih, 1);
-+ XFlush(theDisp); Timer(100);
-+ flashrect(ix, iy, iw, ih, 0);
-+ XFlush(theDisp); Timer(100);
-+ }
- endflash();
--
-+
- XUngrabServer(theDisp);
--
--
-- if (origcW == cW) { /* maybe it's entirely in one window??? */
-- if (cW) { /* will be 0 if clicked in rootW */
-- Window stwin, enwin, stwin1, enwin1;
-- if (DEBUG) fprintf(stderr,"origcW=%x cW=%x ",
-- (u_int) origcW, (u_int) cW);
-- XTranslateCoordinates(theDisp,rootW,cW, origrx,origry,&x,&y,&stwin);
-- XTranslateCoordinates(theDisp,rootW,cW, rx, ry, &x,&y,&enwin);
--
-- if (DEBUG) fprintf(stderr,"stwin=%x enwin=%x ",
-- (u_int) stwin, (u_int) enwin);
-- if (stwin == enwin && stwin != None) {
-- stwin1 = xvClientWindow(theDisp, stwin);
-- enwin1 = xvClientWindow(theDisp, enwin);
-- if (DEBUG) fprintf(stderr,"stwin1=%x enwin1=%x ",
-- (u_int) stwin1, (u_int) enwin1);
--
-- if (stwin1 == enwin1 && stwin1) clickWin = stwin1;
-- else clickWin = stwin;
-- }
-- if (DEBUG) fprintf(stderr,"\n");
-- }
-- else clickWin = rootW;
-- }
- }
--
-+
-
- /***
-- *** now that clickWin,ix,iy,iw,ih are known, try to grab the bits...
-+ *** grab screen area (ix,iy,iw,ih)
- ***/
-
-
-+ if (DEBUG>1) printWinTree(clickWin, 0);
-+
- WaitCursor();
-
- if (!autograb) XGrabServer(theDisp); /* until we've done the grabImage */
-- rv = grabImage(clickWin,ix,iy,iw,ih); /* ungrabs the server & button */
-+ rv = grabRootRegion(ix, iy, iw, ih); /* ungrabs the server & button */
-
- SetCursors(-1);
-
-@@ -337,25 +316,25 @@
-
- if (DEBUG) fprintf(stderr,"==remapped mainW. waiting for Config.\n");
-
-- /* sit here until we see a MapNotify on mainW followed by a
-+ /* sit here until we see a MapNotify on mainW followed by a
- ConfigureNotify on mainW */
-
- state = 0;
-- while (1) {
-+ while (state != 3) {
- XEvent event;
- XNextEvent(theDisp, &event);
- HandleEvent(&event, &i);
-
-- if (state==0 && event.type == MapNotify &&
-- event.xmap.window == mainW) state = 1;
-+ if (!(state&1) && event.type == MapNotify &&
-+ event.xmap.window == mainW) state |= 1;
-
-- if (state==1 && event.type == ConfigureNotify &&
-- event.xconfigure.window == mainW) break;
-+ if (!(state&2) && event.type == ConfigureNotify &&
-+ event.xconfigure.window == mainW) state |= 2;
- }
-
- if (DEBUG) fprintf(stderr,"==after remapping mainW, GOT Config.\n");
- }
--
-+
- else if (ctrlW) CtrlBox(1);
- }
-
-@@ -364,6 +343,45 @@
-
-
- /***********************************/
-+int LoadGrab(pinfo)
-+ PICINFO *pinfo;
-+{
-+ /* loads up (into XV structures) last image successfully grabbed.
-+ returns '0' on failure, '1' on success */
-+
-+ int i;
-+
-+ if (!grabPic) return 0; /* no image to use */
-+
-+ pinfo->type = gptype;
-+ if (pinfo->type == PIC8) {
-+ for (i=0; i<256; i++) {
-+ pinfo->r[i] = grabmapR[i];
-+ pinfo->g[i] = grabmapG[i];
-+ pinfo->b[i] = grabmapB[i];
-+ }
-+ }
-+
-+ pinfo->pic = grabPic;
-+ pinfo->normw = pinfo->w = gWIDE;
-+ pinfo->normh = pinfo->h = gHIGH;
-+ pinfo->frmType = -1;
-+ pinfo->colType = -1;
-+
-+ sprintf(pinfo->fullInfo,"<%s internal>",
-+ (pinfo->type == PIC8) ? "8-bit" : "24-bit");
-+
-+ sprintf(pinfo->shrtInfo,"%dx%d image.",gWIDE, gHIGH);
-+
-+ pinfo->comment = (char *) NULL;
-+
-+ grabPic = (byte *) NULL;
-+
-+ return 1;
-+}
-+
-+
-+/***********************************/
- static void flashrect(x,y,w,h,show)
- int x,y,w,h,show;
- {
-@@ -373,7 +391,7 @@
- XSetPlaneMask(theDisp, rootGC, xorMasks[maskno]);
-
- if (!show) { /* turn off rectangle */
-- if (isvis)
-+ if (isvis)
- XDrawRectangle(theDisp, rootW, rootGC, x, y, (u_int) w-1, (u_int) h-1);
-
- isvis = 0;
-@@ -391,15 +409,16 @@
-
- /***********************************/
- static void startflash()
--{
-+{
- /* set up for drawing a flashing rectangle */
- XSetFunction(theDisp, rootGC, GXinvert);
- XSetSubwindowMode(theDisp, rootGC, IncludeInferiors);
- }
-
-+
- /***********************************/
- static void endflash()
--{
-+{
- XSetFunction(theDisp, rootGC, GXcopy);
- XSetSubwindowMode(theDisp, rootGC, ClipByChildren);
- XSetPlaneMask(theDisp, rootGC, AllPlanes);
-@@ -408,21 +427,157 @@
-
-
- /***********************************/
--static int grabImage(clickWin, x, y, w, h)
-- Window clickWin;
-+static void ungrabX()
-+{
-+ XUngrabServer(theDisp);
-+ XUngrabButton(theDisp, (u_int) AnyButton, 0, rootW);
-+}
-+
-+
-+/**************************************/
-+static int lowbitnum(ul)
-+ unsigned long ul;
-+{
-+ /* returns position of lowest set bit in 'ul' as an integer (0-31),
-+ or -1 if none */
-+
-+ int i;
-+ for (i=0; ((ul&1) == 0) && i<32; i++, ul>>=1);
-+ if (i==32) i = -1;
-+ return i;
-+}
-+
-+
-+
-+/**********************************************/
-+/* getxcolors() function snarfed from 'xwd.c' */
-+/**********************************************/
-+
-+#define lowbit(x) ((x) & (~(x) + 1))
-+
-+static int getxcolors(win_info, colors)
-+ XWindowAttributes *win_info;
-+ XColor **colors;
-+{
-+ int i, ncolors;
-+
-+ *colors = (XColor *) NULL;
-+
-+ if (win_info->visual->class == TrueColor) {
-+ if (DEBUG>1) fprintf(stderr,"TrueColor visual: no colormap needed\n");
-+ return 0;
-+ }
-+
-+ else if (!win_info->colormap) {
-+ if (DEBUG>1) fprintf(stderr,"no colormap associated with window\n");
-+ return 0;
-+ }
-+
-+ ncolors = win_info->visual->map_entries;
-+ if (DEBUG>1) fprintf(stderr,"%d entries in colormap\n", ncolors);
-+
-+ if (!(*colors = (XColor *) malloc (sizeof(XColor) * ncolors)))
-+ FatalError("malloc failed in getxcolors()");
-+
-+
-+ if (win_info->visual->class == DirectColor) {
-+ Pixel red, green, blue, red1, green1, blue1;
-+
-+ if (DEBUG>1) fprintf(stderr,"DirectColor visual\n");
-+
-+ red = green = blue = 0;
-+ red1 = lowbit(win_info->visual->red_mask);
-+ green1 = lowbit(win_info->visual->green_mask);
-+ blue1 = lowbit(win_info->visual->blue_mask);
-+ for (i=0; i<ncolors; i++) {
-+ (*colors)[i].pixel = red|green|blue;
-+ (*colors)[i].pad = 0;
-+ red += red1;
-+ if (red > win_info->visual->red_mask) red = 0;
-+ green += green1;
-+ if (green > win_info->visual->green_mask) green = 0;
-+ blue += blue1;
-+ if (blue > win_info->visual->blue_mask) blue = 0;
-+ }
-+ }
-+ else {
-+ for (i=0; i<ncolors; i++) {
-+ (*colors)[i].pixel = i;
-+ (*colors)[i].pad = 0;
-+ }
-+ }
-+
-+ XQueryColors(theDisp, win_info->colormap, *colors, ncolors);
-+
-+ return(ncolors);
-+}
-+
-+
-+
-+/*******************************************/
-+static void printWinTree(win,tab)
-+ Window win;
-+ int tab;
-+{
-+ u_int i, nchildren;
-+ Window root, parent, *children, chwin;
-+ XWindowAttributes xwa;
-+ int xr, yr;
-+
-+ if (!XGetWindowAttributes(theDisp, win, &xwa)) {
-+ errSpace(tab);
-+ fprintf(stderr,"pWT: can't XGetWindowAttributes(%08x)\n", (u_int) win);
-+ return;
-+ }
-+
-+ XTranslateCoordinates(theDisp, win, rootW, 0,0, &xr,&yr, &chwin);
-+ if (xwa.map_state==IsViewable) {
-+ errSpace(tab);
-+ fprintf(stderr,"%08x: %4d,%4d %4dx%4d vis: %02x cm=%x %s\n",
-+ (u_int) win, xr,yr, xwa.width, xwa.height,
-+ (u_int) XVisualIDFromVisual(xwa.visual),
-+ (u_int) xwa.colormap,
-+ ((xwa.map_state==IsUnmapped) ? "unmapped " :
-+ (xwa.map_state==IsUnviewable) ? "unviewable" :
-+ (xwa.map_state==IsViewable) ? "viewable " :
-+ "<unknown> ") );
-+
-+ if (!XQueryTree(theDisp, win, &root, &parent, &children, &nchildren)) {
-+ errSpace(tab);
-+ fprintf(stderr,"pWT: XQueryTree(%08x) failed\n", (u_int) win);
-+ if (children) XFree((char *)children);
-+ return;
-+ }
-+
-+ for (i=0; i<nchildren; i++) printWinTree(children[i], tab+1);
-+ if (children) XFree((char *)children);
-+ }
-+
-+ return;
-+}
-+
-+
-+/***********************************/
-+static void errSpace(n)
-+ int n;
-+{
-+ for ( ; n>0; n--) putc(' ', stderr);
-+}
-+
-+
-+
-+
-+/***********************************/
-+static int grabRootRegion(x, y, w, h)
- int x, y, w, h;
- {
- /* attempts to grab the specified rectangle of the root window
-- returns '1' on success. clickWin is used to figure out the depth
-- and colormap to use */
-+ returns '1' on success */
-
-- XImage *image;
-- XWindowAttributes xwa;
-- XColor *colors;
-- int ncolors, i, ix, iy;
-- char str[256];
-- Window win;
-+ XWindowAttributes xwa;
-+ int i;
-
-+ regrabList = (struct rectlist *) NULL;
-
- /* range checking */
- if (x<0) { w += x; x = 0; }
-@@ -430,86 +585,246 @@
- if (x+w>dispWIDE) w = dispWIDE-x;
- if (y+h>dispHIGH) h = dispHIGH-y;
-
-- if (w==0 || h==0) { /* selected nothing */
-+ if (w<=0 || h<=0) { /* selected nothing */
- ungrabX();
- return 0;
- }
-
-- if (!XGetWindowAttributes(theDisp, clickWin, &xwa)) {
-- sprintf(str,"Unable to get window attributes for clicked-on window\n");
-+
-+ /* grab this region, using the default (root's) visual */
-+
-+ /* now for all top-level windows (children of root), in bottom->top order
-+ if they intersect the grabregion
-+ are they drawn entirely (including children) using default visual+cmap?
-+ yes: if they intersect 'regrab' list, grab'em - else skip'em
-+ no: grab them, add their rectangle to 'regrab' list
-+ */
-+
-+
-+ /* make a 24bit grabPic */
-+ gptype = PIC24;
-+ gXOFF = x; gYOFF = y; gWIDE = w; gHIGH = h;
-+ grabPic = (byte *) malloc((size_t) gWIDE * gHIGH * 3);
-+ if (!grabPic) {
- ungrabX();
-- ErrPopUp(str, "\nThat Sucks!");
-+ ErrPopUp("Unable to malloc() space for grabbed image!", "\nBite Me!");
- return 0;
- }
-
--
-- XTranslateCoordinates(theDisp, rootW, clickWin, x, y, &ix, &iy, &win);
--
-- xerrcode = 0;
-- image = XGetImage(theDisp, clickWin, ix, iy, (u_int) w, (u_int) h,
-- AllPlanes, ZPixmap);
-- if (xerrcode || !image || !image->data) {
-- sprintf(str, "Unable to get image (%d,%d %dx%d) from display", ix,iy,w,h);
-+ if (!XGetWindowAttributes(theDisp, rootW, &xwa)) {
- ungrabX();
-- ErrPopUp(str, "\nThat Sucks!");
-+ ErrPopUp("Can't get window attributes for root window!", "\nBite Me!");
- return 0;
- }
-
-- ncolors = getxcolors(&xwa, &colors);
-+ i = grabWinImage(rootW, XVisualIDFromVisual(xwa.visual), xwa.colormap,0);
-
- ungrabX();
-
-- if (ncolors && DEBUG) {
-- fprintf(stderr, "Colormap:\n");
-- for (i=0; i<ncolors; i++)
-- fprintf(stderr,"%02x%02x%02x ",colors[i].red>>8, colors[i].green>>8,
-- colors[i].blue>>8);
-- fprintf(stderr,"\n");
-- }
--
--
- XBell(theDisp, 0); /* beep twice at end of grab */
- XBell(theDisp, 0);
-
-- i = convertImage(image, colors, ncolors, &xwa);
-+ { /* free regrabList */
-+ struct rectlist *rr, *tmprr;
-+ rr = regrabList;
-+ while (rr) {
-+ tmprr = rr->next;
-+ free((char *) rr);
-+ rr = tmprr;
-+ }
-+ regrabList = (struct rectlist *) NULL;
-+ }
-+
-+ if (i) {
-+ ErrPopUp("Warning: Problems occurred during grab.","\nWYSInWYG!");
-+ return 0;
-+ }
-
-- /* DO *NOT* use xvDestroyImage(), as the 'data' field was alloc'd by X, not
-- necessarily through 'malloc() / free()' */
-- XDestroyImage(image);
--
-- if (colors) free((char *) colors);
-
-- return i;
-+ /* if 256 or fewer colors in grabPic, make it a PIC8 */
-+ i = CountColors24(grabPic, gWIDE, gHIGH, 0,0,gWIDE,gHIGH);
-+ if (i<=256) {
-+ byte *pic8;
-+ pic8 = (byte *) malloc((size_t) (gWIDE * gHIGH));
-+ if (pic8) {
-+ if (Trivial24to8(grabPic, gWIDE,gHIGH, pic8,
-+ grabmapR,grabmapG,grabmapB,256)) {
-+ free((char *) grabPic);
-+ grabPic = pic8;
-+ gptype = PIC8;
-+ }
-+ }
-+ }
-+
-+ return 1; /* full success */
- }
-
-
--static void ungrabX()
-+/***********************************/
-+static int grabWinImage(win, parentVid, parentCmap, toplevel)
-+ Window win;
-+ VisualID parentVid;
-+ Colormap parentCmap;
-+ int toplevel;
- {
-- XUngrabServer(theDisp);
-- XUngrabButton(theDisp, (u_int) AnyButton, 0, rootW);
--}
-+ /* grabs area of window (and its children) that intersects
-+ * grab region (root coords: gXOFF,gYOFF,gWIDE,gHIGH), and stuffs
-+ * relevant bits into the grabPic (a gWIDE*gHIGH PIC24)
-+ *
-+ * Note: special kludge for toplevel windows (children of root):
-+ * since that's the only case where a window can be obscuring something
-+ * that isn't its parent
-+ *
-+ * returns 0 if okay, 1 if problems occurred
-+ */
-+
-+
-+ int i, rv, dograb;
-+ int wx, wy, ww, wh; /* root coords of window */
-+ int gx, gy, gw, gh; /* root coords of grab region of win*/
-+ Window chwin; /* unused */
-+ u_int nchildren;
-+ Window root, parent, *children;
-+ XWindowAttributes xwa;
-
-+ /* first, quick checks to avoid recursing down useless branches */
-
-+ if (!XGetWindowAttributes(theDisp, win, &xwa)) {
-+ if (DEBUG) fprintf(stderr,"gWI: can't get win attr (%08x)\n", (u_int) win);
-+ return 1;
-+ }
-
-+ if (xwa.class == InputOnly || xwa.map_state != IsViewable) return 0;
-
-+ rv = 0;
-+ dograb = 1;
-+ wx = 0; wy = 0; ww = (int) xwa.width; wh = (int) xwa.height;
-+
-+ /* if this window doesn't intersect, none of its children will, either */
-+ XTranslateCoordinates(theDisp, win, rootW, 0,0, &wx, &wy, &chwin);
-+ if (!RectIntersect(wx,wy,ww,wh, gXOFF,gYOFF,gWIDE,gHIGH)) return 0;
-+
-+ gx = wx; gy = wy; gw = ww; gh = wh;
-+ CropRect2Rect(&gx,&gy,&gw,&gh, gXOFF,gYOFF,gWIDE,gHIGH);
-+
-+ if (win==rootW) {
-+ /* always grab */
-+ }
-+
-+ else if (XVisualIDFromVisual(xwa.visual) == parentVid &&
-+ ((xwa.visual->class==TrueColor) || xwa.colormap == parentCmap)) {
-+
-+ /* note: if both visuals are TrueColor, don't compare cmaps */
-+
-+ /* normally, if the vis/cmap info of a window is the same as its parent,
-+ no need to regrab window. special case if this is a toplevel
-+ window, as it can be obscuring windows that *aren't* its parent */
-+
-+ if (toplevel) {
-+ /* we probably already have this region. Check it against regrabList
-+ If it intersects none, no need to grab.
-+ If it intersects one, crop to that rectangle and grab
-+ if it intersects >1, don't crop, just grab gx,gy,gw,gh */
-+
-+ struct rectlist *rr, *cr;
-+
-+ i=0; cr=rr=regrabList;
-+ while (rr) {
-+ if (RectIntersect(gx,gy,gw,gh, rr->x,rr->y,rr->w,rr->h)) {
-+ i++; cr = rr;
-+ }
-+ rr = rr->next;
-+ }
-+
-+ if (i==0) dograb=0; /* no need to grab */
-+
-+ if (i==1) CropRect2Rect(&gx,&gy,&gw,&gh, cr->x,cr->y,cr->w,cr->h);
-+ }
-+ else dograb = 0;
-+ }
-+
-+ else {
-+ /* different vis/cmap from parent:
-+ add to regrab list, if not already fully contained in list */
-+ struct rectlist *rr;
-+
-+ /* check to see if fully contained... */
-+ rr=regrabList;
-+ while (rr && RectIntersect(gx,gy,gw,gh, rr->x,rr->y,rr->w,rr->h)!=2)
-+ rr = rr->next;
-+
-+ if (!rr) { /* add to list */
-+ if (DEBUG)
-+ fprintf(stderr,"added to regrabList: %d,%d %dx%d\n",gx,gy,gw,gh);
-+
-+ rr = (struct rectlist *) malloc(sizeof(struct rectlist));
-+ if (!rr) return 1;
-+ else {
-+ rr->x = gx; rr->y = gy; rr->w = gw; rr->h = gh;
-+ rr->next = regrabList;
-+ regrabList = rr;
-+ }
-+ }
-+ }
-+
-+ /* at this point, we have to grab gx,gy,gw,gh from 'win' */
-+
-+ if (dograb) {
-+ int ix, iy, ncolors;
-+ XColor *colors;
-+ XImage *image;
-+
-+ XTranslateCoordinates(theDisp, rootW, win, gx, gy, &ix, &iy, &chwin);
-+
-+ if (DEBUG)
-+ fprintf(stderr,"Grabbing win (%08x) %d,%d %dx%d\n",
-+ (u_int) win, gx,gy,gw,gh);
-+
-+ WaitCursor();
-+
-+ xerrcode = 0;
-+ image = XGetImage(theDisp, win, ix, iy, (u_int) gw, (u_int) gh,
-+ AllPlanes, ZPixmap);
-+ if (xerrcode || !image || !image->data) return 1;
-+
-+ ncolors = getxcolors(&xwa, &colors);
-+ rv = convertImageAndStuff(image, colors, ncolors, &xwa,
-+ gx - gXOFF, gy - gYOFF, gw, gh);
-+ XDestroyImage(image); /* can't use xvDestroyImage: alloc'd by X! */
-+ if (colors) free((char *) colors);
-+ }
-+
-+
-+ /* recurse into children to see if any of them are 'different'... */
-+
-+ if (!XQueryTree(theDisp, win, &root, &parent, &children, &nchildren)) {
-+ if (DEBUG) fprintf(stderr,"XQueryTree(%08x) failed\n", (u_int) win);
-+ if (children) XFree((char *)children);
-+ return rv+1;
-+ }
-+
-+ for (i=0; i<nchildren; i++) {
-+ rv += grabWinImage(children[i], XVisualIDFromVisual(xwa.visual),
-+ xwa.colormap, (win==rootW));
-+ }
-+ if (children) XFree((char *)children);
-+
-+ return rv;
-+}
-
--union swapun {
-- CARD32 l;
-- CARD16 s;
-- CARD8 b[sizeof(CARD32)];
--};
-
-
- /**************************************/
--static int convertImage(image, colors, ncolors, xwap)
-+static int convertImageAndStuff(image, colors, ncolors, xwap, gx,gy,gw,gh)
- XImage *image;
- XColor *colors;
- int ncolors;
- XWindowAttributes *xwap;
-+ int gx,gy,gw,gh; /* position within grabPic (guaranteed OK) */
- {
-- /* attempts to conver the image from whatever weird-ass format it might
-- be in into something E-Z to deal with (either an 8-bit colormapped
-- image, or a 24-bit image). Returns '1' on success. */
-+ /* attempts to convert the image from whatever weird-ass format it might
-+ be in into a 24-bit RGB image, and stuff it into grabPic
-+ Returns 0 on success, 1 on failure */
-
- /* this code owes a lot to 'xwdtopnm.c', part of the pbmplus package,
- written by Jef Poskanzer */
-@@ -528,7 +843,6 @@
- int isLsbMachine, flipBytes;
- Visual *visual;
- char errstr[256];
-- static char *foo[] = { "\nThat Sucks!" };
-
-
- /* quiet compiler warnings */
-@@ -538,20 +852,20 @@
- pixvalue = 0;
- rmask = gmask = bmask = 0;
- rshift = gshift = bshift = 0;
--
-+ r8shift = g8shift = b8shift = 0;
-
- /* determine byte order of the machine we're running on */
- sw.l = 1;
- isLsbMachine = (sw.b[0]) ? 1 : 0;
-
-- if (xwap && xwap->visual) visual = xwap->visual;
-- else visual = theVisual;
-+ visual = xwap->visual;
-+
-
-- if (DEBUG) {
-+ if (DEBUG>1) {
- fprintf(stderr,"convertImage:\n");
- fprintf(stderr," %dx%d (offset %d), %s\n",
-- image->width, image->height, image->xoffset,
-- (image->format == XYBitmap || image->format == XYPixmap)
-+ image->width, image->height, image->xoffset,
-+ (image->format == XYBitmap || image->format == XYPixmap)
- ? "XYPixmap" : "ZPixmap");
-
- fprintf(stderr,"byte_order = %s, bitmap_bit_order = %s, unit=%d, pad=%d\n",
-@@ -575,41 +889,17 @@
- sprintf(errstr, "%s\nReturned image bitmap_unit (%d) non-standard.",
- "Can't deal with this display.", image->bitmap_unit);
- ErrPopUp(errstr, "\nThat Sucks!");
-- return 0;
-+ return 1;
- }
-
- if (!ncolors && visual->class != TrueColor) {
- sprintf(errstr, "%s\nOnly TrueColor displays can have no colormap.",
- "Can't deal with this display.");
- ErrPopUp(errstr, "\nThat Sucks!");
-- return 0;
-+ return 1;
- }
-
-
-- /* build the 'global' grabPic stuff */
-- gWIDE = image->width; gHIGH = image->height;
--
-- if (visual->class == TrueColor || visual->class == DirectColor ||
-- ncolors > 256) {
-- grabPic = (byte *) malloc((size_t) gWIDE * gHIGH * 3);
-- gbits = 24;
-- }
-- else {
-- grabPic = (byte *) malloc((size_t) gWIDE * gHIGH);
-- gbits = 8;
--
-- /* load up the colormap */
-- for (i=0; i<ncolors; i++) {
-- grabmapR[i] = colors[i].red >> 8;
-- grabmapG[i] = colors[i].green >> 8;
-- grabmapB[i] = colors[i].blue >> 8;
-- }
-- }
--
-- if (!grabPic) FatalError("unable to malloc grabPic in convertImage()");
-- pptr = grabPic;
--
--
- if (visual->class == TrueColor || visual->class == DirectColor) {
- unsigned int tmp;
-
-@@ -634,16 +924,35 @@
- while (tmp >= 256) { tmp >>= 1; b8shift -= 1; }
- while (tmp < 128) { tmp <<= 1; b8shift += 1; }
-
-- if (DEBUG)
-+ if (DEBUG>1)
- fprintf(stderr,"True/DirectColor: shifts=%d,%d,%d 8shifts=%d,%d,%d\n",
- rshift, gshift, bshift, r8shift, g8shift, b8shift);
- }
-
-
-- bits_per_item = image->bitmap_unit;
-- bits_used = bits_per_item;
-+ bits_per_item = image->bitmap_unit;
- bits_per_pixel = image->bits_per_pixel;
-
-+
-+ /* add code for freako 'exceed' server, where bitmapunit = 8
-+ and bitsperpix = 32 (and depth=24)... */
-+
-+ if (bits_per_item < bits_per_pixel) {
-+ bits_per_item = bits_per_pixel;
-+
-+ /* round bits_per_item up to next legal value, if necc */
-+ if (bits_per_item < 8) bits_per_item = 8;
-+ else if (bits_per_item < 16) bits_per_item = 16;
-+ else bits_per_item = 32;
-+ }
-+
-+
-+ /* which raises the question: how (can?) you ever have a 24 bits per pix,
-+ (ie, 3 bytes, no alpha/padding) */
-+
-+
-+ bits_used = bits_per_item; /* so it will get a new item first time */
-+
- if (bits_per_pixel == 32) pixmask = 0xffffffff;
- else pixmask = (((CARD32) 1) << bits_per_pixel) - 1;
-
-@@ -652,14 +961,15 @@
-
- /* if we're on an lsbfirst machine, or the image came from an lsbfirst
- machine, we should flip the bytes around. NOTE: if we're on an
-- lsbfirst machine *and* the image came from an lsbfirst machine,
-+ lsbfirst machine *and* the image came from an lsbfirst machine,
- *don't* flip bytes, as it should work out */
-
-- /* pity we don't have a logical exclusive-or */
- flipBytes = ( isLsbMachine && byte_order != LSBFirst) ||
- (!isLsbMachine && byte_order == LSBFirst);
-
- for (i=0; i<image->height; i++) {
-+ pptr = grabPic + ((i+gy) * gWIDE + gx) * 3;
-+
- lineptr = (byte *) image->data + (i * image->bytes_per_line);
- bptr = ((CARD8 *) lineptr) - 1;
- sptr = ((CARD16 *) lineptr) - 1;
-@@ -667,35 +977,39 @@
- bits_used = bits_per_item;
-
- for (j=0; j<image->width; j++) {
--
- /* get the next pixel value from the image data */
-
- if (bits_used == bits_per_item) { /* time to move on to next b/s/l */
- switch (bits_per_item) {
-- case 8: bptr++; break;
-- case 16: sptr++; sval = *sptr;
-- if (flipBytes) { /* swap CARD16 */
-- sw.s = sval;
-- tmpbyte = sw.b[0];
-- sw.b[0] = sw.b[1];
-- sw.b[1] = tmpbyte;
-- sval = sw.s;
-- }
-- break;
-- case 32: lptr++; lval = *lptr;
-- if (flipBytes) { /* swap CARD32 */
-- sw.l = lval;
-- tmpbyte = sw.b[0];
-- sw.b[0] = sw.b[3];
-- sw.b[3] = tmpbyte;
-- tmpbyte = sw.b[1];
-- sw.b[1] = sw.b[2];
-- sw.b[2] = tmpbyte;
-- lval = sw.l;
-- }
-- break;
-+ case 8:
-+ bptr++; break;
-+
-+ case 16:
-+ sptr++; sval = *sptr;
-+ if (flipBytes) { /* swap CARD16 */
-+ sw.s = sval;
-+ tmpbyte = sw.b[0];
-+ sw.b[0] = sw.b[1];
-+ sw.b[1] = tmpbyte;
-+ sval = sw.s;
-+ }
-+ break;
-+
-+ case 32:
-+ lptr++; lval = *lptr;
-+ if (flipBytes) { /* swap CARD32 */
-+ sw.l = lval;
-+ tmpbyte = sw.b[0];
-+ sw.b[0] = sw.b[3];
-+ sw.b[3] = tmpbyte;
-+ tmpbyte = sw.b[1];
-+ sw.b[1] = sw.b[2];
-+ sw.b[2] = tmpbyte;
-+ lval = sw.l;
-+ }
-+ break;
- }
--
-+
- bits_used = 0;
- if (bit_order == MSBFirst) bit_shift = bits_per_item - bits_per_pixel;
- else bit_shift = 0;
-@@ -711,11 +1025,11 @@
- else bit_shift += bits_per_pixel;
- bits_used += bits_per_pixel;
-
--
-+
- /* okay, we've got the next pixel value in 'pixvalue' */
--
-+
- if (visual->class == TrueColor || visual->class == DirectColor) {
-- /* in either case, we have to take the pixvalue and
-+ /* in either case, we have to take the pixvalue and
- break it out into individual r,g,b components */
- rval = (pixvalue & rmask) >> rshift;
- gval = (pixvalue & gmask) >> gshift;
-@@ -741,212 +1055,169 @@
- /* use pixel value as an index into colors array */
-
- if (pixvalue >= ncolors) {
-- FatalError("convertImage(): pixvalue >= ncolors");
-- }
--
-- if (gbits == 24) { /* too many colors for 8-bit colormap */
-- *pptr++ = (colors[pixvalue].red) >> 8;
-- *pptr++ = (colors[pixvalue].green) >> 8;
-- *pptr++ = (colors[pixvalue].blue) >> 8;
-+ fprintf(stderr, "WARNING: convertImage(): pixvalue >= ncolors\n");
-+ return 1;
- }
-- else *pptr++ = pixvalue & 0xff;
-
-+ *pptr++ = (colors[pixvalue].red) >> 8;
-+ *pptr++ = (colors[pixvalue].green) >> 8;
-+ *pptr++ = (colors[pixvalue].blue) >> 8;
- }
- }
- }
-
-- return 1;
-+ return 0;
- }
-
-
-
--/**************************************/
--static int lowbitnum(ul)
-- unsigned long ul;
-+/***********************************/
-+static int RectIntersect(ax,ay,aw,ah, bx,by,bw,bh)
-+ int ax,ay,aw,ah, bx,by,bw,bh;
- {
-- /* returns position of lowest set bit in 'ul' as an integer (0-31),
-- or -1 if none */
--
-- int i;
-- for (i=0; ((ul&1) == 0) && i<32; i++, ul>>=1);
-- if (i==32) i = -1;
-- return i;
--}
-+ /* returns 0 if rectangles A and B do not intersect
-+ returns 1 if A partially intersects B
-+ returns 2 if rectangle A is fully enclosed by B */
-
-+ int ax1,ay1, bx1,by1;
-
-+ ax1 = ax+aw-1; ay1 = ay+ah-1;
-+ bx1 = bx+bw-1; by1 = by+bh-1;
-
--/**************************************/
--/* following code snarfed from 'xwd.c' */
--/**************************************/
-+ if (ax1<bx || ax>bx1 || ay1<by || ay>by1) return 0;
-
--#define lowbit(x) ((x) & (~(x) + 1))
-+ if (ax>=bx && ax1<=bx1 && ay>=by && ay1<=by) return 2;
-
-+ return 1;
-+}
-
--static int getxcolors(win_info, colors)
-- XWindowAttributes *win_info;
-- XColor **colors;
--{
-- int i, ncolors;
-- Colormap cmap;
--
-- *colors = (XColor *) NULL;
--
-- if (win_info->visual->class == TrueColor) {
-- if (DEBUG) fprintf(stderr,"TrueColor visual: no colormap needed\n");
-- return 0;
-- }
-
-- else if (!win_info->colormap) {
-- if (DEBUG) fprintf(stderr,"no colormap associated with window\n");
-- return 0;
-- }
-
-- ncolors = win_info->visual->map_entries;
-- if (DEBUG) fprintf(stderr,"%d entries in colormap\n", ncolors);
-
-- if (!(*colors = (XColor *) malloc (sizeof(XColor) * ncolors)))
-- FatalError("malloc failed in getxcolors()");
-
-+/** stuff needed to make new xvgrab work in 3.10a. **/
-
-- if (win_info->visual->class == DirectColor) {
-- Pixel red, green, blue, red1, green1, blue1;
-+/********************************************/
-+static int CountColors24(pic, pwide, phigh, x, y, w, h)
-+ byte *pic;
-+ int pwide, phigh, x,y,w,h;
-+{
-+ /* counts the # of unique colors in a selected rect of a PIC24
-+ returns '0-256' or >256 */
-
-- if (DEBUG) fprintf(stderr,"DirectColor visual\n");
-+ int i, j, nc;
-+ int low, high, mid;
-+ u_int colors[257], col;
-+ byte *pp;
-+
-+ nc = 0;
-+
-+ for (i=y; nc<257 && i<y+h; i++) {
-+ pp = pic + (i*pwide + x)*3;
-+
-+ for (j=x; nc<257 && j<x+w; j++, pp+=3) {
-+ col = (((u_int) pp[0])<<16) + (((u_int) pp[1])<<8) + pp[2];
-+
-+ /* binary search the 'colors' array to see if it's in there */
-+ low = 0; high = nc-1;
-+ while (low <= high) {
-+ mid = (low+high)/2;
-+ if (col < colors[mid]) high = mid - 1;
-+ else if (col > colors[mid]) low = mid + 1;
-+ else break;
-+ }
-
-- red = green = blue = 0;
-- red1 = lowbit(win_info->visual->red_mask);
-- green1 = lowbit(win_info->visual->green_mask);
-- blue1 = lowbit(win_info->visual->blue_mask);
-- for (i=0; i<ncolors; i++) {
-- (*colors)[i].pixel = red|green|blue;
-- (*colors)[i].pad = 0;
-- red += red1;
-- if (red > win_info->visual->red_mask) red = 0;
-- green += green1;
-- if (green > win_info->visual->green_mask) green = 0;
-- blue += blue1;
-- if (blue > win_info->visual->blue_mask) blue = 0;
-- }
-- }
-- else {
-- for (i=0; i<ncolors; i++) {
-- (*colors)[i].pixel = i;
-- (*colors)[i].pad = 0;
-+ if (high < low) { /* didn't find color in list, add it. */
-+ xvbcopy((char *) &colors[low], (char *) &colors[low+1],
-+ (nc - low) * sizeof(u_int));
-+ colors[low] = col;
-+ nc++;
-+ }
- }
- }
-
-- XQueryColors(theDisp, win_info->colormap, *colors, ncolors);
--
-- return(ncolors);
-+ return nc;
- }
--
-
-
--
--
--/***********************************/
--int LoadGrab(pinfo)
-- PICINFO *pinfo;
-+/****************************/
-+static int Trivial24to8(pic24, w,h, pic8, rmap,gmap,bmap, maxcol)
-+ byte *pic24, *pic8, *rmap, *gmap, *bmap;
-+ int w,h,maxcol;
- {
-- /* loads up (into XV structures) last image successfully grabbed.
-- returns '0' on failure, '1' on success */
--
-- int i;
--
-- if (!grabPic) return 0; /* no image to use */
--
-- if (gbits == 24) pinfo->type = PIC24;
-- else {
-- pinfo->type = PIC8;
-+ /* scans picture until it finds more than 'maxcol' different colors. If it
-+ finds more than 'maxcol' colors, it returns '0'. If it DOESN'T, it does
-+ the 24-to-8 conversion by simply sticking the colors it found into
-+ a colormap, and changing instances of a color in pic24 into colormap
-+ indicies (in pic8) */
-+
-+ unsigned long colors[256],col;
-+ int i, nc, low, high, mid;
-+ byte *p, *pix;
-+
-+ if (maxcol>256) maxcol = 256;
-+
-+ /* put the first color in the table by hand */
-+ nc = 0; mid = 0;
-+
-+ for (i=w*h,p=pic24; i; i--) {
-+ col = (((u_long) *p++) << 16);
-+ col += (((u_long) *p++) << 8);
-+ col += *p++;
-+
-+ /* binary search the 'colors' array to see if it's in there */
-+ low = 0; high = nc-1;
-+ while (low <= high) {
-+ mid = (low+high)/2;
-+ if (col < colors[mid]) high = mid - 1;
-+ else if (col > colors[mid]) low = mid + 1;
-+ else break;
-+ }
-
-- for (i=0; i<256; i++) {
-- pinfo->r[i] = grabmapR[i];
-- pinfo->g[i] = grabmapG[i];
-- pinfo->b[i] = grabmapB[i];
-+ if (high < low) { /* didn't find color in list, add it. */
-+ if (nc>=maxcol) return 0;
-+ xvbcopy((char *) &colors[low], (char *) &colors[low+1],
-+ (nc - low) * sizeof(u_long));
-+ colors[low] = col;
-+ nc++;
- }
- }
-
-- pinfo->pic = grabPic;
-- pinfo->normw = pinfo->w = gWIDE;
-- pinfo->normh = pinfo->h = gHIGH;
-- pinfo->frmType = -1;
-- pinfo->colType = -1;
--
-- sprintf(pinfo->fullInfo,"<%s internal>",
-- (pinfo->type == PIC8) ? "8-bit" : "24-bit");
--
-- sprintf(pinfo->shrtInfo,"%dx%d image.",gWIDE, gHIGH);
--
-- pinfo->comment = (char *) NULL;
--
-- grabPic = (byte *) NULL;
--
-- return 1;
--}
--
--
--
--
--
--#include <X11/Xlib.h>
--#include <X11/Xatom.h>
--
--static Window TryChildren PARM((Display *, Window, Atom));
-
--/* Find a window with WM_STATE, else return '0' */
-+ /* run through the data a second time, this time mapping pixel values in
-+ pic24 into colormap offsets into 'colors' */
-
--static Window xvClientWindow (dpy, win)
-- Display *dpy;
-- Window win;
--{
-- Atom WM_STATE;
-- Atom type = None;
-- int format;
-- unsigned long nitems, after;
-- unsigned char *data;
-- Window inf;
--
-- WM_STATE = XInternAtom(dpy, "WM_STATE", True);
-- if (!WM_STATE) return win;
-+ for (i=w*h,p=pic24, pix=pic8; i; i--,pix++) {
-+ col = (((u_long) *p++) << 16);
-+ col += (((u_long) *p++) << 8);
-+ col += *p++;
-+
-+ /* binary search the 'colors' array. It *IS* in there */
-+ low = 0; high = nc-1;
-+ while (low <= high) {
-+ mid = (low+high)/2;
-+ if (col < colors[mid]) high = mid - 1;
-+ else if (col > colors[mid]) low = mid + 1;
-+ else break;
-+ }
-
-- XGetWindowProperty(dpy, win, WM_STATE, 0L, 0L, False, AnyPropertyType,
-- &type, &format, &nitems, &after, &data);
-- if (type) return win;
-+ if (high < low) {
-+ fprintf(stderr,"Trivial24to8: impossible situation!\n");
-+ exit(1);
-+ }
-+ *pix = mid;
-+ }
-
-- inf = TryChildren(dpy, win, WM_STATE);
-+ /* and load up the 'desired colormap' */
-+ for (i=0; i<nc; i++) {
-+ rmap[i] = colors[i]>>16;
-+ gmap[i] = (colors[i]>>8) & 0xff;
-+ bmap[i] = colors[i] & 0xff;
-+ }
-
-- return inf;
-+ return 1;
- }
-
--static Window TryChildren (dpy, win, WM_STATE)
-- Display *dpy;
-- Window win;
-- Atom WM_STATE;
--{
-- Window root, parent;
-- Window *children;
-- unsigned int nchildren;
-- unsigned int i;
-- Atom type = None;
-- int format;
-- unsigned long nitems, after;
-- unsigned char *data;
-- Window inf = 0;
--
-- if (!XQueryTree(dpy, win, &root, &parent, &children, &nchildren))
-- return 0;
-
-- for (i = 0; !inf && (i < nchildren); i++) {
-- XGetWindowProperty(dpy, children[i], WM_STATE, 0L, 0L, False,
-- AnyPropertyType, &type, &format, &nitems,
-- &after, &data);
-- if (type)
-- inf = children[i];
-- }
-
-- for (i = 0; !inf && (i < nchildren); i++)
-- inf = TryChildren(dpy, children[i], WM_STATE);
-
-- if (children) XFree((char *)children);
-- return inf;
--}
-diff -ruN xv-3.10a/xvgraf.c xv-3.10a-bugfixes/xvgraf.c
---- xv-3.10a/xvgraf.c 1994-12-22 14:34:42.000000000 -0800
-+++ xv-3.10a-bugfixes/xvgraf.c 2004-05-16 18:03:34.000000000 -0700
-@@ -1,4 +1,4 @@
--/*
-+/*
- * xvgraf.c - GRAF window handling functions
- *
- * callable functions:
-@@ -88,7 +88,7 @@
- gp->win = XCreateSimpleWindow(theDisp, parent, x,y, GWIDE, GHIGH, 1, fg,bg);
- if (!gp->win) FatalError("can't create graph (main) window");
-
-- gp->gwin = XCreateSimpleWindow(theDisp, gp->win, 2, GHIGH-132,
-+ gp->gwin = XCreateSimpleWindow(theDisp, gp->win, 2, GHIGH-132,
- 128, 128, 1, fg,bg);
- if (!gp->gwin) FatalError("can't create graph (sub) window");
-
-@@ -96,7 +96,7 @@
- BTCreate(&gp->butts[i], gp->win, GWIDE-GBWIDE-2, 1+i * (GBHIGH + 1),
- GBWIDE, GBHIGH, (char *) NULL, fg, bg, hicol, locol);
- gp->butts[i].pix = gfbpix[i];
-- gp->butts[i].pw = PW;
-+ gp->butts[i].pw = PW;
- gp->butts[i].ph = PH;
- }
-
-@@ -132,7 +132,7 @@
-
- gp->gammamode = 0; gp->gamma = 1.0;
- }
--
-+
-
- /***************************************************/
- void RedrawGraf(gp, gwin)
-@@ -148,7 +148,7 @@
- else {
- Draw3dRect(gp->win, 0,0, GWIDE-1, GHIGH-1, R3D_OUT, 1, hicol, locol,
- gp->bg);
--
-+
- XSetForeground(theDisp, theGC, gp->fg);
- XSetBackground(theDisp, theGC, gp->bg);
- DrawString(gp->win, 2, 1+ASCENT, gp->str);
-@@ -165,7 +165,7 @@
- {
- int i,x,y;
- XPoint pts[129], *pt;
--
-+
-
- if (gp->entergamma) {
- char *str1 = "Enter gamma";
-@@ -181,15 +181,15 @@
- x = 10 + StringWidth(str2) + 8;
- y = 30 + ASCENT + CHIGH + 3;
- i = StringWidth(gp->gvstr);
-- if (gp->entergamma < 0 && strlen(gp->gvstr)) {
-+ if (gp->entergamma < 0 && strlen(gp->gvstr)) {
- /* show string highlited */
- XFillRectangle(theDisp, gp->gwin, theGC, x-1, y-ASCENT-1,
- (u_int) i+2, (u_int) CHIGH+2);
- XSetForeground(theDisp, theGC, gp->bg);
- }
-- else
-+ else
- XDrawLine(theDisp, gp->gwin, theGC, x+i, y-ASCENT, x+i, y+DESCENT);
--
-+
- DrawString(gp->gwin, x,y, gp->gvstr);
-
- return;
-@@ -267,7 +267,7 @@
- if (i<N_GFB) { /* found one */
- if (BTTrack(bp)) { /* it was selected */
- switch (i) {
-- case GFB_SPLINE:
-+ case GFB_SPLINE:
- case GFB_LINE:
- gp->gammamode = 0;
-
-@@ -312,7 +312,7 @@
- if (gp->nhands < MAX_GHANDS) {
- /* find largest x-gap in handles, put new handle in mid */
- int lgap, lpos, x, y;
--
-+
- lgap = gp->hands[1].x - gp->hands[0].x;
- lpos = 1;
- for (j=1; j<gp->nhands-1; j++)
-@@ -320,11 +320,11 @@
- lgap = gp->hands[j+1].x - gp->hands[j].x;
- lpos = j+1;
- }
--
-+
- /* open up position in hands[] array */
-- xvbcopy((char *) &gp->hands[lpos], (char *) &gp->hands[lpos+1],
-+ xvbcopy((char *) &gp->hands[lpos], (char *) &gp->hands[lpos+1],
- (gp->nhands - lpos) * sizeof(XPoint));
--
-+
- x = gp->hands[lpos-1].x + lgap/2;
- y = gp->func[x];
- gp->hands[lpos].x = x;
-@@ -343,7 +343,7 @@
- BTSetActive(&gp->butts[GFB_DELH], 1);
- }
- break;
--
-+
- case GFB_DELH:
- if (gp->nhands > 2) {
- /* find (middle) point whose x-distance to previous
-@@ -361,9 +361,9 @@
- mdist = dist; mpos = j;
- }
- }
--
-+
- /* delete position 'mpos' in hands[] array */
-- xvbcopy((char *) &gp->hands[mpos+1], (char *) &gp->hands[mpos],
-+ xvbcopy((char *) &gp->hands[mpos+1], (char *) &gp->hands[mpos],
- (gp->nhands-mpos-1) * sizeof(XPoint));
-
- gp->nhands--;
-@@ -408,16 +408,16 @@
-
- /* keep original mouse position in 'mx,my', and warp mouse to center
- of screen */
-- grab = !XGrabPointer(theDisp, gp->gwin, False, 0, GrabModeAsync,
-+ grab = !XGrabPointer(theDisp, gp->gwin, False, 0, GrabModeAsync,
- GrabModeAsync, None, inviso, (Time) CurrentTime);
-- XWarpPointer(theDisp, None, rootW, 0,0,0,0,
-+ XWarpPointer(theDisp, None, rootW, 0,0,0,0,
- (int) dispWIDE/2, (int) dispHIGH/2);
-
-- origx = dispWIDE/2; origy = dispHIGH/2;
-+ origx = dispWIDE/2; origy = dispHIGH/2;
- orighx = gp->hands[h].x; orighy = gp->hands[h].y;
-
- gp->gammamode = 0;
-- offx = gp->hands[h].x - origx;
-+ offx = gp->hands[h].x - origx;
- offy = gp->hands[h].y - origy;
-
- vertonly = (h==0 || h==(gp->nhands-1));
-@@ -434,7 +434,7 @@
-
- dx = x - origx; dy = origy - y; /* flip y axis */
-
-- /* new (virt) position of handle is (desired)
-+ /* new (virt) position of handle is (desired)
- orighx + dx, orighy + dy */
-
- if (!vertonly) { /* keep this handle between its neighbors */
-@@ -448,7 +448,7 @@
- if (newx != gp->hands[h].x || newy != gp->hands[h].y) {
- /* this handle has moved... */
- XSetForeground(theDisp, theGC, gp->bg);
-- XFillRectangle(theDisp, gp->gwin, theGC,
-+ XFillRectangle(theDisp, gp->gwin, theGC,
- (gp->hands[h].x/2)-3, ((255-gp->hands[h].y)/2)-3, 7,7);
-
- gp->hands[h].x = newx; gp->hands[h].y = newy;
-@@ -464,7 +464,7 @@
- }
-
- drawHandPos(gp, -1);
-- XWarpPointer(theDisp, None, gp->gwin, 0,0,0,0,
-+ XWarpPointer(theDisp, None, gp->gwin, 0,0,0,0,
- gp->hands[h].x/2, (255-gp->hands[h].y)/2);
- if (grab) XUngrabPointer(theDisp, (Time) CurrentTime);
- }
-@@ -481,9 +481,9 @@
- {
- int w;
- char *tstr = "888,888";
--
-+
- /* if hnum < 0, clears the text area */
--
-+
- XSetFont(theDisp, theGC, monofont);
- w = XTextWidth(monofinfo, tstr, (int) strlen(tstr));
-
-@@ -492,12 +492,12 @@
-
- XSetForeground(theDisp, theGC, gp->fg);
- XSetBackground(theDisp, theGC, gp->bg);
-- XDrawImageString(theDisp, gp->win, theGC, 130-w, 1+ASCENT,
-+ XDrawImageString(theDisp, gp->win, theGC, 130-w, 1+ASCENT,
- str, (int) strlen(str));
-
- XSetFont(theDisp, theGC, mfont);
- }
--
-+
-
- /***************************************************/
- int GrafKey(gp,str)
-@@ -518,7 +518,7 @@
- }
-
- while (*str) {
-- if (gp->entergamma == -1 &&
-+ if (gp->entergamma == -1 &&
- (*str != '\012' && *str != '\015' && *str != '\033')) {
- gp->entergamma = 1;
- gp->gvstr[0] = '\0';
-@@ -529,7 +529,7 @@
- len = strlen(gp->gvstr);
-
- if (*str>= '0' && *str <= '9') {
-- if (len < GVMAX) {
-+ if (len < GVMAX) {
- gp->gvstr[len++] = *str;
- gp->gvstr[len] = '\0';
- ok = 1;
-@@ -607,18 +607,18 @@
-
- /* do sanity check. (x-coords must be sorted (strictly increasing)) */
-
-- for (i=0; i<gp->nhands; i++) {
-- RANGE(gp->hands[i].x, 0, 255);
-+ for (i=0; i<gp->nhands; i++) {
-+ RANGE(gp->hands[i].x, 0, 255);
- RANGE(gp->hands[i].y, 0, 255);
- }
-
- gp->hands[0].x = 0; gp->hands[gp->nhands-1].x = 255;
- for (i=1; i<gp->nhands-1; i++) {
- if (gp->hands[i].x < i) gp->hands[i].x = i;
-- if (gp->hands[i].x > 256-gp->nhands+i)
-+ if (gp->hands[i].x > 256-gp->nhands+i)
- gp->hands[i].x = 256-gp->nhands+i;
-
-- if (gp->hands[i].x <= gp->hands[i-1].x)
-+ if (gp->hands[i].x <= gp->hands[i-1].x)
- gp->hands[i].x = gp->hands[i-1].x + 1;
- }
-
-@@ -647,17 +647,17 @@
- else { /* gp->gamma == 0.0 */
- for (i=0; i<256; i++) gp->func[i] = 0;
- }
--
--
-+
-+
- for (i=0; i<gp->nhands; i++) {
- gp->hands[i].y = gp->func[gp->hands[i].x];
- }
- }
--
-+
- else if (!gp->spline) { /* do linear interpolation */
- int y,x1,y1,x2,y2;
- double yd;
--
-+
- for (i=0; i<gp->nhands-1; i++) {
- x1 = gp->hands[ i ].x; y1 = gp->hands[ i ].y;
- x2 = gp->hands[i+1].x; y2 = gp->hands[i+1].y;
-@@ -676,12 +676,12 @@
- double yf[MAX_GHANDS];
- double yd;
-
-- for (i=0; i<gp->nhands; i++) {
-+ for (i=0; i<gp->nhands; i++) {
- x[i] = gp->hands[i].x; y[i] = gp->hands[i].y;
- }
--
-+
- InitSpline(x, y, gp->nhands, yf);
--
-+
- for (i=0; i<256; i++) {
- yd = EvalSpline(x, y, yf, gp->nhands, (double) i);
- j = (int) floor(yd + 0.5);
-@@ -750,7 +750,7 @@
- if (!str) return 1; /* NULL strings don't parse well! */
-
- /* first, strip all pesky whitespace from str */
-- for (sp=str, dp=tstr; *sp; sp++)
-+ for (sp=str, dp=tstr; *sp; sp++)
- if (*sp > ' ') { *dp = *sp; dp++; }
- *dp = '\0';
-
-@@ -764,7 +764,7 @@
- }
- else return 1;
- }
--
-+
- /* read Spline, or Line (S/L) character */
- sp = tstr;
- if (*sp == 'S' || *sp == 's') spline = 1;
-@@ -784,7 +784,7 @@
- while (*sp && *sp != ':') {*dp = *sp; dp++; sp++; }
- *dp++ = '\0';
- if (sscanf(tstr1,"%d,%d",&x, &y) != 2) return 1;
-- if (x < 0 || x > 255 ||
-+ if (x < 0 || x > 255 ||
- y < 0 || y > 255) return 1; /* out of range */
- coords[i].x = x; coords[i].y = y;
- }
-@@ -837,7 +837,7 @@
- IFSET(gp->gamma, gsp->gamma);
- IFSET(gp->nhands, gsp->nhands);
-
-- if (strcmp(gp->gvstr, gsp->gvstr))
-+ if (strcmp(gp->gvstr, gsp->gvstr))
- { strcpy(gp->gvstr, gsp->gvstr); rv++; }
-
- for (i=0; i<gp->nhands; i++) {
-@@ -880,7 +880,7 @@
- sig = ((double) x[i]-x[i-1]) / ((double) x[i+1] - x[i-1]);
- p = sig * y2[i-1] + 2.0;
- y2[i] = (sig-1.0) / p;
-- u[i] = (((double) y[i+1]-y[i]) / (x[i+1]-x[i])) -
-+ u[i] = (((double) y[i+1]-y[i]) / (x[i+1]-x[i])) -
- (((double) y[i]-y[i-1]) / (x[i]-x[i-1]));
- u[i] = (6.0 * u[i]/(x[i+1]-x[i-1]) - sig*u[i-1]) / p;
- }
-@@ -912,9 +912,9 @@
- if (h==0.0) FatalError("bad xvalues in splint\n");
- a = (xa[khi]-x)/h;
- b = (x-xa[klo])/h;
-- return (a*ya[klo] + b*ya[khi] + ((a*a*a-a)*y2a[klo] +(b*b*b-b)*y2a[khi])
-+ return (a*ya[klo] + b*ya[khi] + ((a*a*a-a)*y2a[klo] +(b*b*b-b)*y2a[khi])
- * (h*h) / 6.0);
- }
--
-+
-
-
-diff -ruN xv-3.10a/xviff.c xv-3.10a-bugfixes/xviff.c
---- xv-3.10a/xviff.c 1995-01-13 11:54:54.000000000 -0800
-+++ xv-3.10a-bugfixes/xviff.c 2005-04-03 11:57:56.000000000 -0700
-@@ -39,7 +39,7 @@
-
- static long filesize;
-
--static int readID PARM((FILE *, char *));
-+/* static int readID PARM((FILE *, char *)); DOES NOT EXIST */
- static int iffError PARM((char *, char *));
- static void decomprle PARM((byte *, byte *, long, long));
- static unsigned int iff_getword PARM((byte *));
-@@ -65,16 +65,16 @@
- /*******************************************/
- {
- /* returns '1' on success */
--
-+
- register byte bitmsk, rval, gval, bval;
- register long col, colbit;
- FILE *fp;
- int rv;
-- int BMHDok, CMAPok, CAMGok, BODYok;
-+ int BMHDok, CMAPok, CAMGok;
- int bmhd_width, bmhd_height, bmhd_bitplanes, bmhd_transcol;
- int i, j, k, lineskip, colors, fmt;
- byte bmhd_masking, bmhd_compression;
-- long chunkLen, camg_viewmode, decomp_bufsize;
-+ long chunkLen, camg_viewmode;
- byte *databuf, *dataptr, *cmapptr, *picptr, *pic, *bodyptr;
- byte *workptr, *workptr2, *workptr3, *decomp_mem;
-
-@@ -138,6 +138,7 @@
- BODY chunk was found or dataptr ran over end of file */
-
- while ((rv<0) && (dataptr < (databuf + filesize))) {
-+ int npixels = 0;
- chunkLen = (iff_getlong(dataptr + 4) + 1) & 0xfffffffe; /* make even */
-
- if (strncmp((char *) dataptr, "BMHD", (size_t) 4)==0) { /* BMHD chunk? */
-@@ -149,25 +150,30 @@
- bmhd_transcol = iff_getword(dataptr + 8 + 12);
- BMHDok = 1; /* got BMHD */
- dataptr += 8 + chunkLen; /* to next chunk */
-+
-+ npixels = bmhd_width * bmhd_height; /* 65535*65535 max */
-+ if (bmhd_width <= 0 || bmhd_height <= 0
-+ || npixels/bmhd_width != bmhd_height)
-+ return (iffError(bname, "xviff: image dimensions out of range"));
- }
-
-
- else if (strncmp((char *) dataptr, "CMAP", (size_t) 4)==0) { /* CMAP ? */
- cmapptr = dataptr + 8;
- colors = chunkLen / 3; /* calc no of colors */
--
-+
- /* copy colors to color map */
- for (i=0; i < colors; i++) {
- pinfo->r[i] = *cmapptr++;
- pinfo->g[i] = *cmapptr++;
- pinfo->b[i] = *cmapptr++;
- }
--
-+
- CMAPok = 1; /* got CMAP */
- dataptr += 8 + chunkLen; /* to next chunk */
- }
-
--
-+
- else if (strncmp((char *) dataptr, "CAMG", (size_t) 4)==0) { /* CAMG ? */
- camg_viewmode = iff_getlong(dataptr + 8); /* get viewmodes */
- CAMGok = 1; /* got CAMG */
-@@ -176,19 +182,28 @@
-
-
- else if (strncmp((char *) dataptr, "BODY", (size_t) 4)==0) { /* BODY ? */
-+ int byte_width = (((bmhd_width + 15) >> 4) << 1); /* 8192 max */
-+
- bodyptr = dataptr + 8; /* -> BODY data */
--
-+
- if (BMHDok) { /* BMHD found? */
- /* if BODY is compressed, allocate buffer for decrunched BODY and
- decompress it (run length encoding) */
--
-+
- if (bmhd_compression == 1) {
- /* calc size of decrunch buffer - (size of the actual picture
- decompressed in interleaved Amiga bitplane format) */
-
-- decomp_bufsize = (((bmhd_width + 15) >> 4) << 1)
-- * bmhd_height * bmhd_bitplanes;
--
-+ int bytes_per_bitplane = byte_width * bmhd_height; /* 536862720 max */
-+ long decomp_bufsize = bytes_per_bitplane * bmhd_bitplanes;
-+
-+ if (byte_width <= 0 || bmhd_height <= 0 ||
-+ bytes_per_bitplane/byte_width != bmhd_height ||
-+ decomp_bufsize/bytes_per_bitplane != bmhd_bitplanes)
-+ {
-+ return (iffError(bname, "xviff: image dimensions out of range"));
-+ }
-+
- if ((decomp_mem = (byte *)malloc((size_t) decomp_bufsize)) != NULL) {
- decomprle(dataptr + 8, decomp_mem, chunkLen, decomp_bufsize);
- bodyptr = decomp_mem; /* -> uncompressed BODY */
-@@ -200,12 +215,13 @@
- FatalError("xviff: cannot malloc() decrunch buffer");
- }
- }
--
-+
-
- /* the following determines the type of the ILBM file.
- it's either NORMAL, EHB, HAM, HAM8 or 24BIT */
--
-+
- fmt = ILBM_NORMAL; /* assume normal ILBM */
-+ /* FIXME: does ILBM_NORMAL really support up to 255 bitplanes? */
-
- if (bmhd_bitplanes == 24) fmt = ILBM_24BIT;
- else if (bmhd_bitplanes == 8) {
-@@ -216,7 +232,7 @@
- if (camg_viewmode & 0x80) fmt = ILBM_EHB;
- else if (camg_viewmode & 0x800) fmt = ILBM_HAM;
- }
--
-+
-
- if (DEBUG) {
- fprintf(stderr, "LoadIFF: %s %dx%d, planes=%d (%d cols), comp=%d\n",
-@@ -225,9 +241,9 @@
- (fmt==ILBM_HAM8) ? "HAM8 ILBM" :
- (fmt==ILBM_EHB) ? "EHB ILBM" :
- (fmt==ILBM_24BIT) ? "24BIT ILBM" : "unknown ILBM",
-- bmhd_width, bmhd_height, bmhd_bitplanes,
-+ bmhd_width, bmhd_height, bmhd_bitplanes,
- 1<<bmhd_bitplanes, bmhd_compression);
-- }
-+ }
-
-
- if ((fmt==ILBM_NORMAL) || (fmt==ILBM_EHB) || (fmt==ILBM_HAM)) {
-@@ -248,8 +264,14 @@
-
-
- if ((fmt == ILBM_HAM) || (fmt == ILBM_HAM8) || (fmt == ILBM_24BIT)) {
-- if ((picptr=(byte *) malloc((size_t)bmhd_width*bmhd_height*3))
-- ==NULL) {
-+ int bufsize = 3 * npixels;
-+
-+ if (bufsize/3 != npixels) {
-+ if (databuf) free(databuf);
-+ if (decomp_mem) free(decomp_mem);
-+ return (iffError(bname, "xviff: image dimensions out of range"));
-+ }
-+ if ((picptr=(byte *) malloc((size_t) bufsize)) == NULL) {
- if (databuf) free(databuf);
- if (decomp_mem) free(decomp_mem);
- return (iffError(bname, "xviff: no memory for decoded picture"));
-@@ -258,8 +280,8 @@
- else {
- pic = picptr;
- workptr = bodyptr;
-- lineskip = ((bmhd_width + 15) >> 4) << 1;
--
-+ lineskip = byte_width;
-+
- for (i=0; i<bmhd_height; i++) {
- bitmsk = 0x80;
- workptr2 = workptr;
-@@ -338,28 +360,28 @@
-
-
- else if ((fmt == ILBM_NORMAL) || (fmt == ILBM_EHB)) {
-- if ((picptr = (byte *) malloc((size_t) bmhd_width * bmhd_height))
-- == NULL) {
-+ /* if bmhd_width and bmhd_height are OK (checked in BMHD block
-+ * above; guaranteed by BMHDok), then npixels is OK, too */
-+ if ((picptr = (byte *) malloc((size_t) npixels)) == NULL) {
- if (databuf) free(databuf);
- if (decomp_mem) free(decomp_mem);
- return (iffError(bname, "xviff: no memory for decoded picture"));
- }
--
-+
- else if (fmt == ILBM_EHB) {
- if (DEBUG) fprintf(stderr,"Doubling CMAP for EHB mode\n");
--
-+
- for (i=0; i<32; i++) {
- pinfo->r[i + colors] = pinfo->r[i] >> 1;
- pinfo->g[i + colors] = pinfo->g[i] >> 1;
- pinfo->b[i + colors] = pinfo->b[i] >> 1;
- }
- }
--
-+
- pic = picptr; /* ptr to chunky buffer */
- workptr = bodyptr; /* ptr to uncmp'd pic, planar format */
--
-- lineskip = ((bmhd_width + 15) >> 4) << 1; /* # of bytes/line */
--
-+ lineskip = byte_width;
-+
- for (i=0; i<bmhd_height; i++) {
- bitmsk = 0x80; /* left most bit (mask) */
- workptr2 = workptr; /* work ptr to source */
-@@ -367,14 +389,14 @@
- col = 0;
- colbit = 1;
- workptr3 = workptr2; /* ptr to byte in 1st pln */
--
-+
- for (k=0; k<bmhd_bitplanes; k++) {
- if (*workptr3 & bitmsk) /* if bit set in this pln */
- col = col + colbit; /* add bit to chunky byte */
- workptr3 += lineskip; /* go to next line */
- colbit <<= 1; /* shift color bit */
- }
--
-+
- *pic++ = col; /* write to chunky buffer */
- bitmsk = bitmsk >> 1; /* shift mask to next bit */
- if (bitmsk == 0) { /* if mask is zero */
-@@ -382,7 +404,7 @@
- workptr2++; /* mv ptr to next byte */
- }
- } /* for j ... */
--
-+
- workptr += lineskip * bmhd_bitplanes; /* to next line */
- } /* for i ... */
-
-@@ -399,7 +421,7 @@
- pinfo->colType = F_FULLCOLOR;
- pinfo->frmType = -1;
-
-- sprintf(pinfo->fullInfo, "%s (%ld bytes)",
-+ sprintf(pinfo->fullInfo, "%s (%ld bytes)",
- (fmt==ILBM_NORMAL) ? "IFF ILBM" :
- (fmt==ILBM_HAM) ? "HAM ILBM" :
- (fmt==ILBM_HAM8) ? "HAM8 ILBM" :
-@@ -414,7 +436,8 @@
- } /* if BMHDok */
-
- else rv = 0; /* didn't get BMHD header */
-- }
-+
-+ } /* "BODY" chunk */
-
- else {
- if (DEBUG)
-@@ -440,10 +463,10 @@
-
- /**************************************************************************
- void decomprle(source, destination, source length, buffer size)
--
-+
- Decompress run-length encoded data from source to destination. Terminates
- when source is decoded completely or destination buffer is full.
--
-+
- The decruncher is as optimized as I could make it, without risking
- safety in case of corrupt BODY chunks.
- ***************************************************************************/
-@@ -455,12 +478,12 @@
- register long slen, dlen;
- {
- register byte codeByte, dataByte;
--
-+
- while ((slen > 0) && (dlen > 0)) {
--
-+
- /* read control byte */
- codeByte = *sptr++;
--
-+
- if (codeByte < 0x80) {
- codeByte++;
- if ((slen > (long) codeByte) && (dlen >= (long) codeByte)) {
-diff -ruN xv-3.10a/xvimage.c xv-3.10a-bugfixes/xvimage.c
---- xv-3.10a/xvimage.c 1995-01-13 16:11:36.000000000 -0800
-+++ xv-3.10a-bugfixes/xvimage.c 2005-03-31 07:23:39.000000000 -0800
-@@ -34,7 +34,7 @@
- static void do_pan_calc PARM((int, int, int *, int *));
- static void crop1 PARM((int, int, int, int, int));
- static int doAutoCrop24 PARM((void));
--static void floydDitherize1 PARM((XImage *, byte *, int, int, int,
-+static void floydDitherize1 PARM((XImage *, byte *, int, int, int,
- byte *, byte *,byte *));
- static int highbit PARM((unsigned long));
-
-@@ -74,7 +74,7 @@
- GenerateEpic(w,h);
- CreateXImage();
- }
--
-+
-
-
- /********************************************/
-@@ -90,15 +90,15 @@
-
- cp = cpic;
- bperpix = (picType == PIC8) ? 1 : 3;
--
-+
- for (i=0; i<cHIGH; i++) {
- if ((i&63)==0) WaitCursor();
- pp = pic + (i+cYOFF) * (pWIDE*bperpix) + (cXOFF * bperpix);
-- for (j=0; j<cWIDE*bperpix; j++)
-+ for (j=0; j<cWIDE*bperpix; j++)
- *cp++ = *pp++;
- }
- }
--
-+
-
-
- /***********************************/
-@@ -112,10 +112,10 @@
- clptr = NULL; cxarrp = NULL; cy = 0; /* shut up compiler */
-
- SetISTR(ISTR_EXPAND, "%.5g%% x %.5g%% (%d x %d)",
-- 100.0 * ((float) w) / cWIDE,
-+ 100.0 * ((float) w) / cWIDE,
- 100.0 * ((float) h) / cHIGH, w, h);
-
-- if (DEBUG)
-+ if (DEBUG)
- fprintf(stderr,"GenerateEpic(%d,%d) eSIZE=%d,%d cSIZE=%d,%d epicode=%d\n",
- w,h,eWIDE,eHIGH,cWIDE,cHIGH, epicMode);
-
-@@ -124,7 +124,7 @@
- eWIDE = w; eHIGH = h;
-
-
-- if (epicMode == EM_SMOOTH) {
-+ if (epicMode == EM_SMOOTH) {
- if (picType == PIC8) {
- epic = SmoothResize(cpic, cWIDE, cHIGH, eWIDE, eHIGH,
- rMap,gMap,bMap, rdisp,gdisp,bdisp, numcols);
-@@ -143,7 +143,7 @@
-
-
- /* generate a 'raw' epic, as we'll need it for ColorDither if EM_DITH */
--
-+
- if (eWIDE==cWIDE && eHIGH==cHIGH) { /* 1:1 expansion. point epic at cpic */
- epic = cpic;
- }
-@@ -163,13 +163,13 @@
- /* the scaling routine. not really all that scary after all... */
-
- /* OPTIMIZATON: Malloc an eWIDE array of ints which will hold the
-- values of the equation px = (pWIDE * ex) / eWIDE. Faster than doing
-+ values of the equation px = (pWIDE * ex) / eWIDE. Faster than doing
- a mul and a div for every point in picture */
-
- cxarr = (int *) malloc(eWIDE * sizeof(int));
- if (!cxarr) FatalError("unable to allocate cxarr");
-
-- for (ex=0; ex<eWIDE; ex++)
-+ for (ex=0; ex<eWIDE; ex++)
- cxarr[ex] = bperpix * ((cWIDE * ex) / eWIDE);
-
- elptr = epptr = epic;
-@@ -182,7 +182,7 @@
- clptr = cpic + (cy * cWIDE * bperpix);
-
- if (bperpix == 1) {
-- for (ex=0, cxarrp = cxarr; ex<eWIDE; ex++, epptr++)
-+ for (ex=0, cxarrp = cxarr; ex<eWIDE; ex++, epptr++)
- *epptr = clptr[*cxarrp++];
- }
- else {
-@@ -190,7 +190,7 @@
-
- for (ex=0, cxarrp = cxarr; ex<eWIDE; ex++,cxarrp++) {
- cp = clptr + *cxarrp;
-- for (j=0; j<bperpix; j++)
-+ for (j=0; j<bperpix; j++)
- *epptr++ = *cp++;
- }
- }
-@@ -203,7 +203,7 @@
- if (picType == PIC8 && epicMode == EM_DITH) {
- byte *tmp;
-
-- tmp = DoColorDither(NULL, epic, eWIDE, eHIGH, rMap,gMap,bMap,
-+ tmp = DoColorDither(NULL, epic, eWIDE, eHIGH, rMap,gMap,bMap,
- rdisp,gdisp,bdisp, numcols);
- if (tmp) { /* success */
- FreeEpic();
-@@ -214,7 +214,7 @@
- }
- }
- }
--
-+
-
-
- /***********************************/
-@@ -233,7 +233,7 @@
- static void do_zoom(mx,my)
- int mx,my;
- {
-- int i,w,h,x,y,x2,y2;
-+ int i;
- int rx,ry,rx2,ry2, orx, ory, orw, orh;
- int px,py,pw,ph,opx,opy,opw,oph,m;
- Window rW, cW; unsigned int mask; int rtx, rty;
-@@ -254,10 +254,10 @@
- while (1) {
- if (!XQueryPointer(theDisp,mainW,&rW,&cW,&rtx,&rty,
- &mx,&my,&mask)) continue;
--
-+
- if (!(mask & ControlMask)) break;
- if (!(mask & Button1Mask)) break; /* button released */
--
-+
- compute_zoom_rect(mx, my, &px, &py, &pw, &ph);
- if (px!=opx || py!=opy) {
- XDrawRectangle(theDisp,mainW,theGC, orx,ory, (u_int)orw, (u_int)orh);
-@@ -283,7 +283,7 @@
- XSetPlaneMask(theDisp, theGC, AllPlanes);
- return;
- }
--
-+
-
- for (i=0; i<4; i++) {
- XDrawRectangle(theDisp, mainW, theGC, orx, ory, (u_int) orw, (u_int) orh);
-@@ -297,7 +297,7 @@
- /* if rectangle is *completely* outside epic, don't zoom */
- if (orx+orw<0 || ory+orh<0 || orx>=eWIDE || ory>=eHIGH) return;
-
--
-+
- crop1(opx, opy, opw, oph, DO_ZOOM);
- }
-
-@@ -306,15 +306,15 @@
- static void compute_zoom_rect(x, y, px, py, pw, ph)
- int x, y, *px, *py, *pw, *ph;
- {
-- /* given a mouse pos (in epic coords), return x,y,w,h PIC coords for
-- a 'zoom in by 2x' rectangle to be tracked. The rectangle stays
-+ /* given a mouse pos (in epic coords), return x,y,w,h PIC coords for
-+ a 'zoom in by 2x' rectangle to be tracked. The rectangle stays
- completely within 'pic' boundaries, and moves in 'pic' increments */
-
- CoordE2P(x, y, px, py);
-- *pw = (cWIDE+1)/2;
-+ *pw = (cWIDE+1)/2;
- *ph = (cHIGH+1)/2;
-
-- *px = *px - (*pw)/2;
-+ *px = *px - (*pw)/2;
- *py = *py - (*ph)/2;
-
- RANGE(*px, 0, pWIDE - *pw);
-@@ -327,7 +327,7 @@
- {
- int x,y,w,h, x2,y2, ex,ey,ew,eh;
-
-- /* compute a cropping rectangle (in pic coordinates) that's twice
-+ /* compute a cropping rectangle (in pic coordinates) that's twice
- the size of eWIDE,eHIGH, centered around eWIDE/2, eHIGH/2, but no
- larger than pWIDE,PHIGH */
-
-@@ -362,7 +362,7 @@
- int i, ox,oy,offx,offy, rw,rh, px, py, dx, dy,m;
- Window rW, cW; unsigned int mask; int rx, ry;
-
-- offx = ox = mx;
-+ offx = ox = mx;
- offy = oy = my;
- rw = eWIDE-1; rh = eHIGH-1;
- m = 0;
-@@ -374,50 +374,50 @@
-
- /* track until Button2 is released */
- while (1) {
-- if (!XQueryPointer(theDisp, mainW, &rW, &cW, &rx, &ry,
-+ if (!XQueryPointer(theDisp, mainW, &rW, &cW, &rx, &ry,
- &mx, &my, &mask)) continue;
- if (!(mask & ControlMask)) break; /* cancelled */
- if (!(mask & Button2Mask)) break; /* button released */
--
-+
- if (mask & ShiftMask) { /* constrain mx,my to horiz or vertical */
- if (abs(mx-offx) > abs(my-offy)) my = offy;
- else mx = offx;
- }
--
-+
- do_pan_calc(offx, offy, &mx, &my);
--
-+
- if (mx!=ox || my!=oy) {
-- XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
-+ XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
- (u_int) rw, (u_int) rh);
-- XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
-+ XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
- (u_int) rw, (u_int) rh);
- ox = mx; oy = my;
- }
- else {
-- XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
-+ XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
- (u_int) rw, (u_int) rh);
- m = (m+1)&7;
- XSetPlaneMask(theDisp, theGC, xorMasks[m]);
-- XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
-+ XDrawRectangle(theDisp, mainW, theGC, ox-offx, oy-offy,
- (u_int) rw, (u_int) rh);
- XFlush(theDisp);
- Timer(100);
- }
- }
--
-+
- mx = ox; my = oy; /* in case mx,my changed on button release */
-
- if (!(mask & ControlMask)) { /* cancelled */
-- XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
-+ XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
- (u_int) rw, (u_int) rh);
- XSetFunction(theDisp, theGC, GXcopy);
- XSetPlaneMask(theDisp, theGC, AllPlanes);
- return;
- }
--
-+
-
- for (i=0; i<4; i++) {
-- XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
-+ XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
- (u_int) rw, (u_int) rh);
- XFlush(theDisp);
- Timer(100);
-@@ -430,7 +430,7 @@
- dx = px - cXOFF; dy = py - cYOFF;
-
- if (dx==0 && dy==0) { /* didn't pan anywhere */
-- XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
-+ XDrawRectangle(theDisp, mainW, theGC, mx-offx, my-offy,
- (u_int) rw, (u_int) rh);
- XSetFunction(theDisp, theGC, GXcopy);
- XSetPlaneMask(theDisp, theGC, AllPlanes);
-@@ -485,7 +485,7 @@
- /***********************************/
- void Crop()
- {
-- int i, x, y, w, h;
-+ int x, y, w, h;
-
- if (!HaveSelection()) return;
-
-@@ -499,8 +499,7 @@
- static void crop1(x,y,w,h,zm)
- int x,y,w,h,zm;
- {
-- int i,j,oldew,oldeh,oldcx,oldcy;
-- byte *cp, *pp;
-+ int oldew,oldeh,oldcx,oldcy;
-
- oldcx = cXOFF; oldcy = cYOFF;
- oldew = eWIDE; oldeh = eHIGH;
-@@ -529,7 +528,7 @@
- if (cpic == pic) return; /* not cropped */
-
- BTSetActive(&but[BUNCROP],0);
--
-+
- if (epicMode == EM_SMOOTH) { /* turn off smoothing */
- epicMode = EM_RAW; SetEpicMode();
- }
-@@ -538,7 +537,7 @@
- FreeEpic();
- if (cpic && cpic != pic) free(cpic);
- cpic = NULL;
--
-+
-
- w = (pWIDE * eWIDE) / cWIDE; h = (pHIGH * eHIGH) / cHIGH;
- if (w>maxWIDE || h>maxHIGH) {
-@@ -566,7 +565,7 @@
- WUnCrop();
- SetCropString();
- }
--
-+
-
- /***********************************/
- void AutoCrop()
-@@ -583,7 +582,7 @@
- WCrop(eWIDE, eHIGH, cXOFF-oldcx, cYOFF-oldcy);
- }
- }
--
-+
- SetCursors(-1);
- }
-
-@@ -650,7 +649,7 @@
-
- /* do the actual cropping */
- if (cleft || ctop || cbot || cright) {
-- DoCrop(cXOFF+cleft, cYOFF+ctop,
-+ DoCrop(cXOFF+cleft, cYOFF+ctop,
- cWIDE-(cleft+cright), cHIGH-(ctop+cbot));
- return 1;
- }
-@@ -673,7 +672,7 @@
- # define NEIGHBOR 16 /* within 6% of neighboring pixels */
- # define MISSPCT 6 /* and up to 6% that don't match */
- # define inabsrange(a,n) ( (a) < n && (a) > -n )
--
-+
-
- if (cHIGH<3 || cWIDE<3) return 0;
-
-@@ -739,7 +738,7 @@
- while (cleft + 1 < cWIDE) { /* see if we can delete this line */
- oldr = bgR; oldg = bgG; oldb = bgB;
-
-- for (i=0, misses=0, cp1=cp; i<cHIGH && misses<maxmiss;
-+ for (i=0, misses=0, cp1=cp; i<cHIGH && misses<maxmiss;
- i++, cp1 += (cWIDE * 3)) {
- r=cp1[0]-bgR; g=cp1[1]-bgG; b=cp1[2]-bgB;
- R=cp1[0]-oldr; G=cp1[1]-oldg; B=cp1[2]-oldb;
-@@ -763,7 +762,7 @@
- while (cleft + cright + 1 < cWIDE) { /* see if we can delete this line */
- oldr = bgR; oldg = bgG; oldb = bgB;
-
-- for (i=0, misses=0, cp1=cp; i<cHIGH && misses<maxmiss;
-+ for (i=0, misses=0, cp1=cp; i<cHIGH && misses<maxmiss;
- i++, cp1 += (cWIDE*3)) {
- r=cp1[0]-bgR; g=cp1[1]-bgG; b=cp1[2]-bgB;
- R=cp1[0]-oldr; G=cp1[1]-oldg; B=cp1[2]-oldb;
-@@ -784,8 +783,8 @@
- if (cleft || ctop || cbot || cright) {
- if (cWIDE - (cleft + cright) < 1 ||
- cHIGH - (ctop + cbot ) < 1) return 0; /* sanity check */
--
-- DoCrop(cXOFF+cleft, cYOFF+ctop,
-+
-+ DoCrop(cXOFF+cleft, cYOFF+ctop,
- cWIDE-(cleft+cright), cHIGH-(ctop+cbot));
- return 1;
- }
-@@ -802,7 +801,7 @@
- and sticks likely values into eWIDE,eHIGH, assuming you wanted to
- crop. epic is not regnerated (but is freed) */
-
-- int i, j, k, bperpix;
-+ int i, j, bperpix;
- byte *cp, *pp;
- double expw, exph;
-
-@@ -837,7 +836,7 @@
- else {
- /* at this point, we want to generate cpic, which will contain a
- cWIDE*cHIGH subsection of 'pic', top-left at cXOFF,cYOFF */
--
-+
- cpic = (byte *) malloc((size_t) (cWIDE * cHIGH * bperpix));
-
- if (cpic == NULL) {
-@@ -852,7 +851,7 @@
- cp = cpic;
- for (i=0; i<cHIGH; i++) {
- pp = pic + (i+cYOFF) * (pWIDE*bperpix) + (cXOFF * bperpix);
-- for (j=0; j<cWIDE*bperpix; j++)
-+ for (j=0; j<cWIDE*bperpix; j++)
- *cp++ = *pp++;
- }
- }
-@@ -861,7 +860,7 @@
- SetCropString();
- BTSetActive(&but[BUNCROP], (cpic!=pic));
-
-- eWIDE = (int) (cWIDE * expw);
-+ eWIDE = (int) (cWIDE * expw);
- eHIGH = (int) (cHIGH * exph);
-
- if (eWIDE>maxWIDE || eHIGH>maxHIGH) { /* make 'normal' size */
-@@ -869,7 +868,7 @@
- double r,wr,hr;
- wr = ((double) cWIDE) / maxWIDE;
- hr = ((double) cHIGH) / maxHIGH;
--
-+
- r = (wr>hr) ? wr : hr; /* r is the max(wr,hr) */
- eWIDE = (int) ((cWIDE / r) + 0.5);
- eHIGH = (int) ((cHIGH / r) + 0.5);
-@@ -906,12 +905,12 @@
- int dir;
- {
- int i;
--
-+
- /* dir=0: 90 degrees clockwise, else 90 degrees counter-clockwise */
- WaitCursor();
--
-+
- RotatePic(pic, picType, &pWIDE, &pHIGH, dir);
--
-+
- /* rotate clipped version and modify 'clip' coords */
- if (cpic != pic && cpic != NULL) {
- if (!dir) {
-@@ -928,7 +927,7 @@
- RotatePic(cpic, picType, &cWIDE, &cHIGH,dir);
- }
- else { cWIDE = pWIDE; cHIGH = pHIGH; }
--
-+
- /* rotate expanded version */
- if (epic != cpic && epic != NULL) {
- WaitCursor();
-@@ -940,7 +939,7 @@
- SetISTR(ISTR_RES,"%d x %d",pWIDE,pHIGH);
-
- SetISTR(ISTR_EXPAND, "%.5g%% x %.5g%% (%d x %d)",
-- 100.0 * ((float) eWIDE) / cWIDE,
-+ 100.0 * ((float) eWIDE) / cWIDE,
- 100.0 * ((float) eHIGH) / cHIGH, eWIDE, eHIGH);
- }
-
-@@ -951,7 +950,7 @@
- int *wp, *hp;
- int ptype, dir;
- {
-- /* rotates a w*h array of bytes 90 deg clockwise (dir=0)
-+ /* rotates a w*h array of bytes 90 deg clockwise (dir=0)
- or counter-clockwise (dir != 0). swaps w and h */
-
- byte *pic1, *pix1, *pix;
-@@ -960,7 +959,7 @@
-
- bperpix = (ptype == PIC8) ? 1 : 3;
-
-- w = *wp; h = *hp;
-+ w = *wp; h = *hp;
- pix1 = pic1 = (byte *) malloc((size_t) (w*h*bperpix));
- if (!pic1) FatalError("Not enough memory to rotate!");
-
-@@ -968,15 +967,15 @@
- if (dir==0) {
- for (i=0; i<w; i++) { /* CW */
- if (bperpix == 1) {
-- for (j=h-1, pix=pic+(h-1)*w + i; j>=0; j--, pix1++, pix-=w)
-+ for (j=h-1, pix=pic+(h-1)*w + i; j>=0; j--, pix1++, pix-=w)
- *pix1 = *pix;
- }
- else {
- int bperlin = w*bperpix;
- int k;
--
-- for (j=h-1, pix=pic+(h-1)*w*bperpix + i*bperpix;
-- j>=0; j--, pix -= bperlin)
-+
-+ for (j=h-1, pix=pic+(h-1)*w*bperpix + i*bperpix;
-+ j>=0; j--, pix -= bperlin)
- for (k=0; k<bperpix; k++) *pix1++ = pix[k];
- }
- }
-@@ -984,25 +983,25 @@
- else {
- for (i=w-1; i>=0; i--) { /* CCW */
- if (bperpix == 1) {
-- for (j=0, pix=pic+i; j<h; j++, pix1++, pix+=w)
-+ for (j=0, pix=pic+i; j<h; j++, pix1++, pix+=w)
- *pix1 = *pix;
- }
- else {
- int k;
- int bperlin = w*bperpix;
--
-- for (j=0, pix=pic+i*bperpix; j<h; j++, pix+=bperlin)
-+
-+ for (j=0, pix=pic+i*bperpix; j<h; j++, pix+=bperlin)
- for (k=0; k<bperpix; k++) *pix1++ = pix[k];
- }
- }
- }
--
--
-+
-+
- /* copy the rotated buffer into the original buffer */
- xvbcopy((char *) pic1, (char *) pic, (size_t) (w*h*bperpix));
--
-+
- free(pic1);
--
-+
- /* swap w and h */
- *wp = h; *hp = w;
- }
-@@ -1017,7 +1016,7 @@
- *
- * Note: flips pic, cpic, and epic. Doesn't touch Ximage, nor does it draw
- */
--
-+
- WaitCursor();
-
- if (HaveSelection()) { /* only flip selection region */
-@@ -1026,7 +1025,7 @@
- }
-
- FlipPic(pic, pWIDE, pHIGH, dir);
--
-+
- /* flip clipped version */
- if (cpic && cpic != pic) {
- WaitCursor();
-@@ -1048,21 +1047,21 @@
- int dir;
- {
- /* flips a w*h array of bytes horizontally (dir=0) or vertically (dir!=0) */
--
-+
- byte *plin;
- int i,j,k,l,bperpix,bperlin;
--
-+
- bperpix = (picType == PIC8) ? 1 : 3;
- bperlin = w * bperpix;
--
-+
- if (dir==0) { /* horizontal flip */
- byte *leftp, *rightp;
--
-+
- for (i=0; i<h; i++) {
- plin = pic + i*bperlin;
- leftp = plin;
- rightp = plin + (w-1)*bperpix;
--
-+
- for (j=0; j<w/2; j++, rightp -= (2*bperpix)) {
- for (l=0; l<bperpix; l++, leftp++, rightp++) {
- k = *leftp; *leftp = *rightp; *rightp = k;
-@@ -1070,14 +1069,14 @@
- }
- }
- }
--
-+
- else { /* vertical flip */
- byte *topp, *botp;
--
-+
- for (i=0; i<w; i++) {
- topp = pic + i*bperpix;
- botp = pic + (h-1)*bperlin + i*bperpix;
--
-+
- for (j=0; j<h/2; j++, topp+=(w-1)*bperpix, botp-=(w+1)*bperpix) {
- for (l=0; l<bperpix; l++, topp++, botp++) {
- k = *topp; *topp = *botp; *botp = k;
-@@ -1093,26 +1092,26 @@
- int dir;
- {
- /* flips selected area in 'pic', regens cpic and epic appropriately */
--
-+
- int x,y,w,h;
- byte *plin;
- int i,j,k,l,bperpix;
--
-+
- GetSelRCoords(&x,&y,&w,&h);
- CropRect2Rect(&x,&y,&w,&h, 0,0,pWIDE,pHIGH);
- if (w<1) w=1;
- if (h<1) h=1;
--
-+
- bperpix = (picType == PIC8) ? 1 : 3;
--
-+
- if (dir==0) { /* horizontal flip */
- byte *leftp, *rightp;
--
-+
- for (i=y; i<y+h; i++) {
- plin = pic + (i*pWIDE + x) * bperpix;
- leftp = plin;
- rightp = plin + (w-1)*bperpix;
--
-+
- for (j=0; j<w/2; j++, rightp -= (2*bperpix)) {
- for (l=0; l<bperpix; l++, leftp++, rightp++) {
- k = *leftp; *leftp = *rightp; *rightp = k;
-@@ -1120,14 +1119,14 @@
- }
- }
- }
--
-+
- else { /* vertical flip */
- byte *topp, *botp;
--
-+
- for (i=x; i<x+w; i++) {
- topp = pic + ( y * pWIDE + i) * bperpix;
- botp = pic + ((y+h-1) * pWIDE + i) * bperpix;
--
-+
- for (j=0; j<h/2; j++, topp+=(pWIDE-1)*bperpix, botp-=(pWIDE+1)*bperpix) {
- for (l=0; l<bperpix; l++, topp++, botp++) {
- k = *topp; *topp = *botp; *botp = k;
-@@ -1139,22 +1138,22 @@
- GenerateCpic();
- GenerateEpic(eWIDE,eHIGH);
- }
--
-+
-
- /************************/
- void InstallNewPic()
- {
- /* given a new pic and colormap, (or new 24-bit pic) installs everything,
- regens cpic and epic, and redraws image */
--
-+
- /* toss old cpic and epic, if any */
- FreeEpic();
- if (cpic && cpic != pic) free(cpic);
- cpic = NULL;
--
-+
- /* toss old colors, and allocate new ones */
- NewPicGetColors(0,0);
--
-+
- /* generate cpic,epic,theImage from new 'pic' */
- crop1(cXOFF, cYOFF, cWIDE, cHIGH, DO_ZOOM);
- HandleDispMode();
-@@ -1166,15 +1165,15 @@
- void DrawEpic()
- {
- /* given an 'epic', builds a new Ximage, and draws it. Basically
-- called whenever epic is changed, or whenever color allocation
-- changes (ie, the created X image will look different for the
-+ called whenever epic is changed, or whenever color allocation
-+ changes (ie, the created X image will look different for the
- same epic) */
--
-+
- CreateXImage();
-
- if (useroot) MakeRootPic();
- else DrawWindow(0,0,eWIDE,eHIGH);
--
-+
- if (HaveSelection()) DrawSelection(0);
- }
-
-@@ -1189,7 +1188,7 @@
- if (pic) free(pic);
- xvDestroyImage(theImage); theImage = NULL;
- pic = egampic = epic = cpic = NULL;
--
-+
- if (picComments) free(picComments);
- picComments = (char *) NULL;
- ChangeCommentText();
-@@ -1203,7 +1202,7 @@
- byte *pic824, *rmap, *gmap, *bmap;
- int ptype, wide, high;
- {
-- /* does floyd-steinberg ditherizing algorithm.
-+ /* does floyd-steinberg ditherizing algorithm.
- *
- * takes a wide*high input image, of type 'ptype' (PIC8, PIC24)
- * (if PIC8, colormap is specified by rmap,gmap,bmap)
-@@ -1212,14 +1211,14 @@
- *
- * Note: this algorithm is *only* used when running on a 1-bit display
- */
--
-+
- register byte pix8, bit;
- int *thisline, *nextline;
- int *thisptr, *nextptr, *tmpptr;
- int i, j, err, bperpix, bperln, order;
- byte *pp, *image, w1, b1, w8, b8, rgb[256];
--
--
-+
-+
- if (ptype == PIC8) { /* monoify colormap */
- for (i=0; i<256; i++)
- rgb[i] = MONO(rmap[i], gmap[i], bmap[i]);
-@@ -1234,7 +1233,7 @@
-
- thisline = (int *) malloc(wide * sizeof(int));
- nextline = (int *) malloc(wide * sizeof(int));
-- if (!thisline || !nextline)
-+ if (!thisline || !nextline)
- FatalError("ran out of memory in floydDitherize1()\n");
-
-
-@@ -1249,10 +1248,10 @@
- *tmpptr++ = fsgamcr[rgb[*pp]];
- }
-
--
-+
- w1 = white&0x1; b1=black&0x1;
- w8 = w1<<7; b8 = b1<<7; /* b/w bit in high bit */
--
-+
-
- for (i=0; i<high; i++) {
- if ((i&0x3f) == 0) WaitCursor();
-@@ -1326,7 +1325,7 @@
-
-
- /************************/
--byte *FSDither(inpic, intype, w, h, rmap, gmap, bmap,
-+byte *FSDither(inpic, intype, w, h, rmap, gmap, bmap,
- bval, wval)
- byte *inpic, *rmap, *gmap, *bmap;
- int w,h, intype, bval, wval;
-@@ -1338,14 +1337,21 @@
- * and 'wval' as the 'black' and 'white' pixel values, respectively
- */
-
-- int i, j, err, w1, h1;
-+ int i, j, err, w1, h1, npixels, linebufsize;
- byte *pp, *outpic, rgb[256];
- int *thisline, *nextline, *thisptr, *nextptr, *tmpptr;
-
-
-- outpic = (byte *) malloc((size_t) (w * h));
-+ npixels = w * h;
-+ linebufsize = w * sizeof(int);
-+ if (w <= 0 || h <= 0 || npixels/w != h || linebufsize/w != sizeof(int)) {
-+ SetISTR(ISTR_WARNING, "Invalid image dimensions for dithering");
-+ return (byte *)NULL;
-+ }
-+
-+ outpic = (byte *) malloc((size_t) npixels);
- if (!outpic) return outpic;
--
-+
-
- if (intype == PIC8) { /* monoify colormap */
- for (i=0; i<256; i++)
-@@ -1353,9 +1359,9 @@
- }
-
-
-- thisline = (int *) malloc(w * sizeof(int));
-- nextline = (int *) malloc(w * sizeof(int));
-- if (!thisline || !nextline)
-+ thisline = (int *) malloc(linebufsize);
-+ nextline = (int *) malloc(linebufsize);
-+ if (!thisline || !nextline)
- FatalError("ran out of memory in FSDither()\n");
-
-
-@@ -1394,13 +1400,13 @@
- pp = outpic + i * w;
- thisptr = thisline; nextptr = nextline;
-
-- if (i&1 == 0) { /* go right */
-+ if ((i&1) == 0) { /* go right */
- for (j=0; j<w; j++, pp++, thisptr++, nextptr++) {
- if (*thisptr<128) { err = *thisptr; *pp = (byte) bval; }
- else { err = *thisptr-255; *pp = (byte) wval; }
--
-+
- if (j<w1) thisptr[1] += ((err*7)/16);
--
-+
- if (i<h1) {
- nextptr[0] += ((err*5)/16);
- if (j>0) nextptr[-1] += ((err*3)/16);
-@@ -1414,9 +1420,9 @@
- for (j=w-1; j>=0; j--, pp--, thisptr--, nextptr--) {
- if (*thisptr<128) { err = *thisptr; *pp = (byte) bval; }
- else { err = *thisptr-255; *pp = (byte) wval; }
--
-+
- if (j>0) thisptr[-1] += ((err*7)/16);
--
-+
- if (i<h1) {
- nextptr[0] += ((err*5)/16);
- if (j>0) nextptr[-1] += (err/16);
-@@ -1449,8 +1455,8 @@
- }
-
-
-- if (picType == PIC8)
-- theImage = Pic8ToXImage(epic, (u_int) eWIDE, (u_int) eHIGH,
-+ if (picType == PIC8)
-+ theImage = Pic8ToXImage(epic, (u_int) eWIDE, (u_int) eHIGH,
- cols, rMap, gMap, bMap);
- else if (picType == PIC24)
- theImage = Pic24ToXImage(egampic, (u_int) eWIDE, (u_int) eHIGH);
-@@ -1482,7 +1488,7 @@
-
- if (!pic8) return xim; /* shouldn't happen */
-
-- if (DEBUG > 1)
-+ if (DEBUG > 1)
- fprintf(stderr,"Pic8ToXImage(): creating a %dx%d Ximage, %d bits deep\n",
- wide, high, dispDEEP);
-
-@@ -1491,7 +1497,7 @@
- if (dispDEEP == 1) {
- byte *imagedata;
-
-- xim = XCreateImage(theDisp, theVisual, dispDEEP, XYPixmap, 0, NULL,
-+ xim = XCreateImage(theDisp, theVisual, dispDEEP, XYPixmap, 0, NULL,
- wide, high, 32, 0);
- if (!xim) FatalError("couldn't create xim!");
-
-@@ -1506,11 +1512,11 @@
-
- /* if ncols==0, do a 'black' and 'white' dither */
- if (ncols == 0) {
-- /* note that if dispDEEP > 8, dithpic will just have '0' and '1' instead
-+ /* note that if dispDEEP > 8, dithpic will just have '0' and '1' instead
- of 'black' and 'white' */
-
- dithpic = FSDither(pic8, PIC8, (int) wide, (int) high, rmap, gmap, bmap,
-- (int) ((dispDEEP <= 8) ? black : 0),
-+ (int) ((dispDEEP <= 8) ? black : 0),
- (int) ((dispDEEP <= 8) ? white : 1));
- }
-
-@@ -1521,14 +1527,14 @@
- case 8: {
- byte *imagedata, *ip, *pp;
- int j, imWIDE, nullCount;
--
-+
- nullCount = (4 - (wide % 4)) & 0x03; /* # of padding bytes per line */
- imWIDE = wide + nullCount;
--
-+
- /* Now create the image data - pad each scanline as necessary */
- imagedata = (byte *) malloc((size_t) (imWIDE * high));
- if (!imagedata) FatalError("couldn't malloc imagedata");
--
-+
- pp = (dithpic) ? dithpic : pic8;
-
- for (i=0, ip=imagedata; i<high; i++) {
-@@ -1543,9 +1549,9 @@
-
- for (j=0; j<nullCount; j++, ip++) *ip = 0;
- }
--
-+
- xim = XCreateImage(theDisp,theVisual,dispDEEP,ZPixmap,0,
-- (char *) imagedata, wide, high,
-+ (char *) imagedata, wide, high,
- 32, imWIDE);
- if (!xim) FatalError("couldn't create xim!");
- }
-@@ -1554,13 +1560,13 @@
-
-
- /*********************************/
--
-+
- case 4: {
- byte *imagedata, *ip, *pp;
- byte *lip;
- int bperline, half, j;
-
-- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
-+ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
- wide, high, 8, 0);
- if (!xim) FatalError("couldn't create xim!");
-
-@@ -1569,7 +1575,7 @@
- if (!imagedata) FatalError("couldn't malloc imagedata");
- xim->data = (char *) imagedata;
-
--
-+
- pp = (dithpic) ? dithpic : pic8;
-
- if (xim->bits_per_pixel == 4) {
-@@ -1601,20 +1607,20 @@
- else FatalError("This display's too bizarre. Can't create XImage.");
- }
- break;
--
-+
-
- /*********************************/
--
-+
- case 2: { /* by M.Kossa@frec.bull.fr (Marc Kossa) */
- /* MSBFirst mods added by dale@ntg.com (Dale Luck) */
-- /* additional fixes by evol@infko.uni-koblenz.de
-+ /* additional fixes by evol@infko.uni-koblenz.de
- (Randolf Werner) for NeXT 2bit grayscale with MouseX */
-
- byte *imagedata, *ip, *pp;
- byte *lip;
- int bperline, half, j;
-
-- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
-+ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
- wide, high, 8, 0);
- if (!xim) FatalError("couldn't create xim!");
-
-@@ -1674,11 +1680,11 @@
- *ip = (dithpic) ? *pp : (byte) xcolors[*pp];
- }
- }
--
-+
- else FatalError("This display's too bizarre. Can't create XImage.");
- }
- break;
--
-+
-
- /*********************************/
-
-@@ -1686,8 +1692,8 @@
- case 6: {
- byte *imagedata, *ip, *pp;
- int bperline;
--
-- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
-+
-+ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
- wide, high, 8, 0);
- if (!xim) FatalError("couldn't create xim!");
-
-@@ -1707,17 +1713,16 @@
- }
- }
- break;
--
-+
-
- /*********************************/
-
- case 12:
- case 15:
- case 16: {
-- unsigned short *imagedata, *ip;
-- byte *pp;
-+ byte *imagedata, *ip, *pp;
-
-- imagedata = (unsigned short *) malloc((size_t) (2*wide*high));
-+ imagedata = (byte *) malloc((size_t) (2*wide*high));
- if (!imagedata) FatalError("couldn't malloc imagedata");
-
- xim = XCreateImage(theDisp,theVisual,dispDEEP,ZPixmap,0,
-@@ -1736,10 +1741,12 @@
- if (xim->byte_order == MSBFirst) {
- for (i=wide*high, ip=imagedata; i>0; i--,pp++) {
- if (((i+1)&0x1ffff) == 0) WaitCursor();
-- if (dithpic) {
-- *ip++ = ((*pp) ? white : black) & 0xffff;
-- }
-- else *ip++ = xcolors[*pp] & 0xffff;
-+
-+ if (dithpic) xcol = ((*pp) ? white : black) & 0xffff;
-+ else xcol = xcolors[*pp] & 0xffff;
-+
-+ *ip++ = (xcol>>8) & 0xff;
-+ *ip++ = (xcol) & 0xff;
- }
- }
- else { /* LSBFirst */
-@@ -1749,14 +1756,14 @@
- if (dithpic) xcol = ((*pp) ? white : black) & 0xffff;
- else xcol = xcolors[*pp];
-
-- /* WAS *ip++ = ((xcol>>8) & 0xff) | ((xcol&0xff) << 8); */
-- *ip++ = (unsigned short) (xcol);
-+ *ip++ = (xcol) & 0xff;
-+ *ip++ = (xcol>>8) & 0xff;
- }
- }
- }
- break;
-
--
-+
- /*********************************/
-
- case 24:
-@@ -1766,7 +1773,7 @@
-
- imagedata = (byte *) malloc((size_t) (4*wide*high));
- if (!imagedata) FatalError("couldn't malloc imagedata");
--
-+
- xim = XCreateImage(theDisp,theVisual,dispDEEP,ZPixmap,0,
- (char *) imagedata, wide, high, 32, 0);
- if (!xim) FatalError("couldn't create xim!");
-@@ -1774,7 +1781,7 @@
- do32 = (xim->bits_per_pixel == 32);
-
- pp = (dithpic) ? dithpic : pic8;
--
-+
- if (xim->byte_order == MSBFirst) {
- for (i=0, ip=imagedata; i<high; i++) {
- if (((i+1)&0x7f) == 0) WaitCursor();
-@@ -1809,8 +1816,8 @@
-
-
- /*********************************/
--
-- default:
-+
-+ default:
- sprintf(str,"no code to handle this display type (%d bits deep)",
- dispDEEP);
- FatalError(str);
-@@ -1823,7 +1830,7 @@
- return(xim);
- }
-
--static int foo = 0;
-+
-
- /***********************************/
- XImage *Pic24ToXImage(pic24, wide, high)
-@@ -1840,8 +1847,8 @@
- * variation of RGB the X device in question wants. No color allocation
- * is involved.
- *
-- * Alternately, if we're on a PseudoColor, GrayScale, StaticColor or
-- * StaticGray display, we're going to continue to operate in an 8-bit
-+ * Alternately, if we're on a PseudoColor, GrayScale, StaticColor or
-+ * StaticGray display, we're going to continue to operate in an 8-bit
- * mode. (In that by this point, a 3/3/2 standard colormap has been
- * created for our use (though all 256 colors may not be unique...), and
- * we're just going to display the 24-bit picture by dithering with those
-@@ -1861,7 +1868,7 @@
- if (dispDEEP == 1) {
- byte *imagedata;
-
-- xim = XCreateImage(theDisp, theVisual, dispDEEP, XYPixmap, 0, NULL,
-+ xim = XCreateImage(theDisp, theVisual, dispDEEP, XYPixmap, 0, NULL,
- wide, high, 32, 0);
- if (!xim) FatalError("couldn't create xim!");
-
-@@ -1929,8 +1936,8 @@
- for (j=0, ip=lip; j<wide; j++) {
- r = *pp++; g = *pp++; b = *pp++;
-
-- /* shift r,g,b so that high bit of 8-bit color specification is
-- * aligned with high bit of r,g,b-mask in visual,
-+ /* shift r,g,b so that high bit of 8-bit color specification is
-+ * aligned with high bit of r,g,b-mask in visual,
- * AND each component with its mask,
- * and OR the three components together
- */
-@@ -1945,7 +1952,7 @@
- /* shift the bits around */
- if (rshift<0) r = r << (-rshift);
- else r = r >> rshift;
--
-+
- if (gshift<0) g = g << (-gshift);
- else g = g >> gshift;
-
-@@ -2019,17 +2026,17 @@
- bwdith = 0;
-
- if (ncols == 0 && dispDEEP != 1) { /* do 'black' and 'white' dither */
-- /* note that if dispDEEP > 8, pic8 will just have '0' and '1' instead
-+ /* note that if dispDEEP > 8, pic8 will just have '0' and '1' instead
- of 'black' and 'white' */
-
-- pic8 = FSDither(pic24, PIC24, (int) wide, (int) high, NULL, NULL, NULL,
-- (int) ((dispDEEP <= 8) ? black : 0),
-+ pic8 = FSDither(pic24, PIC24, (int) wide, (int) high, NULL, NULL, NULL,
-+ (int) ((dispDEEP <= 8) ? black : 0),
- (int) ((dispDEEP <= 8) ? white : 1));
- bwdith = 1;
- }
-
- else { /* do color dither using stdcmap */
-- pic8 = Do332ColorDither(pic24, NULL, (int) wide, (int) high,
-+ pic8 = Do332ColorDither(pic24, NULL, (int) wide, (int) high,
- NULL, NULL, NULL,
- stdrdisp, stdgdisp, stdbdisp, 256);
- }
-@@ -2046,14 +2053,14 @@
- case 8: {
- byte *imagedata, *ip, *pp;
- int j, imWIDE, nullCount;
--
-+
- nullCount = (4 - (wide % 4)) & 0x03; /* # of padding bytes per line */
- imWIDE = wide + nullCount;
--
-+
- /* Now create the image data - pad each scanline as necessary */
- imagedata = (byte *) malloc((size_t) (imWIDE * high));
- if (!imagedata) FatalError("couldn't malloc imagedata");
--
-+
- for (i=0, pp=pic8, ip=imagedata; i<high; i++) {
- if (((i+1)&0x7f) == 0) WaitCursor();
-
-@@ -2066,7 +2073,7 @@
- }
-
- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0,
-- (char *) imagedata, wide, high,
-+ (char *) imagedata, wide, high,
- 32, imWIDE);
- if (!xim) FatalError("couldn't create xim!");
- }
-@@ -2074,14 +2081,14 @@
-
-
- /*********************************/
--
-+
- case 4: {
- byte *imagedata, *ip, *pp;
- byte *lip;
- int bperline, half, j;
- unsigned long xcol;
--
-- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
-+
-+ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
- wide, high, 32, 0);
- if (!xim) FatalError("couldn't create xim!");
-
-@@ -2123,14 +2130,14 @@
- else FatalError("This display's too bizarre. Can't create XImage.");
- }
- break;
--
-+
-
-
- /*********************************/
--
-+
- case 2: { /* by M.Kossa@frec.bull.fr (Marc Kossa) */
- /* MSBFirst mods added by dale@ntg.com (Dale Luck) */
-- /* additional fixes by evol@infko.uni-koblenz.de
-+ /* additional fixes by evol@infko.uni-koblenz.de
- (Randolf Werner) for NeXT 2bit grayscale with MouseX */
-
- byte *imagedata, *ip, *pp;
-@@ -2138,7 +2145,7 @@
- int bperline, half, j;
- unsigned long xcol;
-
-- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
-+ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
- wide, high, 32, 0);
- if (!xim) FatalError("couldn't create xim!");
-
-@@ -2201,22 +2208,22 @@
- }
- }
- }
--
-+
- else FatalError("This display's too bizarre. Can't create XImage.");
- }
- break;
--
-+
-
- /*********************************/
--
-+
- case 6: {
- byte *imagedata, *lip, *ip, *pp;
- int bperline;
--
-- xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
-+
-+ xim = XCreateImage(theDisp, theVisual, dispDEEP, ZPixmap, 0, NULL,
- wide, high, 32, 0);
- if (!xim) FatalError("couldn't create xim!");
--
-+
- if (xim->bits_per_pixel != 8)
- FatalError("This display's too bizarre. Can't create XImage.");
-
-@@ -2238,7 +2245,7 @@
- }
- break;
-
--
-+
- /*********************************/
-
- case 15:
-@@ -2282,7 +2289,7 @@
- }
- break;
-
--
-+
- /*********************************/
-
- /* this wouldn't seem likely to happen, but what the heck... */
-@@ -2295,7 +2302,7 @@
-
- imagedata = (byte *) malloc((size_t) (4*wide*high));
- if (!imagedata) FatalError("couldn't malloc imagedata");
--
-+
- xim = XCreateImage(theDisp,theVisual,dispDEEP,ZPixmap,0,
- (char *) imagedata, wide, high, 32, 0);
- if (!xim) FatalError("couldn't create xim!");
-@@ -2303,7 +2310,7 @@
- bperpix = xim->bits_per_pixel;
-
- pp = pic8;
--
-+
- if (xim->byte_order == MSBFirst) {
- for (i=wide*high, ip=imagedata; i>0; i--,pp++) {
- if (((i+1)&0x1ffff) == 0) WaitCursor();
-@@ -2327,7 +2334,7 @@
- if (bperpix == 32) *ip++ = 0;
- }
- }
-- }
-+ }
- break;
-
- } /* end of the switch */
-@@ -2346,7 +2353,7 @@
- int mode;
- {
- /* move checkmark */
-- conv24MB.flags[CONV24_8BIT] = (mode==PIC8);
-+ conv24MB.flags[CONV24_8BIT] = (mode==PIC8);
- conv24MB.flags[CONV24_24BIT] = (mode==PIC24);
-
- if (mode == PIC24) {
-@@ -2383,15 +2390,13 @@
- void Change824Mode(mode)
- int mode;
- {
-- static int oldcmapmode = -1;
--
- if (mode == picType) return; /* same mode, do nothing */
-
- Set824Menus(mode);
-
- if (!pic) { /* done all we wanna do when there's no pic */
- picType = mode;
-- return;
-+ return;
- }
-
- /* should probably actually *do* something involving colors, regenrating
-@@ -2474,7 +2479,7 @@
- int ptype, w,h, sx,sy,sw,sh;
- {
- /* mallocs and returns the selected subimage (sx,sy,sw,sh) of pic.
-- selection is guaranteed to be within pic boundaries.
-+ selection is guaranteed to be within pic boundaries.
- NEVER RETURNS NULL */
-
- byte *rpic, *sp, *dp;
-@@ -2520,7 +2525,6 @@
- installs the new pic and all that... Returns '0' on failure */
-
- int rv;
-- char loadName[256];
-
- if (padPic) free(padPic);
- if (holdcomment) free(holdcomment);
-@@ -2530,8 +2534,8 @@
-
- rv = 1;
-
-- if ((mode != PAD_LOAD) && (wide == pWIDE && high == pHIGH && opaque==100)) {
-- ErrPopUp("Padding to same size as pic while fully opaque has no effect.",
-+ if ((mode != PAD_LOAD) && (wide == cWIDE && high == cHIGH && opaque==100)) {
-+ ErrPopUp("Padding to same size as pic while fully opaque has no effect.",
- "\nI see");
- return 0;
- }
-@@ -2539,8 +2543,8 @@
- WaitCursor();
-
- if (mode == PAD_SOLID) rv = doPadSolid(str, wide, high, opaque,omode);
-- else if (mode == PAD_BGGEN) rv = doPadBggen(str, wide, high, opaque,omode);
-- else if (mode == PAD_LOAD) rv = doPadLoad (str, wide, high, opaque,omode);
-+ else if (mode == PAD_BGGEN) rv = doPadBggen(str, wide, high, opaque,omode);
-+ else if (mode == PAD_LOAD) rv = doPadLoad (str, wide, high, opaque,omode);
-
- SetCursors(-1);
-
-@@ -2556,7 +2560,7 @@
-
- return 1;
- }
--
-+
-
- /***********************************/
- int LoadPad(pinfo, fname)
-@@ -2645,7 +2649,7 @@
- return 0;
- }
- }
--
-+
-
-
- pic24 = (byte *) malloc(wide * high * 3 * sizeof(byte));
-@@ -2656,7 +2660,7 @@
- return 0;
- }
-
--
-+
- /* fill pic24 with solidRGB */
- for (i=0,pp=pic24; i<wide*high; i++, pp+=3) {
- pp[0] = (solidRGB>>16) & 0xff;
-@@ -2697,7 +2701,11 @@
- #else
- strcpy(fname, "Sys$Disk:[]xvuXXXXXX");
- #endif
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(fname));
-+#else
- mktemp(fname);
-+#endif
-
- /* run bggen to generate the background */
- sprintf(syscmd, "bggen -g %dx%d %s > %s", wide, high, str, fname);
-@@ -2713,7 +2721,7 @@
- ErrPopUp(errstr, "\nDoh!");
- return 0;
- }
--
-+
-
- /* read the file that's been created */
- if (!ReadImageFile1(fname, &pinfo)) {
-@@ -2791,7 +2799,7 @@
- int wide, high, opaque,omode;
- {
- /* copies 'pic' onto the given 24-bit background image, converts back to
-- 8-bit (if necessary), and loads up pad* variables.
-+ 8-bit (if necessary), and loads up pad* variables.
- frees pic24 if necessary */
-
- byte *pp, *p24;
-@@ -2806,30 +2814,30 @@
-
- /* copy 'pic' centered onto pic24. */
-
-- sx = (wide - pWIDE) / 2;
-- sy = (high - pHIGH) / 2;
--
-- for (py = 0; py<pHIGH; py++) {
-- ProgressMeter(0, pHIGH-1, py, "Pad");
-+ sx = (wide - cWIDE) / 2;
-+ sy = (high - cHIGH) / 2;
-+
-+ for (py = 0; py<cHIGH; py++) {
-+ ProgressMeter(0, cHIGH-1, py, "Pad");
- if ((py & 0x1f)==0) WaitCursor();
-
- p24y = sy + py;
- if (p24y >= 0 && p24y < high) {
-- for (px=0; px<pWIDE; px++) {
-+ for (px=0; px<cWIDE; px++) {
- p24x = sx + px;
- if (p24x >= 0 && p24x < wide) {
- p24 = pic24 + (p24y*wide + p24x)*3;
--
--
-+
-+
- if (picType == PIC24) { /* src is PIC24 */
-- pp = pic + (py * pWIDE + px) *3;
-+ pp = cpic + (py * cWIDE + px) *3;
- r = pp[0]; g = pp[1]; b = pp[2];
- }
- else { /* src is PIC8 */
-- pp = pic + (py*pWIDE + px);
-+ pp = cpic + (py*cWIDE + px);
- r = rMap[*pp]; g = gMap[*pp]; b = bMap[*pp];
- }
--
-+
- if (omode == PAD_ORGB) {
- rval = (r * fg) / 100 + ((int) p24[0] * bg) / 100;
- gval = (g * fg) / 100 + ((int) p24[1] * bg) / 100;
-@@ -2845,7 +2853,7 @@
-
- if (omode == PAD_OINT) {
- h = fh;
-- s = fs;
-+ s = fs;
- /* v = (fv * fg) / 100.0 + (bv * bg) / 100.0; */
- v = (fv * bv * bw) + (fv * fw);
- }
-@@ -2855,18 +2863,18 @@
- h = fh;
- /* s = (fs * fg) / 100.0 + (bs * bg) / 100.0; */
- s = (fs * bs * bw) + (fs * fw);
-- v = fv;
-+ v = fv;
- }
- else if (omode == PAD_OHUE) { /* the hard one! */
-- int fdeg,bdeg,len1,len2;
--
-+ int fdeg,bdeg;
-+
- fdeg = (fh<0) ? -1 : (int) floor(fh + 0.5);
- bdeg = (bh<0) ? -1 : (int) floor(bh + 0.5);
-
- if (fdeg>=0 && bdeg>=0) { /* both are colors */
- /* convert H,S onto x,y coordinates on the colorwheel for
- constant V */
--
-+
- double fx,fy, bx,by, ox,oy;
-
- if (fg == 100 || bg == 100) { /* E-Z special case */
-@@ -2874,17 +2882,17 @@
- else { h = bh; s = fs; v=fv; }
- }
- else { /* general case */
--
-+
- fh *= (3.14159 / 180.0); /* -> radians */
- bh *= (3.14159 / 180.0);
--
-+
- fx = fs * cos(fh); fy = fs * sin(fh);
- bx = bs * cos(bh); by = bs * sin(bh);
--
-+
- /* compute pt. on line between fx,fy and bx,by */
- ox = (fx * (fg/100.0)) + (bx * (bg/100.0));
- oy = (fy * (fg/100.0)) + (by * (bg/100.0));
--
-+
- /* convert ox,oy back into hue,sat */
- s = sqrt((ox * ox) + (oy * oy));
- if (ox == 0.0) {
-@@ -2897,7 +2905,7 @@
- while (h<0.0) h += 360.0;
- while (h>=360.0) h -= 360.0;
- }
--
-+
- v = fv;
- }
- }
-@@ -2924,7 +2932,7 @@
- v = (fv * bv * bw) + (fv * fw);
- hsv2rgb(h,s,v, &rval,&gval,&bval);
- }
--
-+
- RANGE(rval, 0, 255); RANGE(gval, 0, 255); RANGE(bval, 0, 255);
- *p24++ = rval; *p24++ = gval; *p24++ = bval;
- }
-@@ -2958,12 +2966,15 @@
-
-
- /*******************************/
--static int ReadImageFile1(name, pinfo)
-+static int ReadImageFile1(name, pinfo)
- char *name;
- PICINFO *pinfo;
- {
- int i, ftype;
-- char basefname[128], uncompname[128], errstr[256], *uncName, *readname;
-+ char uncompname[128], errstr[256], *uncName, *readname;
-+#ifdef VMS
-+ char basefname[128];
-+#endif
-
- ftype = ReadFileType(name);
-
-@@ -2976,7 +2987,7 @@
- #else
- uncName = name;
- #endif
--
-+
- if (UncompressFile(uncName, uncompname)) {
- ftype = ReadFileType(uncompname);
- readname = uncompname;
-@@ -3004,7 +3015,7 @@
- KillPageFiles(pinfo->pagebname, pinfo->numpages);
-
- if (!i || (i && (pinfo->w<=0 || pinfo->h<=0))) {
-- if (i) {
-+ if (i) {
- if (pinfo->pic) free(pinfo->pic);
- if (pinfo->comment) free(pinfo->comment);
- }
-@@ -3021,6 +3032,6 @@
-
-
-
--
-+
-
-
-diff -ruN xv-3.10a/xvinfo.c xv-3.10a-bugfixes/xvinfo.c
---- xv-3.10a/xvinfo.c 1994-12-22 14:34:41.000000000 -0800
-+++ xv-3.10a-bugfixes/xvinfo.c 2004-05-16 18:03:43.000000000 -0700
-@@ -1,4 +1,4 @@
--/*
-+/*
- * xvinfo.c - 'Info' box handling functions
- *
- * callable functions:
-@@ -8,7 +8,7 @@
- * maps/unmaps window, etc.
- * RedrawInfo(x,y,w,h) - called by 'expose' events
- * SetInfoMode(mode) - changes amount of info Info window shows
-- * SetISTR(st, fmt, args) - sprintf's into ISTR #st. Redraws it in window
-+ * SetISTR(st, fmt, args) - sprintf's into ISTR #st. Redraws it in window
- * char *GetISTR(st) - returns pointer to ISTR #st, or NULL if st bogus
- */
-
-@@ -45,18 +45,18 @@
- void CreateInfo(geom)
- char *geom;
- {
-- infoW = CreateWindow("xv info", "XVinfo", geom, INFOWIDE, INFOHIGH,
-+ infoW = CreateWindow("xv info", "XVinfo", geom, INFOWIDE, INFOHIGH,
- infofg, infobg, 0);
- if (!infoW) FatalError("can't create info window!");
--
-- pennPix = XCreatePixmapFromBitmapData(theDisp, infoW,
-+
-+ pennPix = XCreatePixmapFromBitmapData(theDisp, infoW,
- (char *) penn_bits, penn_width, penn_height, infofg, infobg, dispDEEP);
-
- pnetPix = XCreatePixmapFromBitmapData(theDisp,infoW,
-- (char *) pennnet_bits, pennnet_width, pennnet_height,
-+ (char *) pennnet_bits, pennnet_width, pennnet_height,
- infofg, infobg, dispDEEP);
- }
--
-+
-
- /***************************************************/
- void InfoBox(vis)
-@@ -64,7 +64,7 @@
- {
- if (vis) XMapRaised(theDisp, infoW);
- else XUnmapWindow(theDisp, infoW);
--
-+
- infoUp = vis;
- }
-
-@@ -74,15 +74,15 @@
- int x,y,w,h;
- {
- int i;
--
-+
- XSetForeground(theDisp, theGC, infofg);
- XSetBackground(theDisp, theGC, infobg);
-
- /* draw the two icons */
- XCopyArea(theDisp, pennPix, infoW, theGC, 0, 0, penn_width, penn_height,
- 36 - penn_width/2, 36 - penn_height/2);
-- XCopyArea(theDisp, pnetPix, infoW, theGC, 0, 0, pennnet_width,
-- pennnet_height, INFOWIDE - 36 - pennnet_width/2,
-+ XCopyArea(theDisp, pnetPix, infoW, theGC, 0, 0, pennnet_width,
-+ pennnet_height, INFOWIDE - 36 - pennnet_width/2,
- 36 - pennnet_height/2);
-
- /* draw the credits */
-@@ -90,7 +90,7 @@
- CenterString(infoW, INFOWIDE/2, 36-LINEHIGH, str);
- CenterString(infoW, INFOWIDE/2, 36,
- "by John Bradley (bradley@dccs.upenn.edu)");
-- CenterString(infoW, INFOWIDE/2, 36+LINEHIGH,
-+ CenterString(infoW, INFOWIDE/2, 36+LINEHIGH,
- "Copyright 1994, John Bradley - All Rights Reserved");
-
-
-@@ -139,8 +139,8 @@
-
- if (infoMode == INF_NONE || infoMode == INF_STR) return;
- if (infoMode == INF_PART && fnum>=3) return;
--
-- XDrawString(theDisp, infoW, theGC, 10, TOPBASE + fnum*LINEHIGH,
-+
-+ XDrawString(theDisp, infoW, theGC, 10, TOPBASE + fnum*LINEHIGH,
- fname[fnum], (int) strlen(fname[fnum]));
- }
-
-@@ -150,7 +150,7 @@
- int st;
- {
- /* erase area of string, and draw it with new contents */
--
-+
- if (infoMode == INF_NONE) return;
- if (infoMode == INF_STR && st > ISTR_WARNING) return;
- if (infoMode == INF_PART && st > ISTR_RES) return;
-@@ -170,12 +170,12 @@
- }
- else {
- XSetForeground(theDisp, theGC, infobg);
-- XFillRectangle(theDisp, infoW, theGC,
-- STLEFT, TOPBASE - ASCENT + (st-ISTR_FILENAME)*LINEHIGH,
-+ XFillRectangle(theDisp, infoW, theGC,
-+ STLEFT, TOPBASE - ASCENT + (st-ISTR_FILENAME)*LINEHIGH,
- (u_int) INFOWIDE-STLEFT, (u_int) LINEHIGH);
- XSetForeground(theDisp, theGC, infofg);
- XDrawString(theDisp, infoW, theGC, STLEFT,
-- TOPBASE + (st-ISTR_FILENAME)*LINEHIGH, istrs[st],
-+ TOPBASE + (st-ISTR_FILENAME)*LINEHIGH, istrs[st],
- (int) strlen(istrs[st]));
- }
- }
-@@ -187,21 +187,21 @@
- int mode;
- {
- int y1, y2;
--
-+
- infoMode = mode;
- if (infoUp) { /* only do this if window is mapped */
- y1 = TOPBASE - ASCENT;
- y2 = INFOHIGH-43;
--
-+
- XSetForeground(theDisp, theGC, infobg);
--
-- XFillRectangle(theDisp,infoW,theGC,0,y1,
-+
-+ XFillRectangle(theDisp,infoW,theGC,0,y1,
- (u_int) INFOWIDE, (u_int) y2-y1);
-- XFillRectangle(theDisp,infoW,theGC,0,INFOHIGH-39,
-+ XFillRectangle(theDisp,infoW,theGC,0,INFOHIGH-39,
- (u_int) INFOWIDE, (u_int) 17);
-- XFillRectangle(theDisp,infoW,theGC,0,INFOHIGH-19,
-+ XFillRectangle(theDisp,infoW,theGC,0,INFOHIGH-19,
- (u_int) INFOWIDE, (u_int) 17);
--
-+
- drawStrings();
- }
- }
-@@ -237,9 +237,9 @@
- else istrs[stnum][0] = '\0';
- }
- va_end(args);
--
-+
- if (stnum == ISTR_COLOR) {
-- sprintf(istrs[ISTR_INFO], "%s %s %s", formatStr,
-+ sprintf(istrs[ISTR_INFO], "%s %s %s", formatStr,
- (picType==PIC8) ? "8-bit mode." : "24-bit mode.",
- istrs[ISTR_COLOR]);
- }
-@@ -250,19 +250,19 @@
- XFlush(theDisp);
- }
-
-- if (ctrlUp && (stnum == ISTR_INFO || stnum == ISTR_WARNING ||
-+ if (ctrlUp && (stnum == ISTR_INFO || stnum == ISTR_WARNING ||
- stnum == ISTR_COLOR)) {
- DrawCtrlStr();
- XFlush(theDisp);
- }
-
-- if (anyBrowUp && (stnum == ISTR_WARNING || stnum == ISTR_INFO)
-+ if (anyBrowUp && (stnum == ISTR_WARNING || stnum == ISTR_INFO)
- && strlen(istrs[stnum])) {
- SetBrowStr(istrs[stnum]);
- XFlush(theDisp);
- }
-
-- if (stnum == ISTR_WARNING && !ctrlUp && !infoUp && !anyBrowUp &&
-+ if (stnum == ISTR_WARNING && !ctrlUp && !infoUp && !anyBrowUp &&
- strlen(istrs[stnum])) {
- OpenAlert(istrs[stnum]);
- sleep(3);
-diff -ruN xv-3.10a/xviris.c xv-3.10a-bugfixes/xviris.c
---- xv-3.10a/xviris.c 1994-12-22 14:34:47.000000000 -0800
-+++ xv-3.10a-bugfixes/xviris.c 2005-04-03 12:08:03.000000000 -0700
-@@ -14,7 +14,7 @@
- *
- * This code should work on machines with any byte order.
- *
-- * Could someone make this run real fast using multiple processors
-+ * Could someone make this run real fast using multiple processors
- * or how about using memory mapped files to speed it up?
- *
- * Paul Haeberli - 1991
-@@ -44,7 +44,7 @@
- u_short zsize;
- u_long min;
- u_long max;
-- u_long wastebytes;
-+ u_long wastebytes;
- char name[80];
- u_long colormap;
-
-@@ -112,7 +112,8 @@
- IMAGE img;
- byte *rawdata, *rptr;
- byte *pic824, *bptr;
-- int trunc, i, j;
-+ int trunc, i, npixels, bufsize;
-+ u_short ii, jj;
- long filesize;
-
- trunc = 0;
-@@ -133,11 +134,11 @@
- img.imagic = getshort(fp);
- img.type = getshort(fp);
- img.dim = getshort(fp);
-- img.xsize = getshort(fp);
-+ img.xsize = getshort(fp); /* u_short */
- img.ysize = getshort(fp);
- img.zsize = getshort(fp);
-
-- if (FERROR(fp)) {
-+ if (FERROR(fp) || img.xsize == 0 || img.ysize == 0 || img.zsize == 0) {
- fclose(fp);
- return irisError(bname, "error in header info");
- }
-@@ -148,7 +149,7 @@
- }
-
- rawdata = getimagedata(fp, &img);
-- if (!rawdata) {
-+ if (!rawdata) {
- fclose(fp);
- if (loaderr) irisError(bname, loaderr);
- return 0;
-@@ -162,18 +163,22 @@
- /* got the raw image data. Convert to an XV image (1,3 bytes / pix) */
-
-
-+ npixels = img.xsize * img.ysize; /* 65535*65535 = (2^32 - 131071) max */
-+ if (npixels/img.xsize != img.ysize)
-+ return irisError(bname, "IRIS image dimensions out of range");
-+
- if (img.zsize < 3) { /* grayscale */
-- pic824 = (byte *) malloc((size_t) img.xsize * img.ysize);
-+ pic824 = (byte *) malloc((size_t) npixels);
- if (!pic824) FatalError("couldn't malloc pic824 in LoadIRIS()");
-
- /* copy plane 3 from rawdata into pic824, inverting pic vertically */
-- for (i=0, bptr=pic824; i<(int) img.ysize; i++) {
-- rptr = rawdata + 3 + ((img.ysize - 1) - i) * (img.xsize * 4);
-- for (j=0; j<(int) img.xsize; j++, bptr++, rptr+=4) *bptr = *rptr;
-+ for (ii=0, bptr=pic824; ii<img.ysize; ii++) {
-+ rptr = rawdata + 3 + ((img.ysize - 1) - ii) * (img.xsize * 4);
-+ for (jj=0; jj<img.xsize; jj++, bptr++, rptr+=4) *bptr = *rptr;
- }
-
-
-- for (i=0; i<256; i++)
-+ for (i=0; i<256; i++)
- pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
-
- pinfo->pic = pic824;
-@@ -188,13 +193,17 @@
- }
-
- else { /* truecolor */
-- pic824 = (byte *) malloc((size_t) img.xsize * img.ysize * 3);
-+ bufsize = 3 * npixels;
-+ if (npixels/img.xsize != img.ysize || bufsize/3 != npixels) {
-+ return irisError(bname, "IRIS image dimensions out of range");
-+ }
-+ pic824 = (byte *) malloc((size_t) bufsize);
- if (!pic824) FatalError("couldn't malloc pic824 in LoadIRIS()");
--
-+
- /* copy plane 3 from rawdata into pic824, inverting pic vertically */
-- for (i=0, bptr=pic824; i<(int) img.ysize; i++) {
-- rptr = rawdata + ((img.ysize - 1) - i) * (img.xsize * 4);
-- for (j=0; j<(int) img.xsize; j++, rptr+=4) {
-+ for (ii=0, bptr=pic824; ii<img.ysize; ii++) {
-+ rptr = rawdata + ((img.ysize - 1) - ii) * (img.xsize * 4);
-+ for (jj=0; jj<img.xsize; jj++, rptr+=4) {
- *bptr++ = rptr[3];
- *bptr++ = rptr[2];
- *bptr++ = rptr[1];
-@@ -220,7 +229,7 @@
- pinfo->comment = (char *) NULL;
-
- return 1;
--}
-+}
-
-
- /*******************************************/
-@@ -237,15 +246,15 @@
- FILE *fp;
- IMAGE *img;
- {
-- /* read in a B/W RGB or RGBA iris image file and return a
-+ /* read in a B/W RGB or RGBA iris image file and return a
- pointer to an array of 4-byte pixels, arranged ABGR, NULL on error */
-
- byte *base, *lptr;
- byte *verdat;
-- int y, z, pos, len, tablen;
-+ int y, z, tablen;
- int xsize, ysize, zsize;
- int bpp, rle, cur, badorder;
-- int rlebuflen;
-+ int rlebuflen, npixels, bufsize;
-
-
- rle = ISRLE(img->type);
-@@ -257,21 +266,33 @@
- return (byte *) NULL;
- }
-
-- xsize = img->xsize;
-+ xsize = img->xsize; /* all three are > 0 (checked by caller), <= 65535 */
- ysize = img->ysize;
- zsize = img->zsize;
-+ npixels = xsize * ysize; /* 65535*65535 = (2^32 - 131071) max */
-+ if (npixels/xsize != ysize) {
-+ loaderr = "IRIS image dimensions out of range";
-+ return (byte *) NULL;
-+ }
-
- if (rle) {
- byte *rledat;
- u_long *starttab, *lengthtab;
-
-- rlebuflen = 2 * xsize + 10;
-+ rlebuflen = 2 * xsize + 10; /* 10 <= rlebuflen <= 131080 */
- tablen = ysize * zsize;
-- starttab = (u_long *) malloc((size_t) tablen * sizeof(long));
-- lengthtab = (u_long *) malloc((size_t) tablen * sizeof(long));
-+ bufsize = tablen * sizeof(long);
-+
-+ if (tablen/ysize != zsize || bufsize/tablen != sizeof(long)) {
-+ loaderr = "IRIS image dimensions out of range";
-+ return (byte *)NULL;
-+ }
-+
-+ starttab = (u_long *) malloc((size_t) bufsize);
-+ lengthtab = (u_long *) malloc((size_t) bufsize);
- rledat = (byte *) malloc((size_t) rlebuflen);
-
-- if (!starttab || !lengthtab || !rledat)
-+ if (!starttab || !lengthtab || !rledat)
- FatalError("out of memory in LoadIRIS()");
-
- fseek(fp, 512L, 0);
-@@ -298,7 +319,13 @@
- fseek(fp, (long) (512 + 2*tablen*4), 0);
- cur = 512 + 2*tablen*4;
-
-- base = (byte *) malloc((size_t) (xsize*ysize+TAGLEN) * 4);
-+ bufsize = 4 * (npixels+TAGLEN);
-+ if (bufsize/4 != (npixels+TAGLEN)) {
-+ loaderr = "Bogus IRIS File!";
-+ free(starttab); free(lengthtab); free(rledat);
-+ return (byte *)NULL;
-+ }
-+ base = (byte *) malloc((size_t) bufsize);
- if (!base) FatalError("out of memory in LoadIRIS()");
-
- addimgtag(base,xsize,ysize);
-@@ -349,12 +376,17 @@
- } /* end of RLE case */
-
- else { /* not RLE */
-+ bufsize = 4 * (npixels+TAGLEN);
-+ if (bufsize/4 != (npixels+TAGLEN)) {
-+ loaderr = "Bogus IRIS File!";
-+ return (byte *)NULL;
-+ }
-+ base = (byte *) malloc((size_t) bufsize);
- verdat = (byte *) malloc((size_t) xsize);
-- base = (byte *) malloc((size_t) (xsize*ysize+TAGLEN) * 4);
- if (!base || !verdat) FatalError("out of memory in LoadIRIS()");
-
- addimgtag(base,xsize,ysize);
--
-+
- fseek(fp,512L,0);
-
- for (z=0; z<zsize; z++) {
-@@ -457,7 +489,7 @@
- byte *dptr;
- int xsize, ysize;
- {
-- /* this is used to extract image data from core dumps.
-+ /* this is used to extract image data from core dumps.
- I doubt this is necessary... --jhb */
-
- dptr = dptr + (xsize * ysize * 4);
-@@ -499,26 +531,31 @@
- int ptype, w, h, numcols, colorstyle;
- {
- /* writes a greyscale or 24-bit RGB IRIS file to the already open
-- stream, rle compressed */
-+ stream, RLE-compressed; returns 0 on success, -1 on minor error */
-
- IMAGE img;
-- int i, j, pos, len, tablen, rlebuflen, zsize;
-+ int i, j, pos, len, tablen, rlebuflen, zsize, npixels, bufsize;
- u_long *starttab, *lengthtab;
- byte *rlebuf, *pptr;
- byte *lumbuf, *lptr, *longpic;
-
- xvbzero((char *) &img, sizeof(IMAGE));
--
-+
- /* write header information */
- fwrite(&img, sizeof(IMAGE), (size_t) 1, fp);
- fseek(fp, 0L, 0);
-
-+ if (w <= 0 || h <= 0 || w > 65535 || h > 65535) {
-+ SetISTR(ISTR_WARNING, "image dimensions too large for IRIS format");
-+ return -1;
-+ }
-+
- /* load up header */
- img.imagic = IMAGIC;
- img.type = ITYPE_RLE | (1 & BPPMASK); /* RLE, 1 byteperpix */
- img.dim = (colorstyle == F_FULLCOLOR) ? 3 : 2;
-- img.xsize = w;
-- img.ysize = h;
-+ img.xsize = (u_short)w;
-+ img.ysize = (u_short)h;
- img.zsize = zsize = (colorstyle == F_FULLCOLOR) ? 3 : 1;
- img.min = 0;
- img.max = 255;
-@@ -537,22 +574,33 @@
- if (ferror(fp)) { fclose(fp); return -1; }
-
- /* allocate RLE compression tables & stuff */
-- rlebuflen = 2*w + 10;
-- tablen = h * zsize;
-+ rlebuflen = 2*w + 10; /* 10 <= rlebuflen <= 131080 */
-+ tablen = h * zsize; /* 1 <= tablen <= 196605 */
-
-+ /* no overflow is possible with any of these (given check on w,h above): */
- starttab = (u_long *) malloc((size_t) tablen * sizeof(long));
- lengthtab = (u_long *) malloc((size_t) tablen * sizeof(long));
- rlebuf = (byte *) malloc((size_t) rlebuflen);
-- lumbuf = (byte *) malloc((size_t) w * 4);
-+ lumbuf = (byte *) malloc((size_t) w * 4); /* 262140 max */
-
-- if (!starttab || !lengthtab || !rlebuf || !lumbuf)
-+ if (!starttab || !lengthtab || !rlebuf || !lumbuf)
- FatalError("out of memory in WriteIRIS()");
-
- pos = 512 + 2 * (tablen * 4);
- fseek(fp, (long) pos, 0);
-
- /* convert image into 4-byte per pix image that the compress routines want */
-- longpic = (byte *) malloc((size_t) w * h * 4);
-+ npixels = w * h;
-+ bufsize = 4 * npixels;
-+ if (npixels/w != h || bufsize/4 != npixels) {
-+ SetISTR(ISTR_WARNING, "can't malloc longpic in WriteIRIS()");
-+ free(starttab);
-+ free(lengthtab);
-+ free(rlebuf);
-+ free(lumbuf);
-+ return -1;
-+ }
-+ longpic = (byte *) malloc((size_t) bufsize);
- if (!longpic) FatalError("couldn't malloc longpic in WriteIRIS()");
-
- for (i=0, pptr=pic; i<h; i++) {
-@@ -574,7 +622,7 @@
- }
- }
- }
--
-+
-
-
- /* compress and write the data */
-@@ -584,12 +632,13 @@
- if (zsize == 1) {
- lumrow(lptr, lumbuf, w);
- len = compressrow(lumbuf, rlebuf, CHANOFFSET(j), w);
-- }
-+ }
- else {
- len = compressrow(lptr, rlebuf, CHANOFFSET(j), w);
- }
-
- if (len > rlebuflen) {
-+ /* this condition shouldn't kill XV, just abort writing the image */
- FatalError("WriteIRIS: rlebuf is too small");
- exit(1);
- }
-@@ -618,10 +667,10 @@
-
- return 0;
- }
--
-+
-
- /*************************************/
--static void lumrow(rgbptr, lumptr, n)
-+static void lumrow(rgbptr, lumptr, n)
- byte *rgbptr, *lumptr;
- int n;
- {
-@@ -640,7 +689,7 @@
- int z, cnt;
- {
- byte *iptr, *ibufend, *sptr, *optr;
-- short todo, cc;
-+ short todo, cc;
- long count;
-
- lbuf += z;
-@@ -685,7 +734,7 @@
- cc = *iptr;
- iptr += 4;
- while ((iptr<ibufend) && (*iptr == cc)) iptr += 4;
--
-+
- count = (iptr-sptr)/4;
- while (count) {
- todo = count>126 ? 126:count;
-@@ -694,7 +743,7 @@
- *optr++ = cc;
- }
- }
--
-+
- *optr++ = 0;
- return (optr - rlebuf);
- }
-diff -ruN xv-3.10a/xvjpeg.c xv-3.10a-bugfixes/xvjpeg.c
---- xv-3.10a/xvjpeg.c 1995-01-05 00:17:13.000000000 -0800
-+++ xv-3.10a-bugfixes/xvjpeg.c 2005-03-27 16:23:06.000000000 -0800
-@@ -35,7 +35,7 @@
- This is currently hardcoded to be twice the size of a schnauzer icon, as
- the schnauzer's the only thing that does a quick load... */
-
--#define QUICKWIDE 160
-+#define QUICKWIDE 160
- #define QUICKHIGH 120
-
- struct my_error_mgr {
-@@ -80,28 +80,26 @@
- /***************************************************/
- void CreateJPEGW()
- {
-- XClassHint classh;
--
- jpegW = CreateWindow("xv jpeg","XVjpeg",NULL,JWIDE,JHIGH,infofg,infobg,0);
- if (!jpegW) FatalError("can't create jpeg window!");
--
-+
- XSelectInput(theDisp, jpegW, ExposureMask | ButtonPressMask | KeyPressMask);
--
-- DCreate(&qDial, jpegW, 10, 10, 80, 100, 1, 100, 75, 5,
-+
-+ DCreate(&qDial, jpegW, 10, 10, 80, 100, 1, 100, 75, 5,
- infofg, infobg, hicol, locol, "Quality", "%");
--
-- DCreate(&smDial, jpegW, 120, 10, 80, 100, 0, 100, 0, 5,
-+
-+ DCreate(&smDial, jpegW, 120, 10, 80, 100, 0, 100, 0, 5,
- infofg, infobg, hicol, locol, "Smoothing", "%");
--
-- BTCreate(&jbut[J_BOK], jpegW, JWIDE-180-1, JHIGH-10-BUTTH-1, 80, BUTTH,
-+
-+ BTCreate(&jbut[J_BOK], jpegW, JWIDE-180-1, JHIGH-10-BUTTH-1, 80, BUTTH,
- "Ok", infofg, infobg, hicol, locol);
--
-- BTCreate(&jbut[J_BCANC], jpegW, JWIDE-90-1, JHIGH-10-BUTTH-1, 80, BUTTH,
-+
-+ BTCreate(&jbut[J_BCANC], jpegW, JWIDE-90-1, JHIGH-10-BUTTH-1, 80, BUTTH,
- "Cancel", infofg, infobg, hicol, locol);
--
-+
- XMapSubwindows(theDisp, jpegW);
- }
--
-+
-
- /***************************************************/
- void JPEGDialog(vis)
-@@ -122,32 +120,32 @@
- {
- /* check event to see if it's for one of our subwindows. If it is,
- deal accordingly, and return '1'. Otherwise, return '0' */
--
-+
- int rv;
- rv = 1;
--
-+
- if (!jpegUp) return 0;
--
-+
- if (xev->type == Expose) {
- int x,y,w,h;
- XExposeEvent *e = (XExposeEvent *) xev;
- x = e->x; y = e->y; w = e->width; h = e->height;
--
-+
- /* throw away excess expose events for 'dumb' windows */
-- if (e->count > 0 && (e->window == qDial.win ||
-+ if (e->count > 0 && (e->window == qDial.win ||
- e->window == smDial.win)) {}
--
-+
- else if (e->window == jpegW) drawJD(x, y, w, h);
- else if (e->window == qDial.win) DRedraw(&qDial);
- else if (e->window == smDial.win) DRedraw(&smDial);
- else rv = 0;
- }
--
-+
- else if (xev->type == ButtonPress) {
- XButtonEvent *e = (XButtonEvent *) xev;
- int x,y;
- x = e->x; y = e->y;
--
-+
- if (e->button == Button1) {
- if (e->window == jpegW) clickJD(x,y);
- else if (e->window == qDial.win) DTrack(&qDial, x,y);
-@@ -156,18 +154,18 @@
- } /* button1 */
- else rv = 0;
- } /* button press */
--
--
-+
-+
- else if (xev->type == KeyPress) {
- XKeyEvent *e = (XKeyEvent *) xev;
- char buf[128]; KeySym ks;
- int stlen;
--
-+
- stlen = XLookupString(e,buf,128,&ks,(XComposeStatus *) NULL);
- buf[stlen] = '\0';
--
-+
- RemapKeyCheck(ks, buf, &stlen);
--
-+
- if (e->window == jpegW) {
- if (stlen) {
- if (buf[0] == '\r' || buf[0] == '\n') { /* enter */
-@@ -181,12 +179,12 @@
- else rv = 0;
- }
- else rv = 0;
--
-+
- if (rv==0 && (xev->type == ButtonPress || xev->type == KeyPress)) {
- XBell(theDisp, 50);
- rv = 1; /* eat it */
- }
--
-+
- return rv;
- }
-
-@@ -211,17 +209,17 @@
- char *title3 = "quality = bigger file.";
- char *title4 = "Use smoothing if saving";
- char *title5 = "an 8-bit image (eg, a GIF).";
--
-+
- char *qtitle1 = "Default = 75.";
- char *qtitle2 = "Useful range";
- char *qtitle3 = "is 5-95.";
- char *smtitle1 = "Default = 0 (none).";
- char *smtitle2 = "10-30 is enough";
- char *smtitle3 = "for typical GIFs.";
--
-+
- int i;
- XRectangle xr;
--
-+
- xr.x = x; xr.y = y; xr.width = w; xr.height = h;
- XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
-
-@@ -240,11 +238,11 @@
- DrawString(jpegW, 15, 10+100+10+ASCENT, qtitle1);
- DrawString(jpegW, 15, 10+100+10+ASCENT+LINEHIGH, qtitle2);
- DrawString(jpegW, 15, 10+100+10+ASCENT+LINEHIGH*2, qtitle3);
--
-+
- DrawString(jpegW, 115, 10+100+10+ASCENT+LINEHIGH*0, smtitle1);
- DrawString(jpegW, 115, 10+100+10+ASCENT+LINEHIGH*1, smtitle2);
- DrawString(jpegW, 115, 10+100+10+ASCENT+LINEHIGH*2, smtitle3);
--
-+
- XSetClipMask(theDisp, theGC, None);
- }
-
-@@ -255,14 +253,14 @@
- {
- int i;
- BUTT *bp;
--
-+
- /* check BUTTs */
--
-+
- for (i=0; i<J_NBUTTS; i++) {
- bp = &jbut[i];
- if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) break;
- }
--
-+
- if (i<J_NBUTTS) { /* found one */
- if (BTTrack(bp)) doCmd(i);
- }
-@@ -281,7 +279,7 @@
-
- writeJPEG();
- JPEGDialog(0);
--
-+
- fullname = GetDirFullName();
- if (!ISPIPE(fullname[0])) {
- XVCreatedFile(fullname);
-@@ -304,7 +302,7 @@
- static void writeJPEG()
- {
- FILE *fp;
-- int i, nc, rv, w, h, ptype, pfree;
-+ int i, nc, rv, w, h, npixels, ptype, pfree;
- register byte *ip, *ep;
- byte *inpix, *rmap, *gmap, *bmap;
- byte *image8, *image24;
-@@ -322,6 +320,14 @@
- WaitCursor();
- inpix = GenSavePic(&ptype, &w, &h, &pfree, &nc, &rmap, &gmap, &bmap);
-
-+ /* this case may not be possible to trigger, but not totally clear, so... */
-+ npixels = w*h;
-+ if (w <= 0 || h <= 0 || npixels/w < h) {
-+ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
-+ fbasename, w, h);
-+ return;
-+ }
-+
- image8 = image24 = (byte *) NULL;
-
-
-@@ -332,37 +338,46 @@
- if (i==nc) colorType = F_GREYSCALE; /* made it all the way through */
- }
- else { /* PIC24 */
-- for (i=0,ip=inpix; i<w*h && ip[0]==ip[1] && ip[1]==ip[2]; i++,ip+=3);
-- if (i==w*h) colorType = F_GREYSCALE; /* all the way through */
-+ for (i=0,ip=inpix; i<npixels && ip[0]==ip[1] && ip[1]==ip[2]; i++,ip+=3);
-+ if (i==npixels) colorType = F_GREYSCALE; /* all the way through */
- }
- }
--
--
-+
-+
- /* first thing to do is build an 8/24-bit Greyscale/TrueColor image
- (meaning: non-colormapped) */
--
-+
- if (colorType == F_GREYSCALE) { /* build an 8-bit Greyscale image */
-- image8 = (byte *) malloc((size_t) w * h);
-+ image8 = (byte *) malloc((size_t) npixels);
- if (!image8) FatalError("writeJPEG: unable to malloc image8\n");
--
-+
- if (ptype == PIC8) {
-- for (i=0,ip=image8,ep=inpix; i<w * h; i++, ip++, ep++)
-+ for (i=0,ip=image8,ep=inpix; i<npixels; i++, ip++, ep++)
- *ip = MONO(rmap[*ep], gmap[*ep], bmap[*ep]);
- }
- else { /* PIC24 */
-- for (i=0,ip=image8,ep=inpix; i<w*h; i++, ip++, ep+=3)
-+ for (i=0,ip=image8,ep=inpix; i<npixels; i++, ip++, ep+=3)
- *ip = MONO(ep[0],ep[1],ep[2]);
- }
- }
-
- else { /* *not* F_GREYSCALE */
- if (ptype == PIC8) {
-- image24 = (byte *) malloc((size_t) w * h * 3);
-+ int count = 3*npixels;
-+
-+ /* already know npixels > 0 (above) */
-+ if (count/3 < npixels) {
-+ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
-+ fbasename, w, h);
-+ return;
-+ }
-+
-+ image24 = (byte *) malloc((size_t) count);
- if (!image24) { /* this simply isn't going to work */
- FatalError("writeJPEG: unable to malloc image24\n");
- }
-
-- for (i=0, ip=image24, ep=inpix; i<w*h; i++, ep++) {
-+ for (i=0, ip=image24, ep=inpix; i<npixels; i++, ep++) {
- *ip++ = rmap[*ep];
- *ip++ = gmap[*ep];
- *ip++ = bmap[*ep];
-@@ -374,16 +389,16 @@
- }
- }
-
--
-+
- /* in any event, we've got some valid image. Do the JPEG Thing */
- rv = writeJFIF(fp, (colorType==F_GREYSCALE) ? image8 : image24,
- w, h, colorType);
--
-+
- if (colorType == F_GREYSCALE) free(image8);
- else if (ptype == PIC8) free(image24);
-
- if (pfree) free(inpix);
--
-+
- if (CloseOutFile(fp, filename, rv) == 0) DirBox(0);
- SetCursors(-1);
- }
-@@ -400,7 +415,7 @@
-
-
- /**************************************************/
--METHODDEF void xv_error_exit(cinfo)
-+METHODDEF void xv_error_exit(cinfo)
- j_common_ptr cinfo;
- {
- my_error_ptr myerr;
-@@ -412,7 +427,7 @@
-
-
- /**************************************************/
--METHODDEF void xv_error_output(cinfo)
-+METHODDEF void xv_error_output(cinfo)
- j_common_ptr cinfo;
- {
- my_error_ptr myerr;
-@@ -464,7 +479,7 @@
- FILE *fp;
- static byte *pic;
- long filesize;
-- int i,w,h,bperpix;
-+ int i,w,h,bperpix,bperline,count;
-
-
- fbasename = BaseName(fname);
-@@ -546,16 +561,16 @@
- if (cinfo.jpeg_color_space == JCS_GRAYSCALE) {
- cinfo.out_color_space = JCS_GRAYSCALE;
- cinfo.quantize_colors = FALSE;
--
-+
- SetISTR(ISTR_INFO,"Loading %dx%d Greyscale JPEG (%ld bytes)...",
- w,h,filesize);
--
-+
- for (i=0; i<256; i++) pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
- }
- else {
- cinfo.out_color_space = JCS_RGB;
- cinfo.quantize_colors = FALSE; /* default: give 24-bit image to XV */
--
-+
- if (!quick && picType==PIC8 && conv24MB.flags[CONV24_LOCK] == 1) {
- /*
- * we're locked into 8-bit mode:
-@@ -563,23 +578,23 @@
- * if CONV24_SLOW, use JPEG's two-pass quantizer
- * if CONV24_BEST, or other, ask for 24-bit image and hand it to XV
- */
--
-+
- cinfo.desired_number_of_colors = 256;
--
-+
- if (conv24 == CONV24_FAST || conv24 == CONV24_SLOW) {
- cinfo.quantize_colors = TRUE;
- state824=1; /* image was converted from 24 to 8 bits */
--
-+
- cinfo.two_pass_quantize = (conv24 == CONV24_SLOW);
- }
- }
--
-+
- SetISTR(ISTR_INFO,"Loading %dx%d Color JPEG (%ld bytes)...",
- w,h,filesize);
- }
--
-+
- jpeg_calc_output_dimensions(&cinfo); /* note colorspace changes... */
--
-+
-
- if (cinfo.output_components != 1 && cinfo.output_components != 3) {
- SetISTR(ISTR_WARNING, "%s: can't read %d-plane JPEG file!",
-@@ -594,7 +609,18 @@
- bperpix = cinfo.output_components;
- pinfo->type = (bperpix == 1) ? PIC8 : PIC24;
-
-- pic = (byte *) malloc((size_t) (w * h * bperpix));
-+ bperline = w * bperpix;
-+ count = h * bperline;
-+ if (w <= 0 || h <= 0 || bperline/w < bperpix || count/h < bperline) {
-+ SetISTR(ISTR_WARNING, "%s: image dimensions too large (%dx%d)",
-+ fbasename, w, h);
-+ jpeg_destroy_decompress(&cinfo);
-+ fclose(fp);
-+ if (comment) free(comment);
-+ return 0;
-+ }
-+
-+ pic = (byte *) malloc((size_t) count);
- if (!pic) {
- SetISTR(ISTR_WARNING, "%s: can't read JPEG file - out of memory",
- fbasename);
-@@ -603,15 +629,24 @@
- if (comment) free(comment);
- return 0;
- }
--
-+
- jpeg_start_decompress(&cinfo);
-
- while (cinfo.output_scanline < cinfo.output_height) {
-+ if (cinfo.output_scanline < 0) { /* should never happen, but... */
-+ SetISTR(ISTR_WARNING, "%s: invalid negative scanline (%d)",
-+ fbasename, cinfo.output_scanline);
-+ jpeg_destroy_decompress(&cinfo);
-+ fclose(fp);
-+ if (comment) free(comment);
-+ free(pic);
-+ return 0;
-+ }
- rowptr[0] = (JSAMPROW) &pic[cinfo.output_scanline * w * bperpix];
- (void) jpeg_read_scanlines(&cinfo, rowptr, (JDIMENSION) 1);
- }
-
--
-+
-
- /* return 'PICINFO' structure to XV */
-
-@@ -623,7 +658,7 @@
- if (cinfo.out_color_space == JCS_GRAYSCALE) {
- sprintf(pinfo->fullInfo, "Greyscale JPEG. (%ld bytes)", filesize);
- pinfo->colType = F_GREYSCALE;
--
-+
- for (i=0; i<256; i++) pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
- }
- else {
-@@ -638,10 +673,10 @@
- }
- }
- }
--
-- sprintf(pinfo->shrtInfo, "%dx%d %s JPEG. ", w,h,
-+
-+ sprintf(pinfo->shrtInfo, "%dx%d %s JPEG. ", w,h,
- (cinfo.out_color_space == JCS_GRAYSCALE) ? "Greyscale " : "Color ");
--
-+
- pinfo->comment = comment;
-
- jpeg_finish_decompress(&cinfo);
-@@ -651,8 +686,8 @@
- comment = (char *) NULL;
- return 1;
- }
--
--
-+
-+
-
-
- /**************************************************/
-@@ -660,7 +695,7 @@
- j_decompress_ptr cinfo;
- {
- struct jpeg_source_mgr *datasrc = cinfo->src;
--
-+
- if (datasrc->bytes_in_buffer == 0) {
- if (! (*datasrc->fill_input_buffer) (cinfo))
- ERREXIT(cinfo, JERR_CANT_SUSPEND);
-@@ -688,7 +723,7 @@
- }
- else comment = (char *) realloc(comment, strlen(comment) + length + 1);
- if (!comment) FatalError("out of memory in xv_process_comment");
--
-+
- oldsp = sp = comment + strlen(comment);
- hasnull = 0;
-
-@@ -770,19 +805,19 @@
-
- sprintf(xvcmt, "%sXV %s Quality = %d, Smoothing = %d\n",
- CREATOR_STR, REVDATE, qDial.val, smDial.val);
--
-+
- if (picComments) { /* append XV comment */
- char *sp, *sp1; int done;
-
- i = strlen(picComments);
- comment = (char *) malloc(i + strlen(xvcmt) + 2 + 1);
- if (!comment) FatalError("out of memory in writeJFIF()");
--
-+
- strcpy(comment, picComments);
--
-+
- /* see if there's a line that starts with 'CREATOR: ' in the
- comments. If there is, rip it out. */
--
-+
- sp = comment; done = 0;
- while (!done && *sp) {
- if (strncmp(sp, CREATOR_STR, strlen(CREATOR_STR)) == 0) {
-@@ -801,7 +836,7 @@
- }
- }
-
-- /* count # of \n's at end of comment.
-+ /* count # of \n's at end of comment.
- If none, add 2. If one, add 1. If two or more, add none. */
-
- sp = comment + strlen(comment);
-@@ -814,15 +849,15 @@
- strcat(comment, xvcmt);
- }
- else comment = xvcmt;
--
--
-+
-+
- jpeg_write_marker(&cinfo,JPEG_COM,(byte *) comment,(u_int) strlen(comment));
--
-+
- while (cinfo.next_scanline < cinfo.image_height) {
- rowptr[0] = (JSAMPROW) &pic[cinfo.next_scanline * w * bperpix];
- (void) jpeg_write_scanlines(&cinfo, rowptr, (JDIMENSION) 1);
- }
--
-+
- jpeg_finish_compress(&cinfo);
- jpeg_destroy_compress(&cinfo);
- return 0;
-diff -ruN xv-3.10a/xvmisc.c xv-3.10a-bugfixes/xvmisc.c
---- xv-3.10a/xvmisc.c 1995-01-13 15:41:34.000000000 -0800
-+++ xv-3.10a-bugfixes/xvmisc.c 2005-03-20 22:47:06.000000000 -0800
-@@ -28,6 +28,8 @@
- * int xvbcmp (s1, s2, length)
- * void xvbzero(s, length)
- * char *xv_strstr(s1, s2)
-+ * FILE *xv_fopen(str, str)
-+ * void xv_mktemp(str)
- * void Timer(milliseconds)
- */
-
-@@ -36,6 +38,10 @@
- #define NEEDSTIME
- #include "xv.h"
-
-+#ifdef __linux__ /* probably others, too, but being conservative */
-+# include <unistd.h> /* getwd() */
-+#endif
-+
- #include "bits/fc_left"
- #include "bits/fc_leftm"
- #include "bits/fc_left1"
-@@ -61,12 +67,12 @@
-
- /* the following fakes 'XSetWMProtocols(theDisp, win, &atom_DELWIN, 1);' */
-
-- if (! atom_PROTOCOLS)
-+ if (! atom_PROTOCOLS)
- atom_PROTOCOLS = XInternAtom (theDisp, "WM_PROTOCOLS", False);
-
- if (atom_PROTOCOLS == None) return;
-
-- XChangeProperty(theDisp, win, atom_PROTOCOLS, XA_ATOM, 32,
-+ XChangeProperty(theDisp, win, atom_PROTOCOLS, XA_ATOM, 32,
- PropModeReplace, (unsigned char *) &atom_DELWIN, 1);
- }
-
-@@ -91,9 +97,9 @@
- x = y = 1;
- i = XParseGeometry(geom,&x,&y, (unsigned int *) &w, (unsigned int *) &h);
-
-- if ((i&XValue || i&YValue)) hints.flags = USPosition;
-+ if ((i&XValue || i&YValue)) hints.flags = USPosition;
- else hints.flags = PPosition;
--
-+
- if (!usesize || !(i&WidthValue)) w = defw;
- if (!usesize || !(i&HeightValue)) h = defh;
-
-@@ -130,7 +136,7 @@
- xswamask = CWBackPixel | CWBorderPixel | CWColormap;
- if (!usesize) xswamask |= CWBitGravity;
-
-- win = XCreateWindow(theDisp, rootW, x, y, (u_int) w, (u_int) h,
-+ win = XCreateWindow(theDisp, rootW, x, y, (u_int) w, (u_int) h,
- (u_int) bwidth, (int) dispDEEP, InputOutput,
- theVisual, xswamask, &xswa);
- if (!win) return(win); /* leave immediately if couldn't create */
-@@ -152,7 +158,7 @@
-
- return(win);
- }
--
-+
-
-
- /**************************************************/
-@@ -164,7 +170,7 @@
- XDrawString(theDisp, win, theGC, x, y, str, (int) strlen(str));
- }
-
--
-+
- /**************************************************/
- void CenterString(win,x,y,str)
- Window win;
-@@ -174,7 +180,7 @@
- DrawString(win, CENTERX(mfinfo, x, str), CENTERY(mfinfo, y), str);
- }
-
--
-+
- /**************************************************/
- void ULineString(win,x,y,str)
- Window win;
-@@ -182,11 +188,11 @@
- char *str;
- {
- DrawString(win, x, y, str);
-- XDrawLine(theDisp, win, theGC, x, y+DESCENT-1,
-+ XDrawLine(theDisp, win, theGC, x, y+DESCENT-1,
- x+StringWidth(str), y+DESCENT-1);
- }
-
--
-+
- /**************************************************/
- int StringWidth(str)
- char *str;
-@@ -194,13 +200,13 @@
- return(XTextWidth(mfinfo, str, (int) strlen(str)));
- }
-
--
-+
- /**************************************************/
- int CursorKey(ks, shift, dotrans)
- KeySym ks;
- int shift, dotrans;
- {
-- /* called by the KeyPress/KeyRelease event handler to determine if a
-+ /* called by the KeyPress/KeyRelease event handler to determine if a
- given keypress is a cursor key. More complex than you'd think, since
- certain Sun Keyboards generate a variety of odd keycodes, and not all
- keyboards *have* all these keys. Note that 'shifted' arrow keys
-@@ -225,16 +231,16 @@
-
- int i = CK_NONE;
-
-- if (ks==XK_Up || ks==XK_KP_Up ||
-+ if (ks==XK_Up || ks==XK_KP_Up ||
- ks==XK_KP_8 || ks==XK_F28) i=CK_UP;
-
-- else if (ks==XK_Down || ks==XK_KP_Down ||
-+ else if (ks==XK_Down || ks==XK_KP_Down ||
- ks==XK_KP_2 || ks==XK_F34) i=CK_DOWN;
-
-- else if (ks==XK_Left || ks==XK_KP_Left ||
-+ else if (ks==XK_Left || ks==XK_KP_Left ||
- ks==XK_KP_4 || ks==XK_F30) i=CK_LEFT;
-
-- else if (ks==XK_Right || ks==XK_KP_Right ||
-+ else if (ks==XK_Right || ks==XK_KP_Right ||
- ks==XK_KP_6 || ks==XK_F32) i=CK_RIGHT;
-
- else if (ks==XK_Prior || ks==XK_KP_Prior ||
-@@ -257,7 +263,7 @@
- else if (i==CK_UP) i=CK_PAGEUP;
- else if (i==CK_DOWN) i=CK_PAGEDOWN;
- }
--
-+
- return i;
- }
-
-@@ -334,9 +340,9 @@
- ev.window = win;
- ev.x = x; ev.y = y; ev.width = w; ev.height = h;
- ev.count = 0;
--
-+
- XSendEvent(theDisp, win, False, NoEventMask, (XEvent *) &ev);
--}
-+}
-
-
- /***********************************/
-@@ -381,7 +387,7 @@
- u_int w, h;
- u_long bg;
- {
-- /* stipple a rectangular region by drawing 'bg' where there's 1's
-+ /* stipple a rectangular region by drawing 'bg' where there's 1's
- in the stipple pattern */
-
- XSetFillStyle (theDisp, theGC, FillStippled);
-@@ -400,7 +406,7 @@
- unsigned int w,h;
- unsigned long hi, lo, bg;
- {
-- int i,r,x1,y1;
-+ int i, x1, y1;
-
- x1 = x + (int) w;
- y1 = y + (int) h;
-@@ -413,7 +419,7 @@
- XDrawLine(theDisp, win, theGC, x+i, y1-i, x+i, y+i);
- XDrawLine(theDisp, win, theGC, x+i, y+i, x1-i, y+i);
- }
--
-+
- /* draw bot-right */
- XSetForeground(theDisp, theGC, (inout==R3D_OUT) ? lo : hi);
-
-@@ -431,18 +437,18 @@
- }
- }
- }
--
-+
-
-
- /**************************************************/
- void SetCropString()
- {
- /* sets the crop string in the info box to be correct. should
-- be called whenever 'but[BCROP].active', cXOFF,cYOFF,cWIDE,cHIGH
-+ be called whenever 'but[BCROP].active', cXOFF,cYOFF,cWIDE,cHIGH
- are changed */
-
-- if (cpic != pic)
-- SetISTR(ISTR_CROP, "%dx%d rectangle starting at %d,%d",
-+ if (cpic != pic)
-+ SetISTR(ISTR_CROP, "%dx%d rectangle starting at %d,%d",
- cWIDE, cHIGH, cXOFF, cYOFF);
- else SetISTR(ISTR_CROP, "<none>");
- }
-@@ -469,7 +475,7 @@
- char *st;
-
- /* give 'em time to read message */
-- if (infoUp || ctrlUp || anyBrowUp) sleep(3);
-+ if (infoUp || ctrlUp || anyBrowUp) sleep(3);
- else {
- st = GetISTR(ISTR_INFO);
- OpenAlert(st);
-@@ -477,7 +483,7 @@
- CloseAlert();
- }
- }
--
-+
-
- /***********************************/
- void FatalError (identifier)
-@@ -491,7 +497,7 @@
- /***********************************/
- void Quit(i)
- int i;
--{
-+{
- /* called when the program exits. frees everything explictly created
- EXCEPT allocated colors. This is used when 'useroot' is in operation,
- as we have to keep the alloc'd colors around, but we don't want anything
-@@ -521,9 +527,9 @@
- #endif
-
- /* if NOT using stdcmap for images, free stdcmap */
-- if (colorMapMode != CM_STDCMAP) {
-+ if (colorMapMode != CM_STDCMAP) {
- int j;
-- for (j=0; j<stdnfcols; j++)
-+ for (j=0; j<stdnfcols; j++)
- xvFreeColors(theDisp, theCmap, &stdfreecols[j], 1, 0L);
- }
-
-@@ -543,13 +549,13 @@
- if (origlist[j][0] != '/') { /* relative path, prepend 'initdir' */
- sprintf(str,"%s/%s", initdir, origlist[j]);
- if (unlink(str)) {
-- fprintf(stderr,"%s: can't delete '%s' - %s\n",
-+ fprintf(stderr,"%s: can't delete '%s' - %s\n",
- cmd, str, ERRSTR(errno));
- }
- }
- else {
- if (unlink(origlist[j])) {
-- fprintf(stderr,"%s: can't delete '%s' - %s\n",
-+ fprintf(stderr,"%s: can't delete '%s' - %s\n",
- cmd, origlist[j], ERRSTR(errno));
- }
- }
-@@ -567,7 +573,7 @@
- void LoadFishCursors()
- {
- #define fc_w 16
--#define fc_h 16
-+#define fc_h 16
-
- Pixmap flpix,flmpix,fmpix,fmmpix,frpix,frmpix;
- Pixmap fl1pix, fl1mpix, fr1pix, fr1mpix;
-@@ -592,7 +598,7 @@
-
- fr1pix = XCreatePixmapFromBitmapData(theDisp, ctrlW, (char *) fc_right1_bits,
- fc_w, fc_h, 1L, 0L, 1);
-- fr1mpix = XCreatePixmapFromBitmapData(theDisp, ctrlW,
-+ fr1mpix = XCreatePixmapFromBitmapData(theDisp, ctrlW,
- (char *) fc_right1m_bits,
- fc_w, fc_h, 1L, 0L, 1);
-
-@@ -613,7 +619,7 @@
- fr1curs= XCreatePixmapCursor(theDisp, fr1pix,fr1mpix,&fg, &bg, 8,8);
- frcurs = XCreatePixmapCursor(theDisp, frpix, frmpix, &fg, &bg, 8,8);
-
-- if (!flcurs || !fmcurs || !frcurs || !fl1curs || !fr1curs)
-+ if (!flcurs || !fmcurs || !frcurs || !fl1curs || !fr1curs)
- { flcurs = fmcurs = frcurs = (Cursor) NULL; }
- }
-
-@@ -633,8 +639,8 @@
- time(&lastwaittime);
- waiting=1;
- xwmh.input = True;
-- xwmh.icon_pixmap = riconPix;
-- xwmh.icon_mask = riconmask;
-+ xwmh.icon_pixmap = riconPix;
-+ xwmh.icon_mask = riconmask;
- xwmh.flags = (InputHint | IconPixmapHint | IconMaskHint) ;
- if (!useroot && mainW) XSetWMHints(theDisp, mainW, &xwmh);
- if ( useroot && ctrlW) XSetWMHints(theDisp, ctrlW, &xwmh);
-@@ -665,8 +671,8 @@
- if (waiting) {
- waiting=0;
- xwmh.input = True;
-- xwmh.icon_pixmap = iconPix;
-- xwmh.icon_mask = iconmask;
-+ xwmh.icon_pixmap = iconPix;
-+ xwmh.icon_mask = iconmask;
- xwmh.flags = (InputHint | IconPixmapHint | IconMaskHint) ;
- if (!useroot && mainW) XSetWMHints(theDisp, mainW, &xwmh);
- if ( useroot && ctrlW) XSetWMHints(theDisp, ctrlW, &xwmh);
-@@ -694,11 +700,11 @@
-
- XFlush(theDisp);
- }
--
-+
-
- static void set_cursors(mainc, otherc)
- Cursor mainc, otherc;
--{
-+{
- if (!useroot && mainW) XDefineCursor(theDisp, mainW, mainc);
- if (infoW) XDefineCursor(theDisp, infoW, otherc);
- if (ctrlW) XDefineCursor(theDisp, ctrlW, otherc);
-@@ -708,11 +714,11 @@
-
- SetBrowseCursor(otherc);
- SetTextCursor(otherc);
--
-+
- #ifdef HAVE_JPEG
- if (jpegW) XDefineCursor(theDisp, jpegW, otherc);
- #endif
--
-+
- #ifdef HAVE_TIFF
- if (tiffW) XDefineCursor(theDisp, tiffW, otherc);
- #endif
-@@ -725,7 +731,7 @@
- {
- char *basname;
-
-- /* given a complete path name ('/foo/bar/weenie.gif'), returns just the
-+ /* given a complete path name ('/foo/bar/weenie.gif'), returns just the
- 'simple' name ('weenie.gif'). Note that it does not make a copy of
- the name, so don't be modifying it... */
-
-@@ -736,7 +742,7 @@
- return basname;
- }
-
--
-+
- /***************************************************/
- void DrawTempGauge(win, x,y,w,h, ratio, fg,bg,hi,lo, str)
- Window win;
-@@ -773,14 +779,14 @@
- if (numchars) { /* do string */
- if (barwide < maxwide) {
- XSetForeground(theDisp, theGC, bg);
-- XFillRectangle(theDisp, win, theGC, x+3+barwide, y+3,
-+ XFillRectangle(theDisp, win, theGC, x+3+barwide, y+3,
- (u_int) (maxwide-barwide), (u_int) (h-5));
- }
--
-+
- XSetFunction(theDisp, theGC, GXinvert);
- XSetPlaneMask(theDisp, theGC, fg ^ bg);
-
-- XDrawString(theDisp, win, theGC, CENTERX(mfinfo, (x+w/2), str),
-+ XDrawString(theDisp, win, theGC, CENTERX(mfinfo, (x+w/2), str),
- CENTERY(mfinfo, (y+h/2)), str, numchars);
-
- XSetFunction(theDisp, theGC, GXcopy);
-@@ -789,18 +795,18 @@
-
- else if (barwide < maxwide) {
- XDrawLine(theDisp,win,theGC,x+3+barwide, y+h/2 + 0, x+w-3, y+h/2 + 0);
--
-+
- XSetForeground(theDisp, theGC, lo);
- XDrawLine(theDisp,win,theGC,x+3+barwide, y+h/2 + 1, x+w-3, y+h/2 + 1);
--
-+
- XSetForeground(theDisp, theGC, hi);
- XDrawLine(theDisp,win,theGC,x+3+barwide, y+h/2 + 2, x+w-3, y+h/2 + 2);
--
-+
- XSetForeground(theDisp, theGC, bg);
-- XFillRectangle(theDisp, win, theGC, x+3+barwide, y+3,
-+ XFillRectangle(theDisp, win, theGC, x+3+barwide, y+3,
- (u_int) (maxwide-barwide), (u_int) (h/2 - 3));
--
-- XFillRectangle(theDisp, win, theGC, x+3+barwide, y+h/2 + 3,
-+
-+ XFillRectangle(theDisp, win, theGC, x+3+barwide, y+h/2 + 3,
- (u_int) (maxwide-barwide),(u_int)((h-3) - (h/2+3)) + 1);
- }
- }
-@@ -815,35 +821,35 @@
- if (numchars) {
- if (barwide < maxwide) {
- XSetForeground(theDisp, theGC, bg);
-- XFillRectangle(theDisp, win, theGC, x+1+barwide, y+1,
-+ XFillRectangle(theDisp, win, theGC, x+1+barwide, y+1,
- (u_int) (maxwide-barwide), (u_int) (h-1));
- }
--
-+
- XSetFunction(theDisp, theGC, GXinvert);
- XSetPlaneMask(theDisp, theGC, fg ^ bg);
-
-- XDrawString(theDisp, win, theGC, CENTERX(mfinfo, (x+w/2), str),
-+ XDrawString(theDisp, win, theGC, CENTERX(mfinfo, (x+w/2), str),
- CENTERY(mfinfo, (y+h/2)), str, numchars);
-
- XSetFunction(theDisp, theGC, GXcopy);
- XSetPlaneMask(theDisp, theGC, AllPlanes);
- }
--
-+
- else if (barwide < maxwide) {
- XDrawLine(theDisp, win, theGC, x+1+barwide, y+h/2, x+w-1, y+h/2);
--
-+
- XSetForeground(theDisp, theGC, bg);
-- XFillRectangle(theDisp, win, theGC, x+1+barwide, y+1,
-+ XFillRectangle(theDisp, win, theGC, x+1+barwide, y+1,
- (u_int) (maxwide-barwide), (u_int) (h/2 - 1));
--
-- XFillRectangle(theDisp, win, theGC, x+1+barwide, y+h/2 + 1,
-+
-+ XFillRectangle(theDisp, win, theGC, x+1+barwide, y+h/2 + 1,
- (u_int)(maxwide-barwide),(u_int)(((h-1) - (h/2+1))+1));
- }
- }
-
- XFlush(theDisp);
- }
--
-+
-
-
- /***************************************************/
-@@ -852,7 +858,7 @@
- char *str;
- {
- /* called during 'long' operations (algorithms, smoothing, etc.) to
-- give some indication that the program will ever finish. Draws a
-+ give some indication that the program will ever finish. Draws a
- temperature gauge in either mainW (if not useRoot), or ctrlW.
- Tries to be clever: only draws gauge if it looks like the operation is
- going to take more than a few seconds. Calling with val == max removes
-@@ -887,7 +893,7 @@
- if (!waiting) { /* not waiting (or not waiting any longer) */
- if (nowTime == lastTime && val<max) return; /* max one draw per second */
- lastTime = nowTime;
-- DrawTempGauge(win, xpos, ypos, 100,19, doneness,
-+ DrawTempGauge(win, xpos, ypos, 100,19, doneness,
- infofg,infobg,hicol,locol,str);
-
- if (val >= max) { /* remove temp gauge */
-@@ -945,7 +951,7 @@
- */
-
- if (src==dst || len<=0) return; /* nothin' to do */
--
-+
- if (src<dst && src+len>dst) { /* do a backward copy */
- src = src + len - 1;
- dst = dst + len - 1;
-@@ -957,7 +963,7 @@
- for ( ; len>0; len--, src++, dst++) *dst = *src;
- }
- }
--
-+
-
- /***************************************************/
- int xvbcmp (s1, s2, len)
-@@ -987,7 +993,7 @@
- {
- /* gets the current working directory. No trailing '/' */
-
-- char *rv;
-+ char *rv;
-
- #ifdef USE_GETCWD
- rv = (char *) getcwd(buf, buflen);
-@@ -996,7 +1002,7 @@
- #endif
-
- if (!rv || strlen(rv)==0) {
-- if (((rv=(char *) getenv("PWD"))==NULL) &&
-+ if (((rv=(char *) getenv("PWD"))==NULL) &&
- ((rv=(char *) getenv("cwd"))==NULL)) rv = "./";
- strcpy(buf, rv);
- }
-@@ -1006,7 +1012,7 @@
-
- /***************************************************/
-
--/*
-+/*
- * Source code for the "strstr" library routine.
- *
- * Copyright 1988 Regents of the University of California
-@@ -1066,6 +1072,22 @@
- }
-
-
-+/***************************************************/
-+/* GRR 20050320: added actual mk[s]temp() call... */
-+void xv_mktemp(buf, fname)
-+ char *buf, *fname;
-+{
-+#ifndef VMS
-+ sprintf(buf, "%s/%s", tmpdir, fname);
-+#else
-+ sprintf(buf, "Sys$Disk:[]%s", fname);
-+#endif
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(buf));
-+#else
-+ mktemp(buf);
-+#endif
-+}
-
-
- /*******/
-@@ -1124,7 +1146,7 @@
- {
- /* default Timer() method now uses 'select()', which probably works
- on all systems *anyhow* (except for VMS...) */
--
-+
- struct timeval time;
-
- time.tv_sec = usec / 1000000L;
-diff -ruN xv-3.10a/xvpbm.c xv-3.10a-bugfixes/xvpbm.c
---- xv-3.10a/xvpbm.c 1995-01-03 13:23:44.000000000 -0800
-+++ xv-3.10a-bugfixes/xvpbm.c 2005-04-03 14:25:28.000000000 -0700
-@@ -115,7 +115,7 @@
- }
-
- return rv;
--}
-+}
-
-
-
-@@ -127,15 +127,21 @@
- {
- byte *pic8;
- byte *pix;
-- int i,j,bit,w,h;
-+ int i,j,bit,w,h,npixels;
-+
-+ w = pinfo->w;
-+ h = pinfo->h;
-
-- w = pinfo->w; h = pinfo->h;
-- pic8 = (byte *) calloc((size_t) w * h, (size_t) 1);
-- if (!pic8) return pbmError(bname, "couldn't malloc 'pic8'");
-+ npixels = w * h;
-+ if (w <= 0 || h <= 0 || npixels/w != h)
-+ return pbmError(bname, "image dimensions too large");
-+
-+ pic8 = (byte *) calloc((size_t) npixels, (size_t) 1);
-+ if (!pic8) FatalError("couldn't malloc 'pic8' for PBM");
-
- pinfo->pic = pic8;
- pinfo->type = PIC8;
-- sprintf(pinfo->fullInfo, "PBM, %s format. (%ld bytes)",
-+ sprintf(pinfo->fullInfo, "PBM, %s format. (%ld bytes)",
- (raw) ? "raw" : "ascii", filesize);
- sprintf(pinfo->shrtInfo, "%dx%d PBM.", w, h);
- pinfo->colType = F_BWDITHER;
-@@ -153,7 +159,7 @@
- for (j=0; j<w; j++, pix++) *pix = getbit(fp, pinfo);
- }
-
-- if (numgot != w*h) pbmError(bname, TRUNCSTR);
-+ if (numgot != npixels) pbmError(bname, TRUNCSTR);
- if (garbage) {
- return(pbmError(bname, "Garbage characters in image data."));
- }
-@@ -192,17 +198,23 @@
- int raw, maxv;
- {
- byte *pix, *pic8;
-- int i,j,bitshift,w,h, holdmaxv;
-+ int i,j,bitshift,w,h,npixels, holdmaxv;
-+
-
-+ w = pinfo->w;
-+ h = pinfo->h;
-
-- w = pinfo->w; h = pinfo->h;
-- pic8 = (byte *) calloc((size_t) w*h, (size_t) 1);
-- if (!pic8) return(pbmError(bname, "couldn't malloc 'pic8'"));
-+ npixels = w * h;
-+ if (w <= 0 || h <= 0 || npixels/w != h)
-+ return pbmError(bname, "image dimensions too large");
-+
-+ pic8 = (byte *) calloc((size_t) npixels, (size_t) 1);
-+ if (!pic8) FatalError("couldn't malloc 'pic8' for PGM");
-
-
- pinfo->pic = pic8;
- pinfo->type = PIC8;
-- sprintf(pinfo->fullInfo, "PGM, %s format. (%ld bytes)",
-+ sprintf(pinfo->fullInfo, "PGM, %s format. (%ld bytes)",
- (raw) ? "raw" : "ascii", filesize);
- sprintf(pinfo->shrtInfo, "%dx%d PGM.", pinfo->w, pinfo->h);
- pinfo->colType = F_GREYSCALE;
-@@ -236,11 +248,11 @@
- }
- }
- else {
-- numgot = fread(pic8, (size_t) 1, (size_t) w*h, fp); /* read raw data */
-+ numgot = fread(pic8, (size_t)1, (size_t)npixels, fp); /* read raw data */
- }
- }
-
-- if (numgot != w*h) pbmError(bname, TRUNCSTR); /* warning only */
-+ if (numgot != npixels) pbmError(bname, TRUNCSTR); /* warning only */
-
- if (garbage) {
- return (pbmError(bname, "Garbage characters in image data."));
-@@ -256,18 +268,24 @@
- PICINFO *pinfo;
- int raw, maxv;
- {
-- byte *pix, *pic24, scale[256], *pic8;
-- int i,j,bitshift, w, h, holdmaxv;
-+ byte *pix, *pic24, scale[256];
-+ int i,j,bitshift, w, h, npixels, bufsize, holdmaxv;
-+
-+ w = pinfo->w;
-+ h = pinfo->h;
-
-- w = pinfo->w; h = pinfo->h;
-+ npixels = w * h;
-+ bufsize = 3*npixels;
-+ if (w <= 0 || h <= 0 || npixels/w != h || bufsize/3 != npixels)
-+ return pbmError(bname, "image dimensions too large");
-
- /* allocate 24-bit image */
-- pic24 = (byte *) calloc((size_t) w*h*3, (size_t) 1);
-- if (!pic24) FatalError("couldn't malloc 'pic24'");
-+ pic24 = (byte *) calloc((size_t) bufsize, (size_t) 1);
-+ if (!pic24) FatalError("couldn't malloc 'pic24' for PPM");
-
- pinfo->pic = pic24;
- pinfo->type = PIC24;
-- sprintf(pinfo->fullInfo, "PPM, %s format. (%ld bytes)",
-+ sprintf(pinfo->fullInfo, "PPM, %s format. (%ld bytes)",
- (raw) ? "raw" : "ascii", filesize);
- sprintf(pinfo->shrtInfo, "%dx%d PPM.", w, h);
- pinfo->colType = F_FULLCOLOR;
-@@ -297,20 +315,20 @@
- }
- }
- else {
-- numgot = fread(pic24, (size_t) 1, (size_t) w*h*3, fp); /* read data */
-+ numgot = fread(pic24, (size_t) 1, (size_t) bufsize, fp); /* read data */
- }
- }
--
-- if (numgot != w*h*3) pbmError(bname, TRUNCSTR);
-+
-+ if (numgot != bufsize) pbmError(bname, TRUNCSTR);
-
- if (garbage)
- return(pbmError(bname, "Garbage characters in image data."));
-
-
-- /* have to scale all RGB values up (Conv24to8 expects RGB values to
-- range from 0-255 */
-+ /* have to scale up all RGB values (Conv24to8 expects RGB values to
-+ range from 0-255) */
-
-- if (maxv<255) {
-+ if (maxv<255) {
- for (i=0; i<=maxv; i++) scale[i] = (i * 255) / maxv;
-
- for (i=0, pix=pic24; i<h; i++) {
-@@ -360,8 +378,8 @@
- pinfo->comment[0] = '\0';
- }
- else {
-- tmpptr = (char *) realloc(pinfo->comment,
-- strlen(pinfo->comment) + strlen(cmt) + 1);
-+ tmpptr = (char *) realloc(pinfo->comment,
-+ strlen(pinfo->comment) + strlen(cmt) + 1);
- if (!tmpptr) FatalError("realloc failure in xvpbm.c getint");
- pinfo->comment = tmpptr;
- }
-@@ -445,8 +463,8 @@
- pinfo->comment[0] = '\0';
- }
- else {
-- tmpptr = (char *) realloc(pinfo->comment,
-- strlen(pinfo->comment) + strlen(cmt) + 1);
-+ tmpptr = (char *) realloc(pinfo->comment,
-+ strlen(pinfo->comment) + strlen(cmt) + 1);
- if (!tmpptr) FatalError("realloc failure in xvpbm.c getint");
- pinfo->comment = tmpptr;
- }
-@@ -490,7 +508,7 @@
- char *comment;
- {
- /* writes a PBM/PGM/PPM file to the already open stream
-- if (raw), writes as RAW bytes, otherwise writes as ASCII
-+ if (raw), writes as RAW bytes, otherwise writes as ASCII
- 'colorstyle' single-handedly determines the type of file written
- if colorstyle==0, (Full Color) a PPM file is written
- if colorstyle==1, (Greyscale) a PGM file is written
-@@ -546,7 +564,7 @@
- }
- }
- else {
-- if (ptype==PIC8)
-+ if (ptype==PIC8)
- fprintf(fp,"%3d %3d %3d ",rmap[*pix], gmap[*pix], bmap[*pix]);
- else
- fprintf(fp,"%3d %3d %3d ",pix[0], pix[1], pix[2]);
-@@ -554,7 +572,7 @@
- len+=12;
- if (len>58) { fprintf(fp,"\n"); len=0; }
- }
--
-+
- pix += (ptype==PIC24) ? 3 : 1;
- }
- }
-@@ -626,10 +644,3 @@
-
- return 0;
- }
--
--
--
--
--
--
--
-diff -ruN xv-3.10a/xvpcx.c xv-3.10a-bugfixes/xvpcx.c
---- xv-3.10a/xvpcx.c 1995-01-10 15:06:37.000000000 -0800
-+++ xv-3.10a-bugfixes/xvpcx.c 2005-03-25 08:10:03.000000000 -0800
-@@ -29,7 +29,7 @@
- #define PCX_YMAXH 11
- /* hres (12,13) and vres (14,15) not used */
- #define PCX_CMAP 16 /* start of 16*3 colormap data */
--#define PCX_PLANES 65
-+#define PCX_PLANES 65
- #define PCX_BPRL 66
- #define PCX_BPRH 67
-
-@@ -51,8 +51,8 @@
- {
- FILE *fp;
- long filesize;
-- char *bname, *errstr;
-- byte hdr[128], *image;
-+ char *bname;
-+ byte hdr[128];
- int i, colors, gray, fullcolor;
-
- pinfo->type = PIC8;
-@@ -64,7 +64,7 @@
- /* open the stream */
- fp = xv_fopen(fname,"r");
- if (!fp) return (pcxError(bname, "unable to open file"));
--
-+
-
- /* figure out the file size */
- fseek(fp, 0L, 2);
-@@ -84,10 +84,10 @@
- return pcxError(bname,"unrecognized magic number");
- }
-
-- pinfo->w = (hdr[PCX_XMAXL] + ((int) hdr[PCX_XMAXH]<<8))
-+ pinfo->w = (hdr[PCX_XMAXL] + ((int) hdr[PCX_XMAXH]<<8))
- - (hdr[PCX_XMINL] + ((int) hdr[PCX_XMINH]<<8));
-
-- pinfo->h = (hdr[PCX_YMAXL] + ((int) hdr[PCX_YMAXH]<<8))
-+ pinfo->h = (hdr[PCX_YMAXL] + ((int) hdr[PCX_YMAXH]<<8))
- - (hdr[PCX_YMINL] + ((int) hdr[PCX_YMINH]<<8));
-
- pinfo->w++; pinfo->h++;
-@@ -96,10 +96,10 @@
- fullcolor = (hdr[PCX_BPP] == 8 && hdr[PCX_PLANES] == 3);
-
- if (DEBUG) {
-- fprintf(stderr,"PCX: %dx%d image, version=%d, encoding=%d\n",
-+ fprintf(stderr,"PCX: %dx%d image, version=%d, encoding=%d\n",
- pinfo->w, pinfo->h, hdr[PCX_VER], hdr[PCX_ENC]);
- fprintf(stderr," BitsPerPixel=%d, planes=%d, BytePerRow=%d, colors=%d\n",
-- hdr[PCX_BPP], hdr[PCX_PLANES],
-+ hdr[PCX_BPP], hdr[PCX_PLANES],
- hdr[PCX_BPRL] + ((int) hdr[PCX_BPRH]<<8),
- colors);
- }
-@@ -190,9 +190,9 @@
-
- if (colors > 2 || (colors==2 && !gray)) { /* grayscale or PseudoColor */
- pinfo->colType = (gray) ? F_GREYSCALE : F_FULLCOLOR;
-- sprintf(pinfo->fullInfo,
-- "%s PCX, %d plane%s, %d bit%s per pixel. (%ld bytes)",
-- (gray) ? "Greyscale" : "Color",
-+ sprintf(pinfo->fullInfo,
-+ "%s PCX, %d plane%s, %d bit%s per pixel. (%ld bytes)",
-+ (gray) ? "Greyscale" : "Color",
- hdr[PCX_PLANES], (hdr[PCX_PLANES]==1) ? "" : "s",
- hdr[PCX_BPP], (hdr[PCX_BPP]==1) ? "" : "s",
- filesize);
-@@ -218,15 +218,21 @@
- byte *hdr;
- {
- /* load an image with at most 8 bits per pixel */
--
-+
- byte *image;
--
-+ int count;
-+
- /* note: overallocation to make life easier... */
-- image = (byte *) malloc((size_t) (pinfo->h + 1) * pinfo->w + 16);
-+ count = (pinfo->h + 1) * pinfo->w + 16; /* up to 65537*65536+16 (~ 65552) */
-+ if (pinfo->w <= 0 || pinfo->h <= 0 || count/pinfo->w < pinfo->h) {
-+ pcxError(fname, "Bogus 8-bit PCX file!!");
-+ return (0);
-+ }
-+ image = (byte *) malloc((size_t) count);
- if (!image) FatalError("Can't alloc 'image' in pcxLoadImage8()");
--
-- xvbzero((char *) image, (size_t) ((pinfo->h+1) * pinfo->w + 16));
--
-+
-+ xvbzero((char *) image, (size_t) count);
-+
- switch (hdr[PCX_BPP]) {
- case 1: pcxLoadRaster(fp, image, 1, hdr, pinfo->w, pinfo->h); break;
- case 8: pcxLoadRaster(fp, image, 8, hdr, pinfo->w, pinfo->h); break;
-@@ -249,25 +255,33 @@
- byte *hdr;
- {
- byte *pix, *pic24, scale[256];
-- int c, i, j, w, h, maxv, cnt, planes, bperlin, nbytes;
--
-+ int c, i, j, w, h, maxv, cnt, planes, bperlin, nbytes, count;
-+
- w = pinfo->w; h = pinfo->h;
--
-- planes = (int) hdr[PCX_PLANES];
-- bperlin = hdr[PCX_BPRL] + ((int) hdr[PCX_BPRH]<<8);
--
-+
-+ planes = (int) hdr[PCX_PLANES]; /* 255 max, but can't get here unless = 3 */
-+ bperlin = hdr[PCX_BPRL] + ((int) hdr[PCX_BPRH]<<8); /* 65535 max */
-+
-+ j = h*planes; /* w and h are limited to 65536, planes to 3 */
-+ count = w*j; /* ...so this could wrap up to 3 times */
-+ nbytes = bperlin*j; /* ...and this almost 3 times */
-+ if (w <= 0 || h <= 0 || planes <= 0 || bperlin <= 0 ||
-+ j/h < planes || count/w < j || nbytes/bperlin < j) {
-+ pcxError(fname, "Bogus 24-bit PCX file!!");
-+ return (0);
-+ }
-+
- /* allocate 24-bit image */
-- pic24 = (byte *) malloc((size_t) w*h*planes);
-- if (!pic24) FatalError("couldn't malloc 'pic24'");
--
-- xvbzero((char *) pic24, (size_t) w*h*planes);
--
-+ pic24 = (byte *) malloc((size_t) count);
-+ if (!pic24) FatalError("Can't malloc 'pic24' in pcxLoadImage24()");
-+
-+ xvbzero((char *) pic24, (size_t) count);
-+
- maxv = 0;
- pix = pinfo->pic = pic24;
- i = 0; /* planes, in this while loop */
- j = 0; /* bytes per line, in this while loop */
-- nbytes = bperlin*h*planes;
--
-+
- while (nbytes > 0 && (c = getc(fp)) != EOF) {
- if ((c & 0xC0) == 0xC0) { /* have a rep. count */
- cnt = c & 0x3F;
-@@ -275,9 +289,9 @@
- if (c == EOF) { getc(fp); break; }
- }
- else cnt = 1;
--
-+
- if (c > maxv) maxv = c;
--
-+
- while (cnt-- > 0) {
- if (j < w) {
- *pix = c;
-@@ -297,19 +311,19 @@
- }
- }
- }
--
--
-+
-+
- /* scale all RGB to range 0-255, if they aren't */
-
-- if (maxv<255) {
-+ if (maxv<255) {
- for (i=0; i<=maxv; i++) scale[i] = (i * 255) / maxv;
--
-+
- for (i=0, pix=pic24; i<h; i++) {
- if ((i&0x3f)==0) WaitCursor();
- for (j=0; j<w*planes; j++, pix++) *pix = scale[*pix];
- }
- }
--
-+
- return 1;
- }
-
-@@ -321,13 +335,13 @@
- byte *image, *hdr;
- int depth,w,h;
- {
-- /* supported: 8 bits per pixel, 1 plane, or 1 bit per pixel, 1-8 planes */
-+ /* supported: 8 bits per pixel, 1 plane; or 1 bit per pixel, 1-8 planes */
-
- int row, bcnt, bperlin, pad;
- int i, j, b, cnt, mask, plane, pmask;
- byte *oldimage;
-
-- bperlin = hdr[PCX_BPRL] + ((int) hdr[PCX_BPRH]<<8);
-+ bperlin = hdr[PCX_BPRL] + ((int) hdr[PCX_BPRH]<<8); /* 65535 max */
- if (depth == 1) pad = (bperlin * 8) - w;
- else pad = bperlin - w;
-
-@@ -342,7 +356,7 @@
- if (b == EOF) { getc(fp); return; }
- }
- else cnt = 1;
--
-+
- for (i=0; i<cnt; i++) {
- if (depth == 1) {
- for (j=0, mask=0x80; j<8; j++) {
-@@ -351,12 +365,12 @@
- }
- }
- else *image++ = (byte) b;
--
-+
- bcnt++;
--
-+
- if (bcnt == bperlin) { /* end of a line reached */
- bcnt = 0;
-- plane++;
-+ plane++;
-
- if (plane >= (int) hdr[PCX_PLANES]) { /* moved to next row */
- plane = 0;
-@@ -367,13 +381,13 @@
- }
- else { /* next plane, same row */
- image = oldimage;
-- }
-+ }
-
- pmask = 1 << plane;
- }
- }
- }
--}
-+}
-
-
-
-diff -ruN xv-3.10a/xvpds.c xv-3.10a-bugfixes/xvpds.c
---- xv-3.10a/xvpds.c 1995-01-03 13:25:52.000000000 -0800
-+++ xv-3.10a-bugfixes/xvpds.c 2005-04-03 11:31:30.000000000 -0700
-@@ -22,23 +22,23 @@
- Choice of algorithm for 16->8 bit conversion--linear or histogram stretch.
- (adds CONV24_HIST item in "24/8 bit" pull-down menu.)
- Uses any "palette.tab" file in cwd to color PDS/VICAR image.
--
-+
- * 9-2-91 began integration. Much of this code is lifted from vicar.c,
- which I wrote for xloadimage. This is a little simpler, though.
--
-+
- * 10-17-91 pdsuncomp is called with system(), which typically feeds the
- commandline to sh. Make sure that your .profile adds wherever
- you have pdsuncomp to the PATH, like
--
-+
- PATH=$PATH:/usr/local/bin
--
-+
- * 11-15-91 substituted vdcomp from Viking CD's for pdsuncomp. I added
- recognition of - and shut off various messages
--
-+
- * 1-5-92 merged into xv rel 2
--
-+
- * 3-11-92 cleaned up some comments
--
-+
- * 3-24-92 Got some new CD's from NASA of mosics and other processed Viking
- stuff. There are actually records terminated with CRNLCR in
- these images, as well as ones that identify the spacecraft name
-@@ -46,14 +46,14 @@
- yet further to deal with these. There's a Sun 4 XView binary for
- an image display program on these discs, but it's nowhere near as
- neat as the good Mr. Bradley's XV.
--
--
-+
-+
- * Sources of these CD's:
- *
- * National Space Science Data Center
- * Goddard Space Flight Center
- * Code 933.4
-- * Greenbelt, Maryland
-+ * Greenbelt, Maryland
- * (301) 286-6695
- * or call
- * (301) 286-9000 (300,1200,2400 bps)
-@@ -91,10 +91,10 @@
- * Copyright 1989, 1990 by Anthony A. Datri
- *
- * Permission to use, copy, and distribute for non-commercial purposes,
-- * is hereby granted without fee, providing that the above copyright
-+ * is hereby granted without fee, providing that the above copyright
- * notice appear in all copies, that both the copyright notice and this
- * permission notice appear in supporting documentation.
-- *
-+ *
- * In exception to the above, permission to John Bradley is hereby granted to
- * distribute this code as he sees fit within the context of his "xv" image
- * viewer.
-@@ -132,8 +132,8 @@
-
-
- static int lastwasinote = FALSE;
--static char scanbuff [MAX_SIZE],
-- rtbuff [RTBUFFSIZE],
-+static char scanbuff [MAX_SIZE],
-+ rtbuff [RTBUFFSIZE],
- inote [20*COMMENTSIZE],
- infobuff [COMMENTSIZE],
- spacecraft [COMMENTSIZE],
-@@ -203,10 +203,10 @@
- }
- return(count);
-
-- case EOF: *bp='\0'; return(count);
--
-+ case EOF: *bp='\0'; return(count);
-+
- case '\0': return(count);
--
-+
- default: count++; *bp++ = c;
- }
- }
-@@ -242,7 +242,7 @@
- * disc seem to leave off the first two bytes. Sigh. This may sometimes be
- * a distinction between the fixed and variable-record files.
- */
--
-+
- /*******************************************/
- int LoadPDS(fname, pinfo)
- char *fname;
-@@ -250,11 +250,11 @@
- {
- /* returns '1' on success, '0' on failure */
-
-- int tempnum;
-+ int tempnum, bytewidth, bufsize;
- FILE *zf;
- static int isfixed,teco,i,j,itype,vaxbyte,
- recsize,hrecsize,irecsize,isimage,labelrecs,labelsofar,
-- x,y,lpsize,lssize,samplesize,returnp,labelsize,yy;
-+ w,h,lpsize,lssize,samplesize,returnp,labelsize,yy;
- char *tmp;
- char *ftypstr;
- unsigned long filesize;
-@@ -265,7 +265,7 @@
- returnp = isimage = FALSE;
- itype = PDSTRASH;
-
-- teco = i = j = recsize = hrecsize = irecsize = labelrecs = x = y = 0;
-+ teco = i = j = recsize = hrecsize = irecsize = labelrecs = w = h = 0;
- lpsize = lssize = samplesize = labelsize = labelsofar = 0;
-
- (*pdsuncompfname) = (*iname) = (*target) = (*filtname) = (*garbage) = '\0';
-@@ -363,7 +363,7 @@
- * length indicator. If the length indicator is odd, then a pad byte
- * is appended to the end of the record so that all records contain
- * an even number of bytes." */
--
-+
- i=getc(zf);
- j=getc(zf);
- if (j == EOF) {
-@@ -371,7 +371,7 @@
- fclose(zf);
- return 0;
- }
--
-+
- teco = i + (j << 8);
- if (teco % 2) teco++;
-
-@@ -380,7 +380,7 @@
- fclose(zf);
- return 0;
- }
--
-+
- scanbuff[teco]='\0';
- }
-
-@@ -429,11 +429,11 @@
- (sscanf(scanbuff," LABEL_RECORDS = %d", &labelrecs) == 1)) {
- lastwasinote=FALSE;
- continue;
-- } else if (sscanf(scanbuff," IMAGE_LINES = %d",&y) == 1) {
-+ } else if (sscanf(scanbuff," IMAGE_LINES = %d",&h) == 1) {
- isimage=TRUE; lastwasinote=FALSE; continue;
-- } else if (sscanf(scanbuff," LINE_SAMPLES = %d",&x) == 1) {
-+ } else if (sscanf(scanbuff," LINE_SAMPLES = %d",&w) == 1) {
- lastwasinote=FALSE; continue;
-- } else if (sscanf(scanbuff," LINES = %d",&y) == 1) {
-+ } else if (sscanf(scanbuff," LINES = %d",&h) == 1) {
- isimage=TRUE; lastwasinote=FALSE; continue;
- } else if (sscanf(scanbuff," HEADER_RECORD_BYTES = %d",&hrecsize)==1) {
- lastwasinote=FALSE; continue;
-@@ -472,7 +472,7 @@
-
- } else if (sscanf(scanbuff," INSTRUMENT_GAIN_STATE = %s",gainmode)==1) {
- lastwasinote=FALSE; continue;
--
-+
- } else if (sscanf(scanbuff," EDIT_MODE_ID = %s", editmode) == 1) {
- lastwasinote=FALSE; continue;
-
-@@ -531,11 +531,11 @@
- * get my hands on the clown who designed this format...
- * What we basically assume here
- * is that a NOTE record that doesn't end with a " is
-- * followed by some number of continuations, one of which
-+ * followed by some number of continuations, one of which
- * will have a " in it. If this turns out to not be true,
- * well, we'll segmentation fault real soon. We use
- * lastwasinote as a semaphore to indicate that the previous
-- * record was an unfinished NOTE record. We clear the
-+ * record was an unfinished NOTE record. We clear the
- * flag in each of the above record types for potential
- * error recovery, although it really breaks up the beauty
- * of the cascading sscanfs. Dykstra'd love me for this one */
-@@ -568,10 +568,10 @@
- fclose(zf);
- return 0;
- }
--
-+
- vaxbyte = strncmp(sampletype, "VAX_", (size_t) 4) == 0 ||
- strncmp(sampletype, "LSB_", (size_t) 4) == 0;
--
-+
- } else if (itype == VICAR) {
- /* we've got a VICAR file. Let's find out how big the puppy is */
- ungetc(' ', zf);
-@@ -582,8 +582,8 @@
- SetISTR(ISTR_WARNING,"LoadPDS: bad NL in VICAR\n");
- returnp=TRUE;
- }
--
-- if (sscanf(tmp," NL = %d",&y) != 1) {
-+
-+ if (sscanf(tmp," NL = %d",&h) != 1) {
- SetISTR(ISTR_WARNING,"LoadPDS: bad scan NL in VICAR\n");
- returnp=TRUE;
- }
-@@ -593,7 +593,7 @@
- returnp=TRUE;
- }
-
-- if (sscanf(tmp, " NS = %d",&x) != 1) {
-+ if (sscanf(tmp, " NS = %d",&w) != 1) {
- SetISTR(ISTR_WARNING,"LoadPDS: bad scan NS in VICAR\n");
- returnp=TRUE;
- }
-@@ -625,6 +625,13 @@
- returnp=TRUE;
- }
-
-+ /* samplesize can be arbitrarily large (up to int limit) in non-VICAR files */
-+ if (samplesize != 8 && samplesize != 16) {
-+ SetISTR(ISTR_WARNING,"LoadPDS: %d bits per pixel not supported",
-+ samplesize);
-+ returnp=TRUE;
-+ }
-+
- if (returnp) {
- fclose(zf);
- return 0;
-@@ -689,11 +696,19 @@
-
- #ifndef VMS
- sprintf(pdsuncompfname,"%s/xvhuffXXXXXX", tmpdir);
-- mktemp(pdsuncompfname);
-- sprintf(scanbuff,"%s %s - 4 >%s",PDSUNCOMP,fname,pdsuncompfname);
- #else
- strcpy(pdsuncompfname,"sys$disk:[]xvhuffXXXXXX");
-+#endif
-+
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(pdsuncompfname));
-+#else
- mktemp(pdsuncompfname);
-+#endif
-+
-+#ifndef VMS
-+ sprintf(scanbuff,"%s %s - 4 >%s",PDSUNCOMP,fname,pdsuncompfname);
-+#else
- sprintf(scanbuff,"%s %s %s 4",PDSUNCOMP,fname,pdsuncompfname);
- #endif
-
-@@ -727,63 +742,72 @@
- fread(scanbuff, (size_t) labelsize, (size_t) 1, zf);
- }
-
-- x *= samplesize/8;
-+ /* samplesize is bits per pixel; guaranteed at this point to be 8 or 16 */
-+ bytewidth = w * (samplesize/8);
-+ bufsize = bytewidth * h;
-+ if (w <= 0 || h <= 0 || bytewidth/w != (samplesize/8) ||
-+ bufsize/bytewidth != h)
-+ {
-+ SetISTR(ISTR_WARNING,"LoadPDS: image dimensions out of range (%dx%dx%d)",
-+ w, h, samplesize/8);
-+ fclose(zf);
-+ return 0;
-+ }
-
-- image = (byte *) malloc((size_t) x*y);
-+ image = (byte *) malloc((size_t) bufsize);
- if (image == NULL) {
-- SetISTR(ISTR_WARNING,"LoadPDS: couldn't malloc %d",x*y);
- fclose(zf);
- if (isfixed == FALSE)
- unlink(pdsuncompfname);
-- exit(1);
-+ FatalError("LoadPDS: can't malloc image buffer");
- }
-
- if ((lssize || lpsize) &&
- ((itype == PDSFIXED) || (itype == VIKINGFIXED) || (itype == VICAR)) ) {
- /* ARrrrgh. Some of these images have crud intermixed with the image, */
- /* preventing us from freading in one fell swoop */
-- /* (whatever a fell swoop is */
-+ /* (whatever a fell swoop is) */
-
-- for (yy=0; yy<y; yy++) {
-- if (lpsize &&
-- ((teco=(fread(scanbuff,(size_t) lpsize,(size_t) 1,zf))) != 1)) {
-+ for (yy=0; yy<h; yy++) {
-+ if (lpsize &&
-+ (teco=fread(scanbuff,(size_t) lpsize,(size_t) 1,zf)) != 1) {
- SetISTR(ISTR_WARNING, "LoadPDS: unexpected EOF reading prefix");
- fclose(zf);
- return 0;
- }
--
-- if ((teco=(fread(image+(yy*x), (size_t) x, (size_t) 1,zf))) != 1) {
-+
-+ teco = fread(image+(yy*bytewidth), (size_t) bytewidth, (size_t) 1,zf);
-+ if (teco != 1) {
- SetISTR(ISTR_WARNING, "LoadPDS: unexpected EOF reading line %d",yy);
- fclose(zf);
- return 0;
- }
-
-- if (lssize &&
-- ((teco=(fread(scanbuff,(size_t) lssize,(size_t) 1,zf))) != 1)) {
-+ if (lssize &&
-+ (teco=fread(scanbuff,(size_t) lssize,(size_t) 1,zf)) != 1) {
- SetISTR(ISTR_WARNING, "LoadPDS: unexpected EOF reading suffix");
- fclose(zf);
- return 0;
- }
- }
-
-- } else if ((yy=fread(image, (size_t) x*y, (size_t) 1, zf)) != 1) {
-+ } else if ((yy=fread(image, (size_t) bytewidth*h, (size_t) 1, zf)) != 1) {
- SetISTR(ISTR_WARNING,"LoadPDS: error reading image data");
- fclose(zf);
- if (itype==PDSVARIABLE || itype==VIKINGVARIABLE)
- unlink(pdsuncompfname);
--
- return 0;
- }
-
-- fclose(zf);
-+ fclose(zf);
-
-
- if (isfixed == FALSE)
- unlink(pdsuncompfname);
-
- pinfo->pic = image;
-- pinfo->w = x;
-- pinfo->h = y;
-+ pinfo->w = w; /* true pixel-width now (no longer bytewidth!) */
-+ pinfo->h = h;
-
- if (samplesize == 16)
- if (Convert16BitImage(fname, pinfo,
-@@ -798,25 +822,25 @@
- if (pinfo->comment) {
- char tmp[256];
- *(pinfo->comment) = '\0';
--
-+
- sprintf(tmp, "Spacecraft: %-28sTarget: %-32s\n", spacecraft, target);
- strcat(pinfo->comment, tmp);
--
-+
- sprintf(tmp, "Filter: %-32sMission phase: %-24s\n", filtname, mphase);
- strcat(pinfo->comment, tmp);
--
-+
- sprintf(tmp, "Image time: %-28sGain mode: %-29s\n", itime, gainmode);
- strcat(pinfo->comment, tmp);
--
-+
- sprintf(tmp, "Edit mode: %-29sScan mode: %-29s\n", editmode, scanmode);
- strcat(pinfo->comment, tmp);
--
-+
- sprintf(tmp, "Exposure: %-30sShutter mode: %-25s\n", exposure,shuttermode);
- strcat(pinfo->comment, tmp);
--
-+
- sprintf(tmp, "Instrument: %-28sImage time: %-28s\n", iname, itime);
- strcat(pinfo->comment, tmp);
--
-+
- sprintf(tmp, "Image Note: %-28s", inote);
- strcat(pinfo->comment, tmp);
- }
-@@ -868,23 +892,20 @@
- m = 65536 * sizeof(byte);
- lut = (byte *) malloc(m);
- if (lut == NULL) {
-- SetISTR(ISTR_WARNING,"LoadPDS: couldn't malloc %d", m);
-- return 0;
-+ FatalError("LoadPDS: can't malloc LUT buffer");
- }
-- pinfo->w /= 2;
-
- /* allocate histogram table */
- m = 65536 * sizeof(long);
- hist = (long *) malloc(m);
- if (hist == NULL) {
-- SetISTR(ISTR_WARNING,"LoadPDS: couldn't malloc %d", m);
- free(lut);
-- return 0;
-+ FatalError("LoadPDS: can't malloc histogram buffer");
- }
-
- /* check whether histogram file exists */
- #ifdef VMS
-- c = (char *) rindex(strcpy(name,
-+ c = (char *) rindex(strcpy(name,
- (c = (char *) rindex(fname, ':')) ? c+1 : fname),
- ']');
- #else
-@@ -947,14 +968,20 @@
- }
- }
-
-- /* allocate new 8-bit image */
- free(hist);
-+
-+ /* allocate new 8-bit image */
- n = pinfo->w * pinfo->h;
-+ if (pinfo->w <= 0 || pinfo->h <= 0 || n/pinfo->w != pinfo->h) {
-+ SetISTR(ISTR_WARNING,"LoadPDS: image dimensions out of range (%dx%d)",
-+ pinfo->w, pinfo->h);
-+ free(lut);
-+ return 0;
-+ }
- pPix8 = (byte *)malloc(n*sizeof(byte));
- if (pPix8 == NULL) {
-- SetISTR(ISTR_WARNING,"LoadPDS: couldn't malloc %d", n*sizeof(byte));
- free(lut);
-- return 0;
-+ FatalError("LoadPDS: can't malloc 16-to-8-bit conversion buffer");
- }
-
- /* convert the 16-bit image to 8-bit */
-@@ -979,16 +1006,16 @@
- FILE *fp;
- char name[1024], buf[256], *c;
- int i, n, r, g, b;
--
-+
- #ifdef VMS
-- c = (char *) rindex(strcpy(name,
-+ c = (char *) rindex(strcpy(name,
- (c = (char *) rindex(fname, ':')) ? c+1 : fname),
- ']');
- #else
- c = (char *) rindex(strcpy(name, fname), '/');
- #endif /* VMS */
- (void)strcpy(c ? c+1 : name, "palette.tab");
--
-+
- if ((fp = xv_fopen(name, "r")) == NULL)
- return 0;
- for (i = 0; i < 256; i++) {
-@@ -1014,7 +1041,3 @@
-
-
- #endif /* HAVE_PDS */
--
--
--
--
-diff -ruN xv-3.10a/xvpictoppm.c xv-3.10a-bugfixes/xvpictoppm.c
---- xv-3.10a/xvpictoppm.c 1995-01-13 11:57:14.000000000 -0800
-+++ xv-3.10a-bugfixes/xvpictoppm.c 2005-04-10 09:36:04.000000000 -0700
-@@ -77,7 +77,7 @@
- FILE *fp;
- byte *icon8, *pic24, *ip, *pp;
- char buf[256];
-- int i, builtin, w, h, mv;
-+ int i, builtin, w, h, maxval, npixels, p24sz;
-
- fp = stdin;
- builtin = 0;
-@@ -88,42 +88,45 @@
- /* read comments until we see '#END_OF_COMMENTS', or hit EOF */
- while (1) {
- if (!fgets(buf, 256, fp)) errexit();
--
-+
- if (!strncmp(buf, "#END_OF_COMMENTS", (size_t) 16)) break;
-
- else if (!strncmp(buf, "#BUILTIN:", (size_t) 9)) {
- builtin = 1;
-- fprintf(stderr,"Built-In icon: no image to convert!\n");
-+ fprintf(stderr, "Built-in icon: no image to convert\n");
- exit(1);
- }
- }
-
-
- /* read width, height, maxval */
-- if (!fgets(buf, 256, fp) || sscanf(buf, "%d %d %d", &w, &h, &mv) != 3)
-+ if (!fgets(buf, 256, fp) || sscanf(buf, "%d %d %d", &w, &h, &maxval) != 3)
- errexit();
-
-+ npixels = w * h;
-+ p24sz = 3 * npixels;
-
-- if (w<1 || h<1 || mv != 255) {
-- fprintf(stderr,"Bogus thumbnail file!\n");
-+ if (w <= 0 || h <= 0 || maxval != 255 || npixels/w != h || p24sz/3 != npixels)
-+ {
-+ fprintf(stderr, "Thumbnail dimensions out of range\n");
- exit(1);
- }
-
-
- /* read binary data */
-- icon8 = (byte *) malloc((size_t) w * h);
-+ icon8 = (byte *) malloc((size_t) npixels);
- if (!icon8) errexit();
-
-- i = fread(icon8, (size_t) 1, (size_t) w*h, fp);
-- if (i != w*h) errexit();
-+ i = fread(icon8, (size_t) 1, (size_t) npixels, fp);
-+ if (i != npixels) errexit();
-+
-
--
- /* make 24-bit version of icon */
-- pic24 = (byte *) malloc((size_t) w * h * 3);
-+ pic24 = (byte *) malloc((size_t) p24sz);
- if (!pic24) errexit();
-
- /* convert icon from 332 to 24-bit image */
-- for (i=0, ip=icon8, pp=pic24; i<w*h; i++, ip++, pp+=3) {
-+ for (i=0, ip=icon8, pp=pic24; i<npixels; i++, ip++, pp+=3) {
- pp[0] = ( ((int) ((*ip >> 5) & 0x07)) * 255) / 7;
- pp[1] = ( ((int) ((*ip >> 2) & 0x07)) * 255) / 7;
- pp[2] = ( ((int) ((*ip >> 0) & 0x03)) * 255) / 3;
-@@ -160,10 +163,3 @@
-
- if (ferror(fp)) errexit();
- }
--
--
--
--
--
--
--
-diff -ruN xv-3.10a/xvpm.c xv-3.10a-bugfixes/xvpm.c
---- xv-3.10a/xvpm.c 1994-12-22 14:34:40.000000000 -0800
-+++ xv-3.10a-bugfixes/xvpm.c 2005-03-29 08:30:12.000000000 -0800
-@@ -60,7 +60,7 @@
-
- FILE *fp;
- byte *pic8;
-- int isize,i,flipit,w,h;
-+ int isize,i,flipit,w,h,npixels,nRGBbytes;
- char *bname;
-
- bname = BaseName(fname);
-@@ -103,10 +103,11 @@
- thePic.pm_cmtsize = flip4(thePic.pm_cmtsize);
- }
-
-- w = thePic.pm_ncol; h = thePic.pm_nrow;
-+ w = thePic.pm_ncol;
-+ h = thePic.pm_nrow;
-
- /* make sure that the input picture can be dealt with */
-- if ( thePic.pm_nband!=1 ||
-+ if ( thePic.pm_nband!=1 ||
- (thePic.pm_form!=PM_I && thePic.pm_form!=PM_C) ||
- (thePic.pm_form==PM_I && thePic.pm_np>1) ||
- (thePic.pm_form==PM_C && (thePic.pm_np==2 || thePic.pm_np>4)) ) {
-@@ -114,20 +115,27 @@
- fprintf(stderr,"(ie, 1-plane PM_I, or 1-, 3-, or 4-plane PM_C)\n");
-
- return pmError(bname, "PM file in unsupported format");
-- }
-+ }
-
-
- isize = pm_isize(&thePic);
-+ npixels = w*h;
-+ nRGBbytes = 3*npixels;
-+
-+ /* make sure image is more-or-less valid (and no overflows) */
-+ if (isize <= 0 || w <= 0 || h <= 0 || npixels/w < h ||
-+ nRGBbytes/3 < npixels || thePic.pm_cmtsize < 0)
-+ return pmError(bname, "Bogus PM file!!");
-
-- if (DEBUG)
-+ if (DEBUG)
- fprintf(stderr,"%s: LoadPM() - loading a %dx%d %s pic, %d planes\n",
-- cmd, w, h, (thePic.pm_form==PM_I) ? "PM_I" : "PM_C",
-+ cmd, w, h, (thePic.pm_form==PM_I) ? "PM_I" : "PM_C",
- thePic.pm_np);
-
--
-+
- /* allocate memory for picture and read it in */
- thePic.pm_image = (char *) malloc((size_t) isize);
-- if (thePic.pm_image == NULL)
-+ if (thePic.pm_image == NULL)
- return( pmError(bname, "unable to malloc PM picture") );
-
- if (fread(thePic.pm_image, (size_t) isize, (size_t) 1, fp) != 1) {
-@@ -147,7 +155,7 @@
- }
- }
- }
--
-+
- fclose(fp);
-
-
-@@ -155,11 +163,11 @@
- int *intptr;
- byte *pic24, *picptr;
-
-- if ((pic24 = (byte *) malloc((size_t) w*h*3))==NULL) {
-+ if ((pic24 = (byte *) malloc((size_t) nRGBbytes))==NULL) {
- if (thePic.pm_cmt) free(thePic.pm_cmt);
- return( pmError(bname, "unable to malloc 24-bit picture") );
- }
--
-+
- intptr = (int *) thePic.pm_image;
- picptr = pic24;
-
-@@ -190,7 +198,7 @@
- else if (thePic.pm_form == PM_C && thePic.pm_np>1) {
- byte *pic24, *picptr, *rptr, *gptr, *bptr;
-
-- if ((pic24 = (byte *) malloc((size_t) w*h*3))==NULL) {
-+ if ((pic24 = (byte *) malloc((size_t) nRGBbytes))==NULL) {
- if (thePic.pm_cmt) free(thePic.pm_cmt);
- return( pmError(bname, "unable to malloc 24-bit picture") );
- }
-@@ -210,12 +218,12 @@
- pinfo->pic = pic24;
- pinfo->type = PIC24;
- }
--
-+
-
- else if (thePic.pm_form == PM_C && thePic.pm_np==1) {
- /* don't have to convert, just point pic at thePic.pm_image */
- pic8 = (byte *) thePic.pm_image;
-- for (i=0; i<256; i++)
-+ for (i=0; i<256; i++)
- pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i; /* build mono cmap */
-
- pinfo->pic = pic8;
-@@ -228,10 +236,10 @@
- pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
-
- pinfo->frmType = F_PM;
-- pinfo->colType = (thePic.pm_form==PM_I || thePic.pm_np>1)
-+ pinfo->colType = (thePic.pm_form==PM_I || thePic.pm_np>1)
- ? F_FULLCOLOR : F_GREYSCALE;
-- sprintf(pinfo->fullInfo,"PM, %s. (%d plane %s) (%ld bytes)",
-- (thePic.pm_form==PM_I || thePic.pm_np>1)
-+ sprintf(pinfo->fullInfo,"PM, %s. (%d plane %s) (%d bytes)",
-+ (thePic.pm_form==PM_I || thePic.pm_np>1)
- ? "24-bit color" : "8-bit greyscale",
- thePic.pm_np, (thePic.pm_form==PM_I) ? "PM_I" : "PM_C",
- isize + PM_IOHDR_SIZE + thePic.pm_cmtsize);
-@@ -313,7 +321,7 @@
-
- else if (colorstyle == 1) { /* GreyScale: 8 bits per pixel */
- byte rgb[256];
--
-+
- if (ptype == PIC8) {
- for (i=0; i<numcols; i++) rgb[i] = MONO(rmap[i],gmap[i],bmap[i]);
- for (i=0, p=pic; i<w*h; i++, p++) {
-diff -ruN xv-3.10a/xvpopup.c xv-3.10a-bugfixes/xvpopup.c
---- xv-3.10a/xvpopup.c 1995-01-19 10:09:31.000000000 -0800
-+++ xv-3.10a-bugfixes/xvpopup.c 2004-05-16 18:04:13.000000000 -0700
-@@ -1,5 +1,5 @@
--/*
-- * xvpopup.c - popup "Are you sure? Yes/No/Maybe" sort of dialog box
-+/*
-+ * xvpopup.c - pop up "Are you sure? Yes/No/Maybe" sort of dialog box
- *
- * callable functions:
- *
-@@ -20,7 +20,8 @@
-
- #include "xv.h"
-
--#include "bits/icon"
-+#define OMIT_ICON_BITS
-+#include "bits/icon" /* icon_bits[] not used, but icon_width/height are */
-
- #define PUWIDE 400
- #define PUHIGH 170
-@@ -86,8 +87,8 @@
- static char *padMthdNames[] = { "Solid Fill", "Run 'bggen'", "Load Image" };
-
- static int padColDefLen = 9;
--static char *padColDefNames[] = { "black", "red", "yellow", "green",
-- "cyan", "blue", "magenta", "white",
-+static char *padColDefNames[] = { "black", "red", "yellow", "green",
-+ "cyan", "blue", "magenta", "white",
- "50% gray" };
-
- static char *padColDefVals[] = { "black", "red", "yellow", "green",
-@@ -105,8 +106,8 @@
- "Red Balls",
- "Red+Yellow Diamonds" };
-
--static char *padBgDefVals[] = {
-- "black white",
-+static char *padBgDefVals[] = {
-+ "black white",
- "100 100 255 50 50 150",
- "red green blue",
- "black red yellow green blue purple black",
-@@ -150,11 +151,11 @@
- if (wy + h > dispHIGH) wy = dispHIGH - h;
- }
-
--
-+
- if (winCtrPosKludge) {
- wx -= (p_offx + ch_offx);
- wy -= (p_offy + ch_offy);
-- }
-+ }
- else {
- wx -= (ch_offx);
- wy -= (ch_offy);
-@@ -197,7 +198,7 @@
- /* attach controls to popW, now that it exists */
- if (poptyp==ISGRAB) ahideCB.win = popW;
- else if (poptyp == ISPAD) {
--
-+
- if (!padHaveDooDads) {
- DCreate(&padWDial, popW, 16, puhigh-16-100-1,75,100,
- 1, 2048, pWIDE, 10,
-@@ -230,8 +231,8 @@
- XMapWindow(theDisp, padWDial.win);
- XMapWindow(theDisp, padHDial.win);
- XMapWindow(theDisp, padODial.win);
-- }
--
-+ }
-+
-
- XResizeWindow(theDisp, popW, (u_int) puwide, (u_int) puhigh);
- XStoreName (theDisp, popW, wname);
-@@ -257,9 +258,9 @@
- }
- else if (poptyp == ISPAD) {
- BTSetActive(&bts[0], (int) strlen(gsBuf));
-- i = pWIDE * 3; RANGE(i,2048,9999);
-+ i = pWIDE * 3; RANGE(i,2048,9999);
- DSetRange(&padWDial, 1, i, padWDial.val, 10);
-- i = pHIGH * 3; RANGE(i,2048,9999);
-+ i = pHIGH * 3; RANGE(i,2048,9999);
- DSetRange(&padHDial, 1, i, padHDial.val, 10);
-
- DSetActive(&padWDial, (padMode!=PAD_LOAD)); /* DSetRange activates dial */
-@@ -283,14 +284,14 @@
- }
- }
-
-- /* center first button in window around mouse position, with constraint that
-+ /* center first button in window around mouse position, with constraint that
- window be fully on the screen */
-
- CenterMapWindow(popW, 40 + bts[0].x, BUTTH/2 + bts[0].y, puwide, puhigh);
- popUp = poptyp;
-
- /* MUST wait for VisibilityNotify event to come in, else we run the risk
-- of UnMapping the window *before* the Map request completed. This
-+ of UnMapping the window *before* the Map request completed. This
- appears to be bad, (It leaves an empty window frame up.) though it
- generally only happens on slow servers. Better safe than screwed... */
-
-@@ -338,10 +339,10 @@
- button labels have 1-character accellerators at the front, same
- as in PopUp(). Note that it would be suboptimal to make any
- of the 1-character accellerators be the same character as one of
-- the edit-text command keys
-+ the edit-text command keys
-
- Also note that the filter string should only contain normal printable
-- characters (' ' through '\177'), as ctrl chars are pre-filtered
-+ characters (' ' through '\177'), as ctrl chars are pre-filtered
- (ie, interpreted as emacs-like commands) */
-
- gsBuf = buf; gsBufLen = buflen;
-@@ -358,7 +359,7 @@
- gsy = PUHIGH - 10 - BUTTH - 10 - gsh - 20;
-
- gsw = PUWIDE - gsx - 10;
--
-+
- changedGSBuf(); /* careful! popW doesn't exist yet! */
-
- return doPopUp(txt, labels, n, ISGETSTR, "xv prompt");
-@@ -390,7 +391,7 @@
- changedGSBuf(); /* careful! popW doesn't exist yet! */
-
- /* window value gets filled in in doPopUp() */
-- CBCreate(&ahideCB, (Window) NULL,
-+ CBCreate(&ahideCB, (Window) NULL,
- PUWIDE-10-18-StringWidth(HIDESTR),
- gsy+2, HIDESTR, infofg, infobg, hicol, locol);
- ahideCB.val = *pHide;
-@@ -464,8 +465,8 @@
-
- changedGSBuf(); /* careful! popW doesn't exist yet! */
-
-- if (padHaveDooDads) {
-- oldW = padWDial.val;
-+ if (padHaveDooDads) {
-+ oldW = padWDial.val;
- oldH = padHDial.val;
- oldO = padODial.val;
- }
-@@ -496,8 +497,8 @@
- XUnmapWindow(theDisp, padODial.win);
-
- /* load up return values */
-- *pMode = padMode;
-- *pStr = padBuf;
-+ *pMode = padMode;
-+ *pStr = padBuf;
- *pWide = padWDial.val;
- *pHigh = padHDial.val;
- *pOpaque = padODial.val;
-@@ -513,8 +514,6 @@
- /* generates padCol* and padBg* lists used in 'Defaults' MBUTT. Grabs
- all the X resources values it can, and adds appropriate defaults */
-
-- int i;
--
- rd_str_cl("foo", "", 1); /* rebuild database */
-
- build1PadList("color", padColVals, padColNames, &padColLen,
-@@ -526,15 +525,15 @@
- build1PadList("load", padLoadVals, padLoadNames, &padLoadLen,
- (char **) NULL, (char **) NULL, 0);
- }
--
--
-+
-+
- /***************************************************/
- static void build1PadList(typstr, vals, nams, lenp, dvals, dnams, dlen)
- char *typstr, **vals, **nams, **dvals, **dnams;
- int *lenp, dlen;
- {
- int i;
-- char resname[128], name[256], value[256];
-+ char resname[128];
-
- for (i=0; i<*lenp; i++) { /* kill old lists */
- free(nams[i]);
-@@ -548,7 +547,7 @@
- vals[*lenp] = (char *) malloc(strlen(def_str)+1);
- if (!vals[*lenp]) continue;
- strcpy(vals[*lenp], def_str);
--
-+
- sprintf(resname, "pad.%s.name%d", typstr, i);
- if (rd_str_cl(resname, "Dialog.Menu.Slot",0)) { /* and it has a name! */
- nams[*lenp] = (char *) malloc(strlen(def_str)+1);
-@@ -560,13 +559,14 @@
- nams[*lenp] = (char *) malloc((size_t) 32);
- if (!nams[*lenp]) { free(vals[*lenp]); continue; }
- strncpy(nams[*lenp], vals[*lenp], (size_t) 31);
-+ nams[*lenp][31] = '\0';
- }
--
-+
- if (strlen(nams[*lenp]) > (size_t) 20) { /* fix long names */
- char *sp = nams[*lenp] + 18;
- *sp++ = '.'; *sp++ = '.'; *sp++ = '.'; *sp++ = '\0';
- }
--
-+
- *lenp = (*lenp) + 1;
- }
- }
-@@ -583,7 +583,7 @@
- strcpy(nams[*lenp], dnams[i]);
- *lenp = (*lenp) + 1;
- }
--}
-+}
-
-
-
-@@ -605,7 +605,7 @@
- void OpenAlert(txt)
- char *txt;
- {
-- /* pops up a window with txt displayed in it (*no buttons*).
-+ /* pops up a window with txt displayed in it (*no buttons*).
- returns immediately. window is closed by 'CloseAlert()'.
- No 'PopUp()' calls are allowed while an Alert is displayed. */
-
-@@ -624,14 +624,14 @@
- puwide = PUWIDE; puhigh = PUHIGH;
- XResizeWindow(theDisp, popW, (u_int) puwide, (u_int) puhigh);
-
-- /* center last button in window around mouse position, with constraint that
-+ /* center last button in window around mouse position, with constraint that
- window be fully on the screen */
-
- CenterMapWindow(popW, puwide/2, puhigh/2, puwide, puhigh);
- popUp = ISALERT;
-
- /* MUST wait for VisibilityNotify event to come in, else we run the risk
-- of UnMapping the window *before* the Map request completed. This
-+ of UnMapping the window *before* the Map request completed. This
- appears to be bad, (It leaves an empty window frame up.) though it
- generally only happens on slow servers. Better safe than screwed... */
-
-@@ -695,7 +695,7 @@
- XKeyEvent *e = (XKeyEvent *) xev;
- char buf[128]; KeySym ks;
- int stlen, i, shift, ck;
--
-+
- stlen = XLookupString(e,buf,128,&ks,(XComposeStatus *) NULL);
- shift = e->state & ShiftMask;
- ck = CursorKey(ks, shift, 0);
-@@ -725,7 +725,7 @@
- rv = 1;
- }
-
-- if (!rv && (popUp==ISGETSTR || popUp==ISGRAB || popUp==ISPAD)) {
-+ if (!rv && (popUp==ISGETSTR || popUp==ISGRAB || popUp==ISPAD)) {
- if (e->window == popW) { doGetStrKey(buf[0]); rv = 1; }
- }
- }
-@@ -775,10 +775,10 @@
- int i, inbreak, lineno, top, hardcr, maxln, len[TR_MAXLN];
-
- XSetForeground(theDisp, theGC, fg);
--
-+
- sp = txt; lineno = hardcr = 0;
-
-- maxln = h / LINEHIGH;
-+ maxln = h / LINEHIGH;
- RANGE(maxln,0,TR_MAXLN);
- while (*sp && lineno<maxln) {
-
-@@ -797,7 +797,7 @@
- while (XTextWidth(mfinfo, sp, (int)(ep-sp))<= w && *ep && *ep!='\n') ep++;
- if (*ep=='\n') { ep++; hardcr=1; } /* eat newline */
-
-- /* if we got too wide, back off until we find a break position
-+ /* if we got too wide, back off until we find a break position
- (last char before a space or a '/') */
-
- if (XTextWidth(mfinfo, sp, (int)(ep-sp)) > w) {
-@@ -812,7 +812,7 @@
- }
-
- start[lineno] = sp; len[lineno] = ep-sp;
--
-+
- /* make sure we don't print a trailing '\n' character! */
- if (len[lineno] > 0) {
- while (sp[len[lineno]-1] == '\n') len[lineno] = len[lineno] - 1;
-@@ -835,7 +835,7 @@
- /***************************************************/
- static void createPUD()
- {
-- popW = CreateWindow("xv confirm", "XVconfirm", "+0+0",
-+ popW = CreateWindow("xv confirm", "XVconfirm", "+0+0",
- PUWIDE, PUHIGH, infofg, infobg, 0);
- if (!popW) FatalError("can't create popup window!");
-
-@@ -847,7 +847,7 @@
- bts = (BUTT *) NULL;
- nbts = selected = firsttime = 0;
- }
--
-+
-
- /***************************************************/
- static void attachPUD()
-@@ -913,24 +913,24 @@
- XDrawLine(theDisp, popW, theGC, 16+1+75+75+5, puhigh-140 + 6+8,
- 16+1+75+75+5, puhigh-10-4);
- }
--
-+
-
- XSetForeground(theDisp, theGC, infofg);
-- XDrawRectangle(theDisp, popW, theGC, 268, puhigh-140,
-+ XDrawRectangle(theDisp, popW, theGC, 268, puhigh-140,
- (u_int) puwide - 10 - 268, 130-BUTTH-10);
-- Draw3dRect(popW, 268+1, puhigh-140+1, (u_int) puwide -10-268-2,
-+ Draw3dRect(popW, 268+1, puhigh-140+1, (u_int) puwide -10-268-2,
- 130-2 - BUTTH-10, R3D_IN,2,hicol,locol,infobg);
--
-- TextRect(popW,padInst,268+5, puhigh-140+3, puwide-10-268-10,
-+
-+ TextRect(popW,padInst,268+5, puhigh-140+3, puwide-10-268-10,
- 130-6 - BUTTH-10, infofg);
- }
-
- else {
- XCopyPlane(theDisp, iconPix, popW, theGC, 0,0, icon_width, icon_height,
- 10,10+(puhigh-30-BUTTH-icon_height)/2, 1L);
--
-+
- xt = 10+icon_width+20; yt = 10;
--
-+
- if (popUp == ISGETSTR) {
- TextRect(popW, text, xt, yt, puwide-10-xt, gsy-20, infofg);
- drawGSBuf();
-@@ -947,22 +947,22 @@
- /***************************************************/
- static void drawPadOMStr()
- {
-- CenterString(popW, padODial.x + (padODial.w - 13)/2,
-+ CenterString(popW, padODial.x + (padODial.w - 13)/2,
- puhigh-16-100-12, padOMStr[padOMode]);
- }
--
-+
- /***************************************************/
- static void clickPUD(x,y)
- int x,y;
- {
- int i;
- BUTT *bp;
--
-+
- for (i=0; i<nbts; i++) {
- bp = &bts[i];
- if (PTINRECT(x, y, bp->x, bp->y, bp->w, bp->h)) break;
- }
--
-+
- if (i<nbts && BTTrack(bp)) {
- popUp = 0; selected = i; return;
- }
-@@ -1017,11 +1017,11 @@
- gsCurPos = strlen(gsBuf);
- gsStPos = gsEnPos = 0;
- changedGSBuf();
-- if (ctrlColor)
-- XClearArea(theDisp, popW, gsx+3,gsy+3,
-+ if (ctrlColor)
-+ XClearArea(theDisp, popW, gsx+3,gsy+3,
- (u_int)gsw-5, (u_int)gsh-5, False);
- else
-- XClearArea(theDisp, popW, gsx+1,gsy+1,
-+ XClearArea(theDisp, popW, gsx+1,gsy+1,
- (u_int)gsw-1, (u_int)gsh-1, False);
- drawGSBuf();
-
-@@ -1032,7 +1032,7 @@
- DSetActive (&padWDial, (i!=PAD_LOAD));
- DSetActive (&padHDial, (i!=PAD_LOAD));
-
-- XClearArea(theDisp, popW, 184+5, puhigh-140+3,
-+ XClearArea(theDisp, popW, 184+5, puhigh-140+3,
- (u_int) puwide-10-184-10, 130-6 - BUTTH-10, True);
-
- padMode = i;
-@@ -1049,11 +1049,11 @@
- gsCurPos = strlen(gsBuf);
- gsStPos = gsEnPos = 0;
- changedGSBuf();
-- if (ctrlColor)
-- XClearArea(theDisp, popW, gsx+3,gsy+3,
-+ if (ctrlColor)
-+ XClearArea(theDisp, popW, gsx+3,gsy+3,
- (u_int)gsw-5, (u_int)gsh-5, False);
- else
-- XClearArea(theDisp, popW, gsx+1,gsy+1,
-+ XClearArea(theDisp, popW, gsx+1,gsy+1,
- (u_int)gsw-1, (u_int)gsh-1, False);
- drawGSBuf();
-
-@@ -1079,8 +1079,8 @@
- /* handle characters typed at GetStrPopUp window. Button accel. keys
- have already been checked for elsewhere. Practical upshot is that
- we don't have to do anything with ESC or Return (as these will normally
-- be Cancel and Ok buttons)
--
-+ be Cancel and Ok buttons)
-+
- Normally returns '0'. Returns '1' if character wasn't accepted, for
- whatever reason. */
-
-@@ -1089,7 +1089,7 @@
- len = strlen(gsBuf);
- if (gsFilter) flen = strlen(gsFilter);
- else flen = 0;
--
-+
-
- if (c>=' ' && c<'\177') { /* 'NORMAL' CHARACTERS */
- if (flen) { /* check filter string */
-@@ -1097,7 +1097,7 @@
- if (!gsAllow && i< flen) return 1; /* found in 'disallow' filter */
- if ( gsAllow && i==flen) return 1; /* not found in 'allow' filter */
- }
--
-+
- if (len >= gsBufLen-1) return 1; /* at max length */
-
- xvbcopy(&gsBuf[gsCurPos], &gsBuf[gsCurPos+1], (size_t) len-gsCurPos+1);
-@@ -1147,7 +1147,7 @@
-
- changedGSBuf(); /* compute gsEnPos, gsStPos */
-
-- if (ctrlColor)
-+ if (ctrlColor)
- XClearArea(theDisp, popW, gsx+3,gsy+3, (u_int)gsw-5, (u_int)gsh-5, False);
- else
- XClearArea(theDisp, popW, gsx+1,gsy+1, (u_int)gsw-1, (u_int)gsh-1, False);
-@@ -1175,7 +1175,7 @@
- /***************************************************/
- static void changedGSBuf()
- {
-- /* cursor position (or whatever) may have changed. adjust displayed
-+ /* cursor position (or whatever) may have changed. adjust displayed
- portion of gsBuf */
-
- int len;
-@@ -1212,7 +1212,7 @@
-
- XSetForeground(theDisp, theGC, infofg);
- XDrawRectangle(theDisp, popW, theGC, gsx, gsy, (u_int) gsw, (u_int) gsh);
-- Draw3dRect(popW, gsx+1, gsy+1, (u_int) gsw-2, (u_int) gsh-2,
-+ Draw3dRect(popW, gsx+1, gsy+1, (u_int) gsw-2, (u_int) gsh-2,
- R3D_IN, 2, hicol,locol,infobg);
-
- XSetForeground(theDisp, theGC, infofg);
-diff -ruN xv-3.10a/xvps.c xv-3.10a-bugfixes/xvps.c
---- xv-3.10a/xvps.c 1994-12-22 14:34:42.000000000 -0800
-+++ xv-3.10a-bugfixes/xvps.c 2005-03-30 08:18:17.000000000 -0800
-@@ -1,4 +1,4 @@
--/*
-+/*
- * xvps.c - Postscript dialog box, file output functions
- *
- * callable functions:
-@@ -71,10 +71,13 @@
- static void psColorImage PARM((FILE *));
- static void psColorMap PARM((FILE *fp, int, int, byte *, byte *, byte *));
- static void psRleCmapImage PARM((FILE *, int));
--static void epsPreview PARM((FILE *, byte *, int, int, int, int,
-+static void epsPreview PARM((FILE *, byte *, int, int, int, int,
- byte *, byte *, byte *, int));
- static int writeBWStip PARM((FILE *, byte *, char *, int, int, int));
-
-+#ifdef GS_PATH
-+static void buildCmdStr PARM((char *, char *, char *, int, int));
-+#endif
-
-
- /* local variables */
-@@ -123,7 +126,7 @@
- void CreatePSD(geom)
- char *geom;
- {
-- psW = CreateWindow("xv postscript", "XVps", geom,
-+ psW = CreateWindow("xv postscript", "XVps", geom,
- PSWIDE, PSHIGH, infofg, infobg, 0);
- if (!psW) FatalError("can't create postscript window!");
-
-@@ -139,9 +142,9 @@
- CBCreate(&encapsCB, psW, 240, 7, "preview", infofg, infobg, hicol, locol);
- CBCreate(&pscompCB, psW, 331, 7, "compress", infofg, infobg, hicol, locol);
-
-- DCreate(&xsDial, psW, 240, 30, 80, 100, 10, 800, 100, 5,
-+ DCreate(&xsDial, psW, 240, 30, 80, 100, 10, 800, 100, 5,
- infofg, infobg, hicol, locol, "Width", "%");
-- DCreate(&ysDial, psW, 331, 30, 80, 100, 10, 800, 100, 5,
-+ DCreate(&ysDial, psW, 331, 30, 80, 100, 10, 800, 100, 5,
- infofg, infobg, hicol, locol, "Height", "%");
- xsDial.drawobj = changedScale;
- ysDial.drawobj = changedScale;
-@@ -154,38 +157,38 @@
- RBCreate(orientRB, psW, 36+80, 240+18, "Landscape", infofg, infobg,
- hicol, locol);
-
-- paperRB = RBCreate(NULL, psW,36, 240+18+36, "8.5\"x11\"",
-+ paperRB = RBCreate(NULL, psW,36, 240+18+36, "8.5\"x11\"",
- infofg, infobg, hicol, locol);
- RBCreate(paperRB, psW, 36+80, 240+18+36, "A4",
- infofg, infobg, hicol, locol);
-- RBCreate(paperRB, psW, 36+122, 240+18+36, "B5",
-+ RBCreate(paperRB, psW, 36+122, 240+18+36, "B5",
- infofg, infobg, hicol, locol);
-- RBCreate(paperRB, psW, 36+164, 240+18+36, "A3",
-+ RBCreate(paperRB, psW, 36+164, 240+18+36, "A3",
- infofg, infobg, hicol, locol);
- RBCreate(paperRB, psW, 36, 240+36+36, "8.5\"x14\"",
- infofg, infobg, hicol, locol);
-- RBCreate(paperRB, psW, 36+80, 240+36+36, "11\"x17\"",
-+ RBCreate(paperRB, psW, 36+80, 240+36+36, "11\"x17\"",
- infofg, infobg, hicol, locol);
-- RBCreate(paperRB, psW, 36, 240+54+36, "4\"x5\"",
-+ RBCreate(paperRB, psW, 36, 240+54+36, "4\"x5\"",
- infofg, infobg, hicol, locol);
-- RBCreate(paperRB, psW, 36+80, 240+54+36, "35mm slide",
-+ RBCreate(paperRB, psW, 36+80, 240+54+36, "35mm slide",
- infofg, infobg, hicol, locol);
-
-- BTCreate(&psbut[PS_BOK], psW, PSWIDE-180, PSHIGH-10-BUTTH, 80, BUTTH,
-+ BTCreate(&psbut[PS_BOK], psW, PSWIDE-180, PSHIGH-10-BUTTH, 80, BUTTH,
- "Ok", infofg, infobg, hicol, locol);
-- BTCreate(&psbut[PS_BCANC], psW, PSWIDE-90, PSHIGH-10-BUTTH, 80, BUTTH,
-+ BTCreate(&psbut[PS_BCANC], psW, PSWIDE-90, PSHIGH-10-BUTTH, 80, BUTTH,
- "Cancel", infofg, infobg, hicol, locol);
-
-- BTCreate(&psbut[PS_BCENT], psW, 240, 154, 55, BUTTH-2,
-+ BTCreate(&psbut[PS_BCENT], psW, 240, 154, 55, BUTTH-2,
- "Center", infofg, infobg, hicol, locol);
-- BTCreate(&psbut[PS_BORG], psW, 298, 154, 55, BUTTH-2,
-+ BTCreate(&psbut[PS_BORG], psW, 298, 154, 55, BUTTH-2,
- "Origin", infofg, infobg, hicol, locol);
-- BTCreate(&psbut[PS_BMAX], psW, 356, 154, 55, BUTTH-2,
-+ BTCreate(&psbut[PS_BMAX], psW, 356, 154, 55, BUTTH-2,
- "Max", infofg, infobg, hicol, locol);
-
-- BTCreate(&psbut[PS_BPOSX], psW, 256-14, 190+13-8, 8,8, "",
-+ BTCreate(&psbut[PS_BPOSX], psW, 256-14, 190+13-8, 8,8, "",
- infofg, infobg, hicol, locol);
-- BTCreate(&psbut[PS_BPOSY], psW, 256-14, 190+26-8, 8,8, "",
-+ BTCreate(&psbut[PS_BPOSY], psW, 256-14, 190+26-8, 8,8, "",
- infofg, infobg, hicol, locol);
-
- posxType = posyType = 0;
-@@ -246,7 +249,7 @@
-
- XMapSubwindows(theDisp, psW);
- }
--
-+
-
- /***************************************************/
- void PSDialog(vis)
-@@ -289,7 +292,7 @@
- x = e->x; y = e->y; w = e->width; h = e->height;
-
- /* throw away excess expose events for 'dumb' windows */
-- if (e->count > 0 &&
-+ if (e->count > 0 &&
- (e->window == xsDial.win || e->window == ysDial.win ||
- e->window == pageF)) {}
-
-@@ -332,7 +335,7 @@
- XKeyEvent *e = (XKeyEvent *) xev;
- char buf[128]; KeySym ks;
- int stlen, shift, ck;
--
-+
- stlen = XLookupString(e,buf,128,&ks,(XComposeStatus *) NULL);
- shift = e->state & ShiftMask;
- ck = CursorKey(ks, shift, 0);
-@@ -497,7 +500,7 @@
- XSetFont(theDisp, theGC, mfont);
- }
-
--
-+
- /***************************************************/
- static void drawSizeStr()
- {
-@@ -522,7 +525,7 @@
- XSetFont(theDisp, theGC, mfont);
- }
-
--
-+
- /***************************************************/
- static void drawResStr()
- {
-@@ -540,9 +543,9 @@
- XSetFont(theDisp, theGC, mfont);
- }
-
--
--
--
-+
-+
-+
- /***************************************************/
- static void drawPage()
- {
-@@ -554,7 +557,7 @@
- XSetForeground(theDisp, theGC, infofg);
- XDrawRectangle(theDisp, pageF, theGC, pageRect.x, pageRect.y,
- (u_int) pageRect.width, (u_int) pageRect.height);
--
-+
- drawIRect(1);
- }
-
-@@ -611,7 +614,7 @@
- unsigned int mask;
- double offx, offy, newx, newy;
-
-- /* compute offset (in inches) between 'drag point' and
-+ /* compute offset (in inches) between 'drag point' and
- the top-left corner of the image */
-
- offx = ((mx - pageRect.x) / in2pix) - pos_inx;
-@@ -642,7 +645,7 @@
- char *fullname;
-
- switch (cmd) {
-- case PS_BOK: writePS();
-+ case PS_BOK: writePS();
- PSDialog(0);
- fullname = GetDirFullName();
- if (!ISPIPE(fullname[0])) {
-@@ -721,15 +724,15 @@
-
- GetSaveSize(&w, &h);
-
-- sz_inx = (double) w / PIX2INCH * (xsDial.val / 100.0);
-- sz_iny = (double) h / PIX2INCH * (ysDial.val / 100.0);
-+ sz_inx = (double) w / PIX2INCH * (xsDial.val / 100.0);
-+ sz_iny = (double) h / PIX2INCH * (ysDial.val / 100.0);
-
- /* round to integer .001ths of an inch */
- sz_inx = floor(sz_inx * 1000.0 + 0.5) / 1000.0;
- sz_iny = floor(sz_iny * 1000.0 + 0.5) / 1000.0;
-
-- dpix = (int) (PIX2INCH / (xsDial.val / 100.0));
-- dpiy = (int) (PIX2INCH / (ysDial.val / 100.0));
-+ dpix = (int) (PIX2INCH / (xsDial.val / 100.0));
-+ dpiy = (int) (PIX2INCH / (ysDial.val / 100.0));
-
- /* make sure 'center' of image is still on page */
- hsx = sz_inx/2; hsy = sz_iny/2;
-@@ -783,20 +786,20 @@
- {
- int x,y,w,h;
- XRectangle xr;
--
-+
- x = pageRect.x + (int) (pos_inx * in2pix);
- y = pageRect.y + (int) (pos_iny * in2pix);
- w = sz_inx * in2pix;
- h = sz_iny * in2pix;
--
-+
- xr.x = pageRect.x + 1;
- xr.y = pageRect.y + 1;
- xr.width = pageRect.width - 1;
- xr.height = pageRect.height - 1;
--
-+
- if (draw) XSetForeground(theDisp, theGC, infofg);
- else XSetForeground(theDisp, theGC, infobg);
--
-+
- XSetClipRectangles(theDisp, theGC, 0,0, &xr, 1, Unsorted);
- XDrawRectangle(theDisp, pageF, theGC, x, y, (u_int) w, (u_int) h);
- XDrawLine(theDisp, pageF, theGC, x, y, x+w, y+h);
-@@ -839,15 +842,15 @@
- DSetVal(&xsDial, (int) ((100 * (sz_inx * PIX2INCH) / w) + .5));
- DSetVal(&ysDial, xsDial.val);
-
-- sz_inx = (double) w / PIX2INCH * (xsDial.val / 100.0);
-- sz_iny = (double) h / PIX2INCH * (ysDial.val / 100.0);
-+ sz_inx = (double) w / PIX2INCH * (xsDial.val / 100.0);
-+ sz_iny = (double) h / PIX2INCH * (ysDial.val / 100.0);
-
- /* round to integer .001ths of an inch */
- sz_inx = floor(sz_inx * 1000.0 + 0.5) / 1000.0;
- sz_iny = floor(sz_iny * 1000.0 + 0.5) / 1000.0;
-
-- dpix = (int) (PIX2INCH / (xsDial.val / 100.0));
-- dpiy = (int) (PIX2INCH / (ysDial.val / 100.0));
-+ dpix = (int) (PIX2INCH / (xsDial.val / 100.0));
-+ dpiy = (int) (PIX2INCH / (ysDial.val / 100.0));
-
- pos_inx = psizex/2 - sz_inx/2;
- pos_iny = psizey/2 - sz_iny/2;
-@@ -888,7 +891,7 @@
- static void writePS()
- {
- FILE *fp;
-- int i, j, q, err, rpix, gpix, bpix, nc, ptype;
-+ int i, j, err, rpix, gpix, bpix, nc, ptype;
- int iw, ih, ox, oy, slen, lwidth, bits, colorps, w, h, pfree;
- double iwf, ihf;
- byte *inpix, *rmap, *gmap, *bmap;
-@@ -900,13 +903,19 @@
- if (!fp) return;
-
- WaitCursor();
--
-+
- inpix = GenSavePic(&ptype, &w, &h, &pfree, &nc, &rmap, &gmap, &bmap);
-
--
-+ if (w <= 0 || h <= 0 || w*2 < w) {
-+ SetISTR(ISTR_WARNING,"%s: Image dimensions out of range", filename);
-+ CloseOutFile(fp, filename, 1);
-+ return;
-+ }
-+
-+
- /* printed image will have size iw,ih (in picas) */
- iw = (int) (sz_inx * 72.0 + 0.5);
-- ih = (int) (sz_iny * 72.0 + 0.5);
-+ ih = (int) (sz_iny * 72.0 + 0.5);
- iwf = sz_inx * 72.0;
- ihf = sz_iny * 72.0;
-
-@@ -923,12 +932,12 @@
- fprintf(fp,"%%%%Creator: XV %s - by John Bradley\n",REVDATE);
-
- if (RBWhich(orientRB)==ORNT_LAND) /* Landscape mode */
-- fprintf(fp,"%%%%BoundingBox: %d %d %d %d\n",
-+ fprintf(fp,"%%%%BoundingBox: %d %d %d %d\n",
- (int) (pos_iny * 72.0 + 0.5),
- (int) (pos_inx * 72.0 + 0.5),
- (int) (pos_iny * 72.0 + 0.5) + ih,
- (int) (pos_inx * 72.0 + 0.5) + iw);
-- else
-+ else
- fprintf(fp,"%%%%BoundingBox: %d %d %d %d\n", ox, oy, ox+iw, oy+ih);
-
- fprintf(fp,"%%%%Pages: 1\n");
-@@ -943,9 +952,9 @@
- case F_BWDITHER: slen = (w+7)/8; bits = 1; colorps = 0; break;
- default: FatalError("unknown colorType in writePS()"); break;
- }
--
-+
- if (encapsCB.val) epsPreview(fp, inpix, ptype, colorType, w, h,
-- rmap,gmap,bmap,
-+ rmap,gmap,bmap,
- (RBWhich(orientRB)==ORNT_LAND) );
-
- fprintf(fp,"%%%%EndProlog\n\n");
-@@ -978,7 +987,7 @@
- fprintf(fp,"%% print in landscape mode\n");
- fprintf(fp,"90 rotate 0 %d translate\n\n",(int) (-psizey*72.0));
- }
--
-+
- if (RBWhich(paperRB) == PSZ_4BY5 ||
- RBWhich(paperRB) == PSZ_35MM) {
- fprintf(fp,"%% we're going to a 4x5 or a 35mm film recorder.\n");
-@@ -1083,12 +1092,12 @@
- gpix = inpix[1];
- bpix = inpix[2];
- }
--
-- if (colorps) {
-+
-+ if (colorps) {
- err = fprintf(fp,"%02x%02x%02x",rpix,gpix,bpix);
- lwidth+=6;
- }
--
-+
- else { /* greyscale */
- err = fprintf(fp,"%02x", MONO(rpix,gpix,bpix));
- lwidth+=2;
-@@ -1106,7 +1115,7 @@
- fprintf(fp,"\n\n");
- fprintf(fp,"%%\n");
- fprintf(fp,"%% Compression made this file %.2f%% %s\n",
-- 100.0 * ((double) outbytes) /
-+ 100.0 * ((double) outbytes) /
- ((double) eWIDE * eHIGH * ((colorps) ? 3 : 1)),
- "of the uncompressed size.");
- fprintf(fp,"%%\n");
-@@ -1147,10 +1156,10 @@
- *
- * returns length of the rleline vector
- */
--
-+
- int i, j, blocklen, isrun, rlen;
- byte block[256], pix;
--
-+
- blocklen = isrun = rlen = 0;
-
- for (i=0; i<wide; i++) {
-@@ -1186,7 +1195,7 @@
- }
- }
- }
--
-+
- else { /* not a run */
- if (pix == block[blocklen-1]) { /* case 3: non-run, prev==cur */
- if (blocklen>1) { /* have a non-run block to flush */
-@@ -1215,7 +1224,7 @@
-
- else {
- rleline[rlen++] = (blocklen-1) | 0x80;
-- for (j=0; j<blocklen; j++)
-+ for (j=0; j<blocklen; j++)
- rleline[rlen++] = block[j];
- }
-
-@@ -1231,15 +1240,15 @@
-
- else {
- rleline[rlen++] = (blocklen-1) | 0x80;
-- for (j=0; j<blocklen; j++)
-+ for (j=0; j<blocklen; j++)
- rleline[rlen++] = block[j];
- }
- }
-
- return rlen;
- }
--
--
-+
-+
- /**********************************************/
- static void psColorImage(fp)
- FILE *fp;
-@@ -1276,7 +1285,7 @@
- fprintf(fp," %% Utility procedure for colorimage operator.\n");
- fprintf(fp," %% This procedure takes two procedures off the\n");
- fprintf(fp," %% stack and merges them into a single procedure.\n\n");
--
-+
- fprintf(fp," /mergeprocs { %% def\n");
- fprintf(fp," dup length\n");
- fprintf(fp," 3 -1 roll\n");
-@@ -1326,12 +1335,12 @@
- for (i=0; i<nc; i++) {
- if (color) fprintf(fp,"%02x%02x%02x ", rmap[i],gmap[i],bmap[i]);
- else fprintf(fp,"%02x ", MONO(rmap[i],gmap[i],bmap[i]));
--
-+
- if ((i%10) == 9) fprintf(fp,"\n");
- }
- if (i%10) fprintf(fp,"\n");
- fprintf(fp,"pop pop %% lose return values from readhexstring\n\n\n");
--
-+
- }
-
-
-@@ -1407,7 +1416,7 @@
-
-
- /**********************************************/
--static void epsPreview(fp, pic, ptype, colorType, w, h, rmap,gmap,bmap,
-+static void epsPreview(fp, pic, ptype, colorType, w, h, rmap,gmap,bmap,
- landscape)
- FILE *fp;
- byte *pic;
-@@ -1420,21 +1429,37 @@
-
-
- if (landscape) { /* generate a rotated version of the pic */
-- int bperpix;
-+ int npixels, bufsize;
- byte *lpic;
-
-- bperpix = (ptype == PIC8) ? 1 : 3;
-- lpic = (byte *) malloc((size_t) w * h * bperpix);
-+ npixels = w * h;
-+ if (w <= 0 || h <= 0 || npixels/w != h) {
-+ SetISTR(ISTR_WARNING,"%s: Image dimensions out of range", filename);
-+/* CloseOutFile(fp, filename, 1); can't do since caller still writing */
-+ return;
-+ }
-+ if (ptype == PIC8)
-+ bufsize = npixels;
-+ else {
-+ bufsize = 3*npixels;
-+ if (bufsize/3 != npixels) {
-+ SetISTR(ISTR_WARNING,"%s: Image dimensions out of range", filename);
-+/* CloseOutFile(fp, filename, 1); can't do since caller still writing */
-+ return;
-+ }
-+ }
-+
-+ lpic = (byte *) malloc((size_t) bufsize);
- if (!lpic) FatalError("can't alloc mem to rotate image in epsPreview");
-
-- xvbcopy((char *) pic, (char *) lpic, (size_t) w * h * bperpix);
-+ xvbcopy((char *) pic, (char *) lpic, (size_t) bufsize);
- RotatePic(lpic, ptype, &w, &h, 0);
- pic = lpic;
- }
--
-+
-
- /* put in an EPSI preview */
--
-+
- if (colorType != F_BWDITHER) { /* have to generate a preview */
- prev = FSDither(pic, ptype, w, h, rmap,gmap,bmap, 0, 1);
-
-@@ -1451,8 +1476,8 @@
- flipbw = (MONO(rmap[0],gmap[0],bmap[0]) > MONO(rmap[1],gmap[1],bmap[1]));
- }
-
--
-- fprintf(fp,"%%%%BeginPreview: %d %d %d %d\n", w, h, 1,
-+
-+ fprintf(fp,"%%%%BeginPreview: %d %d %d %d\n", w, h, 1,
- (w/(72*4) + 1) * h);
-
- writeBWStip(fp, prev, "% ", w, h, !flipbw);
-@@ -1471,7 +1496,7 @@
- char *prompt;
- int w, h, flipbw;
- {
-- /* write the given 'pic' (B/W stippled, 1 byte per pixel, 0=blk,1=wht)
-+ /* write the given 'pic' (B/W stippled, 1 byte per pixel, 0=blk,1=wht)
- out as hexadecimal, max of 72 hex chars per line.
-
- if 'flipbw', then 0=white, 1=black
-@@ -1535,25 +1560,32 @@
- document is multiple pages, a series of PNM files are created, and
- the first one is loaded (but not deleted) */
-
--
-- char tmp[512], tmp1[512], tmpname[64];
-- int gsresult, nump, i, filetype;
-+#ifdef GS_PATH
-+ char tmp[512], gscmd[512], cmdstr[512], tmpname[64];
-+ int gsresult, nump, i, filetype, doalert, epsf;
- char *rld;
-+#endif
-
- pinfo->pic = (byte *) NULL;
- pinfo->comment = (char *) NULL;
-
--
- #ifdef GS_PATH
-
-+ doalert = (!quick && !ctrlUp && !infoUp); /* open alert if no info wins */
-+ epsf = 0;
-+
- #ifndef VMS
- sprintf(tmpname, "%s/xvpgXXXXXX", tmpdir);
- #else
- sprintf(tmpname, "Sys$Scratch:xvpgXXXXXX");
- #endif
-
-+#ifdef USE_MKSTEMP
-+ close(mkstemp(tmpname));
-+#else
- mktemp(tmpname);
-- if (tmpname[0] == '\0') { /* mktemp() blew up */
-+#endif
-+ if (tmpname[0] == '\0') { /* mktemp() or mkstemp() blew up */
- sprintf(str,"LoadPS: Unable to create temporary filename???");
- ErrPopUp(str, "\nHow unlikely!");
- return 0;
-@@ -1561,13 +1593,13 @@
- strcat(tmpname,".");
-
-
-- /* build command string */
-+ /* build 'gscmd' string */
-
- #ifndef VMS /* VMS needs quotes around mixed case command lines */
-- sprintf(tmp, "%s -sDEVICE=%s -r%d -q -dNOPAUSE -sOutputFile=%s%%d ",
-+ sprintf(gscmd, "%s -sDEVICE=%s -r%d -q -dNOPAUSE -sOutputFile=%s%%d ",
- GS_PATH, gsDev, gsRes, tmpname);
- #else
-- sprintf(tmp,
-+ sprintf(gscmd,
- "%s \"-sDEVICE=%s\" -r%d -q \"-dNOPAUSE\" \"-sOutputFile=%s%%d\" ",
- GS_PATH, gsDev, gsRes, tmpname);
- #endif
-@@ -1575,74 +1607,60 @@
-
- #ifdef GS_LIB
- # ifndef VMS
-- sprintf(tmp1, "-I%s ", GS_LIB);
-+ sprintf(tmp, "-I%s ", GS_LIB);
- # else
-- sprintf(tmp1, "\"-I%s\"", GS_LIB);
-+ sprintf(tmp, "\"-I%s\" ", GS_LIB);
- # endif
-- strcat(tmp, tmp1);
-+ strcat(gscmd, tmp);
- #endif
-
-- if (gsGeomStr) {
-- sprintf(tmp1, "-g%s ", gsGeomStr);
-- strcat(tmp, tmp1);
-- }
--
-- /* if 'quick' is set, stop processing after first page by tacking
-- some PostScript commands that break the 'showpage' operator onto
-- the front of the stream passed to the ghostscript interpreter */
-
-+ /* prevent some potential naughtiness... */
- #ifndef VMS
-- if (quick) {
-- sprintf(tmp1, "echo '%s' | cat - %s | %s -",
-- "/showpage { showpage quit } bind def", /* mk showpage exit */
-- fname, tmp);
-- strcpy(tmp, tmp1);
-- }
-- else {
-- strcat(tmp, " -- ");
-- strcat(tmp, fname);
-- }
--#else /* VMS */
-- /* VMS doesn't have pipes or an 'echo' command and GS doesn't like
-- Unix-style file names as input files in the VMS version */
-- strcat(tmp, " -- ");
-- rld = strrchr(fname, '/'); /* Pointer to last '/' */
-- if (rld) rld++; /* Pointer to filename */
-- else rld = fname; /* No path - use original string */
-- strcat(tmp, rld);
-+ strcat(gscmd, "-dSAFER ");
-+#else
-+ strcat(gscmd, "\"-dSAFER\" ");
- #endif
-
-
-+ if (gsGeomStr) {
-+ sprintf(tmp, "-g%s ", gsGeomStr);
-+ strcat(gscmd, tmp);
-+ }
-
-
-- WaitCursor();
--
-- if (DEBUG) fprintf(stderr,"LoadPS: executing command '%s'\n", tmp);
-- SetISTR(ISTR_INFO, "Running '%s'...", GS_PATH);
-+ do {
-+ buildCmdStr(cmdstr, gscmd, fname, quick, epsf);
-
-- sprintf(tmp1, "Running %s", tmp);
-- if (!quick && !ctrlUp && !infoUp) OpenAlert(tmp1);
-+ if (DEBUG) fprintf(stderr,"LoadPS: executing command '%s'\n", cmdstr);
-+ SetISTR(ISTR_INFO, "Running '%s'...", GS_PATH);
-+ sprintf(tmp, "Running %s", cmdstr);
-+ if (doalert && epsf==0) OpenAlert(tmp); /* open alert first time only */
-
--#ifndef VMS
-- gsresult = system(tmp);
--#else
-- gsresult = !system(tmp);
-+ WaitCursor();
-+ gsresult = system(cmdstr);
-+ WaitCursor();
-+#ifdef VMS
-+ gsresult = !gsresult; /* VMS returns non-zero if OK */
- #endif
-
-- WaitCursor();
-+ /* count # of files produced... */
-+ for (i=1; i<1000; i++) {
-+ struct stat st;
-+ sprintf(tmp, "%s%d", tmpname, i);
-+ if (stat(tmp, &st)!=0) break;
-+ }
-+ nump = i-1;
-+ WaitCursor();
-
-- if (!quick && !ctrlUp && !infoUp) CloseAlert();
-+ /* EPSF hack: if gsresult==0 (OK) and 0 pages produced,
-+ try tacking a 'showpage' onto the end of the file, do it again... */
-+
-+ if (!gsresult && !nump && !epsf) epsf++;
-+ } while (!gsresult && !nump && epsf<2);
-+
-+ if (doalert) CloseAlert();
-
-- /* figure out how many page files were created, by stating files.
-- breaks out on first failure, assuming there won't be any more after
-- that, and it would complicate matters too much anyhow... */
--
-- for (i=1; i<1000; i++) {
-- struct stat st;
-- sprintf(tmp, "%s%d", tmpname, i);
-- if (stat(tmp, &st)!=0) break;
-- }
-- nump = i-1;
-
- WaitCursor();
-
-@@ -1664,7 +1682,7 @@
- return 0;
- }
-
-- SetISTR(ISTR_INFO, "Running '%s'... Done. (%d page%s)",
-+ SetISTR(ISTR_INFO, "Running '%s'... Done. (%d page%s)",
- GS_PATH, nump, (nump==1) ? "" : "s");
- }
-
-@@ -1677,8 +1695,8 @@
-
- sprintf(tmp, "%s%d", tmpname, 1);
- filetype = ReadFileType(tmp);
--
-- if (filetype == RFT_ERROR || filetype == RFT_UNKNOWN ||
-+
-+ if (filetype == RFT_ERROR || filetype == RFT_UNKNOWN ||
- filetype == RFT_COMPRESS) { /* shouldn't happen */
- SetISTR(ISTR_WARNING, "Couldn't load first page '%s'", tmp);
- KillPageFiles(tmpname, nump);
-@@ -1695,7 +1713,7 @@
- KillPageFiles(tmpname, nump);
- SetCursors(-1);
- return 0;
-- }
-+ }
-
-
- /* SUCCESS! */
-@@ -1712,3 +1730,38 @@
- we don't have 'gs' package */
- }
-
-+
-+
-+/******************************************************************/
-+#ifdef GS_PATH
-+void buildCmdStr(str, gscmd, fname, quick, epsf)
-+ char *str, *gscmd, *fname;
-+ int quick, epsf;
-+{
-+ /* note 'epsf' set only on files that don't have a showpage cmd */
-+
-+#ifndef VMS
-+
-+ if (epsf) sprintf(str, "echo '\n showpage ' | cat '%s' - | %s -",
-+ fname, gscmd);
-+
-+ else if (quick) sprintf(str, "echo '%s' | cat - '%s' | %s -",
-+ "/showpage { showpage quit } bind def",
-+ fname, gscmd);
-+
-+ else sprintf(str, "%s -- %s", gscmd, fname);
-+
-+#else /* VMS */
-+ /* VMS doesn't have pipes or an 'echo' command and GS doesn't like
-+ Unix-style file names as input files in the VMS version */
-+ strcat(tmp, " -- ");
-+ rld = strrchr(fname, '/'); /* Pointer to last '/' */
-+ if (rld) rld++; /* Pointer to filename */
-+ else rld = fname; /* No path - use original string */
-+ strcat(tmp, rld);
-+#endif /* VMS */
-+}
-+#endif /* GS_PATH */
-+
-+
-+
-diff -ruN xv-3.10a/xvrle.c xv-3.10a-bugfixes/xvrle.c
---- xv-3.10a/xvrle.c 1995-01-19 09:27:47.000000000 -0800
-+++ xv-3.10a-bugfixes/xvrle.c 2005-03-29 23:29:14.000000000 -0800
-@@ -43,8 +43,8 @@
- byte bgcol[256];
- byte maps[3][256];
- int xpos, ypos, w, h, flags, ncolors, pixelbits, ncmap, cmaplen;
-- int cmtlen;
-- byte *img, *pic8;
-+ int cmtlen, npixels, bufsize=0;
-+ byte *img;
- long filesize;
- char *bname, *errstr;
-
-@@ -57,7 +57,7 @@
- /* open the stream */
- fp = xv_fopen(fname,"r");
- if (!fp) return (rleError(bname, "unable to open file"));
--
-+
-
- /* figure out the file size */
- fseek(fp, 0L, 2);
-@@ -85,7 +85,7 @@
- if (DEBUG) {
- fprintf(stderr,"RLE: %dx%d image at %d,%d\n", w, h, xpos, ypos);
- fprintf(stderr,"flags: 0x%02x (%s%s%s%s)\n",
-- flags,
-+ flags,
- (flags & H_CLEARFIRST) ? "CLEARFIRST " : "",
- (flags & H_NO_BACKGROUND) ? "NO_BG " : "",
- (flags & H_ALPHA) ? "ALPHA " : "",
-@@ -93,7 +93,7 @@
-
- fprintf(stderr, "%d bands, %d pixelbits, %d cmap bands, %d cmap entries\n",
- ncolors, pixelbits, ncmap, cmaplen);
-- }
-+ }
-
- if (!(flags & H_NO_BACKGROUND)) {
- if (DEBUG) fprintf(stderr, "background value: ");
-@@ -176,32 +176,44 @@
-
- errstr = NULL;
- if (ncolors == 0 || ncolors == 2)
-- errstr = "Unsupt. # of channels in RLE file.\n";
-+ errstr = "Unsupported number of channels in RLE file";
-
- if (pixelbits != 8)
-- errstr = "Only 8-bit pixels supported in RLE files.\n";
-+ errstr = "Only 8-bit pixels supported in RLE files";
-
- if (ncmap==0 || ncmap==1 || ncmap == 3 || ncmap == ncolors) { /* ok */ }
-- else errstr = "Invalid # of colormap channels in RLE file.\n";
-+ else errstr = "Invalid number of colormap channels in RLE file";
-
-- if (w<1 || h<1)
-- errstr = "Bogus size in RLE header.\n";
-+ npixels = w * h;
-+ if (w <= 0 || h <= 0 || npixels/w != h)
-+ errstr = "RLE image dimensions out of range";
-
-
- if (errstr) {
- fclose(fp);
-- if (pinfo->comment) free(pinfo->comment); pinfo->comment = (char *) NULL;
-+ if (pinfo->comment)
-+ free(pinfo->comment);
-+ pinfo->comment = (char *) NULL;
- return rleError(bname, errstr);
- }
-
-
- /* allocate image memory */
-- if (ncolors == 1) img = (byte *) calloc((size_t) w * h, (size_t) 1);
-- else img = (byte *) calloc((size_t) w * h * 3, (size_t) 1);
-+ if (ncolors == 1)
-+ img = (byte *) calloc((size_t) npixels, (size_t) 1);
-+ else {
-+ bufsize = 3*npixels;
-+ if (bufsize/3 != npixels)
-+ return rleError(bname, "RLE image dimensions out of range");
-+ img = (byte *) calloc((size_t) bufsize, (size_t) 1);
-+ }
-+
- if (!img) {
- fclose(fp);
-- if (pinfo->comment) free(pinfo->comment); pinfo->comment = (char *) NULL;
-- return rleError(bname, "unable to allocate image data.\n");
-+ if (pinfo->comment)
-+ free(pinfo->comment);
-+ pinfo->comment = (char *) NULL;
-+ return rleError(bname, "Unable to allocate RLE image data");
- }
-
-
-@@ -209,10 +221,10 @@
- if ((flags & H_CLEARFIRST) && !(flags & H_NO_BACKGROUND)) {
- byte *ip;
- if (ncolors == 1) {
-- for (i=0, ip=img; i<w*h; i++, ip++) *ip = bgcol[0];
-+ for (i=0, ip=img; i<npixels; i++, ip++) *ip = bgcol[0];
- }
- else {
-- for (i=0, ip=img; i<w*h; i++)
-+ for (i=0, ip=img; i<npixels; i++)
- for (j=0; j<3; j++, ip++) *ip = bgcol[j];
- }
- }
-@@ -230,7 +242,7 @@
- if (ncmap) {
- byte *ip;
- int imagelen, cmask;
-- imagelen = (ncolors==1) ? w*h : w*h*3;
-+ imagelen = (ncolors==1) ? npixels : bufsize;
- cmask = (cmaplen-1);
-
- if (ncmap == 1) { /* single gamma curve */
-@@ -238,7 +250,7 @@
- }
-
- else if (ncmap >= 3 && ncolors >=3) { /* one curve per band */
-- for (i=0, ip=img; i<w*h; i++) {
-+ for (i=0, ip=img; i<npixels; i++) {
- *ip = maps[0][*ip & cmask]; ip++;
- *ip = maps[1][*ip & cmask]; ip++;
- *ip = maps[2][*ip & cmask]; ip++;
-@@ -250,7 +262,7 @@
- /* finally, convert into XV internal format */
-
- pinfo->pic = img;
-- pinfo->w = w;
-+ pinfo->w = w;
- pinfo->h = h;
- pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
- pinfo->frmType = -1; /* no default format to save in */
-@@ -260,7 +272,7 @@
- if (ncmap == 0 || ncmap == 1) { /* grey, or grey with gamma curve */
- pinfo->colType = F_GREYSCALE;
- sprintf(pinfo->fullInfo, "Greyscale RLE. (%ld bytes)", filesize);
-- for (i=0; i<256; i++)
-+ for (i=0; i<256; i++)
- pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
- }
- else {
-@@ -272,7 +284,7 @@
- pinfo->b[i] = maps[2][i];
- }
- }
--
-+
- sprintf(pinfo->shrtInfo, "%dx%d RLE.",w, h);
- }
-
-@@ -294,7 +306,7 @@
- int w, h, ncolors, ncmap;
- {
- int posx, posy, plane, bperpix, i, pixval, skipcalls;
-- int opcode, operand, done, c, c1;
-+ int opcode, operand, done, c, c1;
- byte *ip;
-
- posx = posy = plane = done = skipcalls = 0;
-@@ -324,7 +336,7 @@
- case RSkipPixelsOp:
- if (opcode & LONG_OP) { getc(fp); operand = GETINT(fp); }
- else operand = getc(fp);
--
-+
- posx += operand;
- break;
-
-@@ -340,7 +352,7 @@
- c = getc(fp);
- if (plane<ncolors && posy<h && (posx+i < w)) *ip = c;
- }
--
-+
- if (operand & 1) getc(fp); /* word boundary */
- posx += operand;
- break;
-@@ -358,7 +370,7 @@
- for (i=0; i<operand; i++, ip+=bperpix) {
- if (plane<ncolors && posy<h && (posx+i < w)) *ip = pixval;
- }
--
-+
- /* if (operand & 1) getc(fp); */ /* word boundary */
- posx += operand;
- break;
-diff -ruN xv-3.10a/xvroot.c xv-3.10a-bugfixes/xvroot.c
---- xv-3.10a/xvroot.c 1994-12-22 14:34:42.000000000 -0800
-+++ xv-3.10a-bugfixes/xvroot.c 2004-05-16 18:04:21.000000000 -0700
-@@ -22,7 +22,7 @@
- /***********************************/
- void MakeRootPic()
- {
-- /* called after 'epic' has been generated (if we're using root).
-+ /* called after 'epic' has been generated (if we're using root).
- creates the XImage and the pixmap, sets the root to the new
- pixmap, and refreshes the display */
-
-@@ -67,32 +67,32 @@
-
-
- if (rmode == RM_NORMAL || rmode == RM_TILE) {
-- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,0,
-+ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,0,
- (u_int) eWIDE, (u_int) eHIGH);
- }
-
- else if (rmode == RM_MIRROR || rmode == RM_IMIRROR) {
- /* quadrant 2 */
-- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,0,
-+ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,0,
- (u_int) eWIDE, (u_int) eHIGH);
- if (epic == NULL) FatalError("epic == NULL in RM_MIRROR code...\n");
-
- /* quadrant 1 */
- FlipPic(epic, eWIDE, eHIGH, 0); /* flip horizontally */
- CreateXImage();
-- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, eWIDE,0,
-+ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, eWIDE,0,
- (u_int) eWIDE, (u_int) eHIGH);
-
- /* quadrant 4 */
- FlipPic(epic, eWIDE, eHIGH, 1); /* flip vertically */
- CreateXImage();
-- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, eWIDE,eHIGH,
-+ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, eWIDE,eHIGH,
- (u_int) eWIDE, (u_int) eHIGH);
-
- /* quadrant 3 */
- FlipPic(epic, eWIDE, eHIGH, 0); /* flip horizontally */
- CreateXImage();
-- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,eHIGH,
-+ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0, 0,eHIGH,
- (u_int) eWIDE, (u_int) eHIGH);
-
- FlipPic(epic, eWIDE, eHIGH, 1); /* flip vertically (back to orig) */
-@@ -122,15 +122,15 @@
- for (i=ay; i < (int) eHIGH; i+=h) {
- for (j=ax; j < (int) eWIDE; j+=w) {
- /* if image goes off tmpPix, only draw subimage */
--
-+
- x = j; y = i; w1 = w; h1 = h; offx = offy = 0;
- if (x<0) { offx = -x; w1 -= offx; x = 0; }
- if (x+w1>eWIDE) { w1 = (eWIDE-x); }
-
- if (y<0) { offy = -y; h1 -= offy; y = 0; }
- if (y+h1>eHIGH) { h1 = (eHIGH-y); }
--
-- XPutImage(theDisp, tmpPix, theGC, theImage, offx, offy,
-+
-+ XPutImage(theDisp, tmpPix, theGC, theImage, offx, offy,
- x, y, (u_int) w1, (u_int) h1);
- }
- }
-@@ -140,7 +140,7 @@
-
- else if (rmode == RM_CWARP) { /* warp effect */
- XSetForeground(theDisp, theGC, rootfg);
-- for (i=0; i<=dispWIDE; i+=8)
-+ for (i=0; i<=dispWIDE; i+=8)
- XDrawLine(theDisp,tmpPix,theGC, i,0, (int) dispWIDE-i,(int) dispHIGH);
- for (i=0; i<=dispHIGH; i+=8)
- XDrawLine(theDisp,tmpPix,theGC, 0,i, (int) dispWIDE, (int) dispHIGH-i);
-@@ -150,16 +150,16 @@
- XSetForeground(theDisp, theGC, rootfg);
- for (i=k=0; i<dispHIGH; i+=20,k++) {
- XDrawLine(theDisp, tmpPix, theGC, 0, i, (int) dispWIDE, i);
-- for (j=(k&1) * 20 + 10; j<dispWIDE; j+=40)
-+ for (j=(k&1) * 20 + 10; j<dispWIDE; j+=40)
- XDrawLine(theDisp, tmpPix, theGC, j,i,j,i+20);
- }
- }
-
-
- /* draw the image centered on top of the background */
-- if (rmode != RM_CENTILE)
-- XPutImage(theDisp, tmpPix, theGC, theImage, 0,0,
-- ((int) dispWIDE-eWIDE)/2, ((int) dispHIGH-eHIGH)/2,
-+ if (rmode != RM_CENTILE)
-+ XPutImage(theDisp, tmpPix, theGC, theImage, 0,0,
-+ ((int) dispWIDE-eWIDE)/2, ((int) dispHIGH-eHIGH)/2,
- (u_int) eWIDE, (u_int) eHIGH);
- }
-
-@@ -172,7 +172,7 @@
- if (dispWIDE == eWIDE) {
- /* horizontal center line */
- int y, ay;
--
-+
- y = eHIGH - ((dispHIGH/2)%eHIGH); /* Starting point in picture to copy */
- ay = 0; /* Vertical anchor point */
- while (ay < dispHIGH) {
-@@ -189,7 +189,7 @@
- else if (dispHIGH == eHIGH) {
- /* vertical centerline */
- int x, ax;
--
-+
- x = eWIDE - ((dispWIDE/2)%eWIDE); /* Starting point in picture to copy */
- ax = 0; /* Horizontal anchor point */
- while (ax < dispWIDE) {
-@@ -206,10 +206,10 @@
- else {
- /* vertical and horizontal centerlines */
- int x,y, ax,ay;
--
-+
- y = eHIGH - ((dispHIGH/2)%eHIGH); /* Starting point in picture to copy */
- ay = 0; /* Vertical anchor point */
--
-+
- while (ay < dispHIGH) {
- x = eWIDE - ((dispWIDE/2)%eWIDE);/* Starting point in picture to cpy */
- ax = 0; /* Horizontal anchor point */
-@@ -276,8 +276,8 @@
- gc_init.foreground = BlackPixel(theDisp, theScreen);
- gc_init.background = WhitePixel(theDisp, theScreen);
- gc = XCreateGC(theDisp, vrootW, GCForeground|GCBackground, &gc_init);
-- pix = XCreatePixmap(theDisp, vrootW, root_weave_width,
-- root_weave_height,
-+ pix = XCreatePixmap(theDisp, vrootW, root_weave_width,
-+ root_weave_height,
- (unsigned int) DefaultDepth(theDisp, theScreen));
-
- XCopyPlane(theDisp, bitmap, pix, gc, 0,0, root_weave_width,
-@@ -333,8 +333,8 @@
- prop = XInternAtom(theDisp, "_XSETROOT_ID", True);
- if (prop == None) return; /* no old pixmap to kill */
-
-- if (XGetWindowProperty(theDisp, vrootW, prop, 0L, 1L, True,
-- AnyPropertyType, &type, &format, &length,
-+ if (XGetWindowProperty(theDisp, vrootW, prop, 0L, 1L, True,
-+ AnyPropertyType, &type, &format, &length,
- &after, &data) == Success) {
-
- if (type==XA_PIXMAP && format==32 && length==1 && after==0 && data) {
-@@ -348,4 +348,4 @@
-
-
-
--
-+
-diff -ruN xv-3.10a/xvscrl.c xv-3.10a-bugfixes/xvscrl.c
---- xv-3.10a/xvscrl.c 1994-12-22 14:34:41.000000000 -0800
-+++ xv-3.10a-bugfixes/xvscrl.c 2004-05-16 18:04:25.000000000 -0700
-@@ -1,4 +1,4 @@
--/*
-+/*
- * xvscrl.c - Scroll Bar handling functions
- *
- * callable functions:
-@@ -6,7 +6,7 @@
- * SCCreate() - creates the Scroll Bar window.
- * SCChange() - resize/repositions the Scroll Bar window.
- * SCSetRange() - sets min/max/current values of control
-- * SCSetVal() - sets value of control
-+ * SCSetVal() - sets value of control
- * SCRedraw() - redraws scroll bar
- * SCTrack() - called when clicked. Operates control 'til mouseup
- */
-@@ -50,7 +50,7 @@
-
-
- /***************************************************/
--void SCCreate(sp, parent, x, y, vert, len, minv, maxv, curv, page,
-+void SCCreate(sp, parent, x, y, vert, len, minv, maxv, curv, page,
- fg, bg, hi, lo, func)
- SCRL *sp;
- Window parent;
-@@ -71,7 +71,7 @@
- downhPix = MakePix1(parent, downh_bits, downh_width, downh_height);
- uph1Pix = MakePix1(parent, uph1_bits, uph1_width, uph1_height);
- downh1Pix= MakePix1(parent, downh1_bits, downh1_width, downh1_height);
--
-+
- sgray = XCreatePixmapFromBitmapData(theDisp, parent,
- (char *) scrlgray_bits, scrlgray_width, scrlgray_height,
- fg,bg,dispDEEP);
-@@ -124,7 +124,7 @@
- sp->len = len;
- sp->uplit = sp->dnlit = 0;
-
-- if (vert) XMoveResizeWindow(theDisp, sp->win, x,y,
-+ if (vert) XMoveResizeWindow(theDisp, sp->win, x,y,
- (u_int) sp->tsize,(u_int) len);
- else XMoveResizeWindow(theDisp, sp->win, x,y,
- (u_int) len, (u_int) sp->tsize);
-@@ -144,7 +144,7 @@
- if (maxv<minv) maxv=minv;
- sp->min = minv; sp->max = maxv; sp->page = page;
- sp->active = (minv < maxv);
--
-+
- /* adjust scroll bar background */
- if (sp->active) {
- if (ctrlColor) XSetWindowBackground(theDisp, sp->win, sp->lo);
-@@ -174,7 +174,7 @@
-
- sp->val = curv;
-
-- if (sp->active)
-+ if (sp->active)
- sp->tpos = sp->tmin + ((sp->tmax - sp->tmin)*(curv - sp->min))
- / (sp->max - sp->min);
-
-@@ -194,20 +194,20 @@
- XSetBackground(theDisp, theGC, sp->bg);
-
- XClearWindow(theDisp, sp->win);
--
-+
- drawArrow(sp,UPLINE); /* draw up/down arrows */
- drawArrow(sp,DNLINE);
-
- XSetForeground(theDisp, theGC, sp->fg);
-
-- if (sp->vert) {
-+ if (sp->vert) {
- XDrawLine(theDisp, sp->win, theGC, 0, sp->tsize, sp->tsize, sp->tsize);
-- XDrawLine(theDisp, sp->win, theGC, 0, sp->len-sp->tsize-1,
-+ XDrawLine(theDisp, sp->win, theGC, 0, sp->len-sp->tsize-1,
- sp->tsize, sp->len-sp->tsize-1);
- }
- else { /* horizontal version */
- XDrawLine(theDisp, sp->win, theGC, sp->tsize, 0, sp->tsize, sp->tsize);
-- XDrawLine(theDisp, sp->win, theGC, sp->len - sp->tsize-1, 0,
-+ XDrawLine(theDisp, sp->win, theGC, sp->len - sp->tsize-1, 0,
- sp->len - sp->tsize-1, sp->tsize);
- }
-
-@@ -225,7 +225,7 @@
-
- if (arr == UPLINE) {
- XSetForeground(theDisp, theGC, sp->bg);
-- XFillRectangle(theDisp, sp->win, theGC, 0, 0,
-+ XFillRectangle(theDisp, sp->win, theGC, 0, 0,
- (u_int) sp->tsize, (u_int) sp->tsize);
-
- if (sp->vert) butpix = (sp->uplit) ? up1Pix : upPix;
-@@ -235,14 +235,14 @@
- XSetBackground(theDisp, theGC, sp->bg);
- XCopyPlane(theDisp, butpix, sp->win, theGC, 0, 0, up_width,up_height,
- 3,3, 1L);
-- Draw3dRect(sp->win, 0,0, (u_int) sp->tsize-1, (u_int) sp->tsize-1,
-+ Draw3dRect(sp->win, 0,0, (u_int) sp->tsize-1, (u_int) sp->tsize-1,
- (sp->uplit) ? R3D_IN : R3D_OUT, 2, sp->hi, sp->lo, sp->bg);
- }
-
- else if (arr == DNLINE) {
- if (sp->vert) {
- XSetForeground(theDisp, theGC, sp->bg);
-- XFillRectangle(theDisp, sp->win, theGC, 0, sp->len - sp->tsize,
-+ XFillRectangle(theDisp, sp->win, theGC, 0, sp->len - sp->tsize,
- (u_int) sp->tsize, (u_int) sp->tsize);
- butpix = (sp->dnlit) ? down1Pix : downPix;
-
-@@ -251,8 +251,8 @@
- XCopyPlane(theDisp, butpix, sp->win, theGC, 0, 0, up_width,up_height,
- 3, sp->len - 3 - up_height, 1L);
-
-- Draw3dRect(sp->win, 0, sp->len - sp->tsize,
-- (u_int) sp->tsize-1, (u_int) sp->tsize-1,
-+ Draw3dRect(sp->win, 0, sp->len - sp->tsize,
-+ (u_int) sp->tsize-1, (u_int) sp->tsize-1,
- (sp->dnlit) ? R3D_IN : R3D_OUT, 2, sp->hi, sp->lo, sp->bg);
- }
-
-@@ -267,8 +267,8 @@
- XCopyPlane(theDisp, butpix, sp->win, theGC, 0, 0, up_width,up_height,
- sp->len - 3 - up_width, 3, 1L);
-
-- Draw3dRect(sp->win, sp->len - sp->tsize, 0,
-- (u_int) sp->tsize-1, (u_int) sp->tsize-1,
-+ Draw3dRect(sp->win, sp->len - sp->tsize, 0,
-+ (u_int) sp->tsize-1, (u_int) sp->tsize-1,
- (sp->dnlit) ? R3D_IN : R3D_OUT, 2, sp->hi, sp->lo, sp->bg);
- }
- }
-@@ -283,17 +283,17 @@
- {
- if (sp->vert) {
- /* clear out thumb area with background color */
-- XClearArea(theDisp, sp->win, 0, sp->tsize+1, (u_int) sp->tsize,
-+ XClearArea(theDisp, sp->win, 0, sp->tsize+1, (u_int) sp->tsize,
- (u_int) ((sp->len-sp->tsize-1)-(sp->tsize+1)), False);
-
- if (sp->active) { /* a thumb is necessary */
-
- XSetForeground(theDisp, theGC, sp->bg);
-- XFillRectangle(theDisp, sp->win, theGC, 1, sp->tpos+1,
-+ XFillRectangle(theDisp, sp->win, theGC, 1, sp->tpos+1,
- (u_int) (sp->tsize-2), (u_int) (sp->tsize-2));
-
- XSetForeground(theDisp, theGC, sp->fg);
-- XDrawRectangle(theDisp, sp->win, theGC, 0, sp->tpos,
-+ XDrawRectangle(theDisp, sp->win, theGC, 0, sp->tpos,
- (u_int) (sp->tsize-1), (u_int) (sp->tsize-1));
-
- XDrawLine(theDisp, sp->win, theGC, 9-3, sp->tpos+6, 9+3, sp->tpos+6);
-@@ -301,7 +301,7 @@
- XDrawLine(theDisp, sp->win, theGC, 9-3, sp->tpos+10,9+3, sp->tpos+10);
- XDrawLine(theDisp, sp->win, theGC, 9-3, sp->tpos+12,9+3, sp->tpos+12);
-
-- Draw3dRect(sp->win, 1, sp->tpos+1,
-+ Draw3dRect(sp->win, 1, sp->tpos+1,
- (u_int) sp->tsize-3, (u_int) sp->tsize-3, R3D_OUT,2,
- sp->hi, sp->lo, sp->bg);
- }
-@@ -309,17 +309,17 @@
-
- else { /* horizontal */
- /* clear out thumb area with background color */
-- XClearArea(theDisp, sp->win, sp->tsize+1, 0,
-- (u_int) ((sp->len-sp->tsize-1)-(sp->tsize+1)),
-+ XClearArea(theDisp, sp->win, sp->tsize+1, 0,
-+ (u_int) ((sp->len-sp->tsize-1)-(sp->tsize+1)),
- (u_int) sp->tsize, False);
-
- if (sp->active) { /* a thumb is necessary */
- XSetForeground(theDisp, theGC, sp->bg);
-- XFillRectangle(theDisp, sp->win, theGC, sp->tpos+1, 1,
-+ XFillRectangle(theDisp, sp->win, theGC, sp->tpos+1, 1,
- (u_int) (sp->tsize-2), (u_int) (sp->tsize-2));
-
- XSetForeground(theDisp, theGC, sp->fg);
-- XDrawRectangle(theDisp, sp->win, theGC, sp->tpos, 0,
-+ XDrawRectangle(theDisp, sp->win, theGC, sp->tpos, 0,
- (u_int) (sp->tsize-1), (u_int) (sp->tsize-1));
-
- XDrawLine(theDisp, sp->win, theGC, sp->tpos+6, 9-3, sp->tpos+6, 9+3);
-@@ -327,7 +327,7 @@
- XDrawLine(theDisp, sp->win, theGC, sp->tpos+10,9-3, sp->tpos+10,9+3);
- XDrawLine(theDisp, sp->win, theGC, sp->tpos+12,9-3, sp->tpos+12,9+3);
-
-- Draw3dRect(sp->win, sp->tpos+1, 1,
-+ Draw3dRect(sp->win, sp->tpos+1, 1,
- (u_int) sp->tsize-3, (u_int) sp->tsize-3, R3D_OUT,2,
- sp->hi, sp->lo, sp->bg);
- }
-@@ -450,8 +450,8 @@
- case DNLINE: /* arrows */
- pos = whereInScrl(sp,x,y);
- if (pos == ipos) {
-- if (!lit) {
-- lit = 1;
-+ if (!lit) {
-+ lit = 1;
- if (ipos == UPLINE) { sp->uplit = 1; drawArrow(sp,UPLINE); }
- else { sp->dnlit = 1; drawArrow(sp,DNLINE); }
- }
-@@ -467,16 +467,16 @@
- }
- }
- }
--
-+
- else {
-- if (lit) {
-- lit = 0;
-+ if (lit) {
-+ lit = 0;
- if (ipos == UPLINE) { sp->uplit = 0; drawArrow(sp,UPLINE); }
- else { sp->dnlit = 0; drawArrow(sp,DNLINE); }
- }
- }
- break;
--
-+
- }
- }
-
-diff -ruN xv-3.10a/xvsmooth.c xv-3.10a-bugfixes/xvsmooth.c
---- xv-3.10a/xvsmooth.c 1994-12-22 14:34:42.000000000 -0800
-+++ xv-3.10a-bugfixes/xvsmooth.c 2004-05-16 18:04:28.000000000 -0700
-@@ -4,11 +4,11 @@
- * Contains:
- * byte *SmoothResize(src8, swide, shigh, dwide, dhigh,
- * rmap, gmap, bmap, rdmap, gdmap, bdmap, maplen)
-- * byte *Smooth24(pic824, is24, swide, shigh, dwide, dhigh,
-+ * byte *Smooth24(pic824, is24, swide, shigh, dwide, dhigh,
- * rmap, gmap, bmap)
-- * byte *DoColorDither(pic24, pic8, w, h, rmap,gmap,bmap,
-+ * byte *DoColorDither(pic24, pic8, w, h, rmap,gmap,bmap,
- * rdisp, gdisp, bdisp, maplen)
-- * byte *Do332ColorDither(pic24, pic8, w, h, rmap,gmap,bmap,
-+ * byte *Do332ColorDither(pic24, pic8, w, h, rmap,gmap,bmap,
- * rdisp, gdisp, bdisp, maplen)
- */
-
-@@ -18,21 +18,21 @@
-
- static int smoothX PARM((byte *, byte *, int, int, int, int, int,
- byte *, byte *, byte *));
--static int smoothY PARM((byte *, byte *, int, int, int, int, int,
-+static int smoothY PARM((byte *, byte *, int, int, int, int, int,
- byte *, byte *, byte *));
- static int smoothXY PARM((byte *, byte *, int, int, int, int, int,
- byte *, byte *, byte *));
-
-
- /***************************************************/
--byte *SmoothResize(srcpic8, swide, shigh, dwide, dhigh,
-+byte *SmoothResize(srcpic8, swide, shigh, dwide, dhigh,
- rmap, gmap, bmap, rdmap, gdmap, bdmap, maplen)
- byte *srcpic8, *rmap, *gmap, *bmap, *rdmap, *gdmap, *bdmap;
- int swide, shigh, dwide, dhigh, maplen;
- {
-- /* generic interface to Smooth and ColorDither code.
-- given an 8-bit-per, swide * shigh image with colormap rmap,gmap,bmap,
-- will generate a new 8-bit-per, dwide * dhigh image, which is dithered
-+ /* generic interface to Smooth and ColorDither code.
-+ given an 8-bit-per, swide * shigh image with colormap rmap,gmap,bmap,
-+ will generate a new 8-bit-per, dwide * dhigh image, which is dithered
- using colors found in rdmap, gdmap, bdmap arrays */
-
- /* returns ptr to a dwide*dhigh array of bytes, or NULL on failure */
-@@ -50,7 +50,7 @@
-
- return (byte *) NULL;
- }
--
-+
-
-
- /***************************************************/
-@@ -83,23 +83,23 @@
- bperpix = (is24) ? 3 : 1;
-
- /* decide which smoothing routine to use based on type of expansion */
-- if (dwide < swide && dhigh < shigh)
-+ if (dwide < swide && dhigh < shigh)
- retval = smoothXY(pic24, pic824, is24, swide, shigh, dwide, dhigh,
- rmap, gmap, bmap);
-
-- else if (dwide < swide && dhigh >= shigh)
-+ else if (dwide < swide && dhigh >= shigh)
- retval = smoothX (pic24, pic824, is24, swide, shigh, dwide, dhigh,
- rmap, gmap, bmap);
-
-- else if (dwide >= swide && dhigh < shigh)
-+ else if (dwide >= swide && dhigh < shigh)
- retval = smoothY (pic24, pic824, is24, swide, shigh, dwide, dhigh,
- rmap, gmap, bmap);
-
- else {
- /* dwide >= swide && dhigh >= shigh */
-
-- /* cx,cy = original pixel in pic824. px,py = relative position
-- of pixel ex,ey inside of cx,cy as percentages +-50%, +-50%.
-+ /* cx,cy = original pixel in pic824. px,py = relative position
-+ of pixel ex,ey inside of cx,cy as percentages +-50%, +-50%.
- 0,0 = middle of pixel */
-
- /* we can save a lot of time by precomputing cxtab[] and pxtab[], both
-@@ -115,10 +115,10 @@
-
- for (ex=0; ex<dwide; ex++) {
- cxtab[ex] = (ex * swide) / dwide;
-- pxtab[ex] = (((ex * swide)* 100) / dwide)
-+ pxtab[ex] = (((ex * swide)* 100) / dwide)
- - (cxtab[ex] * 100) - 50;
- }
--
-+
- for (ey=0; ey<dhigh; ey++) {
- byte *pptr, rA, gA, bA, rB, gB, bB, rC, gC, bC, rD, gD, bD;
-
-@@ -162,7 +162,7 @@
- cC = pic824[cyOff + x1]; /* left/right center pixel */
- cD = pic824[cyOff + cx]; /* center pixel */
- }
--
-+
- /* quick check */
- if (!is24 && cA == cB && cB == cC && cC == cD) {
- /* set this pixel to the same color as in pic8 */
-@@ -178,30 +178,30 @@
- pD = 100 - (pA + pB + pC);
-
- if (is24) {
-- *pp++ = ((int) (pA * rA))/100 + ((int) (pB * rB))/100 +
-+ *pp++ = ((int) (pA * rA))/100 + ((int) (pB * rB))/100 +
- ((int) (pC * rC))/100 + ((int) (pD * rD))/100;
-
-- *pp++ = ((int) (pA * gA))/100 + ((int) (pB * gB))/100 +
-+ *pp++ = ((int) (pA * gA))/100 + ((int) (pB * gB))/100 +
- ((int) (pC * gC))/100 + ((int) (pD * gD))/100;
-
-- *pp++ = ((int) (pA * bA))/100 + ((int) (pB * bB))/100 +
-+ *pp++ = ((int) (pA * bA))/100 + ((int) (pB * bB))/100 +
- ((int) (pC * bC))/100 + ((int) (pD * bD))/100;
- }
- else { /* 8-bit pic */
-- *pp++ = ((int) (pA * rmap[cA]))/100 + ((int)(pB * rmap[cB]))/100 +
-+ *pp++ = ((int) (pA * rmap[cA]))/100 + ((int)(pB * rmap[cB]))/100 +
- ((int) (pC * rmap[cC]))/100 + ((int)(pD * rmap[cD]))/100;
-
-- *pp++ = ((int) (pA * gmap[cA]))/100 + ((int)(pB * gmap[cB]))/100 +
-+ *pp++ = ((int) (pA * gmap[cA]))/100 + ((int)(pB * gmap[cB]))/100 +
- ((int) (pC * gmap[cC]))/100 + ((int)(pD * gmap[cD]))/100;
-
-- *pp++ = ((int)(pA * bmap[cA]))/100 + ((int)(pB * bmap[cB]))/100 +
-+ *pp++ = ((int)(pA * bmap[cA]))/100 + ((int)(pB * bmap[cB]))/100 +
- ((int)(pC * bmap[cC]))/100 + ((int)(pD * bmap[cD]))/100;
- }
- }
- }
- }
-
-- free(cxtab);
-+ free(cxtab);
- free(pxtab);
- retval = 0; /* okay */
- }
-@@ -218,7 +218,7 @@
-
-
- /***************************************************/
--static int smoothX(pic24, pic824, is24, swide, shigh, dwide, dhigh,
-+static int smoothX(pic24, pic824, is24, swide, shigh, dwide, dhigh,
- rmap, gmap, bmap)
- byte *pic24, *pic824, *rmap, *gmap, *bmap;
- int is24, swide, shigh, dwide, dhigh;
-@@ -253,7 +253,7 @@
-
- bperpix = (is24) ? 3 : 1;
-
-- for (j=0; j<=swide; j++)
-+ for (j=0; j<=swide; j++)
- pixarr[j] = (j*dwide + (15*swide)/16) / swide;
-
- cptr = pic824; cptr1 = cptr + swide * bperpix;
-@@ -280,7 +280,7 @@
- lbufG[j] = ((int) ((*cptr++ * pcnt0) + (*cptr1++ * pcnt1))) >> 6;
- lbufB[j] = ((int) ((*cptr++ * pcnt0) + (*cptr1++ * pcnt1))) >> 6;
- }
-- }
-+ }
- else { /* 8-bit input pic */
- for (j=0; j<swide; j++, cptr++, cptr1++) {
- lbufR[j] = ((int)((rmap[*cptr]* pcnt0) + (rmap[*cptr1]* pcnt1))) >> 6;
-@@ -314,8 +314,8 @@
- return 0;
- }
-
--
--
-+
-+
-
-
-
-@@ -405,7 +405,7 @@
- lbufB[j] += ((int)((bmap[*cptr]*pct0[j])+(bmap[*cptr1]*pct1[j]))) >> 6;
- }
- }
--
-+
- linecnt++;
- }
-
-@@ -421,13 +421,13 @@
- return retval;
- }
-
--
--
-+
-+
-
-
-
- /***************************************************/
--static int smoothXY(pic24, pic824, is24, swide, shigh, dwide, dhigh,
-+static int smoothXY(pic24, pic824, is24, swide, shigh, dwide, dhigh,
- rmap, gmap, bmap)
- byte *pic24, *pic824, *rmap, *gmap, *bmap;
- int is24, swide, shigh, dwide, dhigh;
-@@ -462,7 +462,7 @@
-
- bperpix = (is24) ? 3 : 1;
-
-- for (j=0; j<=swide; j++)
-+ for (j=0; j<=swide; j++)
- pixarr[j] = (j*dwide + (15*swide)/16) / swide;
-
- lastline = linecnt = pixR = pixG = pixB = 0;
-@@ -526,20 +526,20 @@
- return 0;
- }
-
--
--
-+
-+
-
- /********************************************/
--byte *DoColorDither(pic24, pic8, w, h, rmap, gmap, bmap,
-+byte *DoColorDither(pic24, pic8, w, h, rmap, gmap, bmap,
- rdisp, gdisp, bdisp, maplen)
- byte *pic24, *pic8, *rmap, *gmap, *bmap, *rdisp, *gdisp, *bdisp;
- int w, h, maplen;
- {
- /* takes a 24 bit picture, of size w*h, dithers with the colors in
- rdisp, gdisp, bdisp (which have already been allocated),
-- and generates an 8-bit w*h image, which it returns.
-+ and generates an 8-bit w*h image, which it returns.
- ignores input value 'pic8'
-- returns NULL on error
-+ returns NULL on error
-
- note: the rdisp,gdisp,bdisp arrays should be the 'displayed' colors,
- not the 'desired' colors
-@@ -547,7 +547,7 @@
- if pic24 is NULL, uses the passed-in pic8 (an 8-bit image) as
- the source, and the rmap,gmap,bmap arrays as the desired colors */
-
-- byte *np, *ep, *newpic;
-+ byte *np, *ep, *newpic;
- short *cache;
- int r2, g2, b2;
- int *thisline, *nextline, *thisptr, *nextptr, *tmpptr;
-@@ -558,11 +558,11 @@
- int fserrmap[512]; /* -255 .. 0 .. +255 */
-
- /* compute somewhat non-linear floyd-steinberg error mapping table */
-- for (i=j=0; i<=0x40; i++,j++)
-+ for (i=j=0; i<=0x40; i++,j++)
- { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
-- for ( ; i<0x80; i++, j += !(i&1) ? 1 : 0)
-+ for ( ; i<0x80; i++, j += !(i&1) ? 1 : 0)
- { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
-- for ( ; i<=0xff; i++)
-+ for ( ; i<=0xff; i++)
- { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
-
-
-@@ -575,7 +575,7 @@
- cache = (short *) calloc((size_t) (2<<14), sizeof(short));
- thisline = (int *) malloc(pwide3 * sizeof(int));
- nextline = (int *) malloc(pwide3 * sizeof(int));
-- if (!cache || !newpic || !thisline || !nextline) {
-+ if (!cache || !newpic || !thisline || !nextline) {
- if (newpic) free(newpic);
- if (cache) free(cache);
- if (thisline) free(thisline);
-@@ -624,30 +624,30 @@
-
- r2 = *thisptr++; g2 = *thisptr++; b2 = *thisptr++;
-
-- /* map r2,g2,b2 components (could be outside 0..255 range)
-+ /* map r2,g2,b2 components (could be outside 0..255 range)
- into 0..255 range */
--
-+
- if (r2<0 || g2<0 || b2<0) { /* are there any negatives in RGB? */
- if (r2<g2) { if (r2<b2) k = 0; else k = 2; }
- else { if (g2<b2) k = 1; else k = 2; }
-
- switch (k) {
- case 0: g2 -= r2; b2 -= r2; d = (abs(r2) * 3) / 2; /* RED */
-- r2 = 0;
-+ r2 = 0;
- g2 = (g2>d) ? g2 - d : 0;
- b2 = (b2>d) ? b2 - d : 0;
- break;
-
- case 1: r2 -= g2; b2 -= g2; d = (abs(g2) * 3) / 2; /* GREEN */
- r2 = (r2>d) ? r2 - d : 0;
-- g2 = 0;
-+ g2 = 0;
- b2 = (b2>d) ? b2 - d : 0;
- break;
-
- case 2: r2 -= b2; g2 -= b2; d = (abs(b2) * 3) / 2; /* BLUE */
- r2 = (r2>d) ? r2 - d : 0;
- g2 = (g2>d) ? g2 - d : 0;
-- b2 = 0;
-+ b2 = 0;
- break;
- }
- }
-@@ -674,7 +674,7 @@
- mind = 10000;
- for (k=closest=0; k<maplen && mind>7; k++) {
- d = abs(r2 - rdisp[k])
-- + abs(g2 - gdisp[k])
-+ + abs(g2 - gdisp[k])
- + abs(b2 - bdisp[k]);
- if (d<mind) { mind = d; closest = k; }
- }
-@@ -703,7 +703,7 @@
- thisptr[1] += (gerr*7)/16;
- thisptr[2] += (berr*7)/16;
- }
--
-+
- if (i!=imax) { /* do BOTTOM pixel */
- nextptr[0] += (rerr*5)/16;
- nextptr[1] += (gerr*5)/16;
-@@ -735,7 +735,7 @@
-
-
- /********************************************/
--byte *Do332ColorDither(pic24, pic8, w, h, rmap, gmap, bmap,
-+byte *Do332ColorDither(pic24, pic8, w, h, rmap, gmap, bmap,
- rdisp, gdisp, bdisp, maplen)
- byte *pic24, *pic8, *rmap, *gmap, *bmap, *rdisp, *gdisp, *bdisp;
- int w, h, maplen;
-@@ -744,9 +744,9 @@
-
- /* takes a 24 bit picture, of size w*h, dithers with the colors in
- rdisp, gdisp, bdisp (which have already been allocated),
-- and generates an 8-bit w*h image, which it returns.
-+ and generates an 8-bit w*h image, which it returns.
- ignores input value 'pic8'
-- returns NULL on error
-+ returns NULL on error
-
- note: the rdisp,gdisp,bdisp arrays should be the 'displayed' colors,
- not the 'desired' colors
-@@ -754,7 +754,7 @@
- if pic24 is NULL, uses the passed-in pic8 (an 8-bit image) as
- the source, and the rmap,gmap,bmap arrays as the desired colors */
-
-- byte *np, *ep, *newpic;
-+ byte *np, *ep, *newpic;
- int r2, g2, b2;
- int *thisline, *nextline, *thisptr, *nextptr, *tmpptr;
- int i, j, rerr, gerr, berr, pwide3;
-@@ -763,11 +763,11 @@
- int fserrmap[512]; /* -255 .. 0 .. +255 */
-
- /* compute somewhat non-linear floyd-steinberg error mapping table */
-- for (i=j=0; i<=0x40; i++,j++)
-+ for (i=j=0; i<=0x40; i++,j++)
- { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
-- for ( ; i<0x80; i++, j += !(i&1) ? 1 : 0)
-+ for ( ; i<0x80; i++, j += !(i&1) ? 1 : 0)
- { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
-- for ( ; i<=0xff; i++)
-+ for ( ; i<=0xff; i++)
- { fserrmap[256+i] = j; fserrmap[256-i] = -j; }
-
-
-@@ -778,7 +778,7 @@
- newpic = (byte *) malloc((size_t) (w * h));
- thisline = (int *) malloc(pwide3 * sizeof(int));
- nextline = (int *) malloc(pwide3 * sizeof(int));
-- if (!newpic || !thisline || !nextline) {
-+ if (!newpic || !thisline || !nextline) {
- if (newpic) free(newpic);
- if (thisline) free(thisline);
- if (nextline) free(nextline);
-@@ -830,7 +830,7 @@
-
-
- for (j=0; j<w; j++) {
-- int k, d, mind, closest, rb,gb,bb;
-+ int rb,gb,bb;
-
- r2 = *thisptr++; g2 = *thisptr++; b2 = *thisptr++;
- if (i&1) thisptr -= 6; /* move left */
-@@ -846,7 +846,7 @@
- bb = (b2 + 0x20); /* round 2 bits */
- RANGE(bb,0,255);
- bb = bb & 0xc0;
--
-+
-
- *np = rb | (gb>>3) | (bb>>6);
-
-diff -ruN xv-3.10a/xvsunras.c xv-3.10a-bugfixes/xvsunras.c
---- xv-3.10a/xvsunras.c 1994-12-22 14:34:42.000000000 -0800
-+++ xv-3.10a-bugfixes/xvsunras.c 2005-04-02 18:04:20.000000000 -0800
-@@ -54,8 +54,8 @@
- PICINFO *pinfo;
- {
- FILE *fp;
-- int linesize,lsize,csize,isize,i,w,h,d;
-- byte *image, *line, *pic8;
-+ int linesize,lsize,csize,isize,i,w,h,d,npixels,nbytes;
-+ byte *image, *line;
- struct rasterfile sunheader;
- char *bname;
-
-@@ -85,7 +85,7 @@
- sunheader.ras_depth != 8 &&
- sunheader.ras_depth != 24 &&
- sunheader.ras_depth != 32) {
-- fprintf (stderr, "Sun rasterfile image has depth %d\n",
-+ fprintf (stderr, "Sun rasterfile image has depth %d\n",
- sunheader.ras_depth);
- fprintf (stderr, "Depths supported are 1, 8, 24, and 32\n");
- fclose(fp);
-@@ -115,26 +115,59 @@
-
- w = sunheader.ras_width;
- h = sunheader.ras_height;
-- d = sunheader.ras_depth;
-- isize = sunheader.ras_length ?
-- sunheader.ras_length :
-- (w * h * d) / 8;
-+ d = sunheader.ras_depth; /* 1, 8, 24, or 32 (above) */
-+ npixels = w * h;
-+ if (w <= 0 || h <= 0 || npixels/w != h) {
-+ fprintf (stderr, "Sun rasterfile image has invalid dimensions (%dx%d)\n",
-+ w, h);
-+ fclose(fp);
-+ return 0;
-+ }
-+ if (d == 1)
-+ nbytes = npixels/8; /* should round up here, but used only for printf */
-+ else {
-+ nbytes = npixels * (d/8);
-+/*
-+ [nbytes (isize) used only in printfs; don't really care about overflows]
-+ if (nbytes/npixels != (d/8)) {
-+ fprintf (stderr, "Sun rasterfile has invalid dimensions (%dx%dx%d)\n",
-+ w, h, d);
-+ fclose(fp);
-+ return 0;
-+ }
-+ */
-+ }
-+ isize = sunheader.ras_length ? sunheader.ras_length : nbytes;
- csize = (sunheader.ras_maptype == RMT_NONE) ? 0 : sunheader.ras_maplength;
-
-
-- /* compute length of the output (xv-format) image */
-- lsize = w * h;
-- if (d == 24 || d == 32) lsize = lsize * 3;
-+ /* length of the output (xv-format) image */
-+ lsize = npixels;
-+ if (d == 24 || d == 32) {
-+ lsize *= 3;
-+ if (lsize/3 != npixels) {
-+ fprintf (stderr, "Sun rasterfile has invalid dimensions (%dx%dx%d)\n",
-+ w, h, d);
-+ fclose(fp);
-+ return 0;
-+ }
-+ }
-
-
- linesize = w * d;
-+ if (linesize/w != d || linesize + 15 < linesize) {
-+ fprintf (stderr, "Sun rasterfile has invalid dimensions (%dx%dx%d)\n",
-+ w, h, d);
-+ fclose(fp);
-+ return 0;
-+ }
- if (linesize % 16) linesize += (16 - (linesize % 16));
- linesize /= 8;
-
- if (DEBUG) {
- fprintf(stderr,"%s: LoadSunRas() - loading a %dx%d pic, %d planes\n",
- cmd, w, h, d);
-- fprintf (stderr,
-+ fprintf (stderr,
- "type %d, maptype %d, isize %d, csize %d, lsize %d, linesize %d\n",
- sunheader.ras_type, sunheader.ras_maptype,
- isize, csize, lsize, linesize);
-@@ -188,13 +221,13 @@
- }
-
- switch (d) {
-- case 1: sunRas1to8 (image + w * i, line, w);
-+ case 1: sunRas1to8 (image + w * i, line, w);
- break;
- case 8: xvbcopy((char *) line, (char *) image + w * i, (size_t) w);
- break;
- case 24: xvbcopy((char *) line, (char *) image + w * i * 3, (size_t) w*3);
- break;
--
-+
- case 32:
- {
- int k;
-@@ -202,7 +235,7 @@
- ip = line;
- op = (byte *) (image + w * i * 3);
- for (k = 0; k<w; k++) {
-- *ip++; /* skip 'alpha' */
-+ ip++; /* skip 'alpha' */
- *op++ = *ip++; /* red */
- *op++ = *ip++; /* green */
- *op++ = *ip++; /* blue */
-@@ -210,9 +243,9 @@
- }
- }
- }
--
-+
- free(line);
--
-+
- if (DEBUG) fprintf(stderr,"Sun ras: image loaded!\n");
-
-
-@@ -224,7 +257,7 @@
- else pinfo->type = PIC8;
-
- pinfo->pic = image;
-- pinfo->w = w;
-+ pinfo->w = w;
- pinfo->h = h;
- pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
- pinfo->frmType = F_SUNRAS;
-@@ -364,10 +397,15 @@
-
- /* special case: if PIC24 and writing GREYSCALE, write 8-bit file */
- if (ptype == PIC24 && colorstyle == F_GREYSCALE) {
-- graypic = (byte *) malloc((size_t) w*h);
-+ int npixels = w * h;
-+ if (w <= 0 || h <= 0 || npixels/w != h) {
-+ SetISTR(ISTR_WARNING, "Image is too large (%dx%d)", w, h);
-+ return (2);
-+ }
-+ graypic = (byte *) malloc((size_t) npixels);
- if (!graypic) FatalError("unable to malloc in WriteSunRas()");
--
-- for (i=0,sp=pic,dp=graypic; i<w*h; i++,sp+=3,dp++) {
-+
-+ for (i=0,sp=pic,dp=graypic; i<npixels; i++,sp+=3,dp++) {
- *dp = MONO(sp[0],sp[1],sp[2]);
- }
-
-@@ -379,9 +417,18 @@
- }
-
-
-- if (ptype==PIC24) { d = 24; linesize = w * 3; }
-- else if (colorstyle != F_BWDITHER) { d = 8; linesize = w; }
-- else {
-+ if (ptype==PIC24) {
-+ d = 24;
-+ linesize = w * 3;
-+ if (linesize/w != 3) {
-+ SetISTR(ISTR_WARNING, "Image is too wide (%d)", w);
-+ if (graypic) free(graypic);
-+ return (2);
-+ }
-+ } else if (colorstyle != F_BWDITHER) {
-+ d = 8;
-+ linesize = w;
-+ } else {
- d = 1;
- linesize = w;
- if (linesize % 8) linesize += (8 - linesize % 8);
-@@ -391,6 +438,11 @@
-
-
- if (linesize % 2) linesize++;
-+ if (linesize == 0) {
-+ SetISTR(ISTR_WARNING, "Image is too wide (%d)", w);
-+ if (graypic) free(graypic);
-+ return (2);
-+ }
- line = (byte *) malloc((size_t) linesize);
- if (!line) {
- SetISTR(ISTR_WARNING, "Can't allocate memory for save!\n");
-@@ -428,7 +480,7 @@
- write_sun_long (sunheader.ras_maplength, fp);
-
- /* write the colormap */
-- if (d == 8)
-+ if (d == 8) {
- if (colorstyle == 1) /* grayscale */
- for (color=0; color<3; color++)
- for (i=0; i<numcols; i++)
-@@ -438,6 +490,7 @@
- fwrite (gmap, sizeof(byte), (size_t) numcols, fp);
- fwrite (bmap, sizeof(byte), (size_t) numcols, fp);
- }
-+ }
-
-
- /* write the image */
-diff -ruN xv-3.10a/xvtarga.c xv-3.10a-bugfixes/xvtarga.c
---- xv-3.10a/xvtarga.c 1994-12-22 14:34:55.000000000 -0800
-+++ xv-3.10a-bugfixes/xvtarga.c 2005-03-31 07:33:07.000000000 -0800
-@@ -17,8 +17,8 @@
- * 0:
- * 1: colormap type
- * 2: image type (1=colmap RGB, 2=uncomp RGB, 3=uncomp gray)
-- * 3:
-- * 4:
-+ * 3:
-+ * 4:
- * 5: colormap_length, low byte
- * 6: colormap_length, high byte
- * 7: bits per cmap entry (8, 24, 32)
-@@ -28,7 +28,7 @@
- * 14: height, low byte
- * 15: height, high byte
- * 16: bits per pixel (8, 24)
-- * 17: flags
-+ * 17: flags
- */
-
-
-@@ -48,7 +48,7 @@
- /* returns '1' on success */
-
- FILE *fp;
-- int i, row, c, c1, w, h, r, g, b, flags, intlace, topleft, trunc;
-+ int i, row, c, c1, w, h, npixels, bufsize, flags, intlace, topleft, trunc;
- byte *pic24, *pp;
-
- bname = BaseName(fname);
-@@ -88,7 +88,9 @@
- c=getc(fp); c1=getc(fp);
- h = c1*256 + c;
-
-- if (w<1 || h<1) {
-+ npixels = w * h;
-+ bufsize = 3 * npixels;
-+ if (w <= 0 || h <= 0 || npixels/w != h || bufsize/3 != npixels) {
- fclose(fp);
- SetISTR(ISTR_WARNING,"%s: error in Targa header (bad image size)", bname);
- return 0;
-@@ -115,7 +117,7 @@
- #endif
-
-
-- pic24 = (byte *) calloc((size_t) w*h*3, (size_t) 1);
-+ pic24 = (byte *) calloc((size_t) bufsize, (size_t) 1);
- if (!pic24) FatalError("couldn't malloc 'pic24'");
-
-
-@@ -134,7 +136,7 @@
- if (i < h / 2) row = 2 * i;
- else row = 2 * (i - h/2) + 1;
- }
--
-+
- else row = i; /* no interlace */
-
-
-@@ -150,7 +152,7 @@
-
-
- /* swap R,B values (file is in BGR, pic24 should be in RGB) */
-- for (i=0, pp=pic24; i<w*h; i++, pp+=3) {
-+ for (i=0, pp=pic24; i<npixels; i++, pp+=3) {
- c = pp[0]; pp[0] = pp[2]; pp[2] = c;
- }
-
-@@ -185,7 +187,7 @@
-
- /* write the header */
- for (i=0; i<12; i++) putc( (i==2) ? 2 : 0, fp);
--
-+
- putc(w&0xff, fp);
- putc((w>>8)&0xff,fp);
- putc(h&0xff, fp);
-diff -ruN xv-3.10a/xvtext.c xv-3.10a-bugfixes/xvtext.c
---- xv-3.10a/xvtext.c 1995-01-13 15:46:28.000000000 -0800
-+++ xv-3.10a-bugfixes/xvtext.c 2004-05-16 18:04:38.000000000 -0700
-@@ -1,6 +1,6 @@
- /*
- * xvtext.c - text file display window routines
-- *
-+ *
- * includes:
- * void CreateTextWins(geom, cmtgeom);
- * void OpenTextView(text, textlen, title, freeonclose);
-@@ -98,8 +98,7 @@
- XSizeHints hints;
- XSetWindowAttributes xswa;
- TVINFO *tv;
-- int gx,gy,gw,gh,gset,gx1,gy1;
--
-+
-
- mfwide = monofinfo->max_bounds.width;
- mfhigh = monofinfo->ascent + monofinfo->descent;
-@@ -120,10 +119,10 @@
- tv = &tinfo[i];
-
- tv->win = CreateWindow((i<CMTWIN) ? "xv text viewer" : "xv image comments",
-- "XVtextview",
-- (i<CMTWIN) ? geom : cmtgeom,
-- defwide,
-- (i<CMTWIN) ? defhigh : cmthigh,
-+ "XVtextview",
-+ (i<CMTWIN) ? geom : cmtgeom,
-+ defwide,
-+ (i<CMTWIN) ? defhigh : cmthigh,
- infofg, infobg, 1);
- if (!tv->win) FatalError("can't create textview window!");
-
-@@ -135,17 +134,17 @@
-
- /* note: everything is sized and positioned in resizeText() */
-
-- tv->textW = XCreateSimpleWindow(theDisp, tv->win, 1,1, 100,100,
-+ tv->textW = XCreateSimpleWindow(theDisp, tv->win, 1,1, 100,100,
- 1,infofg,infobg);
- if (!tv->textW) FatalError("can't create textview text window!");
-
-- SCCreate(&(tv->vscrl), tv->win, 0,0, 1,100, 0,0,0,0,
-+ SCCreate(&(tv->vscrl), tv->win, 0,0, 1,100, 0,0,0,0,
- infofg, infobg, hicol, locol, drawTextW);
-
-- SCCreate(&(tv->hscrl), tv->win, 0,0, 0,100, 0,0,0,0,
-+ SCCreate(&(tv->hscrl), tv->win, 0,0, 0,100, 0,0,0,0,
- infofg, infobg, hicol, locol, drawTextW);
-
-- if (XGetNormalHints(theDisp, tv->win, &hints))
-+ if (XGetNormalHints(theDisp, tv->win, &hints))
- hints.flags |= PMinSize;
- else
- hints.flags = PMinSize;
-@@ -162,7 +161,7 @@
-
- XSelectInput(theDisp, tv->textW, ExposureMask | ButtonPressMask);
-
--
-+
- BTCreate(&(tv->but[TV_ASCII]), tv->win, 0,0,BUTTW,BUTTH,
- "Ascii",infofg,infobg,hicol,locol);
- BTCreate(&(tv->but[TV_HEX]), tv->win, 0,0,BUTTW,BUTTH,
-@@ -185,7 +184,7 @@
- for (i=0; i<MAXTVWIN; i++) {
- resizeText(&tinfo[i], defwide, (i<CMTWIN) ? defhigh : cmthigh);
-
-- XSelectInput(theDisp, tinfo[i].win, ExposureMask | ButtonPressMask |
-+ XSelectInput(theDisp, tinfo[i].win, ExposureMask | ButtonPressMask |
- KeyPressMask | StructureNotifyMask);
- }
-
-@@ -200,7 +199,6 @@
- {
- /* given a filename, attempts to read in the file and open a textview win */
-
-- int i;
- long textlen;
- char *text, buf[512], title[128], rfname[MAXPATHLEN+1];
- char *basefname[128]; /* just current fname, no path */
-@@ -222,7 +220,7 @@
- if (!UncompressFile(basefname, rfname)) return;/* failed to uncompress */
- #endif
- }
--
-+
-
-
- fp = fopen(rfname, "r");
-@@ -246,7 +244,7 @@
-
- text = (char *) malloc((size_t) textlen);
- if (!text) {
-- sprintf(buf, "Couldn't malloc %ld bytes to read file '%s'",
-+ sprintf(buf, "Couldn't malloc %ld bytes to read file '%s'",
- textlen, rfname);
- ErrPopUp(buf, "\nSo what!");
- fclose(fp);
-@@ -267,8 +265,8 @@
- /* note: text gets freed when window gets closed */
- }
-
--
--
-+
-+
- /***************************************************************/
- void OpenTextView(text, len, title, freeonclose)
- char *text, *title;
-@@ -276,7 +274,6 @@
- {
- /* opens up a textview window */
-
-- int i, oldone;
- TVINFO *tv;
-
- tv = &tinfo[0];
-@@ -293,6 +290,7 @@
- tv->textlen = len;
- tv->freeonclose = freeonclose;
- strncpy(tv->title, title, (size_t) TITLELEN-1);
-+ tv->title[TITLELEN-1] = '\0';
-
- computeText(tv); /* compute # lines and linestarts array */
-
-@@ -316,7 +314,6 @@
- {
- /* opens up the reserved 'comment' textview window */
-
-- int i;
- TVINFO *tv;
-
- tv = &tinfo[CMTWIN];
-@@ -351,9 +348,9 @@
- tv->textlen = (tv->text) ? strlen(tv->text) : 0;
- tv->freeonclose = 0;
-
-- if (strlen(fullfname))
-+ if (strlen(fullfname))
- sprintf(tv->title, "File: '%s'", BaseName(fullfname));
-- else
-+ else
- sprintf(tv->title, "<no file loaded>");
-
- computeText(tv); /* compute # lines and linestarts array */
-@@ -504,7 +501,7 @@
- if (tv->freeonclose && tv->text) free(tv->text);
- if (tv->lines) free(tv->lines);
-
-- tv->text = (char *) NULL;
-+ tv->text = (char *) NULL;
- tv->lines = (char **) NULL;
- tv->numlines = tv->textlen = tv->hexmode = 0;
- }
-@@ -518,7 +515,7 @@
- /* checks event to see if it's a text-window related thing. If it
- is, it eats the event and returns '1', otherwise '0'. */
-
-- int i, rv;
-+ int rv;
-
- rv = 1;
-
-@@ -560,7 +557,7 @@
- count++;
- } while (XCheckWindowEvent(theDisp, evt.xexpose.window,
- ExposureMask, &evt));
--
-+
- XClipBox(reg, &rect); /* bounding box of region */
- XSetRegion(theDisp, theGC, reg);
-
-@@ -570,7 +567,7 @@
- fprintf(stderr,"grouped %d expose events into %d,%d %dx%d rect\n",
- count, rect.x, rect.y, rect.width, rect.height);
- }
--
-+
- if (e->window == tv->win) drawTextView(tv);
- else if (e->window == tv->textW) drawTextW(0, &(tv->vscrl));
-
-@@ -584,7 +581,7 @@
-
- else if (xev->type == ButtonPress) {
- XButtonEvent *e = (XButtonEvent *) xev;
-- int i,x,y;
-+ int x,y;
- x = e->x; y = e->y;
-
- if (e->button == Button1) {
-@@ -615,7 +612,7 @@
-
- if (tv->wide != e->width || tv->high != e->height) {
- if (DEBUG) fprintf(stderr,"Forcing a redraw! (from configure)\n");
-- XClearArea(theDisp, tv->win, 0, 0,
-+ XClearArea(theDisp, tv->win, 0, 0,
- (u_int) e->width, (u_int) e->height, True);
- resizeText(tv, e->width, e->height);
- }
-@@ -633,7 +630,7 @@
- TVINFO *tv;
- int w,h;
- {
-- int i, maxw, maxh, hmax, hpage, vmax, vpage;
-+ int i, maxw, maxh;
- XSizeHints hints;
-
- if (tv->wide == w && tv->high == h) return; /* no change in size */
-@@ -657,7 +654,7 @@
- tv->twWide = tv->chwide * mfwide + 6;
- tv->twHigh = tv->chhigh * mfhigh + 6;
-
-- XMoveResizeWindow(theDisp, tv->textW, LRMARGINS, TOPMARGIN,
-+ XMoveResizeWindow(theDisp, tv->textW, LRMARGINS, TOPMARGIN,
- (u_int) tv->twWide, (u_int) tv->twHigh);
-
- for (i=0; i<TV_NBUTTS; i++) {
-@@ -692,8 +689,8 @@
- hpag = tv->chwide / 4;
- vpag = tv->chhigh - 1;
-
--
-- SCChange(&tv->vscrl, LRMARGINS + tv->twWide+1, TOPMARGIN,
-+
-+ SCChange(&tv->vscrl, LRMARGINS + tv->twWide+1, TOPMARGIN,
- 1, tv->twHigh, 0, vmax, tv->vscrl.val, vpag);
-
- SCChange(&tv->hscrl, LRMARGINS, TOPMARGIN + tv->twHigh + 1,
-@@ -731,11 +728,11 @@
- y = 5;
-
- XSetForeground(theDisp, theGC, infobg);
-- XFillRectangle(theDisp, tv->win, theGC, 5+1, y+1,
-+ XFillRectangle(theDisp, tv->win, theGC, 5+1, y+1,
- (u_int) StringWidth(tv->title)+6, (u_int) CHIGH+4);
-
- XSetForeground(theDisp, theGC, infofg);
-- XDrawRectangle(theDisp, tv->win, theGC, 5, y,
-+ XDrawRectangle(theDisp, tv->win, theGC, 5, y,
- (u_int) StringWidth(tv->title)+7, (u_int) CHIGH+5);
-
- Draw3dRect(tv->win, 5+1, y+1, (u_int) StringWidth(tv->title)+5,
-@@ -763,15 +760,15 @@
-
- if (tv->hexmode) nl = tv->hexlines;
- else {
-- if (tv->numlines>0 &&
-- tv->lines[tv->numlines-1] - tv->lines[tv->numlines-2] == 1)
-+ if (tv->numlines>0 &&
-+ tv->lines[tv->numlines-1] - tv->lines[tv->numlines-2] == 1)
- nl = tv->numlines - 2; /* line after last \n has zero length */
- else nl = tv->numlines - 1;
- }
- if (nl<0) nl = 0;
-
-- sprintf(tmpstr, "%d byte%s, %d line%s",
-- tv->textlen, (tv->textlen!=1) ? "s" : "",
-+ sprintf(tmpstr, "%d byte%s, %d line%s",
-+ tv->textlen, (tv->textlen!=1) ? "s" : "",
- nl, (nl!=1) ? "s" : "");
-
- w = StringWidth(tmpstr) + 7; /* width of frame */
-@@ -779,13 +776,13 @@
- y = 6;
-
- XSetForeground(theDisp, theGC, infobg);
-- XFillRectangle(theDisp, tv->win, theGC, (x-w)+1, y+1,
-+ XFillRectangle(theDisp, tv->win, theGC, (x-w)+1, y+1,
- (u_int) (w-1), (u_int) CHIGH+4);
-
- XSetForeground(theDisp, theGC, infofg);
- XDrawRectangle(theDisp, tv->win, theGC, x-w, y, (u_int) w, (u_int) CHIGH+5);
-
-- Draw3dRect(tv->win, (x-w)+1, y+1, (u_int) (w-2), (u_int) CHIGH+3,
-+ Draw3dRect(tv->win, (x-w)+1, y+1, (u_int) (w-2), (u_int) CHIGH+3,
- R3D_IN,2,hicol,locol,infobg);
-
- XSetForeground(theDisp, theGC, infofg);
-@@ -800,10 +797,10 @@
- int x, y, w, nl;
- char tmpstr[64];
-
-- nl = (tv->hexmode) ? tv->hexlines : tv->numlines-1;
-+ nl = (tv->hexmode) ? tv->hexlines : tv->numlines-1;
-
-- sprintf(tmpstr, "%d byte%s, %d line%s",
-- tv->textlen, (tv->textlen>1) ? "s" : "",
-+ sprintf(tmpstr, "%d byte%s, %d line%s",
-+ tv->textlen, (tv->textlen>1) ? "s" : "",
- nl, (nl>1) ? "s" : "");
-
- w = StringWidth(tmpstr) + 7; /* width of frame */
-@@ -825,14 +822,14 @@
- u_char *sp, *ep, *lp;
-
- /* figure out TVINFO pointer from SCRL pointer */
-- for (i=0; i<MAXTVWIN && sptr != &tinfo[i].vscrl
-+ for (i=0; i<MAXTVWIN && sptr != &tinfo[i].vscrl
- && sptr != &tinfo[i].hscrl; i++);
- if (i==MAXTVWIN) return; /* didn't find one */
-
- tv = &tinfo[i];
-
- /* make sure we've been sized. Necessary, as creating/modifying the
-- scrollbar calls this routine directly, rather than through
-+ scrollbar calls this routine directly, rather than through
- TextCheckEvent() */
-
- if (!hasBeenSized) return;
-@@ -849,7 +846,7 @@
- for (i=0; i<tv->chhigh; i++) { /* draw each line */
- lnum = i + tv->vscrl.val;
- if (lnum < tv->numlines-1) {
--
-+
- /* find start of displayed portion of line. This is *wildly*
- complicated by the ctrl-character and tab expansion... */
-
-@@ -902,7 +899,7 @@
- if (extrach == 2) *lp = '^';
- else if (extrach == 1) *lp = *sp + 64;
- }
--
-+
- else if (*sp > 127) {
- if (!extrach) extrach = 4;
- if (extrach == 4) *lp = '\\';
-@@ -926,7 +923,7 @@
- }
-
- /* draw the line */
-- XDrawImageString(theDisp, tv->textW, theGC,
-+ XDrawImageString(theDisp, tv->textW, theGC,
- 3, i*mfhigh + 3 + mfascent, linestr, lwide);
- } /* for i ... */
- } /* if hexmode */
-@@ -936,7 +933,7 @@
- for (i=0; i<tv->chhigh; i++) { /* draw each line */
- lnum = i + tv->vscrl.val;
- if (lnum < tv->hexlines) {
--
-+
- char hexstr[80], tmpstr[16];
-
- /* generate hex for this line */
-@@ -972,7 +969,7 @@
- now build 'linestr', which is going to have hexstr shifted
- and/or padded with blanks (ie, the displayed portion or hexstr) */
-
-- /* skip obscured beginning of line, if any */
-+ /* skip obscured beginning of line, if any */
- for (cpos=0, sp=(byte *) hexstr; cpos<hpos && *sp; cpos++, sp++);
-
- for (cpos=0, lp=(byte *)linestr; cpos<lwide; cpos++, lp++) {
-@@ -985,16 +982,16 @@
- }
-
- /* draw the line */
-- XDrawImageString(theDisp, tv->textW, theGC,
-+ XDrawImageString(theDisp, tv->textW, theGC,
- 3, i*mfhigh + 3 + mfascent, linestr, lwide);
- } /* for i ... */
- } /* else hexmode */
--
-+
-
-
- XSetFont(theDisp, theGC, mfont);
-
-- Draw3dRect(tv->textW, 0, 0, (u_int) (tv->twWide-1), (u_int) (tv->twHigh-1),
-+ Draw3dRect(tv->textW, 0, 0, (u_int) (tv->twWide-1), (u_int) (tv->twHigh-1),
- R3D_IN, 2, hicol, locol, infobg);
- }
-
-@@ -1033,7 +1030,7 @@
- stlen = XLookupString(kevt, buf, 128, &ks, (XComposeStatus *) NULL);
- shift = kevt->state & ShiftMask;
- ck = CursorKey(ks, shift, 1);
-- dealt = 1;
-+ dealt = 1;
-
- RemapKeyCheck(ks, buf, &stlen);
-
-@@ -1060,8 +1057,6 @@
- TVINFO *tv;
- int key;
- {
-- int i,j;
--
- if (!tv->textlen) return;
-
- /* an arrow key (or something like that) was pressed in icon window.
-@@ -1108,7 +1103,7 @@
- else { /* switch to ascii mode */
- pos = oldvscrl * 16;
- for (i=0; i<tv->numlines-1; i++) {
-- if (tv->lines[i+1] - tv->text > pos &&
-+ if (tv->lines[i+1] - tv->text > pos &&
- tv->lines[i] - tv->text <= pos) break;
- }
- if (i<tv->numlines-1) SCSetVal(&tv->vscrl, i);
-@@ -1127,9 +1122,9 @@
- int i,j,wide,maxwide,space;
- byte *sp;
-
-- if (!tv->text) {
-- tv->numlines = tv->hexlines = 0;
-- tv->lines = (char **) NULL;
-+ if (!tv->text) {
-+ tv->numlines = tv->hexlines = 0;
-+ tv->lines = (char **) NULL;
- return;
- }
-
-@@ -1153,8 +1148,8 @@
-
- tv->lines[tv->numlines - 1] = tv->text + tv->textlen + 1;
-
-- /* each line has a trailing '\n' character, except for the last line,
-- which has a trailing '\0' character. In any case, all lines can
-+ /* each line has a trailing '\n' character, except for the last line,
-+ which has a trailing '\0' character. In any case, all lines can
- be printed by printing ((lines[n+1] - lines[n]) - 1) characters,
- starting with lines[n].
-
-@@ -1164,13 +1159,13 @@
-
- /* compute length of longest line, when shown in 'ascii' mode. Takes
- into account the fact that non-printing chars (<32 or >127) will be
-- shown in an 'expanded' form. (<32 chars will be shown as '^A'
-+ shown in an 'expanded' form. (<32 chars will be shown as '^A'
- (or whatever), and >127 chars will be shown as octal '\275') */
-
- maxwide = 0;
- for (i=0; i<tv->numlines-1; i++) {
- /* compute displayed width of line #i */
-- for (sp=(byte *) tv->lines[i], wide=0; sp<(byte *) tv->lines[i+1]-1;
-+ for (sp=(byte *) tv->lines[i], wide=0; sp<(byte *) tv->lines[i+1]-1;
- sp++) {
- if (*sp == '\011') { /* tab to next multiple of 8 */
- space = ((wide+8) & (~7)) - wide;
-diff -ruN xv-3.10a/xvtiff.c xv-3.10a-bugfixes/xvtiff.c
---- xv-3.10a/xvtiff.c 1995-01-13 11:53:34.000000000 -0800
-+++ xv-3.10a-bugfixes/xvtiff.c 2005-03-27 17:25:31.000000000 -0800
-@@ -1,7 +1,7 @@
- /*
- * xvtiff.c - load routine for 'TIFF' format pictures
- *
-- * LoadTIFF(fname, numcols) - load a TIFF file
-+ * LoadTIFF(fname, numcols, quick) - load a TIFF file
- */
-
- #ifndef va_start
-@@ -15,6 +15,35 @@
- #include "tiffio.h" /* has to be after xv.h, as it needs varargs/stdarg */
-
-
-+/* Portions fall under the following copyright:
-+ *
-+ * Copyright (c) 1992, 1993, 1994 Sam Leffler
-+ * Copyright (c) 1992, 1993, 1994 Silicon Graphics, Inc.
-+ *
-+ * Permission to use, copy, modify, distribute, and sell this software and
-+ * its documentation for any purpose is hereby granted without fee, provided
-+ * that (i) the above copyright notices and this permission notice appear in
-+ * all copies of the software and related documentation, and (ii) the names of
-+ * Sam Leffler and Silicon Graphics may not be used in any advertising or
-+ * publicity relating to the software without the specific, prior written
-+ * permission of Sam Leffler and Silicon Graphics.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
-+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-+ *
-+ * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
-+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-+ * OF THIS SOFTWARE.
-+ */
-+
-+
-+static int copyTiff PARM((TIFF *, char *));
-+static int cpStrips PARM((TIFF *, TIFF *));
-+static int cpTiles PARM((TIFF *, TIFF *));
- static byte *loadPalette PARM((TIFF *, uint32, uint32, int, int, PICINFO *));
- static byte *loadColor PARM((TIFF *, uint32, uint32, int, int, PICINFO *));
- static int loadImage PARM((TIFF *, uint32, uint32, byte *, int));
-@@ -28,19 +57,23 @@
- static int error_occurred;
-
- /*******************************************/
--int LoadTIFF(fname, pinfo)
-- char *fname;
-+int LoadTIFF(fname, pinfo, quick)
-+ char *fname;
- PICINFO *pinfo;
-+ int quick;
- /*******************************************/
- {
- /* returns '1' on success, '0' on failure */
-
- TIFF *tif;
- uint32 w, h;
-+ float xres, yres;
- short bps, spp, photo, orient;
- FILE *fp;
- byte *pic8;
- char *desc, oldpath[MAXPATHLEN+1], tmppath[MAXPATHLEN+1], *sp;
-+ char tmp[256], tmpname[256];
-+ int i, nump;
-
- error_occurred = 0;
-
-@@ -60,6 +93,8 @@
- filesize = ftell(fp);
- fclose(fp);
-
-+
-+
- rmap = pinfo->r; gmap = pinfo->g; bmap = pinfo->b;
-
- /* a kludge: temporarily cd to the directory that the file is in (if
-@@ -80,10 +115,61 @@
- else filename = BaseName(fname);
- }
- }
--
--
-
-- tif=TIFFOpen(filename,"r");
-+
-+ nump = 1;
-+
-+ if (!quick) {
-+ /* see if there's more than 1 image in tiff file, to determine if we
-+ should do multi-page thing... */
-+
-+ tif = TIFFOpen(filename,"r");
-+ if (!tif) return 0;
-+ while (TIFFReadDirectory(tif)) nump++;
-+ TIFFClose(tif);
-+ if (DEBUG)
-+ fprintf(stderr,"LoadTIFF: %d page%s found\n", nump, nump==1 ? "" : "s");
-+
-+
-+ /* if there are multiple images, copy them out to multiple tmp files,
-+ and load the first one... */
-+
-+ /* GRR 20050320: converted this fake mktemp() to use mktemp()/mkstemp()
-+ internally (formerly it simply prepended tmpdir to the string and
-+ returned immediately) */
-+ xv_mktemp(tmpname, "xvpgXXXXXX");
-+
-+ if (tmpname[0] == '\0') { /* mktemp() or mkstemp() blew up */
-+ sprintf(str,"LoadTIFF: Unable to create temporary filename???");
-+ ErrPopUp(str, "\nHow unlikely!");
-+ return 0;
-+ }
-+
-+ if (nump>1) {
-+ TIFF *in;
-+
-+ in = TIFFOpen(filename, "r");
-+ if (!in) return 0;
-+ for (i=1; i<=nump; i++) {
-+ sprintf(tmp, "%s%d", tmpname, i);
-+ if (!copyTiff(in, tmp)) {
-+ SetISTR(ISTR_WARNING, "LoadTIFF: Error writing page files!");
-+ break;
-+ }
-+
-+ if (!TIFFReadDirectory(in)) break;
-+ }
-+ if (DEBUG)
-+ fprintf(stderr,"LoadTIFF: %d page%s written\n",
-+ i-1, (i-1)==1 ? "" : "s");
-+
-+ sprintf(tmp, "%s%d", tmpname, 1); /* open page #1 */
-+ filename = tmp;
-+ }
-+ } /* if (!quick) ... */
-+
-+
-+ tif = TIFFOpen(filename,"r");
- if (!tif) return 0;
-
- /* flip orientation so that image comes in X order */
-@@ -107,6 +193,11 @@
- TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE, &bps);
- TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &photo);
- TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &spp);
-+ if ((TIFFGetField(tif, TIFFTAG_XRESOLUTION, &xres) == 1) &&
-+ (TIFFGetField(tif, TIFFTAG_YRESOLUTION, &yres) == 1)) {
-+ normaspect = yres / xres;
-+ if (DEBUG) fprintf(stderr,"TIFF aspect = %f\n", normaspect);
-+ }
-
- if (spp == 1) {
- pic8 = loadPalette(tif, w, h, photo, bps, pinfo);
-@@ -116,19 +207,19 @@
-
- /* try to get comments, if any */
- pinfo->comment = (char *) NULL;
--
-+
- desc = (char *) NULL;
-
- TIFFGetField(tif, TIFFTAG_IMAGEDESCRIPTION, &desc);
- if (desc && strlen(desc) > (size_t) 0) {
- /* kludge: tiff library seems to return bizarre comments */
-- if (strlen(desc)==4 && strcmp(desc, "\367\377\353\370")==0) {}
-+ if (strlen(desc)==4 && strcmp(desc, "\367\377\353\370")==0) {}
- else {
- pinfo->comment = (char *) malloc(strlen(desc) + 1);
- if (pinfo->comment) strcpy(pinfo->comment, desc);
- }
- }
--
-+
- TIFFClose(tif);
-
- /* un-kludge */
-@@ -139,6 +230,8 @@
- if (pic8) free(pic8);
- if (pinfo->comment) free(pinfo->comment);
- pinfo->comment = (char *) NULL;
-+ if (!quick && nump>1) KillPageFiles(tmpname, nump);
-+ SetCursors(-1);
- return 0;
- }
-
-@@ -148,15 +241,168 @@
- pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
- pinfo->frmType = F_TIFF;
-
-+ if (nump>1) strcpy(pinfo->pagebname, tmpname);
-+ pinfo->numpages = nump;
-
- if (pinfo->pic) return 1;
-
-+
- /* failed. if we malloc'd a comment, free it */
- if (pinfo->comment) free(pinfo->comment);
- pinfo->comment = (char *) NULL;
-
-+ if (!quick && nump>1) KillPageFiles(tmpname, nump);
-+ SetCursors(-1);
-+
- return 0;
--}
-+}
-+
-+
-+
-+
-+/*******************************************/
-+
-+#define CopyField(tag, v) \
-+ if (TIFFGetField(in, tag, &v)) TIFFSetField(out, tag, v)
-+#define CopyField2(tag, v1, v2) \
-+ if (TIFFGetField(in, tag, &v1, &v2)) TIFFSetField(out, tag, v1, v2)
-+#define CopyField3(tag, v1, v2, v3) \
-+ if (TIFFGetField(in, tag, &v1, &v2, &v3)) TIFFSetField(out, tag, v1, v2, v3)
-+
-+
-+/*******************************************/
-+static int copyTiff(in, fname)
-+ TIFF *in;
-+ char *fname;
-+{
-+ /* copies tiff (sub)image to given filename. (Used only for multipage
-+ images.) Returns 0 on error */
-+
-+ TIFF *out;
-+ short bitspersample, samplesperpixel, shortv, *shortav;
-+ uint32 w, l;
-+ float floatv;
-+ char *stringv;
-+ uint32 longv;
-+ uint16 *red, *green, *blue, shortv2;
-+ int rv;
-+
-+ out = TIFFOpen(fname, "w");
-+ if (!out) return 0;
-+
-+ CopyField (TIFFTAG_SUBFILETYPE, longv);
-+ CopyField (TIFFTAG_TILEWIDTH, w);
-+ CopyField (TIFFTAG_TILELENGTH, l);
-+ CopyField (TIFFTAG_IMAGEWIDTH, w);
-+ CopyField (TIFFTAG_IMAGELENGTH, l);
-+ CopyField (TIFFTAG_BITSPERSAMPLE, bitspersample);
-+ CopyField (TIFFTAG_COMPRESSION, shortv);
-+ CopyField (TIFFTAG_PREDICTOR, shortv);
-+ CopyField (TIFFTAG_PHOTOMETRIC, shortv);
-+ CopyField (TIFFTAG_THRESHHOLDING, shortv);
-+ CopyField (TIFFTAG_FILLORDER, shortv);
-+ CopyField (TIFFTAG_ORIENTATION, shortv);
-+ CopyField (TIFFTAG_SAMPLESPERPIXEL, samplesperpixel);
-+ CopyField (TIFFTAG_MINSAMPLEVALUE, shortv);
-+ CopyField (TIFFTAG_MAXSAMPLEVALUE, shortv);
-+ CopyField (TIFFTAG_XRESOLUTION, floatv);
-+ CopyField (TIFFTAG_YRESOLUTION, floatv);
-+ CopyField (TIFFTAG_GROUP3OPTIONS, longv);
-+ CopyField (TIFFTAG_GROUP4OPTIONS, longv);
-+ CopyField (TIFFTAG_RESOLUTIONUNIT, shortv);
-+ CopyField (TIFFTAG_PLANARCONFIG, shortv);
-+ CopyField (TIFFTAG_ROWSPERSTRIP, longv);
-+ CopyField (TIFFTAG_XPOSITION, floatv);
-+ CopyField (TIFFTAG_YPOSITION, floatv);
-+ CopyField (TIFFTAG_IMAGEDEPTH, longv);
-+ CopyField (TIFFTAG_TILEDEPTH, longv);
-+ CopyField2(TIFFTAG_EXTRASAMPLES, shortv, shortav);
-+ CopyField3(TIFFTAG_COLORMAP, red, green, blue);
-+ CopyField2(TIFFTAG_PAGENUMBER, shortv, shortv2);
-+ CopyField (TIFFTAG_ARTIST, stringv);
-+ CopyField (TIFFTAG_IMAGEDESCRIPTION,stringv);
-+ CopyField (TIFFTAG_MAKE, stringv);
-+ CopyField (TIFFTAG_MODEL, stringv);
-+ CopyField (TIFFTAG_SOFTWARE, stringv);
-+ CopyField (TIFFTAG_DATETIME, stringv);
-+ CopyField (TIFFTAG_HOSTCOMPUTER, stringv);
-+ CopyField (TIFFTAG_PAGENAME, stringv);
-+ CopyField (TIFFTAG_DOCUMENTNAME, stringv);
-+
-+ if (TIFFIsTiled(in)) rv = cpTiles (in, out);
-+ else rv = cpStrips(in, out);
-+
-+ TIFFClose(out);
-+ return rv;
-+}
-+
-+
-+/*******************************************/
-+static int cpStrips(in, out)
-+ TIFF *in, *out;
-+{
-+ tsize_t bufsize;
-+ byte *buf;
-+
-+ bufsize = TIFFStripSize(in);
-+ if (bufsize <= 0) return 0; /* tsize_t is signed */
-+ buf = (byte *) malloc((size_t) bufsize);
-+ if (buf) {
-+ tstrip_t s, ns = TIFFNumberOfStrips(in);
-+ uint32 *bytecounts;
-+
-+ TIFFGetField(in, TIFFTAG_STRIPBYTECOUNTS, &bytecounts);
-+ for (s = 0; s < ns; s++) {
-+ if (bytecounts[s] > bufsize) {
-+ buf = (unsigned char *) realloc(buf, (size_t) bytecounts[s]);
-+ if (!buf) return (0);
-+ bufsize = bytecounts[s];
-+ }
-+ if (TIFFReadRawStrip (in, s, buf, (tsize_t) bytecounts[s]) < 0 ||
-+ TIFFWriteRawStrip(out, s, buf, (tsize_t) bytecounts[s]) < 0) {
-+ free(buf);
-+ return 0;
-+ }
-+ }
-+ free(buf);
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+
-+/*******************************/
-+static int cpTiles(in, out)
-+ TIFF *in, *out;
-+{
-+ tsize_t bufsize;
-+ byte *buf;
-+
-+ bufsize = TIFFTileSize(in);
-+ if (bufsize <= 0) return 0; /* tsize_t is signed */
-+ buf = (unsigned char *) malloc((size_t) bufsize);
-+ if (buf) {
-+ ttile_t t, nt = TIFFNumberOfTiles(in);
-+ uint32 *bytecounts;
-+
-+ TIFFGetField(in, TIFFTAG_TILEBYTECOUNTS, &bytecounts);
-+ for (t = 0; t < nt; t++) {
-+ if (bytecounts[t] > bufsize) {
-+ buf = (unsigned char *)realloc(buf, (size_t) bytecounts[t]);
-+ if (!buf) return (0);
-+ bufsize = bytecounts[t];
-+ }
-+ if (TIFFReadRawTile (in, t, buf, (tsize_t) bytecounts[t]) < 0 ||
-+ TIFFWriteRawTile(out, t, buf, (tsize_t) bytecounts[t]) < 0) {
-+ free(buf);
-+ return 0;
-+ }
-+ }
-+ free(buf);
-+ return 1;
-+ }
-+ return 0;
-+}
-
-
- /*******************************************/
-@@ -167,6 +413,7 @@
- PICINFO *pinfo;
- {
- byte *pic8;
-+ uint32 npixels;
-
- switch (photo) {
- case PHOTOMETRIC_PALETTE:
-@@ -178,7 +425,7 @@
- case PHOTOMETRIC_MINISWHITE:
- case PHOTOMETRIC_MINISBLACK:
- pinfo->colType = (bps==1) ? F_BWDITHER : F_GREYSCALE;
-- sprintf(pinfo->fullInfo,"TIFF, %u-bit, %s format. (%ld bytes)",
-+ sprintf(pinfo->fullInfo,"TIFF, %u-bit, %s format. (%ld bytes)",
- bps,
- photo == PHOTOMETRIC_MINISWHITE ? "min-is-white" :
- "min-is-black",
-@@ -186,9 +433,16 @@
- break;
- }
-
-- sprintf(pinfo->shrtInfo, "%ux%u TIFF.",w,h);
-+ sprintf(pinfo->shrtInfo, "%ux%u TIFF.",(u_int) w, (u_int) h);
-+
-+ npixels = w*h;
-+ if (npixels/w != h) {
-+ /* SetISTR(ISTR_WARNING, "loadPalette() - image dimensions too large"); */
-+ TIFFError(filename, "Image dimensions too large");
-+ return (byte *) NULL;
-+ }
-
-- pic8 = (byte *) malloc((size_t) w*h);
-+ pic8 = (byte *) malloc((size_t) npixels);
- if (!pic8) FatalError("loadPalette() - couldn't malloc 'pic8'");
-
- if (loadImage(tif, w, h, pic8, 0)) return pic8;
-@@ -205,19 +459,28 @@
- PICINFO *pinfo;
- {
- byte *pic24, *pic8;
-+ uint32 npixels, count;
-
- pinfo->colType = F_FULLCOLOR;
-- sprintf(pinfo->fullInfo, "TIFF, %u-bit, %s format. (%ld bytes)",
-+ sprintf(pinfo->fullInfo, "TIFF, %u-bit, %s format. (%ld bytes)",
- bps,
- (photo == PHOTOMETRIC_RGB ? "RGB" :
- photo == PHOTOMETRIC_YCBCR ? "YCbCr" :
- "???"),
- filesize);
-
-- sprintf(pinfo->shrtInfo, "%ux%u TIFF.",w,h);
-+ sprintf(pinfo->shrtInfo, "%ux%u TIFF.",(u_int) w, (u_int) h);
-+
-+ npixels = w*h;
-+ count = 3*npixels;
-+ if (npixels/w != h || count/3 != npixels) {
-+ /* SetISTR(ISTR_WARNING, "loadPalette() - image dimensions too large"); */
-+ TIFFError(filename, "Image dimensions too large");
-+ return (byte *) NULL;
-+ }
-
- /* allocate 24-bit image */
-- pic24 = (byte *) malloc((size_t) w*h*3);
-+ pic24 = (byte *) malloc((size_t) count);
- if (!pic24) FatalError("loadColor() - couldn't malloc 'pic24'");
-
- pic8 = (byte *) NULL;
-@@ -301,10 +564,10 @@
- static byte **BWmap;
- static byte **PALmap;
-
--typedef void (*tileContigRoutine) PARM((byte*, u_char*, RGBvalue*,
-+typedef void (*tileContigRoutine) PARM((byte*, u_char*, RGBvalue*,
- uint32, uint32, int, int));
-
--typedef void (*tileSeparateRoutine) PARM((byte*, u_char*, u_char*, u_char*,
-+typedef void (*tileSeparateRoutine) PARM((byte*, u_char*, u_char*, u_char*,
- RGBvalue*, uint32, uint32, int, int));
-
-
-@@ -312,13 +575,13 @@
-
- static int gt PARM((TIFF *, uint32, uint32, byte *));
- static uint32 setorientation PARM((TIFF *, uint32));
--static int gtTileContig PARM((TIFF *, byte *, RGBvalue *,
-+static int gtTileContig PARM((TIFF *, byte *, RGBvalue *,
- uint32, uint32, int));
--static int gtTileSeparate PARM((TIFF *, byte *, RGBvalue *,
-+static int gtTileSeparate PARM((TIFF *, byte *, RGBvalue *,
- uint32, uint32, int));
--static int gtStripContig PARM((TIFF *, byte *, RGBvalue *,
-+static int gtStripContig PARM((TIFF *, byte *, RGBvalue *,
- uint32, uint32, int));
--static int gtStripSeparate PARM((TIFF *, byte *, RGBvalue *,
-+static int gtStripSeparate PARM((TIFF *, byte *, RGBvalue *,
- uint32, uint32, int));
-
- static int makebwmap PARM((void));
-@@ -349,18 +612,18 @@
- static void putRGBcontig16bittile PARM((byte *, u_short *, RGBvalue *,
- uint32, uint32, int, int));
-
--static void putRGBseparate8bittile PARM((byte *, u_char *, u_char *,
-- u_char *, RGBvalue *,
-+static void putRGBseparate8bittile PARM((byte *, u_char *, u_char *,
-+ u_char *, RGBvalue *,
- uint32, uint32, int, int));
-
--static void putRGBseparate16bittile PARM((byte *, u_short *, u_short *,
-- u_short *, RGBvalue *,
-+static void putRGBseparate16bittile PARM((byte *, u_short *, u_short *,
-+ u_short *, RGBvalue *,
- uint32, uint32, int, int));
-
-
- static void initYCbCrConversion PARM((void));
-
--static void putRGBContigYCbCrClump PARM((byte *, u_char *, int, int,
-+static void putRGBContigYCbCrClump PARM((byte *, u_char *, int, int,
- uint32, int, int, int));
-
- static void putcontig8bitYCbCrtile PARM((byte *, u_char *, RGBvalue *,
-@@ -382,10 +645,10 @@
-
- TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE, &bitspersample);
- switch (bitspersample) {
-- case 1:
-- case 2:
-+ case 1:
-+ case 2:
- case 4:
-- case 8:
-+ case 8:
- case 16: break;
-
- default:
-@@ -397,8 +660,8 @@
-
- TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &samplesperpixel);
- switch (samplesperpixel) {
-- case 1:
-- case 3:
-+ case 1:
-+ case 3:
- case 4: break;
-
- default:
-@@ -470,7 +733,7 @@
- TIFFGetFieldDefaulted(tif, TIFFTAG_MINSAMPLEVALUE, &minsamplevalue);
- TIFFGetFieldDefaulted(tif, TIFFTAG_MAXSAMPLEVALUE, &maxsamplevalue);
- Map = NULL;
--
-+
- switch (photometric) {
- case PHOTOMETRIC_YCBCR:
- TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRCOEFFICIENTS,
-@@ -481,12 +744,12 @@
- &refBlackWhite);
- initYCbCrConversion();
- /* fall thru... */
--
-+
- case PHOTOMETRIC_RGB:
- bpp *= 3;
- if (minsamplevalue == 0 && maxsamplevalue == 255)
- break;
--
-+
- /* fall thru... */
- case PHOTOMETRIC_MINISBLACK:
- case PHOTOMETRIC_MINISWHITE:
-@@ -509,7 +772,7 @@
- if (range<256) {
- for (x=0; x<=range; x++) rmap[x] = gmap[x] = bmap[x] = Map[x];
- } else {
-- for (x=0; x<256; x++)
-+ for (x=0; x<256; x++)
- rmap[x] = gmap[x] = bmap[x] = Map[(range*x)/255];
- }
-
-@@ -590,6 +853,8 @@
- TIFF *tif;
- uint32 h;
- {
-+ /* note that orientation was flipped in LoadTIFF() (near line 175) */
-+
- uint32 y;
-
- TIFFGetFieldDefaulted(tif, TIFFTAG_ORIENTATION, &orientation);
-@@ -613,6 +878,11 @@
- orientation = ORIENTATION_TOPLEFT;
- /* fall thru... */
- case ORIENTATION_TOPLEFT:
-+ /* GRR 20050319: This may be wrong for tiled images (also stripped?);
-+ * looks like we want to return th-1 instead of h-1 in at least some
-+ * cases. For now, just added quick hack (USE_TILED_TIFF_BOTLEFT_FIX)
-+ * to gtTileContig(). (Note that, as of libtiff 3.7.1, tiffcp still
-+ * has exactly the same bug.) */
- y = h-1;
- break;
- }
-@@ -623,11 +893,11 @@
-
-
- /*
-- * Get an tile-organized image that has
-+ * Get a tile-organized image that has
- * PlanarConfiguration contiguous if SamplesPerPixel > 1
- * or
- * SamplesPerPixel == 1
-- */
-+ */
- /*******************************************/
- static int gtTileContig(tif, raster, Map, h, w, bpp)
- TIFF *tif;
-@@ -642,11 +912,14 @@
- int fromskew, toskew;
- u_int nrow;
- tileContigRoutine put;
-+ tsize_t bufsize;
-
- put = pickTileContigCase(Map);
- if (put == 0) return (0);
-
-- buf = (u_char *) malloc((size_t) TIFFTileSize(tif));
-+ bufsize = TIFFTileSize(tif);
-+ if (bufsize <= 0) return 0; /* tsize_t is signed */
-+ buf = (u_char *) malloc((size_t) bufsize);
- if (buf == 0) {
- TIFFError(filename, "No space for tile buffer");
- return (0);
-@@ -655,12 +928,27 @@
- TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tw);
- TIFFGetField(tif, TIFFTAG_TILELENGTH, &th);
- y = setorientation(tif, h);
-+#ifdef USE_TILED_TIFF_BOTLEFT_FIX /* image _originally_ ORIENTATION_BOTLEFT */
-+ /* this fix causes tiles as a whole to be placed starting at the top,
-+ * regardless of orientation; the only difference is what happens within
-+ * a given tile (see toskew, below) */
-+ /* GRR FIXME: apply globally in setorientation()? */
-+ if (orientation == ORIENTATION_TOPLEFT)
-+ y = th-1;
-+#endif
-+ /* toskew causes individual tiles to copy from bottom to top for
-+ * ORIENTATION_TOPLEFT and from top to bottom otherwise */
- toskew = (orientation == ORIENTATION_TOPLEFT ? -tw + -w : -tw + w);
-
- for (row = 0; row < h; row += th) {
- nrow = (row + th > h ? h - row : th);
- for (col = 0; col < w; col += tw) {
-- if (TIFFReadTile(tif,buf,(uint32)col, (uint32)row, 0, 0) < 0
-+ /*
-+ * This reads the tile at (col,row) into buf. "The data placed in buf
-+ * are returned decompressed and, typically, in the native byte- and
-+ * bit-ordering, but are otherwise packed."
-+ */
-+ if (TIFFReadTile(tif, buf, (uint32)col, (uint32)row, 0, 0) < 0
- && stoponerr) break;
-
- if (col + tw > w) {
-@@ -670,14 +958,18 @@
- */
- uint32 npix = w - col;
- fromskew = tw - npix;
-- (*put)(raster + (y*w + col)*bpp, buf, Map, npix, (uint32) nrow,
-- fromskew, (int) ((toskew + fromskew)*bpp));
-+ (*put)(raster + (y*w + col)*bpp, buf, Map, npix, (uint32) nrow,
-+ fromskew, (int) ((toskew + fromskew)*bpp) );
- } else
-- (*put)(raster + (y*w + col)*bpp, buf, Map, tw, (uint32) nrow,
-+ (*put)(raster + (y*w + col)*bpp, buf, Map, tw, (uint32) nrow,
- 0, (int) (toskew*bpp));
- }
-
-+#ifdef USE_TILED_TIFF_BOTLEFT_FIX /* image _originally_ ORIENTATION_BOTLEFT */
-+ y += nrow;
-+#else
- y += (orientation == ORIENTATION_TOPLEFT ? -nrow : nrow);
-+#endif
- }
- free(buf);
- return (1);
-@@ -687,11 +979,11 @@
-
-
- /*
-- * Get an tile-organized image that has
-+ * Get a tile-organized image that has
- * SamplesPerPixel > 1
- * PlanarConfiguration separated
- * We assume that all such images are RGB.
-- */
-+ */
-
- /*******************************************/
- static int gtTileSeparate(tif, raster, Map, h, w, bpp)
-@@ -701,20 +993,26 @@
- uint32 h, w;
- int bpp;
- {
-- uint32 col, row, y;
- uint32 tw, th;
-+ uint32 col, row, y;
- u_char *buf;
- u_char *r, *g, *b;
-- int tilesize;
-+ tsize_t tilesize;
-+ uint32 bufsize;
- int fromskew, toskew;
- u_int nrow;
- tileSeparateRoutine put;
--
-+
- put = pickTileSeparateCase(Map);
- if (put == 0) return (0);
-
- tilesize = TIFFTileSize(tif);
-- buf = (u_char *)malloc((size_t) (3*tilesize));
-+ bufsize = 3*tilesize;
-+ if (tilesize <= 0 || bufsize/3 != tilesize) { /* tsize_t is signed */
-+ TIFFError(filename, "Image dimensions too large");
-+ return 0;
-+ }
-+ buf = (u_char *) malloc((size_t) bufsize);
- if (buf == 0) {
- TIFFError(filename, "No space for tile buffer");
- return (0);
-@@ -751,10 +1049,10 @@
- */
- uint32 npix = w - col;
- fromskew = tw - npix;
-- (*put)(raster + (y*w + col)*bpp, r, g, b, Map, npix, (uint32) nrow,
-+ (*put)(raster + (y*w + col)*bpp, r, g, b, Map, npix, (uint32) nrow,
- fromskew, (int) ((toskew + fromskew)*bpp));
- } else
-- (*put)(raster + (y*w + col)*bpp, r, g, b, Map, tw, (uint32) nrow,
-+ (*put)(raster + (y*w + col)*bpp, r, g, b, Map, tw, (uint32) nrow,
- 0, (int) (toskew*bpp));
- }
- y += (orientation == ORIENTATION_TOPLEFT ? -nrow : nrow);
-@@ -768,7 +1066,7 @@
- * PlanarConfiguration contiguous if SamplesPerPixel > 1
- * or
- * SamplesPerPixel == 1
-- */
-+ */
- /*******************************************/
- static int gtStripContig(tif, raster, Map, h, w, bpp)
- TIFF *tif;
-@@ -784,11 +1082,15 @@
- uint32 imagewidth;
- int scanline;
- int fromskew, toskew;
--
-+ tsize_t bufsize;
-+
- put = pickTileContigCase(Map);
- if (put == 0)
- return (0);
-- buf = (u_char *) malloc((size_t) TIFFStripSize(tif));
-+
-+ bufsize = TIFFStripSize(tif);
-+ if (bufsize <= 0) return 0; /* tsize_t is signed */
-+ buf = (u_char *) malloc((size_t) bufsize);
- if (buf == 0) {
- TIFFError(filename, "No space for strip buffer");
- return (0);
-@@ -828,20 +1130,29 @@
- uint32 h, w;
- int bpp;
- {
-+ uint32 nrow, row, y;
- u_char *buf;
- u_char *r, *g, *b;
-- uint32 row, y, nrow;
-+ tsize_t stripsize;
-+ uint32 bufsize;
-+ int fromskew, toskew;
- int scanline;
- tileSeparateRoutine put;
- uint32 rowsperstrip;
- uint32 imagewidth;
-- u_int stripsize;
-- int fromskew, toskew;
--
-+
- stripsize = TIFFStripSize(tif);
-- r = buf = (u_char *) malloc((size_t) 3*stripsize);
-- if (buf == 0)
-+ bufsize = 3*stripsize;
-+ if (stripsize <= 0 || bufsize/3 != stripsize) { /* tsize_t is signed */
-+ TIFFError(filename, "Image dimensions too large");
-+ return 0;
-+ }
-+ buf = (u_char *) malloc((size_t) bufsize);
-+ if (buf == 0) {
-+ TIFFError(filename, "No space for strip buffer");
- return (0);
-+ }
-+ r = buf;
- g = r + stripsize;
- b = g + stripsize;
- put = pickTileSeparateCase(Map);
-@@ -861,7 +1172,7 @@
- nrow = (row + rowsperstrip > h ? h - row : rowsperstrip);
- band = 0;
- if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, (uint32) row, band),
-- (tdata_t) r, (tsize_t)(nrow*scanline)) < 0
-+ (tdata_t) r, (tsize_t)(nrow*scanline)) < 0
- && stoponerr) break;
-
- band = 1;
-@@ -871,7 +1182,7 @@
-
- band = 2;
- if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, (uint32) row, band),
-- (tdata_t) b, (tsize_t)(nrow*scanline)) < 0
-+ (tdata_t) b, (tsize_t)(nrow*scanline)) < 0
- && stoponerr) break;
-
- (*put)(raster + y*w*bpp, r, g, b, Map, w, nrow, fromskew, toskew*bpp);
-@@ -895,7 +1206,7 @@
- register int i;
- int nsamples = 8 / bitspersample;
- register byte *p;
--
-+
- BWmap = (byte **)malloc(
- 256*sizeof (byte *)+(256*nsamples*sizeof(byte)));
- if (BWmap == NULL) {
-@@ -949,7 +1260,7 @@
- register int i;
- int nsamples = 8 / bitspersample;
- register byte *p;
--
-+
- PALmap = (byte **)malloc(
- 256*sizeof (byte *)+(256*nsamples*sizeof(byte)));
- if (PALmap == NULL) {
-@@ -1014,7 +1325,7 @@
- #define CASE4(x,op) switch (x) { case 3: op; case 2: op; case 1: op; }
-
- #define UNROLL8(w, op1, op2) { \
-- uint32 x; \
-+ uint32 x; \
- for (x = w; x >= 8; x -= 8) { \
- op1; \
- REPEAT8(op2); \
-@@ -1026,7 +1337,7 @@
- }
-
- #define UNROLL4(w, op1, op2) { \
-- register uint32 x; \
-+ uint32 x; \
- for (x = w; x >= 4; x -= 4) { \
- op1; \
- REPEAT4(op2); \
-@@ -1038,7 +1349,7 @@
- }
-
- #define UNROLL2(w, op1, op2) { \
-- register uint32 x; \
-+ uint32 x; \
- for (x = w; x >= 2; x -= 2) { \
- op1; \
- REPEAT2(op2); \
-@@ -1048,7 +1359,7 @@
- op2; \
- } \
- }
--
-+
-
- #define SKEW(r,g,b,skew) { r += skew; g += skew; b += skew; }
-
-@@ -1065,7 +1376,7 @@
- int fromskew, toskew;
- {
- while (h-- > 0) {
-- UNROLL8(w,0, *cp++ = PALmap[*pp++][0]);
-+ UNROLL8(w, , *cp++ = PALmap[*pp++][0])
- cp += toskew;
- pp += fromskew;
- }
-@@ -1082,7 +1393,7 @@
- int fromskew, toskew;
- {
- register byte *bw;
--
-+
- fromskew /= 2;
- while (h-- > 0) {
- UNROLL2(w, bw = PALmap[*pp++], *cp++ = *bw++);
-@@ -1103,7 +1414,7 @@
- int fromskew, toskew;
- {
- register byte *bw;
--
-+
- fromskew /= 4;
- while (h-- > 0) {
- UNROLL4(w, bw = PALmap[*pp++], *cp++ = *bw++);
-@@ -1123,10 +1434,10 @@
- int fromskew, toskew;
- {
- register byte *bw;
--
-+
- fromskew /= 8;
- while (h-- > 0) {
-- UNROLL8(w, bw = PALmap[*pp++], *cp++ = *bw++);
-+ UNROLL8(w, bw = PALmap[*pp++], *cp++ = *bw++)
- cp += toskew;
- pp += fromskew;
- }
-@@ -1164,10 +1475,10 @@
- int fromskew, toskew;
- {
- register byte *bw;
--
-+
- fromskew /= 8;
- while (h-- > 0) {
-- UNROLL8(w, bw = BWmap[*pp++], *cp++ = *bw++);
-+ UNROLL8(w, bw = BWmap[*pp++], *cp++ = *bw++)
- cp += toskew;
- pp += fromskew;
- }
-@@ -1184,7 +1495,7 @@
- int fromskew, toskew;
- {
- register byte *bw;
--
-+
- fromskew /= 4;
- while (h-- > 0) {
- UNROLL4(w, bw = BWmap[*pp++], *cp++ = *bw++);
-@@ -1204,7 +1515,7 @@
- int fromskew, toskew;
- {
- register byte *bw;
--
-+
- fromskew /= 2;
- while (h-- > 0) {
- UNROLL2(w, bw = BWmap[*pp++], *cp++ = *bw++);
-@@ -1224,7 +1535,7 @@
- int fromskew, toskew;
- {
- register uint32 x;
--
-+
- while (h-- > 0) {
- for (x=w; x>0; x--) {
- *cp++ = Map[(pp[0] << 8) + pp[1]];
-@@ -1262,11 +1573,11 @@
- }
- } else {
- while (h-- > 0) {
-- UNROLL8(w,0,
-+ UNROLL8(w, ,
- *cp++ = pp[0];
- *cp++ = pp[1];
- *cp++ = pp[2];
-- pp += samplesperpixel);
-+ pp += samplesperpixel)
- cp += toskew;
- pp += fromskew;
- }
-@@ -1284,7 +1595,7 @@
- int fromskew, toskew;
- {
- register u_int x;
--
-+
- fromskew *= samplesperpixel;
- if (Map) {
- while (h-- > 0) {
-@@ -1320,7 +1631,7 @@
- RGBvalue *Map;
- uint32 w, h;
- int fromskew, toskew;
--
-+
- {
- if (Map) {
- while (h-- > 0) {
-@@ -1335,11 +1646,11 @@
- }
- } else {
- while (h-- > 0) {
-- UNROLL8(w,0,
-+ UNROLL8(w, ,
- *cp++ = *r++;
- *cp++ = *g++;
- *cp++ = *b++;
-- );
-+ )
- SKEW(r, g, b, fromskew);
- cp += toskew;
- }
-@@ -1357,7 +1668,7 @@
- int fromskew, toskew;
- {
- uint32 x;
--
-+
- if (Map) {
- while (h-- > 0) {
- for (x = w; x > 0; x--) {
-@@ -1381,7 +1692,7 @@
- }
- }
-
--#define Code2V(c, RB, RW, CR) ((((c)-(int)RB)*(float)CR)/(float)(RW-RB))
-+#define Code2V(c, RB, RW, CR) (((((int)c)-(int)RB)*(float)CR)/(float)(RW-RB))
-
- #define CLAMP(f,min,max) \
- (int)((f)+.5 < (min) ? (min) : (f)+.5 > (max) ? (max) : (f)+.5)
-@@ -1391,16 +1702,32 @@
- #define LumaBlue YCbCrCoeffs[2]
-
- static float D1, D2;
--static float D3, D4, D5;
-+static float D3, D4 /*, D5 */;
-
-
- static void initYCbCrConversion()
- {
-+ /*
-+ * Old, broken version (goes back at least to 19920426; made worse 19941222):
-+ * YCbCrCoeffs[] = {0.299, 0.587, 0.114}
-+ * D1 = 1.402
-+ * D2 = 0.714136
-+ * D3 = 1.772
-+ * D4 = 0.138691 <-- bogus
-+ * D5 = 1.70358 <-- unnecessary
-+ *
-+ * New, fixed version (GRR 20050319):
-+ * YCbCrCoeffs[] = {0.299, 0.587, 0.114}
-+ * D1 = 1.402
-+ * D2 = 0.714136
-+ * D3 = 1.772
-+ * D4 = 0.344136
-+ */
- D1 = 2 - 2*LumaRed;
- D2 = D1*LumaRed / LumaGreen;
- D3 = 2 - 2*LumaBlue;
-- D4 = D2*LumaBlue / LumaGreen;
-- D5 = 1.0 / LumaGreen;
-+ D4 = D3*LumaBlue / LumaGreen; /* ARGH, used to be D2*LumaBlue/LumaGreen ! */
-+/* D5 = 1.0 / LumaGreen; */ /* unnecessary */
- }
-
- static void putRGBContigYCbCrClump(cp, pp, cw, ch, w, n, fromskew, toskew)
-@@ -1412,7 +1739,7 @@
- {
- float Cb, Cr;
- int j, k;
--
-+
- Cb = Code2V(pp[n], refBlackWhite[2], refBlackWhite[3], 127);
- Cr = Code2V(pp[n+1], refBlackWhite[4], refBlackWhite[5], 127);
- for (j = 0; j < ch; j++) {
-@@ -1421,8 +1748,24 @@
- Y = Code2V(*pp++,
- refBlackWhite[0], refBlackWhite[1], 255);
- R = Y + Cr*D1;
-+/* G = Y*D5 - Cb*D4 - Cr*D2; highly bogus! */
-+ G = Y - Cb*D4 - Cr*D2;
- B = Y + Cb*D3;
-- G = Y*D5 - Cb*D4 - Cr*D2;
-+ /*
-+ * These are what the JPEG/JFIF equations--which aren't _necessarily_
-+ * what JPEG/TIFF uses but which seem close enough--are supposed to be,
-+ * according to Avery Lee (e.g., see http://www.fourcc.org/fccyvrgb.php):
-+ *
-+ * R = Y + 1.402 (Cr-128)
-+ * G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)
-+ * B = Y + 1.772 (Cb-128)
-+ *
-+ * Translated into xvtiff.c notation:
-+ *
-+ * R = Y + Cr*D1
-+ * G = Y - Cb*D4' - Cr*D2 (i.e., omit D5 and fix D4)
-+ * B = Y + Cb*D3
-+ */
- cp[3*k+0] = CLAMP(R,0,255);
- cp[3*k+1] = CLAMP(G,0,255);
- cp[3*k+2] = CLAMP(B,0,255);
-@@ -1452,7 +1795,7 @@
- u_int Coff = YCbCrVertSampling * YCbCrHorizSampling;
- byte *tp;
- uint32 x;
--
-+
- /* XXX adjust fromskew */
- while (h >= YCbCrVertSampling) {
- tp = cp;
-@@ -1481,7 +1824,7 @@
- pp += Coff+2;
- }
- if (x > 0)
-- putRGBContigYCbCrClump(tp, pp, (int) x, (int) h, w,
-+ putRGBContigYCbCrClump(tp, pp, (int) x, (int) h, w,
- (int)Coff, (int)(YCbCrHorizSampling-x),toskew);
- }
- }
-@@ -1493,7 +1836,7 @@
- RGBvalue* Map;
- {
- tileContigRoutine put = 0;
--
-+
- switch (photometric) {
- case PHOTOMETRIC_RGB:
- switch (bitspersample) {
-@@ -1501,7 +1844,7 @@
- case 16: put = (tileContigRoutine) putRGBcontig16bittile; break;
- }
- break;
--
-+
- case PHOTOMETRIC_PALETTE:
- switch (bitspersample) {
- case 8: put = put8bitcmaptile; break;
-@@ -1544,7 +1887,7 @@
- RGBvalue* Map;
- {
- tileSeparateRoutine put = 0;
--
-+
- switch (photometric) {
- case PHOTOMETRIC_RGB:
- switch (bitspersample) {
-diff -ruN xv-3.10a/xvtiffwr.c xv-3.10a-bugfixes/xvtiffwr.c
---- xv-3.10a/xvtiffwr.c 1995-01-03 13:28:13.000000000 -0800
-+++ xv-3.10a-bugfixes/xvtiffwr.c 2005-03-28 08:39:52.000000000 -0800
-@@ -9,15 +9,15 @@
-
- #ifdef HAVE_TIFF
-
--#include "tiffio.h" /* has to be after xv.h, as it needs varargs/stdarg */
-+#include <tiffio.h> /* has to be after xv.h, as it needs varargs/stdarg */
-
-
- #define ALLOW_JPEG 0 /* set to '1' to allow 'JPEG' choice in dialog box */
-
-
- static void setupColormap PARM((TIFF *, byte *, byte *, byte *));
--static int WriteTIFF PARM((FILE *, byte *, int, int, int,
-- byte *, byte *, byte *, int, int,
-+static int WriteTIFF PARM((FILE *, byte *, int, int, int,
-+ byte *, byte *, byte *, int, int,
- char *, int, char *));
-
-
-@@ -29,7 +29,7 @@
- {
- short red[256], green[256], blue[256];
- int i;
--
-+
- /* convert 8-bit colormap to 16-bit */
- for (i=0; i<256; i++) {
- #define SCALE(x) ((((int)x)*((1L<<16)-1))/255)
-@@ -43,6 +43,7 @@
-
-
- /*******************************************/
-+/* Returns '0' if successful. */
- static int WriteTIFF(fp,pic,ptype,w,h,rmap,gmap,bmap,numcols,colorstyle,
- fname,comp,comment)
- FILE *fp;
-@@ -55,6 +56,13 @@
- TIFF *tif;
- byte *pix;
- int i,j;
-+ int npixels = w*h;
-+
-+ if (w <= 0 || h <= 0 || npixels/w != h) {
-+ SetISTR(ISTR_WARNING, "%s: image dimensions too large", fname);
-+ /* TIFFError(fname, "Image dimensions too large"); */
-+ return -1;
-+ }
-
- #ifndef VMS
- tif = TIFFOpen(fname, "w");
-@@ -62,7 +70,7 @@
- tif = TIFFFdOpen(dup(fileno(fp)), fname, "w");
- #endif
-
-- if (!tif) return 0;
-+ if (!tif) return -1; /* GRR: was 0 */
-
- WaitCursor();
-
-@@ -84,19 +92,27 @@
- TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, h);
-
- TIFFSetField(tif, TIFFTAG_RESOLUTIONUNIT, (int)2);
-- TIFFSetField(tif, TIFFTAG_XRESOLUTION, (float)1200.0);
-- TIFFSetField(tif, TIFFTAG_YRESOLUTION, (float)1200.0);
-+ TIFFSetField(tif, TIFFTAG_XRESOLUTION, (float) 72.0);
-+ TIFFSetField(tif, TIFFTAG_YRESOLUTION, (float) 72.0);
-
-
- /* write the image data */
-
- if (ptype == PIC24) { /* only have to deal with FULLCOLOR or GREYSCALE */
- if (colorstyle == F_FULLCOLOR) {
-+ int count = 3*npixels;
-+
-+ if (count/3 != npixels) { /* already know w, h, npixels > 0 */
-+ /* SetISTR(ISTR_WARNING, "%s: image dimensions too large", fname); */
-+ TIFFError(fname, "Image dimensions too large");
-+ return -1;
-+ }
-+
- TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 3);
- TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
- TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
--
-- TIFFWriteEncodedStrip(tif, 0, pic, w*h*3);
-+
-+ TIFFWriteEncodedStrip(tif, 0, pic, count);
- }
-
- else { /* colorstyle == F_GREYSCALE */
-@@ -106,13 +122,13 @@
- TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
- TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
-
-- tpic = (byte *) malloc((size_t) w*h);
-+ tpic = (byte *) malloc((size_t) npixels);
- if (!tpic) FatalError("unable to malloc in WriteTIFF()");
-
-- for (i=0, tp=tpic, sp=pic; i<w*h; i++, sp+=3)
-+ for (i=0, tp=tpic, sp=pic; i<npixels; i++, sp+=3)
- *tp++ = MONO(sp[0],sp[1],sp[2]);
--
-- TIFFWriteEncodedStrip(tif, 0, tpic, w*h);
-+
-+ TIFFWriteEncodedStrip(tif, 0, tpic, npixels);
-
- free(tpic);
- }
-@@ -123,32 +139,42 @@
- TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
- TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_PALETTE);
- setupColormap(tif, rmap, gmap, bmap);
-- TIFFWriteEncodedStrip(tif, 0, pic, w*h);
-+ TIFFWriteEncodedStrip(tif, 0, pic, npixels);
- }
-
- else if (colorstyle == F_GREYSCALE) { /* 8-bit greyscale */
- byte rgb[256];
-- byte *tpic = (byte *) malloc((size_t) w*h);
-+ byte *tpic = (byte *) malloc((size_t) npixels);
- byte *tp = tpic;
- TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
- TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
- for (i=0; i<numcols; i++) rgb[i] = MONO(rmap[i],gmap[i],bmap[i]);
-- for (i=0, pix=pic; i<w*h; i++,pix++) {
-+ for (i=0, pix=pic; i<npixels; i++,pix++) {
- if ((i&0x7fff)==0) WaitCursor();
- *tp++ = rgb[*pix];
- }
-- TIFFWriteEncodedStrip(tif, 0, tpic, w*h);
-+ TIFFWriteEncodedStrip(tif, 0, tpic, npixels);
- free(tpic);
- }
-
- else if (colorstyle == F_BWDITHER) { /* 1-bit B/W stipple */
- int bit,k,flipbw;
- byte *tpic, *tp;
-+ tsize_t stripsize; /* signed */
-
- flipbw = (MONO(rmap[0],gmap[0],bmap[0]) > MONO(rmap[1],gmap[1],bmap[1]));
- TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 1);
- TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
-- tpic = (byte *) malloc((size_t) TIFFStripSize(tif));
-+ stripsize = TIFFStripSize(tif);
-+ if (stripsize <= 0) {
-+ TIFFError(fname, "Image dimensions too large");
-+ return -1;
-+ }
-+ tpic = (byte *) malloc((size_t) stripsize);
-+ if (tpic == 0) {
-+ TIFFError(fname, "No space for strip buffer");
-+ return -1;
-+ }
- tp = tpic;
- for (i=0, pix=pic; i<h; i++) {
- if ((i&15)==0) WaitCursor();
-@@ -167,7 +193,7 @@
- *tp++ = (byte) (k & 0xff);
- }
- }
-- TIFFWriteEncodedStrip(tif, 0, tpic, TIFFStripSize(tif));
-+ TIFFWriteEncodedStrip(tif, 0, tpic, stripsize);
- free(tpic);
- }
- }
-@@ -209,16 +235,16 @@
- {
- int y;
-
-- tiffW = CreateWindow("xv tiff", "XVtiff", NULL,
-+ tiffW = CreateWindow("xv tiff", "XVtiff", NULL,
- TWIDE, THIGH, infofg, infobg, 0);
- if (!tiffW) FatalError("can't create tiff window!");
-
- XSelectInput(theDisp, tiffW, ExposureMask | ButtonPressMask | KeyPressMask);
-
-- BTCreate(&tbut[T_BOK], tiffW, TWIDE-140-1, THIGH-10-BUTTH-1, 60, BUTTH,
-+ BTCreate(&tbut[T_BOK], tiffW, TWIDE-140-1, THIGH-10-BUTTH-1, 60, BUTTH,
- "Ok", infofg, infobg, hicol, locol);
-
-- BTCreate(&tbut[T_BCANC], tiffW, TWIDE-70-1, THIGH-10-BUTTH-1, 60, BUTTH,
-+ BTCreate(&tbut[T_BCANC], tiffW, TWIDE-70-1, THIGH-10-BUTTH-1, 60, BUTTH,
- "Cancel", infofg, infobg, hicol, locol);
-
- y = 55;
-@@ -237,7 +263,7 @@
-
- XMapSubwindows(theDisp, tiffW);
- }
--
-+
-
- /***************************************************/
- void TIFFDialog(vis)
-@@ -288,9 +314,9 @@
-
- else if (xev->type == KeyPress) {
- XKeyEvent *e = (XKeyEvent *) xev;
-- char buf[128]; KeySym ks; XComposeStatus status;
-+ char buf[128]; KeySym ks; XComposeStatus status;
- int stlen;
--
-+
- stlen = XLookupString(e,buf,128,&ks,&status);
- buf[stlen] = '\0';
-
-@@ -381,7 +407,7 @@
- /* check BUTTs */
-
- /* check the RBUTTS first, since they don't DO anything */
-- if ( (i=RBClick(compRB, x,y)) >= 0) {
-+ if ( (i=RBClick(compRB, x,y)) >= 0) {
- (void) RBTrack(compRB, i);
- return;
- }
-@@ -417,7 +443,7 @@
- }
- }
- break;
--
-+
- case T_BCANC: TIFFDialog(0); break;
-
- default: break;
-diff -ruN xv-3.10a/xvxbm.c xv-3.10a-bugfixes/xvxbm.c
---- xv-3.10a/xvxbm.c 1994-12-22 14:34:41.000000000 -0800
-+++ xv-3.10a-bugfixes/xvxbm.c 2005-03-28 22:06:50.000000000 -0800
-@@ -25,7 +25,7 @@
- * move forward to next occurence of '0x'
- * repeat
- */
--
-+
-
- static int xbmError PARM((char *, char *));
-
-@@ -59,7 +59,7 @@
-
- /* read width: skip lines until we hit a #define */
- while (1) {
-- if (!fgets(line,256,fp))
-+ if (!fgets(line,256,fp))
- return(xbmError(bname, "EOF reached in header info."));
-
- if (strncmp(line,"#define", (size_t) 7)==0 &&
-@@ -70,9 +70,9 @@
-
- /* read height: skip lines until we hit another #define */
- while (1) {
-- if (!fgets(line,256,fp))
-+ if (!fgets(line,256,fp))
- return(xbmError(bname, "EOF reached in header info."));
--
-+
- if (strncmp(line,"#define", (size_t) 7)==0 &&
- sscanf(line,"#define %s %d", name, &h)==2 &&
- xv_strstr(name, "_height") != NULL) break;
-@@ -84,18 +84,18 @@
- c = getc(fp); c1 = getc(fp);
- while (c1!=EOF && !(c=='0' && c1=='x') ) { c = c1; c1 = getc(fp); }
-
-- if (c1==EOF)
-+ if (c1==EOF)
- return(xbmError(bname, "No bitmap data found"));
-
-- if (w<1 || h<1 || w>10000 || h>10000)
-+ if (w<1 || h<1 || w>10000 || h>10000)
- return(xbmError(bname, "not an XBM file"));
--
-- pic8 = (byte *) calloc((size_t) w*h, (size_t) 1);
-+
-+ pic8 = (byte *) calloc((size_t) w*h, (size_t) 1); /* safe (10^8 max) */
- if (!pic8) return(xbmError(bname, "couldn't malloc 'pic8'"));
-
- /* load up the pinfo structure */
- pinfo->pic = pic8;
-- pinfo->w = w;
-+ pinfo->w = w;
- pinfo->h = h;
- pinfo->normw = pinfo->w; pinfo->normh = pinfo->h;
- pinfo->type = PIC8;
-@@ -125,13 +125,13 @@
- if (!bit) {
- /* get next byte from file. we're already positioned at it */
- c = getc(fp); c1 = getc(fp);
-- if (c<0 || c1<0) {
-- /* EOF: break out of loop */
-+ if (c<0 || c1<0) {
-+ /* EOF: break out of loop */
- c=c1='0'; i=h; j=w;
- xbmError(bname, "The file would appear to be truncated.");
- }
-
-- if (hex[c1] == 255) {
-+ if (hex[c1] == 255) {
- if (hex[c] == 255) k = 0; /* no digits after the '0x' ... */
- else k = hex[c];
- }
-@@ -149,7 +149,7 @@
- fclose(fp);
-
- return 1;
--}
-+}
-
-
-
-@@ -172,7 +172,7 @@
- {
- /* pic is expected to be an array of w*h bytes, each of which is either
- '0' or '1'.
-- The 'darker' of {rmap,gmap,bmap}[0] and {rmap,gmap,bmap}[1] is
-+ The 'darker' of {rmap,gmap,bmap}[0] and {rmap,gmap,bmap}[1] is
- considered black, and the other one, white.
- Some sort of stippling algorithm should've
- been called already to produce pic, otherwise the output won't be at all
-@@ -188,7 +188,7 @@
- foo = (char *) index(name,'.');
- if (foo) *foo='\0'; /* truncated name at first '.' */
-
-- fprintf(fp,"#define %s_width %d\n",name,w);
-+ fprintf(fp,"#define %s_width %d\n",name,w);
- fprintf(fp,"#define %s_height %d\n",name,h);
- fprintf(fp,"static char %s_bits[] = {\n",name);
-
-diff -ruN xv-3.10a/xvxpm.c xv-3.10a-bugfixes/xvxpm.c
---- xv-3.10a/xvxpm.c 1994-12-22 14:34:42.000000000 -0800
-+++ xv-3.10a-bugfixes/xvxpm.c 2005-03-28 22:22:50.000000000 -0800
-@@ -10,7 +10,7 @@
- * format images.
- *
- * Thanks go to Sam Yates (syates@spam.maths.adelaide.edu.au) for
-- * provideing inspiration.
-+ * providing inspiration.
- */
-
- #define VALUES_LEN 80 /* Max length of values line */
-@@ -63,7 +63,7 @@
- PICINFO *pinfo;
- {
- /* returns '1' on success */
--
-+
- FILE *fp;
- hentry item;
- int c;
-@@ -73,100 +73,110 @@
- byte *i_sptr; /* image search pointer */
- long filesize;
- int w, h, nc, cpp, line_pos;
-+ int npixels;
- short i, j, k; /* for() loop indexes */
- hentry *clmp; /* colormap hash-table */
- hentry *c_sptr; /* cmap hash-table search pointer*/
- XColor col;
--
-+
- bname = BaseName(fname);
- fp = fopen(fname, "r");
- if (!fp)
- return (XpmLoadError(bname, "couldn't open file"));
--
-+
- if (DEBUG)
- printf("LoadXPM(): Loading xpm from %s\n", fname);
--
-+
- fseek(fp, 0L, 2);
- filesize = ftell(fp);
- fseek(fp, 0L, 0);
--
-+
- bufchar = -2;
- in_quote = FALSE;
--
-+
- /* Read in the values line. It is the first string in the
- * xpm, and contains four numbers. w, h, num_colors, and
- * chars_per_pixel. */
--
-+
- /* First, get to the first string */
- while (((c = XpmGetc(fp))!=EOF) && (c != '"')) ;
- line_pos = 0;
--
-+
- /* Now, read in the string */
- while (((c = XpmGetc(fp))!=EOF) && (line_pos < VALUES_LEN) && (c != '"')) {
- values[line_pos++] = c;
- }
- if (c != '"')
- return (XpmLoadError(bname, "error parsing values line"));
--
-+
- values[line_pos] = '\0';
- sscanf(values, "%d%d%d%d", &w, &h, &nc, &cpp);
- if (nc <= 0 || cpp <= 0)
- return (XpmLoadError(bname, "No colours in Xpm?"));
--
-+
-+ npixels = w * h;
-+ if (w <= 0 || h <= 0 || npixels/w != h)
-+ return (XpmLoadError(bname, "Image dimensions out of range"));
-+
- if (nc > 256)
- pinfo->type = PIC24;
- else
- pinfo->type = PIC8;
--
-+
- if (DEBUG)
- printf("LoadXPM(): reading a %dx%d image (%d colors)\n", w, h, nc);
--
-+
- /* We got this far... */
- WaitCursor();
--
-+
- if (!hash_init(nc))
- return (XpmLoadError(bname, "Not enough memory to hash colormap"));
--
-+
- clmp = (hentry *) malloc(nc * sizeof(hentry)); /* Holds the colormap */
-- if (pinfo->type == PIC8) pic = (byte *) malloc((size_t) (w*h));
-- else pic = (byte *) malloc((size_t) (w*h*3));
--
-+ if (pinfo->type == PIC8)
-+ pic = (byte *) malloc((size_t) npixels);
-+ else {
-+ int bufsize = 3*npixels;
-+ if (bufsize/3 != npixels)
-+ return (XpmLoadError(bname, "Image dimensions out of range"));
-+ pic = (byte *) malloc((size_t) bufsize);
-+ }
-+
- if (!clmp || !pic)
- return (XpmLoadError(bname, "Not enough memory to load pixmap"));
--
-+
- c_sptr = clmp;
- i_sptr = pic;
--
-+
- /* initialize the 'hex' array for zippy ASCII-hex -> int conversion */
--
-+
- for (i = 0 ; i < 256 ; i++) hex[i] = 0;
- for (i = '0'; i <= '9' ; i++) hex[i] = i - '0';
- for (i = 'a'; i <= 'f' ; i++) hex[i] = i - 'a' + 10;
- for (i = 'A'; i <= 'F' ; i++) hex[i] = i - 'A' + 10;
--
-+
- /* Again, we've made progress. */
- WaitCursor();
--
-+
- /* Now, we need to read the colormap. */
- pinfo->colType = F_BWDITHER;
- for (i = 0 ; i < nc ; i++) {
- while (((c = XpmGetc(fp))!=EOF) && (c != '"')) ;
- if (c != '"')
- return (XpmLoadError(bname, "Error reading colormap"));
--
-+
- for (j = 0 ; j < cpp ; j++)
- c_sptr->token[j] = XpmGetc(fp);
- c_sptr->token[j] = '\0';
--
-+
- while (((c = XpmGetc(fp))!=EOF) && ((c == ' ') || (c == '\t'))) ;
- if (c == EOF) /* The failure condition of getc() */
- return (XpmLoadError(bname, "Error parsing colormap line"));
--
-+
- do {
- char key[3];
- char color[40]; /* Need to figure a good size for this... */
-- short hd; /* Hex digits per R, G, or B */
--
-+
- for (j=0; j<2 && (c != ' ') && (c != '\t') && (c != EOF); j++) {
- key[j] = c;
- c = XpmGetc(fp);
-@@ -185,14 +195,14 @@
-
- while ((c == ' ') || (c == '\t'))
- c = XpmGetc(fp);
--
-+
- if (DEBUG > 1)
- printf("LoadXPM(): Got color key '%s', color '%s'\n",
- key, color);
--
-+
- if (key[0] == 's') /* Don't find a color for a symbolic name */
- continue;
--
-+
- if (XParseColor(theDisp,theCmap,color,&col)) {
- if (pinfo->type == PIC8) {
- pinfo->r[i] = col.red >> 8;
-@@ -201,8 +211,8 @@
- c_sptr->cv_index = i;
-
- /* Is there a better way to do this? */
-- if (pinfo->colType != F_FULLCOLOR)
-- if (pinfo->colType == F_GREYSCALE)
-+ if (pinfo->colType != F_FULLCOLOR) {
-+ if (pinfo->colType == F_GREYSCALE) {
- if (pinfo->r[i] == pinfo->g[i] &&
- pinfo->g[i] == pinfo->b[i])
- /* Still greyscale... */
-@@ -210,9 +220,9 @@
- else
- /* It's color */
- pinfo->colType = F_FULLCOLOR;
-- else
-+ } else {
- if (pinfo->r[i] == pinfo->g[i] &&
-- pinfo->g[i] == pinfo->b[i])
-+ pinfo->g[i] == pinfo->b[i]) {
- if ((pinfo->r[i] == 0 || pinfo->r[i] == 0xff) &&
- (pinfo->g[i] == 0 || pinfo->g[i] == 0xff) &&
- (pinfo->b[i] == 0 || pinfo->b[i] == 0xff))
-@@ -221,10 +231,12 @@
- else
- /* It's greyscale */
- pinfo->colType = F_GREYSCALE;
-- else
-+ } else
- /* It's color */
- pinfo->colType = F_FULLCOLOR;
--
-+ }
-+ }
-+
- }
- else { /* PIC24 */
- c_sptr->cv_rgb[0] = col.red >> 8;
-@@ -242,7 +254,7 @@
- Timer(1000);
- rgb = 0x808080;
- }
--
-+
- if (pinfo->type == PIC8) {
- pinfo->r[i] = (rgb>>16) & 0xff;
- pinfo->g[i] = (rgb>> 8) & 0xff;
-@@ -256,39 +268,39 @@
- }
- }
-
--
-+
- xvbcopy((char *) c_sptr, (char *) &item, sizeof(item));
- hash_insert(&item);
--
-- if (DEBUG > 1)
-+
-+ if (DEBUG > 1)
- printf("LoadXPM(): Cmap entry %d, 0x%02x 0x%02x 0x%02x, token '%s'\n",
- i, pinfo->r[i], pinfo->g[i], pinfo->b[i], c_sptr->token);
--
-+
- if (*key == 'c') { /* This is the color entry, keep it. */
- while (c!='"' && c!=EOF) c = XpmGetc(fp);
- break;
- }
--
-+
- } while (c != '"');
- c_sptr++;
-
- if (!(i%13)) WaitCursor();
- } /* for */
--
-+
-
- if (DEBUG)
- printf("LoadXPM(): Read and stored colormap.\n");
--
-+
- /* Now, read the pixmap. */
- for (i = 0 ; i < h ; i++) {
- while (((c = XpmGetc(fp))!=EOF) && (c != '"')) ;
- if (c != '"')
- return (XpmLoadError(bname, "Error reading colormap"));
--
-+
- for (j = 0 ; j < w ; j++) {
- char pixel[TOKEN_LEN];
- hentry *mapentry;
--
-+
- for (k = 0 ; k < cpp ; k++)
- pixel[k] = XpmGetc(fp);
- pixel[k] = '\0';
-@@ -300,7 +312,7 @@
- pixel);
- return (XpmLoadError(bname, "Can't map resolve into colormap"));
- }
--
-+
- if (pinfo->type == PIC8)
- *i_sptr++ = mapentry->cv_index;
- else {
-@@ -310,27 +322,27 @@
- }
- } /* for ( j < w ) */
- (void)XpmGetc(fp); /* Throw away the close " */
--
-+
- if (!(i%7)) WaitCursor();
- } /* for ( i < h ) */
--
-+
- pinfo->pic = pic;
- pinfo->normw = pinfo->w = w;
- pinfo->normh = pinfo->h = h;
- pinfo->frmType = F_XPM;
-
- if (DEBUG) printf("LoadXPM(): pinfo->colType is %d\n", pinfo->colType);
--
-+
- sprintf(pinfo->fullInfo, "Xpm v3 Pixmap (%ld bytes)", filesize);
- sprintf(pinfo->shrtInfo, "%dx%d Xpm.", w, h);
- pinfo->comment = (char *)NULL;
--
-+
- hash_destroy();
- free(clmp);
--
-+
- if (fp != stdin)
- fclose(fp);
--
-+
- return(1);
- }
-
-@@ -349,17 +361,17 @@
- FILE *f;
- {
- int c, d, lastc;
--
-+
- if (bufchar != -2) {
- /* The last invocation of this routine read the character... */
- c = bufchar;
- bufchar = -2;
- return(c);
- }
--
-+
- if ((c = getc(f)) == EOF)
- return(EOF);
--
-+
- if (c == '"')
- in_quote = !in_quote;
- else if (!in_quote && c == '/') { /* might be a C-style comment */
-@@ -389,14 +401,14 @@
-
-
- /***************************************/
--static int hash(token)
-+static int hash(token)
- char *token;
- {
- int i, sum;
-
- for (i=sum=0; token[i] != '\0'; i++)
- sum += token[i];
--
-+
- sum = sum % hash_len;
- return (sum);
- }
-@@ -414,7 +426,7 @@
- */
-
- int i;
--
-+
- hash_len = 257;
-
- hashtab = (hentry **) malloc(sizeof(hentry *) * hash_len);
-@@ -425,7 +437,7 @@
-
- for (i = 0 ; i < hash_len ; i++)
- hashtab[i] = NULL;
--
-+
- return 1;
- }
-
-@@ -436,22 +448,22 @@
- {
- int key;
- hentry *tmp;
--
-+
- key = hash(entry->token);
--
-+
- tmp = (hentry *) malloc(sizeof(hentry));
- if (!tmp) {
- SetISTR(ISTR_WARNING, "Couldn't malloc hash entry in LoadXPM()!\n");
- return 0;
- }
--
-+
- xvbcopy((char *)entry, (char *)tmp, sizeof(hentry));
--
-+
- if (hashtab[key]) tmp->next = hashtab[key];
- else tmp->next = NULL;
--
-+
- hashtab[key] = tmp;
--
-+
- return 1;
- }
-
-@@ -462,9 +474,9 @@
- {
- int key;
- hentry *tmp;
--
-+
- key = hash(token);
--
-+
- tmp = hashtab[key];
- while (tmp && strcmp(token, tmp->token)) {
- tmp = tmp->next;
-@@ -479,7 +491,7 @@
- {
- int i;
- hentry *tmp;
--
-+
- for (i=0; i<hash_len; i++) {
- while (hashtab[i]) {
- tmp = hashtab[i]->next;
-@@ -487,7 +499,7 @@
- hashtab[i] = tmp;
- }
- }
--
-+
- free(hashtab);
- return;
- }
-@@ -508,10 +520,10 @@
- /* Note here, that tokenchars is assumed to contain 64 valid token */
- /* characters. It's hardcoded to assume this for benefit of generating */
- /* tokens, when there are more than 64^2 colors. */
--
-+
- short i, imax, j; /* for() loop indices */
- short cpp = 0;
-- char *tokenchars =
-+ char *tokenchars =
- ".#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- char *tokens;
- char image_name[256], *foo;
-@@ -523,20 +535,21 @@
- long li; /* for() loop index */
- int numcol;
- #endif
--
-- if (DEBUG)
-+
-+ if (DEBUG) {
- if (ptype == PIC8)
- printf("WriteXPM(): Write a %d color, colortype %d, PIC8 image.\n",
- nc, col);
- else
- printf("WriteXPM(): Write a colortype %d, PIC24 image.\n", col);
--
-+ }
-+
- foo = BaseName(name);
- strcpy(image_name, foo);
- foo = (char *)strchr(image_name, '.');
- if (foo)
- *foo = '\0'; /* Truncate name at first '.' */
--
-+
- #ifdef USE_UNFINISHED_24BIT_WRITING_CODE
- if (ptype == PIC24)
- return -1;
-@@ -547,15 +560,15 @@
- /* 'packed'. Code in here to do that should be removed if */
- /* Conv24to8 is "fixed" to do this... */
- /* Chris P. Ross (cross@eng.umd.edu) 28-Sept-94 */
--
-+
- numcol = 0;
--
-+
- if (ptype == PIC24) {
- /* Reduce to an 8-bit image. Would be nice to actually write */
- /* the 24-bit image. I'll have to code that someday... */
- pic8 = Conv24to8(pic, w, h, 256, rtemp, gtemp, btemp);
- if (!pic8) {
-- SetISTR(ISTR_WARNING,
-+ SetISTR(ISTR_WARNING,
- "%s: Unable to convert to 8-bit image in WriteXPM()",
- image_name);
- return 1;
-@@ -594,7 +607,7 @@
- }
- #endif
-
--
-+
- #ifdef USE_UNFINISHED_24BIT_WRITING_CODE
- if (ptype == PIC24) cpp = 4;
- else if (numcol > 64) cpp = 2;
-@@ -609,7 +622,7 @@
- fprintf(fp, "/* width height num_colors chars_per_pixel */\n");
- fprintf(fp, "\" %3d %3d %6d %1d\",\n", w, h, numcol, cpp);
- fprintf(fp, "/* colors */\n");
--
-+
- switch (cpp) {
-
- case 1: /* <= 64 colors; index into tokenchars */
-@@ -681,12 +694,12 @@
-
- case 4:
- /* Generate a colormap */
--
-+
- break;
- default:
- break;
- }
--
-+
- if (fprintf(fp, "\"\n};\n") == EOF) {
- return 1;
- } else
-diff -ruN xv-3.10a/xvxwd.c xv-3.10a-bugfixes/xvxwd.c
---- xv-3.10a/xvxwd.c 1994-12-22 14:34:40.000000000 -0800
-+++ xv-3.10a-bugfixes/xvxwd.c 2005-03-28 22:37:07.000000000 -0800
-@@ -1,10 +1,10 @@
--/*
-+/*
- ** Based on xwdtopnm.c - read and write an X11 or X10 window dump file
- **
- ** Modified heavily by Markus Baur (mbaur@ira.uka.de) for use as a part
- ** of xv-2.21, 12/30/92
- **
-- ** Hacked up again to support xv-3.00 and XWDs from 64bit machines
-+ ** Hacked up again to support xv-3.00 and XWDs from 64bit machines
- ** (e.g. DEC Alphas), 04/10/94
- **
- ** Copyright (C) 1989, 1991 by Jef Poskanzer.
-@@ -19,47 +19,53 @@
- */
-
- #include "xv.h"
-+#include <limits.h> /* for CHAR_BIT */
-+
-+/* SJT: just in case ... */
-+#ifndef CHAR_BIT
-+# define CHAR_BIT 8
-+#endif
-
-
- /***************************** x11wd.h *****************************/
- #define X11WD_FILE_VERSION 7
- typedef struct {
-- CARD32 header_size; /* Size of the entire file header (bytes). */
-- CARD32 file_version; /* X11WD_FILE_VERSION */
-- CARD32 pixmap_format; /* Pixmap format */
-- CARD32 pixmap_depth; /* Pixmap depth */
-- CARD32 pixmap_width; /* Pixmap width */
-- CARD32 pixmap_height; /* Pixmap height */
-- CARD32 xoffset; /* Bitmap x offset */
-- CARD32 byte_order; /* MSBFirst, LSBFirst */
-- CARD32 bitmap_unit; /* Bitmap unit */
-- CARD32 bitmap_bit_order; /* MSBFirst, LSBFirst */
-- CARD32 bitmap_pad; /* Bitmap scanline pad */
-- CARD32 bits_per_pixel; /* Bits per pixel */
-- CARD32 bytes_per_line; /* Bytes per scanline */
-- CARD32 visual_class; /* Class of colormap */
-- CARD32 red_mask; /* Z red mask */
-- CARD32 green_mask; /* Z green mask */
-- CARD32 blue_mask; /* Z blue mask */
-- CARD32 bits_per_rgb; /* Log base 2 of distinct color values */
-- CARD32 colormap_entries; /* Number of entries in colormap */
-- CARD32 ncolors; /* Number of Color structures */
-- CARD32 window_width; /* Window width */
-- CARD32 window_height; /* Window height */
-- CARD32 window_x; /* Window upper left X coordinate */
-- CARD32 window_y; /* Window upper left Y coordinate */
-- CARD32 window_bdrwidth; /* Window border width */
-+ CARD32 header_size; /* Size of the entire file header (bytes). */
-+ CARD32 file_version; /* X11WD_FILE_VERSION */
-+ CARD32 pixmap_format; /* Pixmap format */
-+ CARD32 pixmap_depth; /* Pixmap depth */
-+ CARD32 pixmap_width; /* Pixmap width */
-+ CARD32 pixmap_height; /* Pixmap height */
-+ CARD32 xoffset; /* Bitmap x offset */
-+ CARD32 byte_order; /* MSBFirst, LSBFirst */
-+ CARD32 bitmap_unit; /* Bitmap unit */
-+ CARD32 bitmap_bit_order; /* MSBFirst, LSBFirst */
-+ CARD32 bitmap_pad; /* Bitmap scanline pad */
-+ CARD32 bits_per_pixel; /* Bits per pixel */
-+ CARD32 bytes_per_line; /* Bytes per scanline */
-+ CARD32 visual_class; /* Class of colormap */
-+ CARD32 red_mask; /* Z red mask */
-+ CARD32 grn_mask; /* Z green mask */
-+ CARD32 blu_mask; /* Z blue mask */
-+ CARD32 bits_per_rgb; /* Log base 2 of distinct color values */
-+ CARD32 colormap_entries; /* Number of entries in colormap */
-+ CARD32 ncolors; /* Number of Color structures */
-+ CARD32 window_width; /* Window width */
-+ CARD32 window_height; /* Window height */
-+ CARD32 window_x; /* Window upper left X coordinate */
-+ CARD32 window_y; /* Window upper left Y coordinate */
-+ CARD32 window_bdrwidth; /* Window border width */
- #ifdef WORD64
-- CARD32 header_pad;
-+ CARD32 header_pad;
- #endif
-- } X11WDFileHeader;
-+} X11WDFileHeader;
-
- typedef struct {
- CARD32 num;
- CARD16 red, green, blue;
-- CARD8 flags; /* do_red, do_green, do_blue */
-+ CARD8 flags; /* do_red, do_green, do_blue */
- CARD8 pad;
-- } X11XColor;
-+} X11XColor;
-
-
- /*-------------------------------------------------------------------------*/
-@@ -67,7 +73,7 @@
- typedef byte pixel;
-
- /* local functions */
--static int getinit PARM((FILE *, int*, int*, int*, CARD32 *,
-+static int getinit PARM((FILE *, int*, int*, int*, CARD32 *,
- CARD32, PICINFO *));
- static CARD32 getpixnum PARM((FILE *));
- static int xwdError PARM((char *));
-@@ -78,19 +84,27 @@
- static int readbiglong PARM((FILE *, CARD32 *));
- static int readlittleshort PARM((FILE *, CARD16 *));
- static int readlittlelong PARM((FILE *, CARD32 *));
-+#if 0 /* NOTUSED */
- static int writebigshort PARM((FILE *, int));
- static int writebiglong PARM((FILE *, CARD32));
-+#endif
-+
-+static void getcolorshift PARM((CARD32, int *, int *)); /* SJT */
-
-+/* SJT: for 16bpp and 24bpp shifts */
-+static int red_shift_right, red_justify_left,
-+ grn_shift_right, grn_justify_left,
-+ blu_shift_right, blu_justify_left;
- static byte *pic8, *pic24;
--static CARD32 red_mask, green_mask, blue_mask;
--static int bits_per_item, bits_used, bit_shift, bits_per_pixel;
-+static CARD32 red_mask, grn_mask, blu_mask;
-+static int bits_per_item, bits_used, bit_shift,
-+ bits_per_pixel, bits_per_rgb;
- static char buf[4];
- static char *byteP;
- static CARD16 *shortP;
- static CARD32 *longP;
- static CARD32 pixel_mask;
- static int byte_swap, byte_order, bit_order, filesize;
--static byte bw[2] = {0, 0xff};
-
- static char *bname;
-
-@@ -105,7 +119,7 @@
-
- pixel *xP;
- int col;
-- int rows, cols, padright, row;
-+ int rows, cols, padright, row, npixels, bufsize;
- CARD32 maxval, visualclass;
- FILE *ifp;
-
-@@ -116,22 +130,28 @@
-
- ifp = xv_fopen(fname, "r");
- if (!ifp) return (xwdError("can't open file"));
--
-+
- /* figure out the file size (used to check colormap size) */
- fseek(ifp, 0L, 2);
- filesize = ftell(ifp);
- fseek(ifp, 0L, 0);
--
-+
-
- if (getinit(ifp, &cols, &rows, &padright, &visualclass, maxval, pinfo))
- return 0;
-
-+ npixels = cols * rows;
-+ if (cols <= 0 || rows <= 0 || npixels/cols != rows) {
-+ xwdError("Image dimensions out of range");
-+ return 0;
-+ }
-+
-
- switch (visualclass) {
- case StaticGray:
- case GrayScale:
- pinfo->colType = F_GREYSCALE;
-- pic8 = (byte *) calloc((size_t) cols*rows, (size_t) 1);
-+ pic8 = (byte *) calloc((size_t) npixels, (size_t) 1);
- if (!pic8) {
- xwdError("couldn't malloc 'pic'");
- return 0;
-@@ -140,18 +160,18 @@
- for (row=0; row<rows; row++) {
- for (col=0, xP=pic8+(row*cols); col<cols; col++, xP++)
- *xP = getpixnum(ifp);
--
-+
- for (col=0; col<padright; col++) getpixnum(ifp);
- }
-
- pinfo->type = PIC8;
- pinfo->pic = pic8;
-- break;
-+ break;
-
- case StaticColor:
- case PseudoColor:
- pinfo->colType = F_FULLCOLOR;
-- pic8 = (byte *) calloc((size_t) cols*rows, (size_t) 1);
-+ pic8 = (byte *) calloc((size_t) npixels, (size_t) 1);
- if (!pic8) {
- xwdError("couldn't malloc 'pic'");
- return 0;
-@@ -162,15 +182,20 @@
- *xP = getpixnum(ifp);
- for (col=0; col<padright; col++) getpixnum(ifp);
- }
--
-+
- pinfo->type = PIC8;
- pinfo->pic = pic8;
-- break;
-+ break;
-
- case TrueColor:
- case DirectColor:
- pinfo->colType = F_FULLCOLOR;
-- pic24 = (byte *) calloc((size_t) cols*rows*3, (size_t) 1);
-+ bufsize = 3*npixels;
-+ if (bufsize/3 != npixels) {
-+ xwdError("Image dimensions out of range");
-+ return 0;
-+ }
-+ pic24 = (byte *) calloc((size_t) bufsize, (size_t) 1);
- if (!pic24) {
- xwdError("couldn't malloc 'pic24'");
- return 0;
-@@ -179,42 +204,44 @@
- for (row=0; row<rows; row++) {
- for (col=0, xP=pic24+(row*cols*3); col<cols; col++) {
- CARD32 ul;
--
-+
- ul = getpixnum(ifp);
- switch (bits_per_pixel) {
-- case 16:
-- *xP++ = ((ul & red_mask) >> 0);
-- *xP++ = ((ul & green_mask) >> 5);
-- *xP++ = ((ul & blue_mask) >> 10);
-- break;
--
-- case 24:
-- case 32:
-- *xP++ = (ul ) & 0xff;
-- *xP++ = (ul>> 8) & 0xff;
-- *xP++ = (ul>>16) & 0xff;
-- break;
--
-+ case 16:
-+ case 24:
-+ case 32:
-+ /* SJT: shift all the way to the right and then shift left. The
-+ pairs of shifts could be combined. There will be two right and
-+ one left shift, but it's unknown which will be which. It seems
-+ easier to do the shifts (which might be 0) separately than to
-+ have a complex set of tests. I believe this is independent of
-+ byte order but I have no way to test.
-+ */
-+ *xP++ = ((ul & red_mask) >> red_shift_right) << red_justify_left;
-+ *xP++ = ((ul & grn_mask) >> grn_shift_right) << grn_justify_left;
-+ *xP++ = ((ul & blu_mask) >> blu_shift_right) << blu_justify_left;
-+ break;
-+
- default:
-- xwdError("True/Direct only supports 16, 24, and 32 bits");
-+ xwdError("True/Direct supports only 16, 24, and 32 bits");
- return 0;
- }
- }
-
- for (col=0; col<padright; col++) getpixnum(ifp);
- }
--
-+
- pinfo->type = PIC24;
- pinfo->pic = pic24;
- break;
--
-+
- default:
- xwdError("unknown visual class");
- return 0;
- }
-
- sprintf(pinfo->fullInfo, "XWD, %d-bit %s. (%d bytes)",
-- bits_per_pixel,
-+ bits_per_pixel,
- ((visualclass == StaticGray ) ? "StaticGray" :
- (visualclass == GrayScale ) ? "GrayScale" :
- (visualclass == StaticColor) ? "StaticColor" :
-@@ -258,10 +285,10 @@
- maxv = 255L;
-
- h11P = (X11WDFileHeader*) header;
--
-+
- if (fread(&header[0], sizeof(*h11P), (size_t) 1, file) != 1)
- return(xwdError("couldn't read X11 XWD file header"));
--
-+
- if (h11P->file_version != X11WD_FILE_VERSION) {
- byte_swap = 1;
- h11P->header_size = bs_long(h11P->header_size);
-@@ -279,8 +306,8 @@
- h11P->bytes_per_line = bs_long(h11P->bytes_per_line);
- h11P->visual_class = bs_long(h11P->visual_class);
- h11P->red_mask = bs_long(h11P->red_mask);
-- h11P->green_mask = bs_long(h11P->green_mask);
-- h11P->blue_mask = bs_long(h11P->blue_mask);
-+ h11P->grn_mask = bs_long(h11P->grn_mask);
-+ h11P->blu_mask = bs_long(h11P->blu_mask);
- h11P->bits_per_rgb = bs_long(h11P->bits_per_rgb);
- h11P->colormap_entries = bs_long(h11P->colormap_entries);
- h11P->ncolors = bs_long(h11P->ncolors);
-@@ -294,7 +321,7 @@
- for (i=0; i<h11P->header_size - sizeof(*h11P); i++)
- if (getc(file) == EOF)
- return(xwdError("couldn't read rest of X11 XWD file header"));
--
-+
- /* Check whether we can handle this dump. */
- if (h11P->pixmap_depth > 24)
- return(xwdError("can't handle X11 pixmap_depth > 24"));
-@@ -303,27 +330,31 @@
- return(xwdError("can't handle X11 bits_per_rgb > 24"));
-
- if (h11P->pixmap_format != ZPixmap && h11P->pixmap_depth != 1) {
-- sprintf(errstr, "can't handle X11 pixmap_format %d with depth != 1",
-+ sprintf(errstr, "can't handle X11 pixmap_format %ld with depth != 1",
- h11P->pixmap_format);
- return(xwdError(errstr));
- }
-
- if (h11P->bitmap_unit != 8 && h11P->bitmap_unit != 16 &&
- h11P->bitmap_unit != 32) {
-- sprintf(errstr, "X11 bitmap_unit (%d) is non-standard - can't handle",
-+ sprintf(errstr, "X11 bitmap_unit (%ld) is non-standard - can't handle",
- h11P->bitmap_unit);
- return(xwdError(errstr));
- }
--
-+
- grayscale = 1;
- if (h11P->ncolors > 0) { /* Read X11 colormap. */
-- x11colors = (X11XColor*) malloc(h11P->ncolors * sizeof(X11XColor));
-+ int bufsize = h11P->ncolors * sizeof(X11XColor);
-+
-+ if (bufsize/sizeof(X11XColor) != h11P->ncolors)
-+ return(xwdError("too many colors"));
-+ x11colors = (X11XColor*) malloc(bufsize);
- if (!x11colors) return(xwdError("out of memory"));
--
-- if (h11P->header_size + h11P->ncolors * sizeof(X11XColor)
-+
-+ if (h11P->header_size + bufsize
- + h11P->pixmap_height * h11P->bytes_per_line + h11P->ncolors * 4
- == filesize ) word64 = 1;
--
-+
- if (word64) {
- for (i = 0; i < h11P->ncolors; ++i) {
- if (fread(&pad, sizeof(pad), (size_t) 1, file ) != 1)
-@@ -334,11 +365,11 @@
- }
- }
- else {
-- if (fread(x11colors, sizeof(X11XColor), (size_t) h11P->ncolors, file)
-+ if (fread(x11colors, sizeof(X11XColor), (size_t) h11P->ncolors, file)
- != h11P->ncolors)
- return(xwdError("couldn't read X11 XWD colormap"));
- }
--
-+
- for (i = 0; i < h11P->ncolors; ++i) {
- if (byte_swap) {
- x11colors[i].red = (CARD16) bs_short(x11colors[i].red);
-@@ -356,8 +387,11 @@
- grayscale = 0;
- }
- }
--
-+
- *visualclassP = h11P->visual_class;
-+ /* SJT: FIXME. If bits_per_pixel == 16 maxv could be either 31 or 63.
-+ It doesn't matter, though, because maxv is never used beyond here.
-+ */
- if (*visualclassP == TrueColor || *visualclassP == DirectColor) {
- if (h11P->bits_per_pixel == 16) maxv = 31;
- else maxv = 255;
-@@ -389,24 +423,48 @@
- }
- }
- }
--
-+
- *colsP = h11P->pixmap_width;
- *rowsP = h11P->pixmap_height;
- *padrightP = h11P->bytes_per_line * 8 / h11P->bits_per_pixel -
- h11P->pixmap_width;
--
-+
- bits_per_item = h11P->bitmap_unit;
-- bits_used = bits_per_item;
- bits_per_pixel = h11P->bits_per_pixel;
- byte_order = h11P->byte_order;
- bit_order = h11P->bitmap_bit_order;
--
-+ bits_per_rgb = h11P->bits_per_rgb;
-+
-+
-+ /* add sanity-code for freako 'exceed' server, where bitmapunit = 8
-+ and bitsperpix = 32 (and depth=24)... */
-+
-+ if (bits_per_item < bits_per_pixel) {
-+ bits_per_item = bits_per_pixel;
-+
-+ /* round bits_per_item up to next legal value, if necc */
-+ if (bits_per_item < 8) bits_per_item = 8;
-+ else if (bits_per_item < 16) bits_per_item = 16;
-+ else bits_per_item = 32;
-+ }
-+
-+
-+ /* which raises the question: how (can?) you ever have a 24 bits per pix,
-+ (ie, 3 bytes, no alpha/padding) */
-+
-+
-+ bits_used = bits_per_item;
-+
- if (bits_per_pixel == sizeof(pixel_mask) * 8) pixel_mask = (CARD32) -1;
- else pixel_mask = (1 << bits_per_pixel) - 1;
--
-- red_mask = h11P->red_mask;
-- green_mask = h11P->green_mask;
-- blue_mask = h11P->blue_mask;
-+
-+ red_mask = h11P->red_mask;
-+ grn_mask = h11P->grn_mask;
-+ blu_mask = h11P->blu_mask;
-+
-+ getcolorshift(red_mask, &red_shift_right, &red_justify_left);
-+ getcolorshift(grn_mask, &grn_shift_right, &grn_justify_left);
-+ getcolorshift(blu_mask, &blu_shift_right, &blu_justify_left);
-
- byteP = (char *) buf;
- shortP = (CARD16 *) buf;
-@@ -416,18 +474,57 @@
- }
-
-
-+/* SJT: figure out the proper shifts */
-+static void getcolorshift (CARD32 mask, int *rightshift, int *leftshift)
-+{
-+ int lshift, rshift;
-+ unsigned int uu;
-+
-+ if (mask == 0)
-+ {
-+ *rightshift = *leftshift = 0;
-+ return;
-+ }
-+
-+ uu = mask;
-+ lshift = rshift = 0;
-+ while ((uu & 0xf) == 0)
-+ {
-+ rshift += 4;
-+ uu >>= 4;
-+ }
-+ while ((uu & 1) == 0)
-+ {
-+ rshift++;
-+ uu >>= 1;
-+ }
-+
-+ while (uu != 0)
-+ {
-+ if (uu & 1)
-+ {
-+ lshift++;
-+ uu >>= 1;
-+ }
-+ }
-+ *rightshift = rshift;
-+ *leftshift = CHAR_BIT * sizeof(pixel) - lshift;
-+ return;
-+}
-+
-+
- /******************************/
- static CARD32 getpixnum(file)
- FILE* file;
- {
- int n;
--
-+
- if (bits_used == bits_per_item) {
- switch (bits_per_item) {
- case 8:
- *byteP = getc(file);
- break;
--
-+
- case 16:
- if (byte_order == MSBFirst) {
- if (readbigshort(file, shortP) == -1)
-@@ -438,7 +535,7 @@
- xwdWarning("unexpected EOF");
- }
- break;
--
-+
- case 32:
- if (byte_order == MSBFirst) {
- if (readbiglong(file, longP) == -1)
-@@ -449,41 +546,41 @@
- xwdWarning("unexpected EOF");
- }
- break;
--
-+
- default:
- xwdWarning("can't happen");
- }
- bits_used = 0;
--
-+
- if (bit_order == MSBFirst)
- bit_shift = bits_per_item - bits_per_pixel;
- else
- bit_shift = 0;
- }
--
-+
- switch (bits_per_item) {
- case 8:
- n = (*byteP >> bit_shift) & pixel_mask;
- break;
--
-+
- case 16:
- n = (*shortP >> bit_shift) & pixel_mask;
- break;
--
-+
- case 32:
- n = (*longP >> bit_shift) & pixel_mask;
- break;
--
-+
- default:
- n = 0;
- xwdWarning("can't happen");
- }
--
-+
- if (bit_order == MSBFirst) bit_shift -= bits_per_pixel;
- else bit_shift += bits_per_pixel;
-
- bits_used += bits_per_pixel;
--
-+
- return n;
- }
-
-@@ -511,7 +608,7 @@
-
-
-
--/*
-+/*
- * Byte-swapping junk.
- */
-
-@@ -537,7 +634,7 @@
- {
- union cheat u;
- unsigned char t;
--
-+
- u.l = l;
- t = u.c[0]; u.c[0] = u.c[3]; u.c[3] = t;
- t = u.c[1]; u.c[1] = u.c[2]; u.c[2] = t;
-@@ -549,7 +646,7 @@
-
-
-
--/*
-+/*
- * Endian I/O.
- */
-
-@@ -584,7 +681,7 @@
- {
- *sP = getc(in) & 0xff;
- *sP |= (getc(in) & 0xff) << 8;
--
-+
- if (ferror(in)) return -1;
- return 0;
- }
-@@ -604,6 +701,7 @@
- }
-
-
-+#if 0 /* NOTUSED */
- static int writebiglong(out, l)
- FILE* out;
- CARD32 l;
-@@ -624,3 +722,4 @@
- putc(s&0xff, out);
- return 0;
- }
-+#endif /* 0 (NOTUSED) */
diff --git a/source/xap/xv/xv.SlackBuild b/source/xap/xv/xv.SlackBuild
index 3ef40a7ba..95042cd8b 100755
--- a/source/xap/xv/xv.SlackBuild
+++ b/source/xap/xv/xv.SlackBuild
@@ -21,8 +21,17 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
VERSION=3.10a
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-5}
+BUILD=${BUILD:-6}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
CWD=$(pwd)
TMP=${TMP:-/tmp}
@@ -33,16 +42,18 @@ mkdir -p $TMP $PKG
cd $TMP
rm -rf xv-3.10
-tar xvf $CWD/xv-3.10.tar.gz || exit 1
+tar xvf $CWD/xv-3.10.tar.?z* || exit 1
cd xv-3.10 || exit 1
chown -R root:root .
-zcat $CWD/xv-3.10a.patch.gz | patch -p0 --verbose --backup --suffix=.orig || exit
-bzcat $CWD/xv-3.10a-jumbo-fix-patch-20050410.txt.bz2 | patch -p1 --verbose --backup --suffix=.orig || exit
-bzcat $CWD/xv-3.10a-jumbo-enh-patch-20050501.txt.bz2 | patch -p1 --verbose --backup --suffix=.orig || exit
-zcat $CWD/xv.prefix.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit
+zcat $CWD/xv-3.10a.patch.gz | patch -p0 --verbose --backup --suffix=.orig || exit 1
+bzcat $CWD/xv-3.10a-jumbo-fix-enh-patch-20070520.txt.bz2 | patch -p1 --verbose --backup --suffix=.orig || exit 1
+bzcat $CWD/xv-3.10a-jumbo-additions.diff.bz2 | patch -p1 --verbose --backup --suffix=.orig || exit 1
+bzcat $CWD/xv-3.10a-enhancements.20070520-20081216.diff.bz2 | patch -p1 --verbose --backup --suffix=.orig || exit 1
+zcat $CWD/xv.prefix.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
if [ "$ARCH" = "x86_64" ]; then
- zcat $CWD/xv.prefix_x86_64.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit
+ zcat $CWD/xv.prefix_x86_64.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
fi
+zcat $CWD/xv.jasper.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
make -f Makefile.std
strip --strip-unneeded bggen vdcomp xcmap xv xvpictoppm
mkdir -p $PKG/usr/bin
diff --git a/source/xap/xv/xv.jasper.diff b/source/xap/xv/xv.jasper.diff
new file mode 100644
index 000000000..8e933ee5a
--- /dev/null
+++ b/source/xap/xv/xv.jasper.diff
@@ -0,0 +1,20 @@
+--- ./Makefile.std.orig 2010-02-19 13:24:58.000000000 -0600
++++ ./Makefile.std 2010-02-19 13:27:20.000000000 -0600
+@@ -179,13 +179,13 @@
+ JP2K = -DDOJP2K
+ ###
+ #JP2KDIR = ../../jasper
+-JP2KDIR = /usr/local/lib
++JP2KDIR = /usr
+ ###
+ #JP2KINC = -I$(JP2KDIR)
+-JP2KINC = -I/usr/local/include
++JP2KINC = -I/usr/include
+ ###
+-#JP2KLIB = -L$(JP2KDIR) -ljasper
+-JP2KLIB = $(JP2KDIR)/libjasper.a
++JP2KLIB = -L$(JP2KDIR) -ljasper
++#JP2KLIB = $(JP2KDIR)/libjasper.a
+
+
+ ###
diff --git a/source/xap/xv/xv.prefix.diff b/source/xap/xv/xv.prefix.diff
index 0e6108333..7d57757a9 100644
--- a/source/xap/xv/xv.prefix.diff
+++ b/source/xap/xv/xv.prefix.diff
@@ -1,11 +1,11 @@
---- ./Makefile.std.orig 2005-07-12 15:15:19.000000000 -0700
-+++ ./Makefile.std 2005-07-12 15:16:08.000000000 -0700
-@@ -41,7 +41,7 @@
-
-
- ### Installation locations
+--- ./Makefile.std.orig 2010-02-19 13:12:10.000000000 -0600
++++ ./Makefile.std 2010-02-19 13:14:50.000000000 -0600
+@@ -56,7 +56,7 @@
+ ### NOTE: Users of old K&R compilers (i.e., any version not supporting C89
+ ### string concatenation, such as "fub" "ar" => "fubar") should update
+ ### xvtext.c:1831 (or thereabouts) if either PREFIX or DOCDIR changes:
-PREFIX = /usr/local
-+PREFIX = /usr/X11R6
++PREFIX = /usr
BINDIR = $(PREFIX)/bin
- MANDIR = $(PREFIX)/man/man1
+ MANDIR = $(PREFIX)/share/man/man1
MANSUF = 1
diff --git a/source/xap/xv/xv.prefix_x86_64.diff b/source/xap/xv/xv.prefix_x86_64.diff
index fd6803d50..8f629c344 100644
--- a/source/xap/xv/xv.prefix_x86_64.diff
+++ b/source/xap/xv/xv.prefix_x86_64.diff
@@ -1,20 +1,20 @@
---- xv-3.10/Makefile.std.orig 2008-11-06 22:16:03.000000000 +0000
-+++ xv-3.10/Makefile.std 2008-11-06 22:24:11.000000000 +0000
-@@ -46,7 +46,7 @@
- MANDIR = $(PREFIX)/man/man1
+--- ./Makefile.std.orig 2010-02-19 13:15:05.000000000 -0600
++++ ./Makefile.std 2010-02-19 13:16:10.000000000 -0600
+@@ -61,7 +61,7 @@
+ MANDIR = $(PREFIX)/share/man/man1
MANSUF = 1
- DOCDIR = $(PREFIX)/doc/xv-3.10a
+ DOCDIR = $(PREFIX)/share/doc/xv
-LIBDIR = $(PREFIX)/lib/xv
+LIBDIR = $(PREFIX)/lib64/xv
- SYSCONFDIR = $(PREFIX)/etc
+ SYSCONFDIR = /etc
DESTDIR =
-@@ -200,7 +200,7 @@
+@@ -236,7 +236,7 @@
- ### for LINUX, uncomment the following line
+ ### for Linux, uncomment one of the following lines:
-#MCHN = -DLINUX -L/usr/X11R6/lib
+MCHN = -DLINUX -L/usr/X11R6/lib64
+ #MCHN = -DLINUX -L/usr/X11R6/lib64
- # For SCO 1.1 (UNIX 3.2v2) machines, uncomment the following:
diff --git a/source/y/bsd-games/bsd-games-login-fortune.sh b/source/y/bsd-games/bsd-games-login-fortune.sh
index 598929fe4..cb0f05b0b 100644
--- a/source/y/bsd-games/bsd-games-login-fortune.sh
+++ b/source/y/bsd-games/bsd-games-login-fortune.sh
@@ -1,7 +1,11 @@
#!/bin/sh
# Print a fortune cookie for interactive shells:
-if [[ $- = *i* ]]; then
+
+case $- in
+*i* ) # We're interactive
echo
fortune fortunes fortunes2 linuxcookie
echo
-fi
+ ;;
+esac
+
diff --git a/source/y/bsd-games/bsd-games.SlackBuild b/source/y/bsd-games/bsd-games.SlackBuild
index 976f5570b..4fb996719 100755
--- a/source/y/bsd-games/bsd-games.SlackBuild
+++ b/source/y/bsd-games/bsd-games.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,8 +22,17 @@
VERSION=${VERSION:-2.13}
-ARCH=${ARCH:-x86_64}
-BUILD=${BUILD:-9}
+BUILD=${BUILD:-11}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
NUMJOBS=${NUMJOBS:-" -j7 "}
@@ -45,6 +54,7 @@ zcat $CWD/bsd-games.fortlen.diff.gz | patch -p1 --backup --suffix=.orig || exit
zcat $CWD/bsd-games.strfile.8.diff.gz | patch -p1 --backup --suffix=.orig || exit 1
zcat $CWD/bsd-games.trek-gcc4.diff.gz | patch -p1 --backup --suffix=.orig || exit 1
zcat $CWD/bsd-games.phantasia_install_fix.diff.gz | patch -p1 --backup --suffix=.orig || exit 1
+zcat $CWD/bsd-games.getline.diff.gz | patch -p1 --backup --suffix=.orig || exit 1
## Without the old default (with, of course, a command line switch), and an updated
## man page, even though PJV wrote this, it just doesn't make the cut. I hope it's
diff --git a/source/y/bsd-games/bsd-games.getline.diff b/source/y/bsd-games/bsd-games.getline.diff
new file mode 100644
index 000000000..ed0cd9ca0
--- /dev/null
+++ b/source/y/bsd-games/bsd-games.getline.diff
@@ -0,0 +1,251 @@
+--- ./gomoku/main.c.orig 2000-05-28 09:51:46.000000000 -0500
++++ ./gomoku/main.c 2010-05-11 16:10:10.000000000 -0500
+@@ -159,7 +159,7 @@
+ if (inputfp == NULL && test == 0) {
+ for (;;) {
+ ask("black or white? ");
+- getline(buf, sizeof(buf));
++ g_getline(buf, sizeof(buf));
+ if (buf[0] == 'b' || buf[0] == 'B') {
+ color = BLACK;
+ break;
+@@ -176,7 +176,7 @@
+ }
+ } else {
+ setbuf(stdout, 0);
+- getline(buf, sizeof(buf));
++ g_getline(buf, sizeof(buf));
+ if (strcmp(buf, "black") == 0)
+ color = BLACK;
+ else if (strcmp(buf, "white") == 0)
+@@ -248,7 +248,7 @@
+ getinput:
+ if (interactive)
+ ask("move? ");
+- if (!getline(buf, sizeof(buf))) {
++ if (!g_getline(buf, sizeof(buf))) {
+ curmove = RESIGN;
+ break;
+ }
+@@ -260,7 +260,7 @@
+ FILE *fp;
+
+ ask("save file name? ");
+- (void)getline(buf, sizeof(buf));
++ (void)g_getline(buf, sizeof(buf));
+ if ((fp = fopen(buf, "w")) == NULL) {
+ glog("cannot create save file");
+ goto getinput;
+@@ -313,14 +313,14 @@
+ if (i != RESIGN) {
+ replay:
+ ask("replay? ");
+- if (getline(buf, sizeof(buf)) &&
++ if (g_getline(buf, sizeof(buf)) &&
+ (buf[0] == 'y' || buf[0] == 'Y'))
+ goto again;
+ if (strcmp(buf, "save") == 0) {
+ FILE *fp;
+
+ ask("save file name? ");
+- (void)getline(buf, sizeof(buf));
++ (void)g_getline(buf, sizeof(buf));
+ if ((fp = fopen(buf, "w")) == NULL) {
+ glog("cannot create save file");
+ goto replay;
+@@ -371,7 +371,7 @@
+ quit();
+ top:
+ ask("cmd? ");
+- if (!getline(fmtbuf, sizeof(fmtbuf)))
++ if (!g_getline(fmtbuf, sizeof(fmtbuf)))
+ quit();
+ switch (*fmtbuf) {
+ case '\0':
+--- ./gomoku/gomoku.h.orig 1999-09-15 05:34:31.000000000 -0500
++++ ./gomoku/gomoku.h 2010-05-11 16:10:10.000000000 -0500
+@@ -269,7 +269,7 @@
+
+ void bdinit __P((struct spotstr *));
+ void init_overlap __P((void));
+-int getline __P((char *, int));
++int g_getline __P((char *, int));
+ void ask __P((const char *));
+ void dislog __P((const char *));
+ void bdump __P((FILE *));
+--- ./gomoku/bdisp.c.orig 2001-02-07 18:18:22.000000000 -0600
++++ ./gomoku/bdisp.c 2010-05-11 16:10:10.000000000 -0500
+@@ -245,7 +245,7 @@
+ }
+
+ int
+-getline(buf, size)
++g_getline(buf, size)
+ char *buf;
+ int size;
+ {
+--- ./cribbage/score.c.orig 1999-09-15 05:34:31.000000000 -0500
++++ ./cribbage/score.c 2010-05-11 16:10:10.000000000 -0500
+@@ -122,7 +122,7 @@
+ CARD h[(CINHAND + 1)];
+ char buf[32];
+
+- expl[0] = '\0'; /* initialize explanation */
++ cr_expl[0] = '\0'; /* initialize explanation */
+ score = 0;
+ flag = TRUE;
+ k = hand[0].suit;
+@@ -132,29 +132,29 @@
+ if (hand[i].suit == starter.suit) {
+ score++;
+ if (do_explain)
+- strcat(expl, "His Nobs");
++ strcat(cr_expl, "His Nobs");
+ }
+ h[i] = hand[i];
+ }
+
+ if (flag && n >= CINHAND) {
+- if (do_explain && expl[0] != '\0')
+- strcat(expl, ", ");
++ if (do_explain && cr_expl[0] != '\0')
++ strcat(cr_expl, ", ");
+ if (starter.suit == k) {
+ score += 5;
+ if (do_explain)
+- strcat(expl, "Five-flush");
++ strcat(cr_expl, "Five-flush");
+ } else
+ if (!crb) {
+ score += 4;
+- if (do_explain && expl[0] != '\0')
+- strcat(expl, ", Four-flush");
++ if (do_explain && cr_expl[0] != '\0')
++ strcat(cr_expl, ", Four-flush");
+ else
+- strcpy(expl, "Four-flush");
++ strcpy(cr_expl, "Four-flush");
+ }
+ }
+- if (do_explain && expl[0] != '\0')
+- strcat(expl, ", ");
++ if (do_explain && cr_expl[0] != '\0')
++ strcat(cr_expl, ", ");
+ h[n] = starter;
+ sorthand(h, n + 1); /* sort by rank */
+ i = 2 * fifteens(h, n + 1);
+@@ -162,9 +162,9 @@
+ if (do_explain) {
+ if (i > 0) {
+ (void) sprintf(buf, "%d points in fifteens", i);
+- strcat(expl, buf);
++ strcat(cr_expl, buf);
+ } else
+- strcat(expl, "No fifteens");
++ strcat(cr_expl, "No fifteens");
+ }
+ i = pairuns(h, n + 1);
+ score += i;
+@@ -172,9 +172,9 @@
+ if (i > 0) {
+ (void) sprintf(buf, ", %d points in pairs, %d in runs",
+ pairpoints, runpoints);
+- strcat(expl, buf);
++ strcat(cr_expl, buf);
+ } else
+- strcat(expl, ", No pairs/runs");
++ strcat(cr_expl, ", No pairs/runs");
+ }
+ return (score);
+ }
+--- ./cribbage/support.c.orig 1999-09-15 05:34:31.000000000 -0500
++++ ./cribbage/support.c 2010-05-11 16:10:10.000000000 -0500
+@@ -152,7 +152,7 @@
+ msg("You should have taken %d, not %d!", i, j);
+ }
+ if (explain)
+- msg("Explanation: %s", expl);
++ msg("Explanation: %s", cr_expl);
+ do_wait();
+ } else
+ win = chkscr(&pscore, i);
+--- ./cribbage/cribbage.h.orig 2000-10-17 14:58:05.000000000 -0500
++++ ./cribbage/cribbage.h 2010-05-11 16:10:10.000000000 -0500
+@@ -59,7 +59,7 @@
+ extern BOOLEAN quiet; /* if suppress random mess */
+ extern BOOLEAN playing; /* currently playing game */
+
+-extern char expl[]; /* string for explanation */
++extern char cr_expl[]; /* string for explanation */
+
+ void addmsg __P((const char *, ...))
+ __attribute__((__format__(__printf__, 1, 2)));
+@@ -81,7 +81,7 @@
+ int fifteens __P((const CARD [], int));
+ void game __P((void));
+ void gamescore __P((void));
+-char *getline __P((void));
++char *cr_getline __P((void));
+ int getuchar __P((void));
+ int incard __P((CARD *));
+ int infrom __P((const CARD [], int, const char *));
+--- ./cribbage/io.c.orig 1999-10-01 15:45:34.000000000 -0500
++++ ./cribbage/io.c 2010-05-11 16:10:10.000000000 -0500
+@@ -254,7 +254,7 @@
+
+ retval = FALSE;
+ rnk = sut = EMPTY;
+- if (!(line = getline()))
++ if (!(line = cr_getline()))
+ goto gotit;
+ p = p1 = line;
+ while (*p1 != ' ' && *p1 != '\0')
+@@ -355,7 +355,7 @@
+
+ for (sum = 0;;) {
+ msg(prompt);
+- if (!(p = getline()) || *p == '\0') {
++ if (!(p = cr_getline()) || *p == '\0') {
+ msg(quiet ? "Not a number" :
+ "That doesn't look like a number");
+ continue;
+@@ -562,7 +562,7 @@
+ * compressed to one space; a space is inserted before a ','
+ */
+ char *
+-getline()
++cr_getline()
+ {
+ char *sp;
+ int c, oy, ox;
+--- ./cribbage/crib.c.orig 2001-02-07 18:18:22.000000000 -0600
++++ ./cribbage/crib.c 2010-05-11 16:10:10.000000000 -0500
+@@ -225,7 +225,7 @@
+ if (!rflag) { /* player cuts deck */
+ msg(quiet ? "Cut for crib? " :
+ "Cut to see whose crib it is -- low card wins? ");
+- getline();
++ cr_getline();
+ }
+ i = (rand() >> 4) % CARDS; /* random cut */
+ do { /* comp cuts deck */
+@@ -401,7 +401,7 @@
+ if (!rflag) { /* random cut */
+ msg(quiet ? "Cut the deck? " :
+ "How many cards down do you wish to cut the deck? ");
+- getline();
++ cr_getline();
+ }
+ i = (rand() >> 4) % (CARDS - pos);
+ turnover = deck[i + pos];
+--- ./cribbage/extern.c.orig 1999-09-26 06:37:19.000000000 -0500
++++ ./cribbage/extern.c 2010-05-11 16:10:10.000000000 -0500
+@@ -52,7 +52,7 @@
+ BOOLEAN quiet = FALSE; /* if suppress random mess */
+ BOOLEAN rflag = FALSE; /* if all cuts random */
+
+-char expl[128]; /* explanation */
++char cr_expl[128]; /* explanation */
+
+ int cgames = 0; /* number games comp won */
+ int cscore = 0; /* comp score in this game */